goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

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

2010-02-01 10:14:39 | トピックス


一応はっきり書いておいたほうがいい?
まー、最近は、独自の解決方法を各社が持っていて、
問題になることはないんだけどね・・・

■一般のトランザクションとのちがい

 一般のトランザクションは、AさんとBさんが

  ・いくつかの資源を更新する
  ・同じ資源も更新するため
  ・利用する資源全体に排他的ロックをかけて、更新を行う。

 という手法をとる

 ロングトランザクションは、

  ・AさんBさんが、同時進行で1つのことを編集しなければいけないことが分かっているときに
     →なので、排他的ロックがかけられないときに

  ・この編集対象が半構造データであり、単純にマージすると、論理的な矛盾を起こすことが
   分かっている
  →半構造とは限らないけど、半構造がおおい。
     正規化されていると矛盾が起こりにくく
     全く構造がないなら、マージできない。

 状態でのトランザクション処理。

 大きな違いは、

 ・ロックをかけられない
 ・マージするだけでは矛盾を起こす→補正処理が必要

 ってことになる。




■具体的にはどんな処理?

 たとえば、いつもの電波利用の例でいうと、
   ・無線局事項書
   ・工事設計書
   ・無線局免許申請書
 の3つのテスト仕様書をExcelで書こうとしたとき、

 Aさんは、無線局事項書と、無線局免許申請書を
 Bさんは、量が多いので工事設計書のテスト仕様書を書くとします。

 このとき、プログラムに番号をつけるのですが、プログラムは、画面グループごとの連番とすることにします。

 つまり、番号は

   ・無線局事項書    Aさん担当
   ・工事設計書     Bさん担当
   ・無線局免許申請書  Aさん担当

 で、連番が振られます。

 テスト仕様書は、表紙と、仕様書からなり、表紙には、トータルのテスト件数が、かかれるものとします。

 ここで、

  ・Aさん、Bさんとも、たまたま100件ずつテスト項目が挙がり、
  ・Aさん、Bさんとも、(テストはじめには何件かわからないので)仮番をふっておいて、
   試験中、前の試験結果をもとに試験を行う場合には、「NO(仮番番号)の結果を元に」
   (例「No5の操作を行った後、No8を行った状態で」)のように、仮番を元に、
   仕様書を記載している。




■この場合、何が問題か

まあ、Excelなんで、Subversionで競合がわかるかという問題はさておき、かりに、分かったとしても、上記のケースの場合、

・件数のところ、自分のテスト項目件数は、たまたま2人とも100件なので
 2人とも100件と書いてある
  →同じ言葉(100件)が書いてあるので、DIFFをとっても検出できない
  →しかし、マージしたら200件になるので、ここを修正しないといけない。

・マージの仕方に順番があり(Aさんの途中にBさんの結果を入れる)、その方法が
 かならずしも、作業者に分かっているとは限らない
 (Aさん、Bさんの関係を、マネージャーしか知らないかも・・・)

・マージしただけではだめで、仮番の結果を修正しないといけない。
  →どこが修正箇所で、どのように修正するか(仮番を正式番号に置き換える)

のような問題があります。

 一般的にロングトランザクションの場合は、マージする際に、

  ・マージする仕方が決まっているが、それをどのようにやるか
  ・マージした結果、矛盾するところがあるが、それをどのように修正するか?

 ということが問題になり、これを確実に行うために、どうするか?
 (人手でやるか、コンピューター化するか)
 などが問題になります。

 つまり、

Subversion(TortoiseSVN)でコンフリクト(競合/衝突)を解決する方法(手順)
http://hide.xsv.info/tips/svnmanual/conflict/

の説明で言う、「競合を解決できるように編集してください」と書いてあるけど、具体的にどのように編集するの?という話です(そこは書いてないように読めますけど・・・)。




■どのように解決しているか

 ここで、Excelを使っている意味があるのですが・・・

・はじめから、AさんBさんのExcelシートを分けておく
・マージする結果シートを用意しておき、結果シートでは
   ・2人のExcelシートを読み込み、
   ・仮番から正規番号に変換するシートをつくって、その結果をもとに、仮番を直して
   ・その結果をマージする
 を実行するExcelマクロを組んでおき、結果シートを開いたごとに、実行する。

 その際、
   ・全体件数などはExcelの式で書いてあるので、開いたごとに再計算される

というようなExcelシート(ブック)を用意しています。
(なので、Excelでテスト仕様書を作ると便利便利・・・なんですよね)


DTPにおいては、ライブラリを用意して、小組レベルをいれといてもらい
全体レイアウトは、ライブラリの内容を流し込めばできるようにしてあるかな。
そのとき、読み込み順番によっては、図が重なるところとか、へんな風に重なっちゃうかもしれないから
目で確認して、なおさないといいけない。

なので、バッチより、DTPのほうが便利っていうことになる。




■これって、最近話題にならないよね・・・

 上記のように、Excelで自動編集までやらなくても、

  ・マージしても大丈夫なようなソースわけ
  ・マージした後の責任者を置き、その人たちがマージしたり、チェックしたりする

 などで、回避してると思う。なので、問題にはならないかな・・・
(こっちのほうが、いままで行ったソフト会社では多い。
 DTP関係のお客様だと、ライブラリにして、そのあとは手作業、自動組版、いろいろありますね)

 ってことで、最近は問題にならない。

 ちなみに、1月29日(金)のつぶやきで書いた新人が、「コミットするとき、確認すればいいんですね!」は、


Subversion(TortoiseSVN)でコンフリクト(競合/衝突)を解決する方法(手順)
http://hide.xsv.info/tips/svnmanual/conflict/

の説明で言う、「競合を解決できるように編集してください」の、編集をすればいいんですね!
の意味で、新人は、使っている。

 で、やばすぎるといったのは、いままで説明したように、「編集するのは、当然なんだけど、編集する箇所はわかっていて、その上で、あなたは、すべて、人手で確実に編集できるの?」っていう意味あい。

 数年前までは、現場で、この確認はしてた(2002年ごろ行った会社では、確認した)けど、さいきん、この手の確認を聞かないので一般的になった・・・っていうか、矛盾しないようにExcel化してるってのは、あるよな・・・


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« T2やpirkaと、開発ドキュメン... | トップ | Excelに業務をまとめ、プログ... »
最新の画像もっと見る

トピックス」カテゴリの最新記事