(温馨提示:文末有下载方式)

1、为什么研究 Oracle 数据库?

数据库作为计算机架构的核心底层软件,从 1970 年左右发展到现在,已经有五十年左右的时间。那个时候,软件还并没有很正式的作为单独的产品进行销售,更多的是与硬件和解决方案一起卖给客户。数据库产品发展到现在,中间经过各种计算载体和计算架构的变化,但数据库的核心重要位置依然没有变化。同时,我们看到在这个过程中,数据库领域进进出出的厂商有很多,但 Oracle 的行业领导地位也一直没有发生变化。

如果我们读过数据库的发展历史,我们也会好奇,是哪些因素造就了Oracle 的在数据库领域长达 40 多年的行业领导地位,并不断保持产品性能的领先?同时,随着计算场景和计算架构的变化,新的数据库模型不断涌现,对传统关系型数据库带来一定挑战。未来 Oracle 的数据库产品又该如何应对?

在目前自主可控的背景下,大家也比较关心国产数据库的发展和应用情况。国内数据库的参与者主要包括南大通用、武汉达梦、北京凯星辰、人大金仓、广州巨杉等。与海外主流数据库相比,目前国内的数据库处于什么竞争水平?通过研究 Oracle 的数据库产品,可以使我们对数据库这个行业有一个初步的认识,来进一步分析在关键的 IT 底层环节,未来国内自主可控的路径和可能性。

数据库研究现状(数据库专题研究报告)(1)

数据库研究现状(数据库专题研究报告)(2)

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

数据库研究现状(数据库专题研究报告)(3)

2、如何理解数据库?

如何理解数据库?从 IT 基础架构来看,数据库是计算机底层架构的核心基础软件。我们通常说计算机三大基础软件:操作系统、数据库、中间件。如果没有数据库,计算机的数据处理速度(读写的速度)可能就没有这么迅速。对于非 IT 专业的人,经常会问,数据库有什么用?

数据库,从字面来理解就是保存数据的仓库。按照正式语言来定义,数据库是按照一定的结构,来组织、存储和管理数据的仓库。在计算机中,它一般是由一个或者一组文件构成。在以上的描述中,我们需要关注几个关键词:结构、组织、存储、管理。

为什么需要数据库?从本质来看,计算机解决的是数据计算和数据处理问题。数据库是计算机应用系统中的一种专门管理数据资源的系统。数据有多种形式,包括文字、数码、符号、图形、图像以及声音等。数据是所有计算机系统所要处理的对象。

在计算机发展的过程中,人们也一直在想如何解决计算机产生的大量数据的存储和管理问题。在早期,一种解决方法是制作文件,即将处理过程编成程序文件,将所涉及的数据按程序要求组织成数据文件,用程序文件来调用。数据文件与程序文件保持着一定的对应关系。

但在计算机应用快速发展的背景下,这种文件式方法表现出一定的不足。比如,在这种模式中,数据通用性较差,不便于移植,在不同文件中存储大量重复信息、浪费存储空间、更新不便等。

数据库研究现状(数据库专题研究报告)(4)

如果引入文件管理系统,文件管理系统作为应用程序与数据文件的接口,这些应用程序只需要与文件管理系统交互就可以带来一些灵活性。不过这种方式还是解决不了“数据冗余、处理效率低”的问题,特别是在较大规模的系统中更加明显。

数据库系统便能解决上述问题。数据库系统不从具体的应用程序出发,而是立足于数据本身的管理,它将所有数据保存在数据库中,进行科学的组织,并借助于数据库管理系统,以它为中介,与各种应用程序或应用系统接口,使之能方便地使用数据库中的数据。

数据库研究现状(数据库专题研究报告)(5)

Oracle 数据库服务器大致分为两个主要部分:

1)Oracle instance (数据库实例,上半部分)

2)Database(数据库,下半部分)。

Oracle 服务器=实例 数据库。

实例=SGA(实例内存) 后台进程

内存=SGA PGA

SGA=Database Buffer Cache (数据库高速缓存区缓存) Share Pool (共享池) Redo Log Buffer(日志缓存区)

数据库研究现状(数据库专题研究报告)(6)

