ホーム

Topics

CAP定理

CAP定理とは何ですか?
IBMのCAP定理ソリューションの詳細はこちら AI関連の最新情報の購読を申し込む
以下の雲、円グラフ、グラフのピクトグラムのコラージュを使用したイラスト
CAP定理とは何ですか?

CAP定理によると、分散システムでは、一貫性(consistency)可用性(availability)分断耐性(partition tolerance)(CAPの「 C 」、「 A 」、「 P 」)という3つの望ましい特性のうち実現できるのは2つだけ、としています。

安い、早い、良い:2つ選んでください」という見出しで始まる造園業者や住宅塗装業者のような業者の広告を見たことはありますか。CAP定理では、これと同種のロジックを分散システムに適用します。

分散システムとは、複数のノード(物理マシンまたは仮想マシン)に同時にデータを保存するネットワークのことです。すべてのクラウド・アプリケーションは分散システムであるため、アプリケーションが最も必要とする特性を備えたデータ管理システムを選択できるように、クラウド・アプリケーションを設計する際にはCAP定理を理解することが不可欠です。

CAP 定理は、Eric A. Brewer 教授が 2000 年に分散コンピューティングに関する講演で初めて提唱したため、Brewer の定理とも呼ばれます。2年後、MITのセス・ギルバート教授とナンシー・リンチ教授は「ブリューワー予想」の証明を発表しました。

 

 

エンタープライズAIを拡張するために、AIガバナンスがビジネス上不可欠である理由

特にAIガバナンスやリスク管理ソリューションの欠如など、AI導入の障壁について学びましょう。

関連コンテンツ 生成AIに関する電子書籍に登録する
CAP定理の「CAP」の詳細

CAP 定理が言及する 3 つの分散システムの特性を詳しく見てみましょう。

一貫性

一貫性とは、どのノードに接続しても、すべてのクライアントが同時に同じデータを参照できることを意味します。これを実現するには、データが 1 つのノードに書き込まれるたびに、書き込みが「成功」とみなされる前に、そのデータがシステム内の他のすべてのノードに即座に転送または複製される必要があります。

可用性

可用性とは、1 つ以上のノードがダウンしている場合でも、データを要求するすべてのクライアントが応答を受け取ることを意味します。これを別の言い方で言えば、分散システム内のすべての動作ノードは、例外なく、あらゆるリクエストに対して有効な応答を返します。

パーティション許容度

パーティションとは、分散システム内の通信の中断、つまり 2 つのノード間の接続が失われたり、一時的に遅延したりすることです。パーティション耐性とは、システム内のノード間の通信障害が何度発生してもクラスターが動作し続ける必要があることを意味します。

キャップ定理 NoSQL データベースの種類

NoSQLデータベースは分散ネットワーク・アプリケーションに最適です。垂直方向の拡張が容易なSQL(リレーショナル)データベースとは異なり、NoSQLデータベースは水平方向に拡張可能で、分散するように設計されています。相互接続された複数のノードからなるネットワーク全体の成長に合わせて迅速に拡張できます。(詳しくは"SQL vs. NoSQL Databases: What's the Difference?" をご覧ください。)

現在、NoSQL データベースは、サポートされている 2 つの CAP 特性に基づいて分類されています。

  • CP データベース: CP データベースは、可用性を犠牲にして一貫性とパーティション耐性を提供します。任意の 2 つのノード間でパーティションが発生すると、システムはパーティションが解決されるまで、一貫性のないノードをシャットダウンする (つまり、使用不可にする) 必要があります。

  • AP データベース: AP データベースは、一貫性を犠牲にして可用性とパーティション耐性を提供します。パーティションが発生すると、すべてのノードは利用可能なままになりますが、パーティションの間違った端にあるノードは他のノードよりも古いバージョンのデータを返す可能性があります。(パーティションが解決されると、AP データベースは通常、ノードを再同期して、システム内のすべての不整合を修復します。)

  • CA データベース: CA データベースは、すべてのノードにわたって一貫性と可用性を実現します。ただし、システム内の 2 つのノード間にパーティションがある場合はこれを行うことができないため、フォールト トレランスを提供できません。

CAデータベース・タイプを最後に挙げたのには理由があります。分散システムでパーティションは避けられません。したがって、CA分散データベースを理論的に議論することはできても、実際には存在できないということになります。これは、分散アプリケーションにCAデータベースを利用できないという意味ではありません。PostgreSQLのような多くのリレーショナル・データベースには一貫性と可用性があるので、複製して複数のノードにデプロイすることができます。

MongoDB と CAP 定理

MongoDBは、データをBSON(バイナリJSON)ドキュメントとして保存できる定番のNoSQLデータベース管理システムです。複数の場所で実行されるビッグデータやリアルタイムのアプリケーションによく使用されます。CAP定理に対して、MongoDBはCPデータ・ストアです。一貫性を維持することでネットワーク・パーティションを解消しますが、代わりに可用性は低くなります。

