數據庫

如何理性看待螞蟻金服OceanBase刷新TPC-C紀錄

廣告
廣告

OceanBase這兩天霸屏朋友圈!

一派是浮夸的宣傳,超越Oracle,世界第一,過度解讀,全面否定對手,引起了技術圈內人士的反感,因為刷新TPC-C紀錄并不能說明OceanBase現在就超越了Oracle。

另一派則是并不客觀的質疑,不僅武斷的認為OceanBase性能測試結果是靠硬件堆出來的,還臆測再測一次,Oracle拿第一不是難事,而且數字應該遠不止兩倍;其結論不僅缺乏證據,而且對分布式數據庫和TPC-C標準缺乏基本了解,略有誤導之嫌;

在以前的文章中,我就曾經說過,雖然,我們不能盲目崇信跑分,但跑分的確是一種比較直觀反映軟硬件性能的方式,尤其是數據庫這種性能測試非常復雜的產品。

我們應該如何理性看待OceanBase刷新TPC-C紀錄?我認為搞技術還是要講究事實,要理性看待還原事實。

刷新TPC-C紀錄NB嗎?

每個數據庫廠商都試圖向客戶證明自己的系統性能最好、處理能力最強,但數據庫廠商各自的性能測試數據沒有足夠的說服力。

而TPC-C作為一個OLTP聯機交易處理系統的benchmark是世界最權威的測試基準,這點相信數據庫圈內人士沒有異議,實際上,要想通過TPC-C并且拿到高分非常難,這是事實。

作為一個廣泛接受的標準,TPC-C是嚴謹的并極大地杜絕了作弊。

TPC-C要求被測數據庫必須滿足數據庫事務的ACID,即原子性、一致性、隔離性和持久性,其中隔離性為可串行化隔離級別,持久性要求能夠抵御任何單點故障等。

其次,TPC-C規定被測數據庫的性能(tpmC)與數據量成正比。

第三,TPC-C要求被測數據庫能夠以平穩的性能長期地運行。去掉啟動預熱(ramp up)和結束降速(ramp down)時間后,被測數據庫至少要性能平穩地(steady state)運行8小時,其中性能采集時段(不少于2小時)內的性能累積波動不得超過2%。

第四,TPC-C要求被測數據庫的寫事務的結果必須在一定時間內數據落盤,對于具備checkpoint功能的數據庫,checkpoint的間隔不得超過30分鐘,checkpoint數據持久化的時間不得超過checkpoint間隔。

在國內,金融,電信,政府等行業POC都以TPC-C為性能測試基準,通過TPC-C,意味著拿到了這些企業的準入證明,刷新紀錄則意味著商業化之路上競爭優勢的提升。

因此,隨著這些年在數據庫技術上不斷取得突破,越來越多的國內數據庫廠商開始打榜TPC,在我看來是一種好事,凸顯的是一種自信,同時也說明國產數據庫與國外數據庫之間的差距在縮小。

當然,要想全面超越Oracle,無論是OceanBase還是其它國產數據庫,還有很長的路要走,超越不能靠YY,不要過分解讀,但也不需要刻意低調。

2013年后為何打榜的數據庫公司變少?

我認為有三個原因:

第一,這個時間點Oracle在市場上已經全面領先對手DB2;

第二,Oracle和DB2性能太強,導致其他玩家沒機會進入前幾名,直白的說,進不了前幾名就得不到關注,測了也是白測;

第三,測試成本太高,要在完整的TPC-C測試中獲得一個高分結果,需要高昂的硬件成本,這也是榜單大部分測試主導方是硬件廠商的原因;

TPC-C測試模型過時了嗎?

TPC-C標準是1992年發布的,因此,成為一些人質疑的焦點。但TPC-C能成為數據庫OLTP測試領域事實上的最權威標準,恰恰是因為它還原了企業需求真實的應用場景,極具代表性。

