近日,OceanBase CTO 楊傳輝做客 CSDN 《開談:中國開源資料庫新格局》欄目,中達金橋資深資料庫專家盧東明對話楊傳輝等中國領先資料庫廠商從業者。對話開場,楊傳輝給 OceanBase 打了 3 個標籤:分散式、價效比、HTAP,並由此展開對中國資料庫新格局、未來趨勢、職業發展等多個話題的探討。
以下為對話精華 4000 餘字實錄。
中國資料庫應“高水平競爭”
不管是全球的 DB-Engines 排行榜,還是中國的資料庫領域排行榜,近年來,大家都非常關注中國資料庫的發展情況。據統計,2022 年 1 月,中國資料庫大約有 190 多家,到了 12 月,達到了 249 家,並且還在往上漲。關於中國資料庫市場是否正在處在百花齊放,百家爭鳴的階段?我有一些自己的看法。
OceanBase 從 2010 年開始研發,當時中國基本沒有多少人從事資料庫研發,也沒有幾家資料庫研發公司。所以,當我現在聽到已經有幾百家資料庫公司,我是非常高興的。因為不管是招聘人才,還是人才跳槽都更容易了,資料庫從業者的發展空間更加廣闊,這是一件有利於整個行業發展的好事情。
百花齊放,百家爭鳴可能會有兩個走向:一是“低水平重複建設”,二是“高水平競爭”。
雖然現在看起來有這麼多家資料庫廠商,但不同技術路線的其實沒有多少家,每條技術路線都只有幾家領頭企業。在不同技術路線上資料庫廠商越多越好,大家可以一起探索,高水平競爭。反之,如果在一條技術路線上有過多廠商競爭,這就很容易出現低水平的重複建設。重複建設過度的情況下,市場的商業化會進行整合,像美國的資料庫小廠商也有很多,但真正做大的只有 Oracle、DB2、MySQL 等幾家。
One size a bunch或是未來
2000 年之後,分散式資料庫開始發展,“分散式”這個詞在市場上剛推開時,大家在選資料庫時只有廠之分,沒有型別之分。無論是 Oracle 還是 IBM DB2,它們都是關係型資料庫,但近年品類突然暴增,比如圖資料庫、時序資料庫、記憶體資料庫。這些品類為什麼會出現?存在的意義是什麼?值得我們思考。
關係型資料庫所包含的 SQL 引擎、SQL 語言、交易處理、關係模型,其實已經基本可以滿足使用者的需求。但傳統的經典 SQL 資料庫,自身的設計是一個相對比較封閉的體系,這就導致今天的商業資料庫在發展過程中經歷了“分久必合,合久必分”。
一開始,用一體化架構來解決所有問題。像 Oracle 什麼都能做,不管是 TP 還是 AP 還是時序,即 One size fits all。
但隨著需求的發展,大家覺得 One size fits all 解決不了很多其他問題,所以提出了一個新理念——One size does not fit all,認為每一個專用的場景,都需要有一個專門的資料庫。
發展到最後,其實大家意識到這兩種說法都存在一些問題,最終應該是 One size a bunch,即一類資料庫不是隻解決某一個專用的場景,也不是解決所有的場景,而是解決一批的場景。
所以,今天 OceanBase 的 HTAP,並不是說什麼場景都能應用,而是某些 TP、AP 的交集部分,OceanBase 可以做到最好。這個場景比原來 TP、AP 的範圍更大,但不包含全部。以後預計會有越來越多的產品繼續 One size a bunch。
資料庫選型,穩定性是1
甲方的 CIO/CTO 或其他角色在選型資料庫時,面對品類眾多、品牌眾多的資料庫產品常常很難做出抉擇。每家廠商似乎都在說自己的資料庫能解決絕大部份的問題,再外加某個元件就能完全解決。
作為乙方,其實我們更需要站在甲方的角度思考問題。以 Oracle 為例,Oracle 是做得很好的資料庫產品,能在大部分場景滿足使用者需求,所以全球有很多使用者都會優先選擇它。OceanBase 有一個 Oracle 相容的功能,這個功能比 MySQL 相容難一個量級往上,但我們仍然做到了其高相容,覆蓋了其 95% 以上的常見功能。
拋開資料庫種類來看選型,資料庫的標準定義是資料庫管理系統,所以資料庫本質上解決的還是基本的資料管理、儲存、事務處理等問題。
對於 CIO/CTO 來說,選型資料庫時最重要的就是穩定性。資料庫是存資料的,越接近交易的系統,對穩定性的要求越高;越往外圍的,可以更“百花齊放”一點。這裡的穩定性涉及到很多:資料庫有沒有經過場景的打磨?資料庫的延遲,抖動等一系列難題?資料會不會丟?丟資料時有沒有備案?這些非常重要。
OceanBase 在承載“雙 11”期間遇到過很多很難的問題,我們之所以能在前期就解決,不讓問題在交易中出現,就是因為 OceanBase 做了很多這方面的預防性設計。這就像是 0 和 1 的問題,如果資料庫沒有穩定性,其他的都免談。
其次,資料庫核心能力。資料庫包括不同的種類,有不同的應用場景,但核心能力都聚焦在高可用、可擴充套件、ACID、儲存等等。資料庫要滿足功能的需求,再是易用性,這是第一個前提。在滿足功能需求和易用性的前提下,再看價效比。
如果功能滿足不了或者不好用,談價效比沒有意義。資料庫是一個長期投資,一旦選擇再更換是很難的,所以大家都會傾向於選價效比更高,使用更容易的產品。
最後,廠商的服務能力。智慧資料庫、無人運維等詞近些年大家都在提,但目前其實都沒有做得很好。任何資料庫目前還是都需要人來支援,通俗點說即遇到問題需要有兜底,這時交付、生態、社群工具等各板塊的及時響應非常重要。
開源就是要利他
目前主要有兩類資料庫公司——獨立的資料庫廠商、基於雲的資料庫廠商。
經過多年的發展,資料庫的研發模式發生了重要升級。以前的 Oracle、SAP 等傳統軟體時代,是 License 模式,不管是版本升級、反饋使用者需求,還是產品傳播的效率都比較低。而基於開源,這種社群協同的高效模式,迭代起來會非常快。對於一個獨立的資料庫廠商而言,開源是必然選,而不是一個可選項。
開源不是一個商業模式,因為很多時候是要利他的。傳統模式是廠商做好蛋糕,再去分配蛋糕;開源模式是大家一起來把蛋糕做大,每個人分一小塊,在大蛋糕裡切小蛋糕,本質上是新的生產力替代了舊的生產力,效率更高。
在我們認識到開源是必經之路後,就開始堅定地走開源路線。OceanBase 過去是完全的商業軟體,從 2021 年兒童節開源到現在的一年多時間,使用者採用開源的效率要比商業版高很多,並且擴散速度也非常快。
開源可以說是加速生態建設的必然選擇,因為對於資料庫這樣的基礎軟體,其實都是用出來的。沒有人寫的程式碼是沒有 bug 的,也沒有人能想到所有東西。在開源社群,每個使用者會以各種形式參與進來,可能是貢獻程式碼,可能是貢獻需求,最有價值的使用者給廠商提供的最有價值的東西是場景。就像當年的支付寶,它給 OceanBase 提供的最有價值的東西不是錢,而是支付寶的各種場景。
有同學問到 OceanBase 是否要開源 Oracle 相容程式碼?在我看來 OceanBase 可以理解為是兩個產品,一個是相容 MySQL 的產品形態,另一個是相容 Oracle 的產品形態,這兩個產品形態的應用場景差別很大。雖然看起來 MySQL 和 Oracle 都是資料庫,但實際上差距非常大。
網際網路有很多應用場景,在 MySQL 裡,簡單查詢是靠 DBA 去完成的,但是在更多的一些傳統業務上,Oracle、DB2、SQLServer 使用者不僅僅追求 QPS,還有很多複雜的查詢。當簡單和複雜的查詢在一個庫解決時,複雜查詢不能影響簡單查詢,這也是我認為 Oracle 也是 HTAP 資料庫的主要原因。而且在 OceanBase 的實際場景裡,我們發現 HTAP 在中小使用者中的使用是最多的。
開發者想要真正參與到社群共建,想要的也是 MySQL 模式,或者 PG 模式、MongoDB 模式,不會是 Oracle 模式,因為 Oracle 對開發者並不友好。這是開發者的需求,不是我們的企業使用者,企業使用者希望免費的不一定是開源的。
從設計架構的角度來看,我們比較開放,開源邏輯也很簡單,MySQL和Oracle模式是兩個產品形態,底層共享分散式的能力,包括事務、儲存、高可用的能力。但是 Oracle 和 MySQL 的功能有不同,總結來說:MySQL的功能全部開源,而 Oracle 的功能不開源,OceanBase 亦是如此,MySQL 模式開源,Oracle 模式不開源。
資料庫這行沒有35歲危機
很多年前,中國真正從事資料庫行業的工程師很少,但現在有了一個躍升,這個趨勢很好。OceanBase 2010 年成立時沒有這方面的人才,都是一些應屆生或者其他領域的人員應聘。中國的研發當時也比美國少很多,所以我們早期核心更看重應聘人員寫程式碼的潛力。
Oracle 和 SQLServer 裡有一些技術人員,比如資源隔離、HTAP 方面,經過幾十年積累的這些人才是妥妥的稀缺人才。OceanBase 的核心優勢是做資料庫比較早,因此美國包括 Oracle 的很多核心人才回國都選擇加入了 OceanBase,使得我們在做複雜查詢最佳化等 HTAP 功能得心應手。
OceanBase 最早的一批人都是分散式的背景,這批人基本上是中國最強的,也是最早探索的一波人。我們的核心人員大部分都是當時我們培養的應屆生,還有一部分就是從最頂尖的公司挖過來的,這些人才能讓我們在技術架構少走很多彎路。
近兩年出現了比較樂觀的一件事:以前在高校沒有人學資料庫,但這兩年開始出現了。這其實是蠻好的一件事情,並且我也認為這個行業是很好的行業、很好的工作,對於一個做技術軟體的程式設計師來說,如果會寫資料庫,就可以寫所有的軟體。
此外,資料庫領域從業者的職業生涯往往比較長,是一個非常“老中醫”的行業,對從業者和開發者都十分友好,變動往往不會太大。這一行沒有 35 和 55 的年齡差異,技術就是永遠的競爭力。我也呼籲更多的人加入這個行業,資料庫是一個有壁壘的工種,未來會越來越重要,人才也會更加稀缺。
年輕人,學到核心技術是關鍵
中國現在的資料庫市場接近 300 個品牌,而市場佔有率仍然有限。但在我看來,五年後私有化部署的資料庫,中國品牌的市場份額應該能達到里程碑式的 50%。但能否佔據 50% 的市場份額,核心在於有沒有平替的方案,其難點就在於 HTAP,既要有簡單查詢又要有複雜查詢,還要保證資料強一致。如果沒有平替的方案,可能十年都不會超過 50%。
目前,僅僅是 OceanBase 就在很多行業做了傳統資料庫的平替,包括銀行核心系統、最大的保險公司、中國移動、社保系統等這些大家認為很難平替的瓶頸被打破了。
比如,我們在運營商已經成功上線了好幾個省,攻破第一家運營商花費了一年半;在保險行業也平替了千萬條傳統 Oracle 的應用層程式碼,第一家超大型保險公司全核心替換大約花費了一年時間。當廠商積累了一定的經驗,後面幫助客戶平替的速度會越來越快。
今天,不僅是品牌多,中國資料庫的型別也很多,但就目前來說更有前景還是面向雲設計的資料庫。並且面向多雲設計的資料庫,可以說是一個必然的發展趨勢。
偏融合型的資料庫是未來的主要發展方向。雖然站在使用者角度是越方便越好,但是站在技術角度沒辦法讓使用者完全方便,因此廠商在努力做結合,可能是一部分 TP 和 AP 融合在一起,甚至可能是單機和分散式融合在一起,把這些優勢組合在一起,能適應更多場景。
這樣一來,以前使用者可能要使用十個資料庫才能滿足全部的需求,現在只要使用兩三個資料庫即可,會方便很多。所以,偏融合型的資料庫必然會越來越受歡迎。
對於資料庫從業者來說,找工作不一定要和雲資料庫、融合型資料庫完全掛鉤。因為雖然資料庫型別不同,但很多本質的技術是相通的,所以對於剛畢業的學生來說,更應該看重在哪能學到比較核心的技術,再將這些融會貫通,就會有很強的分辨能力和競爭力!