LINUX.ORG.RU

Как сделать трекер нового не прочитанного?

 


0

3

Нужно в «социалочке» сделать «трекер непрочитанного» для юзеров. Какие есть способы, чтобы не тратить адовы ресурсы на джоины и т.п.?

1. В идеале хочется иметь одну сплошную ленту. За пару недель.

2. Можно разбить на типы контента, и делать отдельную ленту по каждому. Вполне реально, но типов контента многовато и не факт что будет удобно (посты на форуме, новые темы, новые блогозаписи, комменты к блогозаписям, подписки по тегам,...)

3. Можно у каждого юзера хранить полный список эвентов, и каждое новое сообщение броадкастить на ленты подписчиков. Выгребать будет легко, но по-моему может аукнуться большими расходами на запись. Особенно в виде хвоста от протухших аккаунтов. Плюс траблы с синхронизацией если контент удалили. Если протухшие аккаунты отписывать, то непонятно как наполнить ленту если юзер зайдет спустя пару лет.

4. Можно наверное еще сделать общий поток событий, и каждому прицепить массив юзеров, которые его видят. По индексу потом выгребать не проблема, но не совсем понятно насколько это затратно и как выпиливать повторяющиеся (если в теме 100 новых постов, то наверное надо показывать что она обновлена, а не 100 событий).

Посоветуйте, какие нонче есть подходы к построению трекеров. Пока хочется мысли как-то систематизировать. Криво сделать не проблема, но хочется красиво.

★★★★★
Ответ на: комментарий от t184256

Не пользовался, но там более примитивная задача с одним типом контента. А у меня много, и если в лоб делать юнионы, будет тухло - дорого и не скейлится.

Мне б пока хотя бы на уровне интерфейса понять как это удобно сделать.

Vit ★★★★★
() автор топика

Если я правильно понял, то можно просто не запоминать для юзера последнюю новость, а запоминать на устройстве (куки, или что там сейчас модно), последнюю прочитаную новость, далее просто накручивать счетчик новостей, которые не прочитанны (можно даже вебсокетами сделать все это в реальном времени). Туда сделать кнопку которая подгрузит все новое.

ЗЫ это я к чему, не обязатально запоминать для пользователя на сервере, потому что устройств можно, а принцып единой ленты позволяет пользователю самому остановится на том, что он уже прочитал

Dred ★★★★★
()
Ответ на: комментарий от Vit

посмотрел на сайт, мой совет не подойдёт

Dred ★★★★★
()
Ответ на: комментарий от Vit

http://dev.nodeca.com/ всё там же. Форум + блоги + группы.

ей богу, меня поражают люди, которые ЗАРАНЕЕ думают, что (возможный) собеседник их понимает
Ты, случайно, не из Польши родом?

reprimand ★★★★★
()

Если юзер может видеть событие и при этом не видеть какие-либо из предыдущих по времени, то выхода нет, надо хранить информацию о просмотре каждого события каждым пользователем. Можно было бы у активных пользователей отмечать каждое новое событие непрочтенным сразу, а у неактивных пользователей - в момент входа делать проверку и отмечать непрочтенными все события, которые произошли в интервале между его последним выходом и входом.

amomymous ★★★
()
Ответ на: комментарий от amomymous

Да это понятно. Вопрос в том, как сделать эффективно и желательно масштабируемо. Классическая схема с отсечкой по времени и маркерами не предусматривает синдикации разнотипного контента в общую ленту. А индивидуальные ленты делать по-моему накладно.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.