OceanBase

高性能分散式資料庫系統

OceanBase是由螞蟻集團完全自主研發的金融級分散式關係資料庫,始創於2010年。OceanBase具有數據強一致、高可用、高性能、在線擴展、高度兼容SQL標準和主流關係資料庫、低成本等特點。

2020年5月,螞蟻集團自主研發的分散式關係資料庫OceanBase,以7.07億(707,351,007)tpmC的在線事務處理性能,打破了OceanBase自己在2019年10月創造的6088萬(60,880,800)tpmC的TPC-C世界紀錄。

OceanBase已經在中國建設銀行、南京銀行西安銀行、人保健康險、常熟農商行、蘇州銀行、廣東農信、網商銀行等多家商業銀行和保險機構上線。

2020年6月8日,螞蟻集團宣布,將自研資料庫產品OceanBase獨立進行公司化運作,成立由螞蟻100%控股的資料庫公司北京奧星貝斯科技有限公司,並由螞蟻集團CEO胡曉明親自擔任董事長。

2020年9月,中國工商銀行開始採用螞蟻自研資料庫OceanBase,其對公(法人)理財系統已完成從大型主機到OceanBase分散式架構的改造。

特點


OceanBase功能
OceanBase設計和實現的時候暫時摒棄了不緊急的DBMS的功能,例如臨時表,視圖(view),研發團隊把有限的資源集中到關鍵點上,當前OceanBase主要解決數據更新一致性、高性能的跨表讀事務、範圍查詢、join、數據全量及增量dump、批量數據導入。
OceanBase數據訪問特點
雖然數據總量比較大,但跟許多行業一樣,淘寶業務一段時間(例如小時或天)內數據的增刪改是有限的(通常一天不超過幾千萬次到幾億次),根據這個特點,OceanBase把一段時間內的增刪改等修改操作以增量形式記錄下來(稱之為動態數據,通常保存在內存中),這樣也使得了主體數據在一段時間內保持了相對穩定(稱之為基準數據)。
由於動態數據相對較小,通常情況下,OceanBase把它保存在獨立的伺服器UpdateServer的內存中。以內存保存增刪改記錄極大地提高了系統寫事務的性能。此外,假如每條修改平均消耗100 Bytes,那麼10GB內存可以記錄100M(即1億)條修改,且擴充UpdateServer內存即增加了內存中容納的修改量。不僅如此,由於凍結后的內存表不再修改,它也可以轉換成sstable格式並保存到SSD固態盤或磁碟上。轉儲到SSD固態盤后所佔內存即可釋放,並仍然可以提供較高性能的讀服務,這也緩解了極端情況下UpdateServer的內存需求。為了應對機器故障,動態數據伺服器UpdateServer寫commit log並採取雙機(乃至多機)熱備。由於UpdateServer的主備機是同步的,因此備機也可同時提供讀服務。
因為基準數據相對穩定,OceanBase把它按照主鍵(primary key,也稱為row key)分段(即tablet)后保存多個副本(一般是3個)到多台機器(ChunkServer)上,避免了單台機器故障導致的服務中斷,多個副本也提升了系統服務能力。單個tablet的尺寸可以根據應用數據特點進行配置,相對配置過小的tablet會合併,過大的tablet則會分裂。
由於tablet按主鍵分塊連續存放,因此OceanBase按主鍵的範圍查詢對應著連續的磁碟讀,十分高效。
對於已經凍結/轉儲的動態數據,OceanBase的ChunkServer會在自己不是太繁忙的時候啟動基準數據與凍結/轉儲內存表的合併,並生成新的基準數據。這種合併過程其實是一種範圍查詢,是一串連續的磁碟讀和連續的磁碟寫,也是很高效的。
傳統DBMS提供了強大的事務性、良好的一致性和很短的查詢修改響應時間,但數據規模受到嚴重製約,缺乏擴展性;現代雲計算提供了極大的數據規模、良好的擴展性,但缺乏跨行跨表事務、數據一致性也較弱、查詢修改響應時間通常也較長,OceanBase的設計和實現融合了二者的優勢:
UpdateServer:類似於DBMS中的DB角色,提供跨行跨表事務和很短的查詢修改的響應時間以及良好的一致性。
ChunkServer:類似於雲計算中的工作機(如GFS的chunk server),具有數據多副本(通常是3)、中等規模數據粒度(tablet大小約256MB)、自動負載平衡、宕機恢復、機器plug and play等特點,系統容量及性能可隨時擴展。
MergeServer:結合ChunkServer和UpdateServer,獲得最新數據,實現數據一致性。
RootServer:類似於雲計算中的主控機(如GFS master),進行機器故障檢測、負載平衡計算、負載遷移調度等。
上述的DBMS和雲計算技術的優勢互補使得OceanBase既具有傳統DBMS的跨行跨表事務、數據的強一致性以及很短的查詢修改響應時間,還有雲計算的海量數據管理能力、自動故障恢復、自動負載平衡以及良好的擴展性。
OceanBase當前在淘寶的應用
OceanBase現在已經應用於淘寶收藏夾,用於存儲淘寶用戶收藏條目和具體的商品、店鋪信息,每天支持4~5千萬的更新操作。等待上線的應用還包括CTU、SNS等,每天更新超過20億,更新數據量超過2.5TB,並會逐步在淘寶內部推廣,也期待外部合作者。
主要的性能數據
測試軟硬體環境
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
Intel(R) Xeon(R) CPU E5520 @ 2.27GH
ChunkServer & MergeServer:Memory 16GB Disk 300GB SAS*10 NO Raid
UpdateServer & RootServer:Memory 48GB Disk 300GB SAS*6 Raid1
測試環境部署簡圖
測試數據規模
21億條數據,基準數據3備份。
測試Schema
兩張表,其中表1中有21列,表2中11列。
其中表1中的11列和表2中的11列存在join關係。
單條記錄大小為500位元組。
測試性能曲線圖
Range數據查詢
單條數據查詢
當壓力最大時,ChunkServer單台輸出數據90MB/S,已經接近了千兆網卡的極限
更新數據

