mysql:14144
From: "T.Hirotsu" <"T.Hirotsu" <hirotsu@xxxxxxxxxx>>
Date: Tue, 31 Jul 2007 21:26:26 +0900
Subject: [mysql 14144] Re: アプリケーションレベルでの書き込みの分散について
こんにちは、広津です。 金子さんのご提案は、2相トランザクションモデルなるものが考えられた、そもそもの要因をはらんだ 方法だと思いますが、いかがでしょう? 分散トランザクションが面倒なのは、 > $dbh->commit; > $dbh_for_user_write1->commit; の場面で、最初のノードへのコミットが成功した後に、次のノードへのコミットがコケたときにどうするか、 という問題が発生するからだと思います。 2相トランザクションモデルでは、この問題に対応するために、コミット可能かという状態を返すのですが、 これでも、複数ノードへの最終的なコミットが全て同時に成功することを保証するものではありません。 ですので、インダウトになったときにどうするか、あるいは、果たして何かできるのか、というのが、 分散トランザクションを用いたシステム構築時に頭を悩ませるところかと。 もちろん、このようなケースへの対応は行わないという選択肢もあります。(^^; しかし一般的には、厳密な一貫性が必要で、かつ、障害発生時の復旧シナリオ(手動コミット・ロールバック手順) が正確に定義できる場合に、分散トランザクションを用いる意味があると思います。 もし、現実問題として、分散トランザクションを用いず、その結果、ときどきノード間の一貫性が損なわれる けれども、他にそれを補う方法があるのでしたら、ローカルトランザクションのみのモデルの検討は、十分に 価値があると思います。 逆に、ノード間の一貫性が損なわれたとき、それを簡単に補う方法があるのでしたら、分散トランザクションを用い、 インダウトになったときは全部捨てて、そっちで再構築すると言う手もありますけど。(^^; #先に申しましたとおり、MySQL の2相トランザクションは実際に用いたことがなく、マニュアルにざっくりと #目を通しただけですので、もしかしたら、私の理解に間違いがあるかも知れませんが、そういう意味で考えますと、 #MySQL での2相トランザクション関連の実装は、もうちょっと便利だといいなぁ、とか思います。(^^;
14138 2007-07-30 12:21 ["Hiroyuki Yamada" <y] アプリケーションレベルでの書き込みの分散について 14142 2007-07-31 15:00 ┣["T.Hirotsu" <hirotsu] 14143 2007-07-31 18:18 ┣["Kensuke Kaneko" <ky] -> 14144 2007-07-31 21:26 ┃┗["T.Hirotsu" <hirotsu] 14145 2007-07-31 23:53 ┃ ┗["Hiroyuki Yamada" <y] 14151 2007-08-01 12:04 ┗[<ikari-ml@xxxxxxxxxx] [meiwaku#]Re: アプリケーションレベルでの書き込みの分散について