メインコンテンツへ
データベース

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

ア.一貫性(consistency)
イ.原子性(atomicity)正解
ウ.耐久性(durability)
エ.独立性(isolation)

解説

「全部やるか、全部なかったことにするか」の二択しかない——これが原子性です。銀行振込で言えば、「口座Aから引く」と「口座Bに足す」の2ステップがセットで成功するか、どちらも起きなかったことになるか、その二択しか許されない性質です。

なぜ イ が正解か

原子性(atomicity)の「原子」は、これ以上分割できない最小単位のこと。トランザクションという処理のかたまりは、原子と同じで途中の状態が外から見えてはいけません。「引き落としだけ成功して入金は失敗」なんて中途半端な状態は存在できず、COMMITで全確定か、ROLLBACKで全消去かのどちらかだけが結果として残ります。「やるなら全部やる、やらないなら最初からなかったことにする」——これが原子性の約束です。

なぜ ア は間違いか

一貫性はトランザクションの前後でデータが整合ルール(残高がマイナスにならないなど)を満たし続けることの保証で、「完全実行か全取り消しか」という実行結果の形を問うものではありません。ルールを守ることと、やり切るかゼロに戻すかは、別の話です。

なぜ ウ は間違いか

耐久性はCOMMITが完了した後にシステムがクラッシュしても、その結果がちゃんと残り続けることの保証です。「記録が消えない」という話であって、「全部やるか全部消すか」という実行の二択とは守備範囲が違います。

なぜ エ は間違いか

独立性は複数のトランザクションが同時に走っても、お互いの中途半端な状態が見えないようにする性質です。「他のトランザクションから隔離する」という話なので、一つのトランザクション自体が全実行か全取消かを保証するこの問題の答えとは、守る相手がそもそも違います。

出典: 基本情報技術者試験 令和5年 公開問題