#JSON

YashanDB中的JSON类型是一种可变长度数据类型,通过解析符合标准JSON格式的字符串获得的二进制数据。

关于JSON格式的详细描述具体可以参考JSON文档

# 存储属性

类型 字节长度
JSON 行存:
1-64KB
列存:
1~32000B

定义格式:

类型 格式 规则
JSON JSON 变长二进制串,无需指定size

YashanDB的JSON类型存储方式与大对象类型的BLOB类型相同,存储包含行内存储和行外存储两种方式:

  • 当一行的JSON列的数据小于4000字节时,JSON数据将存储在行内。
  • 当超过4000字节时,JSON数据存入单独的大对象数据空间(可为其指定表空间),行内存储的则是指向JSON数据的指针。

Note

数据在存储时会产生一些内部元信息,上述4000字节也包括这部分元数据所占空间。

# 使用规则

# 使用限制

对于JSON类型数据的使用限制如下:

  • 不能作为分布式部署中的分布键
  • 不能作为分区键

JSON表示可变长度二进制数据,数据通过解析符合标准格式的字符串得到。可以解析为JSON对象的字符串长度上限为64KB。

解析成为JSON类型的数据长度与原有的字符串长度不一定相同,大部分情况下转换为JSON类型后的数据会比原字符串更大。

JSON类型支持与字符串的相互转换,但是不支持加减乘除、比较、拼接等运算。JSON的运算能力主要由具体的JSON相关的内置函数提供。

示例

--1.在sales用户下创建含有JSON字段的customer_intro表
CREATE TABLE customer_intro (id INT, intro JSON);

--2.通过字符串隐式转换,插入JSON数据
INSERT INTO customer_intro 
VALUES (1, '{"name":"Jack", "city":"Beijing","school":"TsingHua University"}');
COMMIT;

--3.通过JSON构造函数,插入JSON数据
INSERT INTO customer_intro
VALUES (2, JSON('{"name":"Bob", "city":"Shenzhen","school":"Shenzhen University"}'));
COMMIT;

--4.使用JSON_QUERY函数对JSON数据进行查询
SELECT JSON_QUERY(intro, '$.name' WITH WRAPPER) name FROM customer_intro;
NAME
----------------------------------------------------------------
["Jack"]
["Bob"]
pdf-btn 下载文档
copy-btn 复制链接