Как Twitter, следуйте за пользователем и наблюдайте за этой проблемой

Каков наилучший способ справиться с триггерными отношениями «многие ко многим», такими как проблема Twitter «подписаться на этого пользователя».

У меня похожая проблема с пользователями, которые «просматривают» темы для ответов. Если 10 000 пользователей просматривают ветку, и кто-то отвечает, как лучше уведомить наблюдателей? Все, о чем я могу думать, это следующее:

После вставки проверьте «таблицу наблюдения» [поля: user_id, thread_id] для любого потока, соответствующего идентификатору этого потока. Это список пользователей, которых я должен уведомить. Для каждого пользователя, которого необходимо уведомить, вставьте строку в «таблицу уведомлений» [поля: user_id, сообщение, дополнение и т. д.]. Теперь я могу показать любому пользователю его уведомления через эту таблицу.

Проблема в том, что все это звучит очень, очень дорого. Особенно часть 10000 вставок.

Должен быть лучший способ сделать это... идеи?


person Sam    schedule 11.12.2008    source источник


Ответы (1)


В свою таблицу наблюдения вы можете добавить поле last_updated и установить его при обновлении наблюдаемого потока. Также добавьте поле для last_notified, установите его при уведомлении пользователя, вы будете знать, что вам нужно уведомить пользователя, если last_updated > last_notified. Когда вы решите, что вам нужно уведомить пользователя, просто покажите ему все сообщения из ветки с post_date >= last_updated.

person joshperry    schedule 11.12.2008
comment
Блин, то же самое писал :) - person Vinko Vrsalovic; 11.12.2008
comment
Итак, таблицы уведомлений нет.. вместо этого я проверяю для каждого пользователя? - person Sam; 11.12.2008
comment
Я предполагаю, что вы хотите уведомить пользователя о каком-то событии, например, когда он входит в веб-интерфейс или запрашивает его через службу REST. Вы бы просто проверяли все записи часов конкретного пользователя, когда им нужно получать уведомления. - person joshperry; 11.12.2008