我对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。
提前感谢您的任何帮助/建议 - 我们将非常感激地收到任何信息。
答案 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)