基于可復(fù)用構(gòu)件思想的ETL架構(gòu)設(shè)計
基于此,這里研究了基于構(gòu)件的思想,設(shè)計并實現(xiàn)了可重用的ETL架構(gòu),經(jīng)北京銀聯(lián)、江蘇銀聯(lián)、浙江銀聯(lián)籌10家銀聯(lián)省級分公司的數(shù)據(jù)倉庫項目實際應(yīng)用,表明該架構(gòu)是有效的。
1 基于可復(fù)用構(gòu)件思想的ETL架構(gòu)設(shè)計
1.1 設(shè)計思想
基于構(gòu)件技術(shù)的軟件復(fù)用提倡以已有的工作為基礎(chǔ),充分利用過去工作中積累的知識和經(jīng)驗,將已經(jīng)辨識的具有相對獨立功能的構(gòu)件應(yīng)用于新系統(tǒng)的開發(fā),保證新系統(tǒng)開發(fā)的過程中,能夠?qū)⒅攸c集中于辨識和實現(xiàn)應(yīng)用系統(tǒng)特有的構(gòu)成成分,最終縮短系統(tǒng)開發(fā)周期,提高系統(tǒng)的質(zhì)量。
基于構(gòu)件技術(shù)的軟件復(fù)用的核心思想包括如下幾個方面:
(1)構(gòu)件化設(shè)計。通過系統(tǒng)地分析一類相似或相近的數(shù)據(jù)倉庫項目,識別出其共同特征和可變特征,并對這些特征進(jìn)行抽象,形成領(lǐng)域分析模型,并據(jù)此進(jìn)一步識別出可復(fù)用的構(gòu)件。
(2)層次化設(shè)計。層次化設(shè)計可以提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性。通過層次化設(shè)計可以將所有識別的構(gòu)件按一定的規(guī)則(如抽象級別、處理對象和處理的功能)分類管理,然后以分層的形式來組織,進(jìn)而確定不同層構(gòu)件之間的交互方式,保證每個構(gòu)件的變化只涉及它的鄰近兩層的相關(guān)構(gòu)件,實現(xiàn)系統(tǒng)一定程度上的開放性。
(3)接口化設(shè)計。不同層次的構(gòu)件之間需要溝通,溝通需要規(guī)范,通過規(guī)范的接口可實現(xiàn)構(gòu)件之間溝通的規(guī)范化。接口只制定規(guī)范,具體實現(xiàn)交由構(gòu)件內(nèi)部完成。接口化設(shè)計將構(gòu)件的差異放到實現(xiàn)階段,而不是在設(shè)計階段,使得設(shè)計階段可以致力于軟件架構(gòu)設(shè)計的完整性和復(fù)用性,使得不同系統(tǒng)之間處理的差異通過替換構(gòu)件而無需變動架構(gòu)就可得到解決。
1.2 ETL架構(gòu)模型設(shè)計
基于可復(fù)用構(gòu)件思想的ELT架構(gòu)(如圖1所示)主要分成基礎(chǔ)服務(wù)層、抽取層、集成轉(zhuǎn)換層、特殊處理層四個層次,每個層次的功能如下所述。
1.2.1 抽取層
抽取層構(gòu)件位于ETL架構(gòu)的最底層,直接面對數(shù)據(jù)源,完成數(shù)據(jù)抽取階段的工作。鑒于數(shù)據(jù)倉庫數(shù)據(jù)源差異性大的特點,這個層的ETL構(gòu)件在不同數(shù)據(jù)倉庫間差異很大,可重用程度總體上比較低。
1.2.2集成轉(zhuǎn)換層
集成轉(zhuǎn)換層構(gòu)件主要將抽取層抽取的數(shù)據(jù)轉(zhuǎn)換成格式規(guī)范、含義統(tǒng)一、質(zhì)量良好的數(shù)據(jù),并集成到數(shù)據(jù)倉庫中。由于是在兩個層接口構(gòu)件之間,所以集成轉(zhuǎn)換層構(gòu)件的輸入和輸出都要滿足層間接口構(gòu)件的約定,在相似數(shù)據(jù)倉庫項目之間的差異主要體現(xiàn)在業(yè)務(wù)處理規(guī)則上。集成轉(zhuǎn)換層為每類數(shù)據(jù)對象提供一類ETL處理構(gòu)件,同層構(gòu)件之間相對獨立,通過抽象各個相似數(shù)據(jù)倉庫項目業(yè)務(wù)規(guī)則,將其封裝在構(gòu)件內(nèi),保證ETL架構(gòu)在相似數(shù)據(jù)倉庫之間移植時,只要通過配置業(yè)務(wù)規(guī)則,ETL構(gòu)件即可投入使用。
1.2.3特殊處理層
為了保證后續(xù)功能開發(fā)者可以將注意力放在功能關(guān)注的指標(biāo)上,而不要關(guān)心指標(biāo)的具體口徑,更不要擔(dān)心指標(biāo)口徑變化和指標(biāo)口徑在相似數(shù)據(jù)倉庫項目之間的差異對功能移植造成不利影響,在集成轉(zhuǎn)換層構(gòu)件處理的基礎(chǔ)上,專門增加了特殊處理層,負(fù)責(zé)將數(shù)據(jù)倉庫中按流水交易形式組織的數(shù)據(jù)換算成按KPI組織的形式。
1.2.4 基礎(chǔ)服務(wù)層
為了給ETL提供一個相對穩(wěn)定和靈活的架構(gòu),在元數(shù)據(jù)管理的構(gòu)件識別的基礎(chǔ)上引入了基礎(chǔ)服務(wù)層,擴(kuò)展了傳統(tǒng)意義上的元數(shù)據(jù)管理的功能,包含元數(shù)據(jù)管理構(gòu)件、層間接口構(gòu)件、KPI自動測試構(gòu)件三大類:這些構(gòu)件構(gòu)成了ETL基礎(chǔ)和骨架,為系統(tǒng)的穩(wěn)定性和適應(yīng)性奠定了基礎(chǔ)。
(1)元數(shù)據(jù)管理構(gòu)件。元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),元數(shù)據(jù)管理構(gòu)件主要完成ETL子系統(tǒng)中元數(shù)據(jù)管理模塊的功能,具體分成三小類,分別是負(fù)責(zé)維護(hù)數(shù)據(jù)倉庫架構(gòu)的維護(hù)類構(gòu)件、負(fù)責(zé)維護(hù)業(yè)務(wù)規(guī)則的維護(hù)類構(gòu)件和調(diào)度類構(gòu)件。
(2)層間接口構(gòu)件。為了在各個數(shù)據(jù)倉庫項目之間平穩(wěn)的移植ETL,在此設(shè)計了層間接口構(gòu)件。從抽象層面上為各數(shù)據(jù)倉庫項目提供一個相同的ETL處理框架,為ETL處理過程各層次的各種功能構(gòu)件提供接口,實現(xiàn)構(gòu)件具體處理過程對架構(gòu)的透明化,為系統(tǒng)功能擴(kuò)展留下了余地。
(3)KPI(關(guān)鍵績效指標(biāo))自動測試構(gòu)件。測試無疑是保證系統(tǒng)質(zhì)量的一個重要方法,ETL也不例外,但是,ETL過程測試和一般的軟件測試在測試過程、測試方法、評價標(biāo)準(zhǔn)等方面都有比較大的不同,它是一個非常繁瑣、工作量巨大、有一定規(guī)律的過程。
從抽象層面上看,一類相似或相近的數(shù)據(jù)倉庫項目每個KPI(關(guān)鍵績效指標(biāo))的維度組合是相對固定的,測試標(biāo)準(zhǔn)和過程是一致的,所以,在ETL架構(gòu)中,專門提供了KPI自動測試類構(gòu)件,為每類KPI提供一個自動測試構(gòu)件,其基本處理邏輯如圖2所示。
該類構(gòu)件能夠快速發(fā)現(xiàn)ETL架構(gòu)中集成層和轉(zhuǎn)換層中相關(guān)構(gòu)件數(shù)據(jù)處理過程中隱藏的問題,從而降低ETL過程測試的難度和工作量,大幅度提高ETL架構(gòu)的效率和質(zhì)量。
2銀聯(lián)統(tǒng)計分析系統(tǒng)ETL構(gòu)件識別與架構(gòu)設(shè)計
為了說明基于可重用構(gòu)建思想的ETL架構(gòu)的有效性,下面介紹該架構(gòu)在多家銀聯(lián)統(tǒng)計分析系統(tǒng)中的實際應(yīng)用。
2.1 銀聯(lián)統(tǒng)計分析系統(tǒng)的介紹
銀聯(lián)統(tǒng)計分析系統(tǒng)是建立在數(shù)據(jù)倉庫基礎(chǔ)上的,為銀聯(lián)各分公司領(lǐng)導(dǎo)提供決策輔助信息的系統(tǒng)。其目的是為了更深入應(yīng)用銀聯(lián)積累的大量跨行交易數(shù)據(jù),是為了促進(jìn)分公司、銀行、金融監(jiān)管機(jī)構(gòu)和行業(yè)客戶對業(yè)務(wù)進(jìn)行全面、及時、準(zhǔn)確的分析和定位,及時了解業(yè)務(wù)發(fā)展動態(tài)和預(yù)測,及時解決業(yè)務(wù)發(fā)展中存在的問題。
銀聯(lián)在全國有37家省級分公司。各分公司所關(guān)心的數(shù)據(jù)內(nèi)容,關(guān)注的KPI體系,KPI的評價標(biāo)準(zhǔn)都是一致的。但是,各分公司由于當(dāng)?shù)亟?jīng)濟(jì)發(fā)展水平不同,銀行卡應(yīng)用深度不同,導(dǎo)致各分公司業(yè)務(wù)種類差異很大,即使是同一種業(yè)務(wù),其成熟程度、規(guī)范程度差異也很大,體現(xiàn)在數(shù)據(jù)上就是數(shù)據(jù)源的種類不一致,即使是相同的業(yè)務(wù)數(shù)據(jù)源,在數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)判斷規(guī)則、數(shù)據(jù)表現(xiàn)形式方面也有很大差異性。
這種共性大差異性也大的多個數(shù)據(jù)倉庫系統(tǒng),設(shè)計上選用可重用性構(gòu)件的思想來指導(dǎo)ETL的架構(gòu)設(shè)計,實現(xiàn)上采用自己開發(fā)的擁有自動知識產(chǎn)權(quán)決策支持系統(tǒng)產(chǎn)品:數(shù)據(jù)挖掘商業(yè)應(yīng)用平臺(Compass)。該平臺包括智能流程管理子系統(tǒng)、報表專家子系統(tǒng)、多維分析子系統(tǒng)、數(shù)據(jù)挖掘子系統(tǒng)四個部分。其中智能流程子系統(tǒng)是一個獨立的ETL開發(fā)工具,能夠支持基于可復(fù)用構(gòu)件思想ETL過程的實現(xiàn)。
2.2 銀聯(lián)統(tǒng)計分析系統(tǒng)ETL構(gòu)件分層識別
在銀聯(lián)統(tǒng)計分析系統(tǒng)ETL設(shè)計階段,依據(jù)圖1所示的ETL架構(gòu)和設(shè)計思想來設(shè)計和組織ETL各處理階段可重用構(gòu)件以及構(gòu)件之間的接口規(guī)則:
(1)抽取層。銀聯(lián)統(tǒng)計分析系統(tǒng)抽取層處理的數(shù)據(jù)主要三類:業(yè)務(wù)數(shù)據(jù)、維度數(shù)據(jù)、輔助數(shù)據(jù)。業(yè)務(wù)數(shù)據(jù)主要包括全流水、二次清分?jǐn)?shù)據(jù)、公共支付、固網(wǎng)支付、網(wǎng)上支付等業(yè)務(wù)交易數(shù)據(jù);維度數(shù)據(jù)主要包括商戶信息、機(jī)構(gòu)信息、終端信息、地區(qū)信息等;輔助數(shù)據(jù)主要是卡bin信息、發(fā)卡信息等。
銀聯(lián)統(tǒng)計分析系統(tǒng)這個層面的數(shù)據(jù)除了全流水?dāng)?shù)據(jù)外,其他的內(nèi)容在各個分公司表現(xiàn)形式、處理規(guī)則差異很大,封裝成構(gòu)件的價值不大,所以這個層面可以識別的構(gòu)件只有全流水抽取。
(2)集成轉(zhuǎn)換層。鑒于各分公司統(tǒng)計分析系統(tǒng)所關(guān)心的數(shù)據(jù)內(nèi)容,關(guān)注的KPI體系,關(guān)注的維度數(shù)據(jù)(商戶、機(jī)構(gòu)、終端)信息相似度很高,所以這個層面可以識別的構(gòu)件比較多,主要有兩大類:流水?dāng)?shù)據(jù)集成轉(zhuǎn)換構(gòu)件;維度類數(shù)據(jù)集成轉(zhuǎn)換構(gòu)件,具體包括商戶、機(jī)構(gòu)、終端、商戶類別、地區(qū)信息的集成轉(zhuǎn)換構(gòu)件。
輔助數(shù)據(jù)因為類型多樣,差異比較大,可重用價值不高,所以不對其識別構(gòu)件。
(3)特殊處理層。銀聯(lián)統(tǒng)計分析系統(tǒng)的特殊處理層的構(gòu)件不再按照數(shù)據(jù)類別識別,而是根據(jù)每個指標(biāo)的使用頻率、涉及數(shù)據(jù)記錄數(shù)的多少識別三類構(gòu)件:交易指標(biāo)類構(gòu)件、調(diào)賬指標(biāo)類構(gòu)件、維度統(tǒng)計指標(biāo)類構(gòu)件,分別負(fù)責(zé)交易類指標(biāo)、調(diào)賬類指標(biāo)、商戶和終端發(fā)展情況的統(tǒng)計。
(4)基礎(chǔ)服務(wù)層。各分公司銀聯(lián)統(tǒng)計分析系統(tǒng)對元數(shù)據(jù)管理要求基本一致且沒有特殊要求,銀聯(lián)統(tǒng)計分析系統(tǒng)將其識別為元數(shù)據(jù)管理構(gòu)件。
考慮到銀聯(lián)統(tǒng)計分析系統(tǒng)處理的數(shù)據(jù)對象基本一致,差異主要體現(xiàn)在數(shù)據(jù)的表現(xiàn)形式和處理規(guī)則上,加上ETL過程構(gòu)件之間傳遞數(shù)據(jù)量很大,這里選用數(shù)據(jù)池的形式而不采用函數(shù)調(diào)用的形式來定義構(gòu)件接口。例如,所有分公司對商戶關(guān)注的信息都是一樣的,但是每個分公司提供的商戶信息的表現(xiàn)形式卻各不相同,抽取層接口數(shù)據(jù)池通過約定抽取層商戶信息抽取過程生成內(nèi)容和格式,為集成轉(zhuǎn)換層商戶信息集成轉(zhuǎn)換構(gòu)件提供一個穩(wěn)定的數(shù)據(jù)源,使其不必關(guān)心用戶提供的數(shù)據(jù)源是什么形式。
考慮到銀聯(lián)統(tǒng)計分析系統(tǒng)關(guān)注的指標(biāo)繁多,一次性全部識別成控件難度和工作量都很大。所以,首先識別并封裝最重要的、最常用的交易類指標(biāo)的自動測試構(gòu)建;然后是調(diào)帳指標(biāo)和維度統(tǒng)計指標(biāo)的自動測試構(gòu)件的識別和封裝。
2.3 銀聯(lián)統(tǒng)計分析系統(tǒng)ETL架構(gòu)設(shè)計
基于可復(fù)用構(gòu)件思想銀聯(lián)統(tǒng)計分析系統(tǒng)ETL架構(gòu)具體包含六個功能模塊(如圖3所示)包括:元數(shù)據(jù)抽取模塊、可重用構(gòu)件選擇和導(dǎo)入模塊、數(shù)據(jù)倉庫架構(gòu)自動維護(hù)模塊、ETL過程定義模塊、ETL調(diào)度模塊、ETL構(gòu)件生成模塊。各個模塊的具體功能分工如下:
(1)元數(shù)據(jù)抽取模塊。這個模塊主要完成兩項工作:抽取銀聯(lián)業(yè)務(wù)數(shù)據(jù)和維度數(shù)據(jù)元數(shù)據(jù),并在此基礎(chǔ)上對系統(tǒng)進(jìn)行更精確的定義,例如銀聯(lián)各類數(shù)據(jù)源提供的時間周期、銀聯(lián)數(shù)據(jù)倉庫數(shù)據(jù)保留的時間和備份頻率等信息。
(2)可重用構(gòu)件的選擇和導(dǎo)入模塊。在銀聯(lián)統(tǒng)計分析系統(tǒng)的分析和設(shè)計階段,已經(jīng)識別了抽取層、集成轉(zhuǎn)換層等各層有重用價值的構(gòu)件。為了管理和重用這些構(gòu)件,構(gòu)件選擇和導(dǎo)入模塊的功能有兩個:第一,從銀聯(lián)構(gòu)件庫中抽取已經(jīng)封裝的全流水交易數(shù)據(jù)抽取構(gòu)件、集成轉(zhuǎn)換構(gòu)件、KPI轉(zhuǎn)換構(gòu)件、維度類數(shù)據(jù)集成轉(zhuǎn)換構(gòu)件(包括商戶、機(jī)構(gòu)、終端、商戶類別、地區(qū)信息五類構(gòu)件)、KPI自動測試類構(gòu)件,將其導(dǎo)入到ETL過程庫,按照ETL架構(gòu)(見圖1)對導(dǎo)人的構(gòu)件分層組織,生成系統(tǒng)的ETL過程框架(如圖4(a)所示),圖4(a)中的ETL過程鏈中三個JOB節(jié)點分別對應(yīng)ETL架構(gòu)(見圖1)中的抽取層、數(shù)據(jù)集成轉(zhuǎn)換層、特殊處理層,圖4(b)~(d)分別對應(yīng)各導(dǎo)人構(gòu)件(一個JOB節(jié)點代表一個導(dǎo)人構(gòu)件的處理過程)在這三個層次中的組織形式。第二,模塊可根據(jù)新項目銀聯(lián)分公司特殊業(yè)務(wù)規(guī)則和指標(biāo)口徑配置每個構(gòu)件的處理規(guī)則,將配置信息加入元數(shù)據(jù)庫中。
(3)數(shù)據(jù)倉庫架構(gòu)自動維護(hù)模塊。數(shù)據(jù)倉庫架構(gòu)自動維護(hù)模塊主要功能是依據(jù)元數(shù)據(jù)庫中的信息,為銀聯(lián)統(tǒng)計分析系統(tǒng)完成數(shù)據(jù)倉庫的創(chuàng)建和初始化工作,完成事實表、維度表創(chuàng)建,完成每個構(gòu)件需要的配置表、中間表和臨時表的建立等工作,而這些原本需要用手工來實現(xiàn)和維護(hù)的。
(4)ETL過程定義模塊。在初始框架的基礎(chǔ)上,可通過ETL定義模塊可視化地定義構(gòu)件庫中沒有可重用構(gòu)件的ETL過程,例如手續(xù)費和品牌費抽取、商戶信息抽取(如圖5所示)、終端信息過程等,使整個銀聯(lián)統(tǒng)計分析系統(tǒng)的ETL趨于完善。
(5)ETL調(diào)度模塊。ETL調(diào)度模塊可以根據(jù)系統(tǒng)的調(diào)度設(shè)置,執(zhí)行ETL過程庫中的ETL過程,實現(xiàn)數(shù)據(jù)抽取、轉(zhuǎn)換、加載、換算等工作。
(6)可重用構(gòu)件生成模塊。對于新定義的ETL過程,若可重用價值高,可通過ETL構(gòu)件生成模塊從ETL過程庫中抽取相應(yīng)ETL處理過程包裝成可重用構(gòu)件??芍赜脴?gòu)件一般包括以下內(nèi)容:ETL處理過程、配置過程說明文檔、相關(guān)表(配置表、中間表和臨時表)的信息、初始化數(shù)據(jù)、特殊規(guī)則配置功能界面,構(gòu)件這些構(gòu)成部分由ETL構(gòu)件生成模塊分別存入到構(gòu)件庫中相關(guān)表中。
3 結(jié) 語
這里介紹了一個基于可復(fù)用構(gòu)件思想的ETL架構(gòu),以北京銀聯(lián)、江蘇銀聯(lián)、浙江銀聯(lián)等10家省級銀聯(lián)統(tǒng)計分析系統(tǒng)為例,介紹了該架構(gòu)各層構(gòu)件的識別過程,設(shè)計了ETL模塊構(gòu)成以及各模塊主要功能。該架構(gòu)已經(jīng)在10家省級銀聯(lián)分公司的統(tǒng)計分析系統(tǒng)的ETL構(gòu)建中應(yīng)用,實踐表明該架構(gòu)是有效的,它能夠在比較短的時間內(nèi)完成統(tǒng)計分析系統(tǒng)的構(gòu)建,可有效縮短系統(tǒng)的開發(fā)周期,大幅度降低各分公司的時間成本和資金成本,對于推動數(shù)據(jù)倉庫和商業(yè)智能在銀聯(lián)各個省級分公司的應(yīng)用有顯著意義和使用價值。