数据库专题研究报告:Oracle数据库分析
(温馨提示:文末有下载方式)
1、为什么研究 Oracle 数据库?
数据库作为计算机架构的核心底层软件,从 1970 年左右发展到现在,已经有五十年左右的时间。那个时候,软件还并没有很正式的作为单独的产品进行销售,更多的是与硬件和解决方案一起卖给客户。数据库产品发展到现在,中间经过各种计算载体和计算架构的变化,但数据库的核心重要位置依然没有变化。同时,我们看到在这个过程中,数据库领域进进出出的厂商有很多,但 Oracle 的行业领导地位也一直没有发生变化。如果我们读过数据库的发展历史,我们也会好奇,是哪些因素造就了Oracle 的在数据库领域长达 40 多年的行业领导地位,并不断保持产品效能的领先?同时,随着计算场景和计算架构的变化,新的数据库模型不断涌现,对传统关系型数据库带来一定挑战。未来 Oracle 的数据库产品又该如何应对?
在目前自主可控的背景下,大家也比较关心国产数据库的发展和应用情况。国内数据库的参与者主要包括南大通用、武汉达梦、北京凯星辰、人大金仓、广州巨杉等。与海外主流数据库相比,目前国内的数据库处于什么竞争水平?通过研究 Oracle 的数据库产品,可以使我们对数据库这个行业有一个初步的认识,来进一步分析在关键的 IT 底层环节,未来国内自主可控的路径和可能性。
从 Oracle 公司自身来看,Oracle 可以说是全球软件巨头,体量虽然没有 Microsoft 那么大,但,(1)在数据库和应用软件领域,Oracle 的确实有其难以撼动的地位。(2)在 IT 布局的完备性方面,Oracle 应该是继 IBM 之后(在 IBM 发展中,其业务发生多次调整和分拆),在全球 IT巨头中布局最为完整、最为完善的一家。我们这里所说的 IT 完备性主要是基于 IT 基础产业链角度。
在 Oracle 的发展过程中,其业务种类越来越多样化,既包括软件、也包括硬件;软件中既包括应用软件、也包括基础软件。如何更好的理解Oracle 的每个业务。从这篇文章开始,我们将把 Oracle 的主要业务,做一系列的讲解。以便于我们对国内相应市场和相应公司的产品做比较。



数据库是 Oracle 创立之初的业务,也是 Oracle 其他业务发展的基础。即使目前,数据库业务收入在 Oracle 各业务中占比最大,也是 Oracle最赚钱的业务之一。从下面这个资料我们可以看出,数据库业务收入占比在 35%-40%左右。可知,数据库业务对于 Oracle 而言是非常重要的业务。

2、如何理解数据库?
如何理解数据库?从 IT 基础架构来看,数据库是计算机底层架构的核心基础软件。我们通常说计算机三大基础软件:操作系统、数据库、中介软件。如果没有数据库,计算机的资料处理速度(读写的速度)可能就没有这么迅速。对于非 IT 专业的人,经常会问,数据库有什么用?数据库,从字面来理解就是储存资料的仓库。按照正式语言来定义,数据库是按照一定的结构,来组织、储存和管理资料的仓库。在计算机中,它一般是由一个或者一组档案构成。在以上的描述中,我们需要关注几个关键词:结构、组织、储存、管理。
为什么需要数据库?从本质来看,计算机解决的是资料计算和资料处理问题。数据库是计算机应用系统中的一种专门管理资料资源的系统。资料有多种形式,包括文字、数码、符号、图形、影象以及声音等。资料是所有计算机系统所要处理的物件。
在计算机发展的过程中,人们也一直在想如何解决计算机产生的大量资料的储存和管理问题。在早期,一种解决方法是制作档案,即将处理过程编成程式档案,将所涉及的资料按程式要求组织成资料档案,用程式档案来呼叫。资料档案与程式档案保持着一定的对应关系。
但在计算机应用快速发展的背景下,这种档案式方法表现出一定的不足。比如,在这种模式中,资料通用性较差,不便于移植,在不同档案中储存大量重复资讯、浪费储存空间、更新不便等。

如果引入档案管理系统,档案管理系统作为应用程序与资料档案的界面,这些应用程序只需要与档案管理系统互动就可以带来一些灵活性。不过这种方式还是解决不了“资料冗余、处理效率低”的问题,特别是在较大规模的系统中更加明显。
数据库系统便能解决上述问题。数据库系统不从具体的应用程序出发,而是立足于资料本身的管理,它将所有资料储存在数据库中,进行科学的组织,并借助于数据库管理系统,以它为中介,与各种应用程序或应用系统界面,使之能方便地使用数据库中的资料。

Oracle 数据库服务器大致分为两个主要部分:
1)Oracle instance (数据库例项,上半部分)
2)Database(数据库,下半部分)。
Oracle 服务器=例项+数据库。
例项=SGA(例项内存)+后台程序
内存=SGA+PGA
SGA=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 系统分配给一个程序的私有内存区域。
3、数据库的发展历程
资料管理方式的演变。今天我们看到的数据库是随着资料管理方式的演变、成熟和完善之后的产品形态。数据库其实就是对资料进行储存、管理、处理的载体。而这些资料的载体也随着资料管理方式的不同而呈现出不同的产品形态。为了更好地理解数据库在 IT 领域的角色和作用。我们可以了解下,在人类历史上,资料管理方式的演变过程。打卡机。在 19 世纪末,美国为了解决人口普查问题,利用打孔卡上的孔来表示资料,当时 Hollerith 发明了分拣机、制表机和记录机,记录完整的资料。

从打卡机到资料卷筒和资料鼓。从 1910 年到 1960 年代中期,打卡和制表机是企业办公的前提条件。与此同时,IBM 在大规模定制企业的解决方案,来自 IBM 托马斯·J·沃森领导其公司组织员工销售其解决方案。IBM 从此发展壮大起来。

档案系统。档案系统被认为是一个与档案柜极为相似的范例。记录被视为离散的物件,可以放在资料夹(或目录)中。这些资料夹本身可以放置在其他资料夹中,建立一个终止于包含所有记录和子资料夹的单个目录的层次结构。但档案系统具有我们上面提到的一些缺陷:不利于大规模资料的查询和管理。
资料管理系统。20 世纪 60 年代,随着 IT 技术的发展,以及客户需求的改变,数据库管理系统(DBMS)出现。DBMS 或现代数据库允许使用者编组大量的资料。在储存介质上组织记录,以实现最佳访问。

在数据库发展历史上,曾经出现了多位大师级人物。在这里,我们重点提及四位。这四位分别因为其在数据库领域的贡献,而获得图灵奖。通过对这四位大师级人物的了解,我们会进一步加深对数据库产品演进和发展程序的理解。

第一位:Charles W. Bachman(查尔斯 • 巴赫曼):1973 主持设计与开发了最早的网状数据库管理系统 IDS。
巴赫曼 1924 年 12 月 11 日生于堪萨斯州的曼哈顿。1948 年在密歇根州立大学取得工程学士学位,1950 年在宾夕法尼亚大学取得硕士学位。20世纪 50 年代在 Dow 化工公司工作,1961—1970 年在通用电气公司任程式设计部门经理,1970—1981 年在 Honeywell 公司任总工程师,同时兼任 Cullinet 软件公司的副总裁和产品经理。1973 年获得图灵奖。
巴赫曼在数据库领域的贡献,主要体现在两个方面:
第一,1964 年,巴赫曼开发了最早期的网状数据库管理系统 IDS。当时巴赫曼还在通用电气公司。IDS 推出之后,成为了当时最受欢迎的数据库之一。
第二,推动了数据库标准的制定。巴赫曼曾担任美国国家标准学会-标准规划和规定委员会(ANSI-SPARC)的 DBMS 研究组副主席,并尝试将数据库管理语言标准化。1971 年 DBTG 小组提出了 DBTG 报告,描述了网状数据库系统引数界面和协议,以支援与资料无关的概念。DBTG首 次 确 定 了 数 据 库 的 三 层 体 系 结 构 , 明 确 了 数 据 库 管 理 员
DBA(DataBase Administrator)的概念,规定了 DBA 的作用与地位。
第二位:Edgar F. Codd(埃德加 • 科德) 1981 年提出关系型数据库。科德被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献 于 1981 年获图灵奖。
1970 年,科德发表题为“大型共享数据库的关系模型”的论文,文中首次提出了数据库的关系模型。由于关系模型简单明了、具有坚实 的数学理论基础,所以一经推出就受到了学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。20 世纪 80 年代以来,计算机厂商推出的数据库 管理系统几乎都支援关系模型,数据库领域当前的研究工作大都以关系模型为基础。
1970 年以后,科德继续致力于完善和发展关系理论。1972 年,他提出了关系代数和关系演算,为日后成为标准的结构化查询语言 SQL 奠定了基础。
第三位:James Gray(詹姆斯 • 格雷) 1998 解决了资料的完整性、安全性、并行性,以及从故障恢复方面发挥了十分关键的作用,提出并实现数据库事务处理。
格雷先后在贝尔实验室、IBM、Tandem、DEC 等公司工作。在 IBM 期间,格雷主持和参与了 IMS、System R、SQL、DB2 等专案的开发。格雷对数据库领域的贡献主要表现在,数据库基础理论向产品的转化,这个过程中需要解决一系列技术问题。格雷于 1999 年 5 月 4 日在亚特兰大举行的 ACM 全国会议上接受图灵奖。
第四位:Michael Stonebraker (迈克尔.斯通布雷克) 2014 创造了数据库系统一系列奠基性基本概念和实际技术。
Michael Stonebraker 在 1992 年提出物件关系数据库模型,也是 SQL Server/Sysbase 的奠基人。1987 年左右,Sybase 联合微软共同开发SQL Server。Stonebraker 创立了多家数据库公司,其中包括 Ingres、Illustra、Cohera、StreamBase Systems 和 Vertica 等,成功地商业化了他关于数据库技术的开创性工作。2015 年,因“对现代数据库系统概念与实践所做出的基础性贡献,Michael Stonebraker 获得 2015 年图灵奖。


数据库:关系型数据库&非关系型数据库。在数据库产品的演进中,其基于的资料模型也在发生变化。根据资料模型的不同,数据库可以分为关系型数据库和非关系型数据库。关系型数据库的底层资料模型是关系模型。非关系型数据库是一个大类,其又可以分为不同种类的数据库。比如,面向高效能并发读写的 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)键值对储存:Redis
2)文件储存:MongoDB
3)基于列的数据库:Cassandra、HBase
4)图形数据库:Neo4j


事务型数据库&分析型数据库。数据库根据资料处理方式的不同,可以分为事务型数据库和分析型数据库。两者面向的目标不一样。目前大部分的数据库是事务型数据库。

资料处理大致可以分成两大类:联机事务处理 OLTP(on-line transaction processing)、联机分析处理 OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是资料仓库系统的主要应用,支援复杂的分析操作,侧重决策支援,并且提供直观易懂的查询结果。
OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易。
OLAP 即联机分析处理,是资料仓库的核心部心,支援复杂的分析操作,侧重决策支援,并且提供直观易懂的查询结果。典型的应用就是复杂的动态报表系统。
OLTP 实时性要求高,OLTP 数据库旨在使事务应用程序仅写入所需的资料,以便尽快处理单个事务。OLAP 的实时性要求不是很高,很多应用顶多是每天更新一下资料。
我们可以这样来理解:OLTP 是一个线上交易系统,OLAP 是一个线上检索和分析系统。OLTP 和 OLAP 并非解决同一问题,不存在竞争关系,而是相互补充的过程。

4、Oracle 的数据库
Oracle 的数据库产品。Oracle 的数据库产品是公司最起家的业务。Oracle 的数据库业务发展历程,与全球数据库发展历史交织在一起,也与 Oracle 整个公司的发展系结在一起。Oracle 的数据库产品包括两种。第一个是 Oracle 自己的数据库产品,也就是 Oracle Database。第二个是 MySQL。关于 MySQL 与 Oracle的关系,也是从原来的竞争对手,通过 Sun 这家公司而成为 Oracle 自己的产品。
2008 年 Sun 以 10 亿美元收购 MySQL,MySQL 总部位于瑞典,在当时,IBM、SAP、Oracle 占据企业数据库市场 80%以上的市场份额。与 IBM、SAP 和甲骨文所不同,MySQL 并不推出功能大而全的数据库软件,而是开发能适合中小型企业实际需求的‘小而精’产品,这也是开源数据库软件受到中小型企业使用者欢迎的原因之一,功能越简化,便于使用和管理。
2009 年,Oracle 以 74 亿美元收购 Sun。

Oracle 数据库的发展历程。
1)Oracle 资料发展的历史,要从 1970 年 IBM 的一篇论文开始。1970年 6 月,IBM 的研究员埃德加·考特(Edgar Frank Codd) 在Communications of ACM 上发表了著名的《大型共享数据库资料的关系模型》(A Relational Model ofData for Large Shared Data Banks)的论文。这篇论文可以说是数据库发展历史的转折,因为在这之前,数据库基本是层状和网状的数据库,还没有关系型数据库。
2)对于关系型数据库,IBM 在 1973 年就启动了 System R 专案,来研究关系型数据库的可行性,但并没有推出关系型数据库产品。因为当时IBM 还有一个款销售不错的层次数据库产品 IMS。如果推出关系型数据库产品,势必会对该产品带来影响。
3)1977 年 6 月,Larry Ellison 与 Bob Miner 和 Ed Oates 在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司(Oracle 的前身)。Oates 最先看到埃德加·考特的那篇著名的论文,并推荐 Ellison 和 Miner 阅读。Ellison 和 Miner 预见到数据库软件的很大潜力,于是,SDL 开始策划构建可商用的关系型数据库管理系统(RDBMS)。
4)Ellison 和 Miner 根据在上一家公司为 FBI 做过的一个专案,将它们的数据库产品取名为 Oracle,1979 年,SDL 更名为关系软件有限公司(Relational Software,Inc.,RSI),1982 年,为了突出公司的核心产品,RSI 再次更名为 Oracle。
5)1978 年,埃里森的公司在 DEC 的小型机 PDP-11 上开发出一个基于关系型数据库的系统,专案代号为 Oracle1,但是这个软件从来没有面市。1979 年,又推出了 Oracle2,这是计算机软件史上第一个由纯软件公司开发的商用关系型数据库管理系统。很快,埃里森利用他过去为军方开发专案的关系,将这个数据库软件卖给了美国空军。



经历过以上几个重要发展阶段,Oracle 数据库的下游需求逐步扩大,即使在竞争对手产品不断涌现的情况下,Oracle 的数据库依然是市场份额最大的产品。
随着 IT 架构、终端装置形态的不断变化和迁移,Oracle 的数据库产品也在不断更新迭代。从 Oracle 数据库产品服务的计算载体的形态来看,经历了小型机与大型机、客户机/服务器(PC 与服务器)、互联网架构/瘦客户端、数据库云/大资料四个阶段。目前 Oracle 的资料产品已经更新到 18c。从以往 Oracle 更新的版本来看,我们可以将其划分为几个不同时代的产品。


阶段一:Oracle 9i 之前,支援传统的 C-S 架构
Oracle 的数据库产品主要解决的是数据库的高可靠性问题(注:衡量数据库产品的核心指标在于五个方面:高可用性(High Availability)、高效能(High Performance)、高可管理(High Manageability)、高安全(High Security Ability)、高资料服务能力(High Data Service Ability)五个领域)。Oracle 数据库核心优势在于高效、安全、稳定等。

阶段二:9i-12c,支援互联网计算环境
从 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 之后,支援云端计算环境,进入自治时代
12c 引入了 CDB 与 PDB 的新特性,在 Oracle 12C 数据库引入的多租使用者环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB 全称为 Container Database,中文翻译为数据库容器,PDB 全称为 Pluggable Database,即可插拔数据库。在 Oracle 12c 之前,例项与数据库是一对一或多对一关系(RAC):即一个例项只能与一个数据库相关联,数据库可以被多个例项所载入。而例项与数据库不可能是一对多的关系。当进入 Oracle 12c 后,例项与数据库可以是一对多的关系。

2018 年,Oracle 推出数据库最新版本 Oracle 18c。
Oracle 18c是 Oracle 最新一代数据库,可以部署在本地或 Oracle云中,执行在专用于 Oracle Exadata 和 Oracle 数据库机等数据库工作负载的通用硬件或工程系统上。它为各种规模的企业提供了访问世界上最快,最具可扩充套件性和可靠性的数据库技术,以便在云,本地和混合云配置中安全,经济地部署事务和分析工作负载。
Oracle Database 18c是在以前Oracle Database 12c中引入的功能添加了新功能和增强功能,包括:
1)多租户架构可大幅节省成本和灵活性。
2)内存列储存,可实现实时分析的效能提升。
3)本机数据库分片,可实现大规模 Web 应用程序的高可用性。
4)增强数据库效能,可用性,安全性,分析和应用程序开发的更多关键功能。




Oracle 数据库最新产品:Oracle Database 18c
Oracle 最新一代的数据库 Oracle Database 18c 是在 Oracle Database 12c 基础上开发的新版本。其独特的多租户架构,双格式内存列储存和本机分片使客户能够在内部和云中部署其数据库。

