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