構建實時資料倉儲首選,雲原生資料倉儲AnalyticDB for MySQL技術解密

程式碼派就是我發表於2020-04-09

阿里雲分析型資料庫重磅推出基礎版,極大降低了使用者構建資料倉儲門檻。高度相容MySQL,極低的使用成本和極高的效能,使中小企業也可以輕鬆的搭建一套實時資料倉儲,實現企業資料價值線上化。

AnalyticDB for MySQL的產品系列包括基礎版(單機版)和叢集版,基礎版為單個節點提供服務,極簡的架構大大的降低了基礎版的成本。儲存計算分離架構、行列混存技術、輕量的索引構建方式和分散式混合計算引擎又保證了基礎版強大的分析效能。年成本不到一萬就可以構建一套實時資料倉儲,無需成立專門的大資料團隊,為企業節省百萬成本。

1.基礎版技術架構

如下為基礎版架構圖,整體由Coordinator和Worker組成,各自的職責如下介紹。

img

1.1 Coordinator: 前端控制節點,職責包括

(1)MySQL協議層接入,SQL解析

(2)認證和鑑權,提供了更完善和細化的許可權體系模型,白名單和叢集級別RAM控制,並審計與合規記錄所有SQL操作。

(3)叢集管理:成員管理、後設資料、資料一致性、路由同步、備份與恢復(資料與log管理)

(4)後臺非同步任務管理

(5)事務管理

(6)最佳化器,執行計劃生成

(7)計算排程,負責執行任務排程

1.2 Worker: 儲存和計算節點,包含

(1)計算模組

分散式MPP+DAG混合計算引擎和最佳化器達到了更高的複雜計算能力和混合負載管理能力。利用阿里雲端計算平臺之上資源靈活排程上的優勢,實現了計算資源的彈性排程。計算 Worker節點可以單獨拉起,因應業務需求做到分鐘級甚至秒級擴充套件,實現資源的最有效利用。

(2)儲存模組

儲存模組更加輕量化,具備了承載更大吞吐資料實時寫入和讀取能力,寫入效能比之前版本同等規格高50%倍左右,毫秒級可見,滿足客戶實時分析需求。

儲存節點提供全量和增量備份和恢復能力,雲盤的定期快照和日誌會實時同步到OSS中儲存,對使用者資料提供更高的安全保障,幫助使用者在資料庫發生問題時最大限度的找回。

(3)Worker Group

帶儲存模組的Worker節點被劃分為一個個節點組(Worker Group),叢集版提供三副本的儲存,透過Raft分散式一致性協議像一個整體一樣工作,允許其中一些Worker節點出現故障也能繼續提供服務,基礎版只有單副本提供服務。

2. 基礎版最佳化器

最佳化器負責對Parser生成的語法樹進行處理,透過最佳化演算法生成代價最優的計劃提供給計算引擎。計劃代價直接影響查詢效能,因此最佳化器是資料庫中最核心的模組之一。基礎版採用了與叢集版一樣強大的最佳化器,包含基於規則、基於代價、和基於模式的多種複合最佳化技術。

image.png

複雜分析型查詢經常包含多表join,表的join順序直接影響查詢效能。AnalyticDB最佳化器採用了基於代價估算和實時取樣資訊的join order最佳化演算法,能夠感知底層儲存的資料分佈。最佳化器利用AnalyticDB全索引特徵提高了過濾因子(filter factor)估算的準確性。針對複雜join,最佳化器基於資料分佈資訊動態調整join order,同時評估資料reshuffling的代價,來從全域性代價的維度選擇最優的執行計劃。

AnalyticDB最佳化器在經典基於規則最佳化器(Rule-Based Optimizer)的基礎上增加了代價估算和迭代最佳化,並且整合了Cascades CBO(Cost-Based Optimizer)最佳化框架。CBO搜尋框架會呼叫 Property Enforcement模組生成分散式執行計劃,然後呼叫代價估算模組,給每一種候選計劃評估代價,選擇最優的分散式執行計劃。為了進一步提高join order的最佳化效果和效率,AnalyticDB最佳化器還採用了基於歷史資訊的最佳化技術(History-Based Optimizer)、基於常見SQL模式的動態最佳化技術(Pattern-Based Optimizer),以及資料驅動的智慧技術,例如Auto Analyze模組自動蒐集統計資訊,為最佳化器搜尋最佳計劃提供準確的資料支援。

