共计 2452 个字符,预计需要花费 7 分钟才能阅读完成。
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,“鱼与熊掌不可兼得”将彻底成为历史。
原文地址: Oracle 和 JSON 结合起来,开发者的福利