用Python在Neo4j中执行大容量添加/插入的最快方法?

2024-05-15 05:02:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现当通过py2neo for Python使用REST API时,Neo4j添加节点和关系/弧/边的速度很慢。我知道这是因为每个REST API调用都作为一个独立的事务执行。

具体来说,在本地主机上添加几百对具有它们之间关系的节点需要几秒钟的时间。

在使用Python的同时显著提高性能的最佳方法是什么?

使用bulbflow和Gremlin是否是构建批量插入事务的一种方法?

谢谢!


Tags: 方法restapifor节点关系时间性能
3条回答

Neo4j的写性能很慢,除非您正在执行批插入。

Neo4j批导入程序(https://github.com/jexp/batch-import)是将数据加载到Neo4j中最快的方法,它是一个Java实用程序,但是您不需要知道任何Java,因为您只是在运行可执行文件。它处理类型化数据和索引,并从CSV文件导入。

要将其与灯泡(http://bulbflow.com/)模型一起使用,请使用modelget_bundle()方法获取数据、索引名和索引键(准备插入),然后将数据输出到CSV文件。或者如果不想对数据建模,只需将数据从Python输出到CSV文件。

对你有用吗?

有几种方法可以使用py2neo进行批量创建,每种方法只对服务器进行一次调用。

  1. 使用create方法在单个批处理中构建多个节点和关系。
  2. 使用cypher CREATE语句。
  3. 使用新的WriteBatch类(本周刚刚发布)手动创建一批节点和关系(这实际上只是1的手动版本)。

如果你有一些代码,我很高兴看到它,并提出性能调整的建议。也有很多测试可以让你从中得到灵感。

干杯, 奈吉

这个问题在网上有很多老的答案,我花了很长时间才意识到neo4j有一个重要的工具,它非常快,是我能找到的最好的工具。

如果要导入学生节点,下面是一个简单的示例:

bin/neo4j-import --into [path-to-your-neo4j-directory]/data/graph.db --nodes students

students文件包含如下所示的数据,例如:

studentID:Id(Student),name,year:int,:LABEL

1111,Amy,2000,Student

2222,Jane,2012,Student

3333,John,2013,Student

说明:

  • 标题解释了下面的数据应该如何解释。
  • Student Id是具有类型Id(Student)的属性。
  • 名称的类型为字符串,这是默认值。
  • 年是整数
  • :LABEL是这些节点所需的标签,在本例中为“Student”

这是它的文档:http://neo4j.com/docs/stable/import-tool-usage.html

注意:我知道这个问题特别提到了python,但是另一个有用的答案提到了非python解决方案。

相关问题 更多 >

    热门问题