国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      分布式查詢引擎流水線方法和系統(tǒng)的制作方法

      文檔序號(hào):6419515閱讀:264來源:國知局

      專利名稱::分布式查詢引擎流水線方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明一般涉及在數(shù)據(jù)源上進(jìn)行查詢的軟件領(lǐng)域,尤其涉及對(duì)包含不同數(shù)據(jù)模型的數(shù)據(jù)源的分布式查詢。
      背景技術(shù)
      :在各種數(shù)據(jù)源上進(jìn)行查詢是在具有不同數(shù)據(jù)模型的數(shù)據(jù)源上執(zhí)行搜索所急待解決的問題。在具有相同數(shù)據(jù)模型的異類數(shù)據(jù)源中也同樣出現(xiàn)出這樣的問題。為了查詢具有多個(gè)數(shù)據(jù)模型的多個(gè)數(shù)據(jù)源,通常需要多個(gè)查詢執(zhí)行引擎。輸入查詢通常由單片機(jī)分解,該單片機(jī)確定與執(zhí)行引擎相連的先驗(yàn)應(yīng)當(dāng)?shù)玫匠跏驾斎氩樵兊哪膫€(gè)部分。從而單片地處理原始查詢,以將該查詢分成用于執(zhí)行的清楚塊。每個(gè)執(zhí)行引擎對(duì)應(yīng)于特殊數(shù)據(jù)模型或數(shù)據(jù)源。然后,各個(gè)查詢執(zhí)行引擎執(zhí)行它們的查詢部分并將結(jié)果返回到單片機(jī)。然后該單片機(jī)具有合并來自每個(gè)查詢執(zhí)行引擎的各個(gè)查詢結(jié)果并將它們串在一起以形成一組完整的查詢結(jié)果的任務(wù)。各種數(shù)據(jù)查詢的該方法存在需要能識(shí)別和操作所有可能數(shù)據(jù)源的單片機(jī)的缺點(diǎn)。這是一個(gè)不好的任務(wù),因?yàn)椴煌瑪?shù)據(jù)源具有用于與它們的數(shù)據(jù)相互作用的很不同的API’s或模型,并且建造熟知所有數(shù)據(jù)模型并能操作所有可能數(shù)據(jù)源的單片機(jī)一般不太可行或不期望。例如,如果有人想要在SQL數(shù)據(jù)庫或XML文件上查詢,與XML文件相互作用的唯一接口是文檔對(duì)象模型(DOM),并且到數(shù)據(jù)庫的唯一接口是SQL命令。因此,這人需要不同代碼與數(shù)據(jù)庫和XML文件一起工作。如果有人試圖建造能夠處理附加數(shù)據(jù)模型類型(如在本領(lǐng)域呈現(xiàn)出重要性的那些數(shù)據(jù)類型)的單片機(jī)的話,則該問題將會(huì)加劇。在這樣的條件下,通過改變需求,單片引擎容量會(huì)被很大程度地超出,并且如果任何附加數(shù)據(jù)模型類型被添加或如果現(xiàn)存的數(shù)據(jù)模型類型明顯改變,則需要重新設(shè)計(jì)。建立各種數(shù)據(jù)源查詢機(jī)制的附加問題是虛擬查詢。如果數(shù)據(jù)源可以以一種數(shù)據(jù)模型類型來輕松地查詢,然而還希望以第二數(shù)據(jù)模型查詢語言來建立查詢,那么則需要一種數(shù)據(jù)模型查詢語言類型的轉(zhuǎn)換。該需要會(huì)導(dǎo)致需求多套硬件和軟件模塊以及對(duì)應(yīng)數(shù)量的優(yōu)化器來確保查詢有效編碼的多個(gè)查詢語言轉(zhuǎn)換。因此,存在避免設(shè)計(jì)和建造單片查詢處理器的體系結(jié)構(gòu)的需要,該單片查詢處理器適合于改變查詢語言需求。另外,存在對(duì)這樣一種體系結(jié)構(gòu)的需要,即該體系結(jié)構(gòu)避免了與從一種形式到另一種形式轉(zhuǎn)換多個(gè)查詢語言相關(guān)的問題。本發(fā)明著手解決前面提到的需要并用本發(fā)明的體系結(jié)構(gòu)解決它們,本發(fā)明的體系結(jié)構(gòu)適合于改變查詢環(huán)境需要。
      發(fā)明內(nèi)容本發(fā)明通過利用分布式查詢引擎流水線,著手解決在具有多個(gè)數(shù)據(jù)模型類型的多個(gè)數(shù)據(jù)源上進(jìn)行查詢的問題。該流水線提供了優(yōu)越于典型解決方案的優(yōu)點(diǎn),該典型解決方案使用單片機(jī)來分解輸入查詢,分配各個(gè)部分到具體的執(zhí)行引擎并隨后將結(jié)果合并來形成輸入查詢結(jié)果。本發(fā)明使用級(jí)聯(lián)的分析引擎而不用單片機(jī)來識(shí)別和提取在具體執(zhí)行引擎上能編譯和執(zhí)行的輸入查詢部分。在本發(fā)明的一個(gè)實(shí)施例中,分析引擎與執(zhí)行引擎類型相聯(lián)系,盡管被級(jí)聯(lián),但是每個(gè)分析引擎互相獨(dú)立操作。每個(gè)分析引擎具有輸出該引擎將其識(shí)別為對(duì)應(yīng)于執(zhí)行引擎的編譯部分,以及該已識(shí)別部分被去除并用占位符置換的重寫查詢。在該級(jí)聯(lián)中位于下一個(gè)的分析引擎接收該重寫查詢,識(shí)別它的可執(zhí)行部分,用另一個(gè)占位符置換它,并將兩次重寫查詢與兩個(gè)占位符一起向下傳遞到下一階段。處理該查詢的執(zhí)行階段,優(yōu)選與對(duì)應(yīng)于最后一個(gè)分析引擎的執(zhí)行引擎一起開始。該執(zhí)行引擎執(zhí)行分配給它的查詢,并且在執(zhí)行引擎的級(jí)聯(lián)中,將呼叫放置到下一更高執(zhí)行引擎,以恢復(fù)占位符查詢結(jié)果。每個(gè)執(zhí)行引擎將呼叫放置到更高堆棧引擎以恢復(fù)對(duì)應(yīng)于占位符的數(shù)據(jù)。在級(jí)聯(lián)的執(zhí)行引擎中的連續(xù)呼叫最終導(dǎo)致一個(gè)執(zhí)行引擎聚集對(duì)應(yīng)于輸入查詢的所有查詢結(jié)果??蛇x的,流水線查詢執(zhí)行階段可以從最外面執(zhí)行或第一分析引擎編譯輸出處開始。如前所述,每個(gè)執(zhí)行引擎可以執(zhí)行給其分配的查詢并且為占位符數(shù)據(jù)對(duì)后續(xù)的執(zhí)行引擎進(jìn)行呼叫。該輸入查詢返回的結(jié)果是相同的。前面的發(fā)明概述,以及隨后優(yōu)選實(shí)施例的詳細(xì)描述,將通過結(jié)合附圖閱讀時(shí)會(huì)得到更好的理解。為了說明本發(fā)明,在圖中示出了本發(fā)明的示范性結(jié)構(gòu),但是本發(fā)明不局限于公開的具體方法和手段。附圖為圖1是示出了示范性計(jì)算環(huán)境的框圖,在該示范性計(jì)算環(huán)境中本發(fā)明的各個(gè)方面可以完成;圖2示出了框圖體系結(jié)構(gòu),其中本發(fā)明的各個(gè)方面可以在其內(nèi)完成;圖3示出了框圖體系結(jié)構(gòu),其中本發(fā)明的各個(gè)方面可以在其內(nèi)完成;以及圖4示出了適合于本發(fā)明各個(gè)方面的流程圖。具體實(shí)施例方式本發(fā)明要解決的問題是從多個(gè)查詢源的多個(gè)類型的數(shù)據(jù)源上進(jìn)行查詢。一種解決在虛擬XML數(shù)據(jù)源上進(jìn)行查詢的問題的方法可以是使用統(tǒng)一中間語言。用在本發(fā)明上下文中的XML中間語言表示查詢的意思或語義。該XML中間語言被稱為查詢中間語言(QIL)。QIL著手解決通常所說的″查詢/視圖組合″問題。例如,假定XML查詢在數(shù)據(jù)、或XML、XML虛擬或其他數(shù)據(jù)的虛擬XML視圖上執(zhí)行。一種方法可以將該數(shù)據(jù)源作為XML實(shí)現(xiàn),但是這會(huì)是非常低效的并且會(huì)需要比系統(tǒng)可用存儲(chǔ)器更多的存儲(chǔ)器。另一種方法是虛擬化該視圖,將該查詢用該虛擬視圖構(gòu)成,并且將傳送結(jié)果到原始數(shù)據(jù)上的操作上。用戶雖然明白在邏輯XNIL數(shù)據(jù)模型上進(jìn)行的XML查詢,但是無論使用所提供的哪一個(gè)系統(tǒng),該執(zhí)行查詢本地?cái)?shù)據(jù)格式。這種方法用在關(guān)系數(shù)據(jù)庫中用于在SQL視圖上的SQL查詢。使用XML中間語言,例如QIL,初始潛在的復(fù)雜視圖可以分解為在更小原子數(shù)據(jù)上的查詢操作。這樣,復(fù)雜視圖的查詢變成在附加了簡單視圖的查詢上的查詢。查詢組合將此轉(zhuǎn)變?yōu)閮H僅在簡單視圖上的查詢,從而簡化了該問題。XML中間語言QIL提供(1)XML查詢和XML視圖的統(tǒng)一表達(dá),從而極大地簡化了查詢/視圖組合問題以及(2)將所有視圖視為″虛擬XML″,極大地簡化了該系統(tǒng)的接口。與每個(gè)可能語言和數(shù)據(jù)模型具有一個(gè)API相反,所有的API共享一個(gè)公用數(shù)據(jù)模型,XML中間語言QIL的操作符。連同輸入查詢的中間語言表達(dá)的使用,本發(fā)明公開了示范性的利用分布式體系結(jié)構(gòu)的體系結(jié)構(gòu),用于在多個(gè)數(shù)據(jù)源上處理查詢。一個(gè)真正的分布式體系結(jié)構(gòu)能夠在不同的執(zhí)行引擎上分配混合源查詢而不需要單片機(jī)來監(jiān)控工作。本發(fā)明示范的分布式查詢引擎流水線同時(shí)具有模塊化的能力,表現(xiàn)在新的或修改的執(zhí)行引擎可以被添加到體系結(jié)構(gòu)中去以適應(yīng)不同查詢需要。另外,為了正確的操作,所利用的執(zhí)行引擎不必被告知另一個(gè)查詢執(zhí)行引擎的工作。每個(gè)引擎可以在彼此頂端堆?;蚣?jí)聯(lián),同時(shí)在該鏈或級(jí)聯(lián)中,每個(gè)引擎僅僅處理并優(yōu)化該引擎所知道的部分查詢,并將其余的查詢傳遞到下一個(gè)引擎。示范性的計(jì)算裝置圖1及下面的描述意欲提供其中可實(shí)現(xiàn)本發(fā)明的合適計(jì)算環(huán)境的簡要概述。然而應(yīng)當(dāng)理解到,手提、便攜或其它計(jì)算裝置和所有種類的計(jì)算物均可與本發(fā)明結(jié)合使用。因此,雖然下面描述的是通通計(jì)算機(jī)(這僅僅是一個(gè)實(shí)例),但是本發(fā)明可以使用其他計(jì)算裝置來實(shí)現(xiàn),例如具有網(wǎng)絡(luò)/總線互操作性和交互的客戶端。因此,本發(fā)明可以在聯(lián)網(wǎng)的主機(jī)服務(wù)環(huán)境中實(shí)現(xiàn),其中包含很少或極少客戶端資源,例如,客戶裝置僅僅用作網(wǎng)絡(luò)環(huán)境中的網(wǎng)絡(luò)/總線接口,例如放入設(shè)備中的對(duì)象、或其他計(jì)算裝置和對(duì)象。根本上,根據(jù)本發(fā)明,凡是可以存儲(chǔ)或可以從中檢索數(shù)據(jù)的環(huán)境均是用于操作所需的或合適的環(huán)境。盡管不需要,本發(fā)明還可以通過操作系統(tǒng)來實(shí)現(xiàn),以由裝置或?qū)ο蠓?wù)的開發(fā)者使用,和/或包括在根據(jù)本發(fā)明操作的應(yīng)用軟件內(nèi)部。軟件可以在計(jì)算機(jī)可執(zhí)行指令例如程序模塊的一般上下文內(nèi)描述,由一個(gè)或多個(gè)計(jì)算機(jī),例如客戶工作站、服務(wù)器或其他裝置執(zhí)行。通常,程序模塊包括執(zhí)行特定任務(wù)、實(shí)現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。典型地,程序模塊的功能性可以在不同實(shí)施例中依照需要被結(jié)合或分配。而且,本領(lǐng)域技術(shù)人員將會(huì)理解到本發(fā)明可以在其他計(jì)算機(jī)配置中實(shí)踐。其他熟知的適合用于本發(fā)明的計(jì)算系統(tǒng)、環(huán)境和/或配置包括,但不局限于個(gè)人電腦(PC)、自動(dòng)出納機(jī)、服務(wù)器計(jì)算機(jī)、手提或膝上型裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、設(shè)備、光、環(huán)境控制元件、小型機(jī)、大型機(jī)等等。本發(fā)明也可在由遠(yuǎn)程處理裝置執(zhí)行任務(wù)的分布式計(jì)算環(huán)境中實(shí)踐,其中遠(yuǎn)程處理裝置通過通信網(wǎng)絡(luò)/總線或其他數(shù)據(jù)傳輸媒介進(jìn)行連接。在分布式計(jì)算環(huán)境中程序模塊可以同時(shí)位于包括存儲(chǔ)器存儲(chǔ)裝置的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)媒介中,并且客戶節(jié)點(diǎn)可以依次充當(dāng)服務(wù)器節(jié)點(diǎn)。圖1示出了本發(fā)明可以在其中實(shí)現(xiàn)的合適的計(jì)算系統(tǒng)環(huán)境100的實(shí)例,盡管如先前所解釋清楚的,該計(jì)算系統(tǒng)環(huán)境100僅僅是合適的計(jì)算環(huán)境的一個(gè)實(shí)例,并且不打算對(duì)本發(fā)明應(yīng)用或功能的范圍作出任何限定。該計(jì)算環(huán)境100也不應(yīng)當(dāng)解釋為具有與示范性操作環(huán)境100所示出的組件中任何一個(gè)或其組合相關(guān)的依賴或需求。參照?qǐng)D1,用于實(shí)現(xiàn)本發(fā)明的示范性系統(tǒng)包括為計(jì)算機(jī)系統(tǒng)110形式的通用計(jì)算裝置。計(jì)算機(jī)系統(tǒng)110的組件可以包括,但不局限于,處理單元120、系統(tǒng)存儲(chǔ)器130和系統(tǒng)總線121,該系統(tǒng)總線121將包括系統(tǒng)存儲(chǔ)器的不同系統(tǒng)組件耦合到處理單元120。該系統(tǒng)總線121可以是任何幾種類型的總線結(jié)構(gòu),包括使用任何一種總線體系結(jié)構(gòu)的存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線和本地總線。舉例來說,但不局限于,該體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)本地總線和周邊元件互連(PCI)總線(也稱為Mezzanine總線)。計(jì)算機(jī)系統(tǒng)110典型地包括各種計(jì)算機(jī)可讀媒介。計(jì)算機(jī)可讀媒介可以是可由計(jì)算機(jī)系統(tǒng)110訪問的任何可用媒介,包括易失和非易失媒介、可移除和不可移除媒介。舉例來說,而不作為限定,計(jì)算機(jī)可讀媒介可以包含計(jì)算機(jī)存儲(chǔ)媒介和通信媒介。計(jì)算機(jī)存儲(chǔ)媒介包括易失和非易失性、可移除和不可移除媒介,這些媒介可以以任何方法或技術(shù)來實(shí)現(xiàn),用于存儲(chǔ)信息例如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒介包括,但不局限于,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM)、閃速存儲(chǔ)器或其他存儲(chǔ)技術(shù)、只讀光盤存儲(chǔ)器(CDROM)、可重寫光盤(CDRW)、數(shù)字化視頻光盤(DVD)或其他光盤存儲(chǔ)器、磁盒、磁帶、磁盤存儲(chǔ)器或其他磁存儲(chǔ)器裝置、或可用于存儲(chǔ)所需信息和可以由計(jì)算機(jī)系統(tǒng)110訪問的任何其他媒介。通信媒質(zhì)典型地包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他為調(diào)制數(shù)據(jù)信號(hào)(例如載波的數(shù)據(jù))、或其他傳送機(jī)構(gòu)并且包括任何信息傳遞媒介。術(shù)語″調(diào)制數(shù)據(jù)信號(hào)″指具有一個(gè)或多個(gè)其特征集或在信號(hào)中以編碼信息方式變化的信號(hào)。舉例但不限定地說,通信媒介包括有線媒介例如有線網(wǎng)絡(luò)或直接有線連接和無線媒介例如聲、RF、紅外及其他無線媒介。任何上述的組合也包括在計(jì)算機(jī)可讀媒介范圍內(nèi)。系統(tǒng)存儲(chǔ)器130包括計(jì)算機(jī)存儲(chǔ)媒介,其為易失和/或非易失存儲(chǔ)器形式,例如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132。包含例如在啟動(dòng)期間,有助于在計(jì)算機(jī)系統(tǒng)110內(nèi)部元件之間傳遞信息的基本例程基本輸入/輸出系統(tǒng)133(BIOS)典型地保存在ROM131中。RAM132典型地包含可由處理單元120立即訪問和/或立刻操作的數(shù)據(jù)和/或程序模塊。舉例來說,而不限定,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。該計(jì)算機(jī)系統(tǒng)110也可以包括其他可移除/不可移除、易失/非易失計(jì)算機(jī)存儲(chǔ)媒介。僅僅舉例來說,圖1示出了讀寫到不可移除、非易失性磁媒介的硬盤驅(qū)動(dòng)器141、讀寫到可移除、非易失性磁盤152的磁盤驅(qū)動(dòng)器151和讀寫到可移除、非易失性光盤156的光盤驅(qū)動(dòng)器155,例如CDROM、CDRW、DVD或其他光媒介??捎糜谠撌痉缎圆僮鳝h(huán)境的其他可移除/不可移除、易失/非易失計(jì)算機(jī)存儲(chǔ)媒介包括(但不局限于),磁帶盒、閃存卡、數(shù)字化視頻光盤、數(shù)字視頻磁帶、固態(tài)RAM、固態(tài)ROM等等。該硬盤驅(qū)動(dòng)器141典型地經(jīng)由不可移除存儲(chǔ)器接口例如接口140連接到系統(tǒng)總線121,并且磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155典型地經(jīng)由可移除存儲(chǔ)器接口例如接口150連接到系統(tǒng)總線121。上述所描述的和在圖1中示出的驅(qū)動(dòng)器和他們相聯(lián)系的計(jì)算機(jī)存儲(chǔ)媒介為計(jì)算機(jī)系統(tǒng)110提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、及其他數(shù)據(jù)的存儲(chǔ)。例如,在圖1中所說明的硬盤驅(qū)動(dòng)器141存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146和程序數(shù)據(jù)147。注意,這些元件可以與操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136、和程序數(shù)據(jù)137相同或者不同。操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146、和程序數(shù)據(jù)147在此處被給予不同的數(shù)字以最小量的示出他們是不同的版本。用戶可以通過輸入裝置例如鍵盤162和指示設(shè)備161將命令和信息輸入到計(jì)算機(jī)系統(tǒng)110中,所述的指示設(shè)備161通常指鼠標(biāo)、跟蹤球或觸摸板。其他輸入裝置(未示出)可以包括麥克風(fēng)、操縱桿、游戲板、衛(wèi)星盤、掃描器等等。這些及其他輸入裝置經(jīng)常經(jīng)由耦合到系統(tǒng)總線121的用戶輸入接口160連接到處理單元120,還可以由其他接口和總線結(jié)構(gòu)例如并行端口、游戲端口或通用的串行總線(USB)進(jìn)行連接。監(jiān)視器191或其他類型顯示裝置也經(jīng)由接口例如視頻接口190連接到系統(tǒng)總線121,該視頻接口190可以依次與視頻存儲(chǔ)器(未示出)進(jìn)行通信。除監(jiān)視器191之外,計(jì)算機(jī)系統(tǒng)也可以包括其他的外圍輸出裝置,例如揚(yáng)聲器197和打印機(jī)196,它們可以經(jīng)由輸出外圍接口195進(jìn)行連接。該計(jì)算機(jī)系統(tǒng)110可以在使用邏輯連接到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)例如遠(yuǎn)程計(jì)算機(jī)180的網(wǎng)絡(luò)或分布式環(huán)境中操作。該遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人電腦、服務(wù)器、路由器網(wǎng)絡(luò)PC、對(duì)等裝置或其他公用網(wǎng)絡(luò)節(jié)點(diǎn),并且典型地包括許多或所有上面描述的相對(duì)于計(jì)算機(jī)系統(tǒng)110的元件,盡管在圖1中僅僅示出了存儲(chǔ)器裝置181。在圖1中顯示的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但是也可以包括其他網(wǎng)絡(luò)/總線。這樣的網(wǎng)絡(luò)環(huán)境常見于家庭、辦公室、企業(yè)計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)和互聯(lián)網(wǎng)。當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境時(shí),計(jì)算機(jī)系統(tǒng)110通過網(wǎng)絡(luò)接口或適配器170連接到LAN171。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境時(shí),計(jì)算機(jī)系統(tǒng)110典型地包括調(diào)制解調(diào)器172或用于在WAN173例如互聯(lián)網(wǎng)上建立通信的其他裝置??墒莾?nèi)置或外置的調(diào)制解調(diào)器172可以經(jīng)由用戶輸入接口160或其他合適的機(jī)構(gòu)連接到系統(tǒng)總線121。在網(wǎng)絡(luò)環(huán)境中,相對(duì)于計(jì)算機(jī)系統(tǒng)110或其部分顯示的程序模塊可以保存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中。舉例來說,而不限定,圖1示出了在存儲(chǔ)器裝置181上駐留的遠(yuǎn)程應(yīng)用程序185。應(yīng)當(dāng)理解到所示出的網(wǎng)絡(luò)連接是示范性的,并且也可以使用在計(jì)算機(jī)之間建立通信鏈路的其他方法。不同的分布式計(jì)算框架根據(jù)個(gè)人計(jì)算和互聯(lián)網(wǎng)的交叉已經(jīng)并正在發(fā)展著。個(gè)人和商業(yè)用戶同樣被提供了應(yīng)用和計(jì)算裝置的無縫共同操作的和Web使能的接口,使得面向Web瀏覽和面向網(wǎng)絡(luò)的計(jì)算活動(dòng)增加。例如從微軟公司,OneMicrosoftWay,Redmond,Washington98052,可獲得的MICROSOFT′s.NETTM平臺(tái)包括服務(wù)器、預(yù)制組件服務(wù)、例如基于Web的數(shù)據(jù)存儲(chǔ)和可下載的裝置軟件。當(dāng)此處示范性實(shí)施例結(jié)合駐留在計(jì)算裝置中的軟件進(jìn)行描述時(shí),本發(fā)明的一個(gè)或多個(gè)部分也可以經(jīng)由操作系統(tǒng)、應(yīng)用程序接口(API)或在任何協(xié)同處理器之間的″中間人″對(duì)象、顯示裝置和請(qǐng)求對(duì)象來實(shí)現(xiàn),使得根據(jù)本發(fā)明的操作可以經(jīng)由所有.NETTM的語言和服務(wù)并也在其它分布式計(jì)算框架內(nèi)被執(zhí)行、支持或訪問。示范性實(shí)施例圖2顯示了包含當(dāng)前發(fā)明一些方面的示范性系統(tǒng)體系結(jié)構(gòu)的框圖。示出了包括中間語言編譯器和分布式執(zhí)行引擎流水線的查詢體系結(jié)構(gòu)200。該體系結(jié)構(gòu)顯示了示范性的基本塊,這些基本塊被用來執(zhí)行接收、編譯、解釋和訪問數(shù)據(jù),用于在多個(gè)數(shù)據(jù)源和類型上查詢??梢允褂枚鄠€(gè)前端語言編譯器210,并且其一般是相關(guān)語言。例如,編譯器210可以是與XML或XML相關(guān)的標(biāo)準(zhǔn)一致的XML相關(guān)編譯器。該初始或輸入查詢可以從例如圖1所示的多個(gè)輸入裝置中任何一個(gè)接收或輸入。返回圖2,前端編譯器210可以接收查詢例如XML查詢、XML視圖、或其他涉及XML語言的查詢,以產(chǎn)生已編譯的輸入查詢含義的中間語言表達(dá)220。用于前端編譯器的實(shí)例語言類型包括XPath的W3C標(biāo)準(zhǔn)、XMLStylesheet語言(XSL)、XSLT、XML。附加的實(shí)例包括XML視圖編譯器及其它。在查詢及視圖語言和多目標(biāo)模型之間的中間語言抽象允許實(shí)際數(shù)據(jù),例如將來自MICROS0FT′s.NETTM的XML數(shù)據(jù)和虛擬XML數(shù)據(jù)用作數(shù)據(jù)源。如圖2所顯示產(chǎn)生的中間語言代表輸入查詢或視圖。同樣,因?yàn)樗遣樵兒x的明顯表達(dá),所以它也可以被定義為查詢中間語言(QIL)。該查詢中間語言可以被視為共同通過用于體系結(jié)構(gòu)200的所有查詢和視圖語言編譯器210的語義表達(dá)。例如,如果輸入編譯器在XML數(shù)據(jù)上操作,則QIL在多個(gè)不同目標(biāo)數(shù)據(jù)源(例如關(guān)系和非關(guān)系數(shù)據(jù))上使得多個(gè)不同XML查詢語言和視圖定義語言(例如XPath和XSLT)能夠抽象。同樣,QIL使得共用結(jié)構(gòu)支撐所有兼容的XML查詢語言。本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,在查詢體系結(jié)構(gòu)200中使用中間語言表達(dá)的優(yōu)點(diǎn)。內(nèi)部的每個(gè)操作都是明顯和無歧義的,優(yōu)選的是完全地將幫助生成QIL的前端編譯器從使用QIL的分布式查詢引擎流水線上分離。前面的實(shí)例表示了當(dāng)前發(fā)明一個(gè)上下文的實(shí)施例,當(dāng)前發(fā)明使用XML中間語言表達(dá)作為輸入輸入到分布式查詢引擎流水線。其他中間語言表達(dá)或直接基礎(chǔ)語言可以用作輸入輸入到本發(fā)明,例如作為實(shí)例,直接LDP、AD、XML或SQL語言查詢輸入來作幾個(gè)例子。中間語言表達(dá)220可以選擇性地是優(yōu)化的230,用于隨后階段更加有效的處理。圖2的優(yōu)化器僅作為當(dāng)前發(fā)明上下文提供,并且不嚴(yán)格需要。輸入查詢優(yōu)化的或未優(yōu)化的中間語言表達(dá)220可以提供到分布式查詢引擎流水線240。分布式查詢引擎流水線允許在不同數(shù)據(jù)源260上查詢。該流水線引擎將中間語言查詢分配到具有特定數(shù)據(jù)模型的執(zhí)行機(jī)器中。這允許查詢執(zhí)行由執(zhí)行機(jī)器來完成,該執(zhí)行引擎在特定數(shù)據(jù)模型內(nèi)最大化查詢效率。因此在流水線240內(nèi)的執(zhí)行引擎可以構(gòu)造為使得他們在每個(gè)支撐的數(shù)據(jù)源內(nèi),在與數(shù)據(jù)模塊相一致的數(shù)據(jù)源的基礎(chǔ)上有效工作。例如用于SQL數(shù)據(jù)庫源的執(zhí)行引擎可以在具有SQL數(shù)據(jù)庫管理系統(tǒng)的相關(guān)數(shù)據(jù)庫上查詢效率最優(yōu)化。在流水線內(nèi)的每個(gè)執(zhí)行引擎具有到其特定數(shù)據(jù)源的訪問250,該特定數(shù)據(jù)源承受其自身數(shù)據(jù)模型。分布式查詢引擎能夠在一個(gè)或多個(gè)數(shù)據(jù)源上查詢,該一個(gè)或多個(gè)數(shù)據(jù)源在各種查詢中具有一個(gè)或多個(gè)數(shù)據(jù)模型。當(dāng)執(zhí)行分布式查詢時(shí),流水線的執(zhí)行引擎通常產(chǎn)生為進(jìn)一步處理、存儲(chǔ)、顯示給用戶可用的查詢結(jié)果270,或者例如提供給隨后的軟件應(yīng)用。圖3表示了圖2中分布式查詢引擎流水線240的框圖。圖3顯示了分布式查詢引擎流水線的基本內(nèi)部體系結(jié)構(gòu)。該流水線由級(jí)聯(lián)或堆棧分析引擎310、320、330和執(zhí)行引擎370、380和390組成。應(yīng)當(dāng)指出圖3示出了三個(gè)分析引擎和三個(gè)執(zhí)行引擎,但是像小至兩個(gè)和多至N個(gè)的分析/執(zhí)行引擎對(duì)可以被級(jí)聯(lián)用于給定的流水線應(yīng)用。輸入查詢300由分析引擎A310接收。該引擎檢查查詢和找出查詢的部分,該查詢部分知道如何優(yōu)化或傳遞312到執(zhí)行引擎。分析引擎310去除識(shí)別部分并用占位符替換他們。從而該引擎310重寫查詢并將314帶有占位符的查詢均衡傳遞到分析引擎B320上。因此在該堆棧內(nèi)該引擎310將修改的查詢傳遞到下一引擎。分析引擎A310已識(shí)別的查詢的部分被編譯并被傳遞312到累加器340以保持編譯查詢部分(編譯查詢A)。請(qǐng)注意分析引擎A310不了解分析引擎B。引擎A提取它能識(shí)別的和能由特定執(zhí)行引擎處理的查詢部分,并且將查詢平衡傳遞出。堆棧中的下一分析引擎,若有的話,僅僅識(shí)別對(duì)應(yīng)于不同執(zhí)行引擎的查詢部分。分析引擎B320從引擎A接收修改后的查詢并識(shí)別修改后的查詢部分,這一部分能傳遞322到執(zhí)行引擎。然后分析引擎B去除該識(shí)別部分,編譯它,并將它傳送到保持已編譯查詢B的累加器350。然后分析引擎B320通過置換,用占位符、占位符識(shí)別和提取的部分來重寫它所收到的查詢。然后在該堆棧中該分析引擎320傳遞兩次修改的查詢324到下一引擎。分析引擎C330從引擎B接收該兩次修改的查詢并且識(shí)別該兩次修改的查詢部分可以傳遞332到執(zhí)行引擎。分析引擎C然后去除該識(shí)別部分,編譯它,并將它傳送到保持已編譯查詢C的累加器360。在實(shí)現(xiàn)分析引擎的更多層或階段的系統(tǒng)中,分析引擎C330可以通過置換,用占位符、它識(shí)別和提取的部分來重寫它所收到的查詢。在堆棧中,該分析引擎C320可以傳遞三次修改的查詢到下一引擎。因此明顯的分布式流水線分析引擎可以按所需級(jí)聯(lián)。編譯的查詢累加器340、350和360一起形成組合查詢。每個(gè)查詢部分(A、B和C)與在具有特定數(shù)據(jù)模型的數(shù)據(jù)源上有效執(zhí)行查詢的執(zhí)行引擎相聯(lián)系。例如,編譯查詢A340能夠由執(zhí)行引擎A390執(zhí)行。執(zhí)行引擎A能夠訪問250、具有對(duì)應(yīng)于與編譯查詢A一致的數(shù)據(jù)模型的至少一部分的一個(gè)或多個(gè)數(shù)據(jù)源260。由編譯查詢A、B和C組合形成的組合查詢340、350和360分別可以視為打包系列查詢。例如,編譯查詢C360是子查詢并是編譯查詢B350的一部分。因此,編譯查詢C由編譯查詢B打包。同樣地,編譯查詢B350是編譯查詢A340的子查詢并且編譯查詢B由編譯查詢A打包。應(yīng)當(dāng)指出,由編譯查詢A、B和C導(dǎo)致的編譯和嵌套或打包查詢是本發(fā)明有用的輸出,這些查詢輸出可以存儲(chǔ)用于將來使用。該存儲(chǔ)的查詢可以在相同或不同計(jì)算機(jī)上立即或延遲一段時(shí)間后執(zhí)行。為了執(zhí)行編譯查詢A、B和C的組合查詢組合,需要執(zhí)行引擎次序工作,這允許連續(xù)級(jí)別的包被打開。例如,為了編譯查詢A完全執(zhí)行,編譯查詢B應(yīng)該優(yōu)選被執(zhí)行。但是為了將編譯查詢B執(zhí)行到完全執(zhí)行,編譯查詢C應(yīng)該優(yōu)選被執(zhí)行。因此,打開包的順序優(yōu)選首先是最里邊的包,隨后是連續(xù)的更高級(jí)別的包。在圖3的實(shí)例中,編譯查詢C可以在編譯查詢B之前優(yōu)選執(zhí)行并且編譯查詢B可以在編譯查詢A之前優(yōu)選執(zhí)行。圖3的執(zhí)行引擎允許執(zhí)行的優(yōu)先權(quán)。執(zhí)行引擎C接收365最里邊的可執(zhí)行編譯查詢360。該執(zhí)行引擎C然后執(zhí)行它的編譯查詢。包含兼容數(shù)據(jù)模型的一個(gè)或多個(gè)數(shù)據(jù)源260、373和250被訪問。該數(shù)據(jù)源260返回372所需要的數(shù)據(jù)。然而,所提供的由分析引擎B320插入編譯查詢C中的占位符表明執(zhí)行引擎C需要附加信息來完成查詢結(jié)果。實(shí)質(zhì)上,執(zhí)行引擎C作為信息的外部源回叫375到執(zhí)行引擎B380,來完成編譯查詢C的執(zhí)行。由分析引擎B插入到編譯查詢C中的占位符回叫前一執(zhí)行引擎,好象它是外部數(shù)據(jù)源。執(zhí)行引擎B380接收來自執(zhí)行引擎C的呼叫。執(zhí)行引擎B然后輸入355編譯查詢B350。編譯查詢B的執(zhí)行通過訪問382和250、一個(gè)或多個(gè)數(shù)據(jù)源260來進(jìn)行。數(shù)據(jù)源260返回382所需的數(shù)據(jù)。然而,所提供的由分析引擎A310插入的編譯查詢B中的占位符表明執(zhí)行引擎B需要附加的信息來完成查詢結(jié)果。執(zhí)行引擎B作為信息的外部源回叫385到執(zhí)行引擎A390,來完成編譯查詢B的執(zhí)行。由分析引擎A插入到編譯查詢B中的占位符回叫前一執(zhí)行引擎,好象它是外部數(shù)據(jù)源。執(zhí)行引擎A390接收385來自執(zhí)行引擎B的呼叫。然后執(zhí)行引擎B輸入345編譯查詢B340。編譯查詢A的執(zhí)行通過訪問392和250、一個(gè)或多個(gè)數(shù)據(jù)源260來進(jìn)行。數(shù)據(jù)源260返回392所需的數(shù)據(jù)。在該實(shí)例中,在編譯查詢A內(nèi)有明顯插入的占位符,因此該查詢可以完全執(zhí)行。執(zhí)行引擎A提供編譯查詢A340結(jié)果到執(zhí)行引擎B。執(zhí)行引擎A已經(jīng)完成它對(duì)來自執(zhí)行引擎B的呼叫的響應(yīng)。收到來自執(zhí)行引擎A的查詢結(jié)果時(shí),執(zhí)行引擎B能夠完成它的編譯查詢B350的執(zhí)行。通過提供375從執(zhí)行引擎A所獲得的信息和它自身查詢結(jié)果到執(zhí)行引擎C,執(zhí)行引擎B然后響應(yīng)。執(zhí)行引擎B已經(jīng)完成它對(duì)來自執(zhí)行引擎C的呼叫的響應(yīng)。收到來自執(zhí)行引擎B的查詢結(jié)果時(shí),執(zhí)行引擎C能夠完成它的編譯查詢C360的執(zhí)行。通過提供395從執(zhí)行引擎B所獲得的信息和它自身查詢結(jié)果來形成初始輸入查詢300的完整結(jié)果,執(zhí)行引擎C然后響應(yīng)。圖4是相對(duì)于圖3描述的示范性過程的流程圖。該過程通過接收輸入查詢啟動(dòng)410。該查詢被提供到第一分析引擎,該第一分析引擎識(shí)別415對(duì)應(yīng)于執(zhí)行引擎和數(shù)據(jù)模型的一部分查詢。輸入查詢已識(shí)別部分被編譯用來執(zhí)行并被送到存儲(chǔ)位置420用于后面的恢復(fù)。然后該第一分析引擎可以重寫輸入查詢425來去除已識(shí)別部分并用占位符置換失去部分。該第一分析引擎然后可以傳遞重寫后的查詢430到下一分析引擎,用于處理查詢平衡。如果最后一個(gè)分析引擎到達(dá)435,則該過程可以改變。如果未到達(dá)在分析引擎級(jí)聯(lián)中最后一個(gè)分析引擎,那么通過下一分析引擎該過程繼續(xù)進(jìn)行階段440,識(shí)別該下一分析引擎能夠容納的重寫查詢部分。該過程繼續(xù)進(jìn)行,下一分析引擎如前面一樣走過識(shí)別415、編譯420、重寫425和傳送430步驟。如果該最后一個(gè)分析引擎已完成它的任務(wù)435,那么執(zhí)行階段開始445。優(yōu)選地,該執(zhí)行階段和被存儲(chǔ)的最后一個(gè)分析引擎編譯一起開始。該最后編譯也已知為最里面的編譯??蛇x地,該執(zhí)行可以與第一分析引擎編譯一起開始。圖4的流程圖構(gòu)建來顯示與最后一個(gè)分析引擎編譯一起開始的執(zhí)行,盡管本領(lǐng)域技術(shù)人員可以構(gòu)建第一分析引擎編譯用于開始執(zhí)行組合查詢的流程。應(yīng)當(dāng)指出,在執(zhí)行445開始的編譯查詢部分可以為系統(tǒng)可使用的輸出。在使用合適的執(zhí)行引擎的相同或不同系統(tǒng)上,該編譯查詢可以立刻執(zhí)行或者恢復(fù)用于后面的應(yīng)用。與最后一個(gè)分析引擎445編譯一起開始執(zhí)行,該對(duì)應(yīng)的執(zhí)行引擎可以回叫查詢450對(duì)應(yīng)編譯部分。該引擎執(zhí)行恢復(fù)的編譯查詢455。最初,在查詢中將會(huì)有占位符,其將告知執(zhí)行引擎為信息460進(jìn)行外部源呼叫。該外部源呼叫可以進(jìn)行465,并且來自下一級(jí)聯(lián)執(zhí)行引擎的數(shù)據(jù)將被請(qǐng)求。在該實(shí)例中,外部數(shù)據(jù)源為下一級(jí)聯(lián)執(zhí)行引擎。該下一引擎從存儲(chǔ)器中回叫它對(duì)應(yīng)的編譯查詢450并執(zhí)行查詢455。如果在執(zhí)行查詢中遇到占位符,該執(zhí)行引擎可以進(jìn)行產(chǎn)生外部源數(shù)據(jù)呼叫到下一級(jí)聯(lián)執(zhí)行引擎。指出該過程繼續(xù)從一個(gè)級(jí)聯(lián)執(zhí)行引擎移動(dòng)到下一個(gè),直到執(zhí)行引擎不再遇到外部源的占位符為止。如果在級(jí)聯(lián)中的執(zhí)行引擎沒有外部占位符,并因此沒有外部呼叫需要進(jìn)行,那么那個(gè)查詢的全部響應(yīng)可以被給出到呼叫執(zhí)行引擎470。然后在級(jí)聯(lián)中下一更高引擎對(duì)應(yīng)于它的下一更高執(zhí)行引擎呼叫,來收集或累加嵌套的查詢結(jié)果475。如果下一更高引擎也對(duì)應(yīng)于呼叫480,那么外部源呼叫的執(zhí)行移到下一執(zhí)行引擎485。然后下一執(zhí)行引擎發(fā)送它的查詢結(jié)果返回到呼叫引擎470來收集累加的查詢結(jié)果475。當(dāng)所有的外部數(shù)據(jù)呼叫完成時(shí),最里面的執(zhí)行引擎或者基礎(chǔ)引擎基本上已經(jīng)恢復(fù)所有更高等級(jí)執(zhí)行的所有結(jié)果,并累加全部查詢490的結(jié)果。在該點(diǎn)來自初始恢復(fù)輸入查詢410的查詢結(jié)果被累加并為下一過程可用或供用戶使用。上面講述過程的編碼實(shí)例在下面提供。例如設(shè)想如下查詢<prelisting-type="program-listing">  ‘AnXQuerycombiningrelationalandXMLoperators’  For$insqltable(“customers”)  wheresqlcolumn($i,‘CustomerID’)=‘ALFKI’  return  <Customerid=“{sqlcolumn($i,‘CustomerID’)}”  name=“{sqlcolumn($i,‘ContactName’)}”> ?。糘rderList>{  for$jinsqltable(“Orders”)  wheresqlcolumn($i,‘CustomerID’)=sqlcolumn($i,‘CustomerID’)  andposition($j)&gt;=3  return&lt;Orderid=”{sqlcolumn($J,‘OrderID’)}“/&gt;  }</OrderList>  </Customer></pre>該查詢將相關(guān)操作者例如對(duì)比列數(shù)值與XML操作符(例如位置)相組合。如果該查詢分成兩部分一部分使用SQL服務(wù)器引擎可以執(zhí)行并且另一部分使用XML引擎可以執(zhí)行。該XQuery可以編譯入QIL并隨后被分析為可由SQL服務(wù)器執(zhí)行的模式。通過去除那些模式、在虛擬XML文檔上用導(dǎo)航置換它們,該查詢隨后可以被重寫。再次,優(yōu)點(diǎn)為該操作實(shí)現(xiàn)了僅僅部分絕對(duì)需要的映射,并且盡可能多的查詢被推入SQL服務(wù)器。這可以通過從查詢中提取所有SQL服務(wù)器操作并在虛擬XML文檔上用導(dǎo)航置換它們而完成,例如如下<prelisting-type="program-listing">  for$iindocument(“virtual”)/root/X1  return ?。糃ustomerid=“{$i@CustomerID}“name=“{$i/@ContactName}“> ?。糘rderList>  {  for$jin$i/X2  wherepositio($j)>=3  return,Orderid={$j/@OrderID}/>  } ?。?OrderList> ?。?Customer></pre>應(yīng)當(dāng)注意,位置操作符留在適當(dāng)?shù)奈恢糜糜赬ML引擎執(zhí)行。置換SQL表格和列的該虛擬XML文檔在概念上等同于SQL查詢的結(jié)果‘ExtractedSQLpartsoftheXQuery,tobeexecutedbySQLServer’SELECTX1.CustomerID,X1.ContactName,X2.OrderIDFROMCustomersX1JOINOredersX2ONX1.CustomerID=X2.CustomerIDWHEREX1.CustomerID=‘ALFKI’FORXMLAUTO其提出的XML形式如下‘VirtualXMLdocument’&lt;root&gt;&lt;X1CustomerID=“ALFKI”ContactName=“MariaAnders”&gt;&lt;X2OrderID=“10643”/&gt;&lt;X2OrderID=“10692”/&gt;&lt;X2OrderID=“10702”/&gt;&lt;X2OrderID=“10835”/&gt;&lt;X2OrderID=“10952”/&gt;&lt;X2OrderID=“11011”/&gt;&lt;/X1&gt;&lt;/root&gt;然而,這僅僅在概念上是對(duì)的;事實(shí)上,沒有XML曾被建造。相反,普通的SQL查詢發(fā)送到SQL服務(wù)器來執(zhí)行結(jié)合和過濾,并且行組(rowset)結(jié)果通過客戶XPathNavigator接口作為虛擬XML暴露給XML引擎。如上所述,雖然結(jié)合不同計(jì)算裝置和網(wǎng)絡(luò)體系已經(jīng)描述了本發(fā)明的示范性實(shí)施例,基礎(chǔ)的概念也可以用于需要執(zhí)行查詢系統(tǒng)的任何計(jì)算裝置或系統(tǒng)中。因此,本發(fā)明的方法和系統(tǒng)可以應(yīng)用于不同應(yīng)用和裝置上。雖然此處選擇示范性編程語言、命名和實(shí)例作為不同選擇的表達(dá),這些語言、命名和實(shí)例并不意欲限定。本領(lǐng)域普通技術(shù)人員將會(huì)理解到存在多種方法提供結(jié)果代碼,該結(jié)果代碼獲得相同、相似或等同的本發(fā)明所獲得的系統(tǒng)和方法。此處描述的不同技術(shù)可以結(jié)合硬件或軟件或者在合適的地方兩者的結(jié)合來實(shí)現(xiàn)。因此,本發(fā)明的方法和設(shè)備或者其某些方法或部分,可以采取包含在有形媒介內(nèi)的程序代碼(例如指令)的形式,該有形媒介例如軟盤、CD-ROM、硬盤驅(qū)動(dòng)器或者任何其它機(jī)器可讀存儲(chǔ)媒介,其中當(dāng)程序代碼由機(jī)器例如計(jì)算機(jī)載入并執(zhí)行時(shí),該機(jī)器變成實(shí)踐本發(fā)明的設(shè)備。程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情況下,計(jì)算裝置一般包括處理器、由處理器可讀的存儲(chǔ)媒介(包括易失和非易失存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入裝置和至少一個(gè)輸出裝置。通過使用數(shù)據(jù)處理API等,利用本發(fā)明信號(hào)處理服務(wù)的一個(gè)或多個(gè)程序優(yōu)選以高等級(jí)程序上的或?qū)ο蠖ㄎ坏木幊陶Z言執(zhí)行,與計(jì)算機(jī)相通信。然而,如果需要,程序可以以裝置或機(jī)器語言來執(zhí)行。在任何情況下,該語言可以為編譯或解釋語言,并與硬件執(zhí)行指令結(jié)合。本發(fā)明的方法和設(shè)備也可以經(jīng)由為程序代碼形式包含的通信來實(shí)踐,該程序代碼在一些傳送媒介上傳送,例如在電線或電纜上、通過光纖、或經(jīng)由任何其它形式的傳送,其中當(dāng)程序代碼由機(jī)器獲得并載入和執(zhí)行時(shí),如上在示范性實(shí)施例中所描述的諸如EPROM、門陣列、可編程邏輯裝置(PLD)、客戶計(jì)算機(jī)、錄像機(jī)等,或者具有信號(hào)處理能力的接收機(jī)器都變成實(shí)踐本發(fā)明的設(shè)備。當(dāng)在通用目的的處理器上執(zhí)行時(shí),程序代碼與處理器相結(jié)合來提供專用設(shè)備,該專用設(shè)備進(jìn)行操作來激活本發(fā)明功能性。另外,結(jié)合本發(fā)明使用的任何存儲(chǔ)技術(shù)可以不變地為硬件和軟件的結(jié)合。雖然本發(fā)明結(jié)合不同圖形的優(yōu)選實(shí)施例進(jìn)行了描述,應(yīng)當(dāng)理解到可以使用其它類似的實(shí)施例或者對(duì)所描述的實(shí)施例進(jìn)行修改和添加,用于執(zhí)行與本發(fā)明相同的功能而不背離本發(fā)明。而且,尤其當(dāng)無線網(wǎng)絡(luò)裝置的數(shù)量繼續(xù)激增時(shí),應(yīng)當(dāng)重點(diǎn)指出預(yù)期有不同的計(jì)算機(jī)平臺(tái),包括手提裝置操作系統(tǒng)和其它應(yīng)用特定的操作系統(tǒng)。因此,本發(fā)明不應(yīng)當(dāng)局限于任何一個(gè)單獨(dú)的實(shí)施例,而應(yīng)當(dāng)根據(jù)附加的權(quán)利要求來構(gòu)造保護(hù)幅度和范圍。權(quán)利要求1.一種在一個(gè)或多個(gè)執(zhí)行引擎上分配查詢部分的方法,所述方法包括接收輸入查詢;用第一分析引擎識(shí)別可以由第一執(zhí)行引擎處理的輸入查詢部分;編譯輸入查詢的識(shí)別部分形成第一編譯部分;重寫輸入查詢以形成第一重寫查詢,其中該輸入查詢的識(shí)別部分從該輸入查詢中去除并由第一占位符置換;傳遞第一重寫查詢到第二分析引擎;用第二分析引擎識(shí)別可以由第二執(zhí)行引擎處理的第一重寫查詢部分;以及編譯第一重寫查詢的識(shí)別部分產(chǎn)生第二編譯部分,其中該輸入查詢在第一執(zhí)行引擎和第二執(zhí)行引擎上分配。2.如權(quán)利要求1所述的方法,進(jìn)一步包括重寫第一重寫查詢以形成第二重寫查詢,其中第一重寫查詢的識(shí)別部分從第一重寫查詢中去除并由第二占位符置換。3.如權(quán)利要求1所述的方法,其中重寫操作進(jìn)一步包括將第二編譯部分打包到輸入查詢的第一編譯部分中。4.如權(quán)利要求1所述的方法,其中第一編譯部分和第二編譯部分可以在不同數(shù)據(jù)源上執(zhí)行。5.如權(quán)利要求1所述的方法,其中第一分析引擎是基于結(jié)構(gòu)化查詢語言的引擎并且第二分析引擎是基于擴(kuò)展標(biāo)記語言的引擎。6.如權(quán)利要求1所述的方法,進(jìn)一步包括使用第二執(zhí)行引擎部分地執(zhí)行第二編譯部分形成第二中間結(jié)果和第一占位符的組合,其中第一占位符保持第二編譯部分的未執(zhí)行部分;從第二執(zhí)行引擎產(chǎn)生呼叫到第一執(zhí)行引擎,請(qǐng)求對(duì)應(yīng)于第一占位符的數(shù)據(jù);使用第一執(zhí)行引擎執(zhí)行第一編譯部分以形成對(duì)應(yīng)于第一占位符的第一中間結(jié)果并滿足呼叫;將第一中間結(jié)果提供到第二執(zhí)行引擎;以及用第一中間結(jié)果代替第一占位符形成第二中間結(jié)果和第一中間結(jié)果的組合,該第一中間結(jié)果包括組合的輸入查詢結(jié)果。7.如權(quán)利要求6所述的方法,其中第一執(zhí)行引擎和第二執(zhí)行引擎在包括不同數(shù)據(jù)模型的查詢上操作。8.如權(quán)利要求1所述的方法,進(jìn)一步包括使用第一執(zhí)行引擎部分地執(zhí)行第一編譯部分形成第一中間結(jié)果;從第一執(zhí)行引擎產(chǎn)生呼叫到第二執(zhí)行引擎,請(qǐng)求與輸入查詢未識(shí)別部分相對(duì)應(yīng)的數(shù)據(jù);使用第二執(zhí)行引擎執(zhí)行第二編譯部分以形成第二中間結(jié)果并滿足該呼叫;將第二中間結(jié)果提供給第一執(zhí)行引擎;以及將第一中間結(jié)果與第二中間結(jié)果組合以形成組合的輸入查詢結(jié)果。9.如權(quán)利要求8所述的方法,其中該第一執(zhí)行引擎和第二執(zhí)行引擎在包括不同數(shù)據(jù)模型的查詢上操作。10.一種用于對(duì)輸入查詢分配處理的系統(tǒng),所述的系統(tǒng)包括兩個(gè)或多個(gè)分析引擎,用于分離出能被編譯和執(zhí)行的輸入查詢部分;兩個(gè)或多個(gè)執(zhí)行引擎,用于對(duì)輸入查詢執(zhí)行操作;以及訪問一個(gè)或多個(gè)數(shù)據(jù)源,其中兩個(gè)或多個(gè)分析引擎操作獨(dú)立地識(shí)別和編譯輸入查詢的一個(gè)或多個(gè)部分,其中兩個(gè)或多個(gè)分析引擎中至少一個(gè)重寫該輸入查詢,以去除對(duì)應(yīng)于執(zhí)行引擎的輸入查詢部分,以及該兩個(gè)或多個(gè)執(zhí)行引擎處理輸入查詢的一個(gè)或多個(gè)編譯部分,使得來自于一個(gè)執(zhí)行引擎的部分查詢結(jié)果被傳遞到隨后的執(zhí)行引擎并被組合以形成整個(gè)輸入查詢結(jié)果。11.一種包含指令的計(jì)算機(jī)可讀媒介,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),在兩個(gè)或多個(gè)執(zhí)行引擎上執(zhí)行分配查詢部分的方法,該方法包括接收輸入查詢;用第一分析引擎識(shí)別可以由第一執(zhí)行引擎處理的輸入查詢部分;編譯輸入查詢的識(shí)別部分形成第一編譯部分;重寫輸入查詢以形成第一重寫查詢,其中該輸入查詢的識(shí)別部分從該輸入查詢中去除并由第一占位符置換;傳遞第一重寫查詢到第二分析引擎;用第二分析引擎識(shí)別可以由第二執(zhí)行引擎處理的第一重寫查詢部分;以及編譯第一重寫查詢的識(shí)別部分產(chǎn)生第二編譯部分,其中該輸入查詢在第一執(zhí)行引擎和第二執(zhí)行引擎上分配。12.如權(quán)利要求11所述的計(jì)算機(jī)可讀媒介,進(jìn)一步包括使用第二執(zhí)行引擎部分地執(zhí)行第二編譯部分形成第二中間結(jié)果和第一占位符的組合,其中第一占位符保持第二編譯部分的未執(zhí)行部分;從第二執(zhí)行引擎產(chǎn)生呼叫到第一執(zhí)行引擎,請(qǐng)求對(duì)應(yīng)于第一占位符的數(shù)據(jù);使用第一執(zhí)行引擎執(zhí)行第一編譯部分以形成對(duì)應(yīng)于第一占位符的第一中間結(jié)果并滿足呼叫;將第一中間結(jié)果提供到第二執(zhí)行引擎;以及用第一中間結(jié)果代替第一占位符形成第二中間結(jié)果和第一中間結(jié)果的組合,該第一中間結(jié)果包括組合的輸入查詢結(jié)果。13.如權(quán)利要求12所述的方法,其中第一執(zhí)行引擎和第二執(zhí)行引擎在包括不同數(shù)據(jù)模型的查詢上操作。14.如權(quán)利要求12所述的方法,其中第一編譯部分和第二編譯部分在不同數(shù)據(jù)源上執(zhí)行。15.如權(quán)利要求11所述的計(jì)算機(jī)可讀媒介,進(jìn)一步包括使用第一執(zhí)行引擎部分地執(zhí)行第一編譯部分形成第一中間結(jié)果;從第一執(zhí)行引擎產(chǎn)生呼叫到第二執(zhí)行引擎,請(qǐng)求與輸入未識(shí)別部分對(duì)應(yīng)的數(shù)據(jù);使用第二執(zhí)行引擎執(zhí)行第二編譯部分以形成第二中間結(jié)果并滿足該呼叫;將第二中間結(jié)果提供給第一執(zhí)行引擎;以及將第一中間結(jié)果與第二中間結(jié)果組合以形成組合的輸入查詢結(jié)果。16.如權(quán)利要求15所述的方法,其中第一分析引擎是基于結(jié)構(gòu)化查詢語言的引擎并且第二分析引擎是基于擴(kuò)展標(biāo)記語言的引擎。全文摘要一種分布式查詢引擎流水線體系結(jié)構(gòu),包括級(jí)聯(lián)的分析引擎,這些分析引擎接收輸入查詢并且每個(gè)識(shí)別能夠傳遞到執(zhí)行引擎的輸入查詢部分。每個(gè)階段重寫該輸入查詢以去除已識(shí)別的部分并用占位符置換它。在該級(jí)聯(lián)中,該重寫查詢向前送到下一分析引擎。每個(gè)引擎編譯它所識(shí)別的部分使得執(zhí)行引擎可以處理該部分。優(yōu)選的是從最后一個(gè)分析引擎編譯的查詢部分進(jìn)行執(zhí)行。對(duì)應(yīng)于最后一個(gè)分析引擎的執(zhí)行引擎執(zhí)行該查詢,并在級(jí)聯(lián)中為數(shù)據(jù)從前一部分對(duì)下一更高執(zhí)行引擎進(jìn)行訪問。該處理一直持續(xù)到來自輸入查詢的結(jié)果被完全收集。文檔編號(hào)G06F9/45GK1573756SQ20041006391公開日2005年2月2日申請(qǐng)日期2004年6月23日優(yōu)先權(quán)日2003年6月23日發(fā)明者T·F·普弗萊格,A·E·基姆巴爾,A·A·德塞申請(qǐng)人:微軟公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1