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
繁體地址,請注明出處:http://hk.pswp.cn/news/908538.shtml
英文地址,請注明出處:http://en.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 就位于首…