什么是數據倉庫
數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它出於分析性報告和決策支持目的而創建。 為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫的特點
1.數據倉庫的數據是面向主題的
與傳統數據庫面向應用進行數據組織的特點相對應,數據倉庫中的數據是面向主題進行組織的。什么是主題呢?首先,主題是一個抽象的概念,是較高層次上企業信息系統中的數據綜合、歸類並進行分析利用的抽象。在邏輯意義上,它是對應企業中某一宏觀分析領域所涉及的分析對象。面向主題的數據組織方式,就是在較高層次上對分析對象的數據的一個完整、一致的描述,能完整、統一地刻划各個分析對象所涉及的企業的各項數據,以及數據之間的聯系。所謂較高層次是相對面向應用的數據組織方式而言的,是指按照主題進行數據組織的方式具有更高的數據抽象級別。
2. 數據倉庫的數據是集成的
數據倉庫的數據是從原有的分散的數據庫數據抽取來的。操作型數據與DSS分析型數據之間差別甚大。第一,數據倉庫的每一個主題所對應的源數據在原有的各分散數據庫中有許多重復和不一致的地方,且來源於不同的聯機系統的數據都和不同的應用邏輯捆綁在一起;第二,數據倉庫中的綜合數據不能從原有的數據庫系統直接得到。因此在數據進入數據倉庫之前,必然要經過統一與綜合,這一步是數據倉庫建設中最關鍵、最復雜的一步,所要完成的工作有:
(1)要統一源數據中所有矛盾之處,如字段的同名異義、異名同義、單位不統一、字長不一致,等等。
(2)進行數據綜合和計算。數據倉庫中的數據綜合工作可以在從原有數據庫抽取 數據時生成,但許多是在數據倉庫內部生成的,即進入數據倉庫以后進行綜合生成的。
3. 數據倉庫的數據是不可更新的
數據倉庫的數據主要供企業決策分析之用,所涉及的數據操作主要是數據查詢,一般情況下並不進行修改操作。數據倉庫的數據反映的是一段相當長的時間內歷史數據的內容,是不同時點的數據庫快照的集合,以及基於這些快照進行統計、綜合和重組的導出數據,而不是聯機處理的數據。數據庫中進行聯機處理的數據經過集成輸入到數據倉庫中,一旦數據倉庫存放的數據已經超過數據倉庫的數據存儲期限,這些數據將從當前的數據倉庫中刪去。因為數據倉庫只進行數據查詢操作,所以數據倉庫管理系統相比數據庫管理系統而言要簡單得多。數據庫管理系統中許多技術難點,如完整性保護、並發控制等等,在數據倉庫的管理中幾乎可以省去。但是由於數據倉庫的查詢數據量往往很大,所以就對數據查詢提出了更高的要求,它要求采用各種復雜的索引技術;同時由於數據倉庫面向的是商業企業的高層管理者,他們會對數據查詢的界面友好性和數據表示提出更高的要求。
4. 數據倉庫的數據是隨時間不斷變化的
數據倉庫中的數據不可更新是針對應用來說的,也就是說,數據倉庫的用戶進行分析處理時是不進行數據更新操作的。但並不是說,在從數據集成輸入數據倉庫開始到最終被刪除的整個數據生存周期中,所有的數據倉庫數據都是永遠不變的。
數據倉庫的數據是隨時間的變化而不斷變化的,這是數據倉庫數據的第四個特征。這一特征表現在以下3方面:
(1)數據倉庫隨時間變化不斷增加新的數據內容。數據倉庫系統必須不斷捕捉OLTP數據庫中變化的數據,追加到數據倉庫中去,也就是要不斷地生成OLTP數據庫的快照,經統一集成后增加到數據倉庫中去;但對於確實不再變化的數據庫快照,如果捕捉到新的變化數據,則只生成一個新的數據庫快照增加進去,而不會對原有的數據庫快照進行修改。
(2)數據倉庫隨時間變化不斷刪去舊的數據內容。數據倉庫的數據也有存儲期限,一旦超過了這一期限,過期數據就要被刪除。只是數據倉庫內的數據時限要遠遠長於操作型環境中的數據時限。在操作型環境中一般只保存有60~90天的數據,而在數據倉庫中則需要保存較長時限的數據(如5~10年),以適應DSS進行趨勢分析的要求。
(3)數據倉庫中包含有大量的綜合數據,這些綜合數據中很多跟時間有關,如數據經常按照時間段進行綜合,或隔一定的時間片進行抽樣等等。這些數據要隨着時間的變化不斷地進行重新綜合。因此,數據倉庫的數據特征都包含時間項,以標明數據的歷史時期。
數據庫與數據倉庫的區別實際講的是OLTP與OLAP的區別
操作型處理,叫聯機事務處理OLTP(On-Line Transaction Processing,),也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較為關心操作的響應時間、數據的安全性、完整性和並發支持的用戶數等問題。傳統的數據庫系統作為數據管理的主要手段,主要用於操作型處理。
分析型處理,叫聯機分析處理OLAP(On-Line Analytical Processing)一般針對某些主題的歷史數據進行分析,支持管理決策。
數據倉庫架構分層
數據倉庫標准上可以分為四層:ODS(臨時存儲層)、PDW(數據倉庫層)、DM(數據集市層)、APP(應用層)。
ODS層:
為臨時存儲層,是接口數據的臨時存儲區域,為后一步的數據處理做准備。一般來說ODS層的數據和源系統的數據是同構的,主要目的是簡化后續數據加工處理的工作。從數據粒度上來說ODS層的數據粒度是最細的。ODS層的表通常包括兩類,一個用於存儲當前需要加載的數據,一個用於存儲處理完后的歷史數據。歷史數據一般保存3-6個月后需要清除,以節省空間。但不同的項目要區別對待,如果源系統的數據量不大,可以保留更長的時間,甚至全量保存;
PDW層:
為數據倉庫層,PDW層的數據應該是一致的、准確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。這一層的數據一般是遵循數據庫第三范式的,其數據粒度通常和ODS的粒度相同。在PDW層會保存BI系統中所有的歷史數據,例如保存10年的數據。
DM層:
為數據集市層,這層數據是面向主題來組織數據的,通常是星形或雪花結構的數據。從數據粒度來說,這層的數據是輕度匯總級的數據,已經不存在明細數據了。從數據的時間跨度來說,通常是PDW層的一部分,主要的目的是為了滿足用戶分析的需求,而從分析的角度來說,用戶通常只需要分析近幾年(如近三年的數據)的即可。從數據的廣度來說,仍然覆蓋了所有業務數據。
APP層:
為應用層,這層數據是完全為了滿足具體的分析需求而構建的數據,也是星形或雪花結構的數據。從數據粒度來說是高度匯總的數據。從數據的廣度來說,則並不一定會覆蓋所有業務數據,而是DM層數據的一個真子集,從某種意義上來說是DM層數據的一個重復。從極端情況來說,可以為每一張報表在APP層構建一個模型來支持,達到以空間換時間的目的數據倉庫的標准分層只是一個建議性質的標准,實際實施時需要根據實際情況確定數據倉庫的分層,不同類型的數據也可能采取不同的分層方法。
為什么要對數據倉庫分層:
1用空間換時間,通過大量的預處理來提升應用系統的用戶體驗(效率),因此數據倉庫會存在大量冗余的數據;
2如果不分層的話,如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大
3通過數據分層管理可以簡化數據清洗的過程,因為把原來一步的工作分到了多個步驟去完成,相當於把一個復雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。