999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于Kettle的無損增量數(shù)據(jù)同步方法研究

2019-12-04 01:47:08趙亞偉
軟件導(dǎo)刊 2019年10期
關(guān)鍵詞:數(shù)據(jù)采集

趙亞偉

摘要:在學(xué)校各系統(tǒng)運行管理過程中,產(chǎn)生了大量寶貴的數(shù)據(jù)資源,這些數(shù)據(jù)對學(xué)校重要決策制定及傳統(tǒng)教育模式改革有著極其重要的作用。因此,如何將不同維度的數(shù)據(jù)采集到統(tǒng)一的數(shù)據(jù)中心便成為大數(shù)據(jù)研究的重點之一。在數(shù)據(jù)采集過程中,很多學(xué)校沒有保存重要的歷史數(shù)據(jù)以及已刪除記錄的狀態(tài)標記,將對數(shù)據(jù)分析中諸如時間切片分析、歷史狀態(tài)分析等產(chǎn)生致命影響。以學(xué)校人事系統(tǒng)為例,提出一種基于Kettle的無損增量數(shù)據(jù)同步方法。該方法利用全量數(shù)據(jù)比對方式,找出新增、修改和刪除的數(shù)據(jù),并對其進行詳細記錄,從而實現(xiàn)了對歷史數(shù)據(jù)的完整保留,彌補了如時間切片分析等數(shù)據(jù)分析策略中數(shù)據(jù)不足的缺陷。

關(guān)鍵詞:數(shù)據(jù)采集;增量同步;Kettle;教育大數(shù)據(jù)

DOI:10.11907/rjdk.191530開放科學(xué)(資源服務(wù))標識碼(OSID):

中圖分類號:TP301文獻標識碼:A 文章編號:1672-7800(2019)010-0055-04

0引言

近年來,大數(shù)據(jù)為人們帶來的價值逐漸被各國認識并重視。隨著美國聯(lián)邦部門發(fā)布《大數(shù)據(jù)研究與發(fā)展計劃》,英國出臺《把握數(shù)據(jù)帶來的機遇:英國數(shù)據(jù)能力戰(zhàn)略》,法國頒布《數(shù)字化路線圖》等,大數(shù)據(jù)發(fā)展進入一個嶄新階段。在教育領(lǐng)域,國際著名期刊《Nature》和《Sci-enee》分別于2008和2011年推出大數(shù)據(jù)專刊,美國教育部于2012年10月發(fā)布《通過教育數(shù)據(jù)挖掘和學(xué)習(xí)分析促進教與學(xué)》報告,中國計算機學(xué)會于2012年舉辦了“大數(shù)據(jù)時代,智謀未來”報告會。由此可見,數(shù)據(jù)在未來生活中有著舉足輕重的地位。

信息化建設(shè)的迅速推進使高校業(yè)務(wù)系統(tǒng)發(fā)生了巨大變革,將許多高校工作者從繁重的重復(fù)勞動中解放出來。然而,在學(xué)校各系統(tǒng)運行過程中,也產(chǎn)生了很多問題,例如:各系統(tǒng)間相對獨立、編碼標準不統(tǒng)一、數(shù)據(jù)分散、信息重復(fù)、信息沖突等。在“數(shù)據(jù)即資源”的大數(shù)據(jù)時代,這些問題顯得尤為突出。要解決這些問題并實現(xiàn)數(shù)據(jù)分析的目標,首先需要建立一個標準統(tǒng)一、信息相對正確的數(shù)據(jù)中心,而數(shù)據(jù)中心的建設(shè)離不開數(shù)據(jù)采集。一般而言,數(shù)據(jù)采集分為數(shù)據(jù)庫采集、日志采集與網(wǎng)絡(luò)采集等方式,由于高校大部分業(yè)務(wù)系統(tǒng)采用關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù),所以本文主要針對數(shù)據(jù)庫采集方式進行研究。

