Тема 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}- Удаление актива.