韋亞軍,張文文,李冬青
(南京國圖信息產業有限公司,江蘇南京 210000)
隨著自然資源信息化體系的完善,各機構改革逐步落實到位。如何更加高效、安全、靈活地實現各部門、各應用系統之間的數據轉換、同步及遷移工作成為當前自然資源信息化建設面臨的重要難題[1-3]。目前數據轉換、同步工作一般采用兩種方法[4-7]:一種是借助專業的抽取—轉換—加載(Extract-Transform-Load,ETL)工具實現,如Oracle數據庫的OWB、SQL Server 2000 的DTS、達夢數據庫DTS等,該方法通常要求目標數據庫必須是指定類型,因此缺乏靈活性;另一種是通過SQL 編程的方式實現,可有效提高ETL 運行效率,但編碼復雜,難以快速構建ETL 工作環境,具有一定的應用局限性。
針對上述問題,結合自然資源信息化體系建設過程中數據多源、數據量大、結構復雜等特點,本文基于開源ETL工具Kettle 構建源數據庫轉換同步環境,并提出一種新的數據轉換同步方法。該方法充分融合集成了傳統ETL 工具與SQL 編程二者的優勢,解決了ETL 工具目標數據庫需指定類型的不足以及SQL 編程方法的局限性問題,提高了開發速度和工作效率,有效解決了自然資源信息化建設過程中多源數據到目標數據的轉換與同步難題,同時也為企業的數據集成工作提供了更多思路。
Kettle 是一款強大、開源的ETL 工具,又名“水壺”,意為將各種數據放到一個壺中,然后以一種指定的格式流出。Kettle 支持可視化的圖形用戶界面(Graphics User Interface,GUI),以工作流的形式流轉,無需安裝即可在Windows、Linux 及Unix 系統上運行,數據抽取、轉換、同步、過濾功能高效穩定[8-11]。
Kettle 的數據集成功能主要由轉換(Transformation)和作業(Job)兩個核心組件完成,其中轉換組件為進行數據操作的容器,數據操作即數據從輸入到輸出的過程,每一個轉換表示對一個或多個數據流進行特定的數據操作;作業組件負責將一個或多個轉換組織在一起,根據事先設定的工作流模式,協調數據源并執行轉換活動,從而完成一項特定的數據處理任務。通常情況下,一項大型任務會被分解為多個邏輯上隔離的作業,作業完成即代表該數據處理任務完成[12-15]。Kettle 的概念模型如圖1所示。

Fig.1 Kettle conceptual model diagram圖1 Kettle概念模型圖
根據操作系統網絡環境的不同,Kettle 的應用場景可分為3 種[16],分別為表視圖、前置機和文件模式,具體如圖2 所示。其中,表視圖模式是數據集成處理中經常遇到的場景,即在同一網絡環境下需要對多種數據源進行抽取、篩選、轉換和加載等,如歷史數據同步、異構系統數據交互、數據對稱發布或備份;前置機模式是一種典型的數據交換模式,數據交互雙方A 和B 在網絡不通的情況下可以通過前置機C 實現連接,此時雙方可以約定好前置機C 的數據庫結構標準,通過開發應用接口將數據組織成標準結構并推送至前置機;文件模式是指當數據交互雙方A 和B完全物理隔離時,只能通過指定格式文件的方式實現數據交互,如XML 格式。該模式在應用A 中開發應用接口用于生成標準格式的文件,然后通過移動硬盤等介質在某一時間拷貝文件接入應用B,應用B 按照標準接口規范接收數據。以上3 種應用場景若均從系統層面實現數據同步轉換,無疑工作量巨大,同時涉及到一些復雜的業務和邏輯,還會產生一定的程序錯誤,增加了項目投入成本。而利用Kettle 完成數據同步轉換工作可有效減少研發工作量,提高工作效率。

Fig.2 Kettle application scenario圖2 Kettle應用場景
基于Kettle 的數據轉換同步方法是通過Kettle 制定數據抽取、篩選、轉換規則,并以工作流的形式執行作業任務,從而實現數據轉換、同步工作。主要步驟為首先在數據同步工作前對業務需求進行分析,制定一套詳細且專業的數據同步流程和策略;然后將該同步流程和策略轉化為Kettle 可識別的轉換腳本和作業流程;最后形成基于Kettle的源數據庫轉換同步環境,實現源數據到目標數據的高效持續更新機制[17]。
某自然資源與規劃局的自然資源一體化業務審批系統(以下簡稱審批系統)由我司研發并已上線運行,檔案管理系統則由另一家公司研發,兩個系統分布在不同的網絡環境中,無法直接進行交互,但可以通過前置機完成連接。現局方要求我司協助完成業務審批數據歸檔工作,每天定時將審批系統已辦結的業務數據同步至前置機數據庫(以下簡稱目標數據庫),該目標數據庫由檔案管理系統研發公司設計,檔案管理系統獲取目標數據庫中的數據進行歸檔操作。
上述業務場景為典型的前置機模式,要求歸檔的數據包括土地、礦產、林業、綜合事務等,涉及審批系統中的多個數據源(以下簡稱源數據庫)。由于系統已經上線運行,除需完成新的業務數據同步外,還需要實現歷史數據的歸檔工作。
結合業務需求分析,本次數據同步除需完成日常增量數據同步外,還應完成歷史數據全量同步。為防止重復全量同步操作,本文設計了增量和全量數據同步流程,在啟動定時作業任務后,首先判斷目標數據庫的記錄數,確定是否已經存在歷史業務數據,若不存在,則可以先進行全量數據同步,確保歷史數據同步到目標數據庫,防止數據丟失[18-19]。數據同步流程如圖3所示。
結合實際需求及數據同步流程,本文制定了數據結構分析、數據篩選、數據組合、數據規范、數據清理和數據校驗6個同步策略。
3.3.1 數據結構分析
數據結構分析策略主要針對源數據庫和目標數據庫的表結構、E-R 圖進行分析,形成源數據庫和目標數據庫表與表、字段與字段之間的對應關系,利用Excel 表格、思維導圖等形式整理記錄各數據庫表、字段的對應關系,具體示例如圖4所示。
3.3.2 數據篩選
根據實際業務需求,從源數據庫中篩選滿足要求的基礎數據信息,剔除目標數據庫不需要的表和字段,獲得滿足實際要求的各類業務數據信息,解決無效數據同步到目標數據庫的問題。利用Kettle 工具輸入組件完成源數據篩選,具體操作如圖5所示。

