- ベストアンサー
3相コミットのメリット(データベーススペシャリスト試験)
データベーススペシャリスト試験の勉強をしてる者です。 2相コミットメントと3相コミットメントの違いがよくわかりません。 参考書には『2相では主サイトが障害で停止してしまうとすべてのトランザクションが停止してしまう。この欠点を補い、より強固な整合性管理を提供する方法として3相コミットメントがある』と説明されてますが・・・よくわかりません。 主サイトだろうと従サイトだろうと、どこかのサイトが障害で停止してしまえば、以後のやりとりはできず、相手は応答待ちとなり、全体が止まってしまうように思えます。 具体的にどのような状況でどんな違いが出てくるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
・一定時間応答がないのは「応答なし」とみなされる ・2相と3相では「セキュア状態」の扱いが異なる。前者は「コミットするかアボートするか従サイトでは判断できない状態」、後者は「いざというときはアボートする状態」 という目で、参考書を読みなおしてみてください。
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
基本的には正しい理解だとは思います。私もコミットメント制御の専門家ではありませんので、厳密な回答はできませんが、 もともと情報処理では、3相コミットメントが今理解しようとされているレベルまで問われることはまずないですので、 そのまま進まれたらよいと思います。 >3相コミットメントにおいて、もしコミット可否問い合わせに「否」で応える従サイトがあったら セキュア状態からコミット可能状態を飛ばして、アボート状態(ロールバック)となるのでしょうか? コミットできない従サイトがあるとわかった以上、主サイトはすぐにアボート命令を出すことになります。 >3相で問題の発生するケースは書かれてませんが『すべての問題を防げるわけではない』とあります。 あえて挙げるとするとどんなケースでしょうか? >私には物理的破損くらいしか思いつきません。。。 そうですね。物理破損に限らず、主サイトにプレコミット応答を出した後で、通信異常以外の理由で従サイト自体がコミットできない状態に 陥ったらダメでしょうね。
お礼
jamshid6さん どうもありがとうございました。 スッキリ理解できて気持ちいいです。
補足
返信が遅れてすみません。 教えてもらったポイントを念頭に、参考書を何度も何度も読み直し、おぼろげながら仕組みが見えてきました。 このような理解でよろしいでしょうか? 主サイトが通信不可となった場合 →従サイトの中から新たな主サイトを選出して終結プロトコルに従う 従サイトの1つがセキュア状態で通信不可となった場合 →プリコミット応答が返ってこないので主サイトはコミット命令ではなくアボート命令を出す。通信不可の従サイトはセキュア状態なので独自の判断でアボートする。 →すべてアボート 従サイトの1つがコミット可能状態で通信不可となった場合 →主サイトはコミット命令を出す。通信不可の従サイトはコミット可能状態なので独自の判断でコミットする →すべてコミット 追加で質問ですが 3相コミットメントにおいて、もしコミット可否問い合わせに「否」で応える従サイトがあったら セキュア状態からコミット可能状態を飛ばして、アボート状態(ロールバック)となるのでしょうか? また 3相で問題の発生するケースは書かれてませんが 『すべての問題を防げるわけではない』とあります。 あえて挙げるとするとどんなケースでしょうか? 私には物理的破損くらいしか思いつきません。。。