2019阿里雲峯會·上海開發者大會於7月24日盛大開幕,本次峯會與將來世界的開發者們分享開源大數據、IT基礎設施雲化、數據庫、雲原生、物聯網等領域的技術乾貨,共同探討前沿科技趨勢。本文整理自數據庫專場中阿里雲智能高級技術專家南仙的精彩演講,本文爲分享了阿里雲PB級雲數據倉庫AnalyticDB for MySQL的核心技術以及其應用場景。前端
本文內容整理自演講視頻以及PPT。node
現在有一種說法「From BigData to FastData」,這是爲何呢?其實,BigData已經發展了不少年了,已經或者即將成爲全部行業、全部開發者都可以擁有的能力。可是對於BigData廠商而言,慢慢地發現自身的發展遇到了一些瓶頸,好比Cloudera和HORTONWORKS合併以後在股價方面存在必定的壓力,而像MAPR這樣資深的Hadoop玩家也在尋求買家。算法
出現以上這類問題的緣由在於需求正在發生變化,對於數據自己的價值探索也在發生變化。最重要的一點就是原來只須要面對大量的數據,可是現在面對全量的數據,須要更加實時和更加智能地進行計算和分析。所以,阿里雲AnalyticDB的定位就是可以實現實時計算,實現數據價值在線化的數據倉庫產品。數據庫
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總體的技術模塊最前面是接口層,其對於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支持不少不一樣類型的索引,對於字符串類型數據,支持倒排索引、哈希索引;對於數字類型,支持多維KD樹索引;此外,還支持JSON索引、bitmap索引以及非結構化的向量索引。less
AnalyticDB具備高性能的另一個緣由是其採用了行列混合存儲。你們都知道,MySQL等數據庫所採用的行存儲比較適合更新,可是缺點是不適合進行分析計算,由於分析計算一般是對於一個擁有百餘列的大表的部分列進行統計分析或者聚合運算,行存儲須要對於每行的百餘列數據所有讀取出來,對於列的放大很是明顯。而列存儲的優勢在於,除了對於相同Schema的列壓縮率較高以外,在計算方面其天生就適合篩選。
AnalyticDB所設計的行列混合存儲如上圖所示。頭文件中包含了一些元數據,好比Sum、Count和Max、Min等,這些統計值用於對於索引、條件和Block的過濾。在每一個文件內部有不少不一樣的Block,每一個Block能夠看作Row Group,其內部按照Column進行存儲。所以,當須要掃描的時候,一旦定位到在哪一個Row Group裏面就能夠很快將數據取出來。之因此設計成Row Group而非整列文件的緣由在於不少時候須要取明細數據,若是按列存儲,須要拼出全部行的數據,這樣作開銷會很是大,而能夠經過動態調節不一樣的Row Group的大小來動態地兼容這兩種場景。
AnalyticDB之因此具備強大的性能,除了架構彈性以外,還具備一套可以兼顧多種場景的存儲系統,能夠兼容多維分析、明細查詢、實時寫入等場景。其背後有三個關鍵技術,包括上述提到的行列混存,還有混合負載。AnalyticDB支持高併發、低延遲的混合負載的管理,此外,還支持超大規模的融合計算引擎。
AnalyticDB for MySQL:典型場景和客戶價值
AnalyticDB支持將大數據、應用隊列、MySQL、Oracle中的數據經過DTS等數據同步工具同步到AnalyticDB作數據分析。而在上層能夠接入不一樣的可視化報表以及用戶APP。舉一個內部案例,阿里媽媽內部有一個定向營銷平臺叫作達摩盤。達摩盤有一萬多張表,總數據量超過100TB,平均每條查詢大小爲10個表的Join。藉助AnalyticDB,達摩盤能夠支持上千個列維度的篩選,能夠作到峯值每秒120萬的寫入速度,10個以上表進行Join的QPS可以達到50。
阿里雲的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。
阿里雲數據庫團隊匠心打造的全新的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徹底對齊的權限體系,其支持庫級權限、表級權限以及列級權限。而且數據存儲採用了三副本,達到了工業級別的安全等級,還擁有完備的數據備份恢復能力。
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。