
「9月中旬,StoneDB团队成员有幸与开源数据库MySQL和MariaDB的创始人Michael “Monty” Widenius(后文简称为 Monty)见了个面,其随行的团队成员告诉我们,疫情前Monty每年还能来一次中国,这几年因为疫情,来中国的频次变得很少了(上一次来还是2019年),所以这次见面还是蛮难得的。尤其是对于StoneDB这样基于 MySQL内核做研发的团队,还是很期待有机会和Monty线下面对面的交流一下的。本文主要从StoneDB团队成员的个人视角,来聊聊与这位数据库行业大咖见面后的所思所想。」
文|宇亭
编辑|Michael

初识 Monty


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和杭州沃趣科技组织本次未来数据库形态座谈会。
StoneDB目前已经完全开源,欢迎大家关注~
官网:https://stonedb.io/
Github: https://github.com/stoneatom/stonedb
Slack: https://stonedb.slack.com/ssb/redirect#/shared-invite/email
爆肝整理5000字!HTAP的关键技术有哪些?| StoneDB学术分享会
解读《Benchmarking Hybrid OLTP&OLAP Database Systems》| StoneDB学术分享会
深度干货!一篇Paper带您读懂HTAP | StoneDB学术分享会
添加小助理,加入社区交流群

与数百位资深数据库从业人员深度交流




