【问题标题】:Py2neo (Neo4j) insert / create Relationships in bulkPy2neo (Neo4j) 批量插入/创建关系
【发布时间】:2021-06-17 14:01:39
【问题描述】:

尝试在现有节点上插入许多新关系。 当前代码花费了数百万关系的太多时间。有没有办法优化?

from py2neo import *

g = Graph()
nodes = NodeMatcher(g)

for persons in relation:
    person_a, person_b = persons

    a = nodes.match("person",name=person_a).first()
    b = nodes.match("person",name=person_b).first()

    ab = Relationship(a, 'KNOWS' b)
    ab['date'] = '01-01-1980'

    g.create(ab)

现在假设两件事:

  1. 关系数以百万计
  2. 为了更快地处理事情,我有一个 pickle 转储,其中包含 py2neo.data.Node 数据类型中的所有节点详细信息,以便我们可以跳过 nodes.match(...) 部分。

注意:如果有任何其他方法可以在批量模式下更快地创建完整图表(如果添加关系所花费的时间 > 创建整个图表所花费的时间,我愿意从头开始创建整个图表)。节点数约为 80K。

【问题讨论】:

    标签: neo4j py2neo


    【解决方案1】:

    Py2neo 有一个您可能会觉得有用的批量 API: https://py2neo.org/2021.1/bulk/index.html

    【讨论】:

    • 已经尝试过这个,效果很好(比一次创建 1 个关系更好),但仍然很慢。对于大约 10 万个关系,大约需要 40 分钟(每批 5000 个)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多