MongoDBはシングルマスターシステムなので、レプリカセット1つにつき、すべての書き込み操作を受け取るプライマリノードが1つしかありません。同じレプリカセットにある他のノードはすべてセカンダリノードであり、プライマリノードの操作ログをレプリケートして独自のデータセットに適用するものです。デフォルトだと、クライアントではプライマリノードからの読み取りも行いますが、セカンダリノードからの読み取りを許可する読み取り設定も指定できます。

プライマリ ノードが使用できなくなった場合、最新の操作ログを持つセカンダリ ノードが新しいプライマリ ノードとして選択されます。他のすべてのセカンダリ ノードが新しいマスターに追いつくと、クラスターは再び使用可能になります。この期間中、クライアントは書き込みリクエストを行うことができないため、データはネットワーク全体で一貫したままになります。

カサンドラとキャップの定理(AP)

Apache Cassandra は、Apache Software Foundation によって管理されているオープン ソースの NoSQL データベースです。これは、分散ネットワーク上にデータを保存できるワイドカラム データベースです。ただし、MongoDB とは異なり、Cassandra はマスターレス アーキテクチャを採用しているため、単一の障害点ではなく複数の障害点が存在します。

CAP 定理と比較すると、Cassandra は AP データベースです。可用性とパーティション耐性を提供しますが、一貫性を常に提供できるわけではありません。Cassandra にはマスター ノードがないため、すべてのノードが継続的に利用可能である必要があります。ただし、Cassandra は、クライアントがいつでも任意のノードに書き込むことができ、不整合をできるだけ早く調整できるようにすることで、 最終的な整合性 を提供します。

データの不整合はネットワーク分断の場合にのみ発生し、不整合はすぐに解決されるため、Cassandra はノードがピアに追いつくのに役立つ「修復」機能を提供します。ただし、常に可用性を維持すると、多くの場合、トレードオフの価値があるシステムのパフォーマンスが高くなります。

マイクロサービスとCAP定理

マイクロサービスは、疎結合で独立してデプロイ可能なアプリケーション・コンポーネントであり、独自のデータベースやデータベース・モデルを含む独自のスタックを組み込み、ネットワークを介して相互に通信します。マイクロサービスはクラウドサーバーとオンプレミスのデータセンターの両方で実行できるため、 ハイブリッドや マルチクラウドの アプリケーションで高い人気を集めています。

CAP定理を理解すると、複数の場所で実行されるマイクロサービス・ベースのアプリケーションを設計する際に最適なデータベースを選べるようになります。たとえば、データ・モデルを素早く反復し、水平方向に拡張する能力がアプリケーションに不可欠であるが、(厳密な一貫性ではなく)偶発的な一貫性を許容できる場合、その要件を満たしてデプロイメントを簡素化するのがCassandraやApache CouchDBなどのAPデータベースです。一方、eコマース向けアプリケーションや支払いサービスなど、アプリケーションがデータの一貫性に大きく依存する場合はPostgreSQLのようなリレーショナル・データベースを選ぶことになるかもしれません。

関連ソリューション
Cloud Databases on IBM Cloud

ミッションクリティカルなワークロードから、モバイルおよび Web アプリ、分析まで、さまざまなユースケースをサポートするために IBM が提供する幅広いクラウド データベースを調べてください。

IBM Cloud 上のクラウド・データベースの探索
IBM Cloudant

IBM Cloudant は、Apache CouchDB をベースとしたスケーラブルな分散クラウド データベースで、Web、モバイル、IoT、およびサーバーレス アプリケーションに使用されます。

IBM Cloudantの詳細はこちら
DataStax EnterpriseとIBM

IBM の Apache Cassandra 上に構築された、スケーラブルで可用性の高いクラウドネイティブ NoSQL データベースを入手してください。購入、導入、サポートの単一ソースです。

IBMとのデータスタックス・エンタープライズの詳細を見る
参考情報 MongoDB とは何ですか?

MongoDB は、テーブルや行の代わりに柔軟なドキュメントを使用して、さまざまな形式のデータを処理および保存する、オープンソースの非リレーショナル データベース管理システムです。

マイクロサービスとは何ですか?

マイクロサービス アーキテクチャでは、各アプリケーションは、より小規模で疎結合された独立して展開可能な多数のサービスで構成されます。

CouchDB とは何ですか?

Apache CouchDB は、データを JSON ベースの形式で保存するオープンソースの NoSQL ドキュメント データベースです。

次のステップ

オープンなデータレイクハウス・アーキテクチャー上に構築された、目的に合ったデータ・ストアであるIBM watsonx.dataを使用すれば、あらゆるデータのAIワークロードをどこにでも拡張できます。

watsonx.dataの詳細はこちら デモを予約