CAP定理の誤解

最近、私はこの定理にしばしば出くわします。 それはかなり長い間証明されており、それについて多くのことが書かれています。 ただし、この定理に関してCAの記述であると主張する分散システムに出会う​​たびに、つまり 一貫性と可用性のためにパーティショントレランスが犠牲にされるシステムは、少なくともそのような獣を想像することはできないので、私はハングします。 それでも、多くの審議の後、このようなシステムは無意味であるという結論に達しました。このトピックで推測したいと思います。





最初に、定理の略語の各文字が何を意味するかを思い出させていただきます。 分散システムの一般的なケース向けに定式化されていますが、分散ストレージシステムの範囲を単純化して簡素化しましょう。 私が与える定義は一般的なものではなく、非常に狭いものであることを明確にしたいので、だれもが想像しやすいようにしています。



定理によれば、分散システムを構築している場合、上記のプロパティのうち2つだけを満たすことができます。 必ずいずれかのプロパティを犠牲にしてください。 誤解を引き起こす主な問題は、パーティショントレランスを寄付することの意味です。 最後に、これは、接続が失われたエリアにシステムが分割された場合、または単に特定のコンポーネントのセットが落ちた場合にシステムが機能できるという保証に別れを告げることを意味するという結論に達しました。 これに対応できるシステムを想像できますか? しません。 一般的に、私は一人ではありません。 このテーマに関する非常に興味深い記事を次に示します。 上記の結論に達して、私がそれにつまずかなかったなら、私はおそらくこのトピックを書いていなかったでしょう、私はただ何かを理解していないと決定しました。 ついでに定理の著者によって承認されたこの記事を読んだ後、私はそれでも話をするものがあると確信しました。



したがって、パーティショントレランスを犠牲にすることはできないため、私自身はCAP定理を次のように述べています。 一部のコンポーネントの障害に耐えられる分散システムを構築する場合、可用性または一貫性を犠牲にする必要があります。



ただし、問題はまだ発生します。なぜこの定理でパーティショントレランスの概念が導入されたのですか。 ネットワーク、ハードウェア、およびソフトウェアの障害が発生しない理想的な世界では、アクセシビリティと一貫性の両方が存在するCAシステムを構築することは非常に可能だと思います。 しかし、現実の世界に入り、何らかの拒否が発生するとすぐに、パーティショントレランスに直ちに準拠する必要があり、完全な調整または完全なアクセシビリティのいずれかを拒否する必要があります。 さて、またはいくつかの妥協点を見つけるが、両方のプロパティを完全に満たすことは不可能です。



更新:

嵐のコメントが示したように、CAPの定理の最大の誤解(少なくとも私の部分)は、パーティショントレランスの定義、またはそれを犠牲にすることの意味です。 その結果、パーティショントレランスの下で、コンポーネント間の接続を失うシステムの特性を検討することに決めました。 つまり CAP定理の解釈において、PTの放棄(CとAの選択を意味する)は、システムに理想的な接続があり、その部分間の通信が失われないことを信じることを意味します。 この場合、文言は非常に明確に聞こえます。



参照:

  1. パーティショントレランスを寄付することはできません
  2. 12年後のCAP定理:ルールの変更方法
  3. エラーが存在する場合のCAP定理の明確化
  4. 最も人気のあるCAP定理の説明リンクの1つ
  5. シンプルでアクセス可能な言語のCAP定理



All Articles