【问题标题】:Is incremental adds are possible in neo4j?Neo4j 中是否可以进行增量添加?
【发布时间】:2015-06-30 12:33:38
【问题描述】:

我有一个简单的问题。我有 100 万个节点和 400 万个关系的数据库。我使用 import csv 命令创建的 neo4j 中的所有数据。现在在测试图形数据库并根据我的需要分析查询之后。现在我想制作一个 php 程序,其中数据将自动加载,我最终会得到结果(根据我的查询)。现在问题来了,因为我的数据将在 15 分钟后更新。 Neo4j 是否具有增量添加的能力。喜欢显示在这个特定时间添加了哪些新关系或节点。我正在考虑使用 time 命令查看在那个时间创建了哪些数据。如果我错了,请纠正我。我只想看看新增的内容。因为我不希望 neo4j 将时间浪费在计算已经存在的节点/关系上。有没有其他方法可以做到这一点。 提前致谢。

【问题讨论】:

  • 这是一个有趣的用例,它对 IMO 很有价值。除了 GraphAware Timetree 与 GraphAware ChangeFeed 模块的组合,我现在看不到任何开箱即用的可能性。但是我在我们的插件上打开了一个问题,看看我们是否可以实现这个功能:github.com/graphaware/neo4j-changefeed/issues/4

标签: database neo4j cypher graph-databases


【解决方案1】:

您可以添加一个属性来存储添加节点的日期/时间字符串。然后您可以查询自上次日期/时间以来的所有内容。不过,我不能 100% 确定它的索引性能。

但是,如果您只关心显示最近导入的内容,则可以使用带有索引的布尔值:

CREATE INDEX ON :Label(recently_added)

然后,当您导入数据时,您可以取消设置所有当前数据并设置新数据,如下所示:

MATCH (n:Label {recently_added: true})
REMOVE n.recently_added

第二次查询:

MATCH (n:Label {id: {id_list}})
SET n.recently_added = true

这是假设您在节点上有某种唯一标识符,您可以使用它来设置刚刚添加的那些。

【讨论】:

  • 感谢布赖恩,但你不认为这更像是滑动窗口。
  • 我想我认为这就是你的意思。能举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2017-10-14
  • 2015-06-21
  • 1970-01-01
  • 2011-09-15
  • 2014-08-26
  • 1970-01-01
相关资源
最近更新 更多