1

Java SDK を使用して Couchbase 上の複数のドキュメントをアトミックに更新する方法はありますか? ドキュメントの埋め込みを使用できるため、保証が必要なことはわかっていますが、残念ながら、私にはうまくいきません。

私の場合、ドキュメントの更新という事実は、他のドキュメントを無効にする (特別なフラグを false に設定する) 必要があるという事実につながり、アトミックに実行する必要があります。

あなたの側からの助けや提案に感謝します。ありがとうございました!

4

2 に答える 2

1

複数のドキュメントに対してアトミックな変更を実行する組み込みの方法はありませんが、2 フェーズ コミットを使用して同じ結果を得ることができます。この場合、2PC は分離や一貫性などの他のトランザクション機能を提供せず、原子性のみを提供することに注意してください。これはあなたが求めているものです。Java には Couchbase 用の参照 2PC 実装はありませんが、ドキュメントには Ruby と PHP の 2 つがあります。これを実装する方法の詳細な説明については、Couchbase でのトランザクション ロジックの提供に関するドキュメントを読むことをお勧めします。サンプル コードを Java に移植するのは、かなり簡単です。

一般的に言えば、複数のドキュメントに一連の変更をアトミックに実装するには、プロセスの各ステップが一意になるように、各ドキュメントと一時的な「状態」ドキュメントにアトミックな書き込みを順番に実行します。これにより、何らかの理由でトランザクションが途中で中断された場合に、同じステップから続行したり、変更をロールバックしたりできます。

于 2016-05-21T08:14:02.330 に答える