此外,AnalyticDB最佳化器還針對複雜查詢中經常出現的組合過濾條件、聚合運算元、關聯子查詢等進行了一系列最佳化處理以提升效能。比如下推最佳化技術將計劃中的過濾條件和聚合運算元儘量推到整個鏈路的底層模組去執行,不但提高底層運算元的效率,也減少了上游運算元要處理的資料量,提高整體查詢效能。針對關聯子查詢語句,最佳化器透過關係代數轉化,將關聯子查詢改寫為語義等價的非關聯計劃,使得計算引擎可以高效流水線處理。

3.基礎版計算引擎

image.png

AnalyticDB計算引擎採用大規模並行處理MPP+DAG體系結構和基於記憶體的pipeline執行模式,具有高併發、低延遲的特點。為了加快對複雜表示式的求值速度,最佳化執行效能,計算引擎透過Runtime Codegen在執行時生成JVM bytecode,動態載入生成物件的例項,減少了執行過程中虛擬函式呼叫,提高了CPU-Intensive任務的效率。計算引擎還採用向量化執行模型處理表示式求值,利用CPU SIMD指令集來加速求值計算。

4.基礎版儲存引擎

image.png

AnalyticDB儲存引擎採用行列混合儲存的設計。如圖所示。對於一張表的每k行資料(Row Group),每列資料連續的存放在單獨的Data Block中,每行組的列Block的在磁碟上連續存放。行組內列Block的資料可按指定列排序存放,可以在按該列查詢時顯著減少磁碟隨機IO次數。這種設計的獨特優勢是兼具了行存(適合OLTP點查詢)和列存(適合OLAP多維分析)的長處,很好的滿足了不同型別workload的需求:

  • 針對OLTP型別的點查詢需要select出一整行的明細資料,行列混存設計下將列存的完全隨機讀轉化為了順序讀
  • 針對OLAP型別的多維分析:不僅解決了海量資料統計分析下行存的讀放大問題,而且進行單列IO時將列存的順序讀轉化為了順序跳讀,進行多列IO時則將隨機讀轉化為了順序讀
  • 寫入大吞吐:列存時的隨機寫被轉化為了順序寫

AnalyticDB儲存引擎採用智慧全索引,對每列資料建立一個值到行號的倒排索引。查詢時,將SQL多個條件表示式的AND、OR 轉換成Boolean Query同時走索引,透過搜尋得到滿足where條件的結果集行號,支援快速多路合併,能夠在毫秒級別找出滿足條件的結果集。

5.基礎版優勢

基礎版大幅度降低了使用者構建資料倉儲門檻,與大資料(Hadoop,Spark和EMR)和OLTP建倉方式相比都有超高的價效比。

(1)降低使用門檻

基礎版最低1.75元/小時,860元/月,與叢集版相比,起步價降低了約三分之一。磁碟空間僅0.6元/GB,磁碟空間上限最大為4T,可以隨時按需擴充套件,大大降低中小企業複雜分析和構建實時數倉的使用門檻。

(2) 效能高

同等配置下其資料查詢效能約為MySQL的10倍,很好地幫助使用者解決MySQL複雜分析慢的痛點。

(3)規格豐富

基礎版支援四種規格:T8、T16、T32和T52,可以根據業務的不同要求選擇規格和任意調整規格。

(4)生態透明

上下游生態完全相容叢集版,對使用者透明。

6.適合客戶

特別適合以下人群:

(1)Hadoop/Spark等太複雜,想快速實現資料化轉型的中小型企業;

(2)報表資料庫查詢慢,有互動式BI分析訴求的中小型企業;

(3)需要快速構建測試環境的進行數倉選型的使用者;

(4)學習類人群,可快速瞭解AnalyticDB for MySQL的使用者;

瞭解更多

觀看直播: https://developer.aliyun.com/live/2528
產品詳情:

版權宣告: 本文中所有內容均屬於阿里雲開發者社群所有,任何媒體、網站或個人未經阿里雲開發者社群協議授權不得轉載、連結、轉貼或以其他方式複製釋出/發表。申請授權請郵件developerteam@list.alibaba-inc.com,已獲得阿里雲開發者社群協議授權的媒體、網站,在轉載使用時必須註明"稿件來源:阿里雲開發者社群,原文作者姓名",違者本社群將依法追究責任。 如果您發現本社群中有涉嫌抄襲的內容,歡迎傳送郵件至:developer2020@service.aliyun.com 進行舉報,並提供相關證據,一經查實,本社群將立刻刪除涉嫌侵權內容。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31550522/viewspace-2685204/,如需轉載,請註明出處,否則將追究法律責任。

相關文章