CAP定理・PACELCとは?分散データベースでは一貫性・可用性・分断耐性の3つのうち同時に2つしか

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

CAP定理とは(全体像)

分散データベースは、データを複数のコンピュータに分けて持つ。便利だけど、3つの「あってほしい性質」を同時に全部はかなえられない、というのがCAP定理だよー。

身近にたとえると、はなれた3人で同じノートを共有する感じ。途中でネットが切れた(分断した)とき、「全員のノートをいつも同じにする(一貫性)」のと「とにかくすぐ返事する(可用性)」は、同時には成り立たないのー。

押さえるのは、3つのうち選べるのは2つまでということ。とくに分散ではネット分断(P)が避けられないので、現実にはCかAのどちらを優先するかを選ぶことになるよー。


詳しく:3つの性質とCP・APの選び方だけ覚えれば戦える

ここが記事の心臓部。まず3つの性質を見ていこーね。

CAPの3つの性質

文字名前意味
C一貫性(Consistency)どのコンピュータを見ても同じデータ
A可用性(Availability)常に応答が返ってくる
P分断耐性(Partition Tolerance)ネットが切れても動き続ける

ここで一番のひっかけが「3つ全部を同時に満たせる」という誤解。満たせるのは同時に2つまで。これがCAP定理だよー。

分散ではネット分断(P)は避けられないので、Pは確保したうえで、残りのCとAのどちらを優先するかを選ぶことになる。

CPとAPの選び方

選択優先するもの代表
CP一貫性(みんな同じ)MongoDB・HBase
AP可用性(止まらない)Cassandra・DynamoDB

ここで2つめのひっかけが「PのPはPhysical(物理)の意味」という誤解。Pは「Partition Tolerance=分断耐性」(ネットが分断されても動く)の意味だよー。

なお、CAPを実用的に広げたPACELCという考え方もあって、分断があるときはCAP(CかA)、ふだん(分断なし)のときは「速さ(レイテンシ)か一貫性」を選ぶ、という見方をするのー。

わかりやすく言い換えると

要するに、はなれた3人のノート共有でイメージするとラクだよー。

CAP定理 … 3つの良いこと(同じ・いつも応答・切れても動く)は、同時に2つまで

CP … ネットが切れたら、無理に応答せず「みんな同じ」を守る(一貫性優先)

AP … ネットが切れても、とにかく応答する(止まらないことを優先)

つまり、「3つのうち2つだけ」「分散ではCPかAPを選ぶ」、この2点が試験の急所なのー。


試験のツボ

🔴 一番出る:CAP定理(2つだけ)

①C=一貫性・A=可用性・P=分断耐性の3つ

②同時に満たせるのは2つまで(3つ全部は無理)

🔴 次に出る:CPとAPの選び方

①分散ではP(分断耐性)が避けられないので、CかAを選ぶ

②CPは一貫性優先(MongoDBなど)、APは可用性優先(Cassandraなど)

🟡 押さえると安定:Pの意味とPACELC

①PはPartition Tolerance(分断耐性)。Physical(物理)ではない

②PACELCはCAPの拡張で、ふだんは「速さか一貫性」も選ぶ


よくある間違い

「CAPは3つの性質を同時に全部満たせる」→ ✗  満たせるのは同時に2つまで。3つ全部は無理。

「CAPのPはPhysical(物理)の意味である」→ ✗  PはPartition Tolerance(分断耐性)。ネットが切れても動くこと。

「分散データベースは一貫性も可用性もいつも完全に両立する」→ ✗  分断時はどちらかを優先する(CPかAP)。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(CAP定理)

📝 オリジナル問題 1 CAP定理

CAP定理に関する次の記述のうち、正しいものはどれか。

  1. CAPは3つの性質を常に同時に全部きっちり満たせる、という法則だとされているものである
  2. CAPは画面を3つに分割して表示するための決まりのことだとされているものである
  3. CAPは一貫性・可用性・分断耐性の3つのうち、同時に2つまでしか満たせない法則である
  4. CAPはデータを必ず3か所に複製するための命令のことだとされているものである
データスラ
データスラ 解答・解説

解答は 3 だよー。

CAP定理は、一貫性・可用性・分断耐性の3つのうち、同時に2つまでしか満たせないという法則なのー。はなれた3人のノート共有で、ネットが切れたら全部はかなわない感じだよー。

選択肢1の「全部満たせる」、選択肢2の「画面を3分割」、選択肢4の「3か所に複製」はどれも誤りなのー。

選択肢判定理由
1同時に満たせるのは2つまで
2画面分割の決まりではない
33つのうち2つまで
4複製する命令ではない

オリジナル問題2(CPとAP)

📝 オリジナル問題 2 CPとAPの選び方

分散データベースのCP・APに関する次の記述のうち、正しいものはどれか。

  1. 分散では分断が避けられず、一貫性優先のCPか可用性優先のAPかを選ぶことになる
  2. 分散では常に一貫性も可用性も完全に両立でき、選ぶ必要はないものだとされている
  3. CPは可用性だけ、APは一貫性だけを優先する選び方のことだとされているものである
  4. CPもAPも画面の表示色を決めるための設定のことだとされているものである
データスラ
データスラ 解答・解説

解答は 1 だよー。

分散ではネット分断が避けられないので、一貫性優先のCP(MongoDBなど)か、可用性優先のAP(Cassandraなど)かを選ぶことになるのー。

選択肢2の「完全に両立」、選択肢3の「CPとAPが逆」、選択肢4の「表示色の設定」はどれも誤りなのー。

選択肢判定理由
1分断は避けられずCPかAPを選ぶ
2分断時は両立できない
3CPは一貫性・APは可用性優先
4表示色の設定ではない

オリジナル問題3(Pの意味)

📝 オリジナル問題 3 分断耐性Pの意味

CAPの「P」に関する次の記述のうち、正しいものはどれか。

  1. PはPhysical(物理)の意味で、機械の大きさを表すものだとされているものである
  2. Pは分断耐性のことで、ネットが切れても動き続けられることを表すものである
  3. Pは画面のピクセル数のことで、分散データベースとは無関係だとされているものである
  4. Pはプログラムを必ず3つに分ける決まりのことだとされているものである
データスラ
データスラ 解答・解説

解答は 2 だよー。

CAPの「P」は、分断耐性(Partition Tolerance)で、ネットが切れても動き続けられることなのー。Physical(物理)ではないので、取り違えないでねー。

選択肢1の「物理」、選択肢3の「ピクセル数」、選択肢4の「3つに分ける決まり」はどれも誤りなのー。

選択肢判定理由
1Physicalではない
2分断耐性・切れても動く
3ピクセル数ではない
43分割の決まりではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る