平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15
テクノロジ/データベース分散データベースシステムにおいて,複数のデータベースサイトを更新する場合に用いられる2相コミットの処理手順のうち,適切なものはどれか。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15
- ア主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
- イ主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
- ウ主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
- エ主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
正解:エ
解説
2相コミットプロトコルでは,まず主サイト(コーディネータ)が各データベースサイトにコミット準備要求(プリペア要求)を発行し,各サイトはコミットの準備ができたかどうかを応答します(第1相:コミット可否の問合せ)。全てのサイトからコミット可能である旨の応答を得られた場合に限り,主サイトは第2相として各サイトにコミットを指示します。
選択肢ごとの解説
- ア誤り。コミット準備要求に対しては,準備ができている場合もできていない場合も,各データベースサイトは応答を返す必要があります。「準備ができていない場合だけ応答を返す」というのは2相コミットの手順として不適切です。
- イ誤り。コミットが失敗した場合に単純に再度コミットを発行するだけでは,事前にコミット可否を確認する第1相の手順が欠けており,2相コミットの正しい手順ではありません。
- ウ誤り。ロックの成功だけをもってコミットを発行するのは,各サイトでコミットが実際に可能かどうかの確認(第1相の問合せ)を経ておらず,2相コミットの手順とは異なります。
- エ正しい。主サイトはまず各データベースサイトにコミットが可能であるかどうかを確認する第1相を経て,全サイトが可能であることを確認した後にコミットを指示する第2相を実行するのが2相コミットの正しい処理手順です。