簡單比較 AWS Redshift 跟 Azure Data Warehouse

--

一般來說,比較公有雲的數據產品通常很無趣,因為大概都是你有什麼,我就有什麼。你 S3 1T 多少錢,我 Blob storage 就比你便宜一點,比這些 IaaS Level 的功能基本上已經是紅海了,利潤很低了。所以,我們來比真正的 Juicy 的產品吧!

Public Cloud Data Warehouse

哇哈哈,錢坑中的錢坑,光是 On-Premise DW 就可以撐起好幾家巨型公司了(Oraxxx, TxxxDxxx ….)。更重要的是,DW 產品買了用了上線了,你就vender 被卡的死死死的,數據移不開,程式不好改,又都是按 Storage + Computing 算錢的,你公司發展的越好,數據量越多,SQL 執行的越多,DW就可以抽越多的「稅金」…

雖然 DW 錢很多,但是要轉換到 Cloud 上面,原本的地主抵抗是很強烈的。不是那麼容易的。On-Premise Data to Cloud 本來就是一個大議題,是個兵家必爭之地。

不過 原本數據就在雲上的 application , Public Cloud DW 是有巨大的優勢的

  1. ETL 撰寫方便: 移到 Public Cloud DW 就很直接,通常都是 Public Cloud 的 ETL Service drag & drop 即可(詳請請看 AWS Data pipeline or Azure Data Factory) ,也不用拉數據下來到 On-Premise 省時間省流量錢
  2. POC建置快速: Public cloud 的優點,點一點就建置完成。RD 也可以自己建 testing env
  3. Initial 成本便宜:Public Cloud DW initial 成本真的很便宜,不像是 On-Premise Solution 一開始就要一筆錢

基於這個思路,我們來比較一下兩個最大的 Public Cloud DW 的產品一下吧。選手是 AWS RedshiftAzure SQL Data Warehouse

使用方式

AWS Redshift 是 ParAccel(一家DW Company) 為 backend engine 的 host online dw service ,整體架構為 MPP ,支援的語法為 Postgresql 8.0 ,對 PG 熟悉的人是一個福音。 重要的功能 ACID/Concurrency/Immediate Consistency 都有。

來自AWS Doc

我本身有用過 Redshift ,根據經驗不要把 Redshift 當作支援大數據的 PostgreSQL ,也不要認為 postgresql 的 schema 可以直接搬到 Redshift ,請先看一下 Unsupported Postgresql feature/data type/function doc ,你會在 day 1 就需要這個文件。

SQL Data Warehouse 也是MPP 架構。支援的語法為 TSQL,所以走的是 MS 派,一樣ACID/Concurrency/Immediate Consistency 都有。我沒有實際 implement 過,無法給予心得

我個人認為團隊熟悉哪一種使用語法是其中第一個決定點。

使用場景

GB 級別的場景(OLAP or OLTP)不要浪費錢在DW上了,直接使用 AWS RDS 或 Azure SQL database 吧,這兩個級別的產品都可以支援到數 TB 等級左右(AWS RDS 可以到 16TB,Azure SQL Database 可以到 4TB),價錢更便宜,使用更方便,response time 更快

兩者基本上都是 TB 到 百TB 左右的 OLAP 查詢為主,主打Datawarehouse , Data mart ,BI 即時查詢,大數據資料進階分析都是適用場景。response time 大概是 sec 級別的,並非 RDS 或是 SQL Database 是 ms 級別的。

PS. Redshift Spectrum 可以直接查詢 S3 上面的 data,號稱可以到達 ZB 級別的儲存,但是這個想法很像是 data virtualization 的功能,利用Redshift 的 computing 來抓 S3 的 storage ,但是我不認為這是 DW 主要的場景,也不是這兩者主要的賣點。

接口

接口支援度上兩者皆支援 JDBC / ODBC ,Redshift 應該使用 Amazon 自己提供的 customized JDBC/ODBC Driver (官方宣稱快 35%),SQL DW還多支援 ADO.NET,應該沒什麼問題。

可擴展性

兩者優點就是可擴展性都非常好,信用卡刷下去就可以擴展 DW 的大小 XD數據量最大值 Redshift 為 2PB SQL DW 為 1PB,但是這個不是很重要。不過這都是理論值,當你一個 query 需要 scan PB 的 data 的時候,你可能更需要的是想想怎麼優化你的數據架構…