數(shù)據(jù)庫采集一般都是通過創(chuàng)建定時任務(wù)實現(xiàn)的,即在某個特定時間或周期內(nèi)將變化的數(shù)據(jù)同步到數(shù)據(jù)中心。然而在目前主流的數(shù)據(jù)采集工程中,很少有學(xué)校注意到歷史數(shù)據(jù)保存情況,也即是說,數(shù)據(jù)中心保存的只是新增與變化后的數(shù)據(jù),對于變化前的數(shù)據(jù)以及刪除的歷史數(shù)據(jù)卻缺乏相應(yīng)的保存記錄,從而導(dǎo)致在數(shù)據(jù)分析過程中存在數(shù)據(jù)缺失的情況,進而影響到分析結(jié)果的準確性。本文提出一種基于Kettle的無損增量數(shù)據(jù)同步方法,填補了數(shù)據(jù)中心重要歷史數(shù)據(jù)缺失的空白,對于數(shù)據(jù)中心的建設(shè)可起到重要作用。

1工具介紹

數(shù)據(jù)采集中使用的主流技術(shù)是ETL技術(shù),其是Extract(抽取)、Transform(轉(zhuǎn)換)、Load(加載)首字母的縮寫組合,也是數(shù)據(jù)采集入庫的基本過程。它是指將異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)經(jīng)過數(shù)據(jù)抽取以獲取有價值的信息,進而按照一定規(guī)則對數(shù)據(jù)進行清洗,最后裝入數(shù)據(jù)中心的過程。其中,數(shù)據(jù)源的數(shù)據(jù)形式包括各種結(jié)構(gòu)化數(shù)據(jù)及非結(jié)構(gòu)化數(shù)據(jù)。

目前ETL技術(shù)中比較流行的工具有:Oracle Ware-house Builder(簡稱OWB)、Oracle Data Integrator(簡稱ODI)、Informatica、Datastage、Kettle等。

其中,OWB主要用于Oracle數(shù)據(jù)庫中數(shù)據(jù)的ETL、數(shù)據(jù)審計等場合,但其只能用在基于Oracle的數(shù)據(jù)庫系統(tǒng)中,而不能完成異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)集成工作。ODI的前身是Sunopsis Active Integration Platform,Oracle收購Sunopsis后改名為ODI。ODI可以完成幾乎所有種類RDBMS數(shù)據(jù)庫的數(shù)據(jù)集成工作,同時使用ODBC技術(shù),也可以完成對文本、Excel文件、音視頻文件等非結(jié)構(gòu)化數(shù)據(jù)的集成工作。

Informatica和Datastage都是商業(yè)化ETL工具軟件,價格較高,可提供很好的售后技術(shù)支持,Informatica需要進行客戶端與服務(wù)器部署,Datastage的部署則比較復(fù)雜。兩者都有著圖形化的操作界面和監(jiān)控界面,便于進行調(diào)試與優(yōu)化。由于是商業(yè)軟件,Informatica和Datastage基本無法自行擴展。

Kettle是一款免費、開源的ETL工具,基于Java語言開發(fā),有著大量用戶基礎(chǔ),可以跨平臺使用以及進行項目移植。Kettle提供圖形化的操作界面進行異構(gòu)數(shù)據(jù)庫以及非結(jié)構(gòu)化數(shù)據(jù)的集成工作,并采用并行、集群等方式高效率地完成數(shù)據(jù)傳輸任務(wù)。

Kettle主要使用兩種腳本文件實現(xiàn)數(shù)據(jù)集成:Trans-form(轉(zhuǎn)換)和Job(作業(yè))。其中,轉(zhuǎn)換主要完成數(shù)據(jù)庫中字段選擇、數(shù)據(jù)清洗、數(shù)據(jù)入庫等精細化工作,作業(yè)主要實現(xiàn)工作流控制及工作任務(wù)調(diào)度等。Transform和Job工程文件可以資源庫(數(shù)據(jù)庫)形式和文件(.ktr和.kjb)形式存儲。Kettle概念模型如圖1所示。

