通知系统中每个通知要插入多少行?

时间:2016-11-17 16:33:00

标签: design-patterns database-design notifications

this question之后我正在寻找建立类似的通知系统,我有一个问题(我认为有一个明显的答案,但我更愿意有其他意见):

如果特定帖子产生了一百万个喜欢,然后有人在该帖子中添加评论,我需要通知那些喜欢该帖子的百万人关于添加的评论。实现此目的的唯一方法是将一百万行写入NotificationRead表,其中NotificationID和'发送'他们对各种用户?

我无法想象任何其他方法可以让我跟踪谁阅读他们的通知,并且可能每个帖子每个帖子插入一百万行,听起来令人生畏和昂贵。

还有其他办法吗?我使用的是SQL Server 2014,我的应用程序服务器是ColdFusion 2016

1 个答案:

答案 0 :(得分:1)

首先,如果您需要推送通知,则无法避免您需要以某种方式通知每个百万用户。但是,您不一定需要在服务器上存储所有通知。

可以做出一些合理的假设:

  • 大多数活动都会发生在最近的帖子上(例如,不到一周的帖子)
  • 大多数用户不会立即回复通知

通过此操作,您可以跳过存储最近帖子的通知:当用户登录时,您可以简单地轮询用户的近期帖子以查看是否有任何新活动。当用户登录时,您正在做额外的工作,但这会随着时间的推移而分散。

对于较旧的帖子,您仍然可以回退为每个用户存储单独的通知,但这不应该经常发生。同样,您可以选择保留每个用户最后N个通知的列表,而不是为每个通知插入新行。这样,如果用户长时间没有登录,您就不会堆积旧通知(用户可能并不关心)。