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