刁樹民,李美珊,張曉勇,金喜波
(1.佳木斯大學(xué)信息學(xué)院,黑龍江 佳木斯154007;2.黑龍江省政府信息中心,黑龍江 哈爾濱150030)
在裝備制造業(yè)高度信息化時(shí)代,產(chǎn)業(yè)協(xié)作鏈需要聚合協(xié)同設(shè)計(jì)和協(xié)作生產(chǎn)企業(yè)生產(chǎn)基礎(chǔ)數(shù)據(jù)資源.大多行業(yè)盟主企業(yè)經(jīng)過多年的發(fā)展,積累了豐富的生產(chǎn)和管理數(shù)據(jù),可以通過裝備制造業(yè)協(xié)作服務(wù)平臺(tái)供盟員企業(yè)共享.但是由于歷史發(fā)展不同,企業(yè)數(shù)據(jù)都按自有特征存放,存儲(chǔ)形式多樣化,大致為自定義的、異構(gòu)分布數(shù)據(jù).因此,各種數(shù)據(jù)庫(kù)結(jié)構(gòu)的差異,操作平臺(tái)的差異、概念和術(shù)語(yǔ)的差異等問題,為今天的大數(shù)據(jù)共享設(shè)置了障礙.面對(duì)這樣的異構(gòu)數(shù)據(jù),信息服務(wù)平臺(tái)就要對(duì)來自不同的異構(gòu)數(shù)據(jù)源的信息進(jìn)行處理和集成,存儲(chǔ)于一個(gè)語(yǔ)義一致的數(shù)據(jù)庫(kù)中,使異構(gòu)數(shù)據(jù)變成公認(rèn)的同識(shí)數(shù)據(jù).本文依據(jù)數(shù)據(jù)處理方法結(jié)合實(shí)際經(jīng)驗(yàn),對(duì)分布于異地、跨平臺(tái)的異構(gòu)數(shù)據(jù)源進(jìn)行集成,按照某種數(shù)據(jù)轉(zhuǎn)換規(guī)則,最后把標(biāo)準(zhǔn)格式數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)庫(kù)中.
異構(gòu)數(shù)據(jù)交換需要完成數(shù)據(jù)析取和轉(zhuǎn)換兩大功能.首先進(jìn)行數(shù)據(jù)析取,主要是確定數(shù)據(jù)源和采集原始數(shù)據(jù)兩個(gè)作用.數(shù)據(jù)析取的實(shí)現(xiàn)設(shè)置一個(gè)數(shù)據(jù)接口完成,析取的數(shù)據(jù)分布于不同的外網(wǎng)、操作平臺(tái)、數(shù)據(jù)庫(kù)和數(shù)據(jù)文件.然后,通過分析不同的數(shù)據(jù)源,對(duì)各種元數(shù)據(jù)的分析,為后續(xù)的數(shù)據(jù)轉(zhuǎn)換過程奠定基礎(chǔ).其次,數(shù)據(jù)轉(zhuǎn)換功能主要解決數(shù)據(jù)的規(guī)則定義和數(shù)據(jù)格式的轉(zhuǎn)換問題[1].
總之,完成異構(gòu)數(shù)據(jù)交換主要需要以下四個(gè)步驟:
(1)連接異構(gòu)數(shù)據(jù)源
首先確定源數(shù)據(jù)庫(kù),然后進(jìn)行連接操作;根據(jù)用戶定義的異構(gòu)數(shù)據(jù)類型、數(shù)據(jù)傳遞方式和驗(yàn)證信息,獲得準(zhǔn)確的異構(gòu)源數(shù)據(jù)的必要信息.連接后,可以執(zhí)行析取異地遠(yuǎn)程數(shù)據(jù)功能;然后緩存到元數(shù)據(jù)庫(kù)中.
(2)設(shè)置析取規(guī)則
第一步設(shè)置過濾條件;依據(jù)用戶需求定義字段過濾條件表達(dá)式,編寫字段之間的內(nèi)在聯(lián)系,確定最終的過濾條件;然后分析和設(shè)定分組;給出分組表達(dá)式,把析取的關(guān)聯(lián)字段給予有序分組;最后設(shè)計(jì)排序規(guī)則;分析和編寫排序表達(dá)式,選擇相關(guān)字段為升序或降序序列.
(3)數(shù)據(jù)清洗
此功能是全面對(duì)異構(gòu)元數(shù)據(jù)執(zhí)行有效性檢查,發(fā)現(xiàn)無效記錄、重復(fù)記錄、數(shù)據(jù)項(xiàng)不全的數(shù)據(jù)進(jìn)行清理.在數(shù)據(jù)清洗與應(yīng)用行業(yè)領(lǐng)域相關(guān)性很強(qiáng),通用性受到局限,注重對(duì)重復(fù)記錄的清除和缺失數(shù)據(jù)的補(bǔ)充.
(4)轉(zhuǎn)換規(guī)則的制定
該功能是將析取的數(shù)據(jù)信息按照元數(shù)據(jù)庫(kù)中標(biāo)準(zhǔn)數(shù)據(jù)表信息轉(zhuǎn)換到目標(biāo)數(shù)據(jù)庫(kù),包含一些數(shù)據(jù)操作:過濾、合并、匯總、轉(zhuǎn)換等.數(shù)據(jù)加工必須遵循數(shù)據(jù)的確定性、可靠性和完整性,為后續(xù)過程保證正確支持[2].
按照上述分析,將異構(gòu)數(shù)據(jù)交換系統(tǒng)分為3 個(gè)過程:源數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)、目標(biāo)數(shù)據(jù);重點(diǎn)是轉(zhuǎn)換數(shù)據(jù)部分(見圖1).
圖1 異構(gòu)數(shù)據(jù)交換系統(tǒng)架構(gòu)設(shè)計(jì)示意圖
系統(tǒng)架構(gòu)圖中數(shù)據(jù)轉(zhuǎn)換模塊部分把源數(shù)據(jù)和目標(biāo)數(shù)據(jù)隔離,即數(shù)據(jù)集成功能對(duì)圖1 中源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)析取操作,再由數(shù)據(jù)轉(zhuǎn)換模塊執(zhí)行數(shù)據(jù)轉(zhuǎn)換功能,然后把結(jié)果數(shù)據(jù)載入到目標(biāo)數(shù)據(jù)庫(kù)中.在數(shù)據(jù)轉(zhuǎn)換三步曲中:抽取、轉(zhuǎn)換、加載,均有元數(shù)據(jù)庫(kù)的元數(shù)據(jù)作為重要參數(shù)介入轉(zhuǎn)換.用戶制定轉(zhuǎn)換要義,轉(zhuǎn)換過程可以從元數(shù)據(jù)模型得到目標(biāo)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)數(shù)據(jù)構(gòu)造要素,用戶只需在定義界面上確定析取規(guī)則、轉(zhuǎn)換規(guī)則、裝載規(guī)則等規(guī)則,定義從源數(shù)據(jù)到目標(biāo)數(shù)據(jù)的相關(guān)字段映射等內(nèi)涵關(guān)聯(lián),之后把系列規(guī)則和關(guān)系加到元數(shù)據(jù)管理模型中.通過用戶自定義若干規(guī)則和關(guān)系,與數(shù)據(jù)庫(kù)共同交互完成數(shù)據(jù)交換業(yè)務(wù).
本系統(tǒng)異構(gòu)數(shù)據(jù)集成流程(部分)設(shè)計(jì)如下見圖2:
數(shù)據(jù)轉(zhuǎn)換過程首先由系統(tǒng)驗(yàn)證遠(yuǎn)程源數(shù)據(jù)庫(kù);確認(rèn)后,馬上析取源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)的映射數(shù)據(jù)表相關(guān)字段數(shù)據(jù),元數(shù)據(jù)的關(guān)鍵信息以直觀的用戶界面執(zhí)行對(duì)應(yīng)顯示;在數(shù)據(jù)抽取步驟中,確切定義必要的析取規(guī)則來確定相關(guān)的析取數(shù)據(jù)特征;如定義投影字段、選擇過濾條件、選擇分組條件和選擇排序條件等;然后,將抽取數(shù)據(jù)暫存入元數(shù)據(jù)庫(kù)中,臨時(shí)集中等待處理;第三步由系統(tǒng)執(zhí)行轉(zhuǎn)換過程,此過程用戶通過設(shè)置程序算法、計(jì)算公式和轉(zhuǎn)換函數(shù)等相關(guān)衍生定義來完成有效的數(shù)據(jù)映射,涉及相關(guān)字段合并與拆分、若干字段的語(yǔ)義集合、內(nèi)涵關(guān)系、處置重復(fù)記錄、缺省值發(fā)現(xiàn)等處理操作;完成以上操作后就能獲得規(guī)范的、符合的標(biāo)準(zhǔn)數(shù)據(jù),也就是獲得了需要裝載的數(shù)據(jù).在標(biāo)準(zhǔn)數(shù)據(jù)加載過程中,通過系統(tǒng)設(shè)計(jì)的拖拽的技術(shù)建立源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換規(guī)則,逐步轉(zhuǎn)換到最終數(shù)據(jù)庫(kù)中.
本系統(tǒng)以Web Services 作為基礎(chǔ)架構(gòu)的數(shù)據(jù)傳輸技術(shù),負(fù)載異構(gòu)數(shù)據(jù)的數(shù)據(jù)集成.圖3 描述了本架構(gòu)的數(shù)據(jù)集成模塊總體功能.本架構(gòu)整體涵蓋了多個(gè)分布的異構(gòu)子模塊和相關(guān)數(shù)據(jù)轉(zhuǎn)換模塊.遠(yuǎn)程異構(gòu)子模塊通過Web Services 服務(wù)器實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能,程序模塊隱藏了轉(zhuǎn)換過程全部細(xì)節(jié),僅提供接口參數(shù);它能執(zhí)行數(shù)據(jù)轉(zhuǎn)換操過程的請(qǐng)求、及時(shí)響應(yīng)操作.由此可見,它是通過Web Services抽取數(shù)據(jù),然后向下一步的數(shù)據(jù)轉(zhuǎn)換過程提供源數(shù)據(jù).數(shù)據(jù)集成模塊構(gòu)架如下圖圖3:
圖2 數(shù)據(jù)轉(zhuǎn)換流程圖
圖3 數(shù)據(jù)集成模塊構(gòu)架示意圖
元數(shù)據(jù)含義是符合目標(biāo)數(shù)據(jù)特征的中介數(shù)據(jù),關(guān)系標(biāo)準(zhǔn)數(shù)據(jù)的構(gòu)造、內(nèi)涵、位置、狀態(tài)和其它屬性信息.元數(shù)據(jù)本身表達(dá)了數(shù)據(jù)的要素,對(duì)數(shù)據(jù)屬性進(jìn)行了合理描述,即可完成對(duì)數(shù)據(jù)的快速定位與高效管理.
元數(shù)據(jù)管理業(yè)務(wù)流程如圖4 所示;首先通過用戶接口模塊連接元數(shù)據(jù)庫(kù),用戶通過元數(shù)據(jù)讀取模塊功能訪問元數(shù)據(jù)庫(kù),方便為抽取數(shù)據(jù)時(shí)提供企業(yè)數(shù)據(jù)庫(kù)的抽取數(shù)據(jù).得到數(shù)據(jù)樣本或者客戶端異構(gòu)數(shù)據(jù)源返回的信息來進(jìn)一步完善元數(shù)據(jù)的屬性要素,利用元數(shù)據(jù)配置和寫入模塊來完成元數(shù)據(jù)管理.
圖4 元數(shù)據(jù)管理模塊示意圖
元數(shù)據(jù)可以對(duì)裝備制造行業(yè)的分布式異構(gòu)數(shù)據(jù)實(shí)施集中布局.首先元數(shù)據(jù)庫(kù)應(yīng)用成熟的關(guān)系數(shù)據(jù)庫(kù)工具(Oracle,SQL Server,DB2 等)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),存儲(chǔ)目標(biāo)數(shù)據(jù)屬性信息;然后依據(jù)行業(yè)用戶元數(shù)據(jù)標(biāo)準(zhǔn)定義并且創(chuàng)建符合要求的數(shù)據(jù)表;產(chǎn)生的標(biāo)志性目標(biāo)數(shù)據(jù)表就是行業(yè)聯(lián)盟分布式異構(gòu)數(shù)據(jù)的元數(shù)據(jù)信息表(DATA_SOURCE_INFO),涵蓋企業(yè)分布式異構(gòu)數(shù)據(jù)構(gòu)造的全部標(biāo)準(zhǔn)字段特征要點(diǎn).系統(tǒng)元數(shù)據(jù)特征的描述貼近度可以波及行業(yè)用戶對(duì)元數(shù)據(jù)的認(rèn)識(shí)程度,同時(shí)也羅列出對(duì)此元數(shù)據(jù)說明的數(shù)據(jù)與其他數(shù)據(jù)本質(zhì)區(qū)別特點(diǎn)[3].
開發(fā)環(huán)境配置:Java 語(yǔ)言:JavaSE6.0;開發(fā)工具:eclipse 4.1;應(yīng)用服務(wù)器:Tomcat 6.0;開發(fā)框架:Struts 2.3 +Spring 3.1 +Hibernate 4.1.
服務(wù)器端配置的操作系統(tǒng):Windows7;數(shù)據(jù)庫(kù):MySQL 6.1;應(yīng)用服務(wù)器:Tomcat 6.0;運(yùn)行支撐:JDK 6.
客戶端配有操作系統(tǒng):Windows7;IE 瀏覽器6.0 以上.
網(wǎng)絡(luò)平臺(tái)服務(wù)器端或用戶客戶端處于何種狀態(tài),WebServices 都能提供了一個(gè)與平臺(tái)無關(guān)的、面向消息的、基于分布式的作用,系統(tǒng)Web 功能定會(huì)發(fā)揮自定的方式連接遠(yuǎn)程客戶端接口.并以Web技術(shù)方式設(shè)計(jì)的應(yīng)用程序,足以創(chuàng)建功能更強(qiáng)大的Web 服務(wù),并使用WebServices 應(yīng)用程序作為整體功能作用.利用其功能特點(diǎn),本模塊使用Web Services 來包裝行業(yè)群分布式異構(gòu)數(shù)據(jù)源;本系統(tǒng)實(shí)際利用eclipse 4.1 開發(fā),JavaSE6.0 語(yǔ)言,MySQL 6.1作為元數(shù)據(jù)庫(kù).
2.3.1 數(shù)據(jù)析取功能的實(shí)現(xiàn)
數(shù)據(jù)集成模塊是從各個(gè)外數(shù)據(jù)源中析取數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行規(guī)范,完成該功能的函數(shù):(1)合并字段函數(shù)public boolMerge():將源數(shù)據(jù)庫(kù)中的多個(gè)字段的值合并成一個(gè)字段的值加載到數(shù)據(jù)倉(cāng)庫(kù)中;(2)字段拆分函數(shù)publicboolSplit():把源庫(kù)數(shù)據(jù)表中的對(duì)應(yīng)字段屬性值分解出若干個(gè)字段值加載到目標(biāo)數(shù)據(jù)庫(kù)中;(3)衍生變換函數(shù)publicboolCreateTable():依據(jù)析取規(guī)則將源庫(kù)數(shù)據(jù)表中的關(guān)鍵字段及其屬性值抽取出來創(chuàng)建新的數(shù)據(jù)表.
2.3.2 數(shù)據(jù)轉(zhuǎn)換功能的實(shí)現(xiàn)
系統(tǒng)數(shù)據(jù)集成是對(duì)行業(yè)企業(yè)群數(shù)據(jù)進(jìn)行再轉(zhuǎn)換的過程,僅僅依靠系統(tǒng)需求按照定義轉(zhuǎn)換規(guī)則面對(duì)源庫(kù)中多個(gè)表、多個(gè)字段統(tǒng)一執(zhí)行操作,通過定義的引用來實(shí)現(xiàn)轉(zhuǎn)換規(guī)則的定制,從而達(dá)到用戶需求標(biāo)準(zhǔn)數(shù)據(jù)的狀態(tài)和規(guī)范.
具體工作是由用戶設(shè)置好投影條件、過濾條件、分組條件和排序條件,數(shù)據(jù)轉(zhuǎn)換功能實(shí)現(xiàn)函數(shù)是:public string GenaralQueryMysql(DataTypetheProjeet,DataTypetheFilter,DataType theGroupBy,Data-Typethesort);其中:theProjeet 參數(shù)設(shè)置了投影的字段,theFilter 參數(shù)設(shè)置了的過濾條件,theGroupBy 參數(shù)設(shè)置了分組條件,theSort 參數(shù)設(shè)置了排序條件.
2.3.3 數(shù)據(jù)裝載功能的實(shí)現(xiàn)
在選擇了源數(shù)據(jù)庫(kù)表字段和目標(biāo)數(shù)據(jù)庫(kù)表字段后,而且設(shè)置好了它們之間轉(zhuǎn)換規(guī)則之后,源數(shù)據(jù)就可以轉(zhuǎn)換為目的數(shù)據(jù),執(zhí)行成功數(shù)據(jù)即可加載到目標(biāo)數(shù)據(jù)庫(kù)中.其裝載接口函數(shù)的功能即可完成數(shù)據(jù)裝載,該函數(shù)Public BoolImportData()功能:實(shí)現(xiàn)源數(shù)據(jù)庫(kù)數(shù)據(jù)與目標(biāo)數(shù)據(jù)庫(kù)數(shù)據(jù)的裝入與加載.
通過對(duì)異構(gòu)數(shù)據(jù)交換技術(shù)的研究,加深了對(duì)Web Services 體系結(jié)構(gòu)的了解和應(yīng)用,對(duì)異構(gòu)數(shù)據(jù)庫(kù)技術(shù)和元數(shù)據(jù)技術(shù)的開發(fā)應(yīng)用及應(yīng)用過程有了初步的運(yùn)用.完成了基于Web Services 對(duì)SQL Server、Oracle、等數(shù)據(jù)庫(kù)的數(shù)據(jù)析取,基于本系統(tǒng)功能對(duì)源庫(kù)異構(gòu)數(shù)據(jù)轉(zhuǎn)換的實(shí)施,創(chuàng)建了操作快捷、功能強(qiáng)大、界面清晰的數(shù)據(jù)集成轉(zhuǎn)換工具.
[1] 杜思峰.數(shù)據(jù)交換平臺(tái)中異構(gòu)數(shù)據(jù)轉(zhuǎn)換技術(shù)的研究[D].西安:西安工業(yè)大學(xué),2011.
[2] 洪東忍.基于水廠數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的ETL 技術(shù)研究[J].云南民族大學(xué)學(xué)報(bào),2012,(05):365-369.
[3] 錢大君,吳健平,余柏莨,等.基于元數(shù)據(jù)和web Service 的分布式異構(gòu)數(shù)據(jù)共享平臺(tái)的體系與實(shí)現(xiàn).中國(guó)科技論文在線:http://www.paper.edu.cn.