システム開発には、

排他という仕組みが必要です。


簡単に言えば、

同じデータを複数人の人が同時に触れないようにします。


そうすることによって、

データの保守性や健全性を保ちます。


排他処理は大きく分けて2つあります。


楽観的排他と悲観的排他。


簡単に言うと、

楽観的排他はデータを更新する際、

既に他の誰かが更新していた場合は更新しないようにします。


悲観的排他は予め自分が更新するデータをロックします。


ロックするので、

他の人は触れません。


心置きなく更新できます。


どちらが良いかは、

そのシステムの特性等に依ります。


両方ともに、

メリットとデメリットがあります。


楽観的排他のメリットは、

友達がたくさんできます。


デメリットは、

時に痛い目に合います。


大抵のことを「まぁいいや。」で済ましちゃうので。


悲観的排他のメリットは、

誰も自分の聖域に踏み込んで来ません。


デメリットは、

友達ができません。


ロックしちゃうんで。



システムによっては、

ケースバイケースで楽観的排他と悲観的排他を使い分ける場合があります。


一貫して、

どちらかを貫く場合も多いです。


例外として、

排他制御自体を行わない場合があります。



悲観的排他の方が、

深く傷付く可能性が低いです。


ただし傷付いてしまった時は、

リカバリーが面倒です。



楽観的排他の方が傷付きやすいです。


だけど、

立ち直りが早いです。



排他制御を行わない、

つまりなんでもあり状態になると、

保守性も健全性も整合性も無くなるわけで、

今ここにあるものがすべてです。


来るもの拒まず、

約束なんて面倒くさいことはしない、

え?過去?

後ろは振り返らない主義なんで(*^^*)



悲観的排他と楽観的排他は相容れません。


心をロックしちゃうと、

誰かが覗きに来ても入れません。


ロックの解除は困難です。


簡単に解除できちゃうと、

大切なデータを守れませんから(*^^*)


悲観的排他で最悪なのは、

ロックした状態のまま、

解除する魔法の言葉を忘れちゃった時です。


そういう時は、

無理やりカギをこじ開けます。


人の手でロックを解除してあげないといけません。


みんながよく使うシステムなら、

誰かがすぐに気付いて開けてくれますが、

誰からも必要とされていないシステムなら、

ロックしたままであることを誰にも気付いてもらえず、

ずっとロックされたままです。



A君とBさんとあなたがいます。


間違えました。


あなたはいません。