FE EXAM

ACID特性(トランザクションの4性質)

トランザクションが備えるべき原子性・一貫性・独立性・永続性の4つの性質。

DIAGRAM
原子性一貫性独立性永続性
ACID = 信頼できるトランザクションが満たす4つの頭文字AAtomicity原子性
全部成功か、全部なかったことに(All or Nothing)
CConsistency一貫性
前後で制約を満たした正しい状態を保つ
IIsolation独立性
同時実行しても互いに干渉しない
DDurability永続性
確定した結果は障害後も失われない
解説

📌
ACID特性とは

4つの頭文字でACIDA原子性C一貫性I独立性D永続性

ACID特性とは、トランザクションが備えるべき4つの性質(原子性・一貫性・独立性・永続性)の頭文字を並べた言葉です。トランザクションとは「いくつかの操作をまとめて1つの処理単位として扱うもの」で、たとえば銀行振込の「Aから引く・Bに足す」をひとまとめにしたものを指します。

ACIDは Atomicity / Consistency / Isolation / Durability の頭文字です。この4つを満たすことで、障害が起きても、複数の人が同時に操作しても、データが矛盾しないことが保証されます。

身近な例で考えると、銀行のATMのようなものです。「自分の口座から引いて相手に送る」処理が途中で止まったり、二重に実行されたり、停電で消えたりしては困ります。ACID特性は、こうした「お金の出入りを絶対に間違えない」ための約束事です。

📌
4要素の意味

ACIDの4つの要素は、それぞれ次のような意味を持ちます。色は上の図解と対応しています。
原子性(Atomicity):処理は「全部成功」か「全部なかったことにする」のどちらかに(All or Nothing)
一貫性(Consistency):処理の前後で、決められた制約を満たした正しい状態を保つ
独立性(Isolation):複数の処理を同時に走らせても、互いに干渉せず1件ずつ実行したのと同じ結果になる
永続性(Durability):確定(コミット)した結果は、障害が起きても失われない

頭文字英語日本語ひとことで言うと
AAtomicity原子性全部成功か、全部なかったことに(All or Nothing)
CConsistency一貫性前後で制約を満たした正しい状態を保つ
IIsolation独立性同時実行しても互いに干渉しない
DDurability永続性確定した結果は障害後も失われない

覚え方のコツは、「A=途中で止めない」「C=ルールを破らない」「I=他人を邪魔しない」「D=結果を消さない」と動詞でイメージすることです。4つがそろって初めて、安心して使えるデータベースになります。

📌
DBMS必須の理由

ACIDなし → 残高がズレる引いた途中で停電お金が消えるACIDあり元に戻して安全

DBMS(データベース管理システム)は、複数の利用者が同時にアクセスし、停電やプログラム異常といった障害も起こりうる環境で動きます。もしACID特性がなければ、処理の途中で止まったデータや、他人の操作と混ざった矛盾だらけのデータが残ってしまいます。

銀行・予約システム・在庫管理など、1件でも数字がズレたら大問題になる業務では、データの正しさが何より重要です。だからこそ信頼性の高いDBMSは、ACID特性を満たすことを前提に設計されています。

上の図解のように、ACIDがあれば「途中で停電してもなかったことにして元に戻す」ことができます。業務データを安心して任せられる土台が、ACID特性なのです。

⚠️
各特性が壊れると何が起きるか

A 原子性引落しだけ実行→入金されずお金が消えるC 一貫性ルール無視で残高がマイナスになるI 独立性他人の確定前データを読んで計算がズレるD 永続性COMMIT後に停電→確定したはずが消える

4つの特性は、それぞれ別の問題を防いでいます。1つでも欠けるとデータが壊れる可能性があるため、4つがセットで意味を持ちます。
原子性が壊れると:処理が途中まましか実行されず、「引いたのに届かない」状態が残る
一貫性が壊れると:「残高はゼロ以上」などのルールが無視され、ありえない値が入ってしまう
独立性が壊れると:他のトランザクションが処理途中のデータを読んでしまい、計算が間違える
永続性が壊れると:COMMITで確定したはずのデータが、停電などで消えてしまう

身近なたとえで言うと、ATMで引き出し操作をしたときの話です。原子性がなければ「お金が出てきたのに口座から引かれていない」または逆のことが起こり、一貫性がなければ残高が-100円になれ、独立性がなければ2人が同時に操作して残高がおかしくなり、永続性がなければ取引記録が消えます。4つすべてがあって初めて、安心してATMを使えます。

🔄
ACID vs BASE — なぜ2種類あるのか

ACID(厳密)vs BASE(ゆるやか)ACID整合性を最優先銀行・在庫管理→ 1台でも確実にBASE可用性・速さを優先SNS・動画配信→ 多台で速く大量に

ACIDと対比されるのがBASEという考え方です。Basically Available(基本的には動く)・Soft state(一時的に矛盾があってもよい)・Eventually consistent(最終的には整合する)の頭文字です。

なぜ2種類あるのかというと、「整合性の厳しさ」と「速さ・規模」はトレードオフ(どちらかを取るともう一方が犠牲になる関係)だからです。
ACID(厳密):データが絶対に正しい。でも多台に分散するとすべての機器で合意を取らないといけないので遅くなる。銀行・予約システムなど「1円でもズレたら困る」用途に向く。
BASE(ゆるやか):少し前のデータが見えることがあるが、とにかく高速・大規模。SNSのいいね数・動画の再生数など「少し古くても構わない」用途に向く。

たとえば、SNSのフォロワー数が「999人」と「1000人」で1秒ズレても誰も困りませんが、銀行の残高が1円でもズレたら大問題です。用途に合わせてACIDとBASEを使い分けることが、現代のシステム設計の基本となっています。

練習問題

🎯
基本情報技術者 練習問題

Q1.トランザクションが備えるべきACID特性に含まれないものはどれか。
A.原子性(Atomicity)
B.一貫性(Consistency)
C.可用性(Availability)
D.永続性(Durability)
Q2.「トランザクション内の処理は、すべて実行されるか、まったく実行されないかのどちらかになる」性質はどれか。
A.原子性(Atomicity)
B.一貫性(Consistency)
C.独立性(Isolation)
D.永続性(Durability)
Q3.DBMSがACID特性を保証することの意義として最も適切なものはどれか。
A.障害や同時アクセスがあってもデータの整合性を守れる
B.保存できるデータ量が無制限になる
C.SQL文の実行速度が必ず最速になる
D.バックアップが不要になる

関連コンテンツ