10月2日,據權威機構國際事務處理性能委員會(TPC,Transaction Processing Performance Council)官網披露,中國螞蟻金服自主研發的金融級分散式關係資料庫OceanBase,在被譽為「資料庫領域世界盃」的TPC-C基準測試中,打破了由美國公司Oracle(甲骨文)保持了9年之久的世界記錄,成為首個登頂該榜單的中國資料庫產品。


跑TPC-C benchmark是不限制硬體的,只要你能通過其中的事務ACID測試和其他的一些測試,無論你用什麼硬體,跑出好成績就是英雄(反過來呢?恐怕只能是狗熊了)。自從2010年Oracle以3000萬tpmC登頂至今,9年時間新跑出了十幾個TPC-C benchmark,但沒有一個打破這個記錄。難道其他資料庫廠商不想打破這個記錄?肯定有在想的。9年時間難道硬體性能沒有提升嗎?假如摩爾定律依然適用,處理器的性能應該提升了2^^6=64倍,就算摩爾定律已經失效,9年時間硬體性能的提升也小不了,怎麼區區一個3000萬tpmC還干不掉?就像博爾特2009年創造的100米短跑9秒58世界記錄,10年都過去了,全世界最優秀的短跑選手想不想打破這個記錄?做夢都想啊,可就是破不了啊。

為什麼呢?因為第一,研製OLTP資料庫太難了,第二,通過TPC-C的測試也很難。比如ACID測試,全世界的分散式資料庫,能夠通過這個測試的,我知道的只有Google的Spanner和阿里巴巴/螞蟻金服的OceanBase,也許還有一些我不知道的,但肯定不會多,否則Oracle的3000萬tpmC早就被干翻了。國內除了OceanBase之外沒有任何一個資料庫通過測試,多少也說明一些問題。所以,TPC-C benchmark是不限制硬體的,你用多好的硬體都可以。當然為了一定程度的公平性,TPC-C還要求測試者必須報告成本(被測系統3年的total cost of ownership)以便計算性價比。所以總體來看,TPC-C是首先鼓勵你通過測試,其次才是披露性價比。

為了便於感興趣的朋友進一步了解TPC-C測試,我們把OceanBase做TPC-C benchmark測試過程中的感受和體驗寫了出來,供大家參考。

資料庫OceanBase創始人陽振坤:通關TPC-C到底有多難??

mp.weixin.qq.com圖標


OceanBase參加tpc測試,獲得tpc-c分項總分第一,在輿論屆收穫大量冷嘲熱捧。

由於謙虛內斂的民族特質,人們總是喜歡看到低調的掃地僧,資料庫性能測試這個事情,恰恰中國的學術界和產業界都是追趕者,沒有掃地僧那樣無人能望其項背的實力,商業公關上,卻有正常宣傳甚至適當美化的需求。

於是,各路不懂行的,以為是上海交大陳進打磨漢芯般的造假,懂行的,則以【堆機器誰不會】【乘著摩爾定律的東風躺贏】嗤之以鼻。

我做的軟硬體產品,在一些細分的領域裡,超過國外最好的也有好幾次,其實也不必跪久了站起來不習慣。你們問我怎麼看這個事,我要說,能拿到這個第一,含金量非常高,很多貌似理客中的IT從業人員大大低估了拿這個第一的難度,批評不在點子上,對數據的解讀也存在明顯的紕漏。同時,阿里這個軟體技術能力和Oracle相比還有差距,遠遠談不上第一,也更談不上兩倍的碾壓,有些行外人也是自信過頭過度吹捧了。

常見的幾種觀點和問題,釋疑如下:

1.用2019年的成績和2010年Oracle的成績對比,公平嗎?

目前也沒啥更公平更權威的性能測試了。當然,如果有組織能搞個資料庫奧運會,跟百米短跑一樣,大家用同樣的硬體,同樣的時間來比賽,那就更公平啦。這裡要澄清幾個誤區:Oracle公司也並不是2010年之後就沒興趣搞tpc測試了,2013年還搞了一次的,圖中第四名就是,那次硬體規模要小很多,且沒有rac。

2.阿里用更好的硬體跑了個高分,勝之不武嗎?

這個就和超級計算機排名一樣,美國最新的summit沒出來之前,中國神威之光排第一,summit出來後神威之光降到第三。神威之光和summit的硬體架構、處理器類型、處理器數量完全不一樣,但榜單本來就是排的計算能力,這是超級計算機的綜合實力體現。同理,tpc-c考察的是單位時間內處理事務的能力,不是每個CPU每赫茲主頻的處理能力。

