OceanBase CTO楊傳輝:數據庫集中式與分佈式一體化設計纔是核心系統替代的未來

時至今日,數據庫作爲基礎軟件仍被列爲制約我國工業發展的“卡脖子”技術之一。爲了攻克這個由來已久且亟需突破的難關,數據庫國產化的探索已經走過了十年有餘。從2008年阿里提出“去IOE”到國產數據庫百花齊放、逐步應用於核心業務系統的當下,也許就如同OceanBase CTO楊傳輝所言,“大多數人看到的只是結果,看不到的是一朝變現的十年積累”。

這些積累,讓越來越多的國產數據庫開始直面以Oracle爲代表的國外商業數據庫。雖然在單機性能、優化器、複雜查詢處理等能力上相對Oracle還有一定差距,但通過分佈式的技術架構,不少國產數據庫在海量併發下表現出了更優於Oracle的擴展性和高可用,並以HTAP爲突破口,向Oracle發出了新一輪的挑戰。

從懷疑到相信,數據庫國產化走了十年,那麼從相信到完成核心替代,國產數據庫還有多長的路要走?dbaplus社羣聯合發起人、新炬網絡董事/副總經理程永新於2021 DAMS中國數據智能管理峯會上,同期對話OceanBase CTO楊傳輝,和大家一起關注目前國產數據庫在技術和生態上的優劣,並基於核心替代的用戶需求和考量,找準優化提升的發力點。

1639105485014.jpg
OceanBase CTO楊傳輝接受dbaplus社羣聯合發起人、新炬網絡董事/副總經理程永新採訪

受訪嘉賓:楊傳輝(上圖左),花名日照,OceanBase創始成員&CTO,主導了OceanBase技術架構設計,實現分佈式數據庫在覈心金融場景零的突破。同時也主導了OceanBase TPC-C測試並打破世界紀錄。著有專著《大規模分佈式存儲系統:原理與實踐》。

採訪者:程永新(上圖右),dbaplus社羣聯合發起人,新炬網絡董事/副總經理,擁有超過20年IT行業管理經驗,計算機本科、碩士研究生及香港科大EMBA。

數據庫自研的底氣與考量

## 從懷疑到相信,缺乏的已不是核心技術,

## 而是“先喫螃蟹”的驅動力

程永新:10年前,OceanBase破壁而生,同時也成爲了數據庫國產化的倡導者。在您看來,這10年裏,隨着國產數據庫的百花齊放,國內對國產數據庫替代Oracle所持態度有了怎樣的改變?

楊傳輝:這幾年我覺得企業對國產數據庫替代Oracle的態度有了明顯改變,企業界對開源的態度也有了很大不同。之前大家對這件事是懷疑居多,比如說Oracle具備但國產數據庫不具備的功能、Oracle做得很成熟但國產數據庫並不完善等等;到了今天,大家已經逐漸由懷疑轉變爲相信,相信國產數據庫替代Oracle大概率是能成的,只是還需要時間,主要原因有二:

一、整個國產數據庫行業已經基本具備了核心技術,包括OceanBase登頂了TPC-C,其它國產數據庫也在很多場景、甚至是比較核心的場景打磨上有了很大提升,不管是在哪個行業都或多或少有了一些成功案例。

二、國家的推動,國家近年來陸續出臺了自上而下的行業政策,在國家政策的支持下,信息技術國產化替代是大勢所趨。

程永新:根據你們的市場調研和服務經驗,目前數據庫國產化的進展如何?可以真正做到核心系統替換的比例有多少?

楊傳輝:我個人認爲數據庫國產化可以分成兩個階段:

第一階段,國產數據庫需初步具備產品技術的能力,也就是要先具備核心技術,並且在某些特定場景上具有成功案例。目前各家國產數據庫在一些核心場景上已經有了不少成功案例,所以我覺得第一階段基本算是完成了。

第二階段,國產數據庫能真正實現商業化,能夠通用地推廣到所有行業,這個階段目前僅僅只是剛開始。

