Data Vault玩轉數據倉庫(三)
在Data Vault 2.0版本里,其不只是針對數據倉庫的建模,同時也包含了架構,方法論以及實現。這篇挑幾個概念,附上我個人對其的理解。同時也把這個系列的名字改成《Data Vault玩轉數據倉庫》。
ETL和ELT
ELT火了有段時間,百度上高雅的介紹很多,不扯別的,咱直接來點俗的:
- E就是抽取,數據從源系統進入到數據倉庫的過程。
- T是指轉換,類型轉換,計算什么的都算在內。
- L加載,把結果加載到數據倉庫里。
- E和L可能從漢語的角度看有些像,如果說區別的話就是前者是從源系統到數據倉庫的,后者是數據倉庫內的折騰。
- ETL就是把數據從源系統抽取的過程中做轉換。
-- 缺點是這個過程也會消耗源系統的資源,可能對源系統造成影響,比如對方在做日結。
- ELT就是把數據先原封不動的放在DWH底層里,然后再在這個基礎上做轉換。
-- 這樣除了抽取消耗點源系統的資源,剩下的處理都是消耗數據倉庫的資源,降低對源系統的影響。
所以數據倉庫項目通常建議用ELT的方法,除非源系統的數據和壓力沒那么大。
STAGE和PSA
這個概念好多地方的解釋都不太一樣,以下是我個人的理解:
STAGE層負責整合,源系統的數據一對一的放在這里,比如你的數據倉庫是SQL Server,那么甭管源系統是Oracle還是MySQL,通過數據加載工具都變成SQL Server的加載到這里。
STAGE再往下就是PSA,跟STAGE不同的是PSA是要保留數據的歷史狀態的。關于如何保留目前主流有兩個方法,一個是基于SCD2的方法論,一個是INSERT ONLY的方法論。相對支持后者的比較多一些,主要是因為SCD2對于更新或者刪除數據的處理需要找到歷史的數據進行物理更新(UPDATE VALUT_TO_DATE),在數據量很大的時候性能影響很大。而INSERT ONLY的方法在后期查詢的時候會麻煩一些,因為它只有VALID_FROM_DATE,而沒有VALID_TO_DATE,所以在下游處理的時候就需要根據記錄的時間線把其算出來。
至于如何快速比對一個數據是否變化了,請參考我的上一篇。
我也見很多人在討論,有PSA了還需要DV嗎?這個我個人理解還是好比蓋高樓,業主著急住,但是電梯還沒裝,業主能住嗎?能,也不能。這個問題是同樣的道理。
自動化的工具
有什么工具可以基于配置來通過元數據以及數據建模的方式自動化生成Data Vault模型呢?
首先是大名鼎鼎的ERWin,從官網可以看到其對Data Vault的支持。業界老品牌,知名度高。這家公司在國內有雇員,所以感覺英文有壓力的話可以尋求他們的輔助。
在這個圈子里比較火的是WhereScape,也是海外廠商。主要是有Dan Linsted為其站臺。這個平臺目前我沒有發現中文的支持,所以跟這家公司溝通需要英文功底。
以上兩款工具都是商業軟件,沒有免費以及社區版本,就連試用版本(針對data vault自動化這部分)也沒有,特殊版本更不用說。授權和支持費用不低,但是考慮到項目總體成本的話還是很劃算的,比如在北京雇傭一個中級ETL開發,一年的成本差不多就夠這個軟件的授權和支持費用了。而如果不用這類工具,你的成本肯定不止一個程序員的成本。
再說開源的平臺,我個人一直在關注Roelant vos的開源項目,在github上很容易找到。我在做自己的自動化工具的時候也參考了他很多的想法和實現,比如handlebars的模板結合元數據自動生成代碼,還有DGML來可視化觀察數據的來龍去脈等。同時他的博客也不錯,在這個領域貢獻了很多內容,這個在我第一篇中也有提到。
---------------------------------------------------------------
aspnetx的BI筆記系列索引:
使用SQL Server Analysis Services數據挖掘的關聯規則實現商品推薦功能
---------------------------------------------------------------

浙公網安備 33010602011771號