豚吐露@wiki
問33回答
最終更新:
ohden
-
view
イ
【2相コミット】
複数のデータベースの内容を更新するトランザクション処理において、処理が矛盾しないよう整合性を保つための手法。
『コミット』とはトランザクション処理が成功したときに結果を確定させることを指し、途中でトラブルが発生して中途半端な状態で処理が終了してしまうことを防止する。
2相コミットは複数のデータベースにまたがって処理を行なう際に、すべてのデータベースで整合性が確実に保たれるようにする手法である。
2相コミットではまず、処理全体を司るマスターサーバが、対象となるデータベースサーバに対し、コミットが実行可能であるかを問い合わせる。
更新準備が整っているサーバは『準備完了』の応答を返し、すべてのサーバが準備を終えたことを確認した上で、マスターサーバはコミット開始を通知、データベースが一斉に書き換えられる。
書き換え中にいずれかのデータベースで異常が発生した場合、異常が生じたサーバは失敗を伝え、マスターサーバはすべてのサーバに処理撤回を通知して、データを復元する『ロールバック』処理を行なうよう指示する。
このように、一連の手順がコミット準備とコミット実行の2段階に分かれていることから、2相コミットと呼ばれる。
複数のデータベースの内容を更新するトランザクション処理において、処理が矛盾しないよう整合性を保つための手法。
『コミット』とはトランザクション処理が成功したときに結果を確定させることを指し、途中でトラブルが発生して中途半端な状態で処理が終了してしまうことを防止する。
2相コミットは複数のデータベースにまたがって処理を行なう際に、すべてのデータベースで整合性が確実に保たれるようにする手法である。
2相コミットではまず、処理全体を司るマスターサーバが、対象となるデータベースサーバに対し、コミットが実行可能であるかを問い合わせる。
更新準備が整っているサーバは『準備完了』の応答を返し、すべてのサーバが準備を終えたことを確認した上で、マスターサーバはコミット開始を通知、データベースが一斉に書き換えられる。
書き換え中にいずれかのデータベースで異常が発生した場合、異常が生じたサーバは失敗を伝え、マスターサーバはすべてのサーバに処理撤回を通知して、データを復元する『ロールバック』処理を行なうよう指示する。
このように、一連の手順がコミット準備とコミット実行の2段階に分かれていることから、2相コミットと呼ばれる。

要求者はシステム1とシステム2へupdate要求を出し、commitをする必要がある。
図からシステム2へのcommitは実施できないことがわかる。
この時、システム2へrollbackを行わなければならないが、要求者からはシステム1,2へ個別にcommit要求が出ていない。よって、rollbackを行う場合、システム1,2の両方へrollbackを行う必要がある。
この時、システム2へrollbackを行わなければならないが、要求者からはシステム1,2へ個別にcommit要求が出ていない。よって、rollbackを行う場合、システム1,2の両方へrollbackを行う必要がある。
更新日: 2009年12月25日 (金) 01時34分33秒
添付ファイル