天天看點

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

作者:懸鐘Mr

什麼是OceanBase❓

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

OceanBase是由螞蟻集團、阿裡巴巴完全自主研發的分布式關系型資料庫,始創于2010年。

OceanBase具有資料強一緻、高可用、高性能、線上擴充、高度相容SQL标準和主流關系型資料庫、低成本等特點。OceanBase至今已成功應用于支付寶全部核心業務:交易、支付、會員、賬務等系統以及阿裡巴巴淘寶(天貓)收藏夾、P4P廣告報表等業務。除在螞蟻集團和阿裡巴巴業務系統中獲廣泛應用外,從2017年開始,OceanBase開始服務外部客戶,客戶包括南京銀行、浙商銀行、人保健康險等。

産品優勢

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭
oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭
  • 高性能:OceanBase采用了讀寫分離的架構,把資料分為基線資料和增量資料。其中增量資料放在記憶體裡(MemTable),基線資料放在SSD盤(SSTable)。對資料的修改都是增量資料,隻寫記憶體。是以DML是完全的記憶體操作,性能非常高。
oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭
  • 低成本:OceanBase通過資料編碼壓縮技術實作高壓縮。資料編碼是基于資料庫關系表中不同字段的值域和類型資訊,所産生的一系列的編碼方式,它比通用的壓縮算法更懂資料,進而能夠實作更高的壓縮效率。
oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭
  • 高相容:相容常用MySQL/ORACLE功能及MySQL/ORACLE前背景協定,業務零修改或少量修改即可從MySQL/ORACLE遷移至OceanBase。
oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭
  • 高可用:資料采用多副本存儲,少數副本故障不影響資料可用性。通過“三地五中心”部署實作城市級故障自動無損容災。
oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

部署方案

高可用版本

多機房部署

雲資料庫 OceanBase 多機房部署指将三個節點部署在三個不同可用區,實作跨可用區容災。

每個節點均為全能型副本,其中一個主副本提供讀寫服務,兩個備副本提供隻讀服務。當主副本發生故障時,備副本将會升為主副本繼續提供讀寫服務。

對性能和多機房可用性有着更高要求的客戶建議選擇多機房部署方案。

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

雙機房部署

雲資料庫 OceanBase 雙機房部署:

  • 将兩個節點部署在兩個可用區,其中一個節點作為主副本提供讀寫服務,另外一個備節點可以提供隻讀服務。
  • 在第三個可用區部署一個日志節點,該節點僅用于日志同步,不包含資料副本,不對外提供讀寫服務,并且日志節點對使用者不可見。

雙機房部署仍具備機房級容災能力,與多機房部署相比在成本效益上有較大提升。

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

單機房部署

雲資料庫 OceanBase 單機房部署将所有節點位于同一可用區,具備主機級别故障容災能力。

此外單機房部署還具備如下優點:

  • 兩個全能型副本同時提供讀寫能力,為您提供更高性能的資料庫讀寫服務。
  • 單機房部署的寫請求無需進行跨機房同步,同機房内寫請求的資料同步可以降低延遲時間。

單機房部署的日志節點對使用者不可見。

oceanbase資料庫:好用到哭,治愈你的資料庫困擾!😭

三種部署方案的差別

部署方案 多機房 雙機房 單機房
節點個數(購買) 3 3 3
副本方案 3F 2F1L 2F1L(同機房,無機房級容災)
全量副本數 3 2 2
日志副本數 1 1
節點個數(使用者可見) 3 2 2

功能特性

分布式事務引擎

OceanBase 資料庫的分布式事務引擎嚴格支援事務的 ACID 屬性,并且在整個叢集内嚴格支援資料強一緻性,是全球唯一一家通過了标準 TPC-C 測試的原生分布式關系型資料庫産品。

OceanBase 資料庫通過 Paxos 協定将事務日志複制到多個資料副本來保證事務的可用性和持久性。

透明可擴充

OceanBase 資料庫獨創的總控服務和分區級負載均衡能力使系統具有極強的可擴充性,可以線上進行平滑擴容或縮容,并且在擴容後自動實作系統負載均衡,對應用透明,確定系統的持續運作。

此外,OceanBase 資料庫支援超大規模叢集(節點超過 1500 台,最大單叢集資料量超過 3 PB,單表數量達到萬億行級别)動态擴充,在 TPC-C 場景中,系統擴充比可以達到 1:0.9,使使用者投資的硬體成本被最大化的利用。

