成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Doris數倉的四大特點,一篇講明白

數據庫 其他數據庫
Doris是一款基于MPP技術的SQL分析型數據庫系統,能夠在海量數據的OLAP場景下提供毫秒級的查詢響應性能。Doris的實現架構脫胎自Apache Impala和Google Mesa系統,并進行了大量的改造和優化,最終形成了今天大家看到的這款架構優雅、性能卓越、功能豐富、簡單易用的OLAP數據庫系統。

01、極簡架構

Doris從設計上來說,融合了Google Mesa的數據存儲模型、Apache的ORCFile存儲格式、Apache Impala查詢引擎和MySQL交互協議,是一個擁有先進技術和先進架構的領先設計產品,如圖1所示。

圖片

▲圖1 Doris技術分解圖

在架構方面,Doris只有兩類進程:一類是FE,可以理解為Doris的管理節點,主要負責用戶請求的接入、查詢計劃的解析、元數據的存儲和集群管理相關工作;另一類是BE,主要負責數據存儲、查詢計劃的執行。這兩類進程都是可以橫向擴展的。除此之外,Doris不依賴任何第三方系統(如HDFS、Zookeeper等)。這種高度集成的架構設計極大地降低了運維成本。

FE節點包含Leader、Follower和Observer三種角色。默認一個集群只能有一個Leader,可以有多個Follower和Observer。其中,Leader和Follower組成一個Paxos選擇組,如果Leader宕機,剩下的Follower會自動選出新的Leader,保證寫入高可用。Observer同步Leader的數據,但是不參加選舉。如果只部署一個FE,則FE默認就是Leader。

FE節點主要包括存儲管理(Store Manager)模塊、狀態管理(State Store)模塊、協調(Coordinator)模塊、元數據(StoreMeta)模塊和元數據緩存(StoreMeta Cache)模塊。存儲管理模塊負責管理所有的元數據信息,包括數據庫、表信息、tablet信息、tablet的副本信息等。存儲管理模塊還負責管理用戶的權限信息(即用戶的認證信息和授權信息)和數據的導入任務等。狀態管理模塊負責管理所有BE進程的存活狀態信息、查詢負載信息等非持久化信息,并提供發布訂閱接口。協調模塊負責接收用戶發來的請求,然后進行語句解析、生成執行規劃,根據當前集群的狀態,對執行規劃進行調度。元數據模塊負責對元數據的讀寫,只有FE Leader擁有此權限。元數據緩存模塊負責同步元數據,以供語句解析、生成執行規劃,主要是Follower和Observer角色的權限。

BE節點可以無限擴展,并且所有BE節點的角色都是對等的。在集群足夠大的情況下,部分BE下線不影響集群提供服務。BE節點主要由存儲引擎(Store Engine)和查詢執行器(Query Executor)組成。存儲引擎負責管理節點本地的tablet數據,發送或者接收數據形成副本,定期合并更新多個版本的數據減少存儲占用。存儲引擎還負責接收來自查詢執行器的數據讀取需求和批量數據導入需求。一個查詢在MPP集群中執行時,會拆成一個樹狀的執行樹,這棵樹的執行由Coordinator來協調執行,樹的葉子節點也叫計劃片斷(PlanFragment),每一個PlanFragment分配給一個BE節點的查詢執行器來執行,這就是查詢執行器模塊的作用。

02、使用簡單

Doris不僅架構簡單,開發和使用也非常簡單。對一款OLAP數據庫來說,性能不是數據庫的全部,易用性才是決定是否持續使用的關鍵,Doris從系統設計之初就一直以用戶的易用性作為出發點。

從數據分析的全周期來看,一般可以簡單歸納成四個方面,從數據建模→數據導入→用戶上手分析→持續使用以及維護升級,Doris的易用性無處不在。

在數據建模方面,Doris支持Aggregate、Unique和Duplicate三種模型,可以滿足OLAP領域的各種應用場景。同時,Doris建表語句,相對于MySQL只增加了一些分布式系統所具有的特性,比如分布鍵、分桶數等。有過分布式數據庫使用經驗的用戶非常容易理解和上手操作。

在數據導入方面,Doris提供多種數據導入方案(如圖2所示),可以針對不同的數據源進行選擇,同時在數據導入過程中提供原子性保證。不論是使用Broker Load進行批量導入,還是使用INSERT語句進行單條導入,都是一個完整的事務操作。導入事務可以保證一批次內的數據原子生效,不會出現部分數據寫入的情況。

圖片

▲圖2 Doris數據導入支持

同時,每一個導入作業都會生成一個Label,這個Label是在數據庫內用于唯一區分一個導入任務。Label可以由用戶指定,部分導入功能也會由系統自動生成。Label用于保證對應的導入作業僅能成功導入一次,一個成功導入的Label再次使用時,會被拒絕并報錯Label already used。通過這個機制,數據消費側可以實現At-Most-Once語義。如果結合上游系統的At-Least-Once語義,則可以實現端到端數據導入的Exactly-Once語義。數據導入流程如圖3所示。

