1. 程式人生 > >AnalyticDB for MySQL:PB級雲數倉核心技術和場景解析

AnalyticDB for MySQL:PB級雲數倉核心技術和場景解析

2019阿里雲峰會·上海開發者大會於7月24日盛大開幕,本次峰會與未來世界的開發者們分享開源大資料、IT基礎設施雲化、資料庫、雲原生、物聯網等領域的技術乾貨,共同探討前沿科技趨勢。本文整理自資料庫專場中阿里雲智慧高階技術專家南仙的精彩演講,本文為分享了阿里雲PB級雲資料倉庫AnalyticDB for MySQL的核心技術以及其應用場景。

資料庫專場PPT下載

本文內容整理自演講視訊以及PPT。

From “BigData”to “FastData”

如今有一種說法“From BigData to FastData”,這是為什麼呢?其實,BigData已經發展了很多年了,已經或者即將成為所有行業、所有開發者都能夠擁有的能力。但是對於BigData廠商而言,慢慢地發現自身的發展遇到了一些瓶頸,比如Cloudera和HORTONWORKS合併之後在股價方面存在一定的壓力,而像MAPR這樣資深的Hadoop玩家也在尋求買家。

出現以上這類問題的原因在於需求正在發生變化,對於資料本身的價值探索也在發生變化。最重要的一點就是原來只需要面對大量的資料,但是如今面對全量的資料,需要更加實時和更加智慧地進行計算和分析。因此,阿里雲AnalyticDB的定位就是能夠實現實時計算,實現資料價值線上化的資料倉庫產品。

AnalyticDB for MySQL介紹:PB級實時資料倉庫

AnalyticDB for MySQL(簡稱ADB)這樣一個PB級實時資料倉庫的核心理念是實現極致價效比和資料價值的線上化。AnalyticDB的作用就是實現千億、萬億級的多表複雜關聯分析和毫秒級的檢索,在全球官方組織TPC的10TB規模的Benchmark的測評環境中,AnalyticDB效能做到了世界第一,並且比國內的其他廠商領先至少5倍以上,相比開源的Spark,效能則高出10倍以上。與此同時,關於AnalyticDB核心技術的論文也發表在了資料庫領域的世界頂級學術會議上。

AnalyticDB for MySQL在阿里巴巴集團內部孵化多年,在阿里雲上也積累了大量的使用者。在如此強悍效能的背後,AnalyticDB更是擁有諸多核心能力:
相容&超越MySQL:首先,AnalyticDB相容MySQL並且超越了MySQL。因為MySQL更多地是能夠在TP場景下解決很多業務問題,非常穩定並且非常流行,但是在分析場景下,僅僅相容MySQL是遠遠不夠的,還需要對於視窗函式、CTE等功能以及OLAP標準的支援,而AnalyticDB完全支援這些功能和標準。
雲原生,實時按需極致彈性:AnalyticDB是雲原生資料庫,並且可以做到實時按需極致彈性。AnalyticDB的磁碟可以彈性擴充套件,單個使用者叢集的節點數則可以從最小的3臺最大可以擴充套件到2000臺的規模,並且可以實現混合負載。
非結構化和結構化融合分析

:AnalyticDB可以實現非結構化和結構化融合分析,這裡的非結構化資料不僅包括JSON、MySQL裡面BLOB以及陣列型別,還支援用於人臉識別等AI技術的檢索向量,AnalyticDB總共支援5種向量型別和5種向量檢索演算法。
完備的企業級特性:AnalyticDB具有完備的企業特性,比如備份恢復以及回收站等大資料工具都不具備的能力。與此同時,AnalyticDB還提供跨AZ和跨Region的高可靠保證。

AnalyticDB核心技術: 分層儲存+儲存計算分離架構 帶來極致彈性和開放性

如下圖所示,AnalyticDB整體的技術模組最前面是介面層,其對於MySQL協議具有很強的相容性,能夠提供JDBC、ODBC以及UDF、AI的介面。下面一層是優化器,眾所周知,在複雜分析場景下,優化器會面臨很大的挑戰。而AnalyticDB同時支援了基於規則的優化器RBO以及基於成本的優化器CBO和基於歷史學習的優化器HBO。再下面一層是超大規模的分散式計算引擎——羲和,它是基於開原始碼在阿里內部經過研發團隊多年的優化和改造之後打造的具有強勁效能的計算引擎。再往下一層是AnalyticDB行列混合的儲存引擎,具有強大的儲存和檢索能力。目前,AnalyticDB完全基於雲上的基礎設施構建,包括ECS、GPU、FPGA、OSS等雲上的基礎能力。

