数据浪潮

978-7-115-57924-9
作者: 吴垚
译者:
编辑: 胡俊英

图书目录:

详情

近年来,基础软件的发展越来越受到重视,越来越多的计算机从业者对数据管理系统和大数据的知识产生了强烈的需求。 本书既介绍了数据管理系统的技术发展史,又介绍了数据管理系统的关键技术内涵,同时还介绍了一系列主流的商业化产品及其架构,并对前沿技术进行了讨论分析,给出作者自己的见解和洞察。本书内容主要包括数据库与大数据的诞生、发展和商业应用,数据库与大数据之间的关系,国产数据库的国际化,数据管理系统的共同之处,数据管理系统的算法理论、前沿技术等。 本书适合数据管理系统或大数据方向的技术人员和科研人员阅读,也适合互联网科技公司的技术人员及管理人员,以及对特定领域的商业和历史感兴趣的读者阅读。

图书摘要

版权信息

书名:数据浪潮

ISBN:978-7-115-57924-9

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

编  著 吴 垚

责任编辑 胡俊英

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57924”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


近年来,基础软件的发展越来越受到重视,越来越多的计算机从业者对数据管理系统和大数据的知识产生了强烈的需求。

本书既介绍了数据管理系统的技术发展史,又介绍了数据管理系统的关键技术内涵,同时还介绍了一系列主流的商业化产品及其架构,并对前沿技术进行了讨论分析,给出作者自己的见解和洞察。本书内容主要包括数据库与大数据的诞生、发展和商业应用,数据库与大数据之间的关系,国产数据库的国际化,数据管理系统的共同之处,数据管理系统的算法理论、前沿技术等。

本书适合数据管理系统或大数据方向的技术人员和科研人员阅读,也适合互联网科技公司的技术人员及管理人员,以及对特定领域的商业和历史感兴趣的读者阅读。


吴垚,毕业于中国人民大学,是中国人民大学和美国加利福尼亚大学尔湾分校(UCI)联合培养的博士,其国内导师陈红是CCF数据库专业委员会常务委员、国家科技进步二等奖获得者,国外导师Michael J. Carey是美国工程院院士、ACM和IEEE Fellow。作者在博士在读期间参与的项目包括:物联网搜索中的隐私保护研究、新一代高时效安全可靠流数据管理系统、“Big Active Data:From Petabyte Data to Million People”等。作者毕业后就职于华为高斯部门,先后在高斯产品部、高斯实验室和多伦多实验室工作,在GaussDB、XY Kernel、HP Kernel等项目中参与AP数据库、AI数据库、TP数据库的研发。


数据本身是一个很大的话题,也有着非常悠久的历史。近年来,一提到数据,大家几乎就会想到大数据,尤其是在大数据被各行各业不断“吹捧”之后。其实数据是一个非常广泛的概念,本书主要介绍数据管理系统在历史上的重要发展节点和技术变革,同时整理数据管理系统的架构设计和算法技术,最后探讨数据管理系统的前沿进展和发展趋势。本书内容一方面会偏向自然科学史或者技术科学史,介绍数据管理系统的技术历史。另一方面,因为我是做技术出身,所以难免会“克制不住”地去讲技术,但本书并不会像工具书那样深入介绍技术细节。总而言之,这是一本从宏观角度讲述数据管理系统的技术和历史的书,比科普读物分析得更深入,比技术读物更浅显易懂。如果非要类比的话,我觉得本书更像我读博士第一年做出的工作成果,即撰写的自己研究领域的综述文章,因此这是一本“综述书”。但是这本“综述书”不是一个博士一年级、刚接触这个领域的人就能写出来的入门级综述,而是凝结我读完博士、踏出学术界、在工业界摸爬滚打几年后的总结与思考的产物。

写本书的初衷有3个。一是写技术科学史的人往往会介绍学科级别的科学,而不会介绍像数据管理系统这样非学科级别的细小门类的科学。但是数据已经深入我们的工作和生活,连小孩子都开始学习编程,而且越来越多的人开始关注并进入大数据管理这个领域。二是做数据管理系统的人往往会写诸如“数据库存储引擎优化原理与实现”的非常专业的书,但即使像我这种做技术出身的人有时也很难有勇气认真读完这样的书。三是我认为数据管理系统是一个越发重要的研究和实践方向,因此我们有必要弄清它的历史,因为只有了解历史才能更好地走向未来,而这却是技术人员容易忽略的一点。本书适合对数据感兴趣、从事大数据或者数据库相关工作,以及从事与数据相关的投资、法律等工作的人阅读,用于让读者系统且稍微深入地了解大数据管理系统。

随着大数据管理系统(如MapReduce和Spark等)逐渐成熟、稳定、走向商业化,国内各大互联网公司(如百度、阿里巴巴、腾讯等)纷纷开始研发自己的数据管理系统,一些创业公司也以分布式数据库(如TiDB等)作为切入点迅猛发展,数据库系统逐渐从“殿堂象牙塔”走向“寻常百姓家”。目前关于大数据或者数据库的书大概可以分为3类:一是像《大数据》这样从非常宏观的国家和社会的角度谈大数据的意义的书;二是像《大数据库》这样介绍数据管理系统的工具使用方法和代码示例的书;三是像《PostgreSQL数据库内核分析》这样从非常专业的角度介绍技术细节的书。每当读到这些书时我都受益匪浅,但是总感觉少了点儿什么。

攻读博士学位时,我选择了中国人民大学信息学院的“强势”学科——数据库。毕业后,我进入华为“2012实验室”旗下的高斯实验室,做分布式数据库相关的工作,但我一直想做一些与学术相关的事,于是萌生了写书的想法。在繁忙的工作之余,我利用平时休息的时间,完成了本书的编写。

本书主要从历史的角度介绍数据管理系统(数据库和大数据管理系统)的重要发展节点以及技术变革,既包括重要的历史变革事件介绍,也包括关键技术的介绍以及主流系统的架构介绍,并且以历史的眼光看待这些发展,探讨发展趋势,给出自己的见解和思考。

读者在阅读本书的过程中,可能感觉有时像在读小说,有时像在读历史,有时像在读教科书,还有时像在读一本纯粹的技术书。但归根结底,我希望读者能从本书中有所收获。

吴 垚

2022年4月


近年来,大数据技术逐渐在各行各业广泛应用,不仅在科技领域有所应用,在医疗、保险、教育以及行政等领域也屡见不鲜。大数据这个概念已经家喻户晓,数据管理系统的研发也得到很多互联网公司的重视。新的数据管理系统层出不穷,那么数据管理系统的过去、现在和将来是什么样子的呢?本书通过介绍工业界和学术界的一系列数据管理系统产品,来帮助大家了解这一领域曾走过的路,并介绍数据管理系统的发展现状,进而对其未来进行探讨。

本书是作者在阅读大量参考资料并结合自己的研究和工作经历的基础上,通过与数据管理系统及大数据领域的专家学者或技术从业者进行交流和学习,最后消化、吸收、整合而成的。作者希望本书不仅能帮助系统开发人员和架构师在数据管理系统的研发方面开阔思路,也可以帮助科技公司的产品经理、项目经理、部门主管等了解技术选型和解决方案,同时还可以帮助相关领域的管理者、投资人和企业客户了解数据管理系统的基础概念和发展历史。

本书既有丰富的商业系统剖析,又有广泛的学术研究解读,因此既适合对大数据感兴趣的读者阅读,也适合从事大数据或者数据库相关工作的学生、工程师、架构师用于系统且深入地了解数据管理系统,一些从事与数据相关的管理、投资、法律等工作的读者也可以通过本书从宏观角度了解该领域的历史、技术、发展等重要内容。

本书分为5篇共18章。前3篇介绍数据管理系统的技术脉络和系统架构,后2篇对数据管理系统的未来发展和技术精髓进行探讨。全书从整体上对数据管理系统进行了全面介绍,同时每一部分的内容又相对独立,读者可以直接选择感兴趣的部分深入阅读。

第1篇介绍数据管理系统的“掌上明珠”——关系数据库的技术脉络,旨在让读者对数据管理系统早期的发展历史有清晰的了解。其中第1章介绍了数据管理系统历史上的4位图灵奖获得者的成长和贡献,第2章对早期主流的数据管理系统(如System R、PostgreSQL等)进行了详细的介绍,第3章介绍了早期国产数据库的发展和代表产品。

第2篇介绍“异军突起”的数据管理系统,旨在帮助读者了解大数据产生的背景及其蓬勃发展的过程。其中第4章讲解了几家知名公司研发的数据管理系统(如MapReduce、Cassandra等),第5章介绍了后期发展起来的数据管理系统(如Spark、Storm等),第6章介绍了不同互联网企业的大数据基础架构,第7章介绍了大数据在工业等领域的广泛应用。

第3篇介绍数据库与大数据的相互关系和发展促进,旨在让读者对各个数据管理系统的异同有更深入的了解。其中第8章介绍了传统数据库与大数据管理系统此起彼伏的发展关系,第9章介绍了衍生而来的一些融合的数据管理系统(如AsterixDB、SageDB等),第10章进一步介绍了多种新型数据管理系统(如Pulsar、Anna等),第11章主要介绍在新的技术发展背景下国产数据库(如TiDB、OceanBase等)的发展。

第4篇对数据管理系统进行深入剖析,适合对该领域有深度认识和发展规划的人员阅读。其中第12章从计算机体系结构的角度剖析数据管理系统的架构,第13章从操作系统的角度分析数据管理系统的设计理念,第14章从未来数据管理系统统一架构的角度出发探讨了新的架构设计。

第5篇进一步对数据管理系统进行了总结分析,其中第15~18章分别从基础算法、前沿研究、异同对比、行业标准4个维度展开,为读者提供详细而深入的讲解。

读者可到异步社区网站下载与本书配套的彩图,以方便大家提升学习效果。

因作者水平有限,虽然经过多次校订,书中难免有纰漏之处,欢迎并恳请读者给予批评指正,作者邮箱为ideamaxwu@gmail.com。

在繁忙的工作之余,本书能够顺利出版,首先要感谢的就是爱人的支持与鼓励,帮我从生活琐碎之中解脱出来,能够集中精力编写本书。同时十分感谢陈红老师在学术上的指引和李国良老师在工作中的支持。

其次,特别感谢人民邮电出版社优秀的出版团队,其中胡俊英编辑认真负责的工作态度让我感触颇深。

最后感谢为本书提出宝贵意见的所有人员,是你们专业的知识、丰富的经验、深刻的见解,使本书更加完善。


大数据这个概念已经家喻户晓,数据管理系统的研发也得到了很多互联网公司的重视。新的数据管理系统层出不穷,那么数据管理系统的过去、现在和将来是什么样子的呢?

大数据技术逐渐被各行各业广泛应用。大数据技术的兴起是在2000年左右,Google发表了被誉为“三驾马车”的论文,引起学术界的广泛讨论,大数据技术逐渐在工业界广泛应用,后来从计算机领域逐渐扩展到了其他领域。这有点儿像近年来备受热议的区块链,在中本聪发表比特币“白皮书”之后,区块链也逐渐渗透到各行各业,似乎不懂区块链就是落后的标志,就像那时的大数据。

大数据的兴起貌似抢了数据库的风头,但实际上数据库的历史远比大数据久远。相对来说,数据库是一个学习门槛比较高的技术领域,而大数据却“雅俗共赏”。同样作为数据管理系统,大数据和数据库有什么联系和区别呢?现在看来,大数据与数据库的界限越来越模糊。因此,本书从一个更宏观的角度,即数据管理系统这一概念,来探讨历史和技术的发展。这里的数据管理系统是宏观意义上的概念,不仅包括MapReduce和Spark等主流的数据管理系统,也包括以PostgreSQL为代表的传统数据库系统、以Flink为代表的流数据管理系统、以Spanner为代表的分布式系统和统一编程系统Apache Beam等。这里的宏观指的是与大数据分析、处理和管理等相关的系统,它们均是数据管理系统,都在我们的讨论范围之内。

首先,本书是一本技术历史书,即技术与历史相结合的书。如果只讲某一技术或者某一时间段的技术,往往会使读者不知前因后果,对技术的产生与发展不够了解,因此很难进行创新。而如果只讲技术发展史,又会缺乏深度,显得有些“肤浅”。因此,我将尽量在技术与历史之间找到平衡点。其次,本书讲的是数据管理系统的技术历史,这就确定了本书的主要内容,即数据库和大数据管理系统以及相关的各类数据信息化处理系统的技术分析和历史演进。本书最终的目的是从数据管理系统的技术历史里面,抽象出大数据管理系统的概念并进行总结,阐述我对数据管理系统的认识。我试图将这些技术实践在历史宏观层面串联起来,帮助读者进一步认识数据管理系统的内容。

