Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 在通知系统中,每个通知要插入多少行?_Design Patterns_Database Design_Notifications - Fatal编程技术网

Design patterns 在通知系统中,每个通知要插入多少行?

Design patterns 在通知系统中,每个通知要插入多少行?,design-patterns,database-design,notifications,Design Patterns,Database Design,Notifications,接下来,我正在考虑建立一个类似的通知系统,我有一个问题(我想这个问题有一个明显的答案,但我更愿意有一些其他的意见): 如果某个帖子产生了一百万条赞,然后有人向该帖子添加了一条评论,那么我需要将添加的评论通知那些喜欢该帖子的一百万人。实现这一点的唯一方法是将一百万行写入具有NotificationID的NotificationRead表,并将它们“发送”给各个用户吗 我无法想象任何其他方法可以让我跟踪谁阅读了他们的通知,并且可能在每个通知的每个帖子中插入一百万行,这听起来既令人畏惧又昂贵 还有别的

接下来,我正在考虑建立一个类似的通知系统,我有一个问题(我想这个问题有一个明显的答案,但我更愿意有一些其他的意见):

如果某个帖子产生了一百万条赞,然后有人向该帖子添加了一条评论,那么我需要将添加的评论通知那些喜欢该帖子的一百万人。实现这一点的唯一方法是将一百万行写入具有
NotificationID
NotificationRead
表,并将它们“发送”给各个用户吗

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


还有别的办法吗?我使用的是SQL Server 2014,我的应用程序服务器是ColdFusion 2016。首先,如果您需要推送通知,那么您必须以某种方式通知数百万用户中的每一位。但是,您不一定需要在服务器上存储所有通知

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

  • 大多数活动将发生在最近的帖子上(比如,不到一周的帖子)
  • 大多数用户不会立即响应通知
这样,您可以跳过存储最近帖子的通知:当用户登录时,您只需轮询用户最近的帖子,查看是否有任何新活动。当用户登录时,您正在做额外的工作,但这会随着时间的推移而分散

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