Oracle数据库分析(架构篇)
Oracle 的数据库产品是公司最起家的业务。Oracle的数据库业务发展历程,与全球数据库发展历史交织在一起,也与 Oracle整个公司的发展绑定在一起。Oracle 的数据库产品包括两种。
下载链接:
第一个是Oracle 自己的数据库产品,也就是 Oracle Database。第二个是 MySQL。关于 MySQL 与 Oracle 的关系,也是从原来的竞争对手,通过 Sun 这家公司而成为 Oracle 自己的产品。目前 Oracle 的数据产品已经更新到 Oracle Database 18c,其提供了一个高性能、高可靠和高安全的平台,可以在云,本地或混合云进行部署。
开源数据库的竞争,关系型数据库也面临着来自于非关系型数据库(NoSQL)的竞争。最近几年,在新的计算环境下,Oracle 的数据库产品面临的外部挑战和外部竞争也越来越大。我们经常看到,亚马逊、阿里、Salesforce 等云计算厂商也都在基于开源数据库,研发自主的数据库产品。商业数据库&开源数据库,关系型数据库和非关系型数据库,未来又将走向何方?
从 Oracle 公司自身来看,Oracle 可以说是全球软件巨头,体量虽然没有 Microsoft 那么大,但(1)在数据库和应用软件领域,Oracle 的确实有其难以撼动的地位。(2)在 IT 布局的完备性方面,Oracle 应该是继 IBM 之后(在 IBM 发展中,其业务发生多次调整和分拆),在全球 IT巨头中布局最为完整、最为完善的一家。我们这里所说的 IT 完备性主要是基于 IT 基础产业链角度。
在 Oracle 的发展过程中,其业务种类越来越多样化,既包括软件、也包括硬件;软件中既包括应用软件、也包括基础软件。如何更好的理解Oracle 的每个业务。从这篇文章开始,我们将把 Oracle 的主要业务,做一系列的讲解。以便于我们对国内相应市场和相应公司的产品做比较。
数据库是 Oracle 创立之初的业务,也是 Oracle 其他业务发展的基础。即使目前,数据库业务收入在 Oracle 各业务中占比最大,也是 Oracle最赚钱的业务之一。从下面这个数据我们可以看出,数据库业务收入占比在 35%-40%左右。可知,数据库业务对于 Oracle 而言是非常重要的业务。
如何理解数据库?从 IT 基础架构来看,数据库是计算机底层架构的核心基础软件。我们通常说计算机三大基础软件:操作系统、数据库、中间件。如果没有数据库,计算机的数据处理速度(读写的速度)可能就没有这么迅速。对于非 IT 专业的人,经常会问,数据库有什么用?
数据库,从字面来理解就是保存数据的仓库。按照正式语言来定义,数据库是按照一定的结构,来组织、存储和管理数据的仓库。在计算机中,它一般是由一个或者一组文件构成。在以上的描述中,我们需要关注几个关键词:结构、组织、存储、管理。
Oracle 数据库服务器大致分为两个主要部分:1)Oracle instance (数据库实例,上半部分)2)Database(数据库,下半部分)。
Oracle 服务器=实例+数据库。实例=SGA(实例内存)+后台进程内存=SGA+PGASGA=Database Buffer Cache (数据库高速缓存区缓存)+Share Pool (共享池)+Redo Log Buffer(日志缓存区)。
用户不能直接连接到数据库,而是用户先发出一个用户进程, 用户进程和 Oracle 服务器发出的服务器进程交互,然后服务器进程再和实例交互,最后实例和底层数据库交互,从而实现用户和数据库的交互。
我们以 Oracle 数据库为例,来介绍下数据库的体系结构,这样更有利于我们对数据库的理解。从存储结构上,oracle 数据库可以分为物理存储结构和逻辑存储结构。
物理存储结构:主要由数据文件,控制文件,重做日志文件 3 种类型的文件组成。
1)数据文件:存储数据库数据的文件。数据库中的所有数据最终都保存在数据文件中。但一个数据文件只对应一个数据库,而一个数据库可以包含多个数据文件。
2)控制文件:是一个很小的二进制文件,用于维护和描述数据库的物理结构。控制文件十分重要,存放着数据库中的数据文件和日志文件,一旦该文件受损,数据库将无法正常工作。
3)重做日志文件:用于记录数据库中所有修改信息的文件,简称日志文件。该文件是进行数据库备份与恢复的重要手段,可以保证数据库的安全,并且该文件不是唯一存在的,在一个日志文件组中,日志文件最多可以有五个。
除了上述文件,还有参数文件,备份文件,归档重做日志文件,警告、跟踪日志文件。
逻辑存储结构:主要包括表空间,段,区和数据块,它们的关系为:数据库=N*表空间=N*段=N*区=N*数据块。
1)表空间:Oracle 中最大的逻辑存储结构,与物理上的一个或多个数据文件相对应,大小等于所有数据文件大小的总和。
2)段:一般是数据库终端用户将处理的最小存储单位,段的数据空间是以数据区为单位的,根据存储数据的特征,可以分为 4 种类型(数据段,索引段,临时段,回退段)。
3)区:磁盘空间分配的最小单位,有一个或多个数据块组成。
4)数据块:用来管理存储空间的最基本单位,也是最小的逻辑存储单位数据块由块头部,表目录,行目录,空闲空间,行空间组成。
从实例结构上,Oracle 可以分为进程结构和内存结构。
进程结构:主要包括:DBWn 进程,LGWR 进程,CKPT 进程,SMON进程,PMON 进程,ARCn 进程。
DBWn 进程:(Database writer,数据库写入)进程,用于管理数据缓冲区,以便用户总能找到空闲的缓冲区,通过延迟写优化磁盘 I/O 读写,将所有修改后的缓冲区数据写入数据文件。
LGWR 进程:(log writer,日志写入)进程,负责管理日志缓冲区的一个后台程序,用于将缓冲区的数据写入磁盘的日志文件。
CKPT 进程:(check point,检查点或检验点)进程,一般在日志切换时自动产生,用于缩短实例恢复所需时间。
SMON 进程:(system monitor,系统监控)用于数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中的条目应用于数据文件,执行崩溃恢复,还用于系统重新启动期间清理所有表空间的临时段。
PMON 进程:(process monitor,进程监控)进程,用于在用户出现故障时执行进程恢复操作,负责清理内存存储区和释放该进程所使用的资源。
ARCO 进程:(archive process,归档)进程,用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。只有当 oracle 数据库运行在归档模式下是才会产生ARCN 进程。
RECO 进程:(recovery,恢复)进程,存在于分布式数据库系统中,用于自动解决在分布式数据库中出现的事务故障。
内存结构:主要分为系统全局区(SGA),程序全局区(PGA)。内存结构是影响数据库性能的主要因素之一。
系统全局区(system global area)是 Oracle 为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。在一个数据库实例中,可以有多个用户进程,这些用户进程可以共享系统全局区的数据。该区域包括的分区:
1)数据缓冲区:用于存储从磁盘文件中读取的数据,供所有用户共享。
2)日志缓冲区:用于存储数据库的修改操作信息。
3)共享池:用于保存最近执行的 SQL 语句,PL/SQL 程序的数据字典信息,它是对 SQL 语句和 PL/SQL 程序进行语法分析,编译和执行的内存区域。
4)大型池:用于提供一个大的缓冲区功数据库的备份与恢复数据使用,是 SGA 的可选区域。
5)JAVA 池:用于在数据库中支持 JAVA 的执行。
程序全局区(program global area):是 oracle 系统分配给一个进程的私有内存区域。
数据库:关系型数据库&非关系型数据库。在数据库产品的演进中,其基于的数据模型也在发生变化。根据数据模型的不同,数据库可以分为关系型数据库和非关系型数据库。关系型数据库的底层数据模型是关系模型。非关系型数据库是一个大类,其又可以分为不同种类的数据库。比如,面向高性能并发读写的 key-value 数据库,面向海量数据访问的面向文档数据库,面向可扩展性的分布式数据库等。
关系型数据库,是指以关系数学模型来表示的数据,关系数学模型中以二维表的形式来描述数据。关系型数据库是存储在计算机上的、可共享的、有组织的关系型数据的集合。
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB 等。
关系型数据库必须具备 ACID 特性,ACID 分别是:Atomic 原子性,Consistency 一致性,Isolation 隔离性,Durability 持久性。
数据库与 SQL 的关系?SQL 的全称叫 Structured Query Language,中文名叫结构化查询语言。它是一种特殊目的的编程语言,用来支持数据库查询、更新和管理。SQL 语言是 1974 年由 Boyce 和 Chamberlin 提出的一种介于关系代数与关系演算之间的结构化查询语言,是一个通用的、功能极强的关系型数据库语言。
非关系型数据库:指非关系型的、分布式的、且一般不保证遵循 ACID原则的数据存储系统。非关系型数据库以键值存储,且结构不固定。每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。
非关系型数据库,又被称为 NoSQL,是 Not Only SQL 的简写,意思是说不仅仅是 SQL。下边列出了非关系型数据库的四大分类,分别是键值对存储型、文档存储型、基于列的数据库、图形数据库。1)键值对存储:Redis2)文档存储:MongoDB3)基于列的数据库:Cassandra、HBase4)图形数据库:Neo4j。
事务型数据库&分析型数据库。数据库根据数据处理方式的不同,可以分为事务型数据库和分析型数据库。两者面向的目标不一样。目前大部分的数据库是事务型数据库。
数据处理大致可以分成两大类:联机事务处理 OLTP(on-line transaction processing)、联机分析处理 OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
Oracle 的数据库产品。Oracle 的数据库产品是公司最起家的业务。Oracle 的数据库业务发展历程,与全球数据库发展历史交织在一起,也与 Oracle 整个公司的发展绑定在一起。
Oracle 的数据库产品包括两种。第一个是 Oracle 自己的数据库产品,也就是 Oracle Database。第二个是 MySQL。关于 MySQL 与 Oracle的关系,也是从原来的竞争对手,通过 Sun 这家公司而成为 Oracle 自己的产品。
Oracle 的数据库产品主要解决的是数据库的高可靠性问题(注:衡量数据库产品的核心指标在于五个方面:高可用性(High Availability)、高性能(High Performance)、高可管理(High Manageability)、高安全(High Security Ability)、高数据服务能力(High Data Service Ability)五个领域)。Oracle 数据库核心优势在于高效、安全、稳定等。
从Oracle 9i 开始,Oracle 引入新的技术:Oracle RAC,RAC 是指 real application clusters,译为“实时应用集群”。RAC 是 Oracle 新版数据库中采用的一项新技术,是高可用性的一种,也是 Oracle 数据库支持网格计算环境的核心技术。用来在集群环境下,实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是 Oracle 数据库支持网络计算环境的核心技术。
Oracle RAC 主要支持 Oracle9i、10g、11g,12C 版本,可以支持 24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。
从 Oracle 12c 开始,Oracle 逐步开始推出 Options 产品线,推动企业数据中心的整合、数据集中和网格计算的发展。这一段 Oracle 的数据库进一步强化了数据的高可靠性,同时重点发展的地方在数据库的速度和应对云计算对数据库的需求。(1)Exadata 数据库一体机和内存选件(in-memory Option)的推出,用来提高性能、简化架构,提高数据库的速度。(2)Oracle 12c 的多租户和 DBaaS 则让数据库混合云成为可能,客户可以在不同的云环境中进行切换。
12c 引入了 CDB 与 PDB 的新特性,在 Oracle 12C 数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB 全称为 Container Database,中文翻译为数据库容器,PDB 全称为 Pluggable Database,即可插拔数据库。在 Oracle 12c 之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入 Oracle 12c 后,实例与数据库可以是一对多的关系。
Oracle 18c是 Oracle 最新一代数据库,可以部署在本地或 Oracle云中,运行在专用于 Oracle Exadata 和 Oracle 数据库机等数据库工作负载的通用硬件或工程系统上。它为各种规模的企业提供了访问世界上最快,最具可扩展性和可靠性的数据库技术,以便在云,本地和混合云配置中安全,经济地部署事务和分析工作负载。
Oracle Database 18c是在以前Oracle Database 12c中引入的功能添加了新功能和增强功能,包括:1)多租户架构可大幅节省成本和灵活性。2)内存列存储,可实现实时分析的性能提升。3)本机数据库分片,可实现大规模 Web 应用程序的高可用性。4)增强数据库性能,可用性,安全性,分析和应用程序开发的更多关键功能。
Oracle 最新一代的数据库 Oracle Database 18c 是在 Oracle Database 12c 基础上开发的新版本。其独特的多租户架构,双格式内存列存储和本机分片使客户能够在内部和云中部署其数据库。
下载链接:
1、Oracle数据集成平台解决方案.pdf
2、Oracle RAC集群的简单介绍.pdf
3、Oracle Exadata 数据库云平台.pdf
4、GaussDB迁移Oracle的三大难点剖析以及应对策略.pdf
5、基于分布式存储的 Oracle 解决方案设计.pdf
6、超越Oracle,Salesforce宣告SaaS模式的胜利.pdf
来源:全栈云技术架构
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
转载申明:转载本号文章请注明作者和来源,本号发布文章若存在版权等问题,请留言联系处理,谢谢。
推荐阅读
更多架构相关技术总结请参考“架构师全店铺技术资料打包”相关电子书(37本技术资料打包汇总详情可通过“阅读原文”获取)。
内容持续更新,现下单“全店铺技术资料打包(全)”,后续可享全店更新“免费”赠阅,价格仅收198元(原总价350元)。
温馨提示:
扫描二维码关注公众号,点击阅读原文链接获取“IT技术全店资料打包汇总(全)”电子书资料详情。