楽観的オフラインロック
原文: https://www.martinfowler.com/eaaCatalog/optimisticOfflineLock.html
by David Rice
コンフリクトを検知しトランザクションをロールバックすることにより並行するビジネストランザクション間のコンフリクトを防ぐ
解説の全文は『PofEAA』 416 ページを参照。
ビジネストランザクションはしばしば一連のシステムトランザクションを跨いで実行される。一旦、ある1つのシステムトランザクションから抜けると、ビジネストランザクションがレコードデータを整合性を保持した状態で格納されていることを保証するのにデータベースマネージャ単体では任せられない。一旦2つのセッションが同じレコードに対して処理を始め、更新されたデータを紛失することがありえるのであれば、データの一貫性は危険に瀕している。また、あるセッションが別のセッションが読み込み中のデータを修正すると一貫しないデータが読まれることがありそうだ。
楽観的オフラインロックは、あるセッションによってコミットされた変更が他のセッションによる変更とかち合わないことを検証することでこの問題を解決する。コミット前の検証が成功するということは、つまり、ロックを取得することがレコードデータに変更を加えても構わないことを示している。検証と更新が単一のシステムトランザクションで発生するので、ビジネストランザクションは整合性を保つのである。
悲観的オフラインロック(426)では、セッションがかち合う可能性は高いからシステムの並行性を制限するとみなしているのに対し、楽観性オフラインロックでは、かち合う可能性は低いとみなしている。セッションはぶつからないだろうという期待により多数のユーザが同時に同じデータに対して処理を行うことが可能になっている。
ChangeLog
- translated by money@andore.com