魏 華
青海交通職業(yè)技術(shù)學(xué)院,青海西寧 810003
淺析金融報(bào)表系統(tǒng)的數(shù)據(jù)集成問(wèn)題
魏 華
青海交通職業(yè)技術(shù)學(xué)院,青海西寧 810003
本文主要主要介紹了在金融報(bào)表系統(tǒng)中的數(shù)據(jù)集成模塊的設(shè)計(jì)及實(shí)現(xiàn)。其中數(shù)據(jù)集成模塊中,采用了XML作為統(tǒng)一數(shù)據(jù)格式,然后針對(duì)各種不同數(shù)據(jù)源提供不同的專用接口,從而將異構(gòu)數(shù)據(jù)源進(jìn)行集成。對(duì)各種當(dāng)今的異構(gòu)數(shù)據(jù)集成模式進(jìn)行了分析探討。
金融報(bào)表;數(shù)據(jù)集成;系統(tǒng)設(shè)計(jì)
金融報(bào)表系統(tǒng)的一個(gè)重要目標(biāo)是能夠集成已有系統(tǒng)的數(shù)據(jù),這也是整合各個(gè)分散孤立系統(tǒng)所面臨的一個(gè)重要問(wèn)題。本文在研究各種異構(gòu)數(shù)據(jù)集成的基礎(chǔ)上,選擇基于XML的數(shù)據(jù)集成方案,下面對(duì)該方案的設(shè)計(jì)及實(shí)現(xiàn)進(jìn)行詳細(xì)的說(shuō)明。
在該系統(tǒng)中負(fù)責(zé)集成數(shù)據(jù)任務(wù)的是數(shù)據(jù)生成器模塊,它將從異構(gòu)數(shù)據(jù)源中提取和生成統(tǒng)一數(shù)據(jù)格式的報(bào)表數(shù)據(jù)。為了能夠從不同數(shù)據(jù)源中進(jìn)行獲取數(shù)據(jù),數(shù)據(jù)生成器需要進(jìn)行異構(gòu)數(shù)據(jù)源的統(tǒng)一處理。集成異構(gòu)數(shù)據(jù)源的方法一般有兩種。第一種是將原有的數(shù)據(jù)移植到新的數(shù)據(jù)管理系統(tǒng)中來(lái),為了集成不同類型的數(shù)據(jù),必須將一些非傳統(tǒng)的數(shù)據(jù)類型轉(zhuǎn)化成新的數(shù)據(jù)類型。第二種方法是利用中間件集成異構(gòu)數(shù)據(jù)庫(kù),中間件位于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)(數(shù)據(jù)層)和應(yīng)用程序(應(yīng)用層)之間,向下協(xié)調(diào)各數(shù)據(jù)庫(kù)系統(tǒng),向上為訪問(wèn)集成數(shù)據(jù)的應(yīng)用提供統(tǒng)一數(shù)據(jù)模式和數(shù)據(jù)訪問(wèn)的通用接口。各數(shù)據(jù)庫(kù)的應(yīng)用仍然完成它們的任務(wù),中間件系統(tǒng)則主要集中為異構(gòu)數(shù)據(jù)源提供一個(gè)高層次檢索服務(wù)。顯然,中間件系統(tǒng)模式是實(shí)現(xiàn)異構(gòu)數(shù)據(jù)集成較理想的解決方案[1]。
實(shí)現(xiàn)數(shù)據(jù)抽取的關(guān)鍵是從統(tǒng)一的XML數(shù)據(jù)中進(jìn)行查詢和統(tǒng)計(jì)以得到需要的報(bào)表數(shù)據(jù)。數(shù)據(jù)生成器是在處理報(bào)表之前將來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)統(tǒng)一轉(zhuǎn)換為一致的XML格式數(shù)據(jù)。當(dāng)數(shù)據(jù)被轉(zhuǎn)換為統(tǒng)一的數(shù)據(jù)格式后,數(shù)據(jù)在各個(gè)模塊之間就可以方便地進(jìn)行交換,這使得所有模塊對(duì)數(shù)據(jù)的處理都能夠以統(tǒng)一的方式進(jìn)行。我們可以使用J2EE架構(gòu)中數(shù)據(jù)表示和交換功能的EJB(Enterprise JavaBean,業(yè)務(wù)邏輯代碼)組建中持久化服務(wù)的一部分,XML文件可以容易地讀取到一個(gè)對(duì)象模型中。
數(shù)據(jù)生成器的架構(gòu)分為3層,如圖1所示。

