我正在考虑Neo4J(2.0)数据库的图形数据库设计,我对它的生产率有疑问。
基本上,当用户添加信息时,他们将能够选择各种上下文,这些上下文将标有@mention标志。默认情况下,他们将信息添加到@private上下文中。这些上下文稍后将用于查找相关节点(例如,连接到@private上下文)。
问题:对于数据库生产力来说,拥有不同的@private上下文是否更好 - 每个用户都有一个。或者最好只创建一个@private上下文(最终将拥有数千个连接并成为一个非常中心的中心),然后在搜索期间使用关系属性。
简单地说:就遍历而言,最好是只有少数超连接节点的图形,还是将这些节点分成尽可能多的部分更好?
答案 0 :(得分:2)
当轮毂真正变大时,它们会成为一个问题。一般来说,Neo4j在适度连接的节点上表现良好。无论是密集还是稀疏。这是一个模糊的说法,但硬数字取决于您正在建模的域的细节。问问自己如何查询数据通常是一件好事。您是否几乎总是为一个用户获取上下文,或者您是否也会在用户之间进行查询?编写一个测试来创建和填充带有样本数据的图形,然后针对它运行查询也是一个好主意。您可以看到查询中的更改如何影响性能。如果您的集线器达到100k关系,您可以测试性能如何变化。
答案 1 :(得分:1)
Hub节点将在2.1版本中得到解决,因此检查它们会很便宜。
如果您默认为私有,您可能更愿意将异常标记为?即假设私有,只标记@public上下文。
否则我可能会使用可能使用标签标记的每用户上下文。