ACID特性 あしっどとくせい
トランザクション原子性一貫性独立性耐久性データ整合性
ACID特性について教えて
簡単に言うとこんな感じ!
ACID特性は「データベースの安全保証4か条」だよ! 銀行振込で「引き落とされたのに入金されなかった」みたいな事故を防ぐためのルールセット。原子性・一貫性・独立性・耐久性の頭文字を並べた名前なんだ。これを守ってるDBは「安心して任せられる」ってこと!
ACID特性とは
ACID特性とは、データベースのトランザクション処理が満たすべき4つの性質の総称で、「Atomicity(原子性)」「Consistency(一貫性)」「Isolation(独立性)」「Durability(耐久性)」の頭文字をとったものです。1983年にIBMのジム・グレイらが定義し、信頼性の高いDBシステムの設計原則として広く採用されています。
ACID特性を満たすことで、「複数ユーザーが同時にアクセスしても」「システム障害が起きても」「ネットワークが途切れても」データが矛盾した状態にならないことが保証されます。銀行・医療・物流・決済など、「絶対に間違えられない」システムを構築するうえでの絶対条件と言えます。
一方、近年普及したNoSQL系データベースの多くはACID特性の一部を意図的に緩め、高速処理・大規模スケールアウトを優先するBASE(Basically Available, Soft-state, Eventually consistent)モデルを採用しています。用途に応じてどちらを選ぶかが設計の重要な判断ポイントです。
4つの性質の詳細
| 性質 | 英語名 | 意味 | 具体例 |
|---|---|---|---|
| 原子性 | Atomicity | 一連の操作は「全部成功」か「全部失敗」のどちらか。中途半端な状態は起こらない | 振込の「引き落とし」と「入金」は必ずセットで完了 |
| 一貫性 | Consistency | トランザクション前後でデータは常に整合ルール(制約)を満たす | 残高がマイナスになる振込は受け付けない |
| 独立性 | Isolation | 同時に実行される複数のトランザクションは互いに干渉しない | AさんとBさんが同じ在庫を同時に予約しても二重引き当てにならない |
| 耐久性 | Durability | コミット完了後のデータは、障害が起きても消えない | 電源断直後でも確定した取引データは保持される |
歴史と背景
- 1970年:エドガー・コッドがリレーショナルモデルを提唱。データ整合性の概念が体系化される
- 1975年:ジム・グレイがトランザクション管理の研究を始め、障害回復・同時実行制御の理論を整備
- 1983年:グレイらが「The Transaction Concept」論文でACID特性を正式に命名・定義
- 1998年:グレイはトランザクション処理研究の功績でチューリング賞を受賞
- 2009年:Eric Brewerが提唱したCAP定理(一貫性・可用性・分断耐性の3つを同時に満たせない)が注目を集め、ACIDとBASEの使い分け議論が活発化
- 2010年代〜:NewSQLと呼ばれるカテゴリが台頭。水平スケールしながらACIDも維持する製品(Google Spanner、CockroachDBなど)が登場
ACIDとBASEの比較
関連する規格・RFC
| 規格 | 内容 |
|---|---|
| ISO/IEC 9075 (SQL標準) | トランザクションの分離レベルなどACID実装の基盤となる規格 |
| X/Open XA | 分散環境でACIDを保証するための標準インターフェース |
| CAP定理 | 一貫性・可用性・分断耐性を同時に満たせないというコンピュータ科学の定理 |