2005.12.16

排他制御について

 排他制御とは、データベース(以下、DB)に書き込み処理を行なう場合
データの整合性を保つための制御の事です。
今回は排他制御の仕組みの一例を書いてみようと思います。

1.DBのテーブルの項目「更新日」を予め取得しておく。
2.新規登録の場合
  ・そのテーブルへレコードを新規登録する前に、登録しようとしているキーで
   再度「更新日」を取得。
  ・更新日が取得できた場合、他の端末がそのキーで
   既にレコードを新規登録した事になるのでエラー。
  更新の場合
  ・そのテーブルのレコードを更新する前に、更新しようとしている
   レコードのキーで再度「更新日」を取得。
  ・再度取得した「更新日」と予め取得しておいた「更新日」が
   同じ日時(yyyy/MM/dd HH:mm:ss)でなかった場合、他の端末がそのレコードを
   既に更新した事になるのでエラー。
  削除の場合
  ・そのテーブルへレコードを削除する前に、削除しようとしている
   レコードのキーで再度「更新日」を取得。
  ・更新日が取得できなかった場合、他の端末がそのキーのレコードを
   既に削除した事になるのでエラー。

簡単ではありますが、理に適っていますよね。

コメント (1)

これは「楽観的排他制御」と呼ばれるものです。
悲観的排他制御についても勉強してください。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin