簡體   English   中英

Neo4j中使用cypher的加速關系和節點創建

[英]Speedup relationship and node creation using cypher in Neo4j

我有2個csv文件A和B。文件A包含具有6個屬性的7000行,文件B包含具有11個屬性的10M行。 此外,文件A具有用作主鍵的屬性PKA,而文件B具有用作PKA的外鍵的屬性FKA。

我想以這種方式將這些文件加載​​到Neo4j中:1-為文件A和文件B的每一行插入一個新節點2-在創建的代表所描述的主鍵和外鍵的任何節點之間添加關系。

當前,我已經使用JAVA API通過BatchInserter插入了這些文件,為這些文件的每一行添加了一個節點,並分別為文件A和文件B設置了標簽“ A”和“ B”。 我還為PKA和FKA創建了兩個索引。 要添加關系,我的意圖是調用以下cypher語句(來自Neo4jShell):

match (a:A), (b:B) where a.PKA=b.FKB create (a)<-[:KEYREL]-(b);

我的問題是:-使用BatchInserter添加文件B的節點需要14分鍾(最大的一個),最后只提交一次(〜12k節點/秒,〜130k屬性/秒),我想加快導入的速度。因子2。-密碼查詢無法使用此數據集大小進行處理,但我想這樣做是可能的。

我在具有IntelXeon @ 2.6Ghz雙核和8GB RAM(已安裝Windows 64位和Java8 64位)的VM上運行。 我已經使用以下Java選項運行了導入Java程序和Neo4jShell:

-server -XX:+UseConcMarkSweepGC -Xms2000m -Xmx5000m

當對大量數據使用時,運行MATCH通常非常慢。

您可以嘗試加快速度,以在節點上創建約束 ,其中將每個節點定義為唯一。 這可以加快MATCH操作的速度 ,盡管創建約束也需要時間:

CREATE CONSTRAINT ON (a:A) ASSERT a.PKA IS UNIQUE;
CREATE INDEX ON :B(PKB); 

然后,您可以運行MATCH,可以根據Neo4j文檔從第三個CSV文件運行該MATCH,該文檔描述了與您的場景類似的場景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM