Doris入門

什麼是 Doris?

Apache Doris 是一個基於 MPP(大規模並行處理) 架構的高性能、實時的分析型數據庫,以極速易用的特點被人們所熟知,僅需亞秒級響應時間即可返回海量數據下的查詢結果,不僅可以支持高併發的點查詢場景,也能支持高吞吐的複雜分析場景。基於此,Apache Doris 能夠較好的滿足報表分析、即席查詢、統一數倉構建、數據湖聯邦查詢加速等使用場景,用戶可以在此之上構建用戶行爲分析、AB 實驗平臺、日誌檢索分析、用戶畫像分析、訂單分析等應用。

Apache Doris 最早是誕生於百度廣告報表業務的 Palo 項目,2017 年正式對外開源,2018 年 7 月由百度捐贈給 Apache 基金會進行孵化,之後在 Apache 導師的指導下由孵化器項目管理委員會成員進行孵化和運營。目前 Apache Doris 社區已經聚集了來自不同行業近百家企業的 300 餘位貢獻者,並且每月活躍貢獻者人數也接近 100 位。 2022 年 6 月,Apache Doris 成功從 Apache 孵化器畢業,正式成爲 Apache 頂級項目(Top-Level Project,TLP)

適用場景

主要適用於大數據的分析、統計。

  • 報表分析

    • 實時看板
    • 面向企業內部分析師或管理者的報表
    • 面向用戶的高併發報表分析。如面向網站主的站點分析、面向廣告主的廣告報表,併發通常要求成千上萬的 QPS ,查詢延時要求毫秒級響應。京東在廣告報表中使用 Apache Doris ,每天寫入 100 億行數據,查詢併發 QPS 上萬,99 分位的查詢延時 150ms
  • 即時查詢

    面向分析師的自助分析,查詢模式不固定,要求較高的吞吐

  • 統一數倉構建

    一個平臺滿足統一的數據倉庫建設需求,簡化繁瑣的大數據軟件棧

整體架構

Doris整體架構如下圖所示,Doris 架構非常簡單,只有兩類進程:

  • Frontend(FE),主要負責用戶請求的接入、查詢解析規劃、元數據的管理、節點管理相關工作。
  • Backend(BE),主要負責數據存儲、查詢計劃的執行。

這兩類進程都是可以橫向擴展的,單集羣可以支持到數百臺機器,數十 PB 的存儲容量。並且這兩類進程通過一致性協議來保證服務的高可用和數據的高可靠。這種高度集成的架構設計極大的降低了一款分佈式系統的運維成本.

使用接口方面,Doris 採用 MySQL 協議,高度兼容 MySQL 語法,支持標準 SQL,用戶可以通過各類客戶端工具來訪問 Doris,並支持與 BI 工具的無縫對接。

存儲引擎方面,Doris 採用列式存儲,按列進行數據的編碼壓縮和讀取,能夠實現極高的壓縮比,同時減少大量非相關數據的掃描,從而更加有效利用 IO 和 CPU 資源

Doris 也支持比較豐富的索引結構,來減少數據的掃描:

  • Sorted Compound Key Index,可以最多指定三個列組成複合排序鍵,通過該索引,能夠有效進行數據裁剪,從而能夠更好支持高併發的報表場景
  • Z-order Index :使用 Z-order 索引,可以高效對數據模型中的任意字段組合進行範圍查詢
  • Min/Max :有效過濾數值類型的等值和範圍查詢
  • Bloom Filter :對高基數列的等值過濾裁剪非常有效
  • Invert Index :能夠對任意字段實現快速檢索

在存儲模型方面,Doris 支持多種存儲模型,針對不同的場景做了針對性的優化:

  • Aggregate Key 模型:相同 Key 的 Value 列合併,通過提前聚合大幅提升性能
  • Unique Key 模型:Key 唯一,相同 Key 的數據覆蓋,實現行級別數據更新
  • Duplicate Key 模型:明細數據模型,滿足事實表的明細存儲

Doris 也支持強一致的物化視圖,物化視圖的更新和選擇都在系統內自動進行,不需要用戶手動選擇,從而大幅減少了物化視圖維護的代價。

查詢引擎方面,Doris 採用 MPP (大規模並行處理)的模型,節點間和節點內都並行執行,也支持多個大表的分佈式 Shuffle Join,從而能夠更好應對複雜查詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章