2數(shù)據(jù)同步方式

數(shù)據(jù)同步方式總體分為全量同步與增量同步。

2.1全量同步方式

全量同步是指在某個時間點或時間周期內(nèi)將所有數(shù)據(jù)拷貝到目標數(shù)據(jù)庫的過程,一般有以下兩種方法:①先清空目標數(shù)據(jù)庫,然后將全量數(shù)據(jù)拷貝過去;②先判斷新的全量數(shù)據(jù)與目標數(shù)據(jù)庫中數(shù)據(jù)是否一致,如果不一致,則清空目標數(shù)據(jù)庫,將全量數(shù)據(jù)拷貝過去,如果一致,則不進行任何操作。該同步方式適用于第一次數(shù)據(jù)同步時(即目標數(shù)據(jù)庫為空),數(shù)據(jù)量不大且實時性要求較低,或數(shù)據(jù)庫中不存在主鍵的場景。

2.2增量同步方式

增量同步是指在某個時間點或時間周期內(nèi)將變化的數(shù)據(jù)插入或更新到目標數(shù)據(jù)庫的過程。在增量同步方式中,如何判斷增量數(shù)據(jù)便成為影響數(shù)據(jù)同步效率的關(guān)鍵問題。一般而言,可采用以下4種方法進行判斷:

(1)觸發(fā)器:在源數(shù)據(jù)庫表中建立觸發(fā)器用來捕獲變化的數(shù)據(jù),將其放在臨時數(shù)據(jù)表中。同步任務(wù)執(zhí)行時,將臨時表中的數(shù)據(jù)更新到目標數(shù)據(jù)庫中。但該方式嚴重依賴于源數(shù)據(jù)庫,且需要對源數(shù)據(jù)庫的結(jié)構(gòu)進行操作,一定程度上會影響業(yè)務(wù)系統(tǒng)運行。由于高校業(yè)務(wù)系統(tǒng)廠商的復(fù)雜性,該數(shù)據(jù)同步方式一般使用較少。

(2)日志:通過分析源數(shù)據(jù)庫中的日志變化獲取更新數(shù)據(jù)。該方式同樣嚴重依賴于源數(shù)據(jù)庫類型,對于沒有提供日志分析工具或接口的數(shù)據(jù)庫而言,實施難度較大。

(3)時間戳:根據(jù)源數(shù)據(jù)表中的時間字段提取增量數(shù)據(jù)。主要有兩種方法:①建立一個臨時表存儲上次同步時間,同步任務(wù)執(zhí)行時,讀取當前時間和上次同步時間(臨時表),將源數(shù)據(jù)表中大于等于上次同步時間,且小于當前時間的記錄讀取出來同步到目標數(shù)據(jù)庫中。如果同步過程中沒有發(fā)生錯誤,則更新臨時表中的上次同步時間字段,如果發(fā)生錯誤,臨時表中的上次同步時間保持不變。該方式在數(shù)據(jù)同步出現(xiàn)錯誤時,部分數(shù)據(jù)已經(jīng)同步到數(shù)據(jù)庫,導(dǎo)致在下次執(zhí)行同步任務(wù)時會出現(xiàn)大量重復(fù)數(shù)據(jù),需要浪費很多時間執(zhí)行去重操作,從而大大降低了數(shù)據(jù)同步效率;②對方法①進行改進,設(shè)置一個時間容錯窗口t,在同步任務(wù)失敗時,選取目標表中的最新時間減去t作為臨時表中的上次同步時間,因為選取的是目標表中的最新時間,所以該時間點已有數(shù)據(jù)被抽取到目標數(shù)據(jù)庫,再往前回溯一小段時間t,從而保證在當前時間點目標數(shù)據(jù)庫中的數(shù)據(jù)不會缺失。然后,按照方法①同時抽取源數(shù)據(jù)庫和目標數(shù)據(jù)庫中滿足條件的數(shù)據(jù),對這些數(shù)據(jù)進行去重操作,最后將去重后的數(shù)據(jù)更新到目標表中,任務(wù)完成后更新臨時表中上次的同步時間字段。該方法在一定程度上減少了同步失敗情況下的重復(fù)數(shù)據(jù)集合,提升了同步效率。然而,以上兩種方法都無法做到對已刪除數(shù)據(jù)的同步操作。

