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