專(zhuān)利名稱(chēng)::類(lèi)型路徑索引的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及信息存儲(chǔ)和檢索領(lǐng)域,尤其涉及基于對(duì)象類(lèi)型的有效分層結(jié)構(gòu)搜索。
背景技術(shù):
:消費(fèi)者主要將其計(jì)算機(jī)用于傳送和組織個(gè)人信息,該信息是傳統(tǒng)個(gè)人信息管理器(PIM)類(lèi)型數(shù)據(jù)或諸如數(shù)字音樂(lè)或照片的媒體。數(shù)字內(nèi)容的量以及存儲(chǔ)原始字節(jié)的能力已大量增加;然而消費(fèi)者可用的用于組織和統(tǒng)一這些數(shù)據(jù)的方法卻沒(méi)有與之并駕齊驅(qū)。技術(shù)工人花費(fèi)大量的時(shí)間來(lái)管理和共享信息,并且某些研究估計(jì)技術(shù)工人在非生產(chǎn)信息的相關(guān)行為上花費(fèi)15-25%的時(shí)間。其它研究估計(jì)具有代表性的技術(shù)工人每天約花2.5個(gè)小時(shí)搜索信息。計(jì)算機(jī)系統(tǒng)中組織信息的傳統(tǒng)方法集中在對(duì)基于文件-文件夾-以及-基于目錄的系統(tǒng)(“文件系統(tǒng)”)的使用上,以基于用以存儲(chǔ)文件的存儲(chǔ)介質(zhì)的物理組織抽象將眾多文件組織到文件夾的目錄分層結(jié)構(gòu)中。在1960年代開(kāi)發(fā)的Multics操作系統(tǒng),因?yàn)槭讋?chuàng)文件、文件夾以及目錄的使用以在操作系統(tǒng)層上管理數(shù)據(jù)的可存儲(chǔ)單元而享譽(yù)。具體地,Multics在文件的分層結(jié)構(gòu)中使用符號(hào)地址(從而引入文件路徑的概念),其中文件的物理地址對(duì)用戶(應(yīng)用程序和終端用戶)不透明。該文件系統(tǒng)與任一單個(gè)文件的文件格式完全無(wú)關(guān),且文件之間的關(guān)系被認(rèn)為在操作系統(tǒng)層上是無(wú)關(guān)的(即與分層結(jié)構(gòu)中文件的位置不同)。由于Multics的出現(xiàn),可存儲(chǔ)數(shù)據(jù)在操作系統(tǒng)層上被組織成文件、文件夾以及目錄。這些文件一般包括由文件系統(tǒng)維護(hù)的體現(xiàn)為特定文件的文件分層結(jié)構(gòu)(“目錄”)本身。該目錄又維護(hù)對(duì)應(yīng)于該目錄中所有其它文件和分層結(jié)構(gòu)中這些文件的節(jié)點(diǎn)位置的一個(gè)條目列表(在此稱(chēng)為文件夾)。這已是本領(lǐng)域中約40年的狀態(tài)。然而,盡管提供了駐留于計(jì)算機(jī)物理存儲(chǔ)系統(tǒng)的信息的合理表示,文件系統(tǒng)仍然只是物理存儲(chǔ)系統(tǒng)的抽象,且因此文件的利用需要在用戶所操縱的(具有環(huán)境、特征、和與其它單元關(guān)系的單元)和操作系統(tǒng)所提供的(文件、文件夾和目錄)之間的一定程度的間接引用(解釋)。因此,用戶(應(yīng)用程序和/或終端用戶)就無(wú)法選擇而只能迫使信息單元進(jìn)入文件系統(tǒng)結(jié)構(gòu),即使這樣做是低效、不一致、或者不需要的。由于大多數(shù)現(xiàn)有文件系統(tǒng)利用嵌套文件夾形式來(lái)組織文件和文件夾,隨著文件數(shù)量的增加,保持靈活和高效的結(jié)構(gòu)配置所需的努力變得相當(dāng)令人畏懼。過(guò)去已進(jìn)行了若干次不成功的解決文件系統(tǒng)缺點(diǎn)的嘗試。這些先前嘗試的一部分涉及了內(nèi)容可尋址存儲(chǔ)器的使用,以提供一種可通過(guò)內(nèi)容而不是通過(guò)物理地址訪問(wèn)數(shù)據(jù)的機(jī)制。然而,這些努力已經(jīng)證明是不成功的,因?yàn)楸M管對(duì)諸如高速緩存和存儲(chǔ)器管理單元的裝置的小規(guī)模使用內(nèi)容可尋址存儲(chǔ)器已證明是有用的,但是對(duì)諸如物理存儲(chǔ)介質(zhì)的裝置的大規(guī)模使用由于各種原因尚不可能,因而這種方案就不存在了。也進(jìn)行了其它使用面向?qū)ο蟮臄?shù)據(jù)庫(kù)(OODB)系統(tǒng)的嘗試,但是這些嘗試盡管以強(qiáng)烈的數(shù)據(jù)庫(kù)特征和良好的非文件表示為特性,它在處理文件表示中并不有效,并且不能在硬件/軟件接口系統(tǒng)層上呈現(xiàn)基于文件和文件夾的分層結(jié)構(gòu)的速度、有效性、以及簡(jiǎn)單性。諸如“WinFS”(在后面描述)的新開(kāi)發(fā)的存儲(chǔ)系統(tǒng)將文件的目錄存儲(chǔ)為數(shù)據(jù)庫(kù)中的表格。每個(gè)文件由表格中的行表示,而諸如“枚舉目錄中所有文件”的文件系統(tǒng)操作使用依靠數(shù)據(jù)庫(kù)引擎的查詢來(lái)滿足。依靠存儲(chǔ)器有效地執(zhí)行基本操作變成了有效最優(yōu)化數(shù)據(jù)庫(kù)查詢的操作。在這種存儲(chǔ)系統(tǒng)中,文件的概念被擴(kuò)展成“對(duì)象”的概念。有關(guān)該文件的元數(shù)據(jù)被存儲(chǔ)在帶有模式(在存儲(chǔ)系統(tǒng)中定義)的受管理CLR(公共語(yǔ)言運(yùn)行時(shí))對(duì)象中以表示該對(duì)象的可允許描述數(shù)據(jù)。例如,照片會(huì)具有存儲(chǔ)諸如其分辨率、拍攝時(shí)間、以及地點(diǎn)信息的數(shù)據(jù)的代表性CLR對(duì)象。該對(duì)象模型支持?jǐn)?shù)據(jù)繼承。有了數(shù)據(jù)繼承,從一類(lèi)型推出另一類(lèi)型以及添加新字段就成為可能。例如,可創(chuàng)建照片的子類(lèi),諸如“DriverLicensePicture”。這種子類(lèi)可包含額外的信息,諸如司機(jī)駕照的ID字段。在諸如WINFS的這些新開(kāi)發(fā)存儲(chǔ)系統(tǒng)中,所展現(xiàn)的模式通過(guò)解釋層映射到表格上。用戶僅看到一系列數(shù)據(jù)的視圖而不是在基本表格上的操作。盡管這種映射的精確設(shè)計(jì)并不重要,但它用作WinFSAPI和基礎(chǔ)存儲(chǔ)格式之間的粘合劑。用戶不直接控制或看到這種映射。WinFS存儲(chǔ)還展現(xiàn)基于其類(lèi)型而不是早先傳統(tǒng)文件系統(tǒng)中的文件名字來(lái)查詢對(duì)象的概念?;陬?lèi)型的查詢可搜索從給定類(lèi)型導(dǎo)出的精確類(lèi)型或任意類(lèi)型。這種新近的形式被稱(chēng)為分層結(jié)構(gòu)匹配,且它被期望成為普通的WinFS操作。WinFS模式模型對(duì)查詢處理器添加了某些新的挑戰(zhàn)。用戶定義類(lèi)型或UDT被廣泛使用,且基于UDT類(lèi)型從表格中檢索所有UDT是普遍的。此外,WinFS使用UDT繼承,且要求從表格中查詢給定類(lèi)型以及任何子類(lèi)型的所有元素。存在著多個(gè)表格,每一個(gè)包含不同數(shù)量的UDT、類(lèi)型、類(lèi)型拓?fù)?、以及該拓?fù)渲械腢DT分布。這些屬性使得準(zhǔn)確的基數(shù)和成本估算較為困難,也使基于類(lèi)型/子類(lèi)型分層結(jié)構(gòu)有效地檢索值較為困難??紤]到現(xiàn)有數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)庫(kù)技術(shù)中的前述缺陷,需要有效的分層結(jié)構(gòu)檢索和成本估算。本發(fā)明滿足這些需要。
發(fā)明內(nèi)容以下
發(fā)明內(nèi)容提供了本發(fā)明各方面的縱覽。它并非旨在提供本發(fā)明所有重要方面的所有描述,也不旨在定義本發(fā)明的范圍。相反,本
發(fā)明內(nèi)容旨在用作隨后詳細(xì)說(shuō)明書(shū)和附圖的緒論。本發(fā)明涉及基于對(duì)象類(lèi)型進(jìn)行有效的分層結(jié)構(gòu)搜索。通過(guò)預(yù)先計(jì)算附加特定信息并將其存儲(chǔ)在快速查找結(jié)構(gòu)中,就可能快速標(biāo)識(shí)滿足對(duì)象檢索請(qǐng)求的對(duì)象。此外,也可能使用這些技術(shù)來(lái)避免存儲(chǔ)中特定操作的昂貴的對(duì)象水合(hydration)。此外,可能以新的方式發(fā)揮數(shù)據(jù)庫(kù)統(tǒng)計(jì)結(jié)構(gòu)的作用,從而無(wú)需檢查每個(gè)對(duì)象就能估算合格對(duì)象的數(shù)量。從以下本發(fā)明的詳細(xì)說(shuō)明書(shū)和附圖中,本發(fā)明的其它特征和優(yōu)點(diǎn)變得顯然。前述
發(fā)明內(nèi)容以及以下較佳實(shí)施例的詳細(xì)描述,在結(jié)合附圖閱讀時(shí)能更好地理解。為了說(shuō)明本發(fā)明,在附圖中示出了本發(fā)明的示例性結(jié)構(gòu);然而,本發(fā)明并不限于所揭示的特定方法和裝置。在附圖中圖1是示出本發(fā)明各方面可被結(jié)合在其中的計(jì)算機(jī)系統(tǒng)的框圖;圖2是示出一計(jì)算機(jī)系統(tǒng)的框圖,該系統(tǒng)被分成3個(gè)組件組硬件組件、操作系統(tǒng)組件、以及應(yīng)用程序組件;圖3示出了在文件夾中分組的文件的基于樹(shù)的分層結(jié)構(gòu);圖4示出可用于本發(fā)明的示例性存儲(chǔ)平臺(tái);圖5示出基于對(duì)象類(lèi)型和子類(lèi)型的對(duì)象的典型分層結(jié)構(gòu);圖6示出根據(jù)本發(fā)明的標(biāo)注類(lèi)型分層結(jié)構(gòu);圖7示出一常規(guī)直方圖;圖8示出能夠根據(jù)本發(fā)明構(gòu)建的直方圖;圖9示出根據(jù)本發(fā)明產(chǎn)生的選擇性估算的示例性方法的流程圖。具體實(shí)施例方式本發(fā)明主題用符合法定要求的特征進(jìn)行描述。然而,說(shuō)明書(shū)本身并非旨在限制本專(zhuān)利的范圍。相反,發(fā)明者預(yù)期所揭示主題也可結(jié)合其它現(xiàn)有或?qū)?lái)的技術(shù)以其它方式體現(xiàn),包括與本文檔所述步驟不同的步驟或者類(lèi)似步驟的組合。此外,盡管術(shù)語(yǔ)“步驟”可在此使用以隱含所采用方法的不同元素,該術(shù)語(yǔ)仍不應(yīng)被解釋為暗示在此揭示的各個(gè)步驟之間的任何特定順序,除非明確地描述了各個(gè)步驟的順序??v覽本發(fā)明涉及基于對(duì)象類(lèi)型的有效分層結(jié)構(gòu)搜索。通過(guò)預(yù)先計(jì)算附加特定信息并將其存儲(chǔ)在快速查找結(jié)構(gòu)中,就可能快速標(biāo)識(shí)滿足對(duì)象檢索請(qǐng)求的對(duì)象。此外,也可能使用這些技術(shù)來(lái)避免存儲(chǔ)中特定操作的昂貴的對(duì)象水合。此外,可能以新的方式發(fā)揮數(shù)據(jù)庫(kù)統(tǒng)計(jì)結(jié)構(gòu)的作用,從而無(wú)需檢查每個(gè)對(duì)象就能估算出合格對(duì)象的數(shù)量。本發(fā)明提供對(duì)表格中特定類(lèi)型的值,或其類(lèi)型在以類(lèi)型分層結(jié)構(gòu)中給定類(lèi)型為根的樹(shù)中的值的快速檢索。B-樹(shù)索引具有找到一特定位置并檢索具有一值(例如路徑類(lèi)型)的對(duì)象或一系列具有相同值的對(duì)象的能力。此外,還可能根據(jù)對(duì)象值的前綴尋找并返回都包含同一前綴的值的范圍。這些屬性可發(fā)揮作用來(lái)基于類(lèi)型或類(lèi)型分層結(jié)構(gòu)作有效檢索。WinFS是在文件系統(tǒng)中引入對(duì)象概念的文件系統(tǒng)/數(shù)據(jù)存儲(chǔ)。在該存儲(chǔ)中的操作之一是能夠基于其類(lèi)型有效查找和查詢對(duì)象。本發(fā)明描述如何才能非常有效地執(zhí)行該操作。本發(fā)明提供一內(nèi)建功能的界面,該功能用于提供UDT分層結(jié)構(gòu)類(lèi)型id。分層結(jié)構(gòu)類(lèi)型id是在類(lèi)型分層結(jié)構(gòu)中唯一標(biāo)識(shí)UDT類(lèi)型表達(dá)式的可變二進(jìn)制(varbinary)值。通過(guò)在查詢中和在創(chuàng)建適當(dāng)?shù)囊延?jì)算的列索引中使用該功能,來(lái)支持有效的UDT類(lèi)型分層結(jié)構(gòu)。示例性計(jì)算環(huán)境當(dāng)在此和在權(quán)利要求書(shū)中使用時(shí),以下術(shù)語(yǔ)具有以下含義“對(duì)象”是硬件/軟件接口系統(tǒng)可訪問(wèn)的可存儲(chǔ)信息單元,它具有在由硬件/軟件接口系統(tǒng)外殼展現(xiàn)給終端用戶的所有對(duì)象上共同支持的一個(gè)基本屬性集。對(duì)象還具有所有類(lèi)型上共同支持的包括允許引入新屬性和關(guān)系的特征的屬性和關(guān)系?!安僮飨到y(tǒng)”(OS)是作為應(yīng)用程序和計(jì)算機(jī)硬件之間中間體的特定程序。在大多數(shù)情形中,操作系統(tǒng)包括外殼和內(nèi)核?!坝布?軟件接口系統(tǒng)”是軟件、或硬件和軟件的組合,用作計(jì)算機(jī)系統(tǒng)的下層硬件組件和在該計(jì)算機(jī)系統(tǒng)上執(zhí)行的應(yīng)用程序之間的接口。硬件/軟件接口系統(tǒng)通常包括(以及在某些實(shí)施例中僅包括)操作系統(tǒng)。硬件/軟件接口系統(tǒng)還可包括虛擬機(jī)器管理器(VMM)、公共語(yǔ)言運(yùn)行時(shí)(CLR)或其功能等效實(shí)體、Java虛擬機(jī)器或其功能對(duì)象實(shí)體、或者其它這樣的替換或添加在計(jì)算機(jī)系統(tǒng)操作系統(tǒng)之上的軟件組件。硬件/軟件接口系統(tǒng)的目的是提供用戶可執(zhí)行應(yīng)用程序的環(huán)境。任意硬件/軟件接口系統(tǒng)的目標(biāo)是使計(jì)算機(jī)系統(tǒng)能以有效方式使用以及利用計(jì)算機(jī)硬件。本發(fā)明的眾多實(shí)施例可在計(jì)算機(jī)上執(zhí)行。圖1和以下討論旨在提供一種本發(fā)明可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境的簡(jiǎn)要一般說(shuō)明。盡管不是必需的,本發(fā)明將在由諸如客戶機(jī)工作站或服務(wù)器的計(jì)算機(jī)執(zhí)行的諸如程序模塊的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中進(jìn)行說(shuō)明。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。此外,本領(lǐng)域技術(shù)人員將理解,本發(fā)明可在其它計(jì)算機(jī)系統(tǒng)配置中實(shí)踐,包括手持式裝置、多處理器系統(tǒng)、基于微處理器的或可編程的電器消費(fèi)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可被置于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。如圖1所示,示例性通用計(jì)算系統(tǒng)具有常規(guī)個(gè)人計(jì)算機(jī)20等,包括處理單元21、系統(tǒng)存儲(chǔ)器22以及把包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可能是若干總線結(jié)構(gòu)類(lèi)型中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及使用多種總線架構(gòu)的任一種的局部總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)24和隨機(jī)存儲(chǔ)器(RAM)25。含有幫助如啟動(dòng)期間在個(gè)人計(jì)算機(jī)20中元件之間信息交換的基本例程的基本輸入/輸出系統(tǒng)(BIOS)26被存儲(chǔ)在ROM24中。個(gè)人計(jì)算機(jī)20還包括讀取和寫(xiě)入硬盤(pán)(未示出)的硬盤(pán)驅(qū)動(dòng)器27、讀取或?qū)懭肟梢苿?dòng)磁盤(pán)29的磁盤(pán)驅(qū)動(dòng)器28、以及讀取或?qū)懭胫T如CDROM或其它光學(xué)介質(zhì)等可移動(dòng)光盤(pán)31的光盤(pán)驅(qū)動(dòng)器30。硬盤(pán)驅(qū)動(dòng)器27、磁盤(pán)驅(qū)動(dòng)器28和光盤(pán)驅(qū)動(dòng)器30分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口32、磁盤(pán)驅(qū)動(dòng)器接口33和光盤(pán)驅(qū)動(dòng)器接口34連接至系統(tǒng)總線23。諸驅(qū)動(dòng)器及其相關(guān)聯(lián)計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)20提供計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性儲(chǔ)存。盡管在此所述示例性環(huán)境采用了硬盤(pán)、可移動(dòng)磁盤(pán)29和可移動(dòng)光盤(pán)31,但本領(lǐng)域技術(shù)人員應(yīng)理解也可在示例性操作環(huán)境中使用其它類(lèi)型計(jì)算機(jī)可訪問(wèn)的能夠存儲(chǔ)數(shù)據(jù)的計(jì)算機(jī)可讀介質(zhì),諸如磁盒、閃存卡、數(shù)字視頻盤(pán)、Bernoulli卡、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等等。包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其它程序模塊37和程序數(shù)據(jù)38的眾多程序模塊,可存儲(chǔ)在硬盤(pán)、磁盤(pán)29、光盤(pán)31、ROM24或RAM25中。用戶可通過(guò)諸如鍵盤(pán)40和定點(diǎn)裝置42的輸入裝置把指令和信息輸入個(gè)人計(jì)算機(jī)20。其它輸入裝置(未示出)可包括諸如話筒、游戲桿、游戲墊、衛(wèi)星接收器、掃描儀等等。這些和其它輸入裝置常常通過(guò)與系統(tǒng)總線相耦合的串行端口接口46連接到處理單元21,但是它也可通過(guò)其它接口相連,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器47或其它類(lèi)型的顯示裝置也通過(guò)諸如視頻適配器48的接口和系統(tǒng)總線23相連。除了顯示器47,個(gè)人計(jì)算機(jī)通常包括其它外圍輸出裝置(未示出),如揚(yáng)聲器和打印機(jī)。圖1的示例性系統(tǒng)還包括主機(jī)適配器55、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56、以及與SCSI總線56相連的外部存儲(chǔ)裝置62。個(gè)人計(jì)算機(jī)20可以在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)49的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)49可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等裝置或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),而且通常包括上述與個(gè)人計(jì)算機(jī)20相關(guān)的許多或全部元件,盡管在圖1中僅顯示了存儲(chǔ)器存儲(chǔ)裝置50。圖1中所描繪的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。這樣的網(wǎng)絡(luò)化環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、企業(yè)內(nèi)聯(lián)網(wǎng)和因特網(wǎng)上是常見(jiàn)的。當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時(shí),個(gè)人計(jì)算機(jī)20通過(guò)網(wǎng)絡(luò)接口或適配器53與LAN51連接。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境中時(shí),個(gè)人計(jì)算機(jī)20通常包括調(diào)制解調(diào)器54或其它用于在諸如因特網(wǎng)的廣域網(wǎng)52上建立通信的裝置??梢允莾?nèi)置式或外置式的調(diào)制解調(diào)器54,與系統(tǒng)總線23通過(guò)串行端口接口46相連接。在網(wǎng)絡(luò)化環(huán)境中,所述與個(gè)人計(jì)算機(jī)20相關(guān)的程序模塊或其一部分,可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)裝置中??梢岳斫?,所示網(wǎng)絡(luò)連接是示例性的,也可以使用其它在計(jì)算機(jī)之間建立通信連接的裝置。盡管可以想像本發(fā)明的眾多實(shí)施例特別適合于計(jì)算機(jī)化系統(tǒng),但本文檔中沒(méi)有任何描述旨在將本發(fā)明限制在這些實(shí)施例中。相反,在此使用的術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”旨在包括任意和所有包括按鈕、或者能夠確定按鈕按壓或按鈕按壓的等效動(dòng)作的裝置,無(wú)論這種裝置是電子、機(jī)械、邏輯的,還是實(shí)際上是虛擬的。如圖2框圖所示,計(jì)算機(jī)系統(tǒng)200可被粗略劃分成3個(gè)組件組硬件組件202、操作系統(tǒng)組件204、以及應(yīng)用程序組件206。再參照?qǐng)D1,在某些計(jì)算機(jī)系統(tǒng)200中,硬件202可包括中央處理單元(CPU)21、存儲(chǔ)器(ROM24和RAM25)、基本輸入/輸出系統(tǒng)(BIOS)26、以及各種輸入/輸出(I/O)設(shè)備,諸如鍵盤(pán)40、鼠標(biāo)42、監(jiān)視器47、和/或打印機(jī)(未示出)等等。硬件組件202包括計(jì)算機(jī)系統(tǒng)200的基本資源。應(yīng)用程序組件206包括各種軟件程序,包括但不限于編譯器、數(shù)據(jù)庫(kù)系統(tǒng)、字處理器、商業(yè)程序、視頻游戲等。應(yīng)用程序提供計(jì)算機(jī)資源用來(lái)為各種用戶(例如機(jī)器、其它計(jì)算機(jī)系統(tǒng)、和/或終端用戶)解決問(wèn)題、提供解決方案、并處理數(shù)據(jù)的手段。操作系統(tǒng)組件204包括操作系統(tǒng)本身及其外殼和內(nèi)核?!安僮飨到y(tǒng)”(OS)是作為應(yīng)用程序和計(jì)算機(jī)硬件之間中間體的特定程序,且其目的是提供用戶可在其中執(zhí)行應(yīng)用程序的環(huán)境。任何硬件/軟件接口系統(tǒng)的目的都是使該計(jì)算機(jī)系統(tǒng)能以有效方式使用及利用計(jì)算機(jī)硬件。操作系統(tǒng)通常在起動(dòng)時(shí)被載入計(jì)算機(jī)系統(tǒng)中,然后管理計(jì)算機(jī)系統(tǒng)的所有應(yīng)用程序(或簡(jiǎn)稱(chēng)為“應(yīng)用”)。通過(guò)經(jīng)應(yīng)用程序接口(API)請(qǐng)求服務(wù),應(yīng)用程序與硬件/軟件接口系統(tǒng)交互作用。某些應(yīng)用程序使終端用戶能通過(guò)諸如公共語(yǔ)言或圖形用戶界面(GUI)與硬件/軟件接口系統(tǒng)交互。操作系統(tǒng)通常執(zhí)行對(duì)應(yīng)用程序的各種服務(wù)。在多個(gè)程序可同時(shí)運(yùn)行其中的多任務(wù)操作系統(tǒng)中,操作系統(tǒng)確定哪些應(yīng)用程序應(yīng)以什么順序運(yùn)行,以及每個(gè)應(yīng)用程序每一輪在切換到另一應(yīng)用程序之前應(yīng)給予多少時(shí)間。操作系統(tǒng)還管理多個(gè)應(yīng)用程序之間對(duì)內(nèi)部存儲(chǔ)器的共享,并處理諸如硬盤(pán)、打印機(jī)、以及撥號(hào)端口的附加硬件裝置的輸入輸出。操作系統(tǒng)還向每個(gè)應(yīng)用程序(以及在某些情形中向終端用戶)發(fā)送關(guān)于操作狀態(tài)和任何已發(fā)生錯(cuò)誤的消息。操作系統(tǒng)還可卸載對(duì)成批作業(yè)(例如打印)的管理,從而從該工作釋放起動(dòng)應(yīng)用程序,并可恢復(fù)其它處理和/或操作。在可提供并行處理的計(jì)算機(jī)上,操作系統(tǒng)還管理分割程序使其同時(shí)在一個(gè)以上處理器上運(yùn)行。操作系統(tǒng)外殼是與操作系統(tǒng)的交互性終端用戶接口(也稱(chēng)為“命令解釋程序”)。外殼是應(yīng)用程序甚至終端用戶可直接訪問(wèn)的操作系統(tǒng)的外層。與外殼相比,內(nèi)核是可直接與硬件組件交互的操作系統(tǒng)的最里層。如相關(guān)領(lǐng)域中技術(shù)人員所理解的,“文件”是可作為離散(可存儲(chǔ)和可檢索)實(shí)體由操作系統(tǒng)操縱的信息實(shí)體(包括但不限于操作系統(tǒng)本身、以及應(yīng)用程序、數(shù)據(jù)集等)。在現(xiàn)代操作系統(tǒng)中(Windows、Unix、Linux、MacOS等等),文件是由操作系統(tǒng)操縱的可存儲(chǔ)信息的基本單元(例如數(shù)據(jù)、程序等),且文件組通常被組織于“文件夾”中。在微軟Windows、MacOS、以及其它操作系統(tǒng)中,文件夾是可作為單個(gè)信息單元被檢索、移動(dòng)、以及用其它方式操縱的文件集合。在某些其它操作系統(tǒng)中,諸如DOS、z/OS以及大多數(shù)基于Unix的操作系統(tǒng)中,使用的是術(shù)語(yǔ)“目錄”而不是文件夾,且早期的Apple計(jì)算機(jī)系統(tǒng)(例如AppleIIe)使用術(shù)語(yǔ)“名錄”(catalog);然而,在此使用的所有這些術(shù)語(yǔ)都被認(rèn)為是同義的和可互換的,并旨在進(jìn)一步包括所有用于分層信息存儲(chǔ)結(jié)構(gòu)的其它等效術(shù)語(yǔ)和引用。如本領(lǐng)域技術(shù)人員所眾所周知和理解的,目錄(即文件夾目錄)是基于樹(shù)的分層結(jié)構(gòu),其中文件基于在包括樹(shù)結(jié)構(gòu)的節(jié)點(diǎn)的文件夾中的位置進(jìn)行分組。例如,如圖3所示,基于DOS的文件系統(tǒng)基本文件夾(或“根目錄”)302可包括多個(gè)文件夾304,每個(gè)又可包括其它文件夾(作為該特定文件夾的“子文件夾”)306,而每個(gè)306又可包括其它文件夾308以至無(wú)限。每個(gè)這些文件夾具有一個(gè)或多個(gè)文件310,盡管在硬件/軟件接口系統(tǒng)層上,文件夾中的單個(gè)文件除了它們?cè)跇?shù)分層結(jié)構(gòu)中的位置外并沒(méi)有什么相同。這種將文件組織到文件夾分層結(jié)構(gòu)的方法間接地反映了用于存儲(chǔ)這些文件的典型存儲(chǔ)介質(zhì)的物理組織(例如硬盤(pán)、軟盤(pán)、CD-ROM等),并不令人驚訝。除此之外,每個(gè)文件夾都是其子文件夾及其文件的容器-即每個(gè)文件夾都擁有其子文件夾和文件。例如,當(dāng)文件夾被操作系統(tǒng)刪除時(shí),也刪除了該文件夾的子文件夾和文件(在每個(gè)子文件夾情形中還遞歸地包括它自己的子文件夾和文件)。類(lèi)似地,通常每個(gè)文件都僅歸一個(gè)文件夾所有,即使可復(fù)制文件且該副本位于不同文件夾中,文件副本本身仍是與原始文件無(wú)直接聯(lián)系的不同的獨(dú)立單元(例如在操作系統(tǒng)層上對(duì)原始文件的改動(dòng)不會(huì)被映射到副本文件中去)。在這點(diǎn)上,文件夾和文件實(shí)際上因此在特征上是“物理的”,因?yàn)槲募A是物理容器概念的等效實(shí)體,而文件是容器內(nèi)離散而獨(dú)立的物理單元概念的等效實(shí)體。可用于本發(fā)明的用于組織、搜索、以及共享數(shù)據(jù)的存儲(chǔ)平臺(tái)被設(shè)計(jì)成包括稱(chēng)為對(duì)象的數(shù)據(jù)形式的所有數(shù)據(jù)類(lèi)型的存儲(chǔ)器。參見(jiàn)圖4,根據(jù)本發(fā)明的存儲(chǔ)平臺(tái)400包括在數(shù)據(jù)庫(kù)引擎414上實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)器402。在一實(shí)施例中,該數(shù)據(jù)庫(kù)引擎包括帶有對(duì)象關(guān)系擴(kuò)展的關(guān)系數(shù)據(jù)庫(kù)引擎。在一實(shí)施例中,關(guān)系數(shù)據(jù)庫(kù)引擎414包括微軟SQL服務(wù)器關(guān)系數(shù)據(jù)庫(kù)引擎。數(shù)據(jù)存儲(chǔ)器402實(shí)現(xiàn)一數(shù)據(jù)模型404,它支持?jǐn)?shù)據(jù)的組織、搜索、共享、同步、以及安全。特定數(shù)據(jù)類(lèi)型在諸如模式440的模式中描述,并且存儲(chǔ)平臺(tái)400提供用于使用這些模式以及擴(kuò)展這些模式的工具446,以下進(jìn)行更全面描述。在數(shù)據(jù)存儲(chǔ)器402中實(shí)現(xiàn)的改變跟蹤機(jī)制406提供跟蹤數(shù)據(jù)存儲(chǔ)器改變的能力。數(shù)據(jù)存儲(chǔ)器402還提供安全能力408和升級(jí)/降級(jí)能力410。數(shù)據(jù)存儲(chǔ)器402還提供一組應(yīng)用編程接口412以向利用該存儲(chǔ)平臺(tái)的其它存儲(chǔ)平臺(tái)組件和應(yīng)用程序(例如應(yīng)用程序450a、450b和450c)展現(xiàn)數(shù)據(jù)存儲(chǔ)器402的能力。本發(fā)明的存儲(chǔ)平臺(tái)還包括應(yīng)用編程接口(API)422,它使諸如應(yīng)用程序450a、450b和450c的應(yīng)用程序能夠訪問(wèn)該存儲(chǔ)平臺(tái)的所有前述能力,并能夠訪問(wèn)模式中所述數(shù)據(jù)。存儲(chǔ)平臺(tái)API422可由應(yīng)用程序以及與其它API的組合中使用,諸如OLEDBAPI424和微軟WindowsWin32API426。本發(fā)明的存儲(chǔ)平臺(tái)400還向應(yīng)用程序提供各種服務(wù)428,包括便于用戶或系統(tǒng)之間數(shù)據(jù)共享的同步服務(wù)430。例如,同步服務(wù)430可使得能夠具有與數(shù)據(jù)存儲(chǔ)器402相同格式的其它數(shù)據(jù)存儲(chǔ)器430的互操作性,以及對(duì)具有其它格式的數(shù)據(jù)存儲(chǔ)器442的訪問(wèn)。存儲(chǔ)平臺(tái)400還提供允許數(shù)據(jù)存儲(chǔ)器402有與諸如WindowsNTFS文件系統(tǒng)418的現(xiàn)有文件系統(tǒng)的互操作性的文件系統(tǒng)能力。在至少某些實(shí)施例中,存儲(chǔ)平臺(tái)402還可提供具有其它能力的應(yīng)用程序,這些能力用于啟用數(shù)據(jù)操作并啟用與其它系統(tǒng)的交互。這些能力可用諸如信息代理服務(wù)434和通知服務(wù)432的附加服務(wù)428的形式,以及其它實(shí)用程序436的形式體現(xiàn)。在至少某些實(shí)施例中,存儲(chǔ)平臺(tái)被包括在計(jì)算機(jī)系統(tǒng)的硬件/軟件接口系統(tǒng)中,或形成其一構(gòu)成部分。作為示例,并非限制,本發(fā)明的存儲(chǔ)平臺(tái)可被包括在操作系統(tǒng)、虛擬機(jī)管理器(VMM)、公共語(yǔ)言運(yùn)行時(shí)(CLR)或其功能等效組件、或者Java虛擬機(jī)或其功能等效組件中,或形成其一構(gòu)成部分。通過(guò)其公共存儲(chǔ)基礎(chǔ)以及經(jīng)模式化的數(shù)據(jù),本發(fā)明的存儲(chǔ)平臺(tái)為消費(fèi)者、技術(shù)工人以及企業(yè)使得能夠更有效地進(jìn)行應(yīng)用程序開(kāi)發(fā)。它提供一個(gè)豐富并可擴(kuò)展的編程表面區(qū),不僅使這些在其數(shù)據(jù)模型中固有的能力可用,而且還包括并擴(kuò)展了現(xiàn)有文件系統(tǒng)和數(shù)據(jù)庫(kù)訪問(wèn)方法。在本說(shuō)明書(shū)及各附圖中,本發(fā)明的存儲(chǔ)平臺(tái)400可稱(chēng)為“WinFS”。然而,使用該名字來(lái)代表存儲(chǔ)平臺(tái)完全是為了方便描述而不是旨在以任何方式進(jìn)行限制。本發(fā)明的存儲(chǔ)平臺(tái)400的數(shù)據(jù)存儲(chǔ)器402實(shí)現(xiàn)了一數(shù)據(jù)模型,它支持駐留于存儲(chǔ)器中數(shù)據(jù)的組織、搜索、共享、同步以及安全。在本發(fā)明的數(shù)據(jù)模型中,對(duì)象是存儲(chǔ)信息的基本單元。該數(shù)據(jù)模型提供一種機(jī)制,用于聲明對(duì)象和對(duì)象擴(kuò)展,并用于建立對(duì)象之間的關(guān)系,以及用于組織和分類(lèi)對(duì)象,如下進(jìn)行更全面描述。該數(shù)據(jù)模型允許定義類(lèi)型之間子類(lèi)-父類(lèi)關(guān)系。子類(lèi)-父類(lèi)關(guān)系被這樣定義如果類(lèi)型A是類(lèi)型B的基類(lèi),則必然B的每個(gè)實(shí)例也是A的實(shí)例。另一種表達(dá)方式是遵從B的每個(gè)實(shí)例必然也遵從A。如果,例如A具有類(lèi)型為字符串的屬性名字,而B(niǎo)具有類(lèi)型為16位整數(shù)的屬性年齡,則可理解為B的任一實(shí)例必然具有名字和年齡。類(lèi)型分層結(jié)構(gòu)可視為以單個(gè)父類(lèi)為根的樹(shù)。根的分支提供第一層的子類(lèi),該層的分支提供第二層的子類(lèi)等等直到本身不具有任何子類(lèi)的葉端子類(lèi)。該樹(shù)不限于統(tǒng)一深度,但不能包含任何循環(huán)。一給定類(lèi)型可具有零個(gè)或多個(gè)子類(lèi)以及零個(gè)或一個(gè)父類(lèi)。給定實(shí)例可遵從最多一個(gè)類(lèi)以及該類(lèi)的父類(lèi)。換言之,對(duì)于樹(shù)上任意層的給定實(shí)例,該實(shí)例可遵從該層上至多一個(gè)子類(lèi)。在一實(shí)施例中包括微軟SQL服務(wù)器引擎的關(guān)系數(shù)據(jù)庫(kù)引擎414,支持內(nèi)建標(biāo)量類(lèi)型。內(nèi)建標(biāo)量類(lèi)型是“固有”并“簡(jiǎn)單”的。因?yàn)橛脩舨荒芏x自己的類(lèi)型所以它們是固有的,而因?yàn)樗鼈儾荒芊庋b復(fù)雜結(jié)構(gòu)所以它們是簡(jiǎn)單的。用戶定義類(lèi)型(“UDT”)通過(guò)使用戶能定義復(fù)雜的結(jié)構(gòu)化類(lèi)型而擴(kuò)展類(lèi)型系統(tǒng)來(lái)提供固有標(biāo)量類(lèi)型系統(tǒng)之上和之外的類(lèi)型可擴(kuò)展性的機(jī)制。一旦由用戶定義了,就可在使用內(nèi)容標(biāo)量類(lèi)型的類(lèi)型系統(tǒng)中的任何地方使用UDT。該存儲(chǔ)平臺(tái)模式被映射到數(shù)據(jù)庫(kù)引擎存儲(chǔ)中的UDT類(lèi)。數(shù)據(jù)存儲(chǔ)對(duì)象被映射到從Base.Item例行得出的UDT類(lèi)。擴(kuò)展還被映射到UDT類(lèi)并使用分層結(jié)構(gòu)。根據(jù)擴(kuò)展例行是Base.Extension,所有的擴(kuò)展類(lèi)型由此導(dǎo)出。UDT是一個(gè)CLR類(lèi)-它具有狀態(tài)(即數(shù)據(jù)字段)和行為(即例程)。使用任一種管理語(yǔ)言來(lái)定義UDT-C#、VB.NET等等。UDT方法和操作符可依靠該類(lèi)的實(shí)例用T-SQL調(diào)用。UDT可以是例如一行中列的類(lèi)型、T-SQL中例程的參數(shù)類(lèi)型、或者T-SQL中的變量類(lèi)型。以下實(shí)例示出UDT的基礎(chǔ)。假設(shè)MapLib.dll有稱(chēng)為MapLib的匯編。在此匯編中,有在名字空間BaseTypes之下稱(chēng)為Point的類(lèi)。namespaceBaseTypes{publicclassPoint{//returnsthedistancefromthespecifiedpoint.publicdoubleDistance(Pointp){//returnthedistancebetweenPointpandthisPoint}//otherstuffintheclass}}以下的T-SQL代碼將類(lèi)Point綁定到稱(chēng)為Point的SQL服務(wù)器UDT。第一步調(diào)用將MapLib匯編載入數(shù)據(jù)庫(kù)的“CreateAssembly”。第二步調(diào)用“CreateType”以創(chuàng)建用戶定義類(lèi)“Point”并將其綁定到受管理類(lèi)BaseTypes.PointCREATEASSEMBLYMapLibFROM‘\\mysrv\share/MapLib.dll’goCREATETYPEPointEXTERNALNAME‘BaseTypes.Point’go一旦已創(chuàng)建,“Point”UDT就可被用作表格中的列,且可在T-SQL中調(diào)用方法,如下所示CreatetableCities(Namevarchar(20),Statevarchar(20),LocationPoint)--RetrievetheDistanceofthecities--fromco-ordinates(32,23)Declare@ppoint(32,23),@distancefloatSelectLocation∷Distance(@p)FromCities存儲(chǔ)平臺(tái)模式到UDT類(lèi)的映射在高層次上是相當(dāng)直接的。一般而言,存儲(chǔ)平臺(tái)模式被映射到CLR名字空間。存儲(chǔ)平臺(tái)類(lèi)型被映射到CLR類(lèi)。CLR類(lèi)繼承映射鏡像存儲(chǔ)平臺(tái)類(lèi)型繼承,而存儲(chǔ)平臺(tái)屬性被映射到CLR類(lèi)屬性。示例性實(shí)施例典型的數(shù)據(jù)存儲(chǔ)包括一個(gè)基本對(duì)象的表格,其中每一個(gè)都具有諸如UDT的類(lèi)型。可向類(lèi)型添加行為(也稱(chēng)為方法)。部分較新的數(shù)據(jù)存儲(chǔ)提供繼承,其中類(lèi)型可用其它方法擴(kuò)展以創(chuàng)建新的類(lèi)型。例如,類(lèi)型可以是諸如“.doc”或“.jpeg”的擴(kuò)展。這些類(lèi)型的繼承擴(kuò)展可以是例如“.doc2”或“.jpeg2”。本發(fā)明允許在類(lèi)型上的查詢(即不僅是對(duì)“.doc”而且是對(duì)“.doc”擴(kuò)展的查詢)。類(lèi)型的示例性繼承分層結(jié)構(gòu)如圖5所示。在圖5中,類(lèi)型是“文檔”500。“法律文檔”510和“再審文檔”530被示為是“文檔”500的子類(lèi)?!胺晌臋n”510的子類(lèi)是“華盛頓法律文檔”520。查詢可在類(lèi)型(例如“文檔”)和/或子類(lèi)(例如“文檔”和/或“法律文檔”和/或“華盛頓法律文檔”)上執(zhí)行。常規(guī)的搜索技術(shù)將使用帶有列的表格,其中各列之一為相應(yīng)對(duì)象列中每個(gè)對(duì)象的類(lèi)型列。為了執(zhí)行搜索,搜索引擎會(huì)遍歷每一行、通過(guò)將其載入存儲(chǔ)器來(lái)例示每個(gè)對(duì)象、以及檢查該類(lèi)型以確定是否有匹配。該技術(shù)非常緩慢,且沒(méi)有辦法確定最佳執(zhí)行計(jì)劃以使搜索有效。較新的搜索技術(shù)具有經(jīng)計(jì)算的各列,其中在表格中提供一具有基于其它相關(guān)聯(lián)列而預(yù)先計(jì)算的值的附加列。該技術(shù)加快了搜索,但需要附加存儲(chǔ)器來(lái)存儲(chǔ)附加的經(jīng)計(jì)算列??商峁┦穷?lèi)型或UDT函數(shù)的稱(chēng)為“類(lèi)型路徑”的特定經(jīng)計(jì)算列。這可被用以搜索任一類(lèi)型或子類(lèi)。本發(fā)明的另一方面是基于類(lèi)型來(lái)有效搜索一系列對(duì)象實(shí)例的能力。值是預(yù)先計(jì)算的,并需要存儲(chǔ)足夠的信息以基于其類(lèi)型來(lái)區(qū)分對(duì)象實(shí)例。該值包含足夠的信息以支持特定類(lèi)型或類(lèi)型分層結(jié)構(gòu)中所有類(lèi)型(都共享同一祖先)的有效搜索。此外,該值可在諸如B-樹(shù)的快速訪問(wèn)結(jié)構(gòu)或其它索引結(jié)構(gòu)中使用,以基于類(lèi)型或基于類(lèi)型分層結(jié)構(gòu)來(lái)搜索對(duì)象。對(duì)于該系統(tǒng)中的每個(gè)類(lèi)型,需要賦予其一個(gè)值。該值必須至少在類(lèi)型分層結(jié)構(gòu)的每個(gè)“層”(距根同一深度)上唯一。對(duì)于每個(gè)類(lèi)型,每個(gè)父類(lèi)的類(lèi)型值被加到所有先前前綴操作的結(jié)果或如果未執(zhí)行前綴操作的原始類(lèi)型之前作前綴。同一層次上的全部元素應(yīng)以相同存儲(chǔ)格式(長(zhǎng)度)進(jìn)行存儲(chǔ)。當(dāng)表示類(lèi)型實(shí)例時(shí),如上所述地確定值,且該值與對(duì)象一起存儲(chǔ)。當(dāng)將其存儲(chǔ)在數(shù)據(jù)庫(kù)中時(shí),對(duì)象和預(yù)先計(jì)算值可存儲(chǔ)在同一表格或其它存儲(chǔ)結(jié)構(gòu)的不同列中,如表格1所示。表格1是示出示例性ID及其相應(yīng)文檔類(lèi)型的數(shù)據(jù)類(lèi)型表格例子。表格1因而,給予每個(gè)類(lèi)型一數(shù)字或其它標(biāo)識(shí)符,如圖6的經(jīng)標(biāo)注類(lèi)型分層結(jié)構(gòu)所示。如圖6所示,“文檔”類(lèi)型被給予標(biāo)識(shí)符ID=1,“法律文檔”類(lèi)型被給予標(biāo)識(shí)符ID=2,“再審文檔”類(lèi)型被給予標(biāo)識(shí)符ID=3,“華盛頓法律文檔”類(lèi)型被給予標(biāo)識(shí)符ID=4。每次創(chuàng)建一個(gè)對(duì)象實(shí)例,可將適當(dāng)?shù)臉?biāo)識(shí)符附加到類(lèi)型上。因此,例如“文檔”會(huì)用類(lèi)型路徑“1”編碼,“法律文檔”會(huì)用“1.2”編碼,而“華盛頓法律文檔”會(huì)用“1.2.4”編碼,如表1所示。以下的表格2示出了存儲(chǔ)對(duì)象名字、UDT、以及類(lèi)型路徑的另一示例性存儲(chǔ)表格。每次創(chuàng)建一個(gè)對(duì)象實(shí)例,可將適當(dāng)?shù)臉?biāo)識(shí)符附加到類(lèi)型上。因此,例如“文檔”會(huì)用類(lèi)型路徑“1”編碼,“法律文檔”會(huì)用“1.2”編碼,而“華盛頓法律文檔”會(huì)用“1.2.4”編碼,如表2所示。表格2諸如B-樹(shù)索引的快速訪問(wèn)存儲(chǔ)結(jié)構(gòu)可在包含預(yù)先計(jì)算值的列上創(chuàng)建。該索引結(jié)構(gòu)期望具有有效找到包含給定值或給定值的前綴的項(xiàng)的能力。盡管尋找一特定值是通用的,但前綴操作通常仍僅用以尋找字符串值,諸如SQL中的LIKE‘PREFIX%’結(jié)構(gòu)。該LIKE結(jié)構(gòu)可使用搜索索引結(jié)構(gòu)中前綴的操作來(lái)有效地計(jì)算。可使用這樣的操作來(lái)搜索被編碼的分層結(jié)構(gòu)的類(lèi)型和子類(lèi)。例如,指令“LIKE‘1.2%’”將找出任意具有以“1.2”開(kāi)始的編碼的對(duì)象(假設(shè)‘%’是通配符)。因而在本示例中,該示例性指令將搜索并返回“法律文檔”類(lèi)型和“華盛頓法律文檔”類(lèi)型的所有對(duì)象。需要搜索特定類(lèi)型或類(lèi)型分層結(jié)構(gòu)的操作可在索引上操作以識(shí)別特定類(lèi)型的所有對(duì)象或源自特定類(lèi)型的所有對(duì)象。索引結(jié)構(gòu)上的相等匹配用于前者,而前綴匹配滿足后者。該編碼使得能夠基于類(lèi)型或類(lèi)型分層結(jié)構(gòu)位置的對(duì)象進(jìn)行快速查找。數(shù)據(jù)庫(kù)系統(tǒng)中的B-樹(shù)通常支持這兩種操作(以用于滿足LIKE‘a(chǎn)aa%’查詢的前綴能力)。根據(jù)本發(fā)明諸方面,可有效檢索數(shù)據(jù)表格的行。類(lèi)型路徑列上的索引可以B-樹(shù)形式創(chuàng)建。例如,所有標(biāo)識(shí)類(lèi)型路徑“1.2”的行都被存儲(chǔ)在葉節(jié)點(diǎn)中。這些葉節(jié)點(diǎn)都對(duì)應(yīng)于具有行的表格。當(dāng)響應(yīng)于例如“seek”命令沿B-樹(shù)而下時(shí)可作比較。預(yù)期可使用“seek”操作來(lái)根據(jù)特定值以及特定前綴進(jìn)行搜索??梢灶A(yù)期可使用存儲(chǔ)器內(nèi)結(jié)構(gòu)而不是數(shù)據(jù)庫(kù)結(jié)構(gòu)??蓜?chuàng)建逆向索引并可使用前綴操作。此外,對(duì)每個(gè)分層結(jié)構(gòu)層次可使用長(zhǎng)度可變的編碼。此外,可使用帶有相同屬性的一些非數(shù)字表示。使用類(lèi)型可替換性,可存儲(chǔ)所有類(lèi)型的對(duì)象,并可使用“ISOF(Type)”操作符由對(duì)象類(lèi)型和子類(lèi)過(guò)濾搜索。根據(jù)本發(fā)明諸方面,諸如“ISOF”的操作謂詞可被映射到類(lèi)型路徑列中??墒褂弥T如“ISOFONLY”的其它操作謂詞。因而,可避免昂貴的對(duì)象水合或例示??墒褂没陬?lèi)型分層結(jié)構(gòu)而預(yù)先計(jì)算的值來(lái)避免水合對(duì)象以確定其類(lèi)型。假設(shè)對(duì)象水合/例示是昂貴的,而按類(lèi)型查詢是一般的,則需要避免不符合類(lèi)型限定的類(lèi)型例示。如果類(lèi)型以避免對(duì)象例示并仍使能全保真過(guò)濾的方法進(jìn)行編碼,則可改進(jìn)性能。此外,可能截取用戶的類(lèi)型檢查請(qǐng)求并在內(nèi)部重寫(xiě)它們以根據(jù)預(yù)先計(jì)算的值來(lái)執(zhí)行等效操作。對(duì)存在預(yù)先計(jì)算值的所有對(duì)象可這樣做。對(duì)于在數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)的基于類(lèi)型的快速對(duì)象辨別的實(shí)施例,需要確定對(duì)象為給定類(lèi)型或從該類(lèi)型導(dǎo)出的任意類(lèi)型的表格中的行數(shù)。用于解決該估算問(wèn)題的常規(guī)技術(shù)包括推測(cè)、假設(shè)所有值是等概率的(即平直分布)、使用表格基數(shù)來(lái)創(chuàng)建估算、或使用直方圖來(lái)跟蹤較常出現(xiàn)的值和較少出現(xiàn)的值的范圍。通常,直方圖對(duì)確定有多少給定類(lèi)型的值的存在是有用的。本發(fā)明的各方面估算這個(gè)直方圖上的選擇性??山⒅狈綀D來(lái)估算查詢要花多長(zhǎng)時(shí)間。直方圖示出了每類(lèi)對(duì)象的數(shù)量。示例性直方圖如圖7所示。其中,“文檔”、“法律文檔”、“再審文檔”以及“華盛頓法律文檔”類(lèi)對(duì)象的示例性數(shù)量以直方圖格式示出。然而,直方圖并不提供類(lèi)型分層結(jié)構(gòu)。類(lèi)型分層結(jié)構(gòu)可由困難和昂貴的查找技術(shù)來(lái)確定。本發(fā)明的諸方面涉及直方圖的編碼技術(shù),使無(wú)需查找技術(shù)就可辨別類(lèi)型分層結(jié)構(gòu)。根據(jù)該編碼技術(shù),給予每個(gè)類(lèi)型數(shù)字或其它標(biāo)識(shí)符,如圖6的經(jīng)標(biāo)注類(lèi)型分層結(jié)構(gòu)所示。因而,可產(chǎn)生一直方圖,其中可使用該長(zhǎng)度可變的編碼方案來(lái)標(biāo)識(shí)分層結(jié)構(gòu)。例如,如圖8所示以及每一個(gè)類(lèi)型/子類(lèi)的數(shù)字,可輕易地標(biāo)識(shí)出1.2.4是1.2的子類(lèi),而1.2是1的子類(lèi)。圖9示出了根據(jù)本發(fā)明產(chǎn)生選擇性估算的示例性方法的流程圖。為了估算一組對(duì)象上類(lèi)型分層結(jié)構(gòu)查詢的選擇性,需要在步驟900使用在此所述的編碼,在步驟910將該編碼結(jié)果存儲(chǔ)為列,以及在步驟920在該列上創(chuàng)建直方圖(單獨(dú)在列上或者作為在列上創(chuàng)建索引的結(jié)果)。然后,在步驟930,編碼查詢類(lèi)型,描述要從類(lèi)型或該類(lèi)型的任意子類(lèi)中檢索哪些對(duì)象。對(duì)于直方圖中的每個(gè)元素,在步驟940確定已編碼的查詢類(lèi)型是否是直方圖條目的前綴。如果是,則在步驟950與該直方圖步驟相關(guān)聯(lián)的元素?cái)?shù)量被添加到來(lái)自直方圖的其它“匹配元素”的數(shù)量中。如果它不是前綴,則在步驟960與該直方圖步驟不關(guān)聯(lián)的元素?cái)?shù)量被添加到來(lái)自直方圖的其它“非匹配元素”的數(shù)量中。當(dāng)處理了所有的直方圖步驟時(shí),在步驟990通過(guò)取“匹配元素”數(shù)量并除以“匹配元素”數(shù)量和“非匹配元素”數(shù)量之和來(lái)確定該分層結(jié)構(gòu)的類(lèi)型匹配查詢的選擇性估算。因而,可能在這種二進(jìn)制編碼上使用直方圖以確定類(lèi)型分層結(jié)構(gòu)中有關(guān)UDT分布的統(tǒng)計(jì)信息。通過(guò)在用該分層結(jié)構(gòu)編碼進(jìn)行選擇性估算期間遍歷直方圖,可產(chǎn)生相當(dāng)精確的基數(shù)估算。注意,如果使用固有函數(shù)來(lái)估算所述每種算法的可選擇性,應(yīng)當(dāng)有可能完全移除對(duì)ISOF的CLR調(diào)用而僅作固有函數(shù)上的基數(shù)估算。根據(jù)本發(fā)明,實(shí)現(xiàn)了從UDT返回一類(lèi)型-id的函數(shù)。另一函數(shù)則從類(lèi)型-id返回分層結(jié)構(gòu)的類(lèi)型-id編碼。諸如WinFS的存儲(chǔ)系統(tǒng)最好在每個(gè)UDT-提供表格(例如對(duì)象表格)上創(chuàng)建一已計(jì)算列。在一實(shí)施例中,預(yù)期ISOF標(biāo)量包含一附加/替換謂詞。例如,可使用UDTvalref來(lái)尋找包含該UDT的基表。然后可使用基表的已計(jì)算列來(lái)確定包括一標(biāo)量表達(dá)式的已計(jì)算列的存在性。如果發(fā)現(xiàn)了這樣的一個(gè)列,則可添加隱式謂詞。假設(shè)每個(gè)UDT類(lèi)型都是一小(例如4字節(jié))固定長(zhǎng)度值。此外,分層結(jié)構(gòu)的類(lèi)型-id也可被定義為父類(lèi)型-id串聯(lián)到字符串或二進(jìn)制字段。如果包含UDT的每一行還具有標(biāo)識(shí)該分層結(jié)構(gòu)編碼的已計(jì)算列,則在該新列上可創(chuàng)建一索引。可使用范圍前綴操作來(lái)實(shí)現(xiàn)返回給定類(lèi)型分層結(jié)構(gòu)中所有UDT的操作,并可使用類(lèi)型-id上的精確匹配來(lái)解決非分層結(jié)構(gòu)匹配。示例性分層結(jié)構(gòu)類(lèi)型id可提供為以下函數(shù)UDT_expression可以是任意的用戶定義類(lèi)型值的表達(dá)式。HIERARCHICAL_TYPE_ID函數(shù)最好是確定并精確的。這提供了在使用分層結(jié)構(gòu)類(lèi)型id導(dǎo)出的已計(jì)算列上建立索引的能力。預(yù)期該已計(jì)算列不必是持續(xù)的。要確定類(lèi)型路徑是否是另一路徑的前綴,系統(tǒng)在內(nèi)部使用利用現(xiàn)有的LIKE前綴掃描能力建立的HAS_PREFIX運(yùn)算符。該前綴掃描能力被用來(lái)實(shí)現(xiàn)形式為“character_expressionLIKE‘prefix_string%’”的條件匹配,其中prefix_string是某些不包含任意諸如%的通配符的恒定字符串。該HAS_PREFIX運(yùn)算符最好不是用戶可見(jiàn)的。如果索引可用,則HAS_PREFIX可使用一索引掃描。分層結(jié)構(gòu)類(lèi)型id值最好較短以減少必須存儲(chǔ)在索引中的數(shù)據(jù)量。對(duì)于WinFS模式中的類(lèi)型,分層結(jié)構(gòu)類(lèi)型id最好小于100個(gè)字符。給定一內(nèi)部類(lèi)型id而檢索一分層結(jié)構(gòu)類(lèi)型id的函數(shù)最好比較快,因?yàn)樗窃谒饕齽?chuàng)建期間使用的。當(dāng)其實(shí)例仍然保留在數(shù)據(jù)庫(kù)中(即如果在表格定義中使用仍然存在的它或其祖先)時(shí),最好不要丟棄或以其它方式刪除一類(lèi)型。否則,包含被丟棄類(lèi)型的分層結(jié)構(gòu)類(lèi)型id的索引條目可能保留在索引中,但將不可能解釋它們。此外,在丟棄一類(lèi)型后添加新類(lèi)型可導(dǎo)致與現(xiàn)有實(shí)例相同的分層結(jié)構(gòu)類(lèi)型id,從而出現(xiàn)錯(cuò)誤。分層結(jié)構(gòu)類(lèi)型id的內(nèi)部格式最好應(yīng)是長(zhǎng)度為4字節(jié)倍數(shù)的可變二進(jìn)制值,包含沿從類(lèi)型分層結(jié)構(gòu)的根到最特別類(lèi)型的UDT_expression的路徑上類(lèi)型的類(lèi)型id(例如在內(nèi)部存儲(chǔ)為4字節(jié)整數(shù))串聯(lián)。在帶有其值為用戶定義類(lèi)型的屬性的較大表格的情形中,最好是支持對(duì)其屬性值具有特定類(lèi)型或是給定類(lèi)型的子類(lèi)的行的快速檢索。為了支持該情形中的快速搜索,可在使用HIERARCHICAL_TYPE_ID創(chuàng)建的已計(jì)算列上創(chuàng)建一索引。假設(shè)UDT的類(lèi)型分層結(jié)構(gòu)如下CREATETYPEperson_tEXTERNALNAME[asm][Person]CREATETYPEemployee_tEXTERNALNAME[asm][Employee]UNDERperson_tCREATETYPEhourly_employee_tEXTERNALNAME[asm][HourlyEmployee]UNDERemployee_tCREATETYPEsalaried_employee_tEXTERNALNAME[asm][SalariedEmployee]UNDERemployee_t此外,有表格定義如下CREATETABLEperson(pcolperson_t)為了啟用person行的快速查找而使用ISOF操作符在pcol類(lèi)型上過(guò)濾,可如下添加在person表格的person.pcol的分層結(jié)構(gòu)類(lèi)型id上的已計(jì)算列和索引ALTERTABLEpersonADDpcol_htidASHIERARCHICAL_TYPE_ID(pcol)CREATEINDEXperson_htid_idxONperson(pcol_htid)這將例如使用戶在即使“person”表格很大時(shí)仍能快速找到有關(guān)計(jì)時(shí)雇員的所有信息。如果對(duì)一給定類(lèi)型所有值的快速檢索有較高優(yōu)先級(jí),則可創(chuàng)建HIERARCHICAL_TYPE_ID上的CLUSTERED(聚類(lèi))索引。使索引CLUSTERED將分組相同類(lèi)型的值、或在類(lèi)型分層結(jié)構(gòu)的同一子樹(shù)中的值、在同一頁(yè)面或盤(pán)上鄰近頁(yè)面上的值。對(duì)于查詢重寫(xiě),預(yù)期包括通用語(yǔ)句,即通過(guò)HIERARCHICAL_TYPE_ID內(nèi)部地實(shí)現(xiàn)ISOF謂詞,以及從HIERARCHICAL_TYPE_ID導(dǎo)出的已計(jì)算列上的索引可有助于加速對(duì)使用ISOF操作符在類(lèi)型上的查詢。系統(tǒng)在內(nèi)部使用查詢重寫(xiě)以處理被稱(chēng)為類(lèi)型謂詞的IS[NOT]OF謂詞。類(lèi)型謂詞的所需格式定義如下Type_predicate∷=UDT_expressionIS[NOT]OF(Type_list)Type_list∷=user_defined_type_specification[,...n]User_defined_type_specification∷=Inclusive_UDT_specification|Exclusive_UDT_specificationInclusive_UDT_specifcation∷=UDT_nameExclusive_UDT_specification∷=ONLYUDT_name形式為UDT_expressionISNOTOF(type_list)的表達(dá)式等于NOT(UDT_expressionISOF(type_list))。形式為UDT_expressionISOF(type_list)的類(lèi)型謂詞被重寫(xiě)為UDT_expression是否與type_list中的條目相匹配的謂詞測(cè)試的邏輯和。要確定UDT_expressionISOF是否為Inclusive_UDT_specification的測(cè)試在重寫(xiě)查詢中被表達(dá)為HIERARCHICAL_TYPE_ID(UDT_expression)HAS_PREFIX<<constanthierarchicaltypeidofUDT_name>>在此,<<constanthierarchicaltypeidofUDT_name>>是表示UDT_name的分層結(jié)構(gòu)類(lèi)型id的可變二進(jìn)制常數(shù)。要確定UDT_expressionISOF是否為Exclusive_UDT_specification的測(cè)試在重寫(xiě)查詢中被表達(dá)為HIERARCHICAL_TYPE_ID(UDT_expression)=<<constanthierarchicaltypeidofUDT_name>>應(yīng)注意在以上重寫(xiě)條件中的HIERARCHICAL_TYPE_ID(UDT_expression)表達(dá)式將匹配從同一表達(dá)式上建立的已計(jì)算列上的索引,諸如person_htid_idx。以下例子表示上述用于支持ISOF和ISOF(ONLY...)謂詞重寫(xiě)規(guī)則的應(yīng)用。--尋找是任意類(lèi)雇員的所有人SELECT*FROMpersonWHEREpcolISOFemployee_t--重寫(xiě)查詢SELECT*FROMpersonWHEREHIERARCHICAL_TYPE_ID(pcol)HAS_PREFIX<<constanthierarchicaltypeidofemployee_t>>--尋找所有是種類(lèi)employee_t但不是其子類(lèi)之一的人SELECT*FROMpersonWHEREpcolISOF(ONLYemployee_t)--重寫(xiě)查詢SELECT*FROMpersonWHEREHIERARCHICAL_TYPE_ID(pcol)=<<constanthierarchicaltypeidofemployee_t>>--尋找所有領(lǐng)薪雇員或計(jì)時(shí)雇員SELECT*FROMpersonWHEREpcolISOF(hourly_employee_t,salaried_employee_t)--重寫(xiě)查詢SELECT*FROMpersonWHERE(HIERARCHICAL_TYPE_ID(pcol)HAS_PREFIX<<constanthierarchicaltypeidofhourly_employee_t>>ORHIERARCHICAL_TYPE_ID(pcol)HAS_PREFIX<<constanthierarchicaltypeidofsalaried_employee_t>>)預(yù)期可添加函數(shù)TYPE_ID()的過(guò)載版本以返回UDT表達(dá)式的內(nèi)置類(lèi)型id。還預(yù)期可添加函數(shù)TYPE_NAME()的單個(gè)可變二進(jìn)制分層結(jié)構(gòu)類(lèi)型id(htid)變量的過(guò)載版本以返回帶有該htid的類(lèi)型的字符串名。以下例子表示如何對(duì)表格的分層結(jié)構(gòu)中每個(gè)不同類(lèi)型的出現(xiàn)計(jì)數(shù)--計(jì)每種類(lèi)型的人數(shù)SELECTTYPE_NAME(TYPE_ID(pcol)),TYPE_ID(pcol),count(*)FROMpersonGROUPBYTYPE_NAME(TYPE_ID(pcol)),TYPE_ID(pcol)對(duì)分層結(jié)構(gòu)類(lèi)型id可提供壓縮方案。這會(huì)減小從分層結(jié)構(gòu)類(lèi)型id的索引關(guān)鍵值大小。例如將它們編碼為基-254整數(shù)(0-254字節(jié)為小數(shù))并使用字節(jié)255為分隔符。則分層結(jié)構(gòu)類(lèi)型id將為以下形式<typeid><separator><typeid><separator>...<separator><typeid>在許多情形中,這將導(dǎo)致路徑上每個(gè)typeid僅為2或3個(gè)字節(jié)而不是4個(gè)字節(jié)。當(dāng)類(lèi)型謂詞中的type_list具有一個(gè)以上條目時(shí)可將類(lèi)型包容能力添加到查詢重寫(xiě)中。例如,UDT_expressionISOF(person_t,employee_t)等于UDT_expressionISOF(person_t),因?yàn)閑mployee_t是person_t的子類(lèi)。結(jié)論在此描述的各種技術(shù)可結(jié)合硬件、軟件、或適當(dāng)時(shí)兩者的組合實(shí)現(xiàn)。因而,本發(fā)明的各種方法和裝置,或其中的某些方面或部分,可取包括在諸如軟盤(pán)、CD-ROM、硬盤(pán)、或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)的有形介質(zhì)中的程序代碼(即指令)形式,其中當(dāng)程序代碼由諸如計(jì)算機(jī)的機(jī)器載入和執(zhí)行時(shí)該機(jī)器成為實(shí)踐本發(fā)明的裝置。在程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情形中,計(jì)算機(jī)一般將包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入裝置以及至少一個(gè)輸出裝置。一個(gè)或多個(gè)程序最好用高級(jí)過(guò)程或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)通信。然而如果需要,程序也可以用匯編或機(jī)器語(yǔ)言實(shí)現(xiàn)。在任意情形中,語(yǔ)言可以是編譯或解釋語(yǔ)言,并與硬件實(shí)現(xiàn)相結(jié)合。本發(fā)明的各方法和裝置也可通過(guò)以程序代碼形式體現(xiàn)的通信來(lái)實(shí)踐,這些程序代碼經(jīng)諸如電線或電纜、光纖的某些傳輸介質(zhì)或任意其它形式的傳輸來(lái)傳送,其中當(dāng)程序代碼由諸如EPROM、門(mén)陣列、可編程邏輯裝置(PLD)、客戶計(jì)算機(jī)、錄影機(jī)等的機(jī)器執(zhí)行時(shí),機(jī)器成為實(shí)踐本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼結(jié)合處理器提供操作以調(diào)用本發(fā)明索引功能的唯一裝置。盡管本發(fā)明已結(jié)合各個(gè)附圖的較佳實(shí)施例進(jìn)行了描述,應(yīng)該理解也可使用其它類(lèi)似實(shí)施例,或者可對(duì)所述實(shí)施例作更改和添加用于執(zhí)行本發(fā)明的相同功能而不背離本發(fā)明。例如,盡管本發(fā)明的示例性實(shí)施例在仿真?zhèn)€人計(jì)算機(jī)功能的數(shù)字裝置的環(huán)境中描述,本發(fā)明技術(shù)人員將理解本發(fā)明并不限于本申請(qǐng)中所述的數(shù)字裝置,而可應(yīng)用于任意數(shù)量的現(xiàn)有或新興的計(jì)算裝置或環(huán)境,諸如有線或?yàn)闊o(wú)線的游戲控制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等,并可應(yīng)用于任意數(shù)量的經(jīng)通信網(wǎng)絡(luò)連接或在網(wǎng)絡(luò)上交互的計(jì)算裝置。此外,應(yīng)強(qiáng)調(diào)特別是隨著無(wú)線網(wǎng)絡(luò)裝置的數(shù)量持續(xù)增長(zhǎng),可在此預(yù)期各種計(jì)算機(jī)平臺(tái),包括手持式裝置操作系統(tǒng)和其它應(yīng)用程序?qū)S貌僮飨到y(tǒng)。因此,本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而應(yīng)根據(jù)所附權(quán)利要求書(shū)在幅度和范圍中作解釋。權(quán)利要求1.一種計(jì)算機(jī)系統(tǒng),其特征在于,包括一數(shù)據(jù)存儲(chǔ)器,包括多個(gè)對(duì)象,每個(gè)對(duì)象具有相關(guān)聯(lián)類(lèi)型,每個(gè)類(lèi)型具有一標(biāo)識(shí)符;以及一硬件/軟件接口系統(tǒng),用于操縱所述眾多對(duì)象。2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,每個(gè)類(lèi)型是用戶定義類(lèi)型(UDT)。3.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,類(lèi)型是另一類(lèi)型的子類(lèi)型。4.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)存儲(chǔ)器還包括每個(gè)對(duì)象的類(lèi)型路徑。5.如權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)存儲(chǔ)器包括用于存儲(chǔ)每個(gè)類(lèi)型路徑的已計(jì)算的列。6.如權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其特征在于,每個(gè)類(lèi)型路徑包括可變長(zhǎng)度的被編碼值。7.如權(quán)利要求6所述的計(jì)算機(jī)系統(tǒng),其特征在于,每個(gè)可變長(zhǎng)度的被編碼值對(duì)應(yīng)于所述相關(guān)聯(lián)對(duì)象的類(lèi)型的一分層結(jié)構(gòu)層。8.一種能夠操縱多個(gè)對(duì)象的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)對(duì)象具有一相關(guān)聯(lián)類(lèi)型,每個(gè)類(lèi)型具有一標(biāo)識(shí)符。9.如權(quán)利要求8所述的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)類(lèi)型是用戶定義類(lèi)型(UDT)。10.如權(quán)利要求8所述的硬件/軟件接口系統(tǒng),其特征在于,類(lèi)型是另一類(lèi)型的子類(lèi)型。11.如權(quán)利要求8所述的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)對(duì)象具有相關(guān)聯(lián)的類(lèi)型路徑。12.如權(quán)利要求11所述的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)類(lèi)型路徑屬于數(shù)據(jù)存儲(chǔ)中的已計(jì)算列。13.如權(quán)利要求11所述的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)類(lèi)型路徑包括可變長(zhǎng)度的被編碼值。14.如權(quán)利要求13所述的硬件/軟件接口系統(tǒng),其特征在于,每個(gè)可變長(zhǎng)度的被編碼值對(duì)應(yīng)于所述相關(guān)聯(lián)對(duì)象的類(lèi)型的一分層結(jié)構(gòu)層。15.一種具有存儲(chǔ)其上的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其特征在于,包括包含一對(duì)象的第一數(shù)據(jù)字段;以及包含與所述對(duì)象相關(guān)聯(lián)的數(shù)據(jù)類(lèi)型的第二數(shù)據(jù)字段,所述數(shù)據(jù)類(lèi)型具有一標(biāo)識(shí)符。16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述類(lèi)型是用戶定義類(lèi)型(UDT)。17.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述類(lèi)型是另一類(lèi)型的子類(lèi)。18.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括包含所述對(duì)象的類(lèi)型路徑的第三數(shù)據(jù)字段。19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述類(lèi)型路徑包括可變長(zhǎng)度的被編碼值。20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述可變長(zhǎng)度的被編碼值源自所述數(shù)據(jù)類(lèi)型。21.一種產(chǎn)生對(duì)多個(gè)對(duì)象上查詢的選擇性估算的方法,每個(gè)對(duì)象具有帶有標(biāo)識(shí)符的類(lèi)型,其特征在于,包括用源自所述標(biāo)識(shí)符的類(lèi)型路徑來(lái)編碼每個(gè)對(duì)象;對(duì)每個(gè)對(duì)象,確定其類(lèi)型路徑是否將滿足所述查詢;以及確定具有將滿足所述查詢的類(lèi)型路徑的對(duì)象與所述所有對(duì)象的比例。22.如權(quán)利要求21所述的方法,還包括接收所述查詢并確定哪些類(lèi)型路徑將滿足所述查詢。23.如權(quán)利要求21所述的方法,還包括編碼所述查詢使得所述查詢具有可滿足的一種類(lèi)型。24.如權(quán)利要求21所述的方法,還包括使用所述被編碼對(duì)象創(chuàng)建一直方圖。全文摘要有效的分層結(jié)構(gòu)搜索是基于對(duì)象類(lèi)型(500,510,520,530)的。通過(guò)預(yù)先計(jì)算附加信息并將其存儲(chǔ)在快速查找結(jié)構(gòu)中,就可能快速識(shí)別滿足對(duì)象(900)檢索要求的對(duì)象(900)。此外,還可能使用該技術(shù)來(lái)避免存儲(chǔ)中操作的對(duì)象(900)水合。而且,還可能發(fā)揮諸如直方圖(920)的數(shù)據(jù)庫(kù)統(tǒng)計(jì)結(jié)構(gòu)的作用,而無(wú)需檢查每個(gè)對(duì)象(900)就估算出合格對(duì)象的數(shù)量。文檔編號(hào)G06F17/30GK1846207SQ200480001560公開(kāi)日2006年10月11日申請(qǐng)日期2004年7月29日優(yōu)先權(quán)日2003年10月23日發(fā)明者C·J·坎寧安,R·凡卡特實(shí),E·N·漢森申請(qǐng)人:微軟公司