...

幫助阿裏省了(le/liǎo)幾百個(gè)億,它開啓了(le/liǎo)分布式數據庫新紀元

2022-01-19

對中國(guó)的(de)電商公司來(lái)說(shuō),1 萬億元 GMV 意味着什麽?

回到(dào)十年前,這(zhè)個(gè)答案是(shì):意味着他(tā)們要(yào / yāo)給 IOE(IBM、Oracle、EMC)三家美國(guó)公司 200 億元采購費,而(ér)且是(shì)每年都要(yào / yāo)給。這(zhè)筆錢甚至會超過他(tā)們自身當年所能賺取的(de)利潤。

如果這(zhè)件事真的(de)發生,中國(guó)後來(lái)諸多巨無霸一(yī / yì /yí)樣的(de)互聯網公司都會成爲(wéi / wèi)美國(guó)公司的(de)打工人(rén)。

但是(shì)十年過去,現實并非如此,這(zhè)一(yī / yì /yí)切都要(yào / yāo)從一(yī / yì /yí)位叫陽振坤的(de)科學家說(shuō)起。

很多年前,他(tā)曾追随老師王選院士打造激光照排。

現在(zài)他(tā)又創造了(le/liǎo)世界上(shàng)第一(yī / yì /yí)個(gè)真正意義上(shàng)的(de)分布式數據庫 OceanBase。

幫助阿裏省了(le/liǎo)幾百個(gè)億,它開啓了(le/liǎo)分布式數據庫新紀元

OceanBase 創始人(rén)首席科學家:陽振坤(花名:正祥)

一(yī / yì /yí)、一(yī / yì /yí)波三折的(de)内部創業

事實上(shàng),OceanBase 從在(zài)阿裏立項之(zhī)日起,就(jiù)面臨着夭折的(de)危機。

陽振坤對雷峰網說(shuō)起這(zhè)事,隻是(shì)腼腆地(dì / de)笑着,操着稍帶湖北口音的(de)老家話,言語不(bù)緊不(bù)慢。

但是(shì),他(tā)很清楚這(zhè)件事的(de)重要(yào / yāo)性:“如果當時(shí),我們沒有做 OceanBase,後來(lái)的(de)其他(tā)公司要(yào / yāo)做數據庫就(jiù)隻剩一(yī / yì /yí)條路,就(jiù)是(shì)‘穿馬甲’——把開源的(de)東西拿過來(lái),改成自己的(de)‘馬甲’,然後去做。”

在(zài)阿裏之(zhī)前的(de)戰略會上(shàng),“去 IOE”這(zhè)個(gè)戰略方向曾經得到(dào)阿裏首席技術官王堅博士的(de)堅持,前文 200 億元的(de)說(shuō)法就(jiù)是(shì)他(tā)算出(chū)來(lái)的(de)。

幫助阿裏省了(le/liǎo)幾百個(gè)億,它開啓了(le/liǎo)分布式數據庫新紀元

阿裏巴巴集團技術委員會主席王堅(花名:博士)

阿裏前 CEO 衛哲爲(wéi / wèi)雷峰網回憶過當日場景。

王堅爲(wéi / wèi)增加說(shuō)服力,甚至拉上(shàng)了(le/liǎo)已經退休的(de) CTO 吳炯,讓他(tā)從技術的(de)角度談了(le/liǎo)亞馬遜和(hé / huò)谷歌的(de)情況,作爲(wéi / wèi)整體鋪墊;然後自己再從财務的(de)精算,把 1 萬億元 GMV 折算成數據量,再折算成需要(yào / yāo)的(de) IBM 小型機數量、Oracle 數據庫量、EMC 存儲數量,最後換算成具體價格相加。

王堅算完之(zhī)後,阿裏執委會的(de)所有人(rén)都服氣了(le/liǎo),算是(shì)從高管層面解決了(le/liǎo)這(zhè)個(gè)問題。(當日現場讨論非常精彩,細節請看《沸騰十五年》修訂版。)

但是(shì),光說(shuō)服上(shàng)面的(de)人(rén)是(shì)不(bù)夠的(de),下面的(de)執行者都是(shì) Oracle、EMC 工程師,“去 IOE”其實就(jiù)是(shì)砸他(tā)們的(de)飯碗,他(tā)們怎麽會支持呢。

在(zài)陽振坤開啓 OceanBase 項目之(zhī)時(shí),他(tā)聽到(dào)的(de)負面的(de)、否定的(de)聲音,遠多于(yú)支持的(de)聲音。

作爲(wéi / wèi)創新者,逆風而(ér)行是(shì)必須要(yào / yāo)承擔的(de)代價,如果不(bù)能到(dào)達彼岸,就(jiù)會摔在(zài)地(dì / de)上(shàng),聽到(dào)鋪天蓋地(dì / de)的(de)讪笑。

兩年,這(zhè)是(shì)阿裏給陽振坤的(de)期限,也(yě)是(shì)阿裏高管們能爲(wéi / wèi)他(tā)頂住壓力的(de)時(shí)間。兩年内做出(chū)成績,公司全力支持;做不(bù)出(chū)成績,就(jiù)隻能卷鋪蓋走人(rén)。

背着這(zhè)樣的(de)壓力,陽振坤帶着 OceanBase 團隊出(chū)發了(le/liǎo)。

陽振坤想做的(de)體系是(shì)原生分布式數據庫。如果成功,OceanBase 将有機會幫助企業構建新一(yī / yì /yí)代的(de)核心系統。

在(zài) OceanBase 之(zhī)前,以(yǐ) Oracle 爲(wéi / wèi)主導的(de)巨頭們使用的(de)都是(shì)“集中式數據庫”。如果将數據庫的(de)處理能力和(hé / huò)容量類比爲(wéi / wèi)“馬拉車”,集中式數據庫的(de)解決方案是(shì)把“馬”做大(dà),讓單機實力更加強勁,帶動數據的(de)存儲和(hé / huò)處理。

