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

ops/2024/9/25 14:51:47/

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;
BEGINORDS.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,“鱼与熊掌不可兼得”将彻底成为历史。


http://www.ppmy.cn/ops/115827.html

相关文章

【多模态大模型】Qwen2-VL基本原理和推理部署实战

文章目录 Qwen2-VL基本原理Qwen-VL简要回顾Qwen2-VL的高级升级统一视觉处理方式原生动态分辨率处理&#xff08;非大图切分方式&#xff09;多模态旋转位置编码 Qwen2-VL推理实现|代码解析单图推理视觉信息预处理找到能被28整除的最合适size最大最小pixel数边界处理 多模态信息…

mysql怎么让字段从1开始自增?

mysql怎么让字段从1开始自增&#xff1f; 要确保一个 AUTO_INCREMENT 字段从1开始自增&#xff0c;你需要在创建表的时候指定 AUTO_INCREMENT 的起始值为1&#xff0c; 或者在表创建之后手动设置 AUTO_INCREMENT 的值。 1.创建表时指定 当你创建表的时候&#xff0c;可以直接…

新峰商城之分类三级联动实现

新峰商城是一个开源电子商务网站&#xff08;SpringBoot项目&#xff09;&#xff0c;本文主要简述它的商品分类中三级联动功能的实现。 一、多层级联动效果的常见场景 二、三级联动或者更多层级的数据联动是常见交互方式&#xff0c;它可以提升用户体验&#xff0c;限制用户随…

Qt上下文菜单

在Qt中&#xff0c;上下文菜单&#xff08;Context Menu&#xff09;是一种弹出式的、与用户当前鼠标位置相关的菜单&#xff0c;它通常用于提供针对特定元素的快速操作选项&#xff0c;比如右键点击某个控件时会出现的菜单。Qt::ContextMenuPolicy是一个枚举类型&#xff0c;用…

Python知识点:如何使用C/C++扩展Python功能

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 在Python中&#xff0c;你可以使用C或C来编写扩展模块&#xff0c;从而提高性能…

鹏哥C语言51---第7次作业:函数的定义和调用

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <math.h> //------------------------------------------------------------------------------------------第 7 次作业 函数定义和调用 //---------------------------…

旷视 ShuffleNetV2

目录 前言 一、ShuffleNetV2带来的创新点四条轻量化网络设计原则 1.1 准则一&#xff1a;相同的输入输出通道数能够减少内存访问成本(MAC) 1.2 准则二: 过多的分组卷积会增加 MAC 1.3 准则三: 网络的碎片化程度会减少并行化程度&#xff08;碎片化操作对并行加速不友好&am…

初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅

1. 背景 目标群体&#xff1a;鸿蒙初学者 版本&#xff1a;HarmonyOS 3.1/4.0 背景&#xff1a;鸿蒙 App 的全局路由管理功能&#xff0c;需要在 App 启动时初始化对 raw 下的相关配置文件进行读取、解析并缓存。App 启动时涉及到了大量模块的初始化&#xff0c;好多模块都涉…