ITパスポート 令和3年度 問62:データベースに関する問題
金融システムの口座振替では,振替元の口座からの出金処理と振替先の口座への入金処理について,両方の処理が実行されるか,両方とも実行されないかのどちらかであることを保証することによってデータベースの整合性を保っている。データベースに対するこのような一連の処理をトランザクションとして扱い,矛盾なく処理が完了したときに,データベースの更新内容を確定することを何というか。
- aコミット正答
- bスキーマ
- cロールフォワード
- dロック
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「コミット」 です。
銀行の振込を想像してください。Aさんから引いて、Bさんに足す。この2つは「両方できる」か「両方やめる」かのどちらかでないと困りますよね(片方だけだとお金が消える)。
一連の作業がぜんぶ成功したのを確認して「よし、これで確定!」と保存することをコミットといいます。レジで「お会計確定!」と打つボタンのイメージです。
👉 覚え方:コミット=確定(もう取り消さない)。
ほかの選択肢:b スキーマ=データの設計図/c ロールフォワード=壊れたデータを記録から復元すること/d ロック=他の人が同時にいじれないよう鍵をかけること。
なぜこれが正解か
正解は a。コミットは、トランザクション内の一連の処理がすべて矛盾なく完了したときに、データベースの更新内容を確定する操作。確定後はその内容が永続的に保存される。逆に途中で異常があれば、すべて取り消す「ロールバック」を行う。
各選択肢の解説
- b スキーマ:データベースの構造(表や項目)の定義のこと。処理の確定ではない。
- c ロールフォワード:障害発生時に、バックアップとログを使ってデータを復旧する操作。
- d ロック:複数処理が同じデータを同時更新して矛盾が起きないよう、一時的にアクセスを制限する仕組み。
覚え方・ひっかけ注意
確定=コミット/取消=ロールバック をペアで暗記。「両方実行か両方未実行か」という記述は、トランザクションの 原子性(All or Nothing) を表すキーワード。確定操作を問うていれば答えはコミットと判断する。
理論的背景
データベーストランザクションが満たすべき4つの性質は ACID にまとめられる:
| 性質 | 英語 | 内容 |
|---|---|---|
| 原子性 | Atomicity | 全実行か全未実行か。本問の「両方実行か両方未実行か」がこれ |
| 一貫性 | Consistency | トランザクション前後でデータの整合性制約が保たれる |
| 独立性 | Isolation | 並行実行されるトランザクション同士が互いに干渉しない |
| 耐久性 | Durability | コミット後は障害があっても確定内容が消えない |
コミット(Commit) はこのうち耐久性を実現する確定操作で、DBMS が更新内容を永続的に確定する。実装上は WAL(Write-Ahead Logging) と呼ばれる手法が標準で、「ログファイルに変更内容を先に書き出した後にデータファイルを更新する」順序を守ることで、コミット直後のシステム障害でもログからの回復が可能になる。
コミットの対義語は ロールバック(Rollback) であり、トランザクションの途中でエラーが発生した場合に開始前の状態に戻す取り消し操作だ。
実務での使われ方
実際の口座振替システムでは、出金処理と入金処理を1つのトランザクションにまとめ、両方が成功した場合のみコミットし、どちらかが失敗した場合は即座にロールバックする設計が必須だ。この原子性(All or Nothing)を実装するために DBMS のトランザクション制御機能が使われる。
障害発生時の回復処理は次の2種類:
- ロールバック(前進取消): コミット前に障害が起きた場合、未完了トランザクションを開始前の状態に取り消す(ログの更新前イメージを使用)
- ロールフォワード(前進回復): コミット済みだがデータファイルへの書き込みが完了する前に障害が起きた場合、ログの更新後イメージを再適用してデータを復元する
デッドロック(複数のトランザクションが互いに相手のロック解放を待ち続ける状態)も同時実行制御の重要問題で、DBMS はタイムアウト検知またはウェイトフォーグラフによる検出で対処する。
試験での位置づけ
ITパスポートのデータベース分野での最頻出テーマがトランザクション制御だ。「コミット=確定 / ロールバック=取り消し」の対をまず固め、さらに「ロールフォワード=障害後の前進回復(ログを再適用)」「ロック=同時実行制御(排他ロック・共有ロック)」との4者を相互に混同させる出題が定番。本問のように「口座振替」という具体的業務から ACID の原子性を読み取り、確定操作のコミットを選ぶ流れを練習しておくと、どの問題形式でも対応できる。基本情報技術者では2相コミット(分散トランザクションの整合性保証)・分離レベル(Read Uncommitted / Read Committed / Repeatable Read / Serializable)・ダーティリード・ファントムリードまで踏み込む。
選択肢の発展補足
選択肢 b「スキーマ(Schema)」 はデータベースの論理的な構造定義(テーブル・列・データ型・制約等)を意味する。外部スキーマ(利用者の見え方)・概念スキーマ(全体の論理構造)・内部スキーマ(物理的格納方式)の3層で整理されるスキーマアーキテクチャも基本情報試験で問われる。
選択肢 c「ロールフォワード」 はコミット済みトランザクションの更新内容をログから再適用する障害回復手法。ロールバックとの使い分けが確実にできるかが試験の分岐点で、「コミット済み → ロールフォワード(前進回復)」「未コミット → ロールバック(取り消し)」という対応を押さえる。
選択肢 d「ロック」 は複数のトランザクションが同一データを同時更新して矛盾が生じる問題(データの整合性破壊)を防ぐための排他制御。ロックには共有ロック(読み取りは複数可・書き込み不可)と排他ロック(読み書き両方を他に禁止)があり、ロックの粒度(行・ページ・テーブル)と同時実行性のトレードオフが実務とテストの両面で重要論点となる。
出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和3年度 問62/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。