數據倉庫之Data Vault模型總結


一,Data Vault模型有幾個主要的組件,這里先總結一下:

1.Hub組件,是一個數據表,用於記錄在業務應用中常用到的業務實體鍵值,如員工ID,發票號、客戶編號、車輛號等。

表內包括幾個關鍵字段:代理主鍵(Surrorgate Key),即hub表的主鍵;業務實體主鍵(Business Key),記錄業務鍵值;裝載時間(Load Data/Time Stamp),記錄該業務鍵值的記錄時間;數據源(Record Source),記錄該業務鍵值的來源,以追蹤數據。

 

                                                           
2.Link組件,通過存儲相關業務實體間Hub表的SK(Surrorgate Key),以記錄一對多、多對多的業務實體間關系,如員工與企業的雇佣關系,賬戶與客戶之間的關系等。

包括以下幾個關鍵字段:代理主鍵(Surrorgate Key),即Link表的主鍵;Hub1 SK…Hubn SK,與此Link相關的Hub表SK,記錄業務關系;裝載時間(Load Data/Time Stamp),記錄該業務關系的記錄時間;數據源(Record Source),記錄該業務關系的來源,以追蹤數據。

 

                                                       
3.Satellite組件,Hub表中業務主鍵所對應的業務描述,即業務實體的屬性信息,這些信息具有時效性,隨時間變化而可能產生變化,因此,Satellite組件內的記錄均具有時間維,可記錄實體屬性的歷史變化情況。根據實體屬性變化頻率的不同,可將一類實體的業務屬性分為若干Satellite表,通過向Satellite分表追加記錄,以實現在更小粒度下,實現第二類漸變維的保存歷史數據特性。

Satellite組件包括以下關鍵字段:代理主鍵(Surrorgate Key),即Satellite組件表的主鍵;Hub或Link表的主鍵,Satellite聯合主鍵之一,記錄該Satellite組件所屬Hub或Link;裝載時間(Load Data/Time Stamp),Satellite聯合主鍵之一,記錄該描述信息在數倉中的有效時間;數據源(Record Source),記錄該描述信息的來源,以追蹤數據。

   

 

                                               

4.Point-In-Time輔助表,用於同一Hub的多個Satellite組件間的時間同步。因為同一業務實體的不同類型屬性的更新頻率不同,因此同一Hub的多個Satellite組件基本不會同步更新,因此,只需要在PIT表中記錄在同一時點同時有效的Satellite組件描述信息即可,以保證查詢到的數據是查詢時點的實體狀態。通過PIT表中的記錄,可以清晰的分析業務實體屬性的變化頻率及頻率差異。

                                               

 

                                                                               客戶姓名和地址之間的變化情況

PIT表用於解決多Satellite組件統一時點的問題,如果只有一個Satellite組件則不需要PIT表。

二,Data Vault與星型模型比較

1.星型模型容易產生數據孤立,不同主題間的數據不容易產生聯系,而且一旦模型確定,想要追加維度,涉及的調整范圍較大,靈活性不足;而Data Vault繼承了3NF的優點,可以從整體上描述企業的業務數據或信息結構,而且能夠實現數據模型的動態架構。

2.Hub組件與星型模型中的維度表非常相似:記錄了業務實體的維度信息的鍵值,但其它描述信息記錄在了Satellite組件中。

3.Link組件與星型模型中的事實表非常相似,只是沒有度量數據,因此可在原有Link組件的基礎上,追加度量數據,以記錄事實數據。

=》

 

 

4.Satellite組件的設計可以解決星型模型中多事實冗余的問題,由於Link本身具有多維的特性,因此通過在Link上追加度量信息的方式也同步解決了多維事實數據的問題。在向Link追加度量信息時,如果事實數據類型很多時,可以將度量信息按更新頻度或類型進行分類,然后分別存儲在多個Satellite組件中,以降低由於更新頻度不同等原因導致的事實數據冗余。方法是為Link表增加一個Link組件,用於存儲不同度量類型的主鍵關系,然后為建立對應的Satellite組件,以記錄事實數據。

                                      

                                             

                                                                 

 

   

5.由於hub和link的設計,可以使Data Vault模型的數據倉庫具有很好的擴展性,追加Hub和Link非常方便,也不用考慮粒度問題;Link的優勢在於每個Link都是追加在Link組件中的或者是增加一個新的Link來記錄新的關聯關系,而不需要更新Link的數據結構,這樣他的擴展性和靈活性就非常強,這一點與星型模型具有很大的區別。

6.理論上來說,Data Vault模型通過使用Satellite組件,減少了事實表的數據冗余(通過考慮不同變化率的數據而分別存儲),大大降低了存儲的數據量,能夠提升查詢性能,但因為Data Vault模型根據3NF對表進行了理細粒度的拆分,使查詢過程增加了連接操作,這方面的影響需要驗證,是否能夠突破理論,實現真實的性能提升,本人再起無法評論,需要實際應用的檢驗。

三,一些設計原則:

關於Hub:

1.Hub之間不能直接通過外鍵進行關聯,而必須通過Link聯接,以保證模型的靈活性和擴展性;

2.兩個或兩個以上的Hub都可以通過Link相聯;

3.Hub的鍵會出現在其它組件中(Link和Satellite)中,否則Hub數據將被孤立。

關於Link:

1.Link可以與其他Link相聯;

2.Hub主鍵固定,而不會發生變化;

關於Satellite:

1.Satellite必須存在關聯的Hub或Link才有意義,否則無效;

2.Satellite問題包含裝載時間,以記錄歷史數據,且沒有重復數據;

3.可根據更新頻率拆分Satellite;

 

 

Data Vault模型是由業務鍵(Hub)、業務關系(Link)、業務描述(Satellite)組成的

 


---------------------
作者:junweishiwo
來源:CSDN
原文:https://blog.csdn.net/junweishiwo/article/details/82838407
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM