システム開発には、
排他という仕組みが必要です。
簡単に言えば、
同じデータを複数人の人が同時に触れないようにします。
そうすることによって、
データの保守性や健全性を保ちます。
排他処理は大きく分けて2つあります。
楽観的排他と悲観的排他。
簡単に言うと、
楽観的排他はデータを更新する際、
既に他の誰かが更新していた場合は更新しないようにします。
悲観的排他は予め自分が更新するデータをロックします。
ロックするので、
他の人は触れません。
心置きなく更新できます。
どちらが良いかは、
そのシステムの特性等に依ります。
両方ともに、
メリットとデメリットがあります。
楽観的排他のメリットは、
友達がたくさんできます。
デメリットは、
時に痛い目に合います。
大抵のことを「まぁいいや。」で済ましちゃうので。
悲観的排他のメリットは、
誰も自分の聖域に踏み込んで来ません。
デメリットは、
友達ができません。
ロックしちゃうんで。
システムによっては、
ケースバイケースで楽観的排他と悲観的排他を使い分ける場合があります。
一貫して、
どちらかを貫く場合も多いです。
例外として、
排他制御自体を行わない場合があります。
悲観的排他の方が、
深く傷付く可能性が低いです。
ただし傷付いてしまった時は、
リカバリーが面倒です。
楽観的排他の方が傷付きやすいです。
だけど、
立ち直りが早いです。
排他制御を行わない、
つまりなんでもあり状態になると、
保守性も健全性も整合性も無くなるわけで、
今ここにあるものがすべてです。
来るもの拒まず、
約束なんて面倒くさいことはしない、
え?過去?
後ろは振り返らない主義なんで(*^^*)
悲観的排他と楽観的排他は相容れません。
心をロックしちゃうと、
誰かが覗きに来ても入れません。
ロックの解除は困難です。
簡単に解除できちゃうと、
大切なデータを守れませんから(*^^*)
悲観的排他で最悪なのは、
ロックした状態のまま、
解除する魔法の言葉を忘れちゃった時です。
そういう時は、
無理やりカギをこじ開けます。
人の手でロックを解除してあげないといけません。
みんながよく使うシステムなら、
誰かがすぐに気付いて開けてくれますが、
誰からも必要とされていないシステムなら、
ロックしたままであることを誰にも気付いてもらえず、
ずっとロックされたままです。
A君とBさんとあなたがいます。
間違えました。
あなたはいません。
排他という仕組みが必要です。
簡単に言えば、
同じデータを複数人の人が同時に触れないようにします。
そうすることによって、
データの保守性や健全性を保ちます。
排他処理は大きく分けて2つあります。
楽観的排他と悲観的排他。
簡単に言うと、
楽観的排他はデータを更新する際、
既に他の誰かが更新していた場合は更新しないようにします。
悲観的排他は予め自分が更新するデータをロックします。
ロックするので、
他の人は触れません。
心置きなく更新できます。
どちらが良いかは、
そのシステムの特性等に依ります。
両方ともに、
メリットとデメリットがあります。
楽観的排他のメリットは、
友達がたくさんできます。
デメリットは、
時に痛い目に合います。
大抵のことを「まぁいいや。」で済ましちゃうので。
悲観的排他のメリットは、
誰も自分の聖域に踏み込んで来ません。
デメリットは、
友達ができません。
ロックしちゃうんで。
システムによっては、
ケースバイケースで楽観的排他と悲観的排他を使い分ける場合があります。
一貫して、
どちらかを貫く場合も多いです。
例外として、
排他制御自体を行わない場合があります。
悲観的排他の方が、
深く傷付く可能性が低いです。
ただし傷付いてしまった時は、
リカバリーが面倒です。
楽観的排他の方が傷付きやすいです。
だけど、
立ち直りが早いです。
排他制御を行わない、
つまりなんでもあり状態になると、
保守性も健全性も整合性も無くなるわけで、
今ここにあるものがすべてです。
来るもの拒まず、
約束なんて面倒くさいことはしない、
え?過去?
後ろは振り返らない主義なんで(*^^*)
悲観的排他と楽観的排他は相容れません。
心をロックしちゃうと、
誰かが覗きに来ても入れません。
ロックの解除は困難です。
簡単に解除できちゃうと、
大切なデータを守れませんから(*^^*)
悲観的排他で最悪なのは、
ロックした状態のまま、
解除する魔法の言葉を忘れちゃった時です。
そういう時は、
無理やりカギをこじ開けます。
人の手でロックを解除してあげないといけません。
みんながよく使うシステムなら、
誰かがすぐに気付いて開けてくれますが、
誰からも必要とされていないシステムなら、
ロックしたままであることを誰にも気付いてもらえず、
ずっとロックされたままです。
A君とBさんとあなたがいます。
間違えました。
あなたはいません。