蚂蚁金服自研数据库OceanBase如何登顶TPC-C
10 月 2 日,國際事務(wù)處理性能委員會(TPC)宣布:在最新發(fā)布的 TPC-C 排行榜中,螞蟻金服自研數(shù)據(jù)庫 OceanBase 位列第一。InfoQ 記者第一時間采訪到螞蟻金服研究員、OceanBase 主架構(gòu)師楊傳輝(日照),請他解讀這份 TPC-C 榜單,同時介紹 OceanBase 積累九年多才正式參與 TPC-C 打榜的過程和意義。
請從專業(yè)性和權(quán)威性,參與標準和參與流程上,介紹一下 TPC-C 的測試結(jié)果,對于數(shù)據(jù)庫廠商來說意味著什么?
TPC 是由數(shù)十家會員公司創(chuàng)建的非盈利組織,成立于 1988 年,總部設(shè)在美國,圖靈獎得主 Jim Gray 是奠基人。TPC 的成員主要是業(yè)界主流的計算機軟硬件廠家,其職責(zé)是制定企業(yè)級應(yīng)用基準測試考評的標準規(guī)范,并且衡量整體系統(tǒng)的性能和性價比,管理測試結(jié)果的認證和發(fā)布。Oracle、IBM、微軟等公司的多個數(shù)據(jù)庫產(chǎn)品曾多次參與這個測評并且是主要領(lǐng)先成績的保持者。TPC-C 是 TPC 組織制定的關(guān)于 OLTP 數(shù)據(jù)庫事務(wù)處理能力的基準測試,金融、電信、政府等關(guān)鍵領(lǐng)域的客戶一般參照 TPC-C 結(jié)果來衡量各個數(shù)據(jù)庫廠商的事務(wù)處理能力。
只有在 TPC 官方網(wǎng)站上得到認證,得到國際機構(gòu)審計的測試結(jié)果才是 TPC 機構(gòu)認可的測試結(jié)果。TPC-C 認證要求非常嚴格,大到性能、功能、數(shù)據(jù)一致性和容災(zāi)能力,小到測試過程中使用過的鼠標鍵盤價格,都需要嚴格披露,確保測試可復(fù)現(xiàn)且與真實業(yè)務(wù)場景保持一致。OceanBase TPC-C 僅僅認證過程就花費超過半年時間。
數(shù)據(jù)庫的核心能力包括性能、成本、功能、生態(tài)等等,而 TPC-C 是全球 OLTP 數(shù)據(jù)庫最權(quán)威的性能測試基準。TPC-C 登頂是每個 OLTP 數(shù)據(jù)庫廠商的夢想,登頂意味著具備世界級的事務(wù)處理能力,能夠滿足無論是互聯(lián)網(wǎng)還是金融、電信、政府等關(guān)鍵領(lǐng)域的核心系統(tǒng)的事務(wù)處理需求。目前在 TPC-C 指標上,螞蟻金服是唯一一家中國上榜企業(yè)。
OceanBase 此前參與過該基準測試嗎?取得的成績是什么?
幾乎每個 OLTP 數(shù)據(jù)庫都會在測試環(huán)境中跑 TPC-C 基準測試,OceanBase 也不例外。雖然 OceanBase 在阿里巴巴“雙十一”等業(yè)務(wù)場景中積累了非常好的高并發(fā)事務(wù)處理能力,但 TPC-C“打榜”難度非常之大,OceanBase 積累了九年多才選擇正式參與 TPC-C 打榜。
請詳細介紹此次 OceanBase 參與測試的全過程,包括:如何參與?過程中需要配合提交什么?
每家數(shù)據(jù)庫廠商都可以參與 TPC-C,只需要郵件聯(lián)系 TPC 官方組織報名參加即可,關(guān)鍵在于數(shù)據(jù)庫廠商有沒有能力通過測試并得到好的結(jié)果。
OceanBase TPC 審計分成三個階段:第一個階段稱為準備階段,根據(jù) TPC-C 規(guī)范的要求實現(xiàn)必須的功能并做好性能優(yōu)化,這個階段需要把測試規(guī)范理解清楚,并把每個疑問都和審計員通過郵件溝通清楚。需要注意的是,TPC-C 審計非常嚴格,一定要細化到 TPC-C 規(guī)范的每個條目,任何一條不符合規(guī)范都會導(dǎo)致測試不通過;第二個階段稱為現(xiàn)場預(yù)審計,美國的審計員來到螞蟻金服杭州總部,和 OceanBase 團隊成員一起完成功能測試、ACID 測試、性能測試、宕機測試、架構(gòu)和代碼 Review、性能成本計算等全部過程。當(dāng)時在這個過程中發(fā)現(xiàn)了一些問題,OceanBase 團隊后續(xù)幾周進行了全部的改正;第三個階段稱為正式審計,OceanBase 團隊按照審計員給的檢查列表修改完成所有預(yù)審計階段發(fā)現(xiàn)的問題,每一項都得到審計員確認后再運行最終測試,最后完成 FDR(Full Disclosure Report)完整披露報告并向 TPC 技術(shù)委員會正式提交結(jié)果。
我們應(yīng)該如何看懂目前官網(wǎng)披露的 TOP10 結(jié)果中,各類相關(guān)指標背后的意義?比如性能、價格、CPU...
TPC-C TOP10 結(jié)果中,有些是數(shù)據(jù)庫公司測試的,有些是硬件公司測試的,不同測試的硬件架構(gòu)和數(shù)據(jù)庫軟件架構(gòu)都可能有所不同。TPC-C 是開放的測試基準,不管采用什么架構(gòu)都可以來參加測試,只要符合 TPC-C 規(guī)范即可,最終的衡量標準主要是兩個:一個是性能(tpmC),還有一個是性價比(price/tpmC)。性能表示數(shù)據(jù)庫能夠跑多快,性價比表示數(shù)據(jù)庫的成本能夠做到多低。
關(guān)于性能,TPC-C 測試模擬商品交易,包含五種事務(wù):NewOrder 創(chuàng)建新訂單(占比 n/a)、Payment 支付訂單(占比>=43%)、OrderStatus 查詢最近訂單(占比>=4%)、Delivery 批量配送訂單(占比>=4%)和 StockLevel 庫存狀態(tài)分析(占比>=4%)。TPC-C 雖然沒有規(guī)定 NewOrder 事務(wù)的占比,但通過其它四種事務(wù)的占比可以反推 NewOrder 占比<=45%。而 TPC-C 的性能指標用 tpmC(transaction-per-minute-C)來衡量,表示每分鐘執(zhí)行的 NewOrder 事務(wù)數(shù),因此,實際測試時,NewOrder 占比往往都是 45%,相應(yīng)地,Payment 占比 43%,另外三種事務(wù)占比 4%。另外,TPC-C 測試要求 10% NewOrder 分布式事務(wù),以及 15% Payment 分布式事務(wù)。
關(guān)于價格,TPC-C 測試綜合計算軟硬件價格以及三年服務(wù)價格,軟硬件價格除了數(shù)據(jù)庫和存儲,還包括針對 TPC-C 場景開發(fā)的應(yīng)用系統(tǒng),甚至連測試使用的臺式機也需要計算在內(nèi)。軟件價格和硬件價格最好區(qū)分開來,硬件價格代表商業(yè)數(shù)據(jù)庫的真實成本,軟件價格代表商業(yè)數(shù)據(jù)庫的利潤。例如,OceanBase 這次 TPC-C 測試的總體價格雖然不低,但是硬件價格占比很低(不到 18%),真實性價比遠遠高于第二名 Oracle,整體性價比和 Oracle 比較接近更像是一種定價策略。另外,TPC-C 測試要求磁盤至少能夠存儲 60 天的數(shù)據(jù)量。集中式數(shù)據(jù)庫往往存儲一份數(shù)據(jù),而 OceanBase 采用 Paxos 協(xié)議實現(xiàn) RPO = 0,在 TPC-C 測試以及主流生產(chǎn)系統(tǒng)中都存儲了 2 份數(shù)據(jù)和 3 份日志,相當(dāng)于 OceanBase 需要提供 120 天的存儲容量并計入價格。
關(guān)于 CPU,這里有兩個關(guān)鍵點:
1、對于集中式架構(gòu),除了數(shù)據(jù)庫使用 CPU 之外,專用存儲設(shè)備也需要使用 CPU。例如,第二名 Oracle 3000 多萬 tpmC 的測試中,數(shù)據(jù)庫使用了 108 顆 T3 SPARC 處理器,共有 1728 個物理核心和 13824 個執(zhí)行線程,同時存儲設(shè)備使用的是 Intel 服務(wù)器作為機頭,總共使用了 97 臺服務(wù)器,194 顆 Intel X5670 CPU,2328 個物理核心。
2、TPC-C 基準測試無法簡單地通過增加 CPU 核來提升性能。這是因為,TPC-C 考察分布式事務(wù),數(shù)據(jù)庫軟件如果做得不好,無論怎么增加 CPU 也無法提升 TPC-C 性能。Oracle 因為其 RAC 技術(shù)可以把 OLTP 數(shù)據(jù)庫服務(wù)器擴展到幾十個節(jié)點,其它軟硬件廠商憑借單機無法超越,直到 OceanBase 實現(xiàn)了真正的 OLTP 分布式數(shù)據(jù)庫技術(shù)。
從結(jié)果來看,OceanBase 提交時間是 2019 年 10 月 2 日,其他幾家提交時間是 2011 年、2010 年... 為何大家提交時間如此不同?不同時間提交的結(jié)果,具有可比性嗎?
TPC-C 測試是需要有驅(qū)動力的,Oracle 2010 年測試得到 3000 多萬的結(jié)果之后就“獨孤求敗”了,其它廠商測不過,Oracle 也缺乏刷新自己保持的記錄的動機。Oracle 最新的測試結(jié)果是 2013 年 3 月份做的,在榜單的第四名,當(dāng)時也是為了推廣 Sun 的 SPARC 處理器。大家關(guān)注的往往都是榜單的前幾名,Oracle、DB2 和 SQL Server 這三家公司把 TPC-C 性能測得太高了,導(dǎo)致其他廠商基本沒有機會進入 TPC-C 榜單前幾名,與其測出普通的結(jié)果,還不如干脆保持“神秘”,OceanBase 也是準備了九年確保能夠上榜之后才正式測試。
OceanBase 和榜單前幾名的測試時間相差比較大,本質(zhì)的原因在于其它數(shù)據(jù)庫采用的是專用硬件(專用服務(wù)器 + 專用高端存儲),OceanBase 采用的是基于普通 PC 服務(wù)器的分布式架構(gòu)。采用分布式架構(gòu)之后,OceanBase 的硬件成本大幅優(yōu)于專用硬件,這幾年硬件性價比提升的主要受益者也是普通 PC 服務(wù)器。所以,這里更多是專用硬件和分布式架構(gòu)的區(qū)別,而不在于測試時間的差別。當(dāng)然,基礎(chǔ)軟件重大創(chuàng)新的時間周期是很長的,一般需要十年以上的積累,銀行核心業(yè)務(wù)今天使用的大型機還是幾十年前的技術(shù)。
據(jù)介紹此次測試結(jié)果是在阿里云支持下實現(xiàn)的,這意味著什么?硬件產(chǎn)品與測試結(jié)果之間的關(guān)系是什么?
TPC-C 測試需要考察三年軟硬件總費用,如果采用獨立部署的模式,需要購買全部硬件,例如第二名 Oracle 測試的硬件總體成本大約 3000 多萬美金,絕大多數(shù)商業(yè)公司都是玩不起的。而 OceanBase 采用阿里巴巴公有云提供的 ECS 云服務(wù)器,測試多長時間就租用多長時間,使得測試成本大幅降低。
TPC-C 測試要求在峰值性能穩(wěn)定運行 8 個小時,其中至少 2 小時性能抖動不超過 2%,OceanBase 做到了 8 小時性能抖動不超過 2%,無論對數(shù)據(jù)庫軟件還是硬件挑戰(zhàn)都非常大。OceanBase 在阿里云支持下完成此次 TPC-C 測試,總共使用了 204 臺 ECS i2 云服務(wù)器。另外,TPC-C 模擬的是銀行的交易核心,對穩(wěn)定性和宕機恢復(fù)都有嚴格的要求,說明 OceanBase 能夠在阿里云上提供金融級的可靠性。
有人說 OceanBase 取得的測試結(jié)果是被“雙十一”這樣的業(yè)務(wù)倒逼的,我們應(yīng)該如何理解業(yè)務(wù)倒逼技術(shù)?
OceanBase 從 2010 年開始立項就定位要做世界級的分布式數(shù)據(jù)庫,然而,好的技術(shù)一定要先有好的業(yè)務(wù)場景。對于數(shù)據(jù)庫這樣的基礎(chǔ)軟件,想要彎道超車,更是需要重量級的業(yè)務(wù)場景。每年“雙十一”零點的峰值壓力對于高性能數(shù)據(jù)庫是絕佳的練兵場,OceanBase 也是在阿里內(nèi)部經(jīng)過了多年的“雙十一”歷練之后才開放給金融以及其它行業(yè)的客戶。
對于數(shù)據(jù)庫這樣的通用技術(shù)來說,既要業(yè)務(wù)需求倒逼但同時又要超出業(yè)務(wù)需求。數(shù)據(jù)庫的整體設(shè)計一定是面向通用場景,遵守數(shù)據(jù)庫行業(yè)國際標準,例如針對數(shù)據(jù)庫語法的 SQL 規(guī)范,以及針對數(shù)據(jù)庫性能的 TPC-C 測試規(guī)范;同時,數(shù)據(jù)庫的功能集合很大,需要根據(jù)業(yè)務(wù)需求合理安排研發(fā)優(yōu)先級,研發(fā)團隊成員才能從解決實際業(yè)務(wù)問題中找到成就感。
我們?nèi)绾慰创龂鴥?nèi)廠商積極參與 TPC 測試?
TPC 是數(shù)據(jù)庫行業(yè)針對性能測試的國際權(quán)威標準,國內(nèi)廠商積極參與 TPC 測試,本身也是中國數(shù)據(jù)庫行業(yè)自信的一種體現(xiàn),表明中國數(shù)據(jù)庫可以逐步參與全球競爭。中國的數(shù)據(jù)庫需要回歸研發(fā)本質(zhì),具備自主研發(fā)和自主創(chuàng)新能力。對于 TPC-C 測試,我也看到部分國內(nèi)廠商采用未經(jīng)官方認證的標準,我認為這是不合適的。OceanBase 后續(xù)會將 TPC-C 測試工具開源,使其它數(shù)據(jù)庫廠商也能夠簡單地完成符合審計標準的 TPC-C 測試,進一步促進中國數(shù)據(jù)庫產(chǎn)業(yè)和國際接軌。
OceanBase 在兼容 Oracle 方面,目前的主要進展是什么?接下來的發(fā)展計劃是什么?
本次 TPC-C 測試采用的是 OceanBase 2.2 版本,OceanBase 2.2 已經(jīng)初步具備 Oracle 兼容能力,OceanBase TPC-C 測試采用的就是完全兼容 Oracle 的存儲過程語法。阿里巴巴內(nèi)部有部分 Oracle 業(yè)務(wù)已經(jīng)平滑遷移到 OceanBase,阿里巴巴外部也有股份制銀行正在將 Oracle 業(yè)務(wù)平滑遷移到 OceanBase。接下來,OceanBase 還會進一步加強 Oracle 兼容特性,重點加強分布式優(yōu)化器和執(zhí)行器的核心能力。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的蚂蚁金服自研数据库OceanBase如何登顶TPC-C的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dataphin的代码自动化能力如何助力
- 下一篇: 相信坚持的力量,我的程序员打怪升级之路