分散システムのCAP定理

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった問題

分散型データベースシステムにおいては, 一貫性・可用性・分断耐性の三つの特性のうち,同時には最大二つまでしか満たすことができないとする理論はどれか。

  1. BASE特性
  2. (正解)CAP定理
  3. アムダールの法則
  4. ベイズの定理

出典 : データベーススペシャリスト試験 平成31年春期 午前Ⅱ 問1

2022-12-04訪問 足立9 ニコニコ湯

CAP定理とは、分散システムの特性についての定理です。

CAP定理におけるAとPの特性をもつ分散システムの説明として,適切なものはどれか。

  1. 可用性と整合性と分断耐性の全てを満たすことができる。
  2. 可用性と整合性を満たすが分断耐性を満たさない。
  3. (正解)可用性と分断耐性を満たすが整合性を満たさない。
  4. 整合性と分断耐性を満たすが可用性を満たさない。

出典 : 応用情報技術者試験 令和4年春期 午前問26

頭文字 英語 日本語 特性
C Consistency 一貫性 いつもデータ参照は「最新を取得できる」「エラーになる」のどちらかしかしかない
A Availability 可用性 どっかのノードがダメでも他のノードが何とかしてくれるから、いつも使える状態
P Partition-tolerance ネットワーク分断耐性 ネットワークが分断してノード同士が疎通できなくても動く状態

分散システムでは、「C」「A」「P」全部を満たすことはできません。

CAP定理に関する記述として,適切なものはどれか。

  1. システムの可用性は基本的に高く,サービスは利用可能であるが,整合性については厳密ではない。しかし,最終的には整合性が取れた状態となる。
  2. 複数のトランザクションを並列に処理したときの実行結果と,直列で逐次処理したときの実行結果は一致する。
  3. トランザクション処理は,データの整合性を保証するので,実行結果が矛盾した状態になることはない。
  4. (正解)分散システムにおいて,整合性,可用性,分断耐性の三つを同時に満たすことはできない。

出典 : データベーススペシャリスト試験 令和3年秋期 午前Ⅱ 問1

2022-11-13訪問 杉並9 天狗湯

2相コミットは、「C:一貫性」「A:可用性」を満たすけれども「P:分断耐性」を諦めました。

2相コミットは、「更新したいサイト」が「他のサイト」に更新可能かを確認して、「他のサイト」がみんなOKだった場合に「更新したいサイト」が「他のサイト」へ更新を指示します。

分散トランザクション処理で利用される2相コミットプロトコルでは、コミット処理を開始する調停者(coordinator)と、調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる。この2相コミットプロトコルに関する記述のうち、適切 なものはどれか。

  1. 参加者は、フェーズ1で調停者にコミット了解の応答を返してしまえば、フェーズ2のコミット要求を受信していなくても、ローカルにコミット処理を進められる。
  2. (正解)調停者に障害が発生するタイミングによっては、その回復処理が終わらない限り、参加者全員がコミットもロールバックも行えない事態が起こる。
  3. 一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例えば、5個のシステム(プログラム)が関与している場合、調停者の数が2、参加者の数が3となり得る。
  4. フェーズ1で返答のない参加者が存在しても、調停者は強制的にそのトランザクションをコミットすることができる。

出典 : 応用情報技術者試験 平成21年秋期 午前 問31

2相コミットは、「C:一貫性」「A:可用性」のために「更新確認」をしてから「更新指示」をしますが、通信するため「P:分断耐性」を満たすことはできませんでした。

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

  1. 2相コミットでは、すべてのサブトランザクションからコミット了承応答が届いても、必ずしもすべてのサブトランザクションをコミットするとは限らない
  2. (正解)2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある
  3. 2相コミットを用いると、サブトランザクションロールバックされてもトランザクションがコミットされる場合がある
  4. 集中型データベースのコミット制御である1相コミットで、個々のサイトが独自に分散データベースのコミットを行っても、サイト間のデータベースの一貫性は保証できる

出典 : データベーススペシャリスト試験 平成24年春期 午前Ⅱ 問12

「更新確認」で「他のサイト」の1つのサイトが障害でダウンして返事をしなければ、ロールバックします。

2相コミットで分散トランザクションの原子性を保証する場合、ネットワーク障害の発生によって参加者のトランザクションが、コミットすべきかロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として、適切なものはどれか。

  1. 調停者のトランザクションが、コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
  2. (正解)調停者のトランザクションが、コミット又はロールバックの決定を参加者に送る直前に障害になった。
  3. 調停者のトランザクションが、コミット又はロールバックの応答を参加者が返す直前に障害になった。
  4. 調停者のトランザクションが、コミット又はロールバックの完了を参加者が返す直前に障害になった。

出典 : データベーススペシャリスト試験 平成25年春期 午前Ⅱ 問13


「更新確認」で「他のサイト」全部がOKを返しても、その直後に「更新したいサイト」が障害でダウンしてしまうと指示を待っている「他のサイト」はどうして良いかわからなくなってしまいます。このようにして2相コミットは、「P:分断耐性」を満たすことはできないのです。

2023-02-23訪問 神戸の宮本温泉

次回の勉強内容

ponsuke-tarou.hatenablog.com