Isolation(独立性【ACID特性】)
トランザクション処理が持つべき特性だよ
「処理途中の状態が他に影響しないようにしてね!」だよ
「ACID特性」と呼ばれるやつのひとつだよ
簡単に書くよ
Isolation(独立性【ACID特性】)(読:ドクリツセイ)とは
「ここから ここまでワンセット」な処理(トランザクション処理)が持つべき4つの特性のひとつ
であり
「処理途中の状態が他に影響しないようにしてね!」のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・データベース
・トランザクション
・ACID特性
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
データベースは「データを入れておく箱」です。
突っ込んで考えると混乱するかもしれません。
何となくのフィーリングで理解してください。
トランザクションは「ここから ここまでワンセット」な処理単位です。
例えば、そうですね。
ピヨ太君がピヨピヨカンパニーに出社するとしましょう。
ピヨ太君はピヨピヨカンパニービルに到着すると
1.私服からスーツに着替える
2.タイムカードを押す
3.コーヒーを飲みながらケーキを食べる
の3つの行動をします。
この3つが、ピヨ太君が出社した状態になるためにやる作業です。
いわば、ピヨ太君の「出社作業」ですね。
出社作業が終わったら、ピヨ太君はピヨ太ママに「ピヨ太です。出社しました」と連絡を入れます。
これでピヨ太君は出社した状態になります。
繰り返しになりますが、ピヨ太君の出社作業は
1.私服からスーツに着替える
2.タイムカードを押す
3.コーヒーを飲みながらケーキを食べる
の3つです。
この3つの行動は、どれか1つでも欠けてはダメです。
すべての行動を一連の流れでやる必要があります。
このような
「ここから ここまでワンセット」な処理単位
がトランザクションです。
小難しい言い方をすると「分割不可な一連の処理」です。
ACID特性は、トランザクション処理が持っているべき4つの特性「Atomicity(原子性)」「Consistency(一貫性)」「Isolation(独立性)」「Durability(永続性)」の頭文字をくっつけた用語です。
詳細は、用語「ACID特性」の説明を ご覧ください。
……って、ACID特性の説明を読むと独立性(Isolation)についても分かっちゃうのですけどね。
ACID特性の説明を ご覧いただいた方は、ここから先を読む必要ありません。
ACID特性の説明で書いた内容と同じことが書いてあります。
ACID特性の説明に移動するのが面倒くさい人は、このまま読み進めてください。
以上を踏まえて
ACID特性のひとつで「処理途中の状態が他に影響しないようにしてね!」な特性
が(ACID特性の話で出てくる)「独立性(Isolation)」です。
例えば、そうですね。
ピヨ太君がピヨ子さんに100円あげました。
そうすると、ピヨ太君の所持金は100円減ります。
ピヨ子さんの所持金は100円増えます。
これを処理と捉えてみましょう。
1.ピヨ太君の所持金が100円減る
2.ピヨ子さんの所持金が100円増える
の2つの処理はワンセットです。
「ピヨ太君がピヨ子さんに100円あげる」処理はトランザクション処理と言えます。
さて、ここで ちょっと考えてみてください。
ピヨ太君がピヨ子さんに100円あげました。
同じタイミングでピヨ太ママがピヨ子さんに20円あげました。
ピヨ子さんに関係するトランザクション処理が2つ同時に発生したわけです。
1.ピヨ太君がピヨ子さんに100円あげる
2.ピヨ太ママがピヨ子さんに20円あげる
の2つのトランザクション処理が同じタイミングで動きます。
この2つのトランザクション処理が終わったとき、3人の所持金の状態は
1.ピヨ太君:100円減った
2.ピヨ子さん:120円増えた
3.ピヨ太ママ:20円減った
になっているはずです。
そりゃーそうですよね。
ピヨ太君がピヨ子さんに100円あげました。
ピヨ太ママがピヨ子さんに20円あげました。
それぞれ
1.ピヨ太君:100円減った
2.ピヨ子さん:120円増えた
3.ピヨ太ママ:20円減った
になるのは当然の話です。
これは処理の順番に関係なく同じ結果になります。
1.ピヨ太君がピヨ子さんに100円あげた
2.ピヨ太ママがピヨ子さんに20円あげた
であろうと
1.ピヨ太ママがピヨ子さんに20円あげた
2.ピヨ太君がピヨ子さんに100円あげた
であろうと、あるいは
1.ピヨ太君がピヨ子さんに100円あげたタイミングで同時にピヨ太ママがピヨ子さんに20円あげた
であろうと、お金を渡した後の3人の所持金の状態は
1.ピヨ太君:100円減った
2.ピヨ子さん:120円増えた
3.ピヨ太ママ:20円減った
になっているはずです。
つまり、それぞれのトランザクション処理は独立しています。
他の処理からの影響を受けません(与えません)。
これが「独立性(Isolation)」です。
独立性(Isolation)は
処理途中の状態が他に影響しないようにしてね!
な特性です。
例えば「排他制御」と呼ばれるやつが独立性(Isolation)を保持するための仕組みです。
「実際に、どうやって排他制御を実現するか?」という話になると結構ややこしいのですけどね。
そこら辺が気になる方は他のところで勉強してください。
ちなみに、ACID特性には独立性(Isolation)以外に
・原子性(Atomicity)
・一貫性(Consistency)
・永続性(Durability)
があります。
気が向いたら、全部まとめて覚えてあげてください。
一言でまとめるよ
まぁ「独立性(Isolation)」って単語が出てきたら「トランザクション処理
(「ここから ここまでワンセット」になっている処理)が持つべき『処理途中の状態が他に影響しないようにしてね!』な特性なんだな~」と お考えください。






