応用情報技術者試験 令和元年秋 午前問30 解説付き過去問
問題
分散トランザクション管理において、複数サイトのデータベースを更新する場合に用いられる2相コミットプロトコルに関する記述のうち、適切なものはどれか。
正解
解説
この問題は、分散トランザクションを管理する際に用いられる2相コミットプロトコルについての理解を確かめるものです。2相コミットプロトコルは、トランザクションが複数のデータベースサイトにまたがる場合に、一貫性と完全性を保つために設計されています。
- 2相コミットプロトコルの基本概念
2相コミットプロトコルは、トランザクションのコミットプロセスを2つの段階、すなわち「準備フェーズ」と「コミットフェーズ」に分けて実行します。最初のフェーズでは、トランザクション・コーディネータ(主サイト)が参加している全てのサイト(従サイト)にコミット準備の確認を求めます。各サイトは、トランザクションが実行可能かどうかをチェックし、準備が完了したら主サイトに「準備完了」メッセージを送信します。このプロセスが全サイトで完了することが重要です。 - 正解の選択肢の詳細説明
正解の選択肢は、「主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合、全ての従サイトに対してコミット要求を発行する」というものです。この選択肢が正しい理由は、2相コミットプロトコルが全ての参加サイトからの合意がなければ次のフェーズに進まないことを要求するからです。従って、全ての従サイトから準備完了の合意が得られた場合にのみ、主サイトはコミットフェーズに進み、コミット要求を発行することが許可されます。これにより、トランザクションの一貫性と完全性が保たれます。
したがって、選択肢「主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合、全ての従サイトに対してコミット要求を発行する」が正解です。この選択肢が2相コミットプロトコルの基本的な動作原理を正確に反映しており、分散トランザクションの一貫性と完全性を確保するためには、全参加サイトからの確認が必須であることを示しています。