什么是數(shù)據(jù)倉庫

一、數(shù)據(jù)倉庫概念

數(shù)據(jù)倉庫(Data Warehouse)可簡寫為DW或DWH。數(shù)據(jù)倉庫的目的是構(gòu)建面向分析的集成化數(shù)據(jù)環(huán)境,為企業(yè)所有決策定制過程,提供所有系統(tǒng)數(shù)據(jù)支持的戰(zhàn)略計劃。它出于分析性報告和決策支持的目的而創(chuàng)建。

數(shù)據(jù)倉庫本身并不“生產(chǎn)數(shù)據(jù)”,同時自身也不需要“消費”任何數(shù)據(jù),數(shù)據(jù)來源于外部,并且開放給外部應(yīng)用,這就是為什么叫“倉庫”,而不叫“工廠”的原因。

通過對數(shù)據(jù)倉庫中數(shù)據(jù)的分析,可以幫助企業(yè),改進(jìn)業(yè)務(wù)流程、控制成本、提高產(chǎn)品質(zhì)量等。

數(shù)據(jù)倉庫,并不是數(shù)據(jù)的最終目的,而是為數(shù)據(jù)最終的目的最好準(zhǔn)備。這些準(zhǔn)備包括對數(shù)據(jù)的:清晰,轉(zhuǎn)義,分類,重組,合并,拆封,統(tǒng)計等等。

二、輸出倉庫和數(shù)據(jù)庫的區(qū)別

數(shù)據(jù)庫數(shù)據(jù)倉庫的區(qū)別實際上是OLTP(操作性處理)和OLAP(分析型處理)的區(qū)別。

操作性處理(On-Line Transaction Processing),也叫面向交易的處理系統(tǒng),是針對具體頁面在數(shù)據(jù)庫練級的日常操作,通常對少數(shù)數(shù)據(jù)進(jìn)行查詢和修改。

分析型處理(On-Line Analytical Processing),一般對某些主題的歷史數(shù)據(jù)進(jìn)行分析,用來支持管理決策。數(shù)據(jù)倉庫并不是要取代數(shù)據(jù)庫。

數(shù)據(jù)倉庫,是在數(shù)據(jù)庫已經(jīng)大量存在的情況下,為了進(jìn)一步挖掘數(shù)據(jù)資源、為了決策需要而產(chǎn)生的,不是所謂的“大型數(shù)據(jù)庫”

三、數(shù)據(jù)倉庫的主要特征

數(shù)據(jù)倉庫是面向主題的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)和時變的(Time-Variant)數(shù)據(jù)集合,用以支持管理決策。

根據(jù)數(shù)據(jù)倉庫處理的數(shù)據(jù)層次不同,數(shù)據(jù)倉庫主要分為基礎(chǔ)層、主題層、數(shù)據(jù)集市這三層。

3.1 面向主題

主題是一個抽象的概念,是較高層次上企業(yè)信息系統(tǒng)的數(shù)據(jù)綜合、歸類并進(jìn)行分析利用的抽象。傳統(tǒng)數(shù)據(jù)庫的特點是面向業(yè)務(wù)應(yīng)用的,各個業(yè)務(wù)系統(tǒng)相分離;而數(shù)據(jù)倉庫則是面向主題的,它對應(yīng)某一宏觀分析領(lǐng)域所涉及的分析對象。

3.2 集成性

通過對分散、獨立、異構(gòu)的數(shù)據(jù)庫數(shù)據(jù)進(jìn)行抽取、清理、轉(zhuǎn)換和匯總便得到了數(shù)據(jù)倉庫的數(shù)據(jù)。這樣保證了數(shù)據(jù)倉庫數(shù)據(jù)的一致性。

數(shù)據(jù)倉庫中的綜合數(shù)據(jù)不能從原有數(shù)據(jù)庫直接得到。隱藏在數(shù)據(jù)進(jìn)入倉庫前,要經(jīng)過統(tǒng)一和綜合,這是最關(guān)鍵復(fù)雜的一步:

1、統(tǒng)一源數(shù)據(jù)中所有矛盾之處。如:字段的同名異義、異名同義、單位不統(tǒng)一、字長不一致等;

2、進(jìn)行數(shù)據(jù)綜合和計算。數(shù)據(jù)倉庫中的數(shù)據(jù)綜合工作可以從原有數(shù)據(jù)庫抽取數(shù)據(jù)時生成,但許多是在數(shù)據(jù)倉庫內(nèi)部生成的,即進(jìn)入數(shù)據(jù)倉庫后再進(jìn)行綜合生成的。

