Neo4j 社交网络中通知的数据模型?
我与Neo4j建立了一个社交网络,包括: 节点标签:Neo4j 社交网络中通知的数据模型?,neo4j,notifications,social-networking,data-modeling,Neo4j,Notifications,Social Networking,Data Modeling,我与Neo4j建立了一个社交网络,包括: 节点标签:用户,发布,评论,页面,组 关系:像,写,有,加入,遵循 这就像Facebook 示例:A用户followB用户:当B用户有一个操作,如发布、评论、跟随另一个用户、跟随页面、加入组等,这样操作将发送到A。类似的,C,D,E遵循B的用户将收到相同的通知 我不知道如何为这个问题设计数据模型,我有一些解决方案: 为每个用户创建通知节点。如果执行了操作,则为n跟随者创建n通知。好处:我们可以检查这个用户是否看到了通知,对吗?但是,节点数量迅速增加,n
用户
,发布
,评论
,页面
,组
关系:像
,写
,有
,加入
,遵循
这就像Facebook
示例:A用户
followB用户
:当B用户
有一个操作,如发布、评论、跟随另一个用户、跟随页面、加入组等,这样操作将发送到A
。类似的,C
,D
,E
遵循B
的用户将收到相同的通知
我不知道如何为这个问题设计数据模型,我有一些解决方案:
通知
节点。如果执行了操作,则为n
跟随者创建n
通知。好处:我们可以检查这个用户是否看到了通知,对吗?但是,节点数量迅速增加,n
我认为最好的办法是选择1。正如您所说,您将能够知道跟随者是否阅读了通知。关于跟随者通知节点的数量:此问题称为“超级节点”或“密集节点”——连接过多的节点 《学习Neo4j》一书(由Rik Van Bruggen撰写,可供下载)谈到了“密集节点”或“超级节点”,并说: “[超级节点]成为图遍历的一个真正问题,因为图 数据库管理系统必须评估所有连接的数据库 与该节点的关系,以确定下一步 将在图形遍历中进行。” 本书提出了一个解决方案,包括在跟随者和通知之间添加元节点(在您的案例中)。这个元节点最多应该有100个连接。如果当前元节点达到100个连接,则必须创建一个新的元节点并将其添加到层次结构中,如图所示,显示了一个流行艺术家和粉丝的示例: 我想你现在不用担心。如果将来您的followers节点出现问题,那么您将能够重构数据库模式。但现在要保持简单
在一系列名为Max de Marzi的帖子中描述了构建模型的过程。也许它可以帮助你做出关于你的模型的最佳决策 但是通知的问题,我还没有怎么设计。