比如说我试图创建一个代表家谱的图表。这里的问题是:
* Timmy可以是Suzie的哥哥,但
* Suzie不能是Timmy的哥哥。
因此,有必要在两个方向上对其进行建模:
(当然,从技术上讲,我可以使用SIBLING_TO并只留下一条边...但是当我尝试连接祖母和孙子时,我不确定词汇是什么。)
说到底,在这个例子中方向很重要,我相当确定这一点是无法避免的。
我正在阅读这篇博客文章,关于常见的Neo4j错误。作者指出,这种双向性不是在Neo4j中建模数据的最有效方式,应该避免使用。
我开始同意这种观点。我设置了一个模拟的2个家庭:
我发现我尝试运行的许多查询非常慢。这是由于图表的“所有连接到所有”的性质,至少在各自的家庭内是如此。
我的问题是:
1)我正确地说双向性不理想吗?
2) 如果可以,我的家谱示例是否可以用其他方式表示...在出现我的问题的许多情况下,什么是最佳实践?
3) 如果无法以其他方式表示家谱,则是否有技术上的可能以某种方式编写查询,以避免问题1)的影响?
感谢阅读和思考。