存储用户通知的最佳方式?

时间:2011-09-21 20:16:32

标签: php mysql notifications

在链接共享网站上说,人们可以分享链接并发表评论。在评论发布后,需要通知链接后的用户。在该类别中共享链接时,需要通知类别后的用户。存储这些通知的最佳方式是什么?

我可以单独存储它们,在这种情况下,获取它们很简单,但每次发布链接时,我都必须为该类别之后的每个人添加一个通知。

我也可以每次只计算通知,在这种情况下,我会计算自上次用户登录并显示以来新注释的数量。但是,我无法保存旧通知。

我有什么选择?


好的,这是我的数据库架构:

comments
 - id
 - user
 - link
 - content

links
 - id
 - user
 - content

subscriptions
 - id
 - user
 - link

每次在链接上发表新评论时,订阅该链接的所有用户都应该有一个“通知”,他们将在下次登录时收到这些通知。

2 个答案:

答案 0 :(得分:4)

通知通常是一个高度读取的对象,因此您希望能够非常快速地获取当前未读通知的列表,而不是尝试即时计算。此外,尝试与登录时间进行比较并不能提供良好的用户体验。如果用户最初没有注意到它们,或刷新页面,或点击其中一个以查看其详细信息,则所有通知都将消失。

考虑到这一点,我建议让user_notification表中包含read / unread列。虽然知道程序中的可扩展性可能是一个问题是很好的,但直到你正在进行中才能完成(数百万条记录)。您可以索引用户列以提高速度,如果您确实需要,可以按用户进行分区以帮助扩展驱动器/服务器。

由您决定是否要将通知放在单独的表中,或者只是user_notifications表的一部分,这将是另一个要优化的区域。

答案 1 :(得分:1)

只需跟踪他们上次查看通知的时间。然后,他们订阅的那些在此时间之后创建的帖子将在下次他们查看通知的通知中。