用户不能直接连接到数据库,而是用户先发出一个用户进程, 用户进程和 Oracle 服务器发出的服务器进程交互,然后服务器进程再和实例交互,最后实例和底层数据库交互,从而实现用户和数据库的交互。具体过程看下图:

数据库研究现状(数据库专题研究报告)(7)

我们以 Oracle 数据库为例,来介绍下数据库的体系结构,这样更有利于我们对数据库的理解。

从存储结构上,oracle 数据库可以分为物理存储结构和逻辑存储结构。

物理存储结构:主要由数据文件,控制文件,重做日志文件 3 种类型的文件组成。

1)数据文件:存储数据库数据的文件。数据库中的所有数据最终都保存在数据文件中。但一个数据文件只对应一个数据库,而一个数据库可以包含多个数据文件。

2)控制文件:是一个很小的二进制文件,用于维护和描述数据库的物理结构。控制文件十分重要,存放着数据库中的数据文件和日志文件,一旦该文件受损,数据库将无法正常工作。

3)重做日志文件:用于记录数据库中所有修改信息的文件,简称日志文件。该文件是进行数据库备份与恢复的重要手段,可以保证数据库的安全,并且该文件不是唯一存在的,在一个日志文件组中,日志文件最多可以有五个。

除了上述文件,还有参数文件,备份文件,归档重做日志文件,警告、跟踪日志文件。

数据库研究现状(数据库专题研究报告)(8)

逻辑存储结构:主要包括表空间,段,区和数据块,它们的关系为:数据库=N*表空间=N*段=N*区=N*数据块

1)表空间:Oracle 中最大的逻辑存储结构,与物理上的一个或多个数据文件相对应,大小等于所有数据文件大小的总和。

2)段:一般是数据库终端用户将处理的最小存储单位,段的数据空间是以数据区为单位的,根据存储数据的特征,可以分为 4 种类型(数据段,索引段,临时段,回退段)。

3)区:磁盘空间分配的最小单位,有一个或多个数据块组成。

4)数据块:用来管理存储空间的最基本单位,也是最小的逻辑存储单位数据块由块头部,表目录,行目录,空闲空间,行空间组成。

数据库研究现状(数据库专题研究报告)(9)

从实例结构上,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 发明了分拣机、制表机和记录机,记录完整的数据。

数据库研究现状(数据库专题研究报告)(10)

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

数据库研究现状(数据库专题研究报告)(11)

文件系统。文件系统被认为是一个与文件柜极为相似的范例。记录被视为离散的对象,可以放在文件夹(或目录)中。这些文件夹本身可以放置在其他文件夹中,创建一个终止于包含所有记录和子文件夹的单个目录的层次结构。但文件系统具有我们上面提到的一些缺陷:不利于大规模数据的查询和管理。

数据管理系统。20 世纪 60 年代,随着 IT 技术的发展,以及客户需求的改变,数据库管理系统(DBMS)出现。DBMS 或现代数据库允许用户编组大量的数据。在存储介质上组织记录,以实现最佳访问。

数据库研究现状(数据库专题研究报告)(12)

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

数据库研究现状(数据库专题研究报告)(13)

第一位: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 年图灵奖。

数据库研究现状(数据库专题研究报告)(14)

数据库研究现状(数据库专题研究报告)(15)

数据库:关系型数据库&非关系型数据库。在数据库产品的演进中,其基于的数据模型也在发生变化。根据数据模型的不同,数据库可以分为关系型数据库和非关系型数据库。关系型数据库的底层数据模型是关系模型。非关系型数据库是一个大类,其又可以分为不同种类的数据库。比如,面向高性能并发读写的 key-value 数据库,面向海量数据访问的面向文档数据库,面向可扩展性的分布式数据库等。

数据库研究现状(数据库专题研究报告)(16)

关系型数据库,是指以关系数学模型来表示的数据,关系数学模型中以二维表的形式来描述数据。关系型数据库是存储在计算机上的、可共享的、有组织的关系型数据的集合。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB 等。

关系型数据库必须具备 ACID 特性,ACID 分别是:Atomic 原子性,Consistency 一致性,Isolation 隔离性,Durability 持久性。

数据库研究现状(数据库专题研究报告)(17)