(4)全量數(shù)據(jù)比對:將源數(shù)據(jù)表中的全量數(shù)據(jù)與目標表中的數(shù)據(jù)一一進行比對,從而找出新增、修改以及刪除的數(shù)據(jù),進而根據(jù)不同情況對不同類別的數(shù)據(jù)進行處理。該方法能在最大程度上捕獲所有數(shù)據(jù)變化而基本不影響業(yè)務(wù)系統(tǒng)正常運行,但是同步效率較低,適合對實時性要求不高的場景。

由于高校人事系統(tǒng)記錄了教師的個人基本信息、履歷、職稱變化、部門變化等,在組織機構(gòu)改革過程中涉及到部門名稱、部門人員以及部門編碼等變化,所以在將人事系統(tǒng)中的部分數(shù)據(jù)表同步到數(shù)據(jù)中心過程中,需要考慮歷史記錄保存情況。當然,由于操作失誤或其它情況導(dǎo)致的數(shù)據(jù)刪除記錄也需要捕獲到數(shù)據(jù)中心。總之,針對該情況,需要一種無損的數(shù)據(jù)增量同步方法。所以本文借助Kettle多線程圖形化操作的特點,采用全量數(shù)據(jù)比對方式,并以人事系統(tǒng)中部分數(shù)據(jù)表為例,提出一種無損的增量數(shù)據(jù)同步方法。

3無損增量數(shù)據(jù)同步方法

以人事系統(tǒng)個人基本信息表為例,表結(jié)構(gòu)如表1所示

該流程一共分為6大步驟:

步驟1:使用SQL語句分別選取源數(shù)據(jù)表和目標數(shù)據(jù)表中有價值的字段,并按相同規(guī)則進行排序,得到數(shù)據(jù)集合A和B,然后將兩個數(shù)據(jù)集合按主鍵進行合并記錄,獲得兩個數(shù)據(jù)集合比較之后的比較結(jié)果集G。因為人事系統(tǒng)中部分字段(如手機號、證件號、住址等)涉及敏感信息,所(僅列舉部分關(guān)鍵字段)。

從表1中的表結(jié)構(gòu)可以看到,職工號為主鍵,每個新人職的員工有唯一的職工號,另外姓名、性別、民族、籍貫、出生日期、來校年月、畢業(yè)院校等字段信息為固定信息,一般情況下變動不大,不需要留存歷史變化信息,如有更新,直接更新到數(shù)據(jù)中心目標表中的對應(yīng)字段即可。但政治面貌、所在單位、黨政職務(wù)、專業(yè)技術(shù)職務(wù)、在職狀態(tài)、人員類別等字段則會隨著工作時間的延長而發(fā)生巨大變化。一般情況下,政治面貌、黨政職務(wù)、專業(yè)技術(shù)職務(wù)等字段有專門的表記錄變化信息,而所在單位、在職狀態(tài)、人員類別則沒有對應(yīng)的表記錄變化的歷史數(shù)據(jù),能夠看到的只是當前狀態(tài)數(shù)據(jù),這對于數(shù)據(jù)中心建設(shè)及后續(xù)數(shù)據(jù)分析工作是十分不利的。

