19-Oracle 23 ai Database Sharding-知識準備

小伙伴是不是經常遇見大規模集群和數量的時候,業務就提出要對數據進行sharding。

Oracle 和其他數據庫(如 MySQL、PostgreSQL、MongoDB 等)

為什么要進行分片(sharding),分片的原因是什么,實現的原理又分別是什么。

核心目標:解決大規模數據存儲和高并發訪問的性能瓶頸,具體如何落地,策略和步驟是什么?

一、為什么要 Sharding

解決數據庫擴展性問題
  • 單節點性能瓶頸:傳統數據庫(如 Oracle RAC)依賴共享存儲架構,當數據量或并發請求增長時,單節點的 I/O、CPU 或內存可能成為瓶頸,導致性能下降。
  • 成本與復雜度:垂直擴展(Scale Up)需要昂貴的高端硬件,而分片(Scale Out)通過廉價服務器橫向擴展,顯著降低成本。
  • 數據主權與地理分布:某些場景(如跨國業務)需要將數據按地理位置分片,以滿足合規性要求。
應對高并發與大數據量
  • 響應時間線性增長:隨著數據量增加,單個數據庫的查詢響應時間呈指數增長。
  • 負載均衡:分片將數據和請求分散到多個節點,避免單點過載,提升整體吞吐量。
提高可用性與容錯性
  • 故障隔離:單個分片故障不會影響其他分片的數據可用性。
  • 動態擴展:新增分片時無需停機,系統可自動調整數據分布。
數據主權與合規性
  • 法律要求:某些國家/地區要求數據本地化存儲,分片可按地理位置劃分數據(比如跨國、跨地域企業數據留在本地)。

分片不是優化手段,而是架構層面的質變,解決單點數據庫的先天局限。這一點和從前規劃大數據成千G上TB的規模,其實最后真正可用數據就是百G規模,又是另外一個話題了。?

二、Sharding 的實現原理

Sharding 的核心是 將數據按規則分布到多個分片,并通過協調機制保證一致性。以下是關鍵實現原理:
分片策略(Sharding Strategy)
  • 哈希分片(Hash-based):對分片鍵(如用戶 ID)進行哈希計算,決定數據歸屬的分片。優點是數據分布均勻,但動態擴容時需重新計算哈希值。
  • 例如:shard_id = hash(user_id) % N(N 為分片數)。
  • 范圍分片(Range-based):按分片鍵的范圍劃分數據(如用戶 ID 1-1000 存分片 A,1001-2000 存分片 B)。適用于有序數據(如時間序列),但可能導致數據傾斜。
  • 列表分片(List-based):手動指定某些特定值的分片歸屬(如按地區劃分用戶)。適用于已知的靜態數據分布。
  • 復合分片(Composite):結合多種策略(如先按范圍分片,再按哈希分片),兼顧靈活性與負載均衡(Oracle 的復合分片)。
數據路由與查詢協調
  • 客戶端路由:應用程序直接根據分片鍵計算目標分片(Oracle 的“基于密鑰的路由”)。
  • 代理層路由:通過中間件(如 Proxy、Sharding-JDBC)解析 SQL 并路由到對應分片。
  • 分片目錄(Sharding Catalog):維護分片映射信息,動態更新分片位置(Sharding-JDBC 的 SQL 解析與改寫)。
事務與一致性
  • 本地事務:分片內事務由數據庫自身保證 ACID。
  • 跨分片事務:需引入分布式事務協議(如兩階段提交、TCC),但會犧牲部分性能。
  • 最終一致性:通過異步復制或事件驅動實現跨分片數據同步(復制與分片結合)。
