Neo4j设计性能:我是否必须避免大节点度?

时间:2018-04-30 08:29:14

标签: graph neo4j graph-databases

我正在设计一个使用Neo4j实现的数据模型。是关于一个交通系统,有一些车站,有一些车辆在他们之间旅行。

一些车站有大量的旅行,比如每月一百万。所以我想知道是否存在任何性能损失,以防有一些节点出现数百万个边缘?使用一些设计技巧(并且可能使设计稍微差一点)来降低度数会更好吗?

1 个答案:

答案 0 :(得分:1)

关系度在他们被遍历时确实最重要,因此遍历任何关系类型和方向的扩展,或具有高度数的关系的类型(和方向)。

因此,如果有100k:TRAVELS_TO与特定位置的关系,100:与该位置的VISITED关系,并且只有1:TRAVELS_TO关系来自该位置,那么您只需支付遍历那些时的高成本:TRAVELS_TO与该位置的关系。如果您正在遍历不同类型和/或方向的关系,那么由于其他10万个关系,您将无法支付更高的费用。

因此,使您的类型和/或方向多样化肯定会有所帮助。

您可能需要查看Max De Marzi的博客,了解constructing a flight/airtravel graph时的方法,您可能会在这里找到很好的方法。