[ETL] 基於可複用構件思想的ETL架構設計

[ETL] 基於可複用構件思想的ETL架構設計

數據倉庫數據來源常包含着噪聲數據、不完整數據、甚至不一致的數據。爲了得到高質量的數據,必須對抽取(Extract)出來的原始數據做一系列複雜轉換(Transform)處理,最後裝載(Load)到數據倉庫中。這種從原始數據到數據倉庫之間,對數據進行的操作稱爲ETL過程,其工作量大約佔系統的60%,實現ETL過程的效率和質量很大程度上決定了數據倉庫系統的構建效率和質量。目前研究ETL過程是集中於個案的研究,強調ETL系統的可擴展性和靈活性,對於如何在類相似或相近的數據倉庫項目中共享ETL過程的研究則很少,很大程度上阻礙了數據倉庫項目建設效率的進一步提高。如何在一類相似或相近的數據倉庫項目中發現其共同特徵、知識和需求,使得ETL過程可以在這些數據倉庫項目中被反覆使用,大幅度提高實現ETL過程的效率,從而提高數據倉庫構建的效率,研究該問題具有一定理論意義及實用價值。

基於此,這裏研究了基於構件的思想,設計並實現了可重用的ETL架構,經北京銀聯、江蘇銀聯、浙江銀聯籌10家銀聯省級分公司的數據倉庫項目實際應用明該架構是有效的。

1  基於可複用構件思想的ETL架構設計

1.1  設計思想    

基於構件技術軟件複用提倡以已有的工作爲基礎,充分利用過去工作中積累的知識和經驗,將已經辨識的具有相對獨立功能的構件應用於新系統的開發,保證新系統開發的過程中,能夠將重點集中於辨識和實現應用系統特有的構成成分,最終縮短系統開發週期,提高系統的質量。

基於構件技術的軟件複用的核心思想包括如下幾個方面:

(1)構件化設計。通過系統地分析一類相似或相近的數據倉庫項目,識別出其共同特徵和可變特徵,並對這些特徵進行抽象,形成領域分析模型,並據此進一步識別出可複用的構件。

(2)層次化設計。層次化設計可以提高系統的可擴展性和可維護性。通過層次化設計可以將所有識別的構件按一定的規則(如抽象級別、處理對象和處理的功能)分類管理,然後以分層的形式來組織,進而確定不同層構件之間的交互方式,保證每個構件的變化只涉及它的鄰近兩層的相關構件,實現系統一定程度上的開放性。

(3)接口化設計。不同層次的構件之間需要溝通,溝通需要規範,通過規範的接口可實現構件之間溝通的規範化。接口只制定規範,具體實現交由構件內部完成。接口化設計將構件的差異放到實現階段,而不是在設計階段,使得設計階段可以致力於軟件架構設計的完整性和複用性,使得不同系統之間處理的差異通過替換構件而無需變動架構就可得到解決

1.2  ETL架構模型設計

基於可複用構件思想的ELT架構(如圖1所示)主要分成基礎服務層、抽取層、集成轉換層、特殊處理層四個層次,每個層次的功能如下所述。



1.2.1  抽取層

抽取層構件位於ETL架構的最底層,直接面對數據源,完成數據抽取階段的工作。鑑於數據倉庫數據源差異性大的特點,這個層的ETL構件在不同數據倉庫間差異很大,可重用程度總體上比較低。

1.2.2集成轉換層

集成轉換層構件主要將抽取層抽取的數據轉換成格式規範、含義統一、質量良好的數據,並集成到數據倉庫中。由於是在兩個層接口構件之間,所以集成轉換層構件的輸入和輸出都要滿足層間接口構件的約定,在相似數據倉庫項目之間的差異主要體現在業務處理規則上。集成轉換層爲每類數據對象提供一類ETL處理構件,同層構件之間相對獨立,通過抽象各個相似數據倉庫項目業務規則,將其封裝在構件內,保證ETL架構在相似數據倉庫之間移植時,只要通過配置業務規則,ETL構件即可投入使用。

1.2.3特殊處理層

爲了保證後續功能開發者可以將注意力放在功能關注的指標上,而不要關心指標的具體口徑,更不要擔心指標口徑變化和指標口徑在相似數據倉庫項目之間的差異對功能移植造成不利影響,在集成轉換層構件處理的基礎上,專門增加了特殊處理層,負責將數據倉庫中按流水交易形式組織的數據換算成按KPI組織的形式。

1.2.4  基礎服務層

爲了給ETL提供一個相對穩定和靈活的架構,在元數據管理的構件識別的基礎上引入了基礎服務層,擴展了傳統意義上的元數據管理的功能,包含元數據管理構件、層間接口構件、KPI自動測試構件三大類:這些構件構成了ETL基礎和骨架,爲系統的穩定性和適應性奠定了基礎。

