日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【数据库】Apache Doris : 一个开源 MPP 数据库的架构与实践

發(fā)布時間:2024/1/1 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】Apache Doris : 一个开源 MPP 数据库的架构与实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • Doris 背景介紹
    • 一、Doris
    • 二、Doris 定位
  • 適用場景 & 案例介紹
    • 一、適用場景
    • 二、具體案例
  • Doris 整體架構(gòu)
    • 一、Doris 整體架構(gòu)
    • 二、Doris 數(shù)據(jù)分布
    • 三、Doris 的使用方式
  • Doris 關(guān)鍵技術(shù)
    • 一、數(shù)據(jù)可靠性
    • 二、易運維
    • 三、MySQL 兼容性
    • 四、支持 MPP
  • Doris 數(shù)據(jù)模型
    • 一、Doris 數(shù)據(jù)模型特點
    • 二、聚合計算說明:
    • 三、按列存儲
    • 四、物化視圖
    • 五、兩層分區(qū)與分級存儲
    • 六、Doris 在 Elasticsearch 的應(yīng)用
    • 七、Kafka 消息隊列加載
    • 八、Doris 其他特性

Doris 背景介紹

介紹 Doris,讀音:[?d?r?s],的整體架構(gòu),以及 Doris 的一些特性。

一、Doris

Doris 是分布式、面向交互式查詢的分布式數(shù)據(jù)庫,主要部分是 SQL,內(nèi)部用到 MPP 技術(shù)。

什么是 MPP?

MPP ( Massively Parallel Processing ),即大規(guī)模并行處理,在數(shù)據(jù)庫非共享集群中,每個節(jié)點都有獨立的磁盤存儲系統(tǒng)和內(nèi)存系統(tǒng),業(yè)務(wù)數(shù)據(jù)根據(jù)數(shù)據(jù)庫模型和應(yīng)用特點劃分到各個節(jié)點上,每臺數(shù)據(jù)節(jié)點通過專用網(wǎng)絡(luò)或者商業(yè)通用網(wǎng)絡(luò)互相連接,彼此協(xié)同計算,作為整體提供數(shù)據(jù)庫服務(wù)。非共享數(shù)據(jù)庫集群有完全的可伸縮性、高可用、高性能、優(yōu)秀的性價比、資源共享等優(yōu)勢。簡單來說,MPP 是將任務(wù)并行的分散到多個服務(wù)器和節(jié)點上,在每個節(jié)點上計算完成后,將各自部分的結(jié)果匯總在一起得到最終的結(jié)果 ( 與 Hadoop 相似 )。

Doris 主要解決 PB 級別的數(shù)據(jù)量(如果高于 PB 級別,不推薦使用 Doris 解決,可以考慮用 Hive 等工具),解決結(jié)構(gòu)化數(shù)據(jù),查詢時間一般在秒級或毫秒級。

Doris 由百度大數(shù)據(jù)部研發(fā) ( 之前叫百度 Palo,2018年貢獻(xiàn)到 Apache 社區(qū)后,更名為 Doris ),在百度內(nèi)部,有超過200個產(chǎn)品線在使用,部署機器超過1000臺,單一業(yè)務(wù)最大可達(dá)到上百 TB。

百度將 Doris 貢獻(xiàn)給 Apache 社區(qū)之后,許多外部用戶也成為了 Doris 的使用者,例如新浪微博,美團,小米等著名企業(yè)。

二、Doris 定位

在數(shù)據(jù)分析處理框架中,Doris 主要做的是 Online 層面的數(shù)據(jù)服務(wù),主要處理的是數(shù)據(jù)分析方面的服務(wù)。

Doris 的目標(biāo)是:實現(xiàn)低成本(主要針對商業(yè)產(chǎn)品),可線性擴展,支持云化部署,高可用,高查詢性能,高加載性能。

簡要介紹兩個百度內(nèi)部業(yè)務(wù)中 Doris 的應(yīng)用案例:

A. 百度統(tǒng)計在線報表

B. 百度另一內(nèi)部業(yè)務(wù)的多維分析

可以手動拖拽維度、指標(biāo)等,進(jìn)行查詢。

適用場景 & 案例介紹

一、適用場景

1、對數(shù)據(jù)分析、統(tǒng)計

數(shù)據(jù)分析大體上可以分為兩大類場景:一種偏向于報表類的,另一種偏向于多維分析的。

2、報表

