CONSISTENCY
コーディネーター・ノードがCQLシェル・セッション中に非軽量トランザクション(非LWT)を適切に処理するにはレプリカ内のいくつのノードが応答する必要があるかを決定します。
整合性レベルを設定して表示します。非軽量トランザクション(非LWT)を適切に処理するためにコーディネーター・ノードが応答する必要があるレプリカ・ノードの数は、整合性レベルによって決まります。
CQLシェルは、整合性レベルがSERIALまたはLOCAL_SERIALに設定されている場合、読み取り要求(SELECT文)のみをサポートします。詳細については、ドキュメントの「Data consistency」を参照してください。
構文
CONSISTENCY [ consistency_level ]
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ... </schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
- consistency_level
-
整合性レベル。有効なレベルの一覧とその説明については、該当するドキュメントを参照してください。詳しく説明されています。
現在の整合性レベルの表示
現在の整合性レベルを表示するには、CONSISTENCYコマンドをオプションなしで使用してください。
CONSISTENCY Current consistency level is ONE.
デフォルトの整合性レベルはONE
です。
整合性レベルの設定
整合性レベルによって、CQLシェル・セッション時のトランザクションのデータ可用性とデータの精度が決まります。設定によっては、ALLやSERIALなど、クラスター内で発生するその他のトランザクションに大きな影響を与える可能性があります。CQLシェル設定は、整合性レベルのグローバル設定をオーバーライドします。
トランザクションをCQLシェルから開始するとき、コーディネーター・ノードは通常、cqlshを起動したノードになります。リモート・ホストに接続した場合は、リモート・ノードがコーディネーターになります。
レベル | レプリカ | 整合性 | 可用性 |
---|---|---|---|
ALL |
すべて | 最高 | 最低 |
EACH_QUORUM |
各datacenterのクォーラム | データ・センター間で統一 | |
QUORUM |
すべてのデータ・センターの全ノードのクォーラム。一定レベルの障害である可能性があります。 | ||
LOCAL_QUORUM |
coordinator nodeと同じデータ・センター内のレプリカのクォーラム。データ・センター間の通信のレイテンシーを避けます。 | マルチ・データ・センターで低 | |
ONE |
スニッチにより決定される最も近いレプリカ。整合性の要件が厳しくないため、大半のユーザーのニーズを満たします。 | 最低(READ) | 最高(READ) |
TWO |
スニッチにより決定される最も近い2つのレプリカ。 | ||
THREE |
スニッチにより決定される最も近い3つのレプリカ。 | ||
LOCAL_ONE |
ローカル・データ・センターの最も近いレプリカからの応答を返します。セキュリティと品質を確保するために、オフライン・データ・センターで使用して、他のデータ・センター内のオンライン・ノードに自動的に接続されるのを防ぐことができます。 | ||
ANY |
スニッチにより決定される最も近いレプリカ。 すべてのレプリカ・ノードが停止している場合、ヒンテッド・ハンドオフの後で書き込みが成功します。低いレイテンシーをもたらし、書き込みが失敗しないことを保証します。 |
最低(WRITE) | 最高(WRITE) |
SERIAL |
進行中のLWT(コミットされていない)を含む最新データの結果を返します。進行中のLWTを読み取りの一部としてコミットします。 書き込みはサポートされていません。 |
||
LOCAL_SERIAL |
SERIAL と同じですが、データ・センターに限定されます。 書き込みはサポートされていません。 |
例
CONSISTENCY QUORUM
レベルを設定して過半数のノードが応答するように強制します。
CONSISTENCY QUORUM
LWT読み取り要求に対してレベルをSERIALに設定します。
CONSISTENCY SERIAL
Consistency level set to SERIAL.
SELECT * FROM cycling.race_winners;
@ Row 1
---------------+--------------------------------------------------
race_name | National Championships South Africa WJ-ITT (CN)
race_position | 1
cyclist_name | {firstname: 'Frances', lastname: 'DU TOUT'}
@ Row 2
---------------+--------------------------------------------------
race_name | National Championships South Africa WJ-ITT (CN)
race_position | 2
cyclist_name | {firstname: 'Lynette', lastname: 'BENSON'}
@ Row 3
---------------+--------------------------------------------------
race_name | National Championships South Africa WJ-ITT (CN)
race_position | 3
cyclist_name | {firstname: 'Anja', lastname: 'GERBER'}
@ Row 4
---------------+--------------------------------------------------
race_name | National Championships South Africa WJ-ITT (CN)
race_position | 4
cyclist_name | {firstname: 'Ame', lastname: 'VENTER'}
@ Row 5
---------------+--------------------------------------------------
race_name | National Championships South Africa WJ-ITT (CN)
race_position | 5
cyclist_name | {firstname: 'Danielle', lastname: 'VAN NIEKERK'}
(5 rows)
expand ON
を使用しています。LWTは、IF EXISTS
またはIF NOT EXISTS
文を含む書き込み要求です。LWTの整合性レベルを設定するには、「SERIAL CONSISTENCY」を参照してください。LWTを使用する場合は、CONSISTENCYとSERIAL CONSISTENCYレベルの両方が設定されている必要があります。CONSISTENCYをSERIALまたはLOCAL_SERIALに設定することはできません。これらを設定できるのはSERIAL CONSISTENCYだけです。
次の例は、LWTの障害シナリオを示しています。CONSISTENCY SERIALでのLWTの挿入に失敗します。
CONSISTENCY SERIAL INSERT INTO cycling.race_winners ( race_name, race_position, cyclist_name ) VALUES ( 'National Championships South Africa WJ-ITT (CN)', 7, { firstname: 'Joe', lastname: 'Anderson' } ) IF NOT EXISTS;
InvalidRequest: Error from server: code=2200 [Invalid query]
message="SERIAL is not supported as conditional update commit
consistency. Use ANY if you mean "make sure it is accepted but I don't
care how many replicas commit it for non-SERIAL reads""
CONSISTENCY SERIALでのLWTの更新も失敗します。
CONSISTENCY SERIAL UPDATE cycling.race_winners SET cyclist_name = { firstname: 'JOHN', lastname: 'DOE' } WHERE race_name='National Championships South Africa WJ-ITT (CN)' AND race_position = 6 IF EXISTS;
InvalidRequest: Error from server: code=2200 [Invalid query]
message="SERIAL is not supported as conditional update commit
consistency. Use ANY if you mean "make sure it is accepted but I don't
care how many replicas commit it for non-SERIAL reads""
IF句を省略すると、エラーが生成されます。また、CONSISTENCY LOCAL_SERIALを使用すると、その整合性レベルが無効な要求になるため、エラーが生成されます。