2016年11月25日,沃趣科技“智慧应用 数据先行”2016产品发布会暨新三板挂牌庆祝会在杭州华美达酒店隆重举行,近百位知名企业专家、合作伙伴及媒体人共同出席本次会议,分享数据库相关领域的创新成果和成功经验,一同探讨数据库云化的摸索探寻之路。
借此契机,CSDN记者有幸邀请到沃趣科技联合创始人、高级数据库专家李春,围绕一些大家关心的话题进行采访。纵观MySQL的前世今生,漫谈MySQL十年长路,剖析时代节点下的MySQL分支抉择。
以下为正文:
由浅入深的MySQL学习历程
从与数据库的“意外”初遇,到结缘MySQL,我选择MySQL的最大原因,在于它适用于很多不同的场景,以及其嵌入式存储引擎可以满足各种需求,没什么局限性。未来,MySQL和关系型数据库要走的路都还很长,而我在这个领域还有很大的学习空间。
CSDN:首先请您先介绍一下自己,以及您的从业经历和感兴趣的技术等。
李春:
我2007年从浙大毕业,加入了红杉树信息技术有限公司,在平台部从事C/C++开发,主要是基于MySQL来做周边产品,比如高可用、数据同步等。我当时所在的公司和团队相当于一个国外公司webEx在国内的重新孵化,但是带我的师傅Gary在美国做数据库开发已经有十数年了,技术和经验非常丰富,即使放在今天来看,很多想法和理念也是比较领先的。但是一直从事数据库高可用和同步对我而言的最大问题就是对数据库是怎么跑的、如何使用、为什么要做高可用和复制同步功能等一般DBA都很容易理解的事情不太清楚,也就是说,模模糊糊地知道要怎么做,但是对为什么要这么做无法深入理解。2009年左右,我进入阿里巴巴,我意识到如果一直这样做下去,将无法找到自己的方向,因此在进入公司的第二年,我便开始转型做DBA。开始学习真正站在用户和开发者的角度去理解,数据库到底是什么,应该解决用户的什么问题。非常幸运,阿里的DBA部门是全世界最顶尖的殿堂之一,前有鲁道夫、大师、Grassbell、大辉、HelloDBA等一众老一辈的大牛领路,后有朝阳、P叔、登博、印风、胜通等大神一起成长,实在是与有荣焉。
关于我自己,从业十余年,基本上都是围绕着MySQL这个数据库,虽然积累了这么久的经验,但是我觉得MySQL,或者说关系型数据库这一块仍然有非常多的东西需要去学习。目前看来,即使对MySQL非常熟悉,就比如我们在阿里有很多同事其实已经在从事MySQL源码级别的bug修复,甚至为MySQL补充功能特性。但即使是他们现在也还在不断学习。因为关系型数据库是一个非常深且强的领域。前段时间有篇文章非常火,说的是两个DBA可以支撑起数据库的所有事情,但如果切换到NoSQL,或现在很流行的一些分布式处理的领域,可能需要上百个应用人员和上百台服务器才能解决这些问题,孰重孰轻大家可以自行评估。有人可能会觉得被关系型数据库绑架了,但其实从某种程度来说,长久以来,我们使用关系型数据库的这套理论,不是没落了,而是放大了,放大到开发人员也可以利用它的理论来解决业务问题。Oracle无疑是当前这个宇宙中“最强大的数据库”,很多对传统关系型数据库理论的改进,特别是执行计划优化器方面是MySQL需要持续学习的,MySQL的路还很长,关系型数据库的路也还很长,我在这个领域需要继续学习的路也很长。
CSDN:在计算机众多分支中,为什么会选择做数据库?能否和大家分享下您从事数据库的历程?
李春:
我从事数据库这个领域“纯属意外”。在读研的时候,我的导师陈根才院长和高云君博士恰巧从事的就是时空数据库的研究。时空数据库感觉很高大上,其实说穿了也很简单,并且在现在也是非常火的。比如滴滴打车就可以使用到这一技术。假设你在地铁上,现在要从“西湖文化广场”站打车;司机要从另外一个方向赶来,它的时间和空间都是一个变化的过程,如果仅计算位置,就只是空间数据库的问题,相对比较简单。但如果加上时间因素呢?这还是一个平面的过程,但是当时我们会研究得更深,在三维空间中移动,再加上时间就相当于四维因素相结合后,来计算两个物体运动过程中,到底在哪一个时间点的距离是最短的。
相对而言,我可能是做一行爱一行的人,而不是爱一行做一行的。当时做了这一块研究之后,逐渐对此产生了兴趣,在VLDB、SIGMOD等上面发一些论文也让我们成就感爆棚,一步步走来,也就逐渐确立了数据库这个学习方向,并且乐在其中。
但我是一个实用主义者,做研究相对离实际生活场景比较远,正好红杉树有一个做开源数据库的工作岗位,(2007年国内做开源数据库的并没有几家),而且带我的是有十多年数据库相关经验的师傅,所以就选错行嫁错郎,Just Do IT了。
至于为什么选择MySQL这个开源数据库,这就要比较一下其他商业或者国产数据库了。当时其实确实有几个可供选择:一个是Oracle,当时DB2因为小型机、封闭式等问题优势渐衰,所以Oracle成为商业数据库中最强的一员,而开源数据库则有Postgres,还有MySQL。提到国产数据库大家首先想到的是达梦、南大通用的GBase,其实当时浙大也有专门自研的OSCAR数据库(登博就是做OSCAR数据库的)。其实从当时大多数人的选择来说,可能选择Oracle会更好,因为Oracle当时非常火,当然,主要是“薪资极高”:)。但是我当时还是选择了MySQL,一是觉得它比较年轻,发展势头非常猛,用户也越来越多。另外2007年正是互联网刚刚兴起,日趋蓬勃的时候,我觉得开源数据库会更有优势。而其他的Postgres开源数据库,或者达梦等国产数据库这一块,用户量和成熟度都还不太够。
但我选择MySQL的最大原因,在于它适用于很多不同的场景,其嵌入式存储引擎可以满足各种需求,没什么局限性。与之相比,Postgres更局限于专业领域,“上船”要求比较高,而MySQL的目标是做最流行的数据库,上MySQL这条船比较容易。
直面选择节点,MySQL三大流行分支一览
MySQL目前三大最火的分支仍然是Oracle控制的、MariaDB控制的,以及Percona控制的,三者各有特色。其中,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。
CSDN:您比较侧重的还是MySQL,MySQL开发版有很多,在您看来存在一些什么样的问题?
李春:
MySQL目前最火的分支还是以下三个:Oracle控制的、MariaDB控制的,以及Percona控制的,这三者各有特点。
Oracle的MySQL大家都比较了解,就不多说了。
起初MySQL之父Monty在1979年写下MySQL的第一行代码,后来逐渐创建起MySQL公司,后将其以10亿美金卖给Sun,结果Sun又把Microsystems和MySQL转手卖给Oracle,Monty愤而出走,创立MariaDB分支。从某种程度来说,可能MariaDB才是一脉相承过来的MySQL。关于MySQL和MariaDB的由来也有一个小故事,MySQL的My并不是“My我的”意思,My其实是Monty的大女儿,Maria是Monty的小女儿,Monty还有一个儿子Max,所以对应的也有一个MaxDB。国外的好像都有这个传统。13年Monty来中国的时候,我们还跟Maria一起合照了,是一个很可爱的芬兰小姑娘。
叉得有点远了,我们继续说一下MariaDB和MySQL的区别。Monty无疑对MySQL是最熟悉的,所以MariaDB这个分支在功能性方面都表现得很优秀,也比Oracle MySQL走得更快一些,早在5.5时MariaDB就已经有了目前MySQL 8.0鼓吹的 Hash Join功能,在MySQL 5.7上的多源复制功能也早在2012年就提供出来了。而且它是一个“开放”的分支,Monty为了避免它闭源特别成立了一个基金会,把MariaDB放在基金会里,基金会无法进行商业活动,也就不会步MySQL的后尘。当然也有对应的 MariaDB的公司,来提供内部QA稳定性测试、商业套件、订阅服务、培训、甚至定制化开发服务等,所以即使MariaDB这个公司被收购了,也不会影响到MariaDB本身的发展。目前MariaDB在Gartner统计中是发展最快的开源数据库。
再看Percona,Percona是原MySQL运维部总监Peter和Vadim在2006年离开后创建的,因其本身是运维出身,所以他做的这个分支基本上也是为运维人员服务的。比如说它的XtraBackup和pt-Toolkits,这些DBA常用工具都是出自他的公司。在一个公司里面,运维和开发其实是两个比较冲突的部门;运维更保守,他要的是不要有Bug,监控、备份都需要配置起来方便,需要有问题时及时处理。而开发人员想的则是:这个功能MySQL实现不了,需要新增功能,要提交,要快速迭代、快速开发,举个例子:人类都有像鸟儿一样在天空翱翔的理想,于是开发人员生产了飞机,而运维人员担心掉下来生产了降落伞。Percona公司更偏向于运维工具;MariaDB更偏向于功能的完善;Oracle MySQL它介于两者之间。
但现在因为Oracle收购了MySQL,花了70多亿美金,自然想要控制MySQL,因此Oracle做的第一件事就是不再开发MySQL的Test Case,Test Case不需要遵循 GPL协议,所以Oracle成功了。但是,这个动作对开源社区和MySQL的开放性带来的损害是巨大的,阿里巴巴、Google、亚马逊等都有自己的特殊功能,对MySQL进行了大量源码的改造,用户遇到的问题提交给Oracle,Oracle写成Test Case,但是不开放出来,各大公司自己改的源码会因此无法得到验证,也就相对无法保证稳定和可靠,最后只有Oracle能够把控这个MySQL分支。在8.0的时候,Oracle进一步绑定了InnoDB,社区的控制力更弱。
总体来说,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。
CSDN:是否能请您谈一谈对MySQL目前乃至未来发展的观点?以及对MySQL 8.0,MariaDB 10.2的发展的看法。
李春:
这个问题非常好,目前正是一个MySQL选择的节点,也就是说,对于到底采用MySQL的哪一个分支版本,国内的企业需要做出自己的抉择了。其实国外相关行业已经做过一轮选择了。在Oracle收购MySQL之后,Google、Facebook、Twitter,以及RedHat、SUSE等Linux发行版选择直接切到MariaDB。这有基于MariaDB承诺永远不会闭源的原因,也有基于MariaDB功能丰富的原因,或者基于MariaDB插件丰富的原因,当然也有一些公司选择了继续保持使用MySQL或者Percona。但由于他们彼此之间能够相互兼容,国内并没有进行大规模的迁移。
但是现在MySQL 8.0来了,Oracle的把控越来越强,后续MariaDB和MySQL将出现越来越大的不同(Percona基本会坚定地跟着MySQL版本一起发布),国内企业是使用开放性更强的MariaDB,还是使用相关功能,比如高可用、强一致性基本就在MySQL内部完成的Oracle发行版。
就我们现在看到的现象来说,互联网公司,会更愿意走MariaDB这条线,因为互联网公司不希望被Oracle绑架,还是希望也从社区获得必要的功能和补丁,而且也希望发出自己的声音,同时需求和功能能够自主可控,部分通用功能反哺社区。传统行业相对来说还在犹豫,MySQL、Percona、MariaDB都有落地的。我个人当然还是倾向于MariaDB这一方。
紧跟使命:Oracle、Postgres当前,MySQL的漫漫流行路
一直以来,MySQL紧随其发展目标,致力于构建开源数据库领域最流行的数据库。它最吸引我的特性还是它的开放性及插件式结构,支持各种定制化和功能的扩展。若将数据库学习视作登山,那么Oracle便是珠穆朗玛峰,Postgres是阿尔卑斯山,而MySQL就只相当于家后面的一个小山坡,但是这个小山坡上关系型数据库该长的树它基本都有。
CSDN:那在您看来 MySQL之所以这么受欢迎,是出于什么原因呢,是否有什么特质?
李春:
这和它确定的目标或者说它给自己定义的使命有关,比如说阿里巴巴的使命是“让天下没有难做的生意”,也就是B2B的使命,我们沃趣的使命是“让数据发挥它的价值”。MySQL也一直在按照这个使命前进:
开源数据库领域最流行的数据库
,这跟Postgres的使命不同,Postgres要做的是世界上最先进的数据库,这让我想到一个词——“基因”。
MySQL为了做到“最流行”,会兼容各种各样的语法和场景。语法可以兼容Oracle或SQL server的部分语法,初级的开发人员可以一键安装MySQL,甚至你可以把他运行在嵌入式设备上。据Gartner权威统计显示,Oracle目前仍然排名第一,而MySQL紧随其后,1400多分和1300多分,相差仅30分,这个差距其实不算大,而且MySQL在持续增长,而Oracle分数仍在下降,有可能明年MySQL就会超越Oracle成为最流行的数据库。