翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Keyspaces の Cassandra クエリ言語 (CQL) 要素
識別子、定数、用語、データ型など、Amazon Keyspaces でサポートされている Cassandra クエリ言語 (CQL) 要素について説明します。
識別子
識別子 (または名前) は、テーブル、列、およびその他のオブジェクトの識別に使用されます。識別子は、引用符で囲んだものも、囲んでいないものも有効です。以下が適用されます。
identifier ::= unquoted_identifier | quoted_identifier unquoted_identifier ::= re('[a-zA-Z][a-zA-Z0-9_]*') quoted_identifier ::= '"' (any character where " can appear if doubled)+ '"'
定数
以下の定数が定義されます。
constant ::= string | integer | float | boolean | uuid | blob | NULL string ::= '\'' (any character where ' can appear if doubled)+ '\'' '$$' (any character other than '$$') '$$' integer ::= re('-?[0-9]+') float ::= re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY boolean ::= TRUE | FALSE uuid ::= hex{8}-hex{4}-hex{4}-hex{4}-hex{12} hex ::= re("[0-9a-fA-F]") blob ::= '0' ('x' | 'X') hex+
用語
用語は、サポートされている値の種類を表します。用語は以下により定義されます。
term ::= constant | literal | function_call | arithmetic_operation | type_hint | bind_marker literal ::= collection_literal | tuple_literal function_call ::= identifier '(' [ term (',' term)* ] ')' arithmetic_operation ::= '-' term | term ('+' | '-' | '*' | '/' | '%') term
データ型
Amazon Keyspaces では、次のデータ型がサポートされています。
文字列型
データ型 | 説明 |
---|---|
|
ASCII 文字列を表します。 |
|
UTF-8 エンコードされた文字列を表します。 |
|
UTF-8 エンコードされた文字列を表します ( |
数値型
データ型 | 説明 |
---|---|
|
64 ビットの符号付き長整数を表します。 |
|
64 ビットの符号付き整数カウンタを表します。詳細については、「カウンタ」を参照してください。 |
|
可変精度の 10 進数を表します。 |
|
64 ビット 754 IEEE 浮動小数点を表します。 |
|
32 ビット 754 IEEE 浮動小数点を表します。 |
|
32 ビットの符号付き整数を表します。 |
|
任意精度の整数を表します。 |
カウンタ
counter
列に 64 ビットの符号付き整数が含まれます。カウンタ値は、UPDATE ステートメントを用いて増加または減少されます。直接設定することはできません。これにより、カウントの追跡に役立つ counter
列が作成されます。例えば、カウンタを使用して、ログファイル内のエントリ数や、ソーシャルネットワークで投稿が閲覧された回数を追跡することができます。counter
列には以下の制限があります。
-
counter
型の列をテーブルのprimary key
の一部にすることはできません。 -
counter
型の列が 1 つ以上含まれているテーブルでは、そのテーブルのすべての列はcounter
型の列でなければなりません。
カウンタの更新が失敗した場合 (タイムアウトや Amazon Keyspaces との接続の喪失など)、カウンタ値の更新の有無がクライアントに認識されません。更新が再試行された場合、カウンタ値への更新が 2 回目に適用されることがあります。
BLOB 型
データ型 | 説明 |
---|---|
|
任意のバイトを表します。 |
ブール型
データ型 | 説明 |
---|---|
|
true または false を表します。 |
時間関連の型
データ型 | 説明 |
---|---|
|
エポック (1970 年 1 月 1 日 00:00:00 GMT) からの日時をミリ秒単位で表す 64 ビット符号付き整数。 |
|
バージョン 1 UUID |
コレクション型
データ型 | 説明 |
---|---|
|
順序が設定された一連のリテラル要素を表します。 |
|
順序が設定されていない一連のキーバリューペアを表します。 |
|
順序を設定した一連のリテラル要素 (1 つ以上) を表します。 |
コレクション型でコレクション列を宣言し、その後に山括弧で囲んだ別のデータ型 (たとえば、TEXT
または INT
) を使用します。次の例のようにTEXT
の SET
で列を作成することも、TEXT
および INT
のキーと値のペアの MAP
を作成することもできます。
SET <TEXT> MAP <TEXT, INT>
非フリーズコレクションでは、個々のコレクション要素を更新できます。クライアント側のタイムスタンプと Time to Live (TTL) 設定は、個々の要素に対して保存されます。
FROZEN
コレクション型にキーワードを使用すると、コレクションの値は 1 つの不変の値にシリアル化され、Amazon Keyspaces ではそれらを BLOB
のように扱われます。これはフリーズコレクションです。INSERT
または UPDATE
ステートメントはフリーズされたコレクション全体を上書きします。フリーズコレクション内の個々の要素は更新できません。
クライアント側のタイムスタンプと Time to Live (TTL) 設定は、個々の要素ではなく、フリーズされたコレクション全体に適用されます。Frozen
コレクションの列は、テーブルPRIMARY KEY
の の一部にすることができます。
フリーズコレクションはネストできます。たとえば、次の例のように、MAP
が FROZEN
キーワードを使用している場合、SET
内の MAP
を定義できます。
SET <FROZEN> <MAP <TEXT, INT>>>
Amazon Keyspaces は、デフォルトで最大5レベルのフリーズコレクションのネストをサポートしています。詳細については、「Amazon Keyspaces サービスクォータ」を参照してください。Apache Cassandra との機能の違いの詳細については、「FROZEN collections」を参照してください。CQL 構文の詳細については、CREATE TABLE「」および「」を参照してくださいALTER TABLE。
タプル型
tuple
データ型は、リテラル要素の有境グループを表します。user defined
type
の代わりにタプルを使用できます。タプルには FROZEN
キーワードを使用する必要はありません。これは、タプルは常にフリーズされており、要素を個別に更新することはできないからです。
その他の型
データ型 | 説明 |
---|---|
|
IPv4 または IPv6形式の IP アドレスを表す文字列。 |
静的
クラスター列を含む Amazon Keyspaces テーブルでは、STATIC
キーワードを使用して任意のタイプの静的列を作成できます。
以下のステートメントは、この例です。
my_column INT STATIC
静的列の操作の詳細については、「」を参照してくださいAmazon Keyspaces の静的列の容量消費量を推定する。
JSON Amazon Keyspaces データ型のエンコーディング
Amazon Keyspaces は、Apache Cassandra と同じJSONデータ型マッピングを提供します。次の表では、INSERT JSON
ステートメントで Amazon Keyspaces に許容されるデータ型と、Amazon Keyspaces により SELECT JSON
ステートメントともにデータが返される場合に使用されるデータ型について説明します。
float
、int
、UUID
、date
などの単一フィールドデータ型の場合は、データを string
として挿入することもできます。tuple
、、 などの複合データ型map
とコレクションの場合list
、データをエンコードされた として、JSONまたはエンコードされた として挿入することもできますJSON string
。
JSON データ型 | INSERT JSON ステートメントで許容されたデータ型 |
SELECT JSON ステートメントで返却されたデータ型 |
メモ |
---|---|---|---|
|
string |
string |
JSON 文字エスケープ を使用します |
|
integer, string |
integer |
文字列は有効な 64 ビット整数でなければなりません。 |
|
string |
string |
文字列の最初は |
|
boolean, string |
boolean |
文字列は |
|
string |
string |
形式 の日付 |
|
integer, float, string |
float |
クライアント側のデコーダーでは、32 ビットまたは 64 ビットの IEEE-754 浮動小数点精度を超える可能性があります。 |
|
integer, float, string |
float |
文字列は有効な整数または浮動小数点でなければなりません。 |
|
integer, float, string |
float |
文字列は有効な整数または浮動小数点でなければなりません。 |
|
string |
string |
IPv4 または IPv6 アドレス。 |
|
integer, string |
integer |
文字列は有効な 32 ビット整数でなければなりません。 |
|
list, string |
list |
ネイティブJSONリスト表現を使用します。 |
|
map, string |
map |
ネイティブJSONマップ表現を使用します。 |
|
integer, string |
integer |
文字列は有効な 16 ビット整数でなければなりません。 |
|
list, string |
list |
ネイティブJSONリスト表現を使用します。 |
|
string |
string |
JSON 文字エスケープ を使用します |
|
string |
string |
|
|
integer, string |
string |
タイムスタンプ。文字列定数を使用するとタイムスタンプを日付として保存できます。 |
|
string |
string |
タイプ 1 UUID。UUID 形式constantsについては、「」を参照してください。 |
|
integer, string |
integer |
文字列は有効な 8 ビット整数でなければなりません。 |
|
list, string |
list |
ネイティブJSONリスト表現を使用します。 |
|
string |
string |
UUID 形式constantsについては、「」を参照してください。 |
|
string |
string |
JSON 文字エスケープ を使用します |
|
integer, string |
integer |
可変長。クライアント側のデコーダーで 32 ビットまたは 64 ビットの整数をオーバーフローする可能性があります。 |