平成22年度 春期 ITパスポート試験 問82 解説 排他制御とデータ更新
2台のPCから一つのファイルを並行して更新した。ファイル中の同一データ(データ1)に対する処理が①〜④の順に行われたとき,データ1はどの値になるか。ここで,データ1の初期値は5であった。
- ア 4 ✓ 正答
- イ 5
- ウ 14
- エ 15
解説
この問題は、各PCがファイルから読み込んだ値に対して処理を行い、その結果を書き込む「時系列」を追うことで正解にたどり着けます。
- 初期値は5です。
- ステップ1:PC-Aがデータを読み込みます。まだ何も書き込まれていないので、PC-Aは5を読み取ります。
- ステップ2:PC-Bがデータを読み込みます。この時点でもまだPC-Aの書き込みは行われていないため、PC-Bも5を読み取ります。
- ステップ3:PC-Aが処理(5+10=15)を行い、ファイルへ15を書き込みます。この時点でファイルの値は15になります。
- ステップ4:PC-Bが処理(5-1=4)を行い、ファイルへ4を書き込みます。PC-Aが書き込んだ15は上書きされ、最終的に4が残ります。
したがって、正解は ア です。
排他制御の重要性と消失更新の問題
この問題で起きている現象は「消失更新(ロストアップデート)」と呼ばれます。本来であれば、5に対して10を足し、さらに1を引くので、結果は14になるのが正しい計算順序です。しかし、2つのPCが並行して同じデータにアクセスし、読み込みと書き込みのタイミングが重なってしまったことで、最初に実行された更新(15への書き込み)が後からの更新によって無効になってしまいました。
ITシステムにおいて、複数のユーザーやプロセスが同じデータを同時に扱う場合、このような矛盾を防ぐ仕組みが必要です。これを「排他制御」と呼びます。
時系列を整理する視点
本問題を解く際は、頭の中で以下の変数の状態をメモすると間違いがありません。
- 共有データ(ファイル)の状態:初期値 5
- PC-Aの内部変数:読み取った値 5
- PC-Bの内部変数:読み取った値 5
この状態から、指示された順番 ①→②→③→④ に従って、共有データがどう書き換わるかを1ステップずつ追跡します。試験では「読み込んだ値」と「実際にファイルに書き込む値」を分けて考えることが、このような問題でミスをしないためのコツです。
現場で求められるデータベースの知識
この問題は、単なるパズルではなく、実際のWebサイトやデータベース管理システム(DBMS)で起きる「同時実行制御」の基礎を問うています。
例えば、銀行の残高照会や、在庫管理システムを想像してください。もし排他制御が正しく行われていないと、Aさんが「商品の残り1個を注文した」瞬間に、Bさんも「商品の残り1個を注文した」場合、どちらかの注文がシステム上で消えてしまったり、在庫数が異常な値になったりする恐れがあります。
実務では、データを処理している間、他からの更新をブロックしたり(ロック)、トランザクション管理を行うことで、このようなデータの不整合を防いでいます。ITパスポートでこの問題が出題される意図は、システム開発や運用において「並行処理がいかにデータの一貫性を損なうリスクを孕んでいるか」を理解しておく必要があるからです。