facebook如何向粉丝通报墙壁更新?

时间:2016-04-22 13:48:20

标签: sql-server facebook database-design

我在社交媒体应用程序上工作,我希望用户可以选择在页面创建新帖子时收到通知(如在facebook中)。首先,我创建一个Notification表,其中包含:

Id(PK)
UserId
PageId
PostId
ReadBit
Date

但这没有意义。如果页面有1000个甚至500个感兴趣的粉丝,那么从逻辑上讲,每个感兴趣的粉丝都不会创建1000或500个记录。还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

您正在谈论的信息有两种类型:页面和帖子。

当用户选择页面时,这应该是持久的,因此您需要一个表示此内容的数据库条目。标准的方法是每个用户和她订阅的每页有一条记录:

Subscription(id, user_id, page_id)

根据具体要求,可能存在更简单的解决方案。例如,如果页面是关于主题的,并且用户没有订阅页面而是订阅主题(诸如关于汽车的50页和关于计算机的70页),则存储每个用户和主题的订阅就足够了。但是你的文字并没有表明这一点。

第二个问题是如何在对页面发布帖子时跟踪通知过程。严格来说,每个此类通知都不需要数据库记录。当页面发生变化时,使用Subscription表查找所有订阅者,并在循环中生成通知。

只有在您需要有关每个此类通知的其他持久性信息时,您才需要按通知记录,即

Notification(id, subscription_id, ...)

如果您需要在发送通知时存储时间戳,或者您有通知流程的某些状态信息,例如,可能会出现这种情况。用户是否对通知做出了反应。