基本情報 令和5年度 科目A 問7:テクノロジ系に関する問題
トランザクションが,データベースに対する更新処理を完全に行うか,全く処理し なかったかのように取り消すか,のどちらかの結果になることを保証する特性はどれ か。
- a一貫性(consistency)
- b原子性(atomicity)正答
- c耐久性(durability)
- d独立性(isolation)
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは b「原子性(atomicity)」 です。
たとえばATMで「自分の口座から1万円減らす」と「友達の口座に1万円増やす」をセットでやりますよね。もし途中で電源が切れて、自分の口座だけ減って友達の口座は増えない…これは絶対イヤ。
だから「全部やる or 全部やらない」のどちらかにする=原子性といいます。原子(atom)はそれ以上分けられない、というイメージから。
👉 覚え方:“ぜんぶ or ゼロ”が原子性。
ほかの選択肢:a一貫性=処理後もデータのルールが守られる/c耐久性=終わった処理は壊れない(ディスクに残る)/d独立性=同時にやっても邪魔しない。4つまとめてACID特性と呼びます。
なぜこれが正解か
正解は b。原子性(Atomicity)はトランザクションが「完全に実行される(コミット)」か「全く実行されない(ロールバック)」のどちらかであることを保証する性質。問題文の「完全に行うか/全く処理しなかったかのように取り消すか」がまさに原子性の定義。
各選択肢の解説
- a 一貫性(Consistency):トランザクション前後でDBの整合性制約(主キー一意性・外部キー等)が保たれる性質。
- c 耐久性(Durability):コミット後の更新は障害が発生しても失われない(ログでリカバリ可能)。
- d 独立性(Isolation):複数トランザクションを並行実行しても、直列実行と同じ結果を保証する。
覚え方・ひっかけ注意
ACID=Atomicity(原子)/Consistency(一貫)/Isolation(独立)/Durability(耐久)。「全部 or ゼロ」が原子性、「ルール守る」が一貫性、「邪魔しない」が独立性、「消えない」が耐久性。原子性と一貫性は混同しやすいので、原子性は実行単位の話、一貫性は結果の整合性の話と区別する。
理論的背景
原子性はトランザクション管理(TM)の中核機能で、WAL(Write-Ahead Logging)とアンドゥログにより実現される。トランザクション中の更新はバッファ上で行い、コミット前にREDOログをディスクへ強制書込み(force-log-at-commit)、ロールバック時はアンドゥログで取り消す。ARIESアルゴリズムが標準的実装で、Analysis→Redo→Undoの3パスでクラッシュリカバリを行う。
実務での適用
RDBMS(PostgreSQL/MySQL/Oracle)はBEGIN〜COMMIT/ROLLBACK構文で原子性を提供。分散環境では2相コミット(2PC)で複数DBにまたがる原子性を保証するが、コーディネータ障害時にブロッキング問題が起きる。マイクロサービス時代はBASEモデル(Basically Available, Soft state, Eventual consistency)で結果整合性を許容し、Sagaパターン(補償トランザクション)で実質的な原子性を担保する設計が主流。
試験での位置づけ
ACIDは基本情報・応用情報・データベーススペシャリストすべてで頻出。基本情報技術者ではトランザクション分離レベル(READ UNCOMMITTED / READ COMMITTED / REPEATABLE READ / SERIALIZABLE)と、それぞれで発生する異常(ダーティリード・ファントムリード・反復不可能読取り)の組合せが定番出題。SQL標準ではSERIALIZABLEがデフォルトだが、PostgreSQLはREAD COMMITTEDがデフォルトと製品差異もある。
選択肢の発展補足
- 耐久性はチェックポイント機構と組み合わせて、リカバリ時間(RTO)短縮を図る。
- 独立性のためにMVCC(多版型同時実行制御)を採用する製品が増えており、書込み中でも読込みをブロックしない設計が主流。
- CAP定理ではC(整合性)・A(可用性)・P(分断耐性)のうち2つしか同時保証できないため、分散DBではどれを優先するか設計判断が必要。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和5年度 科目A 問7/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。