金天昕
(無錫南洋職業技術學院,江蘇 無錫 214081)
隨著互聯網地普及、數據庫技術地發展及信息化程度地加深,越來越多的數據被存放在異構數據中,同時越來越多的信息系統需要共享異構數據庫中數據,因而,目前異構數據庫的管理信息系統開發的關鍵逐漸傾向于不同數據庫之間連接、交換和共享功能地實現,使異構數據庫中的數據不再是一個“信息孤島”。
XML異構數據遷移技術
異構數據庫的遷移時應根據以下兩種方式來考慮該選哪種遷移方式,一種是完整地將源數據庫信息移到目標數據庫中;另一種是目標數據庫中已有相關記錄,遷移時只需將源數據庫信息根據目標數據庫的結構對應遷移上去。
在異構數據遷移過程中,比較關鍵的環節是庫信息地正確獲取,尤其是數據庫中數據表的相關信息地獲取。本文中筆者通過JDBC來連接到數據庫,并利用特定SQL語句地執行來將數據表中列數、長度、列名、主鍵、允許空等基本屬性取出,為生成相應的描述該表的XML Schema做充足準備。
“select c.name name,t.name type,c.1ength length,C.isnullable,
(case when (SELECT count(*)FROM sysobjectsWHERE(name in
(SELECT nanle FROM sysindexes
WHERE(id=c.id)AND(indid in
(SELECT indid FROM sysindexkeys
WHERE(id=C.id)AND(colid in
(SELECT colid FROM syscolumns
WHERE(id=C.id)AND(name=C.name)))))))AND
(xtype=PK))>0 then 1'elseO'end)Nkey//取主鍵
from syscolumns C join systypes t on c.xusertype=t.xusertype
where id= (selectid from sysobjects where name=“+table+”)”//取設計表中的數據,依次為列名、數據類型、長度、允許空、主鍵。
數據模型映射方法
異構數據庫的數據遷移是通過文檔結構和數據庫結構之間建立的映射關系來完成的,即將數據和數據類型分別映射為XML文檔和XML Schema文檔的形式。基于模式驅動的映射是指通過一個具體的模型來實現數據庫與XML文檔之間的相互傳送,在該映射過程中除了內嵌SQL命令被依賴外,關系模型被關系數據庫依賴,對象模型被面向對象數據依賴,Schema對應的數據模型則被XML文檔依賴。基于模式驅動的映射可以將XML Schema文件中的復雜原始類型改為簡單化,方便用戶數據分割和理解。數據類型有其相對應的規則,即不同的數據庫及同一數據庫廠商的不同版本的數據庫產品之間對數據類型的定義是不同的。
在數據庫信息與XML Schema之間建立并實現雙向映射可以使基于模型驅動實現數據庫與XML文檔之間數據的雙向傳輸。在生成的XML Schema文檔對設計表里面元素的基本屬性做了基本的描述,以在異構數據遷移時可以更完整地表述數據庫信息,如表名稱—ref、長度—value、類型—base、字段名稱—name、主鍵—xs:key,等等。對于XML Schema文檔中SQL Server2000數據庫內某個表bjdmb的相關信息可以如以下一段編程來表示。
maxOccurs=”unbounded”/>//表中完整數據出現次數
從數據庫映射到XML文檔的過程中,可以通過屬性中心和元素中心兩種形式表示,這兩種形式都可以指定這些元素或屬性的名字。但前者不可對各字段的先后順序進行表述,也比較難在屬性中保存應用程序操作,因而,一般情況下都選用元素中心的形式來表示,以實現異構數據庫間數據交換中XML中間層的構建。下面是一段XML代碼指的是中SQL Server2000數據庫內一個表bjdmb中的一組數據,即bjdm、bj、njdm的映射。
遷移過程可視化控制是指用戶在前臺控制端就可根據遷移的具體要求,通過論文原型遷移平臺來完成異構系統間數據的遷移工作。在該遷移過程中,后臺異構數據庫間具體差異用戶可以完全不做考慮。本文中筆者對前臺用戶可視化界面的設計與實現采用的是JSP和JavaBean系統。
根據異構數據遷移系統的層次結構圖我們可以將該系統分為5個模塊,即數據庫連接模塊、數據導入模塊、數據操作模塊、數據遷移模塊和數據展示模塊。其中數據庫連接模塊主要用于實現將要被遷移的源數據庫的設定和連接;數據導入模塊主要負責源數據庫中需要進行遷移的數據的遷移工作;數據操作模塊主要功能是用戶對轉換過程中一些如需修改的表名、列名、庫名及需進行添加或刪除的字段等轉換具體需求地設定;數據遷移模塊主要負責交換和關聯規則地設定;數據展示模塊,顧名思義就是在屏幕上向用戶展示遷移過程和結果,以方便用戶監控。
[1]龐海濤.XML在異構數據交換中的研究與應用[D].湖北:武漢理工大學碩士論文,2006.
[2]都志輝.XML編程實踐[M].北京:清華大學出版社,2002.