1、什么是數據倉庫
數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它出於分析性報告和決策支持目的而創建。為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
2、數據倉庫的特點
a.數據倉庫的數據是面向主題的
與傳統數據庫面向應用進行數據組織的特點相對應,數據倉庫中的數據是面向主題進行組織的。
什么是主題呢?首先,主題是一個抽象的概念,是較高層次上企業信息系統中的數據綜合、歸類並進行分析利用的抽象。在邏輯意義上,它的分析對是對應企業中某一宏觀分析領域所涉及象。面向主題的數據組織方式,就是在較高層次上對分析對象的數據的一個完整、一致的描述,能完整、統一地刻划各個分析對象所涉及的企業的各項數據,以及數據之間的聯系。所謂較高層次是相對面向應用的數據組織方式而言的,是指按照主題進行數據組織的方式具有更高的數據抽象級別。
b.數據倉庫的數據是集成的
數據倉庫的數據是從原有的分散的數據庫中抽取來的。操作型數據與分析型數據之間差別甚大。第一,數據倉庫的每一個主題所對應的源數據在原有的各分散數據庫中有許多重復和不一致的地方,且來源於不同的聯機系統的數據都和不同的應用邏輯捆綁在一起;第二,數據倉庫中的綜合數據不能從原有的數據庫系統直接得到。因此在數據進入數據倉庫之前,必然要經過統一與綜合,這一步是數據倉庫建設中最關鍵、最復雜的一步,所要完成的工作有:
(1)要統一源數據中所有矛盾之處,如字段的同名異義、異名同義、單位不統一、字長不一致,等等;
(2)進行數據綜合和計算。數據倉庫中的數據綜合工作可以在從原有數據庫抽取 數據時生成,但許多是在數據倉庫內部生成的,即進入數據倉庫以后進行綜合生成的。
c.數據倉庫的數據是不可更新的
數據倉庫的數據主要供企業決策分析之用,所涉及的數據操作主要是數據查詢,一般情況下並不進行修改操作。數據倉庫的數據反映的是一段相當長的時間內歷史數據的內容,是不同時點的數據庫快照的集合,以及基於這些快照進行統計、綜合和重組的導出數據,而不是聯機處理的數據。數據庫中進行聯機處理的數據經過集成輸入到數據倉庫中,一旦數據倉庫存放的數據已經超過數據倉庫的數據存儲期限,這些數據將從當前的數據倉庫中刪去。因為數據倉庫只進行數據查詢操作,所以數據倉庫管理系統相比數據庫管理系統而言要簡單得多。數據庫管理系統中許多技術難點,如完整性保護、並發控制等等,在數據倉庫的管理中幾乎可以省去。但是由於數據倉庫的查詢數據量往往很大,所以就對數據查詢提出了更高的要求,它要求采用各種復雜的索引技術;同時由於數據倉庫面向的是商業企業的高層管理者,他們會對數據查詢的界面友好性和數據表示提出更高的要求。
d.數據倉庫的數據是隨時間不斷變化的
數據倉庫中的數據不可更新是針對應用來說的,也就是說,數據倉庫的用戶進行分析處理時是不進行數據更新操作的。但並不是說,在從數據集成輸入數據倉庫開始到最終被刪除的整個數據生存周期中,所有的數據倉庫數據都是永遠不變的。
3、數據庫與數據倉庫的區別
了解數據庫與數據倉庫的區別之前,首先掌握三個概念。數據庫軟件、數據庫、數據倉庫。
數據庫軟件:是一種軟件,可以看得見,可以操作。用來實現數據庫邏輯功能。屬於物理層。
數據庫:是一種邏輯概念,用來存放數據的倉庫。通過數據庫軟件來實現。數據庫由很多表組成,表是二維的,一張表里可以有很多字段。對應的數據就一行一行寫入表中。數據庫的表,在於能夠用二維表現多維關系。目前市面上流行的數據庫都是二維數據庫。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。
數據倉庫:是數據庫概念的升級。從邏輯上理解,數據庫和數據倉庫沒有區別,都是通過數據庫軟件實現的存放數據的地方,只不過從數據量來說,數據倉庫要比數據庫更龐大得多。數據倉庫主要用於數據挖掘和數據分析,輔助領導做決策。
數據庫與數據倉庫的區別實際講的是OLTP與OLAP的區別
a.OLTP和OLAP:
OLTP的全稱是 Online Transaction Processing, OLTP主要用傳統的關系型數據庫來進行事務處理。OLTP最核心的需求是單條記錄的高效快速處理,索引技術、分庫分表等最根本的訴求就是解決此問題。
操作型處理,叫聯機事務處理OLTP,也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較為關心操作的響應時間、數據的安全性、完整性和並發支持的用戶數等問題。傳統的數據庫系統作為數據管理的主要手段,主要用於操作型處理。
OLAP的全稱是 Online Analytical Processing,OLAP能夠處理和統計大量的數據,不像OLTP數據庫需要考慮數據的增刪改查和並發控制等,OLAP數據一般只需要處理數據查詢請求,
數據導入批量導入的,因此通過列存儲,列壓縮和位圖索引等技術可以大大加快響應請求的速度。
分析型處理,叫聯機分析處理OLAP一般針對某些主題的歷史數據進行分析,支持管理決策。
b.OLTP和OLAP簡單對比

