CQL(Cassandra Query Language)JSON支持

来源:互联网 发布:美国 网络战 话语权 编辑:程序博客网 时间:2024/06/04 18:26

Cassandra 2.2引入了对SELECT和INSERT语句的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集合(mao和list)或集合的JSON编码字符串表示形式表示。

下表描述了Cassandra在INSERT JSON值(和fromJson()参数)中接受的编码以及Cassandra在为SELECT JSON语句(和fromJson())返回数据时使用的格式:

类型接受格式返回格式注意点asciistringstring使用JSON的\ u字符转义bigintinteger, stringinteger字符串必须是有效的64位整数blobstringstring字符串应为0x,后跟偶数个十六进制数字booleanboolean, stringboolean字符串必须为“true”或“false”datestringstring日期格式为YYYY-MM-DD,时区UTCdecimalinteger, float, stringfloat在客户端解码器中可能超过32或64位IEEE-754浮点精度doubleinteger, float, stringfloat字符串必须是有效的整数或浮点型floatinteger, float, stringfloat字符串必须是有效的整数或浮点型inetstringstringIPv4或IPv6地址intinteger, stringinteger字符串必须是有效的32位整数listlist, stringlist使用JSON的本地列表表示mapmap, stringmap使用JSON的本地映射表示smallintinteger, stringinteger字符串必须是有效的16位整数setlist, stringlist使用JSON的本地列表表示textstringstring使用JSON的\ u字符转义timestringstring时间格式HH-MM-SS [.fffffffff]timestampinteger, stringstring时间戳。 字符串常量允许输入时间戳日期。返回格式为YYYY-MM-DDHH:MM:SS.SSS的日期戳。timeuuidstringstring类型1 UUID。 请参阅UUID格式的常量tinyintinteger, stringinteger字符串必须是有效的8位整数tuplelist, stringlist使用JSON的本地列表表示UDTmap, stringmap使用JSON的本地映射表示,其中字段名称为键uuidstringstring请参阅UUID格式的常量varcharstringstring使用JSON的\ u字符转义varintinteger, stringinteger可变长度; 可能在客户端解码器中溢出32或64位整数

fromJson()函数

fromJson()函数可以类似于INSERT JSON使用,但对于单个列值。它只能在INSERT语句的VALUES子句中使用,或者作为UPDATEDELETESELECT语句中的一个列值。例如,它不能在SELECT语句的selection子句中使用。

toJson() 函数

toJson()函数可以类似于SELECT JSON使用,但对于单个列值。它只能在SELECT语句的selection子句中使用。

0 0
原创粉丝点击