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

騰訊面試:Doris 物化視圖的使用場景是怎么樣的,有哪幾種數(shù)據(jù)更新方式?

大數(shù)據(jù) 數(shù)據(jù)分析
本文將詳細介紹Doris物化視圖的相關(guān)知識,包括其基本概念、原理、優(yōu)勢、使用場景、創(chuàng)建和管理方法等。

一、Doris物化視圖

在大數(shù)據(jù)分析領(lǐng)域,隨著數(shù)據(jù)量的不斷增長和查詢復(fù)雜度的提高,如何高效地處理和分析數(shù)據(jù)成為了一個關(guān)鍵問題。Doris作為一款優(yōu)秀的分布式MPP分析型數(shù)據(jù)庫,提供了物化視圖這一強大的功能,能夠顯著提升查詢性能,降低計算成本。本文將詳細介紹Doris物化視圖的相關(guān)知識,包括其基本概念、原理、優(yōu)勢、使用場景、創(chuàng)建和管理方法等。

二、Doris物化視圖的基本概念

1. 定義

物化視圖是預(yù)先計算(根據(jù)定義的SELECT語句)并存儲在Doris中的一個特殊表中的數(shù)據(jù)集。它不同于普通的視圖,普通視圖只是一個虛擬的表,不存儲實際的數(shù)據(jù),而物化視圖是實實在在存儲了查詢結(jié)果的物理表。

2. 與普通視圖的區(qū)別

比較項

普通視圖

物化視圖

數(shù)據(jù)存儲

不存儲實際數(shù)據(jù),只保存SQL定義

存儲預(yù)先計算好的查詢結(jié)果

更新機制

查詢時執(zhí)行SQL語句獲取數(shù)據(jù),不涉及更新

基表數(shù)據(jù)變化時,需要通過刷新機制更新

查詢性能

每次查詢都要重新計算,性能相對較低

直接讀取存儲的結(jié)果,性能較高

三、Doris物化視圖的原理

1. 預(yù)計算和存儲

用戶根據(jù)自己的需求定義物化視圖的查詢語句,Doris系統(tǒng)會根據(jù)這個定義預(yù)先計算出查詢結(jié)果,并將結(jié)果存儲在物化視圖中。例如,對于一個銷售記錄表,用戶可以定義一個物化視圖來計算每個地區(qū)的銷售總額,Doris會在后臺計算并存儲這個結(jié)果。

2. 數(shù)據(jù)更新

當(dāng)基表數(shù)據(jù)發(fā)生變化時,物化視圖需要進行更新以確保數(shù)據(jù)的準(zhǔn)確性。Doris提供了不同的刷新機制來實現(xiàn)這一點:

  • 同步物化視圖:當(dāng)基礎(chǔ)表更新時,物化視圖會實時同步更新,保證查詢結(jié)果的即時準(zhǔn)確性,適用于數(shù)據(jù)更新較少、對查詢響應(yīng)要求較高的場景。
  • 異步物化視圖:當(dāng)基礎(chǔ)表更新時,物化視圖通過定期更新保持數(shù)據(jù)最終一致,可減少頻繁更新帶來的性能影響,適用于更新不頻繁、批量更新或?qū)崟r性要求不高的分析場景。

異步物化視圖還支持全量刷新和分區(qū)增量刷新兩種機制:

  • 全量刷新:計算并刷新物化視圖定義SQL的所有數(shù)據(jù)。適合在數(shù)據(jù)量較小或數(shù)據(jù)架構(gòu)發(fā)生變化時使用,在對實時性要求不高的場景下可進行定期刷新。
  • 分區(qū)增量刷新:當(dāng)物化視圖的基表分區(qū)數(shù)據(jù)發(fā)生變化時,可以識別并僅刷新變化的分區(qū),無需刷新整個物化視圖,相比全量/實時刷新顯著減少了計算和存儲開銷。該方式適用于大數(shù)據(jù)量場景,尤其是分區(qū)表頻繁變化且對實時性要求較高的場景。

3. 查詢優(yōu)化

