
【PostgreSQL】ACID特性について
ACID特性とは
データベース(DB)が 「データを正しく、安全に管理するための4つのルール」 のこと
たとえば、銀行の取引やネットショッピングの購入履歴など、大切なデータが 「途中で消えたり」「おかしくなったり」 しないようにするためのしくみ
トランザクションが「正しく、安全に実行される」ために、ACID特性が必要になる
ACIDの4つの特性
A(Atomicity:一貫性)
➡ 「お金のやりとりは、途中で止まったらダメ!」
たとえば、ATMで 「1万円を引き出す」 とき、もし途中でエラーが起きたらどうなる?
銀行の口座からは1万円が減っているのに、お札が出てこなかったら困る
お札は出てきたのに、口座のお金が減っていなかったら銀行が損する
なので、「ぜんぶ成功するか、ぜんぶやらないか」 を守ることで、こういうミスを防いでいる
C(Consistency:整合性 )
➡ 「お金の計算が正しくなるように!」
もし、銀行のシステムがバグって 「口座に1万円入れたら2万円増えた!」 みたいなことが起こったら大変!
銀行には「お金の合計は正しくなければいけない」というルールがある
どんなときでも、このルールが守られるようにしている
I(Isolation:アイソレーション / 独立性)
➡ 「ほかの取引と混ざらないように!」
たとえば、
Aさんが「1万円をおろす」
Bさんが「同じ口座に1万円を入れる」
この2つの取引がほぼ同時に行われたとき、もし処理がぐちゃぐちゃになったら、お金の計算がめちゃくちゃになってしまう
コンピューターは「1つの取引が終わるまで、他の取引と混ざらないようにする」
D(Durability:デュラビリティ / 永続性)
➡ 「データは消えちゃダメ!」
もし、お店でクレジットカードで支払ったあと、急にシステムが落ちて、データが消えてしまったら大変!
お店は「支払いがなかったことになった!」と困る
でもお客さんの口座からはお金が引かれていたら、お客さんも困る
いったん記録された取引は、停電やエラーがあっても消えないように守られている
いいなと思ったら応援しよう!
