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

21,178次阅读
没有评论

共计 2452 个字符,预计需要花费 7 分钟才能阅读完成。

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

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

1.ORDS 介绍

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

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

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

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

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

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 .

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

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());
 
可以看到执行计划中使用了多值索引

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

5. 总结

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

原文地址: Oracle 和 JSON 结合起来,开发者的福利

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-27发表,共计2452字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)