但集中式數據庫也(yě)存在(zài)問題。一(yī / yì /yí)方面,誕生于(yú)數十年前的(de)集中式數據庫太老,很難應對指數級增長的(de)容量需求。當“馬”的(de)增長很難跟上(shàng)“車”的(de)速度,那麽系統的(de)崩潰就(jiù)隻是(shì)時(shí)間問題。企業仍然可以(yǐ)通過加大(dà)金錢投入,來(lái)增加數據庫的(de)能力,但成本卻也(yě)将大(dà)大(dà)提升。

另一(yī / yì /yí)方面,集中式的(de)數據庫應對風險的(de)防控能力很差。如果集中式數據庫中的(de)一(yī / yì /yí)台機器出(chū)現故障,那麽整個(gè)系統都可能面臨崩潰的(de)風險,牽一(yī / yì /yí)發而(ér)動全身。

既然獨木難支,爲(wéi / wèi)何不(bù)“衆人(rén)拾柴”?本就(jiù)對分布式頗有研究,陽振坤想到(dào),可以(yǐ)動用許多“小馬”,一(yī / yì /yí)起來(lái)拉動這(zhè)輛“大(dà)車”。

這(zhè)就(jiù)是(shì)原生分布式數據庫 OceanBase 靈感的(de)來(lái)源,而(ér)在(zài) 2010 年,世界上(shàng)都沒有人(rén)提出(chū)過這(zhè)種思路。陽振坤振臂一(yī / yì /yí)呼,可以(yǐ)說(shuō)是(shì)“前無古人(rén)”。

相比傳統的(de)集中式數據庫,分布式數據庫可擴展性更強。面對飛速增長的(de)需求,OceanBase 不(bù)依賴單機,可以(yǐ)做到(dào)簡單、便宜的(de)擴容。同時(shí),原先的(de)小型機一(yī / yì /yí)台也(yě)要(yào / yāo)幾十上(shàng)百萬,在(zài) OceanBase 分布式的(de)構想中,便宜的(de)單機也(yě)可以(yǐ)拿來(lái)做服務器,從幾十萬到(dào)幾萬,OceanBase 比 Oracle 便宜了(le/liǎo)不(bù)止一(yī / yì /yí)點半點。

分布式數據庫容災性也(yě)更強。由于(yú) OceanBase“不(bù)把雞蛋放在(zài)一(yī / yì /yí)個(gè)籃子(zǐ)裏”,當體系中某個(gè)單機出(chū)現問題時(shí),數據庫仍然能夠穩定運行。“三地(dì / de)五中心,同城三機房”,螞蟻的(de)體系如此設計,隻要(yào / yāo)大(dà)多數設備不(bù)同時(shí)宕機,系統的(de)運行就(jiù)不(bù)會受到(dào)影響。

HTAP(混合事務分析處理),這(zhè)是(shì) OceanBase 的(de)又一(yī / yì /yí)大(dà)利器。

數據庫的(de)功能大(dà)緻可以(yǐ)分爲(wéi / wèi)兩類——OLTP 和(hé / huò) OLAP。

OLTP 指“在(zài)線事務和(hé / huò)交易處理”,也(yě)就(jiù)是(shì)“記賬”。買家的(de)每一(yī / yì /yí)筆支出(chū)、商家的(de)每一(yī / yì /yí)單銷售,在(zài)平台上(shàng)産生的(de)每一(yī / yì /yí)條數據都要(yào / yāo)分門别類記載清楚。

OLAP 指“在(zài)線分析處理”,也(yě)就(jiù)是(shì)“數據分析”。分析用戶偏好、分析運營數據等能力都位列其中。

數據庫的(de)用戶既有“記賬”的(de)需求,又有“分析”的(de)需求,但這(zhè)兩種需求卻通常需要(yào / yāo)以(yǐ)兩個(gè)不(bù)同的(de)數據庫系統來(lái)分别滿足,市場上(shàng)少有可靠的(de)、一(yī / yì /yí)站式的(de)解決方案。操作兩種系統,成本和(hé / huò)難度自然更高。

如同左腦和(hé / huò)右腦,“記賬”和(hé / huò)“分析”是(shì)兩種不(bù)同的(de)數據處理方式。“記賬”需要(yào / yāo)實時(shí)與系統交互,數據要(yào / yāo)“逐行”存儲;而(ér)分析則需要(yào / yāo)縱向對比,數據要(yào / yāo)“逐列”存儲。 

OceanBase 做的(de),就(jiù)是(shì)把“左腦”和(hé / huò)“右腦”合并了(le/liǎo)起來(lái),形成了(le/liǎo)一(yī / yì /yí)站式的(de)解決方案。方便,而(ér)且便宜。說(shuō)起來(lái)簡單,将“行存”和(hé / huò)“列存”做到(dào)一(yī / yì /yí)起并非易事,而(ér)分布式的(de)架構設計又爲(wéi / wèi) HTAP 模式提供了(le/liǎo)技術上(shàng)的(de)可行之(zhī)處。

體系設計雖好,但實話說(shuō),2 年真的(de)不(bù)太夠用。

OceanBase 在(zài)頭兩年的(de)成果難說(shuō)讓人(rén)滿意,陽振坤自然深知這(zhè)一(yī / yì /yí)點。在(zài) 2012 年底的(de)時(shí)候,功能還有許多沒能實現,團隊也(yě)不(bù)夠完備。在(zài)産品的(de)第一(yī / yì /yí)關,OceanBase 就(jiù)輸了(le/liǎo)。