高可用

OceanBase 資料庫采用基于無共享(Shared-Nothing)的多副本架構,讓整個系統沒有任何單點故障,保證系統的持續可用。支援單機、機房、城市級别的高可用和容災,可以進行單機房、雙機房、兩地三中心、三地五中心部署。經過實際測試,可以做到城市級故障 RPO=0,RTO<30 秒,達到國際标準災難恢複能力最進階别 6 級。

OceanBase 資料庫還提供了基于日志複制技術的主備庫特性,為客戶提供更加靈活的高可用和容災能力。主叢集通過向備叢集發送事務日志的方式來實作資料同步,進而確定生産叢集能夠在遇到資料損壞、災難等情況下仍然可以快速恢複業務。當 OceanBase 資料庫的生産叢集出現計劃内或者計劃外的不可用情況時,主備庫可以通過将某一個備叢集的角色切換為主叢集,進而保證系統的持續運作,最大限度地降低服務的停機時間。

另外,OceanBase 也提供基于資料塊拷貝和事務日志拷貝的實體備份恢複特性作為系統高可用的基礎元件。

混合事務和分析處理(Hybrid Transaction and Analytical Process,HTAP)

OceanBase 資料庫獨創的分布式計算引擎,能夠讓系統中多個計算節點同時運作 OLTP 類型的應用和複雜的 OLAP 類型的應用,讓資料庫使用率最大化的同時利用多個節點的計算能力,完成對 OLTP 和 OLAP 應用的支援。

OceanBase 資料庫真正實作了用一套計算引擎同時支援混合負載的能力,讓使用者通過一套系統解決 80% 的問題。相對于中國很多分布式資料庫采用的通過兩種不同的計算引擎,甚至兩套資料庫系統去分别支援 OLTP 和 OLAP 的方式具有巨大優勢。

多租戶

OceanBase 資料庫采用了單叢集多租戶設計,天然支援雲資料庫架構,支援公有雲、私有雲、混合雲等多種部署形式。

OceanBase 資料庫通過租戶實作資源隔離,讓每個資料庫服務的執行個體不感覺其他執行個體的存在,并通過權限控制確定不同租戶資料的安全性,配合 OceanBase 資料庫強大的可擴充性,能夠提供安全、靈活的 DBaaS 服務。

高相容性

OceanBase 資料庫針對 Oracle、MySQL 這兩種應用最為廣泛的資料庫生态都給予了很好的支援。

對于 MySQL 資料庫,OceanBase 資料庫支援 MySQL 5.6 版本全部文法,可以做到 MySQL 業務無縫切換。

對于 Oracle 資料庫,OceanBase 資料庫能夠支援絕大部分的 Oracle 文法和幾乎全量過程性語言功能,可以做到大部分的 Oracle 業務進行少量修改後自動遷移。在多家金融行業客戶和阿裡巴巴内部已有多次遷移至 OceanBase 資料庫的成功案例。

完整自主知識産權

OceanBase 資料庫由螞蟻集團完全自主研發,不基于 MySQL 或者 PostgreSQL 等開源資料庫,能夠做到完全自主可控,不會存在基于開源資料庫産品的技術限制問題。

高性能

OceanBase 資料庫作為準記憶體資料庫,通常隻需要操作記憶體中的資料,并且采用了基于 LSM-Tree 結構的存儲引擎,對于硬體更加友好,讀寫性能均遠超傳統關系型資料庫。

安全性

OceanBase 資料庫在調研了大量企業對于資料庫軟體的安全需求,并參考了各種安全标準之後,實作了企業需要的絕大部分安全功能,支援完備的權限與角色體系,支援 SSL、資料透明加密、審計、Label Security、IP 白名單等功能,并通過了等保三标準測試。

國産化适配

OceanBase 資料庫支援全棧國産化解決方案。迄今已基于硬體整機中科可控 H620 系列、華為 TaiShan 200 系列、長城擎天 DF720 等整機,完成與海光 7185/7280、鲲鵬 920、飛騰 2000+ 等 CPU 的适配互認工作。同時,OceanBase 資料庫還支援麒麟 V4、V10 和 UOS V20 等國産作業系統,并與上層中間件東方通 TongWeb V7.0、金蝶 Apusic 應用伺服器軟體 V9.0 等完成适配互認工作。

