干货:数据仓库架构及基础知识
點擊上方“朱小廝的博客”,選擇“設為星標”
后臺回復"書",獲取
后臺回復“k8s”,可領取k8s資料
1、什么是數據倉庫?
權威定義:數據倉庫是一個面向主題的、集成的、相對穩定的、反映歷史變化的數據集合,用于支持管理決策。
1)數據倉庫是用于支持決策、面向分析型數據處理;
2)對多個異構的數據源有效集成,集成后按照主題進行重組,并包含歷史數據,而且存放在數據倉庫中的數據一般不再修改。
面對大數據的多樣性,在存儲和處理這些大數據時,我們就必須要知道兩個重要的技術。
分別是:數據倉庫技術、Hadoop。當數據為結構化數據,來自傳統的數據源,則采用數據倉庫技術來存儲和處理這些數據,如下圖:
2、數據倉庫和數據庫的區別?
從目標、用途、設計來說。
1)數據庫是面向事務處理的,數據是由日常的業務產生的,并且是頻繁更新的;數據倉庫是面向主題的,數據來源多樣化,經過一定的規則轉換得到的,用于分析和決策;
2)數據庫一般用來存儲當前事務性數據,如交易數據;數據倉庫一般存儲的是歷史數據;
3)數據庫設計一般符合三范式,有最大的精確度和最小的冗余度,有利于數據的插入;數據倉庫設計一般不符合三范式,有利于查詢。
3、如何構建數據倉庫?
數據倉庫模型的選擇是靈活的,不局限與某種模型方法;
數據倉庫數據是靈活的,以實際需求場景為導向;
數倉設計要兼顧靈活性、可擴展性、要考慮技術可靠性和實現成本。
1)調研:業務調研、需求調研、數據調研
2)劃分主題域:通過業務調研、需求調研、數據調研最終確定主題域
3)構建總線矩陣、維度建模
總線矩陣:把總線架構列表形成矩陣形式,行表示業務處理過程,即事實,列表示一致性的維度,在交叉點上打上標記表示該業務處理過程與該維度相關(交叉探查)
4)設計數倉分層架構
5)模型落地
6)數據治理
4、什么是數據中臺?
數據中臺是通過數據技術,對海量數據進行采集、計算、存儲、加工,同時統一標準和口徑。數據中臺把數據統一之后,會形成標準數據,再進行存儲,形成大數據資產層,進而為客戶提供高效服務。
這些服務和企業的業務有較強關聯性,是企業所獨有且能復用的,他是企業業務和數據的積淀,其不僅能降低重復建設,減少煙囪式協助的成本,也是差異化競爭的優勢所在。
數據中臺是通過整合公司開發工具、打通全域數據、讓數據持續為業務賦能,實現數據平臺化、數據服務化和數據價值化。
數據中臺更加側重于“復用”和“業務”。
5、數據中臺、數據倉庫、大數據平臺、數據湖的關鍵區別是什么?
1)基礎能力上的區別
數據平臺:提供的是計算和存儲能力
數據倉庫:利用數據平臺提供的計算和存儲能力,在一套方法論的指導下建設的一整套的數據表
數據中臺:包含了數據平臺和數據倉庫的所有內容,將其打包,并且以更加整合以及更加產品化的方式對外提供服務和價值
數據湖:一個存儲企業各種各樣原始數據的大型倉庫,包括結構化和非結構化數據,其中湖里的數據可供存取、處理、分析和傳輸
2)業務能力上的區別
數據平臺:為業務提供數據主要方式是提供數據集
數據倉庫:相對具體的功能概念是存儲和管理一個或多個主題數據的集合,為業務提供服務的方式主要是分析報表
數據中臺:企業級的邏輯概念,體現企業數據產生價值的能力,為業務提供服務的主要方式是數據API
數據湖:數據倉庫的數據來源
總的來說,數據中臺距離業務更近,數據復用能力更強,能為業務提供速度更快的服務,數據中臺在數據倉庫和數據平臺的基礎上,將數據生產為一個個數據API服務,以更高效的方式提供給業務。數據中臺可以建立在數據倉庫和數據平臺之上,是加速企業從數據到業務價值的過程的中間層。
6、大數據有哪些相關的系統?
數倉設計中心:按照主題域、業務過程,分層的設計方式,以維度建模作為基本理論依據,按照維度、度量設計模型,確保模型、字段有統一的命名規范
數據資產中心:梳理數據資產,基于數據血緣,數據的訪問熱度,做成本的治理
數據質量中心:通過豐富的稽查監控系統,對數據進行事后校驗,確保問題數據第一時間被發現,避免下游的無效計算,分析數據的影響范圍。
指標系統:管理指標的業務口徑、計算邏輯和數據來源,通過流程化的方式,建立從指標需求、指標開發、指標發布的全套協作流程
數據地圖:提供元數據的快速索引,數據字典、數據血緣、數據特征信息的查詢,相當于元數據中心的門戶。
7、如何建設數據中臺?
數據中臺在企業落地實踐時,結合技術、產品、數據、服務、運營等方面,逐步開展相關工作
1)理現狀:了解業務現狀、數據現狀、IT現狀、現有的組織架構
2)定架構:確認業務架構、技術架構、應用架構、組織架構
3)建資產:建立貼近數據層、統一數倉層、標簽數據層、應用數據層
4)用數據:對數據進行輸出、應用
5)數據運營:持續運營、持續迭代
中臺建設需要有全員共識,由管理層從上往下推進,由技術和業務人員去執行和落地是一個漫長的過程,在實施數據中臺時,最困難的地方就是需要有人推動。
8、數據倉庫最重要的是什么?
個人認為是數據集成和數據質量!
企業的數據通常存儲在多個異構數據庫中,要進行分析,必須對數據進行一致性整合,整合后才能對數據進行分析挖掘出潛在的價值;
數據質量必須有保障,數據質量不過關,別人怎么會使用你的數據?
9、概念模型、邏輯模型、物理模型分別介紹一下?
1)概念模型CDM:概念模型是最終用戶對數據存儲的看法,反映了最終用戶綜合性的信息需求,以數據類的方式描述企業級的數據需求
概念模型的內容包括重要的實體與實體之間的關系,在概念模型中不包含實體的屬性,也不包含定義實體的主鍵
概念模型的目的是統一業務概念,作為業務人員和技術人員之間的溝通橋梁,確定不同實體之間的最高層次的關系
2)邏輯模型LDM:邏輯模型反映的是系統分析人員對數據存儲的觀點,是對概念模型的進一步分解和細化,邏輯模型是根據業務規則確定的,關于業務對象,業務對象的數據項以及業務對象之間關系的基本藍圖
邏輯模型的內容包括所有的實體和關系,確定每個實體的屬性,定義每個實體的主鍵,指定實體的外鍵,需要進行范式化處理
邏輯模型的目標是盡可能詳細的描述數據,并不考慮物理上如何實現
3)物理模型PDM:物理模型是在邏輯模型的基礎上,考慮各種具體的技術實現因素,進行數據體系結構設計,真正實現數據在數據倉庫中的存放
物理模型的內容包括確定所有的表和列,定義外鍵用確認表之間的關系,基于用戶的需求可能要進行反范式化等內容
10、SCD常用的處理方式有哪些?
slowly changing dimensions 緩慢變化維度
常見的緩慢變化維處理方式有三種:
1)直接覆蓋:不記錄歷史數據,薪數據覆蓋舊數據
2)新加一行數據(縱向擴展):使用代理主鍵+生效失效時間或者是代理主鍵+生效失效標識(保存多條記錄,直接新添一條記錄,同時保留原有記錄,并用單獨的專用字段保存)
3)新加兩個字段(橫向擴展):一個是previous,一個是current,每次更新只更新這兩個值,但是這樣職能保留最近兩次的變化(添加歷史列,用不同的字段保存變化痕跡,因為只保存兩次變化記錄,使用與變化不超過兩次的維度)
11、怎么理解元數據?
1、業務元數據
描述 '數據'背后的業務含義。
主題定義:每段 ETL、表背后的歸屬業務主題。
業務描述:每段代碼實現的具體業務邏輯。
標準指標:類似于 BI 中的語義層、數倉中的一致性事實;將分析中的指標進行規范化。
標準維度:同標準指標,對分析的各維度定義實現規范化、標準化。
不斷的進行維護且與業務方進行溝通確認。
2、技術元數據
數據源元數據:例如:數據源的 IP、端口、數據庫類型;數據獲取的方式;數據存儲的結構;原數據各列的定義及 key 指對應的值。
ETL 元數據:
根據 ETL 目的的不同,可以分為兩類:數據清洗元數據;數據處理元數據。
數據清洗,主要目的是為了解決掉臟數據及規范數據格式;因此此處元數據主要為:各表各列的'正確'數據規則;默認數據類型的'正確'規則。
數據處理,例如常見的表輸入表輸出;非結構化數據結構化;特殊字段的拆分等。源數據到數倉、數據集市層的各類規則。比如內容、清理、數據刷新規則。
數據倉庫元數據:
數據倉庫結構的描述,包括倉庫模式、視圖、維、層次結構及數據集市的位置和內容;業務系統、數據倉庫和數據集市的體系結構和模式等。
BI 元數據:
匯總用的算法、包括各類度量和維度定義算法。數據粒度、主題領域、聚集、匯總、預定義的查詢與報告。
3、管理元數據
管理領域相關,包括管理流程、人員組織、角色職責等。
12、數倉如何確定主題域?
主題是在較高層次上將數據進行綜合、歸類和分析利用的一個抽象概念,每一個主題基本對應一個宏觀的分析領域,在邏輯意義上,他是對企業中某一宏觀分析領域所涉及的分析對象。
面向主題的數據組織方式,就是在較高層次上對分析對象的數據的一個完整并且一致的描述,能刻畫各個分析對象所涉及的企業各項數據,以及數據之間的聯系。
主題域通常是聯系較為機密的數據主題的集合,可以根據業務的關注度,將這些數據主題劃分到不同的主題域(也就是說對某個主題進行分析后確定的主題的邊界)。
關于主題域的劃分,可以考慮幾方面:
1、按照業務或者業務過程劃分:比如一個靠銷售廣告位置的門戶網站主題域可能會有廣告域,客戶域等,而廣告域可能就會有廣告的庫存,銷售分析、內部投放分析等主題;
2、根據需求方劃分:比如需求方為財務部,就可以設定對應的財務主題域,而財務主題域里面可能就會有員工工資分析,投資回報比分析等主題;
3、按照功能或者應用劃分::比如微信中的朋友圈數據域、群聊數據域等,而朋友圈數據域可能就會有用戶動態信息主題、廣告主題等;
4、按照部門劃分:比如可能會有運營域、技術域等,運營域中可能會有工資支出分析、活動宣傳效果分析等主題;
總而言之,切入的出發點邏輯不一樣,就可以存在不同的劃分邏輯。在建設過程中可采用迭代方式,不糾結于一次完成所有主題的抽象,可先從明確定義的主題開始,后續逐步歸納總結成自身行業的標準模型。
13、如何控制數據質量?
1)校驗機制,每天對比數據量,比如count()早發現,早修復
2)數據內容的比對,抽樣對比
3)復盤、每月做一次全量
14、模型設計的思路?業務驅動?數據驅動?
構建數據倉庫有兩種方式:自上而下、自下而上
Bill Inmon推崇自上而下的方式(這里的上指的是數據源出發),一個企業建立唯一的數據中心,數據是經過整合、清洗、去掉臟數據、標準的、能夠提供統一的視圖。要從整個企業的環境入手,建立數據倉庫,要做很全面的設計。偏數據驅動
Ralph Kimball推崇自下而上的方式(這里的下指的是從業務需求出發),認為數據倉庫應該按照實際的應用需求,架子啊需要的數據,不需要的數據不要加載到數據倉庫中。這種方式建設周期短,用戶能很快看到結果。偏業務驅動
15、為什么需要數據倉庫建模?
數倉建模需要按照一定的數據模型,對整個企業的數據進行采集,整理,提供跨部門、完全一致的報表數據。
合適的數據模型,對于大數據處理來講,可以獲得得更好的性能、成本、效率和質量。良好的模型可以幫助我們快速查詢數據,減少不必要的數據冗余,提高用戶的使用效率。
數據建模進行全方面的業務梳理,改進業務流程,消滅信息孤島,更好的推進數倉系統的建設。
16、數據倉庫建模方法有哪些?
維度模型
維度建模按數據組織類型劃分可分為星型模型、雪花模型、星座模型。
Kimball老爺爺維度建模四個步驟:
選擇業務處理過程 > 定義粒度 > 選擇維度 > 確定事實
星型模型
星型模型主要是維表和事實表,以事實表為中心,所有維度直接關聯在事實表上,呈星型分布。
雪花模型
雪花模型,在星型模型的基礎上,維度表上又關聯了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。尤其是基于hadoop體系構建數倉,減少join就是減少shuffle,性能差距會很大。
星型模型可以理解為,一個事實表關聯多個維度表,雪花模型可以理解為一個事實表關聯多個維度表,維度表再關聯維度表。
星座模型
星座模型,是對星型模型的擴展延伸,多張事實表共享維度表。
星座模型是很多數據倉庫的常態,因為很多數據倉庫都是多個事實表的。所以星座模型只反映是否有多個事實表,他們之間是否共享一些維度表。
范式模型
即實體關系(ER)模型,數據倉庫之父Immon提出的,從全企業的高度設計一個3NF模型,用實體加關系描述的數據模型描述企業業務架構,在范式理論上符合3NF。此建模方法,對建模人員的能力要求非常高。
特點:設計思路自上而下,適合上游基礎數據存儲,同一份數據只存儲一份,沒有數據冗余,方便解耦,易維護,缺點是開發周期一般比較長,維護成本高。
Data Vault模型
DataVault由Hub(關鍵核心業務實體)、Link(關系)、Satellite(實體屬性) 三部分組成 ,是Dan Linstedt發起創建的一種模型方法論,它是在ER關系模型上的衍生,同時設計的出發點也是為了實現數據的整合,并非為數據決策分析直接使用。
Anchor模型
高度可擴展的模型,所有的擴展只是添加而不是修改,因此它將模型規范到6NF,基本變成了K-V結構模型。企業很少使用。
17、數倉架構為什么要分層?
分層可以清晰數據結構,使用時更好的定位和理解
方便追蹤數據的血緣關系
規范數據分層,可以開發一些通用的中間層數據,能夠減少極大的重復計算
把復雜的問題簡單化
屏蔽原始數據的異常,下游任務沒有感知異常
ClickHouse到底是什么?為什么如此牛逼!
原來ElasticSearch還可以這么理解
面試官:InnoDB中一棵B+樹可以存放多少行數據?
架構之道:分離業務邏輯和技術細節
星巴克不使用兩階段提交
面試官:Redis新版本開始引入多線程,談談你的看法?
喜馬拉雅自研網關架構演進過程
收藏:存儲知識全面總結
微博千萬級規模高性能高并發的網絡架構設計
總結
以上是生活随笔為你收集整理的干货:数据仓库架构及基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用了Elasticsearch后,查询起
- 下一篇: 低学历程序员的红利来了,这个政策来的太惊