背景介紹
Apache Doris是一個(gè)基于MPP架構(gòu)的易于使用,高性能和實(shí)時(shí)的分析數(shù)據(jù)庫,以其極高的速度和易用性而聞名。海量數(shù)據(jù)下返回查詢結(jié)果僅需亞秒級(jí)響應(yīng)時(shí)間,不僅可以支持高并發(fā)點(diǎn)查詢場(chǎng)景,還可以支持高通量復(fù)雜分析場(chǎng)景。
這些都使得 Apache Doris 成為報(bào)表分析、即席查詢、統(tǒng)一數(shù)據(jù)倉庫和數(shù)據(jù)湖查詢加速等場(chǎng)景的理想工具。在 Apache Doris 上,用戶可以構(gòu)建各種應(yīng)用,如用戶行為分析、AB 測(cè)試平臺(tái)、日志檢索分析、用戶畫像分析、訂單分析等。
2023年亞洲多麗絲峰會(huì)即將到來,熱烈邀請(qǐng)您加入!單擊“立即 ??doris-summit.org.cn
?? 版本 2.0.2 版本現(xiàn)已發(fā)布。2.0.2版本在標(biāo)準(zhǔn)基準(zhǔn)測(cè)試上實(shí)現(xiàn)了超過10倍的性能提升,日志分析和湖倉場(chǎng)景全面提升,數(shù)據(jù)更新和寫入效率更加高效穩(wěn)定,支持更全面的多租戶和資源隔離機(jī)制,在資源彈性和存儲(chǔ)計(jì)算分離的方向上邁出了新的一步。它還為企業(yè)用戶添加了一系列可用性功能。我們歡迎所有對(duì)2.0版本新功能有需求的用戶進(jìn)行部署和升級(jí)。在此處??查看發(fā)行說明。
?? 1.2.7版本現(xiàn)已發(fā)布!它是完全進(jìn)化的版本,建議所有用戶升級(jí)到此版本。在此處??查看發(fā)行說明。
?? 版本 1.1.5 現(xiàn)已發(fā)布。它是基于1.1版本的穩(wěn)定性改進(jìn)和錯(cuò)誤修復(fù)版本。在此處??查看發(fā)行說明。
?? 查看官方網(wǎng)站,了解??Apache Doris的核心功能,博客和用戶案例的完整列表。

使用場(chǎng)景
如下圖所示,經(jīng)過各種數(shù)據(jù)集成和處理后,數(shù)據(jù)源通常存儲(chǔ)在實(shí)時(shí)數(shù)據(jù)倉庫 Apache Doris 和離線數(shù)據(jù)湖或數(shù)據(jù)倉庫(在 Apache Hive、Apache Iceberg 或 Apache Hudi 中)。

Apache Doris廣泛應(yīng)用于以下場(chǎng)景:
報(bào)告分析
實(shí)時(shí)儀表板
面向內(nèi)部分析師和經(jīng)理的報(bào)告
高度并發(fā)的用戶導(dǎo)向或客戶導(dǎo)向的報(bào)告分析:例如通常需要數(shù)千個(gè)QPS和以毫秒為單位的快速響應(yīng)時(shí)間的網(wǎng)站分析和廣告報(bào)告。一個(gè)成功的用戶案例是,Doris 已被中國電子商務(wù)巨頭 JD.com 用于廣告報(bào)告,它每天接收 10 億行數(shù)據(jù),處理超過 10,000 QPS,并提供 99 毫秒的 150% 查詢延遲。
即席查詢。面向分析師的自助式分析,具有不規(guī)則的查詢模式和高吞吐量要求。小米基于Doris構(gòu)建了增長分析平臺(tái)(Growth Analytics,GA),利用用戶行為數(shù)據(jù)進(jìn)行業(yè)務(wù)增長分析,平均查詢延遲為10秒,第95百分位查詢延遲為30秒或更少,每天數(shù)萬次SQL查詢。
統(tǒng)一數(shù)據(jù)倉庫建設(shè)。Apache Doris允許用戶通過單一平臺(tái)構(gòu)建統(tǒng)一的數(shù)據(jù)倉庫,省去處理復(fù)雜軟件棧的麻煩。中國火鍋連鎖店海底撈與Doris建立了一個(gè)統(tǒng)一的數(shù)據(jù)倉庫,以取代其由Apache Spark,Apache Hive,Apache Kudu,Apache HBase和Apache Phoenix組成的舊復(fù)雜架構(gòu)。
數(shù)據(jù)湖查詢。Apache Doris 通過使用外部表聯(lián)合 Apache Hive、Apache Iceberg 和 Apache Hudi 中的數(shù)據(jù)來避免數(shù)據(jù)復(fù)制,從而實(shí)現(xiàn)出色的查詢性能。
??? 核心概念
?? Apache Doris的架構(gòu)
Apache Doris 的整體架構(gòu)如下圖所示。Doris 架構(gòu)非常簡(jiǎn)單,只有兩種類型的流程。
前端(FE):用戶請(qǐng)求訪問、查詢解析和規(guī)劃、元數(shù)據(jù)管理、節(jié)點(diǎn)管理等。
后端 (BE):數(shù)據(jù)存儲(chǔ)和查詢計(jì)劃執(zhí)行
這兩種類型的進(jìn)程都可以水平擴(kuò)展,單個(gè)集群可以支持多達(dá)數(shù)百臺(tái)機(jī)器和數(shù)十 PB 的存儲(chǔ)容量。而這兩類流程通過一致性協(xié)議保證了業(yè)務(wù)的高可用性和數(shù)據(jù)的高可靠性。這種高度集成的架構(gòu)設(shè)計(jì)大大降低了分布式系統(tǒng)的運(yùn)維成本。

