主流雲數倉效能對比分析

語言: CN / TW / HK

最近隨著Snowflake上市後市值的暴增(目前700億美金左右),整個市場對原生雲數倉都關注起來。近日,一家第三方叫GigaOM的公司對主流的幾個雲數倉進行了效能的對比,包括Actian Avalanche、Amazon Redshift、Microsoft Azure Synapse、Google BigQuery、Snowflake,基本涵蓋了目前市場上主流的雲數倉服務。

大家知道,傳統數倉版本的更新都是以年來計,很多客戶的數倉平臺都還是使用5年,甚至10年前的技術。而現今,公有云給這個行業帶來巨大的變化,雲原生的數倉層出不窮,技術迭代更新非常快,比如AWS宣稱其Redshfit在過去18個月有200多項更新,每週全網同步更新2-3個功能與特性,讓客戶一直執行在最新版本,能隨時使用到最新的技術。

GIGAOM在去年(2019)4月份釋出過一份類似的雲原生數倉效能測試報告,當時選取的主要是Amazon Redshift,Microsoft Azure SQL Data Warehouse,Google BigQuery和Snowflake,沒有Actian。

今年的這份報告發佈於2020年10月13日,應該是目前市場上最新的對雲數倉的效能對比了。GIGAOM將測試報告發布在其官網:https://gigaom.com/report/high-performance-cloud-data-warehouse-performance-testing/

“大部分歷史是猜的,剩下的都是偏見”

——威爾·杜蘭特(哲學家、歷史學家)

這句話同樣適用於各種Performance Benchmark對比,任何POC(Proof of Concept,搞技術的人都懂的)都是帶有偏見的,主要看誰是Sponsor。GigaOM不是慈善機構,測試肯定需要費用,開這麼多雲數倉服務,每個跑一遍測試場景,費用應該不低,所以必須有金主支援。公司在這點上還比較公開透明,首先宣告本次測試的Sponsor是Actian,所以我們可以認為Actian應該是深度參與了測試,大概率是進行了場景的選擇和調優等相關工作。GigaOM幫助選擇了測試的對手,也就是AWS、Azure、GCP和Snowflake。(備註:2019年4月測試的Sponsor是Microsoft)

下面我就這份測試報告來窺視分析一下各個雲數倉的技術特點,個人觀點,僅供參考。

平臺簡介

Actian Avalanche:2019年才剛剛開始向市場提供雲數倉的服務,基於Vector(2010年釋出的一款本地部署的MPP資料庫),主要應用在資料分析、數倉平臺。技術上也是列壓縮儲存,快取執行模型,向量技術處理資料,SQL標準遵循ANSI-2011 SQL,全託管雲服務,使用者可選擇部署在AWS、Azure和GCP上,當然它也支援本地部署。

Amazon Redshift:是市場上第一個原生雲數倉服務,MPP、列存、按列壓縮、無索引、動態擴充套件,SQL語法相容PostgreSQL,支援儲存與計算分離,按小時計費,也可以通過暫停來停止計費。

Azure Synapse Analytics:之前叫SQL DW,今年改名為Synapse。儲存計算分離,列存、按小時計費、可通過暫停與恢復來節省成本,SQL相容SQL Server(可能底層就是SQL Server)。

Google BigQuery:源於Google的Dremel技術,無索引、Serverless技術、動態調整計算與儲存資源,儲存按非壓縮資料量來計費,計算按照查詢使用的slot來計費。

Snowflake:全託管雲數倉服務,可執行在AWS、Azure、GCP之上(使用者在建立服務的時進行選擇),計算儲存分離架構,計算按需成倍擴充套件(1、2、4、8、16……)和計費,儲存按需計費。

下表格是本次測試的各數倉版本,應該都是基於2020年9月左右的最新版本了。

測試場景與資料規模

本次測試場景選取的是30TB的TPC-H,比較有趣的是在2019年的benchmark中GigaOM選取的是30TB的TPC-DS。要知道,TPC-DS有99個SQL,而TPC-H只有22個,而且TPC-DS的模型要比TPC-H複雜,那為啥本次不選擇更加通用的TPC-DS呢?

對比兩次測試的雲數倉產品,Actian是今年新加入的(其它都是老面孔),而且它是Sponsor,大概率Actian對TPC-H支撐得更好(或者說,Actian可能不能完全支援TPC-DS),以上只是個人的猜測。

