標籤:運行 seed 請求 模板 cto 關聯 art sql 串連池
一: Multitenant Architecture (12.1.0.1)
多租戶架構是Oracle 12c(12.1)的新增重磅特性,內建的多分租(Multi-tenancy),一個容器資料庫(container database)中可以存放多個Pluggable Databases,每個Pluggable Database均獨立於其他Pluggable Database。
對於外部應用程式和開發人員來說,Pluggable Databases看上去就是一個普通的12.1版本之前的單一資料庫。DBA可以串連到Pluggable Database並僅僅管理該資料庫,超級DBA可以串連到容器資料庫並如同管理單系統鏡像那樣管理所有Pluggable Database。
Pluggable Databases特性帶來的好處:
1、集中式管理多個資料庫執行個體。
2、通過PDB$SEED模板快速配置新資料庫。
3、加速現有資料庫打補丁和升級的速度。
4、通過PDB拔插移植到更高版本中的其他CDB中進行修補或升級。
5、通過將現有資料庫的拔插和插拔快速重新部署到新平台(遷移)。
二: Oracle 12c In-Memory (12.1.0.2) Oracle 12c In-Memory提供了一種獨特的雙格式架構,可以使用傳統的行格式和新的記憶體列格式在記憶體中同時儲存表。 In-Memory模式下,SQL Optimizer將自動分析查詢類型,對分析和報表採用In-Memory列格式,OLTP則採用行格式運行,透明地提供了雙方的最佳效能,資料庫自動維護行和列格式之間的完全事務一致性,就像今天保持表和索引之間的一致性一樣。 新的列格式是純記憶體格式,並且在磁碟上不會持久存在,因此不會有額外的儲存成本或儲存同步問題。
對於傳統的OLTP系統,為了實現快速查詢,往往採用分析型索引的方式,在這樣的架構下,向表中插入一條記錄需要同時更新數十個索引,OLTP系統效能被迫降低。12c In-Memory通過用記憶體列儲存取代分析型索引,純記憶體中的列式儲存能夠快速響應資料變化,可達到2倍至20倍的壓縮比例,其粒度還支援表級與分區級,並適用於所有主流的硬體平台,使得OLTP系統中可以給予任意一列實現快速分析,OLTP和批處理的速度得到大幅提升。
在測試當中,列格式的每CPU核心可達到10億條/秒的掃描速度,而行格式僅能達到百萬條,效能的提升高達一百倍以上。不僅如此,通過將多表的串連操作轉化為高效的列掃描,表連線速度也加快10倍。
三: Oracle Sharding (12.2.0.1)
Oracle Sharding是用於自訂設計的OLTP應用程式的可擴充性和可用性功能,可以在不共用硬體或軟體的Oracle資料庫池之間分發和複製資料。 將資料庫池作為單個邏輯資料庫呈現給應用程式。 應用程式可以在任何平台上將任何層級(資料,事務和使用者)彈性地縮放(簡單地通過在池中添加資料庫(分區))。
簡單來說,Oracle的Sharding技術就是通過分區(Partioning)技術的擴充來實現的。以前一個表的分區可以存在於不同的資料表空間,現在可以存在於不同的資料庫。
與其他NOSQL型的sharding結構相比,Oracle Sharding提供了卓越的運行時效能和更簡單的生命週期管理。 它還提供企業RDBMS的優勢,包括:關係模式,SQL和其他編程介面,支援複雜資料類型,線上模式更改,多核可擴充性,進階安全性,壓縮,高可用性,ACID屬性,一致性等等。
Oracle Sharding使用GDS(Global Data Services)架構來自動部署和管理sharding和複製技術。GDS(GDS是Oracle RDBMS 12.1的新特性)也提供負載平衡和SDB(sharded database)中的基於位置的路由功能。
Shard目錄(Shard directors)使用GDS framework的全域服務管理組件(global service manager component)來提供應用程式層請求到shard的直接路由。shard目錄(Shard directors)是一個單獨的資料庫,它用來儲存SDB(Sharding database)配置資料和提供其他相關功能,比如shard的交叉查詢和集中管理。可以使用GDS是GDSCTL工具可以用來配置SDB。
Oracle Sharding的分區架構(Partitioning Infrastructure)分區在資料表空間層級跨Shards分布,每個資料表空間關聯一個特定的shard。一個shard表的每一個分區放單獨的資料表空間,並且每個資料表空間關聯到一個特定的shard。根據不同的sharding方法,這個關聯可以自動建立或者根據定義建立。儘管一個shard表的多個分區放在多個單獨主機的資料庫上(這些資料庫完全獨立,不共用CPU、記憶體等軟體和硬體),但是應用訪問表時就如同訪問一個單獨資料庫中的分區表一樣。應用發出的SQL語句不需要依賴shard號和shard的物理配置。
Sharding如何?資料路由?
既然資料被拆分,那麼在訪問時如何?資料路由呢?在Sharding的架構裡,存在一個“Shard Directories”目錄庫來管理Sharding的分布,當應用通過Sharding Key來訪問資料時,串連池(GDS - Global Data Services)就會給出訪問路徑,快速指向需要訪問的Shard。如果應用不指定分區鍵訪問,則需要通過協調庫-Coordinator DB來協助判定。
Oracle 12c新特性(For DBA)