ACID

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

データベーストランザクション
「ACID」の技術書を見る →

ACID とは

ACID は、データベーストランザクションが満たすべき 4 つの特性である。Aurora や RDS などの RDB はトランザクションで ACID を満たし、DynamoDB はトランザクション用の API の 1 回のリクエストの範囲で ACID を満たす。

4 つの特性

表のうち分離性の行だけが、同時に走る複数のトランザクションの間の性質を述べている。

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

原子性の例

下の例は口座 A から B への送金で、2 つの UPDATE を 1 つのトランザクションにまとめている。

-- 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 の TransactWriteItems は、最大 100 件の書き込みを全部成功か全部失敗の 1 つの操作にまとめる (2026 年 10 月時点)。

RDB vs DynamoDB の ACID

DynamoDB の列の上限と分離のレベルは、2026 年 10 月時点の AWS の文書による。

特性RDB (Aurora)DynamoDB
原子性トランザクションで対応TransactWriteItems で対応 (1 回で 100 件まで)
一貫性外部キーや CHECK 制約で宣言できるConditionExpression による条件付き書き込みで表現する
分離性分離レベルを選んで指定できるトランザクションと単一アイテムの読み書きの間は Serializable、Query や Scan との間は Read Committed
永続性WAL (先行書き込みログ) で担保する3 AZ へのレプリケーションで担保する

ACID vs BASE

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

いつ ACID が必要か

AWS は、複数の項目を全部成功か全部失敗でまとめて変える ACID のトランザクションが向く処理として、金融取引の処理と注文の処理を挙げている。

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

共有:

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

関連用語

関連する記事