3

CAP 定理では、"P" (パーティショニング) コンポーネントは、基本的に、物理的なネットワーク パーティションがあってもシステムが正常に動作することを示しています。

"C" (一貫性) と "A" (可用性) は、DDBMS のコンテキストでは完全に理にかなっていると思います。一貫性を保つには、提供されている DB ノードに関係なく、すべてのクライアントがデータの一貫したビューを持っている必要があります。また、可用性を考慮して、すべてのクライアントが読み取り/書き込みのために一部のDB ノードから応答を取得できる必要があります(つまり、すべてのノードが同時にダウンすることはありません)。

しかし、何らかの理由で、私は CAP のパーティショニング部分で窒息しています。特に DDBMS に関しては、それが重要です。

分散データベースでは、定義上、複数の (クラスター化された) ノードがあります。ネットワークとシステムのアーキテクチャ、物理デバイスなどによっては、ノード間の複製または通信 (半結合など) の際にパフォーマンスの問題が発生します。CAP の「P」は、単に DDBMS のパフォーマンスを高速化する何らかの方法です。P 保証がなければ妨げられる性能は?

また、「P」は単一ノード (クラスター化されていない) DB とどのように関係していますか? その文脈ではまったく無関係だと思います。前もって感謝します!

4

2 に答える 2

13

CAP の定理は、分散システムでは、障害時の普遍的な正確性、可用性、および分断耐性を実現できないことを示しています。正確性とは、任意のノードから読み取られたデータが、他のノードで競合する値がないことを意味します。可用性とは、すべての正常なノードをクライアントが使用できることを意味します。分断耐性とは、システムが互いに通信できないサブセットに分割されても機能することを意味します。

3 台のマシンがあるとします。そのうちの 1 つが他のクラスターと通信できない、つまり、クラスターが 2 つのパーティションに分割されています。システムがこのシナリオを処理できる場合、そのシステムはパーティション トレラントです。ただし、完全な正確性または完全な可用性のいずれかをあきらめる必要があります。

ドロップの正確性: すべてのノードは稼働したままですが、分割されたノードと残りのクラスター ノードには競合するデータが含まれている可能性があり、これはスプリット ブレインと呼ばれることもあります。

可用性の低下: パーティションの 1 つがオフラインになります。これにより、データの整合性が保護されます。読み取りが成功すると、他の場所で競合する値がなくなるからです。

これは、データベース システムの観点からは、障害に対処するためのさまざまな戦略が必要であることを意味します。パーティション障害を処理できないデータベースは、いずれかのノードがダウンした場合の動作が未定義であることを意味します。障害時に正確性を犠牲にするデータベースは、障害が解決されたときにアプリケーションが一貫性の問題に対処することを余儀なくされますが、より多くのノードを利用できるままにすることができます。可用性を放棄したデータベースは、アプリケーション ロジックがデータが常に一貫していると想定できるようにしますが、障害が発生すると正常なノードにアクセスできなくなります。

于 2013-03-03T09:23:05.310 に答える
0

CAP についての私の理解では、常に 3 つの望ましい属性すべてを確実に持つことはできず、優先順位を選択する必要があります。使用されている用語を理解するのが最も簡単ではないことに同意しますが、Eric Brewer 自身によるこの記事は、それをうまく説明しています。http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed

質問に直接答えるには、データを分割することを選択した場合、あるレベルで一貫性または可用性をトレードオフする必要があります。A と B の間でデータを分割し、相互の接続が失われた場合は、更新をブロックする (-availibity) か、個別に更新できるようにする (-consistency) かのいずれかを行います。

于 2013-03-02T23:10:15.380 に答える