以對數據庫要求最高的金融行業爲例,金融機構裏大致可分成三種類型的系統:第一類是外圍系統,比如辦公系統。這類系統目前替換Oracle的進展很快,相信不需要很長時間都會被替換掉;第二類是一般的核心繫統;第三類是最核心的交易、支付、賬務等跟錢有關的系統,以及跟社會正常運轉有關的系統。目前第二類和第三類系統的替換仍處於早期階段,比例大概在10%-20%之間的程度。

程永新:多數企業對替換Oracle還有哪些技術層面和非技術層面的考量?

楊傳輝:這個問題我們可以從數據庫替換的兩大挑戰來看:

第一個是穩定性的挑戰,因爲Oracle主要用在交易類場景,企業要換其它數據庫尤其是OLTP數據庫,是一個非常慎重的決策,哪怕出一點點問題,都會牽連到整個業務,所以大家有很多穩定性的擔憂,需要長時間打磨、嘗試灰度後再慢慢替換掉。

第二個挑戰在於OLTP型的數據庫跟業務之間的關聯度較弱,比如做一些偏AI的數字化項目,能產生多大的業務價值往往是顯而易見的,因此企業採用新技術去完成的主動性會比較強。而對於替換數據庫這種項目,考慮得更多的是降低成本,但衆所周知Oracle的盜版比較多,在應用了盜版的情況下,企業主動更換數據庫的意願相對來說就比較低。所以行業的相關政策將會起到很關鍵的作用,因爲大家其實都接受了數據庫國產化這個趨勢,只是比較缺乏“先喫螃蟹”的驅動力。

程永新:Oracle的優化器能力和軟硬一體機方案這兩大優勢目前仍走在國內外數據庫廠商前列,這也是很多企業無法輕易替換Oracle的重要考量。您認爲目前OceanBase在這兩方面有哪些優劣勢?未來應該如何補齊短板?

楊傳輝:首先關於優化器能力,OceanBase優化器的框架其實和Oracle有點類似,但我們的強項在於擴展性比較好,無論是10臺機器、100臺機器,還是1000臺機,我們都能擴展,而Oracle並沒有考慮這方面的設計。不過OceanBase優化器對複雜應用場景的適配還需要不斷打磨。比如在CRM、ERP這些對優化器挑戰比較高的場景,OceanBase相對於Oracle還是有差距的。

另外關於軟硬一體機方案,其實OceanBase也有一體機的模式,但不是我們的重點,而且我們跟Oracle的邏輯不太一樣。Oracle軟硬件結合的方案,是融到它的內核設計裏的,很多方案想做到高效其實要依賴於硬件。但OceanBase的內核是架設在普通PC服務器之上的分佈式架構,對硬件基本沒有太大依賴,所以理論上我們只是賣一個軟件,但爲了適應部分行業客戶的需求我們也有一體機。

程永新:現在國產數據庫產品種類繁多,其中基於開源做二次開發的思路也非常普遍,在這種情況下,您覺得對標Oracle難在哪裏?

楊傳輝:以前的集中式數據庫可以分爲開源數據庫和商業數據庫兩種類型。開源數據庫處理簡單查詢的能力並不弱,但Oracle這樣的商業數據庫除了能處理簡單查詢,還能處理更加複雜的甚至是一部分OLAP類的查詢,所以本質上Oracle是在一個集中式架構下實現了HTAP的混合負載處理。

這種複雜查詢的能力就是開源數據庫與Oracle之間存在的最大差距。從內核的角度來看,今天的國產數據庫不少都是基於開源數據庫做的二次開發,這會存在一個較大的問題:如果企業後期想增加更多能力,尤其是涉及到複雜查詢這種要改動內核的能力,這類數據庫基本上是無能爲力的。

