淺談數倉

什麼叫數據倉庫?

數據倉庫是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,它用於支持企業或組織的決策分析處理。

數據倉庫是爲了便於多維分析和多角度展現而將數據按特定的模式進行存儲所建立起來的關係型數據庫,它的數據基於OLTP源系統。

首先,用於支持決策,面向分析型數據處理,它不同於企業現有的操作型數據庫;

其次,對多個異構的數據源有效集成,集成後按照主題進行了重組,幷包含歷史數據,而且存放在數據倉庫中的數據一般不再修改

數據倉庫的基本架構是什麼?(數據源,ETL, data stage,ODS,data warehouse,datamart,OLAP等等)

數據倉庫系統體系結構

數據源-> ETL -> 數據倉庫存儲與管理-> OLAP -> BI工具

數據源:是數據倉庫系統的數據源泉,通常包括企業各類信息,包括存放於RDBMS中的各種業務處理數據和各類文檔數據;各類法律法規、市場信息和競爭對手的信息等等;

數據的存儲與管理:數據的存儲和管理是整個數據倉庫的核心,是關鍵。數據倉庫的組織管理方式決定了它有別於傳統數據庫,同時也決定了其對外部數據的表現形式。從數據倉庫的技術特點着手分析,來決定採用什麼產品和技術來建立數據倉庫,然後針對現有各業務系統的數據,進行抽取、清理,並有效集成,按照主題進行組織。數據倉庫按照數據的覆蓋範圍可以分爲企業級數據倉庫和部門級數據倉庫(通常稱爲數據集市)。

OLAP:

對需要的數據進行有效集成,按多維模型予以組織,以便進行多角度、多層次的分析,並發現趨勢。其具體實現可以分爲:ROLAP(關係型在線分析處理)、MOLAP(多維在線分析處理)和HOLAP(混合型線上分析處理)。ROLAP基本數據和聚合數據均存放在RDBMS之中;MOLAP基本數據和聚合數據均存放於多維數據庫中;HOLAP基本數據存放於RDBMS之中,聚合數據存放於多維數據庫中。

前端工具:主要包括各查詢工具、數據分析工具、數據挖掘工具、種報表工具以及各種基於數據倉庫或數據集市的應用開發工具。

數據分析工具主要針對OLAP服務器。報表工具、數據挖掘工具主要針對數據倉庫。

數據庫和數據倉庫有什麼區別?

1.數據是面向事務處的,數據是由日常的業務產生的,常更新;數據倉庫是面向主題的,數據來源於數據庫或文件,經過一定的規則轉換得到,用來分析的。

2.數據庫一般是用來存儲當前交易數據,數據倉庫存儲一般存儲的是歷史數據。

3.數據庫的設計一般是符合三範式的,有最大的精確度和最小的冗餘度,有利於數據的插入; .數據倉庫的設計一般是星型的,有利於查詢。

構建企業級數據倉庫五步法:

一、 確定主題

即確定數據分析或前端展現的主題。主題要體現出某一方面的各分析角度(維度)和統計數值型數據(量度)之間的關係,確定主題時要綜合考慮.

二、 確定量度

確定主題後,需要考慮分析的技術指標。它們一般爲數據值型數據,其中有些度量值不可以彙總;些可以彙總起來,以便爲分析者提供有用的信息。量度是要統計的指標,必須事先選擇恰當,基於不同的量度可以進行復雜關鍵性指標(KPI)的設計和計算。

三、 確定事實數據粒度

確定量度之後,需要考慮該量度的彙總情況和不同維度下量度的聚合情況.例如在業務系統中數據最小記錄到秒,而在將來分析需求中,時間只要精確到天就可以了,在ETL處理過程中,按天來彙總數據,些時數據倉庫中量度的粒度就是”天”。如果不能確認將來的分析需求中是否要精確的秒,那麼,我們要遵循”最小粒度原則”,在數據倉庫中的事實表中保留每一秒的數據,從而在後續建立多維分析模型(CUBE)的時候,會對數據提前進行彙總,保障產生分析結果的效率。

四、 確定維度

維度是分析的各個角度.例:我們希望按照時間,或者按照地區,或者按照產品進行分析。那麼這裏的時間,地區,產品就是相應的維度。基於不同的維度,可以看到各個量度彙總的情況,也可以基於所有的維度進行交叉分析。

維度的層次(Hierarchy)和級別(Level)。例:在時間維度上,按照”度-季度-月”形成了一個層次,其中”年” ,”季度” ,”月”成爲了這個層次的3個級別。我們可以將“產品大類-產品子類-產品”劃爲一個層次,其中包含“產品大類”、“產品子類”、“產品”三個級別。

我們可以將3個級別設置成一張數據表中的3個字段,比如時間維度;我們也可以使用三張表,分別保存產品大類,產品子類,產品三部分數據,比如產品維度。

建立維度表時要充分使用代理鍵.代理鍵是數據值型的ID號碼(每張表的第一個字段),它唯一標識了第一維度成員。在聚合時,數值型字段的匹配和比較,join效率高。同時代理鍵在緩慢變化維中,起到了對新數據與歷史數據的標識作用。

五、 創建事實表

在確定好事實數據和維度後,將考慮加載事實表。業務系統的一筆生產,交易記錄就是將要建立的事實表的原始數據.

我們的做法是將原始表與維度表進行關聯,生成事實表。關聯時有爲空的數據時(數據源髒),需要使用外連接,連接後將各維度的代理鍵取出放於事實表中,事實表除了各維度代理鍵外,還有各度量數據,不應該存在描述性信息。

事實表中的記錄條數據都比較多,要爲其設置複合主鍵各蛇引,以實現數據的完整性和基於數據倉庫的查詢性能優化。

元數據:

描述數據及其環境的數據。兩方面用途:

首先,元數據能提供基於用戶的信息,如記錄數據項的業務描述信息的元數據能幫助用戶使用數據。

其次,元數據能支持系統對數據的管理和維護,如關於數據項存儲方法的元數據能支持系統以最有效的方式訪問數據。

元數據機制主要支持以下五類系統管理功能:

(1)描述哪些數據在數據倉庫中;

(2)定義要進入數據倉庫中的數據和從數據倉庫中產生的數據;

(3)記錄根據業務事件發生而隨之進行的數據抽取工作時間安排;

(4)記錄並檢測系統數據一致性的要求和執行情況;

(5)衡量數據質量。

ODS: Operational Data Store

ODS爲企業提供即時的,操作型的,集成的數據集合,具有面向主題性,集成性,動態性,即時性,明細性等特點

ODS作爲數據庫到數據倉庫的一種過渡形式,與數據倉庫在物理結構上不同,能提供高性能的響應時間,ODS設計採用混合設計方式。

ODS中的數據是”實時值”,而數據倉庫的數據卻是”歷史值”,一般ODS中儲存的數據不超過一個月,而數據倉庫爲10年或更多.

Data Mart

爲了特定的應用目的或應用範圍,而從數據倉庫中獨立出來的一部分數據,也可稱爲部門數據或主題數據(subjectarea)。在數據倉庫的實施過程中往往可以從一個部門的數據集市着手,以後再用幾個數據集市組成一個完整的數據倉庫。需要注意的就是在實施不同的數據集市時,同一含義的字段定義一定要相容,這樣再以後實施數據倉庫時纔不會造成大麻煩。

DDS(decision-support system)決策支持系統:

用於支持管理決策的系統。通常,DSS包括以啓發的方式對大量的數據單元進行的分析,通常不涉及數據更新。

三.什麼叫OLAP?用途是什麼?

 聯機分析處理,On-Line Analysis Processing 即從數據倉庫中抽取詳細數據的一個子集並經過必要的聚集,存儲到OLAP存儲器中供前端分析工具讀取。

OLAP系統按照數據存儲格式可以分爲關係OLAP(RelationalOLAP,簡稱ROLAP)、多維OLAP(MultidimensionalOLAP,簡稱MOLAP)和混合型OLAP(HybridOLAP,簡稱HOLAP)三種類型。

ROLAP將分析要用的多維數據存儲在關係數據庫中,並根據應用的需要有選擇的定義一批實視圖也存儲在關係數據庫中

MOLAP將OLAP分析所要用到的多維數據物理上存儲爲多維數組的形式,形成“立方體”的結構。

HOLAP能把MOLAP和ROLAP兩種結構的優點有機的結合起來,能滿足用戶各種複雜的分析請求。

OLTP與OLAP的區別

OLTP於OLAP的區別
   OLTP OLAP
用戶 操作人員 決策人員
功能 日常操作 分析決策
DB設計 面向應用 面向主題
數據 當前的,最新的,細節的,二維的 歷史的,概括的,多維集成的,統一的
存取及規模 讀取少 大規模讀

 

事實表 

事實表是包含大量數據值的一種結構。事實數據表可能代表某次銀行交易,包含一個顧客的來訪次數,並且這些數字信息可以彙總,以提供給有關單位作爲歷史的數據。

