Oracle(ORCL.US)研究 | 数据库:发展、竞争及演化

31460 6月19日
share-image.png
智通编选 挖掘最有价值的港股热点信息,捕捉最有魅力的资本市场动向。

本文来源微信公众号“谢春生”。

数据库作为计算机架构的核心底层软件,从1970年左右发展到现在,已经有五十年左右的时间。那时,软件还并没有正式作为单独的产品进行销售,更多的是与硬件和解决方案一起卖给客户。数据库产品发展到现在,中间经过各种计算载体和计算架构的变化,但数据库的核心重要位置依然没变。同时, 随着计算环境的变化,数据库领域的格局也在发生一些变化,商业数据库VS开源数据库,关系型数据库VS非关系型数据库,又将发生哪些变化?

如何理解数据库?

对于非IT专业的人,经常会问,数据库有什么用?数据库,从字面来理解就是保存数据的仓库。按照正式语言来定义,数据库是按照一定的结构,来组织、存储和管理数据的仓库。在计算机中,它一般是由一个或者一组文件构成。如果没有数据库,计算机的数据处理速度(读写的速度)可能就没有这么迅速。

在数据库产品的演进中,其基于的数据模型也在发生变化

根据数据模型的不同,数据库可以分为关系型数据库和非关系型数据库。关系型数据库的底层数据模型是关系模型。非关系型数据库是一个大类,其又可以分为不同种类的数据库。比如,面向高性能并发读写的key-value数据库,面向海量数据访问的面向文档数据库,面向可扩展性的分布式数据库等。

Oracle数据库产品:Oracle DataBase& MySQL

Oracle(ORCL.US)的数据库产品是公司最起家的业务。Oracle的数据库业务发展历程,与全球数据库发展历史交织在一起,也与Oracle整个公司的发展绑定在一起。Oracle的数据库产品包括两种。第一个是Oracle自己的数据库产品,也就是Oracle Database。第二个是MySQL。关于MySQL与Oracle的关系,也是从原来的竞争对手,通过Sun这家公司而成为Oracle自己的产品。目前Oracle的数据产品已经更新到Oracle Database 18c,其提供了一个高性能、高可靠和高安全的平台,可以在云,本地或混合云进行部署。

Oracle数据库面临的竞争

在数据库领域,商业数据库一直面临着来自于开源数据库的竞争,关系型数据库也面临着来自于非关系型数据库(NoSQL)的竞争。最近几年,在新的计算环境下,Oracle的数据库产品面临的外部挑战和外部竞争也越来越大。我们经常看到,亚马逊、阿里、Salesforce等云计算厂商也都在基于开源数据库,研发自主的数据库产品。商业数据库&开源数据库,关系型数据库和非关系型数据库,未来又将走向何方?

风险提示

行业景气度回升进程低于预期的风险;人力成本上升超过预期的风险;行业业绩增速低于预期的风险;技术的演进进程低于预期的风险。

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的主要业务,做一系列的讲解。以便于我们对国内相应市场和相应公司的产品做比较。

图表1:Oracle的业务布局

来源:Gartner、中泰证券研究所

图表2:Oracle营业收入

来源:Wind、中泰证券研究所

图表3:Oracle净利润

来源:Wind、中泰证券研究所

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

图表4:Oracle收入构成(2016)

来源:Gartner、中泰证券研究所

2、如何理解数据库?

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

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

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

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

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

图表5:文件保存数据的缺点

来源:Gartner、中泰证券研究所

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

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

图表6:数据库管理方式的演化

来源:Wind、中泰证券研究所

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

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

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

Oracle服务器=实例+数据库

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

内存=SGA+PGA

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

图表7:Oracle 数据库体系结构图

来源:Gartner、中泰证券研究所

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

图表8:用户与数据库数据的交互过程

来源:Wind、中泰证券研究所

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

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

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

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

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

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

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

图表9:数据库的两个存储结构

来源:Gartner、中泰证券研究所

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

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

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

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

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

图表10:数据库的架构

来源:Wind、中泰证券研究所

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

图表11:数据库的演进

来源:IDC、中泰证券研究所

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

图表12:数据库的演进

来源:IDC、中泰证券研究所

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

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

图表13:数据库管理系统(DBMS)

来源:IDC、中泰证券研究所

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

图表14:数据库界的四位图灵奖获得者

来源:IDC、中泰证券研究所

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

图表15:历届图灵奖获得者(1)

来源:维基百科、中泰证券研究所

图表16:历届图灵奖获得者(2)

来源:维基百科、中泰证券研究所

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

图表17:数据库的演进

来源:IDC、中泰证券研究所

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

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

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