缺乏業務也(yě)是(shì) OceanBase 遇到(dào)的(de)又一(yī / yì /yí)個(gè)難題。阿裏内部的(de)各業務群也(yě)當然并非“一(yī / yì /yí)心同體”,業務老大(dà)們要(yào / yāo)背自己的(de)業務指标,總部做決定也(yě)要(yào / yāo)考慮到(dào)他(tā)們的(de)利益,數據庫是(shì)底層系統,不(bù)能強制他(tā)們“說(shuō)換就(jiù)換”。在(zài)部門牆之(zhī)下,OceanBase 初來(lái)乍到(dào),還沒有與各業務部門建立起信任感,隻能自下而(ér)上(shàng)地(dì / de)“推銷”自己的(de)産品,自然事倍功半。

眼見 2 年之(zhī)期将至,OceanBase 面臨着随時(shí)可能被公司關停的(de)狀況。

内外交困下,陽振坤還是(shì)獲得了(le/liǎo)第二次機會。

傳說(shuō)中,還是(shì)陽振坤特意飛去杭州阿裏總部,找到(dào)了(le/liǎo)他(tā)在(zài)微軟的(de)老同事王堅。王堅時(shí)任阿裏 CTO,當時(shí)也(yě)是(shì)他(tā)在(zài)阿裏雲最難的(de)時(shí)候。他(tā)深知陽振坤在(zài)阿裏從事科研的(de)難度,也(yě)能看到(dào) OceanBase 在(zài)未來(lái)數據庫競争中的(de)潛力,于(yú)是(shì)在(zài)和(hé / huò)相關領導協商後,發下了(le/liǎo)一(yī / yì /yí)紙調令。

不(bù)久後,OceanBase 就(jiù)被調整到(dào)了(le/liǎo)支付寶體系下。

但問及這(zhè)段時(shí)間,陽振坤心中第一(yī / yì /yí)個(gè)想到(dào)的(de)是(shì)現任阿裏的(de) CTO 程立,花名魯肅。在(zài)陽振坤和(hé / huò)團隊來(lái)到(dào)支付寶後,作爲(wéi / wèi)阿裏技術人(rén)心中“神一(yī / yì /yí)樣的(de)人(rén)物”,魯肅也(yě)看好原生分布式數據庫的(de)前景,于(yú)是(shì)幫助陽振坤在(zài)支付寶站穩了(le/liǎo)腳跟,這(zhè)也(yě)爲(wéi / wèi) OceanBase 在(zài)日後的(de)崛起埋下了(le/liǎo)伏筆。

幫助阿裏省了(le/liǎo)幾百個(gè)億,它開啓了(le/liǎo)分布式數據庫新紀元

阿裏巴巴 CTO 程立(花名:魯肅)

二、2014,逆襲的(de)号角吹響

2014 年,在(zài)支付寶,陽振坤和(hé / huò) OceanBase 終于(yú)等到(dào)了(le/liǎo)千載難逢的(de)機會。 

當年,雙十一(yī / yì /yí)的(de)交易量預期又将創下紀錄。面對又一(yī / yì /yí)次大(dà)考,支付寶内部的(de)數據庫工程師如臨大(dà)敵,又如火如荼地(dì / de)開始了(le/liǎo)數據庫跑量的(de)壓力測試。

大(dà)敵當前,陽振坤和(hé / huò)他(tā)的(de)團隊卻還在(zài)坐冷闆凳。多次主動請纓,支付寶卻僅讓 OceanBase 承擔1% 的(de)業務流水。又是(shì)一(yī / yì /yí)年的(de)失望,屬于(yú) OceanBase 的(de)翻盤點似乎還遙不(bù)可及。

前文也(yě)提到(dào)了(le/liǎo),OceanBase 的(de)功能和(hé / huò)結構都比 Oracle 要(yào / yāo)強勁很多,爲(wéi / wèi)什麽支付寶沒有全面推廣 OceanBase 應用呢?

IOE 體系就(jiù)是(shì)數據庫界的(de) PUA。你明知它貴,你明知它不(bù)好用,你明知有更便宜、便捷的(de)解決方案,但你願意相信它。在(zài) ToB 生意裏,信任最爲(wéi / wèi)難能可貴。

“你如何保證 OceanBase 不(bù)弄丢支付寶用戶的(de)一(yī / yì /yí)分錢?”魯肅的(de)這(zhè)句話也(yě)曾問懵過陽振坤。

IOE 雖然種種不(bù)好,但 IOE 勝在(zài)穩健。許多技術負責人(rén)不(bù)願用新的(de)技術和(hé / huò)産品,用老産品出(chū)問題可以(yǐ)怪産品,用新産品出(chū)問題就(jiù)隻能怪自己了(le/liǎo)。

歸根結底,沒信任就(jiù)沒有使用,沒有使用也(yě)就(jiù)沒有信任。OceanBase 就(jiù)在(zài)這(zhè)樣一(yī / yì /yí)個(gè)死循環裏苦苦掙紮。

就(jiù)在(zài) OceanBase 的(de)未來(lái)仍不(bù)明确的(de)時(shí)候,一(yī / yì /yí)個(gè)“壞”消息傳來(lái):Oracle 崩了(le/liǎo)!

原來(lái),在(zài)跑量測試時(shí),一(yī / yì /yí)直在(zài)螞蟻内處于(yú)主導地(dì / de)位的(de) Oracle 竟然屢次崩潰,可承壓能力僅有預期的(de) 90%。

已經顧不(bù)上(shàng) OceanBase 是(shì)否可靠,在(zài)這(zhè)時(shí)行不(bù)行都得上(shàng)。技術團隊不(bù)得不(bù)做出(chū)了(le/liǎo)一(yī / yì /yí)個(gè)艱難的(de)決定:緊急啓用 OceanBase。

雙十一(yī / yì /yí)的(de)流量逐年都在(zài)增加,集中式的(de) Oracle 總會有一(yī / yì /yí)天跌落神壇。陽振坤早就(jiù)在(zài)等着這(zhè)一(yī / yì /yí)天,OceanBase 逆襲的(de)機會來(lái)了(le/liǎo)!

于(yú)是(shì) OceanBase 臨危受命,接下了(le/liǎo)支付寶 2014 年雙十一(yī / yì /yí) 10% 的(de)流量。

這(zhè)是(shì)機遇,可又何嘗不(bù)是(shì)重于(yú)泰山的(de)壓力?陽振坤深知,他(tā)和(hé / huò)他(tā)的(de)團隊但凡出(chū)了(le/liǎo)一(yī / yì /yí)點差池,那麽他(tā)和(hé / huò) OceanBase 在(zài)公司裏就(jiù)将永遠失去信任,再沒人(rén)敢用。哪怕後面能夠給業務帶來(lái)好處,也(yě)無濟于(yú)事。

這(zhè)一(yī / yì /yí)仗,OceanBase 隻許成功,不(bù)能失敗。

雙十一(yī / yì /yí)前夜,OceanBase 全員枕戈待旦。螞蟻集團的(de) CEO 彭蕾(花名 Lucy)先前在(zài)阿裏内部任首席人(rén)力官,知人(rén)善用。她連夜來(lái)到(dào)了(le/liǎo) OceanBase 的(de)辦公室,既是(shì)動員,也(yě)是(shì)督戰。

變動如此巨大(dà),難說(shuō)彭蕾的(de)心裏沒有忐忑。她問陽振坤有沒有信心,陽恰好站在(zài)窗邊。他(tā)推開窗子(zǐ),杭州 11 月已經開始轉冷,辦公樓下路人(rén)行色匆匆。陽振坤知道(dào),他(tā)和(hé / huò) OceanBase 的(de)前途全部取決于(yú)此,他(tā)說(shuō):

“出(chū)了(le/liǎo)問題,我們準備從這(zhè)跳下去。”

7 年後,OceanBase 早已成爲(wéi / wèi)了(le/liǎo)國(guó)産數據庫中的(de)“頭馬”。談及此事,陽振坤隻說(shuō)是(shì)個(gè)玩笑。而(ér)當年的(de)壓力、忐忑和(hé / huò)“不(bù)成功便成仁”的(de)決絕,都如同過眼雲煙,成爲(wéi / wèi)了(le/liǎo)多年之(zhī)後的(de)笑談。

三、開源——OceanBase 的(de)夢想、挫折和(hé / huò)救贖

開源是(shì)許多程序猿的(de)浪漫。 

盡管在(zài)外界看來(lái)十分令人(rén)不(bù)解——把自己辛苦寫的(de)代碼免費向社會公開,但 OceanBase 還是(shì)堅決地(dì / de)選擇了(le/liǎo)開源。

抛開技術人(rén)的(de)理想主義,OceanBase 之(zhī)所以(yǐ)選擇開源,有如下這(zhè) 3 大(dà)原因:

一(yī / yì /yí)方面,數據庫需要(yào / yāo)跑量。在(zài)足夠的(de)測試與反饋的(de)過程中,數據庫才能發現運行問題,進行有機的(de)調整。

OceanBase 作爲(wéi / wèi)一(yī / yì /yí)個(gè)新概念的(de)數據庫産品,自然急需實際的(de)測試和(hé / huò)驗證。開源,就(jiù)是(shì)給了(le/liǎo) OceanBase 不(bù)斷“打怪升級”的(de)機會。

另一(yī / yì /yí)方面,剛剛提到(dào)過,信任對于(yú)數據庫産品來(lái)說(shuō)是(shì)重要(yào / yāo)的(de)壁壘,也(yě)是(shì)合作的(de)基石。用戶要(yào / yāo)把數據委托給數據庫,幾乎是(shì)要(yào / yāo)把自己重要(yào / yāo)的(de)“家産”托付出(chū)去。

OceanBase 把自己的(de)代碼和(hé / huò)秘密全部公開,也(yě)是(shì)告訴用戶自己值得信任。基于(yú)這(zhè)種信任,OceanBase 也(yě)期望能形成自己的(de)開源社區,擴大(dà)用戶群。

有人(rén)用,就(jiù)有信任;有了(le/liǎo)信任,就(jiù)有更多人(rén)用,也(yě)就(jiù)自然能産生更多收益。

陽振坤有足夠的(de)信心,即使 OceanBase 開源供公衆使用,他(tā)人(rén)也(yě)很難弄懂其中的(de)奧秘和(hé / huò)機理。前文也(yě)提到(dào)過,數據庫本就(jiù)是(shì)一(yī / yì /yí)項極度複雜的(de)工程。如同芯片一(yī / yì /yí)樣,即使能夠拿到(dào)成品,但難以(yǐ)對其進行反向工程。即使開源,護城河也(yě)在(zài)。

著名的(de)數據庫 MySQL 開源 20 餘年,核心技術就(jiù)仍然掌握在(zài)開發團隊的(de)手中。這(zhè)種技術壁壘映射到(dào)開源上(shàng),稱得上(shàng)是(shì)一(yī / yì /yí)種數據庫的(de)核心能力。

于(yú)是(shì)在(zài) 2011 年,當時(shí)還屬于(yú)淘寶體系的(de) OceanBase 第一(yī / yì /yí)次開源,而(ér)這(zhè)次開源的(de)經曆難稱圓滿。

