mongodb上设计一个高效的事件通知系统

想要实现一个类似segmentfault这样的通知系统。

现在有三个模型,一个是user,一个是article,一个是event。
user关注article之后,关于article的event就会有通知发送给所有关注它的user。

现在想到三种方案:
一个是article下做一个event的数组,user则有他关注的article的数组,每次读取通知的时候就查找所有关注的article,找出上次拉取通知之后发生的event。但是这样就要纪录上次拉取event的时间,并且比较event的时间,感觉读取性能有影响,但似乎也没有更好的解决方案了,不知道这是不是常用的方案。

还有一种方案和第一个方案差不多,但是是SQL数据库的样子,就是单独建一个event的表,保存event相关的article的id,然后读取通知的时候就搜索发生在上次读取通知事件之后的,并且article的id也在user关注列表中的事件。从心理上来说我不太喜欢这个方案,因为感觉这不是NoSQL的风格

另一个方案就比较无厘头了,article保存一个关注它的user的列表,user保存一个event的列表,每次关于一个article的event发生之后,就对所有在article关注列表里的user写入一个event的id,这样user每次拉取通知的话直接populate他的event列表即可。很显然关注数多了之后写入性能会很差,但是感觉整体逻辑非常清晰

大家给个建议,说说这个一个系统怎么实现比较好

查看回复