2014-06-10 74 views
3

我一直在試圖將一個相對較大的數據集導入neo4j ......大約有5000萬個具有關係的節點。批量插入neo4j - 最佳選擇?

我首先通過py2neo - >進行了實驗,該工具可以工作,但如果您需要使用CREATE UNIQUE或MERGE,則會變得非常慢。

現在我在看其他批量導入方法,如果有建議採用哪些方法中是最好的一般工作流程和速度,我想知道:

  • 的Neo4j的文檔提到一個​​似乎是Java並且是Neo4j發行版的一部分;
  • 還有Michael Hunger的batch inserter在github上,我不確定這與包含在發行版中的有多麼相似或不同,
  • 然後還有我正在測試的load2neo;
  • 然後有load from CSV功能作爲Neo v2的CYPHER的一部分,雖然我不確定它是否主要是一個方便因素,並且它的性能類似於僅僅通過一個批次執行Cypher查詢,例如40,000 Cypher交易。

我非常感謝這些選項之間的功能,工作流程和速度差異。

+1

爲了什麼它的價值,我目前使用的奈傑爾小的[load2neo(HTTP:/ /nigelsmall.com/load2neo),它似乎運行良好和快速。在我看來,geoff格式的文本文件比具有所有屬性作爲列標題的CSV文件更容易構建。 – shongololo

+0

我正在考慮使用load2neo而不是CSV批量導入程序。它們在性能上是否相似? –

回答

1

如果你可以使用最新版本的Neo4j推薦的方法是使用新的負載CSV聲明暗號:http://docs.neo4j.org/chunked/stable/cypherdoc-importing-csv-files-with-cypher.html

+0

您是否知道[批量CSV導入器](https://github.com/jexp/batch-import)實用程序中的LOAD CSV語句在性能方面有很大差異? – shongololo

+1

我的猜測是批量導入程序比較快,因爲它的寫入速度比寫入整個密碼語言的靈活性要低得多。我已經在批量導入器的約40分鐘內親自加載了約1億個節點和關係。沒有使用LOAD CSV嘗試過相同的比例。我認爲這取決於數據量,操作所需的靈活性(您始終可以預先處理),以及是否需要在應用程序生命週期中重複使用,因爲它應該是一次批量導入。 –