Neo4j、Cypherコマンドによるバルクロード

zakmck:

私はNeo4jを初めて使用するので、基本について理解していないことがあります。

Javaには多くのオブジェクトがあり、それらを使用して、JavaドライバーとCypherを使用し、Neo4jグラフにデータを取り込みます。私のコードは次のように機能します:

// nodes
for ( Person person: persons )
  session.run ( String.format ( 
    "CREATE ( :Person { id: '%s', name: \"%s\", surname: \"%s\" })",
    person.getId(), person.getName(), person.getSurname ()
  ));

// relations
session.run ( "CREATE INDEX ON :Person(id)" );

for ( Friendship friendship: friendships )
  session.run ( String.format ( 
    "MATCH ( from:Person { id: '%s' } ), ( to:Person { id: '%s' } )\n" +
    "CREATE (from)-:KNOWS->(to)\n",
    friendship.getFrom().getId(), 
    friendship.getTo().getId() 
  )); 

(確かに、少し複雑です。ノードタイプが12個あり、リレーションタイプの数はほぼ同じです)。

現在、これは非常に遅く、300kのノードと1Mの関係をロードするのに1時間以上かかる(Neo4jが12 / 16GBのRAMを使用するかなり高速のMacBookProで)。

私はそれを間違った方法でやっていますか?代わりにバッチインサーターを使用する必要がありますか?(ネットワーク経由でgraphDBにアクセスできるようにしたいと思います)。より多くの挿入を1つのトランザクションにグループ化することで何かを得られますか?(ドキュメントから、トランザクションはロールバックと分離のニーズにのみ役立つようです)。

SJC:

私はPythonでNeo4jから来ていますが、ここでの問題はCypherコマンドにあると思います。2つの提案があります。

エッジを個別に一致させる方が高速な場合があります。私のプリミティブベンチマークでは、24ミリ秒と15ミリ秒の違いがこれでわかります(編集:このベンチマークは疑わしいです)。

MATCH ( from:Person { id: '%s' } )
MATCH ( to:Person { id: '%s' } )
CREATE (from)-:KNOWS->(to)

別のオプションは、巻き戻しを使用することです。これをBOLTインターフェースと一緒に使用して、より少ないトランザクションを送信しますが、Batch Inserterを使用しません。私がここにコピーしているPythonの実装は許してください。うまくいけば、これをJavascript Neo4j Driverのドキュメントと一緒に見て変換できます。

payload = {"list":[{"a":"Name1","b":"Name2"},{"a":"Name3","b":"Name4"}]}

statement = "UNWIND {list} AS d "
statement += "MATCH (A:Person {name: d.a}) "
statement += "MATCH (B:Person {name: d.b}) " 
statement += "MERGE (A)-[:KNOWS]-(B) "

tx = session.begin_transaction()
tx.run(statement,payload)
tx.commit()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トラバーサルブランチの最初のnノードに一致するNeo4j / Cypher

分類Dev

cypher-shell neo4jコマンドを使用してターミナルから暗号スクリプトファイルを実行するにはどうすればよいですか?

分類Dev

Neo4j Cypher は、関連するノード (ID) の正確なコレクションによってエンティティを見つけます

分類Dev

neo4j goドライバーを使用したneo4jコードのコンパイルに関する問題

分類Dev

neo4j cypher、ノードを検索し、IDによる関係です

分類Dev

Neo4jのコレクションメンバーによる注文

分類Dev

Neo4j /パスの中心にあるCypherノード

分類Dev

Neo4j / Cypher-指定された親にのみリンクするノードを検索します

分類Dev

同じコミュニティのノードをNeo4jのCypherとマージする方法は?

分類Dev

Neo4j Cypher:重複ノードをマージ

分類Dev

cypher neo4j - ノードのグループを集める

分類Dev

Cypherを使用してneo4jの2つのクローンノードのノードを削除する方法

分類Dev

neo4j cypherのノードラベルで結果をフィルタリングする方法は?

分類Dev

neo4j:「CREATEDATABASE」のようなneo4jのようなコマンドはありますか

分類Dev

Neo4j:バッチでメモリにロード

分類Dev

大きなデータセットに対するNeo4jのMERGEコマンド

