對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng),針對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖;SQL語(yǔ)法解析裝置根據(jù)SQL語(yǔ)句生成全局任務(wù),并將全局任務(wù)提交給任務(wù)調(diào)度裝置;任務(wù)調(diào)度裝置將全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將子任務(wù)分派到任務(wù)執(zhí)行代理裝置;任務(wù)執(zhí)行代理單元在與子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。本發(fā)明的方法、中間件裝置及系統(tǒng),基于中介模型通過(guò)全局視圖訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù),屏蔽了數(shù)據(jù)庫(kù)的分布性、異構(gòu)性差異,提供統(tǒng)一的數(shù)據(jù)視圖,解決了各異構(gòu)數(shù)據(jù)庫(kù)之間的模式?jīng)_突問(wèn)題,實(shí)現(xiàn)了對(duì)異構(gòu)數(shù)據(jù)庫(kù)的透明訪問(wèn)。
【專利說(shuō)明】對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)【技術(shù)領(lǐng)域】,尤其涉及一種對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng)。
【背景技術(shù)】
[0002]在當(dāng)前信息化的大趨勢(shì)下,企業(yè)在信息化過(guò)程中存在著大量基于各種業(yè)務(wù)流程和異構(gòu)數(shù)據(jù)庫(kù)的應(yīng)用系統(tǒng)。企業(yè)某一特定的業(yè)務(wù)只需要訪問(wèn)相應(yīng)的數(shù)據(jù)庫(kù)系統(tǒng),但是隨著企業(yè)信息化程度的提高,企業(yè)應(yīng)用和決策往往需要綜合利用各個(gè)系統(tǒng)之間的數(shù)據(jù),它們各自的信息“孤島”阻礙了企業(yè)信息化的進(jìn)程。因此實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)庫(kù)透明訪問(wèn)、消除企業(yè)信息“孤島”的需求越來(lái)越迫切。
[0003]對(duì)于運(yùn)營(yíng)商、大型互聯(lián)網(wǎng)公司等大型企業(yè),業(yè)務(wù)數(shù)據(jù)通??赡芊植加跀?shù)家子公司的數(shù)個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中,分布于企業(yè)不同部門的數(shù)據(jù)庫(kù)系統(tǒng),在這種情況下,一些綜合業(yè)務(wù)和決策往往會(huì)需要把不同子公司、不同部門的數(shù)據(jù)進(jìn)行綜合分析才能得到合理的結(jié)果。
[0004]在現(xiàn)有技術(shù)中,在集成的異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)方面,聯(lián)邦數(shù)據(jù)庫(kù)是由若干個(gè)自治的異構(gòu)數(shù)據(jù)庫(kù)互聯(lián)構(gòu)成,參與系統(tǒng)的各數(shù)據(jù)庫(kù)之間實(shí)現(xiàn)一對(duì)一的連接。這種結(jié)構(gòu)在新增數(shù)據(jù)庫(kù)的時(shí)候需實(shí)現(xiàn)與各個(gè)已有數(shù)據(jù)庫(kù)的對(duì)接,擴(kuò)展性較差。數(shù)據(jù)倉(cāng)庫(kù)是建立一個(gè)存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),由ETL (Extract, Transform and Load)工具定期從數(shù)據(jù)源過(guò)濾數(shù)據(jù),然后裝載到數(shù)據(jù)倉(cāng)庫(kù),供用戶查詢。其創(chuàng)建代價(jià)高,當(dāng)有新數(shù)據(jù)源加入或已有數(shù)據(jù)源發(fā)生變化時(shí)對(duì)倉(cāng)庫(kù)的修改代價(jià)也比較高。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明要解決的一個(gè)技術(shù)問(wèn)題是提供一種對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法,通過(guò)全局視圖訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)。
[0006]一種對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法,包括:針對(duì)所述多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖;SQL語(yǔ)法解析裝置接收到對(duì)所述全局視圖進(jìn)行操作的SQL語(yǔ)句;所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù),并將所述全局任務(wù)提交給任務(wù)調(diào)度裝置;所述任務(wù)調(diào)度裝置將所述全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將所述子任務(wù)分派到任務(wù)執(zhí)行代理裝置;所述任務(wù)執(zhí)行代理單元在與所述子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
[0007]根據(jù)本發(fā)明的方法的一個(gè)實(shí)施例,進(jìn)一步的,在全局?jǐn)?shù)據(jù)字典中設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào);其中,所述全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型;所述局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等;全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
[0008]根據(jù)本發(fā)明的方法的一個(gè)實(shí)施例,進(jìn)一步的,所述SQL語(yǔ)法解析裝置判斷所述SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則;當(dāng)符合時(shí),所述SQL語(yǔ)法解析裝置查詢所述全局?jǐn)?shù)據(jù)字典,判斷所述SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性;當(dāng)正確時(shí),所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù)。
[0009]根據(jù)本發(fā)明的方法的一個(gè)實(shí)施例,進(jìn)一步的,所述任務(wù)調(diào)度裝置查詢所述全局?jǐn)?shù)據(jù)字典,獲取所述全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將所述全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù);所述任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
[0010]根據(jù)本發(fā)明的方法的一個(gè)實(shí)施例,進(jìn)一步的,所述任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成所述全局視圖的關(guān)系結(jié)果集返回給用戶;其中,所述任務(wù)執(zhí)行代理裝置設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中。
[0011]本發(fā)明要解決的一個(gè)技術(shù)問(wèn)題是提供一種用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置,通過(guò)全局視圖訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)。
[0012]一種用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置,包括:全局視圖生成裝置、SQL語(yǔ)法解析裝置、任務(wù)調(diào)度裝置和任務(wù)執(zhí)行代理裝置;所述全局視圖生成裝置,用于針對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖;所述SQL語(yǔ)法解析裝置,用于接收到對(duì)所述全局視圖進(jìn)行操作的SQL語(yǔ)句,根據(jù)所述SQL語(yǔ)句生成全局任務(wù),并將所述全局任務(wù)提交給任務(wù)調(diào)度裝置;所述任務(wù)調(diào)度裝置,用于將所述全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將所述子任務(wù)分派到任務(wù)執(zhí)行代理裝置;所述任務(wù)執(zhí)行代理單元,用于在與所述子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
[0013]根據(jù)本發(fā)明的裝置的一個(gè)實(shí)施例,進(jìn)一步的,還包括:全局?jǐn)?shù)據(jù)字典;在所述全局?jǐn)?shù)據(jù)字典中設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào);其中,所述全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型;所述局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等;全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
[0014]根據(jù)本發(fā)明的裝置的一個(gè)實(shí)施例,進(jìn)一步的,所述SQL語(yǔ)法解析裝置判斷所述SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則;當(dāng)符合時(shí),所述SQL語(yǔ)法解析裝置查詢所述全局?jǐn)?shù)據(jù)字典,判斷所述SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性;當(dāng)正確時(shí),所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù)。
[0015]根據(jù)本發(fā)明的裝置的一個(gè)實(shí)施例,進(jìn)一步的,所述任務(wù)調(diào)度裝置查詢所述全局?jǐn)?shù)據(jù)字典,獲取所述全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將所述全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù);所述任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
[0016]根據(jù)本發(fā)明的裝置的一個(gè)實(shí)施例,進(jìn)一步的,所述任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成所述全局視圖的關(guān)系結(jié)果集返回給用戶;其中,所述任務(wù)執(zhí)行代理裝置設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中。
[0017]一種異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),包括如上所述的中間件裝置。
[0018]本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng),基于中介模型通過(guò)全局視圖訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù),屏蔽了數(shù)據(jù)庫(kù)的分布性、異構(gòu)性差異,提供統(tǒng)一的數(shù)據(jù)視圖,解決了各異構(gòu)數(shù)據(jù)庫(kù)之間的模式?jīng)_突問(wèn)題,實(shí)現(xiàn)了對(duì)異構(gòu)數(shù)據(jù)庫(kù)的透明訪問(wèn)。【專利附圖】
【附圖說(shuō)明】
[0019]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為根據(jù)本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法的一個(gè)實(shí)施例的流程圖;
[0021]圖2為根據(jù)本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法的另一個(gè)實(shí)施例的流程圖;
[0022]圖3為根據(jù)本發(fā)明的用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置的一個(gè)實(shí)施例的示意圖;
[0023]圖4為根據(jù)本發(fā)明的用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置的一個(gè)實(shí)施例中任務(wù)執(zhí)行代理裝置的示意圖。
【具體實(shí)施方式】
[0024]下面參照附圖對(duì)本發(fā)明進(jìn)行更全面的描述,其中說(shuō)明本發(fā)明的示例性實(shí)施例。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0025]異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)是相關(guān)的多個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的集合。異構(gòu)數(shù)據(jù)庫(kù)為異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)數(shù)據(jù)庫(kù),分別具有自己的應(yīng)用特性、完整性控制和安全性控制。異構(gòu)數(shù)據(jù)庫(kù)可以分別運(yùn)行在大型機(jī)、小型機(jī)、工作站、PC或嵌入式系統(tǒng)中,可以是同為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的Oracle, SQLServer等,也可以是不同數(shù)據(jù)模型的數(shù)據(jù)庫(kù),如關(guān)系、模式、層次、網(wǎng)絡(luò)、面向?qū)ο螅瘮?shù)型數(shù)據(jù)庫(kù)等。
[0026]中介模型是一種利用虛擬視圖思想進(jìn)行數(shù)據(jù)集成的模型,它集成系統(tǒng)內(nèi)各數(shù)據(jù)源的數(shù)據(jù)模式而不實(shí)際存儲(chǔ)數(shù)據(jù)。中介模型并不需要改變異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)的存儲(chǔ)和管理方式,而是在異構(gòu)數(shù)據(jù)源和應(yīng)用層之間設(shè)置一個(gè)中間件,向下協(xié)調(diào)各數(shù)據(jù)源,向上為訪問(wèn)集成數(shù)據(jù)的應(yīng)用提供統(tǒng)一的視圖。中介模型結(jié)構(gòu)清晰,可擴(kuò)展性好,維護(hù)代價(jià)低。
[0027]圖1為根據(jù)本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法的一個(gè)實(shí)施例的流程圖。如圖1所示:
[0028]步驟102,針對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖。多個(gè)異構(gòu)數(shù)據(jù)庫(kù)可以是異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)數(shù)據(jù)庫(kù)。全局視圖為一種虛擬的視圖。
[0029]步驟103,SQL語(yǔ)法解析裝置接收到對(duì)全局視圖進(jìn)行操作的SQL查詢語(yǔ)句。SQL語(yǔ)法解析裝置根據(jù)SQL語(yǔ)句生成全局任務(wù),并將全局任務(wù)提交給任務(wù)調(diào)度裝置。SQL語(yǔ)句為查詢語(yǔ)句。如果在異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)中進(jìn)行關(guān)于數(shù)據(jù)同步性、一致性、權(quán)限等的相關(guān)性設(shè)置,SQL語(yǔ)句也可以為刪除、修改等等。
[0030]步驟104,任務(wù)調(diào)度裝置將全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將子任務(wù)分派到任務(wù)執(zhí)行代理裝置。
[0031]步驟105,任務(wù)執(zhí)行代理單元在與子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
[0032]根據(jù)本發(fā)明的一個(gè)實(shí)施例,在全局?jǐn)?shù)據(jù)字典、或全局?jǐn)?shù)據(jù)字典裝置中,也可以是存放全局?jǐn)?shù)據(jù)的數(shù)據(jù)庫(kù)中,設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào)。
[0033]全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型。局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等。全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
[0034]根據(jù)本發(fā)明的一個(gè)實(shí)施例,SQL語(yǔ)法解析裝置判斷SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則。當(dāng)符合時(shí),SQL語(yǔ)法解析裝置查詢?nèi)謹(jǐn)?shù)據(jù)字典,判斷SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性。當(dāng)正確時(shí),SQL語(yǔ)法解析裝置根據(jù)SQL語(yǔ)句生成全局任務(wù)。
[0035]根據(jù)本發(fā)明的一個(gè)實(shí)施例,任務(wù)調(diào)度裝置查詢?nèi)謹(jǐn)?shù)據(jù)字典,獲取全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù)。任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
[0036]根據(jù)本發(fā)明的一個(gè)實(shí)施例,任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成全局視圖的關(guān)系結(jié)果集返回給用戶。其中,任務(wù)執(zhí)行代理裝置設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中。
[0037]本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法,解決了在大量企業(yè)數(shù)據(jù)分布性和異構(gòu)性的情況下構(gòu)建綜合性應(yīng)用時(shí)如何透明訪問(wèn)分布式異構(gòu)數(shù)據(jù)庫(kù)的問(wèn)題,實(shí)現(xiàn)數(shù)據(jù)庫(kù)集成、降低應(yīng)用程序設(shè)計(jì)的復(fù)雜度。
[0038]本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法,對(duì)外提供全局視圖,定義全局模式,將各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式與全局模式進(jìn)行映射,用戶只需要基于全局視圖提交SQL語(yǔ)句,中間件裝置將SQL語(yǔ)法解析、全局任務(wù)分解、分派以及結(jié)果合并等過(guò)程封裝隱藏起來(lái),用戶就像訪問(wèn)本地?cái)?shù)據(jù)庫(kù)一樣感覺(jué)不到數(shù)據(jù)的分布性和異構(gòu)性。
[0039]SQL語(yǔ)法解析器接收用戶輸入的SQL,首先檢查是否有語(yǔ)法錯(cuò)誤,然后查看數(shù)據(jù)字典進(jìn)行數(shù)據(jù)驗(yàn)證,檢查用戶輸入的表、列是否存在,如果存在錯(cuò)誤則反饋給用戶,確認(rèn)輸入無(wú)誤后則基于全局視圖生成一個(gè)全局任務(wù)。
[0040]用戶的SQL查詢請(qǐng)求經(jīng)過(guò)解析,傳入任務(wù)調(diào)度裝置,查詢請(qǐng)求被分解成具體的查詢動(dòng)作,分派給底層不同的任務(wù)執(zhí)行代理,任務(wù)調(diào)度模塊最后將底層各個(gè)任務(wù)執(zhí)行代理運(yùn)行的結(jié)果合并處理,以關(guān)系結(jié)果集的方式返回給用戶。
[0041]任務(wù)執(zhí)行代理裝置構(gòu)建于各個(gè)數(shù)據(jù)庫(kù)平臺(tái)之上,完成局部模式向全局模式的轉(zhuǎn)換。任務(wù)執(zhí)行代理裝置充分考慮到各個(gè)異構(gòu)數(shù)據(jù)庫(kù)平臺(tái)的數(shù)據(jù)操作模式上的差異,屏蔽各局部數(shù)據(jù)庫(kù)的異構(gòu)性,每個(gè)執(zhí)行代理接受片段查詢?nèi)蝿?wù),轉(zhuǎn)換成各個(gè)局部數(shù)據(jù)庫(kù)可以執(zhí)行的形式,發(fā)送到各個(gè)局部數(shù)據(jù)庫(kù)進(jìn)行子任務(wù)執(zhí)行得到查詢結(jié)果。
[0042]圖2為根據(jù)本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法的另一個(gè)實(shí)施例的流程圖。如圖2所示:
[0043]步驟201,應(yīng)用程序提交SQL查詢語(yǔ)句。
[0044]步驟202,由SQL語(yǔ)法解析器進(jìn)行語(yǔ)法驗(yàn)證,如果語(yǔ)法正確則進(jìn)行數(shù)據(jù)合法性驗(yàn)證,例如:SQL語(yǔ)句中的全局表、列是否存在等問(wèn)題,需要查閱全局?jǐn)?shù)據(jù)字典中記錄的元數(shù)據(jù)信息。
[0045]步驟203,如果SQL語(yǔ)法出錯(cuò)則提示用戶相關(guān)語(yǔ)法錯(cuò)誤,要求重新輸入。[0046]步驟204,不合法則提示相應(yīng)錯(cuò)誤,要求重新輸入。
[0047]步驟205,驗(yàn)證合法則生成全局查詢。
[0048]步驟206,生成的全局查詢被發(fā)送至任務(wù)調(diào)度裝置,此時(shí)的全局查詢是基于虛擬全局視圖的任務(wù),需要對(duì)其進(jìn)行任務(wù)分解,使之轉(zhuǎn)換成帶有數(shù)據(jù)源信息的局部子任務(wù)。
[0049]步驟207,任務(wù)調(diào)度裝置獲取模式映射信息。由于全局模式與局部模式的映射信息存儲(chǔ)在全局?jǐn)?shù)據(jù)字典,因此需要訪問(wèn)數(shù)據(jù)字典。
[0050]步驟208,任務(wù)調(diào)度裝置根據(jù)映射信息將全局任務(wù)轉(zhuǎn)換為局部子任務(wù),假如需要請(qǐng)求全局關(guān)系R的數(shù)據(jù),而R分別與三個(gè)局部關(guān)系M、N、T存在映射關(guān)系,這時(shí)候就將請(qǐng)求R的全局任務(wù)轉(zhuǎn)換成分別請(qǐng)求M、N、T三個(gè)局部子任務(wù)。
[0051]步驟209,對(duì)于已經(jīng)生成的局部子任務(wù),任務(wù)調(diào)度器查找其請(qǐng)求數(shù)據(jù)所在的數(shù)據(jù)庫(kù)信息,包括數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),然后把子任務(wù)分派至各任務(wù)執(zhí)行代理。
[0052]步驟210,任務(wù)執(zhí)行代理向各局部數(shù)據(jù)庫(kù)請(qǐng)求數(shù)據(jù)。
[0053]步驟211,局部數(shù)據(jù)庫(kù)將子任務(wù)的執(zhí)行結(jié)果返回給任務(wù)執(zhí)行代理。
[0054]步驟212,任務(wù)執(zhí)行代理將子任務(wù)結(jié)果返回給任務(wù)調(diào)度裝置。
[0055]步驟213,任務(wù)調(diào)度器將各個(gè)子結(jié)果合并返回,提交給應(yīng)用程序。
[0056]根據(jù)本發(fā)明的一個(gè)實(shí)施例,全局視圖中有兩張表,分別叫A、B,全局視圖A表對(duì)應(yīng)三個(gè)局部數(shù)據(jù)庫(kù)(異構(gòu)數(shù)據(jù)庫(kù))中的三張表A1、A2、A3,全局視圖B表對(duì)應(yīng)此三個(gè)局部數(shù)據(jù)庫(kù)(異構(gòu)數(shù)據(jù)庫(kù))中三張表B1、B2、B3。
[0057]A 表中有一列 columnA,B 表中有一列 columnB ;
[0058]columnA 對(duì)應(yīng) Al、A2、A3 中的 columnAl、columnA2、columnA3,columnB 對(duì)應(yīng) B1、B2、B3 中的 columnBl、columnB2、columnB3。
[0059]現(xiàn)提交全局查詢語(yǔ)句:selectA.columnA,B.columnB from A,B whereA.ColumnA=B.columnB ;即生成主任務(wù)。
[0060]將此查詢語(yǔ)句分為對(duì)應(yīng)的三個(gè)子查詢語(yǔ)句,發(fā)送至三個(gè)局部數(shù)據(jù)庫(kù),分別如下:
[0061]select Al.columnAl, B1.columnBl from Al,BI where Al.ColumnAl=Bl.columnBl ;
[0062]select Α2.columnA2,Β2.columnB2 from A2,B2 where A2.columnA2=B2.columnB2 ;
[0063]select A3.columnA3,B3.columnB3 from A3,B3 where A3.columnA3=B3.columnB3 ;
[0064]最后將這三個(gè)子查詢結(jié)果合并,以A.columnA, B.columnB的形式返回最終查詢結(jié)果,在這個(gè)過(guò)程中,用戶對(duì)數(shù)據(jù)的分布式、結(jié)果合并無(wú)感知。
[0065]圖3為根據(jù)本發(fā)明的用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置的一個(gè)實(shí)施例的示意圖。如圖3所示:用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置包括:全局視圖生成裝置(模塊、單元)(在圖3中未畫出)、SQL語(yǔ)法解析裝置(模塊、單元)301、任務(wù)調(diào)度裝置(模塊、單元)302和任務(wù)執(zhí)行代理裝置(模塊、單元)303。
[0066]全局視圖生成裝置針對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖。
[0067]SQL語(yǔ)法解析裝置301接收到對(duì)全局視圖進(jìn)行操作的SQL語(yǔ)句,根據(jù)SQL語(yǔ)句生成全局任務(wù),并將全局任務(wù)提交給任務(wù)調(diào)度裝置。[0068]任務(wù)調(diào)度裝置302將全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將子任務(wù)分派到任務(wù)執(zhí)行代理裝置303。
[0069]任務(wù)執(zhí)行代理單元303在與子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
[0070]根據(jù)本發(fā)明的一個(gè)實(shí)施例,在全局?jǐn)?shù)據(jù)字典304中設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào)。其中,全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型。局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等。全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
[0071]根據(jù)本發(fā)明的一個(gè)實(shí)施例,SQL語(yǔ)法解析裝置301判斷SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則。當(dāng)符合時(shí),SQL語(yǔ)法解析裝置301查詢?nèi)謹(jǐn)?shù)據(jù)字典304,判斷SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性。當(dāng)正確時(shí),SQL語(yǔ)法解析裝置301根據(jù)SQL語(yǔ)句生成全局任務(wù)。
[0072]根據(jù)本發(fā)明的一個(gè)實(shí)施例,全局?jǐn)?shù)據(jù)字典用于實(shí)現(xiàn)系統(tǒng)集成全局視圖,描述集成的其他數(shù)據(jù)庫(kù)的信息,主要包括下面幾種:(1)全局模式信息,包括全局表名、表結(jié)構(gòu)、列名、列類型等。(2)局部模式信息,包括局部表名、表結(jié)構(gòu)、列名、列類型等。(3)全局模式與局部模式的映射信息,包括全局表到局部表名稱的映射、域的映射、域的類型映射等信息。(4 )局部數(shù)據(jù)庫(kù)信息,包括數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào)。
[0073]在任務(wù)分解階段,需要查詢數(shù)據(jù)字典得到某一全局關(guān)系對(duì)應(yīng)的局部關(guān)系所在數(shù)據(jù)庫(kù)等信息,用以將全局任務(wù)轉(zhuǎn)換成局部子任務(wù)。
[0074]圖4為根據(jù)本發(fā)明的用于數(shù)據(jù)庫(kù)集成的中間件裝置的一個(gè)實(shí)施例中任務(wù)執(zhí)行代理裝置的示意圖。如圖4所示,任務(wù)調(diào)度裝置查詢?nèi)謹(jǐn)?shù)據(jù)字典,獲取全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù)。任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
[0075]任務(wù)執(zhí)行代理裝置可以設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中,例如,oracle、sql server、my sql數(shù)據(jù)庫(kù)等等,可以具有多種類型的任務(wù)執(zhí)行代理裝置,例如:oracle、sql server、my sql任務(wù)執(zhí)行代理裝置等等。任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成全局視圖的關(guān)系結(jié)果集返回給用戶。
[0076]根據(jù)本發(fā)明的一個(gè)實(shí)施例,異構(gòu)數(shù)據(jù)庫(kù)集成系統(tǒng)包括如上的中間件裝置。
[0077]本發(fā)明的對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法、中間件裝置及系統(tǒng),以中介模型思想為基礎(chǔ),中間件裝置在應(yīng)用程序和各個(gè)局部數(shù)據(jù)庫(kù)之間它起了承上啟下的作用,使應(yīng)用程序可以通過(guò)提交SQL語(yǔ)句向分布式異構(gòu)數(shù)據(jù)庫(kù)請(qǐng)求數(shù)據(jù),不用考慮局部數(shù)據(jù)庫(kù)的異構(gòu)問(wèn)題,對(duì)下面的各個(gè)局部數(shù)據(jù)庫(kù)規(guī)定統(tǒng)一的功能接口,使得現(xiàn)有的數(shù)據(jù)庫(kù)可以方便地集成到整個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)中去。定義了一種全局模式,通過(guò)局部模式與全局模式的轉(zhuǎn)換來(lái)屏蔽不同數(shù)據(jù)庫(kù)的差異性,通過(guò)模式轉(zhuǎn)換解決了不同異構(gòu)數(shù)據(jù)庫(kù)之間的模式?jīng)_突問(wèn)題。
[0078]可能以許多方式來(lái)實(shí)現(xiàn)本發(fā)明的方法和系統(tǒng)。例如,可通過(guò)軟件、硬件、固件或者軟件、硬件、固件的任何組合來(lái)實(shí)現(xiàn)本發(fā)明的方法和系統(tǒng)。用于方法的步驟的上述順序僅是為了進(jìn)行說(shuō)明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說(shuō)明。此外,在一些實(shí)施例中,還可將本發(fā)明實(shí)施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲(chǔ)用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
[0079]本發(fā)明的描述是為了示例和描述起見(jiàn)而給出的,而并不是無(wú)遺漏的或者將本發(fā)明限于所公開(kāi)的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施。
【權(quán)利要求】
1.一種對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)操作的方法,其特征在于,包括: 針對(duì)所述多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖; SQL語(yǔ)法解析裝置接收到對(duì)所述全局視圖進(jìn)行操作的SQL語(yǔ)句; 所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù),并將所述全局任務(wù)提交給任務(wù)調(diào)度裝置; 所述任務(wù)調(diào)度裝置將所述全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將所述子任務(wù)分派到任務(wù)執(zhí)行代理裝置; 所述任務(wù)執(zhí)行代理單元在與所述子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
2.如權(quán)利要求1所述的方法,其特征在于: 在全局?jǐn)?shù)據(jù)字典中設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào); 其中,所述全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型;所述局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等; 全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
3.如權(quán)利要求2所述的方法,其特征在于: 所述SQL語(yǔ)法解析裝置判斷所述SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則; 當(dāng)符合時(shí),所述SQL語(yǔ)法解析裝置查詢所述全局?jǐn)?shù)據(jù)字典,判斷所述SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性;當(dāng)正確時(shí),所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù)。
4.如權(quán)利要求3所述的方法,其特征在于: 所述任務(wù)調(diào)度裝置查詢所述全局?jǐn)?shù)據(jù)字典,獲取所述全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將所述全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù); 所述任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
5.如權(quán)利要求4所述的方法,其特征在于: 所述任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成所述全局視圖的關(guān)系結(jié)果集返回給用戶; 其中,所述任務(wù)執(zhí)行代理裝置設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中。
6.一種用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置,其特征在于,包括:全局視圖生成裝置、SQL語(yǔ)法解析裝置、任務(wù)調(diào)度裝置和任務(wù)執(zhí)行代理裝置; 所述全局視圖生成裝置,用于針對(duì)多個(gè)異構(gòu)數(shù)據(jù)庫(kù)生成全局視圖; 所述SQL語(yǔ)法解析裝置,用于接收到對(duì)所述全局視圖進(jìn)行操作的SQL語(yǔ)句,根據(jù)所述SQL語(yǔ)句生成全局任務(wù),并將所述全局任務(wù)提交給任務(wù)調(diào)度裝置; 所述任務(wù)調(diào)度裝置,用于將所述全局任務(wù)分解為對(duì)于各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù),并將所述子任務(wù)分派到任務(wù)執(zhí)行代理裝置; 所述任務(wù)執(zhí)行代理單元,用于在與所述子任務(wù)對(duì)應(yīng)的異構(gòu)數(shù)據(jù)庫(kù)中執(zhí)行操作。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括: 全局?jǐn)?shù)據(jù)字典;在所述全局?jǐn)?shù)據(jù)字典中設(shè)置各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的局部模式信息與全局模式信息的映射關(guān)系、各個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、IP地址及端口號(hào); 其中,所述全局模式信息包括:全局視圖的表名、表結(jié)構(gòu)、列名、列類型;所述局部模式信息包括:異構(gòu)數(shù)據(jù)庫(kù)的表名、表結(jié)構(gòu)、列名、列類型等; 全局模式信息與局部模式信息的映射關(guān)系包括:全局視圖的表到異構(gòu)數(shù)據(jù)庫(kù)的表名稱、域、域的類型的映射關(guān)系。
8.如權(quán)利要求7所述的裝置,其特征在于: 所述SQL語(yǔ)法解析裝置判斷所述SQL語(yǔ)句是否符合SQL的語(yǔ)法規(guī)則; 當(dāng)符合時(shí),所述SQL語(yǔ)法解析裝置查詢所述全局?jǐn)?shù)據(jù)字典,判斷所述SQL語(yǔ)句中的有關(guān)全局視圖的數(shù)據(jù)的正確性;當(dāng)正確時(shí),所述SQL語(yǔ)法解析裝置根據(jù)所述SQL語(yǔ)句生成全局任務(wù)。
9.如權(quán)利要求8所述的裝置,其特征在于: 所述任務(wù)調(diào)度裝置查詢所述全局?jǐn)?shù)據(jù)字典,獲取所述全局任務(wù)需要訪問(wèn)的異構(gòu)數(shù)據(jù)庫(kù),并將所述全局任務(wù)分解為對(duì)應(yīng)異構(gòu)數(shù)據(jù)庫(kù)的子任務(wù); 所述任務(wù)調(diào)度裝置獲取異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)的ip以及端口號(hào),將異構(gòu)數(shù)據(jù)庫(kù)子任務(wù)分派至各個(gè)任務(wù)執(zhí)行代理裝置執(zhí)行子任務(wù)。
10.如權(quán)利要求9所述的裝置,其特征在于: 所述任務(wù)調(diào)度裝置將各個(gè)任務(wù)執(zhí)行代理裝置運(yùn)行的結(jié)果合并,生成所述全局視圖的關(guān)系結(jié)果集返回給用戶; 其中,所述任務(wù)執(zhí)行代理裝置設(shè)置在異構(gòu)數(shù)據(jù)庫(kù)中。
11.一種異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng),其特征在于: 包括如權(quán)利要求6至10任意一項(xiàng)所述的用于異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)集成的中間件裝置。
【文檔編號(hào)】G06F17/30GK103942234SQ201310027356
【公開(kāi)日】2014年7月23日 申請(qǐng)日期:2013年1月21日 優(yōu)先權(quán)日:2013年1月21日
【發(fā)明者】付雷, 曹敏, 張正風(fēng), 徐博斌 申請(qǐng)人:中國(guó)電信股份有限公司