StoneDB 團(tuán)隊成員與 MySQL 之父 Monty 會面,共話未來數(shù)據(jù)庫形態(tài)



「9月中旬,StoneDB團(tuán)隊成員有幸與開源數(shù)據(jù)庫MySQL和MariaDB的創(chuàng)始人Michael “Monty” Widenius(后文簡稱為 Monty)見了個面,其隨行的團(tuán)隊成員告訴我們,疫情前Monty每年還能來一次中國,這幾年因為疫情,來中國的頻次變得很少了(上一次來還是2019年),所以這次見面還是蠻難得的。尤其是對于StoneDB這樣基于 MySQL內(nèi)核做研發(fā)的團(tuán)隊,還是很期待有機會和Monty線下面對面的交流一下的。本文主要從StoneDB團(tuán)隊成員的個人視角,來聊聊與這位數(shù)據(jù)庫行業(yè)大咖見面后的所思所想。」
文|宇亭
編輯|Michael

初識?Monty
Monty是知名開源數(shù)據(jù)庫MySQL的創(chuàng)始人,如果你經(jīng)常看開源資訊和科技報道,我想多少會對這些全球知名開源軟件的創(chuàng)始人有過一些了解,比如Linux的創(chuàng)始人Linus Torvalds;Red Hat創(chuàng)始人Marc Ewing;FreeBSD的創(chuàng)始人 Jordan Hubbard和Python之父Guido van Rossum等等,從其成就上看,Monty和這些開源大咖的地位是并列的,所以大家大概對Monty在開源世界的位置有點兒體感了。在他的帶領(lǐng)下,MySQL經(jīng)過近30年的高速發(fā)展,目前已成為全球最知名、使用人群最廣、最有影響力的開源數(shù)據(jù)庫,在目前的數(shù)據(jù)庫權(quán)威機構(gòu)DB-Engine統(tǒng)計排名下開源市場位列第一。MySQL目前占據(jù)全球80%以上的開源關(guān)系型數(shù)據(jù)庫市場,擁有全球數(shù)百萬研發(fā)運維相關(guān)從業(yè)人員。當(dāng)然,讓我們這類數(shù)據(jù)庫創(chuàng)業(yè)團(tuán)隊更加關(guān)注的是,Monty在離開MySQL后做的分支版本MariaDB,也同樣快速地在數(shù)據(jù)庫行業(yè)里占據(jù)了一席之地,這里面當(dāng)然有Monty自帶的開源名人光環(huán)效應(yīng),但是,像數(shù)據(jù)庫這樣一款基礎(chǔ)軟件能夠取得成功,絕對不是只靠名人效應(yīng)這么簡單,從當(dāng)初MySQL的一個備份分支版本成長到如今幾乎能與MySQL分庭抗禮,MariaDB到底做對了什么?作為MariaDB的創(chuàng)始人兼CTO ,Monty又是如何看待未來的數(shù)據(jù)庫發(fā)展的?我相信很多數(shù)據(jù)庫行業(yè)的小伙伴都會很感興趣,這也是我們參加此次交流會的目的所在。這場會面本身實際上時間稍微有些短暫,總的來說一天不到的時間。上午剛見到Monty時,還是有些驚訝的,雖然歲逢花甲,但是精氣神兒非常足,本人看起來要很年輕很多,等我們開始交流的時候,感覺就更加明顯了——你會清楚的意識到到自己在和一位資深的技術(shù)專家對話。Monty的語速很快,我們提出的問題,很快就能得到回復(fù)。