不管是技术出身的人还是非技术出身的人都可以感觉到,数据管理系统正处于“百花齐放”的阶段,从学术研究到工业以及服务业应用都是如此。因此,现在来深入认识数据管理系统这个技术领域,将帮助我们更清楚地知道未来科技的发展方向。

随着互联网、社交网络、电子商务、物联网、5G技术的快速发展,全球大数据存储量迅猛增长,成为大数据产业发展的基础。国际数据公司(International Data Corporation,IDC)的数据[1]显示,2013—2015年全球大数据存储量分别为4.3ZB、6.6ZB和8.6ZB(1ZB=1024EB,1EB=1024PB,1PB=1024TB),增长率保持在每年 50%以上,2016 年的增长率甚至达到了 87.21%,大数据存储量达到16.1ZB。2017年和2018年全球大数据存储量分别为21.6ZB和33.0ZB。据IDC预计,到2025年,世界范围内的大数据存储量将达到175ZB。

如图0-1所示,根据DB-Engines排行榜的统计数据,到2022年8月,DB-Engines所收录的数据管理系统有 395 个,包括关系数据库、KV数据库、图数据库、时序数据库等。DB-Engines的数据库排名依据的是当前数据库的流行程度,数据来源包括Google以及Bing搜索引擎的关键字搜索数量、Google Trends的搜索数量、Indeed网站中的职位搜索量、LinkedIn中提到关键字的个人资料数、Stack Overflow上的相关问题和关注者数量等。这里的排名并不代表数据库的安装数量或者使用量的多少,但某数据库越来越受欢迎则表示在一定时间范围内其得到了更加广泛的应用。

图0-1 2022年8月的DB-Engines排行榜[2]

从工业和信息化部(简称“工信部”)网站获悉,为推动我国大数据产业持续健康发展,实施国家大数据战略,落实国务院印发的《促进大数据发展行动纲要》,工信部编制并印发了《大数据产业发展规划(2016-2020年)》(以下简称《规划》)[3]。《规划》以强化大数据产业创新发展能力为核心,明确了强化大数据技术产品研发、深化工业大数据创新应用、促进行业大数据应用发展、加快大数据产业主体培育、推进大数据标准体系建设、完善大数据产业支撑体系、提升大数据安全保障能力7项任务,提出大数据关键技术及产品研发与产业化工程、大数据服务能力提升工程等8项重点工程,研究制定了推进体制机制创新、健全相关政策法规制度、加大政策扶持力度、建设多层次人才队伍、推动国际化发展5项保障措施。

如今在学术界、工业界以及大众消费领域,大数据“如日中天”。在数据存储量不断增长和应用驱动创新的推动下,大数据具有广阔的发展空间,大数据产业将不断丰富商业模式,构建出多层多样的市场格局。在本书中,我们将从半个多世纪前即计算机诞生之初开始,来了解数据管理系统走过的路程,并介绍当前数据管理系统的发展现状,进而对数据管理系统的未来进行探讨。

[1] IDC于2017年4月发布的报告“Data Age 2025: The Evolution of Data to Life-Critical Don't Focus on Big Data; Focus on the Data That's Big”。

[2] DB-Engines官方网站DB-Engines Ranking页面。

[3] 工信部于2017年1月编制并印发的《大数据产业发展规划(2016—2020年)》。


本书由异步社区出品,社区(https://www.epubit.com)为您提供相关资源和后续服务。

本书提供配套彩图资源,请在异步社区本书页面中单击“配套资源”,跳转到下载页面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e57924”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入错误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的错误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/contribute即可)。

如果您代表学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近40年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


数据库作为数据管理系统的“掌上明珠”,一直占有很重要的地位。数据管理系统不是从数据库开始的,并且一直以来有各种形式的数据管理系统,但数据库或者说关系数据库,始终占有重要地位。在数据管理系统的发展中,无论是学术研究还是工业产品,数据库都是不可忽略的,它既有很高的学术研究价值,又有许多工业实践的成功案例。


本章从数据管理系统的历史讲起,介绍数据管理系统领域的图灵奖获得者的生平。图灵奖是计算机领域的最高奖项,我们通过图灵奖的获奖情况来看看数据库的诞生和发展。历史上有 4 位图灵奖获得者的贡献是与数据管理系统相关的,这也见证了数据管理系统发展的辉煌成就。

查尔斯·巴克曼(Charles W. Bachman),1973年获图灵奖,主持设计并开发了最早的网状数据库管理系统——集成数据存储(Integrated Data Store,IDS),奠定了数据管理系统早期发展的基础,被公认为“网状数据库之父”。

埃德加·科德(Edgar F. Codd),1981年获图灵奖,提出了关系代数和关系演算,它们成为关系数据库的理论基础,完善和发展了关系数据库理论,为日后成为标准的结构查询语言(Structure Query Language,SQL)奠定了基础。

詹姆斯·格雷(James N. Gray),1998年获图灵奖,在保障数据的完整性、安全性、并行性以及故障恢复方面发挥了十分关键的作用。他提出并实现了数据库事务处理机制,该机制成为ACID特性的基础。

迈克尔·斯通布雷克(Michael R. Stonebraker),2014年获图灵奖,深化了数据库系统一系列奠基性的基本概念和实践技术,通过一系列学术原型以及初步的商业化,其在关系数据库方面的研究结果对现今市场上的产品有很深的影响。

从上述图灵奖获得者的情况可以看出,大概平均每10年就会有一位在数据管理系统领域获得图灵奖的人物。因此,可以看出,数据管理系统在计算机领域是“常青藤”,每隔一段时间就会有新的发展。目前这4位图灵奖获得者唯一在世的是Stonebraker,我第一次见到他是在2014年杭州举办的VLDB大会上,后来也因为机缘巧合,与他有各种间接的联系。

20世纪70年代,Bachman因其对数据库技术的突出贡献获得图灵奖[1]。那时的计算机只有文件系统,并没有数据库这个概念,Bachman在这种背景下设计并开发了网状数据管理系统,即一种数据存储模式,网状数据管理系统的一种特例就是层次数据库。数据管理系统的观念是革命性的,此前计算机存储数据的最小单位是非结构化的文件,而数据库处理数据的最小单位是结构化的记录。结构化与非结构化的数据在增、删、改、查等操作上的性能有着显著的差别。由此可见,图灵奖的含金量不仅代表了扎实的工程实践带来的实际工业价值,更重要的是抽象出来的概念和理论,以及这种科学技术的影响力。

Bachman在谈到自己小时候的梦想时,说:“除了想成为一名工程师,我对其他的并不感兴趣。”第二次世界大战后,Bachman拿到了美国密歇根州立大学的学位,入职陶氏化学(Dow Chemical)公司,成了一名工程师,实现了小时候的梦想。1897年成立于美国的陶氏化学公司是一家以科技为主的跨国性公司,位居世界化学工业界第二名(第一名是美国杜邦公司)。在陶氏化学公司,Bachman担任当时数据处理部门的负责人,然而陶氏化学公司后来因为业务问题,取消了这个部门,Bachman就这样去了通用电气(General Electric)公司。

通用电气公司当时是一家管理完善、技术多元的科技公司,Bachman在这里也做着很多具有实验性质的工作,如实验仿真、预测模型、自动化等。由于通用电气公司业务体系庞大,一些专家提出,需要计算机去处理公司的销售、存货、记账等工作,同时需要一套统一的、实时更新的系统来管理这些数据。20世纪50年代,数百家美国企业争相订购计算机,关于计算机的潜在收益的炒作很多,但是让计算机做事情比预期的要难得多。计算机通常仅被用于自动化文档处理任务,如工资单或账单处理任务。到20世纪60年代,管理专家意识到,要证明用计算机处理这些工作任务在人员和硬件成本方面会投入巨大,前提是公司使用计算机将各种业务流程(如销售、会计和库存)结合在一起,以便经理可以访问集成的最新信息。

当时,很多企业都希望有这样一套完整的、集成的信息管理系统,但受制于当时的硬件和软件水平,这样一个现在看来很简单的系统在那时却很难实现。由于当时每个业务流程都是单独运行的,其相关的数据文件存储在磁带上,对一个程序进行小的更改可能意味着要重写整个公司的相关程序,但是业务需求不断变化,因此集成系统的方案未能取得大的进展。在通用电气公司,Bachman正在为这样一个系统努力,他首先实现了制造信息与控制系统(Manufacturing Information and Control System,MIACS),使用最早的可用磁盘驱动器,他的团队解决了许多其他系统集成问题。后来这套系统经过进一步完善变成了IDS,Bachman的IDS于1963年投入运营,这是一项至关重要的发明。到20世纪60年代末,这套系统开始被称为数据管理系统。

1973年,Bachman因IDS获得第八届图灵奖,他是第一位单纯靠工程技术获得图灵奖的人。在此之前,图灵奖都是在学术研究领域确立了完整的理论模型,或者有科学贡献的人才能获得的奖项,而IDS这样一套实用的工程工具,看起来是无法“匹配”图灵奖的。Bachman始终活跃在工业界,他是仅有的几位没有学术背景、没有教职,甚至没有博士学位的图灵奖得主之一。

这也可以看出,数据管理系统研究本身是一个工程性很强的学科,这一特性造成了后来数据管理系统的“挥之不去的阴霾”——是否有一个集成的完整系统可以进行统一的数据管理?后来,Bachman推动了很多数据管理系统领域工作的进展,包括网状数据管理系统、美国国家标准协会(American National Standards Institute,ANSI)和国际标准化组织(International Organization for Standardization,ISO)标准的发展等。他也曾强烈地反对过数学科学家出身的Codd提出的关系模型数据管理系统,后来,这样的场景在“大数据时代”又重复上演。

关于IDS技术原理,可以参考论文“The Evolution of Storage Structures”[2]。IDS在磁盘上维护一组共享文件,并同时维护用于构建和维护它们的工具。负责特定任务(如记账或库存更新)的程序通过向IDS发送请求来检索和更新这些文件。IDS为应用程序提供了一组功能强大的命令来操纵数据,这是后来被称为数据操纵语言的早期形式。这使程序员的工作效率提高了很多,因为他们不必为“随机访问”磁盘存储设备所带来的巨大复杂性而费解。这也意味着程序员可以在不重写访问文件的所有程序的情况下重组、移动或扩展文件。IDS维护一个单独的数据字典,以跟踪有关系统中各种记录及记录之间关系的信息,例如,客户与他们下的订单之间的关系。这是集成各种数据的关键步骤,而这对于集成业务流程和让计算机成为管理工具至关重要。Bachman大胆的IDS设计,将IDS和MIACS应用程序压缩到相当于占计算机内存40KB大小的出色效率使这成为可能。这种紧密的联系意味着IDS和问题控制器(由同一团队研发的、面向事务的操作系统)几乎完全替代了通用电气公司早期的基础系统软件。在这段时间内,其他任何程序的功能和灵活性都无法与IDS相提并论。

Bachman对IDS的设计以及网络数据模型基本概念的制定,对后来数据库的发展产生了重要的影响。如果从现代计算机的视角看,网状数据库(见图 1-1)是一种“显而易见”的数据存储方式。然而在那个年代,即使是线性结构(树状结构的一种特例)这种泛化的理解也是花了十多年才完成的,因为这不仅涉及软件层面的架构设计,还需要硬件的支持。从树状到网状的泛化不需要新型硬件,似乎只需要一个新型的数据管理系统,然而这个管理系统并不容易实现。在树状结构中,任何节点有且只有一条访问路径,就像在日常操作系统中,不可能建出另外一个根目录,也不可能建出一个同时属于多个目录的子目录。但在网状结构中,这都是可能的,可以有多个节点没有父节点,一个节点也可以有多个父节点。有多个父节点就意味着,要访问一个节点,可能存在多条不同的路径。这样复杂的系统要如何管理?网状数据库还有很多类似的问题等着人们来解决。在这种工业背景下,Bachman抓住历史时机,结合工业界的需求,创造了革命性的产品,也就是我们前面所说的IDS——世界上第一个网状数据管理系统。

