探索JSON能力,看这一篇就够了

探索JSON能力,看这一篇就够了_第1张图片

探索JSON能力,看这一篇就够了_第2张图片

探索JSON能力,看这一篇就够了_第3张图片

KING BASE

探索JSON能力,看这一篇就够了_第4张图片

探索JSON能力,看这一篇就够了_第5张图片

JSON(JavaScript Object Notation)作为一种流行的数据格式,相比于TEXT和LOB类型,能更高效地实现数据的访问。此外,JSON能打通关系型和非关系型数据存储之间的界限,为业务提供更好的架构选择。

KingbaseES数据库中实现了JSON数据类型,同时提供丰富的函数和路径表达式来方便用户构造、操作和访问JSON数据,下面就来探索下KingbaseES的七大JSON能力吧!

01

能力一:构造JSON

在对数据库的使用中,我们可能需要把关系数据或者一个行对象转为JSON对象或者JSON数组,KingBaseES提供了丰富的函数调用方式来构造JSON数据。

探索JSON能力,看这一篇就够了_第6张图片

能构造JSON对象的函数有JSON_OBJECT、JSON(B)_BUILD_OBJECT和JSON(B)_OBJECT三个函数,但我们更建议使用JSON_OBJECT函数表达式,因为其提供了更丰富的语法支持。同时,KingbaseES可以使用JSON{} 简写形式来构造JSON对象。同样对于构造JSON数组,也更建议使用提供复杂语法的JSON_ARRAY函数表达式。

02

能力二:修改JSON

我们将插入、删除、更新JSON的能力统称为修改JSON的能力。同时,操作符能简化JSON的使用,也将包含在修改JSON的能力中。下面将一一和大家探索它们的能力。

插入JSON

插入JSON,即要把一段新的JSON片段插入到源片段中,KingbaseES目前支持的插入JSON的函数如下表所示:

探索JSON能力,看这一篇就够了_第7张图片

当我们想要插入数据到JSON数组中时,可以调用JSON_ARRAY_APPEND或者JSON_ARRAY_INSERT,但是它们只是对数组进行追加或插入,想要更灵活的插入JSON数据,可以调用JSON_INSERT或者JSONB_INSERT。JSON_INSERT函数还支持多对路径和新值。

而JSON_INSERT相比JSONB_INSERT,其使用的JSONPATH更加灵活,所以建议使用JSON_INSERT函数进行JSON数据的插入。

删除JSON

删除JSON,即把JSON中的部分数据进行删除操作。KingbaseES目前支持如下的删除函数:

探索JSON能力,看这一篇就够了_第8张图片

其中,JSON(B)_STRIP_NULLS函数的入参是一个JSON或者JSONB数据,其主要是删除JSON对象中值为NULL的键值对。

从功能上来说,JSON_REMOVE和JSON(B)_STRIP_NULLS实现了不同的删除功能,可以给用户更多灵活操作。

更新JSON

更新JSON,即把JSON源片段中部分内容进行替换,KingbaseES目前支持如下的更新函数:

探索JSON能力,看这一篇就够了_第9张图片

JSON_REPLACE和JSON_SET都有更新指定路径的值的功能,两者的区别是JSON_REPLACE是当指定的路径不存在时则忽略,而JSON_SET当指定的路径不存在时,把新的值增加到指定路径下,两个函数需根据实际需求进行调用。

从功能上来说JSONB_SET包含了JSON_REPLACE和JSON_SET两个函数的功能,不过其路径参数表示形式并非JSONPATH路径格式,此路径书写上不及JSONPATH灵活。

操作符

操作符相比函数来说在使用起来更方便,KingbaseES不仅提供丰富的函数,同时提供了使用更加简洁的操作符来实现对JSON数据的操作。下表为KingbaseES目前支持的JSON的操作符。

探索JSON能力,看这一篇就够了_第10张图片

从功能上来说,KingbaseES的操作符全面覆盖JSON数据查询、更新、删除等操作。

03

能力三:查询JSON

查询是数据库中最重要的操作,而对JSON的查询,包括对JSON片段的查找,对其中标量值的查找,对其键的查找等等,都是非常重要的查询操作。而JSON索引更是提升JSON查询的利器,JSONPATH则使用路径表达式可以实现对JSON数据更便捷的访问。

KingbaseES提供了丰富的JSON查询函数,如下表所示:

探索JSON能力,看这一篇就够了_第11张图片

JSONB索引

数据库中索引可以大幅度缩短数据检索的时间,JSONB数据类型也提供了索引的支持,以满足快速检索的需求。

KingbaseES中的GIN 索引可以被用来有效地搜索在大量JSONB文档(数据)中出现的键或者键值对。KingbaseES提供了两种 GIN“操作符类”,它们在性能和灵活性方面做出了不同的平衡。JSONB的默认GIN操作符类支持使用@>、 ?、?&以及?|操作符的查询。而非默认的 GIN 操作符类JSONB_path_ops只支持索引 @>操作符。

JSONB同样支持btree和hash索引,常用于检查完整 JSON文档等值的重要场合。

JSONPATH支持能力

KingbaseES的JSONPATH类型实现支持JSON 路径语言以有效地查询 JSON 数据。它提供了已解析的JSON路径表达式的二进制表示,该表达式指定路径引擎从JSON数据中检索的项,以便使用JSON查询函数进行进一步处理。

在KingbaseES中,路径表达式作为JSONPATH数据类型实现,可以使用JSONPATH中描述的任何元素。此外,KingbaseES的JSONPATH还支持正则表达式,它允许路径表达式允许用like_regex过滤器将文本匹配到正则表达式。

JSONPATH还提供丰富的变量和访问器操作符,详情参考KingbaseES官方手册。

04

能力四:JSON的输出

JSON的输出就是按要求去除JSON引号的引用或者格式化JSON数据,KingbaseES目前支持如下两个输出函数:

探索JSON能力,看这一篇就够了_第12张图片

05

能力五:JSON的聚集

聚集函数作为独立的函数,它可以实现把多个JSON数据聚集为一个JSON数据。目前KingbaseES支持的聚集函数如下表所示:

探索JSON能力,看这一篇就够了_第13张图片

06

能力六:JSON与其他数据类型的转换

我们把SQL变量和JSON变量的转化、把JSON转为字符串类型、把JSON转为行数据,或者把行数据转为JSON,以及把JSON转为关系表等函数或函数表达式统称为其转换能力。目前KingbaseES支持的转换函数如下表所示:

探索JSON能力,看这一篇就够了_第14张图片

07

其他能力

对JSON数据,我们还可以对其进行统计、合并、比较等各种操作,我们把所有这些操作归并为其他能力,目前KingbaseES支持的其他能力函数如下表所示:

探索JSON能力,看这一篇就够了_第15张图片

上表中每个函数都实现不同的功能,这些函数都是在实际使用中必不可少的函数。

PK

KingbaseES/Oracle/MySQL

JSON能力

探索JSON能力,看这一篇就够了_第16张图片

对比可以看出,KingbaseES不仅兼容Oracle和MySQL的JSON函数功能和语法、操作符,还进一步扩展、优化,具备独有的特性,使用上也会更加丰富和灵活。

END

正是顺应市场需求变化,KingbaseES无论是在JSON的构造、修改、查询以及聚集能力上,还是将关系数据和JSON数据进行互相转换的功能上,都提供了强大的JSON支撑能力。相信在未来,KingbaseES的JSON处理能力将持续升级,引领更多场景应用。

c4b26664c470247350602a7703641dfa.png供稿:产品研发中心

编辑:王堇

审核:日尧

你可能感兴趣的:(json,oracle,数据库)