數(shù)據(jù)增量抽取轉(zhuǎn)換與分發(fā)系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)增量抽取轉(zhuǎn)換與分發(fā)系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)在人力資源和社會保障業(yè)務(wù)的深入應(yīng)用,業(yè)務(wù)系統(tǒng)無論是在數(shù)據(jù)流量、數(shù)據(jù)處理量或是數(shù)據(jù)存儲量上都變得越來越大。業(yè)務(wù)系統(tǒng)的穩(wěn)定與否,系統(tǒng)的保護和數(shù)據(jù)的保護是否健全,已成為影響人力資源和社會保障業(yè)務(wù)系統(tǒng)正常開展的關(guān)鍵問題?,F(xiàn)有的系統(tǒng)數(shù)據(jù)的安全性不能保證,抽取速度低,不能滿足大數(shù)據(jù)分析業(yè)務(wù)的需求。
[0003]在實際業(yè)務(wù)中,作為源數(shù)據(jù)庫的生產(chǎn)庫和作為目標數(shù)據(jù)庫的同步庫在數(shù)據(jù)庫類型、數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)表的字段結(jié)構(gòu)等方面存在著較大的差異,單一的同步復制不能滿足這類復雜的同步需求。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的就是為了解決上述問題,提供一種數(shù)據(jù)增量抽取轉(zhuǎn)換與分發(fā)系統(tǒng)及方法,采用日志分析技術(shù)和ETL相結(jié)合的技術(shù),實現(xiàn)了實時捕獲源數(shù)據(jù)庫的增量數(shù)據(jù),對增量數(shù)據(jù)進行轉(zhuǎn)換處理,最后以準實時的方式裝載到目標同步庫中。
[0005]為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0006]數(shù)據(jù)增量抽取轉(zhuǎn)換與分發(fā)系統(tǒng),包括:
[0007]抽取轉(zhuǎn)換設(shè)計器,首先對源數(shù)據(jù)庫的數(shù)據(jù)源進行定義,設(shè)計轉(zhuǎn)換規(guī)則然后定義數(shù)據(jù)目標,將設(shè)計完成的轉(zhuǎn)換規(guī)則包裝成KTR文件,通過節(jié)點連接形成的流,將數(shù)據(jù)信息或字段在模塊之間進行傳送;
[0008]抽取轉(zhuǎn)換執(zhí)行器,實時捕獲源數(shù)據(jù)庫的增量數(shù)據(jù),并且分析增量數(shù)據(jù)的來源,將增量數(shù)據(jù)交給服務(wù)器,服務(wù)器分析得到的信息并選擇調(diào)用對應(yīng)的轉(zhuǎn)換規(guī)則進行轉(zhuǎn)換處理;批量的執(zhí)行KTR文件;
[0009]抽取轉(zhuǎn)換監(jiān)控單元,能夠監(jiān)測規(guī)則的運行情況和控制數(shù)據(jù)同步的開始和停止,監(jiān)測每一條轉(zhuǎn)換規(guī)則當前是否正在進行數(shù)據(jù)同步,最近一次同步的數(shù)據(jù)量;另外,能夠控制服務(wù)器的運行或停止,從而達到控制數(shù)據(jù)同步的運行或停止的效果。
[0010]所述抽取轉(zhuǎn)換設(shè)計器提供了圖形化的編輯界面,能夠以圖形化的方式定義源數(shù)據(jù)庫和目標數(shù)據(jù)庫,并設(shè)計轉(zhuǎn)換規(guī)則;包括:
[0011]定義數(shù)據(jù)源模塊,對數(shù)據(jù)源進行定義,定義源數(shù)據(jù)庫或中間庫的連接信息;
[0012]轉(zhuǎn)換規(guī)則設(shè)計模塊,能夠重命名字段,將源數(shù)據(jù)表中需要的字段重新命名后映射到目標表中;篩選字段,包括選擇字段和刪除字段;改變數(shù)據(jù)類型;改變字段精度;拆分字段;新增字段,在源數(shù)據(jù)表的基礎(chǔ)上增加新的字段;字符串替換;
[0013]定義數(shù)據(jù)目標模塊,編輯數(shù)據(jù)目標的連接信息,定義需要轉(zhuǎn)換的字段,選擇數(shù)據(jù)庫的類型。
[0014]所述抽取轉(zhuǎn)換執(zhí)行器,利用Oracle stream技術(shù)捕獲增量數(shù)據(jù)并調(diào)用Kettle API執(zhí)行設(shè)計好的KTR文件來實現(xiàn)對源數(shù)據(jù)庫增量數(shù)據(jù)的實時抽取和清洗轉(zhuǎn)換,并實時地裝載到目標數(shù)據(jù)庫中。
[0015]所述抽取轉(zhuǎn)換執(zhí)行器包括:
[0016]捕獲增量數(shù)據(jù)模塊,實時捕獲源數(shù)據(jù)庫的增量數(shù)據(jù),并且分析增量數(shù)據(jù)的來源;給應(yīng)用進程配置一個處理函數(shù);捕獲進程會挖掘?qū)υ磾?shù)據(jù)庫產(chǎn)生變化的歸檔日志,捕獲到增量數(shù)據(jù),并且將增量數(shù)據(jù)暫存到消息隊列中;
[0017]TCP消息發(fā)送模塊,在捕獲增量數(shù)據(jù)模塊給應(yīng)用進程配置的處理函數(shù)中識別增量數(shù)據(jù)的操作類型,所述操作類型包括插入、更新或刪除,根據(jù)操作類型的不同調(diào)用不同的存儲過程,并且在處理函數(shù)中使用TCP協(xié)議將增量數(shù)據(jù)以字符串的形式發(fā)送給服務(wù)器;
[0018]數(shù)據(jù)暫存模塊,利用一個能釋放的TXT文件作為臨時存儲空間,存儲發(fā)送過來的TCP消息,并作為KTR的表輸入段在抽取轉(zhuǎn)換執(zhí)行器中執(zhí)行;當增量數(shù)據(jù)發(fā)送到服務(wù)器后會以二維表的結(jié)構(gòu)暫時存儲到TXT文件中;對處理過的TXT文件,系統(tǒng)會將其刪除,節(jié)約存儲空間;
[0019]執(zhí)行轉(zhuǎn)換模塊,執(zhí)行設(shè)計好的轉(zhuǎn)換規(guī)則;在需要執(zhí)行這些轉(zhuǎn)換的時候,通過調(diào)用對應(yīng)的API來執(zhí)行這些轉(zhuǎn)換,批量的執(zhí)行KTR文件,并將轉(zhuǎn)換后的數(shù)據(jù)裝載到目標數(shù)據(jù)庫中。
[0020]所述抽取轉(zhuǎn)換設(shè)計器和所述抽取轉(zhuǎn)換執(zhí)行器都是基于ETL實現(xiàn)的。
[0021]所述抽取轉(zhuǎn)換監(jiān)控單元還監(jiān)測服務(wù)器的內(nèi)存或CPU的運行情況,根據(jù)這些信息來判斷服務(wù)器所受壓力是否能夠支撐大數(shù)據(jù)的同步。
[0022]所述抽取轉(zhuǎn)換監(jiān)控單元包括:
[0023]日志解析模塊,監(jiān)控日志記錄了抽取轉(zhuǎn)換設(shè)計器設(shè)計轉(zhuǎn)換規(guī)則的過程和抽取轉(zhuǎn)換執(zhí)行器的執(zhí)行狀態(tài),日志解析模塊解析監(jiān)控日志,將具體的信息反饋給用戶;
[0024]監(jiān)控信息反饋模塊,監(jiān)測規(guī)則的運行情況和控制數(shù)據(jù)同步的開始和停止,將監(jiān)控日志中的監(jiān)控信息展現(xiàn)給用戶。
[0025]所述監(jiān)控日志用XML語言規(guī)范地記錄了抽取轉(zhuǎn)換設(shè)計器設(shè)計轉(zhuǎn)換規(guī)則的過程和抽取轉(zhuǎn)換執(zhí)行器的執(zhí)行狀態(tài);并且用XML解析器解析監(jiān)控日志。
[0026]所述監(jiān)控信息反饋模塊能夠?qū)⒈O(jiān)控日志中的信息以Web的形式展現(xiàn)給用戶。
[0027]所述監(jiān)控信息反饋模塊展現(xiàn)給用戶的監(jiān)控信息包括,源數(shù)據(jù)庫和目標庫的連接信息,具體包括源數(shù)據(jù)庫和目標數(shù)據(jù)庫的IP地址、源數(shù)據(jù)庫和目標數(shù)據(jù)庫的實例名、源數(shù)據(jù)庫和目標數(shù)據(jù)庫類型、連接用戶和連接口令;
[0028]單個轉(zhuǎn)換規(guī)則的運行情況,單個轉(zhuǎn)換規(guī)則是否正在運行,對于這個規(guī)則的最近一個數(shù)據(jù)同步的開始時間、結(jié)束時間和同步的數(shù)據(jù)量;
[0029]目標數(shù)據(jù)庫的同步情況,監(jiān)測目標數(shù)據(jù)庫有哪些規(guī)則開啟了同步,最近一次同步的開始時間、結(jié)束時間、同步數(shù)據(jù)量和歷史最大同步數(shù)據(jù)量;
[0030]服務(wù)器的負載情況,服務(wù)器的內(nèi)存、CPU運行情況,根據(jù)這些信息來判斷服務(wù)器所受的壓力是否能夠支撐大數(shù)據(jù)的同步。
[0031]—種數(shù)據(jù)增量抽取轉(zhuǎn)換與分發(fā)系統(tǒng)的方法,包括:
[0032]步驟一,首先對源數(shù)據(jù)庫的數(shù)據(jù)源進行定義,設(shè)計轉(zhuǎn)換規(guī)則然后定義數(shù)據(jù)目標,將設(shè)計完成的轉(zhuǎn)換規(guī)則包裝成KTR文件,通過節(jié)點連接形成的流,將數(shù)據(jù)信息或字段在模塊之間進行傳送;
[0033]步驟二,實時捕獲源數(shù)據(jù)庫的增量數(shù)據(jù),并且分析增量數(shù)據(jù)的來源,將增量數(shù)據(jù)交給服務(wù)器,服務(wù)器分析得到的信息并選擇調(diào)用對應(yīng)的轉(zhuǎn)換規(guī)則進行轉(zhuǎn)換處理;批量的執(zhí)行KTR文件;
[0034]步驟三,能夠監(jiān)測規(guī)則的運行情況和控制數(shù)據(jù)同步的開始和停止,監(jiān)測每一條轉(zhuǎn)換規(guī)則當前是否正在進行數(shù)據(jù)同步,最近一次同步的數(shù)據(jù)量;另外,能夠控制服務(wù)器的運行或停止,從而達到控制數(shù)據(jù)同步的運行或停止的效果;監(jiān)控日志記錄了所述步驟一設(shè)計轉(zhuǎn)換規(guī)則的過程和步驟二的執(zhí)行狀態(tài),解析監(jiān)控日志,將具體的信息反饋給用戶;監(jiān)測規(guī)則的運行情況和控制數(shù)據(jù)同步的開始和停止,將監(jiān)控日志中的監(jiān)控信息展現(xiàn)給用戶。
[0035]所述步驟二包括:
[0036]實時捕獲源數(shù)據(jù)庫的增量數(shù)據(jù),并且分析增量數(shù)據(jù)的來源;給應(yīng)用進程配置一個處理函數(shù);捕獲進程會挖掘?qū)υ磾?shù)據(jù)庫產(chǎn)生變化的歸檔日志,捕獲到增量數(shù)據(jù),并且將增量數(shù)據(jù)暫存到消息隊列中;
[0037]在捕獲增量數(shù)據(jù)模塊給應(yīng)用進程配置的處理函數(shù)中識別增量數(shù)據(jù)的操作類型,所述操作類型包括插入、更新或刪除,根據(jù)操作類型的不同調(diào)用不同的存儲過程,并且在處理函數(shù)中使用TCP協(xié)議將增量數(shù)據(jù)以字符串的形式發(fā)送給服務(wù)器;
[0038]利用一個能釋放的TXT文件作為臨時存儲空間,存儲發(fā)送過來的TCP消息,并作為KTR的表輸入段在抽取轉(zhuǎn)換執(zhí)行器中執(zhí)行;當增量數(shù)據(jù)發(fā)送到服務(wù)器后會以二維表的結(jié)構(gòu)暫時存儲到TXT文件中;對處理過的TXT文件,系統(tǒng)會將其刪除,節(jié)約存儲空間;
[0039]執(zhí)行設(shè)計好的轉(zhuǎn)換規(guī)則;在需要執(zhí)行這些轉(zhuǎn)換的時候,通過調(diào)用對應(yīng)的API來執(zhí)行這些轉(zhuǎn)換,批量的執(zhí)行KTR文件,并將轉(zhuǎn)換后的數(shù)據(jù)裝載到目標數(shù)據(jù)庫中。
[0040]本發(fā)明的有益效果:
[0041]1.同步的實時性,日志分析技術(shù)為實時同步提供了強大的技術(shù)支撐;提供了