3.只要Oracle願意,隨時能奪回第一嗎?

Oracle的單機性能非常強悍(這個看每tpmc的價格可以大概看出來),在數百個節點的集群下,Oracle奪回第一是大概率事件。但,Oracle的rac目前是依賴共享存儲的,節點數擴展是有盡頭的,受制於盤櫃,ocean base是分散式資料庫,不依賴共享存儲,水平擴展的潛力更大。

4.這個tpc-c測試已經沒落了,大廠都不屑於玩了?

確實不熱鬧,20年來,軟體商也就Oracle,微軟,ibm,sybase,sap幾個在玩。Oracle也有六年沒有提交了,最近三年只有一個韓國公司在提交測試報告。因為資料庫市場寡頭壟斷,排名評測的熱度和頻次確實遠遠不如手機等消費品。但要說Oracle ibm不屑於玩,排名毫無價值也是非常不客觀的。

5.搞一次測試要4個億,所以小創業公司玩不起?

這是沒認真看報告瞎胡鬧。tpc要求廠商提供3年綜合擁有成本(包括軟體,硬體,維護服務)。以第一名和第二名為例,阿里的3年硬體成本是6700萬人民幣,Oracle的終身硬體成本是1600萬美元(再次敲黑板,可以看出Oracle的實際硬體成本是多麼低,性能是多麼強悍)。超過80%都是軟體成本,對廠商自己搞測試來說,軟體是沒有成本的。而且阿里用的是雲伺服器,3年6700萬,測一個月不到200萬,哪有四個億那麼誇張。

6.硬體上到底是多大的差距?

有人說根據摩爾定律,阿里用32倍的CPU做出了2倍的性能。這也是民科,隨著集成電路工藝水平提升,摩爾定律早就失效了。阿里這次用的CPU主頻更高,核心數量更多,線程數量相當,但是有兩個不確定的點,一是,阿里雲的vCPU跟實體intel CPU可能並非一比一的映射,二是,sparc CPU可能強於同主頻的x86 CPU。

還有一個容易被忽視的地方,阿里的測試方案,數據盤用了喪心病狂的nvme SSD,而Oracle用的機械硬碟。資料庫應用屬於IO密集型,這個可能也是阿里得高分的重要因素。我們可以再次看出Oracle的性能多麼強悍。

更新:重新看了一遍oracle的測試方案,發現兩家的存儲硬體性能差距沒有那麼大。遠遠沒有辦公檯式機上ssd和機械硬碟差距大。

Oracle用的是盤櫃,除了存儲redo日誌的28台盤櫃沒有用flash陣列,另外69台都用了當時世界上最快的flash存儲產品sun F5100(世界最快是Oracle官網自己說的)。由於F5100實際用的是DRAM,在現在也是不過時的,比ssd的NAND flash快。

Oracle資料庫內置一個功能,可以把索引放在F5100上,性能會有極大提升。

此外,盤櫃本身必然有RAID,raid卡一般也帶幾個G內存緩存的(Oracle方案披露的是x4270m當做盤櫃機頭,有沒有raid卡緩存我沒看到),這個也大大緩解了機械硬碟的性能問題

7.阿里是分散式,Oracle是單機的嗎?

不是。表中寫了,排名第二的Oracle方案用了RAC集群和分區。排名第四的沒有用rac。


這裡是OceanBase的主架構師,螞蟻金服研究員日照的訪談,有很多乾貨,推薦大家看看:

螞蟻金服自研資料庫OceanBase如何登頂TPC-C?

mp.weixin.qq.com圖標

同時挑個小bug,日照把oracle的硬體成本算錯了。

1.Oracle的那個測試,硬體成本沒有3000多萬美元。Oracle整個方案的硬體、軟體授權、三年維護一共才3052萬美元,怎麼可能硬體就佔3000多萬美元呢?難道軟體和三年維護費才不到52萬美元嗎,哈哈。日照在另外一段裡面也說了oceanbase這個方案硬體價格只佔18%,怎麼可能Oracle的硬體會佔98%?在說這個數字之前應該再仔細核實一下就好啦。問題出在哪裡呢,Oracle最後算總價的時候有個折扣的,差不多打了5折。當然,oceanbase方案也有折扣,只算了軟體的折扣。

所以,從阿里和Oracle官方提交的報價來看,Oracle方案大概是1600萬美元的硬體,阿里方案是6700萬人民幣。阿里方案的性能數據好一倍。

