自上世紀 70 年代起,關系數據庫已走過半個世紀,如今成為社會的信息基礎設施。隨著時代、應用、場景的不斷變更,給今天的數據庫提出了更多要求,如敏捷伸縮、實時分析、降本增效等。
這將為數據庫帶來哪些挑戰?未來,數據庫領域還有哪些值得開發者關注的創新與技術?
在首屆OceanBase開發者大會上,OceanBase CTO 楊傳輝(花名“日照”)、沃趣科技創始人& CEO 陳棟,dbaplus 社群聯合創始人楊建榮、PostgreSQL中文社區主席張文升,在科技訪談欄目《明說三人行》創始人盧東明的主持下,共同深入探討在數據庫前沿技術與發展,精彩對話不容錯過。
引領潮流,單機分布式一體化
盧東明:首先,請每個人用一句話和三個標簽進行自我介紹。
楊傳輝:我的第一個標簽是“工程師”,我是一名開發者;第二個標簽是“一體化”;第三個標簽是“性價比”。(后面兩個是 OceanBase 的特性)
陳棟:我的第一個標簽是 DBA,曾是阿里員工;第二個標簽是創業者,現在我正在創業,做數據庫基礎設施層的產品;第三個標簽是“一體化”,我們將數據庫、軟件、硬件做成一體化的方式,提供開箱即用的解決方案。
楊建榮:我的第一個標簽是DBA,從業多年,經歷了從 Oracle、MySQL,再到現在分布式數據庫等階段。第二個標簽是技術社區,我現在參與 dbaplus 社區的建設工作;第三個標簽是技術分享,我平常喜歡寫技術文章,曾出過兩本數據庫技術的書。
張文升:我最重要的標簽是 PostgreSQL 本身,因此第一個標簽是 PostgreSQL,第二個是開源社區,第三個是布道師。哪里有 PostgreSQL,哪里就有我。
盧東明:針對 OceanBase 最新提到的“單機分布式一體化”一詞,在大眾印象里“單機”與“分布式”是割裂分開,為什么 OceanBase 會將他們組合起來?
楊傳輝:2021 年底,我們開始分享 OceanBase 一體化的概念,當時稱為“集中分布式一體化”,但這個說法并不直觀,后來改為“單機分布式一體化”,代表 OceanBase 將兩類系統產品特性和技術優勢融合在一起,它的特點是既可以像單機數據庫一樣使用,又擁有分布式數據庫無限水平擴展的能力,對開發者友好。
張文升:如果將一個分布式系統當做一個單機系統來用,部署到一臺機器上的話,性能將大幅度降低。如何突破該瓶頸,OceanBase 有什么獨門秘籍?
楊傳輝:早期支付寶有很多 Log,DBA 總結的規律是當 Log 打開強同步時,性能會降低 35%。為什么分布式應用到單機會出現性能損失?因為分布式要做高可用、強同步的容災開銷。
隨后采取異步 Log 的模式,使得強同步的性能損失控制在 8% 以內,兼具強同步,同時不損失性能。采用單機分布式一體化的可擴展方案后,每臺機器只有一個日志流,盡管后臺需要占用一些網絡、CPU等,但對前臺的交易、TP 性能沒有影響。
楊建榮:對 DBA 來說,從單機到分布式一體化,具體涉及到哪些操作的變化?對系統有什么樣的影響?
楊傳輝:在單機分布式一體化理念下,首先要求開發者對 DBA 是透明的,擴容操作由數據庫后臺實現,對以前的業務及應用協議沒有影響。雖然數據庫擴容,但可通過動態路由來自動找到機器原始數據。因為底層架構是分布式,所以擴容后是全部支持上層功能的。而原來單機的產品無法做一體化的原因是原來的 SQL 引擎是為單機設計的,換成多機的話很多功能支持不了。
陳棟:我非常認同 OceanBase 對單機場景的關注。從我接觸的用戶需求來分析,單機場景更為大眾化。因為對于大部分的企業用戶而言,可能單機已經足夠業務所需。如果一上來就用分布式系統,那么門檻相對較高。技術是相輔相成的,在“軟硬一體化”趨勢下,硬件發展核數越來越多,可擴展性的內存、吞吐足夠大,結合硬件能力,再加上數據庫在單機上性能開銷的優化,未來在大眾化場景的適用面、接受度將更強。因此我認為,OceanBase 往單機的思路上走是很友好的。
那么在單機分布式一體化概念下,OceanBase 是更注重單機還是更注重單機到分布式的擴展性?
楊傳輝:開發者提到分布式數據庫,認為它的使用門檻較高,因此我們希望通過一體化架構來降低門檻。回答您的問題,我們更多考慮如何從單機怎么擴展到多機的使用場景。在 OceanBase 單機分布式一體化架構下,企業業務從小到大擴展的過程中,無需重寫應用。OceanBase 不僅有效幫助企業降低成本,又有面向未來的拓展能力,相信未來它的應用場景將越來越廣。
陳棟:站在用戶的角度來看, OceanBase 將方便留給用戶,把麻煩留給自己。如果從數據庫的設計角度來說,想必投入巨大,其中 ROI 如何評估?
楊傳輝:ROI 是 OceanBase 做單機分布式一體化架構設計時非常重要的關注點。OceanBase 從最開始做分布式數據庫,再到現在對單機的優化,這本來是我們要做的事情。
應用驅動技術創新
數據庫發展離不開場景需求
盧東明:OceanBase 從分布式數據庫開始已經做了 13 年,如今從分布式到單機,居然比傳統的單機數據庫 MySQL 性能還要好,OceanBase 是如何做到的?
楊傳輝:OceanBase 的存儲引擎與 MySQL 相比,有兩點優勢:一是因為 MySQL B+樹做得早,OceanBase 的引擎是在尊重經典架構的基礎上全新設計,存儲成本會更低,單機數據庫基本很少在線壓縮,但是我們可以在 OLTP 業務里做在線壓縮。二是在內存里實現大部分高頻操作,最終才能在引擎層做到性能好、成本低。
通過測試,在簡單讀寫上,相比 某國外主流數據庫,OceanBase有相對優勢;在多核擴展能力上,OceanBase 與 他們做得更好;在復雜查詢上,他們比 OceanBase 要好,但我們正在努力,今年 Q3 將優化復雜查詢性能。
陳棟:其實在國內做數據庫是一件幸福的事情,因為中國企業的業務場景復雜,存在一些機會。
楊傳輝:中國企業有不同的場景需求,比如運營商的數據查詢復雜、高并發,很過國內數據庫廠商的 復雜查詢訴求從運營商場景來的,產生了很大的幫助。
數據庫要做好,需要和應用不斷磨合。雖然 OceanBase 和其他單機數據庫在同一個水平上,但還需要一些時間來優化業務落地場景,期待幾年后,我們可以自信地回答,OceanBase 所有場景比 國外主流數據庫 更好。
盧東明:在過去十年時間里,中國應用場景的發展是全球領先的,尤其像阿里雙 11 的極端挑戰。我原來在 Sybase 公司工作時,那時候大家認為數據庫的頂級挑戰來自華爾街,只要解決了華爾街的問題,那么其它問題就能解決。但是在 2010 年前后,我們發現不知道如何解決雙11這一量級的問題,這是 OceanBase 最早解決的問題。
楊傳輝:是的,應用驅動技術創新。當前 OceanBase 在某些方面已超 國外主流數據庫,坦誠說還有好多地方沒有超越。但 OceanBase 積累了全球用戶豐富場景以及對較罕見場景的解決方案,是其它數據庫達不到的。
盧東明:真正能顛覆某國外主流數據庫的,不是他自己本身,可能是一個更好的 OceanBase。按照 他 的路徑來優化,試圖去超越它,這是很難的事。可如何跳出它的條條框框,可能還有超越的機會。
開發者喜歡的數據庫有哪些特性?
開發者最喜歡什么樣的數據庫?在不同的時間、不同的場景下,可能答案不同。
盧東明:每個人都做過開發、DBA,在各位看來,開發者最喜歡什么樣的數據庫?
張文升:我認為功能豐富、簡單好用的數據庫是開發者喜歡的。
楊建榮:我們社區做過開發者對于分布式數據庫的調研,提煉出“4+1”模型,大家對于分布式數據庫的選型有四個點:一是切入點,對于分布式數據庫的選型要求先是穩定性,其次是可擴展性。二是對硬件成本、研發接入使用成本要盡量低。三是對產品的功能、易用性比較關注,盡可能跟主流的技術棧可以兼容。四是很多公司有多種技術棧,開發者希望能對 SQL 協議兼容,讓研發接入更簡單。這點 OceanBase 相對來說,是有優勢的。
HTAP 發展趨勢
張文升:隨著業務越來越復雜,用戶會傾向于不同業務場景的解決方案,在該細分的業務場景有沒有數據庫來解決,因此部署越來越多類型的數據庫將可能成為企業的常態,但很難說有一款數據庫可以解決全部場景問題,如圖、時序、向量、多模態等,OceanBase 是怎么看待這個問題?
楊傳輝:OceanBase 攻堅 HTAP 能力。今天 HTAP 還做不到將離線分機的問題全給解決掉。未來,HTAP 可能會在 OLTP 加上在線分析,但如果是圖這類的場景不一定完全適合,要基于HTAP 做 Key Value、多模等,一個套件里有多個產品,一次性解決分布式、高可用等問題,避免額外的研發投入。
陳棟:您這邊是站在數據庫的視角來觀察,從我的視角來看,為了解決用戶對數據庫選型的問題。我們提供一個數據庫 PaaS 平臺,支持十幾種數據庫的全生命周期管理,這也是一種解決方案。
楊傳輝:是的,這個方式也是非常好。只要能滿足用戶需求的解決方案,理論上都是合理的,而且會共存的。
陳棟:作為開發者,希望數據庫可以更加開放,可以包羅更多的 API、文檔,對開發者更友好,讓類似我們這種生態公司可以更好地服務好用戶。
楊傳輝:數據庫的發展不僅靠廠商,而是廠商+生態+開發者+用戶+應用場景攜手發展。
盧東明:剛才提到 HTAP,據統計,中國有近 260 個數據庫品牌,涵蓋很多 HTAP 數據庫。在 OceanBase 提到的“HTAP”含義,和廣泛意義上大家提的 HTAP 是否有不同的地方?
楊傳輝:我將 HTAP 分成三類,第一類是將 OLTP、OLAP 一套做并集。第二類是做交集,對于本身 TP 能力和 AP 能力都比較弱的場景,交集來做大家都沒有覆蓋的場景。第三類是 OceanBase 自然衍生的思路,像 OLTP 加上 OLAP 成為 HTAP 系統應用的核心,假如連應用的核心能力都沒有的話,這種 HTAP 不是真正的 HTAP。
盧東明:有的數據庫 AP 強補足 TP 的能力,這是合理的路徑嗎?
楊傳輝:只有從TP開始才有可能成功,TP的門檻很高,涉及到核心場景。如果將核心場景做好了,往 AP 是自然延伸,相當于由高到低,如果 AP 做好了,本身 AP 的重要程度、核心程度遠遠低于TP,別人不會因為選了 AP 而選 TP。
陳棟:Oracle 也是這樣的思路,把 TP 做到極致,同時擁有部分 AP 能力、離線能力。OceanBase 后續的 roadmap 非常巧妙,拿出一個副本做列存,既升節空間,又做到數據的一致性,不需要單獨設計一個表格,我十分期待這個功能。
楊建榮:Oracle 是 HTAP 數據庫,但在列存方向上 Oracle 有 In Memory 特性,有空間換時間的實現方式。OceanBase 是如何實現的?
楊傳輝:Oracle 是 IMC 模式,不是真正的列存路線。雖然列存是更先進的方案,但 Oracle 的技術債務太大,OceanBase 沒有 Oracle 那么重的技術債務,可以直接用最優的方式來實現。
盧東明:回到剛才說的,真正顛覆掉 國外主流數據庫的不是一個更好的 他,一定是一個更好的OceanBase。希望未來還能看到 OceanBase 為我們帶來更多的創新。
百花齊放的數據庫格局下
開發者如何保持競爭力
在首屆OceanBase開發者大會上,我們觀察到 OceanBase 在過去13年,以穩定性、可擴展性和低成本正成為分布式數據庫領域的典型實踐,并不斷創新,推出單機分布式一體化架構,讓分布式數據庫走向通用。同時攻堅 HTAP 能力,讓一份數據既能做交易又能做分析,實現低延時、低成本,做一款對開發者友好的數據庫。
那么開發者如何在各種技術棧不斷演進,數據庫產品不斷迭代下,保持競爭力不斷成長?
最后,楊建榮給了 CSDN 開發者幾點成長建議:
一是多總結。好記性不如爛筆頭,多總結,讓自己看到問題就能想到解決問題的思路。
二是建立自己的知識體系,并不斷完善。
三是社區連接,多參加社區活動,多做技術分享,總有收獲的,像OceanBase開發者大會也是不錯的選擇。