應用


許多公司的核心資產是各種各樣的商業數據,例如淘寶的商品、交易、訂單、購物愛好等等,這些數據通常是結構化的,並且數據之間存在各種各樣的關聯,傳統的關係資料庫曾經是這些數據的最佳載體。然而,隨著業務的快速發展,這些數據急劇膨脹,記錄數從幾千萬條增加到數十億條,數據量從百GB增加到數TB,未來還可能增加到數千億條和數百TB,傳統的關係型資料庫已經無法承擔如此海量的數據。OceanBase解決不斷增加的結構化數據存儲與查詢的問題。
從Eric Brewer教授的CAP(一致性C: Consistency,可用性A: Availability,分區容錯性P: Tolerance of network Partition)理論角度分析,作為電子商務企業,淘寶和其他公司的業務對一致性和可用性的要求高於分區容錯性,數據特徵是數據總量龐大且逐步增加,單位時間內的數據更新量並不大,但實時性要求很高。這就要求我們提供一套更加偏重於支持CA特性的系統,同時兼顧可分區性,並且在實時性、成本、性能等方面表現良好。

架構


OceanBase的邏輯架構簡圖
OceanBase架構的一些基本概念
主鍵
row key,也稱為primary key,類似於DBMS的主鍵,與DBMS不同的是,OceanBase的主鍵總是二進位字元串(binary string),但可以有某種結構。OceanBase以主鍵為順序存放表格數據
sstable
一種數據存儲格式,OceanBase用來存儲一個或幾個表的一段按主鍵連續的數據
tablet
一個表按主鍵劃分的一個(前開后閉的)範圍,通常包含一個或幾個sstable,一個tablet的數據量通常在256MB左右
基準數據和動態數據
OceanBase以增量方式記錄一段時間內的表格數據的增刪改,從而保持著表格主體數據在一段時間內相對穩定,其中增刪改的數據稱為動態數據(通常在內存,也稱為內存表),而一段時間內相對穩定的主體數據稱為基準數據,基準數據和轉儲后(保存到SSD固態盤或磁碟)的動態數據以sstable格式存儲
ChunkServer
保存基準數據的伺服器,通常是多台,為了避免軟體硬體故障導致的服務中斷,同一份基準數據通常保存了3份並存儲在不同ChunkServer上
UpdateServer
保存動態數據的伺服器,一般是單台伺服器。為了避免軟體硬體故障導致的服務中斷,UpdateServer記錄commit log並通常使用雙機熱備
MergeServer
進行靜態動態數據合併的伺服器,常常與ChunkServer共用一台物理伺服器。MergeServer使得用戶能夠訪問到完整的最新的數據
RootServer
配置伺服器,一般是單台伺服器。為了避免軟體硬體故障導致的服務中斷,RootServer記錄commit log並通常採用雙機熱備。由於RootServer負載一般都很輕,所以它常常與UpdateServer共用物理機器
凍結
指動態數據(也稱為內存表)的更新到一定時間或者數據量達到一定規模后,OceanBase停止該塊動態數據的修改,後續的更新寫入新的動態數據塊(即新的內存表),舊的動態數據塊不再修改,這個過程稱為凍結
轉儲
出於節省內存或者持久化等原因將一個凍結的動態數據塊(內存表)持久化(轉化為sstable並保存到SSD固態盤或磁碟上)的過程
數據合併(merge)
查詢時,查詢項的基準數據與其動態數據(即增刪改操作)合併以得到該數據項的最新結果的過程。此外,把舊的基準數據與凍結的動態數據進行合併生成新的基準數據的過程也稱為數據合併
聯表(join)
一張表與另一張或幾張表基於主鍵的左連接關係,類似於DBMS的自然連接
COW
Copy on Write的縮寫,在OceanBase中特指BTree在更新時複製數據備份寫入,避免系統鎖的技術手段

