プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやるITエンジニアがスキルアップの話を中心に日常を綴るブログです。

ロングトランザクションとショートトランザクション

ロングトランザクションって言っても通じないので、おかしいなぁと思ったら、あんまり一般的な用語ではなさそうな雰囲気?
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp10/entwebapp10_01.html
に良い説明があります。これ読めば、「なんだ」と思う人も結構いることでしょう。
簡単な例でいうと、ある訂正を行う画面の構成が、
検索 → 訂正入力 → 確認 → 完了
みたいな画面遷移になっているとして、データベーストランザクションは、各画面遷移間で完結するものとします。
そうすると、ある人が確認画面まで遷移していて、別の人が同じものを訂正完了させてしまうと、元の人の訂正完了がおかしなことになるわけです。
で、古典的には、排他フラグみたいなやつを持たせるとか、各画面遷移間でトランザクションを完結(commit / rollback)せず、コネクションを持ちまわって無理矢理ロングトランザクションにするとか色々なわけですが、画面でそういう処理をやっている場合、×ボタンでウインドウが閉じられてしまった場合や、そもそもPCがダウンしてしまった場合など、排他のままになってしまうので、それをなんとか戻す方法が必要になったりとか、色々面倒だったりします。
どうでもいいですが、昔Oracleの勉強しているときに、Workspace Managerってのが、まさにロングトランザクションを実現するための仕組みとしてあったわけなのですが、きっとほとんど使われてないでしょうね。
仕組みはともかく、言葉としての「ロングトランザクション」は、定着して欲しいような気もします。いちいち説明しなくて済むしね。