分散トランザクションにおける2相コミットメントプロトコル

2相コミットプロトコル(Two-Phase Commit Protocol: 2PC)は、分散データベース環境において複数サイトにまたがるトランザクションの原子性(Atomicity)と一貫性(Consistency)を保証する協調プロトコルです。 コミット処理は次の2段階(フェーズ)で実行されます: ・第1相(準備相 / 投票相):調停者(主サイト)が全参加者(従サイト)に「コミット準備要求(PREPARE)」を送信。各従サイトはコミット可能であれば「準備完了(VOTE_COMMIT)」、不能であれば「拒否(VOTE_ABORT)」を返答する。 ・第2相(決定相 / 実行相):主サイトは、すべての従サイトから「準備完了」を受け取った場合に限り、全従サイトへ「コミット要求(GLOBAL_COMMIT)」を発行して確定させる。1つでも準備不能またはタイムアウトが発生した場合は、全従サイトへ「ロールバック要求(GLOBAL_ABORT)」を発行して取り消す。 一部の従サイトのみをコミットさせるとサイト間で不整合(原子性の崩壊)が生じるため、全員の合意が得られない場合は全サイトに対してロールバックを指示します。 従サイトから合意が得られない場合やタイムアウト時は、トランザクション全体をアボート(ロールバック)して終了させます。 従サイトはコミット準備が完了した場合はもちろん、ロック失敗などで準備ができない場合も「コミット不可(VOTE_ABORT)」の応答メッセージを返答する必要があります。

分散トランザクション管理において,複数サイトのデータベースを更新する場合に用いられる2相コミットプロトコルに関する記述のうち,適切なものはどれか。

出典令和元年 秋期 応用情報技術者試験 午前 問30
ア
主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,コミット準備が完了した従サイトに対してだけコミット要求を発行する。
イ
主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,全ての従サイトに対して再度コミット準備要求を発行する。
ウ
主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合,全ての従サイトに対してコミット要求を発行する。
エ
主サイトが全ての従サイトに対してコミット準備要求を発行した場合,従サイトは,コミット準備が完了したときだけ応答メッセージを返す。