(1)元數據管理構件。元數據是關於數據的數據,元數據管理構件主要完成ETL子系統中元數據管理模塊的功能,具體分成三小類,分別是負責維護數據倉庫架構的維護類構件、負責維護業務規則的維護類構件和調度類構件。

(2)層間接口構件。爲了在各個數據倉庫項目之間平穩的移植ETL,在此設計了層間接口構件。從抽象層面上爲各數據倉庫項目提供一個相同的ETL處理框架,爲ETL處理過程各層次的各種功能構件提供接口,實現構件具體處理過程對架構的透明化,爲系統功能擴展留下了餘地。

(3)KPI(關鍵績效指標)自動測試構件。測試無疑是保證系統質量的一個重要方法,ETL也不例外,但是,ETL過程測試和一般的軟件測試在測試過程、測試方法、評價標準等方面都有比較大的不同,它是一個非常繁瑣、工作量巨大、有一定規律的過程。

從抽象層面上看,一類相似或相近的數據倉庫項目每個KPI(關鍵績效指標)的維度組合是相對固定的,測試標準和過程是一致的,所以,在ETL架構中,專門提供了KPI自動測試類構件,爲每類KPI提供一個自動測試構件,其基本處理邏輯如圖2所示。



該類構件能夠快速發現ETL架構中集成層和轉換層中相關構件數據處理過程中隱藏的問題,從而降低ETL過程測試的難度和工作量,大幅度提高ETL架構的效率和質量。

2銀聯統計分析系統ETL構件識別與架構設計

爲了說明基於可重用構建思想的ETL架構的有效性,下面介紹該架構在家銀聯統計分析系統中的實際應用。

2.1  銀聯統計分析系統的介紹

銀聯統計分析系統是建立在數據倉庫基礎上的,爲銀聯各分公司領導提供決策輔助信息的系統。其目的是爲了更深入應用銀聯積累的大量跨行交易數據,是爲了促進分公司、銀行、金融監管機構和行業客戶對業務進行全面、及時、準確的分析和定位,及時瞭解業務發展動態和預測,及時解決業務發展中存在的問題。

銀聯在全國有37家省級分公司。各分公司所關心的數據內容,關注的KPI體系,KPI的評價標準都是一致的。但是,各分公司由於當地經濟發展水平不同,銀行卡應用深度不同,導致各分公司業務種類差異很大,即使是同一種業務,其成熟程度、規範程度差異也很大,體現在數據上就是數據源的種類不一致,即使是相同的業務數據源,在數據結構、業務判斷規則、數據表現形式方面也有很大差異性。

這種共性大差異性也大的多個數據倉庫系統,設計上選用可重用性構件的思想來指導ETL的架構設計,實現上採用自己開發的擁有自動知識產權決策支持系統產品:數據挖掘商業應用平臺(Compass)。該平臺包括智能流程管理子系統、報表專家子系統、多維分析子系統、數據挖掘子系統四個部分。其中智能流程子系統是一個獨立的ETL開發工具,能夠支持基於可複用構件思想ETL過程的實現。

2.2  銀聯統計分析系統ETL構件分層識別

在銀聯統計分析系統ETL設計階段,依據圖1所示的ETL架構和設計思想來設計和組織ETL各處理階段可重用構件以及構件之間的接口規則:

(1)抽取層。銀聯統計分析系統抽取層處理的數據主要三類:業務數據、維度數據、輔助數據。業務數據主要包括全流水、二次清分數據、公共支付、固網支付、網上支付等業務交易數據;維度數據主要包括商戶信息、機構信息、終端信息、地區信息等;輔助數據主要是卡bin信息、髮卡信息等。

銀聯統計分析系統這個層面的數據除了全流水數據外,其他的內容在各個分公司表現形式、處理規則差異很大,封裝成構件的價值不大,所以這個層面可以識別的構件只有全流水抽取。

(2)集成轉換層。鑑於各分公司統計分析系統所關心的數據內容,關注的KPI體系,關注的維度數據(商戶、機構、終端)信息相似度很高,所以這個層面可以識別的構件比較多,主要有兩大類:流水數據集成轉換構件;維度類數據集成轉換構件,具體包括商戶、機構、終端、商戶類別、地區信息的集成轉換構件。

輔助數據因爲類型多樣,差異比較大,可重用價值不高,所以不對其識別構件。

(3)特殊處理層。銀聯統計分析系統的特殊處理層的構件不再按照數據類別識別,而是根據每個指標的使用頻率、涉及數據記錄數的多少識別三類構件:交易指標類構件、調賬指標類構件、維度統計指標類構件,分別負責交易類指標、調賬類指標、商戶和終端發展情況的統計。

