以下是我的情景:
单个应用程序生成有向图 - 它相对平衡,具有大约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), ...
我尝试了其他多项内容,但没有任何效果如预期的那样 请告知这里最好的方法。
答案 0 :(得分:3)
对于大型数据集,请使用neo4j-import工具massively parallel and scalable CSV importer。
答案 1 :(得分:1)
将您的数据存储到几个csv文件(节点,关系......)中并使用LOAD CSV
cypher clause。
这应该非常快,您应该能够在几秒钟内加载数据并查询图表。
然后,您可以将csv文件分发到另一台计算机并以相同的方式加载它。