對於AnalyticDB的技術架構而言,從上到下可以分為三種角色。最上層是Frontnode,內部也稱為Coordinator協調器,其支援多Master線性擴充套件,當寫入和查詢併發過來的時候可以實現線性擴充套件,最多可以支援擴充套件到幾百個Frontnode。Frontnode會在寫入流程下進行資料分發,將資料寫入到底下不同的儲存節點。中間層的Worker是計算節點,其可以進行彈性伸縮,也是計算儲存分離的核心所在。當負載到來的時候,會對於上層解析器所做的物理執行計劃進行計算。源頭節點讀取的就是底層儲存。儲存部分有一個很重要的概念就是Group,這裡解釋一下,比如MySQL的主備或者三副本就是一個Group。對於AnalyticDB而言,因為是分散式的,因此有多個Group。可以認為資料水平分割槽到每個Group上面,Group之間通過Raft協議保證資料的強一致和實時性。在超大規模叢集下,成本也是一個非常重要的考慮因素,因此AnalyticDB在底層實現了分層儲存,也就是當資料需要進行冷熱分離的時候,可以將熱資料放在SSD上,而將冷資料實時地通過分層儲存系統換入或者換出到OSS上面去。

AnalyticDB核心技術-智慧的“行列混存+全索引”帶來極致效能

極致效能的提供除了依靠前面所提到的分散式優化器和超大規模高效能的執行引擎之外,還需要依靠儲存引擎本身能為計算做多少壓縮。對於資料庫系統而言,之所以AnalyticDB能夠做到效能全球第一,最重要的就是對於儲存層的優化。

這裡為大家介紹AnalyticDB在儲存層優化方面的兩個技術點,全索引和行列混存。AnalyticDB實現了一整套的索引框架來相容各種不同的場景,AnalyticDB的索引框架具有多路漸進流式歸併的能力,它能夠將很多索引條件以及單表位置條件進行多路歸併,並生成一個行號。當拿到這個行號之後就能夠將大量的資料在儲存層過濾掉,資料過濾完成之後就只需要交給計算引擎來進行聚合等計算任務了。AnalyticDB支援很多不同型別的索引,對於字串型別資料,支援倒排索引、雜湊索引;對於數字型別,支援多維KD樹索引;此外,還支援JSON索引、bitmap索引以及非結構化的向量索引。

AnalyticDB具有高效能的另外一個原因是其採用了行列混合儲存。大家都知道,MySQL等資料庫所採用的行儲存比較適合更新,但是缺點是不適合進行分析計算,因為分析計算通常是對於一個擁有百餘列的大表的部分列進行統計分析或者聚合運算,行儲存需要對於每行的百餘列資料全部讀取出來,對於列的放大非常明顯。而列儲存的優點在於,除了對於相同Schema的列壓縮率較高之外,在計算方面其天生就適合篩選。

AnalyticDB所設計的行列混合儲存如上圖所示。標頭檔案中包含了一些元資料,比如Sum、Count和Max、Min等,這些統計值用於對於索引、條件和Block的過濾。在每個檔案內部有很多不同的Block,每個Block可以看做Row Group,其內部按照Column進行儲存。因此,當需要掃描的時候,一旦定位到在哪個Row Group裡面就可以很快將資料取出來。之所以設計成Row Group而非整列檔案的原因在於很多時候需要取明細資料,如果按列儲存,需要拼出所有行的資料,這樣做開銷會非常大,而可以通過動態調節不同的Row Group的大小來動態地相容這兩種場景。

AnalyticDB核心技術:一個系統一套儲存兼顧多種場景

AnalyticDB之所以具有強大的效能,除了架構彈性之外,還具有一套能夠兼顧多種場景的儲存系統,可以相容多維分析、明細查詢、實時寫入等場景。其背後有三個關鍵技術,包括上述提到的行列混存,還有混合負載。AnalyticDB支援高併發、低延遲的混合負載的管理,此外,還支援超大規模的融合計算引擎。

