現在、mongodb で CAS 操作を適切に実装して楽観的ロックをサポートする方法を理解しようとしています。の更新がアトミックであることがわかりましたが、mongodb
これが何を意味するのかわかりません (ドキュメントの書き換えのみがアトミックなのか、対応するドキュメントの検索とその書き換えを含むすべての更新サイクルがアトミックなのか?)。次の例を考えてみましょう。
- 一部のドキュメントは、
_id
値が 123 に設定され、属性cas_val
が 10 に設定されたコレクションに存在します。 cas_val
最初のクライアントは、ドキュメント_id
を 123 から 11に更新したいと考えています。cas_val
2 番目のクライアントは、ドキュメント_id
を 123 から 11に更新したいと考えています。- 両方のクライアントが同時に動作し、動作はインターリーブできます。
では、 123 を含むドキュメントへの他の更新が実行されなかった場合、両方の操作が成功する可能性はありますか?_id
mongodb
PS楽観的ロックのシナリオに組み込みの手法はありますか?