柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)面試總結(jié)
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)面試總結(jié)
文章目錄
1.什么是數(shù)據(jù)倉(cāng)庫(kù)?2.ETL是什么?3.數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)庫(kù)的區(qū)別(OLTP和OLAP的區(qū)別)*4.數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市的區(qū)別 *5.維度分析5.1 什么是維度?5.2什么是指標(biāo)?
6.什么是數(shù)倉(cāng)建模?*7.事實(shí)表7.維度表8.維度建模的三種模型9.緩慢漸變維(SCD)*10.數(shù)據(jù)倉(cāng)庫(kù)分層10.1為什么要分層?10.2數(shù)倉(cāng)分層 *10.3什么叫做維度退化?
11.構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)相關(guān)組件11.1oozie11.2sqoop
12. 全量和增量13. 如何保證數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)質(zhì)量?*14. 數(shù)據(jù)從業(yè)務(wù)數(shù)據(jù)庫(kù)到數(shù)倉(cāng),怎么估算數(shù)倉(cāng)需要的存儲(chǔ)資源?15. 數(shù)據(jù)倉(cāng)庫(kù)中指標(biāo)下沉怎么做的?16. 了解哪些OLAP引擎?17. 怎么評(píng)估一個(gè)數(shù)倉(cāng)模型的好壞?
1.什么是數(shù)據(jù)倉(cāng)庫(kù)?
概念 存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù), 主要是用于存儲(chǔ)過(guò)去既定發(fā)生的歷史數(shù)據(jù), 對(duì)這些數(shù)據(jù)進(jìn)行數(shù)據(jù)分析的操作, 從而對(duì)未來(lái)提供決策支持四大特征
面向于主題的: 面向于分析, 分析的內(nèi)容是什么 什么就是我們的主題集成性: 數(shù)據(jù)是來(lái)源于各個(gè)數(shù)據(jù)源, 將各個(gè)數(shù)據(jù)源數(shù)據(jù)匯總在一起非易失性(穩(wěn)定性): 存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)都是過(guò)去既定發(fā)生數(shù)據(jù), 這些數(shù)據(jù)都是相對(duì)比較穩(wěn)定的數(shù)據(jù), 不會(huì)發(fā)生改變時(shí)變性: 隨著的推移, 原有的分析手段以及原有數(shù)據(jù)可能都會(huì)出現(xiàn)變化(分析手動(dòng)更換, 以及數(shù)據(jù)新增)
2.ETL是什么?
抽取 轉(zhuǎn)換 加載
從數(shù)據(jù)源將數(shù)據(jù)灌入到ODS層, 以及從ODS層將數(shù)據(jù)抽取出來(lái), 對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理工作, 最終將數(shù)據(jù)加載到DW層, 然后DW層對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 將統(tǒng)計(jì)分析后的數(shù)據(jù)灌入到DA層, 整個(gè)全過(guò)程都是屬于ETL范疇
狹義上ETL: 從ODS層到DW層過(guò)程
3.數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)庫(kù)的區(qū)別(OLTP和OLAP的區(qū)別)*
OLTP:聯(lián)機(jī)事務(wù)處理 OLAP:聯(lián)機(jī)分析處理
數(shù)據(jù)庫(kù)(OLTP): 面向于事務(wù)(業(yè)務(wù))的 , 主要是用于捕獲數(shù)據(jù) , 主要是存儲(chǔ)的最近一段時(shí)間的業(yè)務(wù)數(shù)據(jù), 交互性強(qiáng),一般不允許出現(xiàn)數(shù)據(jù)冗余數(shù)據(jù)倉(cāng)庫(kù)(OLAP): 面向于分析(主題)的 , 主要是用于分析數(shù)據(jù), 主要是存儲(chǔ)的過(guò)去歷史數(shù)據(jù) , 交互性較弱 ,可以允許出現(xiàn)一定的冗余
4.數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市的區(qū)別 *
數(shù)據(jù)倉(cāng)庫(kù)其實(shí)指的集團(tuán)數(shù)據(jù)中心: 主要是將公司中所有的數(shù)據(jù)全部都聚集在一起進(jìn)行相關(guān)的處理操作 (ODS層),此操作一般和主題基本沒(méi)有什么太大的關(guān)系 數(shù)據(jù)的集市(小型數(shù)據(jù)倉(cāng)庫(kù)): 在數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)之上, 基于主題對(duì)數(shù)據(jù)進(jìn)行抽取處理分析工作, 形成最終分析的結(jié)果 一個(gè)數(shù)據(jù)倉(cāng)庫(kù)下, 可以有多個(gè)數(shù)據(jù)集市
5.維度分析
5.1 什么是維度?
維度一般指的分析的角度, 看待一個(gè)問(wèn)題的時(shí)候, 可以多個(gè)角度來(lái)看待, 而這些角度指的就是維度
比如: 有一份2020年訂單數(shù)據(jù), 請(qǐng)嘗試分析 可以從時(shí)間, 地域 , 商品, 來(lái)源 , 用戶(hù)…
維度的分類(lèi): - 定性維度: 指的計(jì)算每天 每月 各個(gè)的維度 , 一般來(lái)說(shuō)定性維度的字段都是放置在group by 中 - 定量維度: 指的統(tǒng)計(jì)某一個(gè)具體的維度或者某一個(gè)范圍下信息, 比如說(shuō): 2020年度訂單額, 統(tǒng)計(jì)20~30歲區(qū)間人群的人數(shù) ,一般來(lái)說(shuō)這種維度的字段都是放置在where中
維度的下鉆和上卷: 以某一個(gè)維度為基準(zhǔn), 往細(xì)化統(tǒng)計(jì)的過(guò)程稱(chēng)為下鉆, 往粗粒度稱(chēng)為上卷 比如: 按照 天統(tǒng)計(jì), 如果需要統(tǒng)計(jì)出 小時(shí), 指的就是下鉆, 如果需要統(tǒng)計(jì) 季度 月 年, 稱(chēng)為上卷統(tǒng)計(jì)
5.2什么是指標(biāo)?
指標(biāo)是衡量事務(wù)發(fā)展的標(biāo)準(zhǔn),也叫度量,如價(jià)格,銷(xiāo)量等;指標(biāo)可以求和、求平均值等計(jì)算。 指標(biāo)的分類(lèi):
絕對(duì)指標(biāo): 計(jì)算具體的值指標(biāo) count() sum() max() min() avg()相對(duì)指標(biāo): 計(jì)算比率問(wèn)題的指標(biāo) 轉(zhuǎn)化率, 流失率, 同比
6.什么是數(shù)倉(cāng)建模?*
數(shù)倉(cāng)建模指的是如何在hive中構(gòu)建表, 數(shù)倉(cāng)建模中主要提供兩種理論來(lái)進(jìn)行數(shù)倉(cāng)建模操作: 三范式建模和維度建模理論
三范式建模: 主要是存在關(guān)系型數(shù)據(jù)庫(kù)建模方案上, 主要規(guī)定了比如建表的每一個(gè)表都應(yīng)該有一個(gè)主鍵, 數(shù)據(jù)要經(jīng)歷的避免冗余發(fā)生等等 維度建模: 主要是存在分析性數(shù)據(jù)庫(kù)建模方案上, 主要一切以分析為目標(biāo), 只要是利于分析的建模, 都是OK的, 允許出現(xiàn)一定的冗余, 表也可以沒(méi)有主鍵
維度建模的兩個(gè)核心概念:事實(shí)表和維度表。
7.事實(shí)表
事實(shí)表: 事實(shí)表一般指的就是分析主題所對(duì)應(yīng)的表,每一條數(shù)據(jù)用于描述一個(gè)具體的事實(shí)信息, 這些表一般都是一坨主鍵(外鍵)和描述事實(shí)字段的聚集 事實(shí)表的分類(lèi):
事務(wù)事實(shí)表: 保存的是最原子的數(shù)據(jù),也稱(chēng)“原子事實(shí)表”或“交易事實(shí)表”。溝通中常說(shuō)的事實(shí)表,大多指的是事務(wù)事實(shí)表。周期快照事實(shí)表: 周期快照事實(shí)表以具有規(guī)律性的、可預(yù)見(jiàn)的時(shí)間間隔來(lái)記錄事實(shí),時(shí)間間隔如每天、每月、每年等等 周期表由事務(wù)表加工產(chǎn)生累計(jì)快照事實(shí)表: 完全覆蓋一個(gè)事務(wù)或產(chǎn)品的生命周期的時(shí)間跨度,它通常具有多個(gè)日期字段,用來(lái)記錄整個(gè)生命周期中的關(guān)鍵時(shí)間點(diǎn)
7.維度表
維度表: 指的在對(duì)事實(shí)表進(jìn)行統(tǒng)計(jì)分析的時(shí)候, 基于某一個(gè)維度, 這個(gè)維度信息可能在其他表中, 而這些表就是維度表
維度表并不一定存在, 但是維度是一定存在: 比如: 根據(jù)用戶(hù)維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表只存儲(chǔ)了用戶(hù)id, 此時(shí)需要關(guān)聯(lián)用戶(hù)表, 這個(gè)時(shí)候就是維度表 比如: 根據(jù)用戶(hù)維度進(jìn)行統(tǒng)計(jì), 如果在事實(shí)表不僅僅存儲(chǔ)了用戶(hù)id,還存儲(chǔ)用戶(hù)名稱(chēng), 這個(gè)時(shí)候有用戶(hù)維度, 但是不需要用戶(hù)表的參與, 意味著沒(méi)有這個(gè)維度表
維度表的分類(lèi):
高基數(shù)維度表: 指的表中的數(shù)據(jù)量是比較龐大的, 而且數(shù)據(jù)也在發(fā)生的變化 例如: 商品表, 用戶(hù)表 低基數(shù)維度表: 指的表中的數(shù)據(jù)量不是特別多, 一般在幾十條到幾千條左右,而且數(shù)據(jù)相對(duì)比較穩(wěn)定 例如: 日期表,配置表,區(qū)域表
8.維度建模的三種模型
星型模型
特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周?chē)鷩@了多個(gè)維度表, 維度表與維度表之間沒(méi)有任何的依賴(lài)反映數(shù)倉(cāng)發(fā)展初期最容易產(chǎn)生模型
雪花模型
特點(diǎn): 只有一個(gè)事實(shí)表, 那么也就意味著只有一個(gè)分析的主題, 在事實(shí)表的周?chē)鷩@了多個(gè)維度表, 維度表可以接著關(guān)聯(lián)其他的維度表反映數(shù)倉(cāng)發(fā)展出現(xiàn)了畸形產(chǎn)生模型, 這種模型一旦大量出現(xiàn), 對(duì)后期維護(hù)是非常繁瑣, 同時(shí)如果依賴(lài)層次越多, SQL分析的難度也會(huì)加大此種模型在實(shí)際生產(chǎn)中,建議盡量減少這種模型產(chǎn)生
星座模型
特點(diǎn): 有多個(gè)事實(shí)表, 那么也就意味著有了多個(gè)分析的主題, 在事實(shí)表的周?chē)鷩@了多個(gè)維度表, 多個(gè)事實(shí)表在條件符合的情況下, 可以共享維度表反映數(shù)倉(cāng)發(fā)展中后期最容易產(chǎn)生模型
星形模型和雪花模型有什么優(yōu)劣?*
星形模型結(jié)構(gòu)簡(jiǎn)單,易于理解和使用,并且查詢(xún)性能也高。但是維度表可能包含冗余數(shù)據(jù),如果維度表非常大或包含復(fù)雜的層次結(jié)構(gòu),星形模型可能難以擴(kuò)展。對(duì)于具有復(fù)雜關(guān)系的維度,雪花模型更為適合,可以更好地表示數(shù)據(jù)的層次結(jié)構(gòu)。但是查詢(xún)性能就比較低了,并且維護(hù)也比較復(fù)雜,建議少用。
9.緩慢漸變維(SCD)*
緩慢漸變維,即維度中的屬性可能會(huì)隨著時(shí)間發(fā)生改變
解決辦法:
SCD1: 直接覆蓋, 不維護(hù)歷史變化數(shù)據(jù) 主要適用于: 對(duì)錯(cuò)誤數(shù)據(jù)處理SCD2:不刪除、不修改已存在的數(shù)據(jù), 當(dāng)數(shù)據(jù)發(fā)生變更后, 會(huì)添加一條新的版本記錄的數(shù)據(jù), 在建表的時(shí)候, 會(huì)多加兩個(gè)字段(起始時(shí)間, 截止時(shí)間), 通過(guò)這兩個(gè)字段來(lái)標(biāo)記每條數(shù)據(jù)的起止時(shí)間 , 一般稱(chēng)為拉鏈表 好處: 適用于保存多個(gè)歷史版本, 方便維護(hù)實(shí)現(xiàn) 弊端: 會(huì)造成數(shù)據(jù)冗余情況, 導(dǎo)致磁盤(pán)占用率提升SCD3: 通過(guò)在增加列的方式來(lái)維護(hù)歷史變化數(shù)據(jù) 好處: 減少數(shù)據(jù)的冗余, 適用于少量歷史版本的記錄以及磁盤(pán)空間不是特別充足情況 弊端: 無(wú)法記錄更多的歷史版本, 以及維護(hù)比較繁瑣
10.數(shù)據(jù)倉(cāng)庫(kù)分層
10.1為什么要分層?
分層可以使數(shù)據(jù)層次清晰、依賴(lài)關(guān)系直觀
數(shù)據(jù)分層卻可以給我們帶來(lái)如下的好處:
清晰數(shù)據(jù)結(jié)構(gòu):每一個(gè)數(shù)據(jù)分層都有它的作用域和職責(zé),在使用表的時(shí)候能更方便地定位和理解。復(fù)雜問(wèn)題簡(jiǎn)單化:將一個(gè)復(fù)雜的任務(wù)分解成多個(gè)步驟來(lái)完成,每一層解決特定的問(wèn)題。便于維護(hù):當(dāng)數(shù)據(jù)出現(xiàn)問(wèn)題之后,可以不用修復(fù)所有的數(shù)據(jù),只需要從有問(wèn)題的步驟開(kāi)始修復(fù)。減少重復(fù)開(kāi)發(fā):規(guī)范數(shù)據(jù)分層,開(kāi)發(fā)一些通用的中間層數(shù)據(jù),能夠減少重復(fù)開(kāi)發(fā)的工作量。高性能:數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建將大大縮短獲取信息的時(shí)間,數(shù)據(jù)倉(cāng)庫(kù)作為數(shù)據(jù)的集合,所有的信息都可以從數(shù)據(jù)倉(cāng)庫(kù)直接獲取,尤其對(duì)于海量數(shù)據(jù)的關(guān)聯(lián)查詢(xún)和復(fù)雜查詢(xún),所以數(shù)據(jù)倉(cāng)庫(kù)分層有利于實(shí)現(xiàn)復(fù)雜的統(tǒng)計(jì)需求,提高數(shù)據(jù)統(tǒng)計(jì)的效率。
10.2數(shù)倉(cāng)分層 *
ODS層: 源數(shù)據(jù)層 作用: 對(duì)接數(shù)據(jù)源, 和數(shù)據(jù)源的數(shù)據(jù)保持相同的粒度(將數(shù)據(jù)源的數(shù)據(jù)完整的拷貝到ODS層中) 注意: 如果數(shù)據(jù)來(lái)源于文本文件, 可能會(huì)需要先對(duì)這些文本文件進(jìn)行預(yù)處理(spark)操作, 將其中不規(guī)則的數(shù)據(jù), 不完整的數(shù)據(jù), 臟亂差的數(shù)據(jù)先過(guò)濾掉, 將其轉(zhuǎn)換為一份結(jié)構(gòu)化的數(shù)據(jù), 然后灌入到ODS層 DW層: 數(shù)據(jù)倉(cāng)庫(kù)層 作用: 進(jìn)行數(shù)據(jù)分析的操作
DWD層: 明細(xì)層 作用: 用于對(duì)ODS層數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換工作 , 以及進(jìn)行少量的維度退化操作 少量: 1) 將多個(gè)事實(shí)表的數(shù)據(jù)合并為一個(gè)事實(shí)表操作 2) 如果維度表放置在ODS層 一般也是在DWD層完成維度退化DWM層: 中間層 作用: 1) 用于進(jìn)行維度退化操作 2) 用于進(jìn)行提前聚合操作(周期快照事實(shí)表)DWS層: 業(yè)務(wù)層 作用: 進(jìn)行細(xì)化維度統(tǒng)計(jì)分析操作 DA層: 數(shù)據(jù)應(yīng)用層 作用: 存儲(chǔ)DW層分析的結(jié)果, 用于對(duì)接后續(xù)的應(yīng)用(圖表, 推薦系統(tǒng)…) 例如: 比如DWS層的數(shù)據(jù)表完成了基于訂單表各項(xiàng)統(tǒng)計(jì)結(jié)果信息, 但是圖表只需要其中銷(xiāo)售額, 此時(shí)從DWS層將銷(xiāo)售額的數(shù)據(jù)提取出來(lái)存儲(chǔ)到DA層 DIM層: 維度層 作用: 存儲(chǔ)維度表數(shù)據(jù)
10.3什么叫做維度退化?
維度退化是為了減少維度表的關(guān)聯(lián)工作
做法: 將數(shù)據(jù)分析中可能在維度表中需要使用的字段, 將這些字段退化到事實(shí)表中,
這樣后續(xù)在基于維度統(tǒng)計(jì)的時(shí)候, 就不需要在關(guān)聯(lián)維度表, 事實(shí)表中已經(jīng)涵蓋了維度數(shù)據(jù)了
例如: 訂單表, 原有訂單表中只有用戶(hù)id, 當(dāng)我們需要根據(jù)用戶(hù)維度進(jìn)行統(tǒng)計(jì)分析的時(shí)候,
此時(shí)需要關(guān)聯(lián)用戶(hù)表, 找到用戶(hù)的名稱(chēng), 那么如果我們提前將用戶(hù)的名稱(chēng)放置到訂單表中,
那么是不是就不需要關(guān)聯(lián)用戶(hù)表, 而則就是維度退化
好處: 減少后續(xù)分析的表關(guān)聯(lián)情況
弊端: 造成數(shù)據(jù)冗余
11.構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)相關(guān)組件
11.1oozie
什么是oozie Oozie是一個(gè)用于管理Apache Hadoop作業(yè)的工作流調(diào)度程序系統(tǒng)。 Oozie由Cloudera公司貢獻(xiàn)給Apache的基于工作流引擎的開(kāi)源框架,是用于Hadoop平臺(tái)的開(kāi)源的工作流調(diào)度引擎,是用來(lái)管理Hadoop作業(yè),屬于web應(yīng)用程序,由Oozie client和Oozie Server兩個(gè)組件構(gòu)成,Oozie Server運(yùn)行于Java Servlet容器(Tomcat)中的web程序。 什么是工作流? 工作流(Workflow),指“業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化”。 能夠使用工作流完成的業(yè)務(wù)一般具有什么特點(diǎn)呢?
整個(gè)業(yè)務(wù)流程需要周期性重復(fù)干整個(gè)業(yè)務(wù)流程可以被劃分為多個(gè)階段每一個(gè)階段存在依賴(lài)關(guān)系,前序沒(méi)有操作, 后續(xù)也無(wú)法執(zhí)行
如果發(fā)現(xiàn)實(shí)際生產(chǎn)中的某些業(yè)務(wù)滿足了以上特征, 就可以嘗試使用工作流來(lái)解決
11.2sqoop
一個(gè)用戶(hù)進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出的工具, 主要是將關(guān)系型的數(shù)據(jù)庫(kù)(MySQL, oracle…)導(dǎo)入到hadoop生態(tài)圈(HDFS,HIVE,Hbase…) , 以及將hadoop生態(tài)圈數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫(kù)中
12. 全量和增量
在進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析的時(shí)候, 一般來(lái)說(shuō), 第一次統(tǒng)計(jì)分析都是全量統(tǒng)計(jì)分析 而后續(xù)的操作, 都是在結(jié)果基礎(chǔ)上進(jìn)行增量化統(tǒng)計(jì)操作
全量統(tǒng)計(jì): 需要面對(duì)公司所有的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 數(shù)據(jù)體量一般比較大的 解決方案: 采用分批次執(zhí)行(比如按年)增量統(tǒng)計(jì): 一般是以T+1模式統(tǒng)計(jì), 當(dāng)前的數(shù)據(jù), 在第二天才會(huì)進(jìn)行統(tǒng)計(jì)操作 每一天都是統(tǒng)計(jì)上一天的數(shù)據(jù)
13. 如何保證數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)質(zhì)量?*
保證數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)質(zhì)量是數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)和維護(hù)中的一個(gè)關(guān)鍵問(wèn)題。
數(shù)據(jù)清洗和轉(zhuǎn)換(ETL)
數(shù)據(jù)清洗:在加載數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)之前,進(jìn)行數(shù)據(jù)清洗以刪除重復(fù)數(shù)據(jù)、修正錯(cuò)誤數(shù)據(jù)和處理缺失值。數(shù)據(jù)轉(zhuǎn)換:將數(shù)據(jù)從源系統(tǒng)的格式轉(zhuǎn)換為數(shù)據(jù)倉(cāng)庫(kù)的格式,確保數(shù)據(jù)一致性。例如,統(tǒng)一日期格式、規(guī)范化名稱(chēng)等。
數(shù)據(jù)校驗(yàn)和驗(yàn)證
數(shù)據(jù)完整性檢查:在數(shù)據(jù)加載過(guò)程中,進(jìn)行數(shù)據(jù)完整性檢查,確保所有必需字段都有值,引用的外鍵存在于相應(yīng)的維度表中。范圍檢查:確保數(shù)值字段在合理的范圍內(nèi),例如,確保銷(xiāo)售數(shù)量為正數(shù),日期字段在預(yù)期的范圍內(nèi)。一致性檢查:確保數(shù)據(jù)在不同表之間的一致性。例如,確保產(chǎn)品在銷(xiāo)售事實(shí)表中存在的同時(shí),也在產(chǎn)品維度表中存在。
數(shù)據(jù)質(zhì)量監(jiān)控
數(shù)據(jù)質(zhì)量指標(biāo):定義和跟蹤數(shù)據(jù)質(zhì)量指標(biāo)(例如,準(zhǔn)確性、完整性、一致性、及時(shí)性),定期評(píng)估數(shù)據(jù)質(zhì)量。數(shù)據(jù)質(zhì)量報(bào)告:檢查數(shù)據(jù)是否完整。
數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)最佳實(shí)踐
規(guī)范化和非規(guī)范化:在設(shè)計(jì)數(shù)據(jù)倉(cāng)庫(kù)時(shí),根據(jù)需要進(jìn)行適當(dāng)?shù)囊?guī)范化和非規(guī)范化處理,平衡數(shù)據(jù)冗余和查詢(xún)性能。維度建模:采用合適的維度建模方法(如星形模型、雪花模型),確保數(shù)據(jù)模型能夠有效支持業(yè)務(wù)需求和數(shù)據(jù)質(zhì)量管理。
數(shù)據(jù)源管理
選擇可信的數(shù)據(jù)源。定期更新數(shù)據(jù)源,確保數(shù)據(jù)的及時(shí)性和準(zhǔn)確性。
數(shù)據(jù)備份和恢復(fù)
定期備份數(shù)據(jù)倉(cāng)庫(kù),以防止數(shù)據(jù)丟失和損壞。制定和實(shí)施數(shù)據(jù)恢復(fù)計(jì)劃,確保在數(shù)據(jù)丟失或損壞時(shí)能夠快速恢復(fù)數(shù)據(jù)。
14. 數(shù)據(jù)從業(yè)務(wù)數(shù)據(jù)庫(kù)到數(shù)倉(cāng),怎么估算數(shù)倉(cāng)需要的存儲(chǔ)資源?
估算從業(yè)務(wù)數(shù)據(jù)庫(kù)到數(shù)據(jù)倉(cāng)庫(kù)所需的存儲(chǔ)資源涉及多個(gè)因素,包括數(shù)據(jù)的當(dāng)前大小、增長(zhǎng)率、數(shù)據(jù)壓縮率、數(shù)據(jù)保留策略等。
評(píng)估當(dāng)前數(shù)據(jù)量 表的數(shù)量和大?。鹤R(shí)別業(yè)務(wù)數(shù)據(jù)庫(kù)中各個(gè)表的大小。預(yù)測(cè)數(shù)據(jù)增長(zhǎng) 歷史數(shù)據(jù)增長(zhǎng)率:分析歷史數(shù)據(jù)增長(zhǎng)情況,計(jì)算月度或年度增長(zhǎng)率。 業(yè)務(wù)需求變化:考慮未來(lái)業(yè)務(wù)增長(zhǎng)和變化對(duì)數(shù)據(jù)增長(zhǎng)的影響。數(shù)據(jù)轉(zhuǎn)換和清洗 數(shù)據(jù)篩選:確定哪些數(shù)據(jù)需要從業(yè)務(wù)數(shù)據(jù)庫(kù)中轉(zhuǎn)移到數(shù)據(jù)倉(cāng)庫(kù)。 數(shù)據(jù)清洗和轉(zhuǎn)換:考慮在數(shù)據(jù)轉(zhuǎn)換過(guò)程中是否有數(shù)據(jù)清洗和轉(zhuǎn)換,可能會(huì)減少或增加數(shù)據(jù)量。
15. 數(shù)據(jù)倉(cāng)庫(kù)中指標(biāo)下沉怎么做的?
數(shù)據(jù)倉(cāng)庫(kù)中的指標(biāo)下沉(也稱(chēng)為指標(biāo)細(xì)化或指標(biāo)下推)是指將高層次的業(yè)務(wù)指標(biāo)分解到更細(xì)粒度的數(shù)據(jù)層次,以便進(jìn)行更深入的分析和洞察。例如,將銷(xiāo)售總額分解為各個(gè)產(chǎn)品、地區(qū)、時(shí)間段的銷(xiāo)售額。
16. 了解哪些OLAP引擎?
OLAP(Online Analytical Processing)引擎用于支持復(fù)雜的查詢(xún)和分析,幫助用戶(hù)在大規(guī)模數(shù)據(jù)集上進(jìn)行快速的多維數(shù)據(jù)分析。以下是一些常見(jiàn)的OLAP引擎及其特點(diǎn): OLAP(Online Analytical Processing)引擎用于支持復(fù)雜的查詢(xún)和分析,幫助用戶(hù)在大規(guī)模數(shù)據(jù)集上進(jìn)行快速的多維數(shù)據(jù)分析。以下是一些常見(jiàn)的OLAP引擎及其特點(diǎn):
Apache Hive
特點(diǎn):
基于Hadoop的分布式數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。支持SQL查詢(xún),適用于批處理分析。能處理大量結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。提供了豐富的UDF(用戶(hù)定義函數(shù))和多種文件格式支持(如Parquet、ORC、textfile)。
適用場(chǎng)景:
批量數(shù)據(jù)處理和ETL(Extract, Transform, Load)操作。大規(guī)模數(shù)據(jù)分析和報(bào)表生成。
Druid
特點(diǎn):
專(zhuān)為實(shí)時(shí)數(shù)據(jù)分析而設(shè)計(jì)的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)。高效的列式存儲(chǔ)和壓縮。支持實(shí)時(shí)數(shù)據(jù)攝取、快速查詢(xún)和歷史數(shù)據(jù)存儲(chǔ)。提供靈活的聚合和過(guò)濾功能。
適用場(chǎng)景:
實(shí)時(shí)數(shù)據(jù)分析和儀表盤(pán)。事件流處理和時(shí)序數(shù)據(jù)分析。
ClickHouse
特點(diǎn):
一個(gè)開(kāi)源的列式數(shù)據(jù)庫(kù)管理系統(tǒng)。優(yōu)化的OLAP查詢(xún)性能,支持實(shí)時(shí)數(shù)據(jù)分析。高度壓縮的數(shù)據(jù)存儲(chǔ),支持豐富的SQL功能。分布式架構(gòu),適用于大規(guī)模數(shù)據(jù)集。
適用場(chǎng)景:
高吞吐量和低延遲的實(shí)時(shí)分析。廣告、營(yíng)銷(xiāo)、監(jiān)控和日志分析。
這些OLAP引擎各有優(yōu)勢(shì)和適用場(chǎng)景,選擇合適的引擎需要根據(jù)具體的業(yè)務(wù)需求、數(shù)據(jù)規(guī)模、查詢(xún)性能要求和技術(shù)生態(tài)系統(tǒng)來(lái)決定。
17. 怎么評(píng)估一個(gè)數(shù)倉(cāng)模型的好壞?
評(píng)估一個(gè)數(shù)據(jù)倉(cāng)庫(kù)模型的好壞需要從多個(gè)角度進(jìn)行全面考量,包括其結(jié)構(gòu)設(shè)計(jì)、性能、靈活性、可維護(hù)性和滿足業(yè)務(wù)需求的能力。以下是評(píng)估數(shù)據(jù)倉(cāng)庫(kù)模型的一些關(guān)鍵標(biāo)準(zhǔn)和方法:
數(shù)據(jù)模型設(shè)計(jì)
數(shù)據(jù)模型的準(zhǔn)確性:模型是否正確反映了業(yè)務(wù)需求和邏輯。數(shù)據(jù)一致性:數(shù)據(jù)是否在模型中保持一致,沒(méi)有冗余和沖突。擴(kuò)展性:模型設(shè)計(jì)是否允許容易地添加新維度、新度量或新的業(yè)務(wù)規(guī)則。適應(yīng)性:模型能否靈活應(yīng)對(duì)業(yè)務(wù)變化,快速調(diào)整和更新。
性能評(píng)估
響應(yīng)時(shí)間:數(shù)據(jù)倉(cāng)庫(kù)模型在處理復(fù)雜查詢(xún)時(shí)的響應(yīng)時(shí)間是否在可接受范圍內(nèi)。查詢(xún)優(yōu)化:是否使用了合適的索引、聚合和分區(qū)技術(shù)來(lái)優(yōu)化查詢(xún)性能。ETL效率:數(shù)據(jù)加載(ETL)過(guò)程的效率如何,是否能夠在規(guī)定的時(shí)間窗口內(nèi)完成數(shù)據(jù)更新。數(shù)據(jù)刷新頻率:數(shù)據(jù)倉(cāng)庫(kù)的刷新頻率是否滿足業(yè)務(wù)實(shí)時(shí)或近實(shí)時(shí)的需求。
數(shù)據(jù)質(zhì)量
數(shù)據(jù)驗(yàn)證:數(shù)據(jù)是否經(jīng)過(guò)嚴(yán)格的驗(yàn)證和清洗,確保數(shù)據(jù)的準(zhǔn)確性。一致性檢查:數(shù)據(jù)是否在各個(gè)層次和系統(tǒng)間保持一致。缺失值處理:模型是否處理了所有可能的缺失值和異常值。數(shù)據(jù)約束:是否定義了適當(dāng)?shù)臄?shù)據(jù)約束(如主鍵、外鍵),以確保數(shù)據(jù)的完整性。
維護(hù)性
文檔化:模型是否有詳細(xì)的文檔,包括數(shù)據(jù)字典、業(yè)務(wù)規(guī)則、ETL流程等。自動(dòng)化:數(shù)據(jù)倉(cāng)庫(kù)維護(hù)過(guò)程是否有自動(dòng)化工具支持,如自動(dòng)備份、自動(dòng)恢復(fù)、自動(dòng)監(jiān)控等。數(shù)據(jù)管理:是否有良好的數(shù)據(jù)治理實(shí)踐,包括數(shù)據(jù)所有權(quán)、數(shù)據(jù)安全和隱私保護(hù)等。版本控制:模型更新和版本控制是否規(guī)范,能夠追蹤模型的變化和歷史版本。
用戶(hù)滿意度
可訪問(wèn)性:用戶(hù)是否能夠方便地訪問(wèn)和查詢(xún)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)。易用性:提供的查詢(xún)工具和界面是否易于使用,能夠支持用戶(hù)的分析需求。業(yè)務(wù)支持:模型是否支持業(yè)務(wù)部門(mén)的分析需求,提供所需的報(bào)表和分析功能。用戶(hù)反饋:收集用戶(hù)反饋,評(píng)估模型在實(shí)際使用中的表現(xiàn),及時(shí)改進(jìn)。
成本效益
成本控制:模型的開(kāi)發(fā)和維護(hù)成本是否在可控范圍內(nèi),是否實(shí)現(xiàn)了性?xún)r(jià)比最優(yōu)。資源利用:模型設(shè)計(jì)是否高效利用了計(jì)算資源和存儲(chǔ)資源,避免浪費(fèi)。ROI(投資回報(bào)率):數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目的投資回報(bào)是否滿足預(yù)期,通過(guò)改進(jìn)業(yè)務(wù)決策、提高效率等方式帶來(lái)了顯著的業(yè)務(wù)收益。
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)倉(cāng)庫(kù)面試總結(jié)
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。