在查詢過程中,系統(tǒng)會根據(jù)物化視圖的存在和內(nèi)容進行查詢優(yōu)化。Doris會自動判斷是否可以使用物化視圖來滿足當(dāng)前查詢,如果可以,則直接從物化視圖中讀取數(shù)據(jù)并計算,從而提高查詢效率。例如,當(dāng)查詢需要統(tǒng)計每個商品在不同時間維度(天、周、月)的銷售情況時,如果已經(jīng)創(chuàng)建了基于商品和時間維度的物化視圖,Doris會優(yōu)先使用該物化視圖來響應(yīng)查詢。

四、Doris物化視圖的優(yōu)勢

1. 查詢性能提升

對于那些經(jīng)常重復(fù)使用相同子查詢結(jié)果的查詢,性能得到了很大的提高。因為物化視圖預(yù)先存儲了查詢結(jié)果,查詢時無需重新計算,直接讀取數(shù)據(jù)即可,大大縮短了查詢響應(yīng)時間。例如,在電商場景中,假設(shè)需要統(tǒng)計每個商品在不同時間維度(天、周、月)的銷售情況。如果每次查詢都要從原始訂單表計算,顯然會很耗時。這時我們就可以創(chuàng)建一個基于商品和時間維度的異步物化視圖,提前計算好各個時間粒度的聚合結(jié)果。用戶查詢時直接使用物化視圖,響應(yīng)速度可提升10倍以上。

2. 數(shù)據(jù)一致性保障

Doris自動維護物化視圖的數(shù)據(jù),無論是新的導(dǎo)入還是刪除操作,都可以保證基表和物化視圖表的數(shù)據(jù)一致性。無需任何額外的人工維護成本,通過事務(wù)方式來保證原子性。比如如果用戶通過INSERT命令插入數(shù)據(jù)到基表中,則這條數(shù)據(jù)會同步插入到物化視圖中。當(dāng)基表和物化視圖表均寫入成功后,INSERT命令才會成功返回。

3. 降低計算成本

由于物化視圖存儲了預(yù)先計算好的結(jié)果,減少了查詢時的計算資源消耗,降低了整體的計算成本。特別是對于復(fù)雜的聚合和連接操作,物化視圖可以將這些耗時的操作預(yù)先完成,避免在每次查詢時都重新執(zhí)行。

4. 支持復(fù)雜查詢

物化視圖可以包含復(fù)雜的聚合和連接操作,適用于需要頻繁執(zhí)行相同復(fù)雜查詢的場景。它可以幫助用戶處理涉及多表連接、多層嵌套的聚合計算等復(fù)雜查詢,提高查詢效率。

五、Doris物化視圖的使用場景

1. 查詢加速

在決策支持系統(tǒng)中,如BI報表、Ad - Hoc查詢等,這類分析型查詢通常包含聚合操作,可能還涉及多表連接。由于計算此類查詢結(jié)果較為消耗資源、響應(yīng)時間可能長達分鐘級,且業(yè)務(wù)場景往往要求秒級響應(yīng),可以構(gòu)建物化視圖,對常見查詢進行加速。例如,傳統(tǒng)的多表JOIN查詢非常耗時,而物化視圖可以提前將匹配結(jié)果存好,查詢時直接取用,就像一個“紅娘”,大大提高了查詢效率。

2. 輕量化ETL(數(shù)據(jù)建模)

在數(shù)據(jù)分層場景中,可以通過嵌套物化視圖來構(gòu)建DWD和DWM層,利用物化視圖的調(diào)度刷新能力。異步物化視圖支持嵌套創(chuàng)建,可以基于已有的物化視圖再創(chuàng)建新的物化視圖,完美支持層層遞進的指標(biāo)體系。

3. 湖倉一體

針對多種外部數(shù)據(jù)源,可以將這些數(shù)據(jù)源所使用的表進行物化視圖構(gòu)建,以此來節(jié)省從外部表導(dǎo)入到內(nèi)部表的成本,并且加速查詢過程。當(dāng)查詢Hive等外部數(shù)據(jù)源時,網(wǎng)絡(luò)傳輸往往成為性能瓶頸。這時可以創(chuàng)建物化視圖將熱點數(shù)據(jù)緩存在Doris內(nèi)部,既保證了數(shù)據(jù)一致性,又能享受本地查詢的極致性能。

