(MySQL之父—— Ulf Michael “Monty” Widenius)
承蒙中国MySQL用户组(CMUG, China MySQL User Group)这次邀请了MySQL之父Monty进行一次中国行活动,作为CMUG的主席团成员和MariaDB基金会的Maria Captains(基金会的Committor),也利用“职务之便”顺手将Monty邀请到了阿里进行一次分享。
Monty是MySQL第一行代码的作者,后来与两位好友一起成立了MySQL AB,开始正式商业化运作MySQL,出任CTO,一直到MySQL AB被卖给Sun。之后Monty没有加入Sun,而是离职创立了Monty Program AB,接过MySQL的代码继续开发新的分支——MariaDB,自己担任CEO。
在2014年,Monty Program AB与SkySQL AB合并,成立了MariaDB Corporation,开始商业化运作MariaDB,Monty继续担任新公司的CTO。同时他还兼任MariaDB基金会的CTO。
现场同学座无虚席,都想一睹MySQL创始人的风采。
Monty分享了MySQL的整个发展历史,从他在34年前开始写第一行代码,到后来如何决定将MySQL开源,以及MySQL如何变得越来越普及,再到MySQL AB被Sun收购,最后又被卖给Oracle,分享了许多我们所不知道的内部的故事和他们当时的思考。
Monty还分享了MySQL,MaxDB,MariaDB这些项目的名称的由来,My是他的大女儿的名字,Max是他儿子的名字,Maria是他小女儿的名字,以及MySQL的正确发音,Monty给出了标准答案/maɪ es kjuː ɛl/,或者是/mjuː es kjuː ɛl /,因为My是一个芬兰语名字,所以也可以用后者芬兰语发音。
Monty给我们展示了他早年怎么开始学习计算机以及开始编程的。从最古老的计算器——德州机器Ti-58,再到当民工搬砖在赫尔辛基修路赚钱买了最早的个人计算机ABC-80,再升级到Sun SPRAC开始正式进行了MySQL早起的开发,后来跟好友成立MySQL AB。
老爷子一辈子就在做MySQL相关的代码,今年他54岁了,还要亲自参与写代码,并且负责大部分Code Review工作,谁说程序员只能做到30的。我与Monty在MariaDB基金会合作Review的时候,Monty最常说的话就是:”That’s easy, one day” “That’s easy, 15 mins”,诸如此类,无时无刻不在跪拜老爷子对这些代码真的是熟到全在脑子里的地步。
至于为什么创立MariaDB,Monty告诉我们,他需要一个能永远保持开源的MySQL替代品,因此他吸取了MySQL AB的教训,把MariaDB的版权授予了MariaDB基金会,这是一个NPO(非营利性组织),依靠捐赠运营,以保证MariaDB永远开源,而不会因为MariaDB Corporation的兴衰或者被收购而导致MariaDB的版权被收购或流失。同时MariaDB Corporation通过售卖MariaDB/MySQL的服务来赚钱,为MariaDB基金会提供MariaDB的持续开发资源。
然后作为一个技术人,Monty聊了一下MariaDB对MySQL原版的改进,以及他吸收了所有的MySQL AB原厂工程师而具备的更强的开发能力和对MySQL源码更好的理解,例如在高并发场景下,MariaDB通过简单的代码优化,就远远超过了MySQL 5.7及其复杂的修改所获得的收益。以及MariaDB实现了真正的完全并行的备库多线程复制,可以让备库的性能超越主库,避免延迟。
最后,Monty还分享了MariaDB未来计划的新功能,以及正在进行的开发工作,如何从MySQL迁移到MariaDB,以及他们之间的兼容性问题。
Monty的演讲结束后,同学们踊跃提问,也问了一些有意思的问题,例如:
- 作为MySQL写第一行代码的人,第一行写的是什么代码? (You created the MySQL, and you wrote the first line of MySQL code, what’s the first line code?)
Monty:因为MySQL的第一版其实是BASIC开发的,所以第一行就是BASIC的注释 “REM”。 - MySQL的设计思路和设计理念是什么?(MySQL’s design ideas? What's the principles of MySQL design and architecture?)
Monty:因为MySQL是在很差的机器上开发的,所以从MySQL一开始设计,就很注意性能问题,另一个就是简单,版本迭代要很方便,同样也是因为曾经的计算机编程很不方便。 - MySQL数据区别其它数据库的一点是插件式的存储引擎的设计,想问问这点的理论来源?”(MySQL has a special feature, which is the storage engine plugin, it’s great. Why you decide to add the engine plugin to support many engines, and What’s the source of the theory? )
Monty:其实MySQL最早只有一个商业数据库引擎,但是后来那家公司倒闭了,他们没办法继续使用这个引擎,所以他们开发了MyISAM引擎,认识很多用户已经在用之前的引擎,为了升级方便,所以就开发了Handler API,把最简单的操作设计成API,然后就有了Storage Engine,MySQL同时包含那个商业引擎和MyISAM,用户可以直接在MySQL内部把他们转换。 - MySQL在大数据处理这一块有什么规划没? 怎样看OLTP和OLAP融合?或者说传统数据库怎样应对现在日益增多的OLAP类任务。 (Does MySQL/MariaDB consider it should support the OLAP? Because there are more and more OLAP requirements in the traditional database, how do you think mix the OLTP and OLAP in the same database?)
Monty:MariaDB已经认识到了这一点,所以MariaDB收购了InfiniDB,并且在此基础上开发了ColumnStore,支持列存储的引擎。但是目前ColumnStore跟Server层耦合太紧密,所以要单独为它出一个二进制包,但是这不是最终状态,MariaDB会逐步把ColumnStore变成一个普通的引擎,跟InnoDB一样,可以共享一套MariaDB Server代码,到时候OLTP和OLAP就可以在MariaDB里面共存。 - 如果MariaDB用的人多了,有人收购还会不会再卖?(If MariaDB’s users become more and more, will you want to sell MariaDB again? like MySQL.)
Monty:为了避免重蹈覆辙,MariaDB Server的版权在MariaDB基金会,这是一个NPO,它无法被收购,这保证了MariaDB永远免费和开源。但是MariaDB Corporation是一家公司,它只是为MariaDB基金会提供开发,所以有一天它可能被收购,但是这不影响MariaDB的免费和开源。
会后我也私下问了Monty几个问题
- Why you want to visit Alibaba, and communicate with our engineers? (为什么你想要来阿里巴巴和工程师们交流分享)
Monty: Because Alibaba is the one of biggest Open Source and MySQL users in the world. I want to share something about MySQL/MariaDB, and what’s the Open Source to your guys. (因为阿里巴巴是开源软件和MySQL最大的用户之一。我希望给你们分享一些MySQL/MariaDB的故事,以及什么是开源。)
- How do you think about the Alibaba’s MySQL skill and contribution? (你怎么看阿里巴巴在MySQL方面的能力,以及贡献)
Monty: You contributed the Multi-Source Replication and Time Machine or Flashback, that’s very useful for MariaDB, I think your team is intelligent.(你贡献的[多源复制](
https://mariadb.com/kb/en/mariadb/multi-source-replication/ )和闪回功能,对MariaDB很有用,因此我觉得你的团队是很有能力的)
- How do you think about Alibaba’s contribution in Open Source?(你怎么看阿里巴巴对开源世界的贡献)
Monty: Alibaba has open source some software like Tengine, and AliMySQL soon, but I think Alibaba can do more. (如你所说,阿里巴巴已经开源了一些软件,例如Tegnine,还有即将开源AliMySQL)
彭立勋 阿里云高级技术专家 供稿