Oracle Database 18c 提供了一个高效能、高可靠和高安全的平台,可以在云,本地或混合云进行部署。它提供了在本地和云中执行的相同熟悉的数据库软件,使客户能够使用其内部开发的 Oracle 应用程序和 ISV应用程序,并在 Oracle 云上执行它们,而不会导致任何应用程序更改。
Oracle Multitenant 是面向下一代数据库云的架构。它提供了隔离、敏捷性和规模经济。在这个架构中,一个多租户容器数据库可容纳多个可插拔数据库。现有数据库可以直接采用,无需更改应用。Oracle Multitenant 是对 Oracle Real Application Clusters 和 Oracle Active Data Guard 等选件的全面补充。

内存优化,支援实时分析。Oracle Database In-Memory 优化了分析和混合负载 OLTP,不仅提供出色的事务处理效能,还支援实时分析、商务智慧和报告。
Oracle Database In-Memory 提供了一个独特的双格式架构,可以同时使用传统的行格式和新的内存中列格式在内存中表示表。Oracle SQL 优化器自动将分析查询路由到列格式,将 OLTP 查询路由到行格式,从而透明地提供两全其美的效能优势。Oracle Database 自动维护行格式和列格式间的完全事务一致性,就像它现在维护表和索引间的一致性一样。

自治数据库云
2017 年 10 月,Oracle 推出自治数据库云,这是一系列针对特定资料仓库,OLTP 和 NoSQL 工作负载量身定制的数据库服务。通过利用机器学习技术的现有数据库功能,自治数据库云可以提供手动管理的数据库难以提供的效能和可靠性。自治数据库云专门设计用于通过以下方式自动执行日常管理任务并消除人为错误,从而以更低的成本为客户提供更高水平的服务:
Self-Driving:使用者只需定义工作负载和策略,数据库自动化就可以实现。
Self-Securing:防止外部攻击和内部使用者。
Self-Repairing:自动保护所有停机时间。
在连续的数据库版本中,Oracle 引入了创新的自动化功能,帮助管理员为终端使用者提供卓越的服务。这些创新包括:
1)基于成本的优化。自动 SQL 查询优化,自动统计资讯收集,自动查询重写自动 SQL 计划管理和自动 SQL 调优。
2)效能调整和诊断。自动内存和资源管理,自动索引和物化检视顾问程式,自动数据库诊断监视器,自动数据库工作负载捕获和重放以及自动工作负载储存库。
3)资料优化。自动撤消管理,自动段空间管理,自动储存管理,自动资料优化和自动列式快取。
4)云规模运营。 Cluster Health Advisor 中的自动备用管理(代理),诊断框架,多租户架构,自动数据库克隆重新整理和机器学习。
Oracle 最高可用性架构。Oracle 最高可用性架构 (MAA) 是 Oracle 的最佳实践方案,它基于成熟的 Oracle 高可用性技术、专家建议和客户体验。MAA 的目的是以最低的成本和复杂性实现最佳的高可用性架构。