每個數據倉庫都包含一個或者多個事實數據表。事實數據表只能包含數字度量字段和使事實表與維度表中對應項的相關索引字段.,該索引包含作爲外鍵的所有相關性維度表的主鍵。

事實數據表中的“度量值”有兩中:一種是可以累計的度量值,另一種是非累計的度量值。用戶可以通過累計度量值獲得彙總信息。

維度表

用來描述事實表的某個重要方面,維度表中包含事實表中事實記錄的特性:有些特性提供描述性信息,有些特性指定如何彙總事實數據表數據,以便爲分析者提供有用的信息,維度表包含幫助彙總數據的特性的層次結構

緩慢變化維:在實際情況下,維度的屬性並不是靜態的,它會隨着時間的流失發生緩慢的變化。

處理方法:

1新信息直接覆蓋舊信息,

2,保存多條記錄,並添加字段加以區分(用y,n;0,1,2或用時間來區別新舊記錄)

3.保存多條記錄,並添加字段加以區分

4.另外建表保存歷史記錄.

5混合模式

退化維

一般來說事實表中的外鍵都對應一個維表,維的信息主要存放在維表中。但是退化維僅僅是事實表中的一列,這個維的相關信息都在這一列中,沒有維表與之相關聯。比如:發票號,序列號等等。 
那麼退化維有什麼作用呢? 
1、退化維具有普通維的各種操作,比如:上卷,切片,切塊等

(上卷彙總,下鑽明細;切片,切塊:對二維數據進行切片,三維數據進行切塊,,可得到所需要的數據) 
2、如果存在退化維,那麼在ETL的過程將會變得容易。 
3、它可以讓group by等操作變得更快

粒度:(granularity)

是指數據倉庫的數據單位中保存數據的細化或綜合程度的級別,細化程度越高,粒度就越小。

鑽取:

首先從某一個彙總數據出發,查看組成該數據的各個成員數據。

KPI(Key Performance Indication)關鍵業績指標用來衡量業績好壞比如銷售這個主題,銷售增長率、銷售淨利潤就是一個KPI

E T L

extract/transformation/load尋找數據,整合數據,並將它們裝入數據倉庫的過程。

ETL是將業務系統的數據經過抽取、清洗轉換之後加載到數據倉庫的過程,目的是將企業中的分散、零亂、標準不統一的數據整合到一起,爲企業的決策提供分析的依據。

工作流 抽取,清洗,轉換,加載 數據流 業務系統ODS數據倉庫

一.抽取

方法有三種:

1.利用工具,例如datastage,informatic,OWB,DTS,SISS.

2,利用存儲過程.

3,前兩種工具結合.

抽取前的調研準備工作:

1.弄清數據是從哪幾個業務系統中來,各個業務系統的數據庫服務器運行什麼DBMS.

2.是否存在手工數據,手工數據量有多大。

3.是否存在非結構化的數據。

抽取中的數據處理方法:

  1. 業務系統服務器與DW的DBMS相同時,在DW數據倉庫服務器與原業條系統之間建立直接的鏈接關係就可以寫select語句直接訪問.

  2. 業務系統服務器與DW的DBMS不同時,對不能建立直接鏈接的話,可以將源數據導入.txt文件,在導入ODS中,或通過程序接口來完成.

  3. 對於文件類型數據源(.txt.xls)利用數據庫工程將這個數據導入指定的數據庫,如(oracle的SQL*LOADER,db2的import)

如何實現增量抽取

業務系統會記錄業務發生的時間,我們可以用來做增量的標誌,每次抽取之前首先判斷ODS中記錄最大的時間,然後根據這個時間去業務系統取大於這個時間所有的記錄。

二.清洗與轉換

清洗

數據清洗的任務是過濾那些不符合要求的數據,將過濾的結果交給業務主管部門,確認是否過濾掉還是由業務單位修正之後再進行抽取。

清洗的數據種類:

1,不完整數據,

2,錯誤數據,

3重複的數據.

轉換

1.不一致數據轉換:編碼轉換(m,f;男女);字段轉換(balance,bal);度量單位的轉換(cm,m)

2.數據粒度的轉換;業務系統數據存儲非常明細的數據,而數據倉庫中數據是用分析的,不需要非常明細,會將業務系統數據按照數據倉庫粒度進行聚合.

3.商務規則的計算.不同企業有不同的業務規則,不同的數據指標,在ETL過程,將這些數據計算好之後存儲在數據倉庫中,供分析使用(比如KPI)

三.加載經過前兩步處理後的數據可直接加載入數據倉庫

