Oracle的Sharding技術

shilei1發表於2015-12-30
作者:eygle | English 【轉載時請標明和作者資訊】|【恩墨學院 OCM培訓傳DBA成功之道】
連結:
IMG_1100.jpg

在2015年OOW大會,國內很多小夥伴們一直非常關心Oracle Database 12.2中的Sharding技術實現,可是要知道在Larry Ellison的演講中,根本就沒有提到這個特性,而在Andrew Mendelsohn的Session中,這一特性也僅僅只有一行字:Sharding 。

這說明Sharding這一特性,在Oracle現階段的資料庫產品戰略中並不重要,Andy也說,可能僅有少數使用者才可能用到這一特性。

Oracle Sharding的實現

簡單來說,Oracle的Sharding技術就是通過分割槽(Partioning)技術的擴充套件來實現的。以前一個表的分割槽可以存在於不同的表空間,現在可以存在於不同的資料庫。

不同分割槽存在於不同資料庫,這就將資料隔離了開來,Sharding就此實現。

IMG_1139.jpg

Sharding如何實現資料路由?

既然資料被拆分,那麼在訪問時如何實現資料路由呢?在Sharding的架構裡,存在一個"Shard Directories"目錄庫來管理Sharding的分佈,當應用通過Sharding Key來訪問資料時,連線池就會給出訪問路徑,快速指向需要訪問的Shard。如果應用不指定分割槽鍵訪問,則需要通過協調庫-Coordinator DB來協助判定。

IMG_1143.jpg

那麼這裡提到的連線池是什麼呢?

可能很少有人注意到,在Oracle 12.1版本中增加的一個新的產品元件 GDS - Global Data Services,通過GDS可以構建一個訪問"連線池",為後端的資料庫訪問提供代理和路由服務,前面提到的Shard Directories,正是在GDS中配置的。

GDS05.png

 

如何建立Sharding資料表?

在建立Sharding物件之前,需要先建立表空間集合 - Tablespace Set,表空間集合包含在不同資料庫中的表空間定義,也就是將以前針對不同分割槽建立的表空間轉移到不同的資料庫中。

IMG_1168.jpg

如何配置連線池?

關於連線池的配置,實際上在GDS的文件中,早有描述,以下圖中則詳細描述了Sharded Database的部署,其中最先建立的是shardcatalog,建立了一個Shard的目錄配置資料庫,而GSM - Global Service Managment,就是全域性的服務管理配置。

IMG_1165.jpg
關於GDS的配置,以下一圖 - 一目瞭然:

GDS06.png
如果在12.1中還看不清楚 GDS的作用,現在12.2中,Sharding中的重要作用就日益凸現出來。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1967721/,如需轉載,請註明出處,否則將追究法律責任。

相關文章