2013-10-15 31 views
3

我想用cypher將約500,000個節點的中型數據集導入neo4j。我在帶有SSD的3.4 GHz i7 iMac上本地運行neo4j-community-2.0.0-M05。neo4j import slowing down

我將管道密封到neo4j外殼中,將每4萬行封裝到事務中。

我正在使用標籤,並且在我開始之前,我爲每個標記的節點在一個屬性上創建了索引。

當我昨晚離開時,MATCH CREATE UNIQUE每次約需15ms。今天早上他們需要約6000毫秒。

慢查詢看起來是這樣的

MATCH n:Artifact WHERE n.pathId = 'ZZZ' CREATE UNIQUE n-[r:DEPENDS_ON]->(a:Artifact {pathId: 'YYY'}) RETURN a 
1 row 
5719 ms 

PATHID索引。

我知道這是一個里程碑式的構建,可能沒有優化性能。但我通過導入的方式還不到三分之一,而且越來越慢。

我應該看看除密碼之外的其他一些方法來導入這些數據嗎?

+0

您是否嘗試過使用帶參數的batchinserter,請參閱https://github.com/jexp/batch-import?我認爲模式匹配可能沒有優化。能夠訪問您的設置以進行性能分析將會非常棒。 –

回答

1

我只想回答我自己的問題,以防其他人發現這種情況。感謝Peter建議批量導入項目。我使用了2.0 tree。 (1)將所有數據加載到關係數據庫中,(2)清理重複項,然後(3)編寫腳本將數據導出到CSV文件中。

使用密碼,我有導入運行24小時,然後我殺了它。使用java導入工具,整個導入在neo4j-community-2.0.0-M06上花費了11秒。

底線:不要試圖寫出密碼來導入大塊數據。花一個小時清理數據(如有必要),然後導出爲CSV並使用java批量導入工具。