Neo4J数据库设计:拥有集线器是否可以,还是拆分它们更好?

时间:2014-03-01 19:32:40

标签: neo4j graph-databases

我正在考虑Neo4J(2.0)数据库的图形数据库设计,我对它的生产率有疑问。

基本上,当用户添加信息时,他们将能够选择各种上下文,这些上下文将标有@mention标志。默认情况下,他们将信息添加到@private上下文中。这些上下文稍后将用于查找相关节点(例如,连接到@private上下文)。

问题:对于数据库生产力来说,拥有不同的@private上下文是否更好 - 每个用户都有一个。或者最好只创建一个@private上下文(最终将拥有数千个连接并成为一个非常中心的中心),然后在搜索期间使用关系属性。

简单地说:就遍历而言,最好是只有少数超连接节点的图形,还是将这些节点分成尽可能多的部分更好?

2 个答案:

答案 0 :(得分:2)

当轮毂真正变大时,它们会成为一个问题。一般来说,Neo4j在适度连接的节点上表现良好。无论是密集还是稀疏。这是一个模糊的说法,但硬数字取决于您正在建模的域的细节。问问自己如何查询数据通常是一件好事。您是否几乎总是为一个用户获取上下文,或者您是否也会在用户之间进行查询?编写一个测试来创建和填充带有样本数据的图形,然后针对它运行查询也是一个好主意。您可以看到查询中的更改如何影响性能。如果您的集线器达到100k关系,您可以测试性能如何变化。

答案 1 :(得分:1)

Hub节点将在2.1版本中得到解决,因此检查它们会很便宜。

如果您默认为私有,您可能更愿意将异常标记为?即假设私有,只标记@public上下文。

否则我可能会使用可能使用标签标记的每用户上下文。