类似Twitter的“关注用户”和“看这个”问题

时间:2008-12-11 06:00:50

标签: mysql database triggers many-to-many

处理多对多触发关系的最佳方法是什么,例如Twitter“关注此用户”问题。

我有一个类似的问题,用户“观看”线程的回复。如果有10,000名用户正在观看某个主题,并且有人回复,那么如何最好地通知观察者?我能想到的只有以下几点:

插入后,检查“监视表”[fields:user_id,thread_id]以查找与该线程的id匹配的任何线程。这是我需要通知的用户列表。对于需要通知的每个用户,在“通知表”[fields:user_id,message,addedon等]中插入一行。现在,我可以通过此表向任何用户显示他们的通知。

问题是,这听起来非常非常昂贵。特别是10,000个插件部分。

必须有更好的方法来做到这一点......想法?

1 个答案:

答案 0 :(得分:3)

在监视表中,您可以添加last_updated字段,并在监视线程更新时进行设置。同时为last_notified添加一个字段,当您通知用户时设置此字段,您将知道需要通知用户last_updated > last_notified。当您决定需要通知用户时,只需使用post_date >= last_updated向线程显示所有消息。