自学内容网 自学内容网

Oracle和JSON结合起来,开发者的福利

Oracle Database 23c在简化开发、应对开发发力了,更多拥抱开发者方面的能力,真的是人惊讶,这几天也是参加Oracle官方组织的AI专家培训,受益非浅,在这里给大家分享一下通过 ORDS操作对外暴露Http Restful服务,达到以 JSON对象形式快速简便操作多张关系表的效果。

1.ORDS介绍

ORDS(Oracle REST 数据服务)是Oracle REST服务,它为以Oracle为中心的应用程序提供类似的标准化。它使具有SQL和其他数据库技能的开发人员能够构建对Oracle数据库的企业级数据访问PI。

当今的现代、最先进的应用程序开发人员希望使用这些API,并且确实越来越需要使用这些API来构建应用程序。这样我们可以通过安全、高性能的 HTTPS 访问 Oracle 数据库。

2.ORDS配置

1.下载ORDS,从这里下载最新版本的 ORDS:
http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html
2.解压缩ORDS安装包,解锁用户
ALTER USER ORDS_PUBLIC_USER IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;
3.创建目录以保存配置
4.编辑ORDS软件ords_params.properties文件,
并为您的安装设置适当的参数。
5.启动ORDS
./startup.sh
6: 验证ORDS是否启动成功
curl http://localhost:8080/ords

3.JSON 关系二元性

3.1 创建二元性视图

二元性视图底层是传统关系表,创建二元性视图时需声明二元性视图与底层关系表之间的关系
Duality View 只需要用 select语句来声明view与table之间的关系。

 CREATE [ OR REPLACE ]  [ [ NO ] FORCE ] [ EDITIONABLE | NONEDITIONABLE ]
    JSON [ RELATIONAL ] DUALITY VIEW [ IF NOT EXISTS ] view_name AS  
    { { SELECT  object_gen_clause FROM root_table [ root_table_alias ] 
   [ table_tags_clause ] } | ( graphql_query_for_DV  ) }

3.2 开启REST服务

DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
 ORDS.ENABLE_OBJECT(p_enabled => TRUE,
 p_schema => 'USER0',
 p_object => 'ORDER_DV',
 p_object_type => 'VIEW',
 p_object_alias => 'order_dv',
 p_auto_rest_auth => FALSE);
 commit;
END;
/

ORDER_DV为二元视图的名称
WITH INSERT UPDATE DELETE为操作的权限

3.3 操作二元性视图

它的地址前缀规则是
http://${ip}:${ords_port}/ords/${db_user}/${object_name}/

a) 普通查询
规则是http://${ip}:${ords_port}/ords/${db_user}/${object_name}/

b) 分页查询
curl -s 'http://localhost:8080/ords/<数据库用户名>/order_dv/?offset=1&limit=1' | jq .

c) 条件查询
规则是 http://${ip}:${ords_port}/ords/${db_user}/${object_name}/?q=${查询条件}

d)新增
在 Linux 命令行中,执行如下命令
curl -s -X POST 'http://localhost:8080/ords/<数据库用户名>/order_dv/' \
--header 'Content-Type: application/json' \
--data '{
 "_id":"#####",
 ....
 }'
 
d)更新
curl -s -X POST 'http://localhost:8080/ords/<数据库用户名>/order_dv/' \
--header 'Content-Type: application/json' \
--data '{
 "_id":"#####",
 "_metadata" : {"etag" : " #######"},
 ....
 }'
 这里也就是使用ETAG 提交,即可更新

e)删除
curl -s -X DELETE http://localhost:8080/ords/<数据库用户名>/order_dv/##### | jq .

4.原生JSON

Oracle23ai 中全新引入了NATIVE JSON 这个新的数据类型,在存储空间占用,数据访问效率,操作便利性方面都有长足的提升。 NATIVE JSON 相对于之前的Oracle数据库版本使
用 BLOB 类型来存储JSON,在空间节省方面有相当大的改善。

在这里给大家展示一个多值索引
基于多值函数的索引允许我们对存储在 JSON 数据类型中的
JSON 文档中的多个标量值进行索引。
这可以提高包含 JSON_EXISTS 条件的查询的性能。

create multivalue index t1_test on test t
 (t.json_data.words.pages.number());
 
可以看到执行计划中使用了多值索引

5.总结

Oracle和JSON结合起来,可谓是真正的王炸啊,其实有很多的第三方开放平台,可以允许我们去调用他们的开放接口,相比来说,由Oracle Database 23ai代表用户管理文档级可串行性。大家可以继续使用简单的 HTTP PUT、POST 及 GET 操作,或者直接针对 Oracle Database 使用特定语言的 API,例如 Oracle SODA API 甚至 MongoDB API。有了 JSON Duality Views,“鱼与熊掌不可兼得”将彻底成为历史。


原文地址:https://blog.csdn.net/weixin_41645135/article/details/142504520

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!