專利名稱::多數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法、計算機程序和計算機的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及用于在多數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法、計算機程序和計算機。
背景技術(shù):
:數(shù)據(jù)庫是計算機化的信息存儲和檢索系統(tǒng)。關(guān)系數(shù)據(jù)庫管理系統(tǒng)是使用關(guān)系技術(shù)存儲和檢索數(shù)據(jù)的計算機數(shù)據(jù)庫管理系統(tǒng)(DBMS)。最流行的數(shù)據(jù)庫類型是關(guān)系型數(shù)據(jù)庫,即表格數(shù)據(jù)庫,其中數(shù)據(jù)被定義為能以各種不同的方式重組和存取。不考慮特定的數(shù)據(jù)結(jié)構(gòu),在DBMS中,請求方實體(例如,應(yīng)用,操作系統(tǒng)或者用戶)通過發(fā)出數(shù)據(jù)庫存取請求要求存取指定的數(shù)據(jù)庫。這種請求可能包括,例如,簡單目錄查找請求或者事務(wù)和事務(wù)組合,其在數(shù)據(jù)庫中讀取、改變和增加指定的記錄。通過使用高級查詢語言生成這些請求,例如結(jié)構(gòu)化查詢語言(SQL)。說明性地,使用SQL生成交互式查詢,用于從數(shù)據(jù)庫中獲得信息以及更新數(shù)據(jù)庫,例如國際商用機器公司(IBM)的DB2,微軟的SQLServer,以及來自O(shè)racle,Sybase和ComputerAssociates的數(shù)據(jù)庫產(chǎn)品。術(shù)語“查詢”是指一組用于從所存儲的數(shù)據(jù)庫中檢索數(shù)據(jù)的命令。查詢采用命令語言的形式,其允許編程者和程序選擇,插入,更新,找出數(shù)據(jù)的位置,等等。通常,數(shù)據(jù)挖掘和數(shù)據(jù)庫查詢應(yīng)用面臨的一個難題是其與所給數(shù)據(jù)庫模式(例如,關(guān)系型數(shù)據(jù)庫模式)的緊密關(guān)聯(lián)。此關(guān)聯(lián)使得當(dāng)相應(yīng)的底層數(shù)據(jù)庫模式發(fā)生改變時很難支持應(yīng)用。另外,限制了應(yīng)用向可選底層數(shù)據(jù)表示的遷移。在當(dāng)前環(huán)境下,上述缺點大多是由于應(yīng)用對SQL的依賴引起的,SQL假定所查詢的信息是使用關(guān)系模型表示的。此外,因為在SQL查詢表示內(nèi)引用了特定的數(shù)據(jù)庫表,列和關(guān)系,因此,所給定的SQL查詢依賴于特定的關(guān)系模式。結(jié)果,這些限制引發(fā)了許多難題。一個難題在于,在底層關(guān)系數(shù)據(jù)模型中的改變需要對SQL基礎(chǔ)進(jìn)行改變,而應(yīng)用是基于SQL基礎(chǔ)構(gòu)建的。因此,應(yīng)用設(shè)計者必須或者放棄改變底層數(shù)據(jù)模型以避免應(yīng)用維護,或者必須改變應(yīng)用以反映底層關(guān)系模型的改變。另一個難題在于,擴展應(yīng)用以便與多個關(guān)系數(shù)據(jù)模型協(xié)同工作需要分別的應(yīng)用版本,以反映通過每個獨特關(guān)系模式驅(qū)動的獨特SQL需求。然而,因為SQL是被設(shè)計為用于關(guān)系系統(tǒng),另一個難題是如何使應(yīng)用演變以便與可選數(shù)據(jù)表示協(xié)同工作。擴展應(yīng)用以支持可選數(shù)據(jù)表示,例如XML,需要重寫應(yīng)用的數(shù)據(jù)管理層,以便使用非SQL數(shù)據(jù)存取方法。針對上述問題通常所使用的解決方法是軟件封裝。軟件封裝涉及使用軟件接口或者部件來封裝針對特定底層數(shù)據(jù)表示的存取方法。企業(yè)JavaBeanTM(EJB)規(guī)范是一個示例,企業(yè)JavaBeanTM(EJB)規(guī)范是JavaTM2企業(yè)版(J2EE)套件技術(shù)的部件。在EJB實例中,實體豆(entitybean)封裝所給的數(shù)據(jù)集,公開一組應(yīng)用程序接口(API),所述API可以用于存取此信息。這是高度專業(yè)化的解決方法,每當(dāng)要存取一組新的數(shù)據(jù),或者當(dāng)希望獲得新的數(shù)據(jù)存取模式時,就需要編寫軟件(以新實體EJB的形式)。EJB模型還需要代碼更新,應(yīng)用構(gòu)建和部署周期,以便對底層物理數(shù)據(jù)模型的重組作出反應(yīng),或者支持可選的數(shù)據(jù)表示。因為涉及更高級的Java編程技術(shù),EJB編程還需要專業(yè)化的技能。因此,EJB解決方案以及其他的相似解決方案很不靈活,并且對于維護用于存取演進(jìn)的物理數(shù)據(jù)模型的通用查詢應(yīng)用而言費用昂貴。(Java和所有基于Jave的商標(biāo)是Sun微系統(tǒng)公司在美國、其他國家或二者的商標(biāo))。除了存取不同類型數(shù)據(jù)表示的難題外,現(xiàn)今的環(huán)境由于數(shù)據(jù)常常是高度分布式的事實而變得復(fù)雜。類似因特網(wǎng)的流行基礎(chǔ)架構(gòu)包含數(shù)據(jù)源主機,其必須對于用戶可訪問以便體現(xiàn)價值。處理本地化、同質(zhì)化數(shù)據(jù)的傳統(tǒng)解決方案不再有效,而開發(fā)處理分布式和不同類型數(shù)據(jù)的解決方案尚有問題,因為這樣的解決方案必須知道每個數(shù)據(jù)源的位置并且必須提供獨特的邏輯(軟件)以處理每個不同類型的數(shù)據(jù)表示。結(jié)果,通常的解決方案(例如提供數(shù)據(jù)倉庫,其包含使用數(shù)據(jù)倉庫的應(yīng)用所需要的所有信息)很難適應(yīng)正被使用的數(shù)據(jù)的位置或表示的改變,并且很難被重新部署以便與不同數(shù)據(jù)拓?fù)鋮f(xié)同工作。當(dāng)需要用附加的,公開可獲得的信息擴充倉庫內(nèi)容時,數(shù)據(jù)倉庫還引發(fā)了問題。在一些實例中,外部的數(shù)據(jù)源可能很大并且易于變化。在所給數(shù)據(jù)倉庫中維護這種數(shù)據(jù)的本地拷貝,費用會是非常昂貴的。因此,需要一種改進(jìn)的并且更加靈活的存取數(shù)據(jù)的方法,其不限于表示底層物理數(shù)據(jù)的特定方式。
發(fā)明內(nèi)容根據(jù)一個方面,本發(fā)明提供了在多數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法,包括從請求方實體接收根據(jù)請求方實體查詢規(guī)格的抽象查詢;其中查詢規(guī)格提供抽象查詢的多個邏輯域的定義;以及根據(jù)存取方法將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢,該存取方法通過定義存取每個物理實體的方法以及每個物理實體的位置,將邏輯域映射到數(shù)據(jù)的物理實體。當(dāng)然,可以使用計算機軟件執(zhí)行該方法。最好是通過數(shù)據(jù)模式和查詢抽象提供用于分布式數(shù)據(jù)源的遠(yuǎn)程數(shù)據(jù)存取和集成的方法、計算機程序和計算機。本發(fā)明優(yōu)選涉及以獨立于物理表示數(shù)據(jù)的特定方式的方式存取數(shù)據(jù)的方法、計算機和計算機程序。優(yōu)選地,提供抽象層以表示應(yīng)用可使用的各種分布式數(shù)據(jù)源,并描述應(yīng)用用以存取和/或者更新在這些數(shù)據(jù)源中所包含的信息的查詢。優(yōu)選地,運行時部件負(fù)責(zé)使用包含在數(shù)據(jù)庫抽象部件(抽象層之一)中的信息,將抽象查詢解析為針對一個或多個數(shù)據(jù)庫的具體數(shù)據(jù)存取請求。一個實施例提供了存取具有特定物理數(shù)據(jù)表示的數(shù)據(jù)的方法。該方法包括對請求方實體提供查詢規(guī)格,該查詢規(guī)格包括用于定義抽象查詢的多個邏輯域;以及提供數(shù)據(jù)庫抽象,其將多個邏輯域映射到數(shù)據(jù)的物理實體。在一個實施例中,對于每個邏輯域,數(shù)據(jù)庫抽象包括定義了數(shù)據(jù)物理實體位置的至少一個定位符,以及定義訪問數(shù)據(jù)的物理實體的機制的存取方法。一個實施例提供了計算機,包括處理器和存儲器,該存儲器至少包含(i)包括查詢規(guī)格的請求方實體,該查詢規(guī)格定義包括多個邏輯域的抽象查詢;(ii)包括映射規(guī)則的數(shù)據(jù)庫抽象部件,該映射規(guī)則將邏輯域映射到數(shù)據(jù)的物理實體,其中映射規(guī)則包括抽象查詢的至少部分邏輯域的每個的位置規(guī)格,并且其中每個位置規(guī)格規(guī)定包含要存取的物理實體的數(shù)據(jù)源的位置;以及(iii)運行時部件,用于根據(jù)映射規(guī)則將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的物理實體一致的查詢。根據(jù)另一個方面,提供了計算機,包括存儲器,該存儲器包含至少(i)提供包括多個邏輯域的抽象查詢的定義的查詢規(guī)格,(ii)包括映射規(guī)則的數(shù)據(jù)庫抽象部件,該映射規(guī)則將邏輯域映射到數(shù)據(jù)的物理實體,其中映射規(guī)則包括抽象查詢的至少部分邏輯域的每個的位置規(guī)格,并且其中每個位置規(guī)格規(guī)定包含要存取的物理實體的數(shù)據(jù)源的位置;以及(iii)運行時部件,用于根據(jù)映射規(guī)則將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的物理實體一致的查詢;以及適合執(zhí)行存儲器的內(nèi)容的處理器。根據(jù)一個實施例,提供了在多個數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法,包括對請求方實體提供包括用于定義抽象查詢的多個邏輯域的查詢規(guī)格;以及對于多個邏輯域中的每一個提供存取方法,該存取方法至少指定用于存取數(shù)據(jù)的方法以及數(shù)據(jù)的位置。優(yōu)選地,該方法還包括,由請求方實體發(fā)出根據(jù)查詢規(guī)格的抽象查詢;將抽象查詢轉(zhuǎn)換為與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢;以及在針對多個邏輯域的特定邏輯域的數(shù)據(jù)物理實體的存取方法中訪問該位置所指定的數(shù)據(jù)庫。優(yōu)選地,與特定物理數(shù)據(jù)表示一致的查詢是SQL查詢,XML查詢以及過程請求中的一個。優(yōu)選地,將抽象查詢轉(zhuǎn)換成與特定數(shù)據(jù)物理表示一致的查詢包括將抽象查詢劃分為根據(jù)存取方法類型分組的子查詢。優(yōu)選地,從包括SQL查詢類型,XML查詢類型以及過程請求類型的組中選擇存取方法類型。根據(jù)優(yōu)選實施例,提供了在多個數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法,包括由請求方實體發(fā)出根據(jù)請求方實體的查詢規(guī)格的抽象查詢;其中查詢規(guī)格提供抽象查詢的多個邏輯域的定義;以及根據(jù)存取方法將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢,該存取方法通過定義每個物理實體的存取方法以及每個物理實體的位置,將邏輯域映射到數(shù)據(jù)物理實體。優(yōu)選地,能夠訪問針對多個邏輯域的特定邏輯域的數(shù)據(jù)物理實體的位置所指定的數(shù)據(jù)庫。優(yōu)選地,抽象查詢包括至少一個選擇標(biāo)準(zhǔn)和結(jié)果規(guī)格。該方法最好包括針對多個邏輯域的特定邏輯域的數(shù)據(jù)物理實體,確定數(shù)據(jù)物理實體是否位于本地高速緩存中;如果不在本地高速緩存中,則通過數(shù)據(jù)物理實體的存取方法訪問該位置所指定的數(shù)據(jù)庫。優(yōu)選地,抽象查詢到與特定數(shù)據(jù)物理表示一致的查詢的轉(zhuǎn)換包括將抽象查詢劃分為根據(jù)存取方法類型分組的子查詢。優(yōu)選地,從包括SQL查詢類型,XML查詢類型以及過程請求類型的組中選擇存取方法類型。根據(jù)優(yōu)選實施例,提供了包含程序的計算機可讀介質(zhì),當(dāng)處理器執(zhí)行程序時,該程序執(zhí)行在多個數(shù)據(jù)庫環(huán)境中訪問數(shù)據(jù)的操作,該程序包括請求方實體的查詢規(guī)格,該查詢規(guī)格包括用于定義抽象查詢的多個邏輯域;以及每個邏輯域的存取方法,每個邏輯域定義了存取數(shù)據(jù)物理實體的方法,以及被傳遞到用于存取物理實體的方法的多個參數(shù),其中至少一個參數(shù)是指定包含物理實體的數(shù)據(jù)源的位置的位置參數(shù)。例如,請求方實體可以是應(yīng)用程序。優(yōu)選地,多個存取方法中的每一個定義數(shù)據(jù)的特定物理表示和相應(yīng)物理實體的位置。優(yōu)選地,操作包括請求方實體發(fā)出根據(jù)查詢規(guī)格的抽象查詢;將抽象查詢轉(zhuǎn)換成與特定物理數(shù)據(jù)表示一致的查詢;并且訪問由針對多個邏輯域的特定邏輯域的數(shù)據(jù)物理實體的位置所指定的數(shù)據(jù)庫。根據(jù)優(yōu)選實施例,提供了包含程序的計算機可讀介質(zhì),當(dāng)處理器執(zhí)行程序時,該程序執(zhí)行存取具有特定物理數(shù)據(jù)表示的數(shù)據(jù)的操作,該操作包括由請求方實體發(fā)出根據(jù)請求方實體的查詢規(guī)格的抽象查詢;其中查詢規(guī)格定義了抽象查詢的邏輯域;并且根據(jù)存取方法將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢,該存取方法通過為每個物理實體至少定義用于存取物理實體的方法和物理實體的位置,將邏輯域映射到數(shù)據(jù)物理實體。根據(jù)優(yōu)選實施例,提供了計算機,包括存儲器,該存儲器至少包含(i)包括查詢規(guī)格的請求方實體,該查詢規(guī)格定義抽象查詢,該抽象查詢包括多個邏輯域;(ii)包括映射規(guī)則的數(shù)據(jù)庫抽象部件,映射規(guī)則將邏輯域映射到數(shù)據(jù)的物理實體,其中映射規(guī)則包括抽象查詢的至少部分邏輯域的每個的位置規(guī)格,并且其中每個位置規(guī)格指定包含要存取的物理實體的數(shù)據(jù)源的位置;以及(iii)運行時部件,用于根據(jù)映射規(guī)則將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的物理實體一致的查詢;以及適合于執(zhí)行存儲器的內(nèi)容的處理器。優(yōu)選地,由相應(yīng)位置規(guī)格指定的數(shù)據(jù)源的第一部分是本地的,且第二部分是遠(yuǎn)程的?,F(xiàn)在將參考以下附圖,通過示例的方式說明本發(fā)明的優(yōu)選實施例;圖1是根據(jù)本發(fā)明的優(yōu)選實施例圖解使用的計算機系統(tǒng);圖2A圖解了軟件部件的關(guān)系視圖;圖2B是用于關(guān)系數(shù)據(jù)存取的數(shù)據(jù)庫抽象和抽象查詢的一個實施例;圖3根據(jù)本發(fā)明的一個實施例,圖解了運行時部件操作的流程圖;圖4根據(jù)本發(fā)明的一個實施例,圖解了運行時部件操作的流程圖;圖5圖解了軟件部件的關(guān)系視圖,在其中可存取多個數(shù)據(jù)源;圖6圖解示出了包括多個邏輯域的抽象查詢602;圖7圖解了以關(guān)系存取方法配置的數(shù)據(jù)庫抽象部件的域規(guī)格;以及圖8圖解了以過程存取方法配置的數(shù)據(jù)庫抽象部件的域規(guī)格。具體實施例方式介紹本發(fā)明通常涉及一種系統(tǒng)、方法以及產(chǎn)品,用于以獨立于物理表示數(shù)據(jù)的特定方式的方式存取數(shù)據(jù)。數(shù)據(jù)可以包括多個不同數(shù)據(jù)源。在一個實施例中,數(shù)據(jù)庫抽象層提供獨立于數(shù)據(jù)表示的特定方式的一個或多個底層數(shù)據(jù)庫的邏輯視圖。當(dāng)有多個數(shù)據(jù)源時,用標(biāo)識要存取的數(shù)據(jù)的位置的位置規(guī)格配置數(shù)據(jù)庫抽象層的實例。還提供了基于數(shù)據(jù)庫抽象層的查詢抽象層。運行時部件將抽象查詢(根據(jù)查詢抽象層構(gòu)造)轉(zhuǎn)換為能夠針對特定數(shù)據(jù)物理實體使用的形式。本發(fā)明的一個實施例被實現(xiàn)為用于例如下述圖1中所示的計算機系統(tǒng)100的計算機系統(tǒng)的程序產(chǎn)品。程序產(chǎn)品的程序定義了實施例的功能(包括這里所述的方法),并且能包含在各種信號承載介質(zhì)上。圖解的信號承載介質(zhì)包括但不限于(i)在不可寫存儲介質(zhì)上永久存儲的信息(例如,計算機中的只讀存儲器設(shè)備,例如CD-ROM驅(qū)動器可讀取的CD-ROM盤);(ii)在可寫存儲介質(zhì)上存儲的可改寫信息(例如,磁盤驅(qū)動器中的軟盤或者硬盤驅(qū)動器);或者(iii)通過通信介質(zhì)傳給計算機的信息,例如,通過計算機或者電話網(wǎng)絡(luò),包括無線通信。后者實施例包括從因特網(wǎng)和其他網(wǎng)絡(luò)下載的信息。通常,被執(zhí)行以實現(xiàn)本發(fā)明實施例的程序可以是部分操作系統(tǒng)或特定應(yīng)用程序,部件,程序,模塊,對象或者指令序列。優(yōu)選實施例的軟件通常包括大量指令,該指令被本地計算機轉(zhuǎn)換成機器可讀格式、因此可執(zhí)行的指令。此外,程序由變量和數(shù)據(jù)結(jié)構(gòu)組成,其或者本地駐留到程序中,或者可在存儲器或存儲設(shè)備中可找到。然而,應(yīng)當(dāng)知道,下面任何特殊的術(shù)語僅僅是為了方便,因此本發(fā)明不應(yīng)限于僅僅使用于這樣的術(shù)語所標(biāo)識和/或所暗示的任何特定的應(yīng)用中。環(huán)境的物理視1示出了可在其中實施本發(fā)明實施例的網(wǎng)絡(luò)系統(tǒng)100的模塊圖。通常,網(wǎng)絡(luò)系統(tǒng)100包括客戶(例如,用戶的)計算機102(示出了三個這樣的客戶計算機)和至少一個服務(wù)器104(示出了一個這樣的服務(wù)器)??蛻粲嬎銠C102和服務(wù)器計算機104經(jīng)由網(wǎng)絡(luò)126相連。通常,網(wǎng)絡(luò)126可以是本地局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。在特定實施例中,網(wǎng)絡(luò)126是因特網(wǎng)??蛻粲嬎銠C102包括經(jīng)由總線126連接到存儲器112的中央處理單元(CPU)110,存儲設(shè)備114,輸入設(shè)備116,輸出設(shè)備119,和網(wǎng)絡(luò)接口設(shè)備118。輸入設(shè)備116可以是為客戶計算機102提供輸入的任何設(shè)備。例如,鍵盤,袖珍鍵盤,光筆,觸摸屏,軌跡球,或者語音識別單元,音頻/視頻播放器等等可被使用。輸出設(shè)備119可以是為用戶提供輸出的任何設(shè)備。例如,任何傳統(tǒng)的顯示屏。盡管所示與輸入設(shè)備116分開,然而輸出設(shè)備119可以與輸入設(shè)備116結(jié)合。例如,可以使用具有集成觸摸屏的顯示屏,具有集成鍵盤的顯示器,或者結(jié)合有文本語音轉(zhuǎn)換器的語音識別單元。網(wǎng)絡(luò)接口設(shè)備118可以是任何入口/出口設(shè)備,其被配置為容許客戶計算機102和服務(wù)器計算機104之間經(jīng)由網(wǎng)絡(luò)126進(jìn)行網(wǎng)絡(luò)通信。例如,網(wǎng)絡(luò)接口設(shè)備118可以是網(wǎng)絡(luò)適配器或者是其他的網(wǎng)絡(luò)接口卡(NIC)。存儲設(shè)備114最好是直接存取存儲設(shè)備(DASD)。盡管以單一單元示出,然而其可以是固定的和/或可移動的存儲設(shè)備的結(jié)合,例如固定磁盤驅(qū)動器,軟盤驅(qū)動器,磁帶驅(qū)動器,可移動存儲卡,或者光存儲設(shè)備。存儲器112和存儲設(shè)備114可以是橫越多個主要和輔助存儲設(shè)備的一個虛擬位置空間的一部分。存儲器112最好是足夠大的隨機存取存儲器,以保存本發(fā)明優(yōu)選實施例的編程和數(shù)據(jù)結(jié)構(gòu)。雖然以單一實體示出存儲器112,然而應(yīng)當(dāng)理解,存儲器112實際上可以包括多個模塊,并且存儲器112可以在多個級別上存在,從高速寄存器和高速緩存到較低速然而較大的動態(tài)隨機存取存儲器芯片。圖解性地,存儲器112包含操作系統(tǒng)124。說明性地,可以使用以產(chǎn)生良好效果的操作系統(tǒng)包括Linux和微軟的Windows。更普遍地,可以使用支持在這里所公開功能的任何操作系統(tǒng)。還示出了包含瀏覽器程序122的存儲器112,當(dāng)在CPU110上執(zhí)行時,瀏覽器程序支持在各種服務(wù)器104之間的導(dǎo)向和將網(wǎng)絡(luò)地址定位于一個或多個服務(wù)器104。在一個實施例中,瀏覽器程序122包括基于Web的圖形用戶接口(GUI),GUI容許用戶顯示超文本標(biāo)記語言(HTML)信息。然而,更普遍地,瀏覽器程序122可以是能呈現(xiàn)從服務(wù)器104傳送的信息的任何基于GUI的程序。可以以與客戶計算機102相似的方式物理地安排服務(wù)器計算機104。因此,所示服務(wù)器計算機104通常包括通過總線136彼此相連的CPU130,存儲器132和存儲設(shè)備134。存儲器132可以容量足夠大以保存本發(fā)明優(yōu)選實施例的編程和數(shù)據(jù)結(jié)構(gòu)的隨機存取存儲器,其位于服務(wù)器計算機104上。服務(wù)器計算機104通常受存儲器132中所示操作系統(tǒng)138的控制。示例操作系統(tǒng)138包括IBMOS/400,UNIX,MicrosoftWindows等等。更普遍地,可以使用能支持在這里所說明功能的任何操作系統(tǒng)(IBM和OS/400是國際商用機器公司在美國的商標(biāo);UNIX是開放組織在美國和其他國家的注冊商標(biāo);Microsoft和Windows是微軟公司在美國,其他國家或者雙方的商標(biāo))。存儲器132還包括一個或多個應(yīng)用140和抽象查詢接口146。應(yīng)用140和抽象查詢接口146是包含多個指令的軟件產(chǎn)品,所述指令在不同時期居于計算機系統(tǒng)100的不同存儲器和存儲設(shè)備中。當(dāng)被服務(wù)器104中的一個或多個處理器讀取并執(zhí)行時,應(yīng)用140和抽象查詢接口146導(dǎo)致計算機系統(tǒng)100執(zhí)行必需的步驟,以便執(zhí)行體現(xiàn)本發(fā)明優(yōu)選實施例各方面的步驟或者要素。應(yīng)用140(更普遍地,任何請求方實體,包括操作系統(tǒng)138和,最高級而言,用戶)針對數(shù)據(jù)庫發(fā)送查詢。所發(fā)送的查詢可以包括,例如,本地數(shù)據(jù)庫1561....156N和遠(yuǎn)程數(shù)據(jù)庫1571....157N,全體被稱為數(shù)據(jù)庫156-157。圖解性地,所示數(shù)據(jù)庫156是存儲設(shè)備134中數(shù)據(jù)庫管理系統(tǒng)(DBMS)154的一部分。更普遍地,在這里所使用的術(shù)語“數(shù)據(jù)庫”是指不考慮特定物理表示的任何數(shù)據(jù)的集合。通過圖解的方式,可以根據(jù)關(guān)系模式(可通過SQL查詢存取)或XML模式(可通過XML查詢存取)組織數(shù)據(jù)庫156-157。然而,本發(fā)明不限于特定的模式,并預(yù)期擴展到當(dāng)前未知的模式。如在這里所使用的,術(shù)語“模式”通常指數(shù)據(jù)的特定排列。在一個實施例中,根據(jù)每個應(yīng)用140所包括的應(yīng)用查詢規(guī)格142,定義應(yīng)用140發(fā)出的查詢。應(yīng)用140發(fā)送的查詢可以是預(yù)先定義的(即,作為應(yīng)用140一部分的硬件編碼),或者是響應(yīng)輸入(例如,用戶輸入)生成的。在兩者中的任何一種情況,使用抽象查詢接口146定義的邏輯域構(gòu)造查詢(在這里稱之為“抽象查詢”)。尤其是,通過抽象查詢接口146的數(shù)據(jù)庫抽象部件148定義在抽象查詢中所使用的邏輯域。運行時部件150執(zhí)行抽象查詢,其將抽象查詢轉(zhuǎn)換成與一個或多個數(shù)據(jù)庫156-157中所包含的數(shù)據(jù)的物理表示一致的形式。參照圖2A-B進(jìn)一步說明應(yīng)用查詢規(guī)格142和抽象查詢接口146。在一個實施例中,用戶通過圖形用戶接口(GUI)規(guī)定查詢要素。應(yīng)用140生成GUI的內(nèi)容。在特定實施例中,GUI的內(nèi)容是超文本標(biāo)記語言(HTML)內(nèi)容,其可以在具有瀏覽器程序122的客戶計算機系統(tǒng)102上呈現(xiàn)。因此,存儲器132包括適合服務(wù)來自客戶計算機102和請求的超文本傳輸協(xié)議(http)服務(wù)器進(jìn)程138(例如,web服務(wù)器)。例如,進(jìn)程138會響應(yīng)存取數(shù)據(jù)庫156的請求,數(shù)據(jù)庫156圖解性地位于服務(wù)器104上。針對來自數(shù)據(jù)庫156-157的數(shù)據(jù)的傳入客戶機請求啟動應(yīng)用140。當(dāng)由處理器130執(zhí)行時,應(yīng)用140使服務(wù)器計算機104執(zhí)行體現(xiàn)本發(fā)明優(yōu)選實施例各個方面的步驟或者要素,包括存取數(shù)據(jù)庫156-157。在一個實施例中,應(yīng)用140包括多個被設(shè)置為構(gòu)造GUI單元的servlet,之后由瀏覽器程序122呈現(xiàn)servlet。在經(jīng)由應(yīng)用140存取遠(yuǎn)程數(shù)據(jù)庫157的情況下,用位置規(guī)格配置數(shù)據(jù)庫抽象部件148,該位置規(guī)格標(biāo)識包含要檢索的數(shù)據(jù)的數(shù)據(jù)庫。以下將更具體描述此后一實施例。圖1只是網(wǎng)絡(luò)相連的客戶計算機102和服務(wù)器計算機104的一個硬件/軟件配置。本發(fā)明的實施例能應(yīng)用到任何類似的硬件配置,而不必考慮計算機系統(tǒng)是否復(fù)雜,是否多用戶計算設(shè)備,單用戶工作站,或者沒有自身的非易失存儲設(shè)備的網(wǎng)絡(luò)設(shè)備。另外,可以理解,雖然提及特定標(biāo)記語言(包括HTML),然而本發(fā)明不限于特定語言,標(biāo)準(zhǔn)或者版本。因此,本領(lǐng)域的技術(shù)人員會認(rèn)識到,本發(fā)明既適合于其他標(biāo)記語言,也適合于非標(biāo)記語言,并且,本發(fā)明還適合于特定標(biāo)記語言將來的改變,以及當(dāng)前未知的其他語言。同樣地,圖1中所示的http服務(wù)器進(jìn)程138只是示意性的,本發(fā)明也考慮到適合支持任何已知和未知協(xié)議的其他實施例。環(huán)境的邏輯/實時視圖根據(jù)本優(yōu)選實施例,圖2A-B示出了發(fā)明的多個相關(guān)部件。請求方實體(例如,一個應(yīng)用140)發(fā)出由請求方實體的相應(yīng)應(yīng)用查詢規(guī)格142定義的請求202。結(jié)果查詢202在這里通常被稱為“抽象查詢”,因為查詢是根據(jù)抽象(例如,邏輯)域,而不是通過直接引用數(shù)據(jù)庫156-157中的底層物理數(shù)據(jù)實體來構(gòu)造的。結(jié)果,可以定義獨立于所使用的特定底層數(shù)據(jù)表示的查詢。在一個實施例中,應(yīng)用查詢規(guī)格142包括用于數(shù)據(jù)選擇的標(biāo)準(zhǔn)(選擇標(biāo)準(zhǔn)204),以及根據(jù)選擇標(biāo)準(zhǔn)204要返回的域的顯式規(guī)格(返回數(shù)據(jù)規(guī)格206)。由數(shù)據(jù)庫抽象部件148定義由應(yīng)用查詢規(guī)格142指定并用于構(gòu)造抽象查詢202的邏輯域。通常,數(shù)據(jù)庫抽象部件148將信息公開為可用于由應(yīng)用140發(fā)出的查詢(例如,抽象查詢202)的一組邏輯域,以規(guī)定數(shù)據(jù)選擇標(biāo)準(zhǔn),以及規(guī)定查詢操作回送的結(jié)果數(shù)據(jù)的形式。以獨立于數(shù)據(jù)庫156-157中正使用的底層數(shù)據(jù)表示的方式定義邏輯域,由此,容許要形成的被松耦合到底層數(shù)據(jù)表示的查詢。通常,數(shù)據(jù)庫抽象部件148包括多個域規(guī)格2081,2082,2083,2084和2085,(作為示例,示出了五個),合稱為域規(guī)格208。特別地,為每個可用于構(gòu)造抽象查詢的邏輯域提供域規(guī)格。每個域規(guī)格包括邏輯域名2101,2102,2103,2104和2105(合稱為域名210)和相關(guān)的存取方法2121,2122,2123,2124和2125(合稱為存取方法212)。存取方法將邏輯域名關(guān)聯(lián)(即,映射)到數(shù)據(jù)庫中(例如,數(shù)據(jù)庫156之一)的特定物理數(shù)據(jù)表示2141,2142,....214N。通過圖解的方式,示出了兩個數(shù)據(jù)表示,即XML數(shù)據(jù)表示2141和關(guān)系數(shù)據(jù)表示2142。然而,物理數(shù)據(jù)表示214N指明考慮到了任何已知或未知的其他數(shù)據(jù)表示。根據(jù)要支持的邏輯域的不同類型的數(shù)量,考慮任意數(shù)量的存取方法。在一個實施例中,提供了存取簡單域,過濾域和合成域的方法。域規(guī)格2081,2082和2085分別示例了簡單域存取方法2121,2122和2125。簡單域被直接映射到底層物理數(shù)據(jù)表示的特定實體(例如,映射到所給數(shù)據(jù)庫表和列的域)。通過圖解的方式,在圖2B中所示的簡單域存取方法2121將邏輯域名2101(“FirstName”)映射到名為“contact”的表中名稱為“f_name”的列。域規(guī)格2083例示了過濾域存取方法2123。過濾域標(biāo)識相關(guān)物理實體并提供用于在物理數(shù)據(jù)表示內(nèi)定義特定項子集的規(guī)則。在圖2B所提供的示例中,過濾域存取方法2123將邏輯域名2103(“AnyTownLastName”)映射到名為“contact”的表中名稱為“l(fā)_name”的列中的物理實體,并為城市Anytown中的個人定義了過濾器。過濾域的另一個示例是NewYorkZIP碼域,其映射到ZIP碼的物理表示,并將數(shù)據(jù)唯一限定到針對紐約州定義的那些ZIP碼。域規(guī)格2084示例了合成域存取方法2124。合成存取方法使用作為存取方法定義的一部分提供的表達(dá)式由一個或多個物理域計算邏輯域。這樣,可以計算出底層物理數(shù)據(jù)表示中不存在的信息。在圖2B所圖解的示例中,合成域存取方法2123將邏輯域名2103“AgeIndecades”映射到“AgeInYears/10”。另一個示例是銷售稅域,其通過將銷售價格域乘以銷售稅率而合成。本發(fā)明考慮到底層數(shù)據(jù)的任意給定數(shù)據(jù)類型的格式(例如,日期,十進(jìn)制數(shù)等等)也許各不相同的情況。因此,在一個實施例中,域規(guī)格208包括類型屬性,其反映了底層數(shù)據(jù)的格式。然而,在另一個實施例中,域規(guī)格208的數(shù)據(jù)格式與相關(guān)底層物理數(shù)據(jù)不同,在此情況下,存取方法負(fù)責(zé)以請求方實體所假定的適當(dāng)格式返回數(shù)據(jù)。于是,存取方法最好應(yīng)知道假定的數(shù)據(jù)格式(即,根據(jù)邏輯域),以及底層物理數(shù)據(jù)的實際格式。然后,存取方法能將底層物理數(shù)據(jù)轉(zhuǎn)換為邏輯域的格式。通過示例,圖2中所示的數(shù)據(jù)庫抽象部件148的域規(guī)格208代表被映射到關(guān)系數(shù)據(jù)表示2122中表示的數(shù)據(jù)的邏輯域。然而,數(shù)據(jù)庫抽象部件148的其他實例將邏輯域映射到其他的物理數(shù)據(jù),例如XML。另外,在一個實施例中,以針對過程數(shù)據(jù)表示的存取方法配置數(shù)據(jù)庫抽象部件148。下面參照圖8說明這種數(shù)據(jù)庫抽象部件148的一個實施例。以下,在表I中圖解示出了對應(yīng)于圖2中所示的抽象查詢202的抽象查詢。通過圖解方式,使用XML定義數(shù)據(jù)庫抽象148。然而,可以使用其他任何有效的語言。表I查詢示例001<?xmlversion=″1.0″?>002<!--Querystringrepresentation(FirstName=″Mary″ANDLastName=003″McGoon″)ORState=″NC″-->004<QueryAbstraction>005<Selection>006<ConditioninternalID=″4″>007<Conditionfield=″FirstName″operator=″EQ″value=″Mary″008internallD=″1″/>009<Conditionfield=″LastName″operator=″EQ″value=″McGoon″010internallD=″3″relOperator=″AND″></Condition>011</Condition>012<Conditionfield=″State″operator=″EQ″value=″NC″internallD=″2″013relOperator=″OR″></Condition>014</Selection>015<Results>016<Fieldname=″FirstName″/>017<Fieldname=″LastName″/>018<Fieldname=″State″/>019</Results>020</QueryAbstraction>圖解性地,表I中所示的抽象查詢包括選擇規(guī)格(行005-014),選擇規(guī)格包含選擇標(biāo)準(zhǔn)和結(jié)果規(guī)格(行015-019)。在一個實施例中,選擇標(biāo)準(zhǔn)由域名(對于邏輯域),比較操作符(=,>,<,等等)和值表達(dá)式(正進(jìn)行比較的域)組成。在一個實施例中,結(jié)果規(guī)格是要作為查詢執(zhí)行結(jié)果回送的抽象域的列表。抽象查詢中的結(jié)果規(guī)格可以由域名和排序標(biāo)準(zhǔn)組成。以下在表II中示出了對應(yīng)于表I中抽象查詢的數(shù)據(jù)庫抽象部件148的圖解實例。通過圖解方式,使用XML定義數(shù)據(jù)庫抽象148。然而,可以使用任何其他語言。表II數(shù)據(jù)庫抽象示例001<?xmlversion=″1.0″?>002<DataRepository>003<Categoryname=″Demographic″>004<Fieldqueryable=″Yes″″name=″FirstName″displayable=″Yes″>005<AccessMethod>006<SimptecolumnName=″f_name″tableName=″contact″>/Simple>007</AccessMethod>008<TypebaseType=″char″></Type>009</Field>010<Fieldqueryable=″Yes″name=″LastName″displayable=″Yes″>011<AccessMethod>012<SimplecolumnName=″l_name″tableName=″contact″></Simple>013</AccessMethod>014<TypebaseType=″char″></Type>015</Field>016<Fieldqueryable=″Yes″name=″State″displayable=″Yes″>017<AccessMethod>018<SimplecolumnName=″state″tableName=″contact″></Simple>019</AccessMethod>020<TypebaseType=″char″></Type>021</Field>022</Category>023</DataRepository>圖3示出了圖解性運行時方法300,其示例了運行時部件150操作的一個實施例。當(dāng)運行時部件150接收抽象查詢的實例作為輸入時(例如,圖2中所示的抽象查詢202),在步驟302進(jìn)入方法300。在步驟304,運行時部件150讀取并解析抽象查詢的實例,并定位各選擇標(biāo)準(zhǔn)和所希望的結(jié)果域。在步驟306,運行時部件150進(jìn)入循環(huán)(包括步驟306,308,310和312),以處理抽象查詢中出現(xiàn)的每個查詢選擇標(biāo)準(zhǔn)聲明,從而構(gòu)建具體查詢的數(shù)據(jù)選擇部分。在一個實施例中,選擇標(biāo)準(zhǔn)由域名(對于邏輯域),比較操作符(=,>,<,等等)和值表達(dá)式(正進(jìn)行比較的域)組成。在步驟308,運行時部件150使用來自抽象查詢的選擇標(biāo)準(zhǔn)的域名在數(shù)據(jù)庫抽象部件148中查找域的定義。如上所述,域定義包括用于存取與域相關(guān)的物理數(shù)據(jù)的存取方法的定義。之后,運行時部件150構(gòu)造(步驟310)正被處理的邏輯域的具體查詢成分(querycontribution)。如在這里定義的,具體查詢成分是具體查詢的一部分,其被用于根據(jù)當(dāng)前邏輯域執(zhí)行數(shù)據(jù)選擇。具體查詢是用象SQL和XML語言表示的查詢,并且與所給物理數(shù)據(jù)庫(例如,關(guān)系數(shù)據(jù)庫和XML數(shù)據(jù)庫)的數(shù)據(jù)一致。因此,具體查詢被用于定位和檢索物理數(shù)據(jù)庫(如圖1中數(shù)據(jù)庫156-157所示)的數(shù)據(jù)。然后,將針對當(dāng)前域生成的具體查詢成分添加到具體查詢聲明中。然后,方法300返回到步驟306,以便開始處理抽象查詢的下一個域。因此,對于抽象查詢中的每個數(shù)據(jù)選擇域,重復(fù)在步驟306進(jìn)入的過程,從而將附加內(nèi)容加到最終要執(zhí)行的查詢中。構(gòu)造完具體查詢的數(shù)據(jù)選擇部分后,運行時部件150識別要作為查詢執(zhí)行結(jié)果返回的信息。如上述,在一個實施例中,抽象查詢定義要作為查詢執(zhí)行結(jié)果返回的抽象域的列表,在這里被稱為結(jié)果規(guī)格。抽象查詢中的結(jié)果規(guī)格可以由域名和排序標(biāo)準(zhǔn)組成。因此,方法300在步驟314進(jìn)入循環(huán)(由步驟314,316,318和320定義),以便將結(jié)果域定義加到正生成的具體查詢中。在步驟316,運行時部件150在數(shù)據(jù)庫抽象部件148中查找結(jié)果域名(來自抽象查詢的結(jié)果規(guī)格),然后從數(shù)據(jù)庫抽象148檢索結(jié)果域定義,以便識別當(dāng)前邏輯結(jié)果域要返回的數(shù)據(jù)的物理位置。然后,運行時部件150構(gòu)造(如步驟318)邏輯結(jié)果域的(具體查詢中標(biāo)識要被返回的數(shù)據(jù)的物理位置的)具體查詢成分。然后,在步驟320,將具體查詢成分加到具體查詢聲明中。一旦處理完抽象查詢中的每一個結(jié)果規(guī)格,則在步驟322執(zhí)行查詢。參照圖4,根據(jù)步驟310和步驟318,描述用于構(gòu)造邏輯域的具體查詢成分的方法400的一個實施例。在步驟402,方法400查詢與當(dāng)前邏輯域相關(guān)的存取方法是否簡單存取方法。如果是簡單存取方法,根據(jù)物理數(shù)據(jù)位置信息構(gòu)造具體查詢成分(步驟404),然后,根據(jù)上述方法300,繼續(xù)進(jìn)行處理。否則,繼續(xù)處理到步驟406,以查詢與當(dāng)前邏輯域相關(guān)的存取方法是否過濾存取方法。如果是過濾存取方法,根據(jù)某物理數(shù)據(jù)實體的物理數(shù)據(jù)位置信息,構(gòu)造具體查詢成分(步驟408)。在步驟410,用附加邏輯(過濾器選擇)擴展具體查詢成分,該邏輯用于與物理數(shù)據(jù)實體相關(guān)的子集數(shù)據(jù)。然后,根據(jù)上述方法300,繼續(xù)進(jìn)行處理。如果存取方法不是過濾存取方法,處理從步驟406進(jìn)行到步驟412,在步驟412中,方法400查詢存取方法是否合成存取方法。如果存取方法是合成存取方法,在步驟414定位并檢索合成域表達(dá)式中每個子域引用的物理數(shù)據(jù)位置。在步驟416,合成域表達(dá)式的邏輯域引用被合成域表達(dá)式的物理位置信息替換,從而生成具體查詢成分。然后,根據(jù)上述方法300,繼續(xù)進(jìn)行處理。如果存取方法不是合成存取方法,處理從步驟412進(jìn)行到步驟418。步驟418代表如本發(fā)明實施例所預(yù)期的任何其他存取方法類型。然而,應(yīng)當(dāng)理解,在其中所考慮的實施例比所有可實現(xiàn)的存取方法少。例如,在特定實施例中僅使用了簡單存取方法。在另一個實施例中,只使用了簡單存取方法和過濾存取方法。如上所述,如果邏輯域規(guī)定的數(shù)據(jù)格式不同于底層物理數(shù)據(jù),必須執(zhí)行數(shù)據(jù)轉(zhuǎn)換。在一個實施例中,當(dāng)根據(jù)方法400構(gòu)造邏輯域的具體查詢成分時,針對各自的每個存取方法執(zhí)行初始轉(zhuǎn)換。例如,可以作為步驟404,408和416的一部分,或者隨后立即執(zhí)行轉(zhuǎn)換。當(dāng)在步驟322執(zhí)行查詢之后,執(zhí)行從物理數(shù)據(jù)格式到邏輯域格式的轉(zhuǎn)換。當(dāng)然,如果邏輯域定義的格式與底層物理數(shù)據(jù)相同,則不必進(jìn)行轉(zhuǎn)換。數(shù)據(jù)庫抽象部件的其他實施例在一個實施例中,為每個單獨的物理數(shù)據(jù)表示214提供不同的單數(shù)據(jù)庫抽象部件148(在圖2B和2C中)。在可選實施例中,單數(shù)據(jù)庫抽象部件148包含用于兩個或更多個物理數(shù)據(jù)表示214的域規(guī)格(具有相關(guān)存取方法)。在另一個實施例中,提供多個數(shù)據(jù)庫抽象部件148,其中每個數(shù)據(jù)庫抽象部件148公開相同底層物理數(shù)據(jù)(其可以包括一個或多個物理數(shù)據(jù)表示214)的不同部分。這樣,多個用戶可以同時使用單個應(yīng)用140來存取同一底層數(shù)據(jù),其中,由各自的數(shù)據(jù)庫抽象部件148確定暴露給應(yīng)用的底層數(shù)據(jù)的特定部分。在名稱為“DYNAMICENDUSERSPECIFICCUSTOMIZATIONOFANAPPLICATION’SPHYSICALDATALAYERTHROUGHADATAREPOSITORYABSTRACTIONLAYER”(應(yīng)用的物理數(shù)據(jù)層到數(shù)據(jù)庫抽象層的動態(tài)終端用戶特定定制),并轉(zhuǎn)讓給國際商用機器公司的待審美國專利申請(代理案卷ROC920020088)中,更具體地說明了此后者實施例。在任何實例中,數(shù)據(jù)庫抽象部件148包含(或引用)至少一個存取方法,該方法將邏輯域映射到物理數(shù)據(jù)。對于這一點,如前述實施例說明的,存取方法描述了定位并操作對應(yīng)于邏輯域的數(shù)據(jù)的物理表示的手段。在一個實施例中,擴展數(shù)據(jù)庫抽象部件148到包括大量數(shù)據(jù)源的描述,數(shù)據(jù)源可以是本地的和/或分布于整個網(wǎng)絡(luò)環(huán)境。數(shù)據(jù)源可以使用大量不同數(shù)據(jù)表示和數(shù)據(jù)存取技術(shù)。在一個實施例中,除了用于存取數(shù)據(jù)的方法以外,這通過用定義與邏輯域相關(guān)的數(shù)據(jù)的位置的位置規(guī)格配置數(shù)據(jù)庫抽象部件148的存取方法來實現(xiàn)?,F(xiàn)在參照圖5,所示為具有多個數(shù)據(jù)源(庫)502的環(huán)境500的邏輯/運行時視圖,并圖解了在這樣的環(huán)境中數(shù)據(jù)庫抽象部件148的操作的一個實施例。要經(jīng)由數(shù)據(jù)庫抽象部件148存取的數(shù)據(jù)源502可以是本地的,遠(yuǎn)程的或者兩者都有。在一個實施例中,數(shù)據(jù)源502代表圖1中所示的數(shù)據(jù)庫156-157。通常,數(shù)據(jù)庫抽象部件148與上述那些實施例配置相似。同樣地,數(shù)據(jù)庫抽象部件148有邏輯域定義和針對每個邏輯域定義的相關(guān)存取方法。然而,與其他只存取單一數(shù)據(jù)源的實施例比較,除了物理表示規(guī)格之外,現(xiàn)在還用位置規(guī)格配置存取方法。位置規(guī)格描述了位置(即,數(shù)據(jù)源),在位置規(guī)格中定位要存取的數(shù)據(jù)(即,與邏輯域定義相關(guān)的數(shù)據(jù))。然而,在一個實施例中,可以預(yù)期,某些存取方法可以不用位置規(guī)格進(jìn)行配置,而是默認(rèn)的指向本地數(shù)據(jù)源。通常,圖5示出了應(yīng)用140,抽象查詢規(guī)格142(這里也被稱為應(yīng)用查詢規(guī)格),數(shù)據(jù)庫抽象部件148(用于將邏輯域映射到存取方法),和運行時部件150,運行時部件150負(fù)責(zé)將抽象查詢轉(zhuǎn)變成數(shù)據(jù)庫502所支持的一個或多個數(shù)據(jù)存取請求,該數(shù)據(jù)庫502包含正被查詢的物理信息。與以上描述的一些實施例相比較,圖5的數(shù)據(jù)庫抽象部件148和運行時部件150被配置為支持具有相關(guān)數(shù)據(jù)的邏輯域的定義和查詢,所述相關(guān)數(shù)據(jù)可以分布于多個本地和/或遠(yuǎn)程物理數(shù)據(jù)庫502(在這里也被稱為本地/遠(yuǎn)程數(shù)據(jù)源502)上,并且可以經(jīng)由大量基于查詢和基于過程的接口進(jìn)行存取。針對這一點,應(yīng)用140根據(jù)抽象查詢規(guī)格142定義其數(shù)據(jù)需求,抽象查詢規(guī)格142包含查詢選擇和/或基于邏輯域,而不涉及實際數(shù)據(jù)的物理位置或表示的更新邏輯。數(shù)據(jù)庫抽象部件148包括邏輯域定義504和針對每個邏輯域的存取方法506。邏輯域定義504描述應(yīng)用140可用的邏輯域。在一個方面,數(shù)據(jù)庫抽象部件148管理應(yīng)用140可以使用的信息。從而使得應(yīng)用能使用在新的本地或者遠(yuǎn)程數(shù)據(jù)源中新邏輯域的增加。每個存取方法506定義了邏輯域和本地/遠(yuǎn)程數(shù)據(jù)源502中邏輯域的物理表示之間的映射??梢詤⒄請D6理解此關(guān)系。圖6圖解示出了抽象查詢602,抽象查詢602包括多個邏輯域6041....604N(合稱為邏輯域604)。通過定義特定數(shù)據(jù)庫抽象部件148,每個邏輯域604與存取方法6081,....608N(全體稱為存取方法608)相關(guān)聯(lián)(線606表示)。存取方法608中的物理表示信息包括要使用的存取方法的名稱(這里用“F1的存取方法”,“F2的存取方法”等等表示),和要傳遞給所命名的存取方法、描述如何存取與邏輯域相關(guān)的物理數(shù)據(jù)的多個參數(shù)。通常,這樣的參數(shù)包括定位符參數(shù)6101....610N(合稱為定位符參數(shù)610;在這里還被稱為位置規(guī)格)和其他存取數(shù)據(jù)所需的存取參數(shù)。所給數(shù)據(jù)庫抽象部件實例可以表示由多個本地和遠(yuǎn)程物理數(shù)據(jù)庫管理的信息。在圖7-8中示出了圖解實施例,其中可以用位置規(guī)格和其他存取數(shù)據(jù)所需的存取參數(shù)配置數(shù)據(jù)庫抽象部件實例。首先參照圖7,所示為用關(guān)系存取方法配置的數(shù)據(jù)庫抽象部件的域規(guī)格700。域規(guī)格700特別針對由域名稱702“CreditRatingDescription”標(biāo)識的特定邏輯域,并具有所關(guān)聯(lián)的存取方法。所關(guān)聯(lián)的存取方法名稱704“simple-remote”指出存取方法是簡單域存取方法,其中邏輯域被直接映射到底層物理數(shù)據(jù)表示的特定實體,并且數(shù)據(jù)是遠(yuǎn)程定位的。在此實例中,邏輯域被映射到給定數(shù)據(jù)庫表“credit_t”和列“desc”。“URL”是位置規(guī)格(定位符參數(shù)),其規(guī)定了物理數(shù)據(jù)的位置。在此實例中,“URL”包括使用的JDBC驅(qū)動程序的標(biāo)識符,存有數(shù)據(jù)的遠(yuǎn)程系統(tǒng)名稱(remotesystem.abc.com)和包含數(shù)據(jù)的數(shù)據(jù)庫模式(creditscheme)?!癑DBCDriver”是針對此類遠(yuǎn)程數(shù)據(jù)庫實施SQL存取的JAVA類的名稱。現(xiàn)在參照圖8,所示為用過程存取方法配置的數(shù)據(jù)庫抽象部件的域規(guī)格800。域規(guī)格800特別針對由域名稱802“creditRating”標(biāo)識的特定邏輯域,并具有所關(guān)聯(lián)的存取方法。所關(guān)聯(lián)的存取方法名稱804“procedural”指出存取方法是過程存取方法。“ServiceSpec”標(biāo)識要存取的web服務(wù)的web服務(wù)描述語言(WSDL)定義。WSDL是web服務(wù)的標(biāo)準(zhǔn)接口定義語言。web服務(wù)是用于啟動軟件應(yīng)用的標(biāo)準(zhǔn)方法,該軟件應(yīng)用使用已建立的web通信基礎(chǔ)設(shè)施和標(biāo)準(zhǔn)的數(shù)據(jù)表示技術(shù),例如XML來表示調(diào)用方應(yīng)用和所啟動的web服務(wù)之間傳遞的信息。“ServiceName”標(biāo)識“ServiceSpec”內(nèi)定義的可能服務(wù)組中要被訪問的web服務(wù)的名稱?!癙ortName”標(biāo)識“ServiceSpec”內(nèi)定義的可能端口名稱組中要訪問的服務(wù)的端口名稱。所命名的端口定義服務(wù)的網(wǎng)絡(luò)位置。“Operation”是要啟動的操作的名稱。web服務(wù)能支持多于一個的被稱為“操作”的函數(shù)。當(dāng)啟動web服務(wù)時,“Input”標(biāo)識所需的輸入。在此實例中,提供了lastname值作為對服務(wù)的輸入。“Output”標(biāo)識與此邏輯域相關(guān)的輸出數(shù)據(jù)項。當(dāng)服務(wù)被調(diào)用時,服務(wù)可返回幾部分輸出。因此,“Output”標(biāo)識定義與當(dāng)前邏輯域相關(guān)的該部分輸出數(shù)據(jù)。注意,在過程存取方法實例中,本地數(shù)據(jù)的數(shù)據(jù)庫抽象部件的域規(guī)格看起來與圖8中所示的用于存取遠(yuǎn)程數(shù)據(jù)的域規(guī)格800基本相似。唯一的區(qū)別在于,在本地實例中,引用的WSDL文檔會有回指向服務(wù)正在運行的本地服務(wù)器的URL。再次參照圖5,現(xiàn)在描述運行時部件150操作的一個實施例。通常,運行時部件負(fù)責(zé)根據(jù)抽象查詢構(gòu)造并執(zhí)行可執(zhí)行的查詢。針對此點,在模塊510,運行時部件150解析抽象查詢,并使用數(shù)據(jù)庫抽象部件148將針對一個或多個邏輯域的引用映射到其相應(yīng)的物理位置和存取方法(在這里,全體被合稱為存取方法506)。在一個實施例中,運行時部件150劃分(塊512)全部物理數(shù)據(jù)查詢需求為組(被稱為“子查詢”514),組表示使用相同存取方法存取同一物理源。然后執(zhí)行“子查詢”(塊516)。在全部查詢結(jié)果520被回送給應(yīng)用140之前,合并并規(guī)格化每一個子查詢514的結(jié)果(塊518)。在一方面,此查詢劃分實現(xiàn)方案容許運行時部件150利用多處理器硬件架構(gòu)并行地運行多個子查詢。在一個實施例中,運行時部件150還管理本地數(shù)據(jù)高速緩存522。本地數(shù)據(jù)高速緩存522包含針對某些邏輯域檢索的數(shù)據(jù),并且在隨后查詢期間被用作查找允許高速緩存的數(shù)據(jù)庫抽象部件中所標(biāo)識的邏輯域的第一選擇。以被高速緩存的形式進(jìn)行有利地管理的邏輯域是那些取值相對靜態(tài)并且/或者導(dǎo)致顯著存取開銷的邏輯域(在這里,按照獲取數(shù)據(jù)所需的時間,或存取數(shù)據(jù)的費用開支來測量開銷,假定在每次使用付費(pay-per-use)模型中管理某些信息)。在各種實施例中,優(yōu)選提供了超出現(xiàn)有技術(shù)的許多優(yōu)點。在一個方面,優(yōu)選通過在應(yīng)用查詢規(guī)格和底層數(shù)據(jù)表示之間定義松耦合來獲得優(yōu)勢。不是用特定的表,列和關(guān)系信息對應(yīng)用編碼,如使用SQL的實例,應(yīng)用以更抽象的形式定義數(shù)據(jù)查詢需求,之后在運行時,將該需求綁定到特定物理數(shù)據(jù)表示。即使修改了底層數(shù)據(jù)表示,或者請求方實體將被用于的物理數(shù)據(jù)表示比開發(fā)請求方實體時使用的物理數(shù)據(jù)表示更新,松查詢數(shù)據(jù)耦合仍然優(yōu)選地允許請求方實體(例如,應(yīng)用)正常工作。在修改或重新構(gòu)造所給物理數(shù)據(jù)表示的實例中,優(yōu)選地更新相應(yīng)數(shù)據(jù)庫抽象以反映對底層物理數(shù)據(jù)模型的改變。查詢可使用相同的邏輯域組,并且該域組僅僅被綁定到物理數(shù)據(jù)模型中的不同實體或位置。結(jié)果,即使相應(yīng)的物理數(shù)據(jù)模型已經(jīng)經(jīng)過重大的改變,寫到抽象查詢接口的請求方實體仍然繼續(xù)工作,并且沒有改變。在請求方實體將用于比開發(fā)請求方實體時所使用的更新的物理數(shù)據(jù)表示的情況下,可以使用相同的技術(shù)(例如,關(guān)系數(shù)據(jù)庫),但遵循不同的命名和組織信息策略(例如,不同的模式),以實現(xiàn)新的物理數(shù)據(jù)模型。新模式將包含可以通過使用簡單,過濾以及合成域存取方法技術(shù)被映射到應(yīng)用所需的邏輯域組的信息??蛇x地,新的物理表示可以使用可選的技術(shù)來表示相似的信息(例如,相對關(guān)系數(shù)據(jù)庫系統(tǒng),使用基于XML的數(shù)據(jù)庫)。在任一情況下,通過提供可選數(shù)據(jù)庫抽象(其將查詢中引用的域與新物理數(shù)據(jù)模型中的位置和物理表示相映射),被編寫為使用抽象查詢接口的請求方實體能輕易地移植為使用新物理數(shù)據(jù)表示。在另一個方面,易于使用應(yīng)用構(gòu)造器,并且便利終端用戶。在底層物理數(shù)據(jù)庫中使用抽象層表示邏輯域,使應(yīng)用開發(fā)者能關(guān)注于關(guān)鍵應(yīng)用數(shù)據(jù)需求,而不必關(guān)心底層數(shù)據(jù)表示的細(xì)節(jié)。結(jié)果,在應(yīng)用開發(fā)過程中獲得更高的產(chǎn)出,并減少了錯誤率。針對終端用戶,數(shù)據(jù)庫抽象優(yōu)選提供數(shù)據(jù)過濾機制,公開相關(guān)數(shù)據(jù)并隱藏開發(fā)指定查詢的特定類別終端用戶不需要的無關(guān)內(nèi)容。此外,能夠有利地利用存在多個數(shù)據(jù)源的情況。通過用位置規(guī)格配置數(shù)據(jù)庫抽象部件,能更適宜地存取多個數(shù)據(jù)源,不管數(shù)據(jù)源是本地的或是遠(yuǎn)程的。以此方式,提供了能夠利用當(dāng)今流行的分布式環(huán)境的基礎(chǔ)結(jié)構(gòu)。實現(xiàn)此模型的解決方案使用所提供的抽象查詢規(guī)格來描述其信息需求,而不用考慮所涉及數(shù)據(jù)的位置或者表示。查詢被提交給運行時部件,運行時部件使用數(shù)據(jù)庫抽象部件確定用于存取查詢中表示的每個信息邏輯片的位置和方法。在一個實施例中,運行時部件還包括上述數(shù)據(jù)高速緩存功能,以便訪問數(shù)據(jù)高速緩存。優(yōu)選地,此模型容許以獨立于解決方案所使用的數(shù)據(jù)的物理位置或表示的方式開發(fā)解決方案,使得能將解決方案容易地部署到許多不同數(shù)據(jù)拓?fù)渖希⑶以陔S時間推移而重新定位或重新組織數(shù)據(jù)的情況下,允許解決方案仍然有效。優(yōu)選地,此解決方案還簡化了擴展方案以利用附加信息的任務(wù)。在抽象查詢級實現(xiàn)擴展,并且不需要增加特定于所存取的新數(shù)據(jù)的位置或表示的軟件。此方法優(yōu)選地為軟件應(yīng)用提供獨立于用于存取數(shù)據(jù)的特定方法和所引用的每個數(shù)據(jù)項的位置的通用數(shù)據(jù)存取方法??梢酝ㄟ^關(guān)系模型(在現(xiàn)有的關(guān)系數(shù)據(jù)庫系統(tǒng)中),層次模型(如XML)或者某些其他物理數(shù)據(jù)表示模型表示經(jīng)由抽象查詢所存取的物理數(shù)據(jù)。還支持大量數(shù)據(jù)存取方法,包括那些基于現(xiàn)有的數(shù)據(jù)查詢方法,例如SQL和XQuery的方法,以及涉及編程訪問信息的方法,例如通過web服務(wù)調(diào)用(例如使用SOAP)或通過HTTP請求檢索數(shù)據(jù)。應(yīng)當(dāng)注意到,在這里涉及的任何特定值,定義,程序語言和示例,僅用于說明目的。因此,本發(fā)明不限于任何特定的說明和示例。另外,雖然參參考選擇操作說明了本發(fā)明的各個方面,然而其他輸入/輸出操作也優(yōu)選得到考慮,包括熟知的操作,例如,增加,修改,插入,刪除,等等。當(dāng)然,某些存取方法會約束抽象查詢函數(shù)的類型,其可以使用利用了特定存取方法的域進(jìn)行定義。例如,涉及合成存取方法的域不是修改,插入和刪除的可行目標(biāo)。權(quán)利要求1.一種在多數(shù)據(jù)庫環(huán)境中存取數(shù)據(jù)的方法,包括從請求方實體接收根據(jù)請求方實體的查詢規(guī)格的抽象查詢;其中查詢規(guī)格提供了抽象查詢的多個邏輯域的定義;以及根據(jù)存取方法將抽象查詢轉(zhuǎn)換進(jìn)與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢,該存取方法通過定義存取每個物理實體的方法以及每個物理實體的位置,將邏輯域映射到數(shù)據(jù)的物理實體。2.如權(quán)利要求1所述的方法,其中,將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的特定物理數(shù)據(jù)表示一致的查詢包括將抽象查詢劃分成根據(jù)存取方法類型分組的子查詢。3.如權(quán)利要求1或2所述的方法,其中,從包括SQL查詢類型,XML查詢類型和過程請求類型的組中選出存取方法類型。4.如任一在前權(quán)利要求所述的方法,還包括,存在針對多個邏輯域的特定邏輯域的數(shù)據(jù)的物理實體的地址所指定的數(shù)據(jù)庫。5.如任一在前權(quán)利要求所述的方法,其中,抽象查詢包括至少一個選擇標(biāo)準(zhǔn)和結(jié)果規(guī)格。6.如任一在前權(quán)利要求所述的方法,還包括對多個邏輯域的特定邏輯域的數(shù)據(jù)的物理實體,確定數(shù)據(jù)的物理實體是否位于本地高速緩存內(nèi);并且如果數(shù)據(jù)的物理實體不在本地高速緩存內(nèi),在針對數(shù)據(jù)的物理實體的存取方法中存取該位置所指定的數(shù)據(jù)庫。7.一種計算機程序,包括程序代碼裝置,當(dāng)所述程序在計算機上運行時,所述程序代碼裝置適合于執(zhí)行如權(quán)利要求1至6中任何一個所述的方法。8.計算機,包括存儲器,該存儲器包含至少(i)提供包括多個邏輯域的抽象查詢的定義的查詢規(guī)格,(ii)包括映射規(guī)則的數(shù)據(jù)庫抽象部件,該映射規(guī)則將邏輯域映射到數(shù)據(jù)的物理實體,其中映射規(guī)則包括抽象查詢的至少部分邏輯域的每個的位置規(guī)格,并且其中每個位置規(guī)格規(guī)定包含要存取的物理實體的數(shù)據(jù)源的位置;以及(iii)運行時部件,用于根據(jù)映射規(guī)則將抽象查詢轉(zhuǎn)換成與數(shù)據(jù)的物理實體一致的查詢;以及適合執(zhí)行存儲器的內(nèi)容的處理器。9.如權(quán)利要求8所述的計算機,其中相應(yīng)位置規(guī)格所指定的數(shù)據(jù)源的第一部分是本地的,并且第二部分是遠(yuǎn)程的。10.如權(quán)利要求8或9所述的計算機,其中將抽象查詢轉(zhuǎn)換成與特定物理數(shù)據(jù)表示一致的查詢包括將抽象查詢劃分成根據(jù)存取方法類型分組的子查詢。全文摘要本發(fā)明通常涉及以獨立于數(shù)據(jù)被物理表示的特定方式的方式存取數(shù)據(jù)的系統(tǒng)、方法以及產(chǎn)品。在一個實施例中,數(shù)據(jù)庫抽象層提供了獨立于數(shù)據(jù)表示的特定方式的底層數(shù)據(jù)庫的邏輯視圖。在一個實施例中,數(shù)據(jù)庫抽象層指定了數(shù)據(jù)庫中數(shù)據(jù)的位置,以及用于存取數(shù)據(jù)的方法。還提供了基于數(shù)據(jù)倉庫抽象層的查詢抽象層。運行時部件將抽象查詢轉(zhuǎn)變?yōu)閷τ谔囟ㄎ锢頂?shù)據(jù)表示可以使用的形式。文檔編號G06F17/30GK1647080SQ03808943公開日2005年7月27日申請日期2003年4月17日優(yōu)先權(quán)日2002年4月25日發(fā)明者理查德·迪安·戴廷格,理查德·約瑟夫·史蒂文斯申請人:國際商業(yè)機器公司