Oracle 20C 多租戶_1.2 資料庫與例項介紹

orastar發表於2020-04-21

1.2  資料庫和例項

Oracle 資料庫伺服器由一個資料庫和至少一個資料庫例項組成,通常簡稱為一個例項。

因為一個例項和一個資料庫是如此緊密地聯絡在一起,所以 Oracle 資料庫這個術語有時同時指例項和資料庫。 最嚴格地說,這些術語有下列含義 :

l   資料庫

資料庫是一組位於磁碟上的檔案,用於儲存使用者資料。 這些資料檔案可以獨立於資料庫例項而存在。 Oracle 資料庫 20c 開始, 資料庫 特指多租戶容器資料庫 (CDB) 、可插拔資料庫 (PDB) 或應用程式容器的資料檔案。

l   例項

例項是一組命名的記憶體結構,用於管理資料庫檔案。 資料庫例項由共享記憶體區域 ( 稱為系統全域性區域 (SGA)) 和一組後臺程式組成。 例項可以獨立於資料庫檔案而存在。

 

1.2.1  多租戶架構

多租戶體系結構使 Oracle 資料庫成為 CDB

每個 Oracle 資料庫必須包含或能夠包含另一個資料庫。 例如, CDB 包含 pdb ,而應用程式容器包含應用程式 pdb PDB CDB 或應用程式容器包含,而應用程式容器由 CDB 包含。

Oracle Database 20c 開始,多租戶容器資料庫是唯一受支援的體系結構。 在以前的版本中, Oracle 支援非容器資料庫 (non-container databases, non-CDBs)

 

1.2.1.1  CDBs

一個 CDB 包含一個或多個使用者建立的 pdb 和應用程式容器。

在物理級別上, CDB 是一組檔案 : 控制檔案、線上重做日誌檔案和資料檔案。 由資料庫例項管理以上檔案稱為 CDB

下圖顯示了一個 CDB 和一個相關的資料庫例項。

·          1-1 資料庫例項與 CDB

 

 

 

 

 

1.2.1.2  PDBs

PDB schemas schema 物件和 nonschema 物件的可移動集合,在應用程式中作為單獨的資料庫出現。

在物理級別,每個 PDB 都有自己的一組資料檔案,用於儲存 PDB 的資料。 CDB 包括所有 pdb 資料檔案,以及一組儲存 CDB 本身後設資料的系統資料檔案。

要移動或存檔 PDB ,可以拔掉它。 unplugged PDB PDB 資料檔案和後設資料檔案組成。 unplugged PDB 在插入到 CDB 之前是不可用的。

下圖顯示了一個名為 MYCDB CDB

·          1-2 CDB 中的 PDBs

 

在物理上, MYCDB 是一個 Oracle 資料庫,即與一個例項關聯的一組資料檔案。 儘管在 Oracle Real 應用程式叢集中可以有多個例項,但 MYCDB 只有一個資料庫例項和一組資料庫檔案。

MYCDB 包含兩個 pdb: hrpdb salespdb 如圖 1-2 所示,這些 pdb 在各自的應用程式中顯示為單獨的、獨立的資料庫。 應用程式不知道它是連線到 CDB 還是 PDB

要管理 CDB 本身或其中的任何 PDB ,您可以連線到 CDB root root 是所有 pdb 和應用程式容器所屬的模式、模式物件和非模式物件的集合。

 

·          1.2.1.3 應用程式容器

應用程式容器是 CDB 中一個可選的、使用者建立的容器,用於儲存一個或多個應用程式的資料和後設資料。

application( 也稱為主應用程式定義 ) 是儲存在 application root  中的一組已命名的、版本化的公共資料和後設資料。 例如, application 可能包括表、檢視、使用者帳戶和 PL/SQL 包的定義,這些定義對於一組 pdb 是通用的。

 

在某些方面,應用程式容器充當 CDB 中的特定於應用程式的 CDB CDB 本身一樣,一個應用程式容器可以包含多個應用程式 pdb ,並允許這些 pdb 共享後設資料和資料。 在物理級別上,應用程式容器 PDB 一樣 , 有自己的一組資料檔案。

例如, SaaS 部署可以使用多個應用程式 pdb ,每個 pdb 用於一個單獨的客戶,該客戶共享應用程式後設資料和資料。 例如,在下面的圖中, sales_app 是應用程式根目錄中的應用程式模型。 名為 cust1_pdb 的應用程式只包含客戶 1 的銷售資料,而名為 cust2_pdb 的應用程式只包含客戶 2 的銷售資料。 對於單個客戶 PDBs ,可以進行插入、撥出、克隆和其他 pdb 級操作。

·          1-3 SaaS 用例

 

·          1.2.2 Sharding 架構

Oracle Sharding 是一種基於跨多個 pdb 的資料水平分割槽的資料庫擴充套件技術。 應用程式將 PDBs 池視為單個邏輯資料庫。

sharding 對於 OLTP 應用程式的主要好處包括線性可伸縮性、故障包容和地理資料分佈。 sharding 非常適合在 Oracle 雲中部署。 與實現 sharding NoSQL 資料儲存不同, Oracle sharding 提供了 sharding 的優點,同時又不犧牲企業 RDBMS 的功能。

sharding 架構中,每個 CDB 都託管在一個專用伺服器上,伺服器上有自己的本地資源 :CPU 、記憶體、 flash 或磁碟。 可以將 PDB 指定為 shard 來自不同 cdb PDB  shard 組成一個邏輯資料庫,稱為 sharded   資料庫。 同一個 CDB 中的兩個 shard 不能是同一個 sharded 資料庫的成員。 但是,在同一個 CDB 中,一個 PDB 可以在一個 sharded 資料庫中,另一個 PDB 可以在一個單獨的 sharded 資料庫中。

水平分割槽將一個資料庫表拆分,每個分片包含具有相同列但不同行的子集。 以這種方式分割的表也稱為 sharded table 下圖顯示了一個經過水平分割的 sharded table ,它橫跨三個 shards ,每個 shard 都是單獨 CDB 中的 PDB

 

1-4 水平分割槽的 sharded table

以下示例是跨多個 CDBs 儲存客戶帳戶資料。 例如, ID 28459361 的客戶可以查詢他的記錄。 下圖顯示了一種可能的結構。 客戶請求透過連線池路由,其中分片控制器 ( 網路監聽器 ) 將請求定向到適當的 PDB 分片,該分片包含所有客戶行。

 

Figure 1-5 Oracle Sharding Architecture

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

相關文章