0

Java アプリケーションで組み込みモードで Neo4j を使用しています。

Neo4j 2.x にアップグレードする前は、複数のデータベース操作を 1 つのトランザクションにラップしていました。2.x にアップグレードした後、各 db 操作を 1 つの個別のトランザクションで明示的に実行しています (ドキュメントにも示されているように、これは正規の方法です)。ただし、データベースの作成速度は大幅に低下しました。

複数のデータベース操作 (挿入とクエリの両方) を 1 つのトランザクションでラップする方法はありますか? ロールバックの場合、失われた CRUD 操作に対処する必要があることを理解しています。

また、最終的に 6 億を超えるノードと関係、および 20 億を超えるアノテーションを持つデータベースをスケーリングするための一般的な推奨事項も記入してください。

4

1 に答える 1

2

neo4j の要件は、すべての操作がトランザクション内にある必要があるということです。各操作が独自のトランザクション内になければならないという要件はありません。そうするのは、パフォーマンス上の理由と、複数の論理操作を 1 つのトランザクションの下にグループ化することが不可能になるという理由から、悪い考えです。

ここでの解決策は、各操作を 1 つのトランザクションにラップせず、アップグレード前とまったく同じように行うことだと思います。

これは誤解かもしれません。ドキュメントでは、トランザクションにラップされた操作の例を示していますが、1 操作 = 1 トランザクションとはどこにも書かれていません。実際、1 つのトランザクション内で、さまざまな読み取り/書き込み操作を好きなだけ実行できます。要件は、すべての操作がトランザクション内にある必要があるということです。

于 2016-01-27T20:46:18.850 に答える