ITパスポート試験 / 平成21年度 秋期 ITパスポート試験 / 問88
certification-simodake-work

平成21年度 秋期 ITパスポート試験 問88 解説 データベースの排他制御

複数の利用者が同時にデータベースを利用する場合に,1人の利用者がデータ更新中に,同一のデータを別の利用者が参照しようとした。このとき,データの整合性を保障するためのデータベース管理システムでの制御として,適切なものはどれか。

  1. ア 更新処理を中断して参照させる。
  2. イ 更新中の最新のデータを参照させる。
  3. ウ 更新中の利用者の処理が終了してから参照させる。 ✓ 正答
  4. エ 更新を破棄して更新前のデータを参照させる。

解説

この問題の正解を導く鍵は、データベースにおける排他制御(ロック)という概念です。複数の人が同じデータを同時に触る際、矛盾が生じないように順番を整理する仕組みのことです。更新が終わるまでは他の処理を待たせる、という基本ルールを理解していれば、迷わずウを選択できます。

データの整合性を守るためのロックという仕組み

データベースでは、複数の利用者が同時に同じデータに対して読み書きを行うことがあります。もし、ある人がデータを書き換えている最中に、別の人がそのデータを読み取ってしまったらどうなるでしょうか。書き換え途中の不完全なデータ(整合性がとれていないデータ)を読み取ってしまう恐れがあります。

これを防ぐために、データベース管理システム(DBMS)は排他制御を行います。具体的には、更新を行っている間、そのデータに対してロック(鍵)をかけます。このロックがかかっている間は、他の利用者はそのデータにアクセスできなくなり、ロックが解除されるまで待機することになります。これにより、常に正しく一貫性のあるデータを扱える状態が保障されます。

なぜ他の選択肢ではいけないのか

他の選択肢を検討すると、データの整合性が崩れる理由が見えてきます。

選択肢アの「更新処理を中断して参照させる」は、業務上の効率が悪すぎます。参照したい人がいるたびに更新を止めていては、いつまでたっても更新が完了しません。

選択肢イの「更新中の最新のデータを参照させる」は最も危険です。更新がまだ確定していない中途半端な値(例えば、計算の途中の数値など)を他の人が見てしまうと、間違った判断やさらなる誤った処理の原因になります。

選択肢エの「更新を破棄して更新前のデータを参照させる」は、更新しようとした人の作業を無効にしています。これではデータベースの内容が常に古いままになり、データの更新が正しく行われません。

現場で求められるトランザクションの考え方

この問題の背景には、トランザクションという重要な概念があります。トランザクションとは、データベースに対する一連の処理を一つの塊として扱う考え方です。

例えば銀行の振込処理では、「Aさんの口座から引き落とす」という処理と「Bさんの口座に入金する」という処理がワンセットになります。この両方が成功して初めてデータベースが更新されます。もし途中でエラーが起きたり、誰かが途中の状態を読み取ったりしてしまうと、お金が消えたり増えたりする重大なトラブルになります。

この問題のように、更新が終わるまで読み取りを待たせる仕組みは、システム開発やデータベース管理の現場において「いかにデータの正確性を維持するか」という極めて重要な設計方針そのものです。排他制御は、Webサイトの予約システムやオンラインショッピングなど、身近なあらゆるシステムで今日もデータの秩序を守っています。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう