2017-08-05 7 views
3

私はカサンドラを初めて使う人です。 のは、私は3つのノードを持っているとレプリケーション因子(RF)は鍵空間の3カサンドラ一貫性レベルとレプリケーションファクター

  1. は私が安全に2/3のノードがダウンしている場合、私はまだにかかわらず、クエリの完全なデータを取得することを想定することができていると仮定しましょう一貫性レベル?
  2. 2/3ノードを一貫性のあるレベルにしておくと、クエリの完全なデータが保証されますか?

答えて

2

これは、書き込み要求と読み取り要求にどのような整合性レベルを使用したかによって異なります。私たちのケアR + Wで

For strong consistency: R + W > N  
For eventual consistency: R + W =< N, where  
    - R is the consistency level of read operations  
    - W is the consistency level of write operations  
    - N is the number of replicas 

< = 3
今、私たちは読み取り操作のための定足数と書き込みのための1つを使用している、と言うことができます。

quorum = (sum_of_replication_factors/2) + 1 = (3/2) + 1 = 2  
    read = 1 
    R + W <=3 is satisfied in our case. 

必要に応じて一貫性レベルを設定できますが、待ち時間を念頭に置いてください。
は、あなたが疑問に一つだけのノードは、その後、あなたが最終的な一貫性を持っていない使用されていた場合よりconsistency-handingconsistency-configuration

は、戻って来ることについて読むことができます。読み取りと書き込みの両方にONEを使用できますが、目的を無効にします。ノードが再び稼働すると仮定して、私は書き込みのためにLOCAL_QUORUMを、読み取りのためには2を使用したいと思います。

+0

したがって、書き込み整合性がONEのテーブル(RFは3)に書き込むと、Cassandraは自分のデータを複製するかどうかを確認しますか? –

+0

はい、ノードが時間通りになっているとします。このコンセプト[hinted-handoff](http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_about_hh_c.html)を読む必要があります。いくつかのノードがダウンしています。 – Bigby

0

あなたのケースでは、3つのノードがあり、複製係数も3であるため、各ノードにはすべてのデータが含まれます。したがって、1/3ノードだけが稼動していても、完全なデータをフェッチすることができます。しかし、データの一貫性(つまり、最新のデータを取得するかどうか)は、この場合、使用される書き込みの一貫性に依存します(私は1/3のノードしか操作できないため、読み取りの一貫性は1)。一貫性のあるデータを得るために、書込み一貫性は3でなければなりません(強い一貫性のために条件を使用してR + W> N)。 1/3ノードだけが動作していても、読み取り中に一貫したデータが得られます。