首页 文章

如何在neo4j中快速创建100k节点和关系?

提问于
浏览
0

我想在neo4j中创建100k节点 . 什么方法最适合这个目的? Cypher或csv上传还是其他什么?

我只是尝试通过运行参数化的密码来使用java创建一些节点和关系:

for(int i = 0; i < 100000; i++)
{
    params.put("param1", "param1_val_" + i);
    //...
    params.put("param10", "param10_val_" + i); 
    neo4jsession.run(cypher, params);
}

花了15分钟来完成上述循环的20 000次迭代 . 每个cypher执行创建包含三个节点和两个关系的集合 .

之前我试过运行非参数化的密码 . 但它比这更慢(因为似乎neo4j为每个查询重新创建了密码查询计划) . 有没有更好的方法来优化cypher通过neo4j java api运行?或者我们是否应该使用像csv upload这样的其他方法来创建这样的批量节点和关系?任何方法都可以实现任何进一步的性能提升吗?

1 回答

  • 0

    每个事务使用单个插入进行批处理不会很好 . 您需要一次批量处理多个,传递一组输入,在密码查询中使用UNWINDing并按批次执行写入 .

    您可以通过带有USING PERIODIC COMMIT的LOAD CSV执行此操作,或者您可以自己执行with these batching techniques .

    APOC程序还具有batching procedures,当您不从外部导入数据时,对图表进行批处理更新时非常有用 .

相关问题