平成26年春期 問29
広告
野獣さん
(No.1)
2相コミットメント制御の処理手順についてです。
全てのシステムから「COMMIT可(YES)」が返された場合、「COMMITの実行要求」を発行し、1つでも「COMMIT否(NO)」のシステムがあったり、一定時間以上経過しても応答が無い場合は、ロールバック指示をするようですが、ロールバック処理をする理由がイマイチわかりません。
ロールバックする理由は、「NOや応答なしの場合はトランザクションに何かしらの異常が発生しているため、トランザクションの開始時点まで戻す必要がある。」という感じだと思うのですがこれで合っていますか?
全てのシステムから「COMMIT可(YES)」が返された場合、「COMMITの実行要求」を発行し、1つでも「COMMIT否(NO)」のシステムがあったり、一定時間以上経過しても応答が無い場合は、ロールバック指示をするようですが、ロールバック処理をする理由がイマイチわかりません。
ロールバックする理由は、「NOや応答なしの場合はトランザクションに何かしらの異常が発生しているため、トランザクションの開始時点まで戻す必要がある。」という感じだと思うのですがこれで合っていますか?
2017.03.17 17:37
管理人
(No.2)
2相コミットメント制御は、分散データベースにおいてトランザクション管理を行うための手法です。
分散データベースでは処理対象のデータが複数の拠点に分散して格納されているので、主サイト(調停者)は複数のサブサイト(参加者)に向けてトランザクション処理を依頼します。各サブサイトは受け取ったトランザクションを処理し、コミット直前の状態で主サイトにコミット可否の応答を返します。
このとき一部のサブサイトで不具合が発生し更新されない事態になると、1つのトランザクション内で更新されるデータと更新されないデータが混在し、トランザクションの原子性に反します。このため応答がNO、若しくは応答がないサブサイトが1つでもあった場合、主サイトは全てのサブサイトにロールバックを通知し、トランザクション開始前の状態に戻すことになります。
分散データベースでは処理対象のデータが複数の拠点に分散して格納されているので、主サイト(調停者)は複数のサブサイト(参加者)に向けてトランザクション処理を依頼します。各サブサイトは受け取ったトランザクションを処理し、コミット直前の状態で主サイトにコミット可否の応答を返します。
このとき一部のサブサイトで不具合が発生し更新されない事態になると、1つのトランザクション内で更新されるデータと更新されないデータが混在し、トランザクションの原子性に反します。このため応答がNO、若しくは応答がないサブサイトが1つでもあった場合、主サイトは全てのサブサイトにロールバックを通知し、トランザクション開始前の状態に戻すことになります。
2017.03.22 10:47
野獣さん
(No.3)
ありがとうございます。
2017.03.22 19:37
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。