StoneDB 团队成员与 MySQL 之父 Monty 会面,共话未来数据库形态
「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学术分享会
添加小助理,加入社区交流群
与数百位资深数据库从业人员深度交流
Github: https://github.com/stoneatom/stonedb
Slack: https://stonedb.slack.com/ssb/redirect#/shared-invite/email
版权声明: 本文为 InfoQ 作者【StoneDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/027fd7b45908bddb73f6827b3】。文章转载请联系作者。
评论