排他制御とは、データベース(以下、DB)に書き込み処理を行なう場合
データの整合性を保つための制御の事です。
今回は排他制御の仕組みの一例を書いてみようと思います。
1.DBのテーブルの項目「更新日」を予め取得しておく。
2.新規登録の場合
・そのテーブルへレコードを新規登録する前に、登録しようとしているキーで
再度「更新日」を取得。
・更新日が取得できた場合、他の端末がそのキーで
既にレコードを新規登録した事になるのでエラー。
更新の場合
・そのテーブルのレコードを更新する前に、更新しようとしている
レコードのキーで再度「更新日」を取得。
・再度取得した「更新日」と予め取得しておいた「更新日」が
同じ日時(yyyy/MM/dd HH:mm:ss)でなかった場合、他の端末がそのレコードを
既に更新した事になるのでエラー。
削除の場合
・そのテーブルへレコードを削除する前に、削除しようとしている
レコードのキーで再度「更新日」を取得。
・更新日が取得できなかった場合、他の端末がそのキーのレコードを
既に削除した事になるのでエラー。
簡単ではありますが、理に適っていますよね。
コメント (1)
これは「楽観的排他制御」と呼ばれるものです。
悲観的排他制御についても勉強してください。
投稿者: sugiyama | 2005年12月18日 13:14