2

私はちょうど卒業論文を書いているところです。したがって、私は理論の最終的な一貫性と、Cassandra がこの理論をどのように適用するかに関心があります。私の問題を理解するには、次の一貫性の定義を考慮してください(私が理解している限り):

  • 因果の一貫性:

    因果関係がある可能性のあるメモリ操作がシステムのすべてのノードで同じ順序で見られる場合、システムは因果的一貫性を提供します。(ウィキペディア)

    したがって、プロセス A がデータ X を DB に書き込み、その後プロセス B がこのデータ X を読み取り、これを Y で上書きする場合、すべてのレプリカ (それぞれのノード) で A の後に B が X を取得すると、因果的一貫性が保証されると言います。 )。

  • 読み取りと書き込みの一貫性:

    これは、因果的一貫性の特殊なケースです。これにより、読み取りと書き込みは同じプロセス A で処理されます。このタイプの一貫性により、変更後に A が古いデータ オブジェクトを持つことはありません。

  • セッションの一貫性:

    この場合、プロセス A はセッションで DB にアクセスします。このセッションが存在する限り、システムは読み取りと書き込みの一貫性を保証します

  • 単調読み取りの一貫性:

    プロセスが読み取り後に特定のデータ オブジェクトを取得する場合、システムは、後続のすべての読み取りアクセスのプロセスが古いデータ オブジェクトを取得しないことを保証します。

  • 単調な書き込みの一貫性:

    この場合、DB への書き込みオプションはシリアル化されます。これにより、書き込みオプションの順序によって、どのプロセスが最初に書き込みを行うかが決まります。

    これで、理論上、一部または 1 つが NoSQL システムに実装されている一貫性オプションがいくつかあります。しかし、私が何か間違ったことを理解した場合は、私を修正してください。

私の質問は、CASSANDRA が提供する一貫性の種類はどれですか? そして、これらの一貫性はルール「R+W>N」それぞれ「R+W<=N」にどのように関連していますか?

whereby 
R=read replica count 
W=write replica count 
N=replication factor

I'd really appreciate a quick answer. Thank You!!!
4

1 に答える 1

2

Cassandra の一貫性レベルは、任意の読み取りクエリまたは書き込みクエリで設定できます。これにより、アプリケーション開発者は、応答時間とデータ精度の要件に応じて、クエリごとに一貫性を調整できます。Cassandra は、読み取りと書き込みの両方に対して多数の整合性レベルを提供します。

まずQUOROMについて理解する必要があります

QUORUM は、強力な一貫性を確保しながらも、ある程度の障害を許容する優れた中間点です。

定足数は次のように計算されます (整数に切り捨てられます)。

(複製係数 / 2) + 1

たとえば、レプリケーション係数が 3 の場合、クォーラムは 2 になります (1 つのレプリカのダウンを許容できます)。レプリケーション係数が 6 の場合、クォーラムは 4 です (2 つのレプリカのダウンを許容できます)。

あなたの質問については、以下に説明があります

(nodes_read + nodes_written) > replication_factor

R + W > N

たとえば、アプリケーションが書き込み操作と読み取り操作の両方に QUORUM 整合性レベルを使用していて、レプリケーション ファクター 3 を使用している場合、これにより、2 つのノードが常に書き込まれ、2 つのノードが常に読み取られることが保証されます。ノードの書き込みと読み取り (4) の組み合わせがレプリケーション係数 (3) よりも大きいため、強力な読み取り一貫性が保証されます。

Quorom と一貫性の詳細については、以下のリンクを参照してください。

http://www.datastax.com/docs/1.1/dml/data_consistency

于 2013-08-27T15:01:29.780 に答える