報表類數(shù)據(jù)分析,數(shù)據(jù)分析以及查詢的模式相對比較固定,而且后臺 SQL 的模式往往都是確定的。針對此類應(yīng)用場景,選擇使用 MySQL 存結(jié)果數(shù)據(jù),用戶可從界面選擇執(zhí)行批處理以及發(fā)送郵件。在 Doris 平臺中,報表類查詢時延一般在秒級以下。

3、多維分析

這里提到的多維分析,同樣要求數(shù)據(jù)是結(jié)構(gòu)化的,適用于查詢相對靈活的場景,例如數(shù)據(jù)分析條件以及聚合維度等方面不是很確定,一般將此類數(shù)據(jù)分析定義為多維分析。相對于報表類分析,多維分析的查詢時延會稍慢,大約在會在 10s 的級別。

二、具體案例

案例分析 1:百度統(tǒng)計

百度統(tǒng)計,為網(wǎng)站站長提供流量分析,網(wǎng)站分析,受眾分析等多種分析服務(wù)。服務(wù)網(wǎng)站數(shù)量超過 450W,每天查詢量達(dá)到 1500W,QPS ( Queries Per Second,每秒查詢率 ) 峰值超過1400,每日新增數(shù)據(jù)量超過 2TB;數(shù)據(jù)導(dǎo)入頻次為5分鐘,平均查詢時延 30ms。

案例分析 2:百度云系統(tǒng)

1、百度云交易系統(tǒng)

百度云交易系統(tǒng),主要提供訂單、賬單、扣費、交易流水等 TB 級別量數(shù)據(jù)的存儲和實時查詢服務(wù),數(shù)據(jù)量約 12TB,每5分鐘導(dǎo)入。

2、百度云數(shù)據(jù)中心

百度云數(shù)據(jù)中心,主要提供百度云經(jīng)營分析,產(chǎn)品分析,用戶分析等多種分析服務(wù);提供多維度(100+)分析,具備高性能 ( 秒級 ) BI 能力;百度云數(shù)據(jù)中心的日處理數(shù)據(jù)量約 1T ( 略少于百度統(tǒng)計,因此查詢效率略高于百度統(tǒng)計 ),分鐘級導(dǎo)入。以下是百度云數(shù)據(jù)中心頁面的一個截圖:

Doris 整體架構(gòu)

一、Doris 整體架構(gòu)

Doris 的整體架構(gòu)和 TiDB 類似,借助 MySQL 協(xié)議,用戶使用任意 MySQL 的 ODBC/JDBC以及MySQL 的客戶端,都可以直接訪問 Doris。Doris 中的模塊包括 FE 和 BE 兩類:FE 主要負(fù)責(zé)元數(shù)據(jù)的管理、存儲,以及查詢的解析等;一個用戶請求經(jīng)過 FE 解析、規(guī)劃后,具體的執(zhí)行計劃會發(fā)送給 BE,BE 則會完成查詢的具體執(zhí)行。BE 節(jié)點主要負(fù)責(zé)數(shù)據(jù)的存儲、以及查詢計劃的執(zhí)行。目前平臺的 FE 部分主要使用 Java,BE 部分主要使用 C++。

二、Doris 數(shù)據(jù)分布

如果從表的角度來看數(shù)據(jù)結(jié)構(gòu),用戶的一張 Table 會拆成多個 Tablet,Tablet 會存成多副本,存儲在不同的 BE 中,從而保證數(shù)據(jù)的高可用和高可靠。

三、Doris 的使用方式

Doris 的使用方式和 MySQL 類似,創(chuàng)建 database,創(chuàng)建 table,導(dǎo)入數(shù)據(jù)、執(zhí)行查詢等。具體詳見下圖:

Doris 關(guān)鍵技術(shù)

一、數(shù)據(jù)可靠性

1、元數(shù)據(jù)使用 Memory+Checkpoint+Journal ( 分別是什么?),使用 BTBJE ( 類似于 Raft ) 協(xié)議實現(xiàn)高可用性和高可靠性。

2、Doris 內(nèi)部自行管理數(shù)據(jù)的多副本和自動修復(fù)。保證數(shù)據(jù)的高可用、高可靠。在服務(wù)器宕機的情況下,服務(wù)依然可用,數(shù)據(jù)也不會丟失。

二、易運維

無外部依賴:

Doris 部署無外部依賴,只需要部署 BE 和 IBE 即可搭建起一個集群。

支持 Online Schema Change

