隨著互聯網的爆發式增長,數據庫作為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數據庫,向客戶提供更專業服務。