数据库与 SQL 的关系?SQL 的全称叫 Structured Query Language,中文名叫结构化查询语言。它是一种特殊目的的编程语言,用来支持数据库查询、更新和管理。SQL 语言是 1974 年由 Boyce 和 Chamberlin 提出的一种介于关系代数与关系演算之间的结构化查询语言,是一个通用的、功能极强的关系型数据库语言。

非关系型数据库:指非关系型的、分布式的、且一般不保证遵循 ACID原则的数据存储系统。非关系型数据库以键值存储,且结构不固定。每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

数据库研究现状(数据库专题研究报告)(18)

数据库研究现状(数据库专题研究报告)(19)

非关系型数据库,又被称为 NoSQL,是 Not Only SQL 的简写,意思是说不仅仅是 SQL。下边列出了非关系型数据库的四大分类,分别是键值对存储型、文档存储型、基于列的数据库、图形数据库。

1)键值对存储:Redis

2)文档存储:MongoDB

3)基于列的数据库:Cassandra、HBase

4)图形数据库:Neo4j

数据库研究现状(数据库专题研究报告)(20)

数据库研究现状(数据库专题研究报告)(21)

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

数据库研究现状(数据库专题研究报告)(22)

数据处理大致可以分成两大类:联机事务处理 OLTP(on-line transaction processing)、联机分析处理 OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易。

OLAP 即联机分析处理,是数据仓库的核心部心,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态报表系统。

OLTP 实时性要求高,OLTP 数据库旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。OLAP 的实时性要求不是很高,很多应用顶多是每天更新一下数据。

我们可以这样来理解:OLTP 是一个在线交易系统,OLAP 是一个在线检索和分析系统。OLTP 和 OLAP 并非解决同一问题,不存在竞争关系,而是相互补充的过程。

数据库研究现状(数据库专题研究报告)(23)

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。

数据库研究现状(数据库专题研究报告)(24)

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,这是计算机软件史上第一个由纯软件公司开发的商用关系型数据库管理系统。很快,埃里森利用他过去为军方开发项目的关系,将这个数据库软件卖给了美国空军。

数据库研究现状(数据库专题研究报告)(25)

数据库研究现状(数据库专题研究报告)(26)

数据库研究现状(数据库专题研究报告)(27)

经历过以上几个重要发展阶段,Oracle 数据库的下游需求逐步扩大,即使在竞争对手产品不断涌现的情况下,Oracle 的数据库依然是市场份额最大的产品。

随着 IT 架构、终端设备形态的不断变化和迁移,Oracle 的数据库产品也在不断更新迭代。从 Oracle 数据库产品服务的计算载体的形态来看,经历了小型机与大型机、客户机/服务器(PC 与服务器)、互联网架构/瘦客户端、数据库云/大数据四个阶段。目前 Oracle 的数据产品已经更新到 18c。从以往 Oracle 更新的版本来看,我们可以将其划分为几个不同时代的产品。

数据库研究现状(数据库专题研究报告)(28)

数据库研究现状(数据库专题研究报告)(29)

阶段一:Oracle 9i 之前,支持传统的 C-S 架构

Oracle 的数据库产品主要解决的是数据库的高可靠性问题(注:衡量数据库产品的核心指标在于五个方面:高可用性(High Availability)、高性能(High Performance)、高可管理(High Manageability)、高安全(High Security Ability)、高数据服务能力(High Data Service Ability)五个领域)。Oracle 数据库核心优势在于高效、安全、稳定等。

数据库研究现状(数据库专题研究报告)(30)

阶段二:9i-12c,支持互联网计算环境

从 Oracle 9i 开始,Oracle 引入新的技术:Oracle RAC,RAC 是指 real application clusters,译为“实时应用集群”。RAC 是 Oracle 新版数据库中采用的一项新技术,是高可用性的一种,也是 Oracle 数据库支持网格计算环境的核心技术。用来在集群环境下,实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是 Oracle 数据库支持网络计算环境的核心技术。

数据库研究现状(数据库专题研究报告)(31)

Oracle RAC 主要支持 Oracle9i、10g、11g,12C 版本,可以支持 24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。

数据库研究现状(数据库专题研究报告)(32)

从 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 后,实例与数据库可以是一对多的关系。

