本申請要求享有于2014年5月30日提交的申請?zhí)枮?014902064的澳大利亞專利申請的優(yōu)先權(quán),所述申請?jiān)诖送ㄟ^引用將其全部內(nèi)容并入本文。
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于索引空間數(shù)據(jù)對象的索引方法和系統(tǒng),以及在空間數(shù)據(jù)的索引上進(jìn)行操作的方法和系統(tǒng)。
背景技術(shù):
:在現(xiàn)代計(jì)算機(jī)學(xué)中,空間數(shù)據(jù)對象通常在應(yīng)用程序或系統(tǒng)中用于表示實(shí)際生活對象或抽象要素。這樣的應(yīng)用程序或系統(tǒng)的實(shí)例包括計(jì)算機(jī)輔助設(shè)計(jì)(CAD)軟件程序,醫(yī)學(xué)成像系統(tǒng)和地理制圖系統(tǒng)。在許多情況下,空間數(shù)據(jù)對象被存儲(chǔ)在計(jì)算機(jī)的數(shù)據(jù)庫中,并且使用索引(indices)以便于對空間數(shù)據(jù)對象的高效選擇或操縱。對替代的索引方法或系統(tǒng)存在著需求。技術(shù)實(shí)現(xiàn)要素:為了便于對空間數(shù)據(jù)對象高效的選擇或操作,本發(fā)明提供了用于索引空間數(shù)據(jù)對象的索引方法和系統(tǒng),以及用于對空間數(shù)據(jù)的索引進(jìn)行操作的方法和系統(tǒng)方法和系統(tǒng)。在第一方面,本發(fā)明提供一種于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引方法,包括:根據(jù)相應(yīng)的空間數(shù)據(jù)對象的尺寸,將每個(gè)空間數(shù)據(jù)對象與多個(gè)分區(qū)中的一個(gè)相關(guān)聯(lián);和基于與所述空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū),將每個(gè)空間數(shù)據(jù)對象映射到索引鍵。通過將空間數(shù)據(jù)對象與多個(gè)分區(qū)相關(guān)聯(lián),可以以逐個(gè)分區(qū)的形式進(jìn)行多種操作;例如,在分離的多個(gè)分區(qū)上有效進(jìn)行多個(gè)窗口查詢,而不是單個(gè)窗口查詢覆蓋數(shù)據(jù)空間中的所有空間數(shù)據(jù)對象。在許多情況下,對包括各種尺寸的許多空間數(shù)據(jù)對象的大數(shù)據(jù)空間,以逐個(gè)分區(qū)的形式進(jìn)行操作是更有效的。在一個(gè)實(shí)施例中,所述索引方法還包括:獲得至少一個(gè)空間數(shù)據(jù)對象;和存儲(chǔ)至少一個(gè)索引鍵。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象的尺寸是相應(yīng)的空間數(shù)據(jù)對象的最大范圍。在一個(gè)實(shí)施例中,所述索引方法還包括:確定空間數(shù)據(jù)對象尺寸的累積分布;和將所述累積分布分成多個(gè)分區(qū)。在一個(gè)實(shí)施例中,所述確定空間數(shù)據(jù)對象尺寸的累積分布包括:對所述數(shù)據(jù)空間的空間數(shù)據(jù)對象進(jìn)行采樣;確定每個(gè)采樣的空間數(shù)據(jù)對象的尺寸;和確定所述采樣的空間數(shù)據(jù)對象尺寸的累積分布。在一個(gè)實(shí)施例中,將所述累積分布分成多個(gè)分區(qū)包括:計(jì)算多個(gè)分區(qū)的多個(gè)集合的成本模型;和基于所述成本模型,在所述多個(gè)分區(qū)的集合中選擇一個(gè)。在一個(gè)實(shí)施例中,所述索引方法還包括:將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè),并且其中,基于與所述空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū)和所述空間數(shù)據(jù)對象的映射位置,將每個(gè)空間數(shù)據(jù)對象映射到索引鍵。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象的位置是所述空間數(shù)據(jù)對象的中心位置。在一個(gè)實(shí)施例中,所述索引方法還包括:對所述數(shù)據(jù)空間的空間數(shù)據(jù)對象進(jìn)行采樣;確定每個(gè)采樣的空間數(shù)據(jù)對象的位置;確定采樣的空間數(shù)據(jù)對象位置的累積分布;和基于所述采樣的空間數(shù)據(jù)對象位置的累積分布確定累積映射函數(shù),用于將空間數(shù)據(jù)對象位置映射到均勻分布的映射位置。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象都是N維數(shù)據(jù)對象,其中N是大于或等于2的整數(shù)。在第二方面,本發(fā)明提供了一種用于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引系統(tǒng),包括:分區(qū)關(guān)聯(lián)模塊,用于根據(jù)相應(yīng)的空間數(shù)據(jù)對象的尺寸,將每個(gè)空間數(shù)據(jù)對象關(guān)聯(lián)到多個(gè)分區(qū)中的一個(gè)分區(qū);和對象映射模塊,用于基于與所述空間數(shù)據(jù)對象相關(guān)聯(lián)的所述分區(qū),將各個(gè)空間數(shù)據(jù)對象映射到索引鍵。在一個(gè)實(shí)施例中,所述索引系統(tǒng)還包括:數(shù)據(jù)獲取模塊,用于從數(shù)據(jù)存儲(chǔ)器中獲取至少一個(gè)空間數(shù)據(jù)對象;和索引存儲(chǔ)模塊,用于在索引存儲(chǔ)器中存儲(chǔ)至少一個(gè)索引鍵。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象的尺寸是相應(yīng)的空間數(shù)據(jù)對象的最大范圍。在一個(gè)實(shí)施例中,所述索引系統(tǒng)還包括:數(shù)據(jù)尺寸分布模塊,用于確定空間數(shù)據(jù)對象尺寸的累積分布;和數(shù)據(jù)分區(qū)模塊,用于將所述累積分布分成多個(gè)分區(qū)。在一個(gè)實(shí)施例中,所述數(shù)據(jù)尺寸分布模塊包括:數(shù)據(jù)尺寸采樣子模塊,用于對空間數(shù)據(jù)對象進(jìn)行采樣;數(shù)據(jù)尺寸子模塊,用于確定每個(gè)采樣的空間數(shù)據(jù)對象的尺寸;和數(shù)據(jù)尺寸分布子模塊,用于確定所述采樣的空間數(shù)據(jù)對象尺寸的累積分布。在一個(gè)實(shí)施例中,所述數(shù)據(jù)分區(qū)模塊包括:成本計(jì)算子模塊,用于計(jì)算多個(gè)分區(qū)的集合的成本模型;和分區(qū)選擇子模塊,用于基于由所述成本計(jì)算模塊進(jìn)行的計(jì)算,選擇所述多個(gè)分區(qū)集合中的一個(gè)。在一個(gè)實(shí)施例中,所述索引系統(tǒng)還包括:數(shù)據(jù)位置映射模塊,用于將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射的位置中的一個(gè),并且其中,所述對象映射模塊適應(yīng)于基于與所述空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū)和所述空間數(shù)據(jù)對象的映射位置,將每個(gè)空間數(shù)據(jù)對象映射到相應(yīng)的索引鍵。在一個(gè)實(shí)施例中,所述每個(gè)空間數(shù)據(jù)對象的位置是相應(yīng)的空間數(shù)據(jù)對象的中心位置。在一個(gè)實(shí)施例中,所述索引系統(tǒng)還包括:數(shù)據(jù)位置采樣子模塊,用于對空間數(shù)據(jù)對象進(jìn)行采樣;數(shù)據(jù)位置處理子模塊,用于確定每個(gè)采樣的空間數(shù)據(jù)對象的位置;數(shù)據(jù)位置分配子模塊,用于確定所述采樣的空間數(shù)據(jù)對象位置的累積分布;和數(shù)據(jù)位置映射函數(shù)子模塊,用于基于所述采樣的空間數(shù)據(jù)對象位置的所述累積分布,確定累積映射函數(shù),用于將空間數(shù)據(jù)對象位置映射到均勻分布的映射位置。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象都是N維數(shù)據(jù)對象,其中N是大于或等于2的整數(shù)。在一個(gè)實(shí)施例中,所述索引系統(tǒng)還包括:樹存儲(chǔ)器,用于存儲(chǔ)樹鍵;和索引模塊,用于索引索引鍵作為樹的條目。在一個(gè)實(shí)施例中,所述樹鍵被布置為B+樹。在第三方面,本發(fā)明提供一種對與多個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象的索引進(jìn)行操作的方法,包括:接收對空間數(shù)據(jù)對象的查詢;基于相應(yīng)分區(qū)的尺寸特性和所接收的查詢,確定要對與每個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢;和對每個(gè)分區(qū)進(jìn)行經(jīng)調(diào)整的查詢。在一個(gè)實(shí)施例中,每個(gè)分區(qū)的所述尺寸特性是相應(yīng)分區(qū)中的空間數(shù)據(jù)對象的最大尺寸。在一個(gè)實(shí)施例中,所述操作是對空間數(shù)據(jù)對象的窗口查詢。在一個(gè)實(shí)施例中,所述查詢是對空間數(shù)據(jù)對象的窗口查詢。在一個(gè)實(shí)施例中,所述查詢的窗口是矩形的窗口。在一個(gè)實(shí)施例中,基于相應(yīng)分區(qū)的尺寸特性和所接收的查詢,確定要對與每個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢包括:形成具有矩形窗口的窗口查詢。在一個(gè)實(shí)施例中,經(jīng)調(diào)整的查詢的矩形窗口是通過擴(kuò)展所接收的查詢的所述矩形窗口來形成的。在實(shí)施例中,幅度相當(dāng)于與所述相應(yīng)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象的最大尺寸的一半。在一個(gè)實(shí)施例中,所述基于相應(yīng)分區(qū)的尺寸特性和所接收的查詢,確定要對與每個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢還包括:將所述經(jīng)調(diào)整的查詢的矩形窗口的至少一個(gè)位置映射到均勻分布的多個(gè)映射位置中的至少一個(gè)。在一個(gè)實(shí)施例中,所述經(jīng)調(diào)整的查詢的矩形窗口的每個(gè)角位置被映射到映射位置。在一個(gè)實(shí)施例中,對每個(gè)分區(qū)進(jìn)行所述經(jīng)調(diào)整的查詢包括確定索引鍵范圍的列表,所述索引鍵范圍的列表包括代表可能與所述經(jīng)調(diào)整的查詢的所述窗口相交的空間數(shù)據(jù)對象的索引鍵。在一個(gè)實(shí)施例中,所述索引鍵的列表是通過將分區(qū)的一個(gè)區(qū)域的索引鍵加入索引鍵的列表來確定。在一個(gè)實(shí)施例中,如果所述經(jīng)調(diào)整的查詢的窗口覆蓋了所述區(qū)域,則所述區(qū)域的索引鍵被添加到所述索引鍵的列表中。在一個(gè)實(shí)施例中,所述索引鍵的列表由以下確定:將一個(gè)區(qū)域子分割成多個(gè)子區(qū)域;和添加所述經(jīng)調(diào)整的查詢的窗口所覆蓋的每個(gè)所述子區(qū)域的索引鍵。在一個(gè)實(shí)施例中,所述索引鍵的列表是通過加入以下來確定的:索引鍵對、索引鍵對的第一鍵和索引鍵對的第二鍵,所述第一鍵表示經(jīng)調(diào)整的查詢的窗口的入口點(diǎn),所述第二鍵表示經(jīng)調(diào)整的查詢的窗口的入口點(diǎn)之后的下一個(gè)出口點(diǎn)。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象都是N維數(shù)據(jù)對象,其中N是大于或等于2的整數(shù)。在第四方面,本發(fā)明提供一種用于對與多個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象的索引進(jìn)行操作的索引系統(tǒng),包括:查詢接收模塊,用于接收對空間數(shù)據(jù)對象的查詢;查詢調(diào)整模塊,用于基于相應(yīng)分區(qū)的尺寸特性和所接收的查詢,確定要對與每個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢;和查詢處理模塊,用于對每個(gè)分區(qū)進(jìn)行所述經(jīng)調(diào)整的查詢。在一個(gè)實(shí)施例中,每個(gè)分區(qū)的所述尺寸特性是相應(yīng)分區(qū)中空間數(shù)據(jù)對象的最大尺寸。在一個(gè)實(shí)施例中,所述操作是窗口查詢。在一個(gè)實(shí)施例中,所述查詢是窗口查詢。在一個(gè)實(shí)施例中,所述查詢的窗口是矩形的窗口。在一個(gè)實(shí)施例中,所述查詢調(diào)節(jié)模塊包括調(diào)整的窗口形成子模塊,用于形成具有矩形窗口的窗口查詢。在一個(gè)實(shí)施例中,所述經(jīng)調(diào)整的窗口形成子模塊通過擴(kuò)展接收的查詢的矩形窗口來形成經(jīng)調(diào)整的查詢的矩形窗口。在一個(gè)實(shí)施例中,所述調(diào)整的窗口形成子模塊通過以與相應(yīng)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象的最大尺寸的一半為幅度來擴(kuò)展接收的查詢的矩形窗口,形成經(jīng)調(diào)整的查詢的矩形窗口。在一個(gè)實(shí)施例中,所述查詢調(diào)整模塊還包括窗口位置映射子模塊,用于將經(jīng)調(diào)整的查詢的所述矩形窗中的至少一個(gè)位置映射到均勻分布的的多個(gè)映射位置中的至少一個(gè)。在一個(gè)實(shí)施例中,通過將所述經(jīng)調(diào)整的查詢的矩形窗口的每個(gè)角位置映射到映射位置,所述窗口位置映射子模塊將所述經(jīng)調(diào)整的查詢的矩形窗中的至少一個(gè)位置映射到均勻分布的的多個(gè)映射位置中的至少一個(gè)。在一個(gè)實(shí)施例中,所述查詢處理模塊包括索引鍵列表處理模塊,用于確定索引鍵范圍的列表,所述索引鍵范圍的列表包括代表可能與所述經(jīng)調(diào)整的查詢的窗口相交的空間數(shù)據(jù)對象的索引鍵。在一個(gè)實(shí)施例中,所述索引鍵列表處理模塊通過將分區(qū)的一個(gè)區(qū)域的索引鍵加入索引鍵的列表來確定所述索引鍵的列表。在一個(gè)實(shí)施例中,如果所述經(jīng)調(diào)整的查詢的窗口覆蓋了所述區(qū)域,則所述索引鍵列表處理模塊添加所述區(qū)域的索引鍵。在一個(gè)實(shí)施例中,所述查詢處理模塊還包括:子分割處理模塊,用于將一個(gè)區(qū)域子分割成多個(gè)子區(qū)域;和索引鍵列表處理模塊,其通過添加所述經(jīng)調(diào)整的查詢的窗口所覆蓋的每個(gè)子區(qū)域的索引鍵,確定所述索引鍵的列表。在一個(gè)實(shí)施例中,所述索引鍵列表處理模塊通過添加索引鍵對來確定所述索引鍵的列表,所述索引鍵對的第一鍵表示所述經(jīng)調(diào)整的查詢的窗口的入口點(diǎn),所述索引鍵對的第二鍵表示所述經(jīng)調(diào)整的查詢的窗口的入口點(diǎn)之后的下一個(gè)出口點(diǎn)。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象都是N維數(shù)據(jù)對象,其中N是大于或等于2的整數(shù)。在一個(gè)實(shí)施例中,每個(gè)空間數(shù)據(jù)對象對應(yīng)于B+樹中的一個(gè)條目。在第五方面,本發(fā)明提供一種用于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引方法,包括:將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè);和基于空間數(shù)據(jù)對象的位置被映射到的所述位置,將每個(gè)空間數(shù)據(jù)對象映射到索引鍵。在第六方面,本發(fā)明提供一種用于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引系統(tǒng),包括:數(shù)據(jù)位置映射模塊,用于將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè);和對象映射模塊,用于基于所述空間數(shù)據(jù)對象的位置被映射到的位置,將每個(gè)空間數(shù)據(jù)對象映射到索引鍵。在第七方面,本發(fā)明提供一種用于對數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引進(jìn)行操作的方法,包括:接收對空間數(shù)據(jù)對象的查詢;將查詢的至少一個(gè)位置映射到均勻分布的多個(gè)映射位置中的至少一個(gè);基于所述至少一個(gè)映射位置進(jìn)行查詢。在第八方面,本發(fā)明提供一種用于對數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引進(jìn)行操作的索引系統(tǒng),包括:查詢接收模塊,用于接收對空間數(shù)據(jù)對象的查詢;窗口位置模塊,用于將查詢的至少一個(gè)位置映射到均勻分布的多個(gè)映射位置中的至少一個(gè);查詢處理模塊,用于基于所述至少一個(gè)映射位置進(jìn)行查詢。在第九方面,本發(fā)明提供一種在執(zhí)行時(shí)實(shí)現(xiàn)以上任何一種方法的計(jì)算機(jī)程序代碼。在第十方面,本發(fā)明提供一種包括以上計(jì)算機(jī)程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。附圖說明現(xiàn)在將通過示例的方式參照附圖描述結(jié)合本發(fā)明的一個(gè)或多個(gè)方面的實(shí)施方式,其中:圖1示出了一種用于索引空間數(shù)據(jù)對象的索引系統(tǒng)的示意圖,具有數(shù)據(jù)存儲(chǔ)器和索引存儲(chǔ)器;圖2示出了空間數(shù)據(jù)對象和索引鍵之間的關(guān)系的示例性結(jié)構(gòu);圖3示出了另一種用于索引空間數(shù)據(jù)對象的索引系統(tǒng)的示意圖;圖4更詳細(xì)地示出了圖3的數(shù)據(jù)尺寸分布模塊和數(shù)據(jù)分區(qū)模塊的示意圖;圖5示出了用于索引空間數(shù)據(jù)對象的步驟的流程圖;圖6示出了包括數(shù)據(jù)位置映射模塊的另一種索引系統(tǒng)的示意圖;圖7示出了另一種用于索引空間數(shù)據(jù)對象的索引系統(tǒng)的示意圖;圖8示出了另一種用于索引空間數(shù)據(jù)對象的索引系統(tǒng)的示意圖;圖9示出了一種用于對空間數(shù)據(jù)對象的索引進(jìn)行操作的索引系統(tǒng)的示意圖;圖10示出了圖9的查詢調(diào)整模塊的示意圖;圖11示出了對與多個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象的索引進(jìn)行操作的步驟的流程圖;圖12示出了基于多個(gè)均勻分布的映射位置索引空間數(shù)據(jù)對象的步驟的流程圖;圖13示出了對數(shù)據(jù)空間中的空間數(shù)據(jù)對象的索引進(jìn)行操作的步驟的流程圖;圖14示出了要對三個(gè)分區(qū)進(jìn)行的經(jīng)調(diào)整的查詢的一個(gè)示例的示意圖;圖15示出了用于確定代表可能與經(jīng)調(diào)整的查詢的窗口相交的空間數(shù)據(jù)對象的索引鍵范圍的列表的遞歸算法的示意圖;圖16示出了另一種用于確定代表可能與經(jīng)調(diào)整的查詢的窗口相交的空間數(shù)據(jù)對象的索引鍵范圍的列表的方法的示意圖;圖17示出了索引三個(gè)空間數(shù)據(jù)對象的一個(gè)示例的示意圖;圖18示出了表示一系列數(shù)據(jù)集的實(shí)際和估計(jì)的分頁存取之間的差異的三個(gè)曲線圖;圖19示出了構(gòu)造分段映射函數(shù)的一個(gè)示例;圖20示出了訪問與在B+樹中連續(xù)索引的窗口查詢相交的對象的一個(gè)示例;圖21示出了二維空間中對應(yīng)希爾伯特曲線的變化的數(shù)據(jù)集基數(shù)、對象大小和窗口查詢選擇性下的pcur值的一個(gè)示例;圖22示出了根據(jù)本發(fā)明一實(shí)施例的成本模型的準(zhǔn)確性;圖23示出了根據(jù)本發(fā)明一實(shí)施例的累積映射對窗口查詢性能的影響;圖24示出了根據(jù)本發(fā)明一實(shí)施例的EdgeMapRange窗口的查詢性能的影響;圖25示出了根據(jù)本發(fā)明一實(shí)施例的響應(yīng)時(shí)間性能;圖26示出了根據(jù)本發(fā)明一實(shí)施例的分頁存取性能;圖27示出了根據(jù)本發(fā)明一實(shí)施例的獨(dú)立索引實(shí)現(xiàn)的均勻二維數(shù)據(jù)集的查詢性能;圖28示出了根據(jù)本發(fā)明一實(shí)施例的獨(dú)立索引實(shí)現(xiàn)的均勻二維數(shù)據(jù)集的索引設(shè)置時(shí)間;圖29示出了根據(jù)本發(fā)明一實(shí)施例的其它二維數(shù)據(jù)集和參數(shù)設(shè)置的查詢處理時(shí)間;圖30示出了根據(jù)本發(fā)明一實(shí)施例的三維數(shù)據(jù)集的查詢處理時(shí)間;圖31示出了根據(jù)本發(fā)明一實(shí)施例的PostgreSQL實(shí)現(xiàn)中索引的窗口查詢性能;和圖32示出了根據(jù)本發(fā)明一實(shí)施例的DBMS實(shí)現(xiàn)的索引的窗口查詢性能。具體實(shí)施方式下面參照附圖在本發(fā)明的實(shí)施例中清楚并全面地描述本發(fā)明的實(shí)施例的技術(shù)方案。顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分而不是全部的實(shí)施方式。基于本發(fā)明的實(shí)施方式,由本領(lǐng)域技術(shù)人員沒有作出創(chuàng)造性勞動(dòng)所獲得的所有其它實(shí)施方式,都落入本發(fā)明的保護(hù)范圍之內(nèi)。在圖1至8中,示出了一種用于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引系統(tǒng)的實(shí)施例。一個(gè)空間數(shù)據(jù)對象是任何N維數(shù)據(jù)對象,其中,N是大于或等于2的整數(shù)。本領(lǐng)域技術(shù)人員將理解,該索引系統(tǒng)可以以各種方式,包括以軟件、硬件、固件或者它們的組合來實(shí)現(xiàn)或提供。此外,該索引系統(tǒng)的各個(gè)組件(如具體模塊)不需要全部以相同的方式提供。還應(yīng)當(dāng)注意的是,該索引系統(tǒng)可以是分布式,包括位于多個(gè)國家。典型地,可以設(shè)想,在計(jì)算系統(tǒng)上執(zhí)行軟件程序代碼以實(shí)現(xiàn)索引系統(tǒng),所述計(jì)算系統(tǒng)包括硬件,所述硬件包括處理器、存儲(chǔ)器、硬盤、網(wǎng)絡(luò)接口等。例如,索引系統(tǒng)可以通過在計(jì)算系統(tǒng)上安裝軟件程序產(chǎn)品來提供。在使用時(shí),該計(jì)算系統(tǒng)中的處理器執(zhí)行安裝在硬盤中的軟件程序,在所述計(jì)算系統(tǒng)的存儲(chǔ)器中暫時(shí)地緩存采樣的空間數(shù)據(jù)對象的尺寸,并從經(jīng)由計(jì)算系統(tǒng)的網(wǎng)絡(luò)接口連接的、位于遠(yuǎn)端的數(shù)據(jù)存儲(chǔ)器獲得空間數(shù)據(jù)對象。圖1功能性地示出了根據(jù)本發(fā)明一實(shí)施例的索引系統(tǒng)的示意圖。在最寬泛的層次,索引系統(tǒng)10包括兩個(gè)主要模塊:分區(qū)關(guān)聯(lián)模塊20和對象映射模塊30。分區(qū)關(guān)聯(lián)模塊20被設(shè)置成根據(jù)一個(gè)空間數(shù)據(jù)對象的尺寸將該空間數(shù)據(jù)對象與多個(gè)分區(qū)中的一個(gè)相關(guān)聯(lián)。在一個(gè)實(shí)施例中,空間數(shù)據(jù)對象的尺寸是該空間數(shù)據(jù)對象的最大范圍,多個(gè)分區(qū)是一個(gè)或多個(gè)空間數(shù)據(jù)對象可以與其相關(guān)聯(lián)的多個(gè)互斥的群組。具體地,令O為D維空間數(shù)據(jù)對象的一個(gè)集合。給定一空間數(shù)據(jù)對象o∈O,o的尺寸定義為o在所有維度中的最大范圍。在形式上,|o|=max{o.u1-o.l1,o.u2-o.l2,o.uD-o.lD}(1)這里,o.uj和o.li表示o在第j維中的上限和下限。O的分區(qū)布局,由f表示,由分區(qū)的數(shù)量f.n和分區(qū)尺寸值的矢量構(gòu)成。其中,f.di表示分區(qū)尺寸值,這意味著尺寸小于或等于f.di的任何空間數(shù)據(jù)對象都屬于分區(qū)i。令pn(o)為返回與空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū)數(shù)的函數(shù),于是pn(o)=i,f.d1-1<|o|≤f.di(2)例如,O中的空間數(shù)據(jù)對象被分成三個(gè)分區(qū),即,f.n=3。這三個(gè)分區(qū)中的最大空間數(shù)據(jù)對象尺寸分別是13、28和55。因此,對象被分離的尺寸值是13、28和55,即,如圖1所示,分區(qū)關(guān)聯(lián)模塊20與對象映射模塊30通信,對象映射模塊30被設(shè)置成基于與該空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū)將一個(gè)空間數(shù)據(jù)對象映射到一個(gè)索引鍵。因此,在使用時(shí),基于由分區(qū)關(guān)聯(lián)模塊20所關(guān)聯(lián)的相應(yīng)分區(qū),對象映射模塊30將多個(gè)空間數(shù)據(jù)對象映射到多個(gè)索引鍵。在一個(gè)實(shí)施例中,對象映射模塊30使用空間填充曲線(例如Z曲線或希爾伯特曲線)將空間數(shù)據(jù)對象映射到索引鍵;正在進(jìn)行的映射利用的是所使用的具體的空間填充曲線的映射函數(shù)。在概念上,使用空間填充曲線可以被認(rèn)為是將整個(gè)數(shù)據(jù)空間分割成多個(gè)塊;索引鍵表示各個(gè)塊。典型地,索引鍵代表空間填充曲線要用多少步以到達(dá)該塊。在這樣的實(shí)施例中,空間數(shù)據(jù)對象的中心位置(有時(shí)稱為“中心”)被根據(jù)該中心位置位于數(shù)據(jù)空間的哪個(gè)塊而映射到索引鍵。在一個(gè)實(shí)施例中,兩個(gè)不同分區(qū)的塊(或者索引鍵)通過“偏移量(offsetting)”來進(jìn)行區(qū)分;例如,如果第一分區(qū)的最后一塊(或索引鍵)為63,則第二分區(qū)的第一塊(或索引鍵)為64。在圖1所示的實(shí)施例中,分區(qū)關(guān)聯(lián)模塊20和對象映射模塊30是獨(dú)立的形式(即,模塊20、30獨(dú)立于數(shù)據(jù)存儲(chǔ)器40和索引存儲(chǔ)器50)。然而,可以設(shè)想,該索引系統(tǒng)也可以是包含數(shù)據(jù)存儲(chǔ)器和索引存儲(chǔ)器兩者或其中任一的形式。分區(qū)關(guān)聯(lián)模塊20和對象映射模塊30可在連接到但是獨(dú)立于數(shù)據(jù)存儲(chǔ)器和/或索引存儲(chǔ)器的計(jì)算系統(tǒng)中實(shí)現(xiàn)。用于對空間數(shù)據(jù)的索引進(jìn)行操作的系統(tǒng)有助于高效地選擇或操作空間數(shù)據(jù)對象。圖2更詳細(xì)地示出了根據(jù)本發(fā)明一實(shí)施例的空間數(shù)據(jù)對象與索引鍵之間的關(guān)系。在該圖中,數(shù)據(jù)存儲(chǔ)器40包括由索引系統(tǒng)10索引的多個(gè)空間數(shù)據(jù)的對象42、44、46。這些索引鍵52、54、56作為索引鍵1、索引鍵9和索引鍵k被存儲(chǔ)在索引存儲(chǔ)器50中。每個(gè)索引鍵52、54、56對應(yīng)于數(shù)據(jù)存儲(chǔ)器40中的一個(gè)空間數(shù)據(jù)對象。在使用空間填充曲線映射空間數(shù)據(jù)對象的實(shí)施例中,每個(gè)索引鍵表示數(shù)據(jù)空間內(nèi)與一個(gè)空間數(shù)據(jù)對象(取決于該對象的尺寸,完全地或部分地)相交的一個(gè)具體的塊。示出的所述多個(gè)索引鍵52、54、56中的每一個(gè)與包含分區(qū)A60、分區(qū)C64和分區(qū)E68的多個(gè)分區(qū)之一相關(guān)聯(lián)。如圖所示,每個(gè)分區(qū)可理解為包括與特定尺寸的空間數(shù)據(jù)對象相對應(yīng)的索引鍵的單獨(dú)的索引。通過根據(jù)空間數(shù)據(jù)對象的尺寸來加以分區(qū),可以更有效地對索引進(jìn)行某些逐分區(qū)的操作。例如,窗口查詢可以根據(jù)可能存在于一個(gè)具體分區(qū)內(nèi)的空間數(shù)據(jù)對象的尺寸來進(jìn)行調(diào)整。圖3示出了索引系統(tǒng)12的另一個(gè)實(shí)施例的示意圖。如前面所討論的,數(shù)據(jù)存儲(chǔ)器和/或索引存儲(chǔ)器可以結(jié)合地作為索引系統(tǒng)的一部分或獨(dú)立于索引系統(tǒng)而實(shí)現(xiàn)。在本實(shí)施例中,索引系統(tǒng)12包含用于存儲(chǔ)多個(gè)空間數(shù)據(jù)對象的數(shù)據(jù)存儲(chǔ)器40和用于存儲(chǔ)多個(gè)索引鍵的索引存儲(chǔ)器50。該索引系統(tǒng)12也具有上述分區(qū)關(guān)聯(lián)模塊20和對象映射模塊30之外的幾個(gè)附加模塊。首先,存在兩個(gè)用于與數(shù)據(jù)存儲(chǔ)器40和索引存儲(chǔ)器50通信的模塊:設(shè)置成從數(shù)據(jù)存儲(chǔ)器40獲取一個(gè)或多個(gè)空間數(shù)據(jù)對象的數(shù)據(jù)獲取模塊43,以及設(shè)置成將一個(gè)或多個(gè)索引鍵存儲(chǔ)在索引存儲(chǔ)器50中的索引存儲(chǔ)模塊53。如圖所示,數(shù)據(jù)存儲(chǔ)器40與數(shù)據(jù)獲取模塊43通信,且索引存儲(chǔ)模塊53與索引存儲(chǔ)器50通信。這允許數(shù)據(jù)獲取模塊43獲得存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器40中的空間數(shù)據(jù)對象,并允許索引存儲(chǔ)模塊將索引鍵存儲(chǔ)在索引存儲(chǔ)器50中。除了這兩個(gè)模塊43、53,索引系統(tǒng)12還包括數(shù)據(jù)尺寸分布模塊22和數(shù)據(jù)分區(qū)模塊24。這些模塊確定多個(gè)分區(qū),每個(gè)分區(qū)都具有“尺寸特性”。在本實(shí)施例中,數(shù)據(jù)尺寸分布模塊22被設(shè)置成確定空間數(shù)據(jù)對象的尺寸的累積分布。該累積分布表示尺寸小于或等于一組升序的尺寸的空間數(shù)據(jù)對象所占的比例。數(shù)據(jù)分區(qū)模塊被設(shè)置成將累積分布分成多個(gè)分區(qū)。合起來,數(shù)據(jù)尺寸分布模塊22和數(shù)據(jù)分區(qū)模塊24提供用于建立或者重新配置多個(gè)分區(qū)的設(shè)置,所述多個(gè)分區(qū)根據(jù)空間數(shù)據(jù)對象的尺寸是否小于或等于該分區(qū)的具體尺寸(有時(shí)被稱為該分區(qū)的最大空間數(shù)據(jù)對象尺寸)來對空間數(shù)據(jù)對象進(jìn)行分組。本領(lǐng)域技術(shù)人員將理解,模塊22、24可以在獨(dú)立于模塊20、30的計(jì)算系統(tǒng)中;即,可以有僅包含數(shù)據(jù)尺寸分布模塊22和數(shù)據(jù)分區(qū)模塊24的單獨(dú)的系統(tǒng)。在圖3中,索引系統(tǒng)12也包括分區(qū)關(guān)聯(lián)模塊20和對象映射模塊30。如圖所示,從數(shù)據(jù)獲取模塊43獲取的多個(gè)空間數(shù)據(jù)對象可以(直接通過分區(qū)關(guān)聯(lián)模塊20)與一個(gè)分區(qū)相關(guān)聯(lián)和/或用于(通過數(shù)據(jù)尺寸分布模塊22和數(shù)據(jù)分區(qū)模塊24)建立或重新配置多個(gè)分區(qū),供分區(qū)關(guān)聯(lián)模塊20使用。因此,該實(shí)施例不僅用于建立或重新配置用于分離空間數(shù)據(jù)對象的多個(gè)分區(qū),還用于根據(jù)每個(gè)空間數(shù)據(jù)對象的尺寸索引空間數(shù)據(jù)對象。具有這兩種功能可以是有益的;例如,可以為了一組空間數(shù)據(jù)對象建立或重新配置特定的多個(gè)分區(qū)以提供最佳性能(例如,可以建立一組分區(qū),以便在搜遍索引鍵時(shí)提供快速的響應(yīng)時(shí)間,或者使所需的分頁存取次數(shù)次數(shù)最少)。圖4更詳細(xì)地示出了圖3的數(shù)據(jù)尺寸分布模塊22和數(shù)據(jù)分區(qū)模塊24的示意圖。數(shù)據(jù)尺寸分布模塊22包括數(shù)據(jù)尺寸采樣子模塊21、數(shù)據(jù)尺寸子模塊23和數(shù)據(jù)尺寸分布子模塊25:數(shù)據(jù)尺寸采樣子模塊21被設(shè)置成對圖3的數(shù)據(jù)獲取模塊43所獲得的數(shù)據(jù)對象進(jìn)行采樣。(要注意,圖3中的其它模塊沒有在圖4中示出。然而,虛線連接線用于表示數(shù)據(jù)尺寸分布模塊22的數(shù)據(jù)尺寸采樣子模塊21與圖3中的數(shù)據(jù)獲取模塊43通信。)通常,采樣的對象存儲(chǔ)在存儲(chǔ)陣列中。該數(shù)據(jù)尺寸子模塊23被設(shè)置成確定由數(shù)據(jù)尺寸采樣子模塊21采樣的空間數(shù)據(jù)對象的尺寸。數(shù)據(jù)尺寸分布子模塊25被設(shè)置成確定由數(shù)據(jù)尺寸子模塊23確定的尺寸的累積分布。在一實(shí)施例中,數(shù)據(jù)尺寸分布子模塊25通過對一組升序的空間數(shù)據(jù)對象尺寸中尺寸等于或小于具體空間數(shù)據(jù)對象尺寸的空間數(shù)據(jù)對象的數(shù)目進(jìn)行計(jì)數(shù)來確定累積分布。由數(shù)據(jù)尺寸分布子模塊25確定的累積分布可以以各種方式被分隔,以提供多種分區(qū)。一種方法是將分布均勻地分成大小相等的塊?;蛘?,可以使用成本模型(costmodel)評估不同的分區(qū)集合,以確定哪個(gè)集合將提供最佳的計(jì)算性能,從而選擇由成本模型分析出的最佳的集合。由于不同的分區(qū)配置可能導(dǎo)致不同的查詢性能,因此找到一個(gè)合適的分區(qū)配置是非常重要的。使用成本模型是有利的,因?yàn)樗试S基于成本模型的結(jié)果對多個(gè)分區(qū)集合進(jìn)行比較和/或排序,從而確定合適的或優(yōu)化的多個(gè)分區(qū)。在本實(shí)施例中,數(shù)據(jù)分區(qū)模塊23包括成本計(jì)算子模塊27和分區(qū)選擇子模塊29:成本計(jì)算子模塊27被設(shè)置成基于由數(shù)據(jù)尺寸分布模塊所確定的累積分布來計(jì)算一組多個(gè)分區(qū)的成本模型。在本實(shí)施例中,分區(qū)模塊23中的數(shù)據(jù)包括成本計(jì)算子模塊27和分區(qū)選擇子模塊29:成本計(jì)算子模塊27被設(shè)置成基于由數(shù)據(jù)尺寸分布模塊確定的累積分布計(jì)算多個(gè)分區(qū)的集合的成本模型。在本實(shí)施例中,可專門為了找到執(zhí)行窗口查詢的一個(gè)分區(qū)集合的目的來確定成本模型。在一個(gè)實(shí)施例中,成本計(jì)算子模塊可以僅通過以“蠻力(brute-force)”計(jì)算的方式來計(jì)算成本模塊(即,循環(huán)遍歷不同的分區(qū)數(shù)目和不同的分區(qū)值的集合)。因此,對于每個(gè)分區(qū)集,可以計(jì)算執(zhí)行特定操作的成本,從而可以選擇性能最佳的設(shè)置。分區(qū)選擇子模塊29被設(shè)置成基于由成本計(jì)算子模塊27得到的計(jì)算結(jié)果而選擇多個(gè)分區(qū)中的一個(gè)。在多個(gè)分區(qū)中所做的選擇可被發(fā)送到圖3中的分區(qū)關(guān)聯(lián)模塊20。在下文中,提供了通過使用成本模型找到合適的分區(qū)配置的一個(gè)示例。首先,使用采樣來獲取O中的對象的尺寸分布。令S1為O上的一個(gè)隨機(jī)樣本集。然后,估計(jì)O中對象的尺寸分布。如果S1中有nd個(gè)尺寸小于或等于d的對象,那么O中大約有個(gè)尺寸小于或等于d的對象,其中|O|和|S1|分別表示O和|S1|的基數(shù)。然后,使用兩層循環(huán)來窮舉搜尋最佳的分區(qū)配置。外層循環(huán)遍歷分區(qū)的不同數(shù)目(從1到nmax),同時(shí)內(nèi)層的for-循環(huán)為每一個(gè)選擇的分區(qū)數(shù)目遍歷不同組合的分區(qū)尺寸值。這里,nmax是預(yù)定的系統(tǒng)參數(shù),表示分區(qū)的最大可能數(shù)目,而分區(qū)尺寸值是從采樣步驟中得到的S1中對象的尺寸。在每次遍歷中,用給定的分區(qū)的數(shù)目和分區(qū)尺寸值作為配置的輸入,用成本模型返回配置的成本。完成兩層循環(huán)后,即找到最佳的分區(qū)配置。由于分區(qū)的數(shù)目通常較少,對于許多被測試的數(shù)據(jù)集和設(shè)置,分區(qū)的數(shù)目一般為3或4,并且分區(qū)尺寸值的數(shù)目也不是太大,一般低于500,上述的分區(qū)配置選擇過程只需要幾十秒即可完成。由于分區(qū)配置選擇過程僅在索引建立時(shí)完成一次,因此代價(jià)是可以接受的。令表示由上述算法找到的最佳分區(qū)配置。然后,將O分成個(gè)分區(qū),其中第i個(gè)分區(qū)包含尺寸小于或等于f.di的對象。作為展開的結(jié)果,只需要檢查對象的中心是否在展開的窗口查詢中。這將查詢具有非零擴(kuò)展(non-zeroextents)的對象的問題轉(zhuǎn)換成了查詢點(diǎn)對象的問題。圖5是示出了根據(jù)一實(shí)施例的包括建立多個(gè)分區(qū)的索引空間數(shù)據(jù)對象的步驟的流程圖。在步驟100,首先獲取空間數(shù)據(jù)對象。如先前所討論的,在步驟110,可以使用所獲取的空間數(shù)據(jù)對象來設(shè)置或建立空間數(shù)據(jù)對象的累積分布尺寸。該確定過程包括,對所獲得的空間數(shù)據(jù)對象進(jìn)行采樣112,確定樣本中每一個(gè)對象的尺寸114,以及確定尺寸的累積分布116。然后,在步驟120將該累積分布分成多個(gè)分區(qū)。為此,在步驟122使用成本模型來計(jì)算多個(gè)分區(qū)的多個(gè)集合中每個(gè)集合的成本,并且基于計(jì)算的結(jié)果選擇其中一個(gè)集合。一旦確定了多個(gè)分區(qū),則在步驟120根據(jù)各個(gè)對象的尺寸將每個(gè)空間數(shù)據(jù)對象與一個(gè)分區(qū)相關(guān)聯(lián)。然后在步驟140,基于對象所關(guān)聯(lián)的分區(qū),將該對象映射到索引鍵。然后,最終在步驟150存儲(chǔ)該索引鍵以便未來訪問。圖6示出了索引系統(tǒng)14的另一個(gè)實(shí)施例的示意圖。索引系統(tǒng)14包括位置映射模塊60,其被設(shè)置成將來自數(shù)據(jù)獲取模塊43的一個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè)位置。在本實(shí)施例中,對象映射模塊32被配置成不僅基于與所述空間數(shù)據(jù)對象相關(guān)聯(lián)的分區(qū)映射每個(gè)空間數(shù)據(jù)對象,還映射空間數(shù)據(jù)對象的映射位置。將來自數(shù)據(jù)獲取模塊43的空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置是有利的。如果利用空間填充曲線將映射位置(表示數(shù)據(jù)空間中的空間數(shù)據(jù)對象的位置)劃分成離散的塊,則所需大塊數(shù)量可能更少;也就是說,如果利用空間填充曲線將空間數(shù)據(jù)對象的位置直接劃分成離散的塊,則所需小塊數(shù)量可能更多。具有的塊數(shù)較少時(shí),通常意味著可以使用較小的索引來表示塊。該數(shù)據(jù)位置映射模塊60可以不帶分區(qū)關(guān)聯(lián)模塊20而單獨(dú)與對象映射模塊32聯(lián)用。在僅具有數(shù)據(jù)位置映射模塊60的實(shí)施例中,對象映射模塊32可被設(shè)置成基于空間數(shù)據(jù)對象的映射位置將該空間數(shù)據(jù)對象映射到索引鍵。圖17示出了索引三個(gè)空間數(shù)據(jù)對象的示例,包括將每個(gè)對象與一個(gè)分區(qū)相關(guān)聯(lián),將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè),以及基于空間數(shù)據(jù)對象所關(guān)聯(lián)的分區(qū)及其映射位置將每個(gè)空間數(shù)據(jù)對象映射到一個(gè)索引鍵。圖17中,對象A的最大范圍小于第一分區(qū)的最大空間數(shù)據(jù)對象尺寸(即“尺寸特性”),因此它與第一分區(qū)相關(guān)聯(lián)。對象A的中心(在利用映射函數(shù)被映射到均勻分布的多個(gè)映射位置中的一個(gè)之后)根據(jù)空間填充曲線(在該示例中為Z曲線)是在塊35。因此,對象A被映射為索引鍵35(或由索引鍵35表示)。對象B的最大范圍大于第一分區(qū)的最大空間數(shù)據(jù)對象尺寸,但小于第二分區(qū)的最大空間數(shù)據(jù)對象尺寸,因此它與第二分區(qū)相關(guān)聯(lián)。對象B的中心位于所述第二分區(qū)的塊4,但由于它在第二分區(qū)中,對象的索引鍵的偏移量是第一分區(qū)中塊的數(shù)目。在該示例中,可以根據(jù)以下方程來計(jì)算第i分區(qū)應(yīng)偏移的塊數(shù):其中,di是分區(qū)i的最大空間數(shù)據(jù)對象尺寸,D是數(shù)據(jù)空間(和該數(shù)據(jù)空間的空間數(shù)據(jù)對象)的維數(shù),并且n表示分區(qū)的數(shù)目。因此,在圖17中,第二分區(qū)的偏移量為64,從而對象B由索引鍵68來表示。要注意,因?yàn)榈诙謪^(qū)的數(shù)據(jù)空間內(nèi)的塊的數(shù)量不是2的冪,故而基為2的空間填充曲線不能正好地填滿塊。在該第二分區(qū)中,沿著每個(gè)維度有個(gè)塊,但僅使用了前個(gè)塊。這意味著,在這個(gè)示例中,在第二分區(qū)的數(shù)據(jù)空間之外有未使用的塊。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,在本示例中,具有未使用的塊使得空間填充曲線的計(jì)算更加簡便。圖7示出了如何可以建立均勻分布的多個(gè)映射位置的索引系統(tǒng)16的一個(gè)實(shí)施例。在該實(shí)施例中,索引系統(tǒng)16還包括數(shù)據(jù)位置采樣子模塊62,數(shù)據(jù)位置處理子模塊64,數(shù)據(jù)位置分配模塊66和數(shù)據(jù)位置映射子模塊68。該數(shù)據(jù)位置采樣子模塊62被設(shè)置為對從數(shù)據(jù)獲取模塊43獲取的空間數(shù)據(jù)對象進(jìn)行采樣。數(shù)據(jù)位置處理子模塊64被設(shè)置成確定由數(shù)據(jù)位置采樣子模塊62所采樣的空間數(shù)據(jù)對象的位置。在一個(gè)實(shí)施例中,數(shù)據(jù)位處理子模塊64被設(shè)置成確定每個(gè)空間數(shù)據(jù)對象的中心位置。然后這些位置被發(fā)送到數(shù)據(jù)位置分配子模塊66。該數(shù)據(jù)位置分配子模塊66被設(shè)置成確定所采樣的空間數(shù)據(jù)對象位置的累積分布。通常,累積分布是通過計(jì)算位置沿著每個(gè)維度的近似累積分布來確定的。設(shè)想到的是,理想地,位置的實(shí)際累積分布是確定的而不是依靠近似的。然而,在實(shí)踐中通常很難(并且在很多情況下不可能)確定實(shí)際的累積分布。為了執(zhí)行映射,數(shù)據(jù)位映射功能子模塊68被設(shè)置成逼近一個(gè)累積映射函數(shù),該累積映射函數(shù)基于由數(shù)據(jù)位置分配子模塊66所確定的空間數(shù)據(jù)對象位置的累積分布,用于將空間數(shù)據(jù)對象位置映射到均勻分布的映射位置。在一個(gè)實(shí)施例中,由數(shù)據(jù)位置映射函數(shù)子模塊68所逼近的、用于將一個(gè)空間數(shù)據(jù)對象的位置映射到均勻分布的多個(gè)映射位置中的一個(gè)位置的累積映射函數(shù)為:其中xn=[xT](5)xf=xT-xn(6)并且,x是要被映射的空間數(shù)據(jù)對象的位置,i表示第i分區(qū),d是維度,T是中心采樣的分區(qū)(divisions)的數(shù)目,CM1...n[1...n][0...T]表示累積映射值的陣列。此外,累積映射函數(shù)也可以是:k=[o·cj×nb](8)此處,o·c是待映射空間對象的位置,i表示第i分區(qū),d是維度,nb為中心采樣的分區(qū)的數(shù)目,表示累積映射值的陣列,|S|代表采樣的空間對象的數(shù)目。要注意,如果o.cj=1,則k=nb,因此bk+1將是未定義的。在這種情況下,cdfi,j(o.c)不是用上述方程計(jì)算,而是直接定義為1。圖8示出了索引系統(tǒng)的另一個(gè)實(shí)施例的示意圖。在該實(shí)施例中,索引系統(tǒng)18包括多個(gè)模塊,用于:將空間數(shù)據(jù)對象與分區(qū)30相關(guān)聯(lián),設(shè)置或重新配置多個(gè)分區(qū)21、23、25、27、29,將空間數(shù)據(jù)對象的位置映射到的位置20,以及確定將空間數(shù)據(jù)對象位置映射到均勻分布的多個(gè)映射位置62、64、66、68的映射函數(shù)。在本實(shí)施例中,結(jié)合了用于設(shè)立或重新配置多個(gè)分區(qū)21、23、25、27、29以及用于確定將空間數(shù)據(jù)對象位置映射到均勻分布的多個(gè)映射位置62、64、66、68的映射函數(shù)的模塊。如前面所討論的,可以用成本函數(shù)來確定一組合適的或優(yōu)化的分區(qū)。在一個(gè)實(shí)施例中,對于窗口寬度q和分區(qū)尺寸di(di為分區(qū)i的最大空間數(shù)據(jù)對象尺寸),可以根據(jù)以下方程計(jì)算預(yù)期分頁存取成本的成本函數(shù):其中,Pc為具體空間填充曲線的聚類特性,f是一個(gè)分頁中的空間數(shù)據(jù)對象的數(shù)量(有時(shí)也稱為“葉節(jié)點(diǎn)扇出”(leafnodefanout)),u為平均節(jié)點(diǎn)利用率,D是數(shù)據(jù)空間中的空間數(shù)據(jù)對象的維數(shù),以及N(di)是小于di的空間數(shù)據(jù)對象的總數(shù)。此外,上述方程可以由下面的方程所替代:此處,n是分區(qū)的總數(shù),Pc為具體空間填充曲線的聚類特性,Ni表示第i分區(qū)中對象的數(shù)量,|q|表示查詢窗口q的大小,di表示第i分區(qū)的分區(qū)尺寸,D是數(shù)據(jù)空間中空間數(shù)據(jù)對象的維數(shù),f是一個(gè)分頁中的空間數(shù)據(jù)對象的數(shù)目(有時(shí)也稱為“引線節(jié)點(diǎn)扇出”(leadnodefanout))。為了計(jì)算上述成本函數(shù),可以使用對具體的空間填充曲線Pc的聚類特性的估計(jì)。在一個(gè)實(shí)施例中,這種估計(jì)是通過實(shí)驗(yàn)獲得的;即,Pc可以通過對多個(gè)數(shù)據(jù)集的仿真用試驗(yàn)的方法求近似;數(shù)據(jù)集是上述成本函數(shù)的上述參數(shù)的不同的變化情況,改變數(shù)據(jù)集基數(shù)(不同空間數(shù)據(jù)對象的數(shù)目),窗口選擇性(窗口查詢區(qū)域與數(shù)據(jù)空間面積之比)和對象范圍。然后,通過設(shè)法使預(yù)期平均分頁存取(用上述成本函數(shù)來計(jì)算)與根據(jù)試驗(yàn)觀察到的平均頁面訪問之間的誤差最小來確定Pc的值。圖18示出了三幅圖,表示當(dāng)數(shù)據(jù)集基數(shù)、窗口選擇性和對象范圍在一定值域內(nèi)變化時(shí),實(shí)際的和估計(jì)的分頁存取之間的差異。二維和三維中的希爾伯特曲線和Z曲線的PC(和每個(gè)PC的相應(yīng)誤差)的例子列于下表。表1:不同空間填充曲線的PC值使用上述成本函數(shù)和來自上表的PC值,可以為任何分區(qū)尺寸di的集合計(jì)算任何具有寬度q的窗口(或任何具有邊長q的超立方體查詢)的成本。此外,上述表格可以由下表替代。表2:不同空間填充曲線的PC值PC誤差希爾伯特曲線,二維1.57225.45%Z曲線,二維1.88178.24%希爾伯特曲線,三維3.20146.65%Z曲線,三維3.58837.15%返回參照圖8,該實(shí)施例還包含樹存儲(chǔ)器51和用于將來自對象映射模塊51的索引鍵索引為B+樹中的條目(entry)的索引模塊43。本領(lǐng)域技術(shù)人員將理解,這些條目可能不被設(shè)置為B+樹,而是任何一維的樹都是適合的。在許多情況下,將索引鍵映射為樹中的條目是有利的,因?yàn)橐呀?jīng)有許多基于B+樹結(jié)構(gòu)的現(xiàn)有系統(tǒng)。因此,索引系統(tǒng)18可以僅是現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng)(DBMS)的頂部上增加的另外一層。在圖9和圖10中,提供有示出了索引系統(tǒng)11的示意圖,該索引系統(tǒng)11用于對由該索引系統(tǒng)索引的空間數(shù)據(jù)對象的索引進(jìn)行操作。在一種情況下,該操作可以是窗口查詢。本領(lǐng)域技術(shù)人員將理解,窗口查詢可以具有任何形狀的窗口。通常情況下,實(shí)施例采用矩形窗。然而,具有其它窗口形狀的查詢可以用于查詢二維數(shù)據(jù)對象。這與用于查詢高維數(shù)據(jù)對象(N維數(shù)據(jù)對象,其中N大于或等于3)的窗口查詢是相似的情況;用于查詢高維數(shù)據(jù)對象的窗口查詢可以具有任何高維形狀的窗口。通常,可以設(shè)想到,典型的窗口查詢具有超矩形的窗口。圖9和圖10示出了操作和查詢都是窗口查詢的一個(gè)實(shí)施例。然而,可以設(shè)想到,該操作可包括其它操作,如更新索引、向索引中插入新的空間數(shù)據(jù)對象等。進(jìn)一步的,可以設(shè)想到,多個(gè)操作可以在由所述索引系統(tǒng)所索引的多個(gè)相關(guān)數(shù)據(jù)空間上進(jìn)行。例如,由索引系統(tǒng)所索引的第一索引和第二索引之間可以建立關(guān)聯(lián)。例如,第一索引的空間數(shù)據(jù)對象可表示一個(gè)地理區(qū)域中的餐廳,第二索引的空間數(shù)據(jù)對象可表示在同一地理區(qū)域中的停車場,使得在所述第一索引上進(jìn)行的窗口查詢(例如,定位特定區(qū)域內(nèi)的餐廳)可以加入到在第二索引上進(jìn)行的一個(gè)或多個(gè)窗口查詢(例如,定位位于具體區(qū)域內(nèi)的餐廳附近的停車場)。也就是說,定位餐廳的窗口查詢可用于生成一個(gè)或多個(gè)后續(xù)窗口查詢以定位那些靠近停車場的餐廳。首先參考圖9,索引系統(tǒng)11包括查詢接收模塊70、查詢調(diào)整模塊80和查詢處理模塊90。該查詢接收模塊70被設(shè)置成接收對空間數(shù)據(jù)對象的查詢。查詢調(diào)節(jié)模塊80被設(shè)置成基于每個(gè)分區(qū)的尺寸特性和所接收的查詢來確定要對與各分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢。通常,每個(gè)分區(qū)的尺寸特性是各分區(qū)中的空間數(shù)據(jù)對象的最大尺寸。查詢處理模塊90被設(shè)置成每個(gè)分區(qū)進(jìn)行經(jīng)調(diào)整的查詢。在使用時(shí),查詢接收模塊70向查詢調(diào)整模塊80發(fā)送查詢,進(jìn)而基于各分區(qū)的尺寸特性和所接收的查詢確定要對與每個(gè)分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象進(jìn)行的經(jīng)調(diào)整的查詢。然后查詢處理模塊90對每個(gè)分區(qū)進(jìn)行由查詢調(diào)整模塊80調(diào)整的查詢。通過遍歷與索引相關(guān)聯(lián)的每個(gè)分區(qū),索引系統(tǒng)從而對索引的所有空間數(shù)據(jù)對象的進(jìn)行查詢。現(xiàn)在參考圖10,其中更詳細(xì)地示出了圖9的查詢調(diào)整模塊80。查詢調(diào)整模塊80包括調(diào)整窗口形成子模塊82和窗口位置映射子模塊84。該調(diào)整窗口形成子模塊82被設(shè)置為形成具有矩形窗口的窗口查詢,該矩形窗口沿著每個(gè)維度每個(gè)方向上的分區(qū)中擴(kuò)展了對象的最大尺寸的一半。設(shè)想到,形成沿著每個(gè)維度每個(gè)方向上的分區(qū)中對象的最大尺寸的一半而擴(kuò)展的窗口,可以捕捉可與所接收的窗口查詢相交的所有可能對象。圖10中包含了調(diào)整后的窗口查詢的示意。在左上角,示出了數(shù)據(jù)空間90和表示接收的窗口查詢的窗口的窗口92。在右手側(cè),示出了五個(gè)數(shù)據(jù)空間,每個(gè)對應(yīng)于一個(gè)分區(qū)。在每一個(gè)數(shù)據(jù)空間中,示出了調(diào)整后的窗口的查詢93A、93B、93C、93D或93E。該窗口位置映射子模塊被設(shè)置成將調(diào)整后的查詢的矩形窗口的至少一個(gè)位置映射到均勻分布的多個(gè)映射位置中的至少一個(gè)。在一個(gè)實(shí)施例中,這是通過使用由模塊62、64、66、68所確定的映射函數(shù)來映射窗口而進(jìn)行的。在一個(gè)實(shí)施例中,窗口位置映射子模塊84映射每個(gè)窗口的每個(gè)角的位置。圖14示出了在三個(gè)分區(qū)上進(jìn)行的經(jīng)調(diào)整的查詢的一個(gè)示例。對于每個(gè)分區(qū)310、320、330,調(diào)整的窗口查詢315、325、335是通過如下而形成的:在所有四個(gè)方向?qū)⒔邮盏拇翱诓樵?00的窗口擴(kuò)展了分區(qū)的最大空間數(shù)據(jù)對象尺寸的一半(調(diào)整的窗口查詢受限制不能擴(kuò)展到數(shù)據(jù)空間外),并且將調(diào)整的窗口的每個(gè)角位置映射到均勻分布的多個(gè)映射的位置中的一個(gè)。在該圖中,每個(gè)分區(qū)被示出為具有表示索引鍵的多個(gè)塊(索引鍵和塊通過使用Z曲線的映射而得到,例如,第一分區(qū)310包括塊0至63)。表示與調(diào)整的窗相交的塊的每個(gè)索引鍵被列入索引鍵范圍的列表中(即,作為表示索引鍵的一個(gè)連續(xù)集合的范圍)。在圖14中,列表從而為{[2,3],[6,6],[8,12],[14,14]}。然后,將對這些索引鍵范圍進(jìn)行分區(qū)中的空間數(shù)據(jù)對象的查詢。在使用空間填充曲線(例如,Z曲線或希爾伯特曲線)映射數(shù)據(jù)空間的實(shí)施例中,一種進(jìn)行經(jīng)調(diào)整的查詢的方法將是掃描或遍歷窗口查詢中的每個(gè)塊。然而,這種方法將需要調(diào)用每個(gè)塊的空間填充曲線的映射函數(shù)。若要規(guī)避掃描或遍歷每個(gè)塊,則如果使用Z曲線映射數(shù)據(jù)空間,則可以使用遞歸算法進(jìn)行經(jīng)調(diào)整的查詢,以減少對Z曲線映射函數(shù)的調(diào)用。例如,如果分區(qū)完全由窗口查詢的窗口覆蓋,則整個(gè)分區(qū)的索引鍵范圍被添加到表示“候選塊”的列表中,其可能或可能不與空間數(shù)據(jù)對象相交(索引鍵范圍可以通過調(diào)用該區(qū)域的第一個(gè)和最后一個(gè)塊上的Z曲線的映射函數(shù)來確定)。如果該窗口不完全覆蓋分區(qū)而是僅覆蓋分區(qū)的一部分,那么如果成本模型預(yù)測分區(qū)內(nèi)的空間數(shù)據(jù)對象的查詢成本超過1個(gè)分頁存取,則將分區(qū)分成2D個(gè)更小的區(qū)域(其中D是空間數(shù)據(jù)對象的維數(shù))。由于這個(gè)劃分策略與空間填充曲線如何劃分?jǐn)?shù)據(jù)空間相同,因此對應(yīng)于每個(gè)子區(qū)域的鍵范圍是非常容易計(jì)算的。例如,令二維數(shù)據(jù)空間由階數(shù)λ=3的空間填充曲線索引。那么,數(shù)據(jù)空間的鍵范圍是|0,2λD-1|=[0,63],而其四個(gè)子區(qū)域的鍵范圍是:它們分別等于[0;15],[16;31],[32;47]和[48;63]。如果窗口未完全覆蓋較小的區(qū)域,代表著該較小區(qū)域的索引鍵將被丟棄。在一個(gè)實(shí)施例中,用于預(yù)測空間數(shù)據(jù)對象的查詢成本的成本模型是其中,Pc為具體空間填充曲線的聚類性質(zhì),f是一個(gè)分頁中的空間數(shù)據(jù)對象的數(shù)目(有時(shí)也被稱為“葉節(jié)點(diǎn)扇出”),u為平均節(jié)點(diǎn)利用率,D是數(shù)據(jù)空間中空間數(shù)據(jù)對象的維數(shù),以及N(di)是小于di的空間數(shù)據(jù)對象的總數(shù)。此外,上述方程可以由以下方程所替代此處,n是分區(qū)的總數(shù),Pc為具體空間填充曲線的聚類性質(zhì),Ni表示第i分區(qū)中對象的數(shù)量,cdfi,j(.)表示用來計(jì)算如前面所定義的對象位置的映射位置的函數(shù),q.uj表示查詢窗口q在第j維度的上界,q.lj表示查詢窗口q在第j維度的下界,di表示第i分區(qū)的分區(qū)尺寸,D是數(shù)據(jù)空間中空間數(shù)據(jù)對象的維數(shù),f是一個(gè)分頁中的空間數(shù)據(jù)對象的數(shù)目(有時(shí)也被稱為“葉節(jié)點(diǎn)扇出”)。如果窗口僅部分地覆蓋較小的區(qū)域,則成本模型被用于預(yù)測對該區(qū)域內(nèi)的空間數(shù)據(jù)對象進(jìn)行查詢的額外成本:如果所預(yù)測的成本小于1個(gè)分頁存取,則所述區(qū)域被視為等同于完全由窗口覆蓋,并且添加該區(qū)域的索引鍵;如果成本超過1個(gè)分頁存取,則該區(qū)域被再次劃分為2D個(gè)更小的區(qū)域,并且遞歸地重復(fù)上述過程,直到區(qū)域尺寸達(dá)到單個(gè)塊,在這種情況下,該塊的鍵可能被添加或不被添加(取決于它是否與窗口查詢相交)。圖15示出了上述遞歸算法在具體分區(qū)中使用的一個(gè)示例。最初,分區(qū)被子劃分成4個(gè)子區(qū)域,因?yàn)槌杀灸P皖A(yù)測查詢與分區(qū)相關(guān)聯(lián)的空間數(shù)據(jù)對象多于1個(gè)分頁存取。接著,兩個(gè)最左側(cè)子區(qū)域的索引鍵被丟棄,因?yàn)樗鼈兣c調(diào)整后的窗口查詢完全沒有相交,并且其它兩個(gè)子區(qū)域由于進(jìn)一步的成本模型預(yù)測而再次被劃分為更多子區(qū)域。觀察右下角子區(qū)域,它包含與調(diào)整后的窗口查詢不相交的兩個(gè)子區(qū)域(因此,代表著覆蓋這兩個(gè)子區(qū)域的塊的索引鍵被丟棄)、被窗口查詢覆蓋的一個(gè)子區(qū)域(因此,代表著覆蓋該子區(qū)域的塊的索引鍵同樣被添加)、以及其中所預(yù)測的成本模型小于1個(gè)分頁存取的一個(gè)被部分覆蓋的子區(qū)域(并且,代表著覆蓋該子區(qū)域的塊的索引鍵同樣被添加)。相同的過程被應(yīng)用于右上方子區(qū)域,直至得到{[24,27],[30,30],[48,51],[52,55]},此即為與窗口查詢相交的索引鍵范圍的一個(gè)大致列表。與掃描或遍歷每個(gè)塊相比,上述的方法(本文中也簡稱為RoughMapRange)可通過放寬對應(yīng)于窗口查詢的鍵范圍來減少窗口查詢的計(jì)算成本。在使用希爾伯特曲線映射數(shù)據(jù)空間的實(shí)施例中,一種執(zhí)行經(jīng)調(diào)整的查詢的方法是只考慮邊緣塊來計(jì)算索引鍵范圍的列表。如果已使用希爾伯特曲線(或其它連續(xù)曲線)映射數(shù)據(jù)空間,這樣的方法通常是有利的,因?yàn)槊總€(gè)范圍的索引鍵與總是在查詢窗口的邊緣上的索引鍵相對應(yīng)。在一個(gè)實(shí)施例中,該方法將考察每個(gè)邊緣塊,以確定該塊是否為查詢窗口的入口或出口點(diǎn)。要確定索引鍵是否為入口/出口值,可以用逆希爾伯特映射函數(shù)來檢查前一個(gè)/下一個(gè)值是否在查詢窗口之外。如果是,則應(yīng)當(dāng)將該索引鍵添加到列表中。然后,每個(gè)入口點(diǎn)和每個(gè)出口點(diǎn)被添加到索引鍵的有序列表(由于一個(gè)點(diǎn)可能即是入口點(diǎn)又是出口點(diǎn),故而該點(diǎn)可以被添加兩次)。在觀察各邊緣塊的最后,該列表將有偶數(shù)個(gè)索引鍵(因?yàn)槿肟邳c(diǎn)和出口點(diǎn)的數(shù)目必須相等)。然后,該列表可用于通過配對列表中的條目來構(gòu)造索引鍵范圍的列表。圖16示出了用于具體分區(qū)的上述方法的一個(gè)示例。從左上角開始考察數(shù)據(jù)空間,索引鍵24被兩次添加到(最初為空的)列表,因?yàn)樵搲K既是調(diào)整后的窗口的入口點(diǎn)也是出口點(diǎn),這使得該列表成為[24,24]。接著,索引鍵27僅是入口點(diǎn),因此列表變成[24,24,27]。索引鍵29既不是入口點(diǎn)也不是出口點(diǎn),因此它不被添加到列表中。最終,該列表變成[8,11,24,24,27,36,39,40,45,46,50,55]。在配對列表中的索引鍵之后,即得到了與經(jīng)調(diào)整的窗口相交的索引鍵的索引鍵范圍列表。與掃描或遍歷每個(gè)塊(下文簡稱ScanMapRange)相比,上述方法(下文簡稱EdgeMapRange)可以降低復(fù)雜性。為了對上述執(zhí)行調(diào)整后的查詢的方法進(jìn)行一個(gè)簡單的復(fù)雜性分析,不妨假設(shè)窗口查詢是超正方形,并且令nc為窗口查詢一側(cè)上的單元的數(shù)量,則窗口查詢中有ncD個(gè)單元,并且ScanMapRange中調(diào)用C()的次數(shù)為O(ncD)。上述方法中C()/C-1()的調(diào)用次數(shù)為O(ncD-1)。當(dāng)D=2時(shí),改善是最明顯的,其中ScanMapRange中的調(diào)用次數(shù)為O(nc2),而EdgeMapRange中的調(diào)用次數(shù)為O(nc)。圖11是示出了對空間數(shù)據(jù)對象的索引進(jìn)行操作的步驟的流程圖。首先,在步驟200,接收到查詢。然后,在步驟210,基于每個(gè)分區(qū)的尺寸特性和接收到的查詢,為各分區(qū)確定經(jīng)調(diào)整的查詢。在步驟212,對于每個(gè)分區(qū),經(jīng)調(diào)整的查詢是通過形成具有新窗口的查詢而確定的。在步驟214,此窗口的至少一個(gè)位置被映射到均勻分布的多個(gè)映射位置中的至少一個(gè)。在步驟230,映射之后,對分區(qū)中的空間數(shù)據(jù)對象進(jìn)行經(jīng)調(diào)整的查詢。圖12是示出了基于多個(gè)均勻分布的映射位置索引空間數(shù)據(jù)對象的步驟的流程圖。首先,在步驟132,將每個(gè)空間數(shù)據(jù)對象的位置映射到多個(gè)映射位置中的一個(gè)。然后,在步驟142,基于各空間數(shù)據(jù)對象的映射位置,將每個(gè)空間數(shù)據(jù)對象映射到一個(gè)索引鍵。將每個(gè)空間數(shù)據(jù)對象的位置映射到均勻(或大致均勻地)分布的多個(gè)映射位置中的一個(gè)的目的是,實(shí)現(xiàn)分區(qū)中對象的均勻(或大致均勻)分布。累積分布函數(shù)(CDF)被用于映射,因此該映射被稱為累積映射。該累積分布函數(shù)cdf(x)返回小于或等于x的數(shù)據(jù)所占的百分比。在每個(gè)維度j中,定義映射cdfj(o),它返回中心坐標(biāo)小于或等于維度j中o的中心坐標(biāo)的對象所占的百分比。令<o1,o2,…,O|O|>為O中多個(gè)對象按照維度j中它們的中心坐標(biāo)遞增順序的排列。則,各對象的CDF值在1維空間內(nèi)均勻地分布在[0,1]之內(nèi)。因此,實(shí)現(xiàn)了生成均勻分布的映射。要注意,映射之后,整個(gè)數(shù)據(jù)空間被映射成單位超立方體空間。獲取累積映射的準(zhǔn)確CDF需要對所有對象進(jìn)行排序,這開銷較大?;蛘?,可以僅計(jì)算少數(shù)坐標(biāo)值處的CDF值,這可以通過對數(shù)據(jù)集的掃描來獲得,并因此避免了排序。然后,這些CDF值可用來構(gòu)造近似于映射的準(zhǔn)確CDF的分段映射函數(shù)(PMF)。在下文中,如圖19所示,利用構(gòu)造分段映射函數(shù)的示例來說明如何構(gòu)造PMF。維度j中的數(shù)據(jù)域平均地分成nb個(gè)段(buckets)。段的邊界坐標(biāo)用來計(jì)算PMF。在圖19(a)中,示出了對維度中的對象中心進(jìn)行映射,維度X中的數(shù)據(jù)域[0,10]被分成5個(gè)段,邊界坐標(biāo)為0,2,4,6,8和10。為了計(jì)算它們的CDF值,首先計(jì)算累積計(jì)數(shù),其等于坐標(biāo)小于或等于邊界坐標(biāo)的對象的數(shù)量。在該圖中,白色點(diǎn)表示維度j中對象的中心坐標(biāo)。邊界坐標(biāo)的累積計(jì)數(shù)分別為0,2,4,6,8和10,其可以通過掃描一次坐標(biāo)來獲得。劃分對象的總數(shù),10,得到邊界坐標(biāo)的下列CDF值:0,3/10,6/10,8/10,9/10,1。然后,在維度Y上標(biāo)繪邊界坐標(biāo)的CDF值(由虛線交匯處的點(diǎn)表示),并通過線段連接標(biāo)繪出的點(diǎn),這產(chǎn)生了折線,其顯示為從原點(diǎn)出發(fā)的粗黑折線。該折線對應(yīng)著用于逼近映射所用CDF的PMF。如Y軸上的黑色點(diǎn)所示,在該函數(shù)進(jìn)行映射之后,對象大致均勻地分布在數(shù)據(jù)域[0,1]內(nèi)。形式上,用于逼近精確的CDF的PMF定義如下。令j為映射的當(dāng)前維度,|Z|j為第j維度上的數(shù)據(jù)域的大小,為段的nb+1個(gè)邊界坐標(biāo),bk.c為bk(k=0,...,nb)的累積計(jì)數(shù)。然后,給出對象o,它在第j維度上的中心o.c位于o.cj,其中令o.c為段k。在第j維度上用來將對象o的o.c映射成分區(qū)i的PMF,由cdfi,j(o.c)表示,其形式上定義如下。這里,Oi表示分區(qū)i的一組對象。要注意,如果o.cj=|Z|j,則k=nb并因此bk+1將是未定義的。在這種情況下,不利用式(15)計(jì)算cdfi,j(o.c),而是直接將其定義為1。為了進(jìn)一步降低計(jì)算PMF的成本,可以僅計(jì)算小樣本集合S2上的PMF。然后,cdfi,j(o.c)變成:圖19(b)示出了映射之前的情況,圖19(c)示出了映射之后的情況??梢钥闯觯诶鄯e映射之后,偏斜分布的二維數(shù)據(jù)集變成均勻(大致均勻)的數(shù)據(jù)集。PMF值對CDF值的近似比由ρ表示,其推導(dǎo)如下。在段邊界,PMF和CDF有相同的值。近似比ρ為1。對于兩個(gè)段邊界之間的一點(diǎn),ρ推導(dǎo)如下。假設(shè)兩個(gè)相鄰段邊界坐標(biāo)bk和bk+1之間的對象以它們的中心坐標(biāo)升序排列。令o為第m個(gè)對象,并且令l為其到bk的距離。o的中心的CDF值為o的中心的PMF值也可通過式(15)計(jì)算。然后,根據(jù)上面的方程,ρ的準(zhǔn)確值取決于特定對象能夠獲得的l和m的值。然后進(jìn)一步導(dǎo)出與任何特定對象無關(guān)的ρ的上限和下限。由于1≤m≤bk+1.C-bk.C且0<l<bk+1-bk,有:因此,段的數(shù)量和一段內(nèi)對象的數(shù)量限定了ρ的兩個(gè)邊界,并且當(dāng)構(gòu)造PMF以達(dá)到某一ρ值時(shí),這些邊界可以用來幫助確定參數(shù)值。在累積映射后,再用空間填充曲線映射每個(gè)分區(qū)的對象,從而得到索引鍵。該映射的輸入是累積映射后的對象o的坐標(biāo),而輸出則是o的空間填充曲線值。來自不同的分區(qū)的曲線值是通過將前(i-1)th個(gè)分區(qū)中的網(wǎng)格單元的總數(shù)添加到分區(qū)i的曲線值而分隔的。這樣,只需要一個(gè)B+樹即可索引來自所有分區(qū)的對象。這部分的挑戰(zhàn)是為每個(gè)分區(qū)確定空間填充曲線的階數(shù)。查詢處理算法涉及兩個(gè)概念性的階段:(i)找出與窗口查詢相交的單元,然后根據(jù)這些單元,(ii)找出與窗口查詢相交的對象。單元較大(階數(shù)較小)的空間填充曲線具有的單元較少,并將使得階段(i)成本較低,但它在每個(gè)小單元中也有更多個(gè)對象,并因此使得階段(ii)成本較高。單元較小(階數(shù)較大)的空間填充曲線在階段(i)成本較高,但在階段(ii)成本較低。為了實(shí)現(xiàn)兩個(gè)步驟的成本平衡,建議使用分區(qū)尺寸值作為單元尺寸。直觀上是讓單元足夠大到包含一個(gè)對象,但又不能過大,以避免在查詢處理中出現(xiàn)太多的誤中。這樣,每個(gè)對象將只有一個(gè)索引鍵。如此可減小用來存儲(chǔ)這些鍵的B+樹的大小,并且提高查詢處理效率。要注意,索引針對的是對象中心。每個(gè)對象中心都在一個(gè)單元中,并且每個(gè)對象已經(jīng)只有一個(gè)索引鍵。似乎單元尺寸甚至可以低于從而盡可能限制查詢處理中的誤中。但是,查詢處理需要窗口查詢擴(kuò)展。這有效地返還給對象它們的范圍。如果單元太小,窗口查詢的擴(kuò)展部分將覆蓋許多額外的單元,這將導(dǎo)致對窗口查詢進(jìn)行映射的額外成本過高。接下來,確定分區(qū)i的空間填充曲線的階數(shù),由λi.表示。對應(yīng)于該空間填充曲線的概念性網(wǎng)格應(yīng)覆蓋整個(gè)數(shù)據(jù)空間。階數(shù)為λi的空間填充曲線在每一側(cè)具有個(gè)單元,并且每個(gè)單元的邊長為令|Z|為數(shù)據(jù)域的尺寸。那么,λi應(yīng)滿足這意味著如圖17所示,一個(gè)分區(qū)具有0.28的分區(qū)尺寸值,因此單元尺寸為0.28。為了覆蓋邊長為1的數(shù)據(jù)空間,該空間填充曲線的階數(shù)應(yīng)該是要注意,所得的空間填充曲線概念性網(wǎng)格可以比數(shù)據(jù)空間大一點(diǎn),這意味著右側(cè)或底部的單元與數(shù)據(jù)空間重疊的區(qū)域可能較小。其結(jié)果是,該單元包含的對象數(shù)量可能較少,因而導(dǎo)致索引鍵分布不均勻。然而,單元的重疊區(qū)域較小也意味著該單元與查詢窗口相交的概率較小。因此,網(wǎng)格的多余空間對查詢處理性能的影響是有限的?,F(xiàn)在有一個(gè)空間填充曲線,具有個(gè)單元。這也是分區(qū)i的網(wǎng)格單元的數(shù)量。那么,前ith個(gè)分區(qū)的網(wǎng)格單元的總數(shù),由vi表示,計(jì)算為:添加vi-1到分區(qū)i中的對象的曲線值,以避免不同分區(qū)的索引鍵范圍之間的重疊。其結(jié)果,在空間填充曲線映射和曲線值添加之后,得到分區(qū)i中的對象o的索引鍵,由ssi(o)表示,計(jì)算如下:此處,返回累積映射之后的對象o的中心坐標(biāo),Ci(·)返回?cái)?shù)據(jù)空間中的給定點(diǎn)的空間填充曲線值。函數(shù)Ci(·)取決于分區(qū)i的空間填充曲線的類型和順序。一旦獲得了所有對象的索引鍵,將它們放入B+樹,以索引對象。圖17示出一個(gè)示例,其中分區(qū)的數(shù)目是3并且用于三個(gè)分區(qū)的空間填充曲線(尤其是Z-曲線)的階數(shù)分別是3、2和1。累積映射之后,分區(qū)1中對象o1的中心是在單元35,即,如圖17(a)所示。由于沒有先前的分區(qū),即v0=0,直接分配給對象o1鍵35。因此,ssi(o1)=35。分區(qū)2中對象o2的中心位于(b)中的單元4,即但是分區(qū)1已經(jīng)占據(jù)了曲線值0到63,即v1=64。因此,分配ssi(o2)=4+64=68。同理,ssi(o3)=0+80=80。作為一個(gè)示例,算法1總結(jié)了尺寸分區(qū)索引過程。(1)確定分區(qū)尺寸。該算法首先從O采樣一個(gè)集合S1,這需要的時(shí)間和空間為O(|S1|)(行1至3)。以S1中的對象的尺寸分布作為O的尺寸分布的近似?;谠摻频某叽绶植迹褂贸杀灸P屯ㄟ^對處理不同配置下的窗口的查詢的預(yù)期成本進(jìn)行計(jì)算和比較,來搜索最佳尺寸分區(qū)配置(行4至23)。此處,對于每個(gè)可能的分區(qū)數(shù)目n,使用以詞典編纂順序從|S1|個(gè)對象中生成尺寸為n的所有組合的算法,生成分區(qū)尺寸值的不同組合。其時(shí)間復(fù)雜度為O(nC(|S1|,n)),其中O(C(|S1|,n))部分表示生成組合的復(fù)雜度,O(n)部分表示一個(gè)組合的成本模型計(jì)算的復(fù)雜度??臻g復(fù)雜度為O(nmax),其對應(yīng)生成組合所使用的chosen[]輔助陣列。為了進(jìn)一步減少生成組合的計(jì)算成本,首先建立對象尺寸的直方圖,然后生成直方圖的分區(qū)尺寸組合,使得組合的數(shù)量減少。在最佳分區(qū)配置確定后,數(shù)據(jù)集O根據(jù)被分區(qū)成個(gè)分區(qū),這需要的時(shí)間和空間為O(|O|)(行24)。(2)累積映射。每個(gè)分區(qū)的對象首先通過累積映射進(jìn)行映射,以達(dá)到近似均勻分布(行25至29)。此處,對S2集合進(jìn)行采樣并且計(jì)算近似的CDF函數(shù)需要O(D|S2|)的時(shí)間和空間。對D個(gè)維度完成這些,使用了的時(shí)間和空間總計(jì)O(D|S2|)。一個(gè)對象的累積映射需要時(shí)間O(D)和空間O(D+nb),其中O(nb)表示用于存儲(chǔ)邊界坐標(biāo)的空間。對所有對象進(jìn)行映射,這需要時(shí)間O(D|O|)和空間O(D|O|+nb)。(3)空間填充曲線映射和對象索引。隨后,對象通過空間填充曲線映射被映射(行30和31),以生成索引鍵。該映射的時(shí)間復(fù)雜度和空間復(fù)雜度是O(|O|time(C))和O(|O|space(C)),其中O(time(C))和O(space(C))分別表示計(jì)算曲線值映射函數(shù)C(·)的時(shí)間復(fù)雜度和空間復(fù)雜度。所生成的鍵被送入B+樹,以索引O(line32)中的對象,這需要時(shí)間O(|O|log|O|)和空間O(|O|)。圖13是示出了用于對根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引進(jìn)行操作的步驟的流程圖。首先,存步驟202,接收到對數(shù)據(jù)空間的空間數(shù)據(jù)對象的查詢。然后,在步驟216,該查詢的至少一個(gè)位置被映射到多個(gè)映射位置中的至少一個(gè)。在步驟232,基于至少一個(gè)映射位置進(jìn)行查詢。本發(fā)明領(lǐng)域的技術(shù)人員將會(huì)理解的是,在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行多種修改,具體而言,顯而易見的是,可以利用本發(fā)明的實(shí)施例的某些特征以形成進(jìn)一步的實(shí)施例。例如,如果需要,圖8和圖9的索引系統(tǒng)可以包含將索引鍵映射到B+樹中的入口的附加模塊。此外,用于索引空間數(shù)據(jù)對象的索引系統(tǒng)可以僅包括:用于將每個(gè)空間數(shù)據(jù)對象的位置映射到多個(gè)均勻分布的映射位置中的一個(gè)的數(shù)據(jù)映射模塊,和基于空間數(shù)據(jù)對象的位置被映射到的位置將每個(gè)空間數(shù)據(jù)的對象映射到索引鍵的對象映射模塊。在這方面,一種用于對空間數(shù)據(jù)對象的索引進(jìn)行操作的系統(tǒng),所述空間數(shù)據(jù)對象由所述系統(tǒng)索引,所述系統(tǒng)僅包括,用于接收具有至少一個(gè)位置的查詢接收模塊,用于將查詢的至少一個(gè)位置映射到均勻分布的多個(gè)映射位置中的至少一個(gè)的查詢映射模塊,以及基于至少一個(gè)映射位置進(jìn)行查詢的查詢處理模塊。進(jìn)一步的,應(yīng)當(dāng)理解的是,用于預(yù)測對空間數(shù)據(jù)對象的查詢的成本模型假設(shè)前提有:(i)用于索引上述空間數(shù)據(jù)對象的方法中被索引對象的中心(其可以稱為尺寸分區(qū)索引,簡稱SSI)遵循大致均勻的分布,(ii)給定相同的窗口查詢,SSI的在不同分區(qū)配置中的性能對比主要由這些配置中所使用的不同空間填充曲線決定。由于采用了累積映射將對象的中心變換到各對象大致均勻分布的空間,因此假設(shè)(i)是成立的。由于空間填充曲線的查詢性能從根本上由稱為聚類性質(zhì)的曲線的固有性質(zhì)決定,因此假設(shè)(ii)是成立的。下面,詳細(xì)描述用于預(yù)測空間數(shù)據(jù)對象的查詢成本的成本模型。處理窗口查詢的分頁存取總數(shù)由α表示,是處理所有分區(qū)上的查詢的分頁存取次數(shù)的總和。用αi表示分區(qū)i的分頁存取的次數(shù)。令nq為窗與口查詢q相交的對象的數(shù)量。αi隨nq增加。1.連續(xù)的情況。假設(shè)與q相交的nq個(gè)對象在B+樹中連續(xù)地被索引,并且樹中的一個(gè)節(jié)點(diǎn)(一個(gè)分頁)的容量是Cmax。導(dǎo)出αi的期望如下,由E(αi)表示。如圖20所示,q可以覆蓋或個(gè)節(jié)點(diǎn),取決于nq和節(jié)點(diǎn)中nq個(gè)對象的起始位置,由s表示,s=0,1,...,m,...Cmax-1。此處,s=m表示nq個(gè)對象中具有最小鍵的對象被放置在一個(gè)節(jié)點(diǎn)的第m個(gè)入口。將nq改寫為k=0,1,...,l,...Cmax-1。那么,其中,p(k=l,s=m)表示k=l且s=m的概率,并且αi,l,m表示當(dāng)k=l且s=m時(shí),分區(qū)i上訪問查詢的葉節(jié)點(diǎn)的數(shù)目。對于隨機(jī)的窗口查詢,Cartesian空間[0,Cmax-1]×[0,Cmax-1]中的k和s的任何組合的p(k,s)應(yīng)該是相同的,即,因此,接下來,為l的每一個(gè)值導(dǎo)出并且將所得值相加得到E(αi)的值。(i)當(dāng)l=0時(shí),如果m=0,則否則,(ii)當(dāng)l=1,時(shí),不論m的值為多少,(iii)當(dāng)l=2時(shí),如果m=(Cmax-1),則(即,前兩個(gè)和最后兩個(gè)對象分別駐留在一個(gè)節(jié)點(diǎn),而其余的對象駐留在個(gè)節(jié)點(diǎn);否則,(iv)同理,當(dāng)l>2時(shí),如果m≥Cmax-l+1,則否則,將αi,l,m的值相加,得到:因此,因此,平均來說,訪問葉節(jié)點(diǎn)的個(gè)數(shù)是由于在B+樹中,葉節(jié)點(diǎn)的數(shù)量比非葉節(jié)點(diǎn)的數(shù)量大得多,并且Cmax通常是相當(dāng)大的,從而2.一般情況。更一般地,與q相交的對象在B+樹中不是連續(xù)地被索引,因?yàn)榇翱诓樵冎械膶ο鬀]有嚴(yán)格連續(xù)的曲線值。例如,在圖16中,窗口查詢含有曲線值為分為多個(gè)段的對象。在這種情況下,索引這些對象的節(jié)點(diǎn)數(shù)目比由式(23)估計(jì)的數(shù)量大。因此,αi增加。這種增加的規(guī)模由pcur表示,是通過多少個(gè)與窗口查詢相交的對象具有連續(xù)的曲線值以及多少個(gè)對象沒有而確定的,這進(jìn)而通過用于對象映射的空間填充曲線的聚類性質(zhì)而確定。對不同類型的空間填充曲線的聚類性質(zhì)的研究已經(jīng)表明,不同類型的曲線在窗口查詢中的對象的曲線值中具有不同程度的連續(xù)性。要導(dǎo)出接近形式的公式來計(jì)算每個(gè)空間填充曲線的連續(xù)程度并精確地預(yù)測其對分頁存取增加的規(guī)模的影響,即便有可能,也將是非常困難的。然而,由于分頁存取增加的規(guī)模是具體空間填充曲線的固有屬性,故而是恒定的。所以pcur的值可根據(jù)經(jīng)驗(yàn)得到。接下來,為了將αi用公式表示為nq、Cmax和pcur的函數(shù),分析αi如何隨nq和Cmax而變化。假定數(shù)據(jù)對象均勻地分布在數(shù)據(jù)空間中,并且這些對象均勻地分布在B+樹的葉節(jié)點(diǎn)中。然后,給定窗口查詢q,包含與q相交的對象的葉節(jié)點(diǎn)數(shù)量由A表示,其正比于q在D維空間中的體積(如果D=2,則為面積)。因此,A∝v(q)。同時(shí),與窗口查詢nq交叉的對象數(shù)目也正比于v(q),即nq∝v(q)。因此,A∝nq。由于對象均勻地分布在樹節(jié)點(diǎn)中,A與樹節(jié)點(diǎn)容量成反比,即結(jié)合A∝nq,得處理窗口查詢q需要訪問包含與q相交的對象的葉節(jié)點(diǎn)和一些非葉節(jié)點(diǎn)。由于B+樹中葉節(jié)點(diǎn)的數(shù)量比非葉節(jié)點(diǎn)的數(shù)量大得多,為處理q,而訪問的樹節(jié)點(diǎn)的個(gè)數(shù)αi約等于為處理q而訪問的葉節(jié)點(diǎn)個(gè)數(shù),即αi≈A。因此,根據(jù)以上分析,還確定了一般情況下分頁存取增加的規(guī)模pcur是常量。因此,由此,概括方程(23),得到下面,將詳細(xì)說明如何確定成本模型中的參數(shù)。首先,導(dǎo)出與q相交的對象數(shù)目nq,然后導(dǎo)出一般情況下分頁存取增加的規(guī)模pcur。1.與窗口查詢相交的對象數(shù)目(nq)?;诖翱诓樵僸所重疊的數(shù)據(jù)空間的比例,導(dǎo)出nq。大意是,在數(shù)據(jù)對象均勻分布的空間中,包含在窗口中的對象的比例大約是由窗口重疊的數(shù)據(jù)空間的比例。在SSI中,累積映射之后,對象接近均勻分布。因此,其中,ni、||q||和||Z||分別表示分區(qū)i中的對象數(shù)量,窗口查詢的面積(或體積),以及數(shù)據(jù)空間的面積(或體積)。由于累積映射后的數(shù)據(jù)空間||Z||的面積(或體積)變?yōu)?,它具有:nq≈ni||q||(25)1)推導(dǎo)||q||?;趒在每個(gè)維度j的下界q.lj和上界q.uj的位置,可以進(jìn)行上述窗口查詢擴(kuò)展和對q的累積映射,以獲得||q||。形式上,此處,cdfi,·表示用于分區(qū)i中的累積映射的CDF的集合,而di表示分區(qū)i的分區(qū)尺寸值。當(dāng)使用成本模型來確定分區(qū)配置時(shí),還沒有具體的窗口查詢q,因此也沒有q·lj或q·uj的任何具體位置。此時(shí)需要q·lj和q·uj的所有位置的積分。形式上,此處,|Z|j表示維度j上的數(shù)據(jù)空間范圍。2)簡化||q||。式(27)給出了分區(qū)配置選擇的q的準(zhǔn)確大小。然而,這是一個(gè)計(jì)算開銷較高的方程。因?yàn)樵谂渲眠x擇中需要頻繁使用成本模型,故||q||的計(jì)算簡化如下。成本模型假定數(shù)據(jù)對象是均勻分布的。q的不同位置對數(shù)據(jù)集的不同分區(qū)所具有的選擇性效果應(yīng)當(dāng)是相似的;q的位置上的積分和累積映射不太影響不同分區(qū)之間的成本的比較結(jié)果。因此,在式(27)中丟棄積分和CDF,并用|q|j代替q.lj和q.uj來表示維度j上g的范圍,于是有分區(qū)配置選擇不存在具體的窗口查詢,因此|q|沒有對應(yīng)值。使用超正方形形狀的“典型的窗口查詢”的尺寸,由表示。直觀上,只需要比較SSI的不同分區(qū)配置的成本,即可幫助確定最佳配置。相同的“典型的窗口查詢”應(yīng)對計(jì)算不同配置的成本具有相同的效果,并因此不改變不同配置的相對成本。因此,||q||進(jìn)一步簡化為,這個(gè)方程計(jì)算的額外開銷較低。在實(shí)驗(yàn)研究中,結(jié)果表明的值對配置選擇結(jié)果的影響非常小。2.一般情況下的分頁存取增加的規(guī)模(pcur)。要了解某種類型的空間填充曲線的pcur的值,用曲線實(shí)現(xiàn)SSI,然后使用被實(shí)現(xiàn)的SSI進(jìn)行窗口查詢。記錄分頁存取的實(shí)際次數(shù),并將其與連續(xù)情況下的成本模型所估計(jì)的次數(shù)(式(23),即進(jìn)行比較。觀察與連續(xù)情況相比時(shí),一般情況下的分頁存取增加的規(guī)模有多大。圖21示出了改變數(shù)據(jù)集基數(shù)、對象尺寸和窗口查詢選擇性來了解二維空間中的希爾伯特曲線的結(jié)果,其中|~o|表示從一些真實(shí)的數(shù)據(jù)集獲得的平均對象尺寸。在該圖中,分頁存取的實(shí)際次數(shù)和估計(jì)次數(shù)分別由“實(shí)際”和“估計(jì)”表示。可以觀察到,實(shí)際數(shù)量始終約比估計(jì)數(shù)量大0.6倍。計(jì)算每個(gè)數(shù)據(jù)點(diǎn)的增加規(guī)模,并取平均作為pcur的值,這導(dǎo)致Pcur=1.5722。在一般情況下的成本模式(式(24):中使用這個(gè)值,并重新估計(jì)對于不同設(shè)置的分頁存取次數(shù)。通過比較實(shí)際次數(shù)和估計(jì)次數(shù),結(jié)果表明最大誤差率只有5.45%。類似地,分別得到了在2-維空間和3-維空間中Z-曲線和希爾伯特曲線的pcur值。這些值及其相應(yīng)的最大成本模型估計(jì)誤差列于表2中。所實(shí)現(xiàn)的小估計(jì)誤差率(即,8.24%以內(nèi))說明使用pcur和成本模型是成立的。然后,nq和pcur可以整合到式(7)中,以獲得成本模型的最終形式。對于分區(qū)配置選擇,使用成本模型的簡化版,其中,nq通過式(8)和(12)來計(jì)算:對于窗口查詢成本估算,使用成本模型的完整版,其中,nq通過式(8)和(9)來計(jì)算:通過上述對計(jì)算系統(tǒng)的描述,該方法的其它方面將是顯而易見的。本領(lǐng)域的技術(shù)人員還將理解,該系統(tǒng)可以用程序代碼實(shí)現(xiàn)。程序代碼可以以多種方式來提供,例如軟件程序產(chǎn)品,其包括諸如如盤或存儲(chǔ)器等的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì);或作為數(shù)據(jù)信號(hào)(例如,通過從服務(wù)器發(fā)送該數(shù)據(jù)信號(hào))。例如,索引系統(tǒng)可以通過包含配置成要被執(zhí)行的程序代碼的軟件程序產(chǎn)品來提供,使得軟件程序安裝在用作數(shù)據(jù)庫管理系統(tǒng)(DBMS)的計(jì)算系統(tǒng)上。由本申請的實(shí)施例提供的用于索引數(shù)據(jù)空間的空間數(shù)據(jù)對象的索引方法可以在完整的DBMS(full-fledgedDBMS)中實(shí)現(xiàn),而不修改DBMS內(nèi)核,詳細(xì)描述如下。創(chuàng)建一個(gè)表來存儲(chǔ)空間對象的最小邊界矩形(MBR),其中個(gè)MBR的每個(gè)維度上的下邊界和的上邊界都存儲(chǔ)在單獨(dú)的列中。需要另一列來存儲(chǔ)用于將MBR與其相應(yīng)的空間對象相關(guān)聯(lián)的唯一ID。這些是在沒有空間支持的情況下使得在完整DBMS上能夠進(jìn)行空間查詢所需的全部列。另外,SSI需要表中的列ssi_key來存儲(chǔ)MBR的SSI鍵。下面是創(chuàng)建存儲(chǔ)SSI的2D對象的一個(gè)示例SQL語句??梢詣?chuàng)建多個(gè)表用來存儲(chǔ)用于SSI鍵計(jì)算的參數(shù)。如方程(5)所示,參數(shù)包括分區(qū)的數(shù)目f.n、數(shù)據(jù)維數(shù)D、用于構(gòu)建CDF的樣本的數(shù)量|S2|、用于構(gòu)建CDF的段的數(shù)量nb、每個(gè)維度中的數(shù)據(jù)空間大小|Z|j、每個(gè)分區(qū)的空間填充曲線的階數(shù)λi、在前i個(gè)分區(qū)中使用的網(wǎng)格單元的總數(shù)vi,以及每個(gè)段邊界坐標(biāo)的累積計(jì)數(shù)bk.c。創(chuàng)建用來存儲(chǔ)這些參數(shù)的表的示例SQL語句如下:給定一個(gè)數(shù)據(jù)集,用來:(i)產(chǎn)生用于SSI鍵計(jì)算的參數(shù);(ii)計(jì)算每條記錄的SSI鍵;以及(iii)通過DBMS′編程接口,如ODBC,將參數(shù)和SSI鍵插入DBMS中的數(shù)據(jù)庫表的C語言程序。上述程序也可用于數(shù)據(jù)維護(hù)。當(dāng)新的數(shù)據(jù)記錄到達(dá)時(shí),該程序計(jì)算SSI鍵以便記錄,并且生成用來將其插入數(shù)據(jù)庫表的INSERT語句;當(dāng)要?jiǎng)h除記錄時(shí),記錄的id被傳遞給程序,并且程序生成用來從數(shù)據(jù)庫表中刪除記錄的DELETE語句;當(dāng)記錄的MBR被更新時(shí),程序首先基于新的MBR計(jì)算用于記錄的新的SSI鍵,然后生成用來更新數(shù)據(jù)庫表中的記錄的UPDATE語句。下面是用于數(shù)據(jù)維護(hù)的示例SQL語句,如下:此處,<i_lower_1,i_upper_1>、……、<i_lower_k,i_upper_k>表示該窗口查詢映射到的空間填充曲線值的范圍。最后的AND語句是需要的,因?yàn)樵趕si_key上的比較可能會(huì)返回誤報(bào),這需要由窗口查詢直接過濾。要注意的是,上述SSI的實(shí)施是在現(xiàn)有的DMBS之上,其不改變DBMS的內(nèi)核。事務(wù)管理問題討論如下。有了上面SSI實(shí)現(xiàn),空間數(shù)據(jù)庫操作(即插入、更新、刪除和窗口查詢)分兩個(gè)步驟進(jìn)行:(i)由前文的C語言程序計(jì)算一個(gè)對象的SSI鍵,或者在一個(gè)窗口的查詢的情況下計(jì)算一組鍵范圍,并生成相應(yīng)的SQL語句;(ii)DBMS執(zhí)行生成的SQL語句來更新索引。包含上述空間操作的事務(wù)的完整ACID屬性可以通過應(yīng)用事務(wù)模型來實(shí)現(xiàn),如2PL和DBMS之外的故障恢復(fù)機(jī)制,例如,可以是在DBMS被查詢的應(yīng)用層中,或在封裝了到DBMS的訪問的服務(wù)層中。如果應(yīng)用在應(yīng)用層中,可以使用許多平臺(tái),如用于JavaEE的Spring,其負(fù)責(zé)業(yè)務(wù)邏輯中的事務(wù)管理,因此只需要很少的額外工作量。如果應(yīng)用在一個(gè)獨(dú)立的服務(wù)層,能夠避免大規(guī)模的工作量,因?yàn)榭梢岳肂+樹在DBMS中的實(shí)現(xiàn)來提供第二步驟中的ACID屬性。總體上,對于上述的SSI實(shí)現(xiàn),在DBMS之外只需少量工作量即可實(shí)現(xiàn)事務(wù)管理。另選地,可將SSI索引技術(shù)集成到DBMS的內(nèi)核(而不是加到DBMS之上),并由DBMS處理事務(wù)管理和故障恢復(fù)問題。這可以提供更高的SSI索引技術(shù)效率。除了支持ACID屬性,SSI對到RDBMS的事務(wù)吞吐量帶來的負(fù)面影響不大。具體地,對所述記錄和鎖定問題討論如下。對于處理窗口查詢時(shí)進(jìn)行鎖定,SSI和基于映射的競爭性的方法,例如XZ-ordering法,都將查詢窗口映射到用于在B+樹上進(jìn)行搜索的一組鍵值,其可能導(dǎo)致在執(zhí)行事務(wù)時(shí)相應(yīng)值的共享的鎖定。這種鎖定的成本取決于由不同方法所生成的鍵值的數(shù)量。給定相同的查詢,生成鍵值較多的方法的鎖定開銷可能較大,并因此具有的并行度也較低。給定相同的數(shù)據(jù)分布和查詢,不同的以映射為基礎(chǔ)的方法應(yīng)當(dāng)產(chǎn)生相同數(shù)量的鍵范圍,因?yàn)橐粋€(gè)窗口查詢內(nèi)的連續(xù)空間填充曲線的分段數(shù)不隨映射方法而變。注意到SSI具有分布變換步驟,其使得數(shù)據(jù)更均勻,所以相比其它的映射方法,SSI傾向于產(chǎn)生的連續(xù)空間填充曲線的分段數(shù)更少。這是由實(shí)驗(yàn)結(jié)果證實(shí)的。具體細(xì)節(jié)請參考“SSI集成在DBMS中時(shí)的性能”。當(dāng)處理相同的查詢SSI時(shí),通常涉及的分頁存取較少,即誤中較少。因此,預(yù)計(jì)SSI在并行度和鎖定開銷方面的表現(xiàn)能夠不弱于其它以映射為基礎(chǔ)的方法。在并行控制方面,基于R樹的方法對于SSI是沒有競爭性的,因?yàn)镽樹從根本上比B+樹更復(fù)雜。R樹中與MBR之間的重疊可能會(huì)導(dǎo)致許多節(jié)點(diǎn)被并行訪問,因此在查詢中被鎖定。實(shí)驗(yàn)研究下文中,將展示對SSI的實(shí)驗(yàn)研究的結(jié)果。首先,研究了不同組成部分對SSI性能的影響,然后,將SSI的查詢處理效率與某些現(xiàn)有的作為一個(gè)獨(dú)立的空間索引實(shí)現(xiàn)的空間索引的查詢處理效率進(jìn)行對比,最后,SSI被集成到兩個(gè)非專門設(shè)計(jì)的DBMS中,并且將查詢處理效率與兩個(gè)DBMS的空間組件的查詢處理效率進(jìn)行對比。對于每一個(gè)實(shí)驗(yàn),運(yùn)行200個(gè)窗口查詢并且報(bào)告分頁存取的平均次數(shù)和響應(yīng)時(shí)間。作為一個(gè)示例,該實(shí)驗(yàn)系統(tǒng)具有IntelCoreTM2DuoE600的處理器、2GB的RAM和分頁為4096字節(jié)的7200RPMSATA硬盤。所有的算法都是用C語言實(shí)現(xiàn),并且在Linux2.6.24下使用GCC4.2.3編譯。每個(gè)浮點(diǎn)類型的變量占主內(nèi)存4個(gè)字節(jié)。默認(rèn)索引不使用緩存(允許操作系統(tǒng)中的I/O緩存)。在研究緩存大小所帶來的影響的實(shí)驗(yàn)中,將緩存大小從0變化到1200個(gè)分頁,并且用直接I/O來繞過操作系統(tǒng)的I/O緩存,即,使用系統(tǒng)函數(shù)open()來打開數(shù)據(jù)文件并設(shè)置O_DIRECT標(biāo)記。使用了從R樹Portal3獲得的三個(gè)真實(shí)數(shù)據(jù)集:德國地勢數(shù)據(jù)集、Tiger/LineLA河流和鐵路數(shù)據(jù)集,以及Tiger流數(shù)據(jù)集。這些數(shù)據(jù)集包含76,999、128,971和194,971個(gè)二維的MBR,并且分別由“等高線圖(Hypsography)”,“軌道(Railway)”和“河流(Stream)”數(shù)據(jù)集表示。從二維真實(shí)數(shù)據(jù)集生成三維真實(shí)數(shù)據(jù)集的過程如下。對于一個(gè)真實(shí)的數(shù)據(jù)集中的的每個(gè)對象o,使用從相同的數(shù)據(jù)集中隨機(jī)選擇的對象的大小,作為o在第三維度中的范圍。然后,將第三維度中的對象隨機(jī)放置在[0,|Z|]范圍內(nèi),其中|Z|表示相應(yīng)的二維真實(shí)數(shù)據(jù)集的數(shù)據(jù)空間大小。還分別產(chǎn)生了具有均勻和Zipfian分布的二維和三維的合成數(shù)據(jù)集。在均勻數(shù)據(jù)集中,每個(gè)維度中的對象坐標(biāo)和范圍遵循在[0,1]范圍內(nèi)的均勻分布。在Zipfian數(shù)據(jù)集中,每個(gè)維度中的對象坐標(biāo)和范圍遵循[0,1]范圍內(nèi)的Zipfian分布。數(shù)據(jù)集基數(shù)從25,000變化至10,000,000,并且Zipfian數(shù)據(jù)集的偏度(skewness)參數(shù)由θd表示,從0.2變化至0.8。此外,為了評估對象的長寬比分布的影響,生成Zipfian數(shù)據(jù)集,其中對象的長寬比也遵循Zipfian分布并且偏度參數(shù)θa從0.2變化至0.8。對于窗口查詢性能的研究,生成選擇性從0.01%變化至10%的的窗口查詢。測試Z-曲線和希爾伯特曲線作為SSI中使用的空間填充曲線。為了約束索引構(gòu)造和SSI鍵計(jì)算時(shí)間,在尺寸分區(qū)階段,設(shè)置分區(qū)的最大數(shù)目nmax為4,尺寸分布估計(jì)|S1|的樣本集基數(shù)設(shè)置為min{|O|,50log2|O|};在累積映射階段,為構(gòu)造累積映射函數(shù),將塊的數(shù)目設(shè)置為min{|O|,51og2|O|},樣本集基數(shù)|S2|設(shè)置為min{|O|,25log2|O|};在成本模型中,設(shè)置典型的窗口查詢大小為1。表3總結(jié)了實(shí)驗(yàn)中使用的參數(shù),其中默認(rèn)值以粗體表示。表3實(shí)驗(yàn)中使用的數(shù)據(jù)集和參數(shù)SSI的組成的影響此處,三個(gè)SSI組成的影響表現(xiàn)在查詢處理性能:成本模型、累積映射以及MapRange算法。成本模型的影響1)典型的窗口大小。在分區(qū)配置選擇時(shí),典型的窗口查詢大小在成本模型中使用。在本組實(shí)驗(yàn)中,驗(yàn)證了的特定值的選擇對配置選擇的結(jié)果影響不大。的值從變化到并且觀察由成本模型選擇的分區(qū)配置。對不同的數(shù)據(jù)集重復(fù)該實(shí)驗(yàn),發(fā)現(xiàn)每個(gè)數(shù)據(jù)集所選擇的分區(qū)配置幾乎總是相同的。這是因?yàn)椋m然當(dāng)改變時(shí),單個(gè)分區(qū)配置的估計(jì)成本會(huì)變化,但是不同的分區(qū)配置的比較成本保持不變,因此選擇結(jié)果不會(huì)改變。對于選擇結(jié)果有變的情況,用被選的不同配置設(shè)置SSI并且測量它們的查詢處理性能。表4示出了分頁數(shù)量訪問的相對標(biāo)準(zhǔn)偏差和二維數(shù)據(jù)集不同配置的SSI的響應(yīng)時(shí)間(三維數(shù)據(jù)集得到的結(jié)果類似,因此略去)。表4改變典型窗口尺寸時(shí)的相對標(biāo)準(zhǔn)偏差可以看出,因所選擇的配置不同而導(dǎo)致的SSI性能差異較小。頁面的訪問次數(shù)僅發(fā)生小于1.1%的變化,而響應(yīng)時(shí)間僅發(fā)生小于3%的變化。因此,即使是在的具體值的選擇可能會(huì)導(dǎo)致非最優(yōu)的分區(qū)配置的極少數(shù)情況下,其對SSI的性能的影響也非常小。2)成本模型的準(zhǔn)確性接下來,對具有不同參數(shù)設(shè)置的不同數(shù)據(jù)集的評估本成本模型的準(zhǔn)確性。記錄發(fā)生的實(shí)際分頁存取次數(shù)(由“實(shí)際”表示),然后將它們與由成本模型所估計(jì)的分頁存取次數(shù)(由“估計(jì)”表示)相比較。如圖22所示,觀察到的分頁存取的次數(shù)與本成本模型所估計(jì)的相應(yīng)次數(shù)非常近似。二維數(shù)據(jù)集上的相對誤差為30%以內(nèi)。尤其對于均勻的數(shù)據(jù)集,誤差是最小的,而對于Zipfian和真實(shí)數(shù)據(jù)集,誤差稍大。這是預(yù)想到的,因?yàn)楸境杀灸P突诰鶆虻臄?shù)據(jù)分布。對于非均勻的數(shù)據(jù)集,累積映射可以有助于獲得大致均勻的分布,但畢竟不是嚴(yán)格的均勻分布。因此,成本模型的精度稍微降低。然而,正如以下實(shí)驗(yàn)將顯示的,所達(dá)到的成本模型精度足以產(chǎn)生顯著優(yōu)于其它空間索引的索引結(jié)構(gòu)。對三維數(shù)據(jù)集的實(shí)驗(yàn)顯示出類似的模式,因此略去。累積映射的影響評價(jià)具有累積映射和不具有累積映射的SSI的查詢處理性能,以此支持使用累積映射的正確性。如圖23所示,大多數(shù)情況下具有累積映射的SSI在分頁存取次數(shù)和響應(yīng)時(shí)間兩個(gè)方面都優(yōu)于不具有累積映射的SSI。對于具有Zipfian分布和較大基數(shù)的數(shù)據(jù)集,累積映射的效果是最明顯的(對具有400,000個(gè)對象的Zipfian數(shù)據(jù),響應(yīng)時(shí)間有多達(dá)60%的改進(jìn),可參見圖23(b))。這是因?yàn)榛谟成涞乃饕谄容^高的數(shù)據(jù)上表現(xiàn)并不理想,但對于累積映射,會(huì)實(shí)現(xiàn)高效的基于映射的索引。真實(shí)數(shù)據(jù)集上也有相當(dāng)?shù)母纳?當(dāng)查詢選擇性為10%時(shí),響應(yīng)時(shí)間上有37%的改善,可比照圖23(c)),由于實(shí)際數(shù)據(jù)通常是偏斜分布的。對于均勻的數(shù)據(jù)集,累積映射的影響最小。具有累積映射的SSI略慢,因?yàn)樗枰翱诓樵兩系睦鄯e映射(計(jì)算方程(3)),但幾乎觀察不到不同(比照圖23(a)和23(d))。MapRange算法的影響為了評估不同MapRange算法的性能,將查詢選擇性從0.01%改變至10%。測量SSI中的5個(gè)MapRange算法處理窗口查詢的響應(yīng)時(shí)間和分頁存取次數(shù),5個(gè)算法即,ScanMapRange,EdgeMapRange,RoughMapRange,GetNextH和GetNextZ。在結(jié)果中,使用“S”,“E”,“R”,“H”和“Z”分別表示這五個(gè)算法。此處顯示了窗口查詢映射以及B+樹搜索的時(shí)間,分別由“映射”和“查詢”表示。此處,GetNextH是改編自希爾伯特曲線的calculatenextmatch算法[Lawder和King,2001年]的一種MapRange算法,GetNextZ[Ramsak等,2000年]是用于Z曲線(參見空間填充曲線)的一種現(xiàn)有的MapRange算法。更具體地,Lawder和King的算法進(jìn)行了如下的調(diào)整,以便其可以在不訪問B+樹索引因而不訪問任何磁盤頁面的情況下映射窗口查詢。令q為窗口查詢,Z為整個(gè)數(shù)據(jù)空間。使用Z\q表示Z中未被q覆蓋的區(qū)域。映射開始于將0送到calculatenextmatch算法來尋找q內(nèi)的第一個(gè)希爾伯特值,由h0.表示。然后,把Z\q作為窗口查詢,并將h0送入calculatenextmatch來尋找Z\q內(nèi)大于h0.的第一個(gè)希爾伯特值,由h1表示。該值h1也是存在的下一個(gè)希爾伯特值?,F(xiàn)在有被q覆蓋的希爾伯特值區(qū)間[h0,h1-1]。然后將h1送入calculatenextmatch,并重復(fù)上述步驟,以通過q確定下一個(gè)calculatenextmatch。這個(gè)過程將繼續(xù)進(jìn)行,直到calculatenextmatch到達(dá)曲線的末端,這將給出由q封閉的所有希爾伯特值區(qū)間。以上配置的算法是GetNextH。要注意,重點(diǎn)研究不需要訪問數(shù)據(jù)頁的MapRange算法。因此,不考慮映射期間訪問數(shù)據(jù)分頁的現(xiàn)有算法。1)首先,將希爾伯特曲線上EdgeMapRange與ScanMapRange和GetNextH相比較。在這組實(shí)驗(yàn)中,只報(bào)告響應(yīng)時(shí)間,因?yàn)檫@三種方法具有相同的分頁存取次數(shù),由于它們產(chǎn)生用于B+樹搜索的鍵范圍的過程不同,但生成相同的鍵范圍。對于二維數(shù)據(jù)(圖24(a)至24(c)),兩種MapRange算法顯示出非常相似的表現(xiàn),當(dāng)查詢選擇性增加時(shí),EdgeMapRange逐漸顯示出其優(yōu)勢。對于三維數(shù)據(jù)(圖24(d)至24(f)),EdgeMapRange平均優(yōu)于ScanMapRange2倍(請注意,“查詢”的時(shí)間很短,在這些圖中幾乎無法辨認(rèn)到)。這些觀察結(jié)果可作如下解釋。當(dāng)數(shù)據(jù)的維數(shù)和查詢選擇性都很低時(shí),窗口查詢是非常小的。因此,所有三種算法只計(jì)算若干單元的曲線值。查詢處理的主要成本是MapRange之后的B+樹搜索,這對于三種算法的任何一個(gè)都是相同的。當(dāng)窗口查詢變大時(shí),所計(jì)算的曲線值的數(shù)量增加,并且該成本成為查詢處理的主導(dǎo)因素。而EdgeMapRange計(jì)算的曲線值較少。于是,EdgeMapRange的表現(xiàn)逐漸超過了ScanMapRange。GetNextH也計(jì)算的曲線值雖然也較少,但它每個(gè)計(jì)算都花費(fèi)的時(shí)間更多。因此,EdgeMapRange也優(yōu)于GetNextH。當(dāng)數(shù)據(jù)維數(shù)增長時(shí),EdgeMapRange和GetNextH的曲線值計(jì)算次數(shù)較少遠(yuǎn)慢于ScanMapRange的曲線值計(jì)算增長。結(jié)果就是,對于三維數(shù)據(jù),EdgeMapRange和GetNextH都顯著優(yōu)于ScanMapRange。同時(shí),GetNextH比EdgeMapRange計(jì)算的曲線值更少,這彌補(bǔ)了它每次計(jì)算相對較高的成本。因此,GetNextH和EdgeMapRange具有類似的表現(xiàn)。2)接下來,用RoughMapRange對比ScanMapRange和GetNextZ。報(bào)告響應(yīng)時(shí)間和分頁存取次數(shù)來評估通過RoughMapRange在響應(yīng)時(shí)間上所實(shí)現(xiàn)的性能增益,以及分頁存取額外開銷的量。圖25示出了響應(yīng)時(shí)間。對于二維數(shù)據(jù),當(dāng)查詢選擇性小于1%時(shí),三種方法的響應(yīng)時(shí)間同樣小。當(dāng)查詢選擇性變大時(shí),ScanMapRange的響應(yīng)時(shí)間增加得最快而RoughMapRange的響應(yīng)時(shí)間增加得最慢。GetNextZ的響應(yīng)時(shí)間在兩者之間。對于三維數(shù)據(jù),RoughMapRange表現(xiàn)出更清晰的優(yōu)勢。它優(yōu)于ScanMapRange一個(gè)量級(jí)并且優(yōu)于GetNextZ3倍以上。這是因?yàn)镾canMapRange過多地調(diào)用三維數(shù)據(jù)的C()函數(shù),而RoughMapRange根本不調(diào)用C()函數(shù)。GetNextZ不直接調(diào)用C()函數(shù),但它需要一些類似于C()函數(shù)的計(jì)算。圖26示出了分頁存取性能。RoughMapRange具有的分頁存取次數(shù)稍大,因?yàn)樗艑捔松涉I范圍的過程。然而,可以看出,RoughMapRange具有少得多的整體查詢響應(yīng)時(shí)間,這是因?yàn)樗牡陀?jì)算成本遠(yuǎn)遠(yuǎn)超過較小的額外分頁存取次數(shù)所產(chǎn)生的開銷。GetNextZ像ScanMapRange一樣生成相同的索引鍵范圍,因此這兩種算法的分頁存取次數(shù)是相同的。SSI作為獨(dú)立的實(shí)施方案時(shí)的性能此處,評估各種索引方法的性能作為獨(dú)立的實(shí)施方案。實(shí)驗(yàn)考慮10種方法:利用Z曲線的SSI(由“SSI-Z”表示),利用希爾伯特曲線的SSI(由“SSI-H”表示),Bdual樹(由“B-dual”表示),順序掃描(由“Scan”表示),R*樹(由“R*tree”表示),利用階數(shù)為2至5的空間填充曲線的Dual-變換(分別由“DT-2”到“DT-5”表示)和尺寸分區(qū)空間連接(由“SSSJ”表示)。對二維數(shù)據(jù)集的實(shí)驗(yàn)圖27示出了改變數(shù)據(jù)集基數(shù)的二維均勻數(shù)據(jù)的查詢性能。SSSJ、B-dual和其它方法的反應(yīng)時(shí)間分別在圖27(a)、(b)和(c)這三幅圖中表示,而不是在同一幅圖中,因?yàn)樗鼈兯诘姆秶浅2煌倪@些圖中可以看出,SSSJ表現(xiàn)最差。對于只有25,000個(gè)對象的數(shù)據(jù)集,它的響應(yīng)時(shí)間為幾十毫秒??紤]到在實(shí)際系統(tǒng)中,通常有幾萬用戶同時(shí)進(jìn)行查詢,這樣的響應(yīng)時(shí)間太慢,以致于不能提供令人滿意的用戶體驗(yàn)。B-dual、Scan、DT-3和DT-5稍快一些(DT-2和DT-4的響應(yīng)時(shí)間在DT-3和DT-5之間,因此被省略)。SSI-Z和SSI-H顯著地優(yōu)于上述所有方法。對于1百萬個(gè)對象的數(shù)據(jù)集,它們的響應(yīng)時(shí)間大約為1毫秒。R*樹最接近SSI方法。對于1百萬個(gè)對象的數(shù)據(jù)集,它的響應(yīng)時(shí)間大約為10毫秒。這些方法的相應(yīng)分頁存取次數(shù)分別在圖27(d)、(e)和(f)中示出。雖然分頁存取的性能差異的規(guī)模與響應(yīng)時(shí)間的性能差異的規(guī)模有所不同,但SSI方法也在分頁存取中表現(xiàn)出良好的性能。R*樹顯示的分頁存取次數(shù)最小,而SSI方法的分頁存取分頁存取次數(shù)與R*樹的分頁存取次數(shù)非常接近。該索引建立時(shí)間在圖28中示出,其中任何索引都沒有使用批量加載。正如預(yù)期的,具有查詢處理時(shí)間高的方法具有的索引設(shè)置時(shí)間較低。具體來說,掃描法根本不需要任何設(shè)置時(shí)間,SSSJ,B-dual和DT方法都可以在約80秒內(nèi)索引1百萬個(gè)對象。SSI-Z和SSI-H稍微慢一些,用90和144秒建立對1百萬個(gè)對象的索引;R*樹是最慢的,其需要229秒來做同樣的事。考慮到查詢處理時(shí)間中高的性能增益,以及很長一段時(shí)間內(nèi)僅需進(jìn)行一次索引設(shè)置,故而SSI方法略高的設(shè)置成本是值得的。由于重點(diǎn)要獲得低查詢響應(yīng)時(shí)間,因此在以下的實(shí)驗(yàn)中,略去了分頁存取和索引設(shè)置時(shí)間結(jié)果,以保持本文的簡潔,因?yàn)樗鼈兙哂信c上述實(shí)驗(yàn)相似的表現(xiàn)。另外,由于其它方法是高度缺乏競爭力的,此處將只顯示以下組實(shí)驗(yàn)的R*樹、SSI-H和SSI-Z的結(jié)果。圖29表示其它的二維數(shù)據(jù)集和參數(shù)設(shè)置的查詢處理時(shí)間。具體而言,在圖29(a)中,緩沖頁的數(shù)量從0變化至1024。在該組實(shí)驗(yàn)中,R*樹、SSI-Z和SSI-H的索引頁的數(shù)目分別是682、869和838,并且每種方法的緩存的索引的百分比從0%變化至100%。在圖29中,改變均勻數(shù)據(jù)集的窗口查詢選擇性。在圖29(c)至(f)中,改變基數(shù)、對象大小分布的偏度、對象長寬比分布的偏度和Zipfian數(shù)據(jù)集的窗口查詢選擇性。在圖29(g)至(i)中,改變真實(shí)數(shù)據(jù)集的窗口查詢選擇性。從這些圖中可以看出SSI方法在大多數(shù)情況下優(yōu)于R*樹。只有當(dāng)查詢選擇性非常小(即,小于0.1%)或?qū)ο蟪叽绶植挤浅F睍r(shí),R*樹才會(huì)表現(xiàn)出較小的響應(yīng)時(shí)間(參見圖29(b)、(d)和(e))。同時(shí),當(dāng)改變實(shí)驗(yàn)參數(shù)值時(shí),SSI方法表現(xiàn)出相對穩(wěn)定的性能。這顯示出SSI方法的魯棒性。對三維數(shù)據(jù)集的實(shí)驗(yàn)圖30示出了對三維數(shù)據(jù)集的查詢處理時(shí)間。在各種方法中,SSSJ和B-dual的表現(xiàn)與它們在對二維數(shù)據(jù)集的實(shí)驗(yàn)中同樣不佳,并因此被省略。DT-5在幾小時(shí)后也無法完成。DT-5之所以如此慢,是因?yàn)樗?維數(shù)據(jù)空間中階數(shù)為5的空間填充曲線的曲線值映射。因此,也不包含在結(jié)果中。圖30(a)示出了改變數(shù)據(jù)集基數(shù)的結(jié)果。像上面的實(shí)驗(yàn)一樣,可以看出SSI-Z和R*樹具有的響應(yīng)時(shí)間最小,并且它們都顯著優(yōu)于其它方法。DT-2是接近的而DT-4是最差的。DT-3的響應(yīng)時(shí)間在DT-2和DT-4之間,因此被省略。可以觀察到,SSI-H表現(xiàn)出的性能競爭力較差。這是因?yàn)槿S空間中希爾伯特曲線上的曲線值映射的復(fù)雜度相對較高,從而主導(dǎo)了查詢處理成本。還可以看出,SSI-H的響應(yīng)時(shí)間在數(shù)據(jù)集基數(shù)增加時(shí)是相當(dāng)穩(wěn)定的。因此,隨著數(shù)據(jù)集基數(shù)增加,它變得更接近其它方法的響應(yīng)時(shí)間。在圖30(b)中,將緩沖頁面的數(shù)量從0改變到1200。由于在該圖中R*樹、SSI-Z和SSI-H的索引頁數(shù)目分別是977、1131和1128,每個(gè)方法的緩沖的索引的百分比在0%至100%范圍內(nèi)??梢杂^察到,由于使用了更多個(gè)緩沖頁,所有方法的響應(yīng)時(shí)間均降低。SSI-Z和R*樹總是表現(xiàn)出相似的性能,而當(dāng)使用緩沖頁較少時(shí),SSI-H也表現(xiàn)出類似于R*樹的性能,其中I/O時(shí)間變成在查詢處理成本中的主導(dǎo)。從圖30(c)至(e),改變基數(shù),對象大小分布的偏度和Zipfian數(shù)據(jù)集上對象長寬比分布的偏度。SSI-Z、SSI-H和R*樹的相對表現(xiàn)類似于均勻數(shù)據(jù)集上的相對表現(xiàn)。在圖30(f)中,改變真實(shí)數(shù)據(jù)的查詢選擇性。R*樹和SSI-Z再次表現(xiàn)出相近的性能,并且當(dāng)查詢選擇性變大時(shí)(即大于1%),SSI-Z表現(xiàn)得更好。這是因?yàn)?,?dāng)查詢選擇性增加時(shí),R*樹的基于樹的修剪(pruning)迅速減少?;谝陨?,實(shí)驗(yàn)結(jié)果可以總結(jié)如下?!猄SI方法在響應(yīng)時(shí)間和網(wǎng)頁訪問方面在各種數(shù)據(jù)集和實(shí)驗(yàn)環(huán)境中均優(yōu)于其它基于映射的索引方法多個(gè)數(shù)量級(jí)?!?dāng)與R*樹相比時(shí),SSI方法表現(xiàn)出有競爭力的性能。對于二維數(shù)據(jù),在大多數(shù)情況下(即,當(dāng)數(shù)據(jù)集基數(shù)大于50,000或查詢選擇性大于0.1%時(shí)),它們優(yōu)于R*樹。對于三維數(shù)據(jù),在大多數(shù)情況下SSI-Z具有與R*樹非常相似的性能,并且在數(shù)據(jù)集基數(shù)較大時(shí)優(yōu)于R*樹;SSI-H表現(xiàn)出競爭力較差的性能,但仍接近于其中數(shù)據(jù)集基數(shù)或窗口查詢選擇性較大的SSI-Z。SSI集成在DBMS中時(shí)的性能為了評估SSI在完整DBMS上時(shí)的性能,在兩個(gè)DBMS上實(shí)現(xiàn)SSI。一個(gè)是來自科研界的PostgreSQL,另一個(gè)是來自商用的DBMS。在每個(gè)DBMS上,對三個(gè)索引方法的性能進(jìn)行了評價(jià):——SSI:如在實(shí)施例中所解釋的SSI的DBMS實(shí)現(xiàn)是在完整的DBMS中實(shí)現(xiàn)的,不修改DBMS內(nèi)核。——標(biāo)準(zhǔn):DBMS的標(biāo)準(zhǔn)數(shù)據(jù)索引組件,其中對象存儲(chǔ)在如在完整DBMS中實(shí)現(xiàn)、不修改DBMS內(nèi)核的實(shí)施例中所描述的數(shù)據(jù)庫表中。但取代在SSI鍵上創(chuàng)建B+樹索引的是,這種方法在每個(gè)約束列對象MBR上創(chuàng)建一個(gè)B+樹索引(即,數(shù)據(jù)庫表的每個(gè)MBR約束列一個(gè)B+樹)。當(dāng)接到窗口查詢時(shí)(以SQL查詢的形式,如在完整DBMS中實(shí)現(xiàn)、不修改DBMS內(nèi)核的實(shí)施例中所實(shí)現(xiàn)的,但沒有SSI鍵的謂詞),DMBS自動(dòng)選擇合適的B+樹,以評估該查詢。——R-樹。DBMS的內(nèi)置空間組件(具體地,指R-樹)。PostgreSQL如圖31所示,當(dāng)在PostgreSQL上實(shí)現(xiàn)時(shí),SSI始終優(yōu)于R-樹和PostgreSQL的標(biāo)準(zhǔn)數(shù)據(jù)索引組件。與PostgreSQL的標(biāo)準(zhǔn)數(shù)據(jù)索引組件相比,SSI平均快兩倍多(請注意圖中坐標(biāo)軸采用的是對數(shù)標(biāo)度)。SSI的響應(yīng)時(shí)間的增長遠(yuǎn)慢于數(shù)據(jù)集基數(shù)的增加。可以觀察到,PostgreSQL中的R-樹表現(xiàn)出的性能比標(biāo)準(zhǔn)的數(shù)據(jù)索引組件更差。當(dāng)研究R樹用于索引的情況下PostgreSQL的查詢處理過程時(shí),可以發(fā)現(xiàn),查詢優(yōu)化器更偏向于使用順序掃描來處理窗口的查詢,而不是使用R-樹索引。一個(gè)可能的原因是,PostgreSQL的查詢優(yōu)化器還沒有得到關(guān)于使用R-tree索引的成本的精確估計(jì),因此,它在大多數(shù)情況下是保守的,故使用順序掃描來代替。發(fā)現(xiàn)這其實(shí)是PostgreSQL社群中許多用戶所觀察到的普遍現(xiàn)象。DBMS這里,遵照官方文檔的說明在商用DBMS中創(chuàng)建R-樹被以索引空間對象。如圖32所示,當(dāng)數(shù)據(jù)集基數(shù)和查詢選擇性改變時(shí),SSI再次優(yōu)于R-樹索引以及商用DBMS中使用的標(biāo)準(zhǔn)索引??梢杂^察到,數(shù)據(jù)偏度越大,SSI的優(yōu)點(diǎn)越顯著(達(dá)到了數(shù)量級(jí)的程度,如圖32(c)和(d)所示)。這是由于采用了累積映射來產(chǎn)生大致均勻分布,從而減少了查詢處理的過濾階段的誤報(bào)。在以下的權(quán)利要求和本發(fā)明的前述描述中,除了由于語言表達(dá)或必要推斷而產(chǎn)生的上下文需要,否則單詞“包括”或如“包含”或“含有”的變體用于表示開放性包含的意思,即說明所述特征的存在,但不排除本發(fā)明的各種實(shí)施例中存在的或附加的進(jìn)一步的特征。當(dāng)前第1頁1 2 3