螞蟻金服自研數據庫OceanBase如何登頂TPC-C

10 月 2 日,國際事務處理性能委員會(TPC)宣佈:在最新發布的 TPC-C 排行榜中,螞蟻金服自研數據庫 OceanBase 位列第一。InfoQ 記者第一時間採訪到螞蟻金服研究員、OceanBase 主架構師楊傳輝(日照),請他解讀這份 TPC-C 榜單,同時介紹 OceanBase 積累九年多才正式參與 TPC-C 打榜的過程和意義。

請從專業性和權威性,參與標準和參與流程上,介紹一下 TPC-C 的測試結果,對於數據庫廠商來講意味着什麼?

TPC 是由數十家會員公司建立的非盈利組織,成立於 1988 年,總部設在美國,圖靈獎得主 Jim Gray 是奠定人。TPC 的成員主要是業界主流的計算機軟硬件廠家,其職責是制定企業級應用基準測試考評的標準規範,而且衡量總體系統的性能和性價比,管理測試結果的認證和發佈。Oracle、IBM、微軟等公司的多個數據庫產品曾屢次參與這個測評而且是主要領先成績的保持者。TPC-C 是 TPC 組織制定的關於 OLTP 數據庫事務處理能力的基準測試,金融、電信、政府等關鍵領域的客戶通常參照 TPC-C 結果來衡量各個數據庫廠商的事務處理能力。

只有在 TPC 官方網站上獲得認證,獲得國際機構審計的測試結果纔是 TPC 機構承認的測試結果。TPC-C 認證要求很是嚴格,大到性能、功能、數據一致性和容災能力,小到測試過程當中使用過的鼠標鍵盤價格,都須要嚴格披露,確保測試可復現且與真實業務場景保持一致。 OceanBase TPC-C 僅僅認證過程就花費超過半年時間

數據庫的核心能力包括性能、成本、功能、生態等等,而 TPC-C 是全球 OLTP 數據庫最權威的性能測試基準。TPC-C 登頂是每一個 OLTP 數據庫廠商的夢想,登頂意味着具有世界級的事務處理能力,可以知足不管是互聯網仍是金融、電信、政府等關鍵領域的核心繫統的事務處理需求。目前在 TPC-C 指標上,螞蟻金服是惟一一家中國上榜企業。

OceanBase 此前參與過該基準測試嗎?取得的成績是什麼?

幾乎每一個 OLTP 數據庫都會在測試環境中跑 TPC-C 基準測試,OceanBase 也不例外。雖然 OceanBase 在阿里巴巴「雙十一」等業務場景中積累了很是好的高併發事務處理能力,但 TPC-C「打榜」難度很是之大, OceanBase 積累了九年多才選擇正式參與 TPC-C 打榜

請詳細介紹這次 OceanBase 參與測試的全過程,包括:如何參與?過程當中須要配合提交什麼?

每家數據庫廠商均可以參與 TPC-C,只須要郵件聯繫 TPC 官方組織報名參加便可,關鍵在於數據庫廠商有沒有能力經過測試並獲得好的結果。

OceanBase TPC 審計分紅三個階段:第一個階段稱爲準備階段,根據 TPC-C 規範的要求實現必須的功能並作好性能優化,這個階段須要把測試規範理解清楚,並把每一個疑問都和審計員經過郵件溝通清楚。須要注意的是,TPC-C 審計很是嚴格,必定要細化到 TPC-C 規範的每一個條目,任何一條不符合規範都會致使測試不經過;第二個階段稱爲現場預審計,美國的審計員來到螞蟻金服杭州總部,和 OceanBase 團隊成員一塊兒完成功能測試、ACID 測試、性能測試、宕機測試、架構和代碼 Review、性能成本計算等所有過程。當時在這個過程當中發現了一些問題,OceanBase 團隊後續幾周進行了所有的改正;第三個階段稱爲正式審計,OceanBase 團隊按照審計員給的檢查列表修改完成全部預審計階段發現的問題,每一項都獲得審計員確認後再運行最終測試,最後完成 FDR(Full Disclosure Report)完整披露報告並向 TPC 技術委員會正式提交結果。

咱們應該如何看懂目前官網披露的 TOP10 結果中,各種相關指標背後的意義?好比性能、價格、CPU...