具體聊了什么,我們后面章節(jié)再講,我想先簡單介紹一下這位大神的成長經(jīng)歷。
Monty是1962年出生于芬蘭赫爾辛基(這個地方的知名程序員還挺多,Linus Torvalds也是芬蘭赫爾辛基人),從小其便表現(xiàn)出了對計算機的熱愛。
1978年,只有16歲的Monty在朋友那里接觸到了人生第一臺計算機ABC-80,在這之前,他只玩過德州儀器Ti-58(非常古老的一種計算儀器),但那臺ABC-80可不一樣,是貨真價實的計算機,可它是借來的,為了有一臺屬于自己的計算機,Monty選擇了做暑假工攢錢——在當(dāng)?shù)氐慕值郎箱仦r青,雖然最后還是沒攢夠,不過他的父親幫添了一筆,最終才讓他買到這個計算機。
之后,Monty便正式開啟了他的編程生涯。興趣愛好加上天賦的加持,Monty很快就展現(xiàn)出了其出色的編程能力,再難再復(fù)雜的代碼難題,他都能輕松解決,別人家小孩出去玩耍開Party,他就待在家里埋頭研究計算機軟硬件的底層原理。當(dāng)然,也不是完全就沒有娛樂,Monty很愛玩電子游戲(這放現(xiàn)在看不就是宅男嘛~),他發(fā)現(xiàn)ABC-80 上面的軟件少得可憐,于是就開始自己動手用匯編語言給ABC-80編寫移植游戲,再到后來,他把計算機升級成了ABC-800,開始自己寫一些基礎(chǔ)軟件了,比如文本處理器、磁盤備份器什么的。多年后,Monty在一次演講上說,那段時間對他來說是美好的回憶,因為你想使用計算機,必須先得從底層學(xué)習(xí)理解硬件和軟件的各種知識,現(xiàn)代程序員可能就很難有這樣的機會了。(看來能夠理解計算機底層原理也是寫好代碼的必要條件之一吧~)
1981年,Monty被赫爾辛基理工大學(xué)(現(xiàn)名:阿爾托大學(xué)理工學(xué)院)錄取,不過由于對當(dāng)時學(xué)校計算機的教育理念不認(rèn)同,他選擇了輟學(xué)(也別意外,那個時候,Bill Gates也剛從哈佛退學(xué)沒多久),同年,他前往了荷蘭的一家叫做 Tapio Laakso Oy的公司當(dāng)程序員,那段時間,他開始學(xué)習(xí)理解了數(shù)據(jù)庫開發(fā)的相關(guān)技術(shù)。1982年,Monty因為去瑞典買內(nèi)存條結(jié)識了開電腦店的Allan Larsson,兩人經(jīng)常聯(lián)絡(luò),很快便成了好朋友。1985年,Monty和Allan一起成立了TCX DataKonsult Inc,他把電腦又升級成了Sun SPRAC,在這期間,Monty為客戶寫了一款數(shù)據(jù)庫程序Unireg,賣的很好,可以說是MySQL的原始雛形。同時,他也結(jié)交到了另外一位好友David Axmark,David是一名出色的技術(shù)開發(fā)人員,也是自由軟件的愛好者。
90年代中后期,互聯(lián)網(wǎng)發(fā)展迅猛,Web網(wǎng)站開始如雨后春筍般不斷涌現(xiàn),當(dāng)時的Unireg不支持SQL接口,沒法兒和Web應(yīng)用有效集成,但是已經(jīng)有很多客戶找到公司希望能夠讓Unireg支持Web應(yīng)用。Monty在研究后,一開始選擇了當(dāng)時開源的miniSQL(簡稱mSQL),他聯(lián)系到了mSQL的作者David?Hughes,希望能夠給 Unireg 做索引上的兼容,不過后來由于性能和作者的意向,這個方案被否定了。
靠天靠地不如靠自己,Monty決定自己寫一個支持SQL和索引的數(shù)據(jù)庫,于是乎,1995年1月,MySQL正式問世,不過并沒有立即開源,而是先在內(nèi)部完善迭代,之所以起名叫MySQL,據(jù)說是因為Monty有個女兒叫My Widenius。后來在好友 David 的建議下,1996年,MySQL 1.0正式開源了,第一版發(fā)布在SUN系列平臺上。正巧當(dāng)時趕上做Web網(wǎng)站的大浪潮,很多網(wǎng)站都需要一個數(shù)據(jù)庫,而MySQL作為一款開源數(shù)據(jù)庫,很快便受到了程序員們的追捧,隨后便和Apache、Linux和PHP等開源軟件和語言工具構(gòu)成了風(fēng)靡一時的LAMP網(wǎng)站搭建組合。
1995年,Monty、Allan和David三人順勢成立了瑞典MySQL AB公司。2000 年,MySQL AB與Sleepycat合作,開發(fā)出了Berkeley DB引擎(簡稱BDB引擎),從此MySQL正式支持事務(wù)處理。
迅速發(fā)展的MySQL引起了一些知名企業(yè)的注意,有公司找到Monty,表示要以 5000 萬美金收購MySQL,不過他們當(dāng)時并不想就此出手,因為他們相信MySQL還有更大的發(fā)展空間。但是,隨著MySQL越來越火,公司的人也越來越多,客戶量和需求量都在水漲船高,同時,其他諸如PostgreSQL的開源數(shù)據(jù)庫也紛至沓來,MySQL面臨著嚴(yán)峻的市場競爭環(huán)境,確實到了需要引入外部投資的階段了。
2001 年,MySQL AB招聘到了具有豐富銷售和市場營銷經(jīng)驗的M?rten Mickos 作為公司CEO,專門負(fù)責(zé)內(nèi)外管理和對接投資。這一年里,MySQL AB從Scandinavian獲得了A輪400萬歐元的融資,又和InnoBase公司達(dá)成合作,正式將其開發(fā)的事務(wù)存儲引擎InnoDB集成進(jìn)MySQL。隨后,MySQL的下載量開始一路飆升,到2003年,已經(jīng)有了400萬活躍安裝量,幾乎每天都有3萬多的下載,同年,MySQL又獲得了Benchmark Capital領(lǐng)投的B輪 1950 萬美元融資。
2004-2005年,不斷壯大的MySQL開始考慮進(jìn)入更多的企業(yè)級市場,而且不再滿足單一的 OEM 雙重授權(quán)的盈利模式,因為那種通常是一次性付費,沒有持續(xù)性,所以就開始推出了諸如MySQL Network等等新的訂閱服務(wù),采取年費制。這個動作引起了一些企業(yè)級數(shù)據(jù)庫產(chǎn)商的高度重視,2005年,Oracle宣布收購InnoDB的母公司InnoBase;2006年,Oracle宣布收購Berkeley DB的母公司Sleepycat。(這倆前面說了,都是MySQL上面非常火的第三方存儲引擎)
2008 年 1 月,MySQL AB被SUN公司以10億美金收購,為啥Monty愿意賣給SUN,因為SUN公司自己也做開源軟件,開源商業(yè)化這套玩得挺溜的,在開源圈子里名聲也不錯(當(dāng)然,最重要的是,錢給的也很滿意),正如MySQL當(dāng)年第一版是在SUN平臺上發(fā)布一樣,現(xiàn)在又被SUN收購了,仿佛宿命一般冥冥注定。收購后,Monty在2009年2月離開SUN開創(chuàng)了自己的公司Monty Program AB。
不過,那誰動作很快啊,2009年4月,Oracle就以74億美金收購了SUN公司(畢竟前幾年就在挖墻角了),自此,MySQL正式進(jìn)入了Oracle的時代。
2009年12月,為了保持MySQL的開源使用不受影響(因為Oracle收購SUN公司后把他們原來的開源產(chǎn)品OpenSolaris給閉源了),Monty決定創(chuàng)建MariaDB作為分支對抗,并將Monty Program AB接著與SkySQL合并,公司改名為MariaDB Corporation。同時為了避免MariaDB走重復(fù)的道路,他將MariaDB的版權(quán)授予了MariaDB基金會,這是一個NPO(非營利性組織),依靠捐贈運營,以保證MariaDB永遠(yuǎn)開源,而不會因為MariaDB Corporation的興衰或者被收購而導(dǎo)致MariaDB的版權(quán)被收購或流失。MariaDB Corporation則是通過售賣MariaDB/MySQL的服務(wù)來賺錢,為MariaDB基金會提供MariaDB的持續(xù)開發(fā)資源。這種基金會與公司雙軌并行的模式,的確厲害,也影響了后面一批開源商業(yè)化的公司。
時至今日,MariaDB已經(jīng)走到了世界開源數(shù)據(jù)庫的前列,不斷追趕甚至要超越MySQL的地位,而這兩款強大的數(shù)據(jù)庫背后,都離不開一個男人,那就是Monty。
當(dāng)我們和Monty聊天時,他就表示,也感謝有了SUN那10億美金,讓他可以吸收大部分在MySQL AB原廠的優(yōu)秀數(shù)據(jù)庫開發(fā)工程師,這讓MariaDB的研發(fā)人員具備更強的開發(fā)能力并且確保對MySQL源碼有更好的理解。

