基本情報 令和6年度 科目A 問7:テクノロジ系に関する問題
DBMS に実装すべき原子性(atomicity)を説明したものはどれか。
- a同一データベースに対する同一処理は,何度実行しても結果は同じである。
- bトランザクション完了後にハードウェア障害が発生しても,更新されたデータベ ースの内容は保証される。
- cトランザクション内の処理は,全てが実行されるか,全てが取り消されるかのい ずれかである。正答
- d一つのトランザクションの処理結果は,他のトランザクション処理の影響を受け ない。 - 5 -
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは c です。
原子性=「全部やるか、全部やらないか」のオールオアナッシング。
銀行の振込で「Aから1万円引いた」けど「Bに1万円足す前に停電!」→ お金が消えちゃう!これを防ぐのが原子性。両方完了するか、両方なかったことに戻すかのどっちかしか起こさない。
👉 覚え方:原子=これ以上分けられない=処理の塊を分割不能にする。
ほかの選択肢:a 何回やっても同じ=冪等性/b 障害後も結果が残る=持続性(耐久性)/d 他の処理に邪魔されない=独立性(隔離性)。これらと合わせてACIDと呼びます。
なぜこれが正解か
正解は c。DBMSのトランザクション特性 ACID のうち、原子性(Atomicity)は「トランザクション内の処理は全てがCommit(実行確定)されるか、全てがRollback(取消)されるかのどちらかである」性質。中途半端な状態でデータベースに反映されることを防ぐ。
各選択肢の解説
- a 何度実行しても結果が同じ → 冪等性(Idempotency)。HTTP PUT/DELETEの議論で使うがACIDとは別。
- b 障害後も更新内容が保証される → 持続性/耐久性(Durability)。WALやチェックポイントで実現。
- d 他トランザクションの影響を受けない → 独立性/隔離性(Isolation)。ロックやMVCCで実現。
覚え方・ひっかけ注意
ACID = Atomicity(原子)・Consistency(一貫)・Isolation(独立)・Durability(持続)。本問は4つの定義を入れ替えた頻出パターン。「原子=all or nothing」「一貫=制約を守る」「独立=並行干渉しない」「持続=障害でも残る」の4ペアを暗記すれば必ず解ける。
理論的背景・仕組みの詳細
原子性の実装は WAL(Write-Ahead Logging)+UNDOログ/REDOログの組合せ。Commit前に変更前後の値をログに記録し、障害発生時はUNDOで取消し、Commit後の障害はREDOで再実行することで「全部適用 or 全部取消」を保証する。2フェーズコミット(2PC)は分散トランザクションで原子性を保つプロトコル(Prepare→Commit)。Sagaパターンは2PCの代替で、各ステップに補償トランザクションを用意し、長時間処理での原子性を疑似実現する。
実務での使われ方・関連規格/法令
PostgreSQL・MySQL(InnoDB)・OracleはACID完全準拠が標準。NoSQL(MongoDB、Cassandra、DynamoDB)は当初結果整合性(Eventual Consistency)重視で原子性を犠牲にしていたが、近年は単一ドキュメント原子性→マルチドキュメントトランザクション(MongoDB 4.0+、DynamoDB Transactions)と段階的にACID対応を強化。CAPの定理(Consistency・Availability・Partition tolerance、3つ同時は不可)とPACELC(CAP拡張、ネットワーク正常時のLatency vs Consistency tradeoff)が分散DB設計の指針。Google Spannerは TrueTime API(GPS+原子時計)で地理分散ACIDを実現した画期的事例。
試験での位置づけ
FE科目Aのデータベース領域で毎回1問は出るACID鉄板テーマ。応用情報技術者ではトランザクション分離レベル(Read Uncommitted・Read Committed・Repeatable Read・Serializable)と各レベルで発生する異常(Dirty Read・Non-Repeatable Read・Phantom Read)の対応表が頻出。データベーススペシャリストでは MVCC(PostgreSQL・Oracleのスナップショット隔離)、2PL(Two-Phase Locking)、楽観的並行制御 vs 悲観的並行制御まで踏み込む。
選択肢の発展補足
冪等性(選択肢a)は分散システム設計の中核:APIの再送安全性、メッセージキューでのexactly-onceセマンティクス、Kubernetes宣言的構成の基盤思想。Durability(選択肢b)の実装はfsync・group commit・グループフラッシュ・SSDのキャパシタによる電源断保護に依存し、性能とのトレードオフが激しい。Isolation(選択肢d)はGoogleのF1・CockroachDB・YugabyteDBが地理分散×Serializableを実現している先端事例。なお、BASE(Basically Available・Soft state・Eventual consistency)はACIDの対概念として提唱され、NoSQLの設計哲学を表す。本問のような定義入れ替え問題はACID完全暗記の有無を測るリトマス試験紙的役割を果たす。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和6年度 科目A 問7/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。