質問

http://en.wikipedia.org/wiki/cap_theorem

http://www.cs.berkeley.edu/~brewer/cs262b-2004/podc-keynote.pdf

なぜそれほど簡単ではないと思います 2つだけ

  1. 一貫性
  2. 可用性
  3. パーティショントレランス

特定の分散データベースシステムを保持できます。この推測は証明されましたが、その理由を見るための簡単な方法がありますか おそらく これは保持されるかもしれませんか?

私は証拠を探しているのではなく、この定理が理にかなっている理由を理解する良い方法です。理由は何ですか?

役に立ちましたか?

解決

わかりました、分散データベースがあると想像してみましょう。オレゴンにノードとカリフォルニアにノードがあるとしましょう。 CAP理論では、このタイプのデータベースをセットアップすると問題が発生すると述べています。

たとえば、1つのデータベースからデータをクエリする場合、他のデータベースのデータと同じである必要があります。これにより、1つのデータベースにある価値が他のデータベースにあることが保証されていることが保証されます(一貫性 キャップ理論の)。これを行うことで、あるデータベースでデータを更新し、別のデータベースから照会して、同じ結果を得ることができます。

A computer updating data in Oregon, transfers the data to California

オレゴンノードのデータを更新すると、データはカリフォルニアノードに送信され、データベースが一貫しています。一貫性を真に維持するためには、両方のデータベースがデータを真に保存する前に更新を取得することを保証する必要があります(分散トランザクションを使用して2フェーズコミット)。言い換えれば、カリフォルニアのデータベースが何らかの理由でデータを保存できない場合(例:ハードドライブ障害)、オレゴン州のデータベースはデータを保存せず、トランザクションに失敗します。

上記のような分散トランザクションの問題は、高可用性を持ちたいときに発生します。上記のこのシナリオでは、両方のデータベースを同期させようとするプロセスは、非常に遅いプロセスです。 (想像してみてください、オレゴンからカリフォルニアにデータを送信し、そこに到達し、両方のデータベースがデータにロックされていることを確認する必要があります。)需要が高い時間。 (これは 可用性 キャップ定理の。)

通常、高可用性を保証するために私たちが行うことは、分散トランザクションの代わりに複製を使用することです。したがって、カリフォルニアがデータを受け入れることを保証する代わりに、私たちは先に進んでオレゴンノードに保存してから、それにアクセスしたらカリフォルニアにデータを送信します。これにより、カリフォルニアがデータを保存する準備ができているかどうかに関係なく、常にデータを保存できることが保証されます。

The Oregon node updates the data while California reads the data.  Later, the data is moved to California

これにより、可用性が向上しますが、一貫性を犠牲にします。誰かがオレゴン州のデータを更新してから、誰か(同時に)がカリフォルニアでデータを読み取ると、新しいデータを取得していません。データベースは一貫していません。実際、オレゴンがカリフォルニアにデータを送信するまで、それらは一貫していません!

したがって、それが可用性-VS-一貫性のトレードオフです。

パーティショントレランス CAP理論の3番目の側面です。この文脈でのパーティション化は、データベース(または他の分散システム)が別々のセクションに分割され、それでも正しく機能できるという考えです。

問題は、両方のデータベースが正しく実行されている場合、オレゴンからカリフォルニアへのリンクが切断されるとどうなりますか?

Oregon is being updated while the California node is being read.  The network between the nodes is severed.

オレゴン州のデータベースを更新する場合、データを何らかの形でカリフォルニアに取得する必要があります(分散トランザクションまたはレプリケーション)。ただし、2つの間のリンクが切断された場合、システムは分割され、データベースがリンクされなくなります。

これが発生した場合、あなたの選択は、可用性を犠牲にして更新を許可する(一貫性を維持するために)停止するか、一貫性のあるコストで更新を(可用性を維持するために)許可することです。

ご覧のとおり、パーティショントレランスは、一貫性と可用性の間に直接的なトレードオフを作成します。


それ以上のものが明らかにありますが、これらは、分散システムのこれら3つの主要な側面が互いにどのように機能するかについてのいくつかの例です。 ジュリアンブラウンズ キャップ理論の説明は、もっと学ぶのに最適な場所です。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top