?MariaDB?的開源與商業(yè)
在了解過Monty的歷史后,讓我們回到這場會面本身。前面說了,我們也是基于MySQL內(nèi)核研發(fā)分支版本的團(tuán)隊,不過分支不是主要目的,我們是要自研一款能夠讓MySQL支持HTAP的存儲引擎Tianmu,當(dāng)然,不可否認(rèn)的是,我們需要商業(yè)化,我想,數(shù)據(jù)庫作為基礎(chǔ)軟件,如果商業(yè)化不成功,還是很難存活下去的,無論是不是開源的。所以還是想聽一聽Monty來講講MariaDB的商業(yè)模式。
StoneDB 團(tuán)隊:MariaDB是基于MySQL做分支版本的,那么怎么做商業(yè)/企業(yè)版的?會不會受到Oracle的限制,或者說要和Oracle簽訂什么付費的授權(quán)協(xié)議?
Monty:MariaDB?Server是開源的,而且協(xié)議是 GPL-2.0,目前是有訂閱制,而不是靠賣License,所以不用付給Oracle什么版權(quán)費用。當(dāng)然,MariaDB可以提供SaaS服務(wù)版本的云數(shù)據(jù)庫(應(yīng)該說的 SkySQL),這個云數(shù)據(jù)庫不是開源的,也不違反開源協(xié)議。
可以看到,在MariaDB Foundation的官網(wǎng)上確實可以下載MariaDB?Server的開源代碼。