图1-1 网状数据库原理

1970年,通用电气公司的计算机业务被霍尼韦尔(Honeywell)公司收购,Bachman来到波士顿,在霍尼韦尔高级研究部从事数据库工作。Bachman在20世纪70年代帮助组织了两个极具影响力的委员会。1972年,美国国家标准协会标准规划与需求委员会(SPARC)和ANSI指导成立了数据库系统研究组。1971年,Bachman的数据库系统研究组提出了数据库任务组(Database Task Group,DBTG)报告,其中确立了包含外部、抽象和内部的三层模式,该模式在数据库领域有着极为深远的影响力。1978—1982年,作为ISO下属的开放系统互连(Open System Interconnection,OSI)组委员会的主席,Bachman帮助制定了计算机通信的七层模型,为讨论网络协议提供了基本框架。

1983 年,Bachman成立了自己的公司——Bachman信息系统公司。其产品服务于数据建模和软件工程企业。他于 1996年退休,但仍作为数据库架构设计的顾问。1973年,美国计算机学会(Association for Computing Machinery,ACM)授予Bachman图灵奖,表彰他在数据库领域尤其是网状数据管理系统方面的杰出贡献。

通过创建IDS,并大力倡导其背后的概念,Bachman在创建数据管理系统方面非常有影响力。在漫长的职业生涯中,他管理着一家化工厂技术部门,创建了成本会计系统,领导了一个早期的数据处理小组,率先将计算机应用到制造控制中,指导了标准化数据库和计算机通信概念的建立与发展,赢得了计算机领域的最高荣誉,并创立了一家上市公司。这种理论与实践结合的完美思路,在数据管理系统领域一直被重复实践着。

在20世纪70年代之前,数据库或者数据管理系统,对于到底什么样的模型或者架构是合理的,并没有统一的定论。哪种数据结构对于数据管理系统是最好的?是层次的、网状的,还是其他类型的?而且各家公司根据自己的业务诉求,定制了适合不同场景的数据管理模型和算法。在IBM工作的Edgar Codd,在这种情况下开始发力,研究数据库理论。他获得图灵奖是因为他证明了在理论和实践上,关系数据库是可行的[3]。1974年,Codd和Bachman在ACM的牵头下组织了一场“交锋”,Codd要统一当时关于数据模型的混乱局面,他的目标是为数据库建立一个优雅而灵活的关系模型。这个关系模型有严格的数学基础,抽象级别比较高,而且简单、清晰。但当时也有人认为关系模型仅仅是理想化的数据模型,用来实现数据库管理系统(Database Management System,DBMS)是不现实的,他们尤其担心关系数据库的性能难以令人接受,更有人视其为当时正在进行的网状数据管理系统规范化工作的严重威胁。后来有了这场以Codd和Bachman为首的分别支持和反对关系数据库的两派之间的辩论,这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流模型。从此,有了理论支撑的关系数据库“统治”了数据管理系统领域几十年,因为对科学技术来说,我们更相信基于数学证明的理论,我们认为这样的理论看起来更科学,更有说服力。实际上,关系数据库在实践中,无论是在使用的便捷性还是性能上,确实有它独有的优势。

Codd的父亲是皮革制造商,母亲是学校老师。20世纪30年代,他获得了英国牛津大学埃克塞特学院的全额奖学金,最初学的是化学。1942年,他自愿参加兵役,成为英国皇家空军沿海司令部的中尉,并且因为学习成绩优秀而获得延期毕业的资格。战争结束后,他回到英国牛津大学完成学业,转而攻读数学并于1948年获得学士学位。

作为英国皇家空军服役任务的一部分,Codd被派往美国接受航空培训。这种经历让他对飞行产生热爱,在1948年毕业后不久便移居美国。Codd移居美国后,在纽约梅西百货短暂地工作过,担任男子运动服部门的销售员。后来,他又在美国田纳西大学(University of Tennessee)担任数学讲师,在那里任教6个月。

Codd的计算机生涯开始于1949年,加入IBM公司后,作为编程数学家,Codd参与了IBM公司的第一台电子计算机的编程工作。因为反对麦卡锡(McCarthy)的政策,1953年,Codd离开美国去了加拿大一家公司进行数据处理的工作,在那里他负责加拿大计算设备有限公司的数据处理部门的工作。一次偶然的机会,他与自己在IBM工作时的领导会面,这也促使他于1957年重新加入IBM并返回美国,继续做STRETCH项目。该项目是一个多编程系统(IBM 7030的设计),后来被开发成IBM的7090大型机技术。

1965年,Codd在美国密歇根大学拿到硕士和博士学位,他的博士论文是“Cellular Automata”,是对冯·诺依曼(John von Neumann)工作的简化。拿到学位之后,又继续回到IBM的圣何塞研究实验室工作。那时,已经有一些数据库产品,但是Codd觉得这些产品既难用又没有扎实的理论基础,因此数学专业出身的他想用数学逻辑来做一套数据管理系统,即基于关系模型的数据库。

关系模型被认为是20世纪最伟大的技术成果之一。Codd重新定义了数据管理系统这个领域,使其成为受人尊重的学术研究领域。在已有的、复杂的、特殊的、难用的数据库工具的基础上,关系模型解决了很多数据库基本的难题,同时提供了强有力的理论模型,因此关系模型一直影响着现在的数据库的发展。如今,每一次ATM操作、机票预订、信用卡消费等交易的处理,都依赖于Codd发明的关系数据库。

关系模型是一个非常抽象的数据库模型,Codd也曾想在此基础上做一层自然语言应用层(Rendezvous项目)来使其更易用。然而当时在IBM,Codd的这项工作并没有得到认可和重视,但Relational Software公司,即后来的Oracle公司看到了关系数据库的前景并借此机会成为数据库领域的“霸主”,不过这都是后话。当IBM意识到Codd的这项工作的重要性时,Codd已经打算离开IBM创建自己的公司。在作为独立顾问工作一年多之后,1985年,Codd和他的两个同事——莎伦·温伯格(Sharon Weinberg,后来成为Codd的妻子)和克里斯·戴特(Chris Date)成立了两家公司The Relational Institute和Codd & Date Consulting Group(简称C&DCG),主要专注于关系数据库的管理、设计和产品评估。后来C&DCG逐渐裂变为多家公司,包括母公司Codd & Date International和一家欧洲公司Codd & Date Limited。关系数据库后来在工业界确实发展得非常快,创造了上百亿美元的市场,但是Codd本身并没有从中获益。Codd还定义了联机分析处理(Online Analytical Processing,OLAP)的概念,提出不仅要支持关系模型的事务处理,也要支持更复杂的分析操作,而这些都已经被证明是正确的方向。

想要了解更多与关系数据库模型有关的知识,可以参考Codd的论文“A Relational Model of Data for Large Shared Data Banks”[4]。这篇论文提出了数据应该按照关系原理的不同种类来组织,论述了范式理论和衡量关系系统的标准,如定义了某些关系代数运算,研究了数据的函数相关,定义了关系的第三范式,从而开创了数据库的关系方法和数据规范化理论的研究。这篇论文也成了关系数据库的开山之作,成了计算机科学界的经典论文之一。随后,Codd又连续发了几篇论文,为关系数据库奠定了坚实的理论基础,Codd也因此获得了1981年的图灵奖。

关系模型将数据组织到具有列和行的一张或多张表(或“关系”)中,并标识每行的唯一键。行被称为记录或元组,列被称为属性。通常,这一张表代表一个“实体类型”(如客户或产品)。行表示该类型的实体的实例(如“Mike”或“Car”)以及归属于该实例的值的列(如地址或价格)。表中的每一行都有自己唯一的键,通过为链接行的唯一键添加列(这些列称为外键),可以将表中的行链接到其他表中的行。Codd表明,任意复杂的数据关系都可以用一组简单的概念来表示。关系是不同表之间的逻辑连接,是基于这些表之间的交互而建立的。关于关系模型的理论基础——关系代数,这里不赘述,可参见图1-2。

图1-2 关系代数运算符及含义

Codd的人生经历是个传奇,他本是在牛津大学埃克塞特学院学化学的,后来却支援参军加入英国皇家空军;第二次世界大战后他在美国梅西百货做过销售员,在田纳西大学做过数学讲师,在加拿大逃避过美国的政策;年近40岁时进入美国密歇根大学进修计算机与通信,40岁拿下硕士学位,42岁拿下博士学位;最终因不满IBM对自己工作的不重视而自己创业。ACM SIGMOD数据管理国际会议的奖项SIGMOD Edgar F. Codd Innovations Award就是为了表彰Codd在关系数据库领域做出的杰出贡献而设立的。SIGMOD的前身SICFIDET(Special Interest Committee on File Definition and Translation)其实就是Codd在1970年创办的。Codd丰富多彩的人生体验,让他在数据管理系统的历史上留下了光辉的一页。

如果说前两位图灵奖获得者是在数据结构方面做出了杰出贡献,那么后两位图灵奖获得者则是在算法上实现了突破和创新。早期IBM在数据管理系统的地位就像现在的Google,IBM公司出了很多专家和知名的系统。在关系数据库已经站稳脚跟的时候,Gray提出了数据库的ACID属性,即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),Gray也因其对数据库和事务处理研究的开创性贡献以及在系统实施中的技术领导力[5]获得图灵奖。至此,关系数据库作为数据管理系统的一个分支,已经有了完整的理论支撑,在实践中也得到证明,似乎其已经走到了尽头。

Gray学生生涯的大部分时间都在美国加利福尼亚大学伯克利分校度过。他最初的计划是主修物理,与美国某航空航天公司的合作项目使他对学术有了更多的了解。在本科期间,Gray就学习了研究生课程并开展了研究工作。Gray于1966年毕业,获得数学和工程学士学位。毕业后,Gray在位于新泽西州穆雷山(Murray Hill)的贝尔实验室工作了一年,工作期间他还在纽约大学Courant研究所上课。在此之后,他又回到加利福尼亚大学伯克利分校并进入新成立的计算机科学系,从事无语境语法和形式语言理论的研究,并获得博士学位。他在接下来的两年里,在IBM的赞助下,担任博士后研究员。在此期间,圣何塞研究实验室与IBM的通用产品部合并。该部门主要负责设计和制造计算机磁盘驱动器,数据库管理系统是该部门的研究重点。

在IBM和其他地方开展了几个项目之后,Gray将接下来的目标定为建立一套基于Codd的关系模型的实用系统。1973年,IBM管理层研究后决定为了一个位于圣何塞的项目将沃森研究中心(Watson Research Center)和圣何塞研究实验室(San Jose Research Laboratory)的人员合并,Gray很快加入了这个名为System R的项目。该项目持续了5年,并与加利福尼亚大学伯克利分校的INGRES项目一起,成为关系数据库行业的基础。Gray在System R中发挥了重要作用,他将自己的经验与系统、理论相结合,为并发控制和崩溃恢复相互关联的问题创建了统一的方法。他把交易(Transaction)定义为一个基本工作单位,即后来事务的概念。例如,将钱从一个银行账户转移到另一个账户,无论交易是否成功,都必须使银行的数据库保持一致的状态。Gray研发的技术允许并发执行许多事务,并允许系统崩溃后重新启动,同时保持数据库的一致性,这项工作是他获得图灵奖的基础。

1980年,Gray改变了职业,转而加入了Tandem Computers公司(简称“Tandem”)。Tandem率先在商业系统中使用容错硬件和软件。Gray的工作范围从在IBM进行的研究转移到了在Tandem负责的生产,而后扩展到涉及Tandem客户以及整个数据处理领域的产品开发活动。他负责的产品开发活动的一个典型代表是NonStop SQL关系数据库管理系统。该系统与Tandem的操作系统和通信软件紧密集成,具有容错能力和高可用性,性能可扩展。Gray从最初的构想就参与其中,并负责很多工作,如获得管理批准、招聘工程师、领导架构设计,以及参与编码和调整等。

Gray认为关系数据库模型和SQL是在线应用程序的良好基础,但他担心客户难以比较各种硬件和软件供应商的产品。Gray对容错的兴趣是促使他与Tandem客户合作研究系统故障的原因。他发表了一篇有关生产容错系统统计数据的论文,证明了最常见的系统故障的来源是系统管理和软件错误。

