-1

400 万のノードと 1 億の関係を持つ neo4j グラフ データベースがあります。私はすべての隣接ノード ペア (基本的にはすべてのエッジ) の数を計算しようとしています。すべてのノードに対して、着信エッジと発信エッジの数、およびすべての発信エッジのすべての着信エッジの数を使用するアルゴリズムを使用します。

私は Java API を使用していますが、すべての発信エッジのこれらの着信エッジを取得するのは非常に遅いことに気付きました。これらすべてのデータを取得し、複数のスレッドを使用して計算を実行しようとしましたが、はるかに改善されましたが、特定のノードとそれに隣接するすべてのエッジに数秒 (場合によっては 30 秒) かかります。(スレッドがなければ、15 分かかる場合があります)。したがって、すべてのエッジに対してこの計算を実行したい場合は、ノードごとに数ミリ秒の時間枠に到達する必要があります。

そこで、複数のスレッドを使用するための一般的な戦略は何ですか? また、neo4j グラフ db が組み込まれている場合 (クアッドコア 4G ラップトップではどうですか?) を尋ねます。

4

1 に答える 1

0

これは、測定している最初の実行ですか、それとも2番目の実行ですか。それが最初の場合は、コールドキャッシュとデータのメモリへのロードが原因です。

おそらく、JVM設定とNeo4jキャッシュの構成も検討する必要があります。

参照:http ://docs.neo4j.org/chunked/snapshot/embedded-configuration.html

于 2013-02-03T22:31:30.337 に答える