1. 百度百科如是說:數據庫
2. 我的理解:瀏覽器
數據倉庫是支撐整個公司業務的大型數據集合,包含數據的存儲、建模、處理等過程。安全
數據倉庫建設的幾個重要步驟:服務器
創建數據倉庫是一個解決企業問題的過程,業務人員每每不懂如何創建和使用數據倉庫,發揮其決策支持的做用;信息部門的人員每每又不懂業務,不知道應該創建哪些決策主題,從數據源中抽取哪些數據。所以數據倉庫的項目小組應該由業務人員和信息部門的人員共同組成,雙方須要相互溝通,協做開發數據倉庫。數據結構
PS:數據部門的人應該是最瞭解業務的,接觸的業務面比較廣,且懂技術。函數
1. 收集需求,分析業務工具
第一步先要了解業務需求,分析清楚要解決的問題。而後考慮:性能
(1)數據存儲時間,是一年、兩年、五年仍是十年等;學習
(2)業務人員操做頻率,隔多久業務人員須要查詢一次;大數據
(3)用戶能接收的響應時間是多長,幾秒鐘、幾分鐘,仍是幾小時。
2. 選擇數據倉庫建設須要的軟件平臺
第二步選擇軟件平臺,包括數據庫(Oracle、MySql、Hbase、hdfs等)、建模工具、分析工具(Oracle BIEE、Qlikview、yonghong等)等,其餘還應該考慮的有數據量的承受、響應時間、分析開發成本、報表展示等。以下給一些參考:
(1)廠商的背景和支持能力,可否提供全方位的技術支持和諮詢服務。
(2)數據庫對大數據量(TB級)的支持能力。
(3)數據庫是否支持並行操做。
(4)可否提供數據倉庫的建模工具,是否支持對元數據的管理。
(5)可否提供支持大數據量的數據加載、轉換、傳輸工具(ETT)。
(6)可否提供完整的決策支持工具集,知足數據倉庫中各種用戶的須要。
3. 創建數據倉庫的邏輯模型
(1)肯定創建數據倉庫邏輯模型的基本方法。
(2)基於主題視圖,把主題視圖中的數據定義轉到邏輯數據模型中。
(3)識別主題之間的關係。
(4)分解多對多的關係。
(5)用範式理論檢驗邏輯數據模型。
(6)由用戶審覈邏輯數據模型。
4. 邏輯數據模型轉化爲數據倉庫數據模型
(1)刪除垃圾數據:數據上報中的有些數據是沒必要要的,能夠在數據進入倉庫以前進行數據清洗,過濾掉一些沒必要要的數據,包括多列、少列的、亂碼的燈一切非法上報數據。
(2)增長時間主鍵和索引:大數據中以data_time(date型)做爲主鍵比dateid(int型)做爲主鍵和索引要高效。
(3)加入不一樣級別粒度的彙總數據:數據粒度表明數據細化程度,粒度越大,數據的彙總程度越高。粒度是數據倉庫設計的一個重要因素,它直接影響到駐留在數據倉庫中的數據量和能夠執行的查詢類型。顯然,粒度級別越低,則支持的查詢越多;反之,能支持的查詢就有限。
對數據操做的效率與能獲得數據的詳細程度是一對矛盾,一般,人們但願建成的系統既有較高的效率,又能獲得所需的詳細資料。實施數據倉庫的一個重要原則就是不要試圖包括全部詳細數據,由於90%的分析需求是在彙總數據上進行的。試圖將粒度細化到最低層,只會增長系統的開銷,下降系統的性能。
PS: 有些彙總提早算好入庫,方便展示時提升效率,有些彙總能夠在展示的時候作計算,根據實際狀況來定。
5. 數據倉庫數據模型優化
數據倉庫設計時,性能是一項主要考慮因素。在數據倉庫建成後,也須要常常對其性能進行監控,並隨着需求和數據量的變動進行調整。
(1)合併不一樣的數據表;
(2)經過增長彙總表避免數據的動態彙總;
(3)經過冗餘字段減小錶鏈接的數量,不要超過3~5個;
(4)用ID代碼而不是描述信息做爲鍵值;
(5)對數據表作分區。
6. 數據的ETL過程
因爲業務系統所使用的軟硬件平臺不一樣,編碼方法不一樣,業務系統中的數據在加載到數據倉庫以前,必須進行數據的清洗和轉換,保證數據倉庫中數據的一致性。
(1)數據加載方案必須可以支持訪問不一樣的數據庫和文件系統;
(2)數據的ETL過程必須知足實際要求,在規定時間範圍內完成;
(3)支持各類轉換方法,各類轉換方法能夠構成一個工做流;
(4)支持增量加載,只把最新的加到倉庫中。
7. 開發數據倉庫的分析應用
創建數據倉庫的最終目的是爲業務部門提供決策支持能力,必須爲業務部門選擇合適的工具實現其對數據倉庫中的數據進行分析的要求。因此對於分析工具的選擇要知足:
(1)知足用戶的所有分析功能要求。數據倉庫中的用戶包括了企業中各個業務部門,他們的業務不一樣,要求的分析功能也不一樣。若有的用戶只是簡單的分析報表,有些用戶則要求作預測和趨勢分析。
(2)提供靈活的表現方式。分析的結果必須可以以直觀、靈活的方式表現,支持複雜的圖表。使用方式上,能夠是客戶機/服務器方式,也能夠是瀏覽器方式。
事實上,沒有一種工具可以知足數據倉庫的所有分析功能需求,一個完整的數據倉庫系統的功能多是由多種工具來實現,所以必須考慮多個工具之間的接口和集成性問題,對於用戶來講,但願看到的是一致的界面。
PS: 咱們公司用的是Oracle BIEE,優勢是免費,比較強大。缺點是重量級系統,學習開發成本較高。
8. 數據倉庫的管理
只重視數據倉庫的創建,而忽視數據倉庫的管理必然致使數據倉庫項目的失敗。數據倉庫管理主要包括數據庫管理和元數據管理。
☆ 數據庫管理須要考如下幾個方面:
(1)安全性管理。數據倉庫中的用戶只能訪問到他的受權範圍內的數據,數據在傳輸過程當中的加密策略。
(2)數據倉庫的備份和恢復。數據倉庫的大小和備份的頻率直接影響到備份策略。
(3)如何保證數據倉庫系統的可用性,硬件仍是軟件方法。
(4)數據老化。設計數據倉庫中數據的存放時間週期和對過時數據的老化方法,如歷史數據只保存彙總數據,當年數據保存詳細記錄。
☆ 元數據管理貫穿於整個系統的建設過程當中,元數據是描述數據的數據。在數據採集階段,元數據主要包括下列信息:
(1)源數據的描述定義:類型、位置、結構。
(2)數據轉換規則:編碼規則、行業標準。
(3)目標數據倉庫的模型描述:星型/雪花模型定義,維/事實結構定義。
(4)源數據到目標數據倉庫的映射關係:函數/表達式定義。
(5)代碼:生成轉換程序、自動加載程序等。
☆ 在數據管理階段,元數據主要包括下列信息:
(1)彙總數據的描述:彙總/聚合層次、物化視圖結構定義。
(2)歷史數據存儲規則:位置、存儲粒度。
(3)多維數據結構描述:立方體定義、維結構、度量值、鑽取層次定義等。
☆ 在數據展示階段,元數據主要包括如下信息:
(1)報表的描述:報表結構的定義。
(2)統計函數的描述:各種統計分析函數的定義。
(3)結果輸出的描述:圖、表輸出的定義。
元數據不可是獨立存放,並且對用戶是透明的,標準元數據之間能夠互相轉換。
數據倉庫模型設計:
1. 設計原則:自頂向下,逐步求精。
2. 設計的三個階段:
(1)概念模型
對業務進行系統劃分,從總體上進行抽象和歸納,也就是主題劃分。
舉個例子:
上圖中把整個業務劃分爲8塊:客戶、服務、服務使用、帳務、結算、資源、客服、營銷。
(2)邏輯模型
進一步細化概念模型。
定義實體和實體間的關係,和每一個實體的屬性。即定義具體表的做用,表與表的約束,表的字段。造成ER圖。這些實體的設計都是基於業務規則,能夠說,這一階段主要面對的是業務。也就是「業務驅動建模」。
(3)物理模型
具體實現。
依照邏輯模型,在數據庫中進行建表、索引等。數據倉庫,爲了知足高性能的需求,能夠增長冗餘、隱藏表之間的約束等反第三範式操做。
補充:數據庫三範式
第一範式:數據庫表的字段都是單一屬性,不可再分。
第二範式:全部屬性都依賴於主鍵。
第三範式:每列值和主鍵都是直接相關,而不是間接相關。
具體的模型--星型模型和雪花模型:
共同點:他們都是由一個事實表和多個維度表組成的。
區別:
<1> 星型模型
維度表直接跟事實錶鏈接,圖形像星星。
應用場景:以下
<2> 雪花模型
一部分維度表不是直接跟事實錶鏈接,而是經過維度表中轉,圖形像雪花。
應用場景:
維度間存在多級關係的時候,好比第一級是省、第二級是市、第三級是縣。
從性能上來看,星型模型的查詢性能要好。爲了提升性能,能夠容許違反第三範式,適當的冗餘、隱藏表之間的約束。
更多精彩內容,請訪問:圈裏圈外