序二
“Everything old is new again.”
如果回顾数据库的发展历史,会发现很多有趣的事实。当前数据库面临的问题其实还是“老”问题,如I/O、Lock这些问题和最早期数据库中面临的问题是一样的,并没有实质的改变,只是规模要比以前大多了。目前的新技术、新想法其实也并不“新”。如果查阅20世纪70年代的论文,会发现很多想法在IBM第一代关系数据库研究项目System R系统中就提出了,只是当时因为硬件限制无法实现。现在由于硬件的进步,很多技术才开始真正被商用。
因此,回顾数据库发展史可以帮助我们更好地把握技术的走向。数据库的缘起可以追溯到20世纪60年代,当时有三个主流的数据模型——层级型、网络型以及关系型。IBM的第一代数据库IMS就是层级型的,现今还是最快的交易系统。网络型虽然当时并没有获得太高的关注,不过近年来越来越火的图数据库其实和当时网络型的数据库是很相似的。关系数据库在三种模型中逐渐成为主流,并且获得了巨大的商业成功。20世纪80年代开始IBM和Oracle成为这个领域的翘楚。
无论是哪种数据模型,数据库的本质是如何高效地存储数据(Storage)和如何快速地访问数据(SQL)。这些年来由于企业架构和信息系统的更迭,数据库技术为了满足特定的需求也在不断地演进。但是其核心是不变的,还是围绕着数据的存储和访问。
例如,为了适应高并发、高响应的应用需求,关系数据库演化出来分布式模型。分布式数据库总体设计有两个思路和方向,一个是基于共享存储的架构(share disk),如IBM Db2 PureScale;另一个是基于数据分片的架构(share nothing)。数据分片架构的特点是底层数据通过一定的规则比如散列将数据打散,分布到不同的数据节点上,计算时底层多个节点共同参与计算,同时数据节点可以进行横向扩展,上层由协调节点进行SQL解析和转发,这是目前典型的分布式数据库架构。
除了性能的要求,数据类型也发生了变化。除了结构化数据之外,20世纪90年代后出现了大量的视频、音频、空间位置等信息。这个时候就形成了面向对象的数据库。但由于关系数据库在市场上占据统治地位,面向对象的数据库由于存取数据的复杂性并没有流行起来。关系数据库为了适应新的数据类型,增加了可扩展性,支持了新数据类型的存储和访问,如IBM Db2支持XML数据类型。
2000年以后,随着商业智能的兴起,数据仓库成为数据库舞台新的明星。为了加速处理分析型(OLAP)负载的速度,数据库在行存储之外又出现了列存储的方式,如Db2 BLU,使用列存储的分析型查询速度提升了8~25倍。
2000年后期,由于互联网的蓬勃发展,互联网的应用日新月异。而这些新的应用要处理海量数据和急剧增长的用户数目,要求数据库具有高扩展性、高可靠性、低时延和低成本。同时也相应放宽或者放弃事务性的约束。这些需求促生了新的数据库技术发展——NoSQL。这些新型的数据库为了特定应用而产生,核心是简化数据模型,快速扩展以解决互联网应用爆炸式的增长。例如,IBM Cloudant可以在全球所有IBM Cloud区域和超过55个数据中心内使用,满足全球应用性能和灾难恢复需求。
2010年之后又出现了要兼顾NoSQL性能以及保留关系模型和强事务的New SQL。这几年随着云计算的普及,云计算作为灵活和经济的存储和计算资源,正在和数据库技术结合,很多企业也开始考虑数据库上云。IBM Cloud Pak for Data是一个基于Red Hat OpenShift构建的数据和AI平台。它提供了便捷的方式可以将Workload从独立的Db2迁移到IBM Cloud Pak for Data上的容器化Db2,帮助企业实现数据库云化。
从数据库的历史可以看出,数据库新技术层出不穷,新产品百花齐放,但是核心理念是不变的,大家都是在关系数据库的基础上迅速构建和迁移自己的数据库架构体系。
最后想说一下,我和飞鹏认识于15年前,我们共同在IBM的数据库团队从事研发工作。飞鹏不仅具有深入的数据库知识和丰富的运维经验,更重要的是具有知识融会贯通的能力。非常高兴看到飞鹏把自己的方法论总结成书,也希望这本书能够帮助更多的数据库技术人员更好地应对新技术变化所带来的新挑战。
IBM中国开发实验室
数据和人工智能总经理
吴嫣
2021年5月18日