薛鵬飛
(常州紡織服裝職業技術學院 江蘇 常州 213164)
智慧校園建設是當下每所高校都在大力推進的信息化工程,隨著智慧校園由1.0向2.0的發展,逐漸從數字化時代演變到了智能化時代。在智慧校園1.0階段,高校建設了多個業務系統,實現了多個業務系統之間的統一身份認證以及部分的數據集成,但是各業務系統之間真正的數據共享還沒完全做到,即信息孤島并沒有完全打通,而要實現各系統之間的數據共享交換離不開一項技術,即ETL(Extract-Transform-Load)技術,它是用來描述將數據從源端經過抽取、轉換、裝入到目的端的過程。目前常用的ETL工具主要有Informatica PowerCenter、IBM Datastage、Oracle Warehouse Builder(OWB)、Oracle Data Integrator(ODI)、Microsoft SQL Server Integration Services及開源的Kettle等[1]。
Kettle是由美國人馬特·卡斯特(Matt Casters)于2002—2003年研發的一款ETL工具,然后于2005年12月進行了開源,2006年初被一家開源BI公司Pentaho收購,隨后Kettle改名為Pentaho Data Integration,簡稱PDI。2017年9月20日起,Pentaho被日立集團新成立的全資子公司Hitachi Vantara合并。到目前為止,Kettle依然是個開源軟件,它的源代碼地址為https://github.com/pentaho/pentaho-kettle/,目前國內具有ETL自主研發產品的公司多數在Kettle開源的基礎上進行二次開發而來。
Kettle可管理來自多個不同數據庫的數據,還可以管理來自NoSQL、文本文件、XML、JSON等數據[2],通過可視化圖形界面設計器,像畫流程圖那樣設計出數據流轉的流程,然后通過腳本的方式發布到服務器上定時執行數據流轉任務。它是一款綠色軟件,解壓后即可運行,由Java編寫,可以運行在Windows、Linux、UNIX操作系統上,可以穩定高效地進行海量數據集成。
高校的信息化建設一直以來都缺乏頂層設計,重單一項目建設,輕統一規劃,且應用系統多數由各職能部門自建,沒有統一標準。近些年,隨著信息化環境的發展以及國家對教育信息化的高度重視,多數高校成立了信息化專門部門來統籌信息化建設,并逐漸開始意識到數據治理在高校信息化建設中的重要意義,以及數據標準在數據治理中的重要性。
但是,要集成原有應用系統數據困難重重:(1)由于原有應用系統建設久遠,聯系不上供應商;(2)原有應用系統數據庫不開放,或者要向供應商支付高昂對接費用;(3)拿到了應用系統數據庫,但由于缺乏數據字典和元數據信息,導致無從下手,比如要從教務管理系統中獲取課表信息,得先知道哪個表是課表,還得知道每個字段的含義,這些信息在職能部門當初建設應用系統時都會被忽略,這為數據集成造成了非常大的困難;(4)采用數據庫定時任務集成,通常這類技術細節的文檔都不全,由于甲乙雙方當時初建人員崗位調整等歷史原因,導致數據的集成規則成了技術黑箱;(5)采用了ETL工具進行集成,比如ODI工具,由于操作復雜,學習成本較高,以及技術細節文檔不全跟上面第4點中一樣,后期高校要自主修改數據對接內容非常困難。
高校要進行數據治理,就必須自主掌握數據對接集成技術,且要簡單易上手,可視化操作,這樣才能適應高校專業技術人員人手不足以及需求多變的常態。傳統商業ETL工具雖然功能強大,但是一方面學習成本較高,另一方面費用也較高。開源的Kettle恰恰解決了這些問題,上手簡單,零成本就可以完全實現高校數據中心數據對接集成,即便后期采購基于Kettle二次開發的ETL工具,也很容易上手。
高校數據中心在進行對接集成前必須明確對接需求,確定源端數據和目的端數據,拿到源端和目的端數據庫連接信息,包括數據字典和元數據信息,如果源端和目的端應用系統供應商能積極配合將大大提高對接集成效率。這一步非常關鍵,這是將來智慧校園項目建設過程中,需要和職能部門、第三方供應商必須約定遵守的原則,否則數據對接集成將非常困難。
Kettle的官方下載網址為https://sourceforge.net/projects/pentaho/files/,Kettle由JAVA開發,所以運行只需要JDK運行環境即可,建議安裝JDK1.8或以上版本,隨后配置好操作系統環境變量,最后將下載的Kettle壓縮包進行解壓即完成了部署。
在Kettle的解壓目錄中有3個最重要的核心組件,它們以批處理文件形式運行,分別對應Windows中的bat文件和Linux中的sh文件,在對接集成中會經常使用到,它們分別為以下幾種。
(1)Spoon.bat/spoon.sh。Spoon是一個用于設計ETL轉換過程、創建作業調度規則、對數據庫連接進行配置與資源庫管理等的圖形化用戶界面程序。
(2)Pan.bat/pan.sh。Pan是一個獨立運行的命令行程序,沒有圖形化界面,用于執行由Spoon設計的轉換和作業,是一個后臺執行程序。
(3)Kitchen.bat/kitchen.sh。Kitchen是一個獨立運行的命令行程序,沒有圖形化界面,用于在后臺批量自動化執行作業,實現作業自動調試。
Kettle的核心概念是將復雜的ETL過程用工作流的形式進行構建,而且整個過程都是圖形化方式,通過拖拽操作即可完成。在用Spoon進行圖形化方式設計工作流時,核心原理就是轉換(Transformation)和作業(Job),可以簡單理解為Kettle里的流程圖。
轉換是定義數據操作的容器,主要是對數據的各種復雜處理。轉換可以包含一個或多個步驟(Step),步驟通過跳(Hop)來連接,即在流程圖中帶箭頭的連接線。它允許數據從一個步驟向另一個步驟流動,即為數據流。數據流的單位為行,數據以數據行的形式沿著步驟流動,步驟可以對數據進行輸入、處理和輸出。
作業是對一個或多個轉換、一個或多個作業進行調度的流程[3]。作業流程與轉換流程相似,但是作業流程必須包含Start控件,除此之外作業還可以進行郵件收發、文件管理、條件判斷、腳本執行等。
下面以高校門禁車行數據通過ETL推送數據到數據中心為例,介紹用Kettle實現轉換和作業的過程。
第1步在Spoon編輯器中先設置DB連接,配置好對應數據庫版本的驅動程序,再將門禁車行數據庫和數據中心數據庫進行連接配置以便之后引用;第2步新建轉換,先配置門禁車行數據源,將核心對象中的輸入控件“表輸入”拖拽到工作臺,引用剛剛配置好的門禁車行數據庫信息,寫好門禁車行數據庫表的SQL查詢語句,將需要推送的數據先查詢出來作為數據源;第3步配置輸出,將輸出對象中的“插入/更新”控件拖拽到工作臺,引用數據中心數據庫信息,配置好目標表、查詢關鍵字和更新字段等信息,即輸出到數據中心數據庫中;第4步將工作臺中的門禁車行數據源和數據中心目的端用箭頭進行連接;第5步保存并運行這個轉換即完成了一次高校門禁車行數據通過ETL推送數據到數據中心的過程,此時數據中心已經有了門禁車行數據了;第6步創建作業,經過以上5步操作只是進行了一次數據同步,如何讓同步按照我們設定的規則進行自動同步呢?作業就是解決這個問題的,分別將“Start”控件、剛剛創建的轉換和“成功”控件拖拽到工作臺,連接流程箭頭配置好作業定時調度規則,保存運行即可。
在用ETL進行數據更新設計的時候,需要根據實際應用場景靈活設計以提高轉換的效率,比如常用的數據更新應用場景有全量數據更新、增量數據更新、修改和插入數據更新、增刪改數據更新等,這些數據更新的效率都各不相同,根據實際情況選擇最合適的數據更新方案。作業的調度規則也需要根據實際情況來進行合理設計,實時性不高的場景可以把調度規則設在用戶使用率不高的時間段,以免海量數據頻繁調度影響兩端數據庫的IO性能。
Kettle作業實現自動調度有兩種方式:一是直接在Spoon編輯器中實現,只要Spoon編輯器處于打開狀態,運行中的作業就會持續自動調度,但是一旦關閉Spoon編輯器,作業就停止了,顯然這種方式只適合實驗環境;二是通過Kitchen來進行自動調度,通過批處理的方式來實現,在Windows中可通過任務計劃程序或服務來實現,在Linux中可通過定時任務來實現,在生產環境中往往采用第2種方式來實現作業的自動調度。
Kettle作為一款開源ETL工具,確實在技術層面能夠幫助高校進行最節約成本的數據對接集成工作,但是要解決智慧校園建設過程中各應用系統之間的信息孤島問題,除了技術層面,還要有管理和規劃層面的支持。只有建立數據標準、數據共享規范和數據安全保障機制,才能真正消除信息孤島,充分發揮數據效能。