データベース操作・制御

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の比較

ACID vs BASE ACID 🏦 銀行・医療・基幹システム向け ✓ 強い整合性(常に正しい状態) ✓ 原子性保証(中途半端なし) ✓ 障害後も完全回復 △ スケールアウトがやや難しい 代表:PostgreSQL / Oracle / MySQL Atomicity / Consistency Isolation / Durability BASE 📱 SNS・IoT・ログ収集向け ✓ 高可用性(基本は動き続ける) ✓ 水平スケールしやすい ✓ 大量データ処理に強い △ 一時的に整合しない場合あり 代表:MongoDB / DynamoDB / Redis Basically Available / Soft-state Eventually consistent

関連する規格・RFC

規格内容
ISO/IEC 9075 (SQL標準)トランザクションの分離レベルなどACID実装の基盤となる規格
X/Open XA分散環境でACIDを保証するための標準インターフェース
CAP定理一貫性・可用性・分断耐性を同時に満たせないというコンピュータ科学の定理

関連用語