Neo4J - 创造大量关系(360万)

时间:2015-01-21 10:21:01

标签: csv neo4j cypher graph-databases edges

我对Neo4j很新,我在尝试在大约250万个节点之间创建大量关系(~3.5m)时遇到了困难。我试图在localhost上使用基于Web的界面运行Neo4j。查询运行,但大约5分钟后,我在浏览器上收到一条消息,说“#34; Disconnected"”,有时我收到一条抱怨java堆的消息。我不确定我的查询是否不适合我想做的事情,或者效率低下,或者我是否过多地询问数据库?任何人都可以建议如何在我的节点之间建立关系吗?

节点结构非常基础:客户:CSN,位置,性别

我用于关系的文件也很简单; 关系:SourceCSN,DestCSN

using periodic commit 100 
load csv with headers from "file:///c:/datafiles/InterCustomerRelationships.csv" as csvLine 
MATCH (from:Customer {CSN: csvLine .SourceCSN}), (to:Customer {CSN: csvLine.DestCSN})
CREATE (from)-[:PAID]->(to)

我在带有8GB RAM的Windows 7上使用Neo4J 2.1.1。

提前感谢您的任何帮助/建议 - 我们将非常感激地收到任何信息。

1 个答案:

答案 0 :(得分:1)

首先,确保您在客户标签的属性CSN上有索引。这可以是一个简单的索引,或者我猜你的情况是一个独特的约束。

其次,我建议先运行10行的小导入,然后分析执行计划的样子。为此,您可以运行相同的导入并限制集合(首先制作数据库的备份),这应该在 neo4j-shell 中完成:

PROFILE
load csv with headers from "file:///c:/datafiles/InterCustomerRelationships.csv" as csvLine 
WITH csvLine
LIMIT 10
MATCH (from:Customer {CSN: csvLine .SourceCSN}), (to:Customer {CSN: csvLine.DestCSN})
CREATE (from)-[:PAID]->(to)