這(zhè)次開源對于(yú) OceanBase 來(lái)說(shuō),頗有“趕鴨子(zǐ)上(shàng)架”的(de)意味。OceanBase 在(zài) 2014 年前還是(shì)以(yǐ)單點寫入的(de)模式爲(wéi / wèi)主,兩年後才正式完成了(le/liǎo) 1.0 版本。

而(ér) 2011 年爲(wéi / wèi)了(le/liǎo)迎合淘寶系統全面開源的(de)潮流,也(yě)是(shì)技術人(rén)的(de)一(yī / yì /yí)腔熱情,OceanBase 匆匆宣布開源,而(ér)實際公開的(de)隻是(shì)一(yī / yì /yí)個(gè)“半成品”。這(zhè)個(gè)版本當時(shí)還以(yǐ)單點寫入爲(wéi / wèi)主,還完全不(bù)是(shì)團隊理想中的(de)樣子(zǐ)。

而(ér)通過這(zhè)次開源,另外一(yī / yì /yí)個(gè)問題也(yě)随之(zhī)映射出(chū)來(lái):OceanBase 的(de)定位究竟是(shì)什麽?究竟要(yào / yāo)做螞蟻業務的(de)一(yī / yì /yí)個(gè)支持部門,還是(shì)一(yī / yì /yí)個(gè)通用化的(de)工具?

做支持,OceanBase 需要(yào / yāo)更多面向公司内部的(de)需求。一(yī / yì /yí)些“量身定制”的(de)需求,甚至可能超出(chū)常規數據庫的(de)功能範圍。如果被這(zhè)種需求牽着走,則很可能造成工期上(shàng)的(de)損耗,也(yě)容易把自己的(de)路走窄。

陽振坤和(hé / huò)團隊想做的(de),一(yī / yì /yí)直都是(shì)一(yī / yì /yí)個(gè)通用化的(de)工具。但認知上(shàng)的(de)鴻溝,讓首次開源的(de) OceanBase 無法獲得業務團隊足夠的(de)支持,開發團隊則要(yào / yāo)把主要(yào / yāo)精力投入到(dào)産品 1.0 版本的(de)開發中,很難分出(chū)人(rén)手去維護開源版本的(de)持續更新。 

難說(shuō)誰對誰錯,隻是(shì)立場不(bù)同。

無人(rén)可用,首次開源的(de) OceanBase 終于(yú)不(bù)再更新,而(ér)這(zhè)次嘗試也(yě)終于(yú)不(bù)了(le/liǎo)了(le/liǎo)之(zhī)。

而(ér)在(zài)這(zhè)之(zhī)後,潛心投入開發的(de) OceanBase 團隊終于(yú)見到(dào)了(le/liǎo)回報。

在(zài)支付寶内部,OceanBase 逐漸全部接管了(le/liǎo) Oracle 先前的(de)“生意”。爲(wéi / wèi)了(le/liǎo)讓“去 Oracle”的(de)進程更加“絲滑”,OceanBase 力求讓這(zhè)個(gè)過程可以(yǐ)“不(bù)改代碼”。

2015 年 3 月 15 日,陽振坤在(zài)他(tā)的(de)微博上(shàng)自豪地(dì / de)宣布:“從上(shàng)周五開始,淘寶/天貓/聚劃算在(zài)支付寶上(shàng)的(de)交易,100% 都在(zài) OceanBase 上(shàng)了(le/liǎo)。你可能沒有什麽感覺。”

一(yī / yì /yí)年後,OceanBase 也(yě)終于(yú)全部接管賬務數據庫。在(zài)一(yī / yì /yí)次采訪中,陽振坤表示:“這(zhè)……是(shì)标志着,OceanBase 真正地(dì / de)在(zài)金融系統裏面站住了(le/liǎo)腳。”

取得了(le/liǎo)如此斐然成績,在(zài)阿裏内部也(yě)是(shì)拿獎拿到(dào)手軟,但陽振坤和(hé / huò)團隊的(de)志向卻不(bù)願意在(zài)此止步。又過了(le/liǎo)一(yī / yì /yí)年,憑借着支付寶成功案例的(de)光鮮背書,OceanBase 首次對外商用,第一(yī / yì /yí)個(gè)客戶就(jiù)是(shì)南京銀行。

阿裏的(de)高層們也(yě)終于(yú)看到(dào)了(le/liǎo) OceanBase 原生分布式數據庫的(de)優勢,看到(dào)了(le/liǎo)既能做交易、也(yě)能做分析的(de) HTAP 模式颠覆行業的(de)可能。他(tā)們正式同意 OceanBase 作爲(wéi / wèi)一(yī / yì /yí)個(gè)單獨的(de)公司獨立運營,這(zhè)也(yě)是(shì) OceanBase 發展一(yī / yì /yí)個(gè)重要(yào / yāo)的(de)分水嶺。

2020 年 6 月 1 日,北京奧星貝斯科技有限公司正式成立。螞蟻集團前金融科技産品技術總監楊冰任 CEO,陽振坤任首席科學家,與他(tā)一(yī / yì /yí)起進入 OceanBase 創業至今的(de)楊傳輝(花名:日照)任 CTO。

不(bù)久,“出(chū)走”剛剛 12 個(gè)月的(de) OceanBase 再一(yī / yì /yí)次選擇了(le/liǎo)開源。在(zài)進行了(le/liǎo)數月工作文檔和(hé / huò)代碼的(de)梳理後,2021 年 6 月,OceanBase 再次向全網開源。

幫助阿裏省了(le/liǎo)幾百個(gè)億,它開啓了(le/liǎo)分布式數據庫新紀元

2021 年 6 月 1 日 OceanBase 正式開源

