Amazon Keyspaces の Cassandra クエリ言語 (CQL) 要素 - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

ASCII 文字列を表します。

text

UTF-8 エンコードされた文字列を表します。

varchar

UTF-8 エンコードされた文字列を表します (varchar は のエイリアスですtext)。

数値型

データ型 説明

bigint

64 ビットの符号付き長整数を表します。

counter

64 ビットの符号付き整数カウンタを表します。詳細については、「カウンタ」を参照してください。

decimal

可変精度の 10 進数を表します。

double

64 ビット 754 IEEE 浮動小数点を表します。

float

32 ビット 754 IEEE 浮動小数点を表します。

int

32 ビットの符号付き整数を表します。

varint

任意精度の整数を表します。

カウンタ

counter 列に 64 ビットの符号付き整数が含まれます。カウンタ値は、UPDATE ステートメントを用いて増加または減少されます。直接設定することはできません。これにより、カウントの追跡に役立つ counter 列が作成されます。例えば、カウンタを使用して、ログファイル内のエントリ数や、ソーシャルネットワークで投稿が閲覧された回数を追跡することができます。counter 列には以下の制限があります。

  • counter 型の列をテーブルの primary key の一部にすることはできません。

  • counter 型の列が 1 つ以上含まれているテーブルでは、そのテーブルのすべての列は counter 型の列でなければなりません。

カウンタの更新が失敗した場合 (タイムアウトや Amazon Keyspaces との接続の喪失など)、カウンタ値の更新の有無がクライアントに認識されません。更新が再試行された場合、カウンタ値への更新が 2 回目に適用されることがあります。

BLOB 型

データ型 説明

blob

任意のバイトを表します。

ブール型

データ型 説明

boolean

true または false を表します。

時間関連の型

データ型 説明

timestamp

エポック (1970 年 1 月 1 日 00:00:00 GMT) からの日時をミリ秒単位で表す 64 ビット符号付き整数。

timeuuid

バージョン 1 UUIDを表します。

コレクション型

データ型 説明

list

順序が設定された一連のリテラル要素を表します。

map

順序が設定されていない一連のキーバリューペアを表します。

set

順序を設定した一連のリテラル要素 (1 つ以上) を表します。

コレクション型でコレクション列を宣言し、その後に山括弧で囲んだ別のデータ型 (たとえば、TEXT または INT) を使用します。次の例のようにTEXTSET で列を作成することも、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の の一部にすることができます。

フリーズコレクションはネストできます。たとえば、次の例のように、MAPFROZEN キーワードを使用している場合、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 キーワードを使用する必要はありません。これは、タプルは常にフリーズされており、要素を個別に更新することはできないからです。

その他の型

データ型 説明

inet

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 ステートメントともにデータが返される場合に使用されるデータ型について説明します。

floatintUUIDdate などの単一フィールドデータ型の場合は、データを string として挿入することもできます。tuple、、 などの複合データ型mapとコレクションの場合list、データをエンコードされた として、JSONまたはエンコードされた として挿入することもできますJSON string

JSON データ型 INSERT JSON ステートメントで許容されたデータ型 SELECT JSON ステートメントで返却されたデータ型 メモ

ascii

string string

JSON 文字エスケープ を使用します\u

bigint

integer, string integer

文字列は有効な 64 ビット整数でなければなりません。

blob

string string

文字列の最初は 0x で、すぐ後に偶数の 16 進数が続きます。

boolean

boolean, string boolean

文字列は true または false のいずれかでなければなりません。

date

string string

形式 の日付YYYY-MM-DD、タイムゾーン UTC。

decimal

integer, float, string float

クライアント側のデコーダーでは、32 ビットまたは 64 ビットの IEEE-754 浮動小数点精度を超える可能性があります。

double

integer, float, string float

文字列は有効な整数または浮動小数点でなければなりません。

float

integer, float, string float

文字列は有効な整数または浮動小数点でなければなりません。

inet

string string

IPv4 または IPv6 アドレス。

int

integer, string integer

文字列は有効な 32 ビット整数でなければなりません。

list

list, string list

ネイティブJSONリスト表現を使用します。

map

map, string map

ネイティブJSONマップ表現を使用します。

smallint

integer, string integer

文字列は有効な 16 ビット整数でなければなりません。

set

list, string list

ネイティブJSONリスト表現を使用します。

text

string string

JSON 文字エスケープ を使用します\u

time

string string

HH-MM-SS[.fffffffff] 形式の時刻。

timestamp

integer, string string

タイムスタンプ。文字列定数を使用するとタイムスタンプを日付として保存できます。YYYY-MM-DD HH:MM:SS.SSS 形式の日付スタンプが返されます。

timeuuid

string string

タイプ 1 UUID。UUID 形式constantsについては、「」を参照してください。

tinyint

integer, string integer

文字列は有効な 8 ビット整数でなければなりません。

tuple

list, string list

ネイティブJSONリスト表現を使用します。

uuid

string string

UUID 形式constantsについては、「」を参照してください。

varchar

string string

JSON 文字エスケープ を使用します\u

varint

integer, string integer

可変長。クライアント側のデコーダーで 32 ビットまたは 64 ビットの整数をオーバーフローする可能性があります。