CAP定理:分散システムにおけるトレードオフ
CAP
定理、別名ブリュワーの
定理は、分散コンピュータシステムにおいてデータの複製を行う際の、3つの重要な特性に関する
定理です。現代のウェブサービスのような大規模システム設計において、その指針として広く認識されています。この
定理は、同時には3つの特性全てを満たせないことを主張しています。
3つの特性
CAP
定理が扱う3つの特性は以下の通りです。
一貫性(Consistency): すべてのノードから読み出されたデータは常に最新の状態である、もしくはエラーを返す。全てのノードが常に同じデータを参照している状態を指します。
可用性(Availability): 常に稼働しているノードが存在し、リクエストに対して応答を返す。システムの利用可能性を意味し、ノードの故障があっても、システム全体としては稼働し続けられる状態を指します。
*
分断耐性(Partition-tolerance): ネットワークの切断など、通信障害が発生した場合でも、システムは継続して動作を続ける。ノード間の通信が断絶した場合でも、システムが正常に動作し続ける能力です。ネットワークの一部が分離しても、それぞれのグループは独立して機能し続ける必要があります。
CAP
定理は、これらの3つの特性のうち、同時に2つ以上を満たすことは不可能だと主張しています。必ず1つを犠牲にする必要があるのです。これは、分散システム設計において、常にトレードオフを考慮する必要があることを意味しています。
各特性の組み合わせと例
以下の表は、CAP
定理における各特性の組み合わせと、その例を示しています。
特性1 | 特性2 | 犠牲となる特性 | システムの例 | 説明 |
---|
- | - | - | - | --- |
一貫性 | 可用性 | 分断耐性 | 多くのリレーショナルデータベース、LDAP、NFS | ネットワークが分割されると、片方のノードを停止させ一貫性を維持する。可用性が低下する可能性がある。 |
可用性 | 分断耐性 | 一貫性 | Amazon SimpleDB、Apache Cassandra、DNS、HTTPキャッシュ | ネットワークが分割されても可用性を維持。データの一貫性は、時間経過と共に最終的に整合される(結果整合性)。 |
一貫性 | 分断耐性 | 可用性 | Apache HBase | ネットワークが分割されても一貫性を維持しようとするが、単一障害点や整合性維持機構の不完全さにより、可用性が低下する可能性がある。 |
CAP定理の歴史
CAP
定理は、
2000年にエリック・ブリュワーによってPODC(Symposium on Principles of Distributed Computing)で発表された「Brewers' conjecture」に端を発します。その後、2002年にSeth Gilbertとナンシー・リンチによって厳密な証明が与えられ、
定理として確立しました。
まとめ
CAP
定理は、分散システム設計における重要な指針となります。システムの要件に応じて、どの特性を優先するのかを慎重に検討する必要があります。一貫性、可用性、分断耐性のバランスを取ることは、分散システム開発における大きな課題であり、それぞれのシステムの特性や用途に合わせて、適切なアーキテクチャを選択することが重要です。常に、どの特性を犠牲にするかというトレードオフを意識する必要があります。 それぞれの特性の重要度は、アプリケーションの種類によって異なるため、システム設計者は、アプリケーションのニーズを慎重に評価し、それに応じて適切な選択を行う必要があります。例えば、金融取引システムでは一貫性が非常に重要になるため、可用性または分断耐性を犠牲にする必要があるかもしれません。一方、ソーシャルメディアプラットフォームでは、可用性がより重要になる可能性があります。