ACID

データベーストランザクションの 4 つの特性 - 原子性、一貫性、分離性、永続性

データベーストランザクション

ACID とは

ACID は、データベーストランザクションが満たすべき 4 つの特性である。RDB (Aurora, RDS) は完全な ACID を提供し、DynamoDB は限定的な ACID をサポートする。

4 つの特性

4 つの特性を以下にまとめる。

特性 説明
Atomicity (原子性) 全て成功 or 全て失敗 送金: 引き落とし + 入金が両方成功
Consistency (一貫性) 制約を常に満たす 残高が負にならない
Isolation (分離性) 同時実行が干渉しない 2 つの送金が正しく処理
Durability (永続性) コミット後はデータが失われない 停電後もデータが残る

原子性の例

原子性の例を以下に示す。

-- RDB: トランザクションで原子性を保証
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE id = 'B';
COMMIT;
-- 途中で失敗したら ROLLBACK → 両方とも元に戻る

DynamoDB の ACID

DynamoDB は TransactWrite で最大 100 アイテムの原子的操作をサポートする。ConditionExpression で一貫性を担保するが、RDB ほどの完全な ACID ではない。

RDB vs DynamoDB の ACID

RDB と DynamoDB の ACID の違いを以下にまとめる。

特性 RDB (Aurora) DynamoDB
原子性 ✅ 完全 ✅ TransactWrite (100 アイテムまで)
一貫性 ✅ 外部キー、CHECK 制約 △ ConditionExpression
分離性 ✅ 分離レベルを選択 結果整合性 (デフォルト)
永続性 ✅ WAL ✅ 3 AZ にレプリケーション

ACID vs BASE

ACID と BASE の違いを以下にまとめる。

観点 ACID (RDB) BASE (NoSQL)
一貫性 強い整合性 結果整合性
可用性 高い
スケーラビリティ 垂直 水平
用途 金融、在庫管理 SNS、ログ、キャッシュ

いつ ACID が必要か

金融取引には ACID (Aurora) が必須。在庫管理には ACID または DynamoDB Transactions が適している。ユーザープロフィールやログ・分析データは結果整合性で十分。

詳しくは関連書籍を参照。

この記事は役に立ちましたか?

関連用語

関連する記事