16-Oracle 23 ai-JSON-Relational Duality-知识准备

一直做DBA的小伙伴,是不是对开发相对陌生一些。JSON 关系二元性是 Oracle Database 23ai 中重要的特性,同时带来的是范式革命。JSON关系二元性解决了数据库领域的根本矛盾​,结构化数据的严谨性与半结构化数据的灵活性之间的矛盾。

JSON Relational Duality为 Oracle 数据库开发人员提供了改变游戏规则的灵活性和简单性。这一突破性创新克服了开发人员在构建应用程序时(无论是使用关系模型还是使用文档模型)所面临的历史挑战。 

一、JSON,JSON关系二元性,JSON二元性视图

JSON格式的数据​:
  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
  • 在数据库中,JSON数据可以以文本形式存储,也可以以二进制形式(如Oracle的JSON类型,PostgreSQL的JSONB)存储,以便更高效地处理和查询。
JSON关系二元性(JSON Relational Duality)​​:
  • 这是一种数据库技术,旨在弥合关系型数据库和文档数据库之间的鸿沟。它允许数据同时以关系表和JSON文档的形式存在,并且两种形式之间是实时同步的。
  • 核心思想:同一份数据,两种表达方式(关系和文档),并且保持自动、实时的双向转换。当通过关系表修改数据时,JSON文档视图会自动更新;反之,当通过JSON文档修改数据时,底层的关系表也会自动更新。
JSON二元性视图(JSON Duality View)​ ​:
  • 这是实现JSON关系二元性的具体技术手段。在Oracle 23ai中,通过创建一种特殊的视图(称为Duality View)来定义JSON文档的结构,并映射到底层的关系表。
  • 该视图不仅提供了一种只读的JSON文档视图,而且支持通过JSON文档的插入、更新和删除操作来修改底层的关系表数据。
相关的 联系 ​:
  • 数据表达的统一​:JSON二元性视图是JSON关系二元性概念的具体实现。它允许开发者以JSON文档的形式操作数据,而数据库自动将这些操作转换为对关系表的操作,反之亦然。
  • 实时同步​:底层的数据存储可以是关系表,但通过二元性视图,数据以JSON文档形式呈现。任何一方的修改都会实时反映到另一方,无需ETL或额外的同步机制。
  • 开发灵活性​:开发者可以根据需要选择使用SQL操作关系表(适合复杂查询和事务)或使用文档操作(如RESTful接口)来处理JSON文档,而数据始终保持一致。
1. JSON的诞生背景
JSON(JavaScript Object Notation)由Douglas Crockford于2001年正式提出,源于JavaScript的对象字面量语法。其核心设计目标:
  • 轻量化​:相比XML减少60-70%的数据体积
  • 易读性​:人类可读的键值对结构,自描述性​,数据结构与数据一体
  • 语言无关​:独立于编程语言的通用数据格式。中立​,所有编程语言通用
  • ​​灵活性​:无固定模式,随时增减字段​

2.数据结构​:键值对集合(对象) + 有序列表(数组) 

{"id": 101,"name": "康有为","roles": ["admin", "editor"],"contact": {"email": "kang@china.com","phone": "+86 98765432100"}
}
3. 核心使用场景
  • Web API通信​:90%的RESTful API采用JSON作为数据交换格式
  • NoSQL数据库​:MongoDB等文档数据库的底层存储格式
  • 配置管理​:Kubernetes等云原生系统的配置格式
  • 实时数据流​:Kafka等消息队列的常用数据格式

三、传统架构核心问题

1. 关系型数据库(RDBMS)

优点​:
  • ACID事务保证(银行交易等关键系统)
  • 强大的关联查询能力(JOIN操作)
  • 成熟的数据完整性约束(主键、外键等)
​缺点​:
  • 模型不匹配​:对象模型与关系模型转换成本高(30-40%开发时间)
  • 结构僵化​:修改表结构需DDL操作(生产环境风险高)
  • ​扩展困难​:水平扩展复杂(分库分表技术门槛高)

 2. NoSQL文档数据库

优点​:
  • 灵活的数据模型(随时添加新字段)
  • 快速开发迭代(无需预定义模式)
  • 天然水平扩展(分布式架构)
​缺点​:
  • ​弱事务支持​:跨文档事务实现复杂
  • ​关联查询低效​:$lookup操作性能差
  • ​数据冗余​:相同数据在多文档重复存储(存储成本增加30-70%)

3. 传统数据处理 

四、JSON关系二元性和view实现

1. 关键概念解析

Duality View--虚拟 JSON 文档接口,基于底层关系表实时生成。

WITH UPDATE--视图字段级更新控制(指定可写字段)。

ETag--文档版本标识符(解决并发冲突)。

JSON_mergepatch--部分文档更新函数(避免全文档替换)。

2. 技术实现

JSON关系二元性

 JSON 二元性视图

