応用情報技術者 2014年 春期 午前2 問29
問題文
分散データベースにおいて図のようなコマンドシーケンスがあった。調停者がシーケンス a で発行したコマンドはどれか。ここで、コマンドシーケンスの記述にUMLのシーケンス図の記法を用いる。

選択肢
ア:COMMITの実行要求
イ:ROLLBACKの実行要求(正解)
ウ:判定レコードの書出し要求
エ:ログ書出しの実行要求
分散データベースの調停者コマンド判別【午前2 解説】
要点まとめ
- 結論:調停者がシーケンスaで発行したコマンドはROLLBACKの実行要求です。
- 根拠:システム2から「否」の応答があり、全参加者のCOMMIT可否が揃わなかったため、調停者はロールバックを指示します。
- 差がつくポイント:2フェーズコミットの流れを正確に理解し、否定応答時の調停者の動作を即答できるかが鍵です。
正解の理由
調停者はCOMMIT可否問い合わせに対し、システム1から「可」、システム2から「否」の回答を受けています。2フェーズコミットプロトコルでは、全参加者が「可」と回答しなければトランザクションを確定できません。したがって、調停者はトランザクションの中止を指示するため、ロールバックの実行要求を送ります。これがシーケンスaのコマンドです。
よくある誤解
COMMIT可否問い合わせで「否」があっても、調停者がCOMMITを強行することはありません。判定レコードの書出しは調停者の決定後に行うため、即時のコマンドではありません。
解法ステップ
- 2フェーズコミットの基本手順を確認する。
- 図のシーケンスで調停者がCOMMIT可否問い合わせを送っていることを確認。
- 参加システムからの応答を読み取り、「否」があることを把握。
- 全員が「可」でなければロールバック指示となることを理解。
- シーケンスaの矢印ラベルから調停者のコマンドを特定。
選択肢別の誤答解説
- ア: COMMITの実行要求
→ 一部参加者が「否」と回答しているため、COMMITは実行されません。 - イ: ROLLBACKの実行要求
→ 正解。否定応答があるため調停者はロールバックを指示します。 - ウ: 判定レコードの書出し要求
→ 判定レコードは調停者の決定後に書き出すもので、コマンドシーケンスaの段階ではありません。 - エ: ログ書出しの実行要求
→ ログ書出しはトランザクション管理の一環ですが、ここでのコマンドではありません。
補足コラム
2フェーズコミット(2PC)は分散トランザクションの整合性を保つための代表的なプロトコルです。調停者が全参加者にCOMMIT可否を問い合わせ、全員が承認した場合にのみコミットを実行します。1人でも否定するとロールバックを指示し、データの不整合を防ぎます。
FAQ
Q: なぜ調停者は全員の「可」を待つ必要があるのですか?
A: 分散環境では一部のシステムだけがコミットするとデータ不整合が生じるため、全員の承認が必須です。
A: 分散環境では一部のシステムだけがコミットするとデータ不整合が生じるため、全員の承認が必須です。
Q: 判定レコードとは何ですか?
A: トランザクションの最終決定(COMMITまたはROLLBACK)を記録するログで、障害復旧時に使用されます。
A: トランザクションの最終決定(COMMITまたはROLLBACK)を記録するログで、障害復旧時に使用されます。
関連キーワード: 2フェーズコミット、分散トランザクション、調停者、ロールバック、COMMIT可否問い合わせ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

