王洪輝,張振友,路翠芳
(河北理工大學(xué) 計(jì)算機(jī)與自動(dòng)控制學(xué)院,河北 唐山 063009)
隨著Web與異構(gòu)數(shù)據(jù)庫(kù)的結(jié)合及Internet在全球的迅速普及,以異構(gòu)數(shù)據(jù)庫(kù)互用技術(shù)為代表的信息互用技術(shù)已滲透到人類社會(huì)包括工業(yè)、商業(yè)、國(guó)防等的各個(gè)領(lǐng)域。異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)是相關(guān)的多個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的集合,可以實(shí)現(xiàn)數(shù)據(jù)的共享和透明訪問(wèn)。異構(gòu)數(shù)據(jù)庫(kù)的各個(gè)組成部分具有自身的自治性,實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí),每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)仍保有自己的應(yīng)用特性、完整性控制和安全性控制。
XML[1]是由W3C(World WideWeb Consortium)開發(fā)的可擴(kuò)展標(biāo)示語(yǔ)言,它將SGML的豐富功能與HTML的易用性結(jié)合到 Web的應(yīng)用中,以一種開放的、自我描述的方式定義了數(shù)據(jù)結(jié)構(gòu)。在描述數(shù)據(jù)內(nèi)容的同時(shí)能突出對(duì)結(jié)構(gòu)的描述,從而體現(xiàn)出數(shù)據(jù)之間的關(guān)系,它的特點(diǎn)是簡(jiǎn)單、開放、可擴(kuò)充性。作為一種標(biāo)示語(yǔ)言,XML標(biāo)準(zhǔn)是由W3C組織推出的一系列規(guī)范組成的,它主要包括XML、可擴(kuò)展樣式表語(yǔ)言(Extensible Style Sheet Language)、文檔對(duì)象模型DOM(Document Object Mode)以及文檔類型定義DTD(Document Type Definition)等。
XML的主要技術(shù)特點(diǎn): (1)XML是一種元標(biāo)記語(yǔ)言,與HTML不同,XML不是一種具體的標(biāo)記語(yǔ)言,它沒(méi)有固定的標(biāo)記符號(hào); (2)XML數(shù)據(jù)的自描述性。是指 XML中的語(yǔ)義標(biāo)識(shí),一方面限定了元素的層次結(jié)構(gòu),另一方面也說(shuō)明了元素的含義,在 XML搜索結(jié)果中,由標(biāo)識(shí)就可以知道內(nèi)容的含義,這使得搜索結(jié)果更有意義;
(3)XML的核心是數(shù)據(jù)。一般來(lái)說(shuō)一個(gè)文檔里,都具有文檔數(shù)據(jù)、文檔結(jié)構(gòu)、文檔樣式三個(gè)要素。而對(duì)于XML文檔來(lái)說(shuō),數(shù)據(jù)是其核心.在XMI中將樣式與內(nèi)容是分開處理的。
隨著Internet應(yīng)用的不斷普及,Internet的異構(gòu)分布式信息系統(tǒng)正在迅速發(fā)展,Java以其平臺(tái)無(wú)關(guān)性、移植性強(qiáng),安全性高、穩(wěn)定性好、分布式、面向?qū)ο蟮葍?yōu)點(diǎn)而成為Internet應(yīng)用開發(fā)的首選語(yǔ)言。在Internet環(huán)境下,實(shí)現(xiàn)基于異種系統(tǒng)平臺(tái)的數(shù)據(jù)庫(kù)應(yīng)用,必須提供一個(gè)獨(dú)立于特定數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)一編程界面和一個(gè)基于SQL的通用的數(shù)據(jù)庫(kù)訪問(wèn)方法。Java與數(shù)據(jù)庫(kù)接口規(guī)范JDBC[2](Java Database Connectivity)是支持基本 SQL功能的一個(gè)通用的應(yīng)用程序編程接口,它在不同的數(shù)據(jù)庫(kù)功能模塊的層次上提供了一個(gè)統(tǒng)一的用戶界面,為對(duì)異構(gòu)數(shù)據(jù)庫(kù)進(jìn)行直接的Web訪問(wèn)提供了新的解決方案。
本系統(tǒng)所設(shè)計(jì)的異構(gòu)數(shù)據(jù)庫(kù)信息處理系統(tǒng)主要包括兩大部分:一是系統(tǒng)的前臺(tái)部分。有系統(tǒng)的登錄、主菜單頁(yè)、數(shù)據(jù)表定義和刪除、數(shù)據(jù)的插入刪除和更新、數(shù)據(jù)的查詢及各種信息的顯示。二是系統(tǒng)的后臺(tái)部分。主要是采用 EJB[3]組件如各種數(shù)據(jù)庫(kù)的定義組件、全局?jǐn)?shù)據(jù)字典組件、數(shù)據(jù)插入組件、查詢更新組件、數(shù)據(jù)刪除組件和數(shù)據(jù)查詢組件等處理前臺(tái)提供的各種數(shù)據(jù)庫(kù)操作語(yǔ)句和各種不同地點(diǎn)的數(shù)據(jù)庫(kù)的連接等操作。
本系統(tǒng)采用三層體系結(jié)構(gòu),包括瀏覽器/應(yīng)用服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器。為實(shí)現(xiàn)系統(tǒng)的三層結(jié)構(gòu)采用MVC[4]模式,該模式有視圖、控制器和模型三部分組成,MVC組件類型的關(guān)系和功能如圖1所示。視圖負(fù)責(zé)向用戶顯示數(shù)據(jù)信息等內(nèi)容,控制器控制程序的流轉(zhuǎn),而模型負(fù)責(zé)程序的商業(yè)邏輯和數(shù)據(jù)庫(kù)的連接等內(nèi)容。
圖1 MVC組件類型的關(guān)系和功能
本系統(tǒng)是一個(gè)中間功能層,它將系統(tǒng)的異構(gòu)特征屏蔽起來(lái),使全局用戶透明地操作異構(gòu)數(shù)據(jù)庫(kù)。利用XML文檔作為中間件進(jìn)行異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)交換,可以有效地屏蔽數(shù)據(jù)庫(kù)的異構(gòu)性,因此須實(shí)現(xiàn)數(shù)據(jù)庫(kù)信息和XML文檔之間的數(shù)據(jù)轉(zhuǎn)換轉(zhuǎn)換的數(shù)據(jù)先通過(guò)XML文檔轉(zhuǎn)換器轉(zhuǎn)換為XML檔從數(shù)據(jù)庫(kù)中導(dǎo)出,在經(jīng)查詢分析處理判斷轉(zhuǎn)化的XML文檔是否有冗余信息,或是否符合查詢條件。XML提供了一種連接關(guān)系數(shù)據(jù)庫(kù)和面向?qū)ο髷?shù)據(jù)庫(kù)以及其他數(shù)據(jù)庫(kù)系統(tǒng)之間的訪問(wèn)技術(shù)。也就是說(shuō)我們可以先對(duì)關(guān)系數(shù)據(jù)庫(kù)和面向?qū)ο髷?shù)據(jù)庫(kù)以及其他數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行訪問(wèn)然后生成XML文件再將文件存入數(shù)據(jù)庫(kù)或作其他處理。
本系統(tǒng)的中心思想是通過(guò)用戶輸入字符串,然后用以表單提取輸入的內(nèi)容并對(duì)其做字符串的處理。得到異構(gòu)數(shù)據(jù)庫(kù)查詢相關(guān)信息,然后遍歷相關(guān)數(shù)據(jù)字典,取出數(shù)據(jù)并將這些數(shù)據(jù)按照查詢結(jié)構(gòu)組織成以 XML結(jié)構(gòu)表達(dá)的結(jié)果文件。
可以將實(shí)現(xiàn)的完整流程分成兩個(gè)階段:
階段 1—建立全局?jǐn)?shù)據(jù)字典。它由數(shù)據(jù)庫(kù)管理員所設(shè)計(jì)的一系列表格組成,是整個(gè)多數(shù)據(jù)庫(kù)系統(tǒng)的全局資源。通過(guò)在數(shù)據(jù)之間建立映射機(jī)制來(lái)實(shí)現(xiàn)關(guān)系字典,建立局部數(shù)據(jù)庫(kù)與全局?jǐn)?shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系,即使用全局?jǐn)?shù)據(jù)庫(kù)中映射表的數(shù)據(jù)表示局部數(shù)據(jù)庫(kù)所提供的數(shù)據(jù)。
階段 2—接受用戶查詢并做出解答。
包括四個(gè)步驟:
(1)將用戶的標(biāo)準(zhǔn)查詢轉(zhuǎn)化成對(duì)局部數(shù)據(jù)庫(kù)的訪問(wèn)序列。
(2)將查詢條件轉(zhuǎn)化成訪問(wèn)參數(shù),并訪問(wèn)局部數(shù)據(jù)庫(kù)。
(3)獲取局部數(shù)據(jù)庫(kù)返回的查詢結(jié)果并轉(zhuǎn)化成XML文檔。
(4)對(duì)各個(gè)數(shù)據(jù)庫(kù)提供的查詢結(jié)果 XML文檔作集成處理,即合并不完整的數(shù)據(jù)和過(guò)濾重復(fù)的數(shù)據(jù)。
本文主要論述了利用 XML技術(shù)來(lái)實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)的信息處理系統(tǒng),通過(guò)數(shù)據(jù)庫(kù)模式之間的映射,較好的實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)庫(kù)之間的透明互訪。同時(shí),數(shù)據(jù)庫(kù)種的數(shù)據(jù)在被轉(zhuǎn)換成XML文檔后,可以直接在WEB頁(yè)上發(fā)布,也給電子商務(wù)和電子政務(wù)的發(fā)展提供一個(gè)對(duì)多數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行訪問(wèn)的應(yīng)用平臺(tái)。
[1] Box D,Skonnard A,Lam J.Essential.XML[M].卓棟濤譯.北京:中國(guó)電力出版社,2000.
[2] 蕭仁惠,陳錦輝.JDBC數(shù)據(jù)庫(kù)程序設(shè)計(jì)[M].北京:中國(guó)鐵道出版社2004.2.
[3] 童恒慶,聶會(huì)琴,李錫喆.CORBA/COM/EJB三種組件模型的分析與比較[J].計(jì)算機(jī)應(yīng)用研究,2004,04.
[4] 曾水新.基于J2EE體系的MVC框架的研究和實(shí)現(xiàn)[D].北京:首都經(jīng)濟(jì)貿(mào)易大學(xué)碩士論文,2005,(05)