如下,一保險公司與“保險”有關(guān)的數(shù)據(jù)來自多個不同的操作系統(tǒng)。這些系統(tǒng)內(nèi)部數(shù)據(jù)命名、數(shù)據(jù)格式可能都不相同。把源數(shù)據(jù)存儲到數(shù)據(jù)倉庫之前,需要ETL(抽取、轉(zhuǎn)換、加載),去除不一致。ETL的質(zhì)量決定了我們決策的準(zhǔn)確性。

2.3 不可更新性(非易失性)

操作性數(shù)據(jù)庫主要服務(wù)于日常的業(yè)務(wù)操作,使得數(shù)據(jù)庫必須實時更新。數(shù)據(jù)倉庫只保存過去的業(yè)務(wù)信息,不需要實時更新,而是每隔一段時間把一批較新的數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉庫。

數(shù)據(jù)倉庫反映的是一段相當(dāng)長的時間內(nèi)歷史數(shù)據(jù)的內(nèi)容,是不同時間點數(shù)據(jù)庫快照的集合,以及基于這些快照進(jìn)行統(tǒng)計、綜合和重組的導(dǎo)出數(shù)據(jù)。

數(shù)據(jù)倉庫有大量的查詢操作,但是幾乎沒有修改和刪除。因此,數(shù)據(jù)經(jīng)加工和集成進(jìn)入數(shù)據(jù)倉庫后極少更新,通常只需要定期加載和更新。

2.4 時變性

數(shù)據(jù)倉庫包含各種粒度的歷史數(shù)據(jù)。目的是通過過去一段時間業(yè)務(wù)的經(jīng)營情況,挖掘其中隱藏的模式。數(shù)據(jù)倉庫的數(shù)據(jù)需要更新,以適應(yīng)決策的需要。數(shù)據(jù)倉庫的數(shù)據(jù)隨時間的變化主要有以下表現(xiàn):

1、數(shù)據(jù)倉庫的數(shù)據(jù)時限一般遠(yuǎn)遠(yuǎn)長于操作性數(shù)據(jù)的數(shù)據(jù)時限;

2、操作性系統(tǒng)存儲的是當(dāng)前數(shù)據(jù),而數(shù)據(jù)倉庫存儲歷史數(shù)據(jù);

3、數(shù)據(jù)倉庫的數(shù)據(jù)按照實際順序追加,都帶有實際屬性。

四、數(shù)據(jù)倉庫分層結(jié)構(gòu)

按照數(shù)據(jù)流入流出的過程,數(shù)據(jù)倉庫分為三層:原始數(shù)據(jù)層(ODS)、數(shù)據(jù)倉庫(DW)、數(shù)據(jù)應(yīng)用層。我們可以這樣理解,ODS層存放的是原始數(shù)據(jù),DW存放我們要重點設(shè)計的數(shù)據(jù),APP是面向業(yè)務(wù)定制的應(yīng)用數(shù)據(jù)。

原始數(shù)據(jù)層(ODS:Operational Data Store):數(shù)據(jù)無任何更改,不對外開放;為臨時存儲層,是接口數(shù)據(jù)的臨時存儲區(qū)域,為后一步數(shù)據(jù)處理做準(zhǔn)備。例如用戶訪問日志表、訂單日志表、用戶登錄表等。

數(shù)據(jù)倉庫(DW:Data Warehouse):也叫細(xì)節(jié)層。是對源數(shù)據(jù)進(jìn)行了ETL之后的數(shù)據(jù)。一致、準(zhǔn)確、干凈的數(shù)據(jù)。數(shù)據(jù)倉庫層是核心設(shè)計,從ODS中獲取的數(shù)據(jù)按照主題建立各種數(shù)據(jù)模型,其又細(xì)分為以下幾層:

1、數(shù)據(jù)明細(xì)層DWD(Data Warehouse Detail):該層一般保持與ODS一樣的數(shù)據(jù)粒度,并提供一定的數(shù)據(jù)質(zhì)量保證。該層會做少許聚合,將相同主題的數(shù)據(jù)匯集到一張表中,提供數(shù)據(jù)可用性。

