基本情報 平成28年度 秋期 問28:テクノロジ系に関する問題
トランザクションが, データベースに対する更新処理を完全に行うか, 全く処理 しなかったかのように取り消すか, のどちらかの結果になることを保証する特性は どれか。
- a一貫性 (consistency) イ 原子性 (atomicity)
- b関係する相互のテーブルの格納場所を近くに配置することによって, 検索, 更 新を高速に行う。 ウ 障害によって破壊されたレコードを, テーブル間の相互の関係から可能な限り 復旧させる。正答
- c耐久性 (durability) エ 独立性 (Gsolation) 問29 関係データベースにおいて, 外部キーを定義する目的として, 適切かものはどれ か。 ア 関係する相互のテーブルにおいて, レコード間の参照一貫性が維持される制約 をもたせる。
- dレコードの削除, 追加の繰返しによる, レコード格納エリアのフラグメンテー ションを防止する。
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは 原子性(atomicity) です(選択肢が文字化けしているが論理的に原子性が正解)。
トランザクションのACID特性のひとつ「原子性」とは「やるなら全部・やめるなら全部なかったことに」というオール・オア・ナッシングの性質。
たとえば銀行振込で「Aから10万引いたけどBに足す前にエラー」なら、Aの引き落としも自動でキャンセル(ロールバック)されます。
👉 覚え方:原子性=全部やる or 全部なし。
ほかのACID:一貫性(整合性キープ)/独立性(並列でも正しい結果)/耐久性(停電でも消えない)。
なぜこれが正解か
正解は原子性(atomicity)。トランザクションのACID特性の一つで「処理が完全に実行されるか、まったく実行されないかのいずれか」を保証する性質。途中でエラーや障害があればロールバックして開始前の状態に戻し、中途半端な部分実行を許さない。問題文「完全に更新するか、全く処理しなかったかのように取り消す」と完全一致。
各選択肢の解説(ACID特性整理)
- A(Atomicity)原子性:全実行 or 全取消(本問正解)
- C(Consistency)一貫性:トランザクション前後でDB整合性維持(制約・ルール遵守)
- I(Isolation)独立性/隔離性:並行実行時も各トランザクションが独立に見える
- D(Durability)耐久性:コミット後はシステム障害でもデータが失われない
覚え方・ひっかけ注意
ACID4特性を何を守るかで識別:
- 原子性=処理の一体性
- 一貫性=データ整合性
- 独立性=並行制御
- 耐久性=永続性
試験では4特性の英語名・定義・場面(COMMIT/ROLLBACK・制約・ロック・WALログ)を組み合わせて出題。「全部 or なし」は原子性が鉄則。
理論的背景
ACID特性はJim Gray&Andreas Reuterが1983年に体系化、関係データベース理論の根幹。
- 原子性実装:WAL(Write-Ahead Logging)、トランザクションログのUNDO/REDO
- 一貫性実装:制約(PK/FK/CHECK/NOT NULL/UNIQUE)、トリガ
- 独立性実装:ロック機構(行/表ロック、共有/排他)、MVCC(Multi-Version Concurrency Control)
- 耐久性実装:ログの強制書き出し(fsync)、レプリケーション、バックアップ
独立性のレベル(Isolation Levels)(SQL標準):
- READ UNCOMMITTED:ダーティリード可
- READ COMMITTED:ダーティリード防止、ノンリピータブルリード可
- REPEATABLE READ:同一トランザクション内で同値読取保証、ファントムリード可
- SERIALIZABLE:完全直列化
実務での使われ方
DB別の独立性デフォルト:
- PostgreSQL:READ COMMITTED(MVCCベース)
- MySQL InnoDB:REPEATABLE READ
- Oracle:READ COMMITTED
- SQL Server:READ COMMITTED
分散トランザクションでは2PC(Two-Phase Commit)で複数DB間の原子性を実現するが、性能・可用性とのトレードオフあり。
BASE特性(NoSQL):
- Basically Available(基本的に利用可能)
- Soft state(状態は柔軟)
- Eventually consistent(結果整合性)
ACIDの厳格性を緩めて可用性・スケーラビリティを優先する設計思想。CAP定理(一貫性・可用性・分断耐性のうち2つしか同時達成不可能)の文脈で選択される。
試験での位置づけ
データベース分野の超頻出テーマ。基本情報・応用情報では4特性識別、データベーススペシャリストでは独立性レベル・ロック粒度・MVCC・2PC・3PC・Sagaパターン・分散DB理論(CAP/PACELC)まで踏み込む。
選択肢の発展補足
ロック関連:
- 2相ロック(2PL):成長相→縮退相、Serializability保証
- デッドロック:循環待ちで停止、検出→ロールバック解除
- 楽観的並行制御(OCC):競合少前提でコミット時検証
- 悲観的並行制御:事前ロック
分散トランザクション:
- 2PC:Coordinator/Participant、Prepare/Commit
- 3PC:CanCommit/PreCommit/DoCommit、ブロッキング軽減
- Sagaパターン:補償トランザクションで分散原子性を擬似的実現(マイクロサービス時代の標準)
- TCC(Try-Confirm-Cancel):類似パターン
- Outbox Pattern:DBとメッセージング間の整合性
現代のクラウドネイティブDB(CockroachDB・Spanner・YugabyteDB)はACID+水平スケールを実現するNewSQLとして注目。試験対策は4特性の正確な定義+独立性レベル+分散整合性パターンの理解で上位資格全般に対応可能。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 秋期 問28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。