例如某員工入職一年后從信息學(xué)院調(diào)到科研處,所在單位和人員類別均發(fā)生了變化,如果在數(shù)據(jù)中心只存儲最終數(shù)據(jù)結(jié)果,在分析歷年各部門人員數(shù)量以及學(xué)校歷年人員類型組成時,則丟失了部分重要的數(shù)據(jù)支撐,最終分析結(jié)果必然是錯誤的。所以對于這種數(shù)據(jù)同步情景,保留歷史變化記錄是必要的。再比如由于操作人員重復(fù)錄入或錄入錯誤而刪除了一條記錄,如果在數(shù)據(jù)中心不記錄刪除結(jié)果,則在進行相關(guān)人員變化的數(shù)據(jù)分析時也會出現(xiàn)類似錯誤。

基于該需求,筆者設(shè)計了一種基于Kettle的無損增量數(shù)據(jù)同步方法,其流程如圖2所示。以在合并之前需要對A集合中的敏感字段進行加密,加密算法采用Java編寫,在Kettle中導(dǎo)入并調(diào)用生成的接口包。

步驟2:G集合中包含名為flagfield的字段,此為合并記錄控件產(chǎn)生的字段,表示比較結(jié)果。其有4個值:deleted(已刪除)、new(新增)、changed(有更新)、identical(相等)。為了便于之后比較以及縮小目標數(shù)據(jù)庫的存儲空間,對這幾個值進行映射變換得到集合H。映射方式如表2所示。

步驟3:根據(jù)flagfield字段過濾H集合中的記錄,其中flagfield值為空的記錄為沒有變化的數(shù)據(jù)集合,不作操作,flagfield值不為空的記錄為有變化的數(shù)據(jù)集合T,繼續(xù)下一步操作。

步驟4:向T集合中的記錄添加當前系統(tǒng)時間字段,作為目標數(shù)據(jù)庫中的同步時間s_time(在流程開始前,需要先在目標數(shù)據(jù)庫中建立相應(yīng)表結(jié)構(gòu),并額外增加flagfield和s_time兩個字段用來標記當前記錄的操作性質(zhì)和同步時間),接下來執(zhí)行過濾記錄控件,其中對于flagfield值為“I”的記錄集合,在目標數(shù)據(jù)庫中執(zhí)行插入操作,對于flagfield值為“D”的記錄集合,在目標數(shù)據(jù)庫中執(zhí)行更新flagfield及s_time字段值操作。根據(jù)Kettle控件特性,這兩種情況可以合并為一個控件執(zhí)行,也可以分開。另外,獲取系統(tǒng)當前時間步驟也可放在add步驟之前。flagfield值為“U”的記錄集合F由于需要記錄歷史數(shù)據(jù),不能只進行更新操作,需要進行下一步處理。

步驟5:對集合F進行字段選擇,留下主鍵,然后根據(jù)主鍵逐條獲取目標數(shù)據(jù)庫中與主鍵字段相等的記錄,構(gòu)成集合R,最后將R插入到目標數(shù)據(jù)庫對應(yīng)表的更新記錄表中。因為Kettle是并行批量執(zhí)行的,所以需要等步驟5完成后才能進行下一步操作,即步驟6的目標數(shù)據(jù)表更新操作。

步驟6:對集合R進行字段選擇,留下主鍵,然后根據(jù)主鍵逐條獲取源數(shù)據(jù)庫中與主鍵字段相等的記錄,構(gòu)成集合U,最后將集合U更新到目標數(shù)據(jù)庫表中,與步驟1相同,在更新前需要對U集合中的敏感字段進行加密。

4結(jié)語

本文提出的無損增量數(shù)據(jù)同步方法在實際應(yīng)用中具有一定參考價值,在小數(shù)據(jù)量、對實時性要求較低且需要完整記錄變化數(shù)據(jù)的情景下,能夠很好地滿足無損數(shù)據(jù)采集需求,對接下來的數(shù)據(jù)時間切片分析起著重要作用。然而,本方法也存在著一定局限性,即需要每次對數(shù)據(jù)進行全量比對,在數(shù)據(jù)量較大或僅增量更新(如一卡通消費)的情形下則不宜使用。

