隨著互聯網的爆發式增長,數據庫作為 IT信息產業最重要最核心的部分,迎來了成長和發展的絕佳時機。如何把握機遇,迎接海量數據、通用高性能的挑戰?國產自研分佈式數據庫 OceanBase,在國家內循環、新基建政策的引導下,發揮著強大的中國製造的技術魅力。
在互聯網爆炸式增長對海量業務中數據庫高併發、高性能的嚴苛要求下,數據庫領域的標杆 OceanBase,以其高性能、可擴展、高可用以及低成本等特點,特別是阿里集團內部包含網商銀行、支付寶等航母量級的數據庫場景應用的成熟經驗,保障了業務連續、穩定、高效運轉,為用戶創造更大價值。
2020 數據技術嘉年華上,北京奧星貝斯科技有限公司 CTO、OceanBase 數據庫創始人陽振坤,接受了企業網的專訪。他對 OceanBase 的發展歷史進行了總結和回顧,全面詮釋了數據庫技術的發展歷程,同時作為前沿的技術專家,也對未來數據庫系統的發展趨勢做了預測和展望。
北京奧星貝斯科技 CTO、OceanBase 數據庫創始人陽振坤
數據庫從誕生至今已有幾十年的時間,但是市場格局變化不大,最早發展起來的數據庫廠商長期佔據著統治地位。由於數據庫處在整個 IT 產業鏈最基礎的位置,替換風險很大,但收益相比起來卻小得多,因此非常難被替換。這也是為什麼像 IBM、微軟這樣的後來者也難以取代 Oracle。這就導致了數據庫變成一個門檻極高、強者恆強的領域。
然而,時代的發展往往會打破慣例。互聯網的爆發式增長對數據庫的高併發、大數據量提出了很高的要求,而傳統關係型數據庫難以滿足,這就給 OceanBase 的問世創造了“天時”基礎。加之阿里巴巴內部從淘寶到支付寶擁有大量使用數據庫的場景,OceanBase 可以從不是特別關鍵的應用場景開始嘗試,一步步地將數據庫做到關鍵系統,這也是絕大多數互聯網企業可以做數據庫的優勢——自帶場景的“地利”條件。最後便是以陽振坤為代表的具備分佈式技術背景的團隊,在當時單機數據庫已經走到盡頭的情況下,以“人和”之勢定下了走向分佈式的路線。
就這樣,打破傳統數據庫一統天下格局的 OceanBase 在一個千載難逢的機遇下應運而生,讓國產自研關係型數據庫嶄露頭角並推廣使用,不斷推動國產數據庫技術快速發展和走向成熟。目前,OceanBase 已經在數十家商業銀行上線運行。在簡要回顧 OceanBase 十年的成長路時,陽振坤的自豪之情溢於言表。
其實在 OceanBase 立項之初時,關於“分佈式”曾有一番熱烈的討論。隨著業務的高速發展,海量數據激增,數據庫面臨著巨大的挑戰和困境。大家常見的解決方法是拆庫做分庫分表,就是將原來一個數據庫,根據業務的不同拆分成多個數據庫,一個數據庫放一個表,後期如果業務處理不了,再將一張表拆分成多個分表。要是業務量小,尚可滿足業務需求,但是隨著拆分到上千甚至上萬個分表,這個事情就變得極其複雜且解決起來異常困難。因為每天每一個表都會進行無數次變更,這些變更需要做在所有的分片上,只要一個分片異常就需要回滾,就有概率出現回滾不成功,從而導致數據丟失或影響業務的連續性,給企業帶來的損失將是不可彌補甚至不堪設想的。
能從根源上解決數據庫發展的問題,最完善的解決方案是真正的分佈式數據庫。分庫分表只能稱為分佈式系統,是分佈式數據庫嗎?陽振坤笑了笑,“打個問號吧!”很多人都清楚事務的 ACID 特性,知道事務要滿足原子性、一致性、隔離性和持久性,這是從數據庫本身的角度來看。有人混淆分佈式數據庫的概念,把分庫分表也叫分佈式,但其實它不是分佈式數據庫,因為它是多個數據庫而不是一個數據庫。分庫分表方案雖然可以解決一些問題,但也帶來更多的挑戰,更大的複雜性和更高的成本。
正因為如此,陽振坤的團隊毅然決然地選擇了最難走的一條路——做一款原生分佈式關係數據庫。這需要所有代碼一行一行自己寫,沒有任何一行別人的代碼,沒有任何其他人的東西。另外,除了要滿足事務和數據庫裡面的各種約束、各種一致性,還包含分佈式事務處理、性能和響應時間,而最困難的是故障恢復,因為分佈式環境下出故障是必然的,且故障率會隨著節點的增加呈指數級增加。再有就是整個性能的穩定和分佈式上的優化,單機上的優化器已經很難了,分佈式優化器,尤其是做整個事務處理的優化器,挑戰要大得多得多。回憶起 OceanBase 從初生到成長的過程,以及團隊所攻克的一個又一個難關,陽振坤不禁感慨良多。
解決了從數據庫本身的角度來做一款真正意義上的分佈式數據庫後,從業務的角度,客戶對數據庫其實有更高的要求。第一個要求是數據不能錯,第二個要求是服務不能停,第三個要求是事務高併發處理能力。陽振坤補充道,全世界有非常多的數據庫廠商,近年來也進入了國產數據庫的繁榮時期,但是能真正把業務角度客戶關注的這三點做到,並在實際生產中全面應用的其實少之又少。如今,OceanBase 已經可以做到水平擴展,不需要重新拆分業務,就可以在主庫做交易處理,在備庫做數據分析處理,甚至在未來可以在主庫上同時完成交易和分析的處理。這一技術上的革新很好地克服了分庫分表方案的弊端。陽振坤介紹道,OceanBase 跟分庫分表最根本的區別在於分庫分表是多個庫,而原生分佈式是不管有多少臺機器仍是一個數據庫。用戶可以像使用一個傳統商業數據庫一樣來使用它,這就很自然地應對了站在業務角度客戶所關注的三方面要求。
數據庫的成長髮展離不開業務的打磨。OceanBase 今天有數以萬計的服務器,晝夜運行在支付寶整個系統裡,它從邊緣系統到次重要系統最後引用到核心系統,一步步經過應用實踐檢驗發展過來。OceanBase 在多年前就成功實現異地多活跨城應用,陽振坤分享道:OceanBase 異地的多活,跨幾個城市的多活,具有很成熟的實踐基礎,因為支付寶的業務早就是國際型了。到目前為止,這個實際場景所帶來的技術實現依然具有實踐意義和參考價值,技術也是非常領先的。
如今的海量數據處理系統,不論是大數據系統還是數據倉庫,都是分佈式——原生分佈式。再回過頭來看關係型數據庫,尤其是 OLTP 數據庫,目前仍然是以單機/集中式為主。不是 OLTP 數據庫不需要做分佈式,而是分佈式的OLTP數據庫的研發異常艱難。但如同汽車終將代替馬車:回想起150多年前,汽車剛剛被髮明時,馬車還是最主流的交通工具,當時在馬路上優先通行的是馬車,汽車也沒有生態。而到了2020年的今天,作為主流交通工具的馬車早已成為遠古的過去,汽車早就成為了不可逆轉的主流。所以,OceanBase 正在撰寫數據庫的現在,創造數據庫的未來,值得期待。
關於 OceanBase 數據庫
2010年,OceanBase 項目立項。
2011年,淘寶收藏夾上線。
2014年,支付寶交易庫上線。
2015年,網商銀行成立,OceanBase 成為全球首個應用在金融核心業務系統的分佈式關係數據庫。
2016年,OceanBase 1.0版本在支付寶賬務系統上線,支撐12萬筆/秒支付峰值。
2017年,支付寶首次把賬務庫在內的所有核心數據鏈路全部遷移到OceanBase上,創造4200萬筆/秒數據庫處理峰值紀錄。
2017年,OceanBase走出阿里對外商用,先後在南京銀行等多家商業銀行落地。
2019年,OceanBase 參加國際標準的數據庫 TPC-C 基準性能測試,以6088萬 tpmC 登頂 TPC-C 性能榜。
2020年,OceanBase 再次登頂 TPC-C 測試性能榜首,並創造了7.07億 tpmC 的新紀錄。
2020年,OceanBase 公司成立,以專注發展 OceanBase 數據庫,向客戶提供更專業服務。