基本情報

基本情報 平成28年度 春期 問28|テクノロジ系に関する問題

問題

基本情報 | 平成28年度 春期 | 分野:テクノロジ系

トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったかのように取り消すか,のどちらかの結果になることを保証する特性はどれか。

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は B
  • A
  • B
  • C
  • D

自信の3択

えらぶと、この端末に記録します(登録はいりません)

解説

答えは b「原子性(atomicity)」 です。

トランザクションのACID特性のひとつ「原子性」は「やるなら全部・やめるなら全部なかったことに」というオール・オア・ナッシングの性質。

たとえば銀行振込で「Aの口座から10万円引いたけど、Bに足す前にエラー」なら、Aの引き落としも自動でキャンセル(ロールバック)されます。

👉 覚え方:原子性=全部やる or 全部なし。

ほかの選択肢:a 一貫性(データの整合性を保つ)/c 耐久性(確定した結果は障害でも消えない)/d 独立性(同時に動いても互いに影響しない)。

なぜこれが正解か

正解は b の原子性(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
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 春期 問28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。