所以想要對標Oracle,首先要能處理複雜的查詢、能支撐內核的修改,這就需要具備自研可控的能力。另外還需要有兜底的自信,很多國產數據庫廠商都問過我們OceanBase敢不敢做核心業務,我說肯定敢做,因爲我們有兜底的能力。這麼多年來,OceanBase在行業內做核心業務的過程中也遇到過一些問題,但基本上都能在很短時間內解決,我們給客戶的承諾是沒有解決不了的問題。

還有很重要的一點,已經發展幾十年的Oracle單機性能非常出色,這是剛起步不久的國產數據庫目前無法超越的,還需要花長時間並通過衆多業務場景打磨來優化,在此過程中就需要用到分佈式架構,原因有二:一是能在短期內彌補自身單機性能的不足,二是從長遠來看能享受分佈式帶來的高可用、可擴展的技術紅利。當你具備了原生分佈式架構的能力,既能通過分佈式架構把Oracle替代掉,又能把單機性能優化上來,也就是在一套系統裏既能做集中式處理,又能做分佈式處理,這將會是非常有前景的事情,我認爲這種集中式與分佈式的一體化設計纔是未來。

分佈式的疑慮與HTAP的上下求索

## 追求快速且可持續發展的企業,

最終都會走向數據庫一體化架構

程永新:鑑於現在大家普遍都意識到分佈式是大勢所趨,什麼都想往這個方向靠真的合適嗎?您覺得對於企業選型來說,什麼情況下更適合用分佈式數據庫?

楊傳輝:目前市面上有很多分佈式數據庫,走的路線也不盡相同,我覺得大家首先應該辨認清楚什麼樣的分佈式數據庫才能真正迎合未來的發展,這就要從分佈式數據庫經歷的三代演變說起:

第一代NoSQL系統,毫無疑問是無法代表未來的;第二代可擴展的SQL處理,犧牲了單機性能、成本和安全等企業級特性,註定無法支持核心場景;第三代其實就是我前面提到的集中式與分佈式的一體化設計,既具備分佈式的優勢,又兼備單機的性能和功能。當數據量較小的時候,它的運行邏輯、使用方法、運維方式,都跟單機類似,數據量變大時又具備擴展能力,我認爲這樣的一體化架構才真正代表未來。

那麼回到選型的話題,對於考慮選用可擴展性數據庫方案的企業來說,他們多數都有數字化轉型、推動業務更快速發展等需求,這類企業做數據庫選型時,其實不必糾結到底該選集中式還是分佈式,而是應該選一體化。相反,如果企業只需要持續做好傳統業務,不會有分佈式的需求,也就沒有必要強制去換一個分佈式系統。所以我的觀點是,想追求快速發展的企業,最終都會走上一體化的架構。

程永新:您覺得相對於傳統數據庫,分佈式數據庫的運維成本和管理成本到底是升了還是降了?

楊傳輝:如果企業本身數據量較小,卻硬要做分佈式的方案,那成本肯定會變高,但如果是做一體化的架構,成本其實沒有太大變化。

而對於數據量特別大、管理很複雜的企業來說,會有兩種選擇,一種是用原生分佈式,另外一種是用分庫分表。兩種選擇對比來看,原生分佈式的運維複雜度會遠遠低於分庫分表。以螞蟻集團爲例,我們在雙11做彈性,需要在雲上加減很多服務器,實現快速擴縮容,整個過程要做幾十萬次的變更操作。以前我們用分庫分表的方案,基本是沒辦法做成自動化的,後來用了原生分佈式,幾乎所有操作全自動化,最終能做到幾千臺服務器的分佈式集羣只要一個點擊就可完成。

程永新:這麼看來,運維成本確實下降了很多。

楊傳輝:是的,不過還是需要有一個循序漸進的過程,企業剛開始不熟悉分佈式的時候,可能會覺得運維和管理成本比集中式要高,因爲分佈式的門檻比集中式高很多,前期要學習很多分佈式的新東西。

程永新:分佈式帶來的優勢無疑是巨大的,比方說可以做到兩地三中心、三地五中心這樣的異地多活解決方案,能否在你們實際案例中列舉一個比較好的例子?