技術名額

資料項 MySQL模式 Oracle模式
叢集名最大長度 128(位元組) 128(位元組)
租戶名最大長度 64(位元組) 64(位元組)
使用者名最大長度 64(位元組) 64(位元組)
庫名最大長度 128(位元組) N/A
表名最大長度 64(位元組) 128(位元組)
列名最大長度 128(位元組) 128(位元組)
索引名最大長度 64(位元組) 128(位元組)
視圖名最大長度 64(位元組) 128(位元組)
别名最大長度 255(位元組) 255(位元組)
對象名最大長度 N/A 128(位元組)
表格組名最大長度 128(位元組) 128(位元組)
Char 列最大長度 255(位元組) 2000(位元組)
Varchar 列最大長度 262143(位元組) 32767(位元組)
Binary 列最大長度 255(位元組) N/A
Varbinary 列最大長度 64K(位元組) N/A
行最大長度 1.5M(位元組) 1.5M(位元組)
表最大列數 512 512
表最大索引數 128 128
索引最大列數 512 512
索引單個列最大長度 262143(位元組) 262143(位元組)
索引最大長度 1.5M(位元組) 1.5M(位元組)
主鍵最大列數 64 64
主鍵單個列最大長度 262143(位元組) 262143(位元組)
主鍵最大長度 16K 16K

應用場景

交易支付透明拆分

交易支付是螞蟻集團最核心的一個業務,最初采用的是分庫分表的解決方案。分庫分表的方案給核心業務帶來了水準擴充的能力,同時也帶來了灰階更新的能力,讓核心業務的系統性風險大大降低。但随着支付寶業務的飛速發展,發現系統中的單機容量開始出現不足,在分庫分表的架構下,這種情況隻能通過将資料繼續拆分成 M*N 份來解決,導緻一方面耗時耗力,另外一方面技術風險非常高。

而 OceanBase 資料庫利用分區表的方案及其帶來的水準擴充能力,完美地解決了這一問題。隻需要将原來的 N 份資料,每一份都通過分區表打散為 M 個資料分區,利用分區表打破單機的容量限制,就可以從資料層完成這一拆分過程,無需業務改造,極大地節省了成本,降低了技術風險。同時,OceanBase 資料庫的分區表方案也可以使得使用者完全無需關注資料的分布細節,輕松支援跨分區的分布式事務、多分區的關聯,真正實作“透明”通路分布式資料庫。

會員系統的多元度查詢

會員系統在很多企業中也都是存在的,系統中儲存了很多重要的使用者資訊。對于這些資訊,是需要從多個次元進行通路的,例如:通過使用者的 ID 查詢使用者的詳細資訊;通過使用者的手機号碼查詢使用者的詳細資訊;以年齡作為一個次元來對使用者進行分組等等。對于這種多元度查詢場景,尤其是非分區鍵查詢在海量資料的分布式場景中是經常碰到的問題。通常可以采用在非分區列建立影子表的方式來解決。但這樣的解決方式并非利用了資料庫本身的能力,隻能算是應用層的折中方案。OceanBase 資料庫可以利用分區表特性将資料打散後分布到叢集的多個節點上,進而滿足一部分的查詢需求,之後利用強一緻性全局索引功能來滿足其它次元的查詢和分析需求,在資料庫層面實作了資料分片和水準擴充能力,并且對使用者透明。

批處理系統

很多行業的批處理系統中通常會有大量批處理操作,包含多張大表關聯的複雜計算,并且涉及到大量的資料更新。批處理意味着每一次處理的資料量很大,而且有很多張大表要做關聯,經常要做一些比較複雜的查詢,并且更新量也比較大,使得傳統的集中式資料庫,出現了單點瓶頸,垂直擴容成本非常高,幾乎不可接受。OceanBase 資料庫的 SQL 引擎在經過了近 10 年的發展之後,已經擁有了很好的 SQL 執行能力和分布式計算能力,可以支撐這種複雜的 HTAP 應用。由于 OceanBase 資料庫的原生分布式資料庫特點,可以完美地解決傳統資料庫的單點性能瓶頸問題,而且還可以節省擴容帶來的成本。

繼續閱讀