支持在線更改表模式 ( 加減列,創(chuàng)建 Rollup ),不會影響當(dāng)前服務(wù),不會阻塞讀、寫等操作;這種執(zhí)行是異步的 ( 用戶不需要一直盯在那里 )

數(shù)據(jù)庫同步操作和異步操作:

同步,是所有的操作都做完,才返回給用戶結(jié)果;即寫完數(shù)據(jù)庫之后,再響應(yīng)用戶,用戶體驗不好;

異步,不用等所有操作等做完,就相應(yīng)用戶請求;即先相應(yīng)用戶請求,然后慢慢去寫數(shù)據(jù)庫,用戶體驗較好。緩存機制(也就是消息隊列),就是異步操作的一個典型應(yīng)用。

1、副本自動均衡

傳統(tǒng)數(shù)據(jù)庫的擴(縮)容比較麻煩,有時甚至需要重做數(shù)據(jù);而 Doris 數(shù)據(jù)庫只需要一條 SQL ( 無須額外操作 ) 即可實現(xiàn)擴(縮)容。

2、內(nèi)置監(jiān)控

使用 Prometheus、Grafana 將監(jiān)控項指標(biāo)列出。

下圖為 Doris 默認(rèn)配置面板:

三、MySQL 兼容性

MySQL 的兼容性從兩方面體現(xiàn):

1、兼容 MySQL 的網(wǎng)絡(luò)協(xié)議 ( MySQL Network Protocol )

2、兼容 MySQL 語法,使用 MySQL 語法可對 Doris 數(shù)據(jù)庫進(jìn)行查詢

關(guān)于 MySQL 語法的兼容性,前文已經(jīng)描述過,這里不再贅述;

關(guān)于 MySQL 的網(wǎng)絡(luò)協(xié)議的兼容性,舉個簡單的例子:MySQL 的調(diào)度服務(wù)器 Proxy,可以直接用作 Doris 的 Proxy。

Doris 的前端展示,可以使用 MySQL 專屬展示器 Tableu。下圖就是使用 Tableu 將 Doris 數(shù)據(jù)可視化的一個范例。

Doris 與 R 語言可以實現(xiàn)無縫對接,用 R 語言可直接操作 Doris 數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)分析、數(shù)據(jù)挖掘等工作。

四、支持 MPP

MPP 即 Massively Parallel Processing,大規(guī)模并行處理,即海量數(shù)據(jù)并發(fā)查詢。以下圖為例:

執(zhí)行

SELECT k1,SUM(v1) FROM A,B WHERE A.k2=B.k2 GROUP BY k1 ORDER BY SUM(v1)

語句,該語句包含了合并、聚合計算、排序等多種操作;在執(zhí)行計劃的時候,MPP 將其拆分成多份,分布到每臺機器執(zhí)行,最后再將結(jié)果匯總。假如有10臺機器,在大數(shù)據(jù)量下,這種查詢執(zhí)行方式可以使得查詢性能達(dá)到10倍的提升。

Doris 數(shù)據(jù)模型

一、Doris 數(shù)據(jù)模型特點

1、鍵值對存儲形式:

類似于字典搜索查詢的鍵值對格式,Doris 中所有數(shù)據(jù)分成兩列:Key 列和 Value 列。如下圖所示,Time、Id、Country 列共同組成 Key 列,Clicks、Cost 列為 Value 列。Key 列有序可進(jìn)行快速查找,Value 列可以按照具體聚合類型內(nèi)部完成數(shù)據(jù)聚合。

2、Key 列全局有序排列,查詢時方便快速定位查找。

Doris 數(shù)據(jù)模型的一個顯著特點是 Key 列全局唯一,因此存在相同 Key 值的不同 Value,則后面的數(shù)據(jù)與前面的數(shù)據(jù)自動做 ( SUM,MIN,MAX,REPLACE ) 等聚合處理。例如,下圖中綠色方框中的兩行,相同的 Key 值對應(yīng)不同的 Value;因此,新的 Value 到達(dá)后,與前數(shù)據(jù)作 SUM 處理,得到最新的數(shù)據(jù),不僅提升效率,還可提高數(shù)據(jù)處理的準(zhǔn)確性。

二、聚合計算說明:

本部分具體描述相同 Key 值下 Value 值的聚合。

數(shù)據(jù)的導(dǎo)入是分版本的(例如下圖右側(cè)91,92版本),每一個版本之間 Key 相同的數(shù)據(jù)匯總到中間表中,通過聚合處理最終輸出為左側(cè)的 base。

