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)

分断耐性(ぶんだんたいせい)犠牲(ぎせい) にするデータベース。

  • 特性(とくせい) :ネットワーク分断(ぶんだん) 発生時(はっせいじ)稼働(かどう)継続(けいぞく) できない
  • 適用(てきよう) シナリオ単一(たんいつ) 機器(きき) またはシャーディングされたデータベース(単一障害(たんいつしょうがい)() えられない)
  • 注意(ちゅうい) 分散(ぶんさん) アーキテクチャの趣旨(しゅし)(はん) するため、(しん)分散(ぶんさん) システムには基本的(きほんてき)存在(そんざい) しない

関連トピック