3. JSON二元性核心优势

功能核心优势

对比维度

传统架构

JSON二元性

改进效果

开发效率

ORM+ETL多层转换

自动双向映射

开发周期缩短40%

事务一致性

跨库事务复杂(2PC/XA)

原生跨模型ACID

错误率降低90%

查询性能

关联查询需应用层拼接

单请求获取完整文档

响应时间提升5-10倍

存储效率

双重存储(关系+文档)

单一存储双视图

存储成本降低60%

架构复杂度

多组件协同(DB+Cache+MQ)

单一数据库引擎

运维成本减少70%

扩展灵活性

模式变更需停机维护

动态添加JSON字段

业务中断时间减少95%

操作方式与传统架构对比 

操作类型

传统架构

二元性架构

读取用户数据

多表JOIN查询 → ORM转换 → JSON序列化

直接查询二元性视图获得完整JSON

更新用户信息

解析JSON → 更新多表 → 验证一致性

JSON_mergepatch单视图操作

添加关联记录

事务中插入多行 → 刷新缓存

JSON数组添加元素自动创建关联行

并发控制

行级锁或应用层锁

ETag乐观锁自动处理

4. JSON 二元性视图:技术实现的核心

视图定义

 代码实例

CREATE JSON RELATIONAL DUALITY VIEW employee_dv
AS
SELECT JSON {'empId': e.employee_id,'fullName': e.first_name || ' ' || e.last_name,'department': (SELECT JSON {'id': d.department_id, 'name': d.department_name}FROM departments d WHERE d.department_id = e.department_id),'projects': [ SELECT JSON {'projectId': p.project_id, 'name': p.project_name}FROM projects p JOIN assignments a ON p.project_id = a.project_idWHERE a.employee_id = e.employee_id]
}
FROM employees e WITH UPDATE;

存储行为 

五、实现JSON二元性技术的改变

1. 动态双向映射引擎

  • 增量处理:仅更新修改字段(性能提升3-5倍)
  • 智能缓存:热文档缓存命中率90%+
2. 混合事务管理器
  • 全局SCN(系统变更号)保证读写一致性
  • 文档级乐观锁(ETag机制避免死锁)
BEGIN-- 关系操作(扣减库存)UPDATE products SET stock = stock - 1 WHERE sku = 'A123';-- 文档操作(创建订单)INSERT INTO order_v VALUES ('{"items":[{"sku":"A123"}]}');-- 跨模型事务提交
COMMIT;
3.多协议适配层

协议转换开销的大幅降低

六、JSON 关系二元性推荐使用场景

推荐
  • 微服务架构中需要混合数据模型
  • 从MongoDB迁移到关系数据库的系统
  • 需要实时分析的事务系统(HTAP)