2、數(shù)據(jù)中間層DWM(Data WareHouse Middle):改成在DWD層的基礎(chǔ)上,對數(shù)據(jù)做輕度聚合操作,生成一系列中間表,提高指標(biāo)復(fù)用性。其作用就是對核心數(shù)據(jù)進(jìn)行聚合,算出統(tǒng)計指標(biāo)。

3、數(shù)據(jù)服務(wù)層DWS(Data WareHouse Servce):又稱數(shù)據(jù)集市。主要是面向各業(yè)務(wù)部門使用,并且僅面向某個特定的主題,例如商品主題寬表、店鋪主題寬表、地址主題寬表。主要功能是將上兩層的數(shù)據(jù)按照業(yè)務(wù)需求聚合,生成字段較多的寬表和Cube,用于后續(xù)的業(yè)務(wù)查詢、OLAP分析,數(shù)據(jù)分發(fā)等。比如將表數(shù)據(jù)推送給MySQL數(shù)據(jù)庫。

數(shù)據(jù)應(yīng)用層(DA或APP:Application):前端應(yīng)用直接讀取的數(shù)據(jù)。根據(jù)報表、專題分析需求而計算生成的數(shù)據(jù)。這里主要是提供給數(shù)據(jù)產(chǎn)品和運營所使用的數(shù)據(jù),一般存放在ES、Redis、PostgreSql等系統(tǒng)中,也可能存放在Hive中供數(shù)據(jù)分析和挖掘使用,比如報表數(shù)據(jù)等。

數(shù)據(jù)倉庫從各個數(shù)據(jù)源獲取的數(shù)據(jù)及在數(shù)據(jù)倉庫內(nèi)的轉(zhuǎn)換和流動都可以認(rèn)為是ETL。數(shù)據(jù)倉庫的日常管理和維護(hù)大部分精力就是保持ETL的穩(wěn)定。

為什么要進(jìn)行數(shù)據(jù)倉庫分層?

用空間換時間,用大量冗余(預(yù)處理)來換取快速響應(yīng),提升用戶體驗。如果不分層的話,源系統(tǒng)業(yè)務(wù)規(guī)則發(fā)送變化將影響整個數(shù)據(jù)清洗過程,工作量巨大。

通過分層管理簡化數(shù)據(jù)清洗過程,把一步的工作分為多個步驟去完成,每一個步驟都相對簡單和容易,這樣我們?nèi)菀妆WC每個步驟的準(zhǔn)確性,當(dāng)發(fā)生錯誤數(shù)據(jù)時,我們只需要局部修改即可。

五、數(shù)據(jù)倉庫元數(shù)據(jù)管理

元數(shù)據(jù)(Mata Data),也叫解釋性數(shù)據(jù),描述性數(shù)據(jù)。元數(shù)據(jù)管理是企業(yè)級數(shù)據(jù)倉庫中的關(guān)鍵組件,貫穿數(shù)據(jù)倉庫構(gòu)建的整個過程,直接影響著數(shù)據(jù)倉庫的構(gòu)建、使用和維護(hù)。

● 構(gòu)建數(shù)據(jù)倉庫的主要步驟之一是ETL。元數(shù)據(jù)定義了源數(shù)據(jù)系統(tǒng)到數(shù)據(jù)倉庫的映射,數(shù)據(jù)轉(zhuǎn)換的規(guī)則、數(shù)據(jù)倉庫的邏輯結(jié)構(gòu),數(shù)據(jù)更新的規(guī)則,數(shù)據(jù)導(dǎo)入歷史記錄以及裝載周期等相關(guān)內(nèi)容。數(shù)據(jù)抽取和轉(zhuǎn)換的專家及倉庫管理員正是通過元數(shù)據(jù)高效地構(gòu)建數(shù)據(jù)倉庫。我們可以從元數(shù)據(jù)中知道,一個數(shù)據(jù)是經(jīng)過了怎樣的ETL達(dá)到數(shù)據(jù)倉庫等信息。

● 用戶在使用數(shù)據(jù)倉庫時,通過元數(shù)據(jù)訪問數(shù)據(jù),明確數(shù)據(jù)項的含義及定制報表。

● 數(shù)據(jù)倉庫的規(guī)模及復(fù)雜性離不開元數(shù)據(jù)管理,包括增加或移除外部數(shù)據(jù)源,改變數(shù)據(jù)清洗規(guī)則,控制出錯的查詢及安排備份等。

目前,行業(yè)對于元數(shù)據(jù)的管理普遍不是很好,用Excel記錄等方式。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容