一、定義
數據倉庫之父Bill Inmon在1991年出版的“ the Data ”一本中所提出的定義被廣泛接受:數據倉庫(Data )是一個面向主題( )、集成的()、相對穩定的()、反映歷史變化(Time )的數據集合,用于支持管理決策( )。
二、特點
操作型數據庫的數據組織面向事務處理任務,各個業務系統之間各自分離,而數據倉庫中的數據是按照一定的主題域進行組織。主題是一個抽象的概念,是指用戶使用數據倉庫進行決策時所關心的重點方面,一個主題通常包含多個操作型信息系統。
面向事務處理的操作型數據庫通常與某些特定的應用相關,數據庫之間相互獨立,并且往往是異構的。而數據倉庫中的數據是在對原有分散的數據庫數據抽取、清理的基礎上經過系統加工、匯總和整理得到的,必須消除元數據中的不一致性,以保證數據倉庫內的信息關于整個企業的一致的全局信息。
操作型數據庫中的數據通常實時更新,數據根據需要及時發生變化。數據倉庫的數據主要供企業決策分析之用,所涉及的數據操作主要是數據查詢,一旦某個數據進入數據很殘酷以后,一般情況下將被長期保留,也就是數據倉庫中一般有大量的查詢操作,但修改和刪除操作很少,通常只需要定期的加載、刷新。
操作型數據庫主要關心當前某一個時間段內的數據,而數據倉庫中的數據通常包含歷史信息,系統記錄了企業從過去某一個時點(如開始應用數據倉庫的時點)到目前的各個階段的信息,通過這些信息,可以對企業的發展歷程和未來趨勢做出定量分析和預測。
三、數據倉庫中的數據
包括元數據,粒度數據、當前詳細數據,歷史數據、檔案數據。
最重要的部分,關于數據的數據。也成為數據倉庫的結構,是所有數據集成體現。倉庫開發者使用元素來管理和控制倉庫的建立和維護。
定義為呼叫倉庫所保存的信息的概要程度。不同粒度表示為不同級別的匯總數據。匯總數據是信息倉庫的特點,所有的企業數據分類(按部門、地區、功能等)需要的信息都不同,同時有效的信息倉庫是未不同風格提供的,輕量級匯總數據是企業自行的主要依據,它來自根據企業組成部分的輕量級匯總數據或來自當前詳細數據。這一層的數據容量比其他任何一個都少,代表一個折衷的積累,用來支撐廣泛的各式的需要和興趣。通過高度匯總,執行者能夠使用“鉆取”到達逐步增加的詳細層。
是信息倉庫的核心,存放大量數據。數據來自業務操作數據庫,通過主題來組織,不是代表特定應用,而是代表整個企業。在倉庫中數據粒度最低,當數據精確化時,其中的每一個數據實體都是一個塊照、一個時刻,表示一個瞬間。一旦需要經常支持企業需求,數據隨即進行更新。
以前的有意義數據(一般兩年以上),給企業帶來延續的利益和價值。包含巨大的數據量,可以用來預測和趨勢分析。包括:舊數據(原始或匯總形式)、描述舊數據特征的元數據。
四、數據倉庫的基本架構
數據倉庫的目的是構建面向分析的繼承化數據環境,為企業提供決策支持( )。其實數據倉庫本身并不“生產”然后數據,同時自身也不需要“消費”任何數據,數據來源于外部,并且開放給外部應用,這也是為什么叫“倉庫”,而不叫“工廠”的原因。因此數據倉庫的基本架構主要包含的數據流入流出的過程,可以分為三層--原始層(元數據)、倉庫層(數據倉庫)、應用層(數據應用):
從圖中可以看出數據倉庫的數據來源于不同的源數據,并提供多樣得到數據應用,數據自下而上流入數據倉庫后向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平臺。
也可以分為四層:
是接口數據的臨時存儲區域,為后一步的數據處理做準備。一般來說ODS層的數據和源系統的數據是同構的,主要目的是簡化后續數據加工處理的工作。從數據粒度上說ODS成的數據粒度是最細的。ODS層的表通常包括兩類,一個用于存儲當前需要加載的數據,一個用于存儲處理完后的歷史數據。歷史數據一般保存3-6個月后需要清除,以節省空間。但不同的項目要區別對待,如果源系統的數據量不大,可以保留更長的數據,甚至全量保存。
PDW層得到數據應該是一致的、準確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。這一層的數據一般是遵循數據庫第三范式的,其數據粒度通常和ODS的粒度相同。在PDW層會保存BI系統中所有的歷史數據,例如保存10年的數據。
這層數據是面向主題來組織數據的,通常是星形和雪花結構的數據。從數據粒度來說,這層的數據是輕度匯總級的數據,已經不存在明細數據了,已經不存在明細數據了。從數據的時間跨度來說,通常是PDW層的一部分,主要的目的是為了滿足用戶分析的需求,而從分析的角度來說,用戶通常只需要分析近幾年(如近三年的數據)的即可。從數據的廣度來說,仍然覆蓋了所有業務數據。
這層數據是完全為了滿足具體的分析需求而構建的數據,也是星形或雪花結構的數據。從數據粒度來說是高度匯總的數據。從某種意義上來說是DM層數據的一個重復。從極端情況來說,可以為每一張報表在APP層構建一個模型來支持,達到以空間換時間的目的數據倉庫的標準分層只是一個建議性質的標準,實際實施時需要根據實際情況確定數據倉庫的分層,不同分層方法。
五、數據倉庫的數據來源
數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認為是ETL(抽取Extra,轉化,轉載Load)的過程,ETL是數據倉庫的流水線,也可以認為是數據倉庫的血液,它維系著數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。
六、數據倉庫的數據存儲
數據倉庫并不需要儲存所有的原始數據,同時數據倉庫需要儲存部分細節數據。簡單地解釋下:
主要包括三個方面:
這里的聚合數據指的是基于特定需求的簡單聚合(基于多維數據的聚合在多維數據模型中),簡單聚合可以是網站的總、、 等匯總數據,也可以是Avg.time on page、Avg.time on site等平均數據,這些數據可以直接地展示于報表上。
多維數據模型提供了多角度多層次的分析應用,比如基于時間維、地域維等構建的銷售星形模型、雪花模型,可以實現在各時間維度和地域維度的交叉查詢,以及基于時間維和地域維的細分。所以數據倉庫面向特定群體的數據集市讀書基于多維數據模型進行構建的。
這里的業務模型指的是基于某些數據分析和決策支持而建立起來的數據模型,比如我之前介紹過的用戶評價模型、關聯推薦模型、RFM分析模型等,或者是決策支持的線性規劃模型、庫存模型等;同時,數據挖掘中前期數據的處理也可以在這里完成。
七、數據倉庫與數據庫的區別
八、數據倉庫的數據應用
數據分析、數據挖掘、人工智能、機器學習、風險控制、無人駕駛。數據化運營、精準運營。廣告精準、智能投放。
九、數據倉庫技術
1、OLTP和OLAP
OLTP的全稱是 ,OLTP主要用傳統的關系型數據庫來進行事務處理。OLTP最核心的需求是單條記錄的高效快速處理,索引技術、分庫分表等最基本的訴求就是解決此問題。
OLAP的全稱是 ,OLAP很夠處理和統計大量的數據,不像OLTP數據庫需要考慮數據的增刪改查和并發控制等,OLAP數據一般只需要處理數據查詢請求,數據導入批量導入的,因此通過列存儲,列壓縮和位圖索引等技術可以大大加快響應請求的速度。
2、OLTP和OLAP數據的簡單對比
3、數據倉庫邏輯架構設計
離線數據倉庫基于維度建模理論來構建,離線數據倉庫通常從邏輯上進行分層,分詞主要出于以下考慮:
1、隔離性:
用戶使用的應該是數據團隊精心加工后的數據,而不是來自于業務系統的原始數據,這樣做的好處一是,用戶使用的精心準備過的、規范的、干凈的、從業務視角的數據。非常容易理解和使用。二是如果上游業務系統發生變革甚至重構(比如表結構、字段、業務含義等),數據團隊會負責處理所有這些變化,最小化對下游用戶的影響。
2、性能和可為維護性:
專業的人做專業的事,數據分層使得數據的加工基本都在數據團隊,從而相同的業務邏輯不用重復執行,節省了相應的存儲和計算開銷。此外數據分層也使得數據倉庫的維護變得清晰和便捷,每層只負責各自的任務,某層的數據加工出現問題,只需要修改該層即可。
3、規范性:
對于一個公司和組織來說,數據的口徑非常重要,大家談論一個指標的時候,必須基于一個明確的、公認的口徑,此外表、字段以及指標必須進行規范。
十、數據倉庫多維數據模型的基本概念
1、主題():
主題就是指我們所要分析的具體方面。例如:某年某月某地區某機型某款APP的安裝情況。主題有兩個元素:
一是各個分析角度(維度),如時間位置;
二是要分析的具體量度,該量度一般通過數值體現,如APP安裝量。
2、維():
維是用于從不同角度描述事物特征的,一般維都會有多層(Level:級別),每個Level都會包含一些共有的或特有的屬性()。
以時間維為例:時間維一般會包含年、季、月、日這幾個Level,每個Level一般都會有ID、NAME、這幾個公共屬性,這幾個公共屬性不僅適用于時間維,也同樣表現在其他各種不同類型的維。
3、分層():
OLAP需要基于有層級的自上而下的鉆取,或者自下而上地聚合。所以我們一般會在維的基礎上再次進行分層,維、分層、層級的關系如下圖:
每一級之間可以有附屬關系(如市屬于省、省屬于國家)構造數據倉庫的方式有,也可能是順序關系(如天周年)。
4、量度:
量度就是我們要分析的具體的技術指標,諸如年銷售額之類。它們一般為數值型數據。我們或者將該數據匯總,或者將該數據取次數、獨立次數或取最大最小值等,這樣的數據成為量度。
5、粒度:
數據的細分層度,例如按天分按小時分。
6、事實表和維表:
事實表是用來記錄分析的內容的分量信息的,包含了每個事件的具體要素,以及具體發生的事情。事實表中存儲數字型ID以及度量信息。
維表則是對事實表中事件的要素的描述信息,就是你觀察該事務的角度,是從哪個角度去觀察這個內容的。
事實表和維表通過ID相關聯,如圖所示:
7、企業級數據倉庫/數據集市:
企業級數據倉庫:突出大而全,不論是細致數據和聚合數據它全都有,設計時使用事實星座模式。
數據集市:可以看做是企業級數據倉庫的一個子集,它是針對某一方面的數據設計的數據倉庫,例如為公司的支付業務設計一個單獨的數據集市。由于數據集市沒有進行企業級的設計和規劃,所所以長期來看,它本身的集成將會極其復雜。其數據來源有兩種,一種直接從原生數據源得到構造數據倉庫的方式有,另一種是從企業數據倉庫得到。
十一、元數據
1、元數據的概念
傳統定義上,元數據是關于數據的數據(data about data),在數倉中,元數據是描述數據倉庫內數據的結構以及建立方法的數據,按其用途分為技術元數據和業務元數據。
元數據指明了數據倉庫中信息的內容和位置,刻畫了數據的抽取和轉換規則,存儲了與數據倉庫主題有關的各種商業信息,而且整個數據倉庫的運行都是基于元數據的,如修改跟蹤數據、抽取調度數據、同步捕獲歷史數據等。
元數據描述了數據倉庫的數據和環境。
一類是管理元數據( ),它是對源數據及其內容、數據倉庫主題、數據轉換及各種操作信息的描述。
另一類是用戶元數據(),它幫助用戶查詢信息、理解結果、了解數據倉庫中的數據和組織。
2、元數據的功能
2.1、數據倉庫內容的描述
微軟能夠描述數據倉庫中的數據以及數據間的各種復雜關系,元數據定義了DW的一系列內容。元數據描述了數據倉庫中有什么數據及數據間的關系,它們是用戶使用和系統管理數據倉庫的基礎。
2.2、定義抽取和轉化
元數據可以用來生成源代碼以完成數據的轉換工作,即完成由操作型數據轉生成以特殊形式存放的、面向主題的數據倉庫數據。
元數據中的表映射和抽取域映射定義了進行實際抽取轉換工作的工程。
數據倉庫管理核心是:利用該組元數據所定義的抽取過程生成某種語言的源代碼,然后編譯成可執行的程序以完成數據的抽取工作。其核心也可直接以解釋的方式從元數據存儲中讀出每個抽取步處理過程,從而進行數據轉換。
2.3、基于商業事件的抽取調度
抽取調度是指什么時候進行從源數據到DW的抽取工作,元數據必須對數據的抽取安全加以說明。
2.4、數據質量保證
元數據必須提供一個機制,即針對特定應用并根據用戶確立的數據容忍度來提醒用戶是否采用該數據進行決策。
十二、數據集市
數據集市(Data Mart),也叫數據市場,數據集市就是滿足特定的部門或者用戶的需求,按照多維的方式進行存儲,包括定義維度、需要計算的指標、維度的層次等,生成面向決策分析需求的數據立方體。
從范圍上來說,數據是從企業范圍的數據庫、數據倉庫,或者是更加專業的數據倉庫中抽取出來的。數據中心的重點就在于它迎合了專業用戶群體的特殊需求,在分析、內容、表現,以及易用方面。數據中心的用戶希望數據是由他們熟悉的術語表現的。