欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

處理抽象查詢的方法和系統(tǒng)的制作方法

文檔序號:6649970閱讀:231來源:國知局
專利名稱:處理抽象查詢的方法和系統(tǒng)的制作方法
技術領域
本發(fā)明涉及計算機數(shù)據(jù)庫。更明確地,本申請涉及用于建立物理數(shù)據(jù)存儲機制的抽象以及用于由抽象查詢構造物理數(shù)據(jù)存儲機制的分解查詢的方法。
背景技術
數(shù)據(jù)庫是用于信息存儲和檢索的公知系統(tǒng)。當前所使用的最普及類型的數(shù)據(jù)庫是關系數(shù)據(jù)庫,所述的關系數(shù)據(jù)庫是其中數(shù)據(jù)被定義以便能夠用多種不同方式重新組織和訪問數(shù)據(jù)的表格式數(shù)據(jù)庫。關系數(shù)據(jù)庫管理系統(tǒng)(DBMS)使用用于存儲和檢索數(shù)據(jù)的關系技術。
數(shù)據(jù)庫模式被用于描述數(shù)據(jù)庫結構。例如,關系模式描述一組表格、列和定義了關系數(shù)據(jù)庫中的不同表格之間關系的主碼和外碼。開發(fā)了根據(jù)關系模式查詢數(shù)據(jù)的應用。例如,一般使用被配置用于執(zhí)行包括搜索、排序和查詢構造例程的數(shù)據(jù)訪問例程的前端應用來訪問關系數(shù)據(jù)庫。在后端,軟件程序控制數(shù)據(jù)存儲并響應與前端交互的用戶所提交的請求。
結構化查詢語言(SQL)是廣泛使用的數(shù)據(jù)庫語言,其提供了用于數(shù)據(jù)操作的方法,并包括檢索、存儲、更新和刪除數(shù)據(jù)的命令。根據(jù)用于給定關系數(shù)據(jù)庫的關系模式以及根據(jù)明確定義的SQL語法構建SQL查詢。SQL查詢包括正文串,其必須嚴格符合SQL語言的語法要求并且也必須語義正確地按照用戶所希望的執(zhí)行。即,很多句法正確的SQL語句可能由于語義錯誤而無法按照所希望的執(zhí)行。由于這種復雜性,數(shù)據(jù)庫查詢應用通常被用于幫助用戶構造關系數(shù)據(jù)庫的SQL查詢。
不過,數(shù)據(jù)挖掘和數(shù)據(jù)庫查詢應用所面臨的一個問題是它們與給定數(shù)據(jù)庫模式的緊密關系。這種關系使支持應用變得困難,因為對相應的底層數(shù)據(jù)庫模式做出了改變。此外,這種緊密綁定的關系約束了將應用轉移到可替換的數(shù)據(jù)表示。
共同轉讓的申請日為2002年2月26日的標題為“通過數(shù)據(jù)庫模式和查詢抽象的應用可移植性和可擴展性(Application Portability andExtensibility through Database Scheme and Query Abstraction)”的美國專利申請?zhí)?0/083,075(’075申請)公開了用于提供物理數(shù)據(jù)存儲機制的抽象視圖的數(shù)據(jù)抽象模型的框架?!?75申請的框架向請求實體(即最終用戶或前端應用)提供了存儲于例如關系數(shù)據(jù)庫的底層物理存儲機制中的數(shù)據(jù)的抽象表示。這樣,當訪問底層DBMS時將請求實體從底層物理數(shù)據(jù)中分離出來。能夠構建基于所述框架的抽象查詢而不管底層數(shù)據(jù)庫的結構。此外,對于數(shù)據(jù)庫模式的改變也無需相應改變查詢應用前端;而是能夠修改由所述框架提供的抽象以反映所述的改變。
數(shù)據(jù)抽象模型的一實施例定義了對應于用戶對數(shù)據(jù)的獨立視圖的一組邏輯字段,其與存儲數(shù)據(jù)的底層物理數(shù)據(jù)庫松散耦合。對于用戶,邏輯字段可用于構造搜索、檢索、添加和修改存儲于底層數(shù)據(jù)庫中的數(shù)據(jù)的查詢。抽象查詢被用于生成由關系DBMS處理的SQL查詢語句。當將包括了例如邏輯字段的以對象形式構建的數(shù)據(jù)的高度邏輯視圖的抽象查詢變換為SQL正文串(如SELECT、INSERT或DELETE語句)時,出現(xiàn)了額外的難題。這些問題中的首要問題是很難有效地由抽象查詢直接生成SQL查詢。抽象查詢的不同部分可能以不明顯的方式彼此相關,并因此查詢構造器必須前后完全查看抽象查詢,以正確地構造當前所考慮的查詢部分。不過,查詢構造器可能無法檢查由抽象查詢生成的SQL以確定其所需的信息。具體地,這使查詢構造器確定SQL是否被完全優(yōu)化或在查詢設計中做出調整變得更加困難。首先,SQL將需要被重新解析,盡管它在查詢構造過程期間處于分裂的和不完整的狀態(tài)。其次,SQL語句不總是包含來自抽象查詢的所有信息,因為當抽象查詢被轉換為SQL時一些信息丟失了。
因此,存在對提供了有效地生成和優(yōu)化例如關系DBMS的SQL查詢的底層物理存儲機制的查詢進行進一步改進的技術的需求,以及普遍地存在對抽象查詢處理技術的需求。

發(fā)明內容
本發(fā)明一般地提供用于處理抽象查詢的技術。與直接由抽象查詢生成分解的查詢語句(如SQL語句)不同,本發(fā)明的實施例首先生成抽象查詢的中間表示。在一實施例中,中間表示包括抽象查詢計劃。該抽象查詢計劃包括來自數(shù)據(jù)抽象模型的抽象元素和涉及底層物理數(shù)據(jù)存儲機制的元素的組合。對于相對于關系數(shù)據(jù)庫構建的數(shù)據(jù)抽象模型,抽象查詢計劃包含關于需要哪些關系表格可用以及怎樣將這些表格連接到一起(即,這些表格之間或邏輯字段之間的關系、檢索數(shù)據(jù)的條件)的所有信息。在一實施例中,可以使用存儲此信息的樹狀數(shù)據(jù)結構來實現(xiàn)抽象查詢計劃。一旦生成了抽象查詢計劃,則后端部件可以遍歷該抽象查詢計劃以生成對應于抽象查詢的SQL語句。
本發(fā)明的一實施例提供了一種在數(shù)據(jù)庫中訪問數(shù)據(jù)的方法。所述方法一般地包括從請求實體中接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段指定(i)用于識別該邏輯字段的名,以及(ii)使該邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法。所述方法一般還包括由抽象查詢生成指示了包括于抽象查詢之中的邏輯字段和訪問方法的抽象查詢的中間表示、包含數(shù)據(jù)的數(shù)據(jù)庫內的數(shù)據(jù)源以及數(shù)據(jù)庫中的數(shù)據(jù)源之間的關系,并且由中間表示生成數(shù)據(jù)庫的分解查詢。
本發(fā)明的另一實施例提供了一種提供關系數(shù)據(jù)庫的抽象的方法。所述方法一般包括定義數(shù)據(jù)抽象模型,其中所述的數(shù)據(jù)抽象模型包括多個邏輯字段,其中每一邏輯字段識別該邏輯字段名和使該邏輯字段映射到關系數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;對邏輯字段之間關系的指示;以及識別關系數(shù)據(jù)庫中的數(shù)據(jù)源之間關系的關系數(shù)據(jù)庫的圖形表示。所述方法一般還包括提供被配置用于允許用戶由多個邏輯字段構造抽象查詢的查詢構造接口,以及提供被配置用于處理抽象查詢以由抽象查詢生成關系數(shù)據(jù)庫的分解查詢的運行時部件。
本發(fā)明的另一實施例提供了一種處理抽象查詢的方法。所述方法一般包括從請求實體中接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段指定(i)用于識別該邏輯字段的名,(ii)使該邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法。所述方法一般還包括識別(i)由抽象查詢中的多個邏輯字段所引用的一組數(shù)據(jù)源以及(ii)所述一組數(shù)據(jù)源之間的一組關系,確定所述一組數(shù)據(jù)源和所述一組數(shù)據(jù)源之間的一組關系的非循環(huán)的圖形表示,以及遍歷抽象查詢計劃以生成數(shù)據(jù)源的分解查詢。在一實施例中,抽象查詢計劃包括多個表格實例,其中每一表格實例包括對數(shù)據(jù)源的指示、包括于基于在所指示的數(shù)據(jù)源之上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段、以及用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件,并且其中所述抽象查詢計劃還包括指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系。
本發(fā)明的另一實施例提供了一種處理抽象查詢的方法。所述方法一般包括從請求實體中接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段指定(i)用于識別該邏輯字段的名,(ii)使該邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法,并識別(i)由抽象查詢中的多個邏輯字段所引用的一組數(shù)據(jù)源以及(ii)所述一組數(shù)據(jù)源之間的一組關系。所述方法一般還包括確定所述一組數(shù)據(jù)源的非循環(huán)的圖形表示,生成抽象查詢計劃,其中所述抽象查詢計劃包括(a)多個表格實例,其中每一表格實例包括(i)對數(shù)據(jù)源的指示;(ii)包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段;以及(iii)用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(b)指示多個表格實例怎樣相互聯(lián)系的一組連接關系。并且其中所述方法還包括執(zhí)行對抽象查詢計劃的至少一種優(yōu)化以生成優(yōu)化的抽象查詢計劃,并遍歷優(yōu)化的抽象查詢計劃以生成數(shù)據(jù)源的分解查詢。
本發(fā)明的另一實施例提供了一種包含多個指令的計算機可讀媒介,當在所述指令計算機系統(tǒng)上執(zhí)行時,其被配置用于執(zhí)行操作。所述的操作一般包括定義數(shù)據(jù)抽象模型,其中所述數(shù)據(jù)抽象模型包括多個邏輯字段,其中每一邏輯字段識別邏輯字段名以及使邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;對邏輯字段之間關系的指示;以及識別關系數(shù)據(jù)庫中的數(shù)據(jù)源之間關系的關系數(shù)據(jù)庫的圖形表示。所述操作一般還包括提供被配置用于允許由多個邏輯字段構造抽象查詢的查詢構造接口,以及提供被配置用于處理抽象查詢以由抽象查詢生成關系數(shù)據(jù)庫的分解查詢的運行時部件。
本發(fā)明的另一實施例提供了一種用于處理抽象查詢的系統(tǒng)。所述系統(tǒng)一般包括數(shù)據(jù)抽象模型,其中所述數(shù)據(jù)抽象模型包括(i)多個邏輯字段組成的抽象查詢,其中每一邏輯字段指定(a)用于識別該邏輯字段的名,以及(b)使該邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法,(ii)由數(shù)據(jù)抽象模型所提取的底層物理數(shù)據(jù)存儲機制的圖形表示。所述系統(tǒng)一般還包括被配置用于允許用戶由多個邏輯字段構造抽象查詢的用戶接口,以及被配置用于接收抽象查詢并作為響應生成抽象查詢計劃和用于遍歷該抽象查詢計劃以生成分解查詢的運行時部件。在一實施例中,抽象查詢計劃包括(i)多個表格實例,其中每一表格實例包括對數(shù)據(jù)源的指示、包括于基于所指示的數(shù)據(jù)源之上存在的數(shù)據(jù)的抽象查詢之中的每一邏輯字段、以及用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;并且抽象查詢計劃還包括(ii)指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系。


