CQL(Cassandra Query Language)JSON支持

翻译 2017年01月03日 16:11:22

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())返回数据时使用的格式:

类型 接受格式 返回格式 注意点
ascii string string 使用JSON的\ u字符转义
bigint integer, string integer 字符串必须是有效的64位整数
blob string string 字符串应为0x,后跟偶数个十六进制数字
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-DDHH:MM:SS.SSS的日期戳。
timeuuid string string 类型1 UUID。 请参阅UUID格式的常量
tinyint integer, string integer 字符串必须是有效的8位整数
tuple list, string list 使用JSON的本地列表表示
UDT map, string map 使用JSON的本地映射表示,其中字段名称为键
uuid string string 请参阅UUID格式的常量
varchar string string 使用JSON的\ u字符转义
varint integer, string integer 可变长度; 可能在客户端解码器中溢出32或64位整数

fromJson()函数

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

toJson() 函数

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

相关文章推荐

Cassandra学习笔记-基本特性与API操作

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。 主要特性:分布式、基于column的结构化、高伸展性 Ca...

CQL(Cassandra Query Language)数据操作

本节介绍CQL支持插入,更新,删除和查询数据的语句。 查询(SELECT) 从数据查询数据是使用SELECT语句完成的: select_statement ::= SELECT [ JSON | ...

cassandra导出和导入数据

cassandra像其他RDBMS一样提供了export/import工具: cqlsh命令COPY TO/FROM 注意这不是cql命令。使用这组命令可以在cassandra与其他RDBMS...

Cassandra在CQL语言层面支持多种数据类型[12]。

Cassandra在CQL语言层面支持多种数据类型[12]。 CQL类型 对应Java类型 描述 ascii String ascii字符串 ...

nodejs读写json文件

nodejs 读json文件var fs=reauire('fs'); var file="d:\\0.json"; var result=JSON.parse(fs.readFileSync( fi...
  • yayali98
  • yayali98
  • 2015年10月14日 14:30
  • 14671

perl index和rindex的用法

perl index和rindex的用法 perl中,如果我们要查找一个字符子串在字符串中的位置,perl给我们提供了两个函数,一个为index,另外一个rindex。从两个...

Solr特殊字符转义处理

在Solr中,下列字符有特殊含义,需转义处理,否则查询下列字符会报查询错误。 + – && || ! ( ) { } [ ] ^ ” ~ * ? : \ 代码如下: public st...

CQL(Cassandra Query Language)数据定义

CQL将数据存储在表中,这些表的模式定义了表中所述数据的布局,这些表被分组在键空间中。 键空间定义了一些适用于其包含的所有表的选项,其中最显着的是键空间使用的复制策略。 通常鼓励应用程序使用一个键空间...

CQL(Cassandra Query Language)安全性

数据库角色(ROLE) CQL使用数据库角色来表示用户和用户组。 角色定义语法为: role_name ::= identifier | string 创建角色(ROLE) 创建角色使用CRE...

CQL(Cassandra Query Language)物化视图

物化视图名称由以下语法定义: view_name ::= re('[a-zA-Z_0-9]+') 创建视图 您可以使用CREATE MATERIALIZED VIEW语句在表上创建物化视图: c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CQL(Cassandra Query Language)JSON支持
举报原因:
原因补充:

(最多只允许输入30个字)