处理多对多触发关系的最佳方法是什么,例如Twitter“关注此用户”问题。
我有一个类似的问题,用户“观看”线程的回复。如果有10,000名用户正在观看某个主题,并且有人回复,那么如何最好地通知观察者?我能想到的只有以下几点:
插入后,检查“监视表”[fields:user_id,thread_id]以查找与该线程的id匹配的任何线程。这是我需要通知的用户列表。对于需要通知的每个用户,在“通知表”[fields:user_id,message,addedon等]中插入一行。现在,我可以通过此表向任何用户显示他们的通知。
问题是,这听起来非常非常昂贵。特别是10,000个插件部分。
必须有更好的方法来做到这一点......想法?
答案 0 :(得分:3)
在监视表中,您可以添加last_updated
字段,并在监视线程更新时进行设置。同时为last_notified
添加一个字段,当您通知用户时设置此字段,您将知道需要通知用户last_updated > last_notified
。当您决定需要通知用户时,只需使用post_date >= last_updated
向线程显示所有消息。