面試要點:

用過什麼ETL工具(informatica,ssis,owb,datastage),以及該工具簡單講述特點。

 DataStage是一套專門對多種操作數據源的數據抽取、轉換和維護過程進行簡化和自動化,並將其輸入數據集市或數據倉庫目標數據庫的集成工具。

它有四個組件:Administrator:用來管理project和環境變量。Manager:用於job,表定義,的引導,引出。Designer:用來設計job。Direct:用運查看job運行日誌。

星形模型與雪花模型的區別?

1.星形的中心是一個大的事實表,發散出來的是維度表,每一個維度表用一個PK-FK連接到事實表,維度表之間彼此並不關聯。一個事實表又包括一些度量值和維度。

2.雪花模型通過規範維度表來減少冗餘度,也就是說,維度表數據已經被分組成一個個的表而不是使用一個大表。例如產品表被分成了產品大類和產品小類兩個表。儘管這樣做可以節省了空間,但是卻增加了維度表的數量和關聯的外鍵的個數。這就導致了更復雜的查詢並降低了數據庫的效率。

有哪幾種模型設計方法?特點分別是什麼?

範式建模法(Third Normal Form,3NF)
範式建模法其實是我們在構建數據模型常用的一個方法,該方法的主要由 Inmon 所提倡,主要解決關係型數據庫得數據存儲,利用的一種技術層面上的方法。目前,我們在關係型數據庫中的建模方法,大部分採用的是三範式建模法。
範式是數據庫邏輯模型設計的基本理論,一個關係模型可以從第一範式到第五範式進行無損分解,這個過程也可稱爲規範化。在數據倉庫的模型設計中目前一般採用第三範式,它有着嚴格的數學定義。從其表達的含義來看,一個符合第三範式的關係必須具有以下三個條件 :
每個屬性值唯一,不具有多義性 ;
每個非主屬性必須完全依賴於整個主鍵,而非主鍵的一部分 ;
每個非主屬性不能依賴於其他關係中的屬性,因爲這樣的話,這種屬性應該歸到其他關係中去。
由於範式是基於整個關係型數據庫的理論基礎之上發展而來的,因此,本人在這裏不多做介紹,有興趣的讀者可以通過閱讀相應的材料來獲得這方面的知識。

根據 Inmon 的觀點,數據倉庫模型得建設方法和業務系統的企業數據模型類似。在業務系統中,企業數據模型決定了數據的來源,而企業數據模型也分爲兩個層次,即主題域模型和邏輯模型。同樣,主題域模型可以看成是業務模型的概念模型,而邏輯模型則是域模型在關係型數據庫上的實例。

從業務數據模型轉向數據倉庫模型時,同樣也需要有數據倉庫的域模型,即概念模型,同時也存在域模型的邏輯模型。這裏,業務模型中的數據模型和數據倉庫的模型稍微有一些不同。主要區別在於:
數據倉庫的域模型應該包含企業數據模型的域模型之間的關係,以及各主題域定義。數據倉庫的域模型的概念應該比業務系統的主題域模型範圍更加廣。
在數據倉庫的邏輯模型需要從業務系統的數據模型中的邏輯模型中抽象實體,實體的屬性,實體的子類,以及實體的關係等。
以筆者的觀點來看,Inmon 的範式建模法的最大優點就是從關係型數據庫的角度出發,結合了業務系統的數據模型,能夠比較方便的實現數據倉庫的建模。但其缺點也是明顯的,由於建模方法限定在關係型數據庫之上,在某些時候反而限制了整個數據倉庫模型的靈活性,性能等,特別是考慮到數據倉庫的底層數據向數據集市的數據進行彙總時,需要進行一定的變通才能滿足相應的需求。因此,筆者建議讀者們在實際的使用中,參考使用這一建模方式。
 

維度建模(dimensional modeling):

維度建模法,Kimball 最先提出這一概念。其最簡單的描述就是,按照事實表,維表來構建數據倉庫,數據集市。這種方法的最被人廣泛知曉的名字就是星型模式(Star-schema)。

上圖的這個架構中是典型的星型架構。星型模式之所以廣泛被使用,在於針對各個維作了大量的預處理,如按照維進行預先的統計、分類、排序等。通過這些預處理,能夠極大的提升數據倉庫的處理能力。特別是針對 3NF 的建模方法,星型模式在性能上佔據明顯的優勢。

