我为社交网络创建了一个图形模型,需要一些有关缩放设计的具体建议。请原谅这些问题,但我没有找到很多明显的例子......
注意:状态更新和活动节点/关系是链接列表 - 最新的条目不断放在列表的顶部。
链接列表允许生成新闻源,但每个用户可能有数百条记录 - 我认为即使数据按日期降序排列,限制子句也不够。我是否必须拥有一个单独的链接列表,该列表仅包含最新的10个状态/活动更新)并不断替换该列表上的头部以获得更好的活动源生成,或者将一个列表正确排序并完成工作(使用限制条款)
这些节点都具有属性(带有内容,ID等的json数据) - “全局”索引如何在这里发挥作用,以便我可以找到喜欢Depeche Mode的用户而无需等待一生为了结果?我知道如何将一个节点添加到一个索引,只是想知道我是否在这里错过了一部分图片..
安全性 - 登录名和密码..我认为图表数据库可以存储它们,但我认为此时存在安全风险 - 将它保存在postgres等会更好吗?
您如何改进此模型以处理可伸缩性?想象一下,有2000万用户正在敲打这个......
想象一下,有4000万用户 - 在可扩展性方面,这个模型有什么问题?
答案 0 :(得分:8)
第1部分。
您可以编写符合您需要的cypher或gremlin查询。请记住,您可以在边缘上向前和向后移动。给定一个用户,它应该总是相对恒定的时间来完成它们所做的最后十件事。
第2部分。
如果您将某个频段表示为某种类型的实体,请对该属性进行索引。然后,您将能够拉出该节点并向外遍历以查找喜欢该频段的所有用户。如果您没有独立实体,或者它以某种方式隐含,您将需要为相应的图形数据库启用全文搜索。
第3部分。
详细了解安全性。您要存储的唯一内容是用户密码的正确哈希字符串。那时你可以使用任何图形数据库和良好的安全实践。
第4/5部分。
一旦有一个用户,就要担心下一千个用户。
当你有一千个用户时,担心下一个十万。
当你有十万时,担心下一百万。
当您拥有一百万用户时,您可以开始担心您提出的问题。
在您想要扩展到至少0.1%的用户/音量之前,尝试提出有关如何扩展到特定大小的问题是精神上的手淫。