主流数据库简介
Oraccle:适用于大型企业/中高阶客户。是目前市场最为成熟,使用也最为广泛的数据库,其在相容性、可移植性、可联结性、开放性等方面表出现较强的有点。Oracle 采用标准 SQL,,并经过美国国家标准技术所(NIST)测试。与 IBMSQL/DS,DB2,INGRES,IDMS/R 等相容。Oracle 的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70 种以上不同的大、中、小型机上;可在 VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。能与多种通讯网络相连,支援各种协议(TCP/IP、DECnet、LU6.2 等)。Oracle 提供了多种开发工具,能极大的方便使用者进行进一步的开发。
其缺点在于 Oracle 比较昂贵,一般中小企业可能不一定能够承受。
SQL Server:适用于中型企业。SQLServer 是微软公司开发的大型关系型数据库系统。SQLServer 的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQLServer 可以与 Windows 操作系统紧密整合,不论是应用程序开发速度还是系统事务处理执行速度,都能得到较大的提升。对于在 Windows 平台上开发的各种企业级资讯管理系统来说,不论是 C/S(客户机/服务器)架构还是 B/S(浏览器/服务器)架构,SQLServer 都是一个很好的选择。由于其易操作性及友好的界面,赢得了广大使用者的青睐,尤其是 SQLServer 与其它数据库,如 Access、FoxPro、Excel 等有良好的 ODBC 界面,可以把上述数据库转成 SQLServer 的数据库,因此使用 SQLServer 的客户也在增加。
SQLServer 的缺点是只能在 Windows、Linux 系统下执行。
MySQL:适用于小型网站。MySQL 是瑞典 MySQLAB 公司开发的小型关系型数据库管理系统。2008 年 1 月被 Sun 公司收购。目前 MySQL被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
DB2:作为关系数据库领域的开拓者和领航人,IBM 在 1977 年完成了System R 系统的原型,1980 年开始提供整合的数据库服务器——System/38,随后是 SQL/DSforVSE 和 VM,其初始版本与 SystemR 研究原型密切相关。DB2 forMVSV1 在 1983 年推出。该版本的目标是提供这一新方案所承诺的简单性,资料不相关性和使用者生产率。1988 年DB2 for MVS 提供了强大的线上事务处理(OLTP)支援,1989 年和1993 年分别以远端工作单元和分散式工作单元实现了分散式数据库支援。最近推出的 DB2 Universal Database 6.1 则是通用数据库的典范,是第一个具备网上功能的多媒 体关系数据库管理系统,支援包括 Linux在内的一系列平台。
PostgreSQL。PostgreSQL 是一种特性非常齐全的自由软件的物件——关系性数据库管理系统(ORDBMS),它的很多特性是当今许多商业数据库的前身。PostgreSQL 最早开始于 BSD 的 Ingres 专案。
PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3。首先,它包括了可以说是目前世界上最丰富的资料型别的支援;其次,目前 PostgreSQL 是唯一支援事务、子查询、多版本并行控制系统、资料完整性检查等特性的唯一的一种自由软件的数据库管理系统。

5、Oracle 数据库面临的竞争
如何理解 Oracle 数据库面临的竞争?在数据库领域,商业数据库一直面临着来自于开源数据库的竞争,关系型数据库(SQL)也面临着来自于非关系型数据库(NoSQL)的竞争。数据库领域的竞争格局,虽然 Oracle、MySQL、SQL Server 一直牢牢稳居行业前三,但市场格局也在不断发生一些变化。
特别是,最近几年,在新的计算环境下,Oracle 的数据库产品面临的外部挑战和外部竞争也越来越大。我们也经常看到,亚马逊、阿里、Salesforce 等云端计算厂商也都在基于开源数据库,研发自主的数据库产品。那么这些背后的原因是什么?
我们认为,理解上述这个问题,根源在于理解计算环境的变化,以及关系型数据库其存在的计算场景限制。
关系型数据库,是上世纪 60 年代左右的 IT 技术,到目前已经有半个多世纪的应用。即使目前我们看到互联网的发展、大资料的应用已经云端计算机的普及,涌现出越来越多的新型数据库,然而关系型数据库仍然占据主导地位。最主要的原因之一就是关系型数据库采用了 SQL 标准,这种高阶的非过程化程式设计界面语言,将电脑科学和易于人类理解认知的资料管理方式完美的衔接在了一起,目前还难以超越。
根据我们前面介绍,SQL 语言是一种介于关系代数与关系演算之间的结构化查询语言,其本质是用一种类似于自然语言的关键字和语法来定义和操作资料,进行可程式设计的资料储存、查询以及管理。这种抽象程式设计界面,将具体的资料问题与资料的存放、查询实现的细节解耦开来,使得商业业务逻辑以及资讯管理的计算模式能够被大量复制和应用,节省了大量的程式设计压力,推动商业关系型数据库的快速发展。
2010年左右,随着计算的架构逐步从传统的CS架构向云端计算架构迁移,关系型数据库逐步暴露出一些不能满足云端计算模式下的需求。在传统 IT架构下,计算力(例如用关系型数据库来处理结构化资料等)是服务于系统硬件隔离环境下的多使用者使用场景。而云计算时代是多客户租用环境,各种计算负载场景更加复杂。因此,我们面临的一个问题是,在计算负载变迁的环境下,如何解决传统计算架构的技术产物与云端计算时代应用环境的适配问题。也就是说如何将传统的关系数据库应用在云端计算环境下。
在云环境下,随着使用者的增多,以及使用者业务和资料的增长,备份、效能、迁移、升级、只读例项、磁盘容量、日志 延迟等相关问题渐渐显现出来。这些都与关系型资料天生的缺陷有关:1、为了维护一致性所付出的代价就是其读写效能比较差;2、固定的表结构;3、不能很好满足高并发读写需求;4、不能很好满足海量资料的高效率读写需求。