楊傳輝:OceanBase應用於金融、電信運營商這些行業的核心場景裏,都是用RPO=0的無損容災技術,其中最大的部署是螞蟻集團,目前是三地五中心的部署。剛開始螞蟻集團是部署在杭州的,自從2015年發生了光纖被挖斷的事件後,螞蟻集團意識到同城的風險,認爲要變成一個三地五中心的架構才能徹底解決高可用的問題。

我們以銀行爲例,以前IBM推廣的一個架構也叫兩地三中心,對同城的進行熱備,對異地的進行冷備,但是以前DB2推廣的基於大機的兩地三中心,其同城的熱備和異地的冷備其實都是不一致的,所以以前的銀行系統裏如果主庫宕掉了,備庫是不敢拉起來的,這樣就會丟數據。某大型銀行的大機就曾經出現過故障,最終結果是銀行服務停掉,然後等,因爲不知道丟了多少數據,沒人敢下決策。

程永新:真正的雙活或多活,確實是分佈式數據庫最大的優勢,因爲像Oracle和DB2這種傳統數據庫,其實很難做到主節點宕掉之後,備節點可以實時接管業務,這個壓力是非常大的。

楊傳輝:是的,所以OceanBase在工商銀行裏做的對公理財業務用的就是兩地三中心RPO=0的部署,當主庫宕了之後備庫可以隨時拉起來。

程永新:從TPC-C和TPC-H榜單確立的領先地位,不難看出OceanBase在OLTP和OLAP上都達到了一定高度,也表現出OceanBase在兩者融合的HTAP上發力的決心。HTAP真的可以做到魚與熊掌皆可兼得嗎?

楊傳輝:HTAP是指在一套系統裏既做好OLTP,又做好OLAP,從理論上來講,其實很難把兩種東西都做到極致。以OceanBase的HTAP爲例,我們引入了分佈式架構,具備了擴展性、高可用等能力,但目前在複雜查詢的能力上相比Oracle還有一定差距,很多時候這並不是理論上的差距,而是工程實現上的差距。所以我認爲,我們現在還不到去摳最後一點理論差距的時候,而是需要把更多時間和精力放在自身工程細節的打磨上。

最終,如果你的HTAP能在OLTP上做得跟Oracle旗鼓相當,在OLAP上也能做到與純粹的OLAP系統達到90%以上的接近,能把工程細節做到這種程度的話,其實已經對絕大部分場景非常友好了。對於用戶而言,面對一些複雜OLAP,他在那一點點的極致與複雜性上會怎麼選擇?我認爲大多數用戶主要還是看重便捷,只有少數用戶比如說需要全公司跑個數倉,纔會真的要追求那麼一點點的極致。

程永新:您覺得OceanBase的HTAP與其它國產數據庫的HTAP相比有哪些差異?

楊傳輝:OceanBase的HTAP其實有點像是具有擴展性的Oracle。OceanBase的HTAP是一個能做核心OLTP的HTAP,這是目前大多數HTAP還做不到的。因爲它們一開始並沒有採用一體化架構,而是用了分離架構,只能處理外圍場景的分佈式需求。

而OceanBase既能應用於外圍場景,也能應用於核心場景,可以說OceanBase是目前唯一一款能夠應用於核心場景的原生分佈式數據庫,在交易、支付、賬務這些核心業務上我們都有真實的案例,而且基本上沒有做太大的改造。

開源的真材實料與真心實意

核心代碼開源,重投入社區運營,

生態建設立下大決心

程永新:OceanBase開源不久就受到了很大關注,目前用戶接受程度和反饋如何?

楊傳輝:一個產品能不能成爲一個頂尖的開源項目,我覺得最核心在於它本身是不是一個頂尖的好產品,而不是它開源了。

