继 this question我正在考虑构建一个类似的通知系统,我有一个问题(我认为有一个明显的答案,但我更喜欢有其他一些意见):
如果某个特定的帖子产生了 100 万个赞,然后有人在该帖子中添加了评论,我需要通知那些喜欢该帖子的百万人添加的评论。将一百万行写入 NotificationRead
是实现这一目标的唯一方法。具有 NotificationID
的表并将它们“发送”给不同的用户?
我无法想象任何其他方法可以让我跟踪谁阅读了他们的通知,并且每个通知可能在每个帖子中插入一百万行听起来令人生畏且昂贵。
有没有其他方法可以做到?我使用的是 SQL Server 2014,我的应用程序服务器是 ColdFusion 2016
最佳答案
首先,如果您需要推送通知,则无法逃避这样一个事实:您需要以某种方式通知数百万用户中的每一个。但是,您不一定需要在服务器上存储所有通知。
人们可以做出一些合理的假设:
有了这个,您可以跳过存储最近帖子的通知:当用户登录时,您可以简单地轮询用户的最近帖子以查看是否有任何新事件。当用户登录时,您正在做额外的工作,但这会随着时间的推移而分散。
对于较旧的帖子,您仍然会退回为每个用户存储单独的通知,但这不应该经常发生。同样,您可以选择保留每个用户的最后 N 个通知的列表,而不是为每个通知插入一个新行。这样,如果用户长时间不登录,您就不会堆积旧通知(用户可能根本不关心)。
关于design-patterns - 在通知系统中每个通知插入多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660223/