Cassandra 文件

版本

您正在檢視預發行版本的說明文件。

JSON 支援

Cassandra 2.2 為 SELECT <select-statement>INSERT <insert-statement> 陳述式引入了 JSON 支援。此支援並未從根本上改變 CQL API(例如,仍強制執行架構)。它只提供一種處理 JSON 文件的便利方式。

SELECT JSON

SELECT 陳述式中,JSON 關鍵字用於將每一列傳回為單一 JSON 編碼的對應。其餘 SELECT 陳述式行為相同。

結果對應鍵與一般結果集中的欄位名稱相符。例如,類似 SELECT JSON a, ttl(b) FROM …​ 的陳述式會產生一個包含鍵 "a""ttl(b)" 的對應。不過,有一個值得注意的例外:為了與 INSERT JSON 行為對稱,包含大寫字母的大小寫敏感欄位名稱會加上雙引號。例如,SELECT JSON myColumn FROM …​ 會產生一個包含轉義引號的對應鍵 "\"myColumn\""

對應值會是結果集值的 JSON 編碼表示(如下所述)。

INSERT JSON

INSERT 陳述式中,新的 JSON 關鍵字可用於啟用將 JSON 編碼的對應插入為單一列。JSON 對應的格式通常應與在同一表格上執行 SELECT JSON 陳述式所傳回的格式相符。特別是,大小寫敏感欄位名稱應加上雙引號。例如,要插入到兩個欄位名稱為「myKey」和「value」的表格中,您可以執行下列動作

INSERT INTO mytable JSON '{ "\"myKey\"": 0, "value": 0}';

預設情況下(或如果明確使用 DEFAULT NULL),從 JSON 對應中省略的欄位會設為 NULL,表示會移除該欄位的任何預先存在的數值(導致產生墓碑)。或者,如果在數值後使用 DEFAULT UNSET 指令,省略的欄位值會保持未設定,表示會保留這些欄位的預先存在數值。

Cassandra 資料類型的 JSON 編碼

Cassandra 會在可能的情況下以其原生 JSON 呈現方式呈現和接受資料類型。Cassandra 也會接受與 CQL 文字格式相符的字串呈現方式,適用於所有單一欄位類型。例如,浮點數、整數、UUID 和日期可以用 CQL 文字字串呈現。不過,複合類型(例如集合、組和使用者定義類型)必須以原生 JSON 集合(對應和清單)或集合的 JSON 編碼字串呈現方式呈現。

下表說明 Cassandra 會在 INSERT JSON 值(和 from_json() 參數)中接受的編碼,以及 Cassandra 在傳回 SELECT JSON 陳述式(和 from_json())資料時會使用的格式

類型 可接受的格式 傳回格式 備註

ascii

字串

字串

使用 JSON 的 \u 字元跳脫

bigint

整數、字串

整數

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

blob

字串

字串

字串應為 0x 後接偶數個十六進位數字

boolean

布林值、字串

boolean

字串必須是 "true" 或 "false"

date

字串

字串

格式為 YYYY-MM-DD 的日期,時區為 UTC

decimal

整數、浮點數、字串

浮點數

在用戶端側解碼器中可能會超過 32 或 64 位元 IEEE-754 浮點數精度

double

整數、浮點數、字串

浮點數

字串必須是有效的整數或浮點數

浮點數

整數、浮點數、字串

浮點數

字串必須是有效的整數或浮點數

inet

字串

字串

IPv4 或 IPv6 位址

int

整數、字串

整數

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

list

清單、字串

list

使用 JSON 的原生清單呈現方式

map

對應、字串

map

使用 JSON 的原生對應呈現方式

smallint

整數、字串

整數

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

set

清單、字串

list

使用 JSON 的原生清單呈現方式

text

字串

字串

使用 JSON 的 \u 字元跳脫

time

字串

字串

格式為 HH-MM-SS[.fffffffff] 的時間

timestamp

整數、字串

字串

時間戳記。字串常數允許輸入 時間戳記作為日期 <時間戳記>。會傳回格式為 YYYY-MM-DD HH:MM:SS.SSS 的日期戳記。

timeuuid

字串

字串

類型 1 UUID。請參閱 常數以取得 UUID 格式

tinyint

整數、字串

整數

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

元組

清單、字串

list

使用 JSON 的原生清單呈現方式

UDT

對應、字串

map

使用 JSON 的原生映射表示,其中欄位名稱為金鑰

uuid

字串

字串

請參閱 constant 以取得 UUID 格式

varchar

字串

字串

使用 JSON 的 \u 字元跳脫

varint

整數、字串

整數

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

from_json() 函數

from_json() 函數的使用方式可能與 INSERT JSON 類似,但適用於單一欄位值。它只能用於 INSERT 陳述式的 VALUES 子句,或用於 UPDATEDELETESELECT 陳述式中的其中一個欄位值。例如,它不能用於 SELECT 陳述式的選擇子句中。

to_json() 函數

to_json() 函數的使用方式可能與 SELECT JSON 類似,但適用於單一欄位值。它只能用於 SELECT 陳述式的選擇子句中。