4、數據倉庫邏輯架構設計
離線數據倉庫通常基於維度建模理論來構建,離線數據倉庫通常從邏輯上進行分層,分層主要出於以下考慮:
1、隔離性:用戶使用的應該是數據團隊精心加工后的數據,而不是來自於業務系統的原始數據,這樣做的好處一是,用戶使用的是精心准備過的、規范的、干凈的、從業務視角的數據。
非常容易理解和使用。二是如果上游業務系統發生變革甚至重構(比如表結構、字段、業務含義等),數據團隊會負責處理所有這些變化,最小化對下游用戶的影響。
2、性能和可為維護性: 專業的人做專業的事,數據分層使得數據的加工基本都在數據團隊,從而相同的業務邏輯不用重復執行,節省了相應的存儲和計算開銷。
此外數據分層也使得數據倉庫的維護變得清晰和便捷,每層只負責各自的任務,某層的數據加工出現問題,只需要修改該層即可。
3、規范性:對於一個公司和組織來說,數據的口徑非常重要,大家談論一個指標的時候,必須基於一個明確的、公認i的口徑,此外表、字段以及指標必須進行規范。
4、ODS層:數據倉庫源頭系統的數據表通常會原封不動地存儲一份,這稱為ODS(Operation Data Store)層, ODS層也經常會被稱為准備區(Staging area),
它們是后續數據倉庫層(即基於Kimball維度建模生成的事實表和維度表層,以及基於這些事實表和明細表加工的匯總層數據)加工數據的來源,
同時ODS層也存儲着歷史的增量數據或全量數據。
5、DWD和DWS層:數據倉庫明細層(Data Warehouse Detail , DWD)和數據倉庫匯總層(Data Warehouse Summary, DWS)是數據倉庫的主題內容。
DWD和DWS層的數據是ODS層經過ETL清洗、轉換、加載生成的,而且它們通常都是基於Kimball的維度建模理論來構建的,並通過一致性維度和數據總線來保證各個子主題的維度一致性。
6、應用層(ADS):應用層主要是各個業務放或者部門基於DWD和DWS建立的數據集市(Data Mart,DM),數據集市DM是相對於DWD和DWS的數據倉庫(Data Warehouse, DW)
來說的。一般來說,應用層的數據來源於DW層,但原則上不允許直接訪問ODS層。此外,相比DW層,應用層只包含部門或因為方自己關心的明細層和匯總層數據。

5、數據倉庫架構分層(與4的意思相同)
數據倉庫標准上可以分為四層:ODS(臨時存儲層)、DW(數據倉庫層)、DM(數據集市層)、APP(應用層)。

