王曉波
摘要:ETL作為構(gòu)建數(shù)據(jù)倉庫的一項重要技術(shù),越來越多地應(yīng)用于各個領(lǐng)域。該文簡單介紹了ETL的基本原理,以及利用ETL技術(shù),建立數(shù)據(jù)交換平臺,實現(xiàn)電子政務(wù)領(lǐng)域的數(shù)據(jù)整合。
關(guān)鍵詞:電子政務(wù);ETL;抽取;轉(zhuǎn)換;加載;數(shù)據(jù)交換平臺
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)21-0278-03
Abstract: ETL is very important in constructing Data Warehouse,and is used in many fields. This paper introduces the principles of ETL, and the data integration of E-government with the data exchange platform using ETL.
Key words: E-government; ETL; Extract; Transform; Load; Data exchange platform
1 引言
隨著信息技術(shù)的不斷普及,現(xiàn)國家電子政務(wù)外網(wǎng)和電子政務(wù)內(nèi)網(wǎng)已逐步覆蓋至縣,省級電子政務(wù)網(wǎng)絡(luò)已形成較為完善的體系。但由于信息資源共享機制尚未建立,部門自成體系現(xiàn)象嚴(yán)重,被隔離成一個個獨立的“孤島”,資源不能得到良好的整合,信息不能夠得到充分的共享。為提高公共服務(wù)效率,需要將各部門的資源整合,更好的實現(xiàn)資源共享,從而為公眾提供無縫式的、一體化電子化服務(wù)。利用ETL技術(shù)建立數(shù)據(jù)交換平臺,可將各部門數(shù)據(jù)進(jìn)行整合,從而實現(xiàn)信息共享。
利用ETL技術(shù)建立數(shù)據(jù)交換平臺,可將各部門的數(shù)據(jù)抽取到臨時中間庫后,然后對數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換,最后加載到正式數(shù)據(jù)庫中,解決各部門資源共享問題。
2 ETL簡介
ETL,即抽?。‥xtract)、轉(zhuǎn)換(Transform)和加載(Load) ,將各種數(shù)據(jù)源(分布式、異構(gòu)等)的各類數(shù)據(jù)(如關(guān)系型數(shù)據(jù)、文件數(shù)據(jù)等)抽取到臨時中間庫后,然后根據(jù)業(yè)務(wù)需要,用相關(guān)的規(guī)則進(jìn)行清洗、轉(zhuǎn)換并集成,最后加載到目的數(shù)據(jù)庫中,有效的解決了由于數(shù)據(jù)內(nèi)容、數(shù)據(jù)格式和數(shù)據(jù)質(zhì)量等原因造成的無法共享的各種棘手問題。簡單的ETL體系結(jié)構(gòu)如圖1所示:
3 數(shù)據(jù)交換平臺在電子政務(wù)領(lǐng)域中的應(yīng)用
針對現(xiàn)全省各級各部門之間信息不能共享,利用ETL技術(shù),建立數(shù)據(jù)交換平臺,可對全省各級各部門的資源進(jìn)行有效地整合。其結(jié)構(gòu)圖如圖2所示:
數(shù)據(jù)交換平臺主要包括交換橋接子系統(tǒng)、交換傳輸子系統(tǒng)和交換管理子系統(tǒng)。
3.1交換橋接子系統(tǒng)
根據(jù)業(yè)務(wù)需求,交換橋接子系統(tǒng)用來采集各部門的業(yè)務(wù)數(shù)據(jù),能夠支持異構(gòu)數(shù)據(jù)庫,多種服務(wù)器軟硬件,不同的文件數(shù)據(jù)源間進(jìn)行高效的數(shù)據(jù)采集,努力實現(xiàn)“零編程”或“少編程”。
3.1.1數(shù)據(jù)抽取方式
1)全量抽取:全量抽取較為簡單,即將數(shù)據(jù)源中數(shù)據(jù)(如,表或視圖)原封不動的從數(shù)據(jù)庫中抽取出來。跟數(shù)據(jù)遷移或數(shù)據(jù)復(fù)制類似。
2)增量抽?。侯櫭剂x,抽取增量數(shù)據(jù)(包括新增或修改的數(shù)據(jù))。即抽取自上次抽取以來數(shù)據(jù)庫中表或視圖中新增或修改的數(shù)據(jù)。
3.1.2數(shù)據(jù)交換方法設(shè)計
1)觸發(fā)器方法。即在要抽取的數(shù)據(jù)庫中數(shù)據(jù)表上建立相應(yīng)的觸發(fā)器。根據(jù)對數(shù)據(jù)表的操作類型來看,需要建增加、刪除和修改三個觸發(fā)器;當(dāng)對源表的數(shù)據(jù)進(jìn)行增加、刪除或修改操作時,相應(yīng)的觸發(fā)器會被觸發(fā),就會將變化的數(shù)據(jù)寫入一個臨時表;抽取數(shù)據(jù)時從這個臨時表進(jìn)行數(shù)據(jù)抽取,臨時表中的數(shù)據(jù)一旦被抽取后,應(yīng)當(dāng)對其進(jìn)行標(biāo)記或者刪除。
2)時間戳方法。改造各部門的業(yè)務(wù)系統(tǒng),在需要抽取的業(yè)務(wù)表中添加時間戳字段,字段類型為時間類型;若業(yè)務(wù)系統(tǒng)對該條數(shù)據(jù)進(jìn)行了更新或修改時,也業(yè)務(wù)系統(tǒng)需同時修改時間戳字段;數(shù)據(jù)抽取時,通過時間戳字段與系統(tǒng)時間的比較來決定進(jìn)行數(shù)據(jù)的抽取。數(shù)據(jù)增量抽取的原理如圖3:
3)整表比對法。先抽取源數(shù)據(jù),并根據(jù)相應(yīng)的規(guī)則進(jìn)行轉(zhuǎn)換,完成后先不插入目標(biāo)表,而是將源數(shù)據(jù)的每條數(shù)據(jù)與目標(biāo)表中的數(shù)據(jù)進(jìn)行對比。對比時,可根據(jù)表的主鍵值進(jìn)行新增或更新的判斷。若目標(biāo)表已存在該主鍵值的,表明目標(biāo)表中該數(shù)據(jù)已存在,然后在進(jìn)行其余字段的對比,若完全相同,則不進(jìn)行更新操作,反之,需進(jìn)行更新操作;若目標(biāo)表沒有存在該主鍵值,表明目標(biāo)表中該數(shù)據(jù)不存在,進(jìn)行新增操作即可。
4)全表刪除插入法。進(jìn)行時間抽取時,首先刪除目的表的全部數(shù)據(jù),然后將數(shù)據(jù)全部重新加載。
5)日志表法。在業(yè)務(wù)系統(tǒng)中添加維護(hù)日志功能,建立系統(tǒng)日志表,當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)生變化時,維護(hù)日志表的內(nèi)容及時更新,然后通過讀取維護(hù)日志表中的數(shù)據(jù)進(jìn)行數(shù)據(jù)抽取以及如何抽取。
6)主動交換法。各部門按照標(biāo)準(zhǔn)設(shè)置的數(shù)據(jù)交換格式(xml),通過自己業(yè)務(wù)系統(tǒng)開發(fā)數(shù)據(jù)交換程序,主動定時提交數(shù)據(jù)到指定位置。
7)人工報送方法。提供一個簡易的數(shù)據(jù)錄入系統(tǒng),針對沒有業(yè)務(wù)系統(tǒng)或數(shù)據(jù)量不大、更新頻率不高的部門,需要報送數(shù)據(jù)時,直接使用此系統(tǒng)。
3.1.3 數(shù)據(jù)交換機制
根據(jù)業(yè)務(wù)系統(tǒng)需求,建立實時交換、定時交換機制、單向交換機制和雙向交換機制。
1)實時交換機制
實時交換機制采用觸發(fā)器機制,依靠數(shù)據(jù)庫自身的實時觸發(fā)管理,確保數(shù)據(jù)交換的實時同步,實時同步時間在毫秒級。觸發(fā)器分為INSERT、UPATE、DELETE三種。即業(yè)務(wù)表在數(shù)據(jù)變化時根據(jù)三種觸發(fā)條件判斷屬于那種數(shù)據(jù)更新方式并定位數(shù)據(jù)記錄。在數(shù)據(jù)加載時通過定位信息獲取數(shù)據(jù)并按照觸發(fā)類型進(jìn)行數(shù)據(jù)更新同步。
2)定時交換機制
定時交換機制采用時間戳方式。當(dāng)數(shù)據(jù)加載時,通過上次運行時間、本次運行時間與時間戳字段的比較來決定進(jìn)行何種數(shù)據(jù)抽取。
3)單向交換機制
無論是定時還是實時交換機制,都可以設(shè)定為單向交換。即針對一個數(shù)據(jù)源,只是做同一種操作向其他數(shù)據(jù)源做數(shù)據(jù)同步。
4)雙向交換機制
對于實時數(shù)據(jù)同步可以支持雙向交換。即針對一個數(shù)據(jù)源,在往其他數(shù)據(jù)源做數(shù)據(jù)同步的同時,該數(shù)據(jù)源又要受被其同步的數(shù)據(jù)源的變化做實時同步。
3.1.4 數(shù)據(jù)轉(zhuǎn)換和加工
利用ETL技術(shù),選擇數(shù)據(jù)庫方法或組件化方法對抽取的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和加工。
1)數(shù)據(jù)庫方法:利用關(guān)系型數(shù)據(jù)庫對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行加工。如,在SQL查詢語句中添加where條件進(jìn)行過濾,查詢中重命名字段名與目的表進(jìn)行映射,substr函數(shù),case條件判斷等。
2)組件化方法。組件化方法包括以下功能:字段映射、數(shù)據(jù)過濾、數(shù)據(jù)清洗、數(shù)據(jù)替換、數(shù)據(jù)計算、數(shù)據(jù)驗證、數(shù)據(jù)加解密、數(shù)據(jù)合并、數(shù)據(jù)拆分等。此外,組件之間可以任意組裝。另外,提供腳本支持,使得用戶可以通過編程的方式去制定數(shù)據(jù)的轉(zhuǎn)換和加工。
3.1.5 數(shù)據(jù)裝載
1)SQL語句裝載方法:直接使用SQL語句進(jìn)行insert、update、delete操作,此方式進(jìn)行了日志記錄并且是可恢復(fù)的。
2)數(shù)據(jù)批量裝載方法:數(shù)據(jù)批量裝載方法包括數(shù)據(jù)庫bcp、bulk、關(guān)系數(shù)據(jù)庫特有的批量裝載工具或api等。
3.1.6 日志功能
提供業(yè)務(wù)系統(tǒng)橋接過程中的數(shù)據(jù)傳輸日志功能。
3.2 交換傳輸子系統(tǒng)
3.2.1 數(shù)據(jù)封裝
系統(tǒng)采用XML國際標(biāo)準(zhǔn)作為數(shù)據(jù)封裝接口規(guī)范,數(shù)據(jù)在傳輸前將數(shù)據(jù)封裝成XML格式的傳輸對象。
3.2.2 數(shù)據(jù)傳輸
提供可靠隊列的通信機制,保障隊列持久性;提供不錯、不漏、不重的傳輸機制;支持?jǐn)帱c續(xù)傳、網(wǎng)絡(luò)容錯;支持點對點消息傳輸和發(fā)布/訂閱消息傳輸;支持JAVA編程、JMS和WEBSERVICE等接入方式;支持應(yīng)用的實時、定時、主動、被動模式,實現(xiàn)同步/異步消息通信手段,實現(xiàn)數(shù)據(jù)交換平臺多種交換模式的通信支持;支持?jǐn)?shù)據(jù)高效率傳輸,適應(yīng)網(wǎng)絡(luò)傳輸速率,提供透明壓縮傳輸功能,提供通信服務(wù)端集群與均衡負(fù)載能力,有效應(yīng)對多客戶端大并發(fā)需求,屏蔽性能瓶頸;支持復(fù)雜消息傳輸模式,可以直接對大文件進(jìn)行傳輸;提供優(yōu)先級處理能力;提供標(biāo)準(zhǔn)傳輸組件。
3.2.3 交換日志
提供底層交換日志功能,包括錯誤日志的記錄。
3.3 交換管理子系統(tǒng)
主要內(nèi)容包括系統(tǒng)配置、監(jiān)控管理、交換節(jié)點管理、數(shù)據(jù)適配、交換流程管理和日志管理等。
4 結(jié)束語
本文主要簡述了ETL技術(shù),著重介紹了利用用ETL技術(shù)建設(shè)的數(shù)據(jù)交換平臺,整合全省各部門數(shù)據(jù),實現(xiàn)了信息的共享。同時也為ETL技術(shù)在其他領(lǐng)域的應(yīng)用提供了一個很好的借鑒。
參考文獻(xiàn):
[1] 郭志懋, 周傲英. 數(shù)據(jù)質(zhì)量和數(shù)據(jù)清洗研究綜述[J]. 軟件學(xué)報, 2002,13(11):2076-2082.
[2] 張寧. 數(shù)據(jù)倉庫中ETL技術(shù)的研究[J]. 計算機工程與應(yīng)用, 2002(24):213-216.
[3] 繆嘉嘉,鄧蘇,劉青寶.ETL綜述[J]. 計算機工程, 2004(3).
[4] 白洪濤,孫吉貴,莫旭,楊鳳杰. 一個專用的ETL程序的實現(xiàn)[J]. 計算機應(yīng)用, 2004(2).