TPC-C TOP10 結果中,有些是數據庫公司測試的,有些是硬件公司測試的,不一樣測試的硬件架構和數據庫軟件架構均可能有所不一樣。TPC-C 是開放的測試基準,無論採用什麼架構均可以來參加測試,只要符合 TPC-C 規範便可, 最終的衡量標準主要是兩個: 一個是性能(tpmC),還有一個是性價比(price/tpmC)。性能表示數據庫可以跑多快,性價比表示數據庫的成本可以作到多低。

關於性能,TPC-C 測試模擬商品交易,包含五種事務:NewOrder 建立新訂單(佔比 n/a)、Payment 支付訂單(佔比>=43%)、OrderStatus 查詢最近訂單(佔比>=4%)、Delivery 批量配送訂單(佔比>=4%)和 StockLevel 庫存狀態分析(佔比>=4%)。TPC-C 雖然沒有規定 NewOrder 事務的佔比,但經過其它四種事務的佔比能夠反推 NewOrder 佔比<=45%。而 TPC-C 的性能指標用 tpmC(transaction-per-minute-C)來衡量,表示每分鐘執行的 NewOrder 事務數,所以,實際測試時,NewOrder 佔比每每都是 45%,相應地,Payment 佔比 43%,另外三種事務佔比 4%。另外,TPC-C 測試要求 10% NewOrder 分佈式事務,以及 15% Payment 分佈式事務。

關於價格,TPC-C 測試綜合計算軟硬件價格以及三年服務價格,軟硬件價格除了數據庫和存儲,還包括針對 TPC-C 場景開發的應用系統,甚至連測試使用的臺式機也須要計算在內。軟件價格和硬件價格最好區分開來,硬件價格表明商業數據庫的真實成本,軟件價格表明商業數據庫的利潤。例如,OceanBase 此次 TPC-C 測試的整體價格雖然不低,可是硬件價格佔比很低(不到 18%),真實性價比遠遠高於第二名 Oracle,總體性價比和 Oracle 比較接近更像是一種訂價策略。另外,TPC-C 測試要求磁盤至少可以存儲 60 天的數據量。集中式數據庫每每存儲一份數據,而 OceanBase 採用 Paxos 協議實現 RPO = 0,在 TPC-C 測試以及主流生產系統中都存儲了 2 份數據和 3 份日誌,至關於 OceanBase 須要提供 120 天的存儲容量並計入價格。

關於 CPU,這裏有兩個 關鍵點

一、對於集中式架構,除了數據庫使用 CPU 以外,專用存儲設備也須要使用 CPU。例如,第二名 Oracle 3000 多萬 tpmC 的測試中,數據庫使用了 108 顆 T3 SPARC 處理器,共有 1728 個物理核心和 13824 個執行線程,同時存儲設備使用的是 Intel 服務器做爲機頭,總共使用了 97 臺服務器,194 顆 Intel X5670 CPU,2328 個物理核心。

二、TPC-C 基準測試沒法簡單地經過增長 CPU 核來提高性能。這是由於,TPC-C 考察分佈式事務,數據庫軟件若是作得很差,不管怎麼增長 CPU 也沒法提高 TPC-C 性能。Oracle 由於其 RAC 技術能夠把 OLTP 數據庫服務器擴展到幾十個節點,其它軟硬件廠商憑藉單機沒法超越,直到 OceanBase 實現了真正的 OLTP 分佈式數據庫技術。

從結果來看,OceanBase 提交時間是 2019 年 10 月 2 日,其餘幾家提交時間是 2011 年、2010 年... 爲什麼你們提交時間如此不一樣?不一樣時間提交的結果,具備可比性嗎?

TPC-C 測試是須要有驅動力的,Oracle 2010 年測試獲得 3000 多萬的結果以後就「獨孤求敗」了,其它廠商測不過,Oracle 也缺少刷新本身保持的記錄的動機。Oracle 最新的測試結果是 2013 年 3 月份作的,在榜單的第四名,當時也是爲了推廣 Sun 的 SPARC 處理器。你們關注的每每都是榜單的前幾名,Oracle、DB2 和 SQL Server 這三家公司把 TPC-C 性能測得過高了,致使其餘廠商基本沒有機會進入 TPC-C 榜單前幾名,與其測出普通的結果,還不如干脆保持「神祕」,OceanBase 也是準備了九年確保可以上榜以後才正式測試。

