CAP theoremによれば、分散コンピュータシステムは、consistency,availability、およびパーティション許容値を同時に提供することはできません。RavenDBは一貫性、可用性、およびパーティションの許容差をどのように達成しますか?
約RavenDBについては、このデータベースがACIDトランザクションとシャーディングを同時にサポートしているようです。 RavenDBはそれをどのように達成していますか?先行物事を明確にする
CAP theoremによれば、分散コンピュータシステムは、consistency,availability、およびパーティション許容値を同時に提供することはできません。RavenDBは一貫性、可用性、およびパーティションの許容差をどのように達成しますか?
約RavenDBについては、このデータベースがACIDトランザクションとシャーディングを同時にサポートしているようです。 RavenDBはそれをどのように達成していますか?先行物事を明確にする
:デフォルトで
はすべて.SaveChanges()
への呼び出しの間RavenDBセッションで書き込んは全か無かではありません。何らかの理由で1つの操作が失敗した場合、最後の保存以降の現在のセッション内のすべての変更は破棄されます。この機能は、オプティミスティックな同時実行性をオンにして、非常に強力です。より長いトランザクションが必要な場合は、System.Transactionもサポートされており、期待通りに機能します。シャーディングに関しては
:
シャードセットアップで分散トランザクションには真サポートはありません。ただし、優れたシャーディング戦略の参照文書のローカリティにより、各ストアにトランザクション書き込みを行うことができます。彼らは、まったく破片がない場合と同じように動作します。
CouchDBは同じボートにあります.1つのノードから見たときには「ACID」ですが、(CAPから見た場合は)Consistentではありません。データベース用語は混乱する可能性があります。
P.S.あなたがリンクした "可用性"はCAPのAではありません。 CAPのAは、「クエリを受け入れることができるすべてのノード」を表します。たとえば、パーティションの間、PAXOSは多数パーティションのクエリにのみ応答しますが、少数派パーティションはクエリに応答しません。
しかし、可用性の観点から見ると、システムがダウンするよりも可用性が向上しています。システムに整合性が必要な場合、これは達成可能な最高の可用性です。