不(bù)同于(yú)遮遮掩掩式的(de)“公關式開源”,OceanBase 這(zhè)次放了(le/liǎo)狠招:他(tā)們一(yī / yì /yí)次公開了(le/liǎo)自己全部内核。他(tā)們把心沉下來(lái),隻想如何用開源的(de)方式去滿足客戶需求。遵循指示,一(yī / yì /yí)個(gè)初學者可以(yǐ)在(zài) 30 分鍾内将 OceanBase 的(de)數據庫完成裝配。

OceanBase 做的(de)是(shì)用戶價值,這(zhè)是(shì)他(tā)們開源的(de)重要(yào / yāo)理念。

從最早先屈指可數的(de)幾個(gè)客戶,到(dào)今天 400 多家全行業的(de)客戶;大(dà)到(dào)支付寶、網商銀行,小到(dào)占總比 66% 的(de)小型企業,從螞蟻獨立出(chū)來(lái)的(de)奧星貝斯仍然在(zài)幫助全社會的(de)各行各業。

“讓天下沒有難做的(de)生意”依然流淌在(zài)他(tā)們每個(gè)人(rén)的(de)基因裏。

結語:

盡管已經年近花甲,陽振坤仍然沒有半點停滞的(de)意思。在(zài)技術驅動創新的(de)路上(shàng),OceanBase 的(de)目标是(shì)做“無限擴展、永遠在(zài)線”,意在(zài)創造一(yī / yì /yí)個(gè)不(bù)被擴展和(hé / huò)故障所限制的(de)數據庫系統,而(ér)這(zhè)項成果則可能永遠地(dì / de)颠覆數據庫,乃至互聯網行業。

做技術的(de)人(rén)大(dà)多是(shì)簡單的(de)。陽振坤和(hé / huò) OceanBase 十餘年走來(lái),風風雨雨,終于(yú)至今。有時(shí)他(tā)總能想起自己的(de)老師,兩院院士王選,當代中國(guó)的(de)“畢昇”,颠覆了(le/liǎo)中國(guó)印刷業的(de)科學家。

33 年前,陽振坤成爲(wéi / wèi)了(le/liǎo)王選的(de)弟子(zǐ)。

那年,陽振坤 22 歲,青春寫意;王選 52 歲,也(yě)正是(shì)當打之(zhī)年。而(ér)今天,王選早已溘然長逝,陽振坤也(yě)把自己三十餘年的(de)青春獻給了(le/liǎo)科研。

當年,我憧憬你;今天,我仍在(zài)以(yǐ)你爲(wéi / wèi)燈塔前行。 

陽振坤知道(dào),和(hé / huò)自己的(de)恩師一(yī / yì /yí)樣,自己的(de)這(zhè)一(yī / yì /yí)生都将要(yào / yāo)獻給中國(guó)的(de)科研事業,但他(tā)從沒有半分悔意,也(yě)沒有半分退意。

2022 年 1 月,在(zài)由 CSDN 主辦、OceanBase 承辦的(de) DC 2021 分布式數據庫開發者大(dà)會後,雷峰網采訪了(le/liǎo)陽振坤,并與他(tā)進行了(le/liǎo)一(yī / yì /yí)番深談。以(yǐ)下是(shì)我們整理的(de)訪談實錄: 

數據庫技術的(de)發展曆程

雷峰網:我們知道(dào)技術在(zài)曆史中,發展都存在(zài)着不(bù)同的(de)階段。數據庫也(yě)應該不(bù)例外,可以(yǐ)根據技術的(de)突破劃分爲(wéi / wèi)幾個(gè)階段,您可以(yǐ)爲(wéi / wèi)我們回顧一(yī / yì /yí)下嗎?

陽振坤:在(zài)最開始,它其實是(shì)跟賬有關系。最早的(de)數據庫叫層次數據庫,功能比較簡單。而(ér)也(yě)是(shì)因爲(wéi / wèi)其功能比較單一(yī / yì /yí),大(dà)家有接觸大(dà)概幾年以(yǐ)後,就(jiù)發明了(le/liǎo)一(yī / yì /yí)種網狀的(de)數據庫。最大(dà)的(de)代表其實就(jiù)是(shì) IBM 的(de)這(zhè)一(yī / yì /yí)套系統。

到(dào)了(le/liǎo) 60 年代末或者 70 年代的(de)時(shí)候,關系模型橫空出(chū)世。曾經兩個(gè)這(zhè)個(gè)圖靈獎的(de)獲得者專門有一(yī / yì /yí)次是(shì) ACM(國(guó)際計算機學會)開大(dà)會,兩派的(de)人(rén)争執不(bù)下:一(yī / yì /yí)派的(de)人(rén)說(shuō)這(zhè)個(gè)未來(lái)一(yī / yì /yí)定是(shì)關系模型,因爲(wéi / wèi)關系模型有更強的(de)表述能力。另一(yī / yì /yí)派說(shuō)關系模型不(bù)實用。結構上(shàng)的(de)複雜性,會導緻性能會很差。

此後關于(yú)這(zhè)個(gè)問題一(yī / yì /yí)直沒有定論。所以(yǐ),關系模型從 1970 年發表,一(yī / yì /yí)直到(dào)整個(gè) 70 年代,其實都沒有過産品。

到(dào) 70 年代末 80 年代初,關系型數據庫才開始産品化。此後這(zhè)個(gè)模式就(jiù)一(yī / yì /yí)直被沿用,直到(dào)差不(bù)多互聯網之(zhī)前。集中式,本質上(shàng)是(shì)個(gè)單機的(de)系統。一(yī / yì /yí)個(gè)很關鍵原因還是(shì)因爲(wéi / wèi)它太複雜。

雷峰網:爲(wéi / wèi)了(le/liǎo)解決這(zhè)個(gè)難題,科學家做出(chū)了(le/liǎo)哪些努力?