基于此,亚马逊、阿里等云端计算厂商纷纷开始,根据自身业务需求,逐步开发适用于自身业务计算环境下的数据库产品。我们看到,亚马逊开发有 Amazon Aurora 数据库、Amazon Dynamo DB 数据库,阿里开发了阿里云 Polar DB 数据库。
Amazon DynamoDB 是一个键/值和文件数据库,可以在任何规模的环境中提供个位数的毫秒级效能。它是一个完全托管的多区域多主数据库,具有适用于 Internet 规模的应用程序的内建安全性、备份和恢复和内存快取。DynamoDB 每天可处理超过 10 万亿个请求,并可支援每秒超过 2000 万个请求的峰值。
许多全球发展最快的企业,如 Lyft、Airbnb 和 Redfin,以及 Samsung、Toyota 和 Capital One 等企业,都依靠 DynamoDB 的规模和效能来支援其关键任务工作负载。超过 100000 位 AWS 客户选择DynamoDB 作为键/值和文件数据库,用于其移动、Web、游戏、广告技术、物联网以及其他需要任何规模的低延迟资料访问的应用程序
另外,以下几个原因也有可能是新型数据库不断涌现的原因。
1)从数据库产品架构演化来看,考虑到工程效率和运维成本,未来的数
据库产品最好能够以一种通用的产品来应对不同计算场景的应用需求。
2)Oracle 数据库高昂的费用和维护成本。
3)资料安全。

6、数据库市场格局演化情况
根据数据库排名权威网站 DB-Engines,其对全球数据库进行实时排名。该排名参考 6 个方面的考虑:1)数据库相关网站数量,2)公众关注度,3)技术讨论活跃度,4)招聘职位,5)专业档案,6)社交网络资讯等。该排名在业界引用得非常多,权威性也很高,总体比较客观。数据库总体排名。根据 DB-Engines 资料,数据库总体排名前五的分别是:Oracle、MySQL、SQL Server、PostgreSQL、MongoDB。其中前四个都是关系型数据库,第五个 MongoDB 是档案数据库。

关系型数据库总体排名。根据 DB-Engines 资料,关系型数据库总体排名前五的分别是:Oracle、MySQL、SQL Server、PostgreSQL、IBM的 DB2。从评分来看,前三名数据库的分数显著高于后面其他数据库。

key-value 储存数据库总体排名。根据 DB-Engines 资料,分散式数据库总体排名前五的分别是:Redis、DynamoDB、Cosmos DB、Memcached、Hazelcast。

档案数据库(Document Database)排名。根据 DB-Engines 资料,档案型数据库总体排名前五的分别是:MongoDB、DynamoDB、Couchbase、Cosmos DB、CouchDB。

MongoDB 是文件型数据库,NoSQL 领域的领导者之一,是当前最成功的 NoSQL 数据库。MongoDB 成立于 2007 年,提供非关系型数据库软件。2017 年 10 月,MongoDB 在纳斯达克 IPO,目前市值达到 92 亿美元。股价从 2018 年初的 20 多美元涨到现在的 160 多美元。2018 年MongoDB 营业收入为 2.67 亿美元,同比增长 61%,净利润为-0.99 亿元。
2007年,MongoDB公司的前身10gen正式成立。2009年2月,MongoDB数据库首次在数据库领域亮相,打破了关系型数据库一统天下的局面。2014 年 12 月, MongoDB 收购了 WiredTiger 储存引擎,大幅提升了MongoDB 的写入效能。2016 年, MongoDB 推出 Atlas,在 AWS、Azure 和 GCP 上的 MongoDB 托管服务。2018 年 6 月, MongoDB 推出 ACID事务支援,成为第一个支援强事务的 NoSQL 数据库。2018 年 11 月,MongoDB 将其开源授权修改为 SSPL。

从数据库使用情况来看,一些新型的数据库的使用程度在不断提升。DB2、Sybase 等使用者方面有些流失。开源类数据库使用情况有所增加。比如 MySQL 的使用程度在不断增加。而在开源数据库中,近几年使用者增加比较明显的主要在:MongoDB 、PostgreSQL、Redis 等。
MongoDB(文件型数据库,2009 年释出第一版本)、PostgreSQL(关系型数据库,1989 年释出第一版本)、Redis(键值型数据库,2009 年释出第一个版本)等。

