Neo4j 如何处理图数据库中少数顶点的大量边

Neo4j 如何处理图数据库中少数顶点的大量边,neo4j,graph-databases,gremlin,Neo4j,Graph Databases,Gremlin,我正在尝试基于大型RDBMS数据对图形数据库进行建模。graph db背后的原因是为了回答许多基于关系的问题,实现不同节点之间的遍历和性能。在对此进行建模时,我注意到很少有节点具有大量的输出边 例如,将“类别”视为一个顶点,“产品”视为另一个顶点。存在其他顶点,如“产品”。然而,很多边都是从“类别”向外延伸到其他边的,向外延伸的边数只有100000条 这是警报吗? 是否有更好的设计原则来以不同的方式主动设计此模型?假设您当前的数据模型如下所示: (:Category {name: 'Toy'})

我正在尝试基于大型RDBMS数据对图形数据库进行建模。graph db背后的原因是为了回答许多基于关系的问题,实现不同节点之间的遍历和性能。在对此进行建模时,我注意到很少有节点具有大量的输出边

例如,将“类别”视为一个顶点,“产品”视为另一个顶点。存在其他顶点,如“产品”。然而,很多边都是从“类别”向外延伸到其他边的,向外延伸的边数只有100000条

这是警报吗?
是否有更好的设计原则来以不同的方式主动设计此模型?

假设您当前的数据模型如下所示:

(:Category {name: 'Toy'})<-[:IS_A]-(:Product {id: 123})

使用此新数据模型,您可以直接查找所有
Toy
产品,而无需遍历任何关系(例如,
MATCH(t:Toy)RETURN t
)。

假设您当前的数据模型如下所示:

(:Category {name: 'Toy'})<-[:IS_A]-(:Product {id: 123})

有了这个新的数据模型,您可以直接找到所有
Toy
产品,而无需遍历任何关系(例如,
MATCH(t:Toy)RETURN t
)。

另一种选择是使用“category”作为“product”的属性,这样既可以解决超级顶点问题,又可以节省资源。例如,如果要查找特定类别下的所有产品,请为“类别”属性创建索引


一般来说,在图建模中应该避免使用超级顶点,因为它们对查询性能有显著影响。如果查询这些边,大多数图形数据库都会切断或进行采样。如果不可避免,请确保在穿过这些顶点的外边缘时至少设置限制

另一种选择是使用“类别”作为“产品”的属性,这既可以解决超顶点问题,又可以节省资源。例如,如果要查找特定类别下的所有产品,请为“类别”属性创建索引

一般来说,在图建模中应该避免使用超级顶点,因为它们对查询性能有显著影响。如果查询这些边,大多数图形数据库都会切断或进行采样。如果不可避免,请确保在穿过这些顶点的外边缘时至少设置限制