DBデータベーススペシャリスト試験 午前Ⅱ

平成31年度春期 データベーススペシャリスト 午前Ⅱ 問15

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

分散データベースシステムにおいて,複数のデータベースサイトを更新する場合に用いられる2相コミットの処理手順のうち,適切なものはどれか。

選択肢

  1. ア
    主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
  2. イ
    主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
  3. ウ
    主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
  4. エ
    主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
解き方のヒントを見る

トランザクション境界の見極め

取引の開始点と終了点を整理し、途中で失敗や中断が起きた場合に、どの単位で変更を扱う想定かを確認します。整合性は、処理前後の状態と同時実行の影響を分けて考えましょう。

この問題で問われていること

焦点は、複数の操作をどの境界で一つの取引として捉えるかです。各操作の依存関係、失敗時の扱い、他の処理から見えるタイミングを順に照合し、整合性への影響を整理します。

視点

トランザクションを構成する操作を時系列に並べ、ひとまとまりとして扱う範囲、途中状態の扱い、完了後に期待する状態を分けて整理する。境界の置き方と整合性の観点を混同しないことが大切です。

確認ポイント

  • 操作の依存関係と実行順序を整理する
  • 失敗や中断が起きる位置を確認する
  • 処理前後と同時実行時の状態を比較する
正解と解説を見る

正解

エ

解説

2相コミットは,主サイトが各データベースサイトの準備状況を確認するフェーズと,その結果を基にコミットを確定するフェーズに分けて処理します。

理由

主サイトはまず各データベースサイトにコミット準備を要求し,各サイトがコミット可能かどうかを確認します。参加サイトの準備結果を確認した後,コミットを発行して更新を確定させるのが2相コミットの基本的な流れです。したがって,この順序を述べるエが適切です。

比較

準備できた場合にも応答が必要であり,コミット失敗時に単純に再発行する手順ではありません。また,ロック取得後に直ちにコミットするだけでは,参加サイト全体の準備確認という2相コミットの要点を満たしません。

選択肢ア

これは不正解だよ。準備要求に対しては,各データベースサイトが準備できたかどうかを主サイトへ応答し,主サイトが全体の判断に利用します。準備ができていない場合だけ応答を返すと,準備できたサイトの状態を確認できず,2相コミットの準備フェーズとして不適切です。

選択肢イ

これは不正解だよ。2相コミットでは,準備確認の結果に基づいてコミットまたは中止を判断します。コミットが失敗した場合に主サイトが同じコミットを再度発行することは,2相コミットの基本的な処理手順として定められたものではなく,障害時の扱いを単純化しています。

選択肢ウ

これは不正解だよ。各データベースサイトのロックに成功した後にコミットし,アンロックするだけでは,主サイトが各サイトへ準備要求を出し,その応答を確認する段階が示されていません。ロック操作の順序だけでは,2相コミットの手順を表していません。

選択肢エ(正解)

これは正解だよ。主サイトは,まず各データベースサイトにコミット可能かどうかを確認し,その結果を受けてコミットを発行します。準備確認の段階とコミット確定の段階を分けて順に実行しており,分散更新を一貫して確定する2相コミットの手順に合致します。

学習のポイント

準備確認とコミット確定を分離する処理順序を理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問15(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針