我是图形数据库场景的新手,正在研究 Neo4j 并学习 Cypher,我们正在尝试对图形数据库进行建模,这是一个相当简单的模型,我们有用户,我们有电影,用户可以观看 电影,评价 电影,创建播放列表和播放列表可以有 电影。
问题是关于超级节点性能问题。我将引用我目前正在阅读的一本非常好的书——Rik Van Bruggen 的 Learning Neo4j 中的一些内容,所以这里是:
然后在图的某些部分都连接到同一个节点的数据集中会出现一个非常有趣的问题。这个节点,也称为密集节点或超级节点,成为图遍历的一个真正问题,因为图数据库管理系统必须评估与该节点的所有连接关系,以确定下一步将是什么图遍历。
书中提出的解决这个问题的方法是让一个 Meta 节点有 100 个连接,并将第 101 个连接链接到一个新的 Meta 节点,该节点链接到之前的 Meta 节点。
我看到官方 Neo4j 博客的一篇博文说他们将在未来解决这个问题(博文来自 2013 年 1 月) - http://neo4j.com/blog/2013-whats-coming-next-在neo4j/
更确切地说,他们说:
我们围绕“更大数据”计划的另一个项目是添加一些特定的优化来处理跨密集连接节点的遍历,这些节点具有非常大量(数百万)的关系。(这个问题有时被称为“超级节点”问题。)
你对这个问题有什么看法?我们应该采用元节点扇出模式还是采用每个教程似乎都在使用的基本关系?还有其他建议吗?