AnalyticDB for MySQL:典型場景和客戶價值
AnalyticDB支援將大資料、應用佇列、MySQL、Oracle中的資料通過DTS等資料同步工具同步到AnalyticDB做資料分析。而在上層可以接入不同的視覺化報表以及使用者APP。舉一個內部案例,阿里媽媽內部有一個定向營銷平臺叫做達摩盤。達摩盤有一萬多張表,總資料量超過100TB,平均每條查詢大小為10個表的Join。藉助AnalyticDB,達摩盤可以支援上千個列維度的篩選,可以做到峰值每秒120萬的寫入速度,10個以上表進行Join的QPS能夠達到50。

Data Lake Analytics:全域資料、開放分析

阿里雲的Data Lake Analytics是Serverless的開放分析產品,沒有資料儲存,因此成本也非常低。如果使用者的資料在OSS或者某個儲存引擎裡面,無需搬動資料就可以直接計算。因為採用了Serverless的設計理念,因此本身具有很強的彈性,同時成本也非常低。

Data Lake Analytics和AnalyticDB是互補的關係,AnalyticDB屬於資料倉庫,而Data Lake Analytics則可以進行融合分析。Data Lake Analytics除了繼承了AnalyticDB的羲和計算引擎之外,還集成了Spark,並且其底層基於K8S實現了Serverless。

接下來為大家分享兩個具體案例
客戶案例1:移動運營APP解決方案
這裡以無他相機為例為大家分享移動運營APP解決方案。無他相機的上百億資料都儲存在MySQL裡面,之前使用MongoDB這樣的NoSQL資料庫進行資料儲存,但是發現分析效能根本無法接受,當時每個報表需要至少40分鐘才能完成。使用AnalyticDB改造系統架構之後,從使用者統計、活動效果以及行為分析等方面能夠發現明顯提升,實現的報表構造從40分鐘到秒級的跨越。

客戶案例2:物流行業實時數倉
第二個案例以跨境物流的公司遞四方為例分享物流行業實時數倉方案。對於遞四方的資料架構而言,通過MySQL實現業務處理,並將資料通過DTS同步到AnalyticDB。對於日誌資料而言,通過Agent實現打點,通過訊息佇列Kafka收集資料,並通過內部程式將所收集的資料注入到AnalyticDB裡面去,前端連線了阿里雲的QuickBI和DataV實現資料大屏和報表。僅僅用了一個半月的時間,遞四方就完成整個資料實時數倉的構建。

AnalyticDB for MySQL:客戶遍佈各行各業

AnalyticDB for MySQL的客戶遍佈各行各業,比如網際網路、新零售、數字政府、金融以及公安、稅務、電網、政法等,這些行業都在廣泛地使用阿里雲的AnalyticDB。

AnalyticDB for MySQL 3.0版本:下一代雲原生OLAP產品

阿里雲資料庫團隊匠心打造的全新的AnalyticDB for MySQL 3.0版本已經研發完成了,目前正處於公測中。

相比之前的版本,AnalyticDB for MySQL 3.0版本主要在以下四個方面進行了改進
更易用:相比於2.0版本,使用者能夠感受到更多資料庫的特性。AnalyticDB 3.0版本融合了大資料超大規模的計算能力、分析能力以及資料庫的使用體驗。使用者能夠感受到AnalyticDB 3.0是一個擁有超強計算能力、特別快的計算速度的MySQL。其支援最多256個DB,並且大幅度提升了相容性,在阿里巴巴內部測試中,相容性高達99.99%,並且能夠做到寫入資料的立即可見。
更高效能:AnalyticDB 3.0版本的實時寫入效能提升了1.5倍,查詢效能在原本全球第一的基礎之上又提升了40%,並且預計未來還會繼續重新整理榜單。AnalyticDB支援從MaxCompute、Hadoop、OSS以及MySQL資料庫批量向AnalyticDB匯入資料,並且能夠實現每小時TB級別的資料匯入速度。
更彈性:AnalyticDB 3.0版本擁有更高的彈性,磁碟儲存空間可以彈性伸縮,比如一個節點可以從100G擴充套件到1TB甚至更大,同時可以伸縮磁碟空間,實現縱向升降級,節點數目也可以實現任意節點的擴縮。
更可靠:AnalyticDB 3.0版本具備與MySQL完全對齊的許可權體系,其支援庫級許可權、表級許可權以及列級許可權。並且資料儲存採用了三副本,達到了工業級別的安全等級,還擁有完備的資料備份恢復能力。


原文連結
本文為雲棲社群原創內容,未經