我正在考虑 Neo4J (2.0) 数据库的图形数据库设计,并且对其生产力有疑问。
基本上,当用户添加信息时,他们将能够选择各种上下文,这些上下文将标有 @mention 符号。默认情况下,他们将信息添加到@private 上下文中。这些上下文稍后将用于查找相关节点(例如,连接到 @private 上下文)。
问题:拥有不同的 @private 上下文(每个用户都有一个)是否可以提高数据库生产力。或者最好只创建一个 @private 上下文(最终将拥有数千个连接并成为一个非常中心的枢纽),然后在搜索过程中使用关系的属性。
简单地说:就遍历而言,是只有少数超连接节点的图更好,还是将这些节点分成尽可能多的部分更好?
最佳答案
当集线器变得非常大时,它们可能会成为一个问题。一般来说,Neo4j 据说在中等连接的节点上表现良好。不浓也不疏。这是一个模糊的说法,但硬性数字取决于您正在建模的领域的具体情况。一般来说,问问自己将如何查询数据是一件好事。您几乎总是会获取一个用户的上下文,还是还会跨用户进行查询?编写一个测试来创建并使用示例数据填充图表,然后对其运行查询也是一个好主意。您可以看到查询中的更改如何影响性能。您可以测试如果您的集线器达到 10 万个关系,性能将如何变化。
关于Neo4J数据库设计: is it OK to have hubs or is it better to split them?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119289/