a.ODS層:臨時存儲層,是接口數據的臨時存儲區域,為后一步的數據處理做准備。一般來說ODS層的數據和源系統的數據是同構的,主要目的是簡化后續數據加工處理的工作。從數據粒度上來說ODS層的數據粒度是最細的。ODS層的表通常包括兩類,一個用於存儲當前需要加載的數據,一個用於存儲處理完后的歷史數據。歷史數據一般保存3-6個月后需要清除,以節省空間。但不同的項目要區別對待,如果源系統的數據量不大,可以保留更長的時間,甚至全量保存;
b.DW層:數據倉庫層,PDW層的數據應該是一致的、准確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。這一層的數據一般是遵循數據庫第三范式的,其數據粒度通常和ODS的粒度相同。在PDW層會保存BI系統中所有的歷史數據,例如保存10年的數據。
c.DM層:數據集市層,這層數據是面向主題來組織數據的,通常是星形或雪花結構的數據。從數據粒度來說,這層的數據是輕度匯總級的數據,已經不存在明細數據了。從數據的時間跨度來說,通常是PDW層的一部分,主要的目的是為了滿足用戶分析的需求,而從分析的角度來說,用戶通常只需要分析近幾年(如近三年的數據)的即可。從數據的廣度來說,仍然覆蓋了所有業務數據。
d.APP層:應用層,這層數據是完全為了滿足具體的分析需求而構建的數據,也是星形或雪花結構的數據。從數據粒度來說是高度匯總的數據。從數據的廣度來說,則並不一定會覆蓋所有業務數據,而是DM層數據的一個真子集,從某種意義上來說是DM層數據的一個重復。從極端情況來說,可以為每一張報表在APP層構建一個模型來支持,達到以空間換時間的目的數據倉庫的標准分層只是一個建議性質的標准,實際實施時需要根據實際情況確定數據倉庫的分層,不同類型的數據也可能采取不同的分層方法。
6、數據倉庫分層的意義
(1)用空間換時間,通過大量的預處理來提升應用系統的用戶體驗(效率),因此數據倉庫會存在大量冗余的數據;
(2)如果不分層的話,如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大;
(3)通過數據分層管理可以簡化數據清洗的過程,因為把原來一步的工作分到了多個步驟去完成,相當於把一個復雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。
7、元數據
a、元數據的定義
數據倉庫的元數據是關於數據倉庫中數據的數據。它的作用類似於數據庫管理系統的數據字典,保存了邏輯數據結構、文件、地址和索引等信息。廣義上講,在數據倉庫中,元數據描述了數據倉庫內數據的結構和建立方法的數據。
元數據是數據倉庫管理系統的重要組成部分,元數據管理器是企業級數據倉庫中的關鍵組件,貫穿數據倉庫構建的整個過程,直接影響着數據倉庫的構建、使用和維護。
1)構建數據倉庫的主要步驟之一是ETL。這時元數據將發揮重要的作用,它定義了源數據系統到數據倉庫的映射、數據轉換的規則、數據倉庫的邏輯結構、數據更新的規則、數據導入歷史記錄以及裝載周期等相關內容。數據抽取和轉換的專家以及數據倉庫管理員正是通過元數據高效地構建數據倉庫。
2)用戶在使用數據倉庫時,通過元數據訪問數據,明確數據項的含義以及定制報表。
3)數據倉庫的規模及其復雜性離不開正確的元數據管理,包括增加或移除外部數據源,改變數據清洗方法,控制出錯的查詢以及安排備份等。
b、元數據的存儲方式
數據有兩種常見存儲方式:
一種是以數據集為基礎,每一個數據集有對應的元數據文件,每一個元數據文件包含對應數據集的元數據內容;另一種存儲方式是以數據庫為基礎,即元數據庫。其中元數據文件由若干項組成,每一項表示元數據的一個要素,每條記錄為數據集的元數據內容。上述存儲方式各有優缺點,第一種存儲方式的優點是調用數據時相應的元數據也作為一個獨立的文件被傳輸,相對數據庫有較強的獨立性,在對元數據進行檢索時可以利用數據庫的功能實現,也可以把元數據文件調到其他數據庫系統中操作;不足是如果每一數據集都對應一個元數據文檔,在規模巨大的數據庫中則會有大量的元數據文件,管理不方便。
第二種存儲方式下,元數據庫中只有一個元數據文件,管理比較方便,添加或刪除數據集,只要在該文件中添加或刪除相應的記錄項即可。在獲取某數據集的元數據時,因為實際得到的只是關系表格數據的一條記錄,所以要求用戶系統可以接受這種特定形式的數據。因此推薦使用元數據庫的方式。
元數據庫用於存儲元數據,因此元數據庫最好選用主流的關系數據庫管理系統。元數據庫還包含用於操作和查詢元數據的機制。建立元數據庫的主要好處是提供統一的數據結構和業務規則,易於把企業內部的多個數據集市有機地集成起來。目前,一些企業傾向建立多個數據集市,而不是一個集中的數據倉庫,這時可以考慮在建立數據倉庫(或數據集市)之前,先建立一個用於描述數據、服務應用集成的元數據庫,做好數據倉庫實施的初期支持工作,對后續開發和維護有很大的幫助。元數據庫保證了數據倉庫數據的一致性和准確性,為企業進行數據質量管理提供基礎。
c、元數據的作用
1)描述哪些數據在數據倉庫中,幫助決策分析者對數據倉庫的內容定位。
2)定義數據進入數據倉庫的方式,作為數據匯總、映射和清洗的指南。
3)記錄業務事件發生而隨之進行的數據抽取工作時間安排。
4)記錄並檢測系統數據一致性的要求和執行情況。
5)評估數據質量。
