本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 位元帶正負號的整數計數器。如需詳細資訊,請參閱計數器。 |
|
代表變數精確度小數位數。 |
|
代表 64 位元 IEEE 754 浮點。 |
|
代表 32 位元 IEEE 754 浮點。 |
|
代表 32 位元簽章整數。 |
|
代表任意精確度的整數。 |
計數器
資料counter
欄包含 64 位元的帶正負號整數。計數器值會使用 UPDATE陳述式遞增或遞減,且無法直接設定。這可讓counter
資料欄有助於追蹤計數。例如,您可以使用計數器來追蹤日誌檔案中的項目數量,或社交網路上文章的檢視次數。下列限制適用於資料counter
欄:
-
類型的資料欄
counter
不能是資料表primary key
的一部分。 -
在包含一或多個資料欄類型 的資料表中
counter
,該資料表中的所有資料欄都必須是類型counter
。
如果計數器更新失敗 (例如,由於逾時或失去與 Amazon Keyspaces 的連線),用戶端不知道計數器值是否已更新。如果重試更新,則對計數器值的更新可能會再次套用。
Blob 類型
資料類型 | 描述 |
---|---|
|
代表任意位元組。 |
布林值 (Boolean) 類型
資料類型 | 描述 |
---|---|
|
代表 true 或 false 。 |
時間相關類型
資料類型 | 描述 |
---|---|
|
格式為 的字串<yyyy>-<mm>-<dd> 。 |
|
64 位元帶正負號的整數,代表自 epoch 起的日期和時間 (1970 年 1 月 1 日 00:00:00GMT),以毫秒為單位。 |
|
代表版本 1。 UUID |
集合類型
資料類型 | 描述 |
---|---|
|
代表文字元素的排序集合。 |
|
代表鍵/值對的未排序集合。 |
|
代表一或多個常值元素的未排序集合。 |
您可以使用集合類型,後面接著其他資料類型 (例如, TEXT
或 INT
),在角括號中宣告集合欄。您可以建立具有 SET
的 資料欄TEXT
,也可以建立 MAP
TEXT
和 INT
鍵值對的 ,如下列範例所示。
SET <TEXT> MAP <TEXT, INT>
非凍結集合可讓您更新每個個別集合元素。用戶端時間戳記和存留時間 (TTL) 設定會針對個別元素儲存。
當您在集合類型上使用FROZEN
關鍵字時,集合的值會序列化為單一不可變的值,而 Amazon Keyspaces 會將它們視為 BLOB
。這是凍結集合。INSERT
或 UPDATE
陳述式會覆寫整個凍結集合。您無法更新凍結集合中的個別元素。
用戶端時間戳記和存留時間 (TTL) 設定適用於整個凍結集合,而不是個別元素。Frozen
集合資料欄可以是資料表PRIMARY KEY
的一部分。
您可以巢狀凍結集合。例如,SET
如果 MAP
使用FROZEN
關鍵字,您可以在 MAP
中定義 ,如下列範例所示。
SET <FROZEN> <MAP <TEXT, INT>>>
Amazon Keyspaces 預設支援最多 8 個層級的凍結集合巢狀化。如需詳細資訊,請參閱Amazon Keyspaces 服務配額。如需 Apache Cassandra 功能差異的詳細資訊,請參閱 FROZEN 集合。如需語法的詳細資訊,請參閱 CQL CREATE TABLE和 ALTER TABLE。
雙組類型
tuple
資料類型代表常值元素的邊界群組。您可以使用元組做為 的替代方案user defined type
。您不需要使用元組FROZEN
關鍵字。這是因為元組一律凍結,您無法個別更新元素。
其他類型
資料類型 | 描述 |
---|---|
|
代表 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
陳述式傳回資料時使用的資料類型。
對於 float
、UUID
、 int
和 等單一欄位資料類型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 |
輸入 1UUID。如需 UUID 格式constants,請參閱 。 |
|
integer, string |
integer |
字串必須是有效的 8 位元整數。 |
|
list, string |
list |
使用原生JSON清單表示法。 |
|
map, string |
map |
使用原生JSON地圖表示法,將欄位名稱做為索引鍵。 |
|
string |
string |
如需 UUID 格式constants,請參閱 。 |
|
string |
string |
使用JSON字元逸出 |
|
integer, string |
integer |
變數長度; 可能會溢位用戶端解碼器中的 32 位元或 64 位元整數。 |