- •«Московский технический университет связи и информатики»
- •Документация на разработку мультимедийной информационной системы «ImageHub»
- •1. Описание предметной области
- •2. Требования к системе
- •2.1. Требования к структуре и функционированию системы
- •2.2. Функциональные требования
- •2.3. Нефункциональные требования
- •База данных
- •3.1. Архитектура бизнес-процесса получения контента
- •3.2. Процедура авторизации
- •4. База данных
- •4.1. Сущности мультимедийной информационной системы
- •4.2. Атрибуты сущностей
- •4.3. Приведение таблицы к первой нормальной форме
- •4.4. Приведение таблицы ко второй нормальной форме
- •4.5. Приведение таблицы к третьей нормальной форме
- •4.6. Примеры запросов
- •5. Серверная часть системы
- •5.1. Основные компоненты
- •5.2. Ролевая модель и запросы
- •5.3. Приоритетная система очередей
- •5.4. Обработка запросов
- •5.5. Расчет максимальной нагрузки
- •5.6. Механизмы обработки ошибок
- •6. Пользовательский интерфейс
- •7. Результат работы
4. База данных
Составим сравнительную таблицу систем управления базами данных.
Таблица 7 – Сравнение СУБД на основе критериев
Критерий |
MS SQL |
SQLite |
Oracle |
MS Access |
PostgreSQL |
Максимальное количество одновременно поддерживаемых соединений |
32767 |
1 |
32047 |
256 |
Ограничено ресурсами системы (default=100), у Amazon – 5000 |
Стоимость лицензирования |
$0 (Express) – $15123 (Enterprise) |
Бесплатно |
$50000+ (Enterprise) |
$180 |
Бесплатно |
Максимальный объем базы данных |
524 ПБ |
281 ТБ |
128 ТБ |
2 ГБ |
Не ограничен |
Максимальное количество столбцов в таблице |
1024 |
2000 |
1000 |
255 |
1600 |
Поддерживаемые операционные системы |
Windows |
Windows, Linux, macOS, iOS, Android |
Windows, Linux, Solaris, IBM AIX, HP-UX |
Windows |
Windows, Linux, Solaris, macOS, FreeBSD |
Исходя из анализа представленных СУБД для реализации базы данных была выбрана PostgreSQL: ввиду того, что она распространяется свободно и при этом имеет высокие показатели технических характеристик. Кроме перечисленных критериев, данная СУБД имеет инструменты для защиты данных и средства для защиты от несанкционированного доступа, а интерфейсы для связи с PostgreSQL существуют для большинства современных языков программирования.
4.1. Сущности мультимедийной информационной системы
В таблице 8 представлены сущности мультимедийной информационной системы.
Таблица 8 – Сущности мультимедийной ИС
№ п.п. |
Наименование сущности |
Описание |
1 |
Пин |
Основная единица контента системы, представляющая собой изображение или мультимедийный файл с описанием, тегами и ссылкой. Пин отображается в виде карточки и может быть сохранён пользователями. |
2 |
Доска |
Коллекция пинов, созданная пользователем для тематической группировки контента. |
3 |
Пользователь |
Человек, зарегистрированный в системе и взаимодействующий с мультимедийным контентом. |
4 |
Автор |
Пользователь, создавший пин и опубликовавший его в системе. |
5 |
Комментарий |
Текстовый отзыв пользователя, оставленный под пином. |
6 |
Категория |
Тематическая классификация пинов (дизайн, еда, мода, интерьер и др.). |
7 |
Тег |
Ключевое слово, используемое для поиска и фильтрации пинов. |
8 |
Избранное |
Связь пользователя с сохранёнными пинами. |
4.2. Атрибуты сущностей
Каждая сущность хранит в себе информацию и имеет атрибуты, отражающие её характеристики.
Таблица 9 – Сущность «Пин»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Пин |
1 |
Название пина |
Наименование мультимедийного материала |
|
2 |
Описание |
Текстовое описание изображения или идеи |
|
3 |
Медиафайл |
Изображение или видео, прикреплённое к пину |
|
4 |
URL медиафайла |
Ссылка на файл, хранящийся в Object Storage |
|
5 |
Категория |
Тематическая принадлежность пина |
|
6 |
Теги |
Набор ключевых слов для поиска |
|
7 |
Автор |
Пользователь, создавший пин |
|
8 |
Дата публикации |
Дата и время создания пина |
|
9 |
Рейтинг |
Количество сохранений и лайков |
|
10 |
Статус |
Состояние пина (активен, скрыт, удалён) |
Таблица 10 – Сущность «Доска»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Доска |
1 |
Название доски |
Название пользовательской коллекции |
|
2 |
Описание |
Краткое описание тематики доски |
|
3 |
Владелец |
Пользователь, создавший доску |
|
4 |
Список пинов |
Набор пинов, сохранённых в доске |
|
5 |
Дата создания |
Дата создания доски |
|
6 |
Уровень доступа |
Публичная или приватная доска |
Таблица 11 – Сущность «Пользователь»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Пользователь |
1 |
Логин |
Уникальное имя пользователя |
|
2 |
Пароль |
Хэш пароля пользователя |
|
3 |
Электронная почта |
Адрес электронной почты |
|
4 |
Роль |
Роль пользователя в системе |
|
5 |
Дата регистрации |
Дата создания учетной записи |
|
6 |
Статус |
Активен, заблокирован |
|
7 |
Аватар |
Изображение профиля |
|
8 |
Описание профиля |
Краткая информация о пользователе |
Таблица 12 – Сущность «Комментарий»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Комментарий |
1 |
Текст комментария |
Содержание комментария |
|
2 |
Автор |
Пользователь, оставивший комментарий |
|
3 |
Пин |
Пин, к которому относится комментарий |
|
4 |
Дата создания |
Дата и время публикации |
|
5 |
Статус |
Активен или удалён |
Таблица 13 – Сущность «Категория»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Категория |
1 |
Название категории |
Тематическое направление |
|
2 |
Описание |
Описание категории |
Таблица 14 – Сущность «Тег»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Тег |
1 |
Название тега |
Ключевое слово |
|
2 |
Частота использования |
Количество пинов с данным тегом |
Таблица 15 – Сущность «Автор»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Автор |
1 |
Идентификатор автора |
Уникальный идентификатор пользователя-автора |
|
2 |
Пользователь |
Ссылка на сущность «Пользователь» |
|
3 |
Количество публикаций |
Общее число опубликованных пинов |
|
4 |
Дата первой публикации |
Дата первого опубликованного пина |
|
5 |
Статус автора |
Активен, ограничен, заблокирован |
Таблица 16 – Сущность «Избранное»
Сущность |
№ п.п. |
Наименование атрибута |
Краткое описание |
Избранное |
1 |
Идентификатор записи |
Уникальный идентификатор |
|
2 |
Пользователь |
Пользователь, добавивший пин |
|
3 |
Пин |
Сохранённый пин |
|
4 |
Дата добавления |
Дата и время добавления в избранное |
|
5 |
Тип избранного |
Лайк, сохранение, рекомендация |
Выделенные сущности и их атрибуты отражают предметную область мультимедийной информационной системы и обеспечивают хранение, обработку и поиск визуального контента, аналогично функциональности сервиса Pinterest.
Связи между сущностями мультимедийной ИС «Аналог Pinterest»
В таблице 17 представлены связи между сущностями нашей мультимедийной информационной системы и их описание.
Таблица 17 – Связи между сущностями
№ п.п. |
Сущности, участвующие в связи |
Описание |
1 |
Пользователь – Автор |
Все авторы являются пользователями системы, однако не каждый пользователь является автором. Связь реализуется по идентификатору пользователя. |
2 |
Автор – Пин |
Каждый пин создаётся только одним автором. Один автор может создать неограниченное количество пинов. Связь типа «один-ко-многим» по атрибуту идентификатора автора. |
3 |
Пользователь – Пин (Избранное) |
Пользователь может сохранять множество пинов в избранное, при этом один пин может быть сохранён множеством пользователей. Связь типа «многие-ко-многим», реализуемая через сущность «Избранное». |
4 |
Пользователь – Комментарий |
Один пользователь может оставить несколько комментариев. Каждый комментарий принадлежит только одному пользователю. |
5 |
Пин – Комментарий |
Один пин может иметь несколько комментариев. Каждый комментарий относится только к одному пину. |
6 |
Пользователь – Доска |
Один пользователь может создать несколько досок. Каждая доска принадлежит одному пользователю. |
7 |
Доска – Пин |
Одна доска может содержать несколько пинов, при этом один пин может находиться в нескольких досках. Связь типа «многие-ко-многим». |
8 |
Пин – Категория |
Каждый пин относится к одной категории. Одна категория может включать множество пинов. |
9 |
Пин – Тег |
Один пин может иметь несколько тегов, и один тег может относиться к нескольким пинам. Связь типа «многие-ко-многим». |
Пояснение к связям
Связь «Пользователь – Автор» отражает ролевую модель доступа в системе.
Сущность «Избранное» используется как промежуточная таблица для реализации связи «многие-ко-многим» между пользователями и пинами.
Использование сущностей «Категория» и «Тег» обеспечивает удобную классификацию и поиск мультимедийного контента.
Сущность «Доска» позволяет пользователям группировать пины по тематическому признаку.
Хранение и управление контентом в мультимедийной ИС «Аналог Pinterest»
Мультимедийная информационная система предназначена для хранения, обработки и отображения визуального контента (изображений и мультимедийных файлов). В связи с этим в системе применяется разделённая модель хранения данных, при которой структурированные данные и медиафайлы хранятся в различных хранилищах, оптимизированных под соответствующие типы информации.
Ниже расписан общий подход к хранению контента.
Контент системы разделяется на два основных типа:
Структурированные данные — метаданные, описывающие контент и пользователей.
Неструктурированные данные — медиафайлы (изображения).
Для каждого типа данных используется специализированное хранилище.
Хранение структурированных данных
Место хранения: Структурированные данные хранятся в реляционной базе данных (PostgreSQL), расположенной на сервере уровня данных.
В базе данных хранятся:
учетные записи пользователей;
роли и права доступа;
информация об авторах контента;
метаданные пинов (название, описание, категория, теги);
связи между сущностями (избранное, комментарии, доски);
URL медиафайлов, связанных с пинами;
статистические данные (количество лайков, сохранений, комментариев).
Хранение медиафайлов (контента)
Место хранения: Изображения и хранятся в Object Storage (объектном хранилище), предназначенном для хранения больших бинарных объектов.
Каждый медиафайл:
сохраняется как отдельный объект;
имеет уникальный идентификатор или имя файла;
не хранится внутри базы данных;
доступен по уникальному URL.
Преимущества использования Object Storage
Использование объектного хранилища позволяет:
эффективно хранить большие объёмы мультимедийных данных;
масштабировать систему без изменения бизнес-логики;
сократить нагрузку на базу данных;
повысить отказоустойчивость хранения.
Процесс загрузки контента
Пользователь загружает изображение через клиентское приложение.
Запрос передаётся на сервер бизнес-логики.
Сервер проверяет права доступа пользователя.
Медиафайл сохраняется в Object Storage.
Object Storage возвращает URL файла.
URL сохраняется в базе данных как часть метаданных пина.
Пользователю возвращается подтверждение успешной загрузки.
Процесс получения контента
Пользователь запрашивает ленту или поиск изображений.
Сервер бизнес-логики выполняет запрос к базе данных.
Сервер возвращает клиенту метаданные и URL изображений.
Клиент загружает изображения через Object Storage.
Медиафайлы отображаются в пользовательском интерфейсе.