图表18:关系型数据库

来源:Wind、中泰证券研究所

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

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

图表19:非关系型数据库

来源:Wind、中泰证券研究所

图表20:关系数据库与非关系数据库

来源:Wind、中泰证券研究所

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

1)键值对存储:Redis

2)文档存储:MongoDB

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

4)图形数据库:Neo4j

图表21:非关系型数据库的种类

来源:Wind、中泰证券研究所

图表22:关系型数据库和非关系型数据库的对比

来源:Wind、中泰证券研究所

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

图表23:OLTP和OLAP的区别

来源:Wind、中泰证券研究所

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

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

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

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

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

图表22:OLTP和OLAP的区别

来源:Wind、中泰证券研究所

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。

图表23:Oracle的数据库产品

来源:Wind、中泰证券研究所

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

图表24:Oracle数据库发展历程(1)

来源:Wind、中泰证券研究所

图表25:Oracle数据库发展历程(2)

来源:Wind、中泰证券研究所

图表26:Oracle数据库发展历程(3)

来源:Wind、中泰证券研究所

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

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

图表27:Oracle数据不同版本的演化

来源:Wind、中泰证券研究所

图表28:Oracle数据库推出的版本

来源:Wind、中泰证券研究所

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

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

图表28:支撑C-S架构的数据库

来源:Wind、中泰证券研究所

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

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

图表29:Oracle数据库的RAC技术

来源:公司官网、中泰证券研究所

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

图表31:支撑网络数据的数据库

来源:Wind、中泰证券研究所

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

图表32:支撑云架构的数据库

来源:公司官网、中泰证券研究所

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

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

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

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

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

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

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

图表33&34:中国数据库市场份额(2015)和全球数据市场份额(2015)

来源:Gartner、中泰证券研究所

图表35&36:Linux数据库市场份额和Unix数据库市场份额

来源:Gartner、中泰证券研究所

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

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

图表37:Oracle 18c的自治数据库

来源:Wind、中泰证券研究所

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

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

图表38:Oracle 18c多租户的特点

来源:公司官网、中泰证券研究所

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

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

图表39:Oracle 18c 的In-Memory架构

来源:公司官网、中泰证券研究所

自治数据库云

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

图表40:Oracle 18c 的In-Memory架构

来源:公司官网、中泰证券研究所

主流数据库简介

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

图表41:几种主流数据库对比

来源:Wind、中泰证券研究所

5、Oracle数据库面临的竞争

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

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

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

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

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

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

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

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

图表42:不同类型数据库的特征

来源:Wind、中泰证券研究所

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

图表43:关系型数据库&非关系型数据库

来源:Wind、中泰证券研究所

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

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

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

图表44:数据库排名

来源:Wind、中泰证券研究所

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

图表45:关系型数据库排名

来源:Wind、中泰证券研究所

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

图表46:分布式数据库排名

来源:Wind、中泰证券研究所

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

图表47:文件数据库排名

来源:Wind、中泰证券研究所

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。

图表48:MongoDB数据库的商业模式

来源:Wind、中泰证券研究所

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

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

图表49:各数据库产品的竞争关系及客户流向示意图

来源:Wind、中泰证券研究所

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

图表50&51:商业&开源数据库数量 &商业&开源数据得分情况

来源:DB-Engines、中泰证券研究所

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

图表52:商业数据库和开源数据库:历史受欢迎程度

来源:DB-Engines、中泰证券研究所

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

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

图表53:商业和开源数据库在不同数据库模型中的占比

来源:DB-Engines、中泰证券研究所

图表54:商业数据库排名(2019年6月)

来源:DB-Engines、中泰证券研究所

图表55:开源数据库排名(2019年6月)

来源:DB-Engines、中泰证券研究所

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产品,其产品性能也在逐步提升。而对于国内云厂商自主研发的数据库而言,逐步在摆脱海外数据库厂商的约束,开发适用于高并发、海量数据、可扩展、实时性的分布式数据库。

风险提示

行业景气度回升进程低于预期的风险,人力成本上升超过预期的风险,行业业绩增速低于预期的风险,技术的演进进程低于预期的风险。


相关阅读

微软(MSFT.US)联合甲骨文(ORCL.US),能否对抗亚马逊(AMZN.US)云服务?

6月8日 | 智通编选

甲骨文公司(ORCL.US)推出电动车探测技术 智能管理电网新能源需求

6月4日 | 孔雯雯

甲骨文(ORCL.US)推出新型电网方案 用分布式能源满足动态的电动车配电需求

6月3日 | Techweb

继中国区裁员后 甲骨文(ORCL.US)西雅图裁员300人

5月29日 | 刘瑞