平成28年度 秋期 ITパスポート試験 公開問題 問81 解説 データベースの排他制御
複数の利用者がデータベースの同じレコードを更新するときに,データの整合性を保つために行う制御として,適切なものはどれか。
- ア 正規化
- イ タイマ監視
- ウ ロールフォワード
- エ ロック/アンロック ✓ 正答
解説
同時更新時のデータ整合性維持:ロック/アンロックの重要性
複数の利用者がデータベースの同じデータを同時に更新しようとすると、予期せぬデータ不整合が発生する可能性があります。これを防ぐための制御として、ロック/アンロックが最も適切です。
なぜロック/アンロックが適切なのか
データベースでは、複数の処理が同時に実行される「同時実行」という状態が日常的に発生します。このとき、同じデータを複数の処理が同時に更新しようとすると、以下のような問題が起こり得ます。
更新漏れ(Lost Update): 利用者AがレコードXの値を10から20に更新し、利用者Bが同じレコードXの値を10から30に更新しようとしたとします。もし、Aの更新が完了する前にBが更新を開始し、Aの更新を上書きしてしまうと、Bの更新結果だけが残り、Aの更新(10→20)が失われてしまいます。
ダーティリード(Dirty Read): 利用者Aがあるレコードを更新している途中の、まだ確定されていない(コミットされていない)データを、利用者Bが読み取ってしまうことです。もしAが更新を中断し、元の状態に戻した場合、Bが読み取ったデータは無効なものとなります。
これらの問題を回避するために、データベースシステムは「ロック」という仕組みを提供しています。
ロック/アンロックの仕組み
ロック/アンロックは、ある利用者がデータベースのレコードを更新している間、他の利用者がそのレコードにアクセスできないように一時的に「鍵をかける」ような制御です。
ロック(Lock): ある利用者が特定のレコードを更新しようとする際に、そのレコードにロックをかけます。ロックがかかっている間、他の利用者はそのレコードに対して更新操作はもちろん、読み取り操作も(ロックの種類によっては)できなくなります。これにより、他の処理からの干渉を防ぎ、更新中のデータが意図しない形で変更されるのを防ぎます。
アンロック(Unlock): 更新処理が完了し、その結果がデータベースに確定(コミット)されるか、あるいは処理が中断・取り消し(ロールバック)されると、ロックが解除(アンロック)されます。これにより、他の利用者がそのレコードにアクセスできるようになります。
このロック/アンロックの仕組みによって、複数の利用者が同時にデータベースを操作しても、データの整合性が保たれるのです。
他の選択肢について
- ア 正規化: 正規化は、データベースの設計段階で行われる、データの冗長性を排除し、データの一貫性を保ちやすくするための構造化手法です。直接的に同時更新時の制御を行うものではありません。
- イ タイマ監視: タイマ監視は、システムが一定時間応答しない場合に検出するなどの目的で使われることがありますが、データベースの同時更新制御とは直接関係がありません。
- ウ ロールフォワード: ロールフォワードは、データベースに障害が発生した際に、バックアップデータとログファイルを用いて、障害発生直前の状態までデータを復旧させる手法です。これも同時更新制御ではなく、障害復旧のための仕組みです。