雪花模型也是維度建模中的一種選擇。雪花模型的維度表可以擁有其他維度表的,雖然這種模型相比星型模型更規範一些,但是由於這種模型不太容易理解,維護成本比較高,而且性能方面需要關聯多層維表,性能也比星型模型要低。所以一般不是很常用。雪花模型如下圖

同時,維度建模法的另外一個優點是,維度建模非常直觀,緊緊圍繞着業務模型,可以直觀的反映出業務模型中的業務問題。不需要經過特別的抽象處理,即可以完成維度建模。這一點也是維度建模的優勢。

但是,維度建模法的缺點也是非常明顯的,由於在構建星型模式之前需要進行大量的數據預處理,因此會導致大量的數據處理工作。而且,當業務發生變化,需要重新進行維度的定義時,往往需要重新進行維度數據的預處理。而在這些與處理過程中,往往會導致大量的數據冗餘。

另外一個維度建模法的缺點就是,如果只是依靠單純的維度建模,不能保證數據來源的一致性和準確性,而且在數據倉庫的底層,不是特別適用於維度建模的方法。

因此以筆者的觀點看,維度建模的領域主要適用與數據集市層,它的最大的作用其實是爲了解決數據倉庫建模中的性能問題。維度建模很難能夠提供一個完整地描述真實業務實體之間的複雜關係的抽象方法。

實體建模法
實體建模法並不是數據倉庫建模中常見的一個方法,它來源於哲學的一個流派。從哲學的意義上說,客觀世界應該是可以細分的,客觀世界應該可以分成由一個個實體,以及實體與實體之間的關係組成。那麼我們在數據倉庫的建模過程中完全可以引入這個抽象的方法,將整個業務也可以劃分成一個個的實體,而每個實體之間的關係,以及針對這些關係的說明就是我們數據建模需要做的工作。

雖然實體法粗看起來好像有一些抽象,其實理解起來很容易。即我們可以將任何一個業務過程劃分成 3 個部分,實體,事件和說明,如下圖所示:

我們使用的抽象歸納方法其實很簡單,任何業務可以看成 3 個部分:

實體,主要指領域模型中特定的概念主體,指發生業務關係的對象。
事件,主要指概念主體之間完成一次業務流程的過程,特指特定的業務過程。
說明,主要是針對實體和事件的特殊說明。
由於實體建模法,能夠很輕鬆的實現業務模型的劃分,因此,在業務建模階段和領域概念建模階段,實體建模法有着廣泛的應用。從筆者的經驗來看,再沒有現成的行業模型的情況下,我們可以採用實體建模的方法,和客戶一起理清整個業務的模型,進行領域概念模型的劃分,抽象出具體的業務概念,結合客戶的使用特點,完全可以創建出一個符合自己需要的數據倉庫模型來。

但是,實體建模法也有着自己先天的缺陷,由於實體說明法只是一種抽象客觀世界的方法,因此,註定了該建模方法只能侷限在業務建模和領域概念建模階段。因此,到了邏輯建模階段和物理建模階段,則是範式建模和維度建模發揮長處的階段。

因此,筆者建議讀者在創建自己的數據倉庫模型的時候,可以參考使用上述的三種數據倉庫得建模方法,在各個不同階段採用不同的方法,從而能夠保證整個數據倉庫建模的質量。
 

什麼叫查找表,爲什麼使用替代鍵?(其實目的和上面一樣,從基礎表到緩慢維度表的過程中的一種實現途徑)

替代鍵(alternate key)可以是數據表內不作爲主鍵的其他任何列,只要該鍵對該數據表唯一即可。換句話說,在唯一列內不允許出現數據重複的現象。

數據倉庫項目最重要或需要注意的是什麼,以及如何處理?

數據質量,主要是數據源數據質量分析,數據清洗轉換,當然也可以定量分析

數據倉庫有兩個重要目的,一是數據集成,二是服務BI 
數據準確性是數據倉庫的基本要求,而效率是項目事實的前提,數據質量、運行效率和擴展性是數據倉庫項目設計、實施高明與否的三大標誌;

代理鍵:

在關係型數據庫設計中,是在當資料表中的候選鍵都不適合當主鍵時,例如資料太長,或是意義層面太多,就會用一個attribute來當代理主鍵,此主鍵可能是用流水號,來代替可辨識唯一值的主鍵

在數據倉庫領域有一個概念叫Surrogate key,中文一般翻譯爲“代理關鍵字”。代理關鍵字一般是指維度表中使用順序分配的整數值作爲主鍵,也稱爲“代理鍵”。代理關鍵字用於維度表和事實表的連接。可以避免通過主鍵的值就可以瞭解一些業務信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章