因此,以此方式獲得并能夠詳細理解本發(fā)明的上述特征、優(yōu)點和目的,通過參考在附圖中說明的本發(fā)明的實施例可以獲得以上簡要概述的本發(fā)明的更具體的描述。
不過,

了本發(fā)明的典型實施例,并因此不應該被認為是限制了本發(fā)明的范圍,因為本發(fā)明可容許其他同等有效的實施例。
圖1根據(jù)本發(fā)明的一實施例說明了軟件和硬件部件的關系視圖。
圖2A根據(jù)本發(fā)明的一實施例說明了軟件部件的關系視圖。
圖2B根據(jù)本發(fā)明的一實施例說明了抽象查詢和相應的數(shù)據(jù)儲存庫抽象部件。
圖3根據(jù)本發(fā)明的一實施例說明了通過建立隨后被用于建立分解查詢的抽象查詢的中間表示來處理抽象查詢的運行時部件。
圖4A和4B說明了以底層關系數(shù)據(jù)庫中的表格之間關系為模型的圖。
圖5根據(jù)本發(fā)明的一實施例說明了抽象查詢計劃的表格實例的數(shù)據(jù)結構部件。
圖6根據(jù)本發(fā)明的一實施例說明了示例性的抽象查詢計劃。
圖7根據(jù)本發(fā)明的一實施例說明了用于使用抽象查詢的抽象查詢計劃中間表示來處理抽象查詢的方法。
圖8根據(jù)本發(fā)明的一實施例說明了由抽象查詢建立分解查詢的方法。
具體實施例方式
本發(fā)明提供了用于建立數(shù)據(jù)抽象模型和處理模型的查詢的方法、系統(tǒng)和制造物品。所述數(shù)據(jù)抽象模型提供了到存儲于數(shù)據(jù)庫之中的數(shù)據(jù)的接口,所述的數(shù)據(jù)庫符合用戶對數(shù)據(jù)的獨立視圖,而不是對應于數(shù)據(jù)庫模式的視圖。當用戶構造抽象查詢時,本發(fā)明的實施例提供了用于在這兩種視圖之間變換的技術,即用于由抽象查詢建立底層數(shù)據(jù)庫的查詢的技術。此處有時將這種查詢稱為“分解”查詢或“物理”查詢。在底層存儲機制是關系數(shù)據(jù)庫的優(yōu)選實施例中,這種查詢包括SQL查詢語句。不過,應該理解,對例如SQL的特定查詢語言的引用是用于說明本發(fā)明的實施例,而其他查詢語言的應用是可以允許的。
本發(fā)明的實施例提供了由抽象查詢生成分解查詢的多步驟的過程。在一實施例中,抽象查詢首先被用于構建抽象查詢的中間表示。接著此中間表示被用于建立分解查詢。在一實施例中,所述中間表示包括抽象查詢計劃(AQP),抽象查詢計劃包括物理數(shù)據(jù)(如關系數(shù)據(jù)庫的表格和列)和邏輯數(shù)據(jù)(如由數(shù)據(jù)抽象模型定義的邏輯字段)的組合。抽象查詢計劃描述了抽象查詢的所有部分以及在底層數(shù)據(jù)庫中存在的相應數(shù)據(jù)源之間的關系和交互。抽象查詢計劃結合了關于從哪些物理實體中選擇哪些邏輯字段以及對哪些物理實體應用哪些條件的信息。此外,抽象查詢計劃提供了用于生成分解查詢的改進版本的額外優(yōu)化的平臺。
在以下描述中,對本發(fā)明的實施例做出引用。不過,本發(fā)明并不局限于任何特別描述的實施例。相反,以下特征和元素的結合不論是否涉及所描述的實施例均實現(xiàn)和實施了本發(fā)明。此外,在各種實施例中,本發(fā)明提供了相對于現(xiàn)有技術的許多優(yōu)點。盡管本發(fā)明的實施例可實現(xiàn)相對于其他可能的解決方案和現(xiàn)有技術的優(yōu)點,但不論給定實施例是否實現(xiàn)了特定優(yōu)點均不會限制本發(fā)明的范圍。因此,以下的方面、特征、實施例和優(yōu)點是示例性的,而并不被看作是所附權利要求的元素或限制,除了在權利要求中明確列舉的之外。同樣,對“本發(fā)明”的引用將既不會被解釋為此處所公開的任何發(fā)明性主題的概述也不會被認為是所附權利要求的元素或限制,除了在權利要求中明確列舉的之外。
將本發(fā)明的一實施例實現(xiàn)為與計算機系統(tǒng)一起使用的程序產(chǎn)品,所述計算機系統(tǒng)例如圖1中所示并在以下描述的計算機系統(tǒng)100。所述程序產(chǎn)品定義此處所述的實施例(包括方法)的功能,并能夠被包含于多種承載信號的媒體之上。說明性的承載信號的媒體包括但不局限于(i)永久存儲于不可寫存儲媒體(例如計算機內的只讀存儲器設備,如通過CD-ROM驅動器可讀的CD-ROM盤)之上的信息;(ii)可選的存儲于可寫存儲媒體(例如軟盤驅動器內的軟盤或硬盤驅動器)之上的信息;以及(iii)跨通信媒體(例如計算機或電話網(wǎng)絡)包括無線通信傳送的信息。最后一個實施例特別包括了在因特網(wǎng)或其他大型計算機網(wǎng)絡上共享的信息。當這種承載信號的媒體帶有執(zhí)行本發(fā)明的方法的計算機可讀指令時,其代表本發(fā)明的實施例。
一般而言,實現(xiàn)本發(fā)明實施例的軟件例程可以是操作系統(tǒng)的一部分或者特定應用、部件、程序、模塊、對象或例如可執(zhí)行腳本的指令序列的一部分。這種軟件例程典型地包括能夠使用計算機系統(tǒng)執(zhí)行的多個指令。同樣,程序典型地包括駐留于存儲器之中或存儲設備之上作為其操作的一部分的變量和數(shù)據(jù)結構。此外,此處所描述的各種程序可以基于為了實現(xiàn)它們的應用而進行識別。不過,本領域中的技術人員可認識到,以下的任何特殊術語或特定應用使描述本發(fā)明更方便,而并不限制獨立使用的具有特定應用或術語的本發(fā)明。此外,此處描述的程序的功能使用彼此交互的離散模塊或部件。不過,本領域的技術人員可認識到,各種實施例可以用許多方式組合或歸并這些部件和模塊。
環(huán)境的物理視1說明了在客戶端-服務器配置中的網(wǎng)絡化的計算機系統(tǒng)。客戶端計算機系統(tǒng)1051-N包括允許它們在網(wǎng)絡104上與其他系統(tǒng)進行通信的網(wǎng)絡接口。網(wǎng)絡104可包括局域網(wǎng),其中客戶端系統(tǒng)105和服務器系統(tǒng)110存在于相同的通用位置,或者網(wǎng)絡104可包括地理上分散的系統(tǒng)之間的網(wǎng)絡連接,包括因特網(wǎng)上的網(wǎng)絡連接??蛻舳讼到y(tǒng)105通常包括經(jīng)由總線連接到存儲器和存儲設備的中央處理器(CPU)(均未示出)??蛻舳讼到y(tǒng)105運行操作系統(tǒng)(如Linux發(fā)行套件、Microsoft Windows、IBM的AIX、FreeBSD等等),其管理硬件部件和在客戶端系統(tǒng)105上運行的較高級軟件應用之間的交互。
在一實施例中,用戶建立客戶端系統(tǒng)105和服務器系統(tǒng)110之間的網(wǎng)絡連接。這種連接可包括登錄過程,其中用戶使用例如用戶名和口令或其他認證模式(如數(shù)字證書或生物測定認證)認證對于服務器系統(tǒng)110的用戶身份。不需要認證的系統(tǒng)也是可以允許的。
服務器系統(tǒng)110可包括類似于客戶端系統(tǒng)105所使用的硬件部件。因此,服務器系統(tǒng)110通常包括通過總線相互連接的CPU、存儲器和存儲設備(均未示出)。服務器系統(tǒng)110也運行操作系統(tǒng)(如Linux發(fā)行套件、Microsoft Windows、IBM的OS/400或AIX、FreeBSD等等),其管理硬件部件和較高級軟件應用之間的交互。
不過,圖1中說明的客戶端/服務器配置僅僅是示例性的一個硬件/軟件配置。可使用其他配置實現(xiàn)本發(fā)明的實施例,不管計算機系統(tǒng)是否是復雜的多用戶計算系統(tǒng),例如通過高速網(wǎng)絡連接的作為單一系統(tǒng)、單用戶工作站或者它們本身缺少非易失性存儲的網(wǎng)絡設備的一組獨立計算機。此外,盡管此處所描述的實施例使用客戶端/服務器配置,但是使用分布式計算、網(wǎng)格計算和對等處理技術的實施例是可以允許的。
在一實施例中,用戶使用圖形用戶界面(GUI)與服務器系統(tǒng)110交互。在特殊的實施例中,GUI內容可包括使用web瀏覽器122在客戶端計算機系統(tǒng)1051上呈現(xiàn)的HTML文檔(即網(wǎng)頁)。在這種實施例中,服務器系統(tǒng)110包括用于響應來自客戶端系統(tǒng)105的HTTP請求以及傳輸HTML文檔到客戶端系統(tǒng)105的超文本傳輸協(xié)議(http)服務器118(例如web服務器,如開放源碼的Apache web服務器程序或IBM的WebSphere程序)。網(wǎng)頁自身可以是存儲于服務器系統(tǒng)110上的靜態(tài)文檔或者使用與web服務器交互以服務于來自客戶端系統(tǒng)105的HTTP請求的應用服務器112而動態(tài)生成。
可選地,或另外地,客戶端應用120可包括數(shù)據(jù)庫前端或運行于客戶端系統(tǒng)105N之上的查詢應用程序。所述的應用120可允許用戶構造抽象查詢以及將用于處理的抽象查詢提交到運行時部件114。所述的應用120可包括查詢構造接口115。應用120和查詢構造接口115允許用戶根據(jù)描述了在數(shù)據(jù)庫214上建立的抽象的數(shù)據(jù)抽象模型148來構造抽象查詢。
如圖1中所說明的,服務器系統(tǒng)110還可包括運行時部件114、DBMS服務器116和數(shù)據(jù)抽象模型148。這些部件的每一個可包括運行于服務器系統(tǒng)110上的軟件程序。DBMS服務器116(或多個服務器)通常包括被配置用于管理數(shù)據(jù)庫2141-3的軟件應用。通過說明,可通過DBMS服務器116訪問的獨立數(shù)據(jù)庫可包括使用SQL查詢進行查詢的關系數(shù)據(jù)庫2142或使用XML查詢進行查詢的XML數(shù)據(jù)庫2141。不過,本發(fā)明并不局限于任何特定物理數(shù)據(jù)庫存儲機制,并可以容易地被擴展為在不管當前已知或未知的其他這樣的機制上運行。因此,數(shù)據(jù)存儲機制2143說明了由DBMS服務器116管理的其他存儲機制。此外,數(shù)據(jù)庫214可存在于服務器系統(tǒng)110的本地存儲系統(tǒng)上,或可在網(wǎng)絡104上訪問。因此,可以相對于本地和聯(lián)合數(shù)據(jù)庫配置以及二者的組合構建由數(shù)據(jù)抽象模型148建立的數(shù)據(jù)抽象。
在一實施例中,用戶使用由數(shù)據(jù)抽象模型148定義的邏輯字段構造抽象查詢。數(shù)據(jù)抽象模型148定義了在每一邏輯字段和來自底層物理數(shù)據(jù)庫機制的數(shù)據(jù)之間的關系。在一實施例中,由數(shù)據(jù)抽象模型148定義的每一邏輯字段識別邏輯字段名和訪問方法。所述訪問方法識別數(shù)據(jù)所在的底層數(shù)據(jù)庫(如數(shù)據(jù)庫2141-3),以及用于在底層物理存儲機制中訪問數(shù)據(jù)的訪問方法。以下更詳細地描述了數(shù)據(jù)抽象模型、邏輯字段和訪問方法的實施例。
運行時部件114被配置用于生成與包含于一個或多個數(shù)據(jù)庫214中的數(shù)據(jù)的物理表達相一致的查詢。換句話說,運行時部件是用于由抽象查詢生成物理查詢(如SQL語句)的“變換引擎”。運行時部件114獲取由用戶構造的抽象查詢、識別對應于包括在來自數(shù)據(jù)抽象模型148的查詢中的每一邏輯字段的信息,并生成由DBMS 116運行的對于底層物理存儲機制的物理查詢。在一實施例中,運行時部件114獲得抽象查詢并生成對應于給定查詢的抽象查詢計劃,并接著使用抽象查詢計劃來生成分解查詢。此外,運行時部件114可被配置用于將查詢結果返回到請求實體。
圖2A說明了本發(fā)明的多個相關部件,連同由數(shù)據(jù)抽象模型提供的抽象視圖(圖2A的左側)和用于存儲數(shù)據(jù)的底層數(shù)據(jù)庫機制(圖2A的右側)之間的變換。
在一實施例中,請求實體(例如,與在客戶端系統(tǒng)105上執(zhí)行的應用115交互的用戶)使用查詢構造接口120構造抽象查詢202。查詢構造接口可由應用115提供,并可以是在web瀏覽器122上呈現(xiàn)的網(wǎng)頁。由此產(chǎn)生的查詢在此處通常被稱為“抽象查詢”,因為它由邏輯字段構造,而不是通過直接引用底層數(shù)據(jù)庫2141-3中的數(shù)據(jù)實體。結果,可以由特定的底層關系數(shù)據(jù)庫模式獨立地構造抽象查詢。
在一實施例中,由數(shù)據(jù)抽象模型148定義用于構造抽象查詢202的邏輯字段。一般而言,數(shù)據(jù)抽象模型148使信息成為可在抽象查詢內使用以指定用于數(shù)據(jù)選擇的標準131以及指定從查詢操作返回的結果數(shù)據(jù)的形式的一組邏輯字段。運行時部件114是由數(shù)據(jù)抽象模型148提供的抽象表示和底層物理數(shù)據(jù)庫之間的橋。例如,運行時部件114可以將抽象查詢202變換為從數(shù)據(jù)庫2141查詢數(shù)據(jù)的XML查詢、關系數(shù)據(jù)庫2142的SQL查詢或根據(jù)另一物理存儲機制(不管當前已知的或以后開發(fā)的)構造的其他查詢。
環(huán)境的邏輯視2B說明了示例性的抽象查詢202。所述查詢包括設計用于檢索關于姓名為“Mary McGoon”的病人的選擇標準204。由結果標準206指定將被檢索的特定信息。在這種情況下,所述查詢檢索年齡和用于血紅蛋白測試的測試結果。所檢索的實際數(shù)據(jù)可包括來自用于多個測試的數(shù)據(jù)。即,查詢結果可顯示出已指定姓名的病人和該病人的測試結果之間的一對多關系。
此外,抽象查詢202指定了模型實體201,即所說明的“病人”模型實體。通常模型實體提供表示了構造獨立邏輯字段的抽象的附加層。模型實體向最終用戶和應用提供了能夠簡化數(shù)據(jù)查詢和修改任務(即,插入、搜索和刪除)較高級的概念圖。此外,模型實體提供了具有對于特定抽象查詢的焦點或全貌的運行時部件114。換句話說,模型實體用于識別數(shù)據(jù)的寬泛范疇,如“病人”數(shù)據(jù)。作為示例,將來自抽象查詢202的“病人”模型實體映射到數(shù)據(jù)庫抽象模型中所有涉及“病人”模型實體的一組字段和包含與病人有關的數(shù)據(jù)的底層數(shù)據(jù)源。
在一實施例中,用戶指定被查詢的模型實體作為查詢構造過程的一部分。由數(shù)據(jù)抽象模型148所提供的框架定義哪個模型實體為可用的。如下所述,當構建抽象查詢計劃時,運行時部件114可使用被選擇用于抽象的模型實體,以選擇根節(jié)點??赏ㄟ^包括于數(shù)據(jù)抽象模型148中的額外的元數(shù)據(jù)定義模型實體。在標題為“通過數(shù)據(jù)模型實體處理復合數(shù)據(jù)(Dealingwith Composite Data through Data Model Entities)”的申請序列號為10/403,356的申請日為2003年3月31日的并在此將其整體并入作為參考的共同擁有的待決申請中更詳細地描述了模型實體的詳細示例。
圖2B進一步說明包括了示例的多個邏輯字段規(guī)范2081-5(作為示例示出五個)的數(shù)據(jù)抽象模型148的一實施例。總體來說,邏輯字段規(guī)范208建立相對于特定的一組底層物理數(shù)據(jù)庫和相應的數(shù)據(jù)庫模式的抽象。本領域的技術人員將認識到,可以相對于同一組底層物理存儲機制構建多個數(shù)據(jù)儲存庫抽象模型。因此,可以構建抽象向不同用戶顯示數(shù)據(jù)的不同部分,或者相對于相同數(shù)據(jù)而構建的抽象可能不同,并可對應特定用戶(或用戶組)的需要而定制。
圖2B中所示的邏輯字段說明了相對于關系數(shù)據(jù)庫構建的抽象。即,包括于字段規(guī)范208中的訪問方法定義了邏輯字段和來自關系數(shù)據(jù)庫(例如來自圖2A的數(shù)據(jù)庫2142)的表格和列之間的映射。數(shù)據(jù)抽象模型148提供邏輯字段規(guī)范208,每一邏輯字段可用于構造抽象查詢(例如抽象查詢202)。邏輯字段規(guī)范208存儲對于每一邏輯字段的定義以及任何相關聯(lián)的元數(shù)據(jù)。如所說明的,每一字段規(guī)范208識別邏輯字段名2101-5和相關聯(lián)的訪問方法2121-5。運行時部件114使用訪問方法使邏輯字段映射特定的物理數(shù)據(jù)存儲機制214?;诓煌愋偷倪壿嬜侄蔚臄?shù)量,任何數(shù)量的訪問方法是可以允許的。如圖2B中所說明的,提供了用于簡單字段、已過濾字段和已構造字段的訪問方法。
字段規(guī)范2081、2082和2085分別提供了簡單訪問方法2121、2122和2125。簡單訪問方法提供對底層物理數(shù)據(jù)表示中的特定實體的直接映射。當?shù)讓游锢頂?shù)據(jù)表示是關系數(shù)據(jù)庫時,簡單訪問方法使邏輯字段映射到已識別的數(shù)據(jù)庫表格和列。例如,圖2B中所示的簡單字段訪問方法2121使邏輯字段名2101(“FirstName”)映射到名為“Demographics”的表格中的名為“f_name”的列。邏輯字段規(guī)范208也可包括指示了邏輯字段怎樣涉及數(shù)據(jù)抽象模型148中的其他實體的元數(shù)據(jù)。
字段規(guī)范2083例示了已過濾字段訪問方法2123。已過濾訪問方法識別關聯(lián)的物理實體并提供用于定義物理數(shù)據(jù)表示內的特定子組的項的規(guī)則。例如,考慮存儲用于多個不同醫(yī)學測試的測試結果的關系表??啥x對應每一不同測試的邏輯字段,并且將對于每一不同測試的過濾器用于識別與邏輯字段相關聯(lián)的特定測試。在圖2B中提供了示例,其中,用于已過濾字段2123的訪問方法將邏輯字段名2103(“Hemoglobin_Test”)映射到名為“Tests”的表格中的名為“Test_Result”的列,并定義了過濾器“Test_ID=‘1243’”。因此,已過濾字段作為用于限制來自較大組的數(shù)據(jù)的項的選擇標準,而無需用戶了解怎樣在底層物理存儲機制中表示數(shù)據(jù)的細節(jié)或指定選擇標準作為查詢構造過程的一部分。
字段規(guī)范2084例示了已構造訪問方法2124。已構造訪問方法使用提供作為訪問方法定義的一部分的表達而生成來自一個或多個物理數(shù)據(jù)項或由其他邏輯字段返回的數(shù)據(jù)的值。這樣,可以計算不直接存在于底層數(shù)據(jù)表示之中的信息,并將其提供給請求實體。在圖2B中所說明的示例中,已構造字段訪問方法2123使邏輯字段“Age”映射到名為“Birthdate”的另一個邏輯字段2085。邏輯字段“Birthdate”2105映射到人口統(tǒng)計表格中的列。構造表達被用于計算已構造字段的值。在此示例中,通過將當前日期減去由“Birthdate”邏輯字段返回的日期值計算出年齡值。
作為示例,圖2B中所示的數(shù)據(jù)儲存庫抽象部件148的字段規(guī)范208是映射到關系數(shù)據(jù)表示2142中所表示數(shù)據(jù)的邏輯字段的代表。不過,數(shù)據(jù)儲存庫抽象部件148或其他邏輯字段規(guī)范的其他實例可以映射到其他物理數(shù)據(jù)表示(例如圖2A中所說明的數(shù)據(jù)庫2141或2143)。
在以下表I中示出了對應于抽象查詢202的說明性的抽象查詢。在此示例中,使用XML表示抽象查詢202。在一實施例中,應用115可被配置用于生成XML文檔以表示通過用戶與查詢構造接口120或web瀏覽器122交互而構造的抽象查詢。本領域的技術人員將認識到,XML是用于使共享結構化文本和信息更方便的公知語言,不過也可以使用其他語言。
表I-查詢示例001<?xml version=“1.0”?>
002<!--查詢串表示(FirstName=“Mary”AND LastName=003“McGoon”)OR State=“NC”-->
004<QueryAbstraction>
005 <Selection>
006 <Condition internalID=“4”>
007 <Condition field=“FirstName”operator=“EQ”value=“Mary”008 internalID=“1”/>
009 <Condition field=“LastName”operator=“EQ”value=“McGoon”010 internalID=“3”relOperator=“AND”></Condition>
011 </Condition>
012</Selection>
013<Results>
014 <Field name=“Age”/>
015 <Field name=“Hemoglobin test”/>
016</Results>
017<Entity name=“Patient”>
018 <EntityField required=“Hard”>
019<FieldRef name=“data//Demographic/Patient ID”/>
020<Usage type=“query”/>
021 </EntityField>
022</Entity>
023 </QueryAbstraction>
表I中所示的抽象查詢包括包含了選擇標準的選擇規(guī)范(行005-012)和結果規(guī)范(行013-016)。在一實施例中,選擇標準由字段名(對于邏輯字段)、比較運算符(=、>、<等等)以及值表達(將字段與其進行比較的對象)所組成。在一實施例中,結果規(guī)范是將返回作為查詢執(zhí)行的結果的邏輯字段列表。所返回的實際數(shù)據(jù)與選擇標準一致。模型實體“病人”在行017被識別,并且使所述模型實體與人口統(tǒng)計表格的病人ID列(行019)相關聯(lián)。
抽象查詢處理圖3根據(jù)本發(fā)明的一實施例說明了運行時部件114的操作。如上所述,運行時部件114被配置用于接收抽象查詢,并作為響應生成例如關系數(shù)據(jù)庫的底層物理數(shù)據(jù)存儲機制的查詢。查詢可以被保存、存儲于高速緩存中或在不同用戶之間共享。一旦完成查詢并選擇其用于執(zhí)行,則將查詢傳送到運行時部件114。在一實施例中,使用公知的數(shù)據(jù)通信協(xié)議將查詢跨網(wǎng)絡104傳輸?shù)较到y(tǒng)110。
一旦接收了查詢,則運行時部件114處理抽象查詢305。在一實施例中,運行時部件114接收例如XML的結構化的形式的抽象查詢305,如表I中所說明的查詢。運行時部件114首先由抽象查詢305構造查詢的中間表示。在一實施例中,中間表示包括抽象查詢計劃,所述的抽象查詢計劃包括來自數(shù)據(jù)抽象模型的抽象元素和涉及底層物理數(shù)據(jù)存儲機制的元素的組合。
對于相對于關系數(shù)據(jù)庫構建的數(shù)據(jù)抽象模型,抽象查詢計劃包括了關于需要哪些關系數(shù)據(jù)庫可用以及怎樣將表格連接在一起(即,表格之間或邏輯字段之間的關系、所檢索數(shù)據(jù)的條件)的所有信息。通過此信息,運行時部件生成用于查詢數(shù)據(jù)庫214的SQL語句312。
構建抽象查詢計劃如上所述,抽象查詢計劃包括用于抽象查詢之中的邏輯字段,指示了對應于所述字段的物理數(shù)據(jù)源以及怎樣連接來自所需數(shù)據(jù)源的數(shù)據(jù)。因此,運行時部件114需要使由數(shù)據(jù)庫抽象模型提取的數(shù)據(jù)庫的結構或模式可用,以處理抽象查詢。
圖4A說明了底層數(shù)據(jù)庫的圖形表示400。此表示400用于定義底層物理存儲機制中的數(shù)據(jù)源之間的關系。在一實施例中,運行時部件114使用圖形表示400來識別包含了與給定抽象查詢有關的數(shù)據(jù)的數(shù)據(jù)源。圖形表示400的結構來源于被提取作為數(shù)據(jù)抽象模型148的一部分并在查詢處理期間對運行時部件114可用的底層物理數(shù)據(jù)庫結構。
在底層物理存儲機制是關系數(shù)據(jù)庫時,可將關系模式用于生成圖形表示400。圖400的每一節(jié)點405(用于說明而標注的三個節(jié)點)可表示來自底層關系模式的實際的表格,或可表示由一個或多個實際表格所定義的表格,如數(shù)據(jù)庫視圖或通用表格表示。所述關系也可來源于由指示了不同邏輯字段和物理數(shù)據(jù)源之間的關系的數(shù)據(jù)抽象模型148所提供的元數(shù)據(jù)。例如,數(shù)據(jù)抽象模型148可包括指示了字段之間的一對一和一對多關系的“關系”部分。連接節(jié)點的是邊緣410。如所說明的,通過邊緣4101連接節(jié)點1和節(jié)點2,而通過邊緣4102連接節(jié)點2和節(jié)點3。同樣如所說明的,通過節(jié)點2連接節(jié)點1和節(jié)點3。類似地連接其他節(jié)點。
邊緣410表示怎樣可以使來自不同節(jié)點的數(shù)據(jù)連接在一起,即,位于不同節(jié)點的數(shù)據(jù)之間的關系。這種關系可包括一對一和一對多關系。運行時部件114使用表示400和給定的抽象查詢來識別用于生成抽象查詢計劃的子圖。即,盡管圖形表示400表示了由數(shù)據(jù)庫抽象模型提取的整個數(shù)據(jù)庫,但僅需要響應于給定抽象查詢所需的節(jié)點和邊緣來建立抽象查詢計劃。因此,運行時部件114由圖形表示400構建子圖,其包括最低限度所需的一組節(jié)點和邊緣。當處理抽象查詢時,運行時部件114僅需要包含了與抽象查詢有關的數(shù)據(jù)的節(jié)點。
不過,大多數(shù)查詢將不需要來自圖形表示400的每一節(jié)點的數(shù)據(jù)。因此,圖4B說明了來自圖4A的數(shù)據(jù)庫結構的修改版本。子圖430僅包括特定抽象查詢所需的節(jié)點。此外,改變了圖以移除節(jié)點之間的任何重復路徑。這防止了運行時部件114在處理抽象查詢時停留于重復循環(huán)中。當邊緣將節(jié)點連接成循環(huán)時,可以出現(xiàn)這種路徑。例如,路徑1→2→5→4→1是通過圖形表示400的循環(huán)路徑的示例。通過移除節(jié)點1和節(jié)點2之間的邊緣4101而切斷了這種路徑。在一實施例中,在生成抽象查詢計劃之前切斷存在于節(jié)點的子圖(例如子圖430)中的任何循環(huán)路徑。
在一實施例中,構建抽象查詢計劃的第一步驟是建立僅包括特定抽象查詢所需的節(jié)點和邊緣(換句話說,數(shù)據(jù)和在數(shù)據(jù)源之間的關系)的底層數(shù)據(jù)表示的模型。將包括了涉及用于抽象查詢的模型實體的數(shù)據(jù)的節(jié)點安置于子圖430的根。例如,圖4中說明的指定用于抽象查詢202的“病人”模型實體指定了被查詢的模型實體是“病人”模型實體。因此,人口統(tǒng)計節(jié)點420被用作用于抽象查詢420的根節(jié)點。
在一實施例中,生成子圖430表示的步驟可以包括生成抽象查詢所需的節(jié)點(數(shù)據(jù)源)和邊緣(節(jié)點之間關系)的Steiner樹表示。如本領域的技術人員將認識到的,Steiner樹是連接了包括一組所需節(jié)點的子圖的最小權重。將包括了涉及用于抽象查詢的模型實體的數(shù)據(jù)的節(jié)點安置于樹根,并且最小化到終端節(jié)點的距離以生成子圖430。如圖4B中所示,選擇了節(jié)點420、422、424和426。在此示例中,被選擇用于子圖430的每一節(jié)點也包含處理查詢所需的數(shù)據(jù),但此結果不是必需的。例如,如果抽象查詢202也需要來自“醫(yī)生”數(shù)據(jù)源節(jié)點428的數(shù)據(jù),那么節(jié)點432將被包括于子圖430中,盡管它將僅僅用于將節(jié)點428連接到人口統(tǒng)計節(jié)點420。
由運行時部件生成的子圖形表示430使用在數(shù)據(jù)儲存庫抽象部件中指定的數(shù)據(jù)之間的關系。在一實施例中,可向用戶提供初始子圖形表示,并給用戶機會修改此初始圖形表示??蛇x地或另外地,可向用戶提供允許用戶指定在圖400中說明的數(shù)據(jù)源之間的額外的或不同的關系的接口。例如,如子圖形表示430中所說明的,人口統(tǒng)計數(shù)據(jù)源通過測試數(shù)據(jù)源連接到記錄數(shù)據(jù)源。不過,也可通過圖8A中所說明的表格8連接記錄數(shù)據(jù)源。例如當測試表格非常大,使得將它僅僅用于連接過程變得非常低效時,這可以是有利的。在這種情況下,有經(jīng)驗的用戶或數(shù)據(jù)庫管理員能夠指定優(yōu)選的子圖形表示用于查詢處理。
一旦確定了用于特定抽象查詢的子圖430,則運行時部件114生成一組表格實例(以下關于圖6進行更詳細描述)。每一表格實例對應于來自子圖形表示430的節(jié)點。在一實施例中,抽象查詢計劃包括一組一個或多個表格實例,連同一組連接關系以及關于連接關系的元數(shù)據(jù)。每一表格實例可包括由運行時部件114使用的包括來自數(shù)據(jù)抽象模型的邏輯數(shù)據(jù)和來自底層物理存儲機制的物理數(shù)據(jù)(例如表格和列)的組合的數(shù)據(jù)結構。
圖5示出了表格實例502的數(shù)據(jù)結構的一實施例的說明。如所說明的,表格實例502包括字段部分506、表格部分508、條件部分510。表格部分508識別對應于字段部分506的數(shù)據(jù)所在的底層物理數(shù)據(jù)源(例如,關系表格、視圖或用于關系數(shù)據(jù)源的通用表格表示)。此外,條件部分510指定了對包括于抽象查詢中的邏輯字段所指定的數(shù)據(jù)的限制。
表格實例502包括用于識別每一獨特表格實例的標識符504。此外,標識符504可包括描述在抽象查詢計劃中的表格的目的的屬性。例如,屬性可將表格實例分類為用于選擇返回用于抽象查詢的數(shù)據(jù)的信息表格(例如來自抽象查詢202的結果標準204)或者用于表示包括于抽象查詢中的條件限制的條件表格。
運行時部件114被配置用于劃分在抽象查詢中指定的條件和邏輯字段,并將它們按單元分組。每一單元包括在相同數(shù)據(jù)源上應用的邏輯字段。換句話說,包括于特定表格實例中的所有邏輯數(shù)據(jù)(例如字段和條件)對應用于該特定表格實例的存在于由表格部分508指示的數(shù)據(jù)源中的數(shù)據(jù)。參考圖6進一步描述了表格實例的特定示例和其中用于抽象查詢計劃的一部分。
圖6說明了由抽象查詢600生成的抽象查詢計劃的示例。用戶使用數(shù)據(jù)庫抽象模型148和查詢構造接口120來構造抽象查詢600并將其提交到運行時部件114用于處理。在此示例中,用戶已指定了模型實體“病人”。抽象查詢602包括“血紅蛋白測試”的選擇字段和結果標準“年齡>18”,以及病人姓名和年齡的結果標準。因此,所述查詢將檢索具有底層數(shù)據(jù)庫中的數(shù)據(jù)的其人已接受血紅蛋白測試并且年齡大于18歲的任何病人的姓名和年齡。
表格實例“t1”和“t2”是對應于抽象查詢600的抽象查詢計劃的一部分。每一表格包括字段部分(610和616)、數(shù)據(jù)源部分(612和618)以及條件(614和620)。標注為“t1”的表格實例602結合了由抽象查詢600指定的選擇標準。數(shù)據(jù)源部分612指示了包括于此表格實例602中的所有邏輯字段是依靠來自人口統(tǒng)計節(jié)點(例如,在圖4B中所說明的節(jié)點420)的數(shù)據(jù)。如所說明的,表格602包括指示了此表格實例是信息表格(即,數(shù)據(jù)源部分612存儲將被包括于用戶結果之中的數(shù)據(jù))的屬性603。字段選擇數(shù)據(jù)610包括映射病人姓名的簡單的邏輯字段“Name”,以及用于表示被識別為由生日構造的Age邏輯字段的“已構造字段一”的“C1”。如所說明的,用上標“s”修飾這些字段,所述的上標“s”表示此字段用于選擇返回到用戶的數(shù)據(jù)。當實現(xiàn)這些屬性用于在計算機系統(tǒng)(例如服務器系統(tǒng)110)中執(zhí)行時,將這些屬性存儲為用于表示表格實例的數(shù)據(jù)結構的一部分。在此情況下,條件部分614包括用于限制從數(shù)據(jù)源612中選擇的數(shù)據(jù)的條件、年齡條件限制和“人口統(tǒng)計”數(shù)據(jù)源612的組。
在抽象查詢計劃中,表格實例604以標識符“t2”標記,并結合了來自抽象查詢600的選擇條件。表格屬性605指示了該表格為條件表格,即,它對應包括于抽象查詢中的選擇條件。在一實施例中,當抽象查詢計劃被用于構造關系DBMS的SQL查詢時,條件表格可成為SQL語句的“where”子句的一部分。字段部分616包括“Test1”和“ID”字段。用于表格實例604的數(shù)據(jù)源是“tests”表格618。此外,條件部分620包括未直接通過查詢指定的條件“type=‘1243’”。不過,此條件隱含地包括于使用已過濾字段映射數(shù)據(jù)的來自“血紅蛋白”測試邏輯字段的查詢中。
通過連接關系630連接了這兩個表格實例。人口統(tǒng)計表格實例602和測試表格實例604之間的連接是一對多的關系。即,每一病人(模型實體)可具有多個測試。在一實施例中,可在數(shù)據(jù)抽象模型148中指定邏輯字段之間的關系。圖6中說明的抽象查詢計劃使用單線段632和雙線段634描述了這種關系。此外,連接關系包括連接類型屬性638。如所說明的,所述連接指示為“左”連接。
本領域的技術人員將認識到,“左”連接是關系數(shù)據(jù)庫中的表格之間的關系的通用類型,并且基于所處理的抽象查詢,其他連接類型可以是“右”或“內部”。連接類型指示了怎樣跨表格實例將數(shù)據(jù)結合在一起,而無需在每個表格中重復所有數(shù)據(jù)。屬性636(使用羅馬數(shù)字“II”所說明的)向運行時部件指示了數(shù)據(jù)是從已過濾字段中選擇的。當生成對于已過濾字段的分解查詢時,運行時部件114可以被配置用于由表格實例指示的數(shù)據(jù)源生成子選擇語句。如所說明的,測試數(shù)據(jù)源618可包括來自許多類型的測試的測試結果,包括由抽象查詢600的一個選擇邏輯字段所引用的血紅蛋白測試。已過濾字段“hemoglobin test”被用于僅從使用已過濾條件620即“type=1243”的此測試數(shù)據(jù)源中檢索血紅蛋白測試結果。
本領域的技術人員將認識到,圖6中所說明的抽象查詢計劃是說明性的,并由特定抽象查詢600生成。生成用于其他抽象查詢的抽象查詢計劃將基于包括于每一特定抽象查詢之中的信息。
一旦構建了抽象查詢計劃,可以在生成分解查詢語句之前優(yōu)化所述的抽象查詢計劃。如上所述,建立抽象查詢計劃的一個目的是生成給出對運行時部件114可用的信息的盡可能有效的分解查詢。因此,在一實施例中,運行時部件可多次傳遞抽象查詢計劃,以執(zhí)行對抽象查詢計劃的任何數(shù)量的不同優(yōu)化。
此外,可向用戶提供抽象查詢計劃,并給用戶機會選擇執(zhí)行哪些優(yōu)化或直接修改抽象查詢計劃。例如,如果由運行時部件生成的抽象查詢計劃建立具有大型表格(如測試表格)的多個表格實例的抽象查詢計劃,那么用戶選擇的一個優(yōu)化將允許用戶指引運行時部件114以最小化大型表格的表格實例的數(shù)量?;蛘哂脩艨芍付ú煌臈l件組,以便當生成抽象查詢計劃時使用。因為可能有多個抽象查詢計劃,所以可向用戶提供機會權衡這些競爭性計劃的好處,以選擇最有效的抽象查詢計劃。例如,如果測試表格(大的)和診斷表格(小的)均可用,連接到小的表格可以是更有效的選擇。
另一種可能的優(yōu)化是將對于抽象查詢指定的一組已過濾字段變換為沒有過濾器的單一查詢。當用戶多次使用同樣的已過濾字段構造抽象查詢時,這種優(yōu)化將是有用的。一般而言,當已過濾字段被用于查詢關系數(shù)據(jù)庫時,將其分解為子選擇SQL查詢語句。不過,多次執(zhí)行同樣的子選擇語句是非常低效的。因此,另一種優(yōu)化將是建立對于已過濾字段的通用表格表達,而不是多個子選擇語句。本領域的技術人員將認識到,以上所述的優(yōu)化是示例性的,并且進一步地,一旦構建了抽象查詢計劃,在建立分解查詢之前所述的抽象查詢計劃提供了可由用戶或由檢查抽象查詢計劃的運行時部件114選擇的多種不同的優(yōu)化的平臺。
一旦構建了抽象查詢計劃,則運行時部件114生成底層物理數(shù)據(jù)存儲機制的查詢。當這包括關系DBMS時,運行時部件遍歷抽象查詢計劃以生成SQL語句。在一實施例中,運行時部件114可完全遍歷表格實例以生成對于每一表格實例的SQL片段,并接著按照對于抽象查詢計劃的抽象查詢確定的連接關系中所指定的而將所述實例連接在一起。
為了完成圖6中描述的說明性抽象查詢計劃的處理,運行時部件114遍歷抽象查詢計劃以生成SQL語句640。運行時部件114開始于包括了用于抽象查詢計劃的模型實體的表格實例602。由表格實例602,運行時部件114生成包括了姓名和年齡的選擇標準的分解查詢640的一部分。接著,運行時部件114生成SQL語句,以包括在條件表格實例604中指定的條件。
從而抽象查詢計劃提供了依靠抽象邏輯字段和底層物理數(shù)據(jù)源的一組離散對象。抽象查詢計劃不試圖直接建立分解查詢,而是提供抽象查詢的中間表示。此中間表示提供可被系統(tǒng)地遍歷以由任何抽象查詢生成正確的分解查詢的正式的數(shù)據(jù)結構。
操作方法圖7說明了運行時部件114處理抽象查詢的操作700的流程圖。操作700對應于圖3中說明的抽象查詢305、中間表示310和分解查詢312的變換。此方法開始于步驟702,其中,運行時部件114從請求實體接收抽象查詢。使用查詢構造接口115構造所述查詢,或所述查詢也可以是之前由相同或不同用戶構造的已保存查詢。這樣,可將相同的抽象查詢用于不同的底層數(shù)據(jù)庫。即,可通過改變訪問方法以使用不同的模式或底層存儲機制來說明所存儲的相同信息,而相對于不同的底層數(shù)據(jù)庫表示構建相同的邏輯字段。由邏輯字段和數(shù)據(jù)抽象模型提供的抽象隱藏了底層系統(tǒng)中的差異。
接著,在步驟704,運行時部件114由抽象查詢生成抽象查詢計劃。在一實施例中,抽象查詢計劃包括由給定抽象查詢構建的一組表格實例,以及底層物理數(shù)據(jù)庫的子圖。接著,運行時部件114遍歷抽象查詢計劃以生成與底層數(shù)據(jù)存儲機制的存儲格式一致的查詢。例如,當?shù)讓哟鎯C制是關系數(shù)據(jù)庫時,運行時部件114生成提供給關系DBMS用于執(zhí)行的SQL語句。一旦完成抽象查詢計劃,則運行時部件114可從模型實體的根節(jié)點開始完全地遍歷抽象查詢計劃,以生成底層物理數(shù)據(jù)庫的分解查詢。
圖8根據(jù)本發(fā)明的一實施例說明了用于生成抽象查詢計劃的方法。在運行時部件114已接收抽象查詢之后,此方法始于步驟810。如上所述,可以使用查詢構造接口115構造抽象查詢。在步驟810,識別包括于抽象查詢中的每一邏輯字段,并且從數(shù)據(jù)抽象模型148中檢索字段的定義。接著在步驟820,運行時部件檢索底層物理數(shù)據(jù)庫的圖形表示,如圖4A和4B中所說明的圖結構。由此表示,運行時部件114建立包括了由數(shù)據(jù)源或者查詢的條件需求所需要的所有節(jié)點的數(shù)據(jù)庫的非循環(huán)模型,并可包括連接查詢的節(jié)點所需的任何主干節(jié)點。
在步驟830,識別了對應于被查詢的模型實體的圖形表示中的節(jié)點。如上所述,基于用戶所需的查詢焦點,使每一抽象查詢集中于模型實體。數(shù)據(jù)抽象模型148定義了怎樣使模型實體關聯(lián)底層物理數(shù)據(jù)存儲中的數(shù)據(jù)(例如,來自關系數(shù)據(jù)庫的行)。一旦已識別了所述節(jié)點,則運行時部件114構建對應于子圖節(jié)點、邏輯字段和由查詢直接指定的或者作為已過濾或已構造邏輯字段的一部分隱含地指定的條件的一組表格實例。通過根據(jù)由數(shù)據(jù)庫的圖形表示提供的連接關系和由數(shù)據(jù)抽象模型提供的任何關系數(shù)據(jù)而連接表格實例,運行時部件完成抽象查詢計劃。
在步驟850,在完成抽象查詢計劃之后,運行時部件114遍歷抽象查詢計劃以由根據(jù)已識別的連接關系而連接的每一表格實例生成分解查詢。將這種分解查詢提供給管理底層數(shù)據(jù)源(例如關系數(shù)據(jù)庫)的DBMS用于執(zhí)行。在一實施例中,可由DBMS 116生成并處理多個查詢分段。在這樣的實施例中,運行時部件可被配置用于歸并由每一子查詢生成的結果。在步驟870,可將結果格式化并返回給用戶。在一實施例中,這可以包括返回被格式化為用于web瀏覽器122的HTML的一組查詢結果??蛇x地,這可以包括將結果返回給顯示結果的應用120,或也可以執(zhí)行額外的分析,例如配置用于發(fā)布抽象查詢并分析結果的統(tǒng)計分析。
盡管前述內容指向本發(fā)明的實施例,但可以設計本發(fā)明的其他的和進一步的實施例,而無需背離本發(fā)明的基本范圍,并且通過以下的權利要求確定本發(fā)明的范圍。
權利要求
1.一種訪問數(shù)據(jù)庫中數(shù)據(jù)的方法,包括從請求實體中接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段指定(i)用于識別邏輯字段的名,以及(ii)使邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;由抽象查詢生成抽象查詢的中間表示,其指示(i)哪些邏輯字段和訪問方法被包括于抽象查詢中,(ii)在包含該數(shù)據(jù)的數(shù)據(jù)庫內的數(shù)據(jù)源,以及(iii)數(shù)據(jù)庫中的數(shù)據(jù)源之間的關系;以及由中間表示生成數(shù)據(jù)庫的分解查詢。
2.權利要求1的方法,其中所述數(shù)據(jù)庫是關系數(shù)據(jù)庫,并且其中所述數(shù)據(jù)源是關系表格。
3.權利要求1的方法,其中,所述數(shù)據(jù)庫包括使用相對于多個獨立關系數(shù)據(jù)庫創(chuàng)建的關系模式所定義的聯(lián)合數(shù)據(jù)庫。
4.權利要求2的方法,其中所述的生成抽象查詢的中間表示的步驟包括識別僅包括了生成中間表示所需的關系表格和表格之間關系的數(shù)據(jù)庫表示。
5.權利要求4的方法,其中所述的已識別的數(shù)據(jù)庫表示包括Steiner樹表示,其中所述的Steiner樹表示的根節(jié)點對應于由抽象查詢識別的模型實體,以及其中所述的模型實體識別由抽象查詢進行查詢的數(shù)據(jù)的邏輯焦點。
6.權利要求1的方法,其中所述的抽象查詢的中間表示包括抽象查詢計劃,其中所述的抽象查詢計劃包括(i)多個表格實例,其中每一表格實例包括數(shù)據(jù)源的指示、包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段以及用于限制從數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(ii)指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系。
7.權利要求6的方法還包括通過最小化包括于抽象查詢計劃中的相同表格實例的數(shù)量而優(yōu)化抽象查詢計劃。
8.權利要求1的方法,其中所述的對于每一邏輯字段的訪問方法從簡單的、已過濾的或已構造的訪問方法中選擇其一。
9.權利要求1的方法,其中所述的生成數(shù)據(jù)庫的分解查詢的步驟包括生成SQL語句。
10.權利要求1的方法,其中所述的查詢構造接口包括基于web的接口。
11.權利要求1的方法還包括發(fā)布對于數(shù)據(jù)庫的分解查詢以檢索一組查詢結果數(shù)據(jù),以及返回查詢結果數(shù)據(jù)到請求實體。
12.一種提供關系數(shù)據(jù)庫的抽象的方法,包括定義數(shù)據(jù)抽象模型,其中所述的數(shù)據(jù)抽象模型包括(i)多個邏輯字段,其中每一邏輯字段識別邏輯字段名和使邏輯字段映射到關系數(shù)據(jù)庫中的表格的列的訪問方法,(ii)對邏輯字段之間關系的指示,以及(iii)識別關系數(shù)據(jù)庫中的數(shù)據(jù)源之間關系的關系數(shù)據(jù)庫的表示;提供被配置用于允許用戶由多個邏輯字段構造抽象查詢的查詢構造接口;以及提供被配置用于處理抽象查詢以生成抽象查詢的中間表示的運行時部件。
13.權利要求12的方法,其中所述的抽象查詢的中間表示包括抽象查詢計劃,其中所述的抽象查詢計劃包括(i)多個表格實例,其中每一表格實例包括對數(shù)據(jù)源的指示、包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段以及用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(ii)指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系。
14.權利要求12的方法還包括向用戶提供抽象查詢計劃的指示,并允許用戶通過(i)修改所述的一組連接關系或者(ii)減少包括于抽象查詢計劃中的相同表格實例的數(shù)量而優(yōu)化中間表示。
15.權利要求12的方法,其中所述的向用戶提供中間表示的指示的步驟包括生成和顯示說明了每一表格實例和表格實例之間的一組連接關系的接口的圖形表示。
16.權利要求13的方法,其中所述的運行時部件進一步被配置用于由抽象查詢計劃生成包括SQL語句的關系數(shù)據(jù)庫的分解查詢。
17.權利要求12的方法,其中所述的關系數(shù)據(jù)庫的表示包括圖形表示,其中每一節(jié)點表示數(shù)據(jù)源,而每一邊緣表示數(shù)據(jù)源之間的關系。
18.權利要求12的方法,其中所述的查詢構造接口包括基于web的接口。
19.權利要求12的方法,其中所述的數(shù)據(jù)庫包括使用由多個獨立的關系數(shù)據(jù)庫構建的關系模式所定義的聯(lián)合數(shù)據(jù)庫。
20.權利要求12的方法,其中所述的對于每一邏輯字段的訪問方法從簡單的、已過濾的和已構造的訪問方法中選擇其一。
21.一種處理抽象查詢的方法,包括從請求實體接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段指定(i)用于識別邏輯字段的名,(ii)使邏輯字段映射數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;識別(i)由抽象查詢中的多個邏輯字段引用的一組數(shù)據(jù)源以及(ii)所述一組數(shù)據(jù)源之間的一組關系;確定所述一組數(shù)據(jù)源的非循環(huán)圖形表示;生成抽象查詢計劃,其中所述的抽象查詢計劃包括(a)多個表格實例,其中每一表格實例包括(i)對數(shù)據(jù)源的指示;(ii)包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段;以及(iii)用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(b)指示多個表格實例如何相互聯(lián)系的一組連接關系;執(zhí)行抽象查詢計劃的至少一種優(yōu)化以生成優(yōu)化的抽象查詢計劃;以及遍歷優(yōu)化的抽象查詢計劃以生成數(shù)據(jù)源的分解查詢。
22.權利要求21的方法,其中所述的優(yōu)化包括(i)修改所述的一組連接關系或者(ii)減少包括于抽象查詢計劃中的相同表格實例的數(shù)量。
23.權利要求21的方法,還包括,向配置用于管理存儲于數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)提供分解查詢;接收一組查詢結果數(shù)據(jù);以及返回所述一組查詢結果數(shù)據(jù)到請求實體。
24.權利要求21的方法,其中所述的關系數(shù)據(jù)庫的圖形表示包括這樣的圖形表示,其中每一節(jié)點表示數(shù)據(jù)源,而每一邊緣表示數(shù)據(jù)源之間的關系。
25.權利要求21的方法,其中所述的一組數(shù)據(jù)源包括關系數(shù)據(jù)庫中的一組表格,并且其中所述的數(shù)據(jù)源之間的一組關系包括主碼和外碼關系。
26.權利要求21的方法,其中所述的數(shù)據(jù)庫包括使用由多個獨立的關系數(shù)據(jù)庫構建的關系模型所定義的聯(lián)合數(shù)據(jù)庫。
27.權利要求21的方法,其中所述的一組數(shù)據(jù)源的非循環(huán)圖形表示包括Steiner樹表示,其中所述的Steiner樹表示的根節(jié)點對應于由抽象查詢識別的模型實體。
28.權利要求21的方法,其中所述的對于每一邏輯字段的訪問方法從簡單的、已過濾的和已構造的訪問方法中選擇其一。
29.權利要求21的方法,其中所述的建立所述的一組數(shù)據(jù)的分解查詢的步驟包括生成SQL語句。
30.權利要求21的方法,其中所述的查詢構造接口包括使用因特網(wǎng)web瀏覽器應用訪問的基于web的接口。
31.一種包含多個指令的計算機可讀媒介,當所述的指令在計算機系統(tǒng)上執(zhí)行時被配置用于執(zhí)行操作,所述操作包括從請求實體中接收由多個邏輯字段構造的抽象查詢,其中每一邏輯字段提供(i)用于識別邏輯字段的名,以及(ii)使邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;由抽象查詢生成抽象查詢的中間表示,其識別來自抽象查詢的數(shù)據(jù)、包含該數(shù)據(jù)的數(shù)據(jù)庫內的相應數(shù)據(jù)源以及數(shù)據(jù)庫中的不同數(shù)據(jù)源之間的關系;以及由中間表示生成數(shù)據(jù)庫的分解查詢。
32.權利要求31的計算機可讀媒介,其中所述數(shù)據(jù)庫是關系數(shù)據(jù)庫。
33.權利要求31的計算機可讀媒介,其中所述的已識別的數(shù)據(jù)庫表示包括Steiner樹表示,其中所述的Steiner樹表示的根節(jié)點對應于由抽象查詢識別的模型實體。
34.權利要求31的計算機可讀媒介,其中所述的抽象查詢的中間表示包括抽象查詢計劃,其中所述的抽象查詢計劃包括(i)多個表格實例,其中每一表格實例包括數(shù)據(jù)源的表示、包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段以及用于限制從數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(ii)指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系。
35.一種包含多個指令的計算機可讀媒介,當所述的指令在計算機系統(tǒng)上執(zhí)行時被配置用于執(zhí)行操作,所述操作包括定義數(shù)據(jù)抽象模型,其中所述的數(shù)據(jù)抽象模型包括多個邏輯字段,其中每一邏輯字段識別邏輯字段名和使邏輯字段映射到關系數(shù)據(jù)庫中的數(shù)據(jù)源的訪問方法;對邏輯字段之間關系的指示;以及識別關系數(shù)據(jù)庫中的數(shù)據(jù)源之間關系的關系數(shù)據(jù)庫的圖形表示;以及提供被配置用于允許由多個邏輯字段構造抽象查詢的查詢構造接口;提供被配置用于處理抽象查詢以由抽象查詢生成關系數(shù)據(jù)庫的分解查詢的運行時部件。
36.一種用于處理抽象查詢的系統(tǒng),包括數(shù)據(jù)抽象模型,其中所述的數(shù)據(jù)抽象模型包括(i)多個邏輯字段,其中每一邏輯字段指定(a)用于識別邏輯字段的名,以及(b)使邏輯字段映射到數(shù)據(jù)庫中的數(shù)據(jù)的訪問方法,(ii)由數(shù)據(jù)抽象模型提取的底層物理數(shù)據(jù)存儲機制的圖形表示;配置用于允許用戶由多個邏輯字段構造抽象查詢的用戶接口;配置用于接收抽象查詢并作為響應生成抽象查詢計劃的運行時部件,其中所述的抽象查詢計劃包括(i)多個表格實例,其中每一表格實例包括對數(shù)據(jù)源的指示、包括于基于在所指示的數(shù)據(jù)源上存在的數(shù)據(jù)的抽象查詢中的每一邏輯字段以及用于限制從所指示的數(shù)據(jù)源中選擇的數(shù)據(jù)的條件;以及(ii)指示相對于抽象查詢多個表格實例如何相互聯(lián)系的一組連接關系;以及遍歷抽象查詢計劃以基于每一表格實例和表格實例之間所表示的連接關系而生成所述一組數(shù)據(jù)的分解查詢。
37.權利要求36的系統(tǒng)還包括,發(fā)布分解查詢到底層物理數(shù)據(jù)存儲機制以檢索一組查詢結果數(shù)據(jù);以及返回所述的一組查詢結果數(shù)據(jù)到請求實體。
38.權利要求36的系統(tǒng),其中所述的底層物理數(shù)據(jù)存儲機制包括關系數(shù)據(jù)庫中的一組表格。
39.權利要求36的系統(tǒng),其中所述的數(shù)據(jù)庫包括使用由多個獨立的關系數(shù)據(jù)庫構建的關系模式所定義的聯(lián)合數(shù)據(jù)庫。
40.權利要求36的系統(tǒng),其中所述的一組數(shù)據(jù)源的非循環(huán)圖形表示包括Steiner樹表示,其中所述的Steiner樹表示的根節(jié)點對應于由抽象查詢識別的模型實體。
41.權利要求36的系統(tǒng),其中所述的用戶接口被進一步配置用于向用戶提供抽象查詢計劃的指示,并允許用戶通過(i)修改所述的一組連接關系或者(ii)減少包括于抽象查詢計劃中的相同表格實例的數(shù)量而優(yōu)化中間表示。
全文摘要
提供了一種方法和系統(tǒng)以及制造物品,以處理相對于底層物理數(shù)據(jù)存儲機制構建的數(shù)據(jù)庫抽象的抽象查詢。所述的數(shù)據(jù)庫可包括單個數(shù)據(jù)源或跨多個系統(tǒng)的聯(lián)合源。本發(fā)明的實施例通過生成抽象查詢的中間表示而處理抽象查詢。在一實施例中,中間表示包括抽象查詢計劃。抽象查詢計劃包括來自數(shù)據(jù)抽象模型的元素和涉及底層物理數(shù)據(jù)存儲機制的元素的組合。一旦生成了抽象查詢計劃,后端部件可以容易地遍歷抽象查詢計劃以生成對應于抽象查詢的SQL語句(或其他分解查詢)。此外,一旦構建了抽象查詢計劃,在建立分解查詢之前,抽象查詢計劃提供了對于可由用戶或由檢查抽象查詢計劃的運行時部件選擇的多種不同優(yōu)化的平臺。
文檔編號G06F17/30GK1786950SQ20051011512
公開日2006年6月14日 申請日期2005年11月10日 優(yōu)先權日2004年12月6日
發(fā)明者R·D·德廷格, D·P·科爾茨 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
兴国县| 酒泉市| 宜城市| 阜康市| 武义县| 吴桥县| 云林县| 彝良县| 宁陕县| 鹿泉市| 通江县| 阳朔县| 奈曼旗| 长春市| 星座| 清原| 沽源县| 六盘水市| 拜城县| 长岛县| 海伦市| 北流市| 石嘴山市| 富蕴县| 霍林郭勒市| 宣汉县| 眉山市| 浦江县| 翁源县| 衡南县| 教育| 元江| 瓦房店市| 清水县| 汉源县| 略阳县| 舟曲县| 广安市| 酒泉市| 明光市| 许昌市|