(4)基礎服務層。各分公司銀聯統計分析系統對元數據管理要求基本一致且沒有特殊要求,銀聯統計分析系統將其識別爲元數據管理構件。

考慮到銀聯統計分析系統處理的數據對象基本一致,差異主要體現在數據的表現形式和處理規則上,加上ETL過程構件之間傳遞數據量很大,這裏選用數據池的形式而不採用函數調用的形式來定義構件接口。例如,所有分公司對商戶關注的信息都是一樣的,但是每個分公司提供的商戶信息的表現形式卻各不相同,抽取層接口數據池通過約定抽取層商戶信息抽取過程生成內容和格式,爲集成轉換層商戶信息集成轉換構件提供一個穩定的數據源,使其不必關心用戶提供的數據源是什麼形式。

考慮到銀聯統計分析系統關注的指標繁多,一次性全部識別成控件難度和工作量都很大。所以,首先識別並封裝最重要的、最常用的交易類指標的自動測試構建;然後是調帳指標和維度統計指標的自動測試構件的識別和封裝。
2.3  銀聯統計分析系統ETL架構設計

基於可複用構件思想銀聯統計分析系統ETL架構具體包含六個功能模塊(如圖3所示)包括:元數據抽取模塊、可重用構件選擇和導入模塊、數據倉庫架構自動維護模塊、ETL過程定義模塊、ETL調度模塊、ETL構件生成模塊。各個模塊的具體功能分工如下:

(1)元數據抽取模塊。這個模塊主要完成兩項工作:抽取銀聯業務數據和維度數據元數據,並在此基礎上對系統進行更精確的定義,例如銀聯各類數據源提供的時間週期、銀聯數據倉庫數據保留的時間和備份頻率等信息。

(2)可重用構件的選擇和導入模塊。在銀聯統計分析系統的分析和設計階段,已經識別了抽取層、集成轉換層等各層有重用價值的構件。爲了管理和重用這些構件,構件選擇和導入模塊的功能有兩個:第一,從銀聯構件庫中抽取已經封裝的全流水交易數據抽取構件、集成轉換構件、KPI轉換構件、維度類數據集成轉換構件(包括商戶、機構、終端、商戶類別、地區信息五類構件)、KPI自動測試類構件,將其導入到ETL過程庫,按照ETL架構(見圖1)對導人的構件分層組織,生成系統的ETL過程框架(如圖4(a)所示),圖4(a)中的ETL過程鏈中三個JOB節點分別對應ETL架構(見圖1)中的抽取層、數據集成轉換層、特殊處理層,圖4(b)~(d)分別對應各導人構件(一個JOB節點代表一個導人構件的處理過程)在這三個層次中的組織形式。第二,模塊可根據新項目銀聯分公司特殊業務規則和指標口徑配置每個構件的處理規則,將配置信息加入元數據庫中。

(3)數據倉庫架構自動維護模塊。數據倉庫架構自動維護模塊主要功能是依據元數據庫中的信息,爲銀聯統計分析系統完成數據倉庫的創建和初始化工作,完成事實表、維度表創建,完成每個構件需要的配置表、中間表和臨時表的建立等工作,而這些原本需要用手工來實現和維護的。  

(4)ETL過程定義模塊。在初始框架的基礎上,可通過ETL定義模塊可視化地定義構件庫中沒有可重用構件的ETL過程,例如手續費和品牌費抽取、商戶信息抽取(如圖5所示)、終端信息過程等,使整個銀聯統計分析系統的ETL趨於完善。

(5)ETL調度模塊。ETL調度模塊可以根據系統的調度設置,執行ETL過程庫中的ETL過程,實現數據抽取、轉換、加載、換算等工作。

(6)可重用構件生成模塊。對於新定義的ETL過程,若可重用價值高,可通過ETL構件生成模塊從ETL過程庫中抽取相應ETL處理過程包裝成可重用構件。可重用構件一般包括以下內容:ETL處理過程、配置過程說明文檔、相關表(配置表、中間表和臨時表)的信息、初始化數據、特殊規則配置功能界面,構件這些構成部分由ETL構件生成模塊分別存入到構件庫中相關表中。




3  結  語

這裏介紹了一個基於可複用構件思想的ETL架構,以北京銀聯、江蘇銀聯、浙江銀聯等10家省級銀聯統計分析系統爲例,介紹了該架構各層構件的識別過程,設計了ETL模塊構成以及各模塊主要功能。該架構已經在10家省級銀聯分公司的統計分析系統的ETL構建中應用,實踐表明該架構是有效的,它能夠在比較短的時間內完成統計分析系統的構建,可有效縮短系統的開發週期,大幅度降低各分公司的時間成本和資金成本,對於推動數據倉庫和商業智能在銀聯各個省級分公司的應用有顯著意義和使用價值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章