OceanBase經過十幾年的發展,無論是在TPC-C上打榜、在螞蟻集團的應用,還是在很多關鍵行業的落地都積累了比較高的知名度。正因爲有這樣的基礎,OceanBase在開源第一天,社區就吸引了將近3000個關注,經過5個多月的持續更新改進,目前OceanBase社區共吸引了全球21000多位用戶,200多位開發者,產生了500 Commit代碼提交,超過50家企業深度實踐。

對於這次開源,我們抱着非常大的決心,是真的把核心代碼開源出來了,所以OceanBase在MySQL兼容這塊是全部開源的,並沒有遮遮掩掩。但作爲一家商業公司,我們也考慮到開源一定要和商業融合在一起,才能持續做下去。當想清楚了這兩點之後,我們一年之內就投入了幾十人,連技術佈道師都參與到社區運營當中,這種規模可以說是重投入了。

程永新:簡單總結就是,OceanBase的開源版本和企業版本,其實是一套內核,內核中for MySQL的一整條線全部開源了,只是企業版本里for Oracle的那條線沒有開源對吧?

楊傳輝:是的,因爲for Oracle那條線會涉及到Oracle的兼容性,以及Oracle的功能,所以是不開源的。

程永新:會不會擔心別人拿你們的核心代碼改造出另一個OceanBase?

楊傳輝:我們不怕。因爲數據庫的研發需要經過長時間積累而成,而且既然做了開源這個選擇,就意味着這個開源社區不會被OceanBase一家公司完全掌控。但因爲我們在其中是投入最多的,而且我不認爲還會有其它公司能夠像我們一樣重投入去維護,所以我們還是很有底氣的。

程永新:您認爲OceanBase要成爲一款通用的可完成核心替代的數據庫,還有多長的路要走?將重點在哪些方面發力?

楊傳輝:我對國產化核心替代抱有非常樂觀的態度。這幾年,我們都看到數據庫這個行業的變化特別快,如果回到5年前,核心替代是大家想都不敢想的事,那麼未來5年等我們再回過頭看現在,可能就會發現沒什麼是替代不了的。

在我看來,我們目前只在極少數的核心場景中相比Oracle業務需求還有一些差距,比如說在數據量大且查詢複雜的運營商CRM系統。所以我們還需要在複雜SQL上繼續完善和突破,除此之外其實在穩定性、擴展性、高併發等能力上都已經具備了。

另外,目前國產數據庫都缺少的是案例,有了越來越多的案例就會有越來越多的DBA和開發者進入這個生態,慢慢的整個生態就可以做起來。

程永新:現在越來越多國產軟件加入到開源的生態裏,您覺得有什麼利弊嗎?或者說對國產數據庫行業的推動作用大嗎?

楊傳輝:國產數據庫其實有兩類,一類是自研,一類是基於開源做二次開發。比如一款基於MySQL做二次開發的數據庫,儘管會進行國產化的改動,但不管它開不開源,本質還是MySQL大生態的一部分,這樣就會面臨一個問題:當MySQL原生版本更新、功能改變之後,這款基於MySQL舊版本改造的數據庫,有可能就無法與新版本匹配,導致很多使用上的困難。所以,這類數據庫要解決的是怎麼讓用戶進入它特有的生態,而不是依舊停留在MySQL的生態裏。

OceanBase則屬於自研類國產數據庫,我們從0到1打造了一個獨立於MySQL和PostgreSQL以外的第三個生態,所以和二次開發類數據庫的性質是不太一樣的。但是當大家都以不同形式加入到整個開源生態裏,競爭也好協同也好,都會對國產數據庫行業產生很大的推動作用。

專訪後記

在本次專訪過程中,讓人印象深刻的,是楊傳輝提到OceanBase在短時間內多次刷榜並登頂TPC-C和TPC-H的從容,他說,“OceanBase雖然從2019年纔開始打榜,但其實我們在做這款數據庫的第一天,就看過TPC-C的打榜要求,並開始爲此做相關儲備”。這種十年磨一劍的韌性和毅力,可能就是一款國產通用數據庫實現核心替代的最大底氣吧。
來源: dbaplus社羣

點擊進入獲得更多技術信息~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章