Fig.3 Data synchronization process圖3 數據同步流程

Fig.4 Data structure analysis example圖4 數據結構分析示例

Fig.5 Data screening process圖5 數據篩選操作
3.3.3 數據組合
在源數據篩選過程中建立統一的業務主鍵,建立各表之間的組合關系,完成源數據基礎數據重組,解決數據同步過程中業務缺失、關鍵信息不全等問題。
3.3.4 數據規范
根據目標數據庫標準要求,對篩選的基礎數據進行規范化處理,建立同步數據標準,解決數據規范不一致、格式不統一等問題。
3.3.5 數據清理
進行增量數據同步前,檢查并清理目標數據庫中已經存在的冗余數據,以保證目標數據庫數據的實時性、準確性。
3.3.6 數據校驗
針對目標數據庫的數據業務邏輯關系進行校驗,剔除不符合校驗規則的數據,完成數據質檢工作,解決數據質量不符合要求的問題。
根據以上數據同步策略,結合實際需求分析,本文設計了如圖6 所示的數據同步架構,構建了基于Kettle 的源數據庫轉換同步環境,形成了由源數據庫到目標數據庫的自動持續更新機制。
利用基于Kettle 的數據轉換同步方法,結合源數據庫轉換同步環境,設計了本次數據轉換同步的轉換腳本和作業任務,使審批系統各項業務數據轉換為可供檔案管理系統使用、分析、決策的目標數據,并對其進行校驗。同時,開發了定時觸發腳本文件,以完成對作業任務的定時調度,實現源數據到目標數據的自動持續更新。

Fig.6 Data synchronization architecture圖6 數據同步架構
基于實際業務需求,對審批系統土地、礦產、林業、綜合事務等業務數據進行篩選、拼接,并與附件材料數據關聯、合并,對其中的非標準數據進行規范化處理,部分數據處理示例如圖7 所示。應用數據篩選、數據組合、數據規范及數據清理4 個同步策略構建審批系統業務數據轉換流程,見圖8。同時建立作業任務,集成所有轉換流程,實現對整個審批系統從源數據到目標數據同步的集成控制,維護數據同步的流程秩序。

Fig.7 Data processing example圖7 數據處理示例

Fig.8 Data transformation flow圖8 數據轉換流程
數據轉換、同步工作完成后需對結果進行數據校驗,校驗內容主要包括目標數據庫表之間的邏輯關系是否符號要求,數據庫表總數、記錄總數是否與源數據一致等。對目標數據庫部分表記錄總數進行統計校驗,結果見圖9。校驗結果表明,利用基于Kettle 的數據轉換同步方法可順利完成數據轉換、同步工作,數據轉換率、有效率、正確率均高達98%以上。

Fig.9 Data validation example圖9 數據校驗示例
定時觸發任務主要利用Kitchen 命令行控制工具編寫.bat 腳本文件,并與Kettle 工具相結合,實現系統對作業任務的定時調度,完成源數據到目標數據的持續更新工作。.bat腳本文件代碼為:


本文針對實際業務需求,基于ETL 工具Kettle 制定了數據同步流程與策略,并在此基礎上構建了基于Kettle 的源數據庫轉換同步環境,提出新的數據轉換同步方法,利用該方法可實現對審批系統土地、礦產、林業、綜合事務等數據的高效抽取、篩選、轉換和同步。校驗結果表明,該方法數據轉換率、有效率、正確率均高達98%以上,滿足了檔案管理系統對目標數據庫的查詢、分析和決策需求。同時制定了定時觸發任務,解決了系統后臺對作業任務的定時調度問題,最終實現了源數據庫到目標數據庫的高效自動持續更新。未來將不斷完善數據規范和校驗過程,提高數據質量,優化轉換作業流程,提升數據同步效率,為企業的數據轉換、同步及遷移工作提供更多思路。