畢竟,就如上面提到的,任何POC都是帶有“偏見”的。下面看看具體的測試資料:

Table記錄數與data model:

TPC-H的22個SQL型別:

 

測試環境

下表是各數倉的測試環境,基本都是各雲廠商提供的最新配置,按照相似計算能力進行的選擇。

測試結果

Actian基本在所有的場景效能都表現最優,而且價效比最好,具體可詳見GigaOM的報告。但就如前面所說的,它是Sponsor,並且參與了測試過程和報告的編寫,這種結果也可以預期的。

但這並不是本文要分析的重點,其實,其它4家的產品,Snowflake / Redshift / Synapse / BigQuery,才是市場上最常見和使用最廣泛的雲數倉產品。所以我決定將Actian從測試結果中去掉,比較一下這4家的效能資料。結果如下:

場景一:單使用者執行

累計執行時長(22條SQL):可以看到Redshift和Synapse要遠好於Snowflake和BigQuery,其中Redshfit的總體執行時長最短,大概只有Snowflake的1/2和BigQuery的1/5。

最佳效能SQL的數量:橫向比較22個場景,挑選出每個場景的最佳(執行時長最短)。Redshift有13條SQL執行時間最短,Synapse有8條,Snowflake只有1條,而BigQuery沒有。

場景二:5併發使用者執行

累計執行時長(22條SQL):還是Redshift表現最好,Synapse也不錯。相對於單使用者環境下,Snowflake和BigQuery似乎表現更差了,只有Redshift的1/6左右,說明它們在資源的併發控制這塊還不太好,特別是Snowflake。

最佳效能SQL的數量:同樣,還是Redshift在最多場景效能表現最好,Synapse是第二,但差距已經不大了。而Snowflake和BigQuery在22個場景中沒有執行時長最短的。

場景三:價效比

價效比的計算採用下面公式,執行時長是累計時長,而價格取自各廠商的官網列表價。

單使用者價效比:Redshift最便宜,其次是Synapse,然後是Snowflake和BigQuery,其中BigQuery要比其它3家高不少。

併發使用者價效比:Synapse最便宜,其次是Redshift,然後是Snowflake和BigQuery。

測試結論彙總與侷限性

  • 在效能方面,無論是單程序還是併發方式,Redshift都是表現最好的,Synapse其次。

  • 在併發效能方面,Snowflake和BigQuery似乎沒有Redshift和Synapse控制得好。

  • 價效比方面,Redshift和Synapse差不多,BigQuery最貴。

  • 本次測試主要只是效能對比,不涉及功能、安全性、擴充套件性、高可用、備份、生態等等其它方面,有一定侷限性。

  • Snowflake和BigQuery在市場上的宣傳一直都是強調其易用性和易管理性(無需DBA),這方面在本次測試中沒有涉及。

  • 本次測試採用的TPC-H模型可能是為了遷就Actian而選擇,相對簡單,無法完全反映真實環境中的各種複雜負載和ad-hoc查詢,另外5併發也相對較低。

雲數倉的未來展望(個人觀點,僅供參考)

  • 當今各雲數倉版本迭代都很快,功能上Snowflake、Redshift、Synapse、BigQuery都已經很接近,而且大家都在互相學習,比如儲存計算分離、按需彈性擴充套件、資料共享與交換、物件儲存整合等等, 90%的功能大家都雷同,只是在技術細節的實現上各有不同。

  • Snowflake與其它3家不大相同,它為獨立的第三方,有跨雲部署的優勢。但它底層還需要依賴第三方雲廠商的基礎架構,比如AWS、GCP、Azure,隨著這些廠商自身雲數倉服務的發展,這種合作關係可能未來可能會變得越來越微妙。

  • 易用性和易管理性是未來各雲數倉的發展重點,Snowflake開了個好頭,其它各廠商都緊密跟進,今後可能真的沒有DBA這個職業了。

  • 未來雲數倉或雲資料庫,更多的優化可能會與底層專有硬體或網路相結合,比如CPU、GPU、FPGA、專有協議等等,這些是雲廠商自研產品的優勢,而像Snowflake、Actian、ClickHouse等第三方平臺是無法做到的。所以,易用性、通用性和效能本身就是一對矛盾的共同體,客戶可以按照自己的實際需求來權衡、選擇。

AWSome Day 2020線上雲端計算課堂將於11月12日(週四)下午2:00-6:00舉辦,掃描識別下方圖片中二維碼即可報名。