數據倉庫的介紹
一、數據倉庫的基本概念
數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫顧名思義,是一個很大的數據存儲集合,出於企業的分析性報告和決策支持目的而創建,對多樣的業務數據進行篩選與整合。它為企業提供一定的BI(商業智能)能力,指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫的輸入方是各種各樣的數據源,最終的輸出用於企業的數據分析、數據挖掘、數據報表等方向。
二、數據倉庫的主要特征
數據倉庫是面向主題的(Subject-Oriented )、集成的(Integrated)、穩定的(Non-Volatile)和時變的(Time-Variant )數據集合,用以支持管理決策。
1.主題性
不同於傳統數據庫對應於某一個或多個項目,數據倉庫根據使用者實際需求,將不同數據源的數據在一個較高的抽象層次上做整合,所有數據都圍繞某一主題來組織。
這里的主題怎么來理解呢?比如對於城市,“天氣濕度分析”就是一個主題,對於淘寶,“用戶點擊行為分析”就是一個主題。
2.集成性
數據倉庫中存儲的數據是來源於多個數據源的集成,原始數據來自不同的數據源,存儲方式各不相同。要整合成為最終的數據集合,需要從數據源經過一系列抽取、清洗、轉換的過程。
3.穩定性
數據倉庫中保存的數據是一系列歷史快照,不允許被修改。用戶只能通過分析工具進行查詢和分析。這里說明一點,數據倉庫基本上是不許允許用戶進行修改,刪除操作的。大多數的場景是用來查詢分析數據。
4.時變性
數據倉庫會定期接收新的集成數據,反應出最新的數據變化。這和穩定特點並不矛盾。
三、數據倉庫與數據庫區別
1、數據庫
數據庫是面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對記錄進行查詢、修改。用戶較為關心操作的響應時間、數據的安全性、完整性和並發支持的用戶數等問題。傳統的數據庫系統作為數據管理的主要手段,主要用於操作型處理,也被稱為聯機事務處理 OLTP(On-Line Transaction Processing)。
2、數據倉庫
數據倉庫一般針對某些主題的歷史數據進行分析,支持管理決策,又被稱為聯機分析處理 OLAP(On-Line Analytical Processing)。
首先要明白,數據倉庫的出現,並不是要取代數據庫。
3、兩者區別
- 數據庫是面向事務的設計,數據倉庫是面向主題設計的。
- 數據庫一般存儲業務數據,數據倉庫存儲的一般是歷史數據。
- 數據庫設計是盡量避免冗余,一般針對某一業務應用進行設計,比如一張簡單的User表,記錄用戶名、密碼等簡單數據即可,符合業務應用,但是不符合分析。數據倉庫在設計是有意引入冗余,依照分析需求,分析維度、分析指標進行設計。
- 數據庫是為捕獲數據而設計,數據倉庫是為分析數據而設計。
以銀行業務為例。數據庫是事務系統的數據平台,客戶在銀行做的每筆交易都會寫入數據庫,被記錄下來,這里,可以簡單地理解為用數據庫記賬。
數據倉庫是分析系統的數據平台,它從事務系統獲取數據,並做匯總、加工,為決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款余額是多少。如果存款又多,消費交易又多,那么該地區就有必要設立ATM了。
顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求數據庫只能存儲很短一段時間的數據。而分析系統是事后的,它要提供關注時間段內所有的有效數據。這些數據是海量的,匯總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。
數據倉庫,是在數據庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的“大型數據庫”。
4、數據倉庫分層架構
按照數據流入流出的過程,數據倉庫架構可分為三層——源數據、數據倉庫、數據應用。
數據倉庫的數據來源於不同的源數據,並提供多樣的數據應用,數據自下而上流入數據倉庫后向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平台。
- 源數據層(ODS): 操作性數據(Operational Data Store) ,是作為數據庫到數據倉庫的一種過渡,ODS的數據結構一般與數據來源保持一致,而且ODS的數據周期一般比較短。ODS的數據為后一步的數據處理做准備。
- 數據倉庫層(DW):數據倉庫(Data Warehouse),是數據的歸宿,這里保持這所有的從ODS到來的數據,並長期報錯,而且這些數據不會被修改,DW層的數據應該是一致的、准確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。
- 數據應用層(DA):數據應用(Data Application),為了特定的應用目的或應用范圍,而從數據倉庫中獨立出來的一部分數據,也可稱為部門數據或主題數據,該數據面向應用。如根據報表、專題分析需求而計算生成的數據。
5、數據倉庫之ETL
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。ETL是將業務系統的數據經過抽取、清洗、轉換之后加載到數據倉庫的過程,目的是將企業中分散、零亂、標准不統一的數據整合到一起。
ETL是數據倉庫的流水線,也可以認為是數據倉庫的血液,它維系着數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。