CAP定理:分割時は2択を迫られる
ネットワーク分断(P)が起きた瞬間、整合性(C)と可用性(A)は同時に満たせない。P が起きたら C か A の二択 をモード切替で体感します。
ネットワーク
—
モード
—
ノードA の値
—
ノードB の値
—
Bからの読み取り結果
—
いま満たせている性質
2レプリカ構成(クライアント → A/B、A↔B 複製リンク)
分散データベースでは同じデータを複数ノードに複製(レプリカ)します。CAP定理は、ネットワークで結ばれたシステムが
C(一貫性 / Consistency)・A(可用性 / Availability)・P(分断耐性 / Partition tolerance)
の3つを同時には満たせないと述べます。
要は「ネットワーク分断(P)が起きている間は、C と A のどちらか一方しか選べない」ということ。分断が無い間は C も A も両立できます。
リンクを切断し、書き込み・読み取りを試して、CP(整合性優先)と AP(可用性優先)の振る舞いの違いを確かめましょう。
要は「ネットワーク分断(P)が起きている間は、C と A のどちらか一方しか選べない」ということ。分断が無い間は C も A も両立できます。
リンクを切断し、書き込み・読み取りを試して、CP(整合性優先)と AP(可用性優先)の振る舞いの違いを確かめましょう。
いま何が起きている?
ここがポイント
- 分断が無い間は C も A も両立できる ── CAP の二択が迫られるのは P が発生したときだけ。
- CP(整合性優先) ── 古い値を返さないため、複製できないノードBは応答を止める(可用性を犠牲にする)。
- AP(可用性優先) ── 応答は続けるが、Bは複製が届かず古い値(stale)を返しうる(一貫性を犠牲にする)。
- P は選べない前提 ── 分断は必ず起こりうるので、現実の設計は実質「C を取るか A を取るか」の選択になる。