3

我需要能够频繁地插入批量节点。它可能是完全的新插入或对现有节点(和关系)的更新。

在使用 Neo4j 中的 BatchInsert 工具后,我发现了一个限制,即当我的下一批节点到达时,我不能只将它们更新到图中(或将它们添加到图中)。相反,我将不得不从头开始重新加载我之前加载的所有其他内容。

我深入研究了 neo4j-kernel 代码库,看看我是否可以实现一个自定义导入器,它允许我在新数据到达时导入和更新。BatchInserterImpl 似乎是逻辑的核心发生在 createNodes、createRelationships 等的类。正如预期的那样,我看到,nodestore(NeoStore 对象)是在构造函数中新创建的。

我该如何解决这个问题?是否有其他插入数据的实现,其中更新被照顾,所以,我不必重新导入我已经添加到图形数据库中的所有内容?如果没有,您对扩展现有代码以帮助我的用例有什么建议?

我还需要添加索引和支持事务(至少在基本级别上)。

4

1 回答 1

1

感觉你应该使用 EmbeddedGraphDatabase。BatchInserter 主要是做初始的大规模插入。完成后,您应该切换到支持并发读/写和事务的 EmbeddedGraphDatabase,等等。

于 2013-03-18T13:04:08.527 回答