CAP Theorem
CAP 定理 は、分散 システムにおいて、一貫性 (Consistency)、可用性 (Availability)、分断耐性 (Partition Tolerance)の3つの特性 のうち、最大 2つしか同時 に満 たせないことを示 す。
3つの特性
Consistency(一貫性)
各 ノードのデータが同 じであることを保証 。すべてのノードが同 じ時点 で同 じデータを参照 する。
Availability(可用性)
データベースサーバーへのリクエストに対 して、常 にレスポンスを返 す。ただし、レスポンスが最新 のデータである保証 はない。
Partition Tolerance(分断耐性)
ノード間 のネットワークに分断 (通信 不能 )が発生 しても、システムは稼働 し続 ける。
戦略の選択
実際 のアプリケーションでは、ネットワーク分断 は避 けられないため、CP または AP の選択 が必要 となる。
CP(Consistency + Partition Tolerance)
可用性 を犠牲 にする分散 データベース。
- 特性 :ネットワーク分断 発生時 、データの一貫性 を優先 し、一部 のリクエストを拒否 する可能性 がある
- 適用 シナリオ:投稿 システム、メッセージングシステムなど、強 い一貫性 が必要 な場面
- 代表例 :Google BigTable、MongoDB、分散 RDBMS
AP(Availability + Partition Tolerance)
一貫性 を犠牲 にする分散 データベース。
- 特性 :ネットワーク分断 発生時 、可用性 を優先 し、各 ノードが一時的 に異 なるデータを持 つことを許容
- 適用 シナリオ:「いいね」システム、ソーシャルメディアフィードなど、結果整合性 を許容 できる場面
- 代表例 :Amazon DynamoDB、Cassandra
CA(Consistency + Availability)
分断耐性 を犠牲 にするデータベース。
- 特性 :ネットワーク分断 発生時 は稼働 を継続 できない
- 適用 シナリオ:単一 機器 またはシャーディングされたデータベース(単一障害 に耐 えられない)
- 注意 :分散 アーキテクチャの趣旨 に反 するため、真 の分散 システムには基本的 に存在 しない