一步即可!阿里雲數據湖分析服務構建MySQL低成本分析方案

數據庫技術達摩院 發佈 2020-05-14T15:41:47+00:00

MySQL資料庫大量應用在各種業務系統,除了在線業務邏輯的讀寫,還會有一些額外的數據分析需求,如BI報表、可視化大屏、大數據應用等。

作者:沈洪、左上


作為最為流行的開源資料庫,MYSQL正成為越來越多企業的選擇。MySQL資料庫大量應用在各種業務系統,除了在線業務邏輯的讀寫,還會有一些額外的數據分析需求,如BI報表、可視化大屏、大數據應用等。

但受限於MySQL架構等問題,在面對數據分析場景時,其往往力不從心。針對這種情況,業內有很多種解決方案。這裡特推薦一種新的方式 — 數據湖分析,在面對低成本場景時是個不錯的選擇。

在展開正式內容之前,對數據湖這個還較為陌生的概念做個簡單介紹。數據湖,是一種Serverless化的交互式聯邦查詢服務。使用標準SQL即可分析與集成對象存儲(OSS)、資料庫(PostgreSQL/MySQL等)、NoSQL(TableStore等)數據源的數據。

點這裡了解數據湖分析「連結」


方案背景

需求場景一

MySQL資料庫大量應用在各種業務系統,除了在線業務邏輯的讀寫,還會有一些額外的數據分析需求,如BI報表、可視化大屏、大數據應用等。隨著業務的發展,單機MySQL資料庫達到一定的數據量後,直接使用MySQL做數據分析性能比較差,而且會影響在線業務的讀寫性能。這種情況下就需要尋求新的數據分析方案。

需求場景二

MySQL中的數據需要和日誌數據做聯合分析,這種場景下有些公司會使用開源的大數據系統(如Hive,Hadoop,Spark等)搭建數據倉庫,這個方法雖然能解決問題,但它所需的人力成本和伺服器等資源成本卻是最高的。如何才能低成本的把MySQL與其他系統的數據做聯合分析?

需求場景三

當MySQL中數據量超過單機性能後,為了保證在線業務性能,DBA通常會採用分庫分表技術,將一個資料庫中的單張表數據拆分到多個資料庫的多張表中。由於一個邏輯表被拆成多張表,這時候如果要進行數據分析,將會變得十分複雜。需要新的分析方案來解決。


方案評估因素

MySQL分析場景中,如果要解決上述三個場景問題,主要考慮的因素有哪些?如果有多種解決方案,應該如何選擇?可以參考以下幾個關鍵因素。

1.成本因素這裡談到的成本,是個綜合的概念,不單指經濟成本,還包括時間、人力、風險成本等。用戶做方案選擇時,要考慮綜合的「性價比」。

2.能力因素能力維度包括兩個方面,即功能和性能。功能上,方案是否提供了完備的分析能力及擴展能力。性能上,是否滿足用戶的對時效性、並行性的要求,特別是在海量規模下。

3.可維護性好的產品,應該是提供良好的可維護性。用戶可通過很簡潔的方式使用它。當出現問題的時候,也可以很容易排查解決。

4.易用性產品自身應具有良好的易用性。用戶只需要很低的門檻即可使用到數據分析服務。


方案選擇

針對MySQL數據的分析場景,有多種解決方案,包括直接在MySQL只讀實例上分析、自建開源數據倉庫和數據湖構建方案。下面讓我們詳細看看這些方案的優缺點。基於MySQL只讀實例分析

通過額外購買伺服器搭建MySQL只讀備庫實例,然後基於只讀實例做數據分析。這個方案的優缺點:

缺點:

  • 功能不能無法滿足需求場景二和場景三,即使針對需求場景一,當數據量增大時(參考下文TPC-H 10G SQL耗時),基於只讀實例的分析性能會非常差。
  • 成本較高:額外購買的只讀實例成本也比較高。

優點:

  • 方案簡單,能防止對在線業務產生影響;易用性、兼容性好。

自建開源數據倉庫

使用開源大數據系統(如Hive,Hadoop,Spark等)搭建數據倉庫,然後同步MySQL數據到數據倉庫,再基於Spark或Hive進行數據分析。

缺點:

  • 易用性差:開源大數據系統使用門檻比較高,需要專門的大數據工程師來操作和運維;此外Sqoop同步不支持表結構變更,增加和刪除列都會導致同步失敗。
  • 成本最高:另外還需要額外購買伺服器搭建系統,增加了硬體成本,這個方案整體成本最高。

優點:

  • 能解決需求場景一和二的問題,分析性能較好。

分析型資料庫使用開源或商用的分析型資料庫,通過數據同步工具完成數據同步,再基於SQL進行數據分析。

缺點:

  • 可維護性差,需要專門運維人員。
  • 成本較高,需額外購買資源。

優點:

  • 滿足海量規模的數據分析

數據湖構建方案

基於阿里雲數據湖分析構建方案,它能完美的解決低成本分析MySQL數據的需求。優點:

  • 方便易用:使用一鍵建倉可以很輕鬆把整個資料庫同步到數據湖。
  • 分析能力強:數據湖分析(Data Lake Analytics)與MySQL體驗完全相同,數據量增加對分析性能幾乎沒有影響。
  • 成本極低:不需要購買伺服器,按查詢量計費,無查詢不收費;無維護成本。
  • 對源庫影響:數據分析對在線業務無影響。

數據湖構建方案評測數據及技術原理

接下來讓我們詳細看一下數據湖構建方案的評測數據和技術原理。

低成本高性能

低成本下面是成本的對比,額外購買一台高性能RDS(MySQL資料庫)包月費用需2344元;以TPC-H 10G為例,如果每天執行一次TPC-H的22條SQL,使用DLA一個月的費用只需要26.64元,平均每天不到1元。只需1%的成本就能獲取高性能的分析;此外DLA的列式存儲消耗只需要3G,而原生Mysql的存儲可能消耗約20G。

高性能數據湖構建把數據從源資料庫同步後,使用列式+壓縮的方式存儲,以TPC-H 10G的數據為例,存儲在MySQL將消耗大約20G存儲,但使用列式+壓縮方式存儲只消耗約3G存儲。使用阿里雲數據湖分析(DLA)分析,能以極低的成本獲得高效的分析,再次以TPC-H 10G的數據為例,TPC-H的22條SQL在DLA執行耗時平均為5.5s,在MySQL中平均耗時為345.5s,且有4條SQL跑不出來,下圖TPC-H 10G 22條SQL在MySQL和DLA的耗時對比。

易用性

支持豐富數據源阿里雲數據湖分析構建方案,支持豐富的數據源,包括自建的MySQL、SQLServer、PostgreSQL、Oracle、雲資料庫RDS、PolarDB、ADB等。與傳統的數據倉庫相比,它的設計目標是"簡單",讓用戶通過簡單的配置就能實現數據同步到DLA,真正實現"一鍵"建倉。

自動同步保持數據一致數據湖構建支持自動同步更新的數據,也能自動同步包括創建表,刪除表,新增列、修改列、刪除列等元數據操作。在分庫分表的場景中,數據湖構建能把一張分布在多個資料庫的邏輯表合併到一張表中,實現基於一張表做數據分析。此外數據湖構建支持同步的表數量無上限限制。

增量構建數據湖分析(DLA)團隊正在研發數據湖增量構建以支持增量模式同步源庫數據,能完全消除對源庫產生的影響;並且能大大提升數據分析的時效性。增量構建將於近期發布上線,敬請期待。

對源庫影響

基於數據湖分析查詢對源庫完全無影響;在數據湖從源庫同步數據時,對源庫的影響也保證在10%以內。下圖是數據湖構建針對不同規格源資料庫的CPU消耗:隨著機器規格增大,連接數會自動增加,最終源庫的平均CPU消耗都在10%以內。

為了儘量減低同步對源資料庫的影響,數據湖構建做了大量的優化。包括:

  • 數據湖構建會自動根據源資料庫的機器規格,動態調整連接數,能保證對源資料庫的壓力在10%以內。
  • 在並發同步一張表時,優先選擇索引列做切分,通過索引快速定位一段數據範圍,減小同步對源資料庫的影響。
  • 數據湖構建默認選擇業務低谷做數據同步,防止影響線上業務。

最終實現對源庫的壓力幾乎可以忽略。如果用戶希望加快同步速度,也可以手動增加連接數加快同步速度。

阿里雲數據湖實踐

如果你希望試用數據湖分析構建MySQL低成本分析,只需要以下步驟即可開通試用。

(文檔詳見阿里雲登錄 - 歡迎登錄阿里雲,安全穩定的雲計算服務平台)

1、登錄Data Lake Analytics管理控制台。在頁面左上角,選擇DLA所在地域。

2、在左側導航欄單擊解決方案。在解決方案頁面,單擊一鍵建倉中的進入嚮導。

3、根據頁面提示,進行參數配置。

4、完成上述參數配置後,單擊創建,就可以開始使用數據湖愉快的分析了。

關鍵字: