2015-01-21 45 views
1

我对Neo4j非常陌生,在尝试在大约2.5m节点间创建大量关系(〜3.5m)时遇到了困难。我试图在本地主机上使用基于Web的界面将Neo4j运行到下面的查询。查询运行,但大约5分钟后,我在浏览器上看到一条消息:“断开连接”,有时候我收到一条抱怨java堆的消息。我不确定我的查询不适合我想要做什么,或者效率低下,或者我要求太多的数据库?任何人都可以建议我如何创建我的节点之间的关系?Neo4J - 创建大量关系(360万)

节点的结构非常简单:客户: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) 

我使用的Neo4j 2.1.1与8GB RAM的Windows 7。

在此先感谢您的任何帮助/建议 - 任何事情都会得到感谢。

回答

1

首先,确保您在客户标签的属性CSN上有索引。这可以是一个简单的索引,或者我想你的情况是一个独特的约束。其次,我建议首先运行10行的小进口并分析执行计划的外观。为此,您可以运行相同的进口和限制集(让你的数据库的第一个备份),这应该在的Neo4j壳来完成:

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) 
+0

嗨克里斯托夫 谢谢您的帮助,这已完美运作。我发现,尽管安装了64位版本的Neo4j,但我只有一个32位版本的Java RE(我的公司标准版本)。我安装了正确版本的Java,并使用定期提交设置为10000。 – CWild 2015-01-23 11:56:38