一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法
【專利摘要】本發(fā)明提出了一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法,所述系統(tǒng)包括:數(shù)據(jù)庫(kù)層、數(shù)據(jù)融合層和統(tǒng)一應(yīng)用層;數(shù)據(jù)庫(kù)層由異構(gòu)數(shù)據(jù)庫(kù)及其代理組成;數(shù)據(jù)融合層是融合各個(gè)異構(gòu)數(shù)據(jù)源信息,負(fù)責(zé)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)訪問(wèn),同時(shí)協(xié)調(diào)各數(shù)據(jù)源之間的信息,具體包括:元數(shù)據(jù)DB、元數(shù)據(jù)管理器、綜合包裝器、中介器、應(yīng)用層訪問(wèn)統(tǒng)一接口、異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口;統(tǒng)一應(yīng)用層是異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的使用者,可以通過(guò)融合中間層來(lái)訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)的共享數(shù)據(jù)資源。本發(fā)明解決異構(gòu)數(shù)據(jù)庫(kù)融合中的難題,克服現(xiàn)有數(shù)據(jù)庫(kù)融合技術(shù)的不足,該系統(tǒng)能夠在不影響各局部數(shù)據(jù)庫(kù)的情況下對(duì)各異構(gòu)數(shù)據(jù)庫(kù)進(jìn)行透明查詢,降低系統(tǒng)維護(hù)成本。
【專利說(shuō)明】一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)庫(kù)融合系統(tǒng),具體涉及一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法。
【背景技術(shù)】
[0002]在信息化建設(shè)的過(guò)程中,很多企業(yè)的部門根據(jù)自身業(yè)務(wù)和功能需要,建立了許多相互隔離的異構(gòu)數(shù)據(jù)源,由于缺乏統(tǒng)一的信息規(guī)劃,各信息管理系統(tǒng)開發(fā)的時(shí)間和來(lái)源不一致,采用的開發(fā)平臺(tái)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)管理系統(tǒng)也各不相同,造成了各系統(tǒng)間相互獨(dú)立,信息無(wú)法交流和融合,在內(nèi)部逐漸形成了“信息孤島”。為了解決上述問(wèn)題,急需提出一種多源異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)融合的新型方法,實(shí)現(xiàn)信息的交互和共享,提供一個(gè)安全可靠、高質(zhì)量的信息化服務(wù)。
[0003]傳統(tǒng)的分布對(duì)象技術(shù)分別有OMG 的 CORBA (Common Object Request BrokerArchitecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))'Microsoft 的 DCOM (Distributed ComponentObject Model,分布式組件對(duì)象模式)以及SUN的RMI (Remote Method Invocation,遠(yuǎn)程方法調(diào)用)。然而CORBA缺少方便的開發(fā)工具和強(qiáng)有力的廠商支持,門檻稍高,入門較困難;DCOM跨平臺(tái)性較差;RMI對(duì)多語(yǔ)言融合的支持卻很弱。同時(shí),這幾種技術(shù)都有相似的缺陷:①C0RBA、DC0M和RMI雖然能完整的實(shí)現(xiàn)系統(tǒng)的調(diào)用,但均要求客戶端和服務(wù)器必須緊密耦合且具有相同的體系結(jié)構(gòu)?’②C0RBA、DCOM和RMI依賴于一個(gè)特定的對(duì)象模型協(xié)議,主要用于企業(yè)內(nèi)部,都不太適合在Internet環(huán)境中進(jìn)行多源異構(gòu)數(shù)據(jù)庫(kù)融合的設(shè)計(jì)開發(fā)。
[0004]Web Servi ce的出現(xiàn)滿足了信息化服務(wù)所要求的基本功能,它是微軟.NET框架下多源異構(gòu)應(yīng)用的典型方案,與傳統(tǒng)的分布對(duì)象技術(shù)相比,有如下優(yōu)點(diǎn):
(I)跨平臺(tái)性和跨語(yǔ)言性。XML是一種自描述語(yǔ)言,屏蔽了不同語(yǔ)言之間的差異,即不同開發(fā)語(yǔ)言可以共同使用同一個(gè)Web Service來(lái)交換共享數(shù)據(jù)。
[0005](2)融合工作簡(jiǎn)單、適用范圍廣。Web Service簡(jiǎn)單易學(xué),便于設(shè)計(jì)、開發(fā)、維護(hù)?;赪eb Service的技術(shù)融合允許把大規(guī)模的應(yīng)用劃分為規(guī)模較小的獨(dú)立邏輯實(shí)體并加以封裝,適用性強(qiáng),安全性高。
[0006](3)使用開放標(biāo)準(zhǔn)協(xié)議規(guī)范。Web Service中所有的技術(shù)實(shí)現(xiàn)都基于開放的標(biāo)準(zhǔn)協(xié)議,主要有 HTTP (Hypertext Transfer Protocol )、S0AP( Simple Object Access Protocol )、WSDL (Web Service Description Language)、UDDI (Web Service Description Language),任何Web服務(wù)都可以與其他Web服務(wù)進(jìn)行交互,大大降低了企業(yè)為支持新出現(xiàn)的Web技術(shù)的投資成本。
[0007](4)松散稱合性。XML (Extensible Markup Language)和 SOAP 均適合在 Internet環(huán)境進(jìn)行消息交換協(xié)議,Web Service的實(shí)現(xiàn)變更對(duì)于用戶來(lái)說(shuō)都是透明的。
[0008]本發(fā)明從應(yīng)用實(shí)際需求出發(fā),實(shí)現(xiàn)一個(gè)基于Web Service的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),該系統(tǒng)能夠在不影響各局部數(shù)據(jù)庫(kù)的情況下,對(duì)各異構(gòu)數(shù)據(jù)庫(kù)進(jìn)行透明查詢,在需要加入新數(shù)據(jù)庫(kù)或現(xiàn)有數(shù)據(jù)庫(kù)需改變存儲(chǔ)結(jié)構(gòu)時(shí),只需要修改系統(tǒng)中的相關(guān)組件,不必修改整個(gè)系統(tǒng)結(jié)構(gòu),能有效處理激增數(shù)據(jù)量,大大降低系統(tǒng)維護(hù)成本。
【發(fā)明內(nèi)容】
[0009]本發(fā)明要解決的技術(shù)問(wèn)題在于:提出一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),解決異構(gòu)數(shù)據(jù)庫(kù)融合中的“信息孤島”難題,克服現(xiàn)有數(shù)據(jù)庫(kù)融合技術(shù)的不足。
[0010]本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),包括:數(shù)據(jù)庫(kù)層、數(shù)據(jù)融合層和統(tǒng)一應(yīng)用層;
所述的數(shù)據(jù)庫(kù)層由異構(gòu)數(shù)據(jù)庫(kù)及異構(gòu)數(shù)據(jù)庫(kù)代理組成;異構(gòu)數(shù)據(jù)庫(kù)代理利用WebService實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn);
所述的數(shù)據(jù)融合層用于融合各個(gè)異構(gòu)數(shù)據(jù)源信息,負(fù)責(zé)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)訪問(wèn),同時(shí)協(xié)調(diào)各數(shù)據(jù)源之間的信息;
所述統(tǒng)一應(yīng)用層是異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的使用者,通過(guò)數(shù)據(jù)融合層來(lái)訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)的共享數(shù)據(jù)資源;
其中,所述數(shù)據(jù)融合層具體包括:元數(shù)據(jù)DB、元數(shù)據(jù)管理器、綜合包裝器、中介器、應(yīng)用層訪問(wèn)統(tǒng)一接口、異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口 ;其中,
元數(shù)據(jù)DB,用于保存組成異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的各元數(shù)據(jù)DB信息;
元數(shù)據(jù)管理器,根據(jù)應(yīng)用的需要生成相應(yīng)的元數(shù)據(jù),把異地?cái)?shù)據(jù)源中的相關(guān)數(shù)據(jù)表、數(shù)據(jù)類型、函數(shù)、存諸過(guò)程以無(wú)沖突的形式表示出來(lái);
中介器,負(fù)責(zé)各異構(gòu)數(shù)據(jù)庫(kù)的即插即用注冊(cè)服務(wù)并生成公共模型,接收來(lái)自瀏覽器的全局查詢請(qǐng)求;
綜合包裝器,負(fù)責(zé)包裝異構(gòu)的數(shù)據(jù)源,實(shí)現(xiàn)數(shù)據(jù)位置和訪問(wèn)的透明;
應(yīng)用層訪問(wèn)統(tǒng)一接口和異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口,用于提供透明的數(shù)據(jù)訪問(wèn),屏蔽各數(shù)據(jù)庫(kù)的差異性。
[0011]進(jìn)一步的,本發(fā)明的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),所述的異構(gòu)數(shù)據(jù)庫(kù)的類型包括:Oracle、SQL Server、MySQL。
[0012]進(jìn)一步的,本發(fā)明的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),保存的元數(shù)據(jù)DB信息類型:元數(shù)據(jù)DB的注冊(cè)信息、元數(shù)據(jù)DB的連接信息URL、全局用戶與各元數(shù)據(jù)DB用戶的對(duì)應(yīng)關(guān)系、訪問(wèn)策略信息、模式映射信息。
[0013]進(jìn)一步的,本發(fā)明的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),所述的中介器由異構(gòu)數(shù)據(jù)注冊(cè)模塊、查詢規(guī)劃模塊和結(jié)果合并過(guò)濾模塊三個(gè)組件構(gòu)成;所述的異構(gòu)數(shù)據(jù)注冊(cè)模塊在共享數(shù)據(jù)注冊(cè)階段負(fù)責(zé)異構(gòu)數(shù)據(jù)庫(kù)的共享注冊(cè)以及公共模型的建立;所述的查詢規(guī)劃模塊在數(shù)據(jù)融合階段負(fù)責(zé)將客戶端提交的基于全局?jǐn)?shù)據(jù)庫(kù)的標(biāo)準(zhǔn)查詢分解成針對(duì)各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子查詢,并提交到相應(yīng)的包裝器;所述的結(jié)果合并過(guò)濾模塊負(fù)責(zé)把各異構(gòu)數(shù)據(jù)庫(kù)查詢返回的XML文檔合并為一個(gè)完整統(tǒng)一的查詢結(jié)果,并發(fā)送回客戶端瀏覽器。
[0014]進(jìn)一步的,本發(fā)明的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),所述的綜合包裝器包括數(shù)據(jù)庫(kù)操作模塊和查詢結(jié)果轉(zhuǎn)換模塊;其中,數(shù)據(jù)庫(kù)操作模塊負(fù)責(zé)對(duì)后臺(tái)數(shù)據(jù)庫(kù)的連接管理,包括數(shù)據(jù)庫(kù)連接的初始化、數(shù)據(jù)庫(kù)基本操作的封裝、連接的分配、連接的關(guān)閉功能;所述查詢結(jié)果合并模塊負(fù)責(zé)把SQL查詢的結(jié)果轉(zhuǎn)換成XML文檔。
[0015]本發(fā)明還提出一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的數(shù)據(jù)查詢方法,包括以下步驟:A、用戶從瀏覽器利用HTTP協(xié)議,向應(yīng)用層統(tǒng)一接口發(fā)出查詢請(qǐng)求,應(yīng)用層統(tǒng)一接口收到用戶查詢請(qǐng)求后進(jìn)行分析執(zhí)行,轉(zhuǎn)化為查詢參數(shù);
B、中介器得到查詢參數(shù)后,到元數(shù)據(jù)中查找目標(biāo)數(shù)據(jù)庫(kù)及數(shù)據(jù)表,并通過(guò)查詢規(guī)劃模塊進(jìn)行SQL分解,生成異構(gòu)數(shù)據(jù)庫(kù)相對(duì)應(yīng)的SQL子查詢語(yǔ)句SQLl,SQL2, - ,SQLn,并放入隊(duì)列之中準(zhǔn)備執(zhí)行,η為自然數(shù);
C、綜合包裝器通過(guò)數(shù)據(jù)庫(kù)操作模塊,從查詢隊(duì)列中將SQL子查詢語(yǔ)句SQL1,SQL2,…,SQLn發(fā)送到相應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行;
D、異構(gòu)數(shù)據(jù)庫(kù)將數(shù)據(jù)查詢響應(yīng)后數(shù)據(jù)發(fā)送給綜合包裝器,通過(guò)查詢結(jié)果轉(zhuǎn)換模塊,把各異構(gòu)數(shù)據(jù)庫(kù)的查詢結(jié)果DATAl,DATA2,…,DATAn轉(zhuǎn)化成XML1,XML2,…,XMLn文檔;
Ε、中介器再對(duì)各個(gè)數(shù)據(jù)庫(kù)提供的查詢結(jié)果XML1,XML2...文檔作融合處理,即將XMLI, XML2,…,XMLn經(jīng)由結(jié)果合并過(guò)濾模塊的處理,合并不完整的數(shù)據(jù)和過(guò)濾重復(fù)的數(shù)據(jù),將完整統(tǒng)一的查詢結(jié)果XML發(fā)送給客戶端瀏覽器,經(jīng)由瀏覽器呈現(xiàn)在用戶面前。
[0016]本發(fā)明采用的技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
本發(fā)明提出了一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),使用XML、Web Service等技術(shù)實(shí)現(xiàn)了多源異構(gòu)數(shù)據(jù)庫(kù)的融合。通過(guò)Web Service的服務(wù)調(diào)用,其構(gòu)建的虛擬數(shù)據(jù)庫(kù),能有效地整合資源。任何操作系統(tǒng)、任何語(yǔ)言編寫的客戶端都能夠訪問(wèn)服務(wù)器提供的Web Service,其客戶端與服務(wù)器端之間以XML消息作為聯(lián)系,從而彌補(bǔ)了 C0RBA、DC0M和RMI方法的不足。具體優(yōu)點(diǎn)如下: (I)安裝升級(jí)簡(jiǎn)便。采用以上結(jié)構(gòu)簡(jiǎn)化了客戶端,客戶端可以是網(wǎng)絡(luò)上的任何平臺(tái)上的瀏覽器,通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)庫(kù)簡(jiǎn)化了客戶端。在升級(jí)軟件的時(shí)候,不需要對(duì)客戶端升級(jí)。
[0017](2)擴(kuò)展維護(hù)性好。所有應(yīng)用均集中在服務(wù)器端,從而使開發(fā)、維護(hù)過(guò)程可以集中在服務(wù)器端,無(wú)需考慮客戶端。此外,三層邏輯層之間建立了兩級(jí)映射關(guān)系,通過(guò)映射可以使其中一層發(fā)生改變時(shí)。不對(duì)系統(tǒng)的整體構(gòu)成影響,降低了擴(kuò)展維護(hù)的代價(jià)。
[0018](3)可移植性強(qiáng)。本發(fā)明采用JSP和JavaBean不僅可以在不同操作系統(tǒng)、Web服務(wù)器上運(yùn)行,而且在不同的平臺(tái)之間移植時(shí),無(wú)需重編譯。
[0019](4)可靠性強(qiáng)。多層體系結(jié)構(gòu)可以有效地優(yōu)化系統(tǒng)總體性能,提高系統(tǒng)的可靠性和伸縮性。
【專利附圖】
【附圖說(shuō)明】
[0020]圖1為多源異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)融合系統(tǒng)架構(gòu)圖。
[0021]圖2為綜合包裝器結(jié)構(gòu)圖。
[0022]圖3為中介器結(jié)構(gòu)圖。
[0023]圖4為系統(tǒng)數(shù)據(jù)查詢流程圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法作進(jìn)一步詳細(xì)說(shuō)明。
[0025]一種多源異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)融合系統(tǒng)架構(gòu)如圖1所示,從下到上共包括三層:數(shù)據(jù)庫(kù)層、數(shù)據(jù)融合層和統(tǒng)一應(yīng)用層。[0026]數(shù)據(jù)庫(kù)層由異構(gòu)數(shù)據(jù)庫(kù)及其代理組成。異構(gòu)數(shù)據(jù)庫(kù)的具體類型包括:0raCle、SQLServer、MySQL,它們提供實(shí)際的數(shù)據(jù)存儲(chǔ)和管理功能,能夠接受上層的調(diào)用。數(shù)據(jù)庫(kù)代理利用Web Service實(shí)現(xiàn)異地?cái)?shù)據(jù)庫(kù)的訪問(wèn)。在絕大部分應(yīng)用中,數(shù)據(jù)庫(kù)服務(wù)器都是放在防火墻后面以提高安全性,外網(wǎng)無(wú)法訪問(wèn)。增加數(shù)據(jù)庫(kù)代理之后,可取得異地?cái)?shù)據(jù),這樣既能保證數(shù)據(jù)庫(kù)的安全,又能做到數(shù)據(jù)源的融合。
[0027]數(shù)據(jù)融合層是實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)融合的關(guān)鍵,其目的是融合各個(gè)異構(gòu)數(shù)據(jù)源信息,負(fù)責(zé)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)訪問(wèn),同時(shí)協(xié)調(diào)各數(shù)據(jù)源之間的信息。數(shù)據(jù)融合層并不存儲(chǔ)實(shí)際的數(shù)據(jù),它是在各局部數(shù)據(jù)提供的共享數(shù)據(jù)的基礎(chǔ)之上建立一個(gè)全局的虛擬視圖。具體包括:元數(shù)據(jù)DB、元數(shù)據(jù)管理器、綜合包裝器、中介器、應(yīng)用層訪問(wèn)統(tǒng)一接口、異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口,下面分別對(duì)各模塊加以介紹。
[0028]元數(shù)據(jù)DB
元數(shù)據(jù)DB用于保存組成融合數(shù)據(jù)庫(kù)系統(tǒng)的各元數(shù)據(jù)庫(kù)信息,支撐整個(gè)系統(tǒng)的運(yùn)行。為了實(shí)現(xiàn)異構(gòu)數(shù)據(jù)源的融合,應(yīng)保存以下幾類元數(shù)據(jù)庫(kù)信息:元數(shù)據(jù)庫(kù)的注冊(cè)信息、元數(shù)據(jù)庫(kù)的連接信息URL、全局用戶與各元數(shù)據(jù)庫(kù)用戶的對(duì)應(yīng)關(guān)系、訪問(wèn)策略信息、模式映射信息。
[0029]元數(shù)據(jù)管理器
元數(shù)據(jù)管理器根據(jù)應(yīng)用的需要生成相應(yīng)的元數(shù)據(jù),把異地?cái)?shù)據(jù)源中的相關(guān)數(shù)據(jù)表、數(shù)據(jù)類型、函數(shù)、存儲(chǔ)過(guò)程以無(wú)沖突的形式表示出來(lái)。元數(shù)據(jù)管理器負(fù)責(zé)各局部數(shù)據(jù)庫(kù)的模式信息、融合系統(tǒng)的全局視圖信息以及異構(gòu)模式間的轉(zhuǎn)換規(guī)則。
[0030]中介器
中介器是負(fù)責(zé)各異構(gòu)數(shù)據(jù)庫(kù)的即插即用注冊(cè)服務(wù)并生成公共模型,接收來(lái)自瀏覽器的全局查詢請(qǐng)求。中介器由異構(gòu)數(shù)據(jù)注冊(cè)模塊、查詢規(guī)劃模塊和結(jié)果合并過(guò)濾模塊三個(gè)組件構(gòu)成,如圖3。其中異構(gòu)數(shù)據(jù)注冊(cè)模塊主要是在共享數(shù)據(jù)注冊(cè)階段負(fù)責(zé)異構(gòu)數(shù)據(jù)庫(kù)的共享注冊(cè)以及公共模型的建立;在數(shù)據(jù)融合階段,查詢規(guī)劃模塊負(fù)責(zé)將客戶端提交的基于全局?jǐn)?shù)據(jù)庫(kù)的標(biāo)準(zhǔn)查詢分解成針對(duì)各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子查詢,并提交到相應(yīng)的包裝器;結(jié)果合并過(guò)濾模塊負(fù)責(zé)把各異構(gòu)數(shù)據(jù)庫(kù)查詢返回的XML文檔合并為一個(gè)完整統(tǒng)一的查詢結(jié)果,并發(fā)送回客戶端瀏覽器。
[0031]綜合包裝器
綜合包裝器負(fù)責(zé)包裝異構(gòu)的數(shù)據(jù)源,實(shí)現(xiàn)數(shù)據(jù)位置和訪問(wèn)的透明。包裝器接收中介器發(fā)送過(guò)來(lái)的子查詢語(yǔ)句和連接底層數(shù)據(jù)庫(kù)所需要的信息(例如數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)名、IP、端口號(hào)),根據(jù)相應(yīng)的連接信息建立與底層相應(yīng)數(shù)據(jù)庫(kù)的連接,執(zhí)行查詢,從數(shù)據(jù)源中取得查詢數(shù)據(jù)并將這些數(shù)據(jù)按照查詢結(jié)構(gòu)組織成以XML結(jié)構(gòu)表達(dá)的結(jié)果文件。對(duì)異構(gòu)數(shù)據(jù)源來(lái)講,包裝器就是關(guān)系模式的翻譯器。包裝器主要由數(shù)據(jù)庫(kù)操作模塊和查詢結(jié)果轉(zhuǎn)換模塊兩個(gè)組件構(gòu)成,如圖2所示。數(shù)據(jù)庫(kù)操作模塊主要負(fù)責(zé)對(duì)后臺(tái)數(shù)據(jù)庫(kù)的連接管理,包括數(shù)據(jù)庫(kù)連接的初始化、數(shù)據(jù)庫(kù)基本操作的封裝、連接的分配、連接的關(guān)閉功能。查詢結(jié)果合并模塊負(fù)責(zé)把SQL查詢的結(jié)果轉(zhuǎn)換成XML文檔。
[0032]統(tǒng)一接口
數(shù)據(jù)融合層對(duì)外提供了兩個(gè)統(tǒng)一接口,即應(yīng)用層訪問(wèn)統(tǒng)一接口和底層異構(gòu)數(shù)據(jù)庫(kù)訪問(wèn)接口。其功能是提供透明的數(shù)據(jù)訪問(wèn),屏蔽各數(shù)據(jù)庫(kù)的差異性,用戶不需要知道數(shù)據(jù)的具體物理位置及數(shù)據(jù)源的模式信息,即可通過(guò)系統(tǒng)定義的與特定數(shù)據(jù)源無(wú)關(guān)的SQL語(yǔ)句進(jìn)行訪問(wèn)。
[0033]統(tǒng)一應(yīng)用層也就是用戶界面層。用戶層是異構(gòu)數(shù)據(jù)庫(kù)融合的使用者,可以通過(guò)融合中間層來(lái)訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)的共享數(shù)據(jù)資源。用戶是分散于各個(gè)地方的,不需要安裝客戶端應(yīng)用軟件,直接使用瀏覽器就可以根據(jù)自己的權(quán)限進(jìn)行查詢操作。具體的流程是瀏覽器向服務(wù)器提交查詢請(qǐng)求,并將查詢信息包裝為HTTP request對(duì)象,利用HTTP協(xié)議發(fā)送到服務(wù)器,等服務(wù)器完成相應(yīng)的查詢以及數(shù)據(jù)組織后,再返回用戶。
[0034]在該異構(gòu)數(shù)據(jù)查詢系統(tǒng)中,共有三種用戶參與,分別是各異構(gòu)數(shù)據(jù)庫(kù)管理員、融合系統(tǒng)管理員和普通用戶。其中融合系統(tǒng)管理員享有最高權(quán)限,可以創(chuàng)建和管理用戶、審查和批準(zhǔn)需要加入的異構(gòu)數(shù)據(jù)源、獲取異構(gòu)數(shù)據(jù)源的元數(shù)據(jù)、合成并管理全局?jǐn)?shù)據(jù)庫(kù)模式;各異構(gòu)數(shù)據(jù)庫(kù)管理員能夠登陸數(shù)據(jù)源注冊(cè)系統(tǒng),根據(jù)需要填寫注冊(cè)信息,選擇需要共享的表和字段并注冊(cè);普通用戶只能登陸查詢系統(tǒng),根據(jù)相關(guān)的查詢權(quán)限對(duì)數(shù)據(jù)進(jìn)行查詢。
[0035]由于融合系統(tǒng)中各異構(gòu)的數(shù)據(jù)源是自治的,這些資源分屬于不同的部門,有些數(shù)據(jù)需要一定的權(quán)限才能訪問(wèn),有些數(shù)據(jù)甚至不能共享,所以需對(duì)可共享的內(nèi)容進(jìn)行設(shè)定。本發(fā)明的具體實(shí)施包括以下兩個(gè)階段:
數(shù)據(jù)注冊(cè)階段
由中介器中的注冊(cè)管理器來(lái)完成,主要任務(wù)是完成對(duì)各異構(gòu)數(shù)據(jù)源在數(shù)據(jù)融合層中的注冊(cè),選擇融合的內(nèi)容(共享的表和字段)和訪問(wèn)的權(quán)限,并建立數(shù)據(jù)庫(kù)融合的模型。在這個(gè)階段,主要有各異構(gòu)數(shù)據(jù)庫(kù)管理員和融合系統(tǒng)管理員兩類角色參與,他們的主要任務(wù)如下: 各異構(gòu)數(shù)據(jù)庫(kù)管理員:主要完成登錄數(shù)據(jù)融合系統(tǒng),對(duì)數(shù)據(jù)庫(kù)中共享的內(nèi)容(可共享的表和字段)進(jìn)行選擇,以共享的數(shù)據(jù)的訪問(wèn)權(quán)限進(jìn)行設(shè)定。選擇自己欲注冊(cè)的數(shù)據(jù)庫(kù)類型,向融合系統(tǒng)管理員提交數(shù)據(jù)庫(kù)主機(jī)名、端口號(hào)、用戶名、密碼信息進(jìn)行注冊(cè)。
[0036]數(shù)據(jù)融合系統(tǒng)管理員:主要任務(wù)是審核各注冊(cè)的異構(gòu)數(shù)據(jù)源,對(duì)融合的內(nèi)容和訪問(wèn)的權(quán)限進(jìn)行確認(rèn)。由數(shù)據(jù)融合層負(fù)責(zé)收集各注冊(cè)的數(shù)據(jù)庫(kù)信息,建立共享的公共模型。
[0037]系統(tǒng)運(yùn)行階段
此階段的主要任務(wù)是接受用戶提出的查詢請(qǐng)求并對(duì)請(qǐng)求做出相應(yīng)的解答。圖4為系統(tǒng)數(shù)據(jù)查詢流程圖,包括以下步驟:
A、用戶從瀏覽器利用HTTP協(xié)議,向應(yīng)用層統(tǒng)一接口發(fā)出查詢請(qǐng)求,接口收到用戶查詢請(qǐng)求后進(jìn)行分析執(zhí)行,轉(zhuǎn)化為查詢參數(shù);
B、中介器得到查詢參數(shù)后,到元數(shù)據(jù)中查找目標(biāo)數(shù)據(jù)庫(kù)及數(shù)據(jù)表,并通過(guò)查詢規(guī)劃模塊進(jìn)行SQL分解,生成異構(gòu)數(shù)據(jù)庫(kù)相對(duì)應(yīng)的SQL子查詢語(yǔ)句SQLl,SQL2, - ,SQLn,并放入隊(duì)列之中準(zhǔn)備執(zhí)行,η為自然數(shù);
C、綜合包裝器通過(guò)數(shù)據(jù)庫(kù)操作模塊,從查詢隊(duì)列中將SQL子查詢語(yǔ)句SQL1,SQL2,…,SQLn發(fā)送到相應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行;
D、異構(gòu)數(shù)據(jù)庫(kù)將數(shù)據(jù)查詢響應(yīng)后數(shù)據(jù)發(fā)送給綜合包裝器,通過(guò)查詢結(jié)果轉(zhuǎn)化模塊,把各異構(gòu)數(shù)據(jù)庫(kù)的查詢結(jié)果DATAl,DATA2,…,DATAn轉(zhuǎn)化成XML1,XML2,…,XMLn文檔;
Ε、中介器再對(duì)各個(gè)數(shù)據(jù)庫(kù)提供的查詢結(jié)果XML1,XML2...文檔作融合處理,即將XMLI, XML2,…,XMLn經(jīng)由結(jié)果合并過(guò)濾模塊的處理,合并不完整的數(shù)據(jù)和過(guò)濾重復(fù)的數(shù)據(jù),將完整統(tǒng)一的查詢結(jié)果XML發(fā)送給客戶端瀏覽器,經(jīng)由瀏覽器呈現(xiàn)在用戶面前。[0038]顯然,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對(duì)上述本發(fā)明所公開的一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)及其數(shù)據(jù)查詢方法,還可以在不脫離本
【發(fā)明內(nèi)容】
的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。
【權(quán)利要求】
1.一種多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),包括:數(shù)據(jù)庫(kù)層、數(shù)據(jù)融合層和統(tǒng)一應(yīng)用層;其特征在于: 所述的數(shù)據(jù)庫(kù)層由異構(gòu)數(shù)據(jù)庫(kù)及異構(gòu)數(shù)據(jù)庫(kù)代理組成;異構(gòu)數(shù)據(jù)庫(kù)代理利用WebService實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn); 所述的數(shù)據(jù)融合層用于融合各個(gè)異構(gòu)數(shù)據(jù)源信息,負(fù)責(zé)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)訪問(wèn),同時(shí)協(xié)調(diào)各數(shù)據(jù)源之間的信息; 所述統(tǒng)一應(yīng)用層是異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的使用者,通過(guò)數(shù)據(jù)融合層來(lái)訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)的共享數(shù)據(jù)資源; 其中,所述數(shù)據(jù)融合層具體包括:元數(shù)據(jù)DB、元數(shù)據(jù)管理器、綜合包裝器、中介器、應(yīng)用層訪問(wèn)統(tǒng)一接口、異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口 ;其中, 元數(shù)據(jù)DB,用于保存組成異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的各元數(shù)據(jù)DB信息; 元數(shù)據(jù)管理器,根據(jù)應(yīng)用的需要生成相應(yīng)的元數(shù)據(jù),把異地?cái)?shù)據(jù)源中的相關(guān)數(shù)據(jù)表、數(shù)據(jù)類型、函數(shù)、存諸過(guò)程以無(wú)沖突的形式表示出來(lái); 中介器,負(fù)責(zé)各異構(gòu)數(shù)據(jù)庫(kù)的即插即用注冊(cè)服務(wù)并生成公共模型,接收來(lái)自瀏覽器的全局查詢請(qǐng)求; 綜合包裝器,負(fù)責(zé)包裝異構(gòu)的數(shù)據(jù)源,實(shí)現(xiàn)數(shù)據(jù)位置和訪問(wèn)的透明; 應(yīng)用層訪問(wèn)統(tǒng)一接口和異構(gòu)數(shù)據(jù)庫(kù)統(tǒng)一接口,用于提供透明的數(shù)據(jù)訪問(wèn),屏蔽各數(shù)據(jù)庫(kù)的差異性。
2.根據(jù)權(quán)利要求1所述的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),其特征在于:所述的異構(gòu)數(shù)據(jù)庫(kù)的類型包括:Oracle、SQL Server、MySQL。
3.根據(jù)權(quán)利要求1所述的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),其特征在于:保存的元數(shù)據(jù)DB信息類型:元數(shù)據(jù)DB的注冊(cè)信息、元數(shù)據(jù)DB的連接信息URL、全局用戶與各元數(shù)據(jù)DB用戶的對(duì)應(yīng)關(guān)系、訪問(wèn)策略信息、模式映射信息。
4.根據(jù)權(quán)利要求1所述的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),其特征在于:所述的中介器由異構(gòu)數(shù)據(jù)注冊(cè)模塊、查詢規(guī)劃模塊和結(jié)果合并過(guò)濾模塊三個(gè)組件構(gòu)成;所述的異構(gòu)數(shù)據(jù)注冊(cè)模塊在共享數(shù)據(jù)注冊(cè)階段負(fù)責(zé)異構(gòu)數(shù)據(jù)庫(kù)的共享注冊(cè)以及公共模型的建立;所述的查詢規(guī)劃模塊在數(shù)據(jù)融合階段負(fù)責(zé)將客戶端提交的基于全局?jǐn)?shù)據(jù)庫(kù)的標(biāo)準(zhǔn)查詢分解成針對(duì)各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子查詢,并提交到相應(yīng)的包裝器;所述的結(jié)果合并過(guò)濾模塊負(fù)責(zé)把各異構(gòu)數(shù)據(jù)庫(kù)查詢返回的XML文檔合并為一個(gè)完整統(tǒng)一的查詢結(jié)果,并發(fā)送回客戶端瀏覽器。
5.根據(jù)權(quán)利要求1所述的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng),其特征在于:所述的綜合包裝器包括數(shù)據(jù)庫(kù)操作模塊和查詢結(jié)果轉(zhuǎn)換模塊;其中,數(shù)據(jù)庫(kù)操作模塊負(fù)責(zé)對(duì)后臺(tái)數(shù)據(jù)庫(kù)的連接管理,包括數(shù)據(jù)庫(kù)連接的初始化、數(shù)據(jù)庫(kù)基本操作的封裝、連接的分配、連接的關(guān)閉功能;所述查詢結(jié)果合并模塊負(fù)責(zé)把SQL查詢的結(jié)果轉(zhuǎn)換成XML文檔。
6.根據(jù)權(quán)利要求1-5任一所述的多源異構(gòu)數(shù)據(jù)庫(kù)融合系統(tǒng)的數(shù)據(jù)查詢方法,其特征在于:包括以下步驟: A、用戶從瀏覽器利用HTTP協(xié)議,向應(yīng)用層統(tǒng)一接口發(fā)出查詢請(qǐng)求,應(yīng)用層統(tǒng)一接口收到用戶查詢請(qǐng)求后進(jìn)行分析執(zhí)行,轉(zhuǎn)化為查詢參數(shù); B、中介器得到查詢參數(shù)后,到元數(shù)據(jù)中查找目標(biāo)數(shù)據(jù)庫(kù)及數(shù)據(jù)表,并通過(guò)查詢規(guī)劃模塊進(jìn)行SQL分解,生成異構(gòu)數(shù)據(jù)庫(kù)相對(duì)應(yīng)的SQL子查詢語(yǔ)句SQLl,SQL2, - ,SQLn,并放入隊(duì)列之中準(zhǔn)備執(zhí)行,η為自然數(shù); C、綜合包裝器通過(guò)數(shù)據(jù)庫(kù)操作模塊,從查詢隊(duì)列中將SQL子查詢語(yǔ)句SQL1,SQL2,…,SQLn發(fā)送到相應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行; D、異構(gòu)數(shù)據(jù)庫(kù)將數(shù)據(jù)查詢響應(yīng)后數(shù)據(jù)發(fā)送給綜合包裝器,通過(guò)查詢結(jié)果轉(zhuǎn)換模塊,把各異構(gòu)數(shù)據(jù)庫(kù)的查詢結(jié)果DATAl,DATA2,…,DATAn轉(zhuǎn)化成XML1,XML2,…,XMLn文檔; Ε、中介器再對(duì)各個(gè)數(shù)據(jù)庫(kù)提供的查詢結(jié)果XML1,XML2...文檔作融合處理,即將XMLI, XML2, - ,XMLn經(jīng)由結(jié)果合并過(guò)濾模塊的處理,合并不完整的數(shù)據(jù)和過(guò)濾重復(fù)的數(shù)據(jù),將完整統(tǒng)一的查詢結(jié) 果XML發(fā)送給客戶端瀏覽器,經(jīng)由瀏覽器呈現(xiàn)在用戶面前。
【文檔編號(hào)】G06F17/30GK104008135SQ201410190015
【公開日】2014年8月27日 申請(qǐng)日期:2014年5月7日 優(yōu)先權(quán)日:2014年5月7日
【發(fā)明者】徐名海, 李龍鳳, 梁霖, 呂冬冬 申請(qǐng)人:南京郵電大學(xué)