У сервиса есть центральный раздел с видео, откуда пользователи смогут добавлять себе в профиль понравившиеся видео, прикреплять к видео теги (у каждого юзера свои теги, которые он создает). Варианты выборок:
- Просто все видео пользователя
- Видео по тегу
- Поиск по заголовку среди всех видео на сайте
- Поиск по заголовку среди всех видео пользователя
Все варианты сортируются по дате добавления.
Пока выбрал для себя 2 возможных СУБД - Postgresql и Mongodb.
С архитектурой на Постгресе все более-менее понятно - есть таблицы с видео, с тегами, и промежуточная таблица для видео и тега. Из минусов - не очень удобно редактировать теги у видео пачкой, т.е. когда юзер за один запрос некоторые теги добавляет к видео, а некоторые удаляет. Все это порождает лишние запросы к базе. Возможно, стоит хранить теги внутри json-поля в промежуточной таблице? Быстро ли будет работать выборка?
В Монго это можно реализовать удобнее, но не понятно как хранить сами видео - в отдельной коллекции видео и в отдельной юзеров, а внутри юзера хранить id'шники видео и теги? Быстро ли будет работать такая выборка, если вытаскивать все видео пользователя по тегу?
Что бы выбрали вы и почему?