design-patterns - 在通知系统中每个通知插入多少行?

标签 design-patterns database-design notifications

this question我正在考虑构建一个类似的通知系统,我有一个问题(我认为有一个明显的答案,但我更喜欢有其他一些意见):

如果某个特定的帖子产生了 100 万个赞,然后有人在该帖子中添加了评论,我需要通知那些喜欢该帖子的百万人添加的评论。将一百万行写入 NotificationRead 是实现这一目标的唯一方法。具有 NotificationID 的表并将它们“发送”给不同的用户?

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

有没有其他方法可以做到?我使用的是 SQL Server 2014,我的应用程序服务器是 ColdFusion 2016

最佳答案

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

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

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

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

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

    关于design-patterns - 在通知系统中每个通知插入多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660223/

    相关文章:

    java - Scala/Java 中的编程语言抽象

    java - 记录应用程序中使用的特性/功能

    php - 从 MySQL 表生成报告

    c# - ERP会计年度交易表的单数据库VS多数据库?

    swift - IOS 14 UNNotificationPresentationOptions.list、.banner 与警报

    java - 高可用性和灾难恢复软件反模式

    java - 如何在 Kotlin 中实现模板方法设计模式?

    mysql - 满足多种用户偏好的数据库设计?

    c# - "Speech bubble"通知

    c# - 当我在 Android 中通知时,如何让我的通知下拉?