平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14
テクノロジ/データベース分散データベースシステムにおいて,複数のデータベースを更新する場合に用いられる2相コミットの処理手順として,適切なものはどれか。
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14
- ア主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
- イ主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
- ウ主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
- エ主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
正解:イ
解説
2相コミットでは,主サイト(コーディネータ)が第1相(準備フェーズ)で各データベースサイトに対してコミットの準備ができているかどうかを問い合わせ,全てのサイトからコミット可能であるという応答を受け取って初めて,第2相(コミットフェーズ)で実際にコミットを発行します。
選択肢ごとの解説
- ア誤り。2相コミットの準備フェーズでは,各データベースサイトはコミット準備ができているかどうかにかかわらず,必ず何らかの応答(コミット可又は不可)を主サイトに返す必要があり,「準備ができていない場合だけ応答する」という記述は誤りです。
- イ正しい。主サイトは,まず各データベースサイトに準備(コミット可能かどうか)を確認する第1相を経て,全サイトがコミット可能であることを確認した後に,第2相としてコミットを発行します。
- ウ誤り。準備の確認を経ずにコミットを発行し,失敗時に再度コミットを発行するという方式では,そもそも更新できない状態のサイトが存在する場合に整合性のとれた処理ができず,2相コミットの準備フェーズの役割を果たしていません。
- エ誤り。2相コミットの第1相は,各サイトの資源をロックすることそのものではなく,各サイトにコミットの可否を確認することが本質です。ロック獲得の成否だけでコミットを発行するという記述は,コミット可否の確認という準備フェーズの内容を反映していません。