您好,登錄后才能下訂單哦!
Oracle 數據庫服務器由一個數據庫和至少一個數據庫實例組成,通常簡稱為一個實例。
因為一個實例和一個數據庫是如此緊密地聯系在一起,所以 Oracle 數據庫這個術語有時同時指實例和數據庫。 最嚴格地說,這些術語有下列含義 :
l 數據庫
數據庫是一組位于磁盤上的文件,用于存儲用戶數據。 這些數據文件可以獨立于數據庫實例而存在。 從 Oracle 數據庫 20c 開始, “ 數據庫 ” 特指多租戶容器數據庫 (CDB) 、可插拔數據庫 (PDB) 或應用程序容器的數據文件。
l 實例
實例是一組命名的內存結構,用于管理數據庫文件。 數據庫實例由共享內存區域 ( 稱為系統全局區域 (SGA)) 和一組后臺進程組成。 實例可以獨立于數據庫文件而存在。
多租戶體系結構使 Oracle 數據庫成為 CDB 。
每個 Oracle 數據庫必須包含或能夠包含另一個數據庫。 例如, CDB 包含 pdb ,而應用程序容器包含應用程序 pdb 。 PDB 由 CDB 或應用程序容器包含,而應用程序容器由 CDB 包含。
從 Oracle Database 20c 開始,多租戶容器數據庫是唯一受支持的體系結構。 在以前的版本中, Oracle 支持非容器數據庫 (non-container databases, non-CDBs) 。
一個 CDB 包含一個或多個用戶創建的 pdb 和應用程序容器。
在物理級別上, CDB 是一組文件 : 控制文件、在線重做日志文件和數據文件。 由數據庫實例管理以上文件稱為 CDB 。
下圖顯示了一個 CDB 和一個相關的數據庫實例。
· 圖 1-1 數據庫實例與 CDB
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。