商业数据库 VS 开源数据库。根据是否开源,数据库可以分为商业数据库(收费)和开源数据库。根据 DB-Engines 资料,其统计了 350 种不同的资料,其中商业数据库数量为 179 个,开源数据库为 171 个。相比2018 年都有所增加。


从 DB-Engines 的统计资料来看,开源数据库的受欢迎程度不断增加。从近几年数据库产品发展以及下游需求来看,开源数据库的种类的逐步增加,也出现了一些受市场欢迎的优秀的数据库产品,比如 MongoDB等。而且,云端计算的快速应用也使得传统的关系型数据库的使用遇到场景限制。

商业数据库和开源资料,在不同的资料模型中,其占比也有很大不同。资料模型一般就是我们所说的关系资料模型还是非关系资料模型。由于关系资料模型占据行业主导位置,所以我们就将关系资料模型之外的都统称为菲关系资料模型。非关系数据库模型的种类包括很多,比如,文件型、键值、影象等。
通过下图,我们可以看出,我们用的比较多的关系型数据库中,商业数据库的占比在 60%左右,其余的是开源数据库。



7、总结
通过以上,我们试图想把数据库的起源、演化过程、市场格局以及未来发展趋势介绍清楚。在自主可控的背景下,便于我们对相应国内相应的数据库产品进行研究。几个常识小问题。1)是不是数据库产品 Oracle 是最好的?在关系型数据库领域,Oracle 的产品可以说是最好的(从产品效能和稳定性角度,我们可以这样认为,但 Oracle 数据库比较适合大型企业客户,小企业客户不一定适用,当然也是因为 Oracle 收费比较高),但随着计算场景的多样化,互联网/云端计算场景下对新的资料模型的需求增加,关系型数据库不一定是最合适的。2)开源的数据库是不是都是免费的?这个不一定。我们现在有一些商业化的软件都是在开源代码基础上开发的。数据库软件也是一样。比如开源数据库 MySQL,它有不同的版本,如社群版本(免费)、企业版本(收费)、丛集版本(免费)、高阶丛集版本(收费)等;类似于还有开源数据库 MongoDB。3)是不是 NoSQL 数据库比关系型数据库更好?也不是。这是两种不同型别的数据库,没有谁比谁更好,只是适用的场景不同。非关系型数据库具有天然的多样性,除了一些共性外,很大一部分都是针对某些特定的应用需求出现的,因此,对于该类应用,具有较高的效能。
IT 领域,在国内 IT 产品进行国产化替代过程中,我们一直会觉得操作系统、数据库很难被替代。对于操作系统比较难替代,大家容易理解。因为在传统的 IT 架构下,操作系统已经与基础底层芯片形成完美适配和偶合。同时,由于操作系统支撑著上层应用,操作系统要实现广泛应用,需要上层应用来丰富操作系统的应用生态。但对于数据库而言,之所以很难被替代,是因为数据库与业务直接关联,企业的业务资料是写入数据库而被查询和管理的,替换风险比较大。
Oracle 数据库成功的要素。Oracle 数据库成功的要素有很多,除了埃里森具有的一些特质之外。如果从行业角度来看,我们认为其中值得关注的一个因素是:Oracle 简单的商业模式:只卖软件,不靠服务费。Oracle把自己的 Oracle2 推向市场的时间是在 1979-1980 年左右。那个时候,IBM 的数据库产品 System R 占据市场统治地位,而且软件并没有单独作为产品销售,而是跟硬件一起搭售,不仅如此,销售软硬件的同时,也一起把服务销售给客户。而 Oracle 简单的只卖软件的模式,不强行搭售服务,便于客户再数据库系统上进行二次开发,容易获得客户认可和使用。
相比海外数据库厂商,国内的数据库企业还有很长的路需要走。从第三方数据库厂商来看,目前国内主要是南大通用、人大金仓、达梦、巨杉等。南大通用在分析型资料领域,与海外竞争对手处于同一竞争水平。在事务型数据库领域通过不断消化吸收 Informix 产品,其产品效能也在逐步提升。而对于国内云厂商自主研发的数据库而言,逐步在摆脱海外数据库厂商的约束,开发适用于高并发、海量资料、可扩充套件、实时性的分散式数据库。
温馨提示:如需原文件,可在PC端登陆未来智库www.vzkoo.com搜寻下载本报告。
(报告来源:中泰证券;分析师:谢春生/杨亚宇)