圖片

▲圖3 Doris數據導入流程

在SQL開發方面,Doris支持標準的SQL語言,在方言方面向MySQL兼容。不論是簡單的單表聚合、排序過濾操作,還是復雜的多表關聯、子查詢、窗口函數等,Doris都可以通過SQL輕松完成,極大地降低了用戶的遷移和使用成本。Adhoc這類高吞吐的即席查詢和庫內ETL場景也是Doris的強項。Doris還能夠支持復雜SQL語法,包括Grouping Set等高級語法功能,同時還可以通過UDF或UDAF來自定義拓展功能。在TB級別數據上,Doris可以部分代替Hive等離線系統的功能,使得用戶在一套數據庫中滿足所有需求。

在工具方面,Doris在FE模塊中實現了兼容MySQL協議,方便用戶使用標準的MySQL客戶端或各種語言的類庫進行連接,對各種工具的支持都非常好。在數據庫開發方面[3] [4] ,我們可以無縫使用DBeaver、DataGrip、Navicat等主流開發工具;在編程應用方面[5] [6] ,Doris完全支持MySQL的JDBC和ODBC接口,可以支持C、Python、Java、Shell等開發語言;在BI應用方面,Doris支持帆軟BI、觀遠BI、永洪BI、Tableau等各種敏捷BI軟件;在ETL調度方面,Doris支持Kettle、DolphinScheduler等主流軟件。

在集群可靠性方面,Doris元數據使用內存存儲+檢查點+鏡像日志文件的模式,使用BTBJE(類似于Raft )協議實現元數據的高可用性和高可靠性。Doris內部自行管理數據的多副本和自動修復,保證數據的高可用、高可靠性。在部分服務器宕機情況下,集群依然可以正常運行,數據也不會丟失。Doris部署無外部依賴,只需要部署BE和FE模塊即可搭建一個集群。Doris支持在線更改表模式(加減列、創建Rollup ),不會影響當前服務,不會阻塞讀、寫等操作,因為這種操作是異步執行的。

在集群擴縮容方面,Doris基于自身的分布式管理框架,可以自動管理數據副本的分布、修復和均衡。比如對于副本損壞的情況,Doris會自動感知并進行修復。而對于節點擴縮容,僅需一條SQL命令即可完成,Doris會自動進行數據分片均衡,整個過程完全不影響系統服務,無須運維人員進行任何額外的操作。

在集群升級方面,Doris的升級方式卻極其簡單,只需要替換二進制程序,滾動重啟集群即可。在設計上,Doris完全向前兼容,所以也可以通過灰度升級的方式進行新版本的驗證和測試。而Doris本身的一些失敗重試和故障路由功能也極大地降低了升級過程中發生的錯誤對業務的影響。

03、功能豐富

Doris提供了非常豐富的功能來幫助業務適應不同的應用場景。下面重點介紹一些Doris的特色功能。

首先是分區分桶裁剪功能。Doris支持兩個層次的數據劃分:第一層是Partition,支持Range和List的劃分方式。第二層是Bucket分桶,將數據通過Hash進行水平劃分,數據分片Tablet在集群中均勻打散。Doris數據分布示例如圖4所示。

圖片

▲圖4 Doris數據分布示例

利用分桶裁剪功能,Doris可以將查詢固定到極少數分片上,從而顯著降低單個查詢對系統資源的消耗,提升集群整體的并發查詢能力。在高并發查詢場景,Doris單節點可以支撐上千QPS的查詢請求。

其次是合理的緩存功能。Doris還支持SQL級別和Partition級別的查詢緩存。其中SQL級別的緩存以SQL語句的Hash值作為Key,直接緩存SQL結果,非常適合更新頻率不高,但是查詢非常頻繁的場景。而Partition級別的緩存會智能地將SQL結果中不同分區的結果數據緩存起來,之后的查詢,可以利用已緩存分區的數據加上新分區實時查詢的數據得到最終的結果,從而降低重復數據的實時查詢需求,減少對系統資源的消耗。

再次,Doris支持Bitmap數據類型。這一數據類型利用位圖來存儲存儲整型數據,并且可以通過位圖進行一些集合類操作。Bitmap可以應用于高基數精確去重場景。傳統的實時計算去重數據的算法,需要在內存中構建Hash表來進行數據去重,在基數非常高的情況下,會占用大量的內存。而使用Bitmap,可以將數值類型轉換成位圖上的0和1,從而極大地降低內存開銷,并且對于去重計算,只需要將多個Bitmap求交集后計算1的個數即可,從而達到在有限的內存開銷情況下,進行快速的高基數精確去重計算。

在用戶畫像場景中,使用Bitmap來存儲用戶ID,可以通過位圖的集合運算快速獲取不同標簽組合的人群包。同時,Doris也內置了很多Bitmap相關的函數,用于計算漏斗、留存等。比如通過intersect_count()函數就可以方便地計算用戶的留存情況。

