Neo4j /停用对象的好习惯是什么?

时间:2014-08-13 10:49:56

标签: database-design graph neo4j graph-databases

让我们假设一个用户想要卖掉他的车 从技术上讲,即将在图中创建相应的Car节点。

现在,用户改变了主意,想要保留他的车,意味着将其从销售区域中移除 因此,Car节点应该被删除,但不是物理上的(如99%的应用程序) 处理RDBMS的大多数应用程序会将Activated标记为falseN

使用Neo4j 2.X,我想到了两个解决方案:

  • 创建Cancellation 节点,通过关系Car链接到CANCELS。因此遵循将事实作为节点Graph Databases book
  • 的原则
  • 最初创建Activated时添加标签 Car,并在取消时将其删除。

这样,有两种方法可以检索当前要出售的汽车

  • MATCH (c:Car:Activated) RETURN c
  • MATCH (c:Car) WHERE NOT (c)<-[:CANCELS]-() RETURN c

我应该选择哪种方式?为什么?

1 个答案:

答案 0 :(得分:3)

使用Neo4j 2.x我会更改标签,主要是因为:

  • 可能会有很多取消项目,可能会创建一个密集节点,遍历繁重
  • 使用索引很容易返回标签,因此您可以在成长时使用它进行更多过滤
  • 由于这只是一个标记,而不是日期左右的标量值,因此Label在这里非常有意义,您不需要自由地从取消节点创建更多关系 - 过滤和排序可能很好,并且支持此标签的索引效果很好。