數倉掃盲篇:什么是數據倉庫?

2 評論 7970 瀏覽 34 收藏 11 分鐘

不少人可能接觸過數據倉庫這一概念,那么,你是否了解數據倉庫的定義和內涵呢?這篇文章里,作者結合自己的語言,針對數據倉庫的定義、作用和特征等維度進行了總結分析,一起來看看吧,或許會對你有所啟發。

一、什么是數據倉庫?

百度是這樣介紹的:

看起來有點抽象。

不管他,我們將數據倉庫拆成“數據”+“倉庫”,來理解。

繼續百度。

數據:

倉庫:

再簡單上個倉庫圖,有畫面感了!

數據+倉庫,我們現在也可以粗暴的理解為“數據中轉站”。

我們把倉庫的描述進行拆分,通過對比數據倉庫,來體會一下數據倉庫是什么?

1)倉庫的構成:庫房、傳送設施、出入庫房的管道和設備、消防設施、管理用房

這里描述了貨物的存儲,出入,管理環節的基礎設施。

那數據的存儲,出入,管理環節同樣也需要基礎設施去支撐,數據存儲在數據庫或者文件系統里,數據通過ETL工具在數據倉庫里流轉,通過API對外提供數據,以及任務調度工具、節點管理工具去管理等。

2)按倉庫存儲的物品形態分為:固體、液體、氣體、粉狀物品

固體有固體的存儲空間和方式,液體有液體的存儲空間和方式,同樣的氣體、粉狀物品都會有相應的存儲方式。

數據也是一樣,結構化數據可以存儲在結構化的數據庫,比如mysql,oracle等;文件等非結構化數據,也有相應的數據庫去存儲,比如HDFS,Hbase等。

3)按存儲物品性質分為:原材料、半成本、成品

從加工的流程來看,物品在不同加工階段,有不同的展現形式,數據也是一樣,在原材料階段,稱為原始數據;對原始數據進行清洗,加工后,成為明細數據;對明細數據進行聚合,加工后,成為匯總數據;最后產出可直接應用的數據,成為應用數據。

4)按建筑形態分為:單層倉庫、多層倉庫、圓筒形倉庫

對于存儲不同形態的的物品,存儲量不同,倉庫也會有不同的建筑形態。數據倉庫也是一樣,根據應用場景,可以分為離線數倉,實時數倉,按照數據分層,可以分為貼源層,明細層,匯總層,應用層。

倉庫有了,貨物有了,還要考慮什么?

在現實生活中,每天都要存貨,找貨,出貨。如何合理的存儲貨物,快速的查找貨物,及時的把貨物運出去才是倉庫管理員最關心的。

數據也是如此,為了合理的存儲數據,快速的使用數據,橫向可對數據進行主題的劃分,縱向可對數據進行層級劃分(這里就不展開介紹了)。

經過以上對比介紹,大致就能理解數據倉庫具體是干什么的了。

二、為什么需要數據倉庫?

首先,數據倉庫的典型用戶是數據分析人員,使用場景是決策場景,那么企業為什么需要數據倉庫,我們需要知道沒有數據倉庫前,數據分析是什么樣的,就能知道為什么需要數據倉庫?

這里需要先補充一下業務系統的范式模型是什么?

即指遵循3范式規則設計的表模型。

第①范式:列都是原子性的,即數據庫表的每一列都是不可分割的原子數據項(為了消除冗余和方便查詢,對數據拆分處理,主要是針對時間、地區等屬性)。

第②范式:在1范式基礎上,實體的屬性需要完全依賴于主鍵全部,不能存在僅依賴主鍵一部分的屬性(指不能只依賴聯合主鍵的其中一個屬性,只有一個主鍵可不考慮第2范式)。

第③范式:需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關(消除冗余,降低實體屬性和業務數據之間的影響)。

范式模型就像是異地戀,雙方不在一起,只能通過電話聯系,溝通效率不高,但是你也可以知道對方每天做了什么,吃了什么。但是范式模型是會關聯多個哈,是個海王。

在業務系統中,范式模型強調減少數據冗余、單純依賴關聯關系,主要應用于在線事務系統。由于業務數據庫是實時記錄業務操作的,僅通過ID關聯,在業務系統的各種實體屬性修改時,不會牽扯到歷史數據的回溯;以及業務數據修改時候,不會影響各種實體屬性。

假設此時企業沒有建設數據倉庫。這時候來了一個分析需求,要求統計企業每個工程項目的物料使用情況和人力成本情況。

那么可能會遇到以下幾個情況:

  • 取數難:由于人資、物資、項目是三個子系統,你就得想辦法去多個業務系統去搞生產數據,能不能拿到,需不需要審批,數據安全都是要考慮的問題。
  • 分析難:每個系統的開發規則,規范程度、統計口徑都不一致。你還要去做數據關系映射,了解原業務系統的數據邏輯,廢了老大勁。
  • 分析慢:由于業務系統是遵循范式建模的,發現關聯了一堆表才能完成分析需求,分析時間長不說,還可能會影響業務數據庫的穩定。
  • 成本高:顯而易見,在沒有數據統一處理的情況下,這種分析需求費時費力,如果有更多更復雜的分析需求,該怎么辦呢。

此時我們需要一個可以將各個業務系統數據集成起來,面向業務數據分析的,統一規劃數據加工的規范,甚至是獨立的,不會影響業務系統的數據模型組織方式。

數據倉庫就是這樣一種數據的組織方式,此處引出維度建模理論,那么維度模型是什么?

維度建模從分析決策的需求出發構建模型,為分析需求服務,因此它重點關注用戶如何更快速地完成需求分析,同時具有較好的大規模復雜查詢的響應性能。其典型的代表是星形模型。(來源大數據之路)

維度模型強調面向業務分析決策需求,提高數據查詢的效率,可以減少關聯,進行維度冗余。由于維度模型的數據具有穩定性,進入數倉的數據,不會發生修改,且數據都有歷史記錄,所以不需要考慮事實和維度之間的變化會互相影響。

但是數據冗余在提高查詢效率的同時,也會增加存儲成本。

維度模型就像是本地戀,恨不得天天膩在一起,去玩,去吃飯,相互之間了解的更多了,感情變好了,但是日?;ㄤN也變高了。

由以上問題我們可以推導出數據倉庫的作用,以及為什么需要數據倉庫?

  • 隔離業務數據。
  • 把散落在各個業務系統的數據集中起來,集中處理。
  • 統一建模,沉淀數據處理的結果,降低重復加工。
  • 提高數據的使用/共享效率,為企業決策提 供數據依據。

三、數據倉庫有什么特征?

結合前兩部分的介紹,我們總結一下數據倉庫的特征:

  • 面向業務的:根據業務過程對數據進行劃分,讓數據合理的組織和存儲,方便快速查找和使用數據。
  • 集成的:原始數據是從多個業務系統獲得,要將這些來源不同的原始數據整合到一個數據庫中統一處理。
  • 穩定的:一旦進入數據倉庫,就不允許被修改,一般的操作就是查詢、定期的加載。
  • 統一的:數據倉庫可以對數據規范化、統一化處理,沉淀公共處理邏輯。

本文由 @成長中的數據產品 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 牛逼

    來自廣東 回復
  2. ????

    來自廣東 回復