而在MariaDB Corporation的官網(wǎng)上,我們可以看到有這么幾個產(chǎn)品選項,分別是MariaDB Community、MariaDB Enterprise、Cloud、Repo Setup、Connectors和Tools。



????
這里就給大家看一下Community、Enterprise和Cloud吧,列了一個表:

BSL雖然不是開源協(xié)議,但是使用BSL協(xié)議的軟件再發(fā)布的最多4年后(也可以是更短的時間),就必須遵循GPL-2.0(或者GPL更高的版本以及和GPL-2.0兼容的版本)發(fā)布了。也就是說,使用BSL協(xié)議的軟件,最終一定會變成開源軟件,當(dāng)然,如果是非生產(chǎn)環(huán)境使用BSL協(xié)議的軟件,就不受到這個限制。
目前,MariaDB?Corporation旗下deMariaDB?MaxScale、MariaDB ColumnStore Cluster Management API (CMAPI)等產(chǎn)品都在使用BSL協(xié)議。
毫無疑問,在經(jīng)歷MySQL的創(chuàng)業(yè)經(jīng)歷后,MariaDB的商業(yè)設(shè)計更加成熟了,除了上面開創(chuàng)的BSL協(xié)議,MariaDB在企業(yè)服務(wù)器端的Enterprise和在云服務(wù)器上的SkySQL也給其帶來了諸多營收。根據(jù)MariaDB與Angel Pond合并時提交的SEC材料,在2021財年,SkySQL和Enterprise分別有250%和46%的ARR增長,NDR超過120%,預(yù)測在2022年9月結(jié)束時,本財政年度的收入將為4740萬美元。值得一提的是,MariaDB?Enterprise中包含了一個Xpand分布式數(shù)據(jù)庫版本,這個Xpand也是Monty與我們溝通時重點介紹的,它是一個HTAP分布式數(shù)據(jù)庫——2018年MariaDB公司收購了MammothDB和分布式存儲引擎ClustrixDB,這兩家公司的技術(shù)是Xpand的基礎(chǔ)來源。
當(dāng)我們問到,Xpand未來會不會考慮開源時,Monty回復(fù)說:“Xpand是我們收購來的,花了很多錢,如果貿(mào)然開源,我們可能會虧得很慘,不過我會考慮,當(dāng)Xpand的營收能力到達(dá)一定程度時,比如說大家訂閱的足夠多,開源也沒什么。實際上,你現(xiàn)在可以試試MariaDB?ColumnStore,這個存儲引擎也可以做HTAP,代碼是開放的?!?/strong>

