幫助阿里省了幾百個(gè)億,它開啟了分布式數(shù)據(jù)庫(kù)新紀(jì)元
對(duì)中國(guó)的電商公司來(lái)說(shuō),1 萬(wàn)億元 GMV 意味著什么?
回到十年前,這個(gè)答案是:意味著他們要給 IOE(IBM、Oracle、EMC)三家美國(guó)公司 200 億元采購(gòu)費(fèi),而且是每年都要給。這筆錢甚至?xí)^他們自身當(dāng)年所能賺取的利潤(rùn)。
如果這件事真的發(fā)生,中國(guó)后來(lái)諸多巨無(wú)霸一樣的互聯(lián)網(wǎng)公司都會(huì)成為美國(guó)公司的打工人。
但是十年過去,現(xiàn)實(shí)并非如此,這一切都要從一位叫陽(yáng)振坤的科學(xué)家說(shuō)起。
很多年前,他曾追隨老師王選院士打造激光照排。
現(xiàn)在他又創(chuàng)造了世界上第一個(gè)真正意義上的分布式數(shù)據(jù)庫(kù) OceanBase。
OceanBase 創(chuàng)始人首席科學(xué)家:陽(yáng)振坤(花名:正祥)
一、一波三折的內(nèi)部創(chuàng)業(yè)
事實(shí)上,OceanBase 從在阿里立項(xiàng)之日起,就面臨著夭折的危機(jī)。
陽(yáng)振坤對(duì)雷峰網(wǎng)說(shuō)起這事,只是靦腆地笑著,操著稍帶湖北口音的老家話,言語(yǔ)不緊不慢。
但是,他很清楚這件事的重要性:“如果當(dāng)時(shí),我們沒有做 OceanBase,后來(lái)的其他公司要做數(shù)據(jù)庫(kù)就只剩一條路,就是‘穿馬甲’——把開源的東西拿過來(lái),改成自己的‘馬甲’,然后去做。”
在阿里之前的戰(zhàn)略會(huì)上,“去 IOE”這個(gè)戰(zhàn)略方向曾經(jīng)得到阿里首席技術(shù)官王堅(jiān)博士的堅(jiān)持,前文 200 億元的說(shuō)法就是他算出來(lái)的。
阿里巴巴集團(tuán)技術(shù)委員會(huì)主席王堅(jiān)(花名:博士)
阿里前 CEO 衛(wèi)哲為雷峰網(wǎng)回憶過當(dāng)日?qǐng)鼍啊?/p>
王堅(jiān)為增加說(shuō)服力,甚至拉上了已經(jīng)退休的 CTO 吳炯,讓他從技術(shù)的角度談了亞馬遜和谷歌的情況,作為整體鋪墊;然后自己再?gòu)呢?cái)務(wù)的精算,把 1 萬(wàn)億元 GMV 折算成數(shù)據(jù)量,再折算成需要的 IBM 小型機(jī)數(shù)量、Oracle 數(shù)據(jù)庫(kù)量、EMC 存儲(chǔ)數(shù)量,最后換算成具體價(jià)格相加。
王堅(jiān)算完之后,阿里執(zhí)委會(huì)的所有人都服氣了,算是從高管層面解決了這個(gè)問題。(當(dāng)日現(xiàn)場(chǎng)討論非常精彩,細(xì)節(jié)請(qǐng)看《沸騰十五年》修訂版。)
但是,光說(shuō)服上面的人是不夠的,下面的執(zhí)行者都是 Oracle、EMC 工程師,“去 IOE”其實(shí)就是砸他們的飯碗,他們?cè)趺磿?huì)支持呢。
在陽(yáng)振坤開啟 OceanBase 項(xiàng)目之時(shí),他聽到的負(fù)面的、否定的聲音,遠(yuǎn)多于支持的聲音。
作為創(chuàng)新者,逆風(fēng)而行是必須要承擔(dān)的代價(jià),如果不能到達(dá)彼岸,就會(huì)摔在地上,聽到鋪天蓋地的訕笑。
兩年,這是阿里給陽(yáng)振坤的期限,也是阿里高管們能為他頂住壓力的時(shí)間。兩年內(nèi)做出成績(jī),公司全力支持;做不出成績(jī),就只能卷鋪蓋走人。
背著這樣的壓力,陽(yáng)振坤帶著 OceanBase 團(tuán)隊(duì)出發(fā)了。
陽(yáng)振坤想做的體系是原生分布式數(shù)據(jù)庫(kù)。如果成功,OceanBase 將有機(jī)會(huì)幫助企業(yè)構(gòu)建新一代的核心系統(tǒng)。
在 OceanBase 之前,以 Oracle 為主導(dǎo)的巨頭們使用的都是“集中式數(shù)據(jù)庫(kù)”。如果將數(shù)據(jù)庫(kù)的處理能力和容量類比為“馬拉車”,集中式數(shù)據(jù)庫(kù)的解決方案是把“馬”做大,讓單機(jī)實(shí)力更加強(qiáng)勁,帶動(dòng)數(shù)據(jù)的存儲(chǔ)和處理。
但集中式數(shù)據(jù)庫(kù)也存在問題。一方面,誕生于數(shù)十年前的集中式數(shù)據(jù)庫(kù)太老,很難應(yīng)對(duì)指數(shù)級(jí)增長(zhǎng)的容量需求。當(dāng)“馬”的增長(zhǎng)很難跟上“車”的速度,那么系統(tǒng)的崩潰就只是時(shí)間問題。企業(yè)仍然可以通過加大金錢投入,來(lái)增加數(shù)據(jù)庫(kù)的能力,但成本卻也將大大提升。
另一方面,集中式的數(shù)據(jù)庫(kù)應(yīng)對(duì)風(fēng)險(xiǎn)的防控能力很差。如果集中式數(shù)據(jù)庫(kù)中的一臺(tái)機(jī)器出現(xiàn)故障,那么整個(gè)系統(tǒng)都可能面臨崩潰的風(fēng)險(xiǎn),牽一發(fā)而動(dòng)全身。
既然獨(dú)木難支,為何不“眾人拾柴”?本就對(duì)分布式頗有研究,陽(yáng)振坤想到,可以動(dòng)用許多“小馬”,一起來(lái)拉動(dòng)這輛“大車”。
這就是原生分布式數(shù)據(jù)庫(kù) OceanBase 靈感的來(lái)源,而在 2010 年,世界上都沒有人提出過這種思路。陽(yáng)振坤振臂一呼,可以說(shuō)是“前無(wú)古人”。
相比傳統(tǒng)的集中式數(shù)據(jù)庫(kù),分布式數(shù)據(jù)庫(kù)可擴(kuò)展性更強(qiáng)。面對(duì)飛速增長(zhǎng)的需求,OceanBase 不依賴單機(jī),可以做到簡(jiǎn)單、便宜的擴(kuò)容。同時(shí),原先的小型機(jī)一臺(tái)也要幾十上百萬(wàn),在 OceanBase 分布式的構(gòu)想中,便宜的單機(jī)也可以拿來(lái)做服務(wù)器,從幾十萬(wàn)到幾萬(wàn),OceanBase 比 Oracle 便宜了不止一點(diǎn)半點(diǎn)。
分布式數(shù)據(jù)庫(kù)容災(zāi)性也更強(qiáng)。由于 OceanBase“不把雞蛋放在一個(gè)籃子里”,當(dāng)體系中某個(gè)單機(jī)出現(xiàn)問題時(shí),數(shù)據(jù)庫(kù)仍然能夠穩(wěn)定運(yùn)行?!叭匚逯行模侨龣C(jī)房”,螞蟻的體系如此設(shè)計(jì),只要大多數(shù)設(shè)備不同時(shí)宕機(jī),系統(tǒng)的運(yùn)行就不會(huì)受到影響。
HTAP(混合事務(wù)分析處理),這是 OceanBase 的又一大利器。
數(shù)據(jù)庫(kù)的功能大致可以分為兩類——OLTP 和 OLAP。
OLTP 指“在線事務(wù)和交易處理”,也就是“記賬”。買家的每一筆支出、商家的每一單銷售,在平臺(tái)上產(chǎn)生的每一條數(shù)據(jù)都要分門別類記載清楚。
OLAP 指“在線分析處理”,也就是“數(shù)據(jù)分析”。分析用戶偏好、分析運(yùn)營(yíng)數(shù)據(jù)等能力都位列其中。
數(shù)據(jù)庫(kù)的用戶既有“記賬”的需求,又有“分析”的需求,但這兩種需求卻通常需要以兩個(gè)不同的數(shù)據(jù)庫(kù)系統(tǒng)來(lái)分別滿足,市場(chǎng)上少有可靠的、一站式的解決方案。操作兩種系統(tǒng),成本和難度自然更高。
如同左腦和右腦,“記賬”和“分析”是兩種不同的數(shù)據(jù)處理方式。“記賬”需要實(shí)時(shí)與系統(tǒng)交互,數(shù)據(jù)要“逐行”存儲(chǔ);而分析則需要縱向?qū)Ρ龋瑪?shù)據(jù)要“逐列”存儲(chǔ)。
OceanBase 做的,就是把“左腦”和“右腦”合并了起來(lái),形成了一站式的解決方案。方便,而且便宜。說(shuō)起來(lái)簡(jiǎn)單,將“行存”和“列存”做到一起并非易事,而分布式的架構(gòu)設(shè)計(jì)又為 HTAP 模式提供了技術(shù)上的可行之處。
體系設(shè)計(jì)雖好,但實(shí)話說(shuō),2 年真的不太夠用。
OceanBase 在頭兩年的成果難說(shuō)讓人滿意,陽(yáng)振坤自然深知這一點(diǎn)。在 2012 年底的時(shí)候,功能還有許多沒能實(shí)現(xiàn),團(tuán)隊(duì)也不夠完備。在產(chǎn)品的第一關(guān),OceanBase 就輸了。
缺乏業(yè)務(wù)也是 OceanBase 遇到的又一個(gè)難題。阿里內(nèi)部的各業(yè)務(wù)群也當(dāng)然并非“一心同體”,業(yè)務(wù)老大們要背自己的業(yè)務(wù)指標(biāo),總部做決定也要考慮到他們的利益,數(shù)據(jù)庫(kù)是底層系統(tǒng),不能強(qiáng)制他們“說(shuō)換就換”。在部門墻之下,OceanBase 初來(lái)乍到,還沒有與各業(yè)務(wù)部門建立起信任感,只能自下而上地“推銷”自己的產(chǎn)品,自然事倍功半。
眼見 2 年之期將至,OceanBase 面臨著隨時(shí)可能被公司關(guān)停的狀況。
內(nèi)外交困下,陽(yáng)振坤還是獲得了第二次機(jī)會(huì)。
傳說(shuō)中,還是陽(yáng)振坤特意飛去杭州阿里總部,找到了他在微軟的老同事王堅(jiān)。王堅(jiān)時(shí)任阿里 CTO,當(dāng)時(shí)也是他在阿里云最難的時(shí)候。他深知陽(yáng)振坤在阿里從事科研的難度,也能看到 OceanBase 在未來(lái)數(shù)據(jù)庫(kù)競(jìng)爭(zhēng)中的潛力,于是在和相關(guān)領(lǐng)導(dǎo)協(xié)商后,發(fā)下了一紙調(diào)令。
不久后,OceanBase 就被調(diào)整到了支付寶體系下。
但問及這段時(shí)間,陽(yáng)振坤心中第一個(gè)想到的是現(xiàn)任阿里的 CTO 程立,花名魯肅。在陽(yáng)振坤和團(tuán)隊(duì)來(lái)到支付寶后,作為阿里技術(shù)人心中“神一樣的人物”,魯肅也看好原生分布式數(shù)據(jù)庫(kù)的前景,于是幫助陽(yáng)振坤在支付寶站穩(wěn)了腳跟,這也為 OceanBase 在日后的崛起埋下了伏筆。
阿里巴巴 CTO 程立(花名:魯肅)
二、2014,逆襲的號(hào)角吹響
2014 年,在支付寶,陽(yáng)振坤和 OceanBase 終于等到了千載難逢的機(jī)會(huì)。
當(dāng)年,雙十一的交易量預(yù)期又將創(chuàng)下紀(jì)錄。面對(duì)又一次大考,支付寶內(nèi)部的數(shù)據(jù)庫(kù)工程師如臨大敵,又如火如荼地開始了數(shù)據(jù)庫(kù)跑量的壓力測(cè)試。
大敵當(dāng)前,陽(yáng)振坤和他的團(tuán)隊(duì)卻還在坐冷板凳。多次主動(dòng)請(qǐng)纓,支付寶卻僅讓 OceanBase 承擔(dān)1% 的業(yè)務(wù)流水。又是一年的失望,屬于 OceanBase 的翻盤點(diǎn)似乎還遙不可及。
前文也提到了,OceanBase 的功能和結(jié)構(gòu)都比 Oracle 要強(qiáng)勁很多,為什么支付寶沒有全面推廣 OceanBase 應(yīng)用呢?
IOE 體系就是數(shù)據(jù)庫(kù)界的 PUA。你明知它貴,你明知它不好用,你明知有更便宜、便捷的解決方案,但你愿意相信它。在 ToB 生意里,信任最為難能可貴。
“你如何保證 OceanBase 不弄丟支付寶用戶的一分錢?”魯肅的這句話也曾問懵過陽(yáng)振坤。
IOE 雖然種種不好,但 IOE 勝在穩(wěn)健。許多技術(shù)負(fù)責(zé)人不愿用新的技術(shù)和產(chǎn)品,用老產(chǎn)品出問題可以怪產(chǎn)品,用新產(chǎn)品出問題就只能怪自己了。
歸根結(jié)底,沒信任就沒有使用,沒有使用也就沒有信任。OceanBase 就在這樣一個(gè)死循環(huán)里苦苦掙扎。
就在 OceanBase 的未來(lái)仍不明確的時(shí)候,一個(gè)“壞”消息傳來(lái):Oracle 崩了!
原來(lái),在跑量測(cè)試時(shí),一直在螞蟻內(nèi)處于主導(dǎo)地位的 Oracle 竟然屢次崩潰,可承壓能力僅有預(yù)期的 90%。
已經(jīng)顧不上 OceanBase 是否可靠,在這時(shí)行不行都得上。技術(shù)團(tuán)隊(duì)不得不做出了一個(gè)艱難的決定:緊急啟用 OceanBase。
雙十一的流量逐年都在增加,集中式的 Oracle 總會(huì)有一天跌落神壇。陽(yáng)振坤早就在等著這一天,OceanBase 逆襲的機(jī)會(huì)來(lái)了!
于是 OceanBase 臨危受命,接下了支付寶 2014 年雙十一 10% 的流量。
這是機(jī)遇,可又何嘗不是重于泰山的壓力?陽(yáng)振坤深知,他和他的團(tuán)隊(duì)但凡出了一點(diǎn)差池,那么他和 OceanBase 在公司里就將永遠(yuǎn)失去信任,再?zèng)]人敢用。哪怕后面能夠給業(yè)務(wù)帶來(lái)好處,也無(wú)濟(jì)于事。
這一仗,OceanBase 只許成功,不能失敗。
雙十一前夜,OceanBase 全員枕戈待旦。螞蟻集團(tuán)的 CEO 彭蕾(花名 Lucy)先前在阿里內(nèi)部任首席人力官,知人善用。她連夜來(lái)到了 OceanBase 的辦公室,既是動(dòng)員,也是督戰(zhàn)。
變動(dòng)如此巨大,難說(shuō)彭蕾的心里沒有忐忑。她問陽(yáng)振坤有沒有信心,陽(yáng)恰好站在窗邊。他推開窗子,杭州 11 月已經(jīng)開始轉(zhuǎn)冷,辦公樓下路人行色匆匆。陽(yáng)振坤知道,他和 OceanBase 的前途全部取決于此,他說(shuō):
“出了問題,我們準(zhǔn)備從這跳下去?!?/strong>
7 年后,OceanBase 早已成為了國(guó)產(chǎn)數(shù)據(jù)庫(kù)中的“頭馬”。談及此事,陽(yáng)振坤只說(shuō)是個(gè)玩笑。而當(dāng)年的壓力、忐忑和“不成功便成仁”的決絕,都如同過眼云煙,成為了多年之后的笑談。
三、開源——OceanBase 的夢(mèng)想、挫折和救贖
開源是許多程序猿的浪漫。
盡管在外界看來(lái)十分令人不解——把自己辛苦寫的代碼免費(fèi)向社會(huì)公開,但 OceanBase 還是堅(jiān)決地選擇了開源。
拋開技術(shù)人的理想主義,OceanBase 之所以選擇開源,有如下這 3 大原因:
一方面,數(shù)據(jù)庫(kù)需要跑量。在足夠的測(cè)試與反饋的過程中,數(shù)據(jù)庫(kù)才能發(fā)現(xiàn)運(yùn)行問題,進(jìn)行有機(jī)的調(diào)整。
OceanBase 作為一個(gè)新概念的數(shù)據(jù)庫(kù)產(chǎn)品,自然急需實(shí)際的測(cè)試和驗(yàn)證。開源,就是給了 OceanBase 不斷“打怪升級(jí)”的機(jī)會(huì)。
另一方面,剛剛提到過,信任對(duì)于數(shù)據(jù)庫(kù)產(chǎn)品來(lái)說(shuō)是重要的壁壘,也是合作的基石。用戶要把數(shù)據(jù)委托給數(shù)據(jù)庫(kù),幾乎是要把自己重要的“家產(chǎn)”托付出去。
OceanBase 把自己的代碼和秘密全部公開,也是告訴用戶自己值得信任?;谶@種信任,OceanBase 也期望能形成自己的開源社區(qū),擴(kuò)大用戶群。
有人用,就有信任;有了信任,就有更多人用,也就自然能產(chǎn)生更多收益。
陽(yáng)振坤有足夠的信心,即使 OceanBase 開源供公眾使用,他人也很難弄懂其中的奧秘和機(jī)理。前文也提到過,數(shù)據(jù)庫(kù)本就是一項(xiàng)極度復(fù)雜的工程。如同芯片一樣,即使能夠拿到成品,但難以對(duì)其進(jìn)行反向工程。即使開源,護(hù)城河也在。
著名的數(shù)據(jù)庫(kù) MySQL 開源 20 余年,核心技術(shù)就仍然掌握在開發(fā)團(tuán)隊(duì)的手中。這種技術(shù)壁壘映射到開源上,稱得上是一種數(shù)據(jù)庫(kù)的核心能力。
于是在 2011 年,當(dāng)時(shí)還屬于淘寶體系的 OceanBase 第一次開源,而這次開源的經(jīng)歷難稱圓滿。
這次開源對(duì)于 OceanBase 來(lái)說(shuō),頗有“趕鴨子上架”的意味。OceanBase 在 2014 年前還是以單點(diǎn)寫入的模式為主,兩年后才正式完成了 1.0 版本。
而 2011 年為了迎合淘寶系統(tǒng)全面開源的潮流,也是技術(shù)人的一腔熱情,OceanBase 匆匆宣布開源,而實(shí)際公開的只是一個(gè)“半成品”。這個(gè)版本當(dāng)時(shí)還以單點(diǎn)寫入為主,還完全不是團(tuán)隊(duì)理想中的樣子。
而通過這次開源,另外一個(gè)問題也隨之映射出來(lái):OceanBase 的定位究竟是什么?究竟要做螞蟻業(yè)務(wù)的一個(gè)支持部門,還是一個(gè)通用化的工具?
做支持,OceanBase 需要更多面向公司內(nèi)部的需求。一些“量身定制”的需求,甚至可能超出常規(guī)數(shù)據(jù)庫(kù)的功能范圍。如果被這種需求牽著走,則很可能造成工期上的損耗,也容易把自己的路走窄。
陽(yáng)振坤和團(tuán)隊(duì)想做的,一直都是一個(gè)通用化的工具。但認(rèn)知上的鴻溝,讓首次開源的 OceanBase 無(wú)法獲得業(yè)務(wù)團(tuán)隊(duì)足夠的支持,開發(fā)團(tuán)隊(duì)則要把主要精力投入到產(chǎn)品 1.0 版本的開發(fā)中,很難分出人手去維護(hù)開源版本的持續(xù)更新。
難說(shuō)誰(shuí)對(duì)誰(shuí)錯(cuò),只是立場(chǎng)不同。
無(wú)人可用,首次開源的 OceanBase 終于不再更新,而這次嘗試也終于不了了之。
而在這之后,潛心投入開發(fā)的 OceanBase 團(tuán)隊(duì)終于見到了回報(bào)。
在支付寶內(nèi)部,OceanBase 逐漸全部接管了 Oracle 先前的“生意”。為了讓“去 Oracle”的進(jìn)程更加“絲滑”,OceanBase 力求讓這個(gè)過程可以“不改代碼”。
2015 年 3 月 15 日,陽(yáng)振坤在他的微博上自豪地宣布:“從上周五開始,淘寶/天貓/聚劃算在支付寶上的交易,100% 都在 OceanBase 上了。你可能沒有什么感覺。”
一年后,OceanBase 也終于全部接管賬務(wù)數(shù)據(jù)庫(kù)。在一次采訪中,陽(yáng)振坤表示:“這……是標(biāo)志著,OceanBase 真正地在金融系統(tǒng)里面站住了腳?!?/p>
取得了如此斐然成績(jī),在阿里內(nèi)部也是拿獎(jiǎng)拿到手軟,但陽(yáng)振坤和團(tuán)隊(duì)的志向卻不愿意在此止步。又過了一年,憑借著支付寶成功案例的光鮮背書,OceanBase 首次對(duì)外商用,第一個(gè)客戶就是南京銀行。
阿里的高層們也終于看到了 OceanBase 原生分布式數(shù)據(jù)庫(kù)的優(yōu)勢(shì),看到了既能做交易、也能做分析的 HTAP 模式顛覆行業(yè)的可能。他們正式同意 OceanBase 作為一個(gè)單獨(dú)的公司獨(dú)立運(yùn)營(yíng),這也是 OceanBase 發(fā)展一個(gè)重要的分水嶺。
2020 年 6 月 1 日,北京奧星貝斯科技有限公司正式成立。螞蟻集團(tuán)前金融科技產(chǎn)品技術(shù)總監(jiān)楊冰任 CEO,陽(yáng)振坤任首席科學(xué)家,與他一起進(jìn)入 OceanBase 創(chuàng)業(yè)至今的楊傳輝(花名:日照)任 CTO。
不久,“出走”剛剛 12 個(gè)月的 OceanBase 再一次選擇了開源。在進(jìn)行了數(shù)月工作文檔和代碼的梳理后,2021 年 6 月,OceanBase 再次向全網(wǎng)開源。
2021 年 6 月 1 日 OceanBase 正式開源
不同于遮遮掩掩式的“公關(guān)式開源”,OceanBase 這次放了狠招:他們一次公開了自己全部?jī)?nèi)核。他們把心沉下來(lái),只想如何用開源的方式去滿足客戶需求。遵循指示,一個(gè)初學(xué)者可以在 30 分鐘內(nèi)將 OceanBase 的數(shù)據(jù)庫(kù)完成裝配。
OceanBase 做的是用戶價(jià)值,這是他們開源的重要理念。
從最早先屈指可數(shù)的幾個(gè)客戶,到今天 400 多家全行業(yè)的客戶;大到支付寶、網(wǎng)商銀行,小到占總比 66% 的小型企業(yè),從螞蟻獨(dú)立出來(lái)的奧星貝斯仍然在幫助全社會(huì)的各行各業(yè)。
“讓天下沒有難做的生意”依然流淌在他們每個(gè)人的基因里。
結(jié)語(yǔ):
盡管已經(jīng)年近花甲,陽(yáng)振坤仍然沒有半點(diǎn)停滯的意思。在技術(shù)驅(qū)動(dòng)創(chuàng)新的路上,OceanBase 的目標(biāo)是做“無(wú)限擴(kuò)展、永遠(yuǎn)在線”,意在創(chuàng)造一個(gè)不被擴(kuò)展和故障所限制的數(shù)據(jù)庫(kù)系統(tǒng),而這項(xiàng)成果則可能永遠(yuǎn)地顛覆數(shù)據(jù)庫(kù),乃至互聯(lián)網(wǎng)行業(yè)。
做技術(shù)的人大多是簡(jiǎn)單的。陽(yáng)振坤和 OceanBase 十余年走來(lái),風(fēng)風(fēng)雨雨,終于至今。有時(shí)他總能想起自己的老師,兩院院士王選,當(dāng)代中國(guó)的“畢昇”,顛覆了中國(guó)印刷業(yè)的科學(xué)家。
33 年前,陽(yáng)振坤成為了王選的弟子。
那年,陽(yáng)振坤 22 歲,青春寫意;王選 52 歲,也正是當(dāng)打之年。而今天,王選早已溘然長(zhǎng)逝,陽(yáng)振坤也把自己三十余年的青春獻(xiàn)給了科研。
當(dāng)年,我憧憬你;今天,我仍在以你為燈塔前行。
陽(yáng)振坤知道,和自己的恩師一樣,自己的這一生都將要獻(xiàn)給中國(guó)的科研事業(yè),但他從沒有半分悔意,也沒有半分退意。
2022 年 1 月,在由 CSDN 主辦、OceanBase 承辦的 DC 2021 分布式數(shù)據(jù)庫(kù)開發(fā)者大會(huì)后,雷峰網(wǎng)采訪了陽(yáng)振坤,并與他進(jìn)行了一番深談。以下是我們整理的訪談實(shí)錄:
數(shù)據(jù)庫(kù)技術(shù)的發(fā)展歷程
雷峰網(wǎng):我們知道技術(shù)在歷史中,發(fā)展都存在著不同的階段。數(shù)據(jù)庫(kù)也應(yīng)該不例外,可以根據(jù)技術(shù)的突破劃分為幾個(gè)階段,您可以為我們回顧一下嗎?
陽(yáng)振坤:在最開始,它其實(shí)是跟賬有關(guān)系。最早的數(shù)據(jù)庫(kù)叫層次數(shù)據(jù)庫(kù),功能比較簡(jiǎn)單。而也是因?yàn)槠涔δ鼙容^單一,大家有接觸大概幾年以后,就發(fā)明了一種網(wǎng)狀的數(shù)據(jù)庫(kù)。最大的代表其實(shí)就是 IBM 的這一套系統(tǒng)。
到了 60 年代末或者 70 年代的時(shí)候,關(guān)系模型橫空出世。曾經(jīng)兩個(gè)這個(gè)圖靈獎(jiǎng)的獲得者專門有一次是 ACM(國(guó)際計(jì)算機(jī)學(xué)會(huì))開大會(huì),兩派的人爭(zhēng)執(zhí)不下:一派的人說(shuō)這個(gè)未來(lái)一定是關(guān)系模型,因?yàn)殛P(guān)系模型有更強(qiáng)的表述能力。另一派說(shuō)關(guān)系模型不實(shí)用。結(jié)構(gòu)上的復(fù)雜性,會(huì)導(dǎo)致性能會(huì)很差。
此后關(guān)于這個(gè)問題一直沒有定論。所以,關(guān)系模型從 1970 年發(fā)表,一直到整個(gè) 70 年代,其實(shí)都沒有過產(chǎn)品。
到 70 年代末 80 年代初,關(guān)系型數(shù)據(jù)庫(kù)才開始產(chǎn)品化。此后這個(gè)模式就一直被沿用,直到差不多互聯(lián)網(wǎng)之前。集中式,本質(zhì)上是個(gè)單機(jī)的系統(tǒng)。一個(gè)很關(guān)鍵原因還是因?yàn)樗珡?fù)雜。
雷峰網(wǎng):為了解決這個(gè)難題,科學(xué)家做出了哪些努力?
陽(yáng)振坤:對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō),它有一個(gè)特殊之處:人們很難用一個(gè)自然的語(yǔ)言,來(lái)操作數(shù)據(jù)庫(kù)。所以后來(lái),就有人開發(fā)出了一種數(shù)據(jù)庫(kù)專用的語(yǔ)言,叫 SQL(結(jié)構(gòu)化查詢語(yǔ)言)。
這個(gè) SQL 不是告訴數(shù)據(jù)庫(kù)干什么的,這個(gè)太難描述了;它告訴數(shù)據(jù)庫(kù)說(shuō)我要什么,你怎么干是你的事。
Oracle 算是最早的那批數(shù)據(jù)庫(kù),就是 Oracle 、DB2,SQL Server,還有像對(duì)后面是 PGSQL 跟 MySQL。在之后的 20 多年的時(shí)間里,都沒有如此體量的數(shù)據(jù)庫(kù)面世。數(shù)據(jù)庫(kù)到今天都是個(gè)非常大的挑戰(zhàn),也導(dǎo)致這么多年格局大致不變,一個(gè)新的數(shù)據(jù)庫(kù)的研發(fā)特別困難。
而互聯(lián)網(wǎng)時(shí)代,有許多很新的、完全不一樣的需求也隨之而來(lái)。那我們 OceanBase 今天才有這機(jī)會(huì)。
分庫(kù)分表不是分布式數(shù)據(jù)庫(kù)
雷峰網(wǎng):OceanBase 將自己定義為“原生”分布式數(shù)據(jù)庫(kù),這個(gè)“原生”要怎么理解?
陽(yáng)振坤:我會(huì)講一個(gè)很明確的觀點(diǎn):分庫(kù)分表不是分布式數(shù)據(jù)庫(kù)。我們認(rèn)為一個(gè)原生分布式數(shù)據(jù)庫(kù),它是一個(gè)單一的數(shù)據(jù)庫(kù),看起來(lái)像使用單臺(tái)機(jī)器的集中式數(shù)據(jù)庫(kù),能夠在一套數(shù)據(jù)庫(kù)里面又做交易又做分析。分庫(kù)分表的話,它其實(shí)還是說(shuō)在多個(gè)單機(jī)數(shù)據(jù)庫(kù)上面加了一個(gè)中間件。
但是這種方案它其實(shí)沒有辦法保證這多臺(tái)數(shù)據(jù)庫(kù)之間的一致性。舉個(gè)例子,第一個(gè)數(shù)據(jù)庫(kù)是我,第二個(gè)數(shù)據(jù)庫(kù)是你。我給你轉(zhuǎn)賬,有可能出現(xiàn)我給你轉(zhuǎn)出去了,但你沒有收到的情況。分庫(kù)分表式的數(shù)據(jù)庫(kù)有可能有這種情況,但我們的原生分布數(shù)據(jù)庫(kù)是沒有這種情況的。OceanBase 保證強(qiáng)一致的,是一個(gè)單一的數(shù)據(jù)庫(kù),既能處理交易,又能處理分析。
雷峰網(wǎng):OceanBase 在支付寶體系下已經(jīng)度過了許多個(gè)寒暑,應(yīng)用 OceanBase 的前后,支付寶產(chǎn)生了哪些變化?
陽(yáng)振坤:其實(shí)從 2014 年之后,公司就也看到了我們的業(yè)務(wù)價(jià)值,主要還是支付寶的數(shù)據(jù)庫(kù)體量太大了。就算你的硬件能做到盡量穩(wěn)定,它最終也會(huì)出問題。少數(shù)幾臺(tái)不要緊;你有幾百臺(tái),幾千臺(tái)的時(shí)候它一定會(huì)出問題。同時(shí)集中式數(shù)據(jù)庫(kù)維護(hù)和維修的代價(jià)很大,工作人員要到最早的網(wǎng)關(guān)去把信息撈出來(lái),來(lái)做對(duì)照。
那用了 OceanBase 之后,我們部署了三個(gè)副本。即使壞掉一臺(tái)機(jī)器,剩下的機(jī)器保證還有正確的數(shù)據(jù),就能夠自動(dòng)的恢復(fù)。以前只要主庫(kù)壞了,他們都得去做人工對(duì)賬。不管幾點(diǎn)壞的,工作人員都要在幾分鐘之內(nèi)起來(lái),否則系統(tǒng)里,用戶看的數(shù)據(jù)就全不對(duì)了。但 OceanBase 可以做到系統(tǒng)自動(dòng),這臺(tái)機(jī)器壞了,還有其他機(jī)器能工作,我們系統(tǒng)就可以繼續(xù)運(yùn)轉(zhuǎn)。所以這一個(gè)對(duì)業(yè)務(wù)來(lái)講,給到很大的幫助。
這樣的體系對(duì)工作人員的舒適度就提升很多,以前只要出問題,不管幾點(diǎn)都要來(lái)應(yīng)急?,F(xiàn)在的雙十一,工作人員已經(jīng)有時(shí)間坐下來(lái)喝一杯茶了。這就是我看到最大的變化。
走出中國(guó),做世界的數(shù)據(jù)庫(kù)
雷峰網(wǎng):在當(dāng)下,數(shù)據(jù)庫(kù)中國(guó)化的呼聲越來(lái)越高,咱們中國(guó)在整個(gè)國(guó)際的技術(shù)水平上來(lái)講,處于一個(gè)什么樣的位置?
陽(yáng)振坤:如果說(shuō)分布式數(shù)據(jù)庫(kù),我們應(yīng)該是整個(gè)國(guó)際上都是走在領(lǐng)先地位的。這個(gè)也跟我們本身是“一窮二白”有關(guān)系。我們?cè)瓉?lái)沒有集中式數(shù)據(jù)庫(kù)的多少基礎(chǔ),發(fā)展起來(lái)與其跟別人在原來(lái)的賽道去競(jìng)爭(zhēng),又有新的需求,我們還不如走到新賽道上。
反而是像美國(guó)現(xiàn)在它更多的精力是在集中式上面。我們對(duì)美國(guó)也算是一種“彎道超車”,或說(shuō)是“跨代競(jìng)爭(zhēng)”。主要的原因在于說(shuō)我們經(jīng)常講一個(gè)概念叫應(yīng)用驅(qū)動(dòng)技術(shù)創(chuàng)新。和中國(guó)比人多、比市場(chǎng)規(guī)模,美國(guó)人比得過嗎?對(duì)不對(duì)?它是這么去驅(qū)動(dòng)出來(lái)的。
雷峰網(wǎng):那以后將數(shù)據(jù)庫(kù) OceanBase 向國(guó)外輸出肯定也是有可能的。
陽(yáng)振坤:我覺得是必須的,我們干嘛把自己只圈在這一個(gè)市場(chǎng)里呢?無(wú)論是在成本還是在能力上,我們系統(tǒng)能做的一些事情是現(xiàn)在的數(shù)據(jù)庫(kù)系統(tǒng)它做不到的。
但是,我們自身產(chǎn)品的發(fā)展也有個(gè)過程。國(guó)內(nèi)現(xiàn)在有這么大的市場(chǎng),我們現(xiàn)在主要還在面向國(guó)內(nèi)市場(chǎng),吃透國(guó)內(nèi)市場(chǎng),同時(shí)完善 OceanBase。
雖然什么時(shí)候出海,我們還沒有具體可公布的規(guī)劃。但我相信,前景還是很光明的。
如何看待元宇宙和 Web3.0 的未來(lái)?
雷峰網(wǎng):對(duì)于元宇宙、WEB3.0 這樣的新興概念,您怎么看?
陽(yáng)振坤:我一大部分的時(shí)間,還是放在我們本身的產(chǎn)品和技術(shù)上。實(shí)話說(shuō),對(duì)元宇宙和 Web3.0 我真的不懂。
但要我說(shuō)的話,其實(shí)數(shù)據(jù)庫(kù)它本身就是個(gè)基礎(chǔ)設(shè)施,你可以把它用在元宇宙上,用在真實(shí)的宇宙空間上,用在生產(chǎn),用在娛樂,用在游戲,隨便用在哪兒上。
但元宇宙的大趨勢(shì)對(duì)我們可能是個(gè)利好。因?yàn)槲覀兪沁@方面的能力是比較強(qiáng)的,就像說(shuō)從雙十一一路走過來(lái)對(duì)吧?能夠給系統(tǒng)提供這么大的處理能力的數(shù)據(jù)庫(kù),我們應(yīng)該是第一個(gè)。
其實(shí)你不管元宇宙還是其他的一些趨勢(shì),數(shù)據(jù)總是以在往“大”的方向走,并發(fā)也在往“大”的方向走。元宇宙可能是說(shuō)其中的一個(gè)驅(qū)動(dòng)力稍微大一點(diǎn)的一個(gè)場(chǎng)景,他往分布式走這個(gè)趨勢(shì)我們覺得肯定是毫無(wú)疑問的。
談到 Web3.0,整個(gè)數(shù)據(jù)庫(kù)從互聯(lián)網(wǎng)出來(lái)開始,數(shù)據(jù)庫(kù)就是整個(gè)互聯(lián)網(wǎng)的基礎(chǔ),因?yàn)槟阍诰W(wǎng)上做任何事情的后臺(tái)都需要有存儲(chǔ)和處理的功能。所以不管是 web1.0、2.0 或者 3.0 它的基礎(chǔ)之一其實(shí)就是,基礎(chǔ)的基礎(chǔ)就是數(shù)據(jù)化。
其實(shí)也就印證了一句話,分布式數(shù)據(jù)庫(kù)就是順應(yīng)時(shí)代潮流的。