2.oceanbase的硬體成本算的是3年雲主機價格。Oracle的是實體機。如此昂貴的實體機不可能3年就報廢。如果運行9年,阿里方案的硬體成本就是2億人民幣了,Oracle的硬體成本仍然是1600萬美元。這麼比的話,雲主機的硬體成本反而是高的。外界怎麼解讀?要麼oceanbase達到同樣性能並不不是那麼省硬體,要麼阿里雲相比實體機沒有性價比(還是和Oracle旗下那種貴的要死的小型機比)。實際上這麼大規模的資料庫實例,既沒有CDN這種全國多地部署的需求,也沒有今天一台明天10台的彈性需求,還是買實體機更划算的。

3.考慮到Oracle是9年前的硬體報價。IT資產貶值是超級快的。Oracle 2010年測試用的那一坨硬體,現在估計400萬-800萬美元就能買下來了。

4.此外,說穩定性,應該也是Oracle勝出。公有雲的穩定性怎麼可能跟實體機相比?阿里雲的x86+linux怎麼可能跟Oracle的sparc+solaris比。要是阿里雲的穩定性好於Oracle的實體機,那就違背常理啦,PR也要講基本法。

小錯挑完,歡迎大家過去看乾貨,了解一下分散式資料庫跟oracle RAC到底有什麼區別。


強答一波,最高贊已經說了這是拿19年提交的資料庫和10年提交的在比,略顯尷尬。不過好歹是贏了也是進步。

我想吐槽的是我之前調研這個資料庫的遭遇:

看了朋友圈文章介紹ob的文章去翻了一下,號稱開源的oceanbase在github開源地址上release了0次,最後一次提交是5年多以前,某個子目錄的readme給了最新版本0.4.2的下載和文檔鏈接,我點了幾個文檔地址發現都是打不開的外鏈。

在網上繼續搜資料的時候,看到某開發者的吐槽(地址):0.4.2的問題太多,在14年的時候發郵件問項目組,說0.5在內測了馬上開源,過了幾個月說專利申請中,再過了幾個月說公司上市中暫停開源項目。emmm,然後暫停到現在19年了。。。。原文截圖如下:


看著評論拿靠著摩爾定律來說事的真是笑了。

這些人是不是覺得軟體開發出來,靠著摩爾定律,跟著硬體18個月性能就可以翻一翻了?連摩爾定律是什麼都沒搞清楚,就急著拿出來當自己下跪的理由。

以下是對於那些拿摩爾定律來跪的人的反駁理由,以及簡單解釋資料庫的難點在哪,篇幅比較長,不想看可直接拉到最後看結論。

摩爾定律不過是對硬體發展趨勢的一個預測,他不是什麼自然定律!

在計算機剛出來的前幾十年也確實符合這個規律在不斷發展的。但隨著集成密度越來越接近當前材料的物理極限,摩爾定律早在十年前已經開始放緩。以桌面cpu為例子,11年上市的第一代i7-980單核主頻便可睿頻到3.6GHz。如今最強的i9-9900k,單核主頻最高也僅能達到5.0GHz。CPU的單核處理能力可以簡單的理解為ipc*主頻,而第九代的酷睿相對第一代的ipc大概也只有不到兩倍提升。綜合下來單核處理能力大概是3倍的提升,怎麼就有32倍了?

硬體我不是專業人士,以上只是簡單的舉例,反駁哪些那摩爾定律來冷嘲熱諷的可笑言論。上面沒有說多核和超線程,是因為這裡針對摩爾定律說的單位面積可容納的晶體管數目這點。單核頻率之所以增長緩慢,一個原因是晶體管密度接近當前使用材料的物理極限。增加主頻,會導致發熱太高散不出去。

日常使用軟體的很多場景下,靠的還是單核性能,很多玩遊戲的人應該理解這點。單核頻率發展到一定程度之後,開始另闢蹊徑,發展多核處理器。而一個應用能不能在多線程、多核、多CPU甚至多機器集群下發揮他們的性能,這就是軟體的功勞了。特別像資料庫這種有強事務要求的軟體。在成千上萬的分散式機器集群下,既要處理速度也要保證事務正確。

再來說說軟體是不是能隨著硬體性能增長,處理能力也能等比提升?

在一定數據量範圍內,是可以的。基本也僅限於單機的場景下,基本上機器的性能越好,軟體的處理能力也越強。這裡說的單機,就是一台完整的計算機,包含了CPU、內存、存儲、網卡等等。這些,除了CPU前幾十年符合摩爾定律發展,其他硬體都沒有CPU發展的這麼快。單機的硬體性能也是有上限的。