分片管理與運維
  • 動態擴縮容:新增或移除分片時,需重新平衡數據(Elasticsearch 的 API 調整分片分布。
  • 數據遷移:通過工具或腳本將數據從舊分片遷移到新分片( MongoDB 的 sh.moveChunk())。
  • 監控與調優:實時監控分片負載,避免數據傾斜。

三、Oracle Sharding 的特殊性

Oracle 的 Sharding 的特性:
與表分區的兼容性 :--國產數據努力啊,業界分布式那么多,分片兼容太重要了。
  • Oracle Sharding 基于表分區實現,支持所有分區方法(如范圍、哈希、列表),并允許復合分片(兩級分片)。
事務一致性
  • 支持跨分片的事務性操作(如復雜連接、觸發器),并通過分布式鎖機制保證一致性。
客戶端直連
  • 支持應用程序直接連接分片,無需中間代理,減少延遲(通過 JDBC 驅動程序直接路由)。
高可用性
  • 每個分片可配置主從副本,實現故障自動切換。

四、Oracle Sharding 功能多版本對比

1. Oracle 19c 的 Sharding 特性
多表家族支持
  • 允許在單個數據庫中定義多個表家族(Table Families),每個表家族可基于不同的分片鍵(Sharding Key)進行分片,提升分片策略的靈活性。例如:訂單表按用戶 ID 分片,日志表按時間分片,滿足不同業務場景需求。
Data Guard 備庫 DML 自動重定向
  • 支持將備庫上的 DML 操作自動重定向到主庫執行,確保 ADG(Active Data Guard)的 ACID 一致性。
RAC 集群增強
  • 改進 RAC 集群的連續性保持機制,節點故障時事務可連續運行,提高高可用性。
Far Sync 特性
  • 通過在主庫附近配置 Far Sync 實例,降低主備同步壓力,確保數據零丟失。
2. Oracle 23 ai 的 Sharding 新特性
Oracle 23ai 在 Sharding(分片)領域延續了 Oracle 19c 的核心功能,并在此基礎上引入了多項創新特性,結合分布式數據庫和 AI 技術,進一步增強了分布式數據庫的擴展性、高可用性和智能化管理能力:
基于 Raft 協議的分布式 Sharding
特性:
  • 全局分布式數據庫(Globally Distributed Database)支持 Raft 復制協議,替代傳統主從復制(如 Oracle 19c 的 Far Sync)。
  • 在節點或數據中心中斷時,實現 亞秒級故障切換(<3 秒),確保零數據丟失。
優勢:
  • 提升跨地域分片的可靠性,滿足跨國業務的合規性需求(如數據本地化存儲)。
  • 通過 Raft 協議的強一致性機制,減少數據同步延遲。
True Cache 與 Sharding 結合
特性
  • True Cache 是內存中的一致性緩存服務,支持與 Sharding 聯動。
  • 在分布式分片場景下,緩存熱點數據以加速查詢響應。
優勢
  • 通過緩存減少跨分片的網絡開銷,提升讀寫性能。
  • 支持自動化的緩存管理(如 LRU 策略),無需手動干預。
自動化分片管理
特性
  • 動態擴縮容時,自動平衡數據分布(如新增分片后重新分區)。
  • 通過 AI 驅動的負載分析,優化分片鍵選擇(如檢測熱點數據并建議調整分片策略)。
優勢
  • 簡化運維復雜度,減少人工干預。
  • 避免數據傾斜,提升整體系統吞吐量。
Shrink Tablespace 與分片存儲優化
特性
  • 新增 Shrink Tablespace 功能,支持收縮大文件表空間(Bigfile Tablespace),回收未使用空間。
優勢
  • 在分片場景下,優化存儲成本,匹配實際數據量。
JSON 與關系模型的統一分片
特性
  • 結合 JSON 關系二元性(JSON-Relational Duality),支持將 JSON 文檔與關系表統一分片。
  • 例如:用戶表按用戶 ID 分片,同時關聯的 JSON 日志數據可存儲在同一分片中。
優勢
  • 簡化數據模型設計,避免跨分片的復雜 JOIN 操作。
AI Vector Search 與分片集成
特性
  • 支持在分片數據庫中存儲和查詢向量數據(如 AI 向量搜索),結合分片策略實現分布式語義檢索。
優勢
  • 在海量非結構化數據(如圖像、文檔)場景下,提升搜索效率。

3. 對比列表?

功能維度

Oracle 19c

Oracle 23ai

復制協議

Far Sync(異步/半同步復制)

Raft 協議(強一致性、快速故障切換)

分片管理

手動擴縮容,需人工調整分片策略

AI 驅動的自動化擴縮容與負載均衡

緩存機制

無原生緩存

True Cache 集成,加速分片查詢

存儲優化

傳統表空間管理

Shrink Tablespace 回收未使用空間

AI 集成

AI Vector Search、自動分片鍵優化

高可用性

RAC 集群增強

Raft 協議保障亞秒級故障切換

五、典型應用場景

跨國企業數據本地化
  • 利用 Raft 分布式 Sharding,將用戶數據按地域分片存儲(國內出海企業將用戶分片部署在 EU 區域,國內用戶數據留在本地),滿足合規要求。
高并發電商系統
  • 結合 JSON 關系二元性,將訂單表(按用戶 ID 分片)與 JSON 格式的用戶行為日志統一管理,避免跨分片查詢。
AI 驅動的推薦引擎
  • 使用 AI Vector Search 在分片數據庫中存儲商品特征向量,支持分布式語義搜索,提升推薦效率。

六、分片的挑戰與優化策略

數據傾斜與熱點問題
  • 優化策略:選擇高基數的分片鍵(如用戶 ID 而非性別),動態調整分片策略。
跨分片查詢復雜性
  • 優化策略:避免跨分片的 JOIN 或聚合操作,通過冗余存儲或中間層緩存結果。
分片鍵的選擇
  • 錯誤示例:使用低基數字段(如性別)作為分片鍵,導致數據分布不均。
  • 正確示例:使用高頻查詢字段(如訂單 ID)或業務邏輯相關的字段(如用戶 ID)。
動態擴展成本
  • 優化策略:預估數據增長趨勢,提前規劃分片數量;使用自動分片工具(國產 TiDB 就支持自動分片的特性)。

七、Sharing在Oracle 23ai實踐是不是最好的選擇呢?

Sharding 的本質是 通過分布式架構解決單節點數據庫的擴展性瓶頸,其核心在于合理設計分片策略、協調分布式事務,并通過動態管理應對數據增長和故障。無論是 Oracle 還是開源數據庫,Sharding 都是應對海量數據和高并發場景的關鍵技術,但其復雜性需要權衡性能、一致性和運維成本。
Oracle 23ai 的 Sharding 特性在 Oracle 19c 基礎上,通過 Raft 協議、True Cache、AI 自動化管理向量搜索集成,顯著提升了分布式數據庫的可靠性、性能和智能化水平。其核心變化體現在 更強的分布式一致性、更低的運維成本 以及 更靈活的數據模型支持,為大規模、高并發的云原生應用提供了更優解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908798.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908798.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908798.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分類與邏輯回歸 - 一個完整的guide

線性回歸和邏輯回歸其實比你想象的更相似 &#x1f603; 它們都是所謂的參數模型。讓我們先看看什么是參數模型&#xff0c;以及它們與非參數模型的區別。 線性回歸 vs 邏輯回歸 線性回歸&#xff1a;用于回歸問題的線性參數模型。邏輯回歸&#xff1a;用于分類問題的線性參數…

英語寫作中“每一個”each individual、every individual、every single的用法

一、Individual &#xff1a;個體&#xff0c;相對于團體&#xff0c;例如&#xff1a; Individual competition &#xff08;個人比賽&#xff09;&#xff0c;相對于team competition &#xff08;團體比賽&#xff09; Individual users &#xff08;個人用戶&#xff09;…

由于 z(x,y) 的變化導致的影響(那部分被分給了鏈式項)

? 本質問題&#xff1a;為什么鏈式法則中 ? F ? x \frac{\partial F}{\partial x} ?x?F? 不考慮 z z ( x , y ) zz(x,y) zz(x,y)&#xff1f; &#x1f50d; 一、關鍵是&#xff1a;偏導數的定義是什么&#xff1f; 我們從最根本的定義開始&#xff1a; ? F ( x , y…

python打卡day44@浙大疏錦行

知識點回顧&#xff1a; 預訓練的概念常見的分類預訓練模型圖像預訓練模型的發展史預訓練的策略預訓練代碼實戰&#xff1a;resnet18 作業&#xff1a; 嘗試在cifar10對比如下其他的預訓練模型&#xff0c;觀察差異&#xff0c;盡可能和他人選擇的不同嘗試通過ctrl進入resnet的…

十一(3) 類,加深對拷貝構造函數的理解

class ClassName { public: // 拷貝構造函數&#xff1a;參數是同類型對象的引用&#xff08;通常為 const 引用&#xff09; ClassName(const ClassName& other) { // 復制 other 的成員變量到當前對象 } }; 參數要求&#xff1a;必須是同類型對象的引用&#xff0…

網頁后端開發(基礎1--maven)

maven的作用&#xff1a; Maven是一款管理和構建Java項目的工具。 1.依賴管理&#xff1a; 方便快捷的管理項目依賴的資源&#xff08;jar包&#xff09; 不用手動下載jar包&#xff0c;只需要中maven中引用&#xff0c;maven會查找本地倉庫。若本地倉庫沒有&#xff0c;會直…

認識電子元器件---高低邊驅動

目錄 一、基本概念 二、關鍵參數對比 三、工作原理 &#xff08;1&#xff09;高邊驅動 &#xff08;2&#xff09;低邊驅動 四、典型的應用場景 五、如何選擇 一、基本概念 可以理解成&#xff1a;高低邊驅動是MOS/IGBT的一種應用方式 高低邊驅動是電路拓撲概念&#…

JavaScript 標簽加載

目錄 JavaScript 標簽加載script 標簽的 async 和 defer 屬性&#xff0c;分別代表什么&#xff0c;有什么區別1. 普通 script 標簽2. async 屬性3. defer 屬性4. type"module"5. 各種加載方式的對比6. 使用建議 JavaScript 標簽加載 script 標簽的 async 和 defer …

C/CPP 結構體、聯合體、位段內存計算 指南

C/CPP 結構體、聯合體、位段內存計算 指南 在C語言中&#xff0c;結構體、聯合體和位段是對數據的高級抽象&#xff0c;它們可以讓程序員以更易于理解的方式來操作復雜的數據結構。然而&#xff0c;這些結構在內存中的布局可能并不如它們的語法結構那樣直觀&#xff0c;特別是當…

ASR(語音識別)語音/字幕標注 通過via(via_subtitle_annotator)

文章目錄 1 VIA 官網資料2 語音/字幕標注3 鍵盤快捷鍵常規當一個時間片段被選中時圖像或視頻幀中的空間區域 1 VIA 官網資料 VIA官網&#xff1a;https://www.robots.ox.ac.uk/~vgg/software/via/ VIA官網標注示例&#xff1a;https://www.robots.ox.ac.uk/~vgg/software/via/…

mq安裝新版-3.13.7的安裝

一、下載包&#xff0c;上傳到服務器 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.7/rabbitmq-server-generic-unix-3.13.7.tar.xz 二、 erlang直接安裝 rpm -ivh erlang-26.2.4-1.el8.x86_64.rpm不需要配置環境變量&#xff0c;直接就安裝了。 erl…

高通平臺PCIE EP模式log丟失問題

高通平臺PCIE EP模式log丟失問題 1 問題背景2 問題分析2.1 對比USB2.1.1 Logtool優化2.1.2 Device mhi與fs對比2.2 優化方案2.2.1 Diag系統優化2.2.2 Host mhi優化3 最終成果1 問題背景 高通5G模組如SDX55\SDX62\SDX65\SDX72\SDX75等支持pcie ep模式。會通過pcie與host(如MT7…

Python應用輸入輸出函數

大家好!在 Python 編程中&#xff0c;輸入輸出函數是與用戶進行交互的橋梁。通過輸入函數&#xff0c;我們可以獲取用戶的輸入數據&#xff1b;通過輸出函數&#xff0c;我們可以向用戶展示程序的運行結果。對于初學者來說&#xff0c;掌握基本的輸入輸出操作是編程入門的重要一…

如何使用 Ansible 在 Ubuntu 24.04 上安裝和設置 LNMP

在當今世界,自動化是有效管理和部署 Web 應用程序的關鍵。Ansible 是一個強大的自動化工具,它是一款開源軟件配置、配置管理和應用程序部署工具。本文將指導您使用 Ansible 在 Ubuntu 服務器上安裝 LNMP 堆棧(Linux、Nginx、MySQL、PHP)。 先決條件 為了執行本指南中討論的…

Xela矩陣三軸觸覺傳感器的工作原理解析與應用場景

Xela矩陣三軸觸覺傳感器通過先進技術模擬人類觸覺感知&#xff0c;幫助設備實現精確的力測量與位移監測。其核心功能基于磁性三維力測量與空間位移測量&#xff0c;能夠捕捉多維觸覺信息。該傳感器的設計不僅提升了觸覺感知的精度&#xff0c;還為機器人、醫療設備和制造業的智…

RK3288項目(四)--linux內核之V4L2框架及ov9281驅動分析(中)

目錄 一、引言 二、V4L2其他部件驅動分析 ------>2.1、mipi-dphy ------------>2.1.1、dts ------------>2.1.2、driver ------------>2.1.3、notifier機制 ------------>2.1.4、異步回調 ------------>2.1.5、V4L2 subdev ------>2.2、mipi-csi…

容器-使用slim減少10x+大模型鏡像

slim&#xff08;原docker-slim&#xff09;是一個開源工具&#xff0c;全稱SlimToolkit&#xff08;https://github.com/slimtoolkit/slim&#xff09;&#xff0c;用于基于已有的Docker鏡像減小鏡像的大小&#xff0c;同時盡可能保留容器的功能。它通過分析鏡像的運行環境和應…

Golang基礎學習

?????????? 初見golang語法 go項目路徑 cd $GOPATH //ls可以看到有bin,pkg,src三個文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序執行&#xff1a; go run hello.go//如果想分兩步執行&#xff1a; go build hello.go ./hello導入包的…

OPenCV CUDA模塊圖像處理-----對圖像執行 均值漂移濾波(Mean Shift Filtering)函數meanShiftFiltering()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 在 GPU 上對圖像執行 均值漂移濾波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于圖像分割或平滑處理。 該函數將輸入圖像中的…

電路圖識圖基礎知識-遠程/本地啟停電動機(二十一)

在實際的生產中&#xff0c;經常會需要電動機的控制可以就地控制和遠方控制&#xff0c;在集中的控制室中&#xff0c;遠 方控制電動機的啟動、停止。在就地設置啟動、停止按鈕或是緊急停車按鈕&#xff0c;以滿足生產的需要。 1.遠程、多點及連鎖控制電動機電路 2.元器件配置…