在剛剛結束的年度發布會上,OceanBase正式推出一體化數據庫的首個長期支持版本 4.2.1 LTS,這是面向 OLTP 核心場景的全功能里程碑版本,相比上一個 3.2.4 LTS 版本,新版本能力全面提升,適應場景更加豐富,有更全面的容災解決方案。
自發布以來,我們陸續收到很多客戶、用戶對一體化的好奇與咨詢,我們希望通過本文和大家更深入地探討 OceanBase 對一體化理念的思考和探索。
OceanBase 13 年前剛成立的時候,業界有很多非常流行的開源數據庫,比如大家都很熟悉的 MySQL,但是 MySQL 數據庫有兩個問題:只能處理簡單查詢,無法處理復雜查詢;只能處理小數據量,很難做擴展及處理大數據量。
正因此,團隊決定開始研發分布式數據庫 OceanBase,用一體化的思路解決單機與分布式的難題,不僅能處理小查詢,也能處理大查詢,從 KV 到 TP/AP一體化,從簡單查詢到復雜查詢,OceanBase 一直在通過應用場景不斷驅動自身創新,這也是 OceanBase 設計一體化思路的初心。
從 2010 年至今,OceanBase 專注 OLTP(事務處理)場景,逐步實現了多個一體化:TP/AP 一體化、云上云下一體化、單機分布式一體化。從 1.x 發展到今天的 4.x,在用戶的支持下,OceanBase 的產品能力得到了飛躍發展。作為自研數據庫的一員,聚焦到“關鍵業務負載”的核心系統訴求,我們需要在穩定性、高性能、高兼容和性價比這幾個維度上持續突破和深度打磨,這是 OceanBase 的核心競爭力,也是 OceanBase 在技術投入和產品打磨上一直以來投入的最重要的關鍵方向。
在一體化思路的指引之下,OceanBase 沒有選擇復用開源數據庫的代碼,選擇了一條應用驅動技術創新、完全自研的發展道路。在這個路線指引之下,OceanBase ?做了大量的技術創新,把分布式領域的核心技術逐步融入到關鍵數據庫領域里。
例如:通過把 Paxos 引入到關鍵數據庫,實現 RPO=0,RTO<8 秒;通過“三地五中心”實現了業內首個城市級無損容災;打榜 TPC-C,并且取得世界第一的成績;提出單機分布式一體化架構,并且把 LSM-Tree 存儲引擎引入到關鍵數據庫里面,大幅度地降低了存儲成本......
一體化的設計思路簡單來講可以分成三個層次,為了便于大家理解,我們以造房子作為舉例:
首先,需要搭地基,一體化思路的地基即2022年發布的單機分布式一體化架構,主要解決數據規模的問題,數據可大可小,有了這個架構之后,不管多大多小的數據量,都可以用一套系統全部統一地解決掉。
其次,在一體化架構基礎之上,進一步搭建一體化引擎,包括一體化的存儲引擎、一體化的事務,一體化的 SQL 引擎,以及云上云下存儲計算分離的引擎。這個層次主要解決了數據的存儲與計算問題。
第三,有一體化引擎之后,進一步搭建最終的一體化產品,即房子。這個產品解決的是如何給客戶提供數據服務的問題,包括如何支持多種工作負載、實現多種數據模型、實現多種數據接口、實現多種兼容模式等。
與傳統的關系型數據相比,JSON、XML 等半結構化數據的處理方式更加靈活,因此在處理復雜的應用中顯得尤為不可或缺。與此同時,對于處理 GIS 和 KV 等多樣數據的需求也日益凸顯。在此過程中,數據庫經歷了從事務型到分析型,再到支持 HTAP 兩種類型的發展,企業通常會根據不同問題使用不同的數據庫,這也導致了數據庫的不斷增加,數據的使用和管理變得越發復雜。而 OceanBase 今天的一體化思路核心理念是用一個數據庫解決 80% 的問題,注意這里是 80% 的問題,不是百分之百的問題。
一直以來,OceanBase 專注于 OLTP 場景,從 2010 年開始逐步打造滿足現代數據架構需求的多模態、多兼容模式、多租戶、多工作負載、多基礎設施等核心能力,推出的一體化數據庫,為用戶提供簡化復雜性的全新可能性。
-
多租戶:統一技術棧,極大簡化數據庫基礎設施的復雜度。OceanBase 在早期 1.0 版本已經實現工程一體化,并提供多租戶以及資源隔離能力,可將更多的數據庫實例整合一個集群中。從用戶業務視角不用再關心資源隔離問題,可直接通過多租戶帶來的統一技術棧,即可極大簡化數據庫基礎設施的復雜度,并顯著提高系統利用率。
-
多兼容模式:一個數據庫,同時兼容 MySQL 和 Oracle。OceanBase 2.0 版本開始提供多兼容模式,高度兼容 Oracle 和 MySQL,支持存儲過程、觸發器等高級特性。用戶無需關心兼容性問題,通過一體化 SQL 引擎同時兼容 MySQL 以及 Oracle 主流數據庫,同時提供自動遷移工具,支持遷移評估和反向同步以保障數據遷移安全,支撐金融、政府、運營商等關鍵業務系統升級。?
-
多工作負載:一份數據,所有工作負載中提供出色的性能和性價比。3.0 版本加速進化多工作負載能力,用戶無需關系 ETL 復雜性,通過一個系統、一份數據就可以在高性能 OLTP 基礎上支持實時分析能力,并從根本上保持數據一致性。
-
單機分布式一體化架構:一個數據庫,滿足用戶從小到大的業務規模化訴求:4.0 版本推出,用戶無需關心集中式或分布式技術路線選型,可以在業務量小的情況下從小規格單機部署起步使用完備功能的單機部署形態,隨著業務壓力的變化將數據庫從單機平滑擴容到多機甚至超大規模的分布式集群,同時具備多機平滑縮容到單機的能力,通過一套數據庫滿足業務從小到大的集中式和分布式架構訴求。
-
多模型:一個數據庫,支持多種現代數據類型:4.0 版本開始提供多模型能力,通過OBKV提供融合多模數據支持,無論應用的簡單性還是復雜性,無論處理的是關系型數據、JSON、Key-Value 還是 GIS 等非結構化數據,都可以在同一個的數據庫上獲得卓越的支持,降低應用開發難度和運維復雜性。
-
多基礎設施:從“云下”到“云上”,按需選擇基礎設施:4.0 版本開始支持本地數據中心、阿里云、AWS 等多基礎設施以及跨基礎設施部署,通過一致的架構和一致的管理顯著降低復雜性。每一個企業的基礎設施都各不相同,不論是應用還是數據庫都可以部署在專有云、公有云和混合云中,選擇權完全交給企業自己。
?
去年,OceanBase 發布了業內首個單機分布式一體化數據庫 4.0 (小魚),單機分布式一體化的核心是采用一套系統,實現從單機到分布式對用戶完全透明。通過單機分布式一體化架構,可以實現可大可小,既能應用到大企業,也能應用在中小企業,甚至是一些創業公司。此外,OceanBase 單機分布式一體化架構在平滑伸縮、小規格部署、RTO <30s 縮短至 RTO<8s 的故障恢復能力方面上均進行了創新。
有了單機分布式一體化架構這個底座之后,就可以進一步搭建一體化的存儲引擎、一體化的SQL 引擎,以及存儲計算分離的引擎。
(一)一體化存儲引擎
今天,業內都在談論 HTAP,眾所周知? OLTP 需要行存,OLAP 需要用列存,如何設計一套一體化的存儲引擎能夠把行存和列存完全融合到一套系統里面,有兩種比較經典的設計思路。
第一種設計思路,OceanBase 是一個 Shared-Nothing 的多副本架構,每個副本仍然采用相同的存儲格式,都采用行存或者都采用行列混合式存儲,所有的 OLAP 和 OLTP 的請求都直接由主副本提供服務,這種方式的好處很明顯,它沒有任何一致性的問題,也沒有任何數據延時的問題,但是它的問題在于因為沒有支持列存,所以 OLAP 能力相對來講差一些,比較適合 OLTP+非常輕量的 OLAP 的場景,比如跑批,或者 OLTP 場景里面的復雜查詢。
第二種設計思路,OceanBase 的多個副本可以采用不同的存儲格式,主副本支持行存支持OLTP,某一個備副本用列存來支持 OLAP。這種方式的好處在于通過引入列存大幅度提升了 OLAP 的處理能力。但是,問題在于主副本與備副本之間會額外引入毫秒級的延遲,有短暫時間的數據不一致,比較適合簡單的 OLTP 的場景加上中等的 OLAP 的場景。當然,今天講的 HTAP 無法解決百分之百的 OLTP+OLAP 融合到一套系統里面的問題。
(二)一體化 SQL 引擎
談到混合負載,就一定有簡單查詢,也有復雜查詢。如何設計一套一體化的 SQL 引擎把簡單查詢和復雜查詢融入到一套系統里面去?
因為簡單查詢,用戶比較關注簡單查詢的延遲,所以簡單查詢比較好的實現方式是串行執行,并且由 SQL 層往存儲層拉數據;復雜查詢因為涉及的數據量比較大,用戶比較關注能否發揮整個數據庫所有的并行處理能力,比較好的實現方式是用并行執行,SQL 層把執行計劃下推到存儲層,從而降低網絡上數據傳輸的開銷。
今天 OceanBase 的一體化 SQL 引擎實現了推拉結合的模式,對簡單查詢拉數據,復雜查詢推執行計劃,通過這樣的方式實現了把簡單查詢和復雜查詢很好地融入到一套系統里。同時,OceanBase 支持了一個非常有用的功能叫 Auto DOP,自動設計并行,優化器可以根據統計信息自動地判斷到底應該采用簡單查詢、串行執行還是并行執行以及并行執行具體的并發度。
當然,只要講到混合負載一定面臨簡單查詢與復雜查詢 OLTP 與 OLAP 之間資源隔離的問題,之前 OceanBase 已經支持了在數據庫內部的 CPU 和內存的資源隔離,今年 OceanBase 進一步增強了基于 IO 能力的資源隔離。
(三)存算分離引擎
作為一個多副本的 Shared-Nothing 架構,如何把 Shared-Nothing 架構部署到多云基礎設施也是一個很大的技術挑戰。這里面涉及到如何把 Shared-Nothing 架構與通常在云上的 Shared-Storage 架構融合起來。? ??
比較幸運的是,OceanBase 的底層存儲引擎是 LSM-Tree,雖然 OceanBase 采用了多個副本的存儲架構,但是 LSM-Tree 把數據分成了基線數據+增量數據,OceanBase 多個副本之間的基線數據是一模一樣的。
當 OceanBase 把多個副本部署到多云基礎設施的時候,此時,多個副本的基線數據可以共享同樣一份共享存儲,最終可以做到只有接近一份數據的存儲成本。當然,OceanBase 也可以通過一些日志副本或者仲裁副本的方式,進一步降低計算成本的開銷,最終做到接近一個副本的存儲,接近兩個副本的計算,實現 RPO = 0,并且在云上實現了彈性,最終做到 Shared-Nothing 和 Shared-Storage 架構完美融合。有了一體化引擎之后,就可以在引擎之上進一步地搭建一體化的產品。
過去一年,OceanBase 在一體化的產品層面做了很多事,舉三個例子:
(一)一體化 SQL 功能
一體化的設計理念有一個核心的目標,就是希望能夠做到在分布式架構實現與集中式數據庫與單機數據庫完全對標的 SQL 功能,但是某一些? SQL 功能在分布式架構下是非常難以實現。
舉兩個例子。第一個例子是大事務,如果一個大事務設計的參與數、分區數特別多,比如幾萬個甚至幾十萬個參與者,分布式事務基本上不可能完成;另外一個例子是表鎖,比如要在分布式系統里面鎖住一張表格,這張表格設計的分區數特別多,因為要鎖每個分區,所以這也基本上不可能實現。這個問題的本質在于,原有的原生分布式數據庫一般來講每個分區有一個獨立的日志流,使得大事務表鎖這樣的操作,它的復雜度會與分區的個數成正比。
OceanBase 通過單機分布式一體化架構,通過其中的動態日志流的技術,把一臺機器上所有的分區動態地融入到一個日志流里面,使得大事務、表鎖這樣的復雜度只與機器數成正比,不與分區數成正比,最終在 4.2 版本里,OceanBase 實現了任意大事務沒有限制,以及全功能的 DDL,包括表鎖在內。
(二)多模融合
這里面的多模型不僅僅在一個產品里面支持多個不同的模型,還包括如何實現多個模型之間的互相操作。
舉個例子,OceanBase 經常有一些 HBase 的用戶,有人說 HBase 的接口比較好用,但是 HBase 獨接口特別簡單,語義不夠豐富,不支持 SQL。當很多 HBase 用戶把他們的業務遷移到 OceanBase 之后,他們仍然使用與 HBase 兼容的方式來寫入,但是讀取的時候直接采用 SQL 語言。在發布會現場,很多人已經前往展臺體驗了多模 Live Demo,現場有很多直接用 HBase、JSON 等寫入、SQL 讀取的場景實例。
OceanBase 4.0 版本開始提供多模型能力,通過 OBKV 提供融合多模數據支持,無論應用的簡單性還是復雜性,無論處理的是關系型數據、JSON、Key-Value 還是 GIS 等非結構化數據,都可以在同一個的數據庫上獲得卓越的支持,降低應用開發難度和運維復雜性。
(三)一體化產品家族
工具產品方面,我們希望圍繞關鍵業務負載場景做工具產品核心能力的升級, 去兼容更多的關鍵生態,在過去一年無論是 ODC、OMS、Binlog,還是 OCP、OAS 都在面向關鍵業務場景做了大量的能力升級。
ODC,打造企業級協同開發平臺?
ODC 致力于打造企業級的開發者協同平臺,把企業需要的安全合規流程融入到數據庫開發者的工作流程中,使得所有的變更操作都可以做到可回溯、可回滾,這件事情對于核心業務場景、關鍵業務負載非常重要。
OMS,雙向同步、一鍵逃生
所有把OceanBase應用到關鍵業務負載的客戶一定會提兩個需求:第一個,希望能夠做到老系統與新系統之間的長期并跑,一鍵逃生。另外,希望能深度掌控 OceanBase。OMS 提供了雙向同步的能力,長期并跑一鍵逃生,萬一新系統出現問題,不管什么原因,最終都能夠保證一鍵逃生到系統。
OCP 全場景管控+ OAS 診斷自治,一體化智能運維診斷平臺?
在 OCP 層面,OceanBase 進一步增強了診斷監控功能,支持全場景的管控。通過積累在螞蟻、支付寶多年的運維、穩定性相關的經驗,進一步將產品進化成 OAS 自助服務輸出給客戶。
Binlog,打通 MySQL生態
同時,OceanBase 也在持續完善 MySQL 及 Oracle 兼容性,在新增內核兼容功能的同時還提供 MySQL Binlog 協議的支持,幫助用戶更方便地把數據庫接入到下游 MySQL 生態。
今天,OceanBase 4.2.1 LTS 版本正式發布 ,其是一體化數據庫的首個長期支持版本,包括三個最重要的核心能力升級:
第一,支持完整的 OLTP 功能,是面向 OLTP 核心場景的全功能里程碑版本,可以說,OceanBase 4.2.1 LTS版本的發布意味著 OceanBase 在分布式 OLTP 核心功能已經就緒,這個非常重要;第二,更是更強的性能,相比 3.2 LTS 版本,4.2.1 LTS 版本的 OLTP 性能是 3.2 版本的 1.9 倍,OLAP TPC-DS 100G 場景性能是? 3.2 版本的 2.7 倍;第三,是更低的容災成本,通過引入基于仲裁的無損容災方案,通過兩個副本實現 RPO=0。
OceanBase 4.2.1 LTS 版本有五大核心能力:
-
內核能力方面,OceanBase 4.2.1 LTS 版本包括三種技術特性,第一支持一體化的產品能力,包括混合負載以及多模能力,OceanBase 4.2.1 LTS 支持 Auto DOP 自動設置并行度 SPM SQL 執行計劃管理,相信 Oracle DBA 和用戶非常熟悉,這兩個功能對于一個企業級數據庫支持復雜查詢非常重要,支持 KV,支持 JSON,也把 LOB 的上限提升到 512MB;第二支持一體化的 SQL 和事務的能力,實現任意大小的事務無限制,并且實現全功能的 DDL;第三實現了更好的高可用的能力,既能支持與傳統的集中式數據庫完全對標的組備庫的方式,也實現了通過仲裁的方式,以兩個副本的成本實現 RPO=0。
-
性能提升方面,相比 3.2 LTS 版本,OceanBase 4.2.1 LTS 版本的 TP 性能是 3.2 版本的 1.9 倍,AP 性能是3.2版本的2.7倍,導入性是 3.2 版本的 6 倍。
-
兼容性方面,OceanBase 4.2.1 LTS 版本進一步增強了 MySQL 8.0 的兼容,并且提升了 Oracle 的兼容性,支持 DBLink、表鎖等 Oracle 常見的特性。通過兼容 MySQL Binlog 的方式直接接入到下游數據生態。
-
工具平臺方面,OMS 支持雙向同步一鍵逃生,ODC 打造企業級協同開發平臺,OCP 支持全場景的管控,OAS 實現智能診斷自治服務。可以說,大家可以把關鍵業務場景非常放心地遷移到 OceanBase 4.2.1 LTS 版本,OceanBase 4.2.1 LTS 版本不管是內核能力、遷移過程以及遷移之后的運維穩定性,都能夠很好地支持關鍵業務負載。這個版本可以讓關鍵業務負載用得非常省心、放心,運維也非常安心。
-
單機模式方面,OceanBase 4.2.1 LTS 版本支持單機模式,之所以叫單機模式,意味著它可以按需升級到多機模式,按需擴展到分布式。同時相比 MySQL 單機數據庫,OceanBase 4.2.1 LTS 版本能夠更好地支持混合負載,提供更好的數據壓縮能力,并且也有更好的高可用能力,包括前面提到的通過仲裁的方式,以兩個副本的開銷實現 RTO=0。
作為一體化的產品,OceanBase 的 OLAP 能力也在非常快速地迭代,當然了,作為 OLAP 領域新進入的一員,OceanBase 需要向業界一流的產品學習,包括 ClickHouse。
OceanBase 列存實驗室版本與 ClickHouse 的跑分演練
通過跑分可以看到,同等硬件條件之下,OceanBase 列存實驗室版本的性能在實時 OLAP 在大寬表場景已經達到了 ClickHouse 同一水平,甚至 OceanBase 的性能稍微快那么一點點。
作為從事十余年的數據庫基礎設施廠商,OceanBase 所提的一體化產品以及數據庫基礎設施,有兩件事情是永恒不變的話題:性能更快,成本更低。
OceanBase 永遠都在追求極致的性能與最佳的成本,一體化的產品正是能夠在追求分布式架構下的極致性能和最佳產品。目前,OceanBase 的單機性能已經達到甚至超過了 MySQL 的性能,在單機形態、硬件成本以及遷移學習成本上有著顯著的優勢:
-
單機部署形態成本:在單機部署形態下,在同等硬件條件下,OceanBase 的 SQL 及事務處理性能和 MySQL 相當,部分場景下存儲成本可降低至原有的1/3;
-
垂直/線性擴展帶來的硬件成本:隨著業務規模的增大,無論在云上還是 on-prem,為提升性能都需要升級硬件。在此過程中,相較于傳統數據庫的非線性成本增長(尤其是高速網絡/SAN 存儲設備的價格和單機部署時的差異巨大), OceanBase 的水平擴展可以做到真正的線性擴展,帶來的成本也是線性增長,幫助用戶更好的降低數據庫成本;
-
遷移和學習成本:OceanBase 實現了單機和分布式架構的統一,同時兼容集中式數據庫的行為和使用方式。這使得用戶在基本不修改業務代碼的情況下,能夠平滑地從單機形態擴容到分布式形態,而無需額外的遷移及學習成本。
最后,和大家分享下 OceanBase 4.x 產品路線圖。去年 8 月份,也就是去年 OceanBase 產品發布會,首次發布了單機分布式一體化架構以及 OceanBase 4.0,今年 3 月份,OceanBase 發布了面向開發者的里程碑版本 OceanBase 4.1。今天,OceanBase 發布了 4.x 的首個 LTS 版本 OceanBase 4.2.1,明年 4 月份 OceanBase 4.3 版本即將發布,包含前面提到的列存功能,明年 10 月份,OceanBase 4.4 版本將會和大家見面,支持存儲計算分離的能力。歡迎大家關注 OceanBase,一起打造更好的一體化數據庫。