这是我的场景:
-
单个应用程序生成有向图 - 它相对 balancer ,具有大约10个级别,20k节点和30k关系,
-
此图必须立即存储在neo4j中,以便此应用程序可以进行一些Cypher查询并继续前进 - 尽快执行此步骤非常重要,
-
同时这个图必须以某种方式存储(Cypher查询?CSV?自定义?),以便另一个应用程序在某个时刻获取几千个这些图,将所有这些图添加到neo4j并执行Cypher查询对他们而言 - 时间不是这一步的关键因素 .
我以为我将能够创建一个Cypher查询,它将立即插入整个图形 . 这很符合我的情况,因为我可以构建我的图表,将其表示为Cypher查询,在本地执行以执行应用程序在单个图表上需要执行的操作,然后将该查询存储在某处以备将来使用 . 不幸的是,它只适用于小图表 .
当我使用neo4j-shell或Java代码调用下面的查询时,它会在任何具有几百个节点/关系的图上中断:
CREATE (h1:Node:_Node {...}), (h2:Node:_Node {...}), (h3:Node:_Node {...}), ...,
(h1)-[:REL1]->(h2), (h1)-[:REL2]->(h3), (h2)-[:REL2]->(h3), ...
我尝试了其他多种方法,但没有任何效果如预期的那样 .
请告知这里最好的方法是什么 .
2 回答
对于大型数据集,请使用neo4j-import工具,massively parallel and scalable CSV importer .
将您的数据存储到几个csv文件(节点,关系,...)中并使用LOAD CSV cypher clause .
这应该是非常快的,您应该能够在几秒钟内加载数据并查询图表 .
然后,您可以将csv文件分发到另一台计算机并以相同的方式加载它 .