分散データベースの2相コミット

正解の理由 2相コミットプロトコル(Two-Phase Commit: 2PC)は、分散環境で複数のサイトにまたがるトランザクションのアトミック性(全サイトでコミット、または全サイトでロールバック)を保証するための制御方式です。 第1相(準備フェーズ): 主サイト(調停者)が各参加サイトにコミット準備要求(Prepare)を送信し、全サイトからコミット可能(Prepared)の応答を待ちます。 第2相(実行フェーズ): 全サイトがコミット可能であれば「コミット(Commit)」、1サイトでも不可または無応答であれば「ロールバック(Rollback)」を全サイトに指示します。 しかし、2相コミットには「ブロッキング問題」が存在します。参加サイトがコミット準備完了(Prepared)を応答した後、主サイトからの第2相の指示(Commit/Abort)を受信する前に主サイトやネットワークが障害でダウンした場合、参加サイトは独断でコミットもロールバックも行えず、未決定状態(in-doubt状態)のまま待たされることになります。したがって、イが適切な記述です。 各選択肢の解説 全サイトからコミット可能応答を受け取った場合、主サイトは必ず「全サイトに対してコミット」を指示します。サイトごとに異なる指示を出すことはありません。 正しい記述です。第2相の指示が届かない場合、参加サイトはコミットすべきかロールバックすべきか判定できなくなります。 1つでもサブトランザクションがロールバックされた場合、トランザクション全体がロールバックされます。一部のみコミットされることはありません。 個々のサイトが独自にコミットしてしまうと、一部のサイトで障害が起きた際に整合性が破綻します。分散環境の一貫性保証には2相コミットなどの協調プロトコルが必須です。

分散データベースのトランザクションが複数のサブトランザクションに分割され,複数のサイトで実行されるとき,トランザクションのコミット制御に関する記述のうち,適切なものはどれか。

出典2021r03a_db_am2_問12
ア
2 相コミットでは,サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても,主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示を出す場合がある。
イ
2 相コミットを用いても,サブトランザクションが実行されるサイトに主サイトの指示が届かず,サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
ウ
2 相コミットを用いると,サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
エ
集中型データベースのコミット制御である 1 相コミットで,分散データベースを構成する個々のサイトが独自にコミットを行っても,サイト間のデータベースの一貫性は保証できる。