最后是物化視圖。物化視圖也是Doris的核心特點之一。物化視圖是將預先計算(根據定義好的SELECT語句)好的數據集,存儲在一個對用戶透明且有真實數據的視圖表格中。物化視圖主要是為了滿足用戶既能對原始明細數據的任意維度分析,也能快速對固定維度進行分析查詢,在統一視角下對明細、聚合數據進行分析的需求。

在Doris中,用戶可以使用明細數據模型存儲明細數據,之后在明細數據上,選擇任意維度和指標創建聚合物化視圖,如SUM、MIN、MAX、COUNT等。Doris會保證明細表和物化視圖中數據的完全一致。如果導入或刪除物理表數據, 物化視圖會自動更新,保證原始表和物化視圖表的數據一致性。同時,物化視圖對用戶查詢是透明的,Doris會自動根據查詢語句中的模式,匹配到最合適的物化視圖進行查詢。通過物化視圖功能,用戶可以在一張表上統一明細和聚合模型,并且加速某些固定模式的查詢響應。

Doris還支持基于主鍵的數據更新。通過Unique數據模型,用戶可以對數據基于主鍵進行更新。在實現層面,Doris采用Merge-on-Read的方式提供更新后的數據,此外,用戶還可以使用REPLACE_IF_NOT_NULL這種聚合方式,實現部分列更新的需求。針對Unique數據模型,Doris還支持友好的Update操作。

基于Unique模型,Doris還通過Marked Delete和Sequence Column等功能,可以實現對上游交易數據庫更新數據的同步操作,并且不僅能夠保證事務的原子性,還可以保證數據同步的順序性。

04、開源開放

Doris還有一個特別重要的特點就是完全開源開放。Apache Doris作為Apache基金會的項目,遵守的就是Apache License 2.0。Apache License 2.0作為最主流的開源協議,被OSI認定為“受歡迎且被廣泛使用或具有強大社區的許可證”(The following OSI-approved licenses are popular, widely used, or have strong communities)。

有關 Apache License 2.0的具體內容,可以在 Apache 官網查閱。簡單來說,分發完全自由、允許項目代碼被修改、允許作為開源或商業化軟件再次發布 ,一旦授權永久有效,在修改代碼或有源代碼衍生的代碼中需要帶有原來代碼的協議、專利聲明等。這是對于任何商業化公司和開源用戶都極其友好的協議。

關于作者:王春波,資深大數據架構師,現就職于一家互聯網公司,任高級數倉工程師,負責電商數倉項目;在銀行業、零售行業深耕多年,參與和負責過多家銀行、零售數據分析實施項目;“數據中臺研習社”號主,《高效使用Greenplum:入門、進階與數據中臺》作者。

責任編輯:武曉燕 來源: 數倉寶貝庫
相關推薦

2024-03-27 18:22:58

Hadoop部件生態

2025-05-13 01:10:00

數據產品開發

2024-08-07 09:02:51

2022-07-15 18:55:04

技術數據分析數據驅動

2023-04-06 08:37:24

2023-01-11 18:23:38

傳統數倉Hadoop數倉技術

2022-07-21 07:07:40

大數據技術

2023-02-10 09:43:51

架構開發

2023-12-11 18:23:21

2022-07-27 07:45:53

二叉樹鏡像函數

2021-05-08 07:14:38

MySQL數據庫安全性

2019-01-23 16:13:02

大數據數據處理數據挖掘

2022-05-25 11:39:12

數字化企業

2023-01-03 18:32:32

2024-06-05 08:51:08

2010-03-12 16:26:35

2022-10-08 07:17:14

架構

2014-03-27 15:57:45

Android組件Activity

2024-08-06 08:44:29

2021-10-31 14:14:33

內存接口協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91在线播| 欧美日韩综合一区 | 久操亚洲 | 成人欧美一区二区三区在线观看 | 91极品欧美视频 | 精品一二三区在线观看 | 欧美国产精品 | 男女羞羞视频在线 | 日本一区二区影视 | 欧美一区永久视频免费观看 | 午夜资源 | h在线播放 | 在线婷婷 | 成人免费精品视频 | 国产乱肥老妇国产一区二 | 欧美精品欧美精品系列 | 日韩插插 | 亚洲国产成人一区二区 | 成人久久久久 | 国产日韩久久 | 国产久| 精品久久不卡 | 夜夜摸天天操 | 精品一区二区三区在线播放 | 激情视频网站 | 日韩一区二区三区视频在线观看 | 精品国产一区二区三区av片 | av中文在线 | 99精品视频免费观看 | 精品国产欧美 | 91视频在线观看免费 | 午夜视频在线 | 福利视频一区二区 | 久久婷婷香蕉热狠狠综合 | 国产精品久久视频 | 国产精品综合一区二区 | 久久久国产精品 | 亚洲看片网站 | 久久午夜视频 | 久久久久国产一区二区三区四区 | 操操日|