CAP定理 【CAP theorem】 ブリュワーの定理 / Brewer's theorem
データ記録における「一貫性」(consistency)とは、記録されたデータを読み込む際には必ず最新のデータが得られるか、それができない場合はエラーになる性質である。意図せず古いデータを読み込んでしまう場合があるときは一貫性が保たれていない。
「可用性」(A:Availability)とは、何らかのトラブルが生じても、分散システムを構成するサーバなどの機器(ノード)のいずれかが必ず応答を返す性質である。単一障害点(SPOF)が存在し、そこが停止するとデータの読み書きができなくなる場合には可用性が保たれていない。
「分断耐性」(P:Partition-tolerance)とは、ノード間の通信が失われてもシステム全体としては動作を継続できる性質である。ノード群が互いに連携できない複数のグループに分断されてしまった場合には、可用性と一貫性のいずれかを犠牲にしなければならない。
この3つの性質は同時に2つまでしか満たすことができないというのがCAP定理で、一般的なリレーショナルデータベース(RDB)のように一貫性と可用性を保証するケース、DNSやApache Cassandraのように可用性と分断耐性を保証するケース、Apache HBaseのように一貫性と分断耐性を保証するケースに分かれる。
CAP定理は2000年に米カリフォルニア大学バークレー校(UCB)のエリック・ブリュワー(Eric A. Brewer)教授が「ブリュワーの予想」として発表し、2002年にマサチューセッツ工科大学(MIT)のセス・ギルバート(Seth Gilbert)氏とナンシー・リンチ(Nancy Lynch)氏によって数学的に証明され、定理となった。
(2024.7.9更新)