HOME»応用情報技術者平成21年秋期»午前問31
応用情報技術者平成21年秋期 午前問31
問31
分散トランザクション処理で利用される2相コミットプロトコルでは,コミット処理を開始する調停者(coordinator)と,調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる。この2相コミットプロトコルに関する記述のうち,適切なものはどれか。
- 参加者は,フェーズ1で調停者にコミット了承の応答を返してしまえば,フェーズ2のコミット要求を受信しなくても,ローカルにコミット処理が進められる。
- 調停者に障害が発生するタイミングによっては,その回復処理が終わらない限り,参加者全員がコミットもロールバックも行えない事態が起こる。
- 一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例えば,5個のシステム(プログラム)が関与している場合,調停者数が2,参加者の数が3となり得る。
- フェーズ1で返答のない参加者が存在しても,調停者は強制的にそのトランザクションをコミットすることができる。
- [出題歴]
- ソフトウェア開発技術者 H17春期 問69
- ソフトウェア開発技術者 H18秋期 問68
分類
テクノロジ系 » データベース » トランザクション処理
正解
イ
解説
2相コミットプロトコルは、トランザクションを他のサイトに更新可能かどうかを確認する第1相と、更新を確定する第2相の2つのフェーズに分け、各サイトのトランザクションをコミットもロールバックも可能な中間状態(セキュア状態)にした後、全サイトがコミットできる場合だけトランザクションをコミットするという方法で分散データベース環境でのトランザクションの原子性・一貫性を保証する手法です。
具体的には、コミットの調整を行う1つのノードを「調停者」、ネットワーク上の他のノードを「参加者」として、次の手順でコミットが行われます。
[第1相(投票層)]
具体的には、コミットの調整を行う1つのノードを「調停者」、ネットワーク上の他のノードを「参加者」として、次の手順でコミットが行われます。
[第1相(投票層)]
- 調停者となったノードはネットワーク上の他のノードにコミットの可否を問い合わせる。
- 全参加者は調停者にコミットの可否を応答する。
- 全参加者からコミットの合意を得られた場合は、全参加者にコミットの実行要求を発行する。コミットの停止を応答した参加者がいた場合、またはタイムアウトとなった場合は、全参加者にロールバックの実行要求を発行する。
- 各参加者は、コミット(またはロールバック)の完了とともに調停者に処理完了のメッセージを送る。
- 調停者が、全参加者からの処理完了メッセージを受け取り、トランザクションの完了となる。
- データベースの一貫性を保つために、調停者からのコミット要求、またはロールバック要求を待つ必要があります。
- 正しい。フェーズ1で調停者が各参加者に対してコミットの可否を問い合わせた後に障害状態になった場合、参加者は調停者からの処理要求を受け取ることができなくなるので、コミットもロールバックも行えない状態に陥ります。
- コミットを調整する調停者は1人です。
- 調停者は、全参加者からコミットの合意を得られた場合のみトランザクションをコミットします。