Тема 1: Распределенная система управления и поиска контента (Digital Asset Management)
Концепция: Создание системы для хранения, управления и поиска цифровых активов — изображений, документов, видео. Пользователи могут загружать файлы, добавлять к ним метаданные (теги, описания, категории), а затем эффективно искать их.
Реализация требований:
MongoDB: Выступает в качестве основной документной базы. В коллекциях хранятся:
assets
: Документы с метаданными файлов (id, оригинальное имя, размер, MIME-тип, id пользователя, дата загрузки, массив тегов, статус обработки).users
: Данные пользователей.api_keys
: Ключи для доступа к API.- сами файла можно хранить в MongoDB(GridFS), S3 хранилище (предпочтительно), либо в файловой системе на общем диске
OpenSearch: Используется для полнотекстового поиска по названиям, описаниям и тегам активов. Позволяет реализовать сложные запросы типа "найди все изображения
.png
с тегомпрезентация
, загруженные за последний месяц".Hazelcast:
Кэш метаданных: Кэширует документы из MongoDB по
asset_id
для быстрого ответа API на запросы к популярным файлам.- Системные очереди: Можно организовать очередь задач (например, на генерацию превью для изображений) с помощью
IQueue
.
REST API (пример):
POST /api/assets
- Загрузка файла (multipart) + метаданные.GET /api/assets/{id}
- Получение метаданных по ID.GET /api/assets/{id}/file
- Скачивание файла.GET /api/assets?q=cat+png&tags=animal&page=1
- Поиск по коллекции.DELETE /api/assets/{id}
- Удаление актива.