我们在越来越多的会议、媒体、文章、报道上看到一种说法:“未来的数据库是云数据库的时代,云数据库厂商终将取代传统数据库厂商”。首先我并不否认这种说法,但是云数据库是否真的推进了数据库技术的进步有待商榷。本文我想谈谈自己的一点看法。
商业的成功
近几年我们发现以亚马逊aws、微软azure、阿里云polardb等为主导的云数据库突然兴起,迅速占领了市场,慢慢蚕食着以db2、oracle为首的传统数据库厂商的市场份额,虽然oracle公司也从oracle 12c版本开始朝着云化的方向发展,但是鉴于oracle架构的复杂性,这条路一直走的比较艰难,成效并不显著。
在2019年的Gartner全球数据库魔力象限评选中,AWS、微软、阿里云、谷歌云都出现在了这个榜单中,而且微软云和亚马逊azure已经紧逼传统巨头oracle,在领导者象限齐头并进。同时阿里云已经连续两年入选数据库魔力象限,2019年还首次入选挑战者象限,距离领导者象限只有一步之遥。随着阿里云、谷歌等云厂商强势上升,IBM、SAP则出现了明显下滑,IBM从领导者象限滑首次落至远见者象限。
下面这张图Gartner的报告,显示了2018年全球数据库厂商份额对比。我们可以很清晰地看到云数据库厂商呈现爆发式的增长,而且上涨势头不止。
Gartner的数据显示,2018年,数据库云服务已经为整个数据库市场贡献了104亿美元,整个市场是460亿美元,这其中不包括托管licence。同时整个数据库市场的增长接近70%来自于云数据库的增长。
技术的倒退
我本身是一个做技术的,不是研究市场的。所以我深知数据库作为基础软件设施上的“明珠”,技术门槛之高常人无法想象。
1977年IBM完成system R系统原型设计,后来DB2数据库于1983年推出,成为关系型数据库的开拓者;1977年拉里埃里森创办oracle公司,同时于1979年推出oracle数据库;postgresql始于1986年,最初由伯克利的postgres软件扩展而来。还有infomix、mysql、sql server、sybase等数据库其实都是经过几十年的漫长发展。
DB2、oracle作为传统数据库厂商的代表,经过这么多年的发展,其实给数据库领域的研发带来非常高的门槛,如果从头开始设计一款数据库难度非常大,首先从最底层的模块:sql引擎、数据库对象、存储引擎、事务管理、缓冲区设计、内存设计、锁管理等等都是难度非常大,而且要把这些模块整合起来成为一个完备的数据库系统更是难上加难,所以新型厂商如果想从头做一套新的数据库几乎很难实现。
那么这些新型数据库厂商是如何实现弯道超车的呢?答案其实是:“概念+整合”。
“概念”其实就是数据库“云”的概念,其实我一直觉得数据库是一个不适合云化的东西,云其实有两层概念,代表着云化的两条路,一是云厂商根据客户资源需求提供基础设施和软硬件,类似公有云,适合个人客户或者体量不大的客户;另外一种是大企业由于数据的重要性需要将云搬到自己的数据中心,或者自己建云,这里的云可以是实现一套管理平台,将所有数据库管理起来,实现资源的自助申请、自动部署、自动交付。
“整合”说的是云厂商并不自己研发底层的数据库内核,或者研发出一套新的数据库,而是将现有的开源数据库进行整合,云厂商的研发重点在于如何将这些开源数据库整合起来,实现统一管理,形成自己的一套大的云数据库,在用户角度来看,用户不知道或者不关心底层是什么数据库,用户只需要给云厂商提出cpu,内存,容量等需求,云厂商那边实现了IaaS,PaaS,自动的数据库实例创建,交付给用户,数据库维护、数据备份等维护类工作由厂商完成。所以说云厂商其实是看到了市场的机会,个人客户和小公司其实占据绝大多数,他们是没有能力或者必要去购买高额的licence,反而选择云厂商是一个很好的选择,同时还节省了很大部分维护费用。
那么我为什么说数据库云是技术的倒退呢。抛开市场不说,单看技术,数据库云其实就是实现了一套数据库管理平台,不管是公有云还是私有云,最终技术的研发都还是在围绕着如何更高效地交付、管理用户的数据库。其实底层真正能称为数据库的那部分内核是没有改动的或者改动很小的。
现在的云厂商底层数据库几乎都是mysql或者postgresql,将它们进行整合,提供兼容mysql或者postgresql的服务。当然不否认很多厂商做了很多技术创新,比如说存储计算分离,计算层的mysql或者pg可以无限扩展,存储层共享,同时使用rdma进行计算层和存储层的互联,实现高速访问,还有一些针对mysql做了优化,比如基于redo的物理复制,使用全局内存取代log shipping提供一致性读等。这些功能虽然也触碰到了数据库的内核,但是也只是很小的一部分,而且说到底只是为了使云上更高效而做的创新,还是向市场看齐的。
我们想象一下,如果这些云厂商未来真的取代了db2、oracle这类公司,到底是好事还是坏事呢?Db2、oracle是从最底层的数据库模型的设计一步一步走过来的,这些技术门槛非常高,这些东西才是数据库的根基,如果根基都没了,“云”只是一团空气。