CONSISTENCY
コーディネーター・ノードがCQLシェル・セッション中に非軽量トランザクションを適切に処理するにはレプリカ内のいくつのノードが応答する必要があるかを決定します。
整合性レベルは、コーディネーター・ノードが非軽量トランザクションを適切に処理するために応答する必要があるレプリカ内のノードの数を決定します。
IF EXISTS
またはIF NOT EXISTS
を含む要求を作成します。構文
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
Current consistency level is ONE.
デフォルトのCQLシェル・レベルはONE
です。
レベルの設定
レベルはCQLシェル・セッション中のトランザクションのデータ可用性とデータ精度との兼ね合いを決定します。また一部の設定が、ALLやSERIALなど、クラスター内で発生している他のトランザクションに大きな影響を及ぼす場合もあります。CQLシェル設定は、整合性レベルのグローバル設定を上書きします。
トランザクションをCQLシェルから開始するとき、コーディネーター・ノードは通常、cqlshを起動したノードになります。リモート・ホストに接続した場合は、リモート・ノードがコーディネーターになります。
レベル | レプリカ | 整合性 | 可用性 |
---|---|---|---|
ALL |
すべて | 最高 | 最低 |
EACH_QUORUM |
各データ・センター内のクォーラム。 読み取りはサポートされていません。 |
データ・センター間で統一 | |
QUORUM |
すべてのデータ・センターの全ノードのクォーラム。一定レベルの障害。 | ||
LOCAL_QUORUM |
コーディネーターと同じデータ・センター内のレプリカのクォーラム。データ・センター間の通信のレイテンシーを避けます。 | マルチ・データ・センターで低 | |
ONE |
スニッチにより決定される最も近いレプリカ。整合性の要件が厳しくないため、大半のユーザーのニーズを満たします。 | 最低(READ) | 最高(READ) |
TWO |
スニッチにより決定される最も近い2つのレプリカ。 | ||
THREE |
スニッチにより決定される最も近い3つのレプリカ。 | ||
LOCAL_ONE |
ローカル・データ・センターの最も近いレプリカからの応答を返します。セキュリティと品質を確保するために、オフライン・データ・センターで使用して、他のデータ・センター内のオンライン・ノードに自動的に接続されるのを防ぐことができます。 | ||
ANY | スニッチにより決定される最も近いレプリカ。 すべてのレプリカ・ノードが停止している場合、ヒンテッド・ハンドオフの後で書き込みが成功します。低レイテンシーを実現し、書き込みが失敗しないことを保証します。 |
最低(WRITE) | 最高(WRITE) |
SERIAL |
進行中のLWT(コミットされていない)を含む最新データの結果を返します。進行中のLWTを読み取りの一部としてコミットします。 書き込みはサポートされていません。 |
||
LOCAL_SERIAL |
SERIAL と同じですが、データ・センターに限定されます。 書き込みはサポートされていません。 |
例
CONSISTENCY
を設定して過半数のノードが応答するように強制します。
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
を使用しています。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="LOCAL_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での更新も失敗します。
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="LOCAL_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""