????????HTAP 是未來數(shù)據(jù)庫的一環(huán)
Xpand也是做HTAP的,而且是分布式的,這個引起了我們的注意,當(dāng)然,筆者當(dāng)時還沒怎么研究過呢,其他同事倒是很早就知道了,然后就是技術(shù)交流時間了。
StoneDB團(tuán)隊:“我們正在基于MySQL做一款HTAP數(shù)據(jù)庫,并且自研了一個列式存儲引擎,想問問您是怎么看待HTAP數(shù)據(jù)庫的?”
Monty:“好吧,為什么不基于MariaDB做呢?MariaDB支持很多存儲引擎,MySQL的引擎也都支持,而且MariaDB現(xiàn)在也支持HTAP了,你們完全可以來給MariaDB做,我想這正是開源的意義所在~”
StoneDB團(tuán)隊:“哈哈,我們會考慮的~”
Monty:“你是說你們正在自研一個列式存儲引擎?”
StoneDB團(tuán)隊:“是的”
Monty:“單只有一個列式存儲引擎可不能稱之為HTAP哦~”
StoneDB團(tuán)隊:“當(dāng)然,我們知道~”
Monty:“你們的數(shù)據(jù)庫是一份數(shù)據(jù)庫么? 是Shared Everything么?”
StoneDB團(tuán)隊:“是的,我們是一份數(shù)據(jù),Shared Everything,是單系統(tǒng)雙拷貝。”
提這個單系統(tǒng)雙拷貝,其實是要表達(dá)我們是遵循One size fits all的設(shè)計思想,Monty可能也明白這個思想,他對此回應(yīng)道:“我不覺得現(xiàn)代企業(yè)里只需要一個數(shù)據(jù)庫就能解決所有問題,現(xiàn)在很多創(chuàng)業(yè)公司說只靠一個數(shù)據(jù)庫就夠了,我覺得不現(xiàn)實,有點兒吹牛吹到天上去~(好吧,說這句話時,Monty把手抬到了天上)”
那么,Monty覺得未來的企業(yè),究竟需要哪些數(shù)據(jù)庫呢?而HTAP又是適合什么樣的場景呢?為了解釋清楚這些問題,Monty給我們現(xiàn)場人員在小白板上畫了三種數(shù)據(jù)庫架構(gòu)。

如圖所示,Monty認(rèn)為,未來,一個大型企業(yè)可能至少需要三種數(shù)據(jù)庫來解決數(shù)據(jù)問題:第一種是單機部署的數(shù)據(jù)庫,比如InnoDB,適合1TB以下的數(shù)據(jù)量場景。第二種是Share Everything的HTAP架構(gòu),比如他們的Xpand和我們要做的StoneDB,適合1TB-10TB的數(shù)據(jù)量。第三種是Share Nothing的分布式架構(gòu),可以適合10TB以上的數(shù)據(jù)量。

