GBase 8s内置不透明数据类型BSON和JSON
BSON和JSON数据类型是GBase 8s内置的不透明类型(opaque data type),可以在本地和分布式查询以及其它DML操作中访问和操作它们。如果您计划通过wire listener查询BSON或者JSON数据,则必须通过wire listener创建数据库对象,例如集合和索引。无论您通过wire listener还是SQL语句创建的数据库对象,均可以通过SQL语句查询JSON或者BSON数据。
JSON和BSON文档包含一个或者多个类似于列的字段和字段值。一个JSON或者BSON列可以包含多个文档,每个文档类似于关系数据库中的一行。JSON和BSON文档中的数据可能是数字、字符串或者布尔氏值。文档可以嵌套在文档中。
数据库服务器验证您插入到数据库中的JSON或都BSON文档。JSON数据类型包含纯文件。BSON数据类型是JSON数据类型的二进制格式。您可以创建JSON或者BSON数据类型列,但是BSON数据类型更适合在数据库中存储结构化数据。数据库服务器可以操作BSON列中的数据,但只能插入和显示JSON列中的数据。
800字节以内的JSON或者BSON文档将存储于行内,大于800字节的文档将存储于sbspace空间内。一个JSON或者BSON文档的最大大小是32KB。JSON或者BSON的列数量仅受操作系统的限制。
支持BSON和JSON数据类型的SQL操作
下表列出了DDL对BSON和JSON数据类型操作支持
操作 | 支持BSON数据类型 | 支持JSON数据类型 |
---|---|---|
创建具有该数据类型的一个或者多个列的表或者临时表 | Yes | Yes |
修改表增加该数据类型的列 | Yes | Yes |
删除该数据类型的列 | Yes | Yes |
在该数据类型的列上创建B树索引 | No | No |
在该数据类型的列上创建函数索引 | Yes | No |
在该数据类型的列上创建BTS全文索引 | Yes | Yes |
Truncate具有该数据类型的列的表 | Yes | Yes |
根据该数据类型的值进行表分片 | Yes | Yes |
根据该数据类型的列和值创建视图 | Yes | No |
压缩该数据类型列的数据 | Yes | Yes |
数据类型转换 | Yes | Yes |
在该数据类型的字段上创建触发器 | Yes | No |
在TimeSeries行数据列中包含该字段类型 | Yes | No |
下表列出了DML对BSON和JSON数据类型操作支持
操作 | 支持BSON数据类型 | 支持JSON数据类型 |
---|---|---|
数据类型转换 | Yes | Yes |
使用游标读取数据 | Yes | Yes |
查询该数据类型中的数据 | Yes | Yes |
使用点符号或者BSON处理函数 | Yes | No |
Update操作数据类型 | Yes | No |
Insert操作数据类型 | Yes | Yes |
查找字段值的大小 | Yes | No |
统计更新(update statistics) | Yes | Yes |
基于该数据类型字段的Merge操作 | Yes | No |
基于该数据类型字段的Join操作 | Yes | No |
load/unload语句,外部表,onload/onunload实用程序,dbschema/dbexport/dbimport实用程序 | Yes | Yes |
复制数据至RSS服务器 | Yes | No |
在ER之间复制数据 | Yes | No |
BSON和JSON数据类型的限制
以下操作不支持BSON和JSON数据类型:
- BSON或者JSON字段不支持加密
- 具有BSON或者JSON字段的表不支持表级恢复
- CDC