猜你喜歡
數(shù)據(jù)采集
Web網(wǎng)絡(luò)大數(shù)據(jù)分類系統(tǒng)的設(shè)計與改進
CAN總線通信技術(shù)在電梯監(jiān)控系統(tǒng)中的應(yīng)用
基于大型嵌入式系統(tǒng)的污水檢測系統(tǒng)設(shè)計
社會保障一卡通數(shù)據(jù)采集與整理技巧
基于AVR單片機的SPI接口設(shè)計與實現(xiàn)
CS5463在植栽用電子鎮(zhèn)流器老化監(jiān)控系統(tǒng)中的應(yīng)用
大數(shù)據(jù)時代高校數(shù)據(jù)管理的思考
科技視界(2016年18期)2016-11-03 22:51:40
鐵路客流時空分布研究綜述
基于廣播模式的數(shù)據(jù)實時采集與處理系統(tǒng)
軟件工程(2016年8期)2016-10-25 15:54:18
通用Web表單數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)
軟件工程(2016年8期)2016-10-25 15:52:53
主站蜘蛛池模板: 亚洲伦理一区二区| 欧美A级V片在线观看| 亚洲精品无码在线播放网站| 日韩欧美在线观看| 日韩最新中文字幕| 久久久四虎成人永久免费网站| 欧美日韩理论| 另类欧美日韩| 青青热久免费精品视频6| 成年人免费国产视频| 久久天天躁狠狠躁夜夜躁| 亚洲中文字幕97久久精品少妇| 激情综合激情| 55夜色66夜色国产精品视频| 五月天福利视频| 伊人91视频| 伊人成人在线| 18禁色诱爆乳网站| 伊人久综合| 超碰91免费人妻| 国产成人a在线观看视频| 激情无码字幕综合| 国产黄色爱视频| 久久久成年黄色视频| 国产精品成人AⅤ在线一二三四| 午夜性爽视频男人的天堂| 国产系列在线| 国产成人久视频免费| 亚洲最大在线观看| 91视频日本| 亚洲美女一区| 国产小视频免费观看| 亚洲另类第一页| 9966国产精品视频| 色婷婷亚洲十月十月色天| 亚洲国产精品日韩av专区| 18禁黄无遮挡网站| 2021国产精品自产拍在线| 亚洲综合在线最大成人| 亚洲成人精品在线| 在线日本国产成人免费的| 日韩东京热无码人妻| 伊人国产无码高清视频| 免费中文字幕一级毛片| 免费人成视网站在线不卡| 香蕉精品在线| 日韩美毛片| 国产主播在线一区| 亚洲国产天堂久久九九九| 欧美在线精品怡红院| 思思热在线视频精品| 国产精品妖精视频| 精品五夜婷香蕉国产线看观看| 国产免费怡红院视频| 亚洲一区网站| 久久久久人妻一区精品色奶水| 九九这里只有精品视频| 亚洲欧美一区二区三区麻豆| 国产精品中文免费福利| 免费国产不卡午夜福在线观看| 欧美自慰一级看片免费| 日本午夜网站| 免费无码AV片在线观看国产| 风韵丰满熟妇啪啪区老熟熟女| 大陆精大陆国产国语精品1024| 九色视频在线免费观看| 欧美笫一页| 亚洲天堂网在线观看视频| 国产精品无码制服丝袜| 奇米精品一区二区三区在线观看| 久久女人网| 国产91高跟丝袜| 久久青草精品一区二区三区| 91亚洲免费视频| 国产小视频a在线观看| 日韩中文字幕亚洲无线码| 亚洲天堂日韩av电影| 亚洲精品国产乱码不卡| 性色生活片在线观看| 在线观看免费AV网| 91偷拍一区| 国产精品冒白浆免费视频|