在Tandem工作了10年之后,Gray于1990年加入了数字设备公司(Digital Equipment Corporation),并在旧金山建立了一个小实验室。在接下来的4年里,他作为顾问给关系数据库管理系统和事务处理监视器的产品组提供咨询服务。此外,他和安德烈亚斯·鲁特(Andreas Reuter)完成了《事务处理:概念与技术》(Transaction Processing: Concepts and Techniques)一书。基于他们在设计、教学算法和系统方面的综合经验,他们在书中提出了整体架构的综合视图以及事务处理系统实施者面临的许多细节。本书的完成标志着Gray结束了他对事务处理系统的关注,是他研究的转折点。

1994 年,Gray从数字设备分司辞职,并接受了加利福尼亚大学伯克利分校的Mackay奖学金。他参与了Sequoia 2000项目,该项目旨在设计一个地理信息系统以支持全球变化研究。1994—1995年,Gray和戈登·贝尔(Gordon Bell)向Microsoft建议,在旧金山建立一个专门用于服务器的、可伸缩的高级开发实验室。Microsoft同意了,并雇用了一小部分员工。在接下来的12年中,Gray为自己设定了一个目标:“将世界上所有的科学数据以及分析数据的工具联机。”他与Microsoft和多所大学的同事合作,构建了一系列系统,这些系统将日趋强大的商品硬件和软件应用于一系列应用程序,从而可以对大规模科学数据进行访问、搜索和计算。Gray从IBM转到Microsoft工作,印证了在那时,科技公司的代表开始从IBM转到Microsoft。

Gray对教授和指导他人有浓厚的兴趣,他在斯坦福大学(Stanford University)教授正式和非正式课程,在世界各地的大学做讲座,并在众多计划委员会、编辑委员会和顾问委员会中任职。总之,他的学术研究、系统构建、指导、写作、教学和演讲对绝大多数在线事务处理领域的商业界或学术界产生了积极的影响。在现代社会,银行、电子商务和许多其他应用程序的在线事务处理系统,都受益于Gray的工作。

2007年1月28日,Gray无法和他的单桅帆船返回费拉隆群岛。海岸警卫队进行了全面搜查,但未发现该船的踪迹。Gray的朋友和同事使用卫星图像和云计算进行了创新搜索,但也没有成功。海岸警卫队对海床进行了为期 4 个月的搜索,覆盖面积约 1000平方千米,采用当时最先进的技术(包括多波束回声测量仪和遥控车辆),同样未成功。在法律规定的等待期结束后,2012年1月28日官方宣布Gray死亡,这样一位杰出的科学家,就悄悄地消失在了大海中。

关于ACID特性的详细说明可以参考Gray的论文“Granularity of Locks and Degrees of Consistency in a Shared Data Base”[6]。该论文分为两部分:锁的粒度和一致性程度。每个部分都回答了有关数据库中锁的选择如何影响吞吐量和一致性的问题。在锁的粒度部分中,该论文讨论了可锁定单元的选择。可锁定单元表示在事务期间原子锁定的逻辑数据的一部分。锁定较小的单元(如单个记录)可以提高访问少量记录的“简单”事务的并发性。另外,锁定在记录级别可以减少需要访问许多记录的“复杂”事务的吞吐量,获取和释放锁的开销超过了计算的开销。因此,需要同一系统中具有不同尺寸的可锁定单元来处理多个用例。鉴于此要求,该论文提出了一种锁定系统(见图1-3),为分层数据提供不同级别的锁粒度。在该模型中,数据库被划分为区域,每个区域具有一个或多个文件,并且每个文件具有一个或多个记录。可以在任何一个这样的区域中获得锁,以便为事务操作提供并发访问。在一致性程度部分,Gray将一致性定义为满足数据的所有断言。根据在数据库上执行的操作,它可能会暂时不一致,直到完整的操作序列完成。因此,操作序列被组合成原子事务,数据库负责确保事务边界的一致性。如果事务是串行运行的,那么每个事务将具有一致的数据视图。事务的并发执行提高了读取数据不一致的可能性。论文定义了标记度为0~3的4种不同的锁访问模式。其中将模式1称为“Read Uncommitted”,将模式2称为“Read Committed”,将模式3称为“Repeatable Read”。事务被定义为恢复单元,例如,在提交事务之后,将无法回滚,因为其他事务可能已经读取了已提交的值。

图1-3 不同锁访问模式的兼容性[6]

Gray的一生是一个传奇,他有着加利福尼亚人与生俱来的自由与开放的性格。在Stonebraker纪念Gray的文章里提到Gray有3个特点:首先,他是一个“智力海绵”,他“贪婪”地阅读计算机科学许多领域的书籍,似乎知道一切的一切;其次,他总是愿意花时间讨论新的想法,并给出他对其他研究人员的想法的看法,因此,他指导和帮助了许多人;最后,他是极其聪明的人。这种知识好奇心、乐于助人和原始智力能力的结合,使Gray成为该领域真正的巨人。

迈克尔·斯通布雷克(Michael Stonebraker)获得图灵奖是因为其对现代数据库系统的概念和实践的奠基性贡献[7]。在理论已经完善的基础上,能做的只有优化了。Stonebraker在数据库实践中不断优化现有技术,其最早的成就还是对优化器的提出和实现。现在活跃在数据库学术界和工业界的领袖,大多都和Stonebraker有着千丝万缕的联系,他也算是“桃李满天下”。Stonebraker所做的工作大部分是在关系数据库的基础上,不论是列式数据库C-Store还是内存数据库H-Store以及流数据库S-Store,都没有跳出这个范围。这时候似乎需要有一个不同的声音,就像当年的Bachman或者Codd,来提出不同的理论或者技术。

Stonebraker对数据库管理技术的改进和传播的贡献很大,他作为加利福尼亚大学伯克利分校年轻的助理教授开始在这一领域工作。在阅读了Edgar Codd关于关系模型的开创性论文后,Stonebraker开始与同事Eugene Wong合作,开发一种高效、实用的数据管理系统解决方案,即交互式图形和检索系统(Interactive Graphic and Retrieval System,INGRES),该项目计划创建一个具有图形功能的地理导向系统。这个项目的名字也与一位法国画家的名字Jean-Auguste-Dominique Ingres相呼应。INGRES的原型在1974年开始运作,但该项目并未止步于此。在接下来的10年中,INGRES以及受其启发的系统构建了一个新的关系数据库系统商业市场。如今,关系数据库管理系统是计算最重要和使用最广泛的技术之一,已成为信息存储和检索的标准方式之一。

INGRES和System R这两个项目的成功,将关系模型系统从实验室原型系统转变为大数据处理应用程序的默认选择。IBM的很多原型系统设计针对的是公司数百万美元的大型机,而INGRES则适用于相对廉价的小型计算机的UNIX应用程序。INGRES被广泛分发给其他使用它的大学,使得更多的人对其进行实验并对其进行广泛的修改。从20世纪70年代初开始,数据库管理系统被企业广泛用作管理各种应用程序的数据中心枢纽。早期的商业系统在大型机上运行,​​并遵循Bachman的网络模型或使用IBM偏爱的限制性更高的分层方法。在大型机世界中,这些分层方法在整个20世纪80年代一直占据主导地位。因此,例如,IBM首次将其在该领域的工作进行商业化推广,是作为决策支持分析应用程序的产品,而不是日常的操作系统。

INGRES是大型软件工程的壮举,它优先考虑了性能和可靠性,因此只有在发现了有效实施它的方法后才能添加新功能。到1976年,INGRES可以支持以QUEL编写的查询(大致相当于IBM引入的SEQUEL),该语言可以嵌入C程序中或交互使用。在系统内核中,INGRES实现了多种索引和压缩方法,可自动优化查询。此时,该团队已经开始增加对事务的支持,以便相关更新可以一起发生或一起取消,以在不同表的相关记录之间实施完整性约束,并处理来自不同地方的同时由更新引起的潜在问题。崩溃恢复、高效的备份与还原等附加功能使INGRES从研究项目转变为具有行业实力的技术,相对于其他大多数高校的研究项目这需要大量的额外工作。正如Stonebraker回忆时所言:“我们构建了一个初始原型,为之投入了创建真实系统所需的前90%的工作,它或多或少地起了作用。我认为,把INGRES与典型的学术项目区分开来的,同时也是回顾过去我们做过的最聪明的事情之一,就是投入了接下来的90%努力,使INGRES真正发挥作用。”

1980年,Stonebraker与他人共同创立了Relational Technology公司,以研发并出售商业版的INGRES。他在公司主要担任顾问,在该公司全职工作了大约6个月。在接下来的10年中,该商业化的产品是数据库软件市场的重要参与者。Relational Technology于1988年进行首次公开募股,然后于1990年被收购。此后,Stonebraker沉浸在后续系统的开发和商业化中。

Postgres是INGRES后续的项目,增加了当时关系模型系统所缺少的许多功能,包括支持用于维护表之间一致关系的规则、支持复杂的对象关系数据类型、支持跨服务器的数据复制以及将代码片段嵌入数据管理中的过程语言和发生指定条件时要触发的功能等。此外,Postgres还用于试验数据库研究人员感兴趣的其他功能,Postgres的先驱技术得到了广泛的应用。1992年,Stonebraker作为创始人之一创立了Illustra信息科技公司,以销售Postgres的商业版本,该公司于1997年被Informix收购,后者围绕其内核代码重建了产品线。

Stonebraker于1994年从加利福尼亚大学伯克利分校退休,但保留了研究生院教授的职位。1999年,他搬到新罕布什尔州,很快就在麻省理工学院(Massachusetts Institute of Technology,MIT)任兼职教授。在那里,他可以专注于开发和商业化新技术而无须经常上课。从那时起,他每隔几年就与一家公司合作,专注于开发专门用于特定领域的数据管理技术(如数据仓库Vertica)、管理传感器捕获的数据流系统(如StreamBase系统)以及高吞吐量事务处理系统(如VoltDB系统)。他后期的研究项目SciDB,专注于处理大量科学数据,脱离了关系模型以及传统的通用实现技术。

作为数据库技术趋势的领头羊和权威者,Stonebraker捍卫了关系模型的持久力量,为反对NoSQL运动而努力,积极宣传“后关系模型”方法的优越性。与此同时,他一直在批评实施关系数据库管理系统时“One Size Fits All”的假设,而主流的通用系统(如Oracle)的确可以满足用户的大部分需求。大数据的发展势不可挡,“后浪注定要把前浪拍在沙滩上”,关于大数据与数据库的竞争与妥协,后文会展开介绍。

Stonebraker是唯一连续创业的图灵奖获得者,这使他对学术界有了独特的认识。尽管数学逻辑对现代数据库管理系统有基础贡献,但理论与实践的联系在数据库研究中经常存在争议。Stonebraker一直批评一些研究人员的孤立性,他指出那些对递归查询或面向对象数据库这类问题过度关注的学者,表明他们更关心如何处理可解决的问题,而不是重要的问题。他对这些“理论家”的建议是“在现实世界研究人们想要解决的问题”。他自己曾经总结道,“早知道这么难,我永远都不会开始构建INGRES。”

Stonebraker早期的相对具有开创性的工作便是列式数据库,其发表了论文“C-Store: A Column- oriented DBMS”[8]。在此之前,大部分的DBMS都采用面向记录(Record-oriented)的存储方式实现,即把一条记录的所有属性(列)存储在一起。在这种行存储(Row-store)体系里,单次磁盘写操作就能把一条记录的所有列“刷”到磁盘里。这样能优化写操作,我们称这种存储体系为写优化(Write-optimized)系统。与之相反的是,面向随机的(Ad Hoc)大数据量查询的系统应该是读优化(Read-optimized)的。例如,数据仓库常常在短时间内写入大批新数据,然后长时间地进行随机查询操作。在列存储体系里,DBMS只需要读取指定列的数据,避免了把不相干的数据带到内存里。在数据仓库里,查询一般是针对大量数据元素的集合型操作,列存储在这方面有很大的性能优势。

C-Store在物理上存储列的集合,每个集合都按照一些属性来排序。按照同一个属性排序的列,组成映射集合。同一个列可能在多个列族里,按照不同的属性进行排序。采用高效的压缩技术,在得到多种排序方式的同时,避免了存储空间的激增。C-Store用一种全新的视角解决了行列存储读写的问题,结合了读优化的列存储系统和写优化的存储系统,并用Tuple Mover来联系它们,如图 1-4所示。在C-Store系统架构中,有一个小的可写存储(Writeable Store,WS)组件,支持高性能的插入和更新,还有一个大些的读优化存储(Read-optimizaed Store,RS)组件,支持大数据量读取。RS对数据读取进行了优化,只能进行特殊的插入。后来的OLAP系统中采用了C-Store的列存储思想,再后来数据库的架构设计也迎来了新的春天。