4. 實時聯(lián)邦查詢場景

面對分散在各個數(shù)據(jù)源的數(shù)據(jù),物化視圖可以作為一個“數(shù)據(jù)中轉(zhuǎn)站”,將多源數(shù)據(jù)統(tǒng)一整合并提供高效查詢。它可以將不同數(shù)據(jù)源的數(shù)據(jù)進行物化,方便用戶進行統(tǒng)一的查詢和分析。

六、Doris物化視圖的創(chuàng)建和管理

1. 創(chuàng)建物化視圖

(1) 創(chuàng)建權(quán)限

創(chuàng)建物化視圖需要具有物化視圖的創(chuàng)建權(quán)限(與建表權(quán)限相同)以及創(chuàng)建物化視圖查詢語句的查詢權(quán)限(與SELECT權(quán)限相同)。

(2) 創(chuàng)建語法

CREATE MATERIALIZED VIEW
[IFNOTEXISTS]<materialized_view_name>
[(<columns_definition>)]
[ BUILD <build_mode>]
[ REFRESH <refresh_method>[ refresh_trigger ]]
[[DUPLICATE]KEY(<key_cols>)]
[COMMENT'<table_comment>']
[PARTITIONBY(
{ <partition_col>| DATE_TRUNC (<partition_col>,<partition_unit>) } )]
[DISTRIBUTEDBY { HASH(<distribute_cols>)| RANDOM } [ BUCKETS { <bucket_count>| AUTO } ]
]
[ PROPERTIES (
-- Table property 
<table_property>
-- Additional table properties 
[,...])]
AS<query>

(3) 刷新配置

build_mode(刷新時機):

  • IMMEDIATE:立即刷新,默認方式。
  • DEFERRED:延遲刷新。

refresh_method(刷新方式):

  • COMPLETE:刷新所有分區(qū)。
  • AUTO:盡量增量刷新,只刷新自上次物化刷新后數(shù)據(jù)變化的分區(qū),如果不能感知數(shù)據(jù)變化的分區(qū),只能退化成全量刷新,刷新所有分區(qū)。

refresh_trigger(觸發(fā)方式):

  • ON MANUAL(手動觸發(fā)):用戶通過SQL語句觸發(fā)物化視圖的刷新。例如,檢測基表的分區(qū)數(shù)據(jù)自上次刷新后是否有變化,刷新數(shù)據(jù)變化的分區(qū):REFRESH MATERIALIZED VIEW mvName AUTO;;不校驗基表的分區(qū)數(shù)據(jù)自上次刷新后是否有變化,直接刷新物化視圖的所有分區(qū):REFRESH MATERIALIZED VIEW mvName COMPLETE;;只刷新指定的分區(qū):REFRESH MATERIALIZED VIEW mvName partitions (partitionName1,partitionName2);。
  • ON SCHEDULE(定時觸發(fā)):通過物化視圖的創(chuàng)建語句指定間隔多久刷新一次數(shù)據(jù)。例如,要求全量刷新,物化視圖每10小時刷新一次,并且刷新物化視圖的所有分區(qū):
CREATE MATERIALIZED VIEW mv_6
REFRESH COMPLETE ON SCHEDULE EVERY 10hour
AS
SELECT*FROM lineitem;
  • ON COMMIT(自動觸發(fā)):自Apache Doris 2.1.4版本起支持此功能。基表數(shù)據(jù)發(fā)生變更后,自動觸發(fā)相關(guān)物化視圖刷新,刷新的分區(qū)范圍與“定時觸發(fā)”一致。但如果基表的數(shù)據(jù)頻繁變更,不太適合使用此種觸發(fā)方式,因為會頻繁構(gòu)建物化刷新任務(wù),消耗過多資源。

2. 支持的聚合函數(shù)

目前物化視圖創(chuàng)建語句支持的聚合函數(shù)有:

  • SUM, MIN, MAX(Version 0.12)
  • COUNT, BITMAP_UNION, HLL_UNION(Version 0.13)