三、按列存儲

1、Doris 的數(shù)據(jù)是按列存儲的,每一列單獨存放。

2、查詢時,只訪問查詢涉及的列,大量降低 I/O。

3、數(shù)據(jù)類型一致,方便壓縮。

4、數(shù)據(jù)包建索引,數(shù)據(jù)即索引。

5、利用原始過濾條件以及 min、max 和 sum 等智能索引技術(shù),將數(shù)據(jù)集查詢范圍盡可能地縮小,大大減少 I/O,提升查詢效率。

四、物化視圖

物化視圖是提取某些維度的組合建立對用戶透明的卻有真實數(shù)據(jù)的視圖表格。Doris 的物化視圖可以保證用戶在更新時,直接更新原始表,Doris 會保證原表、物化視圖原子生效。在查詢的時候用戶也只需指定原始表,Doris 會根據(jù)查詢的具體條件,選擇適合的物化視圖完成查詢。

通常用戶可以通過物化視圖功能完成以下兩種功能。

1、更換索引列進(jìn)行重排列

2、針對指定列做聚合查詢

五、兩層分區(qū)與分級存儲

兩層分區(qū):

1、方便新舊數(shù)據(jù)分離,使用不同的存儲介質(zhì)(例如新數(shù)據(jù)使用 SSD,歷史數(shù)據(jù) SATA)

2、分區(qū)減少了大量歷史數(shù)據(jù)不必要的重復(fù) BE/CE,節(jié)省了大量的 IO 和 CPU 開銷

3、兩層分區(qū)的方法簡化了表的擴容,便于 shard 調(diào)整(例如,前期不必建立過多 shard,后期隨著業(yè)務(wù)增長客隨時調(diào)整 shard 數(shù))

分級存儲

用戶可以指定數(shù)據(jù)放到 SSD 上或者 SATA 盤上,也支持根據(jù) TTL 將冷數(shù)據(jù)從 SSD 遷移到 SATA 上,高效利用 SSD 提高查詢性能。

六、Doris 在 Elasticsearch 的應(yīng)用

簡介:

1、ES 的優(yōu)點是索引,可支持多列索引,甚至可支持全文語義索引(如 term,match,fuzzy 等);然而其缺點是沒有分布式計算引擎,不支持 join 等操作

2、與 ES 相反,Palo 具備豐富的 SQL 計算能力,以及分布式查詢能力;然而其索引性能較低,不支持全文索引。

3、Doris 在 ES 開發(fā)的過程中,分別借鑒 ES 和 Palo 的長處,支持了 Elasticsearch 多表 Join 操作,同時引入 Elasticsearch 的語義搜索功能,擴充了 Doris 的查詢能力。

使用方式:

第一步:建立一張 ES 的外部表。

第二步:在 ES 外部表中導(dǎo)入一些數(shù)據(jù):

第三步:使用和 ES 一樣的搜索語句,進(jìn)行全文檢索查詢:

類似于上圖這樣的搜索語句,在 SQL 中比較難以表達(dá),但是在 ES 中較容易實現(xiàn)。

七、Kafka 消息隊列加載

1、Doris 內(nèi)部支持訂閱 Kafka 數(shù)據(jù)流,實現(xiàn)直接對接 Kafka:

2、用戶數(shù)據(jù)源經(jīng) Kafka 消息隊列收集后,可以依次進(jìn)入到 Doris 中,通過 Doris 做報表展示和決策分析等工作。

3、優(yōu)點

無需額外組件,用戶可直接通過命令實現(xiàn) Kafka 消息訂閱。

精確傳輸,秒級延遲。

Doris 可自動感知 Kafka 中 partition 變化,合理調(diào)度并發(fā)導(dǎo)入。

在數(shù)據(jù)導(dǎo)入這一過程中,支持對 Kafka 原始數(shù)據(jù)做二次處理(如轉(zhuǎn)換,過濾等)。

八、Doris 其他特性

原子性——即一批數(shù)據(jù)要么都生效,要么都不生效。

支持單機多盤

向量化執(zhí)行

UDF ( User Defined Function 用戶自定義函數(shù) )

內(nèi)置 HLL 類型,快速計算 UV

doris官方文檔(中文版)鏈接

總結(jié)

以上是生活随笔為你收集整理的【数据库】Apache Doris : 一个开源 MPP 数据库的架构与实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。