2 相コミットプロトコル
出典: 令和元年度 秋期 応用情報技術者試験 午前 問30 (IPA)
分散トランザクション管理において,複数サイトのデータベースを更新する場合に用いられる 2 相コミットプロトコルに関する記述のうち,適切なものはどれか。
- ア 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,コミット準備が完了した従サイトに対してだけコミット要求を発行する。
- イ 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,全ての従サイトに対して再度コミット準備要求を発行する。
- ウ 主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合,全ての従サイトに対してコミット要求を発行する。
- エ 主サイトが全ての従サイトに対してコミット準備要求を発行した場合,従サイトは,コミット準備が完了したときだけ応答メッセージを返す。
正解と解説を見る
正解: ウ
- ア: 一部だけコミットすると、サイト間でデータが食い違ってしまいます。準備完了でないサイトがあれば、全てをロールバックします。
- イ: 準備完了を受け取れていない場合は、全ての従サイトにロールバックを指示します。
- ウ: 全ての従サイトから準備完了を受け取ったら、全ての従サイトにコミットを指示するので正しい記述です。
- エ: 従サイトは、準備が完了しなかった場合も、失敗したことを応答します。
ポイント
- 2 相コミット: 複数のサイトのデータベースを更新するとき、全部をコミットするか、全部を取り消すかのどちらかにするための手順です。
・第 1 相: 主サイトが全ての従サイトに「コミットの準備はできたか」を問い合わせ、従サイトは準備完了か失敗かを返します。
・第 2 相: 全ての従サイトから準備完了 が返ってきたら、全ての従サイトにコミットを指示します。1 つでも失敗や応答なしがあれば、全てにロールバックを指示します。