这将是一个很好的算法,以保持未读邮件的数量在一个在线提要聚合器的实现?

StackOverflow https://stackoverflow.com/questions/989134

  •  13-09-2019
  •  | 
  •  

假设数据库具有表对于用户来说,订阅,项和的能力知道哪个物品的用户已经看到。我寻找一个的设计范例可在服务器上被用于计算在很短的时间量[饲料ID,NUM_UNREAD]对于每个馈送用户已经订阅了。

假设大量的用户,并且该进料得到在后端定期更新。

编辑:我想解决的问题尼克j具有长大(见下文)。但我很欣赏发表克莱图斯的解决方案。我不是很担心的数据库查询,但希望有一个“设计模式” - 喜欢养看门狗的过程,保持未读邮件数在内存中,以便它可以在任何时候送达

有帮助吗?

解决方案

我不知道该怎么确切地告诉你,因为就是你问的是相当简单的。

首先,使用谷歌阅读器作为在线feed聚合/读者参考。如果你想重新创建功能,谷歌阅读器已经非常钉它已经(恕我直言)

谷歌阅读器的工作原理简单地通过存储源列表。在数据库方面,你可能有这些实体

User: id, name, email, etc...
Feed: id, feed_name, feed_url
Content: id, feed_id, title, content
User Feed: id, user_id, feed_id, user_label, has_read

未读项目:

SELECT COUNT(1)
FROM user u
JOIN user_feed uf ON uf.user_id = u.id
JOIN feed f ON f.id = uf.feed_id
WHERE has_read = 0

未读项目由饲料:

SELECT feed_id, feed_name, COUNT(1)
FROM user u
JOIN user_feed uf ON uf.user_id = u.id
JOIN feed f ON f.id = uf.feed_id
WHERE has_read = 0
GROUP BY feed_id, feed_name

然后你只需要一些机制来为已读标记项目。在谷歌阅读器的情况下,有通过鼠标悬停事件与其他链接触发只是AJAX调用一切标记为已读,留下一个项目标记为未读等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top