在Neo4j中,更快的聚类结构

时间:2014-05-22 22:59:18

标签: neo4j graph-databases

假设我有一堆User节点,它有一个名为gender的属性,可以是男性或女性。现在为了根据性别对用户进行聚类,我有两种结构选择:

1)向gender属性添加索引,并使用WHERE选择性别下的用户。

2)创建一个Male节点和一个Female节点,并将它们链接到相关用户。然后每次查询性别时,我都会使用模式,比如说,(:男性) - [] - >(:用户)。

我的问题是,哪一个更好?

1 个答案:

答案 0 :(得分:1)

指数永远不应该取代将图形放入图表中。

索引非常适合查找唯一值,在某些情况下,还可以查找值组;但是,使用Neo4j可以执行的缓存(以及对域进行建模的可扩展性)。

仅对具有两个(给予或获取)属性的属性进行索引不是索引的最佳使用,并且考虑到每个属性值的结果数量,可能不会过多地提高性能。

也就是说,使用选项#2可以创建超级节点,这是一个瓶颈问题,根据您的型号可能会成为一个主要问题。

也许考虑使用标签(例如:男性和女性),因为它们本质上是“模式索引”。另外请记住,每个节点可以使用多个标签,因此您可以使用(用户:用户:男性)等。它还有助于避免超节点而不创建经典或“遗留”索引。

HTH