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