3

約 100 万のノードと、それらの間の約 2 倍の関係をリモート neo4j データベースにインポートする必要があります。私にとって重要なことは、パフォーマンスです。

必要なものだけを提供しているように見えるJava-rest-bindingを見つけました。でも:

  • 遅すぎる(リモートデータベースが実際にローカルマシンにある場合でも、約1000ノード/秒)
  • バグがあります。つまり、一度に ~900 を超えるノードを追加しようとすると、バッチ操作のコミットでハングするだけです。

どうすれば必要な速度を達成できますか? そして、なぜjava-rest-bindingが機能しない/遅いのですか?

(ここのドキュメントで提案されているように、HTTPリクエストなどを自分で処理する必要は避けたいと思います)

コードまたは詳細を投稿できてうれしいです。ただ私に言って!

助けてくれてどうもありがとう!

ナンダルー

4

2 に答える 2

2

私もいくつかの挿入テストを行いましたが、得られた最大値は (細かい最適化にあまり踏み込まずに)、10 プロパティ + 500 リレーションシップ/秒を持つ 500 ノードのようなものでした。

RESTインターフェースを使用して、すでに得ているもの(1000ノード/秒)を超えることができるかどうかはわかりません. DBをシャットダウンしてBatchInserterを使用できない場合(これは非常に高速です)、ロードするデータがローカルである場合、おそらくREST APIよりも高速になるカスタム拡張機能を使用してみることができます。

于 2013-04-17T13:59:21.490 に答える
1

リモートデータベースの設定はどうですか? Neo4jTomcat など、他のコード内に埋め込まれたインスタンスをホストしていますか? それとも単なるNeo4jスタンドアロンのデータベースですか?

どちらの場合でも、実際のデータ ディレクトリを格納するマシンで実行する Java コードを記述し、通常のNeo4jAPI でそれを操作することができます。これは通常非常に高速で、トランザクション管理などをより細かく制御できます。Neo4j2 つの別個の Java プロセスが同時にデータベースを操作することはできないため、これにはデータベースを停止する必要があることに注意してください。

于 2013-04-16T22:38:22.590 に答える