图1-4 C-Store系统架构设计[8]

Stonebraker的工作建立在前面 3 位图灵奖获得者工作成果的基础上,发扬并推进了数据库系统理论和实践的发展。数据库管理技术的学术研究与商业应用,在各行各业的系统中有广泛应用,这些系统包括网站、业务应用程序、科学研究项目、社交媒体系统和大数据项目等。Bachman在20世纪60年代初设计了通常被称为第一个数据库管理系统的产品,并在后来与行业组织CODASYL的合作中帮助定义和普及了数据库管理系统的概念。Codd开发了一种优雅而灵活的方式来存储和检索数据,即关系模型,这种关系模型在20世纪80年代逐渐取代了网状数据库模型。Gray为IBM的System R项目做出了贡献,后来率先提出了健壮的、高性能的记录锁定和事务处理方法。Stonebraker将数据库的概念和实践推向了一个新的高潮,尤其是在商业化数据库系统方面,这也催生了后来的很多新型数据管理系统,而Stonebraker自己却“死守”数据库的阵营,等待他的很可能是来自大数据阵营的冲击。

数据管理系统从“草莽时代”到数据库“一枝独秀”,不仅得益于4位图灵奖得主的学术贡献,工业界的实践真知也起着重要作用。梦想成为工程师的Bachman不靠学术研究获得图灵奖,这表明了数据管理系统是一项注重实践的领域,虽然中间Codd的关系模型研究“统治”数据库领域很久,但不论是Gray还是后来的Stonebraker,都在证明一个事实,数据管理系统总是深受工业界影响。我们总想设计一套统一的系统来实现各种类型的数据管理,但通用的模型在某些场景下往往没有专业定制化的数据管理系统性能优越。正是因为这一悖论,后来Google作为数据库的“搅局者”,把大数据推向了风口浪尖。

[1] 1973年图灵奖。

[2] Charles W. Bachman于1972年发表的论文“The Evolution of Storage Structures”。

[3] 1981年图灵奖。

[4] Edgar F. Codd于1970年发表的论文“A Relational Model of Data for Large Shared Data Banks”。

[5] 1998年图灵奖。

[6] James N. Gray等人于1976年发表的论文“Granularity of Locks and Degrees of Consistency in a Shared Data Base”。

[7] 2014年图灵奖。

[8] Michael Stonebraker等人于2015年发表的论文“C-Store: A Column-oriented DBMS”。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57924”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


在数据管理系统不断发展的这些年,随着基础理论日益完善,工业界看到了其商业价值,行动早的企业从中取得了巨大收益。数据库是一个学术研究与工业实践结合得非常紧密的领域,学术界驱动了数据库技术的前进,工业界也反哺了学术界的发展。自关系数据库萌芽之后,数据库蓬勃发展了几十年。其中,Oracle是最早采用Codd的关系数据库的厂商之一,而IBM的Db2则是后起之秀。除此之外,早期的远见者们将这些实验室的科学理论应用到工业实践中,创造了很多优秀的产品和服务。

System R是IBM在数据管理系统的初试,开创了很多新的纪录,如第一个实现SQL,后来成为关系数据库的标准;第一个证明关系模型可以有很好的事务处理性能;第一次在查询优化中采用动态规划,并成为数据库的基础算法。这些在当时并不是主流技术,但后来成为数据库的标准。

20世纪70年代,埃德加·科德(Edgar Codd)提出关系数据库模型,并认为这将成为数据管理系统的发展趋势。然而,当时查尔斯·巴克曼(Charles Bachman)提出的网状数据库模型还占据优势,导致Codd的观点遭到很多人的质疑。1974年,IBM在圣何塞的实验室启动了关系数据库验证项目System R,但没有得到优先的支持,一直到1980年System R才作为一个产品正式推向市场。System R从无到有经过了3个阶段,分别是阶段0——系统原型设计开发,阶段1——全功能多用户的系统,阶段2——面向用户试用的产品。整个过程显示了IBM严谨的科学研究到工业应用的流程,也透露出IBM这个庞大机构的臃肿与低效。

如图 2-1 所示,System R是一个提供高层次关系数据接口的数据库管理系统,系统通过尽可能地将最终用户与底层存储结构隔离,提供高级别的数据独立性。系统允许对常见基础数据的各种关系视图进行定义,提供数据控制功能,包括授权、完整性断言、触发事务、日志记录和恢复系统,以及在共享更新环境中保持数据一致性。System R当时是IBM数据库体系结构研究的工具,而不是作为产品规划的。但是从目前来看,很难低估System R项目对数据库设计和实现的影响,自System R项目以来,传统的数据库体系结构并没有发生重大变化。System R提供了SQL的第一个实现、第一个性能事务演示,为并发控制和查询优化提供了基础。

图2-1 System R体系结构[1]

System R项目[2]的初衷是证明关系数据库是可行的,它可以为Codd的理论关系数据模型提供足够的性能优化和查询支持。System R的体系结构包括两个主要组件:关系数据管理系统(Relational Data System,RDS)和关系存储系统(Relational Storage System,RSS)。每个组件都有自己的接口:关系数据接口(Relational Data Interface,RDI)和关系存储接口(Relational Storage Interface,RSI)。RDS是系统的外部接口,可以直接由编程语言调用,支持多种调用接口,例如使用我们所知的早期版本的SEQUEL。收到查询请求后,RSS执行任何所需的查询优化,并选择其中数据存储的最优访问路径。RSS支持访问数据库中的关系数据的简单元组,同时支持数据恢复和事务管理。

在RSS中,数据存储在被称为段的逻辑地址空间中,这些空间映射到物理地址空间以控制数据的聚类。给定关系的所有元组都存储在同一段中,每个段由几个大小相等的页面组成。当从数据库插入和删除数据时,这些页面将被分配和释放。在查询期间,页面将复制到主内存缓冲区,以帮助进行并发控制和事务管理。要处理段恢复,段和页面之间的映射将关联到两个副本:当前和备份。在事务处理期间对页面所做的任何更新都将对当前副本进行,这些更新将在保存到事务中的所有操作完成后进行备份。System R还维护一组映像(Image)关系,映像是数据的排序视图,允许根据某种排序条件有效地扫描关系。这允许RSS通过键控已排序的字段值来快速获取元组,这些映像是使用B-Tree索引实现的。

除了映像之外,System R还实现了链接(Link),提供父关系和子关系之间的双向访问。在数据库中定义新关系时,将添加新链接,以提供等效的主键和外键关系之间的快速访问。事务管理通过维护按时序排列的日志条目列表来处理,该列表记录了有关数据每次更改的信息。System R通过内核模块重放日志条目或撤销日志条目以处理中止或失败的事务。

所有功能或它们的变体,在现代数据库(如PostgreSQL和MySQL)中以某种方式复制使用。System R的贡献很多,涉及关系数据管理、SQL支持以及事务管理和恢复等。此后,数据库从业者感受到了System R团队在整个项目中面对各种棘手的问题所做出的选择的意义和影响。由于System R在数据管理系统方面具有开创性意义,因此后继者们从中找出了许多不同的研究方向,目前最值得注意的是Postgres数据库。良好的设计经得起时间的考验,现在很多数据管理系统的设计和实现都源于最初这些研究者和工程师完成的工作。

System R的目标是论证一个全功能关系数据库管理系统的可行性,该项目于1979年完成了第一个实现SQL的DBMS,但是IBM直到1980年才将System R作为一个产品正式推向市场。IBM产品化步伐缓慢主要有3个原因:重视信誉和质量,体系庞大,内部已经有层次数据库产品。在IBM犹豫前行的同时,1973年加利福尼亚大学伯克利分校的Michael Stonebraker和Eugene Wong利用System R已发布的信息开始研发关系数据库系统INGRES。后来,System R和INGRES系统双双获得1988年ACM授予的“软件系统奖”。关系数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,越来越成熟和完善,其代表产品有Oracle、IBM的Db2、Microsoft的SQL Server等。

PostgreSQL可以追溯到1982年加利福尼亚大学伯克利分校(University of California Berkeley,UCB)在Michael Stonebraker的指导下开始的研究项目INGRES,后来Stonebraker针对当时数据库的问题,又启动了post-INGRES项目,从此进入“Postgres时代”。谈到INGRES[3-4],我们简单介绍它的诞生地——UCB。加利福尼亚大学一共有10所学校,我们习惯称为某某分校,但是这些学校本身没有主校和分校之说。与斯坦福大学不同,UCB是一所公立学校。UCB对计算机科学的贡献巨大,尤其是在操作系统领域,各种伯克利软件发行版(Berkeley Softwore Distribution,BSD)系统以及网络协议(如TCP)的实现,在整个计算机科学的发展史上都影响颇深。而INGRES或者说其后继者PostgreSQL正是这些伟大的贡献之一。

INGRES是一个非关系型的数据库,数据关系需要由用户主动去维护。1982年,Stonebraker离开UCB并商业化了INGRES项目,使其成为Relational Technology公司的一个产品,后来Relational Tecchnology被Computer Associates收购。1985年,Stonebraker回到UCB开始了一个新的项目,目的是解决INGRES中的主要问题——数据关系维护的问题,这就是Postgres的开端。

Postgres借鉴了很多INGRES的想法,但代码是重新开发的。在Postgres项目中增加了很多新的特性,如支持各种类型的定义、规则重写、代价优化等。从1986年开始,Stonebraker发表了一系列论文,探讨了新的数据库的结构设计和扩展设计。其中最重要的是对关系模型数据的支持,如图2-2所示。1988年,Stonebraker有了一个原型设计方案,1989年6月他发布了第一个版本,1990年6月发布了第二个版本,1991年发布了第三个版本。直到1994年,在Stonebraker接连发表了一系列论文介绍其相关工作后,一个完整的Postgres面向社会发布,其遵从MIT的开源协议,以PostQUEL作为编程语言,而Postgres项目却在发布第四个版本后终止了。在这之后,Stonebraker再次创业,成立了Illustra Information Technologies公司,提供Postgres的商业支持,后来该公司于1997年被Informix收购,而Stonebraker成了Informix的首席技术官(Chief Technology Officer,CTO),再后来Informix于2001年被IBM收购。

图2-2 以OBJ为例的关系模型示例[5]

Postgres最初是一个研究项目,旨在扩展标准数据库体系结构以支持其他几个概念:值的复杂对象、用户定义的数据类型和过程以及警报和触发器。在编写查询脚本时,Postgres提供了数据库对少数数据类型的支持。数据库供应商需要集成其他类型的数据,因此对最终用户而言,系统的扩展不切实际。要解决此问题,需要使数据库体系结构具有以下两个功能:首先,允许存储任意复杂对象;其次,允许用户定义自己的数据类型以及访问这些类型的数据的方式。

现代数据库另一个常见的要求是支持触发器和警报,以进行数据更改。触发器可确保数据更改正确反映在从属表中,而警报则通知应用程序数据更改。总之,数据库体系结构的完善为现代DBMS提供了所需的基础功能。Postgres的贡献除了支持用户定义的类型、警报和触发器以及实时数据变更外,还有多版本并发控制(Multi-Version Concurrency Control,MVCC)、用户自定义对象、表的继承等。

Postgres并没有因为Postgres项目的终止而停止发展,其仍然在各种场合被人们所使用。1994年,两名UCB的研究生在做课题的时候,向Postgres里增加了现代的SQL的支持。这两位研究生是来自中国香港的Andrew Yu和Jolly Chen,他们用Bison和Flex工具把Postgres的PostQEUL替换成了SQL92,然后将Postgres改名为Postgres95。SQL在Edgar Codd的关系模型提出之后,对这个模型的实现有非常多的变种,变种之间并不兼容,如Postgres用的是QUEL/PostQEUL,而SQL自身作为语言,一直到1992年才形成真正的国际标准草案,当时称为SQL2,即我们常说的SQL92。

