目次
ACIDとは何か?
ACIDは4つの言葉の頭文字をとったもので、
・Atomicity(原子性)
・Consistency(一貫性)
・Isolation(分離性)
・Durability(永続性)
この4つが、データベースのトランザクションを安全に動かすための柱になっています。
4つの特性を順番に見てみよう
① Atomicity(原子性) — 「全部やるか、全部やらないか」
想像してみてください。あなたがECサイトで商品を購入しようとして、決済は成功したのに注文登録だけ失敗した…
おかしいですよね。
原子性は「トランザクションの中の処理は、全部成功するか、全部取り消すかのどちらかにする」という考え方です。
途中でエラーが出たら、すべてなかったことに戻します(これをロールバックといいます)。
② Consistency(一貫性) — 「前後でルールが崩れない」
データベースには必ずルール(制約)があります。
たとえば「在庫数はマイナスにならない」「会員IDは重複しない」などです。
一貫性は、「処理の前後でそのルールが必ず守られている状態」を保証します。
つまり、どんな取引をしても、データが“変”な状態になることはありません。
③ Isolation(分離性) — 「同時にやっても、順番にやったときと同じ結果」
これは少し想像がしやすいかもしれません。
たとえば2人が同時に同じ席を予約しようとした場合、分離性がなければ「2人とも予約できたことになってしまう」危険があります。
分離性が守られていれば、最終的には片方だけがその席を確保できます。
実際のデータベースでは「分離レベル」という設定で、この干渉の防ぎ方を細かく調整します。
④ Durability(永続性) — 「完了したら消えない」
やっと注文が確定して「これで安心!」と思った瞬間に停電が起きても大丈夫。
永続性は、「完了(コミット)した結果は必ず保存され、障害があっても失われない」ことを保証します。
そのためにデータベースはディスクやログに書き込み、復旧できるように備えています。
実際の利用シーン
・銀行や決済システム:途中失敗を防ぎ、正確な残高を保つ
・予約サイト:二重予約や重複登録を防ぐ
・在庫管理:同時購入でも在庫数が正しく反映される
・会員登録や注文処理:中途半端なデータを残さない
まとめ
ACID特性は、派手な機能ではありませんが、裏側でシステムの信頼性を支えるとても重要な存在です。
もしACIDがなければ、お金やデータのやり取りは今ほど安全ではなかったでしょう