ETL架構(gòu)中考慮的六個(gè)關(guān)鍵因素
2024-07-21 02:45:09
供稿:網(wǎng)友
原文地址:http://intelligent-enterPRise.informationweek.com/showArticle.jhtml?articleID=220600174&pgno=1
設(shè)計(jì)一個(gè)數(shù)據(jù)倉(cāng)庫(kù)ETL架構(gòu)中有些關(guān)鍵因素是我們應(yīng)該必須關(guān)注?它將決定整個(gè)數(shù)據(jù)倉(cāng)庫(kù)ETL架構(gòu)的成本、復(fù)雜性、甚至最后數(shù)據(jù)倉(cāng)庫(kù)的成敗。本文闡述了六個(gè)關(guān)鍵因素。
是否應(yīng)該使用集成的ETL工具?
在哪個(gè)階段整合數(shù)據(jù),如何做數(shù)據(jù)整合?
選擇哪種變化數(shù)據(jù)捕獲機(jī)制?
是否需要設(shè)置Staging Area
哪個(gè)階段應(yīng)該進(jìn)行數(shù)據(jù)質(zhì)量控制?
數(shù)據(jù)的加載頻率?
是否應(yīng)該使用集成的ETL工具?
在ETL系統(tǒng)架構(gòu)中首先需要考慮的一個(gè)基本因素是應(yīng)該使用手工寫(xiě)ETL代碼方式還是采用集成的ETL工具。它不簡(jiǎn)單是技術(shù)和license的問(wèn)題。架構(gòu)應(yīng) 該從更加長(zhǎng)遠(yuǎn)的角度考慮,它將會(huì)影響我們整個(gè)的ETL環(huán)境、設(shè)計(jì)方法、元數(shù)據(jù)管理策略、實(shí)施的周期等等。
目前,基于ETL系統(tǒng)的規(guī)模和管理角度考慮,大部分ETL架構(gòu)應(yīng)該考慮使用集成的ETL工具,集成的工具采用圖形化、拖 拽組件的方式進(jìn)行ETL開(kāi)發(fā)。然 而,一些老的開(kāi)發(fā)人員更愿意使用直接寫(xiě)存儲(chǔ)過(guò)程或是其他代碼的形式實(shí)現(xiàn)ETL功能,它們更熟悉編程語(yǔ)言,認(rèn)為這種方式更好。
ETL工具并不會(huì)從一開(kāi)始就帶來(lái)顯著的好處,它的優(yōu)點(diǎn)會(huì)在數(shù)據(jù)倉(cāng)庫(kù)不斷的迭代實(shí)施中逐漸顯現(xiàn)。使用ETL工具將會(huì)在可維護(hù)性、文檔化、元數(shù)據(jù)方面獲益不少。
我的觀點(diǎn):在以前工作實(shí)施的項(xiàng)目中使用過(guò)兩個(gè)ETL工具-DataStage和Sagent。ETL 工具主要有以下幾方面的優(yōu)勢(shì):在性能方面主要表現(xiàn)在并行、流水線(xiàn)技術(shù)、靈活的分區(qū)技術(shù);較好的元數(shù)據(jù)管理,現(xiàn)在的ETL工具大部分基于元數(shù)據(jù)開(kāi)發(fā),所有 MAPPING和ETL的血緣關(guān)系自動(dòng)生成,自動(dòng)維護(hù),多數(shù)據(jù)源支持:可以支持不同類(lèi)型的源系統(tǒng)和目標(biāo)系統(tǒng)的抽取和加載。但是它也有其不足之處,就是受組 件功能所現(xiàn),不利于處理較為復(fù)雜的業(yè)務(wù)邏輯,數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)中的業(yè)務(wù)邏輯往往較為復(fù)雜,程序語(yǔ)言這時(shí)就體現(xiàn)出他的先天優(yōu)勢(shì)-靈活性。在國(guó)內(nèi)往往是兩者結(jié)合起 來(lái)在數(shù)據(jù)倉(cāng)庫(kù)中應(yīng)用比較好,在ETL的抽取、和數(shù)據(jù)整合階段,涉及業(yè)務(wù)邏輯較為簡(jiǎn)單,選擇使用ETL工具;而在偏分析應(yīng)用的數(shù)據(jù)處理ETL層使用編寫(xiě) ETL代碼方式更為合適。
在哪個(gè)階段整合數(shù)據(jù),如何做數(shù)據(jù)整合?
數(shù)據(jù)整合對(duì)于IT來(lái)說(shuō)是個(gè)大的話(huà)題,它的終極目標(biāo)是所有系統(tǒng)都無(wú)縫地整合在一起。企業(yè)有一個(gè)全局的、統(tǒng)一的視角分析數(shù) 據(jù)。在許多時(shí)候,本應(yīng)該在事務(wù)交易系 統(tǒng)中就應(yīng)該整合的數(shù)據(jù),被強(qiáng)推在數(shù)據(jù)倉(cāng)庫(kù)中處理。整合的最大關(guān)鍵問(wèn)題,是我們需要知道哪些應(yīng)該整合在一起,整合的程度。整合的粒度必須要符合實(shí)際的業(yè)務(wù)規(guī) 則要求,在實(shí)際中,往往不同部門(mén)確實(shí)對(duì)于同一個(gè)數(shù)據(jù)有不同的統(tǒng)計(jì)業(yè)務(wù)規(guī)則需求,我們是不能進(jìn)行整合的。按照維度建模的思想,整合的目標(biāo)是一致的維度和一致 的事實(shí)。一致的維度意味著整合整合后,不同的部門(mén),系統(tǒng)的人員從分析數(shù)據(jù)的角度、粒度是一樣的;一致的事實(shí)意味著指標(biāo)數(shù)據(jù)算法的統(tǒng)一。
我的觀點(diǎn):我們?cè)谶M(jìn)行數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)整合的過(guò)程中,可以基于從兩方面進(jìn)行整合:邏輯上的整合和物理上的整合。我們?cè)谶壿嬌?可以從企業(yè)的全局視角,而不以非常 詳細(xì)的業(yè)務(wù)系統(tǒng)流程為對(duì)象進(jìn)行實(shí)體抽象,抓住不同系統(tǒng)間的本質(zhì),進(jìn)行一定的邏輯抽象,而做到邏輯上的整合。在物理實(shí)現(xiàn)上,根據(jù)具體業(yè)務(wù)規(guī)則,能整合的源系 統(tǒng)進(jìn)行整合處理,不能整合的可以進(jìn)行個(gè)性化物理實(shí)現(xiàn)。
選擇哪種變化數(shù)據(jù)捕獲機(jī)制?
數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)在初始加載后,不管從效率、時(shí)間窗口考慮,ETL系統(tǒng)都不可能處理全量數(shù)據(jù)。增量數(shù)據(jù)如何捕獲就是一個(gè)ETL系統(tǒng)重要的能力。增量數(shù)據(jù)捕獲聽(tīng)起來(lái)簡(jiǎn)單,但是它卻是一個(gè)非常復(fù)雜的事情。必須根據(jù)源系統(tǒng)的狀況,數(shù)據(jù)量的情況采用不同的策略,
目前常見(jiàn)的策略有:
時(shí)間戳的的方式:源系統(tǒng)必須記錄了表中記錄的最新更新的時(shí)間,根據(jù)更新時(shí)間進(jìn)行抽取。
日志解析:解析數(shù)據(jù)庫(kù)系統(tǒng)的日志文件,獲取當(dāng)天在數(shù)據(jù)庫(kù)上發(fā)生的操作,而捕獲變化數(shù)據(jù)。
文本比較:前后兩天的數(shù)據(jù)進(jìn)行全文本比較,其中根據(jù)業(yè)務(wù)邏輯的需要可以采用部分字段比較和HASH比較的方式。
源系統(tǒng)記錄方式:在源系統(tǒng)中建立觸發(fā)器,或者應(yīng)用系統(tǒng)直接記錄變化數(shù)據(jù)的情況。這種情況對(duì)源系統(tǒng)依賴(lài)極大,簡(jiǎn)單,但是,很難實(shí)施 。
是否需要設(shè)置Staging Area
目前許多ETL工具支持不落地的流水線(xiàn)數(shù)據(jù)處理,數(shù)據(jù)直接處理完成進(jìn)入最后的目標(biāo)表。從性能上看,它確實(shí)是一個(gè)不錯(cuò)的選擇。但是它有可能不是一種最好的處理策略,以下幾種情況,數(shù)據(jù)登臺(tái)區(qū)還是有必要的。
一些CDC(change data capture)工具需要進(jìn)行兩份不同時(shí)間數(shù)據(jù)的比較。
一些組織選擇使用數(shù)據(jù)登臺(tái)區(qū)進(jìn)行數(shù)據(jù)歸檔。
數(shù)據(jù)登臺(tái)區(qū)可以做到一次抽取,后面的ETL過(guò)程多次重運(yùn)行,重運(yùn)行不依賴(lài)于源系統(tǒng)的開(kāi)放程度。
長(zhǎng)時(shí)間的ETL處理過(guò)程,超過(guò)源系統(tǒng)開(kāi)放的時(shí)間窗口,為了對(duì)源系統(tǒng)影響小,可以先抽取,而不做數(shù)據(jù)轉(zhuǎn)換。
Staging Area的可選擇的處理方式也有多種,在源系統(tǒng)時(shí)間窗口允許的情況下,可以選擇并行登臺(tái),數(shù)據(jù)Staging和轉(zhuǎn)換并行進(jìn)行。可兼顧效率和上面1,2,3的好處。
哪個(gè)階段應(yīng)該進(jìn)行數(shù)據(jù)質(zhì)量控制?
數(shù)據(jù)質(zhì)量是在數(shù)據(jù)倉(cāng)庫(kù)中非常關(guān)注的一個(gè)問(wèn)題,他影響數(shù)據(jù)的可信度,甚至整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的可信度。數(shù)據(jù)質(zhì)量問(wèn)題不僅僅是數(shù)據(jù) 倉(cāng)庫(kù)團(tuán)隊(duì)的問(wèn)題,是整個(gè)企業(yè)IT系統(tǒng) 的問(wèn)題,但是往往這種問(wèn)題全部推給了數(shù)據(jù)倉(cāng)庫(kù)處理。我們又很難抉擇在哪個(gè)階段進(jìn)行數(shù)據(jù)質(zhì)量控制,如何進(jìn)行控制?進(jìn)行臟數(shù)據(jù)處理的策略主要有:
停止ETL過(guò)程,等待人工介入處理。
把臟數(shù)據(jù)reject到另外一個(gè)地方,再進(jìn)行處理。
將臟數(shù)據(jù)打上標(biāo)簽,建立一個(gè)錯(cuò)誤數(shù)據(jù)維度并按業(yè)務(wù)邏輯繼續(xù)處理。
第三中策略是目前為止較好的一種策略。他既不全面影響ETL過(guò)程調(diào)用,又可以根據(jù)業(yè)務(wù)邏輯的實(shí)際情況,在后面根據(jù)錯(cuò)誤數(shù)據(jù)的不同情況,分別處理,不影響業(yè)務(wù)數(shù)據(jù)的正確展現(xiàn)。
數(shù)據(jù)的加載頻率?
數(shù)據(jù)的加載頻率 是指與源系統(tǒng)相比,ETL系統(tǒng)延遲多久加載數(shù)據(jù)。這個(gè)因素應(yīng)該結(jié)合成本、業(yè)務(wù)需求考慮。數(shù)據(jù)加載的頻率對(duì)ETL架構(gòu)的成本和復(fù)雜性影響很大。采用何種策略 是和業(yè)務(wù)需求相關(guān)的,有些業(yè)務(wù)應(yīng)該要求能實(shí)時(shí)的分析數(shù)據(jù),而有很多應(yīng)該,并沒(méi)有這樣的要求。目前主要有三種加載策略:
實(shí)時(shí)加載
每天多次加載
每日一次加載
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/wsbupt/archive/2009/12/30/5109393.aspx