私はかなり大きなデータセット、約6800万データポイントを持っています。データは現在MongoDBに保存されており、データポイントをリンクしてCypherコマンドを使用してNeo4jデータベースに配置するためのデータを処理するJavaプログラムを作成しました。私はこのプログラムをテストセットのデータ(〜150万)で実行し、それは一晩中実行しました。今では、データセット全体をインポートしようとすると、プログラムは非常に遅いです。週末全体を回って、わずか35万データポイントしか作れませんでした。短いテストを通して、Neo4jがボトルネックになっているようです。 Javaプログラムを停止してから30分ほど経ちましたが、Neo4jのCPU使用率は100%で、新しいノードは(Javaプログラムから)追加されています。このボトルネックを乗り越えるためにとにかくありますか?私はマルチスレッドについて考えましたが、ネットワークを作成しようとしているので、多くの依存関係やスレッドセーフでない操作が実行されています。ご協力いただきありがとうございます!大規模なデータセットをNeo4jにインポートするのが極端に遅い
EDIT:私が持っているデータは、ユーザーのリストです。含まれるデータは、ユーザーIDと、ユーザーの友人IDの配列です。私のサイファーのクエリは、このように少し見える: "u:USER {id:" + currentID + "}) CREATE (u)-[:FRIENDS {ts:" + timeStamp}]->(u" + connectionID + ":USER {id:" + connectionID + "})"
申し訳ありませんが、これはこの
いくつかの例のクエリを共有できますか。 MERGEまたはMATCHを使用する場合は、それらのLabel +プロパティの組み合わせに対してインデックスまたはより優れた制約があることを確認してください。 –
私はあなたがjava neo4j apiを使うべきであると思う。これははるかに速い。暗号化クエリを翻訳する必要があります。 – Mvde