楽観的ロックと悲観的ロック

  • 27
    Like
  • 0
    Comment
More than 1 year has passed since last update.

楽観的ロック

Railsだと、lock_versionのやつ。

ブラウザでの見え方

ブラウザでの見え方(まあ実装次第だけど、だいたいこんな感じで実装する)

AさんがHoge更新画面を開く。
BさんもHoge更新画面をAさんが開いている間に開く。

AさんがHogeを更新。
Bさんが少し遅れてHogeを更新。
Bさんに誰かが更新してしまっていることを伝えるメッセージを出す。

このように、更新のタイミングで、おやおや!とわかるのが
楽観的ロック。

参考

http://ruby-rails.hatenadiary.com/entry/20141209/1418123425

悲観的ロック

いわゆるSELECT FOR UPDATEのやつ。
トランザクションで実現。
誰もSELECT FOR UPDATEされたやつが解放されるまで何もできなくなる。

参考

http://ruby-rails.hatenadiary.com/entry/20141210/1418207618
http://atamoco.boy.jp/kogoto/work/oracle-rakkan-lock.php

楽観的ロックと悲観的ロックの使いどころ

ブラウザが絡むと、まずブラウザにデータを表示、そのあとで編集ボタンを押すでUPDATEとなるため、「データ表示」と「編集ボタン押す」の間で、トランザクションを維持するのが、難しい。よって概ね楽観的ロックが使われる。

参考

http://snjx.info/diary/snjx/041