重複の可能性:
複数の行をアトミックに更新する
noSQL データベースに一連のデータ チャンクが格納されています。データを更新するには、次のことが必要です。
- フェッチ (取得)
- データを更新する
- 書く (置く)
(残念ながら直接の CAS サポートはありません)。
この操作はバッチで行われ、キー (バイナリ キー/値 DB) によってインデックス付けされたデータ チャンクは、ロックに使用できる順序に属します。ただし、1 つのバッチで複数の注文にまたがって更新する必要がある場合があるため、すべてをロックするか、まったくロックしないか (できれば時限ブロック操作) が必要です。
API は次のようになります。
void lock(long... orderIds, long timeout) throws NotPossibleToGetLockException;
void unlock(long... orderIds);
ロックを取得しようとする前に、必要な注文を簡単に並べ替えることができるため、デッドロックは実際の問題ではないと思います。
この種の機能をサポートするライブラリはありますか?