數據倉庫,百度百科的解釋:數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出于分析性報告和決策支持目的而創建。 為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
通俗的解釋數據倉庫上面的解釋不夠直白,下面用一個例子來解釋一下,比如秦國在統一六國以后,發現其他六國都有自已的文字,很多文字之間差距較大,大家互不認識,為方便統治和管理,秦王開始統一文字。把來自其他各國的文字進行了統一,最終形成了全國通用的文字。方便了以后的使用者。
數據倉庫也是類似,一個公司的數據可能來自不同的系統,有MySQL、Oracle、SQLserver等,這些數據之間規則不統一,不能直接拿來使用,所以為了方便的使用,就把它們取來放到一個統一規則的地方,然后就可以對這些數據進行使用,比如:數據挖掘、數據分析、制作報表等。而這個地方存放數據的地方就叫數據倉庫。
為了方便、穩定、安全的使用數據。數據倉庫必須有規則
目前數據倉庫的特點如下面向主題
不同于傳統數據庫對應于某一個或多個項目,數據倉庫根據使用者實際需求,將不同數據源的數據在一個較高的抽象層次上做整合,所有數據都圍繞某一主題來組織。
比如購物是一個主題,那么購物里面包含用戶、訂單、支付、物流等數據綜合,對這些數據要進行歸類并分析,分析這個對象數據的一個完整性、一致性的描述,能完整、統一的劃分對象所設計的各項數據。
數據集成
數據倉庫中存儲的數據是來源于多個數據源的集成,原始數據來自不同的數據源,存儲方式各不相同。要整合成為最終的數據集合,需要從數據源經過一系列抽取、清洗、轉換的過程。
第一:每一個主題的源數據在原有分散數據庫中的有許多重復和不一致,且不同數據庫的數據是和不同的應用邏輯捆綁的。
第二:數據倉庫中的綜合性數據不能從原有的數據庫系統直接得到,因此在數據進入數據倉庫之前要進過統一和綜合。(字段同名異意,異名同義,長度等)
數據不可更新和修改
數據倉庫的數據主要是提供決策分析用,設計的數據主要是數據查詢,一般情況下不做修改,這些數據反映的是一段較長時間內歷史數據的內容,有一塊修改了影響的是整個歷史數據的過程數據。
數據倉庫的查詢量往往很大,所以對數據查詢提出了更高的要求,要求采用各種復雜的索引技術,并對數據查詢的界面友好性和數據凸顯性提出更高的要求。
隨時間不斷變化
數據倉庫中的數據不可更新是針對應用來說,從數據的進入到刪除的整個生命周期中,數據倉庫的數據是永遠不變的。
數據倉庫的數據是隨著時間變化而不斷增加新的數據。
數據倉庫隨著時間變化不斷刪去久的數據內容,數據倉庫的數據也有時限的,數據庫的數據時限一般是60 ~ 90天,而數據倉庫的數據一般是5年~10年。
數據倉庫中包含大量的綜合性數據,這些數據很多是跟時間有關的,這些數據特征都包含時間項,以標明數據的歷史時期。
數據倉庫分層架構ODS層(臨時存儲層):也叫貼源層,就是將所有涉及業務系統的數據抽取到這一層集中存放,同時也會保留歷史數據,這一層基本保留了與源系統一樣的結構和數據。一般對這些數據分為全量更新和增量更新,通常在貼源的過程中會做一些簡單的清洗。
DW層(數據倉庫層):將一些數據關聯的日期進行拆分,使得其更具體的分類,一般拆分成年、月、日,而ODS層到DW層的ETL腳本會根據業務需求對數據進行清洗、設計,如果沒有業務需求,則根據源系統的數據結構和未來的規劃去做處理,對這層的數據要求是一致、準確、盡量建立數據的完整性。
APP層(應用層):它應技術或業務需要而建,直面需求,方便展現,同時提高數據的存儲性能。
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象并不限于數據倉庫。
ETL就是數據搬家的過程搬家第一步,我們要將舊住所的東西打包;
第二步,我們叫來搬家公司將打包的東西運輸到新住所;
第三步,我們在新住所將打包的東西解開,重新整理,擺放。
ETL的主要作用數據要從一地方到另一個地方,必須要入鄉隨俗。也就是說,數據到某一層就要按照該層對數據的要求去存放,而ETL就是告訴數據每層的要求是什么。
完整的說就是ETL是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。數據清洗是指將不符合要求的數據除掉,包括錯誤數據、不完整數據、重復數據。數據轉換要做的工作是把所有數據的模板、標準、計算規則等進行統一,如存儲結構、數據編碼等。清洗轉換好的數據按著標準的ETL架構存儲到數據倉庫中,以備進行數據分析和決策。
ETL主要有兩種任務
一種是數據流任務,相當于將舊住所打包的東西運輸到新住所;
一種是清理任務,相當于在新住所重新整理擺放。
ETL的重要性ETL是商業智能(BI)重要的一個環節,也是進行數據分析的基礎。數據倉庫構建好后,才有可能基于數據倉庫來構建分析模型并根據需求展現最終的結果。做好一個BI項目,其中很大一部分工作是ETL,ETL的質量決定了BI是否成功。有的BI工具本身就帶著ETL功能,實際上是把前期和后期工作整合到一起了。有的公司也是自己開發的ETL工具。當然專門的ETL工具就有很多,開源有免費的比如:kettle,也有收費如:Informatica完全可以滿足BI的需要,因而在工作中除了要考慮工具的性能、效率,還要考慮項目的成本,經濟也是必須考慮的因素。