python - 使用py2neo批量API在neo4j数据库中批量创建关系(具有多种关系类型)
问题描述
我正在尝试使用 py2neo bulk api 在 neo4j 数据库中批量创建关系create_relationship()
。我在列表中有多种关系类型(如知道、关注等),并且我想在图形数据库中创建大量关系(超过 3000 万个)。目前我正在使用 Neo4j Desktop 1.4.7 和 python 版本 3.9。
我已经使用create_nodes()
py2neo.bulk api 批量创建了节点。
以下是相同的示例代码:
from py2neo import Graph
from py2neo.bulk import create_nodes,create_relationships
from py2neo.data import Node
graph = Graph(auth=('neo4j', 'abc123'))
one_node=Node("Person", name="Alice", nid="01")
two_node=Node("Person", name="ACME", nid="02")
t_node=Node("Person", name="Mahi", nid="03")
f_node=Node("Person", name="Ali", nid="04")
data = []
data.append(one_node)
data.append(two_node)
data.append(t_node)
data.append(f_node)
try:
create_nodes(graph.auto(), data, labels={"Person"})
except Exception as error:
print(error)
try:
graph.run("CREATE INDEX ON :Person(nid)")
except Exception as error:
print(error)
#I have created a relationship using create_relationship() api of
#py2neo.bulk. Below is the sample code for the same.
rel_data= [
("01", {}, "02"),
("03", {}, "04"),
]
try:
create_relationships(graph.auto(), rel_data, "WORKS_FOR", \
start_node_key=("Person", "nid"), end_node_key=("Person", "nid"))
except Exception as error:
print(error)
我面临以下查询问题:
在上面的代码中,如果我为所有 3000 万个节点提供单一关系类型,则数据仅在 74 秒内插入。但是我想在 Neo4j 中插入的数据有多种关系类型(比如我提到的文件有 79 种关系类型,每种都有自己的数据集)。所以我
create_relationship()
用自己的数据调用了 API 79 次,花了 9 分钟才完成。所以结论是单一关系类型提供了更好的性能,我们可以一次给create_relationship()
API 提供多个关系类型。在上面的代码中,如果我不向
create_relationship()
API 提供开始键和结束键,那么创建边的性能会变快但缺少一些边,但是如果我提供开始键和结束键(如上面的代码所示),那么性能会变慢. 那么有没有更好的方法来建立大量的关系呢?仅供参考,在我们的情况下,我们不想使用Load csv
查询,如果可能,请提出其他解决方案。在调查时,我
WriteBatch
从 py2neo 库中找到了一些用于创建我们自己的批处理的示例,但是我无法在具有WriteBatch()
API 的 py2neo 中导入 neo4j 模块,因为我使用的是 py2neo 版本 2021.1。那么有什么方法可以解决这个问题,或者有没有其他方法可以使用 py2neo 创建自己的批次。
先感谢您。
解决方案
推荐阅读
- algorithm - 背包的递推关系
- python-3.x - 如何根据另一列中的转换事件减去日期时间
- postgresql - 在 Postgres 上使用 E'xxx' 语法时需要转义哪些字符
- javascript - 谷歌浏览器扩展的内容脚本不起作用
- python - 将数据框与 groupby 进行比较并找到缺失的条目
- android - FirebaseUI 强制横向模式
- mongodb - 为什么我的 mongodb 聚合计数以小数形式返回?
- python - spaCy 的 python 类型提示
- webpack-dev-server - miragejs '[WDS] 断开连接!' 即刻
- java - putObjectRequest 期间出现间歇性 403