6

CAP定理によれば、分散コンピュータシステムが一貫性可用性、およびパーティション許容度を同時に提供することは不可能です。

RavenDBについて読むと、このデータベースはACIDトランザクションとシャーディングを同時にサポートしているようです。RavenDBはどのようにそれを達成しますか?

4

2 に答える 2

7

前もって物事を明確にするために:
デフォルトでは、呼び出し間のRavenDBセッションでのすべての書き込み.SaveChanges()は全か無かの法則です。何らかの理由で1つの操作が失敗した場合、現在のセッションでのすべての変更/最後の保存以降は破棄されます。この機能は、オンになっている楽観的同時実行性と組み合わせて、非常に強力です。より長いトランザクションが必要な場合は、System.Transactionもサポートされており、期待どおりに機能します。

シャーディングに関して:シャーディングされたセットアップでは、分散トランザクションの真の
サポート はありません。ただし、適切なシャーディング戦略では参照ドキュメントが局所的であるため、各ストアでトランザクション書き込みを行うことができます。それらは、シャードがまったくない場合と同じように機能します。

于 2012-04-18T19:13:41.703 に答える
3

CouchDBは同じボートにあります:それらは「ACID」(単一ノードから見た場合)ですが、一貫性がありません(CAPから見た場合)。データベースの用語は混乱を招く可能性があります。

PSあなたがリンクした「可用性」はCAPのAではありません。CAPのAは、「クエリを受け入れることができるすべてのノード」を表します。たとえば、パーティションの間、PAXOSはマジョリティパーティションのクエリにのみ応答しますが、マイノリティパーティションはクエリへの応答を拒否します。

ただし、可用性の観点から見ると、システムがダウンするよりも可用性が高くなっています。システムに整合性が必要な場合、これは達成できる最高の可用性です。

于 2013-01-26T15:52:35.717 に答える