批量插入neo4j - 最佳选项?

3
我一直在尝试将一个相对较大的数据集导入到neo4j中...大约有5000万个节点和关系。
我最初通过py2neo尝试了Cypher,它确实可以工作,但如果需要使用CREATE UNIQUE或MERGE,则变得非常缓慢。
现在我正在寻找其他批量导入方法,并想知道哪种方法是最适合一般工作流程和速度的建议。
  • Neo4j文档提到了一个批量插入工具batch insertion facility,似乎是Java的,是Neo4j分发包的一部分;
  • 还有Michael Hunger在github上的batch inserter,我不确定它与分发包中的工具有多相似或不同;
  • 然后还有我正在测试的load2neo
  • 最后还有Neo v2的CYPHER中的load from CSV功能,虽然我不确定它是否只是方便因素,以及它的性能是否类似于通过Cypher事务批量执行40,000个查询。
我非常希望能够得到关于这些选项的功能、工作流程和速度差异的任何评论。

1
就我个人而言,我目前正在使用Nigel Small的load2neo,它似乎运行良好且速度快。在我看来,使用geoff格式的文本文件比使用包含所有属性作为列标题的CSV文件更容易构建。 - songololo
我在考虑使用load2neo而不是CSV批量导入器。它们的性能相似吗? - Lucas Azevedo
1个回答

1

你知道在性能方面,LOAD CSV语句与批量CSV导入工具有很大的区别吗? - songololo
1
我的猜测是批量导入工具要快得多,因为它只能写入数据,而且比使用整个Cypher语言更加灵活。我个人使用批量导入工具加载了大约1亿个节点和关系,在40分钟内完成。我还没有尝试使用LOAD CSV处理同样规模的数据。我认为这取决于数据量、您需要进行操作的灵活性(您始终可以预处理),以及它是否需要在应用程序生命周期内重复使用,而不是作为一次性的批量导入。 - Byron Ruth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接