社交网络的Neo4j图模型

时间:2013-03-30 04:27:36

标签: neo4j titan

我为社交网络创建了一个图形模型,需要一些有关缩放设计的具体建议。请原谅这些问题,但我没有找到很多明显的例子......

注意:状态更新和活动节点/关系是链接列表 - 最新的条目不断放在列表的顶部。

  1. 链接列表允许生成新闻源,但每个用户可能有数百条记录 - 我认为即使数据按日期降序排列,限制子句也不够。我是否必须拥有一个单独的链接列表,该列表仅包含最新的10个状态/活动更新)并不断替换该列表上的头部以获得更好的活动源生成,或者将一个列表正确排序并完成工作(使用限制条款)

  2. 这些节点都具有属性(带有内容,ID等的json数据) - “全局”索引如何在这里发挥作用,以便我可以找到喜欢Depeche Mode的用户而无需等待一生为了结果?我知道如何将一个节点添加到一个索引,只是想知道我是否在这里错过了一部分图片..

  3. 安全性 - 登录名和密码..我认为图表数据库可以存储它们,但我认为此时存在安全风险 - 将它保存在postgres等会更好吗?

  4. 您如何改进此模型以处理可伸缩性?想象一下,有2000万用户正在敲打这个......

  5. 想象一下,有4000万用户 - 在可扩展性方面,这个模型有什么问题?

  6. enter image description here

1 个答案:

答案 0 :(得分:8)

第1部分。

您可以编写符合您需要的cypher或gremlin查询。请记住,您可以在边缘上向前和向后移动。给定一个用户,它应该总是相对恒定的时间来完成它们所做的最后十件事。

第2部分。

如果您将某个频段表示为某种类型的实体,请对该属性进行索引。然后,您将能够拉出该节点并向外遍历以查找喜欢该频段的所有用户。如果您没有独立实体,或者它以某种方式隐含,您将需要为相应的图形数据库启用全文搜索。

第3部分。

详细了解安全性。您要存储的唯一内容是用户密码的正确哈希字符串。那时你可以使用任何图形数据库和良好的安全实践。

第4/5部分。

一旦有一个用户,就要担心下一千个用户。

当你有一千个用户时,担心下一个十万。

当你有十万时,担心下一百万。

当您拥有一百万用户时,您可以开始担心您提出的问题。

在您想要扩展到至少0.1%的用户/音量之前,尝试提出有关如何扩展到特定大小的问题是精神上的手淫。