Java Neo4J批量创建关系
CSV是加快批量关系创建的唯一选项吗? 我在网上读了很多文章,他们都在讲述CSV。CSV肯定会给我带来性能提升(你能想象有多大吗?),但我不确定我是否能以CSV格式存储数据。还有其他选择吗?使用Neo4J 3 BOLT协议我能得到多少 我的节目 我正在使用Neo4j 2.1.7。我试图一次创造大约50000个关系。我批量执行大小为10000的查询,插入所有50000个查询大约需要120-140秒 我的查询如下所示:Java Neo4J批量创建关系,java,neo4j,cypher,Java,Neo4j,Cypher,CSV是加快批量关系创建的唯一选项吗? 我在网上读了很多文章,他们都在讲述CSV。CSV肯定会给我带来性能提升(你能想象有多大吗?),但我不确定我是否能以CSV格式存储数据。还有其他选择吗?使用Neo4J 3 BOLT协议我能得到多少 我的节目 我正在使用Neo4j 2.1.7。我试图一次创造大约50000个关系。我批量执行大小为10000的查询,插入所有50000个查询大约需要120-140秒 我的查询如下所示: MATCH (n),(m) WHERE id(n)=5948 and id(m
MATCH (n),(m)
WHERE id(n)=5948 and id(m)=8114
CREATE (n)-[r:MY_REL {
ID:"4611686018427387904",
TYPE: "MY_REL_1"
PROPERTY_1:"some_data_1",
PROPERTY_2:"some_data_2",
.........................
PROPERTY_14:"some_data_14"
}]->(m)
RETURN id(n),id(m),r
正如文件中所述:
Cypher支持使用参数进行查询。这意味着开发人员不需要这样做
必须求助于字符串构建来创建查询。除了
这也使得Cypher更容易缓存执行计划
因此,您需要将数据打包为参数,并使用密码查询传递:
UNWIND {rows} as row
MATCH (n),(m)
WHERE id(n)=row.nid and id(m)=row.mid
CREATE (n)-[r:MY_REL {
ID:row.relId,
TYPE:row.relType,
PROPERTY_1:row.someData_1,
PROPERTY_2:row.someData_2,
.........................
PROPERTY_14:row.someData_14
}]->(m)
RETURN id(n),id(m),r
多谢各位!我将使用此解决方案测试性能,几分钟后会让您知道hours@By顺便问一下,如果您使用嵌入式服务器,为什么要使用密码?为什么不使用java方式:
graphDb.findNodes
等?我们要用螺栓protocol@VolodymyrBakhmatiuk顺便说一下,如果您需要批量创建关系,我不建议您返回任何内容。或者至少返回已创建关系的数量-返回计数(r)
。