「9月中旬,StoneDB团队成员有幸与开源数据库MySQL和MariaDB的创始人Michael “Monty” Widenius(后文简称为 Monty)见了个面,其随行的团队成员告诉我们,疫情前Monty每年还能来一次中国,这几年因为疫情,来中国的频次变得很少了(上一次来还是2019年),所以这次见面还是蛮难得的。尤其是对于StoneDB这样基于 MySQL内核做研发的团队,还是很期待有机会和Monty线下面对面的交流一下的。本文主要从StoneDB团队成员的个人视角,来聊聊与这位数据库行业大咖见面后的所思所想。」
文|宇亭
编辑|Michael
初识 Monty
Monty是知名开源数据库MySQL的创始人,如果你经常看开源资讯和科技报道,我想多少会对这些全球知名开源软件的创始人有过一些了解,比如Linux的创始人Linus Torvalds;Red Hat创始人Marc Ewing;FreeBSD的创始人 Jordan Hubbard和Python之父Guido van Rossum等等,从其成就上看,Monty和这些开源大咖的地位是并列的,所以大家大概对Monty在开源世界的位置有点儿体感了。
在他的带领下,MySQL经过近30年的高速发展,目前已成为全球最知名、使用人群最广、最有影响力的开源数据库,在目前的数据库权威机构DB-Engine统计排名下开源市场位列第一。MySQL目前占据全球80%以上的开源关系型数据库市场,拥有全球数百万研发运维相关从业人员。
当然,让我们这类数据库创业团队更加关注的是,Monty在离开MySQL后做的分支版本MariaDB,也同样快速地在数据库行业里占据了一席之地,这里面当然有Monty自带的开源名人光环效应,但是,像数据库这样一款基础软件能够取得成功,绝对不是只靠名人效应这么简单,从当初MySQL的一个备份分支版本成长到如今几乎能与MySQL分庭抗礼,MariaDB到底做对了什么?作为MariaDB的创始人兼CTO ,Monty又是如何看待未来的数据库发展的?我相信很多数据库行业的小伙伴都会很感兴趣,这也是我们参加此次交流会的目的所在。
这场会面本身实际上时间稍微有些短暂,总的来说一天不到的时间。上午刚见到Monty时,还是有些惊讶的,虽然岁逢花甲,但是精气神儿非常足,本人看起来要很年轻很多,等我们开始交流的时候,感觉就更加明显了——你会清楚的意识到到自己在和一位资深的技术专家对话。Monty的语速很快,我们提出的问题,很快就能得到回复。
Monty 与现场参与人员对话
具体聊了什么,我们后面章节再讲,我想先简单介绍一下这位大神的成长经历。
Monty是1962年出生于芬兰赫尔辛基(这个地方的知名程序员还挺多,Linus Torvalds也是芬兰赫尔辛基人),从小其便表现出了对计算机的热爱。
1978年,只有16岁的Monty在朋友那里接触到了人生第一台计算机ABC-80,在这之前,他只玩过德州仪器Ti-58(非常古老的一种计算仪器),但那台ABC-80可不一样,是货真价实的计算机,可它是借来的,为了有一台属于自己的计算机,Monty选择了做暑假工攒钱——在当地的街道上铺沥青,虽然最后还是没攒够,不过他的父亲帮添了一笔,最终才让他买到这个计算机。
之后,Monty便正式开启了他的编程生涯。兴趣爱好加上天赋的加持,Monty很快就展现出了其出色的编程能力,再难再复杂的代码难题,他都能轻松解决,别人家小孩出去玩耍开Party,他就待在家里埋头研究计算机软硬件的底层原理。当然,也不是完全就没有娱乐,Monty很爱玩电子游戏(这放现在看不就是宅男嘛~),他发现ABC-80 上面的软件少得可怜,于是就开始自己动手用汇编语言给ABC-80编写移植游戏,再到后来,他把计算机升级成了ABC-800,开始自己写一些基础软件了,比如文本处理器、磁盘备份器什么的。多年后,Monty在一次演讲上说,那段时间对他来说是美好的回忆,因为你想使用计算机,必须先得从底层学习理解硬件和软件的各种知识,现代程序员可能就很难有这样的机会了。(看来能够理解计算机底层原理也是写好代码的必要条件之一吧~)
1981年,Monty被赫尔辛基理工大学(现名:阿尔托大学理工学院)录取,不过由于对当时学校计算机的教育理念不认同,他选择了辍学(也别意外,那个时候,Bill Gates也刚从哈佛退学没多久),同年,他前往了荷兰的一家叫做 Tapio Laakso Oy的公司当程序员,那段时间,他开始学习理解了数据库开发的相关技术。1982年,Monty因为去瑞典买内存条结识了开电脑店的Allan Larsson,两人经常联络,很快便成了好朋友。1985年,Monty和Allan一起成立了TCX DataKonsult Inc,他把电脑又升级成了Sun SPRAC,在这期间,Monty为客户写了一款数据库程序Unireg,卖的很好,可以说是MySQL的原始雏形。同时,他也结交到了另外一位好友David Axmark,David是一名出色的技术开发人员,也是*软件的爱好者。
90年代中后期,互联网发展迅猛,Web网站开始如雨后春笋般不断涌现,当时的Unireg不支持SQL接口,没法儿和Web应用有效集成,但是已经有很多客户找到公司希望能够让Unireg支持Web应用。Monty在研究后,一开始选择了当时开源的miniSQL(简称mSQL),他联系到了mSQL的作者David Hughes,希望能够给 Unireg 做索引上的兼容,不过后来由于性能和作者的意向,这个方案被否定了。
靠天靠地不如靠自己,Monty决定自己写一个支持SQL和索引的数据库,于是乎,1995年1月,MySQL正式问世,不过并没有立即开源,而是先在内部完善迭代,之所以起名叫MySQL,据说是因为Monty有个女儿叫My Widenius。后来在好友 David 的建议下,1996年,MySQL 1.0正式开源了,第一版发布在SUN系列平台上。正巧当时赶上做Web网站的大浪潮,很多网站都需要一个数据库,而MySQL作为一款开源数据库,很快便受到了程序员们的追捧,随后便和Apache、Linux和PHP等开源软件和语言工具构成了风靡一时的LAMP网站搭建组合。
1995年,Monty、Allan和David三人顺势成立了瑞典MySQL AB公司。2000 年,MySQL AB与Sleepycat合作,开发出了Berkeley DB引擎(简称BDB引擎),从此MySQL正式支持事务处理。
迅速发展的MySQL引起了一些知名企业的注意,有公司找到Monty,表示要以 5000 万美金收购MySQL,不过他们当时并不想就此出手,因为他们相信MySQL还有更大的发展空间。但是,随着MySQL越来越火,公司的人也越来越多,客户量和需求量都在水涨船高,同时,其他诸如PostgreSQL的开源数据库也纷至沓来,MySQL面临着严峻的市场竞争环境,确实到了需要引入外部投资的阶段了。
2001 年,MySQL AB招聘到了具有丰富销售和市场营销经验的Mårten Mickos 作为公司CEO,专门负责内外管理和对接投资。这一年里,MySQL AB从Scandinavian获得了A轮400万欧元的融资,又和InnoBase公司达成合作,正式将其开发的事务存储引擎InnoDB集成进MySQL。随后,MySQL的下载量开始一路飙升,到2003年,已经有了400万活跃安装量,几乎每天都有3万多的下载,同年,MySQL又获得了Benchmark Capital领投的B轮 1950 万美元融资。
2004-2005年,不断壮大的MySQL开始考虑进入更多的企业级市场,而且不再满足单一的 OEM 双重授权的盈利模式,因为那种通常是一次性付费,没有持续性,所以就开始推出了诸如MySQL Network等等新的订阅服务,采取年费制。这个动作引起了一些企业级数据库产商的高度重视,2005年,Oracle宣布收购InnoDB的母公司InnoBase;2006年,Oracle宣布收购Berkeley DB的母公司Sleepycat。(这俩前面说了,都是MySQL上面非常火的第三方存储引擎)
2008 年 1 月,MySQL AB被SUN公司以10亿美金收购,为啥Monty愿意卖给SUN,因为SUN公司自己也做开源软件,开源商业化这套玩得挺溜的,在开源圈子里名声也不错(当然,最重要的是,钱给的也很满意),正如MySQL当年第一版是在SUN平台上发布一样,现在又被SUN收购了,仿佛宿命一般冥冥注定。收购后,Monty在2009年2月离开SUN开创了自己的公司Monty Program AB。
不过,那谁动作很快啊,2009年4月,Oracle就以74亿美金收购了SUN公司(毕竟前几年就在挖墙角了),自此,MySQL正式进入了Oracle的时代。
2009年12月,为了保持MySQL的开源使用不受影响(因为Oracle收购SUN公司后把他们原来的开源产品OpenSolaris给闭源了),Monty决定创建MariaDB作为分支对抗,并将Monty Program AB接着与SkySQL合并,公司改名为MariaDB Corporation。同时为了避免MariaDB走重复的道路,他将MariaDB的版权授予了MariaDB基金会,这是一个NPO(非营利性组织),依靠捐赠运营,以保证MariaDB永远开源,而不会因为MariaDB Corporation的兴衰或者被收购而导致MariaDB的版权被收购或流失。MariaDB Corporation则是通过售卖MariaDB/MySQL的服务来赚钱,为MariaDB基金会提供MariaDB的持续开发资源。这种基金会与公司双轨并行的模式,的确厉害,也影响了后面一批开源商业化的公司。
时至今日,MariaDB已经走到了世界开源数据库的前列,不断追赶甚至要超越MySQL的地位,而这两款强大的数据库背后,都离不开一个男人,那就是Monty。
当我们和Monty聊天时,他就表示,也感谢有了SUN那10亿美金,让他可以吸收大部分在MySQL AB原厂的优秀数据库开发工程师,这让MariaDB的研发人员具备更强的开发能力并且确保对MySQL源码有更好的理解。
MariaDB 的开源与商业
在了解过Monty的历史后,让我们回到这场会面本身。前面说了,我们也是基于MySQL内核研发分支版本的团队,不过分支不是主要目的,我们是要自研一款能够让MySQL支持HTAP的存储引擎Tianmu,当然,不可否认的是,我们需要商业化,我想,数据库作为基础软件,如果商业化不成功,还是很难存活下去的,无论是不是开源的。所以还是想听一听Monty来讲讲MariaDB的商业模式。
StoneDB 团队:MariaDB是基于MySQL做分支版本的,那么怎么做商业/企业版的?会不会受到Oracle的限制,或者说要和Oracle签订什么付费的授权协议?
Monty:MariaDB Server是开源的,而且协议是 GPL-2.0,目前是有订阅制,而不是靠卖License,所以不用付给Oracle什么版权费用。当然,MariaDB可以提供SaaS服务版本的云数据库(应该说的 SkySQL),这个云数据库不是开源的,也不违反开源协议。
可以看到,在MariaDB Foundation的官网上确实可以下载MariaDB Server的开源代码。
而在MariaDB Corporation的官网上,我们可以看到有这么几个产品选项,分别是MariaDB Community、MariaDB Enterprise、Cloud、Repo Setup、Connectors和Tools。
这里就给大家看一下Community、Enterprise和Cloud吧,列了一个表:
可能一些同学会疑惑,怎么MariaDB还能做企业版呢?MariaDB不是开源的么?实际上,MariaDB确实是遵循GPL-2.0开源协议的,而且它一开始就是基于MySQL做的,所以,除了Oracle,MySQL其他分支产商是不可以再搞一个商业许可售卖License的,而MariaDB的Enterprise版本实际上是订阅制,还是卖服务,当然,这个企业版里添加了一些企业级特性,比如细粒度审计和端到端加密等等,可以理解为是社区版的加强版。而加强的种种附加组件中,就用到了这个MaxScale,不过MaxScale并不是“开源”的,而是遵循BSL(Business Source License)协议,这个协议规定用户可以获得源码,但是会受到限制,比如使用MaxScale,如果后端超过三个实例,就必须购买商业授权。
BSL虽然不是开源协议,但是使用BSL协议的软件再发布的最多4年后(也可以是更短的时间),就必须遵循GPL-2.0(或者GPL更高的版本以及和GPL-2.0兼容的版本)发布了。也就是说,使用BSL协议的软件,最终一定会变成开源软件,当然,如果是非生产环境使用BSL协议的软件,就不受到这个限制。
目前,MariaDB Corporation旗下deMariaDB MaxScale、MariaDB ColumnStore Cluster Management API (CMAPI)等产品都在使用BSL协议。
毫无疑问,在经历MySQL的创业经历后,MariaDB的商业设计更加成熟了,除了上面开创的BSL协议,MariaDB在企业服务器端的Enterprise和在云服务器上的SkySQL也给其带来了诸多营收。根据MariaDB与Angel Pond合并时提交的SEC材料,在2021财年,SkySQL和Enterprise分别有250%和46%的ARR增长,NDR超过120%,预测在2022年9月结束时,本财政年度的收入将为4740万美元。值得一提的是,MariaDB Enterprise中包含了一个Xpand分布式数据库版本,这个Xpand也是Monty与我们沟通时重点介绍的,它是一个HTAP分布式数据库——2018年MariaDB公司收购了MammothDB和分布式存储引擎ClustrixDB,这两家公司的技术是Xpand的基础来源。
当我们问到,Xpand未来会不会考虑开源时,Monty回复说:“Xpand是我们收购来的,花了很多钱,如果贸然开源,我们可能会亏得很惨,不过我会考虑,当Xpand的营收能力到达一定程度时,比如说大家订阅的足够多,开源也没什么。实际上,你现在可以试试MariaDB ColumnStore,这个存储引擎也可以做HTAP,代码是开放的。”
HTAP 是未来数据库的一环
Xpand也是做HTAP的,而且是分布式的,这个引起了我们的注意,当然,笔者当时还没怎么研究过呢,其他同事倒是很早就知道了,然后就是技术交流时间了。
StoneDB团队:“我们正在基于MySQL做一款HTAP数据库,并且自研了一个列式存储引擎,想问问您是怎么看待HTAP数据库的?”
Monty:“好吧,为什么不基于MariaDB做呢?MariaDB支持很多存储引擎,MySQL的引擎也都支持,而且MariaDB现在也支持HTAP了,你们完全可以来给MariaDB做,我想这正是开源的意义所在~”
StoneDB团队:“哈哈,我们会考虑的~”
Monty:“你是说你们正在自研一个列式存储引擎?”
StoneDB团队:“是的”
Monty:“单只有一个列式存储引擎可不能称之为HTAP哦~”
StoneDB团队:“当然,我们知道~”
Monty:“你们的数据库是一份数据库么? 是Shared Everything么?”
StoneDB团队:“是的,我们是一份数据,Shared Everything,是单系统双拷贝。”
提这个单系统双拷贝,其实是要表达我们是遵循One size fits all的设计思想,Monty可能也明白这个思想,他对此回应道:“我不觉得现代企业里只需要一个数据库就能解决所有问题,现在很多创业公司说只靠一个数据库就够了,我觉得不现实,有点儿吹牛吹到天上去~(好吧,说这句话时,Monty把手抬到了天上)”
那么,Monty觉得未来的企业,究竟需要哪些数据库呢?而HTAP又是适合什么样的场景呢?为了解释清楚这些问题,Monty给我们现场人员在小白板上画了三种数据库架构。
如图所示,Monty认为,未来,一个大型企业可能至少需要三种数据库来解决数据问题:第一种是单机部署的数据库,比如InnoDB,适合1TB以下的数据量场景。第二种是Share Everything的HTAP架构,比如他们的Xpand和我们要做的StoneDB,适合1TB-10TB的数据量。第三种是Share Nothing的分布式架构,可以适合10TB以上的数据量。
我想,Monty的分析还是有一定前瞻性的,就看现在无论是Oracle MySQL的HeatWave,还是MariaDB的Xpand,都是在做HTAP,只不过,他们两家都没开源,StoneDB走上这条道路势必会很有挑战。当然,最近我们也把关注点放在了Monty所说的HTAP适合中小数据量场景的观点上,这句话和Gartner在2021年提出的“From big data to small and wide data”数据分析趋势不谋而合,对此,我们也在尝试用更新的视角去看待要做的事情——Serving over TP(SoTP)或许才是一条更加垂直的赛道。(后面我们会发文章单独来讲一讲什么是Serving over TP)
然后,Monty就着重给我们介绍了一下Xpand的架构,给我们讲了讲Xpand的实现思路,并回答了我们的一些问题。
这个Xpand还是蛮有意思的,虽然没开源,不过文档挺友好,感兴趣的读者可以研究一下。
写代码,不止是工作
我们和Monty还聊了其他的问题,比如听说MariaDB要在中国组建本土化团队,问问大概在什么时候,Monty回复说,尽管他很希望快点儿组建,不过他的中国合作伙伴告诉他,别急,别急。(是的,毕竟,别急,是一种人生态度)就这样,我们也差不多结束了上午的*交流。
下午就是一些嘉宾的分享了,在分享的过程中,Monty会和演讲者互动,并且当场还带着笔记本电脑写代码与现场的开发者交流,真令人佩服,在中国,60岁还奋斗在一线的程序员,应该蛮少的。即便是在芬兰,年轻的创业公司里也是年轻人居多,不过,Monty倒是很自豪的说,MariaDB公司里有很多超过40岁的“大龄”程序员,这让他们的每一行代码都是经过深思熟虑才写上去的,总的来说,还是很稳健的。而且,MariaDB公司的人员实际上并不多,如Monty经常讲的,他们是开源公司,是“Virtual company”,远程协作,这让他们更加容易找到优秀的工程师(原话是:“Virtual Company” made it easy to find good people)。
我印象很深刻的是Monty在结尾时分享了他这几年在做的事情,如下图所示。
这让我真正地感受到了什么叫编程行业里的老当益壮,要知道,Monty现在还负责着大部分MariaDB的Code review工作。我相信,Monty写代码,绝对不是工作需求这么简单,他是发自内心的热爱,就像做MySQL的最初五年他亲自回复了30000多封开发者邮件那样,到现在,他依然包含热血和精力,投入到新的征程中。这种热爱和信仰,或许才能支撑着一个开源项目的茁壮成长。
做艰难而有挑战的事情
最后,我想聊一聊,StoneDB正在做的事情。StoneDB是一款基于MySQL内核的开源HTAP数据库,我们的2.0架构已经在Github上公开,有一些同学可能还是对我们的工作不够了解,只是简单地以为基于MySQL,就是套皮魔改那种,其实不是的,国内基于MySQL或者PostgreSQL做的数据库很多,我们也是其中一家,不过我们的核心投入点还是自主研发一款真正的一体化HTAP数据库。目前我们要做的重头戏就是打造列式存储引擎Tianmu,一个和InnoDB、BDB类似的,能让MySQL实现无缝切换,获得HTAP能力的引擎。这当然很困难也具有一定挑战性,不过我们相信,这会是一件在技术与商业上都有巨大价值的事情。如果你同样对数据库开发感兴趣,欢迎加入我们,简历可以投递至:hr@stoneatom.com。
欢迎您的加入~
*感谢ACMUG和杭州沃趣科技组织本次未来数据库形态座谈会。
爆肝整理5000字!HTAP的关键技术有哪些?| StoneDB学术分享会
解读《Benchmarking Hybrid OLTP&OLAP Database Systems》| StoneDB学术分享会
深度干货!一篇Paper带您读懂HTAP | StoneDB学术分享会
添加小助理,加入社区交流群
与数百位资深数据库从业人员深度交流
官网:https://stonedb.io/
Github: https://github.com/stoneatom/stonedb
Slack: https://stonedb.slack.com/ssb/redirect#/shared-invite/email