用neo4j存储有向图

时间:2016-02-02 10:13:10

标签: neo4j cypher

以下是我的情景:

  • 单个应用程序生成有向图 - 它相对平衡,具有大约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 个答案:

答案 0 :(得分:3)

对于大型数据集,请使用neo4j-import工具massively parallel and scalable CSV importer

答案 1 :(得分:1)

将您的数据存储到几个csv文件(节点,关系......)中并使用LOAD CSV cypher clause

这应该非常快,您应该能够在几秒钟内加载数据并查询图表。

然后,您可以将csv文件分发到另一台计算机并以相同的方式加载它。