陽振坤:對數據庫來(lái)說(shuō),它有一(yī / yì /yí)個(gè)特殊之(zhī)處:人(rén)們很難用一(yī / yì /yí)個(gè)自然的(de)語言,來(lái)操作數據庫。所以(yǐ)後來(lái),就(jiù)有人(rén)開發出(chū)了(le/liǎo)一(yī / yì /yí)種數據庫專用的(de)語言,叫 SQL(結構化查詢語言)。

這(zhè)個(gè) SQL 不(bù)是(shì)告訴數據庫幹什麽的(de),這(zhè)個(gè)太難描述了(le/liǎo);它告訴數據庫說(shuō)我要(yào / yāo)什麽,你怎麽幹是(shì)你的(de)事。

Oracle 算是(shì)最早的(de)那批數據庫,就(jiù)是(shì) Oracle 、DB2,SQL Server,還有像對後面是(shì) PGSQL 跟 MySQL。在(zài)之(zhī)後的(de) 20 多年的(de)時(shí)間裏,都沒有如此體量的(de)數據庫面世。數據庫到(dào)今天都是(shì)個(gè)非常大(dà)的(de)挑戰,也(yě)導緻這(zhè)麽多年格局大(dà)緻不(bù)變,一(yī / yì /yí)個(gè)新的(de)數據庫的(de)研發特别困難。

而(ér)互聯網時(shí)代,有許多很新的(de)、完全不(bù)一(yī / yì /yí)樣的(de)需求也(yě)随之(zhī)而(ér)來(lái)。那我們 OceanBase 今天才有這(zhè)機會。

分庫分表不(bù)是(shì)分布式數據庫

雷峰網:OceanBase 将自己定義爲(wéi / wèi)“原生”分布式數據庫,這(zhè)個(gè)“原生”要(yào / yāo)怎麽理解?

陽振坤:我會講一(yī / yì /yí)個(gè)很明确的(de)觀點:分庫分表不(bù)是(shì)分布式數據庫。我們認爲(wéi / wèi)一(yī / yì /yí)個(gè)原生分布式數據庫,它是(shì)一(yī / yì /yí)個(gè)單一(yī / yì /yí)的(de)數據庫,看起來(lái)像使用單台機器的(de)集中式數據庫,能夠在(zài)一(yī / yì /yí)套數據庫裏面又做交易又做分析。分庫分表的(de)話,它其實還是(shì)說(shuō)在(zài)多個(gè)單機數據庫上(shàng)面加了(le/liǎo)一(yī / yì /yí)個(gè)中間件。

但是(shì)這(zhè)種方案它其實沒有辦法保證這(zhè)多台數據庫之(zhī)間的(de)一(yī / yì /yí)緻性。舉個(gè)例子(zǐ),第一(yī / yì /yí)個(gè)數據庫是(shì)我,第二個(gè)數據庫是(shì)你。我給你轉賬,有可能出(chū)現我給你轉出(chū)去了(le/liǎo),但你沒有收到(dào)的(de)情況。分庫分表式的(de)數據庫有可能有這(zhè)種情況,但我們的(de)原生分布數據庫是(shì)沒有這(zhè)種情況的(de)。OceanBase 保證強一(yī / yì /yí)緻的(de),是(shì)一(yī / yì /yí)個(gè)單一(yī / yì /yí)的(de)數據庫,既能處理交易,又能處理分析。

雷峰網:OceanBase 在(zài)支付寶體系下已經度過了(le/liǎo)許多個(gè)寒暑,應用 OceanBase 的(de)前後,支付寶産生了(le/liǎo)哪些變化?

陽振坤:其實從 2014 年之(zhī)後,公司就(jiù)也(yě)看到(dào)了(le/liǎo)我們的(de)業務價值,主要(yào / yāo)還是(shì)支付寶的(de)數據庫體量太大(dà)了(le/liǎo)。就(jiù)算你的(de)硬件能做到(dào)盡量穩定,它最終也(yě)會出(chū)問題。少數幾台不(bù)要(yào / yāo)緊;你有幾百台,幾千台的(de)時(shí)候它一(yī / yì /yí)定會出(chū)問題。同時(shí)集中式數據庫維護和(hé / huò)維修的(de)代價很大(dà),工作人(rén)員要(yào / yāo)到(dào)最早的(de)網關去把信息撈出(chū)來(lái),來(lái)做對照。

那用了(le/liǎo) OceanBase 之(zhī)後,我們部署了(le/liǎo)三個(gè)副本。即使壞掉一(yī / yì /yí)台機器,剩下的(de)機器保證還有正确的(de)數據,就(jiù)能夠自動的(de)恢複。以(yǐ)前隻要(yào / yāo)主庫壞了(le/liǎo),他(tā)們都得去做人(rén)工對賬。不(bù)管幾點壞的(de),工作人(rén)員都要(yào / yāo)在(zài)幾分鍾之(zhī)内起來(lái),否則系統裏,用戶看的(de)數據就(jiù)全不(bù)對了(le/liǎo)。但 OceanBase 可以(yǐ)做到(dào)系統自動,這(zhè)台機器壞了(le/liǎo),還有其他(tā)機器能工作,我們系統就(jiù)可以(yǐ)繼續運轉。所以(yǐ)這(zhè)一(yī / yì /yí)個(gè)對業務來(lái)講,給到(dào)很大(dà)的(de)幫助。

這(zhè)樣的(de)體系對工作人(rén)員的(de)舒适度就(jiù)提升很多,以(yǐ)前隻要(yào / yāo)出(chū)問題,不(bù)管幾點都要(yào / yāo)來(lái)應急。現在(zài)的(de)雙十一(yī / yì /yí),工作人(rén)員已經有時(shí)間坐下來(lái)喝一(yī / yì /yí)杯茶了(le/liǎo)。這(zhè)就(jiù)是(shì)我看到(dào)最大(dà)的(de)變化。

