您的位置:首页 > 房产 > 家装 > 开发一款社交软件需要多少钱_宁波在线制作网站_新网站友链_西地那非片的正确服用方法

开发一款社交软件需要多少钱_宁波在线制作网站_新网站友链_西地那非片的正确服用方法

2024/12/23 15:10:27 来源:https://blog.csdn.net/yhw1809/article/details/144454242  浏览:    关键词:开发一款社交软件需要多少钱_宁波在线制作网站_新网站友链_西地那非片的正确服用方法
开发一款社交软件需要多少钱_宁波在线制作网站_新网站友链_西地那非片的正确服用方法

数据库管理271期 2024-12-14

  • 数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)
    • 1 初始化数据
      • 1.1 创建用户
      • 1.2 导入数据
      • 1.3 创建JSON关系二元性视图
    • 2 创建ORDS服务
      • 2.1 下载JDK17
      • 2.2 安装ORDS
      • 2.3 启用MongoDB API
      • 2.4 启动ORDS
      • 2.5 创建ORDS服务
    • 3 CURL操作JSON关系二元性视图
      • 3.1 简单查询
      • 3.2 复杂查询
      • 3.3 基于_id查询
      • 3.4 插入数据
      • 3.5 修改数据
      • 3.6 删除操作
    • 4 MongoDB客户端操作JSON关系二元性视图
    • 总结

数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家,数盟会长老会成员,OCM讲师,PolarDB开源社区、青学会MOP社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

JSON关系二元性视图是Oracle 23c/23ai引入的一个非常厉害的新特性(具体可以查看第184和185期),本期使用的数据也是源自于184、185期,使用curl来操作JSON关系二元性视图

1 初始化数据

和270期对AI的数据库一致,数据库基本连接信息为:10.10.10.31:1521/pdbprod1(PDB)。

1.1 创建用户

alter session set container=pdbprod1;
create user mongo identified by mongo;
grant DB_DEVELOPER_ROLE to mongo;
alter user mongo default tablespace users quota unlimited on users;

1.2 导入数据

conn mongo/mongo@10.10.10.31:1521/pdbprod1
--建表语句和数据插入详见184、185期

1.3 创建JSON关系二元性视图

这里只创建订单维度的视图:

CREATE or REPLACE JSON DUALITY VIEW orders_jdv AS
orders @insert @update @delete
{_id          : order_id,ordertime    : order_time,customers @unnest @insert @update{cid        : customer_id,customer   : customer_name},details      : order_details @insert @update @delete[ {subid       : sub_idproducts @insert @update{pn        : product_id,pname     : product_name,price     : price_number,       product_type @unnest @insert @update{typeid  : type_id,type    : type_name}}} ]
};

image.png

2 创建ORDS服务

Oracle REST Data Services (ORDS) 让您的Oracle数据库启用HTTPS功能。作为一个中间层Java应用,ORDS提供了数据库管理REST API、SQL Developer Web、PL/SQL网关和适用于REST的SODA,并且支持发布RESTful Web服务,可与Oracle数据库中的数据和存储过程进行交互。这里也是用ORDS服务来对接JSON关系二元性视图。

2.1 下载JDK17

JDK17下载地址(使用JDK 17.0.12):https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html

tar -xvf jdk-17.0.12_linux-x64_bin.tar.gz
echo -e 'export JAVA_HOME=/home/oracle/jdk-17.0.12' >> ~/.bash_profile

2.2 安装ORDS

ORDS下载地址为(使用最新版24.4):https://www.oracle.com/cn/database/sqldeveloper/technologies/db-actions/download/

mkdir ords/
mv ords-latest.zip ords/
cd ords/
unzip ords-latest.zipmkdir conf/echo -e 'export PATH="$PATH:/home/oracle/ords/bin"' >> ~/.bash_profile
echo -e 'export ORDS_CONFIG=/home/oracle/ords/conf' >> ~/.bash_profileords install

