
Apache Dori基于MPP的現代化、高性能、支持實時的分析型數據庫s
聲明:該文章由作者(二代CC)發(fā)表,轉載此文章須經作者同意并請附上出處(0XUCN)及本頁鏈接。。
Apache Doris 最早是誕生于百度廣告報表業(yè)務的 Palo 項目,2017 年正式對外開源,2018 年 7 月由百度捐贈給 Apache 基金會進行孵化,之后在 Apache 導師的指導下由孵化器項目管理委員會成員進行孵化和運營。 目前 Apache Doris 社區(qū)已經聚集了來自不同行業(yè)近百家企業(yè)近 600 位貢獻者,并且每月活躍貢獻者人數也接近 100 位。
Apache Doris 如今在中國乃至全球范圍內都擁有著廣泛的用戶群體,截止 2022年 6月, Apache Doris 已經在全球超過 2000 家企業(yè)的生產環(huán)境中得到應用,在中國市值或估值排行前 50 的互聯(lián)網公司中,有超過 80% 長期使用 Apache Doris,包括百度、美團、小米、京東、字節(jié)跳動、騰訊、網易、快手、微博、貝殼等。同時在一些傳統(tǒng)行業(yè)如金融、能源、制造、電信等領域也有著豐富的應用。
2022 年 6 月,Apache Doris 成功從 Apache 孵化器畢業(yè),正式成為 Apache 頂級項目(Top-Level Project,TLP)。
產品優(yōu)勢
性能優(yōu)異
自帶高效的列式存儲引擎,減少數據掃描量的同時還實現了超高的數據壓縮比。同時Doris還提供了豐富的索引結構來加速數據讀取與過濾,利用分區(qū)分桶裁剪功能,Doris可以支持在線服務業(yè)務的超高并發(fā),單節(jié)點最高可支持上千QPS。更進一步,Apache Doris 結合了向量化執(zhí)行引擎來充分發(fā)揮現代化CPU并行計算能力,輔以智能物化視圖技術實現預聚合加速,并可以通過查詢優(yōu)化器同時進行基于規(guī)劃和基于代價的查詢優(yōu)化。通過上述多種方式,實現了極致的查詢性能。
簡單易用
支持標準ANSI SQL語法,包括單表聚合、排序、過濾和多表Join、子查詢等,還支持窗口函數、Grouping Set等復雜SQL語法,同時用戶可以通過UDF和UDAF等自定義函數來拓展系統(tǒng)功能。除此以外,Apache Doris 還實現了MySQL協(xié)議兼容,用戶可以通過各類客戶端工具來訪問Doris,并支持與BI工具的無縫對接。
架構精簡
系統(tǒng)只有兩個Frontend(FE)和Backend(BE)兩個模塊,其中FE節(jié)點負責用戶請求的接入、查詢計劃的解析、元數據存儲及集群管理等工作,BE節(jié)點負責數據存儲和查詢計劃的執(zhí)行,自身就是一個完備的分布式數據庫管理系統(tǒng),用戶無需安裝任何第三方管控組件即可運行起Apache Doris 集群,并且部署和升級過程都非常簡易。同時,任一模塊都可以支持橫向拓展,集群最高可以拓展到數百個節(jié)點,支持存儲超過10PB的超大規(guī)模數據。
穩(wěn)定可靠
支持數據多副本存儲,集群具備自愈功能,自身的分布式管理框架可以自動管理數據副本的分布、修復和均衡,副本損壞時系統(tǒng)可以自動感知并進行修復。節(jié)點擴容時,僅需一條SQL命令即可完成,數據分片會自動在節(jié)點間均衡,無需人工干預或操作。無論是擴容、縮容、單節(jié)點故障還是在升級過程中,系統(tǒng)都無需停止運行,可正常提供穩(wěn)定可靠的在線服務。
生態(tài)豐富
提供豐富的數據同步方式,支持快速加載來自本地、Hadoop、Flink、Spark、Kafka、SeaTunnel等系統(tǒng)中的數據,也可以直接訪問MySQL、PostgreSQL、Oracle、S3、Hive、Iceberg、Elasticsearch等系統(tǒng)中的數據而無需數據復制。同時存儲在Doris中的數據也可以被 Spark、Flink 讀取,并且可以輸出給上游數據應用進行展示分析。
技術概述
Doris整體架構如下所示,Doris 架構非常簡單,只有兩類進程
Frontend(FE),主要負責用戶請求的接入、查詢解析規(guī)劃、元數據的管理、節(jié)點管理相關工作。
Backend(BE),主要負責數據存儲、查詢計劃的執(zhí)行。
這兩類進程都是可以橫向擴展的,單集群可以支持到數百臺機器,數十 PB 的存儲容量。并且這兩類進程通過一致性協(xié)議來保證服務的高可用和數據的高可靠。這種高度集成的架構設計極大的降低了一款分布式系統(tǒng)的運維成本。
在使用接口方面,Doris 采用 MySQL 協(xié)議,高度兼容 MySQL 語法,支持標準 SQL,用戶可以通過各類客戶端工具來訪問 Doris,并支持與 BI 工具的無縫對接。
在存儲引擎方面,Doris 采用列式存儲,按列進行數據的編碼壓縮和讀取,能夠實現極高的壓縮比,同時減少大量非相關數據的掃描,從而更加有效利用 IO 和 CPU 資源。
Doris 也支持比較豐富的索引結構,來減少數據的掃描:
支持 Sorted Compound Key Index,可以最多指定三個列組成復合排序鍵,通過該索引,能夠有效進行數據裁剪,從而能夠更好支持高并發(fā)的報表場景
Z-order Index :使用 Z-order 索引,可以高效對數據模型中的任意字段組合進行范圍查詢
Min/Max 索引 :有效過濾數值類型的等值和范圍查詢
Bloom Filter :對高基數列的等值過濾裁剪非常有效
Invert Index :能夠對任意字段實現快速檢索
在存儲模型方面,Doris 支持多種存儲模型,針對不同的場景做了針對性的優(yōu)化:
Aggregate Key 模型:相同 Key 的 Value 列合并,通過提前聚合大幅提升性能
Unique Key 模型:Key 唯一,相同 Key 的數據覆蓋,實現行級別數據更新
Duplicate Key 模型:明細數據模型,滿足事實表的明細存儲
Doris 也支持強一致的物化視圖,物化視圖的更新和選擇都在系統(tǒng)內自動進行,不需要用戶手動選擇,從而大幅減少了物化視圖維護的代價。
在查詢引擎方面,Doris 采用 MPP 的模型,節(jié)點間和節(jié)點內都并行執(zhí)行,也支持多個大表的分布式 Shuffle Join,從而能夠更好應對復雜查詢。
Doris 查詢引擎是向量化的查詢引擎,所有的內存結構能夠按照列式布局,能夠達到大幅減少虛函數調用、提升 Cache 命中率,高效利用 SIMD 指令的效果。在寬表聚合場景下性能是非向量化引擎的 5-10 倍。
Doris 采用了 Adaptive Query Execution 技術, 可以根據 Runtime Statistics 來動態(tài)調整執(zhí)行計劃,比如通過 Runtime Filter 技術能夠在運行時生成生成 Filter 推到 Probe 側,并且能夠將 Filter 自動穿透到 Probe 側最底層的 Scan 節(jié)點,從而大幅減少 Probe 的數據量,加速 Join 性能。Doris 的 Runtime Filter 支持 In/Min/Max/Bloom Filter。
在優(yōu)化器方面 Doris 使用 CBO 和 RBO 結合的優(yōu)化策略,RBO 支持常量折疊、子查詢改寫、謂詞下推等,CBO 支持 Join Reorder。目前 CBO 還在持續(xù)優(yōu)化中,主要集中在更加精準的統(tǒng)計信息收集和推導,更加精準的代價模型預估等方面。
適用場景
如下圖所示,數據源經過各種數據集成和加工處理后,通常會入庫到實時數倉 Doris 和離線湖倉(Hive, Iceberg, Hudi 中),Apache Doris 被廣泛應用在以下場景中:
報表分析
實時看板 (Dashboards)
面向企業(yè)內部分析師和管理者的報表
面向用戶或者客戶的高并發(fā)報表分析(Customer-facing Analytics)。比如面向網站主的站點分析、面向廣告主的廣告報表,并發(fā)通常要求成千上萬的 QPS ,查詢延時要求毫秒級響應。著名的電商公司京東在廣告報表中使用 Apache Doris ,每天寫入 100 億行數據,查詢并發(fā) QPS 上萬,99 分位的查詢延時 150ms。
即席查詢(Ad-hoc Query):面向分析師的自助分析,查詢模式不固定,要求較高的吞吐。小米公司基于 Doris 構建了增長分析平臺(Growing Analytics,GA),利用用戶行為數據對業(yè)務進行增長分析,平均查詢延時 10s,95 分位的查詢延時 30s 以內,每天的 SQL 查詢量為數萬條。
統(tǒng)一數倉構建 :一個平臺滿足統(tǒng)一的數據倉庫建設需求,簡化繁瑣的大數據軟件棧。海底撈基于 Doris 構建的統(tǒng)一數倉,替換了原來由 Spark、Hive、Kudu、Hbase、Phoenix 組成的舊架構,架構大大簡化。
數據湖聯(lián)邦查詢:通過外表的方式聯(lián)邦分析位于 Hive、Iceberg、Hudi 中的數據,在避免數據拷貝的前提下,查詢性能大幅提升。
相關資料
Apache Doris官方網站:
https://doris.apache.orgApache Doris Github:
https://github.com/apache/incubator-dorisApache Doris 開發(fā)者郵件組:
dev@doris.apache.org
[超站]友情鏈接:
四季很好,只要有你,文娛排行榜:https://www.yaopaiming.com/
關注數據與安全,洞悉企業(yè)級服務市場:https://www.ijiandao.com/
- 1 “開創(chuàng)新疆更加美好的明天” 7904780
- 2 小孩姐扛著“東風-5C”走進幼兒園 7808484
- 3 舞者解曉東去世 曾摔傷腦部重度昏迷 7713154
- 4 國慶中秋假期各地天氣最新預報 7617076
- 5 特斯拉技術員被機器人打成重傷 7520736
- 6 兩名15歲失聯(lián)少女已被越南警方攔截 7424276
- 7 黃仁勛稱中國芯片僅落后美國幾納秒 7333410
- 8 媽媽因兒子成績“三連跌”怒退機票 7235569
- 9 中方決定:增設K字簽證 7142558
- 10 清華兩教職工當“黃?!北痪?/a> 7045330