版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
一篇講明白Doris數(shù)倉特點導(dǎo)讀:Doris是一款基于MPP技術(shù)的SQL分析型數(shù)據(jù)庫系統(tǒng),能夠在海量數(shù)據(jù)的OLAP場景下提供毫秒級的查詢響應(yīng)性能。Doris的實現(xiàn)架構(gòu)脫胎自ApacheImpala和GoogleMesa系統(tǒng),并進(jìn)行了大量的改造和優(yōu)化,最終形成了今天大家看到的這款架構(gòu)優(yōu)雅、性能卓越、功能豐富、簡單易用的OLAP數(shù)據(jù)庫系統(tǒng)。01極簡架構(gòu)Doris從設(shè)計上來說,融合了GoogleMesa的數(shù)據(jù)存儲模型、Apache的ORCFile存儲格式、ApacheImpala查詢引擎和MySQL交互協(xié)議,是一個擁有先進(jìn)技術(shù)和先進(jìn)架構(gòu)的領(lǐng)先設(shè)計產(chǎn)品,如圖1所示。▲圖1
Doris技術(shù)分解圖在架構(gòu)方面,Doris只有兩類進(jìn)程:一類是FE,可以理解為Doris的管理節(jié)點,主要負(fù)責(zé)用戶請求的接入、查詢計劃的解析、元數(shù)據(jù)的存儲和集群管理相關(guān)工作;另一類是BE,主要負(fù)責(zé)數(shù)據(jù)存儲、查詢計劃的執(zhí)行。這兩類進(jìn)程都是可以橫向擴(kuò)展的。除此之外,Doris不依賴任何第三方系統(tǒng)(如HDFS、Zookeeper等)。這種高度集成的架構(gòu)設(shè)計極大地降低了運維成本。FE節(jié)點包含Leader、Follower和Observer三種角色。默認(rèn)一個集群只能有一個Leader,可以有多個Follower和Observer。其中,Leader和Follower組成一個Paxos選擇組,如果Leader宕機,剩下的Follower會自動選出新的Leader,保證寫入高可用。Observer同步Leader的數(shù)據(jù),但是不參加選舉。如果只部署一個FE,則FE默認(rèn)就是Leader。FE節(jié)點主要包括存儲管理(StoreManager)模塊、狀態(tài)管理(StateStore)模塊、協(xié)調(diào)(Coordinator)模塊、元數(shù)據(jù)(StoreMeta)模塊和元數(shù)據(jù)緩存(StoreMetaCache)模塊。存儲管理模塊負(fù)責(zé)管理所有的元數(shù)據(jù)信息,包括數(shù)據(jù)庫、表信息、tablet信息、tablet的副本信息等。存儲管理模塊還負(fù)責(zé)管理用戶的權(quán)限信息(即用戶的認(rèn)證信息和授權(quán)信息)和數(shù)據(jù)的導(dǎo)入任務(wù)等。狀態(tài)管理模塊負(fù)責(zé)管理所有BE進(jìn)程的存活狀態(tài)信息、查詢負(fù)載信息等非持久化信息,并提供發(fā)布訂閱接口。協(xié)調(diào)模塊負(fù)責(zé)接收用戶發(fā)來的請求,然后進(jìn)行語句解析、生成執(zhí)行規(guī)劃,根據(jù)當(dāng)前集群的狀態(tài),對執(zhí)行規(guī)劃進(jìn)行調(diào)度。元數(shù)據(jù)模塊負(fù)責(zé)對元數(shù)據(jù)的讀寫,只有FELeader擁有此權(quán)限。元數(shù)據(jù)緩存模塊負(fù)責(zé)同步元數(shù)據(jù),以供語句解析、生成執(zhí)行規(guī)劃,主要是Follower和Observer角色的權(quán)限。BE節(jié)點可以無限擴(kuò)展,并且所有BE節(jié)點的角色都是對等的。在集群足夠大的情況下,部分BE下線不影響集群提供服務(wù)。BE節(jié)點主要由存儲引擎(StoreEngine)和查詢執(zhí)行器(QueryExecutor)組成。存儲引擎負(fù)責(zé)管理節(jié)點本地的tablet數(shù)據(jù),發(fā)送或者接收數(shù)據(jù)形成副本,定期合并更新多個版本的數(shù)據(jù)減少存儲占用。存儲引擎還負(fù)責(zé)接收來自查詢執(zhí)行器的數(shù)據(jù)讀取需求和批量數(shù)據(jù)導(dǎo)入需求。一個查詢在MPP集群中執(zhí)行時,會拆成一個樹狀的執(zhí)行樹,這棵樹的執(zhí)行由Coordinator來協(xié)調(diào)執(zhí)行,樹的葉子節(jié)點也叫計劃片斷(PlanFragment),每一個PlanFragment分配給一個BE節(jié)點的查詢執(zhí)行器來執(zhí)行,這就是查詢執(zhí)行器模塊的作用。02使用簡單Doris不僅架構(gòu)簡單,開發(fā)和使用也非常簡單。對一款OLAP數(shù)據(jù)庫來說,性能不是數(shù)據(jù)庫的全部,易用性才是決定是否持續(xù)使用的關(guān)鍵,Doris從系統(tǒng)設(shè)計之初就一直以用戶的易用性作為出發(fā)點。從數(shù)據(jù)分析的全周期來看,一般可以簡單歸納成四個方面,從數(shù)據(jù)建模→數(shù)據(jù)導(dǎo)入→用戶上手分析→持續(xù)使用以及維護(hù)升級,Doris的易用性無處不在。在數(shù)據(jù)建模方面,Doris支持Aggregate、Unique和Duplicate三種模型,可以滿足OLAP領(lǐng)域的各種應(yīng)用場景。同時,Doris建表語句,相對于MySQL只增加了一些分布式系統(tǒng)所具有的特性,比如分布鍵、分桶數(shù)等。有過分布式數(shù)據(jù)庫使用經(jīng)驗的用戶非常容易理解和上手操作。在數(shù)據(jù)導(dǎo)入方面,Doris提供多種數(shù)據(jù)導(dǎo)入方案(如圖2所示),可以針對不同的數(shù)據(jù)源進(jìn)行選擇,同時在數(shù)據(jù)導(dǎo)入過程中提供原子性保證。不論是使用BrokerLoad進(jìn)行批量導(dǎo)入,還是使用INSERT語句進(jìn)行單條導(dǎo)入,都是一個完整的事務(wù)操作。導(dǎo)入事務(wù)可以保證一批次內(nèi)的數(shù)據(jù)原子生效,不會出現(xiàn)部分?jǐn)?shù)據(jù)寫入的情況。▲圖2
Doris數(shù)據(jù)導(dǎo)入支持同時,每一個導(dǎo)入作業(yè)都會生成一個Label,這個Label是在數(shù)據(jù)庫內(nèi)用于唯一區(qū)分一個導(dǎo)入任務(wù)。Label可以由用戶指定,部分導(dǎo)入功能也會由系統(tǒng)自動生成。Label用于保證對應(yīng)的導(dǎo)入作業(yè)僅能成功導(dǎo)入一次,一個成功導(dǎo)入的Label再次使用時,會被拒絕并報錯Labelalreadyused。通過這個機制,數(shù)據(jù)消費側(cè)可以實現(xiàn)At-Most-Once語義。如果結(jié)合上游系統(tǒng)的At-Least-Once語義,則可以實現(xiàn)端到端數(shù)據(jù)導(dǎo)入的Exactly-Once語義。數(shù)據(jù)導(dǎo)入流程如圖3所示。▲圖3Doris數(shù)據(jù)導(dǎo)入流程在SQL開發(fā)方面,Doris支持標(biāo)準(zhǔn)的SQL語言,在方言方面向MySQL兼容。不論是簡單的單表聚合、排序過濾操作,還是復(fù)雜的多表關(guān)聯(lián)、子查詢、窗口函數(shù)等,Doris都可以通過SQL輕松完成,極大地降低了用戶的遷移和使用成本。Adhoc這類高吞吐的即席查詢和庫內(nèi)ETL場景也是Doris的強項。Doris還能夠支持復(fù)雜SQL語法,包括GroupingSet等高級語法功能,同時還可以通過UDF或UDAF來自定義拓展功能。在TB級別數(shù)據(jù)上,Doris可以部分代替Hive等離線系統(tǒng)的功能,使得用戶在一套數(shù)據(jù)庫中滿足所有需求。在工具方面,Doris在FE模塊中實現(xiàn)了兼容MySQL協(xié)議,方便用戶使用標(biāo)準(zhǔn)的MySQL客戶端或各種語言的類庫進(jìn)行連接,對各種工具的支持都非常好。在數(shù)據(jù)庫開發(fā)方面[3]
[4]
,我們可以無縫使用DBeaver、DataGrip、Navicat等主流開發(fā)工具;在編程應(yīng)用方面[5]
[6]
,Doris完全支持MySQL的JDBC和ODBC接口,可以支持C、Python、Java、Shell等開發(fā)語言;在BI應(yīng)用方面,Doris支持帆軟BI、觀遠(yuǎn)BI、永洪BI、Tableau等各種敏捷BI軟件;在ETL調(diào)度方面,Doris支持Kettle、DolphinScheduler等主流軟件。在集群可靠性方面,Doris元數(shù)據(jù)使用內(nèi)存存儲+檢查點+鏡像日志文件的模式,使用BTBJE(類似于Raft)協(xié)議實現(xiàn)元數(shù)據(jù)的高可用性和高可靠性。Doris內(nèi)部自行管理數(shù)據(jù)的多副本和自動修復(fù),保證數(shù)據(jù)的高可用、高可靠性。在部分服務(wù)器宕機情況下,集群依然可以正常運行,數(shù)據(jù)也不會丟失。Doris部署無外部依賴,只需要部署B(yǎng)E和FE模塊即可搭建一個集群。Doris支持在線更改表模式(加減列、創(chuàng)建Rollup),不會影響當(dāng)前服務(wù),不會阻塞讀、寫等操作,因為這種操作是異步執(zhí)行的。在集群擴(kuò)縮容方面,Doris基于自身的分布式管理框架,可以自動管理數(shù)據(jù)副本的分布、修復(fù)和均衡。比如對于副本損壞的情況,Doris會自動感知并進(jìn)行修復(fù)。而對于節(jié)點擴(kuò)縮容,僅需一條SQL命令即可完成,Doris會自動進(jìn)行數(shù)據(jù)分片均衡,整個過程完全不影響系統(tǒng)服務(wù),無須運維人員進(jìn)行任何額外的操作。在集群升級方面,Doris的升級方式卻極其簡單,只需要替換二進(jìn)制程序,滾動重啟集群即可。在設(shè)計上,Doris完全向前兼容,所以也可以通過灰度升級的方式進(jìn)行新版本的驗證和測試。而Doris本身的一些失敗重試和故障路由功能也極大地降低了升級過程中發(fā)生的錯誤對業(yè)務(wù)的影響。03功能豐富Doris提供了非常豐富的功能來幫助業(yè)務(wù)適應(yīng)不同的應(yīng)用場景。下面重點介紹一些Doris的特色功能。首先是分區(qū)分桶裁剪功能。Doris支持兩個層次的數(shù)據(jù)劃分:第一層是Partition,支持Range和List的劃分方式。第二層是Bucket分桶,將數(shù)據(jù)通過Hash進(jìn)行水平劃分,數(shù)據(jù)分片Tablet在集群中均勻打散。Doris數(shù)據(jù)分布示例如圖4所示。▲圖4Doris數(shù)據(jù)分布示例利用分桶裁剪功能,Doris可以將查詢固定到極少數(shù)分片上,從而顯著降低單個查詢對系統(tǒng)資源的消耗,提升集群整體的并發(fā)查詢能力。在高并發(fā)查詢場景,Doris單節(jié)點可以支撐上千QPS的查詢請求。其次是合理的緩存功能。Doris還支持SQL級別和Partition級別的查詢緩存。其中SQL級別的緩存以SQL語句的Hash值作為Key,直接緩存SQL結(jié)果,非常適合更新頻率不高,但是查詢非常頻繁的場景。而Partition級別的緩存會智能地將SQL結(jié)果中不同分區(qū)的結(jié)果數(shù)據(jù)緩存起來,之后的查詢,可以利用已緩存分區(qū)的數(shù)據(jù)加上新分區(qū)實時查詢的數(shù)據(jù)得到最終的結(jié)果,從而降低重復(fù)數(shù)據(jù)的實時查詢需求,減少對系統(tǒng)資源的消耗。再次,Doris支持Bitmap數(shù)據(jù)類型。這一數(shù)據(jù)類型利用位圖來存儲存儲整型數(shù)據(jù),并且可以通過位圖進(jìn)行一些集合類操作。Bitmap可以應(yīng)用于高基數(shù)精確去重場景。傳統(tǒng)的實時計算去重數(shù)據(jù)的算法,需要在內(nèi)存中構(gòu)建Hash表來進(jìn)行數(shù)據(jù)去重,在基數(shù)非常高的情況下,會占用大量的內(nèi)存。而使用Bitmap,可以將數(shù)值類型轉(zhuǎn)換成位圖上的0和1,從而極大地降低內(nèi)存開銷,并且對于去重計算,只需要將多個Bitmap求交集后計算1的個數(shù)即可,從而達(dá)到在有限的內(nèi)存開銷情況下,進(jìn)行快速的高基數(shù)精確去重計算。在用戶畫像場景中,使用Bitmap來存儲用戶ID,可以通過位圖的集合運算快速獲取不同標(biāo)簽組合的人群包。同時,Doris也內(nèi)置了很多Bitmap相關(guān)的函數(shù),用于計算漏斗、留存等。比如通過intersect_count()函數(shù)就可以方便地計算用戶的留存情況。最后是物化視圖。物化視圖也是Doris的核心特點之一。物化視圖是將預(yù)先計算(根據(jù)定義好的SELECT語句)好的數(shù)據(jù)集,存儲在一個對用戶透明且有真實數(shù)據(jù)的視圖表格中。物化視圖主要是為了滿足用戶既能對原始明細(xì)數(shù)據(jù)的任意維度分析,也能快速對固定維度進(jìn)行分析查詢,在統(tǒng)一視角下對明細(xì)、聚合數(shù)據(jù)進(jìn)行分析的需求。在Doris中,用戶可以使用明細(xì)數(shù)據(jù)模型存儲明細(xì)數(shù)據(jù),之后在明細(xì)數(shù)據(jù)上,選擇任意維度和指標(biāo)創(chuàng)建聚合物化視圖,如SUM、MIN、MAX、COUNT等。Doris會保證明細(xì)表和物化視圖中數(shù)據(jù)的完全一致。如果導(dǎo)入或刪除物理表數(shù)據(jù),物化視圖會自動更新,保證原始表和物化視圖表的數(shù)據(jù)一致性。同時,物化視圖對用戶查詢是透明的,Doris會自動根據(jù)查詢語句中的模式,匹配到最合適的物化視圖進(jìn)行查詢。通過物化視圖功能,用戶可以在一張表上統(tǒng)一明細(xì)和聚合模型,并且加速某些固定模式的查詢響應(yīng)。Doris還支持基于主鍵的數(shù)據(jù)更新。通過Unique數(shù)據(jù)模型,用戶可以對數(shù)據(jù)基于主鍵進(jìn)行更新。在實現(xiàn)層面,Doris采用Merge-on-Read的方式提供更新后的數(shù)據(jù),此外,用戶還可以使用REPLACE_IF_NOT_NULL這種聚合方式,實現(xiàn)部分列更新的需求。針對Unique數(shù)據(jù)模型,Doris還支持友好的Update操作。基于Unique模型,Doris還通過MarkedDelete和SequenceColumn等功能,可以實現(xiàn)對上游交易數(shù)據(jù)庫更新數(shù)據(jù)的同步操作,并且不僅能夠保證事務(wù)的原子性,還可以保證數(shù)據(jù)同步的順序性。04開源開放Doris還有一個特別重要的特點就是完全開源開放。ApacheDoris作為Apache基金會的項目,遵守的就是ApacheLicense2.0。ApacheLicense2.0作為最主流的開源協(xié)議,被OSI認(rèn)定為“受歡迎且被廣泛使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年鄭州城市職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年南通科技職業(yè)學(xué)院單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年青島酒店管理職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年廣東工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年寧夏工商職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題及答案詳細(xì)解析
- 2026年南昌交通學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026年保定理工學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026年黑龍江藝術(shù)職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年保定幼兒師范高等專科學(xué)校單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026年南京鐵道職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 河北審圖合同協(xié)議
- 溴化鋰機組回收合同(2篇)
- 菏澤某中學(xué)歷年自主招生試題
- 醫(yī)院非產(chǎn)科孕情管理和三病檢測工作流程
- 中小學(xué)的德育工作指南課件
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- 物業(yè)保潔保安培訓(xùn)課件
- 人教版初中英語七至九年級單詞匯總表(七年級至九年級全5冊)
- cnc加工中心點檢表
- 計劃決策評審-匯報模板課件
- 《食品分析》復(fù)習(xí)備考試題庫(附答案)
評論
0/150
提交評論