怎么找做网站平台公司,爱做网站软件,网站备案取名,wordpress下拉菜单联动数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库#xff08;20240507#xff09;1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库#xff08;20… 数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库202405071 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库20240507 作者胖头鱼的鱼缸尹海文 Oracle ACE Associate: DatabaseOracle与MySQL PostgreSQL ACE Partner 10年数据库行业经验现主要从事数据库服务工作 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP、认证技术专家、年度墨力之星ITPUB认证专家、专家百人团成员OCM讲师PolarDB开源社区技术顾问OceanBase观察团成员 圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号非著名社恐社交恐怖分子 公众号胖头鱼的鱼缸CSDN胖头鱼的鱼缸尹海文墨天轮胖头鱼的鱼缸ITPUByhw1809。 除授权转载并标明出处外均为“非法”抄袭 最早接触JSON数据库还是2015年我在尚观的时候也算是刚刚入行的时候那时候了解到了MongoDB当时对比一般的关系型数据库对其副本分片架构很感兴趣。后面还是在一些项目上如用于近期数据快速分析、智能客服、用户信息等场景。 在最新版本Oracle Database还叫23c的时候也就是第130期的时候我根据官方PPT加上自己理解内容介绍了JSON关系型二元性视图Oracle JSON Relational Duality Views这个功能算是颠覆了关系型表和JSON在数据库层面的使用方式如需查看相关详细介绍请在CSDN、墨天轮、公众号、ITPUB查看相关内容。那时候并没有做什么实验今天尝试自己整一个简单场景来使用JSON关系型二元性视图。 为了合理的进行实验我还是安装了23ai Free版本
1 JSON需求
这里模拟一个订单系统输出
{_id : 12345678,ordertime : 2024-05-07 09:42:21,customer : Cary,details : [ {pn : 98765,pname : Laptop mode A,price : 2000,type : computer},{pn : 87654,pname : CD A,price : 40,type : music},]
}其中 order: 订单编号 customer: 订单用户 order_time: 订单时间 order_detail: 订单详情
pn: 商品编号pname: 商品名称price: 商品价格type: 商品分类
2 关系型表设计
分别设计用户表customers、然后是订单表orders、订单详情表order_details、商品表products、商品分类表product_type 建表并插入一些数据
--drop tables if exist
drop table order_details purge;
drop table products purge;
drop table product_type purge;
drop table orders purge;
drop table customers purge;--customers
create table customers(customer_id number,customer_name varchar2(20),CONSTRAINT customers_pk PRIMARY KEY(customer_id));
insert into customers values(123456,Cary);
insert into customers values(234567,Calvin);
insert into customers values(345678,Haiwen);
insert into customers values(456789,Xiaogang);--product_type
create table product_type(type_id number,type_name varchar2(20),CONSTRAINT type_pk PRIMARY KEY(type_id));
insert into product_type values(1234,computer);
insert into product_type values(2345,music);
insert into product_type values(3456,food);
insert into product_type values(4567,book);--products
create table products(product_id number,product_name varchar2(20),price_number number,type_id number,CONSTRAINT products_pk PRIMARY KEY(product_id),CONSTRAINT products_fk FOREIGN KEY(type_id) REFERENCES product_type(type_id));
insert into products values(98765,Laptop mode A,2000,1234);
insert into products values(87654,CD A,40,2345);
insert into products values(76543,Pork,15,3456);
insert into products values(65432,Oracle 23ai Document,100,4567);--orders
create table orders(order_id number,order_time timestamp,customer_id number,CONSTRAINT orders_pk PRIMARY KEY(order_id),CONSTRAINT orders_fk FOREIGN KEY(customer_id) REFERENCES customers(customer_id));
insert into orders values(12345678,to_timestamp(2024-05-07 09:42:21,yyyy-mm-dd hh24:mi:ss),123456);
insert into orders values(12345679,to_timestamp(2024-05-07 09:45:25,yyyy-mm-dd hh24:mi:ss),234567);
insert into orders values(12345680,to_timestamp(2024-05-07 09:48:01,yyyy-mm-dd hh24:mi:ss),456789);
insert into orders values(12345681,to_timestamp(2024-05-07 09:51:44,yyyy-mm-dd hh24:mi:ss),345678);--order_details
create table order_details(sub_id number,order_id number,product_id number,CONSTRAINT od_pk PRIMARY KEY(sub_id),CONSTRAINT od_fk1 FOREIGN KEY(order_id) REFERENCES orders(order_id),CONSTRAINT od_fk2 FOREIGN KEY(product_id) REFERENCES products(product_id));
insert into order_details values(1,12345678,98765);
insert into order_details values(2,12345678,87654);
insert into order_details values(3,12345679,87654);
insert into order_details values(4,12345679,65432);
insert into order_details values(5,12345679,76543);
insert into order_details values(6,12345680,98765);
insert into order_details values(7,12345681,98765);
insert into order_details values(8,12345681,87654);
insert into order_details values(9,12345681,76543);
insert into order_details values(10,12345681,65432);commit;检查数据
select o.order_id orderid,c.customer_name customer,o.order_time ordertime,p.product_name pn,p.product_name pname,p.price_number price,pt.type_name type from orders o,customers c,order_details od,products p,product_type pt where o.customer_idc.customer_id and o.order_idod.order_id and od.product_idp.product_id and p.type_idpt.type_id order by o.order_id;通过SQL查询传统关系型表的订单信息会有一些问题会有重复的上层数据在本案例中就是orderid、customer、ordertime相关信息。原谅我用了个比较low的方式写SQL我写SQL的能力确实一般般
3 JSON关系型二元性视图
CREATE JSON DUALITY VIEW orders_jdv AS
orders insert update delete
{_id : order_id,ordertime : order_time,customers unnest{cid : customer_id,customer : customer_name},details : order_details[ {subid : sub_idproducts{pn : product_id,pname : product_name,price : price_number, product_type unnest{typeid : type_id,type : type_name}}} ]
};这里需要注意以下一些限制
所有表必须有主键表之间有关联关系的列需要用外键连接JSON关系二元性视图必须包含表中所有主键和唯一约束的列必须包含_id字段
3 查询视图
SQL方式
select * from orders_jdv;MongoDB APIREST: Oracle现在提供了MongoDB API和REST接口用于操作Oracle数据库中的JSON数据目前该部分还在摸索之中。 Oracle Database API for MongoDB相关文档可参考官方文档 https://docs.oracle.com/en/database/oracle/mongodb-api/mgapi/preface.html 更多JSON关系二元性视图的用法及案例可参考官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/23/jsnvu/preface.html 总结
本期对JSON关系二元性视图做了一个简单案例实操可以看到使用JSON关系二元性视图可以极大减少文档型数据库的存储冗余问题是一种颠覆性的数据存储与使用方式但使用还是有一些限制。 老规矩知道写了些啥。 文章转载自: http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.jxltk.cn.gov.cn.jxltk.cn http://www.morning.nngq.cn.gov.cn.nngq.cn http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn http://www.morning.ymwnc.cn.gov.cn.ymwnc.cn http://www.morning.dskzr.cn.gov.cn.dskzr.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.cgthq.cn.gov.cn.cgthq.cn http://www.morning.mgtrc.cn.gov.cn.mgtrc.cn http://www.morning.bytgy.com.gov.cn.bytgy.com http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.mhlkc.cn.gov.cn.mhlkc.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.brqjs.cn.gov.cn.brqjs.cn http://www.morning.wrkhf.cn.gov.cn.wrkhf.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.jrqbr.cn.gov.cn.jrqbr.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.kmprl.cn.gov.cn.kmprl.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.tngdn.cn.gov.cn.tngdn.cn http://www.morning.qkgwx.cn.gov.cn.qkgwx.cn http://www.morning.klyzg.cn.gov.cn.klyzg.cn http://www.morning.ymjgx.cn.gov.cn.ymjgx.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn http://www.morning.yfnhg.cn.gov.cn.yfnhg.cn http://www.morning.mgfnt.cn.gov.cn.mgfnt.cn http://www.morning.xxfxxf.cn.gov.cn.xxfxxf.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.psqs.cn.gov.cn.psqs.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.rqqlp.cn.gov.cn.rqqlp.cn http://www.morning.rsjng.cn.gov.cn.rsjng.cn http://www.morning.qlrtd.cn.gov.cn.qlrtd.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.bzkgn.cn.gov.cn.bzkgn.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.khclr.cn.gov.cn.khclr.cn http://www.morning.qwbht.cn.gov.cn.qwbht.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.bkqw.cn.gov.cn.bkqw.cn http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn http://www.morning.rysmn.cn.gov.cn.rysmn.cn http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn http://www.morning.sjsfw.cn.gov.cn.sjsfw.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn http://www.morning.rpwht.cn.gov.cn.rpwht.cn http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.ntgrn.cn.gov.cn.ntgrn.cn http://www.morning.trkhx.cn.gov.cn.trkhx.cn