天地(常州)自動化股份有限公司 王 仁
隨著煤炭行業(yè)信息化的發(fā)展,通過集成的業(yè)務(wù)系統(tǒng)推進(jìn)財務(wù)業(yè)務(wù)一體化,建立包含人、財、物、生產(chǎn)、采購、物資、設(shè)備管理高度集成的“一站式”綜合信息管理平臺,在不影響各業(yè)務(wù)系統(tǒng)正常運(yùn)行的前提下,打破各業(yè)務(wù)系統(tǒng)信息數(shù)據(jù)的壁壘,完成系統(tǒng)的集成整合,通過對各系統(tǒng)的關(guān)鍵數(shù)據(jù)進(jìn)行提取、數(shù)據(jù)的挖掘和分析,為領(lǐng)導(dǎo)決策提供信息支撐,實現(xiàn)各類用戶一次登錄系統(tǒng)按需享用資源的綜合信息平臺,成為各大煤炭集團(tuán)公司綜合信息化管理平臺建設(shè)的一種趨勢。煤炭企業(yè)在信息化建設(shè)的過程中,在不同的時期,基于不同的需求,逐步搭建和積累了多個信息系統(tǒng)。這些信息系統(tǒng)建設(shè)滿足單個部門業(yè)務(wù)的需求,承建廠家采用的技術(shù)也不盡相同,因而在搭建“一站式”綜合信息管理平臺過程中,涉及到大量的異構(gòu)數(shù)據(jù)的轉(zhuǎn)換?;谏鲜銮闆r,本文提出一種基于XML格式的數(shù)據(jù)轉(zhuǎn)換方法,通過這種技術(shù)方法,根據(jù)目標(biāo)業(yè)務(wù)實體的復(fù)雜結(jié)構(gòu)和目標(biāo)數(shù)據(jù)實體的數(shù)據(jù)生成規(guī)則,把復(fù)雜的數(shù)據(jù)轉(zhuǎn)換過程分解為一個或多個簡單的數(shù)據(jù)轉(zhuǎn)換單元,解決異構(gòu)系統(tǒng)中數(shù)據(jù)中的轉(zhuǎn)換問題。
XML(Extensible Markup Language,可擴(kuò)展標(biāo)準(zhǔn)語言)是SGML(Standard Generalized Markup Lanuage,標(biāo)準(zhǔn)通用標(biāo)記語言)的子集,其目標(biāo)是允許普通的SGML在web上以目前HTML(Hypertext Markup Language)的方式被服務(wù)、接收和處理。XML被設(shè)計成易于實現(xiàn),且可在SGML和HTML之間互相操作[1]。
XML是一套定義語義標(biāo)記的規(guī)則,這些標(biāo)記將文檔分成許多部件并對這些部件加以標(biāo)識。這些標(biāo)識必須根據(jù)某些通用的原理來創(chuàng)建,XML標(biāo)記描述的是穩(wěn)定內(nèi)容的結(jié)構(gòu)和含義。它具有:可擴(kuò)展性、結(jié)構(gòu)性、平臺獨立性的優(yōu)點[2]。基于這些優(yōu)點,本文將各個業(yè)務(wù)平臺中的數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的XML格式,再將XML格式轉(zhuǎn)換成最終的數(shù)據(jù)庫。
本文介紹的基于XML格式的數(shù)據(jù)轉(zhuǎn)換,基本原則是根據(jù)目標(biāo)業(yè)務(wù)實體的復(fù)雜結(jié)構(gòu)和目標(biāo)數(shù)據(jù)實體的數(shù)據(jù)生成規(guī)則[3],把復(fù)雜的數(shù)據(jù)轉(zhuǎn)換過程分解為一個或多個簡單的數(shù)據(jù)轉(zhuǎn)換單元。這種細(xì)微的數(shù)據(jù)轉(zhuǎn)換單元在本文中稱為映射單元。這種數(shù)據(jù)轉(zhuǎn)換方法,其內(nèi)容主要包括映射單元以及映射單元的分解方法。
業(yè)務(wù)實體的數(shù)據(jù)結(jié)構(gòu)定義,采用數(shù)據(jù)模型來描述業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)[4]。業(yè)務(wù)數(shù)據(jù)定義映射到關(guān)系型數(shù)據(jù)庫中是一組具有主從關(guān)系或關(guān)聯(lián)關(guān)系的表或視圖的集合,因此,業(yè)務(wù)數(shù)據(jù)是一組數(shù)據(jù)集,每個數(shù)據(jù)集是一個二維表結(jié)構(gòu),包括列集和行集。在數(shù)據(jù)轉(zhuǎn)換過程中,數(shù)據(jù)轉(zhuǎn)換的源在本文中稱為源業(yè)務(wù)實體,數(shù)據(jù)轉(zhuǎn)換的目標(biāo)在本文中稱為目標(biāo)業(yè)務(wù)實體;其中源業(yè)務(wù)實體包含的表稱為源表,目標(biāo)業(yè)務(wù)實體包含的表稱為目標(biāo)表[6]。
映射單元的結(jié)構(gòu)屬性包括:編號、名稱、描述、目標(biāo)數(shù)據(jù)表、取數(shù)來源、源數(shù)據(jù)的取數(shù)范圍、源數(shù)據(jù)的分組依據(jù)、映射單元的執(zhí)行條件、執(zhí)行順序、上級映射單元、映射規(guī)則[7]。表1是對映射單元的結(jié)構(gòu)屬性的詳細(xì)描述。
映射單元之間的關(guān)系是由目標(biāo)表間的關(guān)系確定的,主從關(guān)系的數(shù)據(jù)表對應(yīng)的映射單元其關(guān)系也是主從關(guān)系,平行數(shù)據(jù)表對應(yīng)的映射單元其關(guān)系也是平行關(guān)系[5],具體關(guān)系參照圖1所示。
圖1 映射單元關(guān)系圖
映射單元的分解依據(jù)有兩個:
(1)目標(biāo)業(yè)務(wù)實體的數(shù)據(jù)結(jié)構(gòu);
(2)目標(biāo)表的數(shù)據(jù)生成規(guī)則。
表1 映射單元結(jié)構(gòu)屬性
映射單元的分解步驟如下:
(1)識別目標(biāo)業(yè)務(wù)實體的數(shù)據(jù)表組成以及數(shù)據(jù)表之間的關(guān)系:主從和平行。
(2)根據(jù)目標(biāo)業(yè)務(wù)實體的結(jié)構(gòu),從主表到子表依次為每個目標(biāo)表創(chuàng)建映射并設(shè)置單元。
創(chuàng)建映射并設(shè)置單元可進(jìn)一步描述為以下幾個子步驟:
1)設(shè)置映射單元對應(yīng)的目標(biāo)數(shù)據(jù)表;
2)設(shè)置映射單元對應(yīng)的數(shù)據(jù)來源;
3)設(shè)置源數(shù)據(jù)的取數(shù)范圍;
4)設(shè)置源數(shù)據(jù)的分組依據(jù);
5)設(shè)置映射單元的觸發(fā)條件;
6)設(shè)置映射單元的映射規(guī)則。
識別每個目標(biāo)表的數(shù)據(jù)生成規(guī)則,對于同一個目標(biāo)表,如果存在不同數(shù)據(jù)生成規(guī)則(比如數(shù)據(jù)源不同、分組依據(jù)不同、執(zhí)行條件不同、映射規(guī)則不對),要為該數(shù)據(jù)表針對每一個數(shù)據(jù)生成規(guī)則創(chuàng)建多個同級的映射單元;如果該目標(biāo)表存在子表,按照同樣的方式依次為每個子表創(chuàng)建對應(yīng)的映射單元,依次類推。
(3)如果存在同層級的映射單元,對同層級的映射單元進(jìn)行編排順序。
本文為說明此轉(zhuǎn)換方法,以一個抽象的事例及一個具體的事例說明轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換過程。
示例:應(yīng)用系統(tǒng)A中的BizA業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)換為應(yīng)用系統(tǒng)B中的BizB業(yè)務(wù)數(shù)據(jù)。BizA的數(shù)據(jù)結(jié)構(gòu)如表2所示。
表2 BizA的主表:AM_Table
表3 AM_Table的子表:AS_Table
表AM_Table和表AS_Table是主從關(guān)系。BizB的數(shù)據(jù)結(jié)構(gòu)如下:
表4 BizB的主表:BM_Table
表5 BM_Table的子表:BS_Table
表BM_Table和表BS_Table是主從關(guān)系。
該實例是一個典型的數(shù)據(jù)交換的例子,其中BizA是源業(yè)務(wù)實體,BizB為目標(biāo)業(yè)務(wù)實體。BizA和BizB的數(shù)據(jù)轉(zhuǎn)換過程的分解步驟如下:
步驟一:識別目標(biāo)業(yè)務(wù)實體BizB的數(shù)據(jù)結(jié)構(gòu)。
確認(rèn)目標(biāo)業(yè)務(wù)實體BizB有數(shù)據(jù)表BM_Table和BS_Table,而且兩者為主從關(guān)系。
步驟二:創(chuàng)建并設(shè)置映射單元。
(1)創(chuàng)建并設(shè)置主表BM_Tabl對應(yīng)的映射單元;
1)識別數(shù)據(jù)表BM_Tabl的數(shù)據(jù)的生成規(guī)則,只有一種生成規(guī)則:
BM_Col1=AM_Col1
BM_Col2=AM_Col2
BM_Col3=AM_Col3
2)創(chuàng)建主表BM_Tabl對應(yīng)的映射單元BM_TablUnit,并按照圖6步驟設(shè)置屬性如下:
(2)判斷BM_Tabl是否有子表,如果有設(shè)置其子表對應(yīng)的映射單元;
(3)按照主映射單元BM_TablUnit的創(chuàng)建和設(shè)置過程,創(chuàng)建并設(shè)置子表BS_Table的映射單元;
(4)識別數(shù)據(jù)表BS_Table的數(shù)據(jù)的生成規(guī)則,兩種:當(dāng)AS_Col4=0時BS_Col2=AS_Col2,而BS_Col3不參與映射;當(dāng)AS_Col4=1時BS_Col3=AS_Col3,而BS_Col2不參與映射;
(5)針對第一個生成規(guī)則創(chuàng)建BS_Tabl的第一個映射單元BS_TablUnit1,并設(shè)置屬性如下:
(6)針對第二個生成規(guī)則創(chuàng)建BS_Tabl的第一個映射單元BS_TablUnit2,并設(shè)置屬性如下:
步驟三:設(shè)置映射單元的順序。
同一層級映射只有一個映射單元時無需設(shè)置順序,在本實例中BM_TablUnit不需要設(shè)置執(zhí)行順序;如果同一層級有多個映射單元時,需要設(shè)置其相對順序,在本實例中設(shè)置BS_TablUnit1的執(zhí)行順序為1,BS_TablUnit2的執(zhí)行順序為2。數(shù)據(jù)交換系統(tǒng)將根據(jù)映射單元的層級順序和執(zhí)行順序進(jìn)行逐個執(zhí)行映射單元。
使用本文的方法可以把復(fù)雜的數(shù)據(jù)轉(zhuǎn)換過程分解為簡單的映射單元;同時根據(jù)映射單元之間的關(guān)系以及同層級映射單元的執(zhí)行順序可以有規(guī)律的執(zhí)行數(shù)據(jù)轉(zhuǎn)換過程;而且映射單元具有較好的可配置型和擴(kuò)展性。本文方法對煤礦企業(yè)尤其是大型煤業(yè)集團(tuán)建設(shè)“一站式”綜合管理信息平臺過程中,在涉及到各個不同業(yè)務(wù)系統(tǒng)中具有交叉性實體的數(shù)據(jù)轉(zhuǎn)換方面具有較大的推廣價值。
[1]趙曉,陳樺,侯勃峰等.一種實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)到XML文檔的轉(zhuǎn)換方法[J].西安工業(yè)大學(xué)學(xué)報,2007(04).
[2]傅清平.異構(gòu)數(shù)據(jù)庫中數(shù)據(jù)轉(zhuǎn)換技術(shù)[J].江西煤炭科技,2007(3):55-57.
[3]陳繡瑤.基于XML Schema的XML文檔和關(guān)系數(shù)據(jù)庫的映射研究[J].現(xiàn)代計算機(jī),2009(1):149-150.
[4]柏森.數(shù)據(jù)挖掘中的半結(jié)構(gòu)化數(shù)據(jù)[J].計算機(jī)與信息技術(shù),2007(5):27-29.
[5]吳共慶,陳恩紅.一種基于XML的半結(jié)構(gòu)化數(shù)據(jù)存儲方法[J].計算機(jī)工程,2004,30(10):57-59.
[6]黃海燕.保持約束的XML數(shù)據(jù)和關(guān)系數(shù)據(jù)相互轉(zhuǎn)換技術(shù)研究[D].長沙:中南大學(xué),2008.
[7]薛衛(wèi)萍.實現(xiàn)異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)的轉(zhuǎn)換[J].計算機(jī)與數(shù)字工程,2004,32(6):86-88.