谨慎不推荐
  • 纯键值访问场景(Redis更合适)
  • 超大规模日志处理(专用时序数据库更优)
  • 简单博客系统(MySQL,甚至Docker部署,一般够用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/908538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是预训练?深入解读大模型AI的“高考集训”

1. 预训练的通俗理解:AI的“高考集训” 我们可以将预训练(Pre-training) 形象地理解为大模型AI的“高考集训”。就像学霸在高考前需要刷五年高考三年模拟一样,大模型在正式诞生前,也要经历一场声势浩大的“题海战术”…

思尔芯携手Andes晶心科技,加速先进RISC-V 芯片开发

在RISC-V生态快速发展和应用场景不断拓展的背景下,芯片设计正面临前所未有的复杂度挑战。近日,RISC-V处理器核领先厂商Andes晶心科技与思尔芯(S2C)达成重要合作,其双核单集群AX45MPV处理器已在思尔芯最新一代原型验证系…

vscode配置lua

官网下载lua得到如下 打开vscode的扩展下载如下三个 打开vscode的此处设置 搜索 executorMap,并添加如下内容

理解 RAG_HYBRID_BM25_WEIGHT:打造更智能的混合检索增强生成系统

目录 理解 RAG_HYBRID_BM25_WEIGHT:打造更智能的混合检索增强生成系统 一、什么是 Hybrid RAG? 二、什么是 RAG_HYBRID_BM25_WEIGHT? 三、参数设置示例 四、什么时候该调整它? 五、实战建议 六、总结 理解 RAG_HYBRID_BM25…

Spring Boot 2 中 default-autowire 的使用

Spring Boot 2 中 default-autowire 的使用 在 Spring Boot 2 中,default-autowire 这个来自传统 XML 配置的概念仍然存在,但它的使用已经大大减少,因为现代 Spring Boot 应用主要使用注解驱动的配置方式。 default-autowire 在 Spring Boo…

Spring Boot + Thymeleaf 防重复提交

在 Spring Boot 与 Thymeleaf 结合的 Web 应用中,防止重复提交可以采用token 机制 客户端禁用按钮的方式实现,在高并发场景下,考虑使用 Redis 存储 token 而非 Session。 第一步:后端实现 Controller public class FormControl…

【20250607接单】Spark + Scala + IntelliJ 项目的开发环境配置从零教学

本教程适用于零基础、一台刚装好 Windows 的全新电脑开始,搭建能运行 Spark Scala IntelliJ 项目的开发环境。以下是超详细、小白级别逐步教程,从“下载什么”到“点击哪里”都帮你列清楚。 🎯 目标 操作系统:Windows10/11工具…

【ubuntu】虚拟机安装配置,sh脚本自动化,包含 apt+时间同步+docker+mysql+redis+pgsql

可以说是ubuntu基础环境搭建合集,个人学习用,使用sh一键安装,避免复制各种命令 流程主要包括 0. 可选择不同ubuntu版本对应安装(支持 Ubuntu 20.04/22.04/23.04/24.04) 1. apt换源aliyun 2. 时间选择上海时区&#x…

Rust 学习笔记:关于智能指针的练习题

Rust 学习笔记:关于智能指针的练习题 Rust 学习笔记:关于智能指针的练习题问题一问题二问题三问题四问题五问题六问题七问题八问题九问题十问题十一 Rust 学习笔记:关于智能指针的练习题 参考视频: https://www.bilibili.com/vi…

JavaScript ES6 解构:优雅提取数据的艺术

JavaScript ES6 解构:优雅提取数据的艺术 在 JavaScript 的世界中,ES6(ECMAScript 2015)的推出为开发者带来了许多革命性的特性,其中“解构赋值”(Destructuring Assignment)无疑是最受欢迎的功…

Shell 命令及运行原理 + 权限的概念(7)

文章目录 Shell 命令以及运行原理(4-1.22.08)Linux权限的概念1. 什么是权限2. 认识人(普通用户,root用户)以及两种用户的切换认识普通用户和root用户两种用户之间的切换指令提权 3. 文件的属性解析 权限属性指令ll显示…

以智能管理为基础,楼宇自控打造建筑碳中和新路径

在全球气候变化的严峻形势下,“碳中和”已成为各国发展的重要战略目标。建筑行业作为能源消耗与碳排放的“大户”,其运行阶段的能耗占全社会总能耗近40%,碳排放占比与之相当,实现建筑碳中和迫在眉睫。传统建筑管理模式下&#xff…

Python爬虫实战:研究Hyper 相关技术

一、项目概述 本项目展示了如何结合 Python 的异步编程技术与 Hyper 框架开发一个高性能、可扩展的网络爬虫系统。该系统不仅能够高效地爬取网页内容,还提供了 RESTful API 接口,方便用户通过 API 控制爬虫的运行状态和获取爬取结果。 二、系统架构设计 1. 整体架构 系统采…

html 滚动条滚动过快会留下边框线

滚动条滚动过快时,会留下边框线 但其实大部分时候是这样的,没有多出边框线的 滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行为有关。这种问题可能出现在使用了自定义滚动条样式的情况下。 注意:使用方法 6 好使,其它…

【Linux】Ubuntu 创建应用图标的方式汇总,deb/appimage/通用方法

Ubuntu 创建应用图标的方式汇总,deb/appimage/通用方法 对于标准的 Ubuntu(使用 GNOME 桌面),desktop 后缀的桌面图标文件主要保存在以下三个路径: 当前用户的桌面目录(这是最常见的位置)。所…

【自然语言处理】大模型时代的数据标注(主动学习)

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构D 实验设计E 个人总结 A 论文出处 论文题目:FreeAL: Towards Human-Free Active Learning in the Era of Large Language Models发表情况:2023-EMNLP作者单位:浙江大…

【论文解读】DeepSeek-R1

文章目录 概览一、DeepSeek-R1-Zero:在 Base Model 上直接进行 RL(一)强化学习算法(二)奖励模型(三)数据构造(四)DeepSeek-R1-Zero 的性能、自我进化过程和 Aha Moment1.…

巴西医疗巨头尤迈Kafka数据泄露事件的全过程分析与AI安防策略分析

一、事件背景与主体信息 涉事主体:Unimed,全球最大医疗合作社,巴西医疗行业龙头企业,拥有约1500万客户。技术背景:泄露源于其未保护的Kafka实例(开源实时数据传输平台),用于客户与聊天机器人“Sara”及医生的实时通信。二、时间线梳理 时间节点关键事件描述2025年3月24…

软信天成:数据驱动型背后的人工智能,基于机器学习的数据管理

在数字化转型浪潮中,当代企业如同逆水行舟,不进则退。无数企业希望通过数字化转型捕获全新的市场机遇,改善财政状况,在未来市场竞争中占据一席之地。要想获得成功的数字化转型,关键因素在于具备可靠、及时的数据用以支…

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…