2013-03-30 60 views
2

我已经为社交网络创建了一个图形模型,并且需要关于缩放设计方面的一些具体建议。请原谅这些问题的严重性,但我并没有在那里找到很多明确的例子......社交网络的Neo4j图形模型

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

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

  2. 这些节点都具有属性(包含内容,ID等的json数据) - “全局”索引如何在此处发挥作用,以便我可以找到例如类似于Depeche Mode终生的结果?我知道如何添加一个节点到索引,只是想知道我是否在这里丢失了部分图片..

  3. 安全 - 登录和密码..我会假设一个图形数据库可以存储它们,但我假设这是一个安全风险 - 将它保存在postgres等中会更好吗?

  4. 如何改进这个模型来处理可伸缩性?想象一下,有2000万用户在此b目结舌......

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

enter image description here

回答

8

第1部分

你可以写你想要什么做暗号或小鬼查询。请记住,你可以在边缘上向前和向后运行。给定一个用户,应该总是相对稳定的时间来拉起他们所做的最后十件事情。

2.

部分如果是表示频带为特定类型的实体,索引在该属性。然后,您将能够拉出该节点并向外遍历以找到所有喜欢该乐队的用户。如果您没有独立的实体,或者它有某种隐含的含义,您需要为各自的图形数据库启用全文搜索。

第3部分。

了解更多关于安全性的信息。你要存储的唯一东西就是用户密码的正确散列字符串。在这一点上,你会很好地使用任何图形数据库和良好的安全做法。

Part 4/5。

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

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

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

当你有100万用户时,你可以开始担心你提出的问题。

直到你有至少0.1%的用户/体积你想扩展,这是心理手淫试图提出有关如何扩大到一定大小的问题。

+1

我可以欣赏用户的情感,而不是为没有编码的问题编码,但实际上,良好的预先设计可以真正有效地发挥新推出的网站不良宣传的效果, 。无论如何,这可能会发生,但如果你可以通过良好的设计提前做出规划,我认为你应该这样做。我也觉得“不要设计你没有的问题”意识形态有点像设计一个数据库,但是除非你真的遇到它们,否则不包括任何锁定功能。当然,我们可以远远超过计划,但仍然... –

+1

关于密码 - 我现在将它们存储在RDBMS中并进行哈希处理 - 我得到的是Neo4j的整体安全性 - 如果有人*发生了*要访问包括哈希密码在内的整个图表,这不太好..这是一个值得信任的问题 - Neo4j vs知名且经验丰富的RDMBS .. –

+1

有“不设计你没有的问题”和那么就有“不要设计至少几个月不会有的问题”。如果你从头开始设计一些东西,那么你在一夜之间就得到足够的用户来崩溃图形数据库的可能性很小。特别是如果你是图形数据库的新手,并且不知道你在做什么。只需构建它并使用一些分析工具来查看数据库的哪些部分实际上很慢(如果有的话)。即使你得到了技术的发展,但从长远来看,这并不重要。这些用户不会呆在附近。 – zmaril