暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 19c让JSON如此简单

甲骨文云技术 2020-01-08
12670

Multi-model(多模)数据库,指的是在一个数据库中,可以同时支持多种存储引擎或存储类型,为应用提供各种数据服务,如下图所示:


Oracle数据库对于这几种存储格式都能够进行很好的支持,今天我们主要来谈一谈对JSON的支持,特别是在Oracle 19c中,你可以轻松自如的使用JSON数据格式。
JSON数据格式在Oracle 12.1.0.2中就开始支持了,也就是说在Oracle数据库中,你可以存储、查询JSON数据格式,像访问普通的表一样,进行增删改操作、创建索引、创建虚拟列等,甚至可以把它放在内存数据库中(In-Memory)提高性能。下面我们来看看在Oracle 19c中针对JSON有哪些新的特性。


普通表转换成JSON格式

开发人员都偏爱使用JSON数据格式交换进行交换,在Oracle数据库中有个函数JSON_OBJECT可以很容易做到。如下图我把普遍表EMP转换成JSON格式

通过json_object函数进行转换如下图所示:

你可能会想,如果字段多怎么办,每个都要写吗?不需要,在Oracle 19c中,你可以使用*号替代,如下图所示:


你是不是觉得这样不太容易看懂,没问题,使用JSON_SERIALIZE函数来美化一下,如下图所示:

是不是很炫,但要注意,此函数只在Oracle 19c提供。



JSON的数据类型

Oracle数据库中,JSON存储的数据类型有三种,VARCHAR2CLOBBLOB。其中VARCHAR2性能最好,但大小限制在32kCLOBBLOB不存在限制。


如果采用的是BLOB存储类型,Select语句直接查询出来是二进制,可以使用函数JSON_SERIALIZE进行转换,如下图所示:

如果在Oracle 12c中,你可以使用UTL_RAW.CAST_TO_VARCHAR2 (data)进行转换。


JSON_MERGEPATCH函数简化更新

Oracle 19c以前,如果要更新JSON文档的某部分,你必须检索JSON文档,更新内容后要把整个文档替换为修改后的文档。现在,可以通过JSON_MERGEPATCH大大简化此过程。

如下图所示,统一更新SAL=1500

JSON文件增加新的元素:


物化视图增强JSON_TABLE性能

19c中,可以创建包含JSON_TABLE的物化视图,增强了查询重写的功能。当JSON文档中包含数组时,特别有用,物化视图可以为JSON数组提供快速访问性能。


查看物化视图:


其他

当然,在12c中早已支持对JSON文档创建索引,添加虚拟列、把JSON文档加载到 In-Memory中提高性能等等,限于篇幅,具体请参考手册《JSON Developer's Guide》,链接如下:
https://docs.oracle.com/en/database/oracle/oracle-database/19/adjsn/

19c系列文章:
手把手教你升级到Database 19c(1)
手把手教你升级到Database 19c(2)
手把手教你升级到Database 19c(3)
手把手教你19c新特性:自动索引
手把手教你19c新特性:实时统计信息收集
手把手教你19c新特性:混合分区表
手把手教你19c新特性:SQL隔离

扫描下方QR Code即刻预约ADW演示

编辑:萧宇

最后修改时间:2020-01-08 09:13:44
文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论