在Neo中实施单身人士有什么好处?

时间:2016-01-05 17:20:40

标签: neo4j

我的业务要求说我需要向某些类型的节点添加任意数量的明确定义的(AKA非动态,非未知)属性。我很确定虽然可能有30或40个不同的属性,但可能的节点不会超过4或5个。当然会有角落案件......

在这种情况下,我通常使用'attribute'作为业务所需的标记,而不是Neo4J意义上的标记。

我需要报告哪些节点具有哪些属性。例如,我可能需要报告哪些节点具有“拘留”,“暂停”或“双重机密试用”属性。

一种方法是在每个实体上简单地拥有一组适当的属性。但是每个查询都需要搜索所有节点。或者,我可以在每个节点上创建显式属性。现在可以将它们编入索引。我并没有认真考虑这些方法中的任何一种。

另一种方法是将每个属性实现为单个Neo节点,并允许许多(数万?)个其他节点与这些节点相关。此实现将有10,000个节点,但有40,000个关系。

最后,属性节点可以根据需要由特定实体节点创建和使用。在这种情况下,如果10,000个实体平均有4个属性,那么我总共有50,000个节点。

当我打字时,我意识到在第二种情况下,我仍然有40,000个关系;情况的“真相”没有改变。

是否有理由避免“单身”实施?我可以把时间戳放在关系上。但那些不会被索引......

1 个答案:

答案 0 :(得分:1)

对于您的简单用例,我建议您不列出一种方法 - 即为每个“属性”使用节点标签。

节点可以有多个标签,neo4j可以快速迭代所有具有相同标签的节点 - 使得查找具有特定标签的所有节点变得非常快速和容易。

例如:

MATCH (n:Detention)
RETURN n;