需要数据库的相关信息:
image.png
这时会启动ORDS,Ctrl+C终止即可:
image.png

2.3 启用MongoDB API

ords config set mongo.enabled true
ords config set mongo.tls false

2.4 启动ORDS

ords serve

在这里插入图片描述

这里会输出一些启动日志,包括REST API的端口,以及MongoDB客户端连接到数据库的字符串。

2.5 创建ORDS服务

grant soda_app to mongo;
conn mongo/mongo@10.10.10.31:1521/pdbprod1
exec ords.enable_schema;DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
BEGINORDS.ENABLE_OBJECT(p_enabled => TRUE,p_schema => 'MONGO',p_object => 'ORDERS_JDV',p_object_type => 'VIEW',p_object_alias => 'orders_jdv',p_auto_rest_auth => FALSE);commit;
END;
/ 

image.png

3 CURL操作JSON关系二元性视图

ORDS启动后,根据启动日志可以看到可以通过8080端口使用REST API操作JSON二元性视图。

3.1 简单查询

curl -s http://10.10.10.31:8080/ords/mongo/orders_jdv/ | jq .

image.png

curl -s 'http://10.10.10.31:8080/ords/mongo/orders_jdv/?offset=3&limit=1' | jq .

image.png

3.2 复杂查询

curl -s --globoff 'http://10.10.10.31:8080/ords/mongo/orders_jdv/?filter={"details":"$elemMatch":{{"products.pname":"pork"}}}' | jq .

这里可以查出带有Pork为商品的订单(这里不全截图了):
image.png
image.png

3.3 基于_id查询

curl -s http://10.10.10.31:8080/ords/mongo/orders_jdv/12345681 | jq .

image.png

3.4 插入数据

curl -s -X POST 'http://10.10.10.31:8080/ords/mongo/orders_jdv/' \
--header 'Content-Type: application/json' \
--data '{"_id": "123456786", "ordertime": "2024-12-13T13:33:33", "cid": "345678", "customer": "Haiwen","details": [{"subid": 21,"products": {"pn": 98765,"pname": "Laptop mode A","price": 2000,"typeid": 1234,"type": "computer"}},{"subid": 22,"products": {"pn": 87654,"pname": "CD A","price": 40,"typeid": 2345,"type": "music"}}]
}' | jq .

image.png
image.png
在关系表中也能查询到相关数据:
image.png

3.5 修改数据

curl -s -X PUT 'http://10.10.10.31:8080/ords/mongo/orders_jdv/123456786' \
--header 'Content-Type: application/json' \
--data '{"_id": "123456786", "_metadata" : {"etag" : "5F43B20AECD5EFF7CF022352530E3C75"},"ordertime": "2024-12-11T13:33:33", "cid": "345678", "customer": "Haiwen","details": [{"subid": 21,"products": {"pn": 76543,"pname": "Pork","price": 15,"typeid": 3456,"type": "food"}},{"subid": 22,"products": {"pn": 65432,"pname": "Oracle 23ai Document","price": 100,"typeid": 4567,"type": "book"}}]
}' | jq .

image.png
image.png
在关系表中也能查询到数据已变更:
image.png

3.6 删除操作

curl -s -X DELETE http://10.10.10.31:8080/ords/mongo/orders_jdv/123456786 | jq .

image.png
关系表中相关数据已删除:
image.png

4 MongoDB客户端操作JSON关系二元性视图

可以使用MongoDB官方提供的MongoDB Compass直接连接到Oracle 23ai的JSON关系二元性视图中。
image.png
image.png
由于前面已经使用CURL操作过,这里就不再使用MongoDB Compass进行操作演示了,连接字符串可以根据ORDS的启动日志获取,连接过程非常丝滑。

总结

本期演示了用使用MongoDB的方式来操作Oracle 23ai JSON关系二元性视图。
老规矩,知道写了些啥。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com