Apache Doris的整體架構(gòu)
在接口方面,Apache Doris采用MySQL協(xié)議,支持標(biāo)準(zhǔn)SQL,與MySQL方言高度兼容。用戶可以通過各種客戶端工具訪問 Doris,它支持與 BI 工具的無縫連接。
?? 存儲(chǔ)引擎
Doris 使用列式存儲(chǔ)引擎,按列編碼、壓縮和讀取數(shù)據(jù)。這實(shí)現(xiàn)了非常高的壓縮比,并大大減少了無關(guān)的數(shù)據(jù)掃描,從而更有效地利用了 IO 和 CPU 資源。Doris 支持多種索引結(jié)構(gòu),盡量減少數(shù)據(jù)掃描:
排序復(fù)合鍵索引:用戶最多可以指定三列來形成復(fù)合排序鍵。這可以有效地修剪數(shù)據(jù),以更好地支持高并發(fā)報(bào)告方案。
最小/最大索引:這樣可以有效篩選數(shù)值類型的等效性和范圍查詢。
布隆過濾器:在高基數(shù)列的等價(jià)過濾和修剪中非常有效
反轉(zhuǎn)索引:這樣可以快速搜索任何字段。
?? 存儲(chǔ)模型
Doris 支持多種存儲(chǔ)模型,并針對(duì)不同場(chǎng)景進(jìn)行了優(yōu)化:
聚合鍵模型:能夠合并具有相同鍵的值列,并顯著提高性能
唯一鍵模型:鍵在此模型中是唯一的,具有相同鍵的數(shù)據(jù)將被覆蓋以實(shí)現(xiàn)行級(jí)數(shù)據(jù)更新。
重復(fù)密鑰模型:這是一個(gè)詳細(xì)的數(shù)據(jù)模型,能夠詳細(xì)存儲(chǔ)事實(shí)數(shù)據(jù)表。
Doris 也支持強(qiáng)一致性的物化視圖。物化視圖自動(dòng)選擇和更新,大大降低了用戶的維護(hù)成本。
?? 查詢引擎
Doris 在其查詢引擎中采用 MPP 模型,實(shí)現(xiàn)節(jié)點(diǎn)之間和節(jié)點(diǎn)內(nèi)部的并行執(zhí)行。它還支持多個(gè)大型表的分布式隨機(jī)連接,以處理復(fù)雜的查詢。

Doris 查詢引擎是矢量化的,所有內(nèi)存結(jié)構(gòu)都以列格式布局。這可以在很大程度上減少虛擬函數(shù)調(diào)用,提高緩存命中率,并有效利用 SIMD 指令。Doris 在寬表聚合場(chǎng)景中提供的性能是非矢量化引擎的 5-10 倍。

Apache Doris 使用自適應(yīng)查詢執(zhí)行技術(shù),根據(jù)運(yùn)行時(shí)統(tǒng)計(jì)信息動(dòng)態(tài)調(diào)整執(zhí)行計(jì)劃。例如,它可以生成運(yùn)行時(shí)過濾器,將其推送到探測(cè)端,并自動(dòng)滲透到底部的 Scan 節(jié)點(diǎn),從而大大減少探測(cè)中的數(shù)據(jù)量并提高連接性能。Doris 中的運(yùn)行時(shí)過濾器支持 In/Min/Max/Bloom 過濾器。
?? 查詢優(yōu)化器
在優(yōu)化器方面,Doris 使用了 CBO 和 RBO 的組合。RBO 支持常量折疊、子查詢重寫、謂詞下推,CBO 支持聯(lián)接重新排序。Doris CBO正在不斷優(yōu)化,以實(shí)現(xiàn)更準(zhǔn)確的統(tǒng)計(jì)信息收集和推導(dǎo),以及更準(zhǔn)確的成本模型預(yù)測(cè)。Apache Doris已成功從Apache孵化器畢業(yè),并于2022年<>月成為頂級(jí)項(xiàng)目。
目前,Apache Doris 社區(qū)已經(jīng)聚集了來自不同行業(yè)的近 400 家公司的 200 多名貢獻(xiàn)者,每月活躍貢獻(xiàn)者數(shù)量接近 100 人。Apache Doris已成功從Apache孵化器畢業(yè),并于2022年<>月成為頂級(jí)項(xiàng)目。
目前,Apache Doris 社區(qū)已經(jīng)聚集了來自不同行業(yè)的近 400 家公司的 200 多名貢獻(xiàn)者,每月活躍貢獻(xiàn)者數(shù)量接近 100 人。
總結(jié)
Thrift在很多開源項(xiàng)目中已經(jīng)被驗(yàn)證是穩(wěn)定和高效的,例如Cassandra、Hadoop、HBase等;國外在Facebook中有廣泛使用,國內(nèi)包括百度、美團(tuán)小米、和餓了么等公司。

本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!