我們以資料庫為例,他要處理數據,中間經過哪些硬體。這裡只是作為例子,簡化了處理過程。首先業務應用是通過網路將數據處理請求發給資料庫伺服器,要經過網卡。然後資料庫收到消息後,查找對應需要處理的數據,可能緩存在內存中,如果緩存里沒有,可能要在硬碟里找。找到數據後,交由CPU處理。CPU處理完成,先暫存到內存,再要持久化到硬碟。這才是一個資料庫處理事務的完結。最後再將處理完成的消息經過網卡返回到業務應用機器上。這裡根據木桶效應,任何一個硬體達到瓶頸,就達到了整台機器的瓶頸。

早期資料庫軟體也一直是在單機上發展,軟體上通過緩存策略、多線程、更優的存儲策略、更優的演算法等等來提升。硬體層面不斷的提升單機性能,還有更快更可靠的存儲能力。可能一台資料庫伺服器的價格,需要上千萬,甚至整個集群價格要上億。而這些大型軟體和大型伺服器,基本都被ORACLE和IMB壟斷。不管軟體還是硬體出問題,都只能這些公司的人來給處理。而且人家工程師來一趟,是從出門開始按小時計費,每小時價格,可能頂得上很多很多人的月薪了。所以阿里當年最早提出去IOE(IBM,ORACLE,EMC)的理念。

那麼單機達到瓶頸,是否可以通過更多的機器來並行實現呢?是可以,但有很多難題需要解決。

比如不通數據存在不同機器的硬碟上,那一筆數據處理請求,如何找到他對應的機器?

如果我做一個統計類的查詢,而這些數據都在不通機器上,要怎麼計算?

要保證數據的安全,數據不止存一份。數據會同一個機房兩台機器各存一份,同城兩個機房各存一份,異地兩個機房相互備份,這樣一筆交易處理涉及的網路延遲怎麼解決?

比如支付這種動作,涉及了付款人和收款人兩個人的數據。他們兩個人數據可能在不同機器,甚至不同機房不同城市。每次支付交易,都涉及從全量數據裡面找到相關的兩個人,那這個處理的複雜度,就是數據量的兩倍複雜度。

實際場景中,有更多更複雜的計算,處理複雜度甚至是和數據量是指數級的關係。當處數據量達到一定程度後,再往上增長100%、甚至50%都可能都是很難的事。

寫在最後,對這事怎麼看

Oracle可能今天能拿出更好的成績,他們能9年不再去上這個榜單刷新自己的記錄,因為沒有對手啊。這是人家作為曾經資料庫領域壟斷者的體面,我沒有任何否認ORACLE的水平。但今天保持了9年的記錄被OceanBase打敗了,如果ORACLE再上去打出更好的成績我也很高興。至少在資料庫這個市場里我們中國能有一家企業的產品可以讓ORACLE感到威脅。據我所知,現在螞蟻金服也在向銀行輸出OceanBase的方案。當有銀行使用OceanBase來替代Oracle的時候,不管這個榜單成績如何,ORACLE未來降價是必然的。就像很多傳統領域一樣,當中國打破西方壟斷後,整個市場的價格就是斷崖式下跌。OceanBase能有今天能成績,我覺得對國內所有人來說都是件好事。不知道樓上各位酸什麼?

另外就算Oracle再次刷新記錄到榜首,我相信OceanBase也會跟進。或者其他國內資料庫也會跟進,很多互聯網公司都在去IOE,都在自研資料庫。有競爭才會變得更好。性能要多強,最終還是要落到實際場景中。中國的互聯網人數規模擺在這,實際的需求擺在這,總會有公司來突破。

這個榜單就像手機或電腦跑分,他不能完全代表實際使用體驗。而OceanBase他是實實在在支撐雙十一這種每秒近50萬筆的交易處理,實際涉及到資料庫的事務處理,每秒是上千萬。請樓上幾位跪Oracle的,說說Oracle提供解決方案的哪家公司,有這樣數據並發量的實際場景?

最後的最後

用知乎好多年,很少發言,因為很多領域自己並不清楚,只能做好一位讀者。今天碰到和自己從事行業相關的話題下,發現原來會有這麼多人並不懂,卻能這麼無腦黑國產的當一個慕洋犬。甚至有自我介紹寫著是程序員、開發者的人,不知道這些人是蠢還是壞。忍不住來答,知乎首答,文章可能寫的不夠好,各位多多包涵。


說的是這個嗎?


推薦閱讀:
相关文章