Oracle 20C 多租户_1.2 数据库与实例介绍
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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341