
【デスペ3問】CAPの定理(データベーススペシャリスト)
このNoteには「CAPの定理」の問題をまとめました。
私が受験した後の問題で、新たに出題され定番になった用語です。
たった3問ですが、平成31(令和元年)~令和05年の5回中4回も問1に出ているので、手軽に1問ゲットしておきましょう。
デスペのAMIIはざっくり5年分解けば、全パターンが把握できます。

私が合格した時に、学習ノートにジャンル毎に問題をまとめました。このNoteの解説は、学習ノートと、私のIT専門学校での授業内容を基にしています。
それでは始めましょう!
CAPの定理とは
CAPの定理とは、分散システムでは、以下の3つの特性の2つまでしか満たせないことです。
デスペAMIIでは、「CAPの定理 = 一貫性, 可用性, 分断耐性」とキーワードだけ覚えれば正解できます。
C:一貫性:データベースに矛盾がでない
A:可用性:いつでも利用できること
P:分断耐性:分散システム間の障害があっても稼働できること(分断しても大丈夫、分断を許容して動く)
以上の3つのうち、同時に2つまでしかゲットできないという定理です。3兎を追うもの2都兎を得ちゃってますね。
3つ目のP(分断端正)が難しいですが、分散システム間の通信が途絶えても、しゃーなしとして(許容して)稼働を続けることです。
最後の問題で取り扱います。
問題演習(用語問題)
CAP定理はどれか。
ア:可用性を優先し、システムの整合性については厳密ではないが、最終的には整合性が取れた状態になること。
イ:トランザクション処理は、データの整合性を保証すること。
ウ:複数のトランザクションが並列処理した時の実行結果と、直列して逐次処理した時の実行結果が一致すること。
エ:分散にシステムにおいて、整合性・可用性・分断耐性の3つを同時には満たせないこと。
データベーススペシャリスト 令和05年午前2問01より
正答はエ。
ア:BASE特性の説明。
イ:トランザクションのACID特性のC(一貫性)の説明。
ウ:トランザクションのACID特性のI(独立性)の説明。
エ:正しい。
ACID特性は大丈夫ですよね。基本情報技術者レベルです。
A:原子性:全く処理しないか全部処理するか
C:一貫性:データベースに矛盾が出ない
I:独立性:並列しても矛盾がでない(直列と結果が同じ)
D:永続性:データが変わらず保存される
BASEの特性は、正答になったことはないです。しかし、CAPの定理と一緒に選択肢に表れますし、データベースの特性なので知っておきましょう。
選択肢の通り「利用可能が優先」「厳密でなくても」「整合性が保証」されるような特性です。
BASEの定理は以下のような英語で構成されています。
BA(Basically Available):基本的に利用可能
S(Soft State):柔軟な状態
E(Eventually Consistent):結果整合性
分散型データベースにおいて、一貫性・可用性・分断耐性の3つの特性のうち、同時に最大2つまでしか満たせないという理論はどれか。
ア:BASE特性
イ:CAP定理
ウ:アムダールの法則
エ:ベイズの定理
正答はイ。
ベイズの定理は、基本情報技術者や応用情報技術者を中心に出題され始めた用語です。
ベイズの定理は確率に関する数式で、ベイズ統計に使われています。P(A∧B) = P(A)・P(B) か P(A | B) = P(B | A)P(A)/P(B) のいずれかの形で出題されます。
確率は、事象が発生する確率を考えて算出するのが一般的ですが、ベイズの定理を用いると事象から発生確率を逆算できる点が特徴的です。
ベイズの定理は、ひとまず「なんとなくP(A | B)とかの形の式だったなぁ」「事後確率や事前確率って言葉がでたら」と思っておく程度で良いです。
深追いは禁物。難しいですよ。
「アムダールの法則」は「ムーアの法則」と同じように、コンピュータの歴史・教養として知っておいて欲しい言葉です。IPAの国家試験にでるのは稀です。
アムダールの法則:CPUを高速化して並列処理しても並列処理できない部分の高速化はできない。
ムーアの法則:半導体(集積回路LSI)の集積度が18ヶ月で2倍になる経験則。
問題演習(事例問題)

正答はイ。
CAPは以下の通り。
C:一貫性
A:可用性
P:分断耐性
CとPを重視する場合は、一貫性を保ち・分断を許容する(止む無し)方針です。A(可用性)を犠牲にし、両方のサーバ稼働を断念します。よって、片方のサーバで頑張ります。
AとPを重視する場合は、可用性を保ち・分断を許与する方針なので、通信が分断されているのを許し、両方のサーバを稼働し続けます。C(一貫性)が犠牲になります。
他のパターンについては、参考サイト「infiniCloud」様 をどうぞ。
消去法が解きやすいです。
CとPを重視する場合は、Aが犠牲になるので、ウ・エの両方のサーバを動かすを排除できます。
AとPを重視する場合は、ア・エの両サーバの停止があり得ないので、排除できます。
以上よりイが浮き上がります。
選択肢問題では、正解を特定する解き方と、消去法で不正解を削っていく解き方の、2重で攻めると正解率を高められます。
まとめ
お疲れ様でした!
最後の事例がちょっと難しかったかもしれません。
ひとまずこれだけ知っていればOK。
CAPの定理とは、分散システムでは、以下の3つの特性の2つまでしか満たせないこと。
デスペAMIIでは、「CAPの定理 = 一貫性, 可用性, 分断耐性」とキーワードだけ覚えれば正解できます。
令和以降の問1の常連です。ここでケリをつけてくださいね。
私が合格してきた勉強法についてもNoteにしました。
まずは書籍の読み倒し方、AMIIの勉強だけでも参考にして頂ければ、嬉しいです。
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ
いいなと思ったら応援しよう!
