ACID特性 【Atomicity Consistency Isolation Durability】
概要
ACID特性(Atomicity Consistency Isolation Durability)とは、関連する複数の処理を一つの単位として管理するトランザクション処理に求められる、「原子性」「一貫性」「独立性」「耐久性」の4つの特性。トランザクション処理は連続する複数の操作が一体的に一つの処理や手続きを形成したもので、例えば、銀行における口座間の送金処理は「送金元口座からの出金」と「送金先口座への入金」という二つの操作が一体不可分の関係となっている。
「出金したが入金に失敗した」状態で終了してはお金が宙に浮いてしまうため、全体が成功するか、さもなくば全体を取り消すといった制御を行う必要がある。このような場合にシステムに求められる4つの特性、“Atomicity” 、“Consistency”、“Isolation”、“Durability” の頭文字を繋げて “ACID” と呼んでいる。
“Atomicity” (原子性/不可分性)とは、トランザクションに含まれる個々の手順が「すべて実行される」か「一つも実行されない」のどちらかの状態になるという性質である。送金処理における出金と入金を一体的に扱うことなどが該当する。
“Consistency” (一貫性/整合性)とは、トランザクションの前後でデータの整合性が保たれ、矛盾の無い状態が継続される性質である。例えば、送金トランザクションによって口座の残高の値が負になるといったことが起きないようにする。
“Isolation” (独立性/隔離性)とは、トランザクション実行中の処理過程が外部から隠蔽され、他の処理などに影響を与えない性質である。例えば、送金処理の途上である「出金は実施済みだが入金は未実施」といった状態を外部から読み出されないよう排他制御などを行う。
“Durability” (耐久性/永続性)とは、トランザクションが完了したら、その結果は記録され、システム障害などが生じても失われることがないという性質である。データ操作の時系列の記録(ログ)をストレージなどに保存しておき、データ記録中に障害などで中断したら記録を元に更新を反映させるといった処理が行われる。