分類Dev

Neo4jアンマネージド拡張機能-カスタムリクエストフィルターをWebサーバーに追加

分類Dev

Neo4j Cypherクエリ(Javaによる)埋め込みモードの実行中にエラーが発生しました

分類Dev

Neo4j Cypher:ノードをブール値に「キャスト」するにはどうすればよいですか?

分類Dev

cypher(neo4j)のJavaストアドプロシージャからのyield値を無視するにはどうすればよいですか?

分類Dev

正しいノードおよびそれに関連するその他の情報を取得するためのCypher / Neo4jクエリ

分類Dev

カスタムログバック設定をneo4jアンマネージド拡張機能に追加します

分類Dev

Cypher Neo4jの他の小道具によってノードの小道具から値をグループ化する方法は?

分類Dev

CassandraデータをTitan / Neo4Jにロードする

分類Dev

大きなcsvファイルをNeo4jにロードする方法

分類Dev

Neo4J Cypher:各ノードの属性/プロパティがクエリに一致した数をカウントします

分類Dev

Neo4j / CYPHER:ノード、その関係、およびターゲットノードからいくつかのプロパティを効率的にクエリするにはどうすればよいですか?

分類Dev

Neo4J Cypherクエリのパスからノードのみを取得するにはどうすればよいですか?

分類Dev

ロードに時間がかかる Neo4j

Related 関連記事

  1. 1

    トラバーサルブランチの最初のnノードに一致するNeo4j / Cypher

  2. 2

    cypher-shell neo4jコマンドを使用してターミナルから暗号スクリプトファイルを実行するにはどうすればよいですか?

  3. 3

    Neo4j Cypher は、関連するノード (ID) の正確なコレクションによってエンティティを見つけます

  4. 4

    neo4j goドライバーを使用したneo4jコードのコンパイルに関する問題

  5. 5

    neo4j cypher、ノードを検索し、IDによる関係です

  6. 6

    Neo4jのコレクションメンバーによる注文

  7. 7

    Neo4j /パスの中心にあるCypherノード

  8. 8

    Neo4j / Cypher-指定された親にのみリンクするノードを検索します

  9. 9

    同じコミュニティのノードをNeo4jのCypherとマージする方法は?

  10. 10

    Neo4j Cypher:重複ノードをマージ

  11. 11

    cypher neo4j - ノードのグループを集める

  12. 12

    Cypherを使用してneo4jの2つのクローンノードのノードを削除する方法

  13. 13

    neo4j cypherのノードラベルで結果をフィルタリングする方法は?

  14. 14

    neo4j:「CREATEDATABASE」のようなneo4jのようなコマンドはありますか

  15. 15

    Neo4j:バッチでメモリにロード

  16. 16

    大きなデータセットに対するNeo4jのMERGEコマンド

  17. 17

    Neo4jアンマネージド拡張機能-カスタムリクエストフィルターをWebサーバーに追加

  18. 18

    Neo4j Cypherクエリ(Javaによる)埋め込みモードの実行中にエラーが発生しました

  19. 19

    Neo4j Cypher:ノードをブール値に「キャスト」するにはどうすればよいですか?

  20. 20

    cypher(neo4j)のJavaストアドプロシージャからのyield値を無視するにはどうすればよいですか?

  21. 21

    正しいノードおよびそれに関連するその他の情報を取得するためのCypher / Neo4jクエリ

  22. 22

    カスタムログバック設定をneo4jアンマネージド拡張機能に追加します

  23. 23

    Cypher Neo4jの他の小道具によってノードの小道具から値をグループ化する方法は?

  24. 24

    CassandraデータをTitan / Neo4Jにロードする

  25. 25

    大きなcsvファイルをNeo4jにロードする方法

  26. 26

    Neo4J Cypher:各ノードの属性/プロパティがクエリに一致した数をカウントします

  27. 27

    Neo4j / CYPHER:ノード、その関係、およびターゲットノードからいくつかのプロパティを効率的にクエリするにはどうすればよいですか?

  28. 28

    Neo4J Cypherクエリのパスからノードのみを取得するにはどうすればよいですか?

  29. 29

    ロードに時間がかかる Neo4j

ホットタグ

アーカイブ