簡單的說,TPC-C模擬了一個大型的在線商超業務模型,它有一個WEB站和分布在多個地域的倉庫,每個倉庫服務臨近的10個區域的客戶,每個客戶通過一個收銀點下單購買商品,有10%的可能這單訂單里本地倉庫無貨需要遠程調貨,同時所有訂單有后臺異步的物流交付。結合當前,這個模型恰好就是現在的大型B2C電商網站。

所以,經典的測試模型并不過時,只是換了一種形式映射到現實生活。

另外TPC-C標準也并不是墨守陳規,從92年提出以來一直在不斷修訂,最新一版v5.11.0是2010年發布的。

堆硬件就可以跑出6000多萬tpmC?

仔細研究TPC-C測試標準,就能很清楚的知道,TPC-C測試標準制定者已經提前預見到了這點,強制的分布式事務、數據訪問應用透明要求等諸多限制,讓通過簡單的堆砌硬件就想提升性能的可能趨近于零。 

另外,數據庫作為基礎軟件,目的就是要充分榨取底層硬件的性能并提供給上層應用,尤其對于分布式數據庫來說,能夠通過堆硬件帶來線性性能提升更是理想的目標,分布式架構的精髓就是基于廉價的PC Server來做Scale Out。而這是TPC-C榜單中Oracle RAC這種架構無法解決的。

TPC-C測試結果應該怎么看?

TPC-C測試最終評價的標準其實就兩個:整體性能tpmC以及性價比price/tpmC。

錯誤的質疑,源于并不清楚這2個核心指標,而是片面的關注總成本。

OceanBase總成本:380,452,842人民幣,性能60,880,800 tpmC,性價比是每tpmC 6.25人民幣。

Oracle總成本:30,528,863美元≈213,702,041人民幣,性能30,249,688 tpmC,性價比是每tpmC 1.01美元≈7.07人民幣

其實,總成本分為軟件部分和硬件部分,我在向螞蟻金服研究員、OceanBase主架構師楊傳輝(日照)核實后確認,OceanBase的價格中,硬件部分占比約18%,Oracle的價格中硬件部分占比約76%。

OceanBase價格高是因為軟件定價,其定價策略是,比Oracle低一點。

OceanBase真就完美嗎?

企業級數據庫的關鍵技術點在于可靠性和擴展性,TPC-C測試的前提是RPO為0確保不丟數據。

目前有三種實現方案:

第一種是IBM DB2,通過提升單機能力擴展,小型機不行就大型機,這種方案的問題在于價格和處理能力不是線性的;

第二種方案是共享存儲,Oracle測試使用的RAC方案就是這種架構,這個架構的問題在于擴展能力有限,最大擴展到幾十臺機器;

第三種方案是分布式數據庫,代表作是OceanBase和Spanner,這種方式基本做到了線性擴展,但需要存儲多個副本。通過PAXOS協議強同步,存儲成本翻倍,CPU使用也要往上翻。

這里凸顯的是TPC-C科學的一面,不限制軟件架構和硬件架構。

Oracle不支持PAXOS三機強同步,因此,無法采用和OceanBase一樣的架構實現rpo為0,一定需要依賴共享存儲來實現不丟數據。因此,在rpo為0的約束下,本質上OceanBase和Oracle只能使用不同的架構。

Oracle共享存儲成本高,但硬件很可靠,只需要一個副本;OceanBase使用普通PC Server,單機成本低,但必須存儲多個副本并打開在線壓縮,這會大幅增加CPU和存儲空間。

因此,如何選擇,相信用戶會有自己的判斷力。

老魚,企業級老編一枚,你若有故事,歡迎聯系!

企業數字化管理平臺 “讓老樹開新花”

上一篇

企業需要知道的 6個AI/ML關鍵點

下一篇

你也可能喜歡

如何理性看待螞蟻金服OceanBase刷新TPC-C紀錄

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
双色球常规走势图 股票配资排名丿选 海南环岛赛车彩票网站下载 广西十一选五任三计划 我现在在家带孩子怎么赚钱呢 江苏十一选五直播 乐购代理怎么赚钱 浙江十一选五开奖查询结果 申城棋牌手机版下载 股票分析师排名 体彩泳坛夺金 合须弥啥最赚钱 宁夏十一选五