日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

回首2018 | 分析型数据库AnalyticDB:不忘初心 砥砺前行...

發(fā)布時間:2025/3/20 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回首2018 | 分析型数据库AnalyticDB:不忘初心 砥砺前行... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(dǎo)讀

分析型數(shù)據(jù)庫AnalyticDB(下文簡稱“ADB”),是阿里巴巴自主研發(fā)、唯一經(jīng)過超大規(guī)模以及核心業(yè)務(wù)驗證的PB級實時數(shù)據(jù)倉庫。截止目前,現(xiàn)有外部支撐客戶既包括傳統(tǒng)的大中型企業(yè)和政府機構(gòu),也包括眾多的互聯(lián)網(wǎng)公司,覆蓋了十幾個行業(yè)。

同時,ADB在阿里內(nèi)部承接著廣告營銷、商家數(shù)據(jù)服務(wù)、菜鳥物流、盒馬新零售等眾多核心業(yè)務(wù)的高并發(fā)低延時分析處理。

2018年,我們新增了深圳和灣區(qū)研發(fā)中心,迎來更多專業(yè)精兵強將的加入,也受到了眾多業(yè)務(wù)場景挑戰(zhàn)極大的客戶鼎力支持,注定讓這一年在發(fā)展史上將留下深深的印記。在過去的這一年,ADB在架構(gòu)以及產(chǎn)品化演進(jìn)上,迎來了飛速發(fā)展,謹(jǐn)以此文記錄一起走過的2018年。

作者:阿里巴巴高級產(chǎn)品專家——繆長風(fēng)

架構(gòu)演進(jìn)

