データベース理論では、コンピュータ科学者のエリック・ブリューワーにちなんでブリューワーの定理とも呼ばれるCAP定理は、分散データストアは、次の3つの保証のうち最大2つしか提供できないと述べています。[ 1 ] [ 2 ] [ 3 ]
ネットワーク分断障害が発生した場合、以下のいずれかの対応を取る必要がある。

したがって、ネットワーク分断が発生した場合、一貫性か可用性のどちらかを選択しなければならない。
通常運用時には、データストアはこれら3つすべてをカバーします。[ 9 ]
分散システムはネットワーク障害から安全ではないため、ネットワーク分断は一般的に許容されなければなりません。[ 10 ] [ 11 ]分断が発生した場合、一貫性または可用性の 2 つのオプションが残されます。可用性よりも一貫性を選択した場合、ネットワーク分断により特定の情報が最新であることを保証できない場合、システムはエラーまたはタイムアウトを返します。一貫性よりも可用性を選択した場合、ネットワーク分断により情報が最新であることを保証できない場合でも、システムは常にクエリを処理し、利用可能な最新のバージョンの情報を返そうとします。[ 12 ]
ネットワーク分断がない場合、可用性と一貫性の両方を満たすことができます。[ 13 ]
RDBMSなど、従来のACID保証を念頭に置いて設計されたデータベース システムは可用性よりも一貫性を優先しますが、たとえばNoSQLムーブメントで一般的なBASE哲学に基づいて設計されたシステムは一貫性よりも可用性を優先します。 [ 14 ]ただし、MongoDBとRedis は可用性を犠牲にしながら一貫性を維持することでネットワーク 分断を解決します。[ 4 ] [ 9 ] CouchDB、Cassandra、ScyllaDBは AP データベースの例です。[ 9 ] CA に分類される NoSQL データベースはありません。 [ 9 ]最新の分散データベースのほとんどは、一貫性と可用性の両方の構成オプションを提供します。[ 6 ]
一部のクラウドサービスは、高い一貫性を重視しつつ、ネットワーク分断の頻度を最小限に抑えるために、世界規模のプライベート光ファイバーネットワークとGPSによる時刻同期を採用しています。一方、一貫性を重視した共有なしアーキテクチャでは、地理的シャーディングなどの技術を用いて、クエリ対象のノードが所有するデータの可用性を維持するものの、ネットワーク分断時には任意の要求に対してデータにアクセスできなくなる場合があります。
カリフォルニア大学バークレー校のコンピュータ科学者エリック・ブリューワーによると、この定理は1998年の秋に初めて登場した。[ 14 ] 1999年にCAP原理として発表され[ 15 ]、 2000年の分散コンピューティング原理シンポジウム(PODC)でブリューワーによって予想として発表された。[ 16 ] 2002年にMITのセス・ギルバートとナンシー・リンチがブリューワーの予想の正式な証明を発表し、定理となった。[ 1 ]
2012年、Brewerは、よく使われる「3つのうち2つ」という概念が、システム設計者がパーティションが存在する場合に一貫性または可用性のいずれかを犠牲にする必要があるだけで、パーティション管理と復旧技術が存在するため、やや誤解を招く可能性がある理由など、自身の立場の一部を明確にした。Brewerはまた、CAP定理で使用される一貫性の定義がACIDで使用される定義と異なることにも言及した。[ 14 ] [ 17 ]
分散システムにおける一貫性と可用性のトレードオフを示す同様の定理は、1996年にBirmanとFriedmanによって発表された。[ 18 ] BirmanとFriedmanの結果は、この下限を非可換操作に限定していた。
2010 年に導入された PACELC 定理 [ 13 ] は、CAPを基盤として、パーティショニングがない場合でも、レイテンシと一貫性の間に別のトレードオフが存在することを述べています。PACELC は、パーティショニング (P) が発生した場合、トレードオフは可用性 (A) と一貫性 (C) の間にあり、それ以外の場合 (E) 、トレードオフはレイテンシ (L) と一貫性 (C) の間にあることを意味します。Marc Brooker のような一部の専門家は、CAP 定理は、モノのインターネット(IoT) やモバイル アプリケーションなど、断続的に接続される環境で特に重要であると主張しています。これらの環境では、停電やエレベーターなどの狭い空間に入るときなど、厳しい物理的条件によりデバイスがパーティショニングされる可能性があります。クラウド アプリケーションなどの分散システムでは、ネットワーク パーティショニングがない場合でもレイテンシや一貫性などのトレードオフを考慮した、より包括的なPACELC 定理を使用する方が適切です。[ 19 ]
2012年2月、エリック・ブリューワーは自身のCAP定理に関する最新の見解を示した。
ブリューワーは現在、「3つのうち2つ」という公理はやや誤解を招くと述べている。彼は、設計者はパーティションが存在する場合にのみ一貫性または可用性のいずれかを犠牲にすればよいこと、そしてパーティション回復技術の進歩により、設計者は一貫性と可用性の両方を高いレベルで達成できるようになったことを指摘している。