產品信息


2020年6月8日,螞蟻集團宣布將原有自研資料庫產品OceanBase獨立,成立由螞蟻100%控股的資料庫公司北京奧星貝斯科技,螞蟻集團CEO胡曉明擔任董事長。
2021年5月21日,國際事務處理性能委員會(TPC,Transaction Processing Performance Council)官網發布最新的數據分析型基準測試(TPC-H)榜單,其中,螞蟻集團自主研發的分散式關係資料庫OceanBase以1526萬QphH的性能總分排名30,000GB第一。
2021年6月1日,螞蟻集團自研資料庫OceanBase宣布正式開源,並成立OceanBase開源社區,社區官網同步上線。

品牌大事記


2010年:創始人陽振坤加入阿里巴巴,OceanBase 正式立項。
2011 年:OceanBase 0.1 版本發布,應用於淘寶收藏夾。
2014 年:OceanBase 0.5 版本發布,替代 Oracle 在支付寶交易系統上線,負擔“雙十一”10% 流量。
2015 年:網商銀行成立,OceanBase 成為全球首個應用在金融核心業務系統的分散式關係資料庫。
2016 年:OceanBase 1.0 版本在支付寶賬務系統上線,支撐 12 萬筆 / 秒支付峰值。
2017年:支付寶首次把賬務庫在內的所有核心數據鏈路搬到 OceanBase 上,創造 4200 萬次 / 秒資料庫處理峰值紀錄。同年,OceanBase 1.x 版本首次在阿里巴巴/螞蟻集團之外的商業銀行:南京銀行上線。
2018 年:OceanBase 2.0 版本正式發布,並在多家商業銀行上線。
2019年:OceanBase通過TPC-C 測試並以6088萬tpmC登頂TPC-C榜首。
2020年3月:3月,OceanBase正式通過阿里雲向全球開放。
2020年5月:OceanBase再次通過TPC-C測試並創造了7.07億tpmC的性能記錄。 5月21日消息,21日,支付寶宣布其自研分散式資料庫OceanBase在TPC-C基準測試中,性能分數突破億級,達到7.07億tpmC。
2020年6月:OceanBase獨立公司化運作,成立由螞蟻100%控股的資料庫公司北京奧星貝斯科技。 2020年6月8日,螞蟻集團宣布,將自研資料庫產品OceanBase獨立進行公司化運作。
2020年7月:7 月 31 日,浙江移動正式引入螞蟻集團的自研資料庫 OceanBase,首期應用於其政企網格智慧運營系統。
2020年9月:在剛剛結束的雲棲大會上,OceanBase發布了2.2版本以及全新的OceanBase一體機。2.2版本的5大特性全新亮相,具有混合負載引擎和多種容災方式,兼顧業務效率與數據安全。
2020年9月:恆生電子與OceanBase、阿里雲展開聯合測試,實現證券核心交易場景壓測峰值十倍以上增長,交易委託TPS高達37.9萬筆。
2020年9月:OceanBase推出初級認證OBCA,上線短短2個多月已有4000+人完成認證。近日,中級認證OBCP也已上線官網。9月26日,華東師範大學與OceanBase簽署戰略合作,共建“華東師範大學-北京奧星貝斯分散式資料庫聯合實驗室”。
2020年9月:中國工商銀行重要業務系統——對公(法人)理財系統完成從大型主機到分散式架構改造,順暢運行在金融級分散式資料庫OceanBase之上。
2020年10月:深圳公積金與OceanBase達成合作意向,將對業務在線辦理系統進行分散式改造,推動公積金業務辦理朝著線上化和智能化轉型。
2020年11月:山東移動計費業務系統已經正式上線OceanBase。上線後山東移動計費系統處理效率方面明顯提升,詳單處理時長從7分鐘縮短到5分鐘,處理效率提升30%;數據由原有的7T壓縮為0.7T,存儲投入成本降低90%。
2020年12月:招商證券業務系統基於OceanBase完成架構升級,首次應用於其海量行情系統和歷史收益系統,這是OceanBase在證券行業的又一重要突破。