Andrew Yu和Jolly Chen对于PostgreSQL最大的贡献不是实现了新的SQL引擎,而是在Postgres95之后,将其发布到了互联网上。随后的1996年,加拿大的一名FreeBSD黑客马克·富尼耶(Marc Fournier)提供了开发服务器平台,然后美国的布鲁斯·莫姆吉安(Bruce Momjian)和俄罗斯的瓦季姆·米赫耶夫(Vadim Mikheev)开始修改UCB发布的代码,以提供一个稳定、可靠的版本,并于1996年8月发布了第一个开源版本。随后,这些开发者将这个项目名称修改为PostgreSQL,并把PostgreSQL的版本号重新放到了原先Postgres项目的顺序中(从6.0版本开始)。在此之前,Postgres本身更新到4.2版本,Postgres95可以算作5.0版本。自1996年8月到2020年,PostgreSQL项目已经有24年的历史,发布了12个版本,而Postgres的年龄也已经30多岁,进入了中年时期。长江后浪推前浪,那些“后浪们”在孕育新的力量,不断成长。

直至今日,很多企业研发的数据库都基于开源的PostgreSQL,如Greenplum等。后来,其他的开源项目将单机版的PostgreSQL扩展成分布式的,如PGXC和PGXL这两个项目。PostgreSQL作为数据库的一个重要产品,一直被工业界和学术界广泛使用,这不仅是因为其性能优越,还有一个重要的原因就是开源,有良好的生态和社区。

目前,PostgreSQL的稳定版本到了 PostgreSQL 12.0,新版本中各方面功能都得到了加强,包括显著地提升了查询性能,特别是对大数据集的查询;扩展了一些安全方面的功能以强化它本来就很稳定的权限控制;强化了对SQL标准的规范性和兼容性。PostgreSQL是世界上最先进的开源关系数据库之一,它的全球社区由数千名用户、开发人员、公司或其他组织而组成。PostgreSQL诞生于加利福尼亚大学伯克利分校,经历了无数次开发和升级,拥有超过30年的活跃开发历史,在可靠性、功能健壮性和其他性能方面有良好的声誉。PostgreSQL不仅包含优秀商业数据库系统的功能特性,在高级数据库功能以及数据库扩展性、安全性和稳定性方面也超过了其他数据库产品。可以预见的是,PostgreSQL还会保持活跃的社区开发和稳定的产品质量。如果有一天PostgreSQL淡出了人们的视野,那将是一个划时代产品的落幕,也是一个新时代的到来,数据管理系统将迎来新的春天。

Oracle是在Edgar Codd的研究还处于非主流时,就预见性地看到了关系数据库的商机,及早入手并取得成功。1977年,System R还处于研究阶段,Edgar Codd刚刚发表了关系数据库的核心论文,拉里·埃里森(Larry Ellison)、鲍勃·迈纳(Bob Miner)、埃德·奥茨(Ed Oates)就预见了未来,合伙成立软件开发实验室(Software Development Laboratory,SDL)公司,即后来的Oracle公司。Oracle最著名的产品之一就是数据管理系统。此外,Oracle还开发和构建用于数据库和中间层的其他企业软件,如企业资源计划(Enterprise Resource Planning,ERP)软件、人力资本管理(Human Capital Management,HCM)软件、客户关系管理(Customer Relationship Management,CRM)软件以及供应链管理(Supply Chain Management,SCM)软件等。

1994年,Informix超越了Sybase,成为Oracle最重要的竞争对手。Informix首席执行官菲尔·怀特(Phil White)和Oracle的Larry Ellison之间的激烈竞争成为硅谷3年的头版新闻。一本名为The Real Story of Informix Software and Phil White的书详细介绍了Oracle与Informix之间的战争,以及Informix的首席执行官Phil White的经历。Informix最终于1997年放弃了对Oracle的诉讼,Oracle打败了Informix和Sybase后,它在数据库市场上就享有多年的“统治地位”。直到20世纪90年代后期,很多公司开始使用Microsoft SQL Server,并且IBM在2001年收购了Informix软件以巩固其Db2数据库的市场地位的时候,才又形成了数据库产品“三足鼎立”的局面。

在企业级软件领域,Oracle与SAP也曾经“争执不下”。Oracle公司与德国SAP公司从1988年开始合作,已有很多年的合作历史,这种合作是将SAP的名为R/3的企业应用程序套件与Oracle的关系数据库产品集成在一起。尽管后来SAP与Microsoft建立了合作关系,并且SAP应用程序与Microsoft产品之间的集成度不断提高,但Oracle和SAP仍继续合作。根据Oracle的说法,大多数SAP客户使用的是Oracle数据库。2004年,Oracle开始增加对企业应用程序市场的兴趣,启动了一系列收购计划,其中最著名的是对PeopleSoft、Siebel Systems和Hyperion的收购。

SAP意识到Oracle已开始在企业应用程序市场中与自己成为竞争对手,并看到了Oracle通过收购的那些公司来吸引客户。2007年,Oracle主动对SAP提起诉讼,Oracle声称SAP使用了以前Oracle客户的账户从Oracle网站上系统地下载了补丁和支持文档,并使其适合于SAP的使用。2010年11月23日,位于加利福尼亚州奥克兰的美国地方法院陪审团裁定,SAP必须向Oracle支付13亿美元(约85亿元)的版权侵权赔偿金,这可能是有史以来最大的版权侵权赔偿,SAP表示他们对该判决感到失望,并可能提起上诉。2011年9月1日,一名联邦法官推翻了该判决,并通过了减少Oracle的赔偿额或选择新的审判,并称对Oracle和SAP最初的裁决过分。Oracle选择了新的审判。2012年8月3日,SAP和Oracle达成一项赔偿金额为3.06亿美元(约20亿元)的判决,除了赔偿金外,SAP还需向Oracle支付1.2亿美元(约7.9亿元)的法律费用。作为反击,后来SAP进军数据库领域,推出HANA内存数据库,在数据库市场也占有一席之地。

如今,Oracle的数据管理产品已经涉及联机事务处理(Online Transaction Processing,OLTP)、OLAP、云数据库等各个领域,在数据库领域的主要竞争对手仍然以IBM Db2和Microsoft SQL Server为主,同时在开源数据库方面(如PostgreSQL和MySQL)也有显著的市场份额。当然其他大数据管理系统也开始与Oracle竞争市场,最有代表性的就是Oracle与Amazon的云数据库的角逐。

一般我们所说的Oracle产品指的是Oracle数据库,即Oracle数据管理系统(也称为Oracle Server)。而Oracle Server主要有两大部分:Oracle Server = 实例(Instance)+ 数据库(Database)。实例 = 内存池 + 后台进程,数据库 = 数据文件 + 控制文件 + 日志文件。除了Oracle Server包含的实例和数据库之外,还有产品客户端。

首先,我们从应用入口——客户端开始介绍Oracle的体系结构和关键部件。如果用户想提交SQL语句,那么首先必须要连接到Oracle实例。客户端负责将用户的SQL语句传递给服务进程,对查询进行语法分析、绑定、执行、提取等,并从服务器端拿回查询数据。发起连接的应用程序通常称为用户进程,连接发起后,Oracle服务器就会创建一个进程来接受连接,这个进程称为服务器进程。服务器进程代表用户进程与Oracle实例进行通信,当它们通信时,一个会话就被创建了。

其次,Oracle实例是一个运行时的概念,其提供了一种访问Oracle数据库的方式,始终并且只能打开一个Oracle数据库。如图2-3所示,Oracle实例由系统全局共享内存区(System Global Area,SGA)和一些后台服务进程组成。Oracle实例中对性能影响最关键的是SGA。SGA包含3个核心部分:可避免重复读取常用数据的数据缓冲区(Buffer Cache)、管理数据恢复的日志缓冲区(Redo Log Buffer)和加快编译及执行的共享池(Shared Pool)。5个非常关键的后台服务进程分别是:数据写入进程DBWR(Database Writer)、日志写入进程LGWR(Log Writer)、检查点进程CKPT(Checkpoint)、系统监控进程SMON(System Monitor)和进程管理监控PMON(Process Monitor)。这些都是数据库基本的功能,这里就不一一赘述。此外,还有Advanced Queuing、RAC、Shared Server、Advanced Replication等可选功能,之所以可选是因为离开它们Oracle实例也能正常运行。

图2-3 Oracle系统架构和主要部件[6]

最后,Oracle静态数据库从物理角度来看包括三类文件:数据文件、控制文件、重做日志文件。一个数据库的数据文件包含全部数据库数据(逻辑数据库结构的数据以物理形式存储在数据库的数据文件中),每一个Oracle数据库有一个或多个物理的数据文件。日志的主要功能是记录对数据所做出的修改,保护数据库,将对数据库的全部修改记录在日志当中。当数据库出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改记录。当Oracle数据库下一次启动时,将自动应用日志文件中的信息来恢复数据库中的数据文件。日志副本文件主要是为了防止日志文件本身的故障而存在,Oracle数据库支持镜像重做日志(Mirrored Redo Log),可在不同磁盘上维护两个或多个日志副本。控制文件包含维护和验证数据库完整性的必要的信息,它记录了联机重做日志文件、数据文件的位置、更新的归档日志文件的位置。控制文件是以二进制形式存储的,用户无法修改控制文件的内容。控制文件一般占用空间并不大,却起着至关重要的作用。从逻辑角度来看,Oracle数据库主要由表空间、段、区和数据块等概念组成。Oracle数据库至少包含一个表空间,一个表空间至少包含一个段,段由区组成,区由块组成。表空间可以包含若干个数据文件,段可以跨同一个表空间的多个数据文件,区只能在同一个数据文件内。Oracle还设计了其他的关键文件来为整个系统服务,如配置文件、密码文件、归档日志文件等。

Oracle是一家诞生在硅谷的公司。1977年,Larry Ellison、Bob Miner和Ed Oates这3位工程师共同创办了SDL公司,并在加利福尼亚州圣克拉拉拥有了第一间只有 84 平方米的办公室。1982年,公司名称从Relational Software Inc.(前身为SDL)更改为Oracle。1986年,Oracle成为纳斯达克交易所的上市公司,股票代码为ORCL。1987年,Oracle在55个国家和地区拥有4500家最终用户,销售额达1亿美元(约6.5亿元),成为全球数据库管理“龙头”企业。1995年,为发挥互联网的作用,Larry Ellison推行通过互联网来交付Oracle软件的产品战略。2005年,Oracle收购了一家领先的HR和ERP应用公司PeopleSoft,掀起了硅谷高科技收购的潮流。2010年,Oracle公司收购Sun Microsystems,巩固了软硬件集成设计的战略,成为Java的掌管者。2013年,Oracle发布了云上数据库 12c,变革性的多租户架构成就了安全、统一的云数据库。2018年,Oracle公司宣布推出Oracle自治数据库,该数据库堪称革新性的自治修补、自治调优和自治管理的数据库。同年,CERN openlab科研中心使用10000个Oracle云内核来执行物理分析,探索宇宙的内部机理。回首过去,40多年前的SDL抓住了机遇,那么Oracle仍然有无限的可能。

MySQL是被广泛使用的小型开源数据库,由于其性能高、成本低、可靠性高,已经成为最流行的开源数据库之一,被广泛地应用于中小型网站。MySQL是LAMP Web应用程序软件堆栈的组件之一。LAMP是Linux、Apache、MySQL、Perl/PHP/Python的首字母缩写。随着MySQL的不断成熟,其被逐渐应用到大规模网站和应用中,如Google、Facebook、Amazon等大型科技公司的基础架构设施中,我国也有不少云数据库厂家提供MySQL版本的云上服务。MySQL是基于GNU开源协议的开源软件,后来归Oracle所有。这样看来,商用数据库基本是Oracle的“天下”。

MySQL系统架构和关键组件如图2-4所示。MySQL是一个非常主张开源的关系数据库,架构上采用处理与存储分离的设计,结构清晰,灵活性高,已成为互联网应用中常用的关系数据库。从图2-4中可以看出,与用户应用打交道的是接入层,即JDBC/Python等接口,然后是关系数据库的核心,即数据库引擎。首先客户端发出一个查询操作,连接层接收后传递给服务层,接着服务层对查询进行优化并把优化结果给存储引擎层以选择当前数据库的引擎,最后存储引擎将最终的数据交给底层存储层,将数据存储在文件系统中。当内核引擎接收一个请求后,经过这四层执行会返回对应的查询结果,具体介绍如下。

图2-4 MySQL系统架构和关键组件[7]