需要注意的是,BITMAP_UNION的形式必須為:BITMAP_UNION(TO_BITMAP(COLUMN)) ,column列的類型只能是整數(shù)(largeint也不支持),或者BITMAP_UNION(COLUMN)且基表為AGG模型;HLL_UNION的形式必須為:HLL_UNION(HLL_HASH(COLUMN)) ,column列的類型不能是DECIMAL,或者HLL_UNION(COLUMN)且基表為AGG模型。

3. 查詢自動匹配

物化視圖創(chuàng)建成功后,用戶的查詢不需要發(fā)生任何改變,還是查詢基表。Doris會根據(jù)當(dāng)前查詢的語句去自動選擇一個最優(yōu)的物化視圖,從物化視圖中讀取數(shù)據(jù)并計算。用戶可以通過EXPLAIN命令來檢查當(dāng)前查詢是否使用了物化視圖。

4. 查詢物化視圖

查看當(dāng)前表都有哪些物化視圖,以及它們的表結(jié)構(gòu),可以使用以下命令:

desc table_name all;

5. 刪除物化視圖

使用以下命令刪除物化視圖:

DROP MATERIALIZED VIEW mv_name ON table_name;

Doris物化視圖是一種強大的工具,它通過預(yù)先計算和存儲查詢結(jié)果,顯著提升了查詢性能,降低了計算成本,同時保證了數(shù)據(jù)的一致性。在合適的場景下使用物化視圖,可以為大數(shù)據(jù)分析帶來更高的效率和更好的用戶體驗。

責(zé)任編輯:趙寧寧 來源: 大數(shù)據(jù)技能圈
相關(guān)推薦

2021-12-27 03:40:41

Go場景語言

2024-05-27 09:07:27

2025-06-19 09:07:06

2011-09-01 09:39:06

2021-07-14 08:00:13

reactCss模塊

2018-07-28 00:20:15

2021-03-12 08:02:34

Redis數(shù)據(jù)類型.

2021-12-20 23:24:40

前端測試開發(fā)

2010-08-20 10:26:25

DB2數(shù)據(jù)類型

2025-03-31 07:53:10

單例模式設(shè)計模式C#

2025-06-11 08:35:00

數(shù)據(jù)倉庫數(shù)倉分層架構(gòu)

2022-10-17 00:27:20

二叉樹數(shù)組索引

2024-04-16 12:13:07

usingC#開發(fā)

2019-04-30 10:00:59

CSS居中前端

2024-12-31 07:56:33

Disruptor內(nèi)存有界隊列消費模式

2022-04-29 13:40:55

前端測試后端

2024-04-15 10:30:22

MySQL存儲引擎

2025-02-03 08:00:00

HDFS架構(gòu)存儲數(shù)據(jù)

2010-07-27 14:26:08

DB2數(shù)據(jù)庫物化視圖

2024-11-25 07:00:00

RedisMySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人在线观看中文字幕 | 国产精品自拍视频网站 | 欧美1区 | 成年免费大片黄在线观看一级 | 免费一级片 | 日韩精品免费 | 日本精品视频 | 手机在线一区二区三区 | 免费在线观看黄视频 | 久久不卡 | 久久精品视频在线免费观看 | 狠狠影院| 日本精品视频在线 | 色综合99 | 久久精品亚洲精品国产欧美 | av在线播放不卡 | 天天干狠狠操 | 久久久久久久一区 | 欧美一区二区三区在线 | 成人激情视频在线观看 | 色资源在线观看 | 欧美午夜一区二区三区免费大片 | 亚洲 中文 欧美 日韩 在线观看 | 国产欧美一区二区三区日本久久久 | 国产精品福利一区二区三区 | 国产福利免费视频 | 午夜ww | 久久久成人一区二区免费影院 | 日韩中文字幕在线不卡 | 久久伊人在 | 成人免费看片 | 久久久久久99 | 精品视频一区二区三区四区 | 久久午夜电影 | 亚洲国产精品va在线看黑人 | 日韩av大片免费看 | 日韩字幕 | 欧美日韩在线国产 | 一区二区三区不卡视频 | 爱爱视频在线观看 | 久久一及片 |