產品服務


OceanBase 資料庫
OceanBase 資料庫是螞蟻集團不基於任何開源產品,自研的企業級分散式關係資料庫。一款完全自研的原生分散式關係資料庫軟體,在普通硬體上實現金融級高可用,首創“三地五中心”城市級故障自動無損容災新標準,具備卓越的水平擴展能力,全球首家通過TPC-C標準測試的分散式資料庫,單集群規模超過1500節點。產品具有雲原生、強一致性、高度兼容Oracle/MySQL等特性。
OceanBase 雲平台
OceanBase 雲平台(OCP)是一款以 OceanBase 為核心的企業級資料庫管理平台,提供 OceanBase 集群、租戶、資料庫等相關組件的全生命周期管理,同時也可以對 OceanBase 相關的其他組件提供管理功能。
OceanBase 開發者中心
OceanBase 開發者中心(OceanBase Developer Center,ODC)是為 OceanBase 資料庫量身打造的企業級資料庫開發平台。ODC 支持連接 OceanBase 中 MySQL 和 Oracle 模式下的資料庫,同時為資料庫開發者提供了資料庫日常開發操作、WebSQL、SQL 診斷、會話管理和數據導入導出等功能。
OceanBase遷移服務
OceanBase遷移服務(OceanBaseMigrationService,OMS)是OceanBase提供的一種支持同構或異構RDBMS與OceanBase之間進行數據交互的服務,它提供了數據的在線遷移和實時增量同步的數據複製能力。
OceanBase公有雲
OceanBase公有雲服務是由OceanBase提供的DBaas服務,在OceanBase原有的分散式基礎之上,結合公有雲的特徵,提供給用戶一個具備成本優勢,安全,彈性,免運維,並提供跨雲部署的資料庫服務
OceanBase資料庫一體機
OceanBase 資料庫一體機是基於螞蟻金融級分散式資料庫和自研可信硬體打造的軟硬一體化解決方案。
OceanBase資料庫架構
OceanBase資料庫架構