分散データベースにおける2相コミットプロトコルとサイト障害時の動作

正解は「イ」です。 2相コミット(2-Phase Commit: 2PC)は、分散環境で全参加サイトが協調してトランザクションのアトミック性を保証するプロトコルですが、ネットワーク分断や主サイト(調整者: コーディネータ)の障害によって参加サイトがブロッキング(判定不能状態: in-doubt)に陥る弱点があります。 第1相(準備相)で参加サイトが「コミット了承(PREPARED)」を返した後、主サイトからの第2相の決定通知(COMMITまたはABORT)を受信する前に通信途絶や主サイト障害が発生した場合、参加サイトは独断でコミットもロールバックもできず、指示を待つブロック状態(コミットすべきかロールバックすべきか分からない状態)となります。したがって選択肢イが正しい記述です。 すべてのサイトからコミット了承応答が届いた場合、主サイトは全サイトに対して一律にコミット指示を出します。サブトランザクションごとに異なる指示を出すことはありません。 2相コミットではアトミック性が保証されるため、いずれか1つのサイトでもロールバックされた(またはコミット拒否を返した)場合、トランザクション全体が必ずロールバックされます。 個々のサイトが独自にコミット(1相コミット)を行うと、あるサイトでは成功し別のサイトでは失敗してデータ不整合が生じるため、サイト間の一貫性は保証できません。

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

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