圖1 數(shù)據(jù)生成器的三層架構(gòu)圖
其中數(shù)據(jù)抽取層該層負(fù)責(zé)提供各種來(lái)自不同數(shù)據(jù)源的數(shù)據(jù),如數(shù)據(jù)庫(kù)、已有的報(bào)表文件和其它文件數(shù)據(jù)。集成層該層完成將不同格式的數(shù)據(jù)與XML數(shù)據(jù)模型之間的轉(zhuǎn)換。它將數(shù)據(jù)先存儲(chǔ)到一個(gè)集成模式的存儲(chǔ)結(jié)構(gòu)中,然后完成目標(biāo)格式與原有格式之間的映射關(guān)系。此外,它還提供對(duì)數(shù)據(jù)的各種查詢操作。上層應(yīng)用層該層主要是對(duì)集成層提供的接口進(jìn)行封裝,以便于對(duì)數(shù)據(jù)的各種處理操作。它提供一個(gè)統(tǒng)一的數(shù)據(jù)視圖來(lái)查看數(shù)據(jù)。
數(shù)據(jù)抽取層處于系統(tǒng)的最低層,是系統(tǒng)的數(shù)據(jù)提供者,主要功能是提取和集成分布在多個(gè)異構(gòu)數(shù)據(jù)源(數(shù)據(jù)庫(kù),知識(shí)庫(kù)及構(gòu)件庫(kù))上的信息。這一層采用 Wrapper(包裝器)技術(shù)實(shí)現(xiàn)將一個(gè)從中介層得到的查詢,翻譯成能夠在經(jīng)過(guò)封裝的數(shù)據(jù)源上執(zhí)行的操作,將查詢結(jié)果抽取并打包到一個(gè)XML文檔,最后將該文檔返回給集成層。可以考慮使用Wrapper組件,即:
Wrapper組件由兩部分組成:Wrapper生成器和Wrapper實(shí)例(簡(jiǎn)稱Wrapper)。Wrapper生成器用于為查詢某個(gè)確定的站點(diǎn)或站點(diǎn)集合,構(gòu)建Wrapper的輸入是用一種Wrapper規(guī)范語(yǔ)言書寫的規(guī)格說(shuō)明。規(guī)格說(shuō)明必須能夠表達(dá)以下內(nèi)容:數(shù)據(jù)源接口、數(shù)據(jù)模型、從用戶到數(shù)據(jù)源本地操作的查詢映射、數(shù)據(jù)源的查詢能力。通常為一個(gè)數(shù)據(jù)源生成一個(gè)有效的Wrapper所必須的信息是使用DTD來(lái)描述的。Wrapper生成器的輸出是一個(gè)可以執(zhí)行的Wrapper實(shí)例,該Wrapper能夠接受由Wrapper規(guī)范語(yǔ)言定義的查詢。我們采用關(guān)系Wrapper能決定關(guān)系模型和DOM(Document Object Model,域?qū)ο竽P停?duì)象數(shù)據(jù)模型之間的映射。因此,可以采用DTD(Document Type Definition,文檔類型定義)來(lái)描述數(shù)據(jù)庫(kù)中關(guān)系表的數(shù)據(jù)模式。
集成層最重要的問(wèn)題就是數(shù)據(jù)的轉(zhuǎn)換問(wèn)題,將來(lái)自不同數(shù)據(jù)源的各種數(shù)據(jù)轉(zhuǎn)換成集成系統(tǒng)能進(jìn)一步處理的統(tǒng)一格式。
專用接口主要完成XML數(shù)據(jù)模型與數(shù)據(jù)源的雙向轉(zhuǎn)換。它用XML描述集成數(shù)據(jù),用XML文檔和格式文件DTD表示集成模式與數(shù)據(jù)源之間的映射。XML數(shù)據(jù)模型與數(shù)據(jù)庫(kù)的轉(zhuǎn)換主要體現(xiàn)在XML的DTD和數(shù)據(jù)庫(kù)數(shù)據(jù)模型的相互轉(zhuǎn)換。從DTD轉(zhuǎn)換到數(shù)據(jù)庫(kù)模型的原理如下:
1)從DTD生成一個(gè)關(guān)系模式,并在此基礎(chǔ)上建立關(guān)系數(shù)據(jù)庫(kù);
2)對(duì)DTD中的每一個(gè)元素,產(chǎn)生關(guān)系數(shù)據(jù)庫(kù)的一個(gè)表和一個(gè)主鍵列;
3)對(duì)每一個(gè)有混合內(nèi)容的元素,產(chǎn)生一個(gè)獨(dú)立的表,并通過(guò)父表的主鍵與父表相連;
4)對(duì)元素類型中的每一個(gè)單一值的屬性,按順序出現(xiàn)的子元素,產(chǎn)生一個(gè)單獨(dú)列,該列可以允許為NULL類型;
5)對(duì)有多個(gè)值的屬性和可以出現(xiàn)多次的子元素,需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的表來(lái)存儲(chǔ)這些值,并通過(guò)父表的主鍵與父表相連;
6)對(duì)每一個(gè)包含元素或混合內(nèi)容的子元素來(lái)說(shuō),通過(guò)父表的主鍵把父元素與子元素連接起來(lái)。
從數(shù)據(jù)庫(kù)模型到DTD的轉(zhuǎn)換相對(duì)容易一些,分為3步:對(duì)一個(gè)表,創(chuàng)建一個(gè)元素;對(duì)表中的每一列,創(chuàng)建一個(gè)屬性或只是一個(gè)子元素;根據(jù)表中的每一個(gè)主鍵/外鍵關(guān)系,創(chuàng)建該表元素的子元素。
同時(shí)相對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)的意義,XML文檔與其他文本文件并沒有什么區(qū)別。在將它與結(jié)構(gòu)化數(shù)據(jù)或非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行轉(zhuǎn)換的時(shí)候,關(guān)鍵問(wèn)題是如何將關(guān)系數(shù)據(jù)庫(kù)表達(dá)的結(jié)構(gòu)與約束映射為XML。根據(jù)映射關(guān)系的建立方式不同,我們可以采用基于模板驅(qū)動(dòng)的映射方法。這種映射的步驟比較簡(jiǎn)單,只要給出模板,就可以快速地生成相應(yīng)的XML文檔。總體來(lái)說(shuō),專用接口模塊就是將由各數(shù)據(jù)源的數(shù)據(jù)到一個(gè)XML數(shù)據(jù)模型的雙向轉(zhuǎn)換。
如何實(shí)現(xiàn)對(duì)各個(gè)數(shù)據(jù)源的集成存取,即如何將用戶對(duì)繼承視圖的存取轉(zhuǎn)換成對(duì)異構(gòu)數(shù)據(jù)源的操作。在本系統(tǒng)中采用的是GAV方法。采用為集成模式中的每一個(gè)虛擬對(duì)象類創(chuàng)建一個(gè)能動(dòng)態(tài)生成XML文檔的ASP文件,說(shuō)明如何從信息源得到該虛擬對(duì)象類的對(duì)象,如何將源數(shù)據(jù)轉(zhuǎn)換成集成數(shù)據(jù)。當(dāng)用戶要訪問(wèn)集成數(shù)據(jù)時(shí),系統(tǒng)按下列步驟進(jìn)行查詢轉(zhuǎn)換[2]:
1)根據(jù)用戶提出的查詢條件,生成一棵查詢樹;
2)將諸如選擇、投影操作盡量推向葉節(jié)點(diǎn)(即數(shù)據(jù)源);
3)將對(duì)各數(shù)據(jù)源的操作追加到相應(yīng)的ASP文件中;
4)調(diào)用ASP文件,生成來(lái)自多數(shù)據(jù)源的包含用戶所需數(shù)據(jù)的XML文檔;
5)選擇合適的XSL,應(yīng)用于所生成的XML文檔提交給用戶。
為了能夠提供一個(gè)統(tǒng)一的數(shù)據(jù)視圖,需要設(shè)計(jì)一個(gè)公共模型,以便進(jìn)行統(tǒng)一的處理。同時(shí)還需要在這個(gè)公共模型上定義一些基本的運(yùn)算,使之能夠完成數(shù)據(jù)查詢、存取等具體功能。
本集成系統(tǒng)為用戶提供根據(jù)特定集成應(yīng)用而設(shè)計(jì)的一個(gè)虛擬集成視圖。虛擬集成視圖是一個(gè)虛擬關(guān)系(或虛擬對(duì)象類)集合。采用XML作為集成系統(tǒng)的公共模型,用一個(gè)DTD描述集成層的一個(gè)虛擬對(duì)象類,一個(gè)元素對(duì)應(yīng)虛擬對(duì)象類的一個(gè)屬性,所有虛擬對(duì)象類的DTD組成集成系統(tǒng)的集成模式。
根據(jù)不同用戶的不同需求,可定義不同的XSL樣式表,來(lái)屏蔽一些對(duì)象或?qū)ο蟮膶傩裕瑏?lái)改變對(duì)象的顯示形式,提供不同的用戶視圖。
本文主要介紹了在金融報(bào)表系統(tǒng)中的數(shù)據(jù)集成模塊的設(shè)計(jì)及實(shí)現(xiàn)。數(shù)據(jù)集成模塊中,采用了XML作為統(tǒng)一數(shù)據(jù)格式,然后針對(duì)各種不同數(shù)據(jù)源提供不同的專用接口,從而將異構(gòu)數(shù)據(jù)源進(jìn)行集成。異構(gòu)數(shù)據(jù)集成模式具有以下特點(diǎn):
1)在分布、異構(gòu)環(huán)境下的異構(gòu)數(shù)據(jù)集成方案和構(gòu)架結(jié)構(gòu),基于術(shù)語(yǔ)標(biāo)準(zhǔn)化的一致性操作平臺(tái)。兼容不同數(shù)據(jù)庫(kù)結(jié)構(gòu)和平臺(tái);
2)靈活的資源共享方式,可以根據(jù)自身需要提出訪問(wèn)請(qǐng)求;
3)實(shí)現(xiàn)模塊之間邏輯和技術(shù)的低耦合性;
4)適合Web應(yīng)用,便于用戶通過(guò)Internet訪問(wèn);
5)一定的擴(kuò)展性和可移植性。在數(shù)據(jù)源擴(kuò)展時(shí),只要配相應(yīng)的數(shù)據(jù)接口和更新元數(shù)據(jù)即可,易于擴(kuò)展。統(tǒng)一格式的數(shù)據(jù)可以通過(guò)企業(yè)域進(jìn)行跨平臺(tái)交換,具有一定的可移植性。
[1]余彤鷹.復(fù)雜系統(tǒng)的層級(jí)原理與模型驅(qū)動(dòng)軟件體系結(jié)構(gòu)[EB/OL],2002,5.http∶//www.ee2 forum.Org.
[2]http∶//www.goxk.com/guanligongcheng/200807/30-303757.shtml.基于XML的異構(gòu)數(shù)據(jù)集成模式研究,2008,7.
[3]范貴生,朱尚明.基于XML的遠(yuǎn)程報(bào)表系統(tǒng)的開發(fā)模型及實(shí)現(xiàn).現(xiàn)代計(jì)算機(jī),2005,3:89-92.
TP39
A
1674-6708(2010)24-0227-02
魏華,講師,工作單位:青海交通職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系