數倉掃盲篇:什么是數據倉庫?
不少人可能接觸過數據倉庫這一概念,那么,你是否了解數據倉庫的定義和內涵呢?這篇文章里,作者結合自己的語言,針對數據倉庫的定義、作用和特征等維度進行了總結分析,一起來看看吧,或許會對你有所啟發。
一、什么是數據倉庫?
百度是這樣介紹的:
看起來有點抽象。
不管他,我們將數據倉庫拆成“數據”+“倉庫”,來理解。
繼續百度。
數據:
倉庫:
再簡單上個倉庫圖,有畫面感了!
數據+倉庫,我們現在也可以粗暴的理解為“數據中轉站”。
我們把倉庫的描述進行拆分,通過對比數據倉庫,來體會一下數據倉庫是什么?
1)倉庫的構成:庫房、傳送設施、出入庫房的管道和設備、消防設施、管理用房
這里描述了貨物的存儲,出入,管理環節的基礎設施。
那數據的存儲,出入,管理環節同樣也需要基礎設施去支撐,數據存儲在數據庫或者文件系統里,數據通過ETL工具在數據倉庫里流轉,通過API對外提供數據,以及任務調度工具、節點管理工具去管理等。
2)按倉庫存儲的物品形態分為:固體、液體、氣體、粉狀物品
固體有固體的存儲空間和方式,液體有液體的存儲空間和方式,同樣的氣體、粉狀物品都會有相應的存儲方式。
數據也是一樣,結構化數據可以存儲在結構化的數據庫,比如mysql,oracle等;文件等非結構化數據,也有相應的數據庫去存儲,比如HDFS,Hbase等。
3)按存儲物品性質分為:原材料、半成本、成品
從加工的流程來看,物品在不同加工階段,有不同的展現形式,數據也是一樣,在原材料階段,稱為原始數據;對原始數據進行清洗,加工后,成為明細數據;對明細數據進行聚合,加工后,成為匯總數據;最后產出可直接應用的數據,成為應用數據。
4)按建筑形態分為:單層倉庫、多層倉庫、圓筒形倉庫
對于存儲不同形態的的物品,存儲量不同,倉庫也會有不同的建筑形態。數據倉庫也是一樣,根據應用場景,可以分為離線數倉,實時數倉,按照數據分層,可以分為貼源層,明細層,匯總層,應用層。
倉庫有了,貨物有了,還要考慮什么?
在現實生活中,每天都要存貨,找貨,出貨。如何合理的存儲貨物,快速的查找貨物,及時的把貨物運出去才是倉庫管理員最關心的。
數據也是如此,為了合理的存儲數據,快速的使用數據,橫向可對數據進行主題的劃分,縱向可對數據進行層級劃分(這里就不展開介紹了)。
經過以上對比介紹,大致就能理解數據倉庫具體是干什么的了。
二、為什么需要數據倉庫?
首先,數據倉庫的典型用戶是數據分析人員,使用場景是決策場景,那么企業為什么需要數據倉庫,我們需要知道沒有數據倉庫前,數據分析是什么樣的,就能知道為什么需要數據倉庫?
這里需要先補充一下業務系統的范式模型是什么?
即指遵循3范式規則設計的表模型。
第①范式:列都是原子性的,即數據庫表的每一列都是不可分割的原子數據項(為了消除冗余和方便查詢,對數據拆分處理,主要是針對時間、地區等屬性)。
第②范式:在1范式基礎上,實體的屬性需要完全依賴于主鍵全部,不能存在僅依賴主鍵一部分的屬性(指不能只依賴聯合主鍵的其中一個屬性,只有一個主鍵可不考慮第2范式)。
第③范式:需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關(消除冗余,降低實體屬性和業務數據之間的影響)。
范式模型就像是異地戀,雙方不在一起,只能通過電話聯系,溝通效率不高,但是你也可以知道對方每天做了什么,吃了什么。但是范式模型是會關聯多個哈,是個海王。
在業務系統中,范式模型強調減少數據冗余、單純依賴關聯關系,主要應用于在線事務系統。由于業務數據庫是實時記錄業務操作的,僅通過ID關聯,在業務系統的各種實體屬性修改時,不會牽扯到歷史數據的回溯;以及業務數據修改時候,不會影響各種實體屬性。
假設此時企業沒有建設數據倉庫。這時候來了一個分析需求,要求統計企業每個工程項目的物料使用情況和人力成本情況。
那么可能會遇到以下幾個情況:
- 取數難:由于人資、物資、項目是三個子系統,你就得想辦法去多個業務系統去搞生產數據,能不能拿到,需不需要審批,數據安全都是要考慮的問題。
- 分析難:每個系統的開發規則,規范程度、統計口徑都不一致。你還要去做數據關系映射,了解原業務系統的數據邏輯,廢了老大勁。
- 分析慢:由于業務系統是遵循范式建模的,發現關聯了一堆表才能完成分析需求,分析時間長不說,還可能會影響業務數據庫的穩定。
- 成本高:顯而易見,在沒有數據統一處理的情況下,這種分析需求費時費力,如果有更多更復雜的分析需求,該怎么辦呢。
此時我們需要一個可以將各個業務系統數據集成起來,面向業務數據分析的,統一規劃數據加工的規范,甚至是獨立的,不會影響業務系統的數據模型組織方式。
數據倉庫就是這樣一種數據的組織方式,此處引出維度建模理論,那么維度模型是什么?
維度建模從分析決策的需求出發構建模型,為分析需求服務,因此它重點關注用戶如何更快速地完成需求分析,同時具有較好的大規模復雜查詢的響應性能。其典型的代表是星形模型。(來源大數據之路)
維度模型強調面向業務分析決策需求,提高數據查詢的效率,可以減少關聯,進行維度冗余。由于維度模型的數據具有穩定性,進入數倉的數據,不會發生修改,且數據都有歷史記錄,所以不需要考慮事實和維度之間的變化會互相影響。
但是數據冗余在提高查詢效率的同時,也會增加存儲成本。
維度模型就像是本地戀,恨不得天天膩在一起,去玩,去吃飯,相互之間了解的更多了,感情變好了,但是日?;ㄤN也變高了。
由以上問題我們可以推導出數據倉庫的作用,以及為什么需要數據倉庫?
- 隔離業務數據。
- 把散落在各個業務系統的數據集中起來,集中處理。
- 統一建模,沉淀數據處理的結果,降低重復加工。
- 提高數據的使用/共享效率,為企業決策提 供數據依據。
三、數據倉庫有什么特征?
結合前兩部分的介紹,我們總結一下數據倉庫的特征:
- 面向業務的:根據業務過程對數據進行劃分,讓數據合理的組織和存儲,方便快速查找和使用數據。
- 集成的:原始數據是從多個業務系統獲得,要將這些來源不同的原始數據整合到一個數據庫中統一處理。
- 穩定的:一旦進入數據倉庫,就不允許被修改,一般的操作就是查詢、定期的加載。
- 統一的:數據倉庫可以對數據規范化、統一化處理,沉淀公共處理邏輯。
本文由 @成長中的數據產品 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
牛逼
????