连接服务层主要负责客户端和连接服务,包含本地Socket通信和大多数基于客户端-服务端工具实现的类似于TCP/IP的通信,主要完成一些类似于连接处理、授权认证及相关的安全认证方案。在该层引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于安全套接字层(Secure Socket Layer,SSL)的安全链接,服务器也会为安全接入的每个客户端验证它所具有的操作权限。

解析优化层主要完成大多数的SQL解析和优化,如SQL接口、SQL解析和SQL优化及部分内置函数的执行和缓存管理。所有跨存储引擎的功能都在这一层实现,如过程、函数等。在该层,服务器会解析查询、创建相应的内部解析树,并对其完成相应的优化,如确定查询表的顺序是否利用索引等,最后生成相应的执行计划。该层还会针对SQL语句类型对数据进行缓存管理。一般来说,针对大量的读写事务,缓存空间越大,越能够很好地提升系统的性能。

存储引擎层中的存储引擎主要负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样应用开发人员可以根据自己的实际需要进行选取和定制化研发。

数据存储层主要是将数据存储并运行于裸机设备上(如文件系统),并完成与存储引擎的交互。

当数据库中有多个操作需要修改同一数据时,不可避免地会产生数据的“脏读”。这时就需要数据库具有良好的并发控制能力,这部分功能在MySQL中是由SQL执行引擎和存储引擎来实现的。大多数事务型的存储引擎都不是简单的行级锁,基于性能的考虑,一般都同时实现了MVCC。MVCC是通过保存数据中某个时间点的快照来实现的,这样就保证了每个事务看到的数据都是一致的。而这种事务的支持也与存储引擎的选取有关,InnoDB是事务型的存储引擎,而MyISAM不是。

MySQL的第一个版本于 1995 年发布,它最初是使用ISAM技术和mSQL创建的一个供个人使用的系统。但是创建者认为这个系统太慢了,于是创建了一个新的SQL接口,同时保留了与mSQL相同的应用程序接口(Application Program Interface,API)。不过现在InnoDB是MySQL默认选取的事务型存储引擎,也是最重要和使用最广泛的存储引擎之一。它被设计成支持大量的短事务,短事务在大部分情况下是正常提交的,很少被回滚。InnoDB的性能与自动崩溃恢复的特性,使得它在非事务存储中也很流行。除非有特别的原因需要使用其他存储引擎,否则应该优先考虑InnoDB。MyISAM是MySQL 5.1及之前版本里默认选取的存储引擎,MyISAM有大量特性,包括全文索引、压缩、空间函数GIS等,但MyISAM并不支持事务以及行级锁,而且一个显而易见的缺陷是崩溃后无法安全恢复。除此之外,MySQL还支持Memory、Archive、NDB等其他类型的引擎,因此可以看出,MySQL是可以支持定制化存储引擎的数据管理系统。

MySQL原本是一个开放源代码的关系数据库管理系统,原开发者是瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,Oracle公司收购Sun公司,MySQL成为Oracle旗下的产品。但被Oracle收购后,Oracle大幅提高MySQL的商业版售价,且Oracle不再支持另一个自由软件项目OpenSolaris,这导致自由软件社区对Oracle是否还会持续支持MySQL的社区版本产生很大的担忧。因此,MySQL的创始人迈克尔·威德纽斯(Michael Widenius)以MySQL为基础,成立了MariaDB项目,这使一些原来使用MySQL的开源软件逐渐转向MariaDB或者其他数据库。

关于MySQL的关键历史节点,罗列如下,供参考。

1990年,TcX公司的客户要求为报表工具Unireg的API提供SQL支持。当时的商用数据库的效率很难令人满意。于是,Michael Widenius决定自己重写一个SQL支持。

1995年,Michael Widenius、David Axmark和Allan Larsson在瑞典创立了MySQL AB公司。

1996年,瑞典MySQL AB公司发布了MySQL 1.0。

2001年,MySQL集成Heikki Tuuri的存储引擎InnoDB,这个存储引擎不仅能支持事务处理,还支持行级锁。

2003年3月,MySQL 4.0发布,支持查询缓存、集合并、全文索引、InnoDB存储引擎。

2005年10月,MySQL 5.0发布,增加了视图、存储过程、游标、触发器、分布式事务。

2008年1月,MySQL AB公司被Sun公司以10亿美元(约65亿元)收购。

2008年11月,MySQL 5.1发布,增加了分区、事件管理,以及基于行的复制和基于磁盘的NDB集群系统,同时修复了大量的bug。

2009年4月,Oracle公司以74亿美元(约484亿元)收购了Sun公司,作为创始人之一的Michael Widenius带走了一批MySQL开发人员,推出了MariaDB。

2010年12月,MySQL 5.5发布,增加了半同步复制、信号异常处理、Unicode字符集,InnoDB成为默认选取的存储引擎。

2011年4月,MySQL 5.6发布,增加了GTID复制,支持延时复制、行级复制。

2013年2月,MySQL 5.7发布,支持原生JSON数据类型。

2016年9月,MySQL 8.0.0发布,速度要比 MySQL 5.7快2倍,增加了SQL窗口函数、公用表达式、成本模型和直方图等功能。

2018年4月,MySQL 8.0.11 GA发布,支持NoSQL文档存储、原子的崩溃安全、数据描述语言(Data Description Language,DDL)语句、扩展JSON语法、新增JSON表函数、改进排序、分区更新等功能。

2019年,MySQL被DB-Engines评为“年度DBMS”。

IBM Db2企业服务器版本是美国IBM公司发展的一套关系数据库管理系统,它的运行环境主要为UNIX、Linux、IBM z/OS,以及Windows。Db2也提供性能强大的IBM InfoSphere Warehouse版本。虽然IBM拥有Charles Bachman和Edgar Codd这样的图灵奖得主,但是在关系数据库的地位上,却不尽如人意。IBM Db2的历史其实比较复杂。Db2这个名字最早被用于数据库管理系统是在1983年,当时IBM发布了基于MVS大型机平台的Db2产品。此前,一个叫作SQL/DS的同类产品被应用于VM大型机,更早期的System/38系统平台同样包含一个关系数据库管理系统。

Db2的历史可以追溯至20世纪70年代初,当时在IBM工作的Edgar Codd博士描述了关系数据库理论并在1970年6月发表了数据处理模型的论文。但那个时候IBM并不相信Codd想法的潜力,甚至把设计关系数据库语言的Alpha项目的实施交给了一个并不在Codd监管之下的研发小组。而这个小组在项目实施过程中违背了Codd的关系模型中的一些基础理论,这个项目的实施成果就是实现了SEQUEL(Structured English QUEry Language)。当IBM公布其第一个关系数据库产品时,他们希望能有一款具有商业用途的子语言,因此IBM重新开发了SEQUEL并且将其命名为SQL以区别于SEQUEL。

在很多年里,Db2作为一个全功能的数据库管理系统,被IBM大型机所专用。此后IBM将Db2的运行环境扩展到OS/2、UNIX以及Windows,然后是Linux和PDAs,这一转变主要发生在20世纪90年代。现在的IBM Db2是一系列混合数据管理产品,提供完整的人工智能(Artificial Intelligence,AI)支持的能力,旨在帮助用户管理本地、私有云和公有云中的结构化和非结构化数据。Db2构建于智能、通用的SQL引擎之上,该引擎旨在实现可扩展性和灵活性。IBM于1983 年发布首个商用关系数据库,今天,Db2仍然是业界领先的高效混合数据管理平台,仍然在不断地创新。它可以提供高影响力的数据洞察、无缝的业务连续性并推动真正的业务转型。通过与AI数据管理能力整合,Db2数据管理“革命”续写了新的篇章。它能够提供有关客户行为的、具有预测性和前瞻性的、切实可行的洞察,帮助企业扩大市场份额、降低成本以及成功实施AI计划。如果真要说IBM Db2的商业趋势是什么,从现有的情况看,是主推AI数据库的能力。

Db2的架构如图2-5所示。在Db2中,一个数据库只能属于一个实例,一个实例可以对应多个数据库,所以实例和数据库的关系是一对多。每个数据库是由一组对象组成的,如表、视图、索引等。表是二维结构,由行和列组成,表数据存放在表空间里。表空间是数据库的逻辑存储层,每个数据库可以包含多个表空间,每个表空间只能归属于一个数据库,数据库和表空间的关系是一对多。

图2-5 IBM Db2架构[8]

Db2 LUW(Linux、UNIX、Windows)的一个较早的代码版本是OS/2一个扩展版本组件Database Manager的一部分,IBM多次扩展了Database Manager的功能,但最终因代码中存在不可克服的复杂度问题而做出了困难的决定——在多伦多实验室完全重写了这个软件,新版本的Database Manager被称为Db2。Db2 LUW进程模型在Db2 v9.5之前都是多进程模型,在Db2 v9.5之后体系结构变更为单进程多线程模型C/S架构,客户端可以通过TCP/IP或进程间通信(Inter-Process Communication,IPC)协议与服务器通信。客户端与服务器建立连接之后,服务器端会产生一个代理线程以处理来自客户端的所有请求。但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会有很大的系统开销,所以Db2 服务器在启动时创建一个常连接池来避免重复地创建或销毁代理线程。但是当某一个处理的请求非常大时,如果由单个线程去处理效率比较低下,为了提高对该请求的处理能力,与客户端通信的代理线程可以从线程池中额外集中几个线程来共同处理某个请求。

按照Architecture of a Database System这本书里的介绍,数据库系统中的进程模型(Process Model)设计的概念主要有操作系统进程(Operating System Process)、操作系统线程(Operating System Thread)、轻量数据库线程(A Lightweight Thread Package,又称DBMS Thread)、数据库客户端(DBMS Client)、数据库任务(DBMS Worker)等。从数据库进程或线程模型上来说,其运行时分为单进程单任务(Process Per Worker)、单线程单任务(Thread Per Worker)、进程池(Process Pool)、线程池(Thread Pool)。按照原文内容“A DBMS Worker is the thread execution in the DBMS that does work on behalf of a DBMS Client”,即“DBMS Worker”是“DBMS Client”执行任务的实体,主流数据库模型支持的任务如下。

IBM Db2支持:单进程单任务、单线程单任务、进程池、线程池;

Oracle支持:单进程单任务、进程池;

MySQL支持:单线程单任务;

MS SQL Server支持:线程池;

PostgreSQL支持:单进程单任务。

由此可见,IBM Db2的技术栈是非常全面的,虽然没有像Oracle那样垄断市场,也没有像Amazon那样推出云数据库,但数据库市场一直占有重要的位置。

关于IBM Db2的关键历史节点,罗列如下,供参考。

1968年,IBM的维恩·沃茨(Vern Watts),在IBM 360计算机上,开发了信息管理系统(Information Management System,IMS),这是IBM的第一代数据库,所以也称IMS为Db1。IMS是世界上第一个层次数据库管理系统。

1970年,IBM的研究员Edgar Codd发表了论文“A Relational Model of Data for Large Shared Data Banks”。该论文提出了关系模型,奠定了关系模型的理论基础,Codd也被誉为“关系数据库之父”。

1974年,IBM的圣何塞研究实验室启动了System R项目,其目标是论证一个全功能关系数据库管理系统的可行性。该项目结束于1979年,它第一次实现了SQL,并为IBM的第二代数据库Db2打下了基础。

1974年,IBM的唐·钱伯林(Don Chamberlin)和蕾·博伊斯(Ray Boyce),通过System R项目的实践,发表了论文“SEQUEL:A Structured English Query Language”,提出了SEQUEL,即SQL的原型。

1975年,IBM的Don Chamberlin和莫顿·阿斯特拉汉(Morton Astrahan),发表了论文“Implementation of Structured English Query Language”,在 SEQUEL 的基础上,阐述了在System R中的SQL实现,这也是 System R 项目得出的重大成果之一。

1975年,IBM的Yehhao Chin,发表了论文“Analysis of VSAM's free-space behavior”,比较了IBM的VSAM和ISAM,并提出了ISAM文件系统。该文件系统可以连续地(按照进入的顺序)或者任意地(根据索引)记录任何访问,每个索引定义了一次不同排列的记录。

1976年,IBM System R项目组发表了论文“A System R: Relational Approach to Database Management”,描述了一个关系数据库的原型。

1976年,IBM的Gray发表了论文“Granularity of Locks and Degrees of Consistency in a Shared Database”,正式定义了数据库事务的概念和数据一致性的机制。

1977年,System R原型在3个客户处进行了安装,这3个客户分别是波音公司、Pratt & Whitney公司和Upjohn药业。这标志着System R从技术上来讲已经是一个比较成熟的数据库系统,能够支撑重要的商业应用。

