專利名稱:異構(gòu)源上的動(dòng)態(tài)分布式查詢執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng),尤其涉及動(dòng)態(tài)分布式查詢執(zhí)行。
背景技術(shù):
傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的一個(gè)基本問題在于從數(shù)據(jù)存儲(chǔ)中存在的未知數(shù)量的數(shù)據(jù)片段中導(dǎo)出有用的信息,數(shù)據(jù)存儲(chǔ)包括網(wǎng)絡(luò)可訪問的數(shù)據(jù)存儲(chǔ)或“云”數(shù)據(jù)存儲(chǔ)。一個(gè)障礙在于以下事實(shí),即,例如,數(shù)據(jù)存儲(chǔ)在采用不同的數(shù)據(jù)模型或方案的意義上是異構(gòu)的。因此數(shù)據(jù)是充裕的,而有用的信息很少。
發(fā)明內(nèi)容
下面呈現(xiàn)了簡化的發(fā)明內(nèi)容,以便提供對所公開主題的某些方面的基本概念。本發(fā)明內(nèi)容不是廣泛性的概觀。它并不旨在標(biāo)識(shí)關(guān)鍵/重要元素,也不旨在劃定所要求保護(hù)主題的范圍。其唯一目的是以簡化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更具體實(shí)施例的序言。簡而述之,本發(fā)明一般涉及對與來自多個(gè)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行交互的程序的執(zhí)行進(jìn)行優(yōu)化。每個(gè)數(shù)據(jù)源能以各種方式不同,尤其包括數(shù)據(jù)表示、數(shù)據(jù)檢索、變換能力以及性能特征等。這些不同可用來為程序確定有效的執(zhí)行策略。而且,在程序被執(zhí)行的同時(shí)按需執(zhí)行分析。為實(shí)現(xiàn)上述及相關(guān)目的,在此結(jié)合以下描述和附圖描述了所要求保護(hù)主題的某些說明性方面。這些方面指示可實(shí)踐本主題的各種方式,它們均落在所要求保護(hù)主題的范圍之內(nèi)。當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),本發(fā)明的其他優(yōu)點(diǎn)和新穎特征將變得顯而易見。
圖I是有效的程序執(zhí)行系統(tǒng)的框圖。圖2是代表性查詢處理器組件的框圖。圖3是代表性優(yōu)化組件的框圖。圖4是代表性數(shù)據(jù)提供器組件的框圖。圖5是有效地執(zhí)行與來自多個(gè)異構(gòu)源的數(shù)據(jù)進(jìn)行交互的程序的方法的流程圖。圖6是執(zhí)行與來自多個(gè)異構(gòu)源的數(shù)據(jù)進(jìn)行交互的程序的方法的流程圖。圖7是基于成本的程序優(yōu)化的方法的流程圖。圖8是成本變換方法的流程圖。
圖9是示出用于本發(fā)明各方面的合適操作環(huán)境的示意性框圖。
具體實(shí)施例方式以下詳細(xì)描述一般針對對一程序的執(zhí)行進(jìn)行優(yōu)化,該程序相對于多個(gè)不相關(guān)的異構(gòu)數(shù)據(jù)源與數(shù)據(jù)進(jìn)行交互(例如,讀、寫、變換等)。數(shù)據(jù)源能以許多方式不同,尤其包括數(shù)據(jù)表示、數(shù)據(jù)檢索、變換能力以及性能特征等。數(shù)據(jù)源間的這些不同可用來為總體程序確定有效的執(zhí)行策略。而且,在程序執(zhí)行期間,可以按需執(zhí)行或惰性地執(zhí)行分析。數(shù)據(jù)處理領(lǐng)域的相關(guān)工作包括結(jié)構(gòu)化查詢語言(SQL)分布式查詢引擎和語言集成的查詢(LINQ-to-SQL)。SQL分布式查詢引擎執(zhí)行整個(gè)查詢的全局分析(非按需),被約束在它所能支持的一組數(shù)據(jù)源(例如OLEDB-對象鏈接與嵌入數(shù)據(jù)庫 )中,并且使用用于分析外部SQL數(shù)據(jù)源能力和性能的一維模型。另一方面,LINQ-to-SQL是這樣一種技術(shù),該技術(shù)允許相對于SQL服務(wù)器的對程序的按需執(zhí)行,但卻不支持異構(gòu)數(shù)據(jù)源并且在不考慮程序?qū)傮w程序性能的影響的情況下將盡可能多的程序推向SQL服務(wù)器。盡管不限于此,本發(fā)明的各方面可以相對于數(shù)據(jù)集成(或mashup)工具而結(jié)合,該工具從多個(gè)異構(gòu)數(shù)據(jù)源(例如數(shù)據(jù)庫、逗號(hào)分隔值(CSV)文件、OData訂閱源等)提取數(shù)據(jù),以非尋常方式變換數(shù)據(jù),以及通過若干手段(例如,數(shù)據(jù)庫、OData訂閱源)公布數(shù)據(jù)。該工具允許非技術(shù)用戶能在他們所熟悉的圖形環(huán)境中創(chuàng)建復(fù)雜的數(shù)據(jù)查詢,同時(shí)使查詢語言例如向技術(shù)用戶完全地表達(dá)。此外,該工具可以鼓勵(lì)在存在動(dòng)態(tài)結(jié)果預(yù)覽的情況下復(fù)雜查詢或表達(dá)式的交互式構(gòu)建。為啟用這一高度交互式的功能,該工具尤其可以使用這里進(jìn)一步描述的優(yōu)化來快速獲得部分預(yù)覽結(jié)果?,F(xiàn)在參考附圖更詳細(xì)地描述本發(fā)明的各個(gè)方面,在全部附圖中用相似的標(biāo)記來指示相似或相應(yīng)的元素。然而應(yīng)該理解,附圖及其相關(guān)詳細(xì)描述不旨在將所要求保護(hù)的主題限于所公開的具體形式。相反,其意圖是覆蓋落在所要求保護(hù)主題的精神和范圍之內(nèi)的所有修改、等價(jià)物和替換的方案。首先參考圖1,示出了有效的程序執(zhí)行系統(tǒng)100。如圖所示,系統(tǒng)100包括與程序120通信上耦合的查詢處理器組件110,程序120包括指定了要在執(zhí)行(例如計(jì)算)時(shí)執(zhí)行的特定動(dòng)作的一組計(jì)算機(jī)可執(zhí)行指令。這里,程序120可涉及包括獲取、變換和生成數(shù)據(jù)等等的數(shù)據(jù)交互。盡管不限于此,程序120可以以通用功能性編程語言來指定。因此,程序120可以用表達(dá)式、查詢表達(dá)式或僅僅用例如標(biāo)識(shí)了一組要檢索的數(shù)據(jù)的任意復(fù)雜度的查詢來指定數(shù)據(jù)交互。如這里使用的,為了清楚和便于理解,程序120可以被簡稱為查詢、表達(dá)式或查詢表達(dá)式。然而,程序120不限于數(shù)據(jù)檢索動(dòng)作,而事實(shí)上可以指定實(shí)質(zhì)上任何類型的動(dòng)作(或換言之,計(jì)算)。查詢處理器組件110被配置成執(zhí)行(或評估)程序120 (或查詢),并且返回結(jié)果。按照本發(fā)明一方面,查詢處理器組件110可以被配置成聯(lián)合計(jì)算。換言之,程序120或其部分可被分發(fā)用于遠(yuǎn)程執(zhí)行。聯(lián)合允許對多個(gè)不相關(guān)的且通常非常不同的源和/或系統(tǒng)進(jìn)行透明集成,以允許統(tǒng)一交互。為此,程序可以被分割成適用于為遠(yuǎn)程執(zhí)行提交的多個(gè)子表達(dá)式,在遠(yuǎn)程執(zhí)行后,來自每個(gè)子表達(dá)式的結(jié)果被組合以產(chǎn)生最終結(jié)果。常規(guī)的分布式查詢系統(tǒng)處理多個(gè)執(zhí)行位置,但不理解可能存在不同的能力和成本。這樣的系統(tǒng)區(qū)分了本地和遠(yuǎn)程執(zhí)行,允許到多個(gè)位置的分發(fā),但假定遠(yuǎn)程位置是相同的或相似的。在這里的聯(lián)合模型中,這樣的假定被放寬到允許向任意外部方進(jìn)行分發(fā)。查詢處理器組件110可以與多個(gè)數(shù)據(jù)提供器組件130 (數(shù)據(jù)提供器組件I-數(shù)據(jù)提供器組件N,N是正整數(shù))和相應(yīng)的數(shù)據(jù)源140 (數(shù)據(jù)源I-數(shù)據(jù)源N,N是正整數(shù))進(jìn)行交互。數(shù)據(jù)提供器組件130可以被配置成在查詢處理器組件110連同程序120以及相關(guān)聯(lián)的數(shù)據(jù)源140之間提供橋梁。換言之,數(shù)據(jù)提供器組件130可以體現(xiàn)為一種適配器,該適配器允許與不同的數(shù)據(jù)源140(例如,數(shù)據(jù)庫、數(shù)據(jù)訂閱源、電子表格、文檔等)以及特定源提供的不同格式的數(shù)據(jù)(例如,文本、表格、HTML (超文本標(biāo)記語言)、XML (可擴(kuò)展標(biāo)記語言)等)進(jìn)行通信。更為具體地,數(shù)據(jù)提供器組件130可以從數(shù)據(jù)源140檢索數(shù)據(jù),并且將對數(shù)據(jù)的改變協(xié)調(diào)回?cái)?shù)據(jù)源140。此外,查詢處理器組件110可以采用異構(gòu)數(shù)據(jù)源140間的不同來確定對于程序120的有效評估方案或執(zhí)行策略,這些不同包括但不限于數(shù)據(jù)表示、數(shù)據(jù)檢索(如,完全查詢處理器、獲得機(jī)制(如讀文本文件)等)和變換能力、以及性能特征。而且,在程序被執(zhí)行的同時(shí),在存在優(yōu)化機(jī)會(huì)的程序120的各部分上,這樣的確定和相關(guān)分析可以按需執(zhí)行。例如,分析可被推遲,直到向程序的特定區(qū)段請求了結(jié)果且該特定區(qū)段可能被優(yōu)化。換言之,可以在運(yùn)行時(shí)惰性地執(zhí)行動(dòng)態(tài)分析,以確定總體程序相對于異構(gòu)數(shù)據(jù)源140的最優(yōu)執(zhí)行策略。通過推遲分析,可以確定表達(dá)式或子表達(dá)式定向一特定的數(shù)據(jù)源(如SQL服務(wù)器),并且可以基于特定數(shù)據(jù)源的成本和能力以及與數(shù)據(jù)源交互周圍的環(huán)境(例如,網(wǎng)絡(luò)等待時(shí)間)來作出決策。特定執(zhí)行策略的執(zhí)行可以產(chǎn)生相對于異構(gòu)數(shù)據(jù)源140執(zhí)行的輸出的操作代表。按照一實(shí)施例,可以返回一數(shù)據(jù)子集,例如作為結(jié)果的預(yù)覽。例如,可以返回和查詢匹配的數(shù)據(jù)的子集(諸如前一百個(gè)匹配的結(jié)果),而不是返回和查詢匹配的整個(gè)數(shù)據(jù)集合。因而,所請求的、發(fā)送的和作用于的數(shù)據(jù)量相對較小,從而允許迅速返回結(jié)果和后續(xù)交互(例如,下鉆)。圖2描述了代表性的查詢處理器組件110,查詢處理器組件110包括預(yù)處理組件210、變換組件220、優(yōu)化組件230和后退執(zhí)行組件240。預(yù)處理組件210被配置成對程序進(jìn)行標(biāo)準(zhǔn)化。換言之,程序可以從第一形式被映射至后續(xù)處理所預(yù)期和使用的第二標(biāo)準(zhǔn)形式。例如并且按照一個(gè)實(shí)施例,程序表達(dá)式、功能等在被調(diào)用時(shí),可以捕捉它們自身的描述以及它們的輸入并且將其發(fā)送至查詢處理器組件110供執(zhí)行。因而,預(yù)處理組件210可以配置有例如一組規(guī)則來對程序描述進(jìn)行標(biāo)準(zhǔn)化,或換言之,使描述符合可被查詢處理器組件110理解的標(biāo)準(zhǔn)。而且,預(yù)處理器組件可以被配置成在執(zhí)行前應(yīng)用一組通用優(yōu)化。例如,過濾器可以在連接操作之前而不是之后被移至執(zhí)行,以便減少執(zhí)行連接時(shí)涉及的數(shù)據(jù)量。按照一個(gè)實(shí)施例,可以組合地執(zhí)行標(biāo)準(zhǔn)化和通用優(yōu)化。例如,為標(biāo)準(zhǔn)化程序而應(yīng)用的規(guī)則也可以被構(gòu)造成執(zhí)行通用優(yōu)化。無論如何,最終結(jié)果將是可以被進(jìn)一步處理的經(jīng)標(biāo)準(zhǔn)化和通用優(yōu)化的程序。變換組件220可被配置成向數(shù)據(jù)提供器組件130請求信息,例如,關(guān)于數(shù)據(jù)源140是否能執(zhí)行程序的各個(gè)部分(例如,子表達(dá)式)。換言之,程序的指定從數(shù)據(jù)源獲取數(shù)據(jù)的各部分被定位,并且作出關(guān)于這種數(shù)據(jù)源能理解和執(zhí)行程序的多少部分的確定?;诮邮?到的信息,變換組件220可以對程序進(jìn)行變換以反映數(shù)據(jù)源能力。例如,程序的各部分或其中的表達(dá)式可以以系統(tǒng)方式被組合,以簡化表達(dá)式和改進(jìn)有效執(zhí)行。按照一個(gè)實(shí)施例,變換組件220可以對于數(shù)據(jù)源能力執(zhí)行功能性編程語言操作中的折疊(又稱為減少、累積、壓縮、注入)。優(yōu)化組件230被配置成根 據(jù)成本來為程序120選擇有效的執(zhí)行策略。簡言之,可以向程序應(yīng)用和不同的執(zhí)行策略相對應(yīng)的一組優(yōu)化,來產(chǎn)生等價(jià)的候選程序??梢韵蚝蜻x程序應(yīng)用成本,成本諸如和不同數(shù)據(jù)源的使用有關(guān)的成本,包括等待時(shí)間和說明各個(gè)源之間的差異的其他度量?;诔杀净蛱囟ǖ某杀灸P?,可以選擇候選程序之一作為最有效的(或最優(yōu)的)程序,因此確定了與這種優(yōu)化相關(guān)聯(lián)的執(zhí)行策略。查詢處理器組件110還可以包括被配置成執(zhí)行程序的全部或部分的后退執(zhí)行組件240。因此,后退執(zhí)行組件240可用于執(zhí)行程序中的未被其他數(shù)據(jù)源和/或相關(guān)系統(tǒng)處理的片段。而且,后退執(zhí)行組件240可被認(rèn)為是最初對于程序的全部或部分的可能的執(zhí)行目標(biāo),例如,在采用后退執(zhí)行組件240比將執(zhí)行分發(fā)至另一源/系統(tǒng)更為有效的情況下。換言之,后退執(zhí)行組件不需要僅僅是在程序不能在其他地方被執(zhí)行時(shí)使用的后備執(zhí)行組件。簡單返回至圖1,注意到如果數(shù)據(jù)源140錯(cuò)誤表達(dá)了其能力、或者如果數(shù)據(jù)源140的能力不同于數(shù)據(jù)源所屬的這類源預(yù)期的一組能力,則和該源相對應(yīng)的數(shù)據(jù)提供器130可以被配置成識(shí)別這一情況,例如在分發(fā)計(jì)算的失敗嘗試之際。在這一情況下,例如,數(shù)據(jù)提供器組件130或者可以增量地回退(roll back) 一組計(jì)算直到得出數(shù)據(jù)源140所能夠進(jìn)行的計(jì)算,或者完全地回退該計(jì)算使得與數(shù)據(jù)源140的交互不破壞任何計(jì)算。委托計(jì)算的增量式回復(fù)和批量回復(fù)間的選擇可以是優(yōu)化策略的結(jié)果,因?yàn)閿?shù)據(jù)源140對于它所認(rèn)為不適當(dāng)?shù)挠?jì)算請求不同地響應(yīng)。例如,數(shù)據(jù)源140可以在接收到預(yù)定數(shù)量的壞請求后開始拒絕請求。然而,增量委托或者委托的嘗試一般會(huì)得到有效的計(jì)算。注意到圖2,數(shù)據(jù)提供器組件130所回退的任何計(jì)算可由后退執(zhí)行組件240處理。然而,一旦后退執(zhí)行組件240被通知到能力缺陷或回退,它就可以被配置成為有效執(zhí)行的目的而向另一數(shù)據(jù)源140分發(fā)全部工作或一部分工作。更進(jìn)一步,查詢處理器組件110包括被配置成基于所保存的數(shù)據(jù)、信息等方便執(zhí)行的高速緩存組件250。例如,高速緩存組件250可以本地地高速緩存之前獲取的數(shù)據(jù)供后續(xù)使用。而且,可以采用優(yōu)先高速緩存來預(yù)取預(yù)計(jì)可能被采用的數(shù)據(jù)。例如,可以擴(kuò)展查詢以返回附加數(shù)據(jù)。更進(jìn)一步,高速緩存組件250可以生成對于遠(yuǎn)程執(zhí)行環(huán)境的已存儲(chǔ)過程等,來允許對流行數(shù)據(jù)的迅速訪問。而且,高速緩存組件250可以存儲(chǔ)和執(zhí)行錯(cuò)誤或失敗有關(guān)的信息,以允許生成后續(xù)執(zhí)行策略來考慮這一信息。注意到圖3,更詳細(xì)地描繪了代表性優(yōu)化組件230。如圖所示,優(yōu)化組件230包括成本標(biāo)準(zhǔn)化組件310。由于本發(fā)明的系統(tǒng)考慮了異構(gòu)數(shù)據(jù)源,因此可以采用標(biāo)準(zhǔn)的(或規(guī)范的)成本模型來允許在多個(gè)數(shù)據(jù)模型/方案等之間進(jìn)行比較。換言之,第一數(shù)據(jù)源特定格式的成本信息可被轉(zhuǎn)換成第二標(biāo)準(zhǔn)格式,以允許同時(shí)在不同的源上進(jìn)行推理。成本標(biāo)準(zhǔn)化組件310將接收到的、檢索到的或以其他方式確定的成本或者關(guān)于數(shù)據(jù)源的推斷映射至標(biāo)準(zhǔn)成本表示。例如,等待時(shí)間和吞吐量度量在數(shù)據(jù)源間可以是不同的,并且由成本標(biāo)準(zhǔn)化組件310標(biāo)準(zhǔn)化為標(biāo)準(zhǔn)形式,以允許成本在數(shù)據(jù)源間的“同類型”比較。成本導(dǎo)出組件320可以被配置成生成從已知成本信息得到的附加成本信息。更為具體的,成本模型可以從多個(gè)因子的加權(quán)計(jì)算中得到,多個(gè)因子包括但不限于,每計(jì)算周期的時(shí)間、貨幣成本,每數(shù)據(jù)傳輸?shù)呢泿懦杀荆虮U娑?例如,信息損失或維持)。而且,可以相對于多個(gè)因子或不同的成本模型來支持約束條件,例如以允許確定收支差額。例如,約束條件可以指定允許執(zhí)行在接下來十五分鐘內(nèi)完成的最小貨幣費(fèi)用。規(guī)則組件330可以被配置成向程序的可應(yīng)用部分應(yīng)用一個(gè)或多個(gè)優(yōu)化規(guī)則的集合,以生成多個(gè)等價(jià)程序或換言之候選程序。這樣的規(guī)則可以是有點(diǎn)推測的,因?yàn)椴恢滥膫€(gè)候選是最佳的。例如,不知道使用嵌套循環(huán)連接還是排序合并連接還是索引連接才是最佳的。而且,不知道將數(shù)據(jù)從一個(gè)源拉出并且將數(shù)據(jù)推至另一個(gè)源和例如本地地拉兩個(gè)數(shù)據(jù)集相比是否更好。成本分析組件340被配置成計(jì)算與每個(gè)等價(jià)候選程序相關(guān)聯(lián)的預(yù)期成本,并且根據(jù)所計(jì)算的成本來標(biāo)識(shí)候選程序之一。更具體地,成本分析組件340可以被配置成基于成本模型來分析等價(jià)候選程序的有效性,并且選擇最有效的候選程序,從而選擇執(zhí)行策略。
注意到圖4,更詳細(xì)地示出了代表性數(shù)據(jù)提供器組件130。如前所述,數(shù)據(jù)提供器組件130可以在查詢處理器組件110以及程序120和特定數(shù)據(jù)源140之間提供橋梁。包括了成本估計(jì)器組件410和能力組件420。成本估計(jì)器組件410可以被配置成提供和與特定數(shù)據(jù)源的交互相關(guān)聯(lián)的預(yù)期成本的估計(jì)。按照一個(gè)實(shí)施例,成本估計(jì)器組件410可以向數(shù)據(jù)源相關(guān)的系統(tǒng)請求成本信息。例如,數(shù)據(jù)庫管理系統(tǒng)維持可以在請求時(shí)返回的成本信息和執(zhí)行計(jì)劃。另外的或另選的,成本估計(jì)器組件可以觀察與數(shù)據(jù)源的歷史交互,以及關(guān)于交互的記錄信息。然后可以分析這一記錄的信息以確定或推斷和等待時(shí)間、響應(yīng)時(shí)間等相對應(yīng)的成本估計(jì)。 能力組件420可以被配置成標(biāo)識(shí)數(shù)據(jù)源能力。類似于成本估計(jì)器組件410,可以采用兩個(gè)實(shí)施例。首先,能力組件420可以向數(shù)據(jù)源和/或相關(guān)系統(tǒng)(在被啟用時(shí))請求標(biāo)識(shí)能力。另外地或另選地,能力組件420可以觀察和分析與數(shù)據(jù)源的交互以確定或推斷源能力。數(shù)據(jù)提供器組件130還可便于與各種不同源進(jìn)行交互,各種不同源包括那些具有不同的數(shù)據(jù)檢索能力的源。例如,對于像可執(zhí)行查詢的數(shù)據(jù)庫這樣的可查詢數(shù)據(jù)源,編譯器組件430可以被配置成將程序或其部分從標(biāo)準(zhǔn)形式變換成可被數(shù)據(jù)源接受的或?qū)?shù)據(jù)源本機(jī)的形式。隨后,程序可以被提供至數(shù)據(jù)源并由其執(zhí)行。例如,程序表達(dá)式可以被變換成結(jié)構(gòu)化查詢語言,并且被提供在相關(guān)數(shù)據(jù)庫上執(zhí)行。按照不能執(zhí)行查詢的不可查詢數(shù)據(jù)源,諸如文本、逗號(hào)分隔值文件和超文本標(biāo)記語言(HTML)源,可以用例如串行化組件440獲取數(shù)據(jù)。串行化組件440被配置成便于串行化和去串行化,以允許數(shù)據(jù)被檢索并且在數(shù)據(jù)上執(zhí)行操作。例如,所標(biāo)識(shí)的數(shù)據(jù)可以被串行化、被發(fā)送至數(shù)據(jù)提供器組件130、并且被去串行化供使用。而且,這樣的數(shù)據(jù)可以被串行化以便于傳輸供遠(yuǎn)程執(zhí)行。應(yīng)該理解,可以將程序的全部或部分分發(fā)給任何計(jì)算引擎等,不僅僅是查詢處理器。因而,編譯器組件430可以定向任何計(jì)算引擎。例如但不限制,考慮程序包括矩陣計(jì)算的情況。在該情況下,與相關(guān)數(shù)據(jù)庫相關(guān)聯(lián)的查詢處理器可能不是執(zhí)行程序的最佳選擇。相反,專攻高性能科學(xué)計(jì)算的弓I擎會(huì)是較佳的目標(biāo)。而且,查詢處理器組件110或類似的計(jì)算引擎可以利用冗余數(shù)據(jù)。通常,相同的數(shù)據(jù)可以被主存在多個(gè)數(shù)據(jù)存儲(chǔ)中。之前,這一描述集中在基于各成本來確定執(zhí)行策略,所述成本包括與數(shù)據(jù)存儲(chǔ)交互并可能選擇最便宜的單個(gè)數(shù)據(jù)存儲(chǔ)的成本。然而,也可以采用另一方法,其中數(shù)據(jù)是向多個(gè)數(shù)據(jù)存儲(chǔ)請求的,并且從第一存儲(chǔ)使用以返回?cái)?shù)據(jù)。例如,數(shù)據(jù)可以向兩個(gè)最便宜的源請求。例如,首先接收到的數(shù)據(jù)可在比較中使用而其他數(shù)據(jù)可在比較中被忽略或使用,以確定接收到正確數(shù)據(jù)。參考若干組件之間的交互已經(jīng)描述了上述系統(tǒng)、架構(gòu)、環(huán)境等。應(yīng)該理解,這樣的系統(tǒng)和組件可以包括其中指定的那些組件或子組件,某些指定的組件或子組件,和/或附加的組件。子組件也可以被實(shí)現(xiàn)為在通信上被耦合到其他組件而不是被包括在父組件中的組件。此外,一個(gè)或多個(gè)組件和/或子組件可以組合成提供聚集功能的單個(gè)組件。系統(tǒng)、組件、和/或子組件之間的通信可以根據(jù)推送(push)或拉取(pull)模型來實(shí)現(xiàn)。各組件也可以與一個(gè)或多個(gè)其他組件進(jìn)行交互,出于簡要考慮在此未具體描述其他組件,但本領(lǐng)域的技術(shù)人員均已知。此外,以上公開系統(tǒng)以及以下方法的各個(gè)部分可以包括或包含人工智能、機(jī)器學(xué)習(xí)或基于知識(shí)或規(guī)則的組件、子組件、過程、手段、方法或機(jī)制(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯置信網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎、分類器...)。這樣的組件和其它 組件可以自動(dòng)化其執(zhí)行的某些機(jī)制或過程,由此使得系統(tǒng)和方法的各部分更為自適應(yīng)以及高效及智能。作為示例而非限制,查詢處理器組件110可使用這樣的機(jī)制來確定或推導(dǎo)執(zhí)行策略??紤]到以上描述的示例性系統(tǒng),參考圖5-9的流程圖將可以更好地理解根據(jù)所公開的主題實(shí)現(xiàn)的方法。盡管為了說明簡潔起見,按照一系列框示出和描述了方法,但是,應(yīng)該理解和知道,所要求保護(hù)的主題不限于框的順序,因?yàn)橐恍┛蚩梢园磁c此處所描繪和描述的不同的順序進(jìn)行和/或與其它框并發(fā)地進(jìn)行。此外,并非全部所示出的框都是實(shí)現(xiàn)下面所描述的方法所必需的。圖5示出有效地執(zhí)行與來自多個(gè)源的數(shù)據(jù)進(jìn)行交互的程序的方法500。在附圖標(biāo)記510,標(biāo)識(shí)多個(gè)數(shù)據(jù)源和/或相關(guān)系統(tǒng)的能力。在附圖標(biāo)記520,標(biāo)識(shí)數(shù)據(jù)源成本。例如,可以向與相應(yīng)的數(shù)據(jù)源相關(guān)聯(lián)的數(shù)據(jù)提供器請求能力和成本信息。在附圖標(biāo)記530,根據(jù)能力和成本動(dòng)態(tài)地確定程序的執(zhí)行計(jì)劃或策略。隨后在附圖標(biāo)記540,基于執(zhí)行計(jì)劃對于一個(gè)或多個(gè)數(shù)據(jù)源開始動(dòng)作的執(zhí)行。在附圖標(biāo)記550,按需合并由一個(gè)或多個(gè)數(shù)據(jù)源提供的結(jié)果以產(chǎn)生最終結(jié)果。圖6描述了執(zhí)行與來自多個(gè)源的數(shù)據(jù)進(jìn)行交互的程序的方法600。在附圖標(biāo)記610,可以預(yù)先處理與數(shù)據(jù)消費(fèi)相關(guān)聯(lián)的程序或其部分。換言之,程序可以從第一形式映射至第二標(biāo)準(zhǔn)形式。在標(biāo)準(zhǔn)化的一個(gè)特定實(shí)施例中,程序功能、操作等等可以包括它們自己的描述,諸如它們?nèi)绾伪徽{(diào)用以及它們的輸入變量,從而允許由例如查詢處理器進(jìn)行后續(xù)分發(fā)和遠(yuǎn)程執(zhí)行。而且,可以采用預(yù)處理來將程序變換成更有效的程序。例如,過濾器可以在連接操作前被移至操作,以便使被連接的數(shù)據(jù)量最小化。在附圖標(biāo)記620,標(biāo)識(shí)了向數(shù)據(jù)源請求數(shù)據(jù)的程序的各部分或各區(qū)段。在附圖標(biāo)記630,標(biāo)識(shí)了可以滿足請求的至少一部分的源。注意到不止一個(gè)源可以能夠滿足請求或其部分。在附圖標(biāo)記640,根據(jù)成本來確定最優(yōu)執(zhí)行策略,在一個(gè)示例中在運(yùn)行時(shí)動(dòng)態(tài)地確定。換言之,可以選擇一策略來最有效地執(zhí)行程序,包括將在何處執(zhí)行程序。在附圖標(biāo)記650,可以按照策略來開始遠(yuǎn)程執(zhí)行。在附圖標(biāo)記660,開始程序的非遠(yuǎn)程執(zhí)行的一個(gè)或多個(gè)部分的本地執(zhí)行。在附圖標(biāo)記670,從不同源獲取的結(jié)果被適當(dāng)?shù)亟M合并返回。按照一個(gè)實(shí)施例,可以在預(yù)覽中返回結(jié)果的子集。
圖7示出基于成本的程序優(yōu)化的方法700。在附圖標(biāo)記710,標(biāo)識(shí)了候選執(zhí)行策略。這樣的策略可以通過將一組優(yōu)化規(guī)則推測性地應(yīng)用于程序的可應(yīng)用部分來標(biāo)識(shí),從而生成多個(gè)等價(jià)程序或候選程序。在附圖標(biāo)記720,確定與候選執(zhí)行策略(以及尤其是候選程序)相關(guān)聯(lián)的成本。這樣的成本可以從數(shù)據(jù)源或相關(guān)系統(tǒng)獲取,或者從以前的交互確定或推斷。在附圖標(biāo)記730,根據(jù)成本來選擇候選執(zhí)行策略。按照一方面,可以采用允許在異構(gòu)源(例如,不同的數(shù)據(jù)模型/方案)間比較成本的標(biāo)準(zhǔn)成本模型。這里,成本模型是指抽象地描述與數(shù)據(jù)進(jìn)行交互的成本的實(shí)體。例如,基于時(shí)間的列表成本模型包括最初創(chuàng)建列表的成本、以及檢索列表中的各項(xiàng)的按項(xiàng)成本。而且,應(yīng)當(dāng)理解,可以采用從多個(gè)因子的加權(quán)計(jì)算得出的成本模型。圖8是描述對多個(gè)異構(gòu)數(shù)據(jù)源的成本分析的方法800的流程圖。在附圖標(biāo)記810,確定與多個(gè)數(shù)據(jù)源相關(guān)聯(lián)的成本。這樣的成本可以為每個(gè)不同的數(shù)據(jù)源不同地表示。在附圖標(biāo)記820,成本可以被映射(或變換)至對所有數(shù)據(jù)源通用的標(biāo)準(zhǔn)表示。然后在附圖標(biāo)記830分析經(jīng)標(biāo)準(zhǔn)化的成本,例如以確定有效的執(zhí)行策略。在一個(gè)實(shí)例中,可以對數(shù)據(jù)集成工具采用本發(fā)明公開內(nèi)容的各方面??梢允褂迷摴ぞ邅韽亩鄠€(gè)異構(gòu)源獲取數(shù)據(jù)并且執(zhí)行數(shù)據(jù)整形,或換言之,數(shù)據(jù)操縱、變換或過濾。例如但非限制,信息工作者(IW)可以采用諸如電子表格應(yīng)用這樣的可選應(yīng)用,工具從該應(yīng)用向信息工作者提供了獲取和整形數(shù)據(jù)的新體驗(yàn),他們?nèi)缓罂梢詫@取和整形數(shù)據(jù)的結(jié)果導(dǎo)入到他們的所選應(yīng)用中和/或?qū)С鲋羷e處。此處使用的術(shù)語“組件”和“系統(tǒng)”及其各種形式旨在表示與計(jì)算機(jī)相關(guān)的實(shí)體,其可以是硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是但不限于是,在處理器上運(yùn)行的進(jìn)程、處理器、對象、實(shí)例、可執(zhí)行程序、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用和計(jì)算機(jī)都可以是組件。一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行線程中,并且組件可以位于一個(gè)計(jì)算機(jī)內(nèi)和/或分布在兩個(gè)或更多計(jì)算機(jī)之間。在本文中使用的詞語“示例性”或其各種形式意味著用作示例、實(shí)例或說明。在此被描述為“示例性”的任何方面或設(shè)計(jì)并不一定要被解釋為相比其它方面或設(shè)計(jì)更優(yōu)選或有利。此外,各示例只是出于清楚和理解的目的來提供的并且并不意味著以任何方式限制或約束所要求保護(hù)主題或本發(fā)明的相關(guān)部分??梢岳斫?,本來可呈現(xiàn)不同范圍的多個(gè)附加或替換示例,但出于簡明的目的已被省略。如此處所使用,術(shù)語“推論”或“推斷”通常指的是從經(jīng)由事件和/或數(shù)據(jù)捕捉的一組觀察結(jié)果來推理或推斷系統(tǒng)、環(huán)境、和/或用戶狀態(tài)的過程??梢允褂猛茢鄟順?biāo)識(shí)特定上下文或動(dòng)作,也可以生成例如狀態(tài)上的概率分布。推斷可以是概率性的,即,基于對數(shù)據(jù)和事件的考慮,計(jì)算在感興趣狀態(tài)上的概率分布。推斷也可以是指用于從一組事件和/或數(shù)據(jù)構(gòu)成較高級(jí)別的事件的技術(shù)。這樣的推斷導(dǎo)致從一組觀察到的事件和/或存儲(chǔ)的事件數(shù)據(jù)構(gòu)建新的事件或動(dòng)作,不管事件在時(shí)間上是否緊密相關(guān),以及事件和數(shù)據(jù)是來自一個(gè) 還是多個(gè)事件和數(shù)據(jù)源。可采用各種分類方案和/或系統(tǒng)(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎……)來執(zhí)行關(guān)于所要求保護(hù)的主題的自動(dòng)化和/或推斷的動(dòng)作。而且,對于在詳細(xì)描述或權(quán)利要求書中使用術(shù)語“包括”、“包含”、“具有”、“含有”或其它形式的變型而言,這樣的術(shù)語旨在以類似于術(shù)語“包括”的方式體現(xiàn)包含性,如同“包括”在用作權(quán)利要求書中的過渡詞時(shí)所解釋的那樣。為了為所要求保護(hù)主題提供上下文,圖9以及以下討論旨在提供對其中可以實(shí)現(xiàn)本主題的各方面的合適環(huán)境的簡要、概括描述。然而,合適的環(huán)境只是示例并且并非旨在對使用范圍或功能提出任何限制。盡管能夠在可以在一臺(tái)或多臺(tái) 計(jì)算機(jī)上運(yùn)行的程序的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述以上公開的系統(tǒng)和方法,但是,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,各方面也可以與其他程序模塊等相結(jié)合地實(shí)現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件和數(shù)據(jù)結(jié)構(gòu)等。此外,本領(lǐng)域技術(shù)人員可以理解,上述系統(tǒng)和方法可用各種計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括單處理器、多處理器或多核處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理(PDA)、電話、手表……)、基于微處理器或可編程消費(fèi)或工業(yè)電子設(shè)備等。各方面也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。然而,所要求保護(hù)主題的某些方面,如果不是所有方面的話,可以在獨(dú)立計(jì)算機(jī)上實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中的一個(gè)或兩者中。參考圖9,示出了示例通用計(jì)算機(jī)910或計(jì)算設(shè)備(例如,臺(tái)式機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、手持式設(shè)備、可編程消費(fèi)或工業(yè)電子產(chǎn)品、機(jī)頂盒、游戲系統(tǒng)……)。計(jì)算機(jī)910包括一個(gè)或多個(gè)處理器920、存儲(chǔ)器930、系統(tǒng)總線940、大容量存儲(chǔ)950、以及一個(gè)或多個(gè)接口組件970。系統(tǒng)總線940與至少上述系統(tǒng)組件通信地耦合。然而,可以理解,在其最簡單的形式中,計(jì)算機(jī)910可包括耦合到存儲(chǔ)器930的一個(gè)或多個(gè)處理器920,該一個(gè)或多個(gè)處理器920執(zhí)行存儲(chǔ)在存儲(chǔ)器930中的各種計(jì)算機(jī)可執(zhí)行動(dòng)作、指令和/或組件。處理器920可以用通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯器件、分立門或晶體管邏輯、分立硬件組件或被設(shè)計(jì)為執(zhí)行此處描述的功能的其任意組合來實(shí)現(xiàn)。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器920還可被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如DSP和微處理器的組合、多個(gè)微處理器、多核處理器、結(jié)合DSP核的一個(gè)或多個(gè)微處理器、或任何其它這種配置。計(jì)算機(jī)910可包括各種計(jì)算機(jī)可讀介質(zhì)或以其他方式與各種計(jì)算機(jī)可讀介質(zhì)交互以便于控制計(jì)算機(jī)910來實(shí)現(xiàn)所要求保護(hù)主題的一個(gè)或多個(gè)方面。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī)910訪問的任何可用介質(zhì),并包含易失性和非易失性介質(zhì)以及可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)……)、磁存儲(chǔ)設(shè)備(例如,硬盤、軟盤、磁帶盒、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)……)、以及固態(tài)設(shè)備(例如,固態(tài)驅(qū)動(dòng)器(SSD)、閃存驅(qū)動(dòng)器(例如,卡、棒、鍵驅(qū)動(dòng)器……)……)、或者可用于存儲(chǔ)所需信息并且可由計(jì)算機(jī)910訪問的任何其他介質(zhì)。通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”是指具有以在信號(hào)中編碼信息的方式被設(shè)定或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。存儲(chǔ)器930和大容量存儲(chǔ)950是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例。取決于計(jì)算設(shè)備的確切配置和類型,存儲(chǔ)器930可以是易失性的(例如RAM)、非易失性的(例如ROM、閃
存......)或是兩者的某種組合。作為示例,包括諸如在啟動(dòng)期間在計(jì)算機(jī)910內(nèi)的元件之
間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)可被存儲(chǔ)在非易失性存儲(chǔ)器中,而易失性存儲(chǔ)器可擔(dān)當(dāng)外部高速緩存存儲(chǔ)器以便于處理器920的處理等。
大容量存儲(chǔ)950包括相對于存儲(chǔ)器930用于存儲(chǔ)大量數(shù)據(jù)的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。例如,大容量存儲(chǔ)950包括但不限于,諸如磁盤或光盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、閃存存儲(chǔ)器、固態(tài)驅(qū)動(dòng)器、或記憶棒的一個(gè)或多個(gè)設(shè)備。存儲(chǔ)器930和大容量存儲(chǔ)950可包括或其中存儲(chǔ)有操作系統(tǒng)960、一個(gè)或多個(gè)應(yīng)用962、一個(gè)或多個(gè)程序模塊964和數(shù)據(jù)966。操作系統(tǒng)960用于控制和分配計(jì)算機(jī)910的資源。應(yīng)用962包括系統(tǒng)和應(yīng)用軟件之一或兩者,并且可利用操作系統(tǒng)960對資源的管理通過存儲(chǔ)在存儲(chǔ)器930和/或大容量存儲(chǔ)950中的程序模塊964和數(shù)據(jù)966來執(zhí)行一個(gè)或多個(gè)動(dòng)作。因此,應(yīng)用962可根據(jù)由此提供的邏輯來將通用計(jì)算機(jī)910變成專用機(jī)器。所要求保護(hù)主題的全部或各部分可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開功能的軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)來實(shí)現(xiàn)。作為示例而非限制,有效的程序執(zhí)行系統(tǒng)100或其一部分可以是應(yīng)用962或形成應(yīng)用964的一部分,并且包括存儲(chǔ)在存儲(chǔ)器和/或大容量存儲(chǔ)950中的一個(gè)或多個(gè)模塊964和數(shù)據(jù)966,這些模塊和數(shù)據(jù)的功能可在由一個(gè)或多個(gè)處理器920執(zhí)行時(shí)實(shí)現(xiàn)。根據(jù)一個(gè)特定實(shí)施例,處理器920可與片上系統(tǒng)(SOC)或在單個(gè)集成電路基座上包括或換言之集成硬件和軟件的類似架構(gòu)相對應(yīng)。此處,處理器920可包括至少與處理器920和存儲(chǔ)器930相似的一個(gè)或多個(gè)處理器以及存儲(chǔ)器等。常規(guī)處理器包括最少量的硬件和軟件并且廣泛依賴于外部硬件和軟件。作為對比,處理器的SOC實(shí)現(xiàn)更強(qiáng)大,因?yàn)樗鼘⒂布蛙浖度肫渲幸阅軌蛴米钌俚挠布蛙浖虿灰蕾囉谕獠坑布蛙浖韱⒂锰囟üδ?。例如,有效的程序?zhí)行系統(tǒng)100或其部分和/或相關(guān)聯(lián)的功能可被嵌入到SOC體系結(jié)構(gòu)中的硬件內(nèi)。計(jì)算機(jī)910還包括通信地耦合到系統(tǒng)總線940并方便與計(jì)算機(jī)910的交互的一個(gè)或多個(gè)接口組件970。作為示例,接口組件970可以是端口(例如,串行、并行、PCMCIA、USB、
火線......)或接口卡(例如,聲音、視頻......)等等。在一個(gè)示例實(shí)現(xiàn)中,接口組件970可被
具體化為用戶輸入/輸出接口,該用戶輸入/輸出接口使得用戶能夠通過一個(gè)或多個(gè)輸入設(shè)備(例如,諸如鼠標(biāo)等定點(diǎn)設(shè)備、跟蹤球、指示筆、觸摸墊、鍵盤、話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、照相機(jī)、其他計(jì)算機(jī)……)來將命令和信息輸入到計(jì)算機(jī)910中。在另一示例實(shí)現(xiàn)中,接口組件970可被具體化為輸出外圍接口,該輸出外圍接口向顯示器(例如,CRT、LCD、等離子……)、揚(yáng)聲器、打印機(jī)和/或其他計(jì)算機(jī)等提供輸出。此外,接口組件970可被具體化為網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口使得能夠諸如通過有線或無線通信鏈路與其他計(jì)算設(shè)備(未示出)通信。
以上所已經(jīng)描述的內(nèi)容包括所要求保護(hù)主題的各方面的示例。當(dāng)然,出于描繪所要求保護(hù)主題的目的而描述每一個(gè)可以想到的組件或方法的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,所要求保護(hù)主題的許多進(jìn)一步的組合和排列都是可能的。從 而,所公開的主題旨在涵蓋落入所附權(quán)利要求書的精神和范圍內(nèi)的所有這樣的變更、修改和變化。
權(quán)利要求
1.一種便于數(shù)據(jù)訪問的方法,包括 采用被配置來執(zhí)行存儲(chǔ)在存儲(chǔ)器(930)中的計(jì)算機(jī)可執(zhí)行指令以執(zhí)行以下動(dòng)作的至少一個(gè)處理器(920) 根據(jù)數(shù)據(jù)源能力和成本,在從多個(gè)異構(gòu)數(shù)據(jù)源(140)獲取數(shù)據(jù)的程序的執(zhí)行期間,為該程序生成執(zhí)行策略。
2.如權(quán)利要求I所述的方法,還包括,根據(jù)跨所述異構(gòu)數(shù)據(jù)源的成本模型標(biāo)準(zhǔn)來確定成本。
3.如權(quán)利要求I所述的方法,還包括本地地執(zhí)行所述程序的至少一部分。
4.如權(quán)利要求I所述的方法,還包括將所述程序從第一形式變換為第二標(biāo)準(zhǔn)形式。
5.如權(quán)利要求I所述的方法,還包括開始在所述異構(gòu)數(shù)據(jù)源之一上分發(fā)所述程序的至少一個(gè)子集。
6.—種便于程序執(zhí)行的系統(tǒng)(100),包括 耦合到存儲(chǔ)器(930)的處理器(920),所述處理器(920)被配置來執(zhí)行存儲(chǔ)在所述存儲(chǔ)器(930)中的以下計(jì)算機(jī)可執(zhí)行組件 第一組件(110),所述第一組件被配置成基于數(shù)據(jù)源能力和成本來生成一策略,所述策略用于執(zhí)行在多個(gè)異構(gòu)數(shù)據(jù)源上指定的查詢。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一組件被配置成在運(yùn)行時(shí)惰性地生成策略。
8.如權(quán)利要求6所述的系統(tǒng),還包括,被配置成本地地執(zhí)行所述查詢的至少一部分的第二組件。
9.如權(quán)利要求6所述的系統(tǒng),還包括,被配置成根據(jù)與所述數(shù)據(jù)源之一的歷史交互來推斷能力或成本的第二組件。
10.如權(quán)利要求6所述的系統(tǒng),還包括,被配置成按照所述策略來將所述查詢的各部分分發(fā)至所述異構(gòu)數(shù)據(jù)源中的一個(gè)或多個(gè)的第二組件。
全文摘要
異構(gòu)源上的動(dòng)態(tài)分布式查詢執(zhí)行。根據(jù)數(shù)據(jù)源能力和成本,在與來自多個(gè)異構(gòu)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行交互的程序的執(zhí)行期間,為該程序生成執(zhí)行策略。程序的各部分可以對于異構(gòu)數(shù)據(jù)源本地和/或遠(yuǎn)程地執(zhí)行,并且結(jié)果被組合。
文檔編號(hào)G06F17/30GK102708121SQ20121003930
公開日2012年10月3日 申請日期2012年2月20日 優(yōu)先權(quán)日2011年2月18日
發(fā)明者C·西澤伯斯基, G·休斯, J·特維利杰, M·科爾森 申請人:微軟公司