當然要 optimize query 絕對不會那麼簡單,MPP 架構大致上就是選擇什麼 file layout 來存放你的 data ,如何 partition 你的 key ,還有單一 partition 怎麼 sorting 。基本上不是錢可以解決的問題,接下來的議題都可以開展到很大…就不細談了

生態系統

DW 外部生態系統大概不外乎幾個維度Data Integration,BI ,Data Model ,這兩個 link (AWS, Azure)基本上列出了一大堆合作夥伴,都不是太大的問題。反正雲發展到現在,沒有跟雲整合的產品才是少數。

內部生態系統的整合上,AWS 建議是使用 AWS Datapipeline 做整合(雖然我個人感覺 AWS Datapipeline 很難用),不過 Redshift 時間比較久,網路上有很多種 best practice 可以參考。

Azure 靠的是官方的 Azure Data Factory,試用的時候感覺挺好用的,不過我沒有在 Production 用過,無法發表意見。

不過老實說, Orchestration Tool 還是建議自己用自己 Own 的 platform 可能比較好(像是 Apache Airflow,甚至 Jenkins 都可以考慮)。架構設計的時候也得考慮一下,換 Vender 跑路所需要花的時間,如果連 Orchestration Tool 都外包出去了,那你真的被 Vender Locking 了….

管理

這也是 PaaS 的好處,兩者都有幫你管理複雜的 DW Cluster 的能力。像是Monitor ,Backup(自動定期被備份數據到 Blob Store),Fault Tolerance( 當 node fail 的時候,自動替換掉 fail node ) 這些應該都是非常自然的事情。

社群 / Doc / Reference Case

雖然兩個產品 official doc 都很齊全,但是Redshift 在 google 查詢中明顯多一些來自社區的討論,有可能是 Redshift 先發優勢造成的社區資源差別,也有可能是我的偏好以及同溫層很偏 Open Source 使用者,造成的查詢差別。

這是一個 Azure 問題沒錯,但是不是決定使用它或是不使用他的決定點。

價錢

價錢毫無疑問是另一個決定點,因為你數據量小的時候,一個 RDS or Azure SQL Server 就可以搞定,還比較簡單使用。當你數據量大的時候,Big Data DW 的錢會貴到你懷疑人生。

在這裏 Azure 就很賊的避開主戰場了,他們使用 virtual 單位 DWU 來算錢,所以完全避開了跟 AWS redshift 正面比較價錢的可能性 。

基本上,Azure SQL DW storage 跟 computing 是分開的

圖片來自 Azure Doc

storage 錢是固定的,computing 上,如果你想當 fast BI analysis 可以使用較高的 DWU 來加快速度,如果想當 data lake ,可以用較低的 DWU 來平衡 cost 。歐,他們還推出另一種模式 cDWU ,不同的計算方式,不同的錢…

AWS 比較直接的可供你選擇 computing intensive or storage intensive 的 option。乍看之下選擇較少,但是其實DW也就這兩個 workload。

所以我們完全不能比較嗎?其實不然,用同一個 workload ,同一個 dataset 比一比就得了。這裡有一個2017年網友做的 performance benchmark

圖片來自文中的 benchmark

裡面 Redshift 表現出非常優秀的性價比,裡面的結果簡直是 redshift 性價比大勝。

所以 Redshift 性價比贏了嗎?我可不想這麼說

第一個,我沒花錢花時間做 benchmark ,所以我不敢說。

第二個,就算我有錢有時間,我也懶得做。要弄出一個各種 workload 都可以服眾的 performance benchmark 是人世間最無聊,最浪費時間的事情,總是有人可以拿一個不知道哪裡來的 workload 打你的臉。

第三個,拿出你的 critical workload 出來,建立一下 POC 來測量哪個產品比較合你的意比較好。DW 決定一下去,後續要花很多錢的,真的值得你花時間下去 POC 一下。

總結

在 Redshift or SQL DW 這個產品比較上,我完全不認為功能面上會有哪一家特別齊全。決定點只有兩個

  1. 你喜歡 PG or TSQL ?
  2. 你有沒有花時間做你的 workload benchmark ,測試一下性價比

在 Public Cloud 產品上面選擇上,DW 是少數真的需要花時間考慮的產品。後續價錢太高,時間花下去不好更換的產品。而且,DW 決定下去了,你的 application 可能就定死在這個 cloud 上了,小心點真的比較好

--

--