簡體   English   中英

使用Neo4j批量插入

[英]Batch Insertion with Neo4j

我從表中導入了23億的關系,導入速度不是很快,每小時需要5Million才能完成遷移需要20天。 我聽說過neo4j批量插入和批量插入實用程序 該實用程序通過從csv文件導入來做有趣的事情,但最新的代碼是一些破壞和不運行的。

我在neo4j中有大約100M的關系,我必須檢查是否沒有重復的關系。

我怎樣才能加快neo4j的速度

按當前代碼就好

begin transaction
for 50K relationships
create or get user node for user A
create or get user node for user B
check there is relationship KNOW between A to B if not create the relationhsip
end transaction

我還閱讀了以下內容:

在關系的情況下,並假設你有足夠的存儲空間,我會嘗試在導入階段沒有建立獨特的關系 - 現在我實際上也導入了一個約3mil記錄的SQL表,但我總是創建一個關系而不是介意它是否重復。

你可以在導入之后稍后執行一個cypher查詢,這將獲得如下所示的獨特關系:

START n=node(*) MATCH n-[:KNOW]-m
CREATE UNIQUE n-[:KNOW2]-m;

START r=rel(*) where type(r)='KNOW' delete r;

至少這是我現在的方法,運行后來的cypher查詢只需要幾分鍾。 問題可能是當你真的有節點的數量時,cypher查詢可能會陷入內存錯誤(取決於你為neo4j引擎設置了多少緩存)

你如何“為用戶A獲取用戶節點”,從索引中查找? 索引查找確實減慢了批量插入速度。 嘗試在索引的“前面”的簡單HashMap中盡可能地緩存用戶的大部分,或者使用BatchInserterIndex #setCacheCapacity

暫無
暫無

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

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