OceanBase 和榜單前幾名的測試時間相差比較大,本質的緣由在於其它數據庫採用的是專用硬件(專用服務器 + 專用高端存儲),OceanBase 採用的是基於普通 PC 服務器的分佈式架構。採用分佈式架構以後,OceanBase 的硬件成本大幅優於專用硬件,這幾年硬件性價比提高的主要受益者也是普通 PC 服務器。因此,這裏更可能是專用硬件和分佈式架構的區別,而不在於測試時間的差異。固然,基礎軟件重大創新的時間週期是很長的,通常須要十年以上的積累,銀行核心業務今天使用的大型機仍是幾十年前的技術。

據介紹這次測試結果是在阿里雲支持下實現的,這意味着什麼?硬件產品與測試結果之間的關係是什麼?

TPC-C 測試須要考察三年軟硬件總費用,若是採用獨立部署的模式,須要購買所有硬件,例如第二名 Oracle 測試的硬件整體成本大約 3000 多萬美金,絕大多數商業公司都是玩不起的。而 OceanBase 採用阿里巴巴公有云提供的 ECS 雲服務器,測試多長時間就租用多長時間,使得測試成本大幅下降。

TPC-C 測試要求在峯值性能穩定運行 8 個小時,其中至少 2 小時性能抖動不超過 2%,OceanBase 作到了 8 小時性能抖動不超過 2%,不管對數據庫軟件仍是硬件挑戰都很是大。OceanBase 在阿里雲支持下完成這次 TPC-C 測試,總共使用了 204 臺 ECS i2 雲服務器。另外,TPC-C 模擬的是銀行的交易核心,對穩定性和宕機恢復都有嚴格的要求,說明 OceanBase 可以在阿里雲上提供金融級的可靠性。

有人說 OceanBase 取得的測試結果是被「雙十一」這樣的業務倒逼的,咱們應該如何理解業務倒逼技術?

OceanBase 從 2010 年開始立項就定位要作世界級的分佈式數據庫,然而, 好的技術必定要先有好的業務場景。對於數據庫這樣的基礎軟件,想要彎道超車,更是須要重量級的業務場景。每一年「雙十一」零點的峯值壓力對於高性能數據庫是絕佳的練兵場,OceanBase 也是在阿里內部通過了多年的「雙十一」歷練以後纔開放給金融以及其它行業的客戶。

對於數據庫這樣的通用技術來講,既要業務需求倒逼但同時又要超出業務需求。數據庫的總體設計必定是面向通用場景,遵照數據庫行業國際標準,例如針對數據庫語法的 SQL 規範,以及針對數據庫性能的 TPC-C 測試規範;同時,數據庫的功能集合很大,須要根據業務需求合理安排研發優先級,研發團隊成員才能從解決實際業務問題中找到成就感。

咱們如何看待國內廠商積極參與 TPC 測試?

TPC 是數據庫行業針對性能測試的國際權威標準,國內廠商積極參與 TPC 測試,自己也是中國數據庫行業自信的一種體現,代表中國數據庫能夠逐步參與全球競爭。中國的數據庫須要迴歸研發本質,具有自主研發和自主創新能力。對於 TPC-C 測試,我也看到部分國內廠商採用未經官方認證的標準,我認爲這是不合適的。 OceanBase 後續會將 TPC-C 測試工具開源,使其它數據庫廠商也可以簡單地完成符合審計標準的 TPC-C 測試,進一步促進中國數據庫產業和國際接軌。

OceanBase 在兼容 Oracle 方面,目前的主要進展是什麼?接下來的發展計劃是什麼?

本次 TPC-C 測試採用的是 OceanBase 2.2 版本,OceanBase 2.2 已經初步具有 Oracle 兼容能力,OceanBase TPC-C 測試採用的就是徹底兼容 Oracle 的存儲過程語法。 阿里巴巴內部有部分 Oracle 業務已經平滑遷移到 OceanBase,阿里巴巴外部也有股份制銀行正在將 Oracle 業務平滑遷移到 OceanBase。接下來,OceanBase 還會進一步增強 Oracle 兼容特性,重點增強分佈式優化器和執行器的核心能力。

做者介紹

楊傳輝(日照),螞蟻金服研究員,OceanBase 主架構師,負責 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 基準測試排名榜首。工具

相關文章
相關標籤/搜索