Neo4j CREATE用于150M节点和100M边缘失去连接

时间:2017-11-05 17:44:31

标签: neo4j cypher

我正在为我的图形结构运行一些可伸缩性测试(如下所示),并使用neo4j浏览器界面来创建和查询图形。运行以下命令适用于500,000个节点,大于2M的图形,不仅最大化CPU使用率,而且还失去与本地服务器的连接(假设它超时,因为它需要很长时间?)。

FOREACH (r IN range(1,50000000) | CREATE (:entity {id:r})-[:IN_ASSOCIATION]->(iassoc:association{id:r})<-[:IN_ASSOCIATION]-(:entity{id:r+50000000}), (iassoc)-[:IN_DOC]->(:doc{id:r}))

是否有更好的替代方法来生成和填充具有大量节点的neo4j?

enter image description here

1 个答案:

答案 0 :(得分:2)

安装APOC procedures并尝试使用apoc.periodic.iterate程序:

CALL apoc.periodic.iterate(
    "WITH range(1, 50000000) AS rs UNWIND rs AS r RETURN r",
    "CREATE (:entity {id:r})-[:IN_ASSOCIATION]->(iassoc:association{id:r})<-[:IN_ASSOCIATION]-(:entity{id:r+50000000}), (iassoc)-[:IN_DOC]->(:doc{id:r})",
{batchSize:10000, parallel:true})

关于此程序的文档说:

  

使用apoc.periodic.iterate,您提供2个语句,第一个外部   声明提供了要处理的值流。第二,   内部语句一次处理一个元素(...)。

因此,第一个语句返回r从1到50000000.第二个语句接收r作为参数并根据需要创建节点和关系。

注意:请记住根据您使用的Neo4j版本安装APOC程序。请查看version compatibility matrix.

注意(2):plugins文件夹需要位于数据库文件夹而不是安装文件夹中(除非手动更改配置文件以指向安装文件夹)。