走出(chū)中國(guó),做世界的(de)數據庫

雷峰網:在(zài)當下,數據庫中國(guó)化的(de)呼聲越來(lái)越高,咱們中國(guó)在(zài)整個(gè)國(guó)際的(de)技術水平上(shàng)來(lái)講,處于(yú)一(yī / yì /yí)個(gè)什麽樣的(de)位置?

陽振坤:如果說(shuō)分布式數據庫,我們應該是(shì)整個(gè)國(guó)際上(shàng)都是(shì)走在(zài)領先地(dì / de)位的(de)。這(zhè)個(gè)也(yě)跟我們本身是(shì)“一(yī / yì /yí)窮二白”有關系。我們原來(lái)沒有集中式數據庫的(de)多少基礎,發展起來(lái)與其跟别人(rén)在(zài)原來(lái)的(de)賽道(dào)去競争,又有新的(de)需求,我們還不(bù)如走到(dào)新賽道(dào)上(shàng)。

反而(ér)是(shì)像美國(guó)現在(zài)它更多的(de)精力是(shì)在(zài)集中式上(shàng)面。我們對美國(guó)也(yě)算是(shì)一(yī / yì /yí)種“彎道(dào)超車”,或說(shuō)是(shì)“跨代競争”。主要(yào / yāo)的(de)原因在(zài)于(yú)說(shuō)我們經常講一(yī / yì /yí)個(gè)概念叫應用驅動技術創新。和(hé / huò)中國(guó)比人(rén)多、比市場規模,美國(guó)人(rén)比得過嗎?對不(bù)對?它是(shì)這(zhè)麽去驅動出(chū)來(lái)的(de)。 

雷峰網:那以(yǐ)後将數據庫 OceanBase 向國(guó)外輸出(chū)肯定也(yě)是(shì)有可能的(de)。 

陽振坤:我覺得是(shì)必須的(de),我們幹嘛把自己隻圈在(zài)這(zhè)一(yī / yì /yí)個(gè)市場裏呢?無論是(shì)在(zài)成本還是(shì)在(zài)能力上(shàng),我們系統能做的(de)一(yī / yì /yí)些事情是(shì)現在(zài)的(de)數據庫系統它做不(bù)到(dào)的(de)。

但是(shì),我們自身産品的(de)發展也(yě)有個(gè)過程。國(guó)内現在(zài)有這(zhè)麽大(dà)的(de)市場,我們現在(zài)主要(yào / yāo)還在(zài)面向國(guó)内市場,吃透國(guó)内市場,同時(shí)完善 OceanBase。

雖然什麽時(shí)候出(chū)海,我們還沒有具體可公布的(de)規劃。但我相信,前景還是(shì)很光明的(de)。 

如何看待元宇宙和(hé / huò) Web3.0 的(de)未來(lái)?

雷峰網:對于(yú)元宇宙、WEB3.0 這(zhè)樣的(de)新興概念,您怎麽看?

陽振坤:我一(yī / yì /yí)大(dà)部分的(de)時(shí)間,還是(shì)放在(zài)我們本身的(de)産品和(hé / huò)技術上(shàng)。實話說(shuō),對元宇宙和(hé / huò) Web3.0 我真的(de)不(bù)懂。

但要(yào / yāo)我說(shuō)的(de)話,其實數據庫它本身就(jiù)是(shì)個(gè)基礎設施,你可以(yǐ)把它用在(zài)元宇宙上(shàng),用在(zài)真實的(de)宇宙空間上(shàng),用在(zài)生産,用在(zài)娛樂,用在(zài)遊戲,随便用在(zài)哪兒上(shàng)。

但元宇宙的(de)大(dà)趨勢對我們可能是(shì)個(gè)利好。因爲(wéi / wèi)我們是(shì)這(zhè)方面的(de)能力是(shì)比較強的(de),就(jiù)像說(shuō)從雙十一(yī / yì /yí)一(yī / yì /yí)路走過來(lái)對吧?能夠給系統提供這(zhè)麽大(dà)的(de)處理能力的(de)數據庫,我們應該是(shì)第一(yī / yì /yí)個(gè)。

其實你不(bù)管元宇宙還是(shì)其他(tā)的(de)一(yī / yì /yí)些趨勢,數據總是(shì)以(yǐ)在(zài)往“大(dà)”的(de)方向走,并發也(yě)在(zài)往“大(dà)”的(de)方向走。元宇宙可能是(shì)說(shuō)其中的(de)一(yī / yì /yí)個(gè)驅動力稍微大(dà)一(yī / yì /yí)點的(de)一(yī / yì /yí)個(gè)場景,他(tā)往分布式走這(zhè)個(gè)趨勢我們覺得肯定是(shì)毫無疑問的(de)。

談到(dào) Web3.0,整個(gè)數據庫從互聯網出(chū)來(lái)開始,數據庫就(jiù)是(shì)整個(gè)互聯網的(de)基礎,因爲(wéi / wèi)你在(zài)網上(shàng)做任何事情的(de)後台都需要(yào / yāo)有存儲和(hé / huò)處理的(de)功能。所以(yǐ)不(bù)管是(shì) web1.0、2.0 或者 3.0 它的(de)基礎之(zhī)一(yī / yì /yí)其實就(jiù)是(shì),基礎的(de)基礎就(jiù)是(shì)數據化。

其實也(yě)就(jiù)印證了(le/liǎo)一(yī / yì /yí)句話,分布式數據庫就(jiù)是(shì)順應時(shí)代潮流的(de)。 


來(lái)源:雷鋒網