数据库研究现状(数据库专题研究报告)(33)

2018 年,Oracle 推出数据库最新版本 Oracle 18c。

Oracle 18c是 Oracle 最新一代数据库,可以部署在本地或 Oracle云中,运行在专用于 Oracle Exadata 和 Oracle 数据库机等数据库工作负载的通用硬件或工程系统上。它为各种规模的企业提供了访问世界上最快,最具可扩展性和可靠性的数据库技术,以便在云,本地和混合云配置中安全,经济地部署事务和分析工作负载。

Oracle Database 18c是在以前Oracle Database 12c中引入的功能添加了新功能和增强功能,包括:

1)多租户架构可大幅节省成本和灵活性。

2)内存列存储,可实现实时分析的性能提升。

3)本机数据库分片,可实现大规模 Web 应用程序的高可用性。

4)增强数据库性能,可用性,安全性,分析和应用程序开发的更多关键功能。

数据库研究现状(数据库专题研究报告)(34)

数据库研究现状(数据库专题研究报告)(35)

数据库研究现状(数据库专题研究报告)(36)

数据库研究现状(数据库专题研究报告)(37)

Oracle 数据库最新产品:Oracle Database 18c

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

数据库研究现状(数据库专题研究报告)(38)

Oracle Database 18c 提供了一个高性能、高可靠和高安全的平台,可以在云,本地或混合云进行部署。它提供了在本地和云中运行的相同熟悉的数据库软件,使客户能够使用其内部开发的 Oracle 应用程序和 ISV应用程序,并在 Oracle 云上运行它们,而不会导致任何应用程序更改。

Oracle Multitenant 是面向下一代数据库云的架构。它提供了隔离、敏捷性和规模经济。在这个架构中,一个多租户容器数据库可容纳多个可插拔数据库。现有数据库可以直接采用,无需更改应用。Oracle Multitenant 是对 Oracle Real Application Clusters 和 Oracle Active Data Guard 等选件的全面补充。

数据库研究现状(数据库专题研究报告)(39)

内存优化,支持实时分析。Oracle Database In-Memory 优化了分析和混合负载 OLTP,不仅提供出色的事务处理性能,还支持实时分析、商务智能和报告。

Oracle Database In-Memory 提供了一个独特的双格式架构,可以同时使用传统的行格式和新的内存中列格式在内存中表示表。Oracle SQL 优化器自动将分析查询路由到列格式,将 OLTP 查询路由到行格式,从而透明地提供两全其美的性能优势。Oracle Database 自动维护行格式和列格式间的完全事务一致性,就像它现在维护表和索引间的一致性一样。

数据库研究现状(数据库专题研究报告)(40)

自治数据库云

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 的目的是以最低的成本和复杂性实现最佳的高可用性架构。

数据库研究现状(数据库专题研究报告)(41)

主流数据库简介

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 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。

数据库研究现状(数据库专题研究报告)(42)

5、Oracle 数据库面临的竞争

如何理解 Oracle 数据库面临的竞争?

在数据库领域,商业数据库一直面临着来自于开源数据库的竞争,关系型数据库(SQL)也面临着来自于非关系型数据库(NoSQL)的竞争。数据库领域的竞争格局,虽然 Oracle、MySQL、SQL Server 一直牢牢稳居行业前三,但市场格局也在不断发生一些变化。

特别是,最近几年,在新的计算环境下,Oracle 的数据库产品面临的外部挑战和外部竞争也越来越大。我们也经常看到,亚马逊、阿里、Salesforce 等云计算厂商也都在基于开源数据库,研发自主的数据库产品。那么这些背后的原因是什么?

我们认为,理解上述这个问题,根源在于理解计算环境的变化,以及关系型数据库其存在的计算场景限制。

关系型数据库,是上世纪 60 年代左右的 IT 技术,到目前已经有半个多世纪的应用。即使目前我们看到互联网的发展、大数据的应用已经云计算机的普及,涌现出越来越多的新型数据库,然而关系型数据库仍然占据主导地位。最主要的原因之一就是关系型数据库采用了 SQL 标准,这种高级的非过程化编程接口语言,将计算机科学和易于人类理解认知的数据管理方式完美的衔接在了一起,目前还难以超越。

