💻 ITパスポート | テクノロジ系(データベース)

データベースのACID特性とは?

トランザクションを「安全・確実・正しく」処理するための4つの性質。
A・C・I・D の頭文字をとったデータベース管理の鉄則。

🎬 こんなシーンを想像
スマホで銀行振込。「Aさんの口座から10,000円 → Bさんの口座へ」と処理中にサーバーがクラッシュした。
Aさんから引き落としだけされてBさんに届かない…なんてことが起きたら大問題!
…これを防ぐのがACID特性!
🔑 ACID特性の4つ A 原子性 C 一貫性 I 独立性 D 永続性
A
Atomicity(原子性)
トランザクション内の処理は「全部完了」か「全部なかったこと」のどちらかのみ。途中で止まれない。
振込:引落しとも入金とも、両方成功か両方キャンセルかのどちらか。
C
Consistency(一貫性)
処理の前後でデータが整合した状態を保つ。残高がマイナスになるなど、ルール違反の状態にならない。
振込後も口座の合計金額は変わらない。
I
Isolation(独立性・隔離性)
同時に複数のトランザクションが動いても、お互いに干渉しない。処理中のデータを他から見えなくする。
自分の振込処理中、他人が同じ口座を操作しても影響しない。
D
Durability(永続性)
コミット(完了確定)したデータは、障害が起きても消えずに残る。ログに記録され、復元できる。
「振込完了」になったら、サーバーが落ちても記録は残る。
🔧 トランザクション管理の仕組み

コミット(COMMIT):トランザクション全処理が成功したら「確定」。データに反映される。

ロールバック(ROLLBACK):途中でエラーが起きたら「すべてを元に戻す」。これが原子性(A)を実現する仕組み。

💡 ACID特性はDBMS(データベース管理システム)が自動で保証する。開発者が手動で実装するものではない。

⚠️ ひっかけ注意ポイント
I(独立性)は「隔離性」とも呼ぶ
Isolation=独立性=隔離性。どちらも正しい訳語。試験では「独立性」と「隔離性」を同じ意味として扱う。「分離性」と書く場合もある。
「原子性」の「原子」はatomから
「原子(atom)=それ以上分割できないもの」→ トランザクションも分割できない(全部 or ゼロ)という意味。化学の原子と同じ語源。
一貫性は「整合性」ともいう
Consistency=一貫性=整合性。「処理の前後でルールが守られた状態」を意味する。「データが変わらない」ではなく「ルールに違反しない」こと。
ACIDと「BASE」の混同に注意
NoSQLなど分散DBはBASE特性(Basically Available, Soft state, Eventually consistent)を採用する場合がある。ACIDと対比して出題されることも。
🧠 覚え方(無理やりゴロ)
「ACIDは銀行振込の4つの安全装置」
A(原子性)= 全部やるか全部やめるか「あっちもこっちもないわー」
C(一貫性)= 残高がおかしくならない「ちゃんとしとけ」
I(独立性)= 他の処理に邪魔されない「いっさいかんしょうするな」
D(永続性)= 確定したら消えない「どんなことがあっても残す」


語呂:「あっちゃん(A)、せっかち(C)、いつも(I)、独立(I)、どっしり(D)」
A=原子性 C=一貫性 I=独立性 D=永続性