Как организовать отмечание «просмотренных» материалов?

На примере ютуба:
я посмотрел ролик, и теперь я хочу, чтобы этот ролик всегда был помечен "просмотренно". То есть, моя история должна куда-то сохраняться. А что, если я давно пользую ютуб и успел посмотреть 10 тысяч роликов? Как ютуб будет помечать просмотренные ролики?

У меня node.js сервер, react.js+flux фронт и PG субд.

Вот что пришло в голову:
История перегружена лишней инфой - когда посмотрел, как ролик назывался и тп. Эта инфа нужна для других случаев. Я сделаю поиск и вытяну из PG только uuid всех просмотренных роликов. Переведу в форму array и отправлю на клиентскую часть. Клиент сохранит это все в localStorage и пометит датой, чтобы впредь сервак отдавал только недостающую часть истории. При рендере тех страниц, на которых нужно помечать "просмотренные ролики", я буду доставать локально-сохраненную историю и использовать простейший способ проверки:
if(arrayWithAllWatchedVideosUUIDs.indexOf(currentVideoUUID) !== -1) {
   пометить как "просмотренно"
}


Что, если мне нужно 100 видеороликов за раз отрендерить, и все нуждаются в проверке "просмотрено ли"? Это вызовет трудности?

Есть способ лучше?
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я бы для этих целей вообще sql не использовал. Это данные, которые, в основном: являются временными, ограниченными (100/1000/10000 записей и т.д), не влияют на основной функционал, могут быть счетчиками, их может быть очень много, их хорошо бы извлекать очень быстро, по ним не нужно делать большой обработки, у них есть "время жизни"...
Поэтому предложу посмотреть в сторону redis.io который для этого и создан!
Ответ написан
sim3x
@sim3x
Сериал:
- id
- название
- ....

Серия
- id
- сериал = ForeignKey(Сериал)

Пользователь
- id
- имя
- ....
- серии = ManyToMany(Серия)

https://en.wikipedia.org/wiki/Many-to-many_(data_model)

Если тебе не нужна агрегация по пользователям, счетчики просмотров или тебе класть на консистентность, то ManyToMany заменяешь на список идшников серий
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы