專利名稱::調(diào)用表值函數(shù)的查詢的有效評(píng)估系統(tǒng)和方法調(diào)用表值函數(shù)的查詢的有效評(píng)估系統(tǒng)和方法相關(guān)申請(qǐng)的參照本申請(qǐng)要求2004年6月30日提交的美國(guó)申請(qǐng)序列號(hào)(未分配),代理案巻號(hào)MSFT-3350的優(yōu)先權(quán),該申請(qǐng)要求2004年3月19日提交的美國(guó)申請(qǐng)序列號(hào)60/554,639的優(yōu)先權(quán),這些申請(qǐng)的公開內(nèi)容通過(guò)整體引用結(jié)合于此。發(fā)明領(lǐng)域本發(fā)明涉及數(shù)據(jù)檢索和操縱,尤其涉及調(diào)用表值函數(shù)來(lái)提供結(jié)果的查詢。發(fā)明背景諸如來(lái)自華盛頓州雷蒙德市微軟公司的SQLtmServer等關(guān)系型數(shù)據(jù)庫(kù)執(zhí)行各種各樣復(fù)雜的操作來(lái)檢索和操縱數(shù)據(jù)。這些復(fù)雜的計(jì)算通常不可能使用傳統(tǒng)的結(jié)構(gòu)化查詢語(yǔ)言(SQL)或諸如GROUPBY、WHERE等其它關(guān)系型操作符。表值函數(shù)(TVF)可通過(guò)提供一種將特殊邏輯引入到查詢操作樹中來(lái)解決這一問(wèn)題。函數(shù)的TVF類允許標(biāo)量自變量作為輸入,并產(chǎn)生一系列行作為輸出。特殊邏輯可被插入到TVF函數(shù)中以執(zhí)行傳統(tǒng)關(guān)系型操作符不支持的特殊變換。TVF的有效評(píng)估是困難的。這些函數(shù)通常沒有可預(yù)測(cè)的性能行為,因?yàn)樗鼈兛砂我獾倪^(guò)程代碼。該代碼可包括調(diào)用可能在遠(yuǎn)程機(jī)器上的外部組件的復(fù)雜邏輯。由于査詢優(yōu)化器通常使用成本估算模型來(lái)選取有效的執(zhí)行策略,TVF會(huì)提出關(guān)于優(yōu)化的難題,因?yàn)槠湫阅茈y以預(yù)測(cè)。此外,由于TVF用于任意地?cái)U(kuò)展數(shù)據(jù)庫(kù)系統(tǒng),因此難以構(gòu)建覆蓋TVF可擴(kuò)展性的所有形式的單個(gè)成本估算。另外,實(shí)現(xiàn)TVF的用戶通常具有關(guān)于査詢處理器的內(nèi)部的有限知識(shí)。這一有限的知識(shí)使得難以提供關(guān)于函數(shù)與現(xiàn)有的內(nèi)部操作相比的相對(duì)執(zhí)行成本的準(zhǔn)確和可信信息。關(guān)于TVF的評(píng)估的另一困難是某些TVF實(shí)現(xiàn)要求TVF的結(jié)果在査詢的剩余部分的執(zhí)行之前在例如臨時(shí)表中預(yù)實(shí)現(xiàn)。這一預(yù)實(shí)現(xiàn)要求査詢結(jié)果的慢假脫機(jī),并且也通過(guò)要求TVF的輸入在可執(zhí)行查詢的任何其它部分之前已知而限制了TVF的靈活性。這一限制是不合需要的,因?yàn)樘峁〇嗽兊囊徊糠?,如表中的一列,作為TVF調(diào)用的自變量通常是有利的。作為以上列出的困難的結(jié)果,常規(guī)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中的TVF的用戶必須接受次等的性能以及有限的能力作為TVF可擴(kuò)展性的代價(jià)。由此,本領(lǐng)域中需要一種有效地評(píng)估調(diào)用TVF的查詢的系統(tǒng)和方法。本發(fā)明滿足這些和其它需求。發(fā)明概述本發(fā)明描述了一種用于在關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器中實(shí)現(xiàn)表值函數(shù)(TVF)的有效和快速框架。該框架提供了期望的可擴(kuò)展性屬性,并具有通過(guò)與査詢處理器中的優(yōu)化基礎(chǔ)結(jié)構(gòu)緊密地集成而最小化性能退化的能力。本發(fā)明也使諸如公共語(yǔ)言運(yùn)行庫(kù)(CLR)等受管執(zhí)行環(huán)境能夠有效和動(dòng)態(tài)地用用戶提供的代碼來(lái)擴(kuò)展數(shù)據(jù)庫(kù)引擎的邏輯。依照本發(fā)明的一個(gè)方面,TVF框架提供了來(lái)自査詢處理器的一抽象層次。當(dāng)在查詢處理器處接收到調(diào)用TVF的傳入查詢時(shí),為描述TVF的能力的信息類生成一請(qǐng)求。該信息類通常用一組綁定問(wèn)題來(lái)查詢,以提供用于査詢綁定的信息。該信息類也用一組優(yōu)化問(wèn)題來(lái)査詢,以提供用于査詢優(yōu)化的信息。在査詢執(zhí)行期間,該信息類用于生成一執(zhí)行類,它依照TVF向査詢處理器返回一組輸出行。依照本發(fā)明的另一方面,上述TVF框架可被擴(kuò)展到受管執(zhí)行環(huán)境(MEE)。在該MEE中提供諸如文本編輯器等接口,使用戶能夠創(chuàng)建定義TVF的能力的類。該類然后被編譯成二進(jìn)制文件并提交給數(shù)據(jù)庫(kù)服務(wù)器。在數(shù)據(jù)庫(kù)服務(wù)器處,該二進(jìn)制文件可用于生成可在TVF框架內(nèi)實(shí)現(xiàn)的信息類。依照本發(fā)明的另一方面,諸如過(guò)濾、投影和分組操作等關(guān)系操作可被推入到TVF的執(zhí)行中。這類關(guān)系操作"下推"通過(guò)使TW能夠依照關(guān)系操作的范圍來(lái)評(píng)估而改進(jìn)了效率。當(dāng)結(jié)合附圖閱讀以下說(shuō)明性實(shí)施例的詳細(xì)描述時(shí),可以清楚本發(fā)明的其它特征和優(yōu)點(diǎn)。附圖簡(jiǎn)述在結(jié)合附圖閱讀了以下詳細(xì)描述之后,可以更好地理解說(shuō)明性實(shí)施例,附圖中圖1是依照本發(fā)明的數(shù)據(jù)檢索和操作系統(tǒng)的框圖;圖2是依照本發(fā)明的示例性TVF框架;圖3是依照本發(fā)明用于査詢?cè)u(píng)估的示例性方法的流程圖;圖4是依照本發(fā)明用于TVF框架可擴(kuò)展性的示例性方法的流程圖;圖5所示是依照本發(fā)明的示例性關(guān)系操作下推的框圖;圖6是表示具有其中可實(shí)現(xiàn)本發(fā)明的各種計(jì)算設(shè)備的示例性網(wǎng)絡(luò)環(huán)境的框圖;以及圖7是表示其中可實(shí)現(xiàn)本發(fā)明的示例性計(jì)算設(shè)備的框圖。說(shuō)明性實(shí)施例的詳細(xì)描述本發(fā)明的主體用細(xì)節(jié)來(lái)描述以滿足法定要求。然而,該描述本身不打算限制本專利的范圍。相反,發(fā)明人構(gòu)想所要求保護(hù)的主體也可以結(jié)合其它現(xiàn)有或未來(lái)技術(shù)用其它方法來(lái)實(shí)施,以包括類似于本文檔中所描述的那些不同的動(dòng)作或元素。圖1示出了依照本發(fā)明的示例性數(shù)據(jù)檢索和操作系統(tǒng)的框圖。一般而言,客戶機(jī)應(yīng)用程序108使査詢能夠被生成并被提交到數(shù)據(jù)庫(kù)服務(wù)器104以供在數(shù)據(jù)庫(kù)服務(wù)器104處執(zhí)行。數(shù)據(jù)庫(kù)服務(wù)器104提供對(duì)一個(gè)或多個(gè)底層數(shù)據(jù)存儲(chǔ)的訪問(wèn),它們以諸如被組織成行和列的表的形式儲(chǔ)存數(shù)據(jù)。數(shù)據(jù)庫(kù)服務(wù)器104包括查詢處理器106,它一般在底層數(shù)據(jù)存儲(chǔ)上執(zhí)行傳入的査詢。當(dāng)接收到傳入的査詢時(shí),查詢處理器106通常在執(zhí)行之前對(duì)査詢執(zhí)行查詢綁定和査詢優(yōu)化過(guò)程。如圖l所示,數(shù)據(jù)庫(kù)服務(wù)器104可(盡管不必要)結(jié)合受管執(zhí)行環(huán)境(MEE)102操作。MEE102可以是,例如,公共語(yǔ)言運(yùn)行庫(kù)(CLR)環(huán)境。MEE102—般為受管代碼提供執(zhí)行環(huán)境。因此,MEE102可提供程序執(zhí)行所需的各種功能和服務(wù),包括,例如及時(shí)(just-in-time)(JIT)編譯、分配和管理存儲(chǔ)器、強(qiáng)制類型安全、異常處理、線程管理和安全性。此外,除諸如結(jié)構(gòu)化査詢語(yǔ)言(SQL)等傳統(tǒng)關(guān)系査詢語(yǔ)言之外,MEE102還使任務(wù)能夠以諸如VisualBasic和C弁等正式編程語(yǔ)言來(lái)執(zhí)行。這類正式編程語(yǔ)言可支持諸如數(shù)組、集合、對(duì)每一個(gè)循環(huán)、位移位和類等特征。由此,開發(fā)者可充分利用MEE102與數(shù)據(jù)庫(kù)服務(wù)器104的集成,以編寫比傳統(tǒng)的關(guān)系查詢語(yǔ)言具有更復(fù)雜邏輯并更適用于計(jì)算任務(wù)的代碼。數(shù)據(jù)庫(kù)服務(wù)器104處的執(zhí)行通常要求現(xiàn)有關(guān)系査詢語(yǔ)言操作符不支持的復(fù)雜操作。為執(zhí)行這類操作,查詢處理器106可調(diào)用一個(gè)或多個(gè)表值函數(shù)(TVF)。一般而言,TVF提供了一種將特殊邏輯引入到查詢操作樹中的機(jī)制。TVF通常接收標(biāo)量自變量作為輸入,并產(chǎn)生一系列行作為輸出。特殊邏輯可被插入到TVF中以執(zhí)行傳統(tǒng)關(guān)系操作符不支持的特定變換。本發(fā)明提供了一種用于執(zhí)行調(diào)用TVF的査詢的框架。重要的是,該框架從查詢處理器106中抽象用戶代碼。該框架可結(jié)合個(gè)別TVF或諸如基于MEE的TVF等的TVF類使用。每一這樣的TVF或TVF類實(shí)現(xiàn)支持諸如綁定輸出列、理解參數(shù)和例示運(yùn)行時(shí)邏輯等操作。另外,關(guān)于TVF的能力的抽象問(wèn)題也通過(guò)該框架來(lái)提供,并且査詢處理器106探究了與框架中這些抽象能力所描述的行為特征相一致的替換特征。例如,TVF可以總是以已排序次序返回行。如果這是對(duì)框架所描述的,則査詢處理器106可在計(jì)劃生成期間充分利用這一信息。例如,可以避免查詢樹的其它部分中的排序操作。圖2示出了依照本發(fā)明的示例性TVF框架的框圖。一般而言,當(dāng)接收傳入的查詢105時(shí),査詢處理器106執(zhí)行查詢綁定過(guò)程112和查詢優(yōu)化過(guò)程114。査詢處理器106然后依照綁定112和優(yōu)化114來(lái)執(zhí)行査詢116。當(dāng)傳入的査詢105調(diào)用TVF時(shí),信息類工廠132生成描述TVF的能力的信息類134。為向綁定112提供信息,用多個(gè)綁定問(wèn)題122查詢信息類134。同樣,為向優(yōu)化114提供信息,用多個(gè)優(yōu)化問(wèn)題124查詢信息類134。最后,在執(zhí)行116期間,使用信息類134來(lái)生成執(zhí)行類136,它依照所調(diào)用的TVF向査詢處理器106提供輸出行。圖2所示的框架可使用圖3所描述的示例性査詢?cè)u(píng)估方法來(lái)實(shí)現(xiàn),現(xiàn)在將詳細(xì)描述該方法。在動(dòng)作310,在査詢處理器106處接收傳入的查詢105。如果傳入的查詢105調(diào)用TVF,則在動(dòng)作312,査詢處理器106向信息類工廠132發(fā)送對(duì)于對(duì)應(yīng)信息類134的請(qǐng)求115。在動(dòng)作314,信息類工廠132生成所請(qǐng)求的信息類134。信息類134可被實(shí)現(xiàn)為例如從另一語(yǔ)言的類屬基類或某一等效構(gòu)造中導(dǎo)出的C++中的類。關(guān)鍵屬性是信息類134作為抽象點(diǎn)而生成,在該抽象點(diǎn)處,査詢處理器106具有到它所調(diào)用的對(duì)象的具體實(shí)例的一間接層次。在動(dòng)作316,作為綁定112的一部分,査詢處理器106用一組綁定問(wèn)題122查詢信息類134。示例性綁定問(wèn)題122可請(qǐng)求諸如將在査詢期間返回的列數(shù)、列類型以及類名等信息。示例性綁定問(wèn)題122也可詢問(wèn)TVF是確定性的還是訪問(wèn)外部數(shù)據(jù)源。在動(dòng)作318,作為優(yōu)化114的一部分,查詢處理器106用一組優(yōu)化問(wèn)題124査詢信息類134。示例性優(yōu)化問(wèn)題124可包括,例如,行是否在列的任何一集合上分組、列是否構(gòu)成唯一關(guān)鍵字、TVF是確定性的還是訪問(wèn)外部數(shù)據(jù)源。示例性優(yōu)化問(wèn)題124也可請(qǐng)求關(guān)于函數(shù)的結(jié)果的統(tǒng)計(jì)信息。這類統(tǒng)計(jì)信息可包括,例如,對(duì)每一調(diào)用或每一參數(shù)值范圍將返回的行數(shù)、對(duì)每一列或列組將返回的重復(fù)值的數(shù)量、以及描述將從函數(shù)返回的值的分布的直方圖。在動(dòng)作320,作為執(zhí)行116的一部分,信息類134用于生成執(zhí)行類136。在動(dòng)作322,查詢處理器向執(zhí)行類136發(fā)送對(duì)TV輸出行組128的請(qǐng)求,并且在動(dòng)作324,執(zhí)行類136返回所請(qǐng)求的輸出行128。由此,本發(fā)明的框架提供了一種抽象層次,其中,當(dāng)調(diào)用TVF時(shí),可向查詢處理器106提供關(guān)于TW的信息,以幫助綁定112和優(yōu)化114,并依照TVF提供輸出行。依照本發(fā)明構(gòu)想的某些示例性TVF操作可包括但不限于,支持諸如XQuery等分層?xùn)嗽儾僮鞯挠?jì)算、用于管理對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的類型層次的操作、用于有效地執(zhí)行數(shù)據(jù)庫(kù)系統(tǒng)中到和自用于模型化文件系統(tǒng)的內(nèi)部路徑的目錄路徑的轉(zhuǎn)換的操作、以及用于在諸如web服務(wù)等遠(yuǎn)程數(shù)據(jù)源的結(jié)果上產(chǎn)生關(guān)系視圖的操作。由本發(fā)明的框架提供的抽象層次使擴(kuò)展中定義的任意用戶能夠在受管執(zhí)行環(huán)境(MEE)102中動(dòng)態(tài)地編寫,并且能夠被集成到框架中。這一集成使用戶定義的擴(kuò)展能夠由査詢處理器106以與本地?cái)U(kuò)展相同的方式來(lái)評(píng)估。另外,用戶定義的擴(kuò)展可被動(dòng)態(tài)地添加到數(shù)據(jù)庫(kù)服務(wù)器104中而沒有性能損失。該方法可以用MEE102的本機(jī)受管語(yǔ)言來(lái)實(shí)現(xiàn),該語(yǔ)言可用于滿足由上述信息類134描述的信息指定的要求。這些方法可任選地用未明確提供的屬性的默認(rèn)值來(lái)實(shí)現(xiàn)。這允許隨時(shí)間的推移添加任意的新方法,同時(shí)維護(hù)與不實(shí)現(xiàn)新方法的先前實(shí)現(xiàn)的用戶定義的擴(kuò)展的后向兼容性。關(guān)于MEE的其它應(yīng)用可包括從諸如平面文件、磁帶設(shè)備或數(shù)據(jù)庫(kù)服務(wù)器1-4外部的其它輔助存儲(chǔ)機(jī)制等持久存儲(chǔ)機(jī)制中導(dǎo)入復(fù)雜的用戶定義類型(UDT)。TVF也可用于當(dāng)從數(shù)據(jù)庫(kù)服務(wù)器104外部導(dǎo)入時(shí),確認(rèn)UDT為結(jié)構(gòu)上正確的。另外,TVF甚至可用于展示關(guān)于MEE中的UDT的復(fù)雜元數(shù)據(jù),因?yàn)門VF可用于通過(guò)動(dòng)態(tài)地深入到UDT的結(jié)構(gòu)中來(lái)顯示任意結(jié)構(gòu)的數(shù)據(jù)。TVF可擴(kuò)展性的又一益處是TVF提供了展示關(guān)系模型內(nèi)的更復(fù)雜編程概念的能力。這類復(fù)雜編程概念可包括,例如,列表、目錄、數(shù)組、集合、屬性包(propertybag)。這些概念一般涉及將多個(gè)對(duì)象組合到單個(gè)容器中,以供在諸如由MEE可擴(kuò)展性變得可用的編程語(yǔ)言中更容易地使用。圖4示出了依照本發(fā)明的TVF框架可擴(kuò)展性的示例性方法的流程圖。在動(dòng)作410,MEE102提供了使用戶能夠定義描述TVF的能力的類的接口。MEE102可提供,例如,使用戶能夠定義類的文本編輯器接口。示例性MEE類對(duì)象示出如下ClassMyTVF{publicstaticIEnumerableMyTVF(){}〃提供"信息對(duì)象"屬性的方法PublicSQLMetadata[]GetOrderColumns(){〃實(shí)現(xiàn)}PublicSQLMetadata口GetUniqueKeyColumns(){〃實(shí)現(xiàn)}〃運(yùn)行時(shí)方法PrivatestaticvoidFillRow(objectsource,ISqlUpdatableRecordrecord){〃實(shí)現(xiàn)}上述示例性類以C弁定義,然而,依照本發(fā)明的類對(duì)象可以用MEE102支持的任何語(yǔ)言來(lái)定義。在動(dòng)作412,類被編譯成二進(jìn)制文^=,并且在動(dòng)作414,將所編譯的二進(jìn)制文件提交給數(shù)據(jù)庫(kù)服務(wù)器104。在動(dòng)作416,依照所編譯的二進(jìn)制文件生成TVF。具體地,當(dāng)結(jié)合圖2的TW框架實(shí)現(xiàn)時(shí),信息類工廠132可使用所編譯的二進(jìn)制文件來(lái)生成描述由傳入的査詢105調(diào)用的TVF的能力的信息類134。由于被實(shí)現(xiàn)為MEE對(duì)象,因此用戶定義類的對(duì)象代碼可由數(shù)據(jù)庫(kù)服務(wù)器104解釋以向編譯的對(duì)象代碼查詢相關(guān)聯(lián)的元數(shù)據(jù),作為其在TVF框架中的安裝或使用的一部分。由此,例如,管理員不需要提供關(guān)于用戶定義擴(kuò)展的附加信息。此外,數(shù)據(jù)庫(kù)服務(wù)器104不需要儲(chǔ)存關(guān)于所得的信息類134中使用的能力的附加元數(shù)據(jù)。當(dāng)框架需要時(shí),可通過(guò)檢査所編譯的受管二進(jìn)制對(duì)象文件來(lái)査詢?cè)獢?shù)據(jù)。對(duì)此概念的擴(kuò)展可包括,例如,將相關(guān)元數(shù)據(jù)復(fù)制到數(shù)據(jù)庫(kù)服務(wù)器104中的臨時(shí)位置以供更有效的訪問(wèn)。另外,受管代碼可以用例如.EXE或.DLL文件的形式被復(fù)制到數(shù)據(jù)存儲(chǔ)610中,作為維護(hù)元數(shù)據(jù)在查詢計(jì)劃的生命周期中都處于一致狀態(tài)的技術(shù)。無(wú)論是通過(guò)簡(jiǎn)單的出錯(cuò)或惡意的企圖,用戶定義的擴(kuò)展都可包括不正確地描述TVF的屬性的元數(shù)據(jù)。數(shù)據(jù)庫(kù)服務(wù)器104可通過(guò)各種技術(shù)來(lái)排除這類不正確元數(shù)據(jù)的風(fēng)險(xiǎn)。在一種這樣的技術(shù)中,如果不能被證明為可信信息,則所提供的元數(shù)據(jù)被忽略。在另一種技術(shù)中,數(shù)據(jù)庫(kù)服務(wù)器104可向調(diào)用TVF的查詢的執(zhí)行計(jì)劃提供附加的驗(yàn)證邏輯。在執(zhí)行期間,如果TVF不如所指示的那樣運(yùn)作,則可生成出錯(cuò)消息。例如,如果用戶定義的類指示TVF返回已排序結(jié)果,則查詢處理器106可添加特殊的處理邏輯來(lái)驗(yàn)證TVF的輸出是否的確是已排序的。如果TVF無(wú)法如所指示的那樣執(zhí)行,則可拋出錯(cuò)誤,并且可中止或重新編譯査詢,并重新啟動(dòng),同時(shí)忽略不正確的用戶提供的元數(shù)據(jù)。除使能夠集成用戶定義的擴(kuò)展之外,該框架也使多個(gè)關(guān)系操作的執(zhí)行在優(yōu)化114期間被推入到TVF的執(zhí)行中。這些關(guān)系操作可包括,例如,過(guò)濾、投影和組合操作,以及其它定義良好的關(guān)系操作。將關(guān)系操作的執(zhí)行推入TVF的執(zhí)行中導(dǎo)致改進(jìn)的査詢執(zhí)行效率。例如,如果TVF被定義成返回散列表中的所有元素,則TVF的默認(rèn)實(shí)現(xiàn)可能在每一散列存儲(chǔ)桶(bucket)上迭代,并且返回對(duì)應(yīng)表中的每一元素。然而,如果查詢將散列表關(guān)鍵字列限制為一單個(gè)值,則將這一限制編碼到TVF中可能是更有效的,從而避免了枚舉所有散列表?xiàng)l目的工作。圖5示出了關(guān)系操作下推的概念。常規(guī)的査詢計(jì)劃510包括過(guò)濾操作510a,它將數(shù)據(jù)表的第一列過(guò)濾到5的條目。常規(guī)的査詢計(jì)劃510也包括TVF510b。如圖所示,過(guò)濾操作510a完全與TVF510b分離地執(zhí)行。相反,在查詢計(jì)劃512中,過(guò)濾操作被有效地下推到TVF512a中,由此消除了枚舉數(shù)據(jù)表的所有條目的需求。關(guān)系操作下推可通過(guò)將額外的隱含自變量編碼到TVF來(lái)實(shí)現(xiàn)。這些自變量向TW傳遞了附加指令,如"將這一列過(guò)濾到這一值",或"對(duì)于這一列,掃描從10到20的范圍"。這一技術(shù)可用于通過(guò)以良好定義的順序提供來(lái)傳遞任意數(shù)量的列上的限制,使得TVF能夠解釋要在哪一列上實(shí)施限制。關(guān)系操作下推也可通過(guò)對(duì)每一推入的關(guān)系操作(或一組推入的關(guān)系操作)生成單獨(dú)的運(yùn)行時(shí)實(shí)現(xiàn)來(lái)達(dá)到。例如,推入的過(guò)濾可以通過(guò)在運(yùn)行時(shí)檢索行的唯一類來(lái)實(shí)現(xiàn)。如可從上文清楚的,本發(fā)明的各種系統(tǒng)、方法和特征的所有或部分可以用硬件、軟件或兩者的組合來(lái)實(shí)現(xiàn)。當(dāng)以軟件實(shí)施時(shí),本發(fā)明的方法和裝置,或其某些方面或部分可以用程序代碼(即,指令)的形式來(lái)實(shí)施。該程序代碼可儲(chǔ)存在諸如磁、電或光存儲(chǔ)介質(zhì)等計(jì)算機(jī)可讀介質(zhì)上,包括但不限于,軟盤、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、磁帶、閃存、硬盤驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲(chǔ)介質(zhì),其中,當(dāng)程序代碼被加載到諸如計(jì)算機(jī)或服務(wù)器等機(jī)器中并由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。程序代碼在其上執(zhí)行的計(jì)算機(jī)一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。程序代碼可以用高級(jí)過(guò)程語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn)?;蛘?,程序代碼可以用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。在任一情況下,語(yǔ)言可以是已編譯或已解釋的語(yǔ)言。本發(fā)明也可以用程序代碼的形式實(shí)施來(lái)實(shí)施,該程序代碼通過(guò)某一傳輸介質(zhì)來(lái)發(fā)送,如通過(guò)電線或電纜、通過(guò)光纖、通過(guò)包括局域網(wǎng)、因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的網(wǎng)絡(luò)、或通過(guò)任一其它形式的傳輸,其中,當(dāng)程序代碼由諸如計(jì)算機(jī)等的機(jī)器接收并裝載到其中由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合,以提供與專用邏輯電路類似地操作的唯一裝置。此外,本發(fā)明可以結(jié)合任何計(jì)算機(jī)或其它服務(wù)器設(shè)備來(lái)實(shí)現(xiàn),它們可作為計(jì)算機(jī)網(wǎng)絡(luò)的一部分部署,或在分布式計(jì)算環(huán)境中部署。在這一點(diǎn)上,本發(fā)明涉及具有任意數(shù)量的存儲(chǔ)器或存儲(chǔ)單元以及在任意數(shù)量的存儲(chǔ)單元或巻上發(fā)生的任意數(shù)量的應(yīng)用程序和進(jìn)程的任何計(jì)算機(jī)系統(tǒng)或環(huán)境,它可結(jié)合依照本發(fā)明在數(shù)據(jù)庫(kù)存儲(chǔ)中持久保存對(duì)象的進(jìn)程使用。本發(fā)明可應(yīng)用于具有部署在具有遠(yuǎn)程或本地存儲(chǔ)的網(wǎng)絡(luò)環(huán)境或分布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)和客戶機(jī)計(jì)算機(jī)的環(huán)境。本發(fā)明也可應(yīng)用于獨(dú)立的計(jì)算設(shè)備,它具有編程語(yǔ)言功能、用于結(jié)合遠(yuǎn)程或本地服務(wù)生成、接收和發(fā)送信息的解釋和執(zhí)行能力。分布式計(jì)算便于通過(guò)計(jì)算設(shè)備和系統(tǒng)之間的交換共享計(jì)算機(jī)資源獲得服務(wù)。這些資源和服務(wù)包括但不限于,信息交換、高速緩存存儲(chǔ)和文件的盤存儲(chǔ)。分布式計(jì)算利用了網(wǎng)絡(luò)連接,從而允許客戶機(jī)充分利用其集體能力來(lái)有益于整個(gè)企業(yè)。在這一點(diǎn)上,各種設(shè)備可具有蘊(yùn)含結(jié)合本發(fā)明的對(duì)象持久存儲(chǔ)執(zhí)行的處理的應(yīng)用程序、對(duì)象或資源。圖7提供了示例性網(wǎng)絡(luò)化或分布式計(jì)算環(huán)境的示意圖。分布式計(jì)算環(huán)境包括計(jì)算對(duì)象10a、10b等,以及計(jì)算對(duì)象或設(shè)備110a、110b、110c等。這些對(duì)象可包括程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等等。這些對(duì)象可包括諸如PDA、電視機(jī)、MP3播放器、個(gè)人計(jì)算機(jī)等的相同或不同設(shè)備的各部分。每一對(duì)象可通過(guò)通信網(wǎng)絡(luò)14與另一對(duì)象通信。該網(wǎng)絡(luò)本身可包括向圖7的系統(tǒng)提供服務(wù)的其它計(jì)算對(duì)象和計(jì)算設(shè)備,并且本身可表示多個(gè)互連的網(wǎng)絡(luò)。依照本發(fā)明的一個(gè)方面,每一對(duì)象10a、10b等或110a、110b、110c等可包含可以利用API或其它對(duì)象、軟件、固件和/或硬件來(lái)請(qǐng)求對(duì)用于實(shí)現(xiàn)本發(fā)明的對(duì)象持久存儲(chǔ)方法的過(guò)程的使用的應(yīng)用程序??梢岳斫?,諸如110c等對(duì)象可以主存在另一計(jì)算設(shè)備10a、10b等或110a、110b等上。由此,盡管所描述的物理環(huán)境可以將連接的設(shè)備示出為計(jì)算機(jī),然而這一說(shuō)明僅是示例性的,并且該物理環(huán)境可替換地被描繪或描述為包括諸如PDA、電視機(jī)、MP3播放器等各種數(shù)字設(shè)備,諸如接口、COM對(duì)象等的軟件對(duì)象。有各種支持分布式計(jì)算環(huán)境的系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可以通過(guò)有線或無(wú)線系統(tǒng)、局域網(wǎng)絡(luò)闊的分布式網(wǎng)絡(luò)連接在一起。當(dāng)前,許多網(wǎng)絡(luò)耦合至因特網(wǎng),后者為廣闊的分布式計(jì)算提供了基礎(chǔ)結(jié)構(gòu)并包含許多不同的網(wǎng)絡(luò)。任一基礎(chǔ)結(jié)構(gòu)可用于關(guān)聯(lián)本發(fā)明所作出的示例性通信。因特網(wǎng)通常指使用TCP/IP協(xié)議套件的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合,該協(xié)議在計(jì)算機(jī)聯(lián)網(wǎng)領(lǐng)域中是公知的。TCP/IP是"傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議"的縮寫。因特網(wǎng)可被描述為由執(zhí)行允許用戶通過(guò)網(wǎng)絡(luò)交互和共享信息的聯(lián)網(wǎng)協(xié)議的計(jì)算機(jī)互連的地理上分布的遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò)。由于這類廣泛分布的信息共享,諸如因特網(wǎng)等遠(yuǎn)程網(wǎng)絡(luò)至今發(fā)展成一種開放系統(tǒng),開發(fā)者可對(duì)該開放系統(tǒng)設(shè)計(jì)用于執(zhí)行專用操作或服務(wù)的應(yīng)用程序,在本質(zhì)上沒有限制。由此,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)啟用了諸如客戶機(jī)/服務(wù)器、對(duì)等或混合體系結(jié)構(gòu)等大量網(wǎng)絡(luò)拓樸。"客戶機(jī)"是使用它所不相關(guān)的另一類或組的服務(wù)的類或組的成員。由此,在計(jì)算時(shí),客戶機(jī)是進(jìn)程,目卩,粗略地而言是一組請(qǐng)求由另一程序提供的服務(wù)的指令或任務(wù)??蛻魴C(jī)進(jìn)程使用所請(qǐng)求的服務(wù),而無(wú)需"知道"關(guān)于其它程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中,尤其是網(wǎng)絡(luò)化系統(tǒng)中,客戶機(jī)通常是訪問(wèn)由另一計(jì)算機(jī),如服務(wù)器提供的共享網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖7的示例中,計(jì)算機(jī)110a、110b等可以被認(rèn)為是客戶機(jī),而計(jì)算機(jī)10a、10b等可以被認(rèn)為是服務(wù)器,盡管任何計(jì)算機(jī)可以被認(rèn)為是客戶機(jī)、服務(wù)器或兩者,這取決于環(huán)境。這些計(jì)算設(shè)備的任一個(gè)可以用蘊(yùn)含本發(fā)明的對(duì)象持久存儲(chǔ)技術(shù)的方式處理數(shù)據(jù)。服務(wù)器通常是可通過(guò)遠(yuǎn)程或本地網(wǎng)絡(luò),如因特網(wǎng)訪問(wèn)的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻魴C(jī)進(jìn)程可以在第一計(jì)算機(jī)系統(tǒng)中為活動(dòng),而服務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系統(tǒng)中活動(dòng),它們通過(guò)通信介質(zhì)彼此通信,由此提供了分布式功能并允許多個(gè)客戶機(jī)利用服務(wù)器的信息收集能力。依照本發(fā)明的持久存儲(chǔ)機(jī)制使用的任何軟件對(duì)象可以在多個(gè)計(jì)算設(shè)備上分布??蛻魴C(jī)和服務(wù)器可使用由協(xié)議層提供的功能彼此通信。例如,超文本傳輸協(xié)議(HTTP)是一種結(jié)合萬(wàn)維網(wǎng)(WWW)或"web"使用的常見協(xié)議。通常,計(jì)算機(jī)網(wǎng)絡(luò)地址,如互聯(lián)網(wǎng)協(xié)議(IP)地址或諸如統(tǒng)一資源定位器(URL)等其它引用,可用于彼此標(biāo)識(shí)服務(wù)器或客戶機(jī)計(jì)算機(jī)。網(wǎng)絡(luò)地址可被稱為URL地址。通信可在任何可用通信介質(zhì)上提供。由此,圖7示出了具有通過(guò)網(wǎng)絡(luò)/總線與客戶機(jī)計(jì)算機(jī)通信的服務(wù)器的示例性網(wǎng)絡(luò)化或分布式環(huán)境,其中可實(shí)施本發(fā)明。網(wǎng)絡(luò)/總線14可以是LAN、WAN、內(nèi)聯(lián)網(wǎng)、因特網(wǎng)或某一其它網(wǎng)絡(luò)介質(zhì),它具有多個(gè)客戶機(jī)或遠(yuǎn)程計(jì)算設(shè)備110a、110b、110c、ilOd、110e等,如便攜式計(jì)算機(jī)、手持式計(jì)算機(jī)、瘦客戶機(jī)、聯(lián)網(wǎng)設(shè)備或其它設(shè)備,如依照本發(fā)明的VCR、TV、烤箱、加熱器等等。由此,構(gòu)想本發(fā)明可應(yīng)用于任何計(jì)算設(shè)備,期望結(jié)合這些設(shè)備來(lái)維護(hù)持久存儲(chǔ)的對(duì)象。例如,在其中通信網(wǎng)絡(luò)/總線14是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器10a、10b等可以是客戶機(jī)110a、110b、110c、110d、110e等通過(guò)諸如HTTP等多種已知協(xié)議與其通信的服務(wù)器。服務(wù)器10a、10b等也可擔(dān)當(dāng)客戶機(jī)110a、110b、110c、110d、110e等,這可以是分布式計(jì)算環(huán)境的特征。通信可以在適當(dāng)時(shí)是有線或無(wú)線的。客戶機(jī)設(shè)備110a、110b、110c、110d、110e等可以通過(guò)或不通過(guò)通信網(wǎng)絡(luò)/總線14通信,并可具有與其相關(guān)聯(lián)的獨(dú)立通信。例如,在TV或VCR的情況下,可以有或沒有其控制的網(wǎng)絡(luò)化方面。每一客戶機(jī)計(jì)算機(jī)110a、110b、110c、110d、110e等以及服務(wù)器計(jì)算機(jī)10a、10b等可以具備各種應(yīng)用程序模塊或?qū)ο?35,并具有對(duì)各種類型的存儲(chǔ)元件或?qū)ο蟮倪B接或訪問(wèn),在這些存儲(chǔ)元件或?qū)ο笊峡蓛?chǔ)存文件或數(shù)據(jù)流,或者可向其下載、發(fā)送或移植文件或數(shù)據(jù)流的各部分。任一計(jì)算機(jī)10a、10b、110a、110b等可以負(fù)責(zé)數(shù)據(jù)庫(kù)、存儲(chǔ)器或用于儲(chǔ)存依照本發(fā)明處理的數(shù)據(jù)的其它存儲(chǔ)元件20的維護(hù)和更新。由此,本發(fā)明可以用于具有可訪問(wèn)計(jì)算機(jī)網(wǎng)絡(luò)/總線14或與其交互的客戶機(jī)110a、110b等,以及可與客戶機(jī)計(jì)算機(jī)110a、110b等交互的服務(wù)器計(jì)算機(jī)10a、10b等,以及其它類似的設(shè)備和數(shù)據(jù)庫(kù)20的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中。圖7及以下討論旨在提供可結(jié)合其來(lái)實(shí)現(xiàn)本發(fā)明的合適的計(jì)算設(shè)備的簡(jiǎn)要概括描述。例如,圖7所示的客戶機(jī)和服務(wù)器計(jì)算機(jī)或設(shè)備的任一個(gè)可采用這一形式。然而,應(yīng)當(dāng)理解,所有種類的手持式、便攜式和其它計(jì)算設(shè)備和計(jì)算對(duì)象可被構(gòu)想為結(jié)合本發(fā)明使用,g卩,計(jì)算環(huán)境中可生成、處理、接收和/或發(fā)送數(shù)據(jù)的任何地方。盡管下文描述的通用計(jì)算機(jī),然而這只是一個(gè)示例,本發(fā)明可以用具有網(wǎng)絡(luò)/總線互操作性和交互的瘦客戶機(jī)來(lái)實(shí)現(xiàn)。由此,本發(fā)明可以在其中蘊(yùn)含了極少或最小客戶機(jī)資源的網(wǎng)絡(luò)化主存的服務(wù)的環(huán)境中實(shí)現(xiàn),如其中客戶機(jī)設(shè)備僅擔(dān)當(dāng)如放置在設(shè)備中的對(duì)象等對(duì)網(wǎng)絡(luò)/總線的接口的網(wǎng)絡(luò)化環(huán)境。本質(zhì)上,可儲(chǔ)存數(shù)據(jù)或從其檢索數(shù)據(jù)或向另一計(jì)算機(jī)發(fā)送數(shù)據(jù)的任何地方都是用于本發(fā)明的對(duì)象持久存儲(chǔ)方法的操作的合乎需要的或合適的環(huán)境。盡管并非所需,但本發(fā)明可通過(guò)由設(shè)備或?qū)ο蟮姆?wù)開發(fā)者使用的操作系統(tǒng)來(lái)實(shí)現(xiàn),和/或包括在依照本發(fā)明操作的應(yīng)用程序或服務(wù)器軟件中。軟件可以在諸如由客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的軟件模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,程序模塊的功能可如各實(shí)施例中所需的進(jìn)行組合或分布。此外,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置和協(xié)議來(lái)實(shí)施。其它適用于本發(fā)明的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)售貨機(jī)、服務(wù)器計(jì)算機(jī)、手持式或希望設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、電器、燈、環(huán)境控制元件、小型機(jī)、大型計(jì)算機(jī)等等。圖8示出了適合在其中實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)環(huán)境100的一個(gè)示例,盡管如可從上文中清楚的,計(jì)算系統(tǒng)環(huán)境IOO僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非暗示對(duì)本發(fā)明的使用范圍或功能的局限。也不應(yīng)將計(jì)算環(huán)境ioo解釋為對(duì)示例性操作環(huán)境100中示出的任一組件或其組合具有任何依賴或需求。參考圖8,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件包括但不限于,處理單元120、系統(tǒng)存儲(chǔ)器130以及將包括系統(tǒng)存儲(chǔ)器的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)UO訪問(wèn)的任一可用介質(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ì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)110訪問(wèn)的任一其它介質(zhì)。通信介質(zhì)通常在諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中包含計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語(yǔ)"已調(diào)制數(shù)據(jù)信號(hào)"指以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無(wú)線介質(zhì),如聲學(xué)、RF、紅外和其它無(wú)線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。系統(tǒng)存儲(chǔ)器130包括以易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)110內(nèi)的元件之間傳輸信息的基本例程,通常儲(chǔ)存在ROM131中。RAM132通常包含處理單元120立即可訪問(wèn)或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖8示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。計(jì)算機(jī)110也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作示例,圖8示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動(dòng)器141、對(duì)可移動(dòng)、非易失性磁盤152進(jìn)行讀寫的磁盤驅(qū)動(dòng)器151以及對(duì)可移動(dòng)、非易失性光盤156,如CDROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動(dòng)器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器141通常通過(guò)不可移動(dòng)存儲(chǔ)器接口,如接口140連接到系統(tǒng)總線121,磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過(guò)可移動(dòng)存儲(chǔ)器接口,如接口150連接到系統(tǒng)總線121。上文討論并在圖8示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖8中,示出硬盤驅(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相同,也可以與它們不同。這里對(duì)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同的標(biāo)號(hào)來(lái)說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,如鍵盤162和定位設(shè)備161(如鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)110輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但是也可以通過(guò)其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。圖形接口182也可被連接到系統(tǒng)總線121。一個(gè)或多個(gè)圖形處理單元(GPU)184可與圖形接口182通信。監(jiān)視器191或其它類型的顯示設(shè)備也通過(guò)接口,如視頻接口l卯連接至系統(tǒng)總線121,視頻接口190進(jìn)而可與視頻存儲(chǔ)器186通信。除監(jiān)視器191之外,計(jì)算機(jī)也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器197和打印機(jī)196,它們通過(guò)輸出外圍接口195連接。計(jì)算機(jī)110可以在使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對(duì)于計(jì)算機(jī)110所描述的元件,盡管在圖8中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備181。圖8描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)/總線。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)IIO通過(guò)網(wǎng)絡(luò)接口或適配器170連接至LAN171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過(guò)WAN173,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,通過(guò)用戶輸入接口160或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)110所描述的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非局限,圖8示出遠(yuǎn)程應(yīng)用程序185駐留在存儲(chǔ)器設(shè)備181上??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置??偨Y(jié)由此,揭示了調(diào)用表值函數(shù)(TVF)的査詢的有效評(píng)估系統(tǒng)和方法。本發(fā)明提供了一種具有期望的可擴(kuò)展性屬性和通過(guò)與查詢處理器中的優(yōu)化基礎(chǔ)結(jié)構(gòu)緊密地結(jié)合來(lái)最小化性能退化的能力的框架。本發(fā)明也使諸如公共語(yǔ)言運(yùn)行庫(kù)(CLR)等受管執(zhí)行環(huán)境能夠有效和動(dòng)態(tài)地用用戶提供的代碼來(lái)擴(kuò)展數(shù)據(jù)庫(kù)引擎的邏輯。盡管結(jié)合各附圖的較佳實(shí)施例描述了本發(fā)明,然而,可以理解,可以在不脫離本發(fā)明的情況下使用其它類似的實(shí)施例或?qū)λ枋龅膶?shí)施例作出修改和添加,以執(zhí)行本發(fā)明的相同功能。因此,本發(fā)明不應(yīng)限于任一單個(gè)實(shí)施例,而是相反,應(yīng)當(dāng)依照所附權(quán)利要求書的寬度和范圍來(lái)解釋。權(quán)利要求1.一種處理調(diào)用表值函數(shù)來(lái)提供結(jié)果的查詢的方法,所述方法包括生成描述所述表值函數(shù)的能力的信息類;用至少一個(gè)綁定問(wèn)題的組來(lái)查詢所述信息類;用至少一個(gè)優(yōu)化問(wèn)題的組來(lái)查詢所述信息類;依照響應(yīng)于所述綁定問(wèn)題組和所述優(yōu)化問(wèn)題組所提供的信息來(lái)執(zhí)行所述查詢。2.如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述査詢包括-生成對(duì)應(yīng)于所述表值函數(shù)的執(zhí)行類;向所述執(zhí)行類請(qǐng)求一組數(shù)據(jù)表行作為輸出;以及從所述執(zhí)行類接收所請(qǐng)求的行。3.如權(quán)利要求l所述的方法,其特征在于,包括用綁定問(wèn)題組查詢所述信息類,所述綁定問(wèn)題組包括以下之一由所述表值函數(shù)返回的多個(gè)列、由所述表值函數(shù)返回的列名、以及由所述表值函數(shù)返回的列的類型。4.如權(quán)利要求1所述的方法,其特征在于,包括用優(yōu)化問(wèn)題組查詢所述信息類,所述優(yōu)化問(wèn)題組包括以下之一行是否在一組列上以己排序次序分組、列是否是唯一關(guān)鍵字列、表值函數(shù)是否是確定性的、以及表值函數(shù)是否訪問(wèn)外部數(shù)據(jù)源。5.如權(quán)利要求l所述的方法,其特征在于,包括用優(yōu)化問(wèn)題組查詢所述信息類,所述優(yōu)化問(wèn)題組包括對(duì)關(guān)于所述表值函數(shù)的結(jié)果的統(tǒng)計(jì)信息的請(qǐng)求。6.如權(quán)利要求5所述的方法,其特征在于,包括用優(yōu)化問(wèn)題組査詢所述信息類,所述優(yōu)化問(wèn)題組包括對(duì)統(tǒng)計(jì)信息的請(qǐng)求,所述統(tǒng)計(jì)信息包括以下之一將對(duì)所述表值函數(shù)的每一調(diào)用將返回的多個(gè)行、對(duì)參數(shù)值范圍將返回的多個(gè)行、對(duì)一組列將返回的多個(gè)重復(fù)值、以及描述從所述表值函數(shù)將返回的值的分布的直方圖。7.如權(quán)利要求l所述的方法,其特征在于,還包括從受管執(zhí)行環(huán)境中生成的用戶定義類中生成所述信息類。8.如權(quán)利要求l所述的方法,其特征在于,還包括依照響應(yīng)于所述綁定問(wèn)題組提供的信息綁定所述查詢。9.如權(quán)利要求1所述的方法,其特征在于,還包括依照響應(yīng)于所述優(yōu)化問(wèn)題組提供的信息優(yōu)化所述査詢。10.如權(quán)利要求l所述的方法,其特征在于,執(zhí)行所述査詢包括驗(yàn)證所述表值函數(shù)的能力的有效性;以及如果所述表值函數(shù)的能力無(wú)效,則生成一指示所述表值函數(shù)將不提供期望的輸出的出錯(cuò)消息。11.如權(quán)利要求10所述的方法,其特征在于,還包括如果所述表值函數(shù)的能力無(wú)效,則中止所述査詢的執(zhí)行。12.如權(quán)利要求1所述的方法,其特征在于,還包括調(diào)用所述表值函數(shù)以提供支持分層查詢操作的計(jì)算。13.如權(quán)利要求1所述的方法,其特征在于,還包括調(diào)用所述表值函數(shù)以提供用于對(duì)數(shù)據(jù)庫(kù)系統(tǒng)中的文件系統(tǒng)建模的目錄路徑的轉(zhuǎn)換。14.如權(quán)利要求1所述的方法,其特征在于,還包括調(diào)用所述表值函數(shù)以提供來(lái)自遠(yuǎn)程數(shù)據(jù)源的結(jié)果。15.—種用于表值函數(shù)的可擴(kuò)展生成的方法,所述方法包括提供使用戶能夠定義描述所述表值函數(shù)的能力的類的接口;將所述用戶定義的類編譯成二進(jìn)制數(shù)據(jù)文件;以及向數(shù)據(jù)庫(kù)服務(wù)器提交所述二進(jìn)制數(shù)據(jù)文件,所述數(shù)據(jù)庫(kù)服務(wù)器依照所述二進(jìn)制數(shù)據(jù)文件生成表值函數(shù)。16.如權(quán)利要求15所述的方法,其特征在于,包括在受管執(zhí)行環(huán)境中提供所述接口。17.如權(quán)利要求15所述的方法,其特征在于,還包括執(zhí)行調(diào)用所述表值函數(shù)來(lái)提供結(jié)果的査詢。18.如權(quán)利要求15所述的方法,其特征在于,還包括提供使用戶能夠定義描述所述表值函數(shù)的査詢綁定和査詢優(yōu)化能力的類的接口。19.一種用于有效地處理調(diào)用表值函數(shù)來(lái)提供結(jié)果的查詢的方法,所述方法包括標(biāo)識(shí)用于執(zhí)行所述査詢的關(guān)系操作;以及將所述關(guān)系操作的執(zhí)行推入到所述表值函數(shù)的執(zhí)行中;以及通過(guò)調(diào)用包括所推入的關(guān)系操作的表值函數(shù)來(lái)執(zhí)行所述査詢。20.如權(quán)利要求19所述的方法,其特征在于,將所述關(guān)系操作的執(zhí)行推入到所述表值函數(shù)的執(zhí)行中包括將所述關(guān)系操作編碼為所述表值函數(shù)的隱含自變量。21.如權(quán)利要求19所述的方法,其特征在于,將所述關(guān)系操作的執(zhí)行推入到所述表值函數(shù)的操作包括通過(guò)一在査詢期間生成一組輸出行的唯一類實(shí)現(xiàn)所述關(guān)系操作。22.—種用于處理調(diào)用表值函數(shù)來(lái)提供結(jié)果的查詢的系統(tǒng),所述系統(tǒng)包括一信息類生成器,它生成描述所述表值函數(shù)的能力的信息類;以及一査詢處理器,它用綁定問(wèn)題和優(yōu)化問(wèn)題查詢所述信息類,并依照響應(yīng)于所述綁定問(wèn)題和所述優(yōu)化問(wèn)題提供的信息執(zhí)行所述査詢。23.如權(quán)利要求22所述的系統(tǒng),其特征在于,還包括一受管執(zhí)行環(huán)境,它具有使用戶能夠定義從中可生成所述信息類的用戶定義類的接口。24.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述綁定問(wèn)題組包括以下之一由所述表值函數(shù)返回的多個(gè)列、由所述表值函數(shù)返回的列名、以及由所述表值函數(shù)返回的列的類型。25.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述優(yōu)化問(wèn)題組包括以下之一是否行在一組列上以已排序次序被分組、列是否為唯一關(guān)鍵字列、所述表值函數(shù)是否為確定性的、以及所述表值函數(shù)是否訪問(wèn)外部數(shù)據(jù)源。26.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述優(yōu)化問(wèn)題組包括對(duì)關(guān)于所述表值函數(shù)的結(jié)果的統(tǒng)計(jì)信息的請(qǐng)求。27.如權(quán)利要求26所述的系統(tǒng),其特征在于,所述統(tǒng)計(jì)信息包括以下之一對(duì)所述表值函數(shù)的每一調(diào)用將返回的多個(gè)行、對(duì)參數(shù)值范圍將返回的多個(gè)行、對(duì)一組列將返回的多個(gè)重復(fù)值、以及描述從所述表值函數(shù)將返回的值的分布的直方圖。28.如權(quán)利要求22所述的系統(tǒng),其特征在于,用于執(zhí)行所述査詢的關(guān)系操作被推入到所述表值函數(shù)中。29.如權(quán)利要求28所述的系統(tǒng),其特征在于,所述關(guān)系操作是過(guò)濾、投影和組合操作之一。30.—種其上儲(chǔ)存用于執(zhí)行以下步驟的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)生成描述表值函數(shù)的能力的信息類;用至少一個(gè)綁定問(wèn)題的組査詢所述信息類;用至少一個(gè)優(yōu)化問(wèn)題的組查詢所述信息類;以及依照響應(yīng)于所述綁定問(wèn)題組和所述優(yōu)化問(wèn)題組所提供的信息執(zhí)行查詢。31.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,用于執(zhí)行所述查詢的計(jì)算機(jī)可執(zhí)行指令包括計(jì)算機(jī)可執(zhí)行指令,用于生成對(duì)應(yīng)于所述表值函數(shù)的執(zhí)行類;向所述執(zhí)行類請(qǐng)求一組數(shù)據(jù)表行作為輸出;以及從所述執(zhí)行類接收所請(qǐng)求的行。32.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述綁定問(wèn)題組包括以下之一由所述表值函數(shù)返回的多個(gè)列、由所述表值函數(shù)返回的列名、以及由所述表值函數(shù)返回的列的類型。33.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述優(yōu)化問(wèn)題組包括以下之一行是否在一組列上以已排序次序被分組、列是否為唯一關(guān)鍵字列、所述表值函數(shù)是否為確定性的、以及所述表值函數(shù)是否訪問(wèn)外部數(shù)據(jù)源。34.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述優(yōu)化問(wèn)題組包括對(duì)關(guān)于所述表值函數(shù)的結(jié)果的統(tǒng)計(jì)信息的請(qǐng)求。35.如權(quán)利要求34所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述統(tǒng)計(jì)信息包括以下之一對(duì)所述表值函數(shù)的每一調(diào)用將返回的多個(gè)行、對(duì)參數(shù)值范圍將返回的多個(gè)行、對(duì)一組列將返回的多個(gè)重復(fù)值、以及描述從所述表值函數(shù)將返回的值的分布的直方圖。36.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,用于生成所述信息類的計(jì)算機(jī)可執(zhí)行指令包括用于從在一受管執(zhí)行環(huán)境中生成的用戶定義類生成所述信息類的計(jì)算機(jī)可執(zhí)行指令。37.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于依照響應(yīng)于所述綁定問(wèn)題組所提供的信息綁定所述查詢的計(jì)算機(jī)可執(zhí)行指令。38.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于依照響應(yīng)于所述優(yōu)化問(wèn)題組所提供的信息優(yōu)化所述查詢的計(jì)算機(jī)可執(zhí)行指令。39.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,用于執(zhí)行所述查詢的計(jì)算機(jī)可執(zhí)行指令包括計(jì)算機(jī)可執(zhí)行指令,用于驗(yàn)證所述表值函數(shù)的能力的有效性;以及如果所述表值函數(shù)的能力無(wú)效,則生成一指示所述表值函數(shù)將不提供期望輸出的出錯(cuò)消息。40.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括用于將用于執(zhí)行所述查詢的關(guān)系操作推入所述表值函數(shù)中的計(jì)算機(jī)可執(zhí)行指令。全文摘要本發(fā)明描述了一種用于在關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器中實(shí)現(xiàn)表值函數(shù)(TVF)的有效和快速的框架(圖2)。該框架提供了期望的可擴(kuò)展性屬性,并具有通過(guò)與查詢處理器中的優(yōu)化基礎(chǔ)結(jié)構(gòu)緊密集成來(lái)最小化性能退化的能力(圖2,106)。本發(fā)明也使諸如公共語(yǔ)言運(yùn)行庫(kù)(CLR)等受管執(zhí)行環(huán)境(MEE)能夠有效和動(dòng)態(tài)地用用戶提供的代碼擴(kuò)展數(shù)據(jù)庫(kù)引擎的邏輯(圖2,132、134、136)。文檔編號(hào)G06F7/00GK101223522SQ200480001694公開日2008年7月16日申請(qǐng)日期2004年7月29日優(yōu)先權(quán)日2004年3月19日發(fā)明者B·塞茲金,C·J·坎寧安,R·凡卡特施申請(qǐng)人:微軟公司