根据我们前面介绍,SQL 语言是一种介于关系代数与关系演算之间的结构化查询语言,其本质是用一种类似于自然语言的关键字和语法来定义和操作数据,进行可编程的数据存储、查询以及管理。这种抽象编程接口,将具体的数据问题与数据的存放、查询实现的细节解耦开来,使得商业业务逻辑以及信息管理的计算模式能够被大量复制和应用,节省了大量的编程压力,推动商业关系型数据库的快速发展。

2010年左右,随着计算的架构逐步从传统的CS架构向云计算架构迁移,关系型数据库逐步暴露出一些不能满足云计算模式下的需求。在传统 IT架构下,计算力(例如用关系型数据库来处理结构化数据等)是服务于系统硬件隔离环境下的多用户使用场景。而云计算时代是多客户租用环境,各种计算负载场景更加复杂。因此,我们面临的一个问题是,在计算负载变迁的环境下,如何解决传统计算架构的技术产物与云计算时代应用环境的适配问题。也就是说如何将传统的关系数据库应用在云计算环境下。

在云环境下,随着用户的增多,以及用户业务和数据的增长,备份、性能、迁移、升级、只读实例、磁盘容量、日志 延迟等相关问题渐渐显现出来。这些都与关系型数据天生的缺陷有关:1、为了维护一致性所付出的代价就是其读写性能比较差;2、固定的表结构;3、不能很好满足高并发读写需求;4、不能很好满足海量数据的高效率读写需求。

数据库研究现状(数据库专题研究报告)(43)

基于此,亚马逊、阿里等云计算厂商纷纷开始,根据自身业务需求,逐步开发适用于自身业务计算环境下的数据库产品。我们看到,亚马逊开发有 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)数据安全。

数据库研究现状(数据库专题研究报告)(44)

6、数据库市场格局演化情况

根据数据库排名权威网站 DB-Engines,其对全球数据库进行实时排名。该排名参考 6 个方面的考虑:1)数据库相关网站数量,2)公众关注度,3)技术讨论活跃度,4)招聘职位,5)专业档案,6)社交网络信息等。该排名在业界引用得非常多,权威性也很高,总体比较客观。

数据库总体排名。根据 DB-Engines 数据,数据库总体排名前五的分别是:Oracle、MySQL、SQL Server、PostgreSQL、MongoDB。其中前四个都是关系型数据库,第五个 MongoDB 是文件数据库。

数据库研究现状(数据库专题研究报告)(45)

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

数据库研究现状(数据库专题研究报告)(46)

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

数据库研究现状(数据库专题研究报告)(47)

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

数据库研究现状(数据库专题研究报告)(48)

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。

数据库研究现状(数据库专题研究报告)(49)

从数据库使用情况来看,一些新型的数据库的使用程度在不断提升。DB2、Sybase 等使用者方面有些流失。开源类数据库使用情况有所增加。比如 MySQL 的使用程度在不断增加。而在开源数据库中,近几年使用者增加比较明显的主要在:MongoDB 、PostgreSQL、Redis 等。

MongoDB(文档型数据库,2009 年发布第一版本)、PostgreSQL(关系型数据库,1989 年发布第一版本)、Redis(键值型数据库,2009 年发布第一个版本)等。

数据库研究现状(数据库专题研究报告)(50)

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

数据库研究现状(数据库专题研究报告)(51)

数据库研究现状(数据库专题研究报告)(52)

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

数据库研究现状(数据库专题研究报告)(53)

商业数据库和开源数据,在不同的数据模型中,其占比也有很大不同。数据模型一般就是我们所说的关系数据模型还是非关系数据模型。由于关系数据模型占据行业主导位置,所以我们就将关系数据模型之外的都统称为菲关系数据模型。非关系数据库模型的种类包括很多,比如,文档型、键值、图像等。

通过下图,我们可以看出,我们用的比较多的关系型数据库中,商业数据库的占比在 60%左右,其余的是开源数据库。

数据库研究现状(数据库专题研究报告)(54)

数据库研究现状(数据库专题研究报告)(55)

数据库研究现状(数据库专题研究报告)(56)

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搜索下载本报告。

(报告来源:中泰证券;分析师:谢春生/杨亚宇)

,