專利名稱::集成數(shù)據(jù)庫的系統(tǒng)、方法和程序產(chǎn)品的制作方法
技術領域:
:本發(fā)明涉及數(shù)據(jù)庫技術,更具體地說,涉及集成多個數(shù)據(jù)庫的系統(tǒng)、方法和程序產(chǎn)品。
背景技術:
:近年來在許多領域中構(gòu)建了利用計算機的大規(guī)模數(shù)據(jù)庫系統(tǒng)。在大規(guī)模數(shù)據(jù)庫系統(tǒng)中,可能需要集成分散在許多分布式數(shù)據(jù)庫中的數(shù)據(jù)。例如,在研究所的包括用于管理各個研究人員獲得的各種研究數(shù)據(jù)的多類數(shù)據(jù)庫的信息系統(tǒng)中,可能存在集成分散的數(shù)據(jù),以便找出包含在這樣的分散數(shù)據(jù)中的信息或知識的需要。作為另一例子,由于公司的合并,存在集成先前由不同的公司運行的不同數(shù)據(jù)庫的需要。為了集成分布在網(wǎng)絡上的這樣的各種數(shù)據(jù)庫,使用了用于聯(lián)合數(shù)據(jù)庫的機制。這種機制是一種訪問以分布方式存在的一組數(shù)據(jù)庫,而不是組合的數(shù)據(jù)庫,從而提供數(shù)據(jù)庫圖像的分組的技術。這種機制是一種其中直接訪問各個數(shù)據(jù)庫的機制,從而它能夠容易地支持新數(shù)據(jù)項的增加。于是,能夠降低重新設計或重新構(gòu)建數(shù)據(jù)庫系統(tǒng)的時間和/或成本。以上面所述作為背景,本行業(yè)中的公司一直在進行處理分布的多種數(shù)據(jù)庫的產(chǎn)品的研究和開發(fā)。國際商用機器7〉司提供的WebSphere(R)InformationIntegrator產(chǎn)品(下面稱為"II產(chǎn)品")是這種產(chǎn)品之一。II產(chǎn)品包含在DB2(R)產(chǎn)品中,DB2(R)產(chǎn)品是國際商用機器公司提供的數(shù)據(jù)庫管理軟件。在DB產(chǎn)品的數(shù)據(jù)庫中,II產(chǎn)品定義與其它數(shù)據(jù)庫的表相關的虛擬數(shù)據(jù)庫表(在II產(chǎn)品中稱為"別名,,),并處理分布的數(shù)據(jù)庫,好像分布的數(shù)據(jù)庫由DB2(R)管理一樣。這使得能夠集成結(jié)構(gòu)和/或廠家不同的各種分布數(shù)據(jù)庫(參見非專利文獻l)。日本專利特許公開No.ll-213014(專利文獻1)中公開了一種機制,其中用戶能夠在不知道DB服務器是分布的情況下,容易地進行查詢。具體地說,在這種機制中,在元數(shù)據(jù)庫服務器中收集和管理與保存在一個或多個數(shù)據(jù)庫中的實際數(shù)據(jù)相關的元數(shù)據(jù)。對元數(shù)據(jù)庫服務器進行查詢使得可以獲得與查詢請求匹配的所有元數(shù)據(jù)。于是,即使用戶不知道在網(wǎng)絡上存在多個數(shù)據(jù)庫和用于管理這些數(shù)據(jù)庫的數(shù)據(jù)庫服務器,或者不知道它們在哪里,用戶也能夠從一個數(shù)據(jù)庫服務器,即,元數(shù)據(jù)庫服務器獲得與查詢請求匹配的所有元數(shù)據(jù)。在專利申請No.2003-505766的翻譯后的國家/>布(專利文獻2)中公開的是一種方法和設備,用于監(jiān)視和關于諸如SQL語句之類數(shù)據(jù)庫查詢的優(yōu)化設計有關的數(shù)據(jù)庫表在索引方面的變化的效果。在這種相關技術中,通過復制原始表并刪除原始表中的數(shù)據(jù),創(chuàng)建一個虛擬表。復制與原始表相關的現(xiàn)有原始索引,以定義和虛擬表相關的虛擬索引。用對虛擬表的引用替代查詢中對原始表的引用。隨后,數(shù)據(jù)庫管理系統(tǒng)確定關于查詢的新的優(yōu)化設計。"IBMDB2InformationIntegrator,FederatedSystemGuide,Version8.2,,,[online,12/16/2004,InternationalBusinessMachinesCorporation,[檢索于10/23/2006,因特網(wǎng)<ftp:/ftp.software.ibm.com/ps/products/db2/info/vr82/pdf/ja—JP/iiyfpj81.pdf><table>tableseeoriginaldocumentpage17</column></row><table>分布數(shù)據(jù)庫系統(tǒng)720包括產(chǎn)品表722,產(chǎn)品表722是產(chǎn)品表732的副本。分布數(shù)據(jù)庫系統(tǒng)720還包括一個定單表724(表名稱"ORDER"),其中關于每個定單關鍵字(ORDERKEY)給出產(chǎn)品關鍵字(PRODUCTKEY),客戶關鍵字(CUSTOMERKEY)和定貨量(AMOUNT)。定單表724的一個具體例子示于表2中。<table>tableseeoriginaldocumentpage17</column></row><table>聯(lián)合數(shù)據(jù)庫系統(tǒng)710包括分別與產(chǎn)品表732和722,及定單表724對應的虛擬表714、712和718。虛擬表714、712和718的名稱分別被定義成"N2—PRODUCT"、"Nl—PRODUCT"和"N-ORDER"。聯(lián)合數(shù)據(jù)庫系統(tǒng)710還包括一個提供的為虛擬表714和712所共用的通用表716。通用表716的名稱被定義成"NPRODUCT"。假定在上述系統(tǒng)中,聯(lián)合數(shù)據(jù)庫系統(tǒng)710接收由表3中所示的包括通用表716的指定的SQL語句構(gòu)成的數(shù)據(jù)庫查詢。表3中所示的SQL語句請求通過把從表"N—ORDER,,獲得的定貨量(AMOUNT)乘以從表"N—PRODUCT,,獲得的價格(PRICE),確定總價格,并創(chuàng)建其中為每個客戶關鍵字給出總價格的表。表3中所示的SQL語句還請求在待創(chuàng)建的表中按照升序給出客戶關鍵字。selectcustomerkey,sum(amount*price)astotal一pricefromn_order,n_productwheren一orderproductkey-n—productki"ygroupbyciJstomerkeyorderbycustomerRby—在本實施例中,表3中所示的SQL語句中的"N—PRODUCT"(它是通用表716的名稱)被均與"N—PRODUCT"關聯(lián)的"Nl—PRODUCT,,和"N2—PRODUCT,,代替。從而,創(chuàng)建表4和5中所示的SQL語句。隨后關于創(chuàng)建的SQL語句進行存取方案生成和成本評估。這里,通過編譯表4中所示的包括"Nl—PRODUCT"的指定的SQL語句生成的存取方案將在分布數(shù)據(jù)庫系統(tǒng)720中執(zhí)行表722和724之間的表連接,隨后只把連接的表回送給聯(lián)合數(shù)據(jù)庫系統(tǒng)710。于是,聯(lián)合數(shù)據(jù)庫系統(tǒng)和分布數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)通信量包括其大小較小的連接表上的數(shù)據(jù)。_selectcustomerkey,sum(amount*price)astotal一pricefromn一order,n1_productwheren一orderproductkey-n1—producfproductkeyfroupbycuitomerkeyorder6"ycustomerkey—另一方面,按照通過編譯表5中所示的包括"N2—PRODUCT,,的指定的SQL語句生成的存取方案,必須分別從分布數(shù)據(jù)庫系統(tǒng)720和730接收執(zhí)行表連接所需的"ORDER"上的所有數(shù)據(jù)和"PRODUCT"上的所有數(shù)據(jù),隨后在聯(lián)合數(shù)據(jù)庫系統(tǒng)710中執(zhí)行表連接。于是,聯(lián)合數(shù)據(jù)庫系統(tǒng)和分布數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)通信量包括其大小相對較大的待連接數(shù)據(jù)。selectcustomerkey,sum(amount*price)astotal_pricefromn一order,n2一productwheren_orderproductkeys=n2_productproductkeygroupbycuitomerkeyorder6~ycustornerksy于是,作為該存取方案的成本的響應時間的估計量大于通過編譯表4中所示的包括"Nl—PRODUCT,,的指定的SQL語句而生成的存取方案的響應時間的估計量。從而,已接收表3中所示的數(shù)據(jù)庫查詢的聯(lián)合數(shù)據(jù)庫系統(tǒng)710選擇并使用通過編譯表4中所示的包括"N1—PRODUCT"的指定的SQL語句而生成的存取方案,以便執(zhí)行所述查詢。作為執(zhí)行的結(jié)果,獲得表6中所示的表。<table>complextableseeoriginaldocumentpage19</column></row><table>根據(jù)上面的描述將明白,按照本實施例,最佳的存取方案被用于執(zhí)行數(shù)據(jù)庫查詢。圖8是表示實現(xiàn)按照本實施例的系統(tǒng)的優(yōu)選信息處理設備的硬件結(jié)構(gòu)的例子的示圖。信息處理設備120包括均與總線2耦接的中央處理器(CPU)l和主存儲器4。可拆卸存儲器(能夠替換記錄介質(zhì)的外部存儲系統(tǒng)),比如硬盤裝置13和30,CD-ROM裝置26和29,軟盤裝置20,MO裝置28,DVD裝置31,通過軟盤控制器19,IDE控制器25,SCSI控制器27等與總線2耦接。記錄介質(zhì),比如軟盤、MO、CD-ROM和DVD-ROM,皮插入可拆卸存儲器中。通過與操作系統(tǒng)合作地向CPU等發(fā)出指令,這些記錄介質(zhì),硬盤裝置13和30或者ROM14能夠記錄用于實現(xiàn)本發(fā)明的計算機程序的代碼。把所述計算機程序裝入主存儲器4使所述計算機程序被執(zhí)行。所述計算機程序也可被壓縮,或者被分成許多部分,以便記錄到多個介質(zhì)中。信息處理設備120通過鍵盤/鼠標控制器5接收來自輸入裝置,比如鍵盤6和鼠標7的輸入。信息處理裝置120通過DAC/LCDC10與顯示器ll耦接,以便向用戶呈現(xiàn)可視數(shù)據(jù)。信息處理設備120可通過網(wǎng)絡適配器18(以太網(wǎng)(R)卡或者令牌網(wǎng)卡)等與網(wǎng)絡連接,從而與其它計算機等通信。信息處理設備120還可通過并行端口與打印機(未示出)耦接,或者通過串行端口與調(diào)制解調(diào)器(未示出)耦接。根據(jù)上面的說明易于明白,實現(xiàn)按照本實施例的系統(tǒng)的優(yōu)選信息處理設備由典型的信息處理設備,比如個人計算機、工作站或大型機,或者它們的組合來實現(xiàn)。但是,這些部件是例證性的,所有的這些部件不是本發(fā)明的必需部件。當然,本領域的技術人員易于設想各種修改,比如通過組合多臺機器,隨后把這些部件的功能分配給這些機器,實現(xiàn)在本實施例中使用的信息處理設備的硬件部件。當然,這些修改是包括在本發(fā)明的技術思想中的構(gòu)思。按照本實施例的系統(tǒng)可采用支持圖形用戶界面(GUI)多窗口環(huán)境的操作系統(tǒng),比如微軟公司提供的Windows(R)操作系統(tǒng),蘋果計算機股份有限公司提供的Macos(R),和包括XWindows系統(tǒng)的基于UNIX(R)的系統(tǒng)(例如國際商用機器公司提供的AIX(R))。根據(jù)上面的說明可明白,本實施例中使用的系統(tǒng)并不局限于特定的操作系統(tǒng)環(huán)境。換句話說,可以采用任何操作系統(tǒng),只要它能夠顯示允許應用軟件等使用數(shù)據(jù)處理系統(tǒng)的資源的資源管理功能。這樣的資源管理功能包括硬件資源管理功能,文件處理功能,外圍設備聯(lián)機同時操作(SPOOL)功能,作業(yè)管理功能,內(nèi)存保護功能,和虛擬內(nèi)存管理功能。這些功能為本領域的技術人員公知,因此這里不再贅述。此外,本發(fā)明可被實現(xiàn)成硬件、軟件或者兩者的組合。其中用硬件和軟件的組合實現(xiàn)本發(fā)明的一個典型例子是在包括預定程序的數(shù)據(jù)處理系統(tǒng)中實現(xiàn)本發(fā)明。這種情況下,把預定程序裝入數(shù)據(jù)處理系統(tǒng)并執(zhí)行該程序會導致該程序控制數(shù)據(jù)處理系統(tǒng),以致執(zhí)行按照本發(fā)明的處理。該程序包括可用任意語言、代碼或符號表現(xiàn)的一組指令。這樣的指令使系統(tǒng)可以立即,或者(l)在指令被轉(zhuǎn)換成另一種語言、代碼或符號之后,(2)在另一介質(zhì)中產(chǎn)生指令的副本之后,或者在完成(l)和(2)之后執(zhí)行特殊的功能。當然,不僅這樣的程序,而且記錄所述程序的介質(zhì)都落入本發(fā)明的范圍之內(nèi)。實現(xiàn)本發(fā)明的功能的程序可被保存在任意計算機可讀記錄介質(zhì)中,比如軟盤、MO、CD-ROM、DVD、石更盤裝置、ROM、MRAM或RAM。為了把這樣的程序保存到記錄介質(zhì)中,程序可下載自通過通信網(wǎng)絡連接的另一數(shù)據(jù)處理系統(tǒng),或者復制自另一記錄介質(zhì)。此外,這樣的程序可被壓縮或分成幾個部分,以便保存在單個或多個記錄介質(zhì)中。注意當然可以各種形式提供用于實現(xiàn)本發(fā)明的程序產(chǎn)品。根據(jù)上面的說明可明白,按照本實施例,能夠構(gòu)成聯(lián)合數(shù)據(jù)庫系統(tǒng),所述聯(lián)合數(shù)據(jù)庫系統(tǒng)能夠以較低的成本高效地處理數(shù)據(jù)庫查詢。對于本領域的技術人員來說,顯然可對上述實施例做出各種修改或改進。例如,如上所述,按照本實施例的聯(lián)合數(shù)據(jù)庫系統(tǒng)220及分布數(shù)據(jù)庫系統(tǒng)230和240由多個硬件(服務器)實現(xiàn)。但是,本發(fā)明并不局限于任何特殊的硬件配置。具體地說,聯(lián)合數(shù)據(jù)庫系統(tǒng)220,以及分布數(shù)據(jù)庫系統(tǒng)230和230可在同樣的一個硬件(計算機設備)中操作,或者在不同的多個硬件中操作。注意這樣的修改或改進當然也落入本發(fā)明的技術范圍內(nèi)。權(quán)利要求1、一種集成包含第一數(shù)據(jù)的第一數(shù)據(jù)庫和包含第二數(shù)據(jù)的第二數(shù)據(jù)庫的系統(tǒng),所述第二數(shù)據(jù)是第一數(shù)據(jù)的副本,所述系統(tǒng)包括與第一數(shù)據(jù)對應的第一虛擬表;與第二數(shù)據(jù)對應的第二虛擬表;作為為第一和第二虛擬表所共用而提供的虛擬表的通用表;其中記錄第一和第二虛擬表與通用表之間的關系的列表,生成部分,用于按照所述列表,從對通用表的數(shù)據(jù)庫查詢生成其中使用第一和第二虛擬表至少之一的兩個或者更多的存取方案;和選擇部分,用于從所述兩個或者更多的存取方案中選擇將用于執(zhí)行所述數(shù)據(jù)庫查詢的存取方案。2、按照權(quán)利要求1所述的系統(tǒng),還包括評估部分,用于估計所述兩個或更多的存取方案中每一個的成本,其中選擇部分根據(jù)所述評估部分估計的存取方案的成本,從所述兩個存取方案中選擇存取方案。3、按照權(quán)利要求1所述的系統(tǒng),其中為了生成存取方案,生成部分從數(shù)據(jù)庫查詢獲得通用表的名稱,利用列表從通用表的名稱獲得第一和第二虛擬表的名稱,改寫數(shù)據(jù)庫查詢,以致數(shù)據(jù)庫查詢中的通用表的名稱被第一或第二虛擬表的名稱替代,并編譯改寫的查詢。4、按照權(quán)利要求1所述的系統(tǒng),還包括存儲部分,用于高速緩存由生成部分生成的兩個或更多的存取方案。5、按照權(quán)利要求4所述的系統(tǒng),還包括評估部分,用于估計所述兩個或更多存取方案中每一個的成本,其中存儲部分還高速緩存由評估部分估計的存取方案的成本。6、按照權(quán)利要求4所述的系統(tǒng),其中如果在存儲部分中沒有高速緩存任何存取方案,那么生成部分生成存取方案。7、按照權(quán)利要求4所述的系統(tǒng),其中如果一個或多個存取方案被高速緩存在存儲部分中,那么選擇部分從高速緩存的一個或多個存取方案中選擇一個存取方案。8、按照權(quán)利要求1所述的系統(tǒng),還包括執(zhí)行部分,用于利用選擇部分所選擇的存取方案執(zhí)行數(shù)據(jù)庫查詢。9、按照權(quán)利要求1所述的系統(tǒng),還包括接收部分,用于接收經(jīng)由網(wǎng)絡從客戶端發(fā)送的數(shù)據(jù)庫查詢。10、按照權(quán)利要求l所述的系統(tǒng),其中數(shù)據(jù)庫查詢采用結(jié)構(gòu)化查詢語言(SQL)格式。11、按照權(quán)利要求4所述的系統(tǒng),還包括管理部分,用于一旦第一或第二數(shù)據(jù)變得不可用,就禁用高速緩存的其中使用所述第一或第二虛擬表的存取方案。12、按照權(quán)利要求ll所述的系統(tǒng),還包括監(jiān)視部分,用于監(jiān)視第一和第二數(shù)據(jù)庫是否可用,一旦第一或第二數(shù)據(jù)庫變得不可用,就向管理部分通知第一或第二數(shù)據(jù)庫已變得不可用。13、按照權(quán)利要求11所述的系統(tǒng),其中一旦不可用的第一或第二數(shù)據(jù)再次變得可用,管理部分就啟用被禁用的存取方案。14、按照權(quán)利要求l所述的系統(tǒng),還包括管理部分,用于一旦新創(chuàng)建了第一數(shù)據(jù)的副本,就把指示新副本的創(chuàng)建的信息添加到其中使用通用表的存取方案中。15、按照權(quán)利要求14所述的系統(tǒng),其中如果存在指示新副本的創(chuàng)建的信息,那么生成部分生成關于新副本的另一存取方案。16、按照權(quán)利要求15所述的系統(tǒng),還包括存儲部分,用于高速緩存所述另一存取方案。17、計算機系統(tǒng)中的一種集成包含第一數(shù)據(jù)的第一數(shù)據(jù)庫和包含第二數(shù)據(jù)的第二數(shù)據(jù)庫的方法,所述第二數(shù)據(jù)是第一數(shù)據(jù)的副本,所述計算機系統(tǒng)包括與第一數(shù)據(jù)對應的第一虛擬表,與第二數(shù)據(jù)對應的第二虛擬表,作為為第一和第二虛擬表所共用而提供的虛擬表的通用表,和其中記錄第一和第二虛擬表與通用表之間的關系的列表,所述方法包括下述步驟按照所述列表,從對通用表的數(shù)據(jù)庫查詢生成其中使用第一和第二虛擬表至少之一的兩個或者更多的存取方案;和從所述兩個或者更多的存取方案中選擇將用于執(zhí)行所述數(shù)據(jù)庫查詢的存取方案。18、一種集成包含第一數(shù)據(jù)的第一數(shù)據(jù)庫和包含第二數(shù)據(jù)的第二數(shù)據(jù)庫的程序產(chǎn)品,所述第二數(shù)據(jù)是第一數(shù)據(jù)的副本,所述程序產(chǎn)品使計算機系統(tǒng)執(zhí)行下述步驟,所述計算機系統(tǒng)包括與第一數(shù)據(jù)對應的第一虛擬表,與第二數(shù)據(jù)對應的第二虛擬表,作為為第一和第二虛擬表所共用而提供的虛擬表的通用表,和其中記錄第一和第二虛擬表與通用表之間的關系的列表按照所述列表,從對通用表的數(shù)據(jù)庫查詢生成其中使用第一和第二虛擬表至少之一的兩個或者更多的存取方案;和從所述兩個或者更多的存取方案中選擇將用于執(zhí)行所述數(shù)據(jù)庫查詢的存取方案。全文摘要本發(fā)明的目的是提供一種集成包含第一數(shù)據(jù)的第一數(shù)據(jù)庫和包含作為第一數(shù)據(jù)的副本的第二數(shù)據(jù)的第二數(shù)據(jù)庫的系統(tǒng)。所述系統(tǒng)包括與第一數(shù)據(jù)對應的第一虛擬表,與第二數(shù)據(jù)對應的第二虛擬表,作為為第一和第二虛擬表所共用的虛擬表的通用表,和其中記錄第一和第二虛擬表與通用表之間的關系的列表。所述系統(tǒng)還包括一個生成部分,用于按照所述列表,從對通用表的數(shù)據(jù)庫查詢生成其中使用第一和第二虛擬表至少之一的兩個或者更多的存取方案,和一個選擇部分,用于從所述兩個或者更多的存取方案中選擇將用于執(zhí)行所述數(shù)據(jù)庫查詢的存取方案。文檔編號G06F17/30GK101174267SQ20071014831公開日2008年5月7日申請日期2007年8月31日優(yōu)先權(quán)日2006年10月30日發(fā)明者大川昌弘,福田剛志,黒澤亮二申請人:國際商業(yè)機器公司