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

代表變數精確度小數位數。

double

代表 64 位元 IEEE 754 浮點。

float

代表 32 位元 IEEE 754 浮點。

int

代表 32 位元簽章整數。

varint

代表任意精確度的整數。

計數器

資料counter欄包含 64 位元的帶正負號整數。計數器值會使用 UPDATE陳述式遞增或遞減,且無法直接設定。這可讓counter資料欄有助於追蹤計數。例如,您可以使用計數器來追蹤日誌檔案中的項目數量,或社交網路上文章的檢視次數。下列限制適用於資料counter欄:

  • 類型的資料欄counter不能是資料表primary key的一部分。

  • 在包含一或多個資料欄類型 的資料表中counter,該資料表中的所有資料欄都必須是類型 counter

如果計數器更新失敗 (例如,由於逾時或失去與 Amazon Keyspaces 的連線),用戶端不知道計數器值是否已更新。如果重試更新,則對計數器值的更新可能會再次套用。

Blob 類型

資料類型 描述

blob

代表任意位元組。

布林值 (Boolean) 類型

資料類型 描述

boolean

代表 truefalse

時間相關類型

資料類型 描述

date

格式為 的字串<yyyy>-<mm>-<dd>

timestamp

64 位元帶正負號的整數,代表自 epoch 起的日期和時間 (1970 年 1 月 1 日 00:00:00GMT),以毫秒為單位。

timeuuid

代表版本 1。 UUID

集合類型

資料類型 描述

list

代表文字元素的排序集合。

map

代表鍵/值對的未排序集合。

set

代表一或多個常值元素的未排序集合。

您可以使用集合類型,後面接著其他資料類型 (例如, TEXTINT),在角括號中宣告集合欄。您可以建立具有 SET的 資料欄TEXT,也可以建立 MAP TEXTINT鍵值對的 ,如下列範例所示。

SET <TEXT> MAP <TEXT, INT>

非凍結集合可讓您更新每個個別集合元素。用戶端時間戳記和存留時間 (TTL) 設定會針對個別元素儲存。

當您在集合類型上使用FROZEN關鍵字時,集合的值會序列化為單一不可變的值,而 Amazon Keyspaces 會將它們視為 BLOB。這是凍結集合。INSERTUPDATE陳述式會覆寫整個凍結集合。您無法更新凍結集合中的個別元素。

用戶端時間戳記和存留時間 (TTL) 設定適用於整個凍結集合,而不是個別元素。Frozen集合資料欄可以是資料表PRIMARY KEY的一部分。

您可以巢狀凍結集合。例如,SET如果 MAP 使用FROZEN關鍵字,您可以在 MAP中定義 ,如下列範例所示。

SET <FROZEN> <MAP <TEXT, INT>>>

Amazon Keyspaces 預設支援最多 8 個層級的凍結集合巢狀化。如需詳細資訊,請參閱Amazon Keyspaces 服務配額。如需 Apache Cassandra 功能差異的詳細資訊,請參閱 FROZEN 集合。如需語法的詳細資訊,請參閱 CQL CREATE TABLEALTER TABLE

雙組類型

tuple 資料類型代表常值元素的邊界群組。您可以使用元組做為 的替代方案user defined type。您不需要使用元組FROZEN關鍵字。這是因為元組一律凍結,您無法個別更新元素。

其他類型

資料類型 描述

inet

代表 IP 地址的字串,採用 IPv4或 IPv6 格式。

靜態

在具有叢集資料欄的 Amazon Keyspaces 資料表中,您可以使用 STATIC關鍵字來建立任何類型的靜態資料欄。

下列陳述式是此範例。

my_column INT STATIC

如需使用靜態資料欄的詳細資訊,請參閱 Amazon Keyspaces 中靜態資料欄的預估容量耗用

使用者定義的類型 (UDTs)

Amazon Keyspaces 支援使用者定義的類型 (UDTs)。您可以使用任何有效的 Amazon Keyspaces 資料類型來建立 UDT,包括集合和其他現有的 UDTs。您可以在 金鑰空間UDTs中建立 ,並使用它們來定義金鑰空間中任何資料表中的資料欄。

如需 CQL 語法的詳細資訊,請參閱 使用者定義的類型 (UDTs)。如需使用 UDTs 的詳細資訊,請參閱Amazon Keyspaces 中的使用者定義類型 (UDTs)

若要檢閱每個金鑰空間UDTs支援多少個金鑰空間、支援的巢狀層級,以及與 相關的其他預設值和配額UDTs,請參閱 Amazon Keyspaces 中使用者定義類型 (UDTs) 的配額和預設值

JSON Amazon Keyspaces 資料類型的編碼

Amazon Keyspaces 提供與 Apache Cassandra 相同的JSON資料類型映射。下表說明 Amazon Keyspaces 在INSERT JSON陳述式中接受的資料類型,以及 Amazon Keyspaces 使用SELECT JSON陳述式傳回資料時使用的資料類型。

對於 floatUUIDint和 等單一欄位資料類型date,您也可以插入資料做為 string。對於複合資料類型和集合,例如 tuplemaplist,您也可以將資料插入為 JSON或 編碼的 JSON string

JSON 資料類型 INSERT JSON 陳述式中接受的資料類型 SELECT JSON 陳述式中傳回的資料類型 備註

ascii

string string

使用JSON字元逸出 \u

bigint

integer, string integer

字串必須是有效的 64 位元整數。

blob

string string

字串應以 開頭,0x後面接著偶數的十六進位數字。

boolean

boolean, string boolean

字串必須是 truefalse

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

輸入 1UUID。如需 UUID 格式constants,請參閱 。

tinyint

integer, string integer

字串必須是有效的 8 位元整數。

tuple

list, string list

使用原生JSON清單表示法。

UDT

map, string map

使用原生JSON地圖表示法,將欄位名稱做為索引鍵。

uuid

string string

如需 UUID 格式constants,請參閱 。

varchar

string string

使用JSON字元逸出 \u

varint

integer, string integer

變數長度; 可能會溢位用戶端解碼器中的 32 位元或 64 位元整數。