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

DBMSに実装すべき原子性(atomicity)を説明したものはどれか。

ア.同一データベースに対する同一処理は、何度実行しても結果は同じである。
イ.トランザクション完了後にハードウェア障害が発生しても、更新されたデータベ ースの内容は保証される。
ウ.トランザクション内の処理は、全てが実行されるか、全てが取り消されるかのい ずれかである。正解
エ.一つのトランザクションの処理結果は、他のトランザクション処理の影響を受け ない。

解説

ATMで「残高を減らす」と「現金を出す」はセットで成功するか、セットで失敗するか——原子性とは「全部やるか、なかったことにするか」の二択しかない、分割不可能な処理のかたまりのことです。

なぜ ウ が正解か

トランザクション内の操作群は、南京錠でつながれた囚人の護送列車のようなもの。全員が目的地に着くか、全員が出発地に引き返すかの二択しかなく、「半分だけ到着」は絶対に許されません。選択肢ウはその定義をそのまま言葉にしたもので、これが原子性の核心です。

なぜ ア は間違いか

「何度実行しても結果が同じ」は冪等性(べきとうせい)という別の概念で、原子性とは別物です。SELECT文は何度叩いても同じ結果ですが、だからといってUPDATEが中途半端に終わらないとは限りません——完全に別の話です。

なぜ イ は間違いか

障害後もデータが保証されるのはACIDの「D」=永続性(Durability)の担当です。原子性の「A」は「全部か無か」、永続性の「D」は「残し続けるか」と守備範囲が違うので、混同するとACIDが4文字も覚えた意味がなくなります。

なぜ エ は間違いか

他のトランザクションの影響を受けないのはACIDの「I」=独立性(Isolation)の仕事です。「自分の処理を完結させる」原子性と、「他人の処理に干渉されない」独立性は、自分の弁当を食べきることと、隣の人の弁当を覗かせないことくらい違います。

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