どのように大規模なデータをNeo 4 jに導入しますか?

8984 ワード

どのように大規模なデータをNeo 4 jに導入しますか?
プロジェクトはNeo 4 jに基づいて開発する必要があります。データ量が大きいので、現在のデータを挿入する方法を分析し、比較しました。
よくあるデータ挿入方式の概要
Neo 4 j Version
Language Driver
Community 3.02
Python neo 4 j-driver 1.0.0
現在は主に以下のようなデータの挿入方法があります。
Cypher CREATE文は、各データのためにCREATE を書きます。
Cyperer LOAD CSV ステートメントでは、データをCSV形式に変換し、LOAD CSVでデータを読みだします。公式に提供されているJava API―― バッtch Inserter 大牛が書いた バッtch Import ツール公式提供の neo 4 j-mport ツールこれらのものは何が違いますか?スピードはどうですか?適用するシーンはそれぞれ何ですか?ここでは私の個人的な理解に基づいて、大まかな結果を示しました。
 
CREATE文
LOAD CSV文
バッtch Inserter
バッtch Import
Neo 4 j-mport
適用シーン
1~1 w nodes
1 w~10 w nodes
千万以上のノート
千万以上のノート
千万以上のノート
速度
遅い(1000 nodes/s)
一般(5000 nodes/s)
非常に速い(数万nodes/s)
非常に速い(数万nodes/s)
非常に速い(数万nodes/s)
長所
便利で、リアルタイムで挿入できます。
使用に便利で、ローカル/リモートCSVをロードできます。リアルタイムで挿入できます
速度は前の二つに比べて、数量級の向上があります。
Batch Inserterに基づいて、直接にコンパイルされたjarパッケージを実行できます。既存のデータベースにデータをインポートできます。
公式出品は、Batch Importよりも少ない資源を占めています。
欠点
スピードが遅い
データをCSVに変換する必要があります。
CSVに切り替える必要がありますJAVAでしか使えません。また挿入時はneo 4 jを停止しなければならない。
CSVに切り替える必要がありますneo 4 jを停止しなければなりません
CSVに切り替える必要がありますneo 4 jを停止しなければならない既存のデータベースにデータを挿入することはできません。
速度テスト
以下は自分で作った性能テストです。
1.CREATE文
ここでは1000条ごとにTransactionを提出します。CREATE (:label {property1:value, property2:value, property3:value} ) 11.5 w nodes
18.5 w nodes
100 s
160 s
2.LOAD CSV文using periodic commit 1000 load csv from "file:///fscapture_screencapture_syscall.csv" as line create (:label {a:line[1], b:line[2], c:line[3], d:line[4], e:line[5], f:line[6], g:line[7], h:line[8], i:line[9], j:line[10]}) ここではステートメントUSING PERIODIC COMMIT 1000を使用して、Transationとして1000行ずつ提出させます。
11.5 w nodes
18.5 w nodes
21 s
39 s
3.Batch Inserter、Batch Import、Neo 4 j-inmport
私はNeo 4 j-mportだけをテストしました。Batch InserterとBatch Importはテストしていませんでしたが、彼らの内部実現はほぼ同じで、速度も1つのレベルにあると思います。ここでは概説します。
neo 4 j-mportはNeo 4 jのサーバーで実行する必要がありますので、サーバーの資源はデータ導入の性能に影響します。ここではJVMに16 Gのheapリソースを割り当てて、性能が一番いいことを確保します。sudo ./bin/neo4j-import --into graph.db --nodes:label path_to_csv.csv 11.5 w nodes
18.5 w nodes
150 w nodes+1431 w edges
3113 w nodes+7793 w edges
3.4 s
3.8 s
26.5 s
3 m 48 s
結論
プロジェクトが始まったばかりなら、大量のデータをデータベースに導入したいです。Neo 4 j-mportは一番いい選択です。データベースが使用されている場合は、Neo 4 jが一時的に停止することが許容されます。Batch Importは最も良い選択です。もちろん自分で実現したいなら、Batch Inserter を選択してください。
データベースが既に投入されており、Neo 4 jの一時的なクローズが許容されない場合、LOAD CSVは最良の選択である。最後に、少量のデータを入れたいだけで、リアルタイム性をあまり気にしないなら、Cyperer言語を直接見てください。他のTips
LOAD CSVの前にUSING PERIODIC COMMIT 1000を加え、1000行ごとにデータをTransationで提出し、性能を向上させる。indexを確立することは、照会性能を大幅に向上させることができる。indexが確立されていない場合は、各nodeの各属性を巡回する必要がありますので、比較的遅いです。また、indexが成立すると、新たに加入したデータが自動的にindexに組み込まれます。indexはlabelの上で創立するので、nodeの上ではありませんて、だから1つのnodeは複数のlabelがあって、すべてのlabelに対してすべてindexを創立する必要があります。2016年06月03日