1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

排他制御について

Last updated at Posted at 2022-02-16

排他制御とは

1つの共有資産(DBとかCSV)を、複数人で同時操作しても大丈夫にする仕組み
排他制御をしない状態で同時に使用してしまうと、共有資産の整合性が取れなくなってしまう。
(例)1つのレコードを2人が同時編集(UPDATE)した場合に、後に編集した方が優先されてしまう

image.png

アプリケーション開発において重要なロックを掘り下げ、ORM における楽観的ロックの実現例を紹介する - Qiita 様より引用

次に、排他制御の代表的な方式2つを記載していく。

楽観ロック

「1つの共有資産を同時に操作することはあまりないだろう」という楽観的な考え方の制御方式
更新対象のデータがデータ取得時と同じ状態であることを確認してから更新することで、データの整合性を保証する方式。
取得したデータと更新対象のデータが同じであるかを確かめるために、テーブルにVersionカラムなどを追加する。
Versionカラムは、更新があるたびに +1 されるような仕組みにしておく

  1. データ取得
  2. データ更新前にバージョンカラム(もしくはタイムスタンプ)を、1で取得したデータと比較して同じだったら更新

【イメージ】
image.png

アプリケーション開発において重要なロックを掘り下げ、ORM における楽観的ロックの実現例を紹介する - Qiita 様より引用

悲観ロック

「1つの共有資産を同時に操作することは頻繁に起こり得るだろう」という悲観的な考え方の制御方式
更新対象のデータを取得時にロックしてしまうことで、他者からの操作を一切出来なくする方式

======================

  1. データ取得とともにロック
  2. データ更新
  3. ロック解放
    ======================ここまで誰もデータにアクセスできない

A,Bさんがが同じデータを編集しようとした場合、
Aさんが先に編集している場合には、Bさんはそのデータにアクセスすることはできません。

【イメージ】
image.png
排他制御(楽観ロック・悲観ロック)の基礎  様より引用

参考資料

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?