一、接入層和SQL Parser

  • 全面采用自研Parser組件——FastSQL
  • 由于歷史原因,ADB的各模塊中曾有多個Parser組件,例如當(dāng)時存儲節(jié)點用的是Druid, 接入層SQL解析用的是Antlr Parser, 導(dǎo)致SQL兼容性難提升。對于一個上線多年、服務(wù)于內(nèi)外眾多數(shù)據(jù)業(yè)務(wù)的ADB來說,熟悉數(shù)據(jù)庫的同學(xué)都知道,替換Parser難度之大,堪比飛行中換引擎。

    經(jīng)過半年多的努力,ADB完成了將上述幾大Parser組件統(tǒng)一升級替換為FastSQL ( Base on Druid,經(jīng)過開源社區(qū)8年的完善,語法支持已經(jīng)非常完備)。升級為FastSQL后,在SQL兼容性大幅度提升、復(fù)雜場景解析速度提升30-100倍的同時,FastSQL還能無縫結(jié)合優(yōu)化器,提供常量折疊、函數(shù)變換、表達(dá)式轉(zhuǎn)換、函數(shù)類型推斷、常量推斷、語義去重等功能支持,方便優(yōu)化器生成最優(yōu)的執(zhí)行計劃。

    2.實時寫入性能提升10倍

    在ADB v2.7.4版本開始,在SQL Parser上做了深度技術(shù)優(yōu)化,大幅度提升了INSERT環(huán)節(jié)的性能,在實際生產(chǎn)環(huán)境中性能10倍性能提升,以云上4*C4為例,item表可以壓測到15w TPS。

    3.海量數(shù)據(jù)流式返回

    在ADB v2.7以前的版本,計算框架返回的數(shù)據(jù),需要在內(nèi)存中堆積,等待全部執(zhí)行完才返回到客戶端。在并發(fā)大或者結(jié)果大時,可能有內(nèi)存溢出的風(fēng)險。從2.7版本開始,默認(rèn)采用流式返回,數(shù)據(jù)實時返回客戶端,能降低延時,極大的提升了大結(jié)果集返回的調(diào)用穩(wěn)定性。

    二、Query Optimizer

    2018年,一方面云上云下業(yè)務(wù)全面從ADB上一代的LM引擎,遷移至羲和MPP引擎,另一方面越來越多的客戶不希望走離線或者流計算清洗,實時數(shù)倉場景迸發(fā),同時越來越多自動生成SQL的可視化工具開始對接ADB,對優(yōu)化器團(tuán)隊提出了極高挑戰(zhàn)。

    為了應(yīng)對這些挑戰(zhàn),在這一年里優(yōu)化器團(tuán)隊從無到有,逐漸組建起來一支精練的國際化團(tuán)隊。在不斷打造磨合過程中,ADB優(yōu)化器這一年的斬獲如下:

    1.建立并完善RBO Plus優(yōu)化器

    不同于傳統(tǒng)RBO優(yōu)化器,在RBO Plus設(shè)計中實現(xiàn)了下列關(guān)鍵特性:

    1) 引入代價模型和估算,利用ADB的高效存儲接口,引入dynamic selectivity & cardinality估算優(yōu)化join reorder, 使得ADB可以應(yīng)對多達(dá)10+表join的復(fù)雜查詢場景.

    2) 針對MPP特別優(yōu)化data shuffling,aggregation等執(zhí)行計劃,相對于LM引擎業(yè)務(wù)場景性能接近零回退。

    3) 從功能和性能兩個維度,對各種常見以及復(fù)雜關(guān)聯(lián)子查詢場景進(jìn)行了深度優(yōu)化,設(shè)計了一系列關(guān)聯(lián)規(guī)則算法,在各種標(biāo)準(zhǔn)benchmark中相應(yīng)的查詢中,部分場景up to 20X提升。

    4) 針對超短時延(ms)點查,設(shè)計了parameterized plan cache,將這些場景的優(yōu)化時間成本降低10倍以上。

    2.打造CBO優(yōu)化器

    面對越來越復(fù)雜的業(yè)務(wù)查詢場景,RBO及RBO Plus有其相應(yīng)的局限和挑戰(zhàn),CBO成為ADB優(yōu)化器邁向通用商業(yè)優(yōu)化器的關(guān)鍵,我們沒有采用雖廣泛使用但局限性也很多的Calcite優(yōu)化器,而是著手打造自主可控的CBO優(yōu)化器,提升ADB的核心競爭力:

    1) 建立高效的統(tǒng)計信息收集體系,平衡準(zhǔn)確性與收集代價,為CBO提供“基礎(chǔ)信息設(shè)施”;

    2) 構(gòu)建Cascades架構(gòu)的CBO框架,將其打造成可擴(kuò)展的優(yōu)化平臺。

    三、羲和MPP引擎

    這一年,ADB架構(gòu)全面從上一代的LM引擎切換至羲和MPP引擎,羲和引擎一方面既要支撐完成切換,滿足客戶更靈活自由查詢的重任,又要通過大幅度的性能優(yōu)化來消除引擎切換帶來的某些場景下的性能開銷。

    1.全Binary計算

    基于Binary 的計算,省去Shuffle 的序列化和反序列化開銷,并且與存儲深度綁定,做到存儲計算一體化,整個計算過程沒有多余的序列化和反序列化開銷。

    2.內(nèi)部池化

    通過定長的內(nèi)存切片完成池化,在計算過程中減少了連續(xù)內(nèi)存擴(kuò)容帶來的消耗,同時通過池化完全自主管控內(nèi)存,避免了在復(fù)雜SQL場景下的GC消耗。

    3.CodeGen深度優(yōu)化

    1) Cache使用,通過對算子,表達(dá)式的CodeGen常量抽取,緩存CodeGen生成的代碼,在高并發(fā)場景下避免了每次都需要動態(tài)編譯代碼的開銷,為支持高并發(fā)和QPS的業(yè)務(wù)打好了基礎(chǔ)。

    2) 通過算子融合減少算子之間物化的開銷。

    4.其它優(yōu)化

    1) 按列計算,通過列式計算與JVM團(tuán)隊合作引入JDK11支持新的SIMD指令集進(jìn)行計算優(yōu)化

    2) 自動算法優(yōu)化,根據(jù)數(shù)據(jù)分布,數(shù)據(jù)采樣自動優(yōu)化部分執(zhí)行算法和內(nèi)存;

    3) 算子自適應(yīng)的Spill,支持動態(tài)的內(nèi)存分配和搶占,支持join,agg等算子落盤;

    4) 引入新的序列化和反序列框架替換原有的JSON協(xié)議,引入新的Netty替換原有Jetty

    5) 支持運行時統(tǒng)計信息收集,包括算子級,stage級,query級的內(nèi)存、cpu cost統(tǒng)計,支持部分自動識別慢SQL。

    四、玄武存儲引擎

    為了滿足業(yè)務(wù)高并發(fā)寫入、低延時的查詢,ADB做了讀寫分離架構(gòu)設(shè)計。在歷史的版本中,讀寫分析架構(gòu)下有2個問題:

    ① 寫入到可見是異步的, 部分場景有讀寫強一致性的訴求。

    ② 增量數(shù)據(jù)寫入較大的情況下,查詢變慢。同樣,今年存儲引擎在增量數(shù)據(jù)的實時性和性能上也做出了重大突破。

    1.支持讀寫強一致性

    最新的ADB版本中,設(shè)計了一套完備的一致性讀寫分離架構(gòu),如下圖所示:

    藍(lán)色線代表寫入鏈路,橙色線代表讀取鏈路。以一次寫入和讀取為例,當(dāng)用戶新寫入某表的數(shù)據(jù)后,立即發(fā)起查詢,此時FN會收集該表在所有BN上的最新寫入版本號(step 3),并將該版本號(標(biāo)記為V1)信息隨同查詢請求一同發(fā)往對應(yīng)的CN節(jié)點(step 4),CN比對該表在本地的消費版本(記為V2)和請求的版本號。

    若V1>V2,CN消費到該最新寫入數(shù)據(jù)(step 5)后提供查詢;若V1

    2.提升增量數(shù)據(jù)區(qū)的查詢性能

    在 ADB 的存儲節(jié)點對于突發(fā)的大批量實時寫入,在增量數(shù)據(jù)區(qū)可能短時間內(nèi)積累較多數(shù)據(jù)。如果查詢發(fā)生在增量數(shù)據(jù)區(qū),大量的table scan讀取會拖慢整個數(shù)據(jù)分析性能。為此增量數(shù)據(jù)區(qū)引入 RocksDB 構(gòu)建增量數(shù)據(jù)的索引,保證增量數(shù)據(jù)區(qū)的訪問性能,通過LSM-Tree 的分層存儲結(jié)果,提供良好的寫入性能,及較好的查詢能力。

    五、分布式Meta服務(wù)

    歷史版本元數(shù)據(jù)穩(wěn)定性挑戰(zhàn)大,各模塊各自訪問元數(shù)據(jù)存在race condition,meta壓力大,DDL體驗差。今年我們重構(gòu)了元數(shù)據(jù)模塊,上線GMS服務(wù)提供元數(shù)據(jù)統(tǒng)一管理,同時提供分布式DDL能力,并通過分布式緩存降低meta庫壓力,提供高效元數(shù)據(jù)訪問效率。

    全局元數(shù)據(jù)服務(wù)發(fā)布

    1) Global Meta Service (GMS)上線生產(chǎn),提供分布式DDL和數(shù)據(jù)調(diào)度能力,同步建刪表提升用戶體驗。

    2) 表分區(qū)分配算法改進(jìn),為計算調(diào)度優(yōu)化,支持多表組場景下的數(shù)據(jù)均勻分布

    3) 數(shù)據(jù)更新(上線),數(shù)據(jù)重分布(Rebalance)穩(wěn)定性大大提升

    六、硬件加速

    GPU雖然已經(jīng)廣泛用于通用計算,但是通常是用于圖形處理、機器學(xué)習(xí)和高性能計算等領(lǐng)域。如何將GPU的強大計算能力和ADB進(jìn)行有機結(jié)合,并不是一個容易解決的問題。要想用好GPU,在GPU資源管理、代碼生成、顯存管理、數(shù)據(jù)管理、執(zhí)行計劃優(yōu)化等方便,均有諸多挑戰(zhàn)。2018年,ADB引入了GPU作為計算加速引擎,原本依賴離線分析引擎、隔天才能完成的計算,現(xiàn)在只需要秒級延遲即可完成,成功將數(shù)據(jù)價值在線化,為客戶帶來了巨大的價值。

    1.GPU資源管理

    如何讓去訪問GPU資源是首先要解決的問題。 ADB通過jCUDA調(diào)用CUDA API,用于管理和配置GPU設(shè)備、GPU kernel的啟動接口封裝。該模塊作為Java和GPU之間的橋梁,使得JVM可以很方便地調(diào)用GPU資源。

    2.CodeGen

    ADB的執(zhí)行計劃是為CPU做準(zhǔn)備的,無法在GPU上執(zhí)行。而且由于GPU架構(gòu)的特殊性,GPU的編程模型也和CPU不同。為了解決這一問題,引入新的CodeGen模塊。CodeGen先是借助LLVM API將物理計劃編譯成LLVM IR,IR經(jīng)過優(yōu)化以后通過轉(zhuǎn)換成PTX代碼。然后調(diào)用CUDA將PTX代碼轉(zhuǎn)換成本地可執(zhí)行代碼,并啟動其中的GPU計算函數(shù)。

    CodeGen可以針對不同的處理器生成不同的代碼,在GPU不可用時,也可以轉(zhuǎn)至CPU進(jìn)行執(zhí)行。相對傳統(tǒng)火山模型,ADB的CodeGen模塊有效減少函數(shù)調(diào)用的開銷、充分利用GPU的并發(fā)能力。另外Code Generator利用了算子融合,如group-by聚合、join再加聚合的融合,大大減少中間結(jié)果(特別是Join的連接結(jié)果)的拷貝和顯存的占用。

    3.顯存管理

    ADB開發(fā)了VRAM Manager用于管理各GPU的顯存。有別于現(xiàn)在市面上其他GPU數(shù)據(jù)庫系統(tǒng)使用GPU的方式,為了提升顯存的利用率、提升并發(fā)能力,結(jié)合ADB多分區(qū)、多線程的特點,我們設(shè)計基于Slab的VRAM Manager來統(tǒng)一管理所有顯存申請。

    性能測試顯示分配時間平均為1ms,明顯快于GPU自帶的顯存分配接口的700ms,有利于提高系統(tǒng)整體并發(fā)度。

    4.Plan優(yōu)化

    SQL從FN發(fā)送到CN,Task Manager先根據(jù)計算的數(shù)據(jù)量以及查詢特征選擇由CPU還是GPU處理,然后根據(jù)邏輯計劃生成適合GPU執(zhí)行的物理計劃。GPU Engine收到物理計劃后先對執(zhí)行計劃進(jìn)行重寫。如果計劃符合融合特征,則啟動復(fù)合算子融合,從而大量減少算子間臨時數(shù)據(jù)的傳輸成本。

    產(chǎn)品化能力升級

    一、易用性提升

    1.全面切換羲和MPP引擎

    從2.6.2版本開始,集團(tuán)內(nèi)和公有云全部默認(rèn)MPP引擎,徹底告別上一代LM引擎的各種查詢限制。MPP對SQL寫法支持更加自由靈活,ADB客戶迎來Full MPP時代。

    2.SQL兼容性大幅度提升

    接入層、存儲層Parser模塊全部升級為FastSQL后, 外加切換MPP成功,ADB v2.7以后的SQL兼容性較歷史版本有了非常大提升。SQL其他優(yōu)化還包括支持了流式后不再限制查詢結(jié)果集返回、分頁兼容MySQL等等。

    3.自動擴(kuò)縮容、升降配

    6月份發(fā)布了重磅功能: 自動擴(kuò)縮容+靈活升降配。除了擴(kuò)縮基本能力外,客戶還可以在規(guī)格之間切換。例如從10c4 切換至4c8, 可以從4c8切換至10c4,同時實時表還支持在高性能SSD實例和大存儲SATA實例間來回切換。上線效果:配置切換做到讀不中斷,寫入中斷約1-2分鐘,后續(xù)通過動態(tài)漂移分區(qū),寫入也能做到完全不停服。

    4.新版控制臺和DMS上線

    公有云新版的控制臺展示的內(nèi)容更加豐富,支持控制臺打點,查看用戶畫像;增加了更多和用戶交互的地方。用戶管理,acl和子賬號授權(quán)更加便捷等。DMS全新改版,體驗大幅度提升,方便導(dǎo)入導(dǎo)出,支持SQL提示和SQL記憶功能。

    5.發(fā)布面向用戶側(cè)的監(jiān)控告警系統(tǒng)

    為提升客戶的自助化服務(wù)能力,用戶側(cè)的監(jiān)控支持的指標(biāo)有CPU使用量、查詢和寫入量、數(shù)據(jù)傾斜、Top Slow SQL等。

    6.全網(wǎng)數(shù)據(jù)庫監(jiān)控大盤上線

    這是全網(wǎng)數(shù)據(jù)庫的眼睛,彈內(nèi)云上數(shù)據(jù)庫運行狀況一覽無遺。通過對數(shù)據(jù)庫和系統(tǒng)層各種指標(biāo)的埋點分析,時刻監(jiān)控著數(shù)據(jù)庫的運行狀況,高亮顯示異常數(shù)據(jù)庫,同時支持將異常指標(biāo)推送客戶釘釘群,大幅度提升了運營值班效率。

    7.發(fā)布可用區(qū)

    這一年公共云發(fā)布多可用區(qū)支持,徹底解決單個region賣空的問題,企業(yè)客戶還可以有選擇的利用可用區(qū)做服務(wù)容災(zāi)。

    二、發(fā)布新的核心功能

    1.向量分析

    今年9月正式發(fā)布向量分析能力,使得結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)具備融合分析的能力。基于向量聚類規(guī)律的向量分區(qū)規(guī)則,按照聚類結(jié)果分區(qū),讓距離相近的向量就近存儲。在某專有云項目里,支持1:10億的人臉識別,QPS過萬,延遲在100毫秒內(nèi),數(shù)據(jù)量達(dá)到數(shù)TB級別。

    同時首次支撐銀泰、盒馬等新零售場景的人臉識別、算法推薦、與結(jié)構(gòu)化數(shù)據(jù)實時融合分析,毫秒級打通線上線下會員體系,支撐實時數(shù)據(jù)化線下互動、營銷。

    2.全文檢索

    ADB v2.7.4版本后,通過SQL語言提供全文檢索功能,將常用的結(jié)構(gòu)化數(shù)據(jù)分析操作,與靈活的非結(jié)構(gòu)化數(shù)據(jù)分析操作統(tǒng)一,使用同一套SQL語言操作多種類型數(shù)據(jù),降低了學(xué)習(xí)和開發(fā)成本。一方面提供結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化文本的融合檢索、多模分析能力,另一方面基于MPP+DAG技術(shù)提供了完善的分布式計算能力,同時內(nèi)置了來自淘寶、天貓搜索的智能分詞組件,分詞效果更好,速度更快。

    3.新數(shù)據(jù)類型 JSON & Decimal

    在2.7版本,正式發(fā)布JSON數(shù)據(jù)類型,完整的支持了包括Object、NULL、Array在內(nèi)的所有JSON類型的檢索分析,為業(yè)務(wù)提供了 Schema less的極大靈活性,同時也提供了快速的檢索性能。為了更好方便金融客戶,同樣在2.7版本里,ADB正式發(fā)布Decimal數(shù)據(jù)類型,向傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)類型兼容性上又邁出了重要的一步。

    三. 生態(tài)建設(shè)

    1.數(shù)據(jù)接入

    客戶數(shù)據(jù)往往有多種多樣,存儲在各種地方。為了追求更低成本、更高效率的數(shù)據(jù)接入能力,打造實時數(shù)倉的能力,ADB今年在數(shù)據(jù)接入上做了諸多完善:

    1) Copy From OSS & MaxCompute 開發(fā)完成,元旦后上線。

    2) ADB Uploader發(fā)布,方便本地文件快速導(dǎo)入。

    3) ADB發(fā)布Logstash插件,方便日志數(shù)據(jù)format后直接寫入ADB,中間無需經(jīng)過MQ或者HUB。

    4) ADB Client SDK發(fā)布并開源,客戶端寫入編程邏輯簡化,聚合寫入性能大幅度提升。

    5) Batch表導(dǎo)入穩(wěn)定性大大提升,同時完成MaxCompute SDK升級和OpenMR切換。

    6) Connector Service上線,提供統(tǒng)一數(shù)據(jù)源接入層

    接下來ADB計劃基于現(xiàn)有框架接入更多數(shù)據(jù)源(圖中灰色部分)


    2.行業(yè)云接入

    完成金融云、物流云、聚石塔三大行業(yè)云接入,使得金融、物流、電商中小企業(yè)也能享受到低成本的實時數(shù)據(jù)分析能力,提升企業(yè)精細(xì)化數(shù)據(jù)運營的水平。

    望未來


    2018年,對AnalyticDB來說是注定是非同平凡的一年,在架構(gòu)演進(jìn)、穩(wěn)定性、生態(tài)建設(shè)以及兼容性上均取得了長足的進(jìn)步。

    這一年我們成功入選全球權(quán)威IT咨詢機構(gòu)Forrester——"The Forrester Wave?: CloudData Warehouse,Q4 2018"研究報告的Contenders象限(相關(guān)閱讀:厲害了!阿里分析型數(shù)據(jù)庫AnalyticDB入選Forrester云化數(shù)倉象限),以及Gartner發(fā)布的分析型數(shù)據(jù)管理平臺報告 (Magic Quadrant forData Management Solutions for Analytics),開始進(jìn)入全球分析市場。

    展望未來,我們接下來將繼續(xù)在分析性能、穩(wěn)定性、以及產(chǎn)品化(易用性、數(shù)據(jù)通道、任務(wù)管理、可視化等周邊生態(tài)建設(shè)) 上繼續(xù)做廣、做深。AnalyticDB旨在幫客戶將整個數(shù)據(jù)分析和價值化從傳統(tǒng)的離線分析帶到下一代的在線實時分析模式。

    原文發(fā)布時間為:2018-01-09
    本文作者:繆長風(fēng)
    了解相關(guān)信息可以關(guān)注“ 阿里巴巴數(shù)據(jù)庫技術(shù)”。

    總結(jié)

    以上是生活随笔為你收集整理的回首2018 | 分析型数据库AnalyticDB:不忘初心 砥砺前行...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。