我想,Monty的分析還是有一定前瞻性的,就看現(xiàn)在無論是Oracle MySQL的HeatWave,還是MariaDB的Xpand,都是在做HTAP,只不過,他們兩家都沒開源,StoneDB走上這條道路勢必會很有挑戰(zhàn)。當(dāng)然,最近我們也把關(guān)注點放在了Monty所說的HTAP適合中小數(shù)據(jù)量場景的觀點上,這句話和Gartner在2021年提出的“From big data to small and wide data”數(shù)據(jù)分析趨勢不謀而合,對此,我們也在嘗試用更新的視角去看待要做的事情——Serving over TP(SoTP)或許才是一條更加垂直的賽道。(后面我們會發(fā)文章單獨來講一講什么是Serving over TP)
然后,Monty就著重給我們介紹了一下Xpand的架構(gòu),給我們講了講Xpand的實現(xiàn)思路,并回答了我們的一些問題。


這個Xpand還是蠻有意思的,雖然沒開源,不過文檔挺友好,感興趣的讀者可以研究一下。

寫代碼,不止是工作
我們和Monty還聊了其他的問題,比如聽說MariaDB要在中國組建本土化團(tuán)隊,問問大概在什么時候,Monty回復(fù)說,盡管他很希望快點兒組建,不過他的中國合作伙伴告訴他,別急,別急。(是的,畢竟,別急,是一種人生態(tài)度)就這樣,我們也差不多結(jié)束了上午的自由交流。
下午就是一些嘉賓的分享了,在分享的過程中,Monty會和演講者互動,并且當(dāng)場還帶著筆記本電腦寫代碼與現(xiàn)場的開發(fā)者交流,真令人佩服,在中國,60歲還奮斗在一線的程序員,應(yīng)該蠻少的。即便是在芬蘭,年輕的創(chuàng)業(yè)公司里也是年輕人居多,不過,Monty倒是很自豪的說,MariaDB公司里有很多超過40歲的“大齡”程序員,這讓他們的每一行代碼都是經(jīng)過深思熟慮才寫上去的,總的來說,還是很穩(wěn)健的。而且,MariaDB公司的人員實際上并不多,如Monty經(jīng)常講的,他們是開源公司,是“Virtual company”,遠(yuǎn)程協(xié)作,這讓他們更加容易找到優(yōu)秀的工程師(原話是:“Virtual Company” made it easy to find good people)。
我印象很深刻的是Monty在結(jié)尾時分享了他這幾年在做的事情,如下圖所示。

這讓我真正地感受到了什么叫編程行業(yè)里的老當(dāng)益壯,要知道,Monty現(xiàn)在還負(fù)責(zé)著大部分MariaDB的Code review工作。我相信,Monty寫代碼,絕對不是工作需求這么簡單,他是發(fā)自內(nèi)心的熱愛,就像做MySQL的最初五年他親自回復(fù)了30000多封開發(fā)者郵件那樣,到現(xiàn)在,他依然包含熱血和精力,投入到新的征程中。這種熱愛和信仰,或許才能支撐著一個開源項目的茁壯成長。


做艱難而有挑戰(zhàn)的事情
最后,我想聊一聊,StoneDB正在做的事情。StoneDB是一款基于MySQL內(nèi)核的開源HTAP數(shù)據(jù)庫,我們的2.0架構(gòu)已經(jīng)在Github上公開,有一些同學(xué)可能還是對我們的工作不夠了解,只是簡單地以為基于MySQL,就是套皮魔改那種,其實不是的,國內(nèi)基于MySQL或者PostgreSQL做的數(shù)據(jù)庫很多,我們也是其中一家,不過我們的核心投入點還是自主研發(fā)一款真正的一體化HTAP數(shù)據(jù)庫。目前我們要做的重頭戲就是打造列式存儲引擎Tianmu,一個和InnoDB、BDB類似的,能讓MySQL實現(xiàn)無縫切換,獲得HTAP能力的引擎。這當(dāng)然很困難也具有一定挑戰(zhàn)性,不過我們相信,這會是一件在技術(shù)與商業(yè)上都有巨大價值的事情。如果你同樣對數(shù)據(jù)庫開發(fā)感興趣,歡迎加入我們,簡歷可以投遞至:hr@stoneatom.com。
歡迎您的加入~
*感謝ACMUG和杭州沃趣科技組織本次未來數(shù)據(jù)庫形態(tài)座談會。