因为云计算技术已向专业领域发展,除了使用虚拟软件化Hypervisor技术实现基础设施云化外,基于容器的虚拟化技术在操做系统、数据库平台云化等领域也获得了很大的发展与应用。数据库即服务 (DBaaS)也在这样的技术背景下应运而生。数据库
数据库即服务Database As Services
数据库即服务 (DBaaS) 是一种数据库平台建设架构和数据管理运营方法,在云计算的框架下,可以将数据库功能做为服务提供给一个或多个应用使用。因此数据库即服务必须支持如下功能:安全
- 不一样应用租户共享数据库平台的计算、存储、网络资源;而且支持这些资源的灵活调配及资源隔离。
- 以按需、自助式方式供应数据库服务,包括数据实例分配、存储空间分配等能力的供应和管理。
- 基于数据库云平台,提供不一样等级的服务保障。结合已有的定级标准,对不一样的IT系统实施差别化的等级服务保障体系。
- 以细粒度方式计量不一样数据库服务租户的使用状况,可为各独立数据库租户提供计量、计费功能。
在技术实现上能够有两种技术选择实现数据库即服务:服务器
- 基于IaaS层提供的基础设施,在不一样的虚拟机中部署相关数据库平台软件服务。
- 直接经过数据库软件平台的容器技术来实现数据库软件、硬件(服务器、存储)的统一管理、部署、资源分配和回收。
目前,第一种方式在实际应用中会存在管理的复杂性、兼容性问题,甚至还可能存在严重的性能瓶颈和总体运行风险的问题。例如,某业务系统在基于X86服务器上经过VM虚拟化技术来实现IaaS层资源池,再部署Oracle数据库和业务应用,经过实际测试发现, 性能损耗超过40%以上;并且还存在Oracle RAC数据库没有在VMWare平台获得厂商官方支持的问题,一旦遇到系统问题,诊断、问题解决都存在很大的潜在运行风险。网络
因此,经过数据库平台自身容器技术造成数据库PaaS层服务,是目前核心数据库系统、特别是Oracle数据库用户进行数据库云建设的主要技术选择。经过Oracle数据库软件平台结合相关的硬件基础设施,造成数据库共享资源池,而后按照各个应用需求在数据库资源池中申请硬件资源、得到数据库服务,并且支持不断部署不一样的业务应用在云平台中,实现系统的集中化整合。架构
这样能够有效的节省计算和存储资源、机房空间、耗电和配套、人力维护,提升系统的可靠性、扩展能力、计算能力,避免出现业务要求和的系统支撑能力不匹配问题。负载均衡
Oracle 数据库服务的四种部署模式
▲ Oracle数据库服务的四种部署架构框架
1. 基于虚拟机部署数据库(IaaS模式)
第一种方式是在虚拟机上部署Oracle数据库,这种模式共享的是物理服务器,在物理服务器上增长了hypervisor虚拟化层,虚拟化层之上的每一个虚拟机都会运行单独的操做系统,之上再部署独立的数据库实例。运维
优点:性能
- 资源隔离性好,操做系统级别的隔离。
- 服务器虚拟化技术较成熟。
劣势:测试
- 只共享物理服务器,资源共享度不高,且服务器虚拟化的CPU和IO损耗很大。
- IaaS层服务器虚拟化只能实现计算资源“大分小” 。
- 只支持数据库单实例运行,性能扩展能力差,高可用切换慢。
- 虚拟化软件须要共享单台存储盘阵,致使I/O性能不佳。
部署定位:
- 这种方式适合提供对可用性、性能要求不高的小型数据库服务 。
2. 基于共享服务器集群部署多个数据库实例(PaaS模式)
在一组共享的物理服务器集群上部署Oracle数据库,这样的一组物理服务器须要采用同构的服务器和同版本的操做系统,部署运行Oracle的Grid Infrastructure集群软件,在此集群之上能够部署一个或多个数据库实例(能够是单节点/实例的数据库,也能够是多节点RAC数据库),这种模式共享的是物理服务器和操做系统,但每一个应用仍是有独立的数据库实例,从而有各自独立的SGA内存管理、后台进程等等。
优点:
- 资源共享度、整合密度高于虚拟机模式。
- 每一个应用系统有本身独立的数据库实例,很好的资源隔离性。
- 良好的性能,支持服务器计算能力和存储容量及IO能力的横向扩展。
劣势:
- 共享了物理服务器和操做系统,但每一个数据库实例仍独享本身的内存、后台进程,当整合数据库数量较多时,这些重复的基础功能形成CPU和内存重复开销,资源共享度、整合密度仍有待改善。
部署定位:
- 这种方式适合提供整合数据库数量不是特别多、或是规模较大的数据库服务。
3. 共享一个数据库实例部署多个Schema(PaaS模式)
在共享的一个数据库实例内,经过开通多个schema及其关联对象提供数据库服务,数据库实例和其后的操做系统、服务器硬件平台均为共享的。
优点:
- 资源共享比例高,CPU内存使用更高效,性价比好。
- 数据库服务开通速度快。
- 良好的性能,支持服务器计算能力和存储容量及IO能力的横向扩展。
- 很是适合不一样用户间须要大量数据共享的场景。
劣势:
- 隔离程度低,只能作到数据库用户Schema级别隔离,访问不一样Schema的对象只须要受权就能够。
- 每一个数据库用户不能独立进行数据库管理,只能一块儿进行数据库备份和恢复。
部署定位:
- 这种方式适合对数据库隔离性要求不高、或是用户间须要大量数据共享的场景。
4. 使用DB 12C多租户功能,经过可插拔数据库提供数据库服务(PaaS模式,12C新特性)
Oracle 数据库12c版本,新增多租户功能,使用这个特性,能够将Oracle数据库按照一个统一的容器数据库CDB + 多个可插拔数据库PDB的方式进行部署。
容器数据库层统一包含了SGA内存管理、后台进程、数据库启动参数文件/redo log/Undo 等公用功能(以前的独立数据库实例,每一个数据库有独立的SGA区、后台进程,如今再也不须要了),可插拔数据库PDB则管理本身的一组表空间,其中包括 SYSTEM 和 SYSAUX、以及用户业务表空间。
采用Oracle 数据库12c部署数据库云,用户的数据库能够采用可插拔数据库PDB进行供应,这些PDB部署在统一的容器数据库CDB之上,共享一个数据库实例,也共享了后台的物理服务器和操做系统,资源共享程度很高。
同时用户的PDB之间还保持了很好的隔离性,从用户的使用来看,PDB和传统独立实例的数据库是没有区别的,应用无需改造。相对于独立的数据库实例,12c的多租户模式架构的资源共享程度很高,节约了重复的数据库系统开销。
优点:
- 资源共享比例最高,CPU和内存使用更高效,整合密度和投资性价比最佳。
- 数据库服务开通速度最快。
- 良好的性能,支持服务器计算能力和存储容量及IO能力的横向扩展。
- 资源隔离性好(用户使用感觉和独立实例数据库一致)。
额外工做:
- 数据库升级/迁移到12c版本,原有应用功能须要进行测试验证。
部署定位:
- 适用于灵活提供各类规模、可用性、安全等级的数据库服务。
部署模式推荐
在条件容许的状况下,将数据库升级到Oracle 12C以上或者直接部署Oracle 12C以上版本,采用DB 12C部署数据库,DB 12C的多租户特性能够很好的和RAC集群进行结合,12C的容器数据库CDB可以部署在一台或多台物理服务器节点构成的集群上,能够灵活控制每一个PDB的服务运行在集群一个或多个节点上。
同时集群伸缩性(可扩展性)也很是好,当整个集群的负荷较高时,能够在线为集群增长物理服务器节点,并方便的调整各个PDB服务的运行节点,进行负载均衡,下降整个集群的负荷。
数据库云的全部PDB的数据能够均匀打散分布在数据库存储资源池的全部存储设备上,而且支持跨存储设备的镜像。当添加/删除新存储设备时、或是硬件出故障时(单块磁盘损坏/单台存储设备损坏),能够进行在线数据自动重分布,使负载均衡和跨存储设备的数据镜像保护仍然得以保持,重分布的过程当中数据可正常读写访问,对上层的数据库和应用透明。
经过添加新存储设备、在线数据自动重分布,可使数据库存储集群总体容量和IO能力线性的横向扩展。
做者:黄史浩