基本情報技術者 2024年 科目A 問07
問題文
DBMSに実装すべき原子性(atomicity)を説明したものはどれか。
選択肢
ア:同一データベースに対する同一処理は、何度実行しても結果は同じである。
イ:トランザクション完了後にハードウェア障害が発生しても、更新されたデータベースの内容は保証される。
ウ:トランザクション内の処理は、全てが実行されるか、全てが取り消されるかのいずれかである。(正解)
エ:一つのトランザクションの処理結果は、他のトランザクション処理の影響を受けない。
🔒 解説は解答すると表示されます
トランザクションの原子性【午前解説】
正解の理由
DBMSの原子性(atomicity)は「トランザクション内の処理が全て実行されるか全て取り消されるかのどちらかである」という意味です。選択肢のうち、この定義に該当するのがウです。原子性は「全体としての一括実行(all-or-nothing)」を保証し、途中で障害が起きても部分的な更新が残らないようにする性質です。したがって、トランザクションの一部だけ適用される事態を防ぎ、整合性を保つ役割を担います。
解法ステップ
- 問題で問われている用語(ここでは「原子性」)の定義を思い出す(ACIDのA)。
- 各選択肢をACIDの4要素(Atomicity, Consistency, Isolation, Durability)やその他の概念(冪等性など)に当てはめる。
- 原子性に一致する文言(「全て実行されるか、全て取り消されるか」)を含む選択肢を選ぶ。
- 他の選択肢が別の概念を指していることを確認して排除する。
選択肢別の誤答解説
- ア: 「同一処理を何度実行しても結果が同じ」は冪等性(idempotence)の説明であり、原子性ではありません。たとえばHTTPのGETは冪等になり得ますが、それは原子性とは別概念です。
- イ: トランザクション完了後の更新内容が保証されるのは耐久性(Durability)です。障害発生後もコミット済みデータが失われないことを指します。ログや永続化機構が関連します。
- ウ: トランザクション内の処理が全て実行されるか全て取り消されるか、という記述は原子性そのものです。途中で障害が発生した場合にロールバックされる仕組みがこれを実現します。
- エ: 「あるトランザクションの処理結果が他のトランザクションの影響を受けない」は独立性または隔離性(Isolation)の説明です。並行実行時の相互干渉を防ぐ性質を指します。
よくある誤解
- 「原子性=処理が一回だけ行われること」ではない:原子性は回数や冪等性ではなく、トランザクションの中身が全体として適用されるか全く適用されないかを指します。
- 「原子性があればデータは永続化される」と混同しやすい:原子性は途中中断時の一貫性維持を扱い、永続性(耐久性)はコミット後のデータ保持を扱う別の概念です。
- 「単純なファイル操作と同じ」と見なす誤り:原子性を実現するにはログ(undo/redo)、チェックポイント、必要に応じて2フェーズコミットなどの仕組みが必要です。単純なファイル書き込みだけでは保証できない場合があります。
補足コラム
原子性はACID特性のAで、通常は以下の手法で実現されます。
- トランザクションログ(WAL: Write-Ahead Logging)に事前に変更情報を書き込む。
- 障害時にログを参照してロールバック(undo)やリカバリ(redo)を行う。
- 分散トランザクションでは2フェーズコミット(2PC)などで全参加者の合意をとって「全員コミット」か「全員ロールバック」にする。
簡単な例:
- 銀行の振替処理(口座Aから引き落とし、口座Bに入金)が途中で止まれば、どちらの処理も適用されないことが原子性の要件です。部分適用は認められません。
FAQ
Q: 原子性は「処理の順序」に関係しますか?
A: 直接は関係しません。原子性は一連の操作をまとめて全体として適用するか取り消すかを保証するものです。順序(シリアライズ)や並行制御は隔離性の領域です。
A: 直接は関係しません。原子性は一連の操作をまとめて全体として適用するか取り消すかを保証するものです。順序(シリアライズ)や並行制御は隔離性の領域です。
Q: トランザクションが途中で停止したら自動で戻るのですか?
A: はい。DBMSは障害検出後にログなどを使ってロールバックやリカバリを行い、部分的な更新が残らないようにします。
A: はい。DBMSは障害検出後にログなどを使ってロールバックやリカバリを行い、部分的な更新が残らないようにします。
Q: 分散トランザクションでも原子性は保障されますか?
A: 分散環境では2フェーズコミット等のプロトコルを用いて参加ノード全体で全-or-nothingを実現しますが、ネットワーク障害などで複雑さが増します。
A: 分散環境では2フェーズコミット等のプロトコルを用いて参加ノード全体で全-or-nothingを実現しますが、ネットワーク障害などで複雑さが増します。
関連キーワード: 原子性、トランザクション、ACID、ロールバック、コミット、耐久性、隔離性、WAL、2フェーズコミット

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