1979年,IBM的Pat Selinger发表了论文“Access Path Selection in a Relational Database Management System”,描述了业界第一个关系查询优化器,它是Db2数据库优化器的雏形。

1980年,IBM发布了System/38系统,该系统集成了一个以 System R 为原型的数据库服务器。

1981年,IBM的研究员Edgar Codd,由于提出了关系数据库模型,获得了ACM颁发的图灵奖。

1982年,SQL/DS for VSE and VM发布,这是IBM的第一个商用关系数据库产品,是业界第一个以SQL为接口的关系数据库管理系统(Relational Database Management System,RDBMS)。SQL/DS以System R为原型设计,也是Db2的前身。

1983年,Database2 for MVS(简称“Db2”)发布,这标志着Db2的诞生。

1986年,System/38 v7发布,这是一种大型机,首次配置了查询优化器,能对存取计划进行优化。System/38 v7是Db2优化器的雏形,此时的Db2还只能在大型机上运行。

1987年,OS/2 v1.0扩展版发布,这是IBM第一次把关系数据库的处理能力扩展到微机系统。OS/2 v1.0是Db2 for OS/2, UNIX and Window平台的雏形,从此Db2开始支持小型机。

1988年,SQL/400发布,为集成了RDBMS的AS/400服务器提供了SQL支持,国际Db2用户组织(International Db2 Users Group,IDUG)成立。

1989年,IBM定义了Common SQL和分布式关系数据库架构(Distributed Relational Database Architecture,DRDA),并在 IBM 所有的RDBMS上加以实现。

1992年,第一届IDUG欧洲大会在瑞士日内瓦召开,这标志着Db2应用的全球化。

1993年,Db2 for OS/2 v1(简写为Db2/2)和Db2 for RS/6000 v1(简写为Db2/6000)发布,Db2开始支持Intel处理器和UNIX系统。

1994年,Db2 For MVS v4发布,通过并行Sysplex技术的实现,在主机上引入了分布式计算(数据共享)。

1995年,Db2 v1发布,支持Windows、UNIX等多个平台,这是具有标志性意义的一年。

1996年,Db2 v2.1.2发布,这是第一个真正支持Java和JDBC的数据库产品。IBM并购 Tivoli,Db2更名为Db2 UDB(UDB是“Universal Database”的缩写,即通用数据库)。

1997年,Db2 UDB for OS/390 v5发布,支持Web,也是当时唯一能够支持64 000个并发用户和上百TB级别的数据库产品。

1997年,Db2 UDB for UNIX, Windows and OS/2发布,支持ROLLUP和CUBE函数,对OLAP具有重要意义。

1998年,Db2 UDB v5.2发布,增加了对SQL、Java 存储过程和用户自定义函数的支持。

1999年,Db2 UDB v6.1 for Linux发布,支持Linux平台。

2000年,Db2 UDB XML Extender发布,支持内置可扩展标记语言(eXtensible Markup Language,XML)扩展。

2001年,Db2 UDB v7.1发布,支持object-SQL。同年,IBM以10亿美元(约65亿元)收购了Informix的数据库业务。

2002年,Db2 UDB v8.1发布,新增基于自我调节的自我监测、分析和报告技术(Self-Monitoring Analysis and Reporting Technology,S.M.T.A.R)。

2006年,Db2 UDB v9发布,这是具有划时代意义的一个版本,是首个混合型数据库(数据库中有传统的关系型数据,也有XML层次型数据)。

2010年,Db2 UDB v10 for z/OS发布,支持z/OS系统。

2012年,Db2 UDB v10.1 for Linux, UNIX and Windows发布,支持Linux、UNIX和Windows平台,支持Apache Hadoop发布。

2016年,Db2 UDB v11.1 GA发布,增强了高可用性、备份、日志记录、弹性和恢复、性能、SQL兼容、安全性、应用程序开发、数据移动等一系列功能和特性。

2017年,Db2 UDB v11.1.2发布,增强了BLU性能、允许在列组织表中执行并行插入、增强高可用性灾难恢复(High Availability Disaster Recovery,HADR)功能、改进数据库崩溃恢复和事务回滚性能、支持创建加密样本数据库、增强命令行界面(Command-Line Interface,CLI)。

2019年,IBM发布了Db2 UDB的特殊免费版本,称为Db2 UDB社区版,Db2 UDB社区版代替了以前免费的Db2版本——Express-C。

SQL Server是由Microsoft开发和推广的关系数据库管理系统,它最初是由Microsoft、Sybase和Ashton-Tate这3家公司共同开发的,并于 1988年推出了第一个OS/2版本。之后,SQL Server版本不断更新,例如:1996年,Microsoft 推出了SQL Server 6.5;1998年,SQL Server 7.0和用户见面;SQL Server 2000是Microsoft于2000年推出的;2019年,SQL Server 2019推出。

SQL Server一开始并不是Microsoft自己研发的产品,而是为了和IBM竞争,与Sybase合作研发的,其最早的研发者是Sybase。Microsoft也和Sybase合作过SQL Server 4.2的研发,并将SQL Server 4.2移植到Windows NT(当时为3.1版本)。与Sybase终止合作关系后,Microsoft独立开发出SQL Server 6.0,往后的SQL Server均由Microsoft自行研发。与Microsoft终止合作关系后,Sybase将原本在Windows NT上的数据库产品Sybase SQL Server改为现在的Sybase Adaptive Server Enterprise。

SQL Server是关系数据库中的杰出代表,是与 Oracle和IBM Db2齐名的企业级商用数据库,是“三巨头”之一。长达数十年的发展和磨砺,已使它非常成熟、稳定,同时跟随时代发展不断地融合新技术,又使它非常全面。值得一提的是,SQL Server 2017在很大程度上将此款数据库带入了广阔的Linux世界,进一步拓展了它的潜在客户群体和使用场景。

如图2-6所示,SQL Server大数据集群是由Kubernetes(简称“K8S”)精心策划的Linux容器集群,主要包括以下组件。

控制器为集群提供管理和安全性,它包含控制服务、配置存储和其他集群级别的服务,如Kibana、Grafana和Elastic Search等。

计算池为集群提供计算资源,如在Linux Pod上运行SQL Server的节点,计算池中的Pod用于特定处理任务的SQL计算实例。

图2-6 SQL Server大数据集群架构[9]

数据池用于提供数据持久性和缓存。数据池由一个或多个在Linux上运行SQL Server的Pod组成。它用于从SQL查询或从Spark作业中提取数据,SQL Server大数据集群数据集保留在数据池中。

存储池由存储池Pod组成,这些Pod由Linux、Spark和Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)上的SQL Server组成,SQL Server大数据集群中的所有存储节点都是HDFS集群的成员。

SQL Server大数据集群代表了Microsoft数据平台最新的架构思想,从单纯地与外部互联互通,走向了与开源平台技术的全面融合,从技术对接与兼容,走向了互相兼容。这可以说是一个大胆的尝试,也是一个令人拍案叫绝的产品思路。它的优势显而易见:从企业客户角度来说,All-in-One的设计大幅简化了架构,用户可基于此建设自己的一站式大数据平台,开源与商业技术两者兼得;从Microsoft角度而言,确保了开源工作负载在SQL Server集群和体系内顺利运行,类似一个商业Hadoop发行版本,有利于其在开源时代获得商业上的成功。

关于SQL Server的关键历史节点,大家可以参考以下信息。

1984年,Sybase(“System Database”的缩写)公司成立。

1987年,Sybase推出了本公司首个关系数据库Sybase SQL Server,这是第一个C/S架构的数据库系统。

1988年,Microsoft、Sybase和Ashton-Tate合作,在Sybase的基础上发布了在OS/2操作系统上使用的SQL Server 1.0。

1989年,SQL Server 1.0取得了较大的成功,但Microsoft和Ashton-Tate分道扬镳。

1992年,SQL Server 4.2A发布,由Microsoft和Sybase共同开发。

1993年,SQL Server 4.2B发布,支持 Windows NT 3.1 操作系统。

1994年,Microsoft和Sybase分道扬镳。

1995年,SQL Server 6.0发布,由Microsoft自行研发,随后推出的SQL Server 6.5取得了巨大的成功。

1998年,SQL Server 7.0发布并开始进军企业级数据库市场。

2000年,SQL Server 2000发布,新增了日志传送、索引视图。

2005年11月,SQL Server 2005发布,新增了分区、数据库镜像、联机索引、数据库快照、复制、故障转移集群、全文搜索等。

2008年8月,SQL Server 2008发布,新增了数据压缩、资源调控器、备份压缩、空间数据类型集、层次数据类型、宽数据表、Merge语句等。

2010年4月,SQL Server 2008 R2发布,新增数据中心版,最大支持256核,支持Unicode压缩。

2012年3月,SQL Server 2012发布,新增AlwaysOn、Columnstore索引、增强审计功能,支持大数据。

2014年4月,SQL Server 2014发布,新增内存优化表、备份加密、增强AlwaysOn功能、延迟持续性、分区切换、索引生成、列存储索引、缓冲池扩展、增量统计信息等。

2016年6月,SQL Server 2016发布,支持JSON、多TempDB数据库文件、全程加密技术、Query Store、R语言。

2017年10月,SQL Server 2017发布,支持Linux操作系统,新增可恢复在线索引重建、图数据库功能,支持R、Python的机器学习功能。

2019年,发布了其新一代数据库产品SQL Server 2019,具有大数据集群、数据虚拟化等重磅特性。

如图2-7所示,数据库的商业发展一直“纠缠不清”。最早是Edgar Codd在IBM工作时提出了关系数据库,但是没有受到重视,反而让Oracle看到了商机,抓住了机会。SQL Server最早是Microsoft和IBM在合作开发OS/2操作系统时因缺乏数据库管理的工具,Microsoft和Sybase合作,将Sybase所研发的数据库产品纳入Microsoft所研发的OS/2中而创造出来的产品。后来因为项目合作的原因,Microsoft与Sybase也“分分合合”,不过后来Sybase将其数据库产品卖给了做企业软件的SAP,而SAP曾经也和Oracle有过商业上的竞争。当然Microsoft与IBM的关系也由合作到竞争。由此看来,40多年前的Oracle可以说是高瞻远瞩,准确判断了数据管理系统的未来,不过作为“蓝色巨人”的IBM,数据库产品也一直不落他人。Microsoft与IBM争夺的不仅仅是数据库市场,而是从开始的操作系统开始,这场战争就从未停止过。

关系数据库的商业竞争已经如此激烈。后来的大数据作为新的数据管理系统,也对这些所谓的传统关系数据库造成冲击,数据管理系统的格局又将发生翻天覆地的变化。工业界对利益的追逐推动了数据库产业的发展,也带动了学术界的研究。在数据管理系统发展的 50 多年中,关系数据库已经成为最重要的系统之一,这一点离不开学术的研究和工业的推动。从历史角度来看,关系数据库曾经给网状数据库“致命一击”,而大数据时代的到来,也给关系数据库“致命一击”。

图2-7 早期主流通用关系数据库家谱

[1] M. M. Astrahan等人于1976年发表的论文“System R: Relational Approach to Database Management”。

[2] Donald D. Chamberlin等人于1981年发表的论文“A History and Evaluation of System R”。

[3] M. Stonebraker等人于1975年发表的论文“INGRES: A Relational Data Base System”。

[4] M. Stonebraker等人于1976年发表的论文“The Design and Implementation of INGRES”。

[5] M. Stonebraker等人于1986年发表的论文“The Design of POSTGRES”。

[6] Oracle官方网站Documentation页面。

[7] MySQL官方网站Developer Zone页面。

[8] IBM官方网站Db2 architecture and process overview页面。

[9] Microsoft官方网站Introducing SQL Server Big Data Clusters页面。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57924”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


相关图书

数据会说话:活用数据表达、说服与决策
数据会说话:活用数据表达、说服与决策
数据结构 Python语言描述 第2版
数据结构 Python语言描述 第2版
管家婆软件实战操作教程(辉煌版)
管家婆软件实战操作教程(辉煌版)
全国计算机等级考试教程 二级公共基础知识
全国计算机等级考试教程 二级公共基础知识
Foxtable数据库应用开发宝典
Foxtable数据库应用开发宝典
龙芯应用开发标准教程
龙芯应用开发标准教程

相关文章

相关课程