專利名稱::對數(shù)據(jù)的函數(shù)應(yīng)用的結(jié)果進(jìn)行結(jié)構(gòu)化索引的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及信息存儲(chǔ)和恢復(fù)領(lǐng)域,尤其涉及有效地搜索存儲(chǔ)數(shù)據(jù)。
背景技術(shù):
:消費(fèi)者主要使用它們的計(jì)算機(jī)來通信和組織個(gè)人信息,不管它是傳統(tǒng)的個(gè)人信息管理器(PIM)風(fēng)格數(shù)據(jù)還是諸如數(shù)字音樂或照片等媒體。數(shù)字內(nèi)容的量和存儲(chǔ)原始字節(jié)的能力大大地提高了;然而,可供者使用的組織和統(tǒng)一這些數(shù)據(jù)的方法沒有跟上步伐。知識(shí)工作者花費(fèi)大量的時(shí)間管理和共享信息,一些調(diào)查估計(jì)知識(shí)工作者花費(fèi)他們15-25%的時(shí)間在與非生產(chǎn)性信息相關(guān)的活動(dòng)上。其它調(diào)查估計(jì)一個(gè)典型的知識(shí)工作者每天大約花費(fèi)2.5小時(shí)來搜索信息。計(jì)算機(jī)系統(tǒng)中傳統(tǒng)的組織信息的方式集中在基于用于存儲(chǔ)文件的存儲(chǔ)介質(zhì)的物理組織的抽象,使用基于文件-文件夾-和-目錄的系統(tǒng)(“文件系統(tǒng)”)來將文件組織到文件夾的目錄層次結(jié)構(gòu)中。這種在20世紀(jì)60年代期間發(fā)展起來的Multics操作系統(tǒng)可被認(rèn)為是使用文件、文件夾和目錄在操作系統(tǒng)層上管理數(shù)據(jù)的可存儲(chǔ)單元的先驅(qū)。特別是,Multics使用文件層次結(jié)構(gòu)中的符號地址(由此引入文件路徑的概念),其中文件的物理地址對用戶(應(yīng)用程序和最終用戶)不透明。這個(gè)文件系統(tǒng)整體與任何個(gè)別文件的文件格式無關(guān),文件之間的關(guān)系在操作系統(tǒng)層次上被認(rèn)為是無關(guān)的(即,除了層次中文件的位置)。由于Multics的出現(xiàn),可存儲(chǔ)數(shù)據(jù)在操作系統(tǒng)層被組織成文件、文件夾和目錄。這些文件一般包括文件層次自身(“目錄”),包含于由文件系統(tǒng)維護(hù)的特殊文件中。這個(gè)目錄反過來維護(hù)對應(yīng)于目錄中所有其它文件的條目列表和層次中這種文件的節(jié)點(diǎn)位置(這里被稱為文件夾)。這是本領(lǐng)域大約四十年來的狀況。然而,雖然提供了駐留在計(jì)算機(jī)物理存儲(chǔ)系統(tǒng)中信息的合理表示,但是文件系統(tǒng)是那個(gè)物理存儲(chǔ)系統(tǒng)的抽象,由此使用文件需要用戶操縱(具有范圍、特征和與其它單元關(guān)系的單元)和操作系統(tǒng)所提供的(文件、文件夾和目錄)之間的間接(解釋)層次。因此,用戶(應(yīng)用程序和/或最終用戶)不得不強(qiáng)制信息單元成為文件系統(tǒng)結(jié)構(gòu),即使這樣做是低效的、不一致的、或者是非期望的。因?yàn)槎鄶?shù)現(xiàn)有的文件系統(tǒng)隨著文件的增加,使用嵌套文件隱喻來組織文件和文件夾,維護(hù)靈活且有效的組織方案所需的努力變得非常令人畏縮。過去已經(jīng)作出幾次解決文件系統(tǒng)這個(gè)缺點(diǎn)的不成功嘗試。這些先前的嘗試中的一些涉及使用內(nèi)容可尋址存儲(chǔ)器以提供數(shù)據(jù)能夠被內(nèi)容而非物理地址訪問的機(jī)制。然而,這些努力被證實(shí)是不成功的,因?yàn)殡m然內(nèi)容可尋址存儲(chǔ)器被證明對諸如高速緩存和存儲(chǔ)管理單元等設(shè)備的小規(guī)模使用來說是有用的,但是由于多種原因諸如物理存儲(chǔ)介質(zhì)等設(shè)備的大規(guī)模使用還不可能,因此這樣的解決方案完全不存在。作出了其他使用面向?qū)ο髷?shù)據(jù)庫(OODB)系統(tǒng)的嘗試,但是這些嘗試(雖然表現(xiàn)了強(qiáng)的數(shù)據(jù)庫特征和好的非文件表示)不能有效地處理文件表示,且不能在硬件/軟件接口系統(tǒng)級別復(fù)制基于層次結(jié)構(gòu)文件和文件夾的速度、效率和簡單性。新發(fā)展的存儲(chǔ)系統(tǒng),諸如“WinFS”(以下詳細(xì)描述)將文件的目錄存儲(chǔ)為數(shù)據(jù)庫中的表格。每個(gè)文件由基表中的一行表示,諸如“列舉目錄中的所有文件”等文件系統(tǒng)操作滿足于對數(shù)據(jù)庫引擎使用查詢。因此,對存儲(chǔ)有效地執(zhí)行基本操作變成了有效地優(yōu)化數(shù)據(jù)庫查詢的操作。在這種存儲(chǔ)系統(tǒng)中,文件的概念被擴(kuò)展到“對象”的概念。關(guān)于文件的元數(shù)據(jù)和表示那個(gè)對象的可容許描述數(shù)據(jù)的方案(在存儲(chǔ)系統(tǒng)中定義的)一起存儲(chǔ)在管理CLR(通用語言執(zhí)行環(huán)境)對象中。例如,圖片可以有代表性的CLR對象,所述CLR對象會(huì)存儲(chǔ)諸如其分辨率、所化的時(shí)間和位置信息等數(shù)據(jù)。這個(gè)對象模式支持?jǐn)?shù)據(jù)繼承。有了數(shù)據(jù)繼承,能夠從另一個(gè)數(shù)據(jù)得出類型并增加新的字段。例如,可以建立圖像的“子類”,諸如“DriversLicensePicture”。這樣的子類可以包含額外的信息,諸如驅(qū)動(dòng)程序的許可證ID字段。在這些新開發(fā)的存儲(chǔ)系統(tǒng)中,諸如WinFS,所公開的方案通過翻譯層被映射到表格上。用戶只看到一系列數(shù)據(jù)的視圖,而非對基表的操作。當(dāng)這種映射的精確設(shè)計(jì)不重要時(shí),它用作WinFSAPI和基礎(chǔ)存儲(chǔ)格式之間的膠合物。用戶并不直接控制或看到這個(gè)映射。WinFS存儲(chǔ)也揭示了基于對象的類型查詢對象的概念,與早先傳統(tǒng)的文件系統(tǒng)中基于它們的文件名稱查詢形成對比?;陬愋偷牟樵兛梢圆檎覝?zhǔn)確的類型或從給定類型導(dǎo)出的任何類型。后者的形式被稱為層次匹配,它被期望成為通用WinFS操作。WinFS也支持按文件搜索。WinFS方案模型對查詢處理器提出了一些新的難題。用戶定義類型或UDT被廣泛使用,基于UDT類型從表格檢索所有UDT是通常的。此外,WinFS使用UDT繼承,它也要求從表格檢索所有給定類型的元素和任何子類型。存在多個(gè)表格,每個(gè)包含不同數(shù)目的UDT、類型、類型拓?fù)浜驮撏負(fù)渲械腢DT分布。此外,搜索操作會(huì)超過傳統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)中所見的操作,包括例如搜索XML文件或執(zhí)行對一對象中所有字段的搜索。這些特征使得難以作出精確的技術(shù)且和成本估計(jì),也使得難以基于類型、子類型層次有效地檢索值。物化視圖(在這里也被稱為索引視圖)是過去十年所探索的數(shù)據(jù)庫的主題。這個(gè)基本的概念是物化或存儲(chǔ)某些查詢的結(jié)果,接著當(dāng)類似的查詢被體送到數(shù)據(jù)庫時(shí),使用這些計(jì)算結(jié)果。例如,會(huì)期望存儲(chǔ)每天銷售的結(jié)果,以后使用這個(gè)結(jié)果(這個(gè)物化的視圖)來回答幾個(gè)相關(guān)的查詢,諸如給定月份的銷售或整年的全部銷售。為了額外的靈活性,應(yīng)用程序無需知道某些視圖的存在或它們被物化。查詢處理器應(yīng)該確定用戶查詢和現(xiàn)有預(yù)計(jì)算結(jié)果(物化的視圖)之間的匹配,并在適用時(shí)使用這些結(jié)果。這被稱為視圖使用問題給出對基表改寫的用戶查詢以及物化的視圖的集合,哪個(gè)物化視圖可以被用作回答這樣的查詢?以及問題的基于代價(jià)的變體這些物化視圖的哪些應(yīng)被使用?物化視圖類似于索引,其中應(yīng)該有部分對數(shù)據(jù)庫的物理設(shè)計(jì),它們的主要目的是改進(jìn)性能。對數(shù)據(jù)庫的邏輯設(shè)計(jì)和對應(yīng)用程序的正確性應(yīng)該獨(dú)立于物化視圖的存在和不存在。如同使用索引,物化視圖可以對查詢性能引入驚人的改進(jìn)。一般將查詢優(yōu)化程序構(gòu)造成有一初始簡化階段,接著是對可選項(xiàng)的探索和對執(zhí)行計(jì)劃基于代價(jià)的選擇,如圖1所示。在簡化/標(biāo)準(zhǔn)化階段2,對原始查詢Q作出了一些變化,諸如將選擇下推或者可能時(shí)將子查詢重新寫為聯(lián)接。這些修改旨在獲取“更好的”查詢。一般地,在這個(gè)階段沒有詳細(xì)的代價(jià)估計(jì),產(chǎn)生單個(gè)“更好的”查詢Q’作為結(jié)果。優(yōu)化第二階段5(探索和基于代價(jià)的選擇)針對生成多個(gè)可選項(xiàng),和使用詳細(xì)的代價(jià)模型來用最低估計(jì)執(zhí)行代價(jià)來選擇可選項(xiàng)。探索階段的兩種傳統(tǒng)構(gòu)架是自底向上、動(dòng)態(tài)編程聯(lián)接列舉和可選項(xiàng)的變換驅(qū)動(dòng)生成。兩種構(gòu)架都建立了可選項(xiàng)表格,如公知的,它緊縮地對每個(gè)查詢的子表達(dá)式的各種可能性進(jìn)行編碼??紤]探索過程中的物化視圖包含用使用這種物化視圖的條目來增廣可選項(xiàng)表格。假設(shè)原始查詢是表A、B、C的聯(lián)接。以下給出典型的可選項(xiàng)(只用邏輯算子)ABCABBCAC經(jīng)編碼的操作符樹通過遍歷可選項(xiàng)的表來獲得,從根條目(上述查詢中的ABC)開始,并從每個(gè)條目選擇一操作符。例如,通過取得每個(gè)條目中的第一選擇,獲取圖2中所示的操作符樹10?,F(xiàn)在假設(shè)有一物化視圖這意味著有一存儲(chǔ)表,被稱為Vt,包含A和B聯(lián)接的結(jié)果。因?yàn)檫@是獲取聯(lián)接子表示式的有效途徑,用這個(gè)可選項(xiàng)增廣所述可選項(xiàng),成為ABCABBCAC圖3示出了優(yōu)化程序可生成和考慮的有效操作符樹13。增廣可選項(xiàng)表格的機(jī)制取決于優(yōu)化程序的構(gòu)架。在基于轉(zhuǎn)換的優(yōu)化程序的情況下,通過對系統(tǒng)增加新的變換規(guī)則來獲取擴(kuò)展;對于自底向上聯(lián)接列舉,應(yīng)該改變構(gòu)造過程。在向表格加入可選項(xiàng)之后,應(yīng)用通用優(yōu)化程序機(jī)制以估計(jì)代價(jià)、去除昂貴的解答、裝配操作符樹和構(gòu)建最佳解答。為了保證事務(wù)處理的正確,物化視圖的內(nèi)容必須與基表的變化保持同步。例如,當(dāng)輸入或改變定單時(shí),必須更新每周銷售的物化來反映這種變化。這被稱為視圖維持問題。換而言之,如果基表中的基礎(chǔ)數(shù)據(jù)改變,那么必須在物化視圖中作出這些改變。由于重新計(jì)算的時(shí)間和費(fèi)用,所期望的是無需重新計(jì)算整個(gè)物化視圖以反映這種變化??紤]到在現(xiàn)有數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)庫技術(shù)中上述的缺點(diǎn),需要有效地使用物化視圖。本發(fā)明滿足了這些需要。
發(fā)明內(nèi)容概述以下
發(fā)明內(nèi)容提供了對本發(fā)明各方面的概述。它并非旨在提供對本發(fā)明所有重要方面的詳盡描述,也不是為了定義本發(fā)明的范圍。然而,這個(gè)
發(fā)明內(nèi)容概述是意在用作對下述詳細(xì)描述和附圖的介紹。本發(fā)明針對使用物化視圖(在這里也被稱為索引視圖)作為對帶有潛在的多值屬性的基表的二級索引。這提供了使用索引在對數(shù)據(jù)的函數(shù)應(yīng)用結(jié)果中搜索。此外,本發(fā)明提供了對表值函數(shù)調(diào)用的結(jié)果進(jìn)行索引。對這種函數(shù)調(diào)用結(jié)果的視圖索引提供了對復(fù)雜結(jié)構(gòu)內(nèi)容索引的能力。例示的去除嵌套操作是“交互應(yīng)用去除嵌套”。在這個(gè)例子中,UNNEST是將UDT集合作為復(fù)雜結(jié)構(gòu)并為集合中的每個(gè)元素輸出行的函數(shù)。其它函數(shù)例子可以將XML數(shù)據(jù)轉(zhuǎn)換為較為可搜索的形式或?qū)⒍嗔蟹纸獬商囟ㄋ阉鞯膯蝹€(gè)索引結(jié)構(gòu)。本發(fā)明提供了查詢執(zhí)行計(jì)劃附加的選項(xiàng),導(dǎo)致更為優(yōu)化的查詢。依照本發(fā)明的還有方面,提供了從索引視圖到基表的反向聯(lián)接。這允許不存在于索引視圖中的基表的字段被包含在查詢結(jié)果中,這作為訪問路徑使用索引視圖來處理。這提供了在查詢結(jié)果中包含列的方法,所述查詢結(jié)果不在索引視圖中而在基表中。經(jīng)由唯一的聚類關(guān)鍵字,從單表索引視圖到基表支持反向聯(lián)接,所述聚類關(guān)鍵字作為邏輯行定位符。因此通過唯一的聚為關(guān)鍵字本系統(tǒng)可以從索引視圖到基表的反向聯(lián)接。這些特征允許使用索引視圖來對表格的復(fù)雜函數(shù)調(diào)用內(nèi)容進(jìn)行索引并從在這個(gè)函數(shù)調(diào)用上匹配準(zhǔn)則的行有效地恢復(fù)數(shù)據(jù)。本發(fā)明的其他特征和優(yōu)勢將通過以下對發(fā)明的詳細(xì)描述和附圖變得顯而易見。結(jié)合附圖閱讀,將更好地理解上述說明內(nèi)容和以下對優(yōu)選實(shí)施例的詳細(xì)描述。為了說明本發(fā)明,在附圖中示出了本發(fā)明的示例性構(gòu)造;然而,本發(fā)明不限于所揭示的特定方法和手段。在附圖中圖1是常規(guī)查詢優(yōu)化程序的框圖;圖2是示例性操作符樹的圖表;圖3是包含物化視圖的圖2的操作符樹的圖表;圖4是表示可以包含本發(fā)明各方面的計(jì)算機(jī)系統(tǒng)的框圖;圖5是說明被分成三個(gè)組件組的計(jì)算機(jī)系統(tǒng)的框圖硬件組件、操作系統(tǒng)組件和應(yīng)用程序組件;圖6是說明用于用文件夾中經(jīng)分組的文件的基于樹的分層結(jié)構(gòu);圖7是說明與本發(fā)明一起使用的示例性存儲(chǔ)平臺(tái);圖8是依照本發(fā)明的示例性索引視圖的圖表;圖9是依照本發(fā)明的示例性聚類關(guān)鍵字的圖表;圖10示出了依照本發(fā)明的示例性執(zhí)行計(jì)劃;圖11示出了依照本發(fā)明的示例性訪問計(jì)劃;圖12示出了依照本發(fā)明的查詢數(shù)據(jù)方法的流程圖。具體實(shí)施例方式特別描述了主題以符合法定需求。然而,描述自身不是為了限制本權(quán)利申請的范圍。而是,發(fā)明者期望所做權(quán)利要求的主題也可以以其它方式結(jié)合其它現(xiàn)有或?qū)淼募夹g(shù)體現(xiàn),以包含類似于這個(gè)文件中所描述的步驟的不同步驟或這些步驟的組合。此外,雖然可以在這里使用術(shù)語“步驟”來表示所采用方法的不同元素,但是這個(gè)術(shù)語不應(yīng)該被解釋為意味這里所揭示的各種步驟之間任一特定順序,除非個(gè)別步驟的順序被明確地描述。WinFS是引入文件系統(tǒng)中的對象概念的文件系統(tǒng)/數(shù)據(jù)存儲(chǔ)。這個(gè)存儲(chǔ)中的一個(gè)操作是能夠有效地定位和查詢對象。本發(fā)明描述了如何能夠非常有效地作出這個(gè)操作的各方面。示例性計(jì)算環(huán)境如這里和權(quán)利要求中所使用的,以下的術(shù)語有以下的意義“對象”是硬件/軟件接口系統(tǒng)可訪問的可存儲(chǔ)信息單元,所述硬件/軟件接口系統(tǒng)具有一組基本特征它們通常在所有展現(xiàn)給最終用戶的對象上被硬件/軟件接口系統(tǒng)的外殼程序所支持。對象也具有通常在包含允許引入新的屬性和關(guān)系的特征的所有類型上被支持的屬性和關(guān)系?!安僮飨到y(tǒng)”(OS)是特定的程序,用作應(yīng)用程序和計(jì)算機(jī)硬件之間的中介。在大多數(shù)情況下,操作系統(tǒng)包含外殼和核心?!坝布?軟件接口系統(tǒng)”是軟件或硬件和軟件的組合,用作計(jì)算機(jī)系統(tǒng)下層硬件組件和在計(jì)算機(jī)系統(tǒng)上執(zhí)行的應(yīng)用程序之間的中介。硬件/軟件接口系統(tǒng)一般包括操作系統(tǒng)(在一些實(shí)施例中,可以單獨(dú)地由操作系統(tǒng)組成)。硬件/軟件接口系統(tǒng)也可以包含虛擬機(jī)管理器、通用語言執(zhí)行環(huán)境(CLR)或其功能等價(jià)物、Java虛擬機(jī)(JVM)或其功能等價(jià)物或其它計(jì)算機(jī)系統(tǒng)中位于操作系統(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í)行。圖4和以下描述旨在提供對適用于本發(fā)明實(shí)現(xiàn)的計(jì)算環(huán)境的簡要概述。雖然不是必須的,本發(fā)明可以在計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中描述,所述計(jì)算機(jī)可執(zhí)行指令諸如由計(jì)算機(jī)執(zhí)行的程序模塊,所述計(jì)算機(jī)諸如客戶機(jī)工作站或服務(wù)器。通常,程序模塊包括執(zhí)行一特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。此外,本發(fā)明的技術(shù)人員會(huì)理解本發(fā)明可以用其它的計(jì)算機(jī)系統(tǒng)配置來實(shí)現(xiàn),包括手持式設(shè)備、多處理器系統(tǒng)、基于多處理器或可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明還可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中在分布式計(jì)算環(huán)境中任務(wù)由通過一通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包含存儲(chǔ)器設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。如圖4所示,示例的通用計(jì)算系統(tǒng)包含一常規(guī)的個(gè)人計(jì)算機(jī)20等等,所述個(gè)人計(jì)算機(jī)包含處理單元21、系統(tǒng)存儲(chǔ)器22、和連接包括系統(tǒng)存儲(chǔ)器在內(nèi)的各個(gè)系統(tǒng)組件到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是幾種類型的總線結(jié)構(gòu)中的任何一種,其中這幾種類型的總線結(jié)構(gòu)包含使用各種總線體系結(jié)構(gòu)中任何一種的存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和本地總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)24和隨機(jī)存取存儲(chǔ)器(RAM)25?;据斎?輸出系統(tǒng)(BIOS)26一般被保存在ROM24中,其中該基本輸入/輸出系統(tǒng)(BIOS)133包含有助于例如在啟動(dòng)過程中在個(gè)人計(jì)算機(jī)20內(nèi)部的元件之間傳輸信息的基本例程。個(gè)人計(jì)算機(jī)20還可以包括從硬盤(未示出)中讀取或?qū)懭氲狡渲械挠脖P驅(qū)動(dòng)器27、從可移動(dòng)磁盤29中讀取或?qū)懭氲狡渲械拇疟P驅(qū)動(dòng)器28和從可移動(dòng)光盤31,諸如CD-ROM或者其它光介質(zhì)中讀取或者寫入到其中的光盤驅(qū)動(dòng)器30。硬盤驅(qū)動(dòng)器27、磁盤驅(qū)動(dòng)器28和光盤驅(qū)動(dòng)器29分別通過硬盤驅(qū)動(dòng)器接口32、磁盤驅(qū)動(dòng)器33和光盤驅(qū)動(dòng)器34被鏈接到系統(tǒng)總線23上。這些驅(qū)動(dòng)器和它們相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)和用于個(gè)人計(jì)算機(jī)20的其它數(shù)據(jù)的非易失性存儲(chǔ)。雖然這里所描述的示例性環(huán)境采用了硬盤、可移動(dòng)磁盤29和可移動(dòng)光盤31,本領(lǐng)域的技術(shù)人員可以理解其它類型的用于存儲(chǔ)計(jì)算機(jī)可訪問數(shù)據(jù)的計(jì)算機(jī)可讀介質(zhì)也可在示例性操作環(huán)境中使用,所述的其它計(jì)算機(jī)可讀介質(zhì)諸如磁帶盒、閃存卡、數(shù)字視頻盤、Bernoulli盒式磁帶、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等等。許多程序模塊可以存儲(chǔ)在硬盤、磁盤29、光盤31、ROM24或RAM25上,包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其它程序模塊37和程序數(shù)據(jù)38。用戶可以通過輸入設(shè)備輸入命令和信息到計(jì)算機(jī)20中,輸入設(shè)備諸如鍵盤40和指點(diǎn)設(shè)備42。其它輸入設(shè)備(未示出)可以包括麥克風(fēng)、操縱桿、游戲墊、衛(wèi)星接收天線、掃描器等等。這些和其它輸入設(shè)備一般通過耦合到系統(tǒng)總線的串行口接口46連接到處理單元21,但也可能由其它接口連接,諸如并行端口、游戲端口、通用串行總線(USB)。監(jiān)視器47或其它類型的顯示設(shè)備也可以通過諸如視頻適配器48這樣的接口連接到系統(tǒng)總線23。除監(jiān)視器47外,個(gè)人計(jì)算機(jī)一般包括諸如揚(yáng)聲器和打印機(jī)等其它外圍輸出設(shè)備(未示出)。圖4的示例性系統(tǒng)中也包含主機(jī)適配器55、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56和連接到SCSI總線56上的外部存儲(chǔ)設(shè)備62。計(jì)算機(jī)20可能工作在使用到一個(gè)或多個(gè)諸如遠(yuǎn)程計(jì)算機(jī)49這樣的遠(yuǎn)程計(jì)算機(jī)的邏輯連接的網(wǎng)絡(luò)環(huán)境內(nèi)。遠(yuǎn)程計(jì)算機(jī)49可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),并且一般包括與計(jì)算機(jī)20相關(guān)的許多或所有上述元件,然而圖4中僅說明了存儲(chǔ)器存儲(chǔ)設(shè)備50。圖4所述的邏輯連接包括局域網(wǎng)(LAN)51以及廣域網(wǎng)(WAN)52。這種網(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ī)20通過網(wǎng)絡(luò)接口或適配器53連接到局域網(wǎng)51。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境時(shí),個(gè)人計(jì)算機(jī)20一般包括調(diào)制解調(diào)器54或其它裝置,用于在諸如因特網(wǎng)或廣域網(wǎng)52上建立通信的裝置。調(diào)制解調(diào)器54可能是內(nèi)置或外置的,它通過串行口接口46連接到系統(tǒng)總線23。在網(wǎng)絡(luò)化環(huán)境中,所述與個(gè)人計(jì)算機(jī)20相關(guān)的程序模塊或其中的一部分可能存儲(chǔ)在遠(yuǎn)程存儲(chǔ)設(shè)備內(nèi)??梢岳斫?,所示網(wǎng)絡(luò)連接是示例性的,并且可以使用其它用于在計(jì)算機(jī)間建立通信連接的技術(shù)。雖然預(yù)見到本發(fā)明的許多實(shí)施例特別適用于計(jì)算機(jī)化系統(tǒng),但是本文件中沒有東西旨在將本發(fā)明限制于這些實(shí)施例。相反地,這里所使用的術(shù)語“計(jì)算機(jī)系統(tǒng)”意在包含任何和所有包括按鈕或能夠確定按鈕或按鈕等價(jià)物的設(shè)備,不管這樣的設(shè)備本質(zhì)上是電子的、機(jī)械的、邏輯的還是虛擬的。如圖5的框圖中所示,計(jì)算機(jī)系統(tǒng)200能夠大體上被分成三個(gè)組件組硬件組件202、操作系統(tǒng)組件204和應(yīng)用程序組件206。在某些計(jì)算機(jī)系統(tǒng)200中,再參見圖4,硬件202可以格外包括中央處理單元(CPU)21、存儲(chǔ)器(ROM24和RAM25)、基本輸入/輸出系統(tǒng)(BIOS)26和各種輸入/輸出(I/O)設(shè)備,諸如鍵盤40、鼠標(biāo)42、監(jiān)視器47和/或打印機(jī)(未示出)。硬件組件202包括計(jì)算機(jī)系統(tǒng)200的基本資源。應(yīng)用程序組件206包括各種軟件程序,包括但不限于編譯器、數(shù)據(jù)庫系統(tǒng)、文字處理器、視頻游戲等等。應(yīng)用程序提供使用計(jì)算機(jī)資源解決問題、提供解決方案和為各種用戶(例如,機(jī)器、其它計(jì)算機(jī)系統(tǒng)和/或終端用戶)處理數(shù)據(jù)的方法。操作系統(tǒng)組件204包含操作系統(tǒng)本身及其外殼和核心。操作系統(tǒng)(OS)是用作應(yīng)用程序和計(jì)算機(jī)硬件之間的特定程序,操作系統(tǒng)的目的是提供用戶可以執(zhí)行應(yīng)用程序的環(huán)境。任何操作系統(tǒng)的目標(biāo)在于使得計(jì)算機(jī)系統(tǒng)便于使用以及以有效的方式使用計(jì)算機(jī)硬件。操作系統(tǒng)一般在啟動(dòng)時(shí)被載入到計(jì)算機(jī)系統(tǒng),此后管理計(jì)算機(jī)系統(tǒng)中所有的應(yīng)用程序(或簡稱為“應(yīng)用”)。應(yīng)用程序經(jīng)由應(yīng)用程序編程接口(API)通過請求服務(wù)與操作系統(tǒng)交互。一些應(yīng)用程序使得終端用戶能夠經(jīng)由用戶接口與操作系統(tǒng)交互,所述用戶接口諸如命令語言或圖形用戶界面(GUI)。操作系統(tǒng)傳統(tǒng)上為應(yīng)用程序執(zhí)行各種服務(wù)。在多任務(wù)操作系統(tǒng)中,其中多個(gè)程序同時(shí)運(yùn)行,操作系統(tǒng)確定哪些應(yīng)用程序應(yīng)該以哪種順序運(yùn)行,在允許從一個(gè)應(yīng)用程序輪流切換到另一應(yīng)用程序之前每個(gè)應(yīng)用程序允許運(yùn)行多少時(shí)間。該操作系統(tǒng)也管理多個(gè)應(yīng)用程序之間內(nèi)部存儲(chǔ)器的共享,并處理到所附硬件的輸入和輸入,所述硬件諸如硬盤、打印機(jī)和撥號端口。該操作系統(tǒng)也向每個(gè)應(yīng)用程序(并且在某些情況下給最終用戶)發(fā)送關(guān)于操作狀態(tài)和任何可能發(fā)生的錯(cuò)誤的消息。操作系統(tǒng)也可以卸載對批作業(yè)(例如,打印)的管理,使得開始的應(yīng)用程序從該工作釋放并且可以繼續(xù)其它的處理和/或操作。在可以提供平行處理的計(jì)算機(jī)上,操作系統(tǒng)也可以管理劃分程序使得它可以每次在多于一個(gè)處理器上運(yùn)行。操作系統(tǒng)的外殼是對操作系統(tǒng)(也被稱為“命令解釋器”)的交互式的終端用戶界面。外殼是應(yīng)用程序直接訪問甚至是終端用戶直接訪問的操作系統(tǒng)的外層。相對于外殼,核心是直接與硬件組件交互的計(jì)算機(jī)系統(tǒng)的最里層。如相關(guān)領(lǐng)域的技術(shù)人員所理解的,“文件”是能夠由操作系統(tǒng)作為離散(可存儲(chǔ)或可恢復(fù))實(shí)體操縱的信息實(shí)體(包括但不限于操作系統(tǒng)自身以及應(yīng)用程序、數(shù)據(jù)集合等等)。在現(xiàn)代操作系統(tǒng)(Windows、Unix、Linux、MacOS等等)中,文件是可存儲(chǔ)信息(例如,數(shù)據(jù)、程序等等)的基本單元,由操作系統(tǒng)使用,文件組以“文件夾”的形式組織。在MicrosoftWindows、Macintosh和其它操作系統(tǒng)中,文件夾是文件的集合,可以被作為實(shí)體來檢索、移動(dòng)或操縱。在某些其它操作系統(tǒng)中,諸如DOS、z/OS和大多數(shù)基于Unix的操作系統(tǒng),使用術(shù)語“目錄”而非文件夾,早期的Apple計(jì)算機(jī)系統(tǒng)(例如AppleIIe)使用術(shù)語“目錄冊”;然而,如這里所使用的,所有這些術(shù)語都是同意的且是可交換的,并且在這里旨在進(jìn)一步包含所有其它用于或引用分層信息存儲(chǔ)構(gòu)架的等價(jià)術(shù)語。如本領(lǐng)域的技術(shù)人員所公知和理解的,目錄(即文件夾的目錄)是基于樹的分層結(jié)構(gòu),其中文件基于文件夾的位置來分組,所述文件夾包含樹結(jié)構(gòu)的節(jié)點(diǎn)。例如,如圖6中所示,基于DOS的文件系統(tǒng)基文件夾(或“根目錄”)302可以包括多個(gè)文件夾304,每個(gè)文件夾可以進(jìn)一步包括附加的文件夾308’直至無窮。雖然在操作系統(tǒng)層,這些文件夾的每一個(gè)可以具有一個(gè)或多個(gè)文件,文件夾中的初始文件在樹分層結(jié)構(gòu)中除了位置沒有共同點(diǎn)。不驚奇地,這個(gè)將文件組織或文件夾層次的方法間接地反映了用于存儲(chǔ)這些文件的典型存儲(chǔ)介質(zhì)(例如硬盤、軟盤、CD-ROM等等)的物理組織。除了上述以外,每個(gè)文件夾是其子文件夾和其文件的容器-即,文件夾擁有這些子文件夾和文件。例如,當(dāng)操作系統(tǒng)刪除文件夾時(shí),它的子文件夾和文件也被刪除(對于每個(gè)子文件夾,遞歸地包括它的子文件夾和文件)。同樣地,每個(gè)文件只能被一個(gè)文件夾所擁有,雖然文件可以被拷貝且其拷貝可以位于不同的文件夾中,文件的拷貝自身是與原文件沒有直接連接的獨(dú)特的和分開的實(shí)體(例如,在操作系統(tǒng)層上,對原文件的修改不會(huì)被鏡像到其拷貝文件)。在這方面,文件和文件夾因此在特性上是實(shí)質(zhì)“物理的”,因?yàn)槲募A是物理容器的概念等價(jià)物,文件是容器中離散的和分開的物理元素的概念等價(jià)物。用于組織、搜索和共享可以用于本發(fā)明的數(shù)據(jù)的存儲(chǔ)平臺(tái)被設(shè)計(jì)成存儲(chǔ)所有類型的數(shù)據(jù),包括被稱為對象的數(shù)據(jù)形式。參見圖7,依照本發(fā)明的存儲(chǔ)平臺(tái)400包括在數(shù)據(jù)庫引擎414上實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)402。在一個(gè)實(shí)施例中,數(shù)據(jù)庫引擎包括帶有對象關(guān)系擴(kuò)展名的關(guān)系型數(shù)據(jù)庫引擎。在一個(gè)實(shí)施例中,關(guān)系型數(shù)據(jù)庫引擎414包括MicrosoftSQL服務(wù)器關(guān)系型數(shù)據(jù)庫引擎。數(shù)據(jù)存儲(chǔ)402實(shí)現(xiàn)支持?jǐn)?shù)據(jù)組織、搜索、共享、同步和安全性的數(shù)據(jù)模型。模式中描述了特定類型的數(shù)據(jù),諸如模式440,存儲(chǔ)平臺(tái)400為部署那些模式和擴(kuò)展那些模式提供了工具446。在數(shù)據(jù)存儲(chǔ)402中實(shí)現(xiàn)的改變跟蹤機(jī)制406提供了跟蹤對數(shù)據(jù)存儲(chǔ)改變的能力。數(shù)據(jù)存儲(chǔ)402也提供安全能力和升級/降級能力410。數(shù)據(jù)存儲(chǔ)402也提供一組應(yīng)用程序編程接口412以使得數(shù)據(jù)存儲(chǔ)402的能力可以被其它存儲(chǔ)平臺(tái)組件和使用存儲(chǔ)平臺(tái)的應(yīng)用程序(例如應(yīng)用程序450a、450b和450c)使用。本發(fā)明的存儲(chǔ)平臺(tái)進(jìn)一步包括應(yīng)用程序編程接口(API)422,使得諸如應(yīng)用程序450a、450b和450c等應(yīng)用程序能夠訪問存儲(chǔ)平臺(tái)的所有前述能力并訪問模式中所描述的數(shù)據(jù)。應(yīng)用程序可以將存儲(chǔ)平臺(tái)API422與其它API(諸如OLEDBAPI424和MicrosoftWindowsWin32API426)結(jié)合使用。本發(fā)明的存儲(chǔ)平臺(tái)400可以向應(yīng)用程序提供多種服務(wù),包括便利用戶或系統(tǒng)之間數(shù)據(jù)共享的同步服務(wù)430。例如,同步服務(wù)420可以允許和與數(shù)據(jù)存儲(chǔ)420具有相同格式的其它數(shù)據(jù)存儲(chǔ)440協(xié)同工作以及訪問具有其它格式的數(shù)據(jù)存儲(chǔ)442。存儲(chǔ)平臺(tái)400也為文件系統(tǒng)提供允許數(shù)據(jù)存儲(chǔ)402與現(xiàn)有文件系統(tǒng)協(xié)同工作的能力,所述現(xiàn)有文件系統(tǒng)諸如WindowsNTFS文件系統(tǒng)418。在至少一些實(shí)施例中,存儲(chǔ)平臺(tái)420也可以提供具有附加能力的應(yīng)用程序,使得能夠操作數(shù)據(jù)或允許與其它系統(tǒng)的交互。這些能力可以以附加服務(wù)428的形式體現(xiàn),諸如InfoAgent服務(wù)434和通知服務(wù)432以及其它工具軟件436的形式。在至少一些實(shí)施例中,存儲(chǔ)平臺(tái)體現(xiàn)在計(jì)算機(jī)系統(tǒng)的硬件/軟件接口中或形成計(jì)算機(jī)系統(tǒng)的硬件/軟件接口的組成部分。例如,非限制性的,本發(fā)明的存儲(chǔ)平臺(tái)可以體現(xiàn)在操作系統(tǒng)、虛擬機(jī)管理(VMM)、通用語言執(zhí)行環(huán)境(CLR)或其功能等價(jià)物、或Java虛擬機(jī)(JVM)或其功能等價(jià)物中,或形成它們的組成部分。通過其通用存儲(chǔ)基礎(chǔ)和原理化數(shù)據(jù),本發(fā)明的存儲(chǔ)平臺(tái)能夠?yàn)橄M(fèi)者、知識(shí)工作者和企業(yè)提供更為有效的應(yīng)用程序開發(fā)。它提供了充足的和可擴(kuò)展的編程表面區(qū)域,不僅使得其數(shù)據(jù)模型中固有的能力可用,而且也包含和擴(kuò)展了現(xiàn)有文件系統(tǒng)和數(shù)據(jù)庫訪問方法。在這里描述和各個(gè)附圖中,本發(fā)明的存儲(chǔ)平臺(tái)400可以被稱為“WinFS”。然而,使用這個(gè)名字來指存儲(chǔ)平臺(tái)僅僅是為了描述方便,而不是以任何方式限制本發(fā)明。本發(fā)明的存儲(chǔ)平臺(tái)400的數(shù)據(jù)存儲(chǔ)402實(shí)現(xiàn)了支持駐留在存儲(chǔ)器中數(shù)據(jù)的組織、搜索、共享、同步和安全性數(shù)據(jù)模型。在本發(fā)明的數(shù)據(jù)模型中,“對象”是存儲(chǔ)信息的基礎(chǔ)單元。數(shù)據(jù)模型提供了用于宣稱對象和對象擴(kuò)展和用于在對象之間建立關(guān)系和用于組織和分類對象的機(jī)制。關(guān)系型數(shù)據(jù)庫引擎414,在一個(gè)實(shí)施例中包含MicrosoftSQL服務(wù)器引擎,支持內(nèi)置的標(biāo)量類型。內(nèi)置標(biāo)量類型是“原生的”和“簡單的”。原生的是指用戶不能定義他們自己的類型,簡單的是指它們不能封裝一復(fù)雜結(jié)構(gòu)。用戶定義類型(UDT)通過使得用戶能夠通過定義復(fù)雜的、結(jié)構(gòu)化類型來擴(kuò)展類型系統(tǒng)提供了上述類型擴(kuò)展和操作原生標(biāo)量類型系統(tǒng)的機(jī)制。一旦被用戶定義,UDT可以被用在內(nèi)置標(biāo)量類型可以使用的類型系統(tǒng)中的任何地方。存儲(chǔ)平臺(tái)圖解被映射到數(shù)據(jù)庫引擎存儲(chǔ)中的UDT類。數(shù)據(jù)存儲(chǔ)對象被映射到從Base.Item類型獲取的UDT類。擴(kuò)展還被映射到UDT類并使用繼承。根擴(kuò)展類型是Base.Extension,所有擴(kuò)展類型都是從根擴(kuò)展類型得出的。UDT是CLR類-它具有狀態(tài)(即,數(shù)據(jù)字段)和行為(即,例程)。使用任何管理語言來定義UDT-C#、VB.NET等等。UDT方法和操作符可以相對那個(gè)類型的實(shí)例在T-SQL中被調(diào)用。UDDT可以是例如行中列的類型、T-SQL中例程參數(shù)的類型或T-SQL中可變量的類型。示例性實(shí)施例本發(fā)明提供了稱為基表(因?yàn)樵谶@個(gè)基礎(chǔ)上視圖被定義)上的索引視圖(即物化視圖)的創(chuàng)新方法并且在可以用于增強(qiáng)查詢的附加操作和結(jié)構(gòu)中使用這種索引視圖。索引視圖用作-在基表上的索引。此索引可以被用作一個(gè)到基表的訪問路徑以便解答與索引視圖和基表的結(jié)構(gòu)相匹配的查詢。典型索引視圖包含數(shù)據(jù)條目并且可能包含關(guān)聯(lián)的子條目或者其他依賴或源于此的數(shù)據(jù)。索引視圖可能包含一個(gè)傳輸數(shù)據(jù)的函數(shù)調(diào)用的結(jié)果。舉例而言,索引視圖可能包含嵌套,在這樣的情況下一個(gè)條目會(huì)有多個(gè)關(guān)聯(lián)的子條目。例如,假設(shè)第一基表包含名字,同時(shí)第二基表包含地址。一個(gè)在兩個(gè)基表上的“聯(lián)接”操作會(huì)為一個(gè)特定的名字提供一個(gè)地址。索引視圖可能被以包含名字和相關(guān)地址的方式存儲(chǔ),正如圖8中所示的索引視圖500。在索引視圖500中,名字“Alice”有三個(gè)相關(guān)地址地址1、地址2和地址3。每個(gè)在示例的索引視圖500中的其它名字(例如“Bob”和“Charlie”)都有一個(gè)相關(guān)地址。此索引視圖被認(rèn)為是嵌套的,因?yàn)槎嘀氐刂放c名稱“Alice”相關(guān)聯(lián)。移去嵌套是希望的,所以如果與Alice相關(guān)的地址中的一個(gè)改變了,這個(gè)地址可以直接被訪問,并且索引視圖也不需要為了反映這個(gè)變化而重新計(jì)算。其他功能的結(jié)果也可以通過這個(gè)方式被索引。為了移除這個(gè)嵌套,唯一的聚類關(guān)鍵字550被構(gòu)造出來,如圖9所示。如圖示及下面更詳細(xì)的描述,關(guān)鍵字550為索引視圖中的有嵌套的條目提供了一個(gè)單獨(dú)的子條目。這樣,在這個(gè)例子中的關(guān)鍵字550提供三個(gè)條目“Alice”,每一個(gè)條目與三個(gè)地址地址1、地址2和地址3中的一個(gè)不同的地址相關(guān)聯(lián)。這個(gè)關(guān)鍵字允許一個(gè)應(yīng)用程序在基表和索引視圖之間來回。索引視圖可被當(dāng)作在有多值屬性的基表上的次級索引。這樣,本發(fā)明提供使用索引視圖在函數(shù)調(diào)用的結(jié)果中進(jìn)行搜索(正如在這個(gè)例子中被嵌套的數(shù)據(jù))。索引在函數(shù)調(diào)用(例如一個(gè)去嵌套操作)的結(jié)果上被執(zhí)行。換言之,被導(dǎo)出的數(shù)據(jù)(即子條目)被索引了。本發(fā)明索引復(fù)雜的結(jié)構(gòu),所以更多的索引視圖可以被確定和可供使用。這為查詢執(zhí)行計(jì)劃提供了更多的選項(xiàng),導(dǎo)致更優(yōu)化的查詢。如下文進(jìn)一步的描述,在函數(shù)調(diào)用的結(jié)果上索引一個(gè)視圖提供了一個(gè)索引復(fù)雜數(shù)據(jù)(例如一個(gè)嵌套集合的內(nèi)容)變換的方法。一個(gè)本發(fā)明支持的可效仿的去嵌套操作是SQLServer的“交叉應(yīng)用去嵌套”。具體來說,使用“交叉應(yīng)用去嵌套”操作,在索引視圖里的一個(gè)嵌套的級別可以被去嵌套。然而,依據(jù)本發(fā)明,任何級數(shù)的去嵌套都是可預(yù)期的。更一般的,可以預(yù)期,通過這個(gè)方法多重級別的函數(shù)調(diào)用可以被索引。此外提供了從索引視圖提供到基表的“反向聯(lián)接”。這允許來自基表的字段(不出現(xiàn)在索引視圖中)被包含在對表的查詢的結(jié)果中,所述表使用被視為訪問路徑的索引視圖來處理。從索引視圖到視圖在其上被定義的基表上使用反向聯(lián)接。這提供了包含不在索引視圖而在基表中的查詢結(jié)果中的的列的方法。所期望的是經(jīng)由唯一的聚類關(guān)鍵字,從單表索引視圖到基表支持反向聯(lián)接,所述聚類關(guān)鍵字作為邏輯行定位符。系統(tǒng)可以經(jīng)由唯一的聚類關(guān)鍵字從索引視圖反向聯(lián)接到基表中。這些特征允許使用索引視圖對表格的函數(shù)調(diào)用數(shù)據(jù)的結(jié)果的內(nèi)容索引,諸如對多個(gè)集合或多個(gè)值屬性的“交叉應(yīng)用去嵌套”操作。如上所述,可以對函數(shù)調(diào)用數(shù)據(jù)的結(jié)果定義索引視圖(諸如交叉應(yīng)用去嵌套操作)。結(jié)合反向聯(lián)接能力,這允許基于包含在這些記錄中的值的集合的內(nèi)容來訪問表格中的記錄。因此,可以使用經(jīng)索引的視圖來創(chuàng)建對UDT的多重集屬性的索引。例如,以下經(jīng)索引的視圖可以幫助加速對city的檢索性能Createviewiv_citywithschemabindingasSelecta.addr.citycity,a.addr.addrIDaddrID,person.htid,person.pidFrompersoncrossapplyunnest(pcol.addresses)a(addr)Createuniqueclusteredindexiv_city_idxoniv_city(city,pid,addrID)注意期望將addrID和pid用于使得索引唯一,假設(shè)addrID在單個(gè)多重集地址中是唯一的。以下例子示出通用函數(shù)調(diào)用如何可能有這個(gè)索引能力Createviewiv_citywithschemabindingasSelecta.addr.citycity,a.addr.addrIDaddrID,person.htid,person.pidFrompersoncrossapplyFUNCTION(pcol)a(addr)Createuniqueclusteredindexiv_city_idxoniv_city(city,pid,addrID)在這個(gè)例子中“unnest”被表示“對這里所討論的數(shù)據(jù)函數(shù)調(diào)用”的“FUNCTION”代替。一般地,不同的函數(shù)可以用在“FUNTION”的位置處??赡艿睦影诩现腥コ短讛?shù)據(jù)、分解XML文檔或?qū)碜詮?fù)雜結(jié)構(gòu)(諸如UDT)的多個(gè)字段索引。也可能將這個(gè)機(jī)制使用于其它對數(shù)據(jù)進(jìn)行處理的函數(shù)上。查詢的經(jīng)索引的視圖可以用于無需讀基表(例如基表“person”)就回答查詢。這可以是有益的,因?yàn)樗饕赡鼙然硇『芏?。例如期望基表“person”包含屬性pcol,它是UDT。Pcol字段(地址)之一是多重集(集合值屬性)??紤]表1,它是假設(shè)的“person”表。表1表1示出了粒度的最精細(xì)層次。對本例不是必須的列被省略并且用省略號表示。注意到在本例中pid和name是原子屬性,因此只包含一個(gè)值,而地址是集合,因此包含多于一個(gè)值。City是每個(gè)成員的地址的一個(gè)字段。在“person”表中,為每個(gè)名字示出了多個(gè)子行。例如,Bob有兩個(gè)地址子行AddrID1和2,分別對應(yīng)于Bellevue和Corvallis;Sue有兩個(gè)地址子行AddrID3和4,分別對應(yīng)于Bellevue和Berkeley。考慮經(jīng)索引的視圖iv_city。對于“person“表中上述值,iv_city的內(nèi)容如表2示出。表2iv_city中每行對應(yīng)于粒度尺寸數(shù)據(jù)的最精細(xì)層次中的信息。因此,經(jīng)索引的視圖示出現(xiàn)在每個(gè)子行條目在其自己的行中。注意Pid可以被用作反向到第一表反向聯(lián)接。例如,iv_city中的Pid1將反向聯(lián)接到“person”表的Pid1。可能對部分?jǐn)?shù)據(jù)索引(即,只對感興趣的數(shù)據(jù),例如只對住在Bellevue的人)?,F(xiàn)在,考慮以下查詢以發(fā)現(xiàn)至少在Corvallis有一個(gè)地址的所有人的名字Selectdistinctperson.pid,person.pcol.nameFrompersoncrossapplyunnest(Pcol.addresses)asa(addr)Wherea.addr.city=‘Corvallis’圖10示出的執(zhí)行計(jì)劃通過使用iv_city(對去除嵌套結(jié)果的索引視圖)和基表“person”的關(guān)鍵人員pid的反向聯(lián)接,可以回答上述的查詢。注意交叉應(yīng)用去除嵌套索引視圖iv_city與反向聯(lián)接操作組合(如圖10所示)使得可以基于包含在個(gè)人的pcolUDT字段值的地址結(jié)合中個(gè)人地址值的城市,對“person”表行進(jìn)行快速關(guān)聯(lián)查找。對于給出的示例數(shù)據(jù),對左方的索引掃描將僅識(shí)別iv_city的一行(上述示出iv_city的內(nèi)容的表2中的最后一個(gè))。Iv_city的這行與人員Bob的行聯(lián)接。Bob的“person”表行接著將傳遞上述半聯(lián)接操作符。在圖10中,“nest-looprightsemi-join“操作用作反向聯(lián)接操作。接著會(huì)投影pid和pcol.name字段,又得出一行。沒有重復(fù),因此排序和重復(fù)消除不會(huì)改變它們的輸入流。最終的結(jié)果在表3中示出表3更特別地,關(guān)于來自索引視圖的反向聯(lián)接,假設(shè)索引視圖V是N個(gè)基表(T1..TN)的函數(shù)。此外,假設(shè)V被構(gòu)建成只使用選擇、投影、聯(lián)接、分組和集合操作。每個(gè)表T1...TN具有一個(gè)或多個(gè)在表的元數(shù)據(jù)中確定的關(guān)鍵字。關(guān)鍵字是表的一列或多列的集合,使得集合中的值唯一地識(shí)別表中的行。假設(shè)匹配針對T1...TN定義的查詢Q的行集合可以只用V中的行來識(shí)別。(Q可以是較大查詢的一部分。不失一般性地,考慮Q是自立的查詢。)即使Q的結(jié)果的行可以通過參考V來識(shí)別,這不意味著從Q得出的行可以整個(gè)從V構(gòu)建。情況可以是期望應(yīng)該出現(xiàn)在Q的結(jié)果中一些列值出現(xiàn)在T1...TN的之一中。從索引視圖V到在其上定義視圖的基表T(T1...TN的之一)的反向聯(lián)接被定義為在V和T之間對T的任何關(guān)鍵字和來自T的那個(gè)關(guān)鍵字的V中的字段的等價(jià)聯(lián)接。反向聯(lián)接在其上執(zhí)行的關(guān)鍵字可以是但不限于單列或多列主關(guān)鍵字或單列或多列候選關(guān)鍵字。關(guān)鍵字可以或可以不具有索引。如果關(guān)鍵字不具有索引,那么索引可以或可以不被聚類。雖然這里將反向聯(lián)接描述成在基表的聚類關(guān)鍵字上執(zhí)行,本發(fā)明包含了對任何類型的關(guān)鍵字做反向聯(lián)接的能力。作為反向聯(lián)接的一個(gè)例子,考慮使用下述SQL語句來定義表Createtableemp(enoint,namevarchar(30),salarymoney)定義基表“emp”將使用對eno排序的經(jīng)聚類的訪問路徑來存儲(chǔ),如下Createuniqueclusteredindexeno_idxonemp(eno)Eno是emp的關(guān)鍵字?,F(xiàn)在,考慮索引視圖定義如下CreateviewhighpaidwithschemabindingasSelecteno,salaryFromdbo.empeWheresalary>200000.00Createuniqueclusteredindexonhighpaid(eno)現(xiàn)在,考慮以下查詢Selecteno,name,salaryfromempwheresalary>300000.00作為如何使用索引視圖“highpaid”與反向聯(lián)接來解決這個(gè)查詢的例子,圖11中所示的訪問計(jì)劃將提供對查詢的示例性回答。如圖11中所示,從索引視圖“highpaid”選出的行對于關(guān)鍵詞eno被“反向聯(lián)接”到基表“emp”,其中使用“nested-loop-join”操作作為反向聯(lián)接操作。因此術(shù)語“反向聯(lián)接”被用于描述對一關(guān)鍵字從索引視圖反向到基表的聯(lián)接。預(yù)期的是任何類型的聯(lián)接算法可以與反向聯(lián)接一起使用(例如,nested-loop、sort-merge、hash)。圖12是在具有嵌套數(shù)據(jù)的基表中查詢數(shù)據(jù)的示例性方法的流程圖。在步驟600處,接收到查詢。在步驟610處,基表中數(shù)據(jù)的索引視圖被接收、檢索或否則被生成。在步驟620處,查詢優(yōu)化程序確定查詢是否匹配或包含匹配索引視圖的查詢模式。在步驟630處,如果查詢或其部分匹配索引視圖,那么查詢優(yōu)化程序生成一計(jì)劃使用匹配索引視圖作為索引而非執(zhí)行該函數(shù)應(yīng)用。在步驟640處,如果索引視圖不能傳遞原始查詢中所請求的所有列,那么優(yōu)化程序引入與原始基表的反向聯(lián)接以經(jīng)由聚類關(guān)鍵字獲取丟失的列。這允許索引視圖中沒有的基表的字段被包含在查詢結(jié)果中。在步驟650處,如果查詢或其部分不匹配任一索引視圖,那么查詢優(yōu)化程序生成一計(jì)劃對數(shù)據(jù)應(yīng)用原始函數(shù)。本發(fā)明也允許將索引視圖作為部分索引的推廣,以及將索引視圖作為對類型層次的部分索引。通過將索引視圖與從索引視圖到基表反向聯(lián)接的能力相結(jié)合,本發(fā)明提供了被稱為部分索引技術(shù)的推廣。索引視圖加反向聯(lián)接能力提供了比部分索引更為有力的能力集合。為了創(chuàng)建表的各行的僅一子集的索引,在索引視圖定義(例如在Where短語中)中提供了適合的條件。例如,為了創(chuàng)建加速查找個(gè)人“Fred”的視圖,定義了以下索引視圖CreateViewv_fredwithschemabindingasSelectpid,htidFrompersonWherepcol.name=‘Fred’Createuniqueclusteredindexi_v_fredonv_fred(htid,pid)給出對基表的聚類關(guān)鍵字作反向聯(lián)接的能力,以及現(xiàn)有查詢匹配索引視圖的能力,這個(gè)索引視圖可以幫助回答諸如“Select*frompersonwherepcol.name=‘Fred’”等查詢??梢酝ㄟ^讀出索引視圖中的一行和將其反向聯(lián)接到個(gè)人表中來解決這個(gè)查詢。此外,索引視圖加上反向聯(lián)接到基表的能力也可以在對象關(guān)系DVMS(數(shù)據(jù)庫管理系統(tǒng))中支持索引一組用戶定義類型(也被稱為UDT或?qū)ο?。如果類型以推廣的層次排列(也被稱為類型層次或IS-A層次),那么可能使用索引視圖加上到一表中的索引值的反向聯(lián)接的能力,所述表的類型具有給定類型或其子類型之一。為了對子類型的字段索引,其中對類型過濾的部分索引不需要或不是期望的,可以實(shí)現(xiàn)對經(jīng)計(jì)算的列的常規(guī)索引。所期望的經(jīng)計(jì)算的列的值對于沒有索引的字段的類型為NULL。索引可以被聚類或不聚類。例如,為了對個(gè)人工資建立聚類索引,其中非雇員的工資字段為NULLAltertablepersonaddsalaryas(treatpcolasemployee_t).salaryCreateclusteredindexi_salonperson(salary)為了為給定UDT列對類型層次的子集索引(例如因?yàn)橹挥心莻€(gè)子集中的值具有期望被索引的特定屬性),于是在視圖定義的Where短語中的ISOF判定來創(chuàng)建部分索引。例如,為了對雇員工資創(chuàng)建索引,所述索引不包括對不是雇員的個(gè)人的索引中的記錄Createviewv-emp_sal2withschemabindingasSelect(treatpcolasemployee_t).salarysalary,htid,pidFrompersonWherepcolisof(employee_t)Createuniqueclusteredindexi_emp_sal2onv_emp_sal2(salary,htid,pid)這個(gè)示例性索引視圖對非雇員工資沒有NULL條目。非雇員不被索引,因?yàn)樗鼈兏m合被視圖的Where短語中的ISOF條件過濾掉。XML字段的索引本發(fā)明的各方面可以被用于對XML值數(shù)據(jù)字段索引。相對于存儲(chǔ)在數(shù)據(jù)庫的表中的關(guān)系型數(shù)據(jù),XML是半結(jié)構(gòu)化的數(shù)據(jù)不是依附于先驗(yàn)宣稱的模式,而是用表示模式信息的標(biāo)簽注釋。為了索引和處理常規(guī)數(shù)據(jù)庫系統(tǒng)中的XML數(shù)據(jù),它必須被分成表格式。以下例子示出了XML分段,且圖4中示出了一個(gè)可能的相應(yīng)表格式。<person><name>JimSmith</name><phones><home>425-601-9229</home><cell>425-799-1532</eell></phones>…</person>表4可能有各種不同的將XML分成表的格式的方式,本發(fā)明不限于使用特定的一個(gè)。然而,可以使用任何給出一XML分段輸出表值格式的函數(shù),例如這里被稱為XMLTransform。函數(shù)XMLTransform是上述的表值函數(shù)。本發(fā)明允許對在XML分段上對XMLTransform的調(diào)用的結(jié)果索引。例如,用戶可能希望對TAG,VALUE和HIERARCHICALINFORMATION列或它們的組合建立索引。用戶可以查詢XML分段的一個(gè)可能的方式如下寫出SelectValueFrom‘<xml...>’xmlstringcrossapplyXMLTransform(xmlstring)WhereTag=‘name’andValue=‘SamJones’其中‘<xml...>’表示對任一給定的XML分段。查詢可以搜索XML分段以找到具有值‘SamJones’標(biāo)記‘name’的元素。此外,XML分段可以以數(shù)據(jù)庫表中XML數(shù)據(jù)類型字段的形式提供,而非以XML文本串給出。使用XML從XML數(shù)據(jù)類型列查詢的例子可以如下寫出SelectValueFromsalescrossapplyXMLTransform(sales.salesperson)Where(Tag=‘cell’orTag=‘home’)andValuelike‘425%’Andsales.date=‘02/28/2004’這假設(shè)在表sales中有列salesperson,所述表sales是類型XML分段,即sales中的每行包含被稱為salesperson的XML分段。上述查詢將查詢sales表與查詢XML分段相結(jié)合;它返回在02/28/2004結(jié)束一交易的銷售人員的電話號碼。多列或字段變換另一個(gè)示例性實(shí)施例允許對多列和/或復(fù)雜結(jié)構(gòu)的多字段的索引。一般地,數(shù)據(jù)庫系統(tǒng)中的索引結(jié)構(gòu)可以從復(fù)雜結(jié)構(gòu)中的單列或位置索引數(shù)據(jù)。例如,關(guān)于表2所描述的例子描述了在嵌套集合中索引Address字段的機(jī)制。本發(fā)明的各方面也可以被用于對從復(fù)雜對象或一行中的多個(gè)字段導(dǎo)出的數(shù)據(jù)索引。表5表5中的示例索引視圖描述了人員和他們住處的表。對數(shù)據(jù)的函數(shù)調(diào)用可以返回如表6所示的數(shù)據(jù)。表6表6描述了對來自表5的數(shù)據(jù)不同種類的索引視圖的結(jié)果。在這個(gè)例子中,來自表5的多列在索引視圖中被一起索引。雖然這個(gè)例子使用多列,也可能使用來自諸如UDT等復(fù)雜對象的多個(gè)字段或它們兩者的組合。此外,這個(gè)變換可以包含應(yīng)用到數(shù)據(jù)中各列或各字段的特殊邏輯。在這個(gè)例子中,每個(gè)狀態(tài)的縮寫是目標(biāo)變換和原始源數(shù)據(jù)的一部分。然而,每個(gè)狀態(tài)的全名被作為函數(shù)調(diào)用的部分生成并且也被插入到結(jié)果中。許多變換是可能的并且不限于引入對于單值的附加映射??赡艿挠成淇梢园幌抻讷@取列中數(shù)據(jù)的子字符串、將來自多列或多字段的數(shù)據(jù)以相同的方式組合或從單列或字段將多個(gè)單詞分成多行。表6也包含一例子,其中來自單字段的多個(gè)單詞以多行的方式返回。表中附加的列可以用于包含定位符列,它使得能夠反向聯(lián)接或引入列以保證函數(shù)調(diào)用結(jié)果的唯一性。這個(gè)示例性變換允許對復(fù)雜變換的結(jié)果索引。它也使得對某些查詢類更為有效地查詢數(shù)據(jù)。一個(gè)這樣的查詢可以寫出如下Select*fromtbl_peopleaddresseswhereSOMECOLUMNCONTAINS(‘Lake’)orSOMECOLUMNCONTAINS(‘California’);在這個(gè)查詢中,所期望的結(jié)果是發(fā)現(xiàn)與單詞‘Lake’或單詞‘California’有些關(guān)聯(lián)的人。這個(gè)關(guān)聯(lián)可以是與表中的任何列的準(zhǔn)確列匹配,或者它可以是附加、潛在的對表中的數(shù)據(jù)用戶定義邏輯的結(jié)果。在這個(gè)例子中,‘Lake’是與包含‘Sara’的記錄相關(guān)聯(lián)的一個(gè)字段的第二個(gè)單詞,而‘California’與包含‘Bob’的記錄相關(guān)。這個(gè)邏輯被封裝在函數(shù)‘SOMECOLUMNCONTAINS’中,但它可以用在任何搜索情況中。例如,可以使用SQL函數(shù)‘LIKE’來應(yīng)用相同的邏輯,雖然其它函數(shù)可以以相似的方式使用本發(fā)明。查詢處理器可以對這個(gè)函數(shù)調(diào)用結(jié)果使用索引視圖以有效地解決包含LIKE或SOMECOLUMNCONTAINS的查詢。所期望的是這個(gè)邏輯只需要使用匹配邏輯來有效地發(fā)現(xiàn)包含對數(shù)據(jù)的這個(gè)特定函數(shù)調(diào)用結(jié)果的索引視圖。結(jié)論這里所描述的各種系統(tǒng)、方法和技術(shù)可以用硬件、軟件或適當(dāng)時(shí)用它們的組合來實(shí)現(xiàn)。因此,本發(fā)明的方法和裝置或某些方面或其部分可以用有形介質(zhì)體現(xiàn)的程序代碼(即指令),所述有形介質(zhì)諸如軟盤、CD-ROM、硬盤或任何其它的機(jī)器可讀存儲(chǔ)介質(zhì),其中當(dāng)程序代碼被載入并且被機(jī)器(諸如計(jì)算機(jī))執(zhí)行,機(jī)器成為了實(shí)現(xiàn)本發(fā)明的裝置。在可編程計(jì)算機(jī)上執(zhí)行程序代碼的情況下,計(jì)算機(jī)一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備。一個(gè)或多個(gè)程序更適宜以高級過程或面向?qū)ο蟮木幊陶Z言實(shí)現(xiàn)以與計(jì)算機(jī)系統(tǒng)通信。然而,如果期望,程序可以以匯編或機(jī)器語言來實(shí)現(xiàn)。在任一情況下,語言可以是編譯或解釋語言并且與硬件實(shí)現(xiàn)相結(jié)合。本發(fā)明的方法和裝置也可以以在某些傳輸介質(zhì)上發(fā)送的程序代碼的形式體現(xiàn),諸如在電線或電纜上,通過光纖或經(jīng)由任何其它形式的傳輸,其中當(dāng)接收到程序代碼,將其載入到機(jī)器并由機(jī)器執(zhí)行程序代碼時(shí),諸如EPPOM、門陣列、可編程邏輯器件(PLD)、客戶端計(jì)算機(jī)、視頻錄像機(jī)等等,機(jī)器成為實(shí)現(xiàn)本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合以提供用于執(zhí)行本發(fā)明的索引功能的唯一裝置。雖然結(jié)合各種附圖的優(yōu)選實(shí)施例描述了本發(fā)明,應(yīng)該理解可以使用其它類似的實(shí)施例,或者可以對所描述的實(shí)施例作出修改和增加以執(zhí)行本發(fā)明相同的功能而不背離本發(fā)明。例如,雖然本發(fā)明的示例性實(shí)施例在數(shù)字設(shè)備仿真?zhèn)€人計(jì)算機(jī)功能的環(huán)境中描述,本發(fā)明的技術(shù)人員會(huì)認(rèn)識(shí)到本發(fā)明不限于這種數(shù)字設(shè)備,如本應(yīng)用中所描述的可以應(yīng)用到任何數(shù)量的現(xiàn)有或新興計(jì)算設(shè)備活環(huán)境中,諸如游戲控制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等等,無論有線或無線,并且可以應(yīng)用到經(jīng)由通信網(wǎng)絡(luò)連接或通過網(wǎng)絡(luò)交互的任何數(shù)量的這種計(jì)算設(shè)備。此外,應(yīng)該強(qiáng)調(diào)的是這里期望各種計(jì)算機(jī)平臺(tái),包括手持設(shè)備操作系統(tǒng)和其他應(yīng)用程序特定操作系統(tǒng),尤其是隨著無線網(wǎng)絡(luò)設(shè)備的數(shù)目不斷增長。因此,本發(fā)明不應(yīng)被限于任何單一的實(shí)施例,而應(yīng)該按照符合所附權(quán)利要求的最廣寬度和范圍來構(gòu)造。權(quán)利要求1.一種用于查詢駐留在基表中的數(shù)據(jù)的方法,包括接收查詢;接收所述數(shù)據(jù)上的函數(shù)調(diào)用的索引視圖,所述函數(shù)調(diào)用包括表值函數(shù);將所述索引視圖應(yīng)用為對所述數(shù)據(jù)上的函數(shù)調(diào)用的索引;以及使用對所述數(shù)據(jù)上的函數(shù)調(diào)用的索引確定查詢結(jié)果。2.如權(quán)利要求1所述的方法,其特征在于,確定所述查詢結(jié)果包括對嵌套數(shù)據(jù)執(zhí)行去除嵌套操作。3.如權(quán)利要求2所述的方法,其特征在于,所述去除嵌套操作是交叉應(yīng)用去除嵌套操作。4.如權(quán)利要求2所述的方法,其特征在于,執(zhí)行所述去除嵌套操作提供一去除嵌套結(jié)果,并且所述方法還包含對所述去除嵌套結(jié)果索引一視圖。5.如權(quán)利要求1所述的方法,其特征在于,還包括提供從所述索引視圖到基表的反向聯(lián)接。6.如權(quán)利要求5所述的方法,其特征在于,還包括確定用作數(shù)據(jù)的邏輯行定位符的聚類關(guān)鍵字。7.如權(quán)利要求6所述的方法,其特征在于,所述聚類關(guān)鍵字是唯一的。8.如權(quán)利要求6所述的方法,其特征在于,還包括經(jīng)由所述聚類關(guān)鍵字從所述索引視圖反向聯(lián)接到所述基表。9.如權(quán)利要求5所述的方法,其特征在于,所述反向聯(lián)接允許來自所述索引視圖中不存在的基表字段被包含在所述查詢結(jié)果中。10.如權(quán)利要求1所述的方法,其特征在于,所述索引視圖是多個(gè)部分索引的推廣。11.如權(quán)利要求1所述的方法,其特征在于,所述索引視圖是對類型層次的部分索引。12.如權(quán)利要求1所述的方法,其特征在于,還包括在將所述索引視圖應(yīng)用為對所述數(shù)據(jù)上的函數(shù)調(diào)用的索引之前,確定所述索引視圖是否匹配查詢模式。13.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)包括XML值數(shù)據(jù)字段。14.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)包括復(fù)雜結(jié)構(gòu)的多列或多個(gè)字段。15.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)有數(shù)據(jù)結(jié)構(gòu),包括包含對象的第一數(shù)據(jù)字段;以及包含與所述對象相關(guān)聯(lián)的數(shù)據(jù)的第二數(shù)據(jù)字段,所述數(shù)據(jù)從所述數(shù)據(jù)上的函數(shù)調(diào)用導(dǎo)出,所述函數(shù)調(diào)用包括表值函數(shù)。16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)據(jù)是從一去除嵌套操作導(dǎo)出的,并且所述第一數(shù)據(jù)字段和所述第二數(shù)據(jù)字段包括一聚類關(guān)鍵字。17.如權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述聚類關(guān)鍵字能夠?qū)⑺饕晥D反向聯(lián)接到基表。18.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)據(jù)包括XML值數(shù)據(jù)字段。19.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)據(jù)包括復(fù)雜結(jié)構(gòu)的多個(gè)列和多個(gè)字段。20.一種對數(shù)據(jù)的嵌套集合的內(nèi)容進(jìn)行索引的方法,包括對所述數(shù)據(jù)的嵌套集合執(zhí)行去除嵌套操作;以及對所述去除嵌套操作的結(jié)果生成索引視圖。21.如權(quán)利要求20所述的方法,其特征在于,所述去除嵌套操作是交叉應(yīng)用去除嵌套操作。22.一種計(jì)算機(jī)系統(tǒng),包含一數(shù)據(jù)存儲(chǔ),包括數(shù)據(jù)和對所述數(shù)據(jù)上的函數(shù)調(diào)用的索引視圖,所述函數(shù)調(diào)用包括表值函數(shù);以及一硬件/軟件接口系統(tǒng),用于查詢所述索引視圖。23.如權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)包括嵌套數(shù)據(jù),并且所述硬件/軟件接口通過對所述嵌套數(shù)據(jù)執(zhí)行去除嵌套操作來確定查詢結(jié)果。24.如權(quán)利要求23所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述硬件/軟件接口對所述去除嵌套操作的結(jié)果索引一視圖。25.如權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述硬件/軟件接口經(jīng)由聚類關(guān)鍵字提供從所述索引視圖到基表的反向聯(lián)接。26.如權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)包括XML值數(shù)據(jù)字段。27.如權(quán)利要求22所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)包括復(fù)雜結(jié)構(gòu)的多列或多個(gè)字段。28.一種能夠?yàn)閿?shù)據(jù)查詢索引視圖的硬件/軟件接口系統(tǒng)。29.如權(quán)利要求28所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述硬件/軟件接口適用于通過對所述嵌套數(shù)據(jù)執(zhí)行去除嵌套操作來確定查詢結(jié)果。30.如權(quán)利要求29所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述硬件/軟件接口對所述去除嵌套操作的結(jié)果索引視圖。31.如權(quán)利要求28所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述硬件/軟件接口經(jīng)由聚類關(guān)鍵字提供從所述索引視圖到基表的反向聯(lián)接。32.如權(quán)利要求28所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)包括XML值數(shù)據(jù)字段。33.如權(quán)利要求28所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述數(shù)據(jù)包括復(fù)雜結(jié)構(gòu)的多列或多個(gè)字段。全文摘要索引視圖或物化視圖被用作對帶有多值屬性的基表的次級索引。這提供了使用索引在嵌套數(shù)據(jù)中搜索。此外,對去除嵌套操作的結(jié)果提供索引。對去除嵌套操作的結(jié)果索引視圖提供了索引嵌套集合的內(nèi)容的能力。一個(gè)這樣的去除嵌套操作是“交叉應(yīng)用去除嵌套”。這為查詢執(zhí)行計(jì)劃提供了附加選項(xiàng),導(dǎo)致更為優(yōu)化的查詢。提供從索引視圖到基表的反向聯(lián)接,以允許不存在于索引視圖中的來自基表的字段被包含在對表查詢的結(jié)果中,對所述表的查詢使用索引視圖作為訪問路徑來處理。這提供了將不存在于索引視圖而存在于基表中的查詢結(jié)果中的列包括在內(nèi)的方法。支持經(jīng)由唯一聚類關(guān)鍵字從單表索引視圖到基表的反向聯(lián)接,所述聚類關(guān)鍵字被用作邏輯行定位符。因此,該系統(tǒng)能夠經(jīng)由唯一聚類關(guān)鍵字從索引視圖到基表的反向聯(lián)接。這些特征允許使用索引視圖對多集合或多值屬性的內(nèi)容索引一表。文檔編號G06F7/00GK1759397SQ200480006730公開日2006年4月12日申請日期2004年7月29日優(yōu)先權(quán)日2004年3月8日發(fā)明者C·J·坎寧安,E·N·漢森,M·M·喬希,C·A·加林多-勒佳瑞亞,F·M·瓦斯申請人:微軟公司