專利名稱::基于最大間隙空間映射的高維數據索引方法
技術領域:
:本發(fā)明屬于數據庫領域,特別涉及一種數據索引方法,具體涉及一種基于最大間隙空間映射的高維數據索引方法。
背景技術:
:隨著在各應用領域中多媒體數據源的不斷增長,在大型數據庫中快速處理基于內容的相似性査找變得越來越重要。為了加速高維空間中相似性査找,常用的方法是設計一個高維索引來支持這種類型的査詢。高維索引方法可以分為兩大類基于向量空間的索引結構和基于度量空間的索引結構。R-tree及其變種是前者的代表,它們是基于向量空間中的相對位置來管理數據。其它類型的索引結構,包括VP-tree,MVP-tree,M-tree,MB+-tree,Slim-tree,M+-tree,是基于度量空間的索引技術,它們是基于數據對象間的相對距離來管理數據。VP-tree是第一種支持相似性查詢的層次索引結構,它使用數據對象到代表點之間的相對距離和三角不等式來進行數據空間的過濾。因為VP-tree索引結構較小的扇出(因而索引的高度很高)而引起了大量的距離計算,從而大大影響了它的査詢性能。應該指出的是,在度量空間中距離計算是非常復雜且非常耗時的。為了克服上述問題,MVP-tree索引結構使用多個代表點,從而大大增加了索引的扇出,降低了索引的高度。VP-tree和MVP-tree都是靜態(tài)的基于度量空間的索引結構,它們采用一個自上而下的方法來構建。這就意味著這些索引無法支持數據的更新和刪除。M-tree是基于度量空間的動態(tài)索引結構的代表,它是一種頁面結構的平衡樹,采用自下而上的索引構造方法,具有節(jié)點提升和分裂機制。因此,它適合作為一種磁盤索引結構,并能處理數據的更新而無需重構整個索引。M-tree是第一個認識到了距離計算的高代價,因此它將大多數距離已經預計算好并存儲在索引當中。這樣,就可以避免很多距離的動態(tài)計算。但是,M-tree的兄弟節(jié)點索引空間的重疊是一個非常值得注意的問題,因為它對查詢處理的性能有著非常大的影響。為此,基于M-tree索引結構的基本思想,幾種改進的索引技術被提出,例如MB+-tree,Slim-tree,M+-tree。Slim-tree通過一個后處理過程來減少子空間的交疊和索引節(jié)點的數目。MB、tree采用一個不同的方法,即采用B+-tree作為一個輔助索引結構。盡管MB、tree的空間劃分是不相交的,但由于MB+-tree不是采用一個單一的多維索引來處理高維空間中的査詢問題,這樣查詢處理的效率將非常低下。
發(fā)明內容為了解決現有技術的不足之處,本發(fā)明提供一種基于最大間隙空間映射的高維數據索引方法,改進了高維索引的性能,在查詢處理的過程中如何盡量減少對假活動子空間的訪問。本發(fā)明采用的技術方案是設計并實現了一種新的索引結構MS-tree。在MS-tree索引結構中有兩種類型的節(jié)點對象路由對象(routingobjects)和葉子對象(leafobjects)。每一個葉子節(jié)點入口項包含三部分數據對象Oj的特征值,對象標識符0id(0j),以及對象Oj到它的父親P(Oj)的距離d(Oj,P(Oj))。中間節(jié)點的入口項信息包含兩部分對象在原始空間的信息和該對象在投影空間的信息,其中前者包括下面幾部分中間節(jié)點對象的特征值及其覆蓋半徑、距離其父節(jié)點的距離,指向孩子節(jié)點的指針。而后者則包含一個代表投影空間的隊列、投影空間的覆蓋半徑以及該對象在投影空間中距離其父節(jié)點對象的投影距離。首先定義假活動子空間,在基于高維索引的相似性査詢處理過程中,如果一個子空間可能包含查詢結果時(即該子空間與查詢空間相交),則該子空間被稱為一個活動子空間。反之,如果一個子空間不可.能包含查詢結果時(即該子空間與查詢空間不相交),則該子空間被稱為一個非活動子空間。在相似性查詢處理過程中,如果一個子空間s可能包含查詢結果,但該子空間的所有孩子空間并不包含任何查詢結果,則稱該子空間s為假活動子空間。本發(fā)明的步驟如下步驟1進行最大間隙空間映射將一個高維數據的維分成兩部分一部分是由對假活動空間有較大過濾能力的那些維構成,這些維具有比較大的維間隙值;另一部分是由對假活動空間過濾能力比較弱的那些維構成,這些維具有較小的維間隙值。為了過濾假活動空間并提高査詢精煉的效率,在映射空間中只需要保持具有較大維間隙值的那些維。計算給定數據空間的每個維間隙值,選擇維間隙值較大的前k個維,其中k小于給定數據的維,將給定空間的實際數據點投影到k個維空間;給定數據空間N,N的中心點O(xl,x2,xn),N的超球體半徑r,N的MBR([xll,xl2〗,[x21,x22],…,[xnl,xn2]),其中MBR(MinimalBoundRectangle)方體最小包絡,k維最大間隙空間映射算法Mapping(N)描述如下(1)計算N的MBR的最大邊界值和最小邊界值(L3,L4);1^3=(a產max(xli,xl2},…,an=max{xn1,xn2})L4=(a產min(xli,xl2},…,an=min{xn1,xn2})(2)計算球體的最大邊界值和最小邊界值(LpL2);<formula>formulaseeoriginaldocumentpage7</formula>(3)計算每個維上的維間隙值Di,D2,…Dn:<formula>formulaseeoriginaldocumentpage7</formula>(4)根據最大間隙原則,選擇具有較大維間隙值的維來構造映射后的低維空間。(a)從(Di,D2,…DJ中選擇前k個最大值,設為Ddl,Dd2,...Ddk(b)將數據空間N中的實際數據點投影到維空間((11,(12,...4)上步驟2構造MS-treeMS-tree是一個動態(tài)索引結構,采用一個自下而上的構造途徑。當一個新對象被插入時,MS-tree首先球到適當的插入節(jié)點N。如果該節(jié)點沒有滿,則該對象被直接插入到該節(jié)點中;如果該節(jié)點己滿,則該節(jié)點將被分裂。然后檢查插入對象是否在結點N的MBR中。如果不在,則更新N的MBR并將原始空間映射到一個低維空間,從N到根節(jié)點,遞歸地執(zhí)行這一步直到不需要進行更新為止。其中,帶插入的數據點On,索引的入口項entry(CU。MS-tree的構造過程Buildtree(entry(Cg,N)描述如下(1)從空間N中找到滿足下列空間約束條件的節(jié)點N':<formula>formulaseeoriginaldocumentpage7</formula>(2)如果N'的存儲空間沒有滿(3)則將entry(On)插入到N'中(4)否則將N'與entry(On)—起進行二分分裂,將該空間分裂成大小相近的兩個小空間;(5)如果On不滿足下列空間關系<formula>formulaseeoriginaldocumentpage7</formula>(6)則調整N的MBRN.MBR.xh二min(On.xl,N.MBR.xlJN.MBR.xl2=max{On.xl,N.MBR.xl2}N.MBR.x2i=min{On.x2,N.MBR.x21}N.MBR.x22=max{On.x2,N.MBR.x22}N.MBR.xrn=min{On.xn,N.MBR.xim}N.MBR.xn2=max{On.xn,N.MBR.xn2}(7)調用Mapping(N),進行最大間隙空間映射;步驟3進行相似性査找本發(fā)明可以使用兩種類型的相似性査找r-range査找和KNN査找。由于KNN査找與范圍查找使用相同的精煉機制,因此這里僅僅討論了MS-tree的范圍査詢,以便測試空間映射方法及索引結構的性能。對于一個給定的范圍查詢(q,r),q為查詢對象,r為查詢半徑。該查詢的結果為所有到査詢對象q的距離小于r的對象。該査詢的執(zhí)行過程如下從MS-tree的根節(jié)點開始,遞歸地執(zhí)行查詢處理過程直到葉子節(jié)點為止,并保留所有的匹配對象。在查詢處理過程中,對于一個搜索空間,如果它是一個假活動子空間,則與之對應的子樹為假活動子樹。在非葉子節(jié)點層,范圍查詢需要執(zhí)行三級過濾(查詢精煉)。第一,在原始的高維空間中,根據節(jié)點中的入口項到其父親節(jié)點路由對象的距離,利用三角不等式進行過濾;第二,對第一步不能被過濾的子樹,在映射空間中,進一步精煉結果,通過三角不等式過濾掉那些假活動子樹;最后,計算査詢對象到未過濾掉的節(jié)點入口項之間的距離,并使用三角不等式進行進一步的過濾。對于葉子節(jié)點,執(zhí)行一個兩步過濾操作,其過濾原理與非葉子節(jié)點的前兩步過濾原理相同,第一步在原始空間中過濾,第二步在映射空間中過濾。下面給出范圍查詢算法RangeSearch(N:node,Q,r)的描述。(01)從MS-tree樹中找到N的父節(jié)點Op(02)如果N不是一個葉子節(jié)點(03)則如果ld(Op,Q)-d(Or,Op)|《r+r(Or)成立(04)則計算d(Or,Q)(05)如果d(Or,Q)〈r+r(Or)(06)則調用RangeSearch(Ptr,Q,r);(07)否則(N不是一個葉子節(jié)點)(08)對于N中的所有節(jié)點Oj(09)如果ld(Op,Q)-d(Or,Op)|《r(10)則計算d(Oj,Q)(11)如果d(0j,Q)《r,則Oj是一個査詢結果查詢算法的結果將得到滿足條件的高維數據點,本發(fā)明所提出的方法可以用在多媒體圖像檢索中。例如,給定若干幅多媒體圖像。這些多媒體圖像可以通過圖像處理工具得到高維空間的向量點,每一個圖像對應一個點。這些高維點可以通過本發(fā)明提出的索引結構存儲起來。對于一個給定的査詢圖像,也可以通過圖像處理工具得到一個對應的高維點,以該點作為査詢,使用提出的査詢算法可以得到數據庫中滿足條件的若干個高維點。這些高維點實際上就對應到相應的數據庫中的圖像,將這些檢索到的圖像返回給查詢用戶。本發(fā)明的有益效果有70%以上的索引訪問都是對假活動子空間的訪問。這也就是說,由于假活動子空間的大量存在,一個査詢不得不遍歷許多假活動子空間,而它們實際上并不包含任何査詢結果。這就引起了不必要的I/O開銷和距離計算。而且從表l可以看出,數據維數越高,假活動子空間的訪問頻率就越大。因此,減少對假活動子空間的訪問次數對改善索引相似性査詢的性能至關重要。這是我們要重點解決的問題之所在。表lM-tree索引中假活動子空間的訪問情況維數子空間訪問次數假活動子空間訪問次數<table>tableseeoriginaldocumentpage9</column></row><table>(1)映射空間維數對性能的影響這里主要通過實驗來測試映射空間的維數對性能的影響,并發(fā)現最好的映射空間維數,即究竟應該保留多少維是比較好的。由于提出MS-tree的主要目的是通過減少假活動子樹的訪問來提高査詢性能,因此我們僅僅考慮了I/O開銷和在映射空間維數變化情況下訪問假活動子樹的開銷,因為I/0次數反峽了假活動子樹訪問的數量。也就是說,1/0次數越多,對假活動子樹的訪問也就越多。(2)I/O代價這里對MS-tree的范圍查找算法的I/O開銷與M-tree和Slim-tree進行了比較。我們的主要目標是要考察精煉過程對索引的有效性。在這個實驗中,MS-tree索引的映射空間維數被設定為3,査找半徑在0.05到0.15之間變化。圖9和10分別給出了I/O開銷和假活動子樹訪問的測試結果。從這些圖中可以看到,與M-tree和Slim-tree相比,MS-tree減少了I/O和假活動子樹的訪問,因為它的后處理過程減少了索引節(jié)點的總數,這樣訪問索引節(jié)點的機會就相應減少。(3)CPU代價這里要對MS-tree,Slim-tree和M-tree中査詢精煉過程對CPU代價的影響進行比較分析。我們設置映射空間的維數為3,并且范圍査詢的査找半徑的變化為0.05-0.25。圖ll和12給出了響應時間和距離計算的測試結果。可以清楚地注意到,盡管Slim-tree比M-tree具有較少的I/0開銷,Slim-tree保留了與M-tree具有相同的距離計算次數,因為經過后處理后每個節(jié)點包含了更多的對象,需要更多的距離計算。因此,當執(zhí)行熱范圍查詢時,Slim-tree無法加速査詢響應,這一點可以從圖11中反映出來。與Slim-trees相比,MS-tree更加有效地改進了M-tree的查詢性能。由于映射空間中的非葉子節(jié)點和葉子節(jié)點的巨大精煉能力,一方面,在一個節(jié)點中的入口項保持穩(wěn)定,這樣它需要較少的距離計算,因為它需要較少的I/O。另一方面,由于葉子節(jié)點中的過濾,某些葉子節(jié)點可以通過精煉過程將它們過濾掉而無需任何距離計算。因此,MS-tree具有非常好的效率。與Slim-tree和M-tree相比,降低了30%-50%的距離計算和一半的響應時間。圖l子空間示例圖;圖2假活動子空間示例圖;圖3假活動子空間的過濾示意圖;圖4空間映射圖;圖5范圍查詢的I/0開銷示意圖;圖6范圍查詢的假活動子樹訪問開銷示意圖;圖7映射空間維數對的I/O影響示意圖;圖8映射空間維數對假活動子樹訪問的影響示意圖;圖9本發(fā)明一個實施例中I/0開銷測試結果圖;圖10本發(fā)明一個實施例中假活動子樹訪問的測試結果圖;圖11本發(fā)明一個實施例中響應時間測試結果;圖12本發(fā)明一個實施例中距離計算的測試結果圖。具體實施方式結合附圖對本發(fā)明做進一步描述-圖5和6給出了查找半徑為0.1時I/O開銷和假活動子樹訪問的測試結果圖,圖7和8是查找半徑為0.15時的I/O開銷和假活動子樹訪問測試結果。實驗選用的數據集生成如下選取20000幅真實圖像,使用MPEG-7特征抽取工具將這些圖像的ColorLayout特征抽取出來構成一個高維數據集,ColorLayout的特征維數是12。實驗環(huán)境是一臺PentinumIV2.5GHz的PC機,內存為256MB。所有數據存儲在一個對象數據庫系統(tǒng)Fish中。在所有實驗中,頁面大小被設置為4096字節(jié)。從這些圖中不難看出,隨著維數增加,1/0次數和假活動子樹訪問次數開始降低,在維數等于3時降到最低點,然后逐漸開始上升。我們可以看到,對于這一數據集,將原始空間映射到一個三維空間是最佳的。另一個非常重要的一點是,對于一個給定數據集,我們可以發(fā)現從原始數據空間到映射數據空間的最佳維數,并且這個最佳維數與原始數據空間的維數相比通常是非常小的。由于在后面的實驗中使用的是相同的數據集,因此將映射空間的維數都設置為3。本發(fā)明的一個實施例,采用下面的一個包含4個數據對象的4維數據空間,該數據空間如下所示D={(1,1,1,1),(2,2,2,4),(4,4,6,7),(5,7,5,4)}假設在MS-tree中前兩個節(jié)點構成一個子空間Sl,后兩個節(jié)點構成一個子空間S2,則這兩個子空間分別為SI:0=(2,2,2,2),r=2S2:0(5,5,5,5),r=2考慮查詢Q=(4,5,5,4),查詢半徑產3。在這種情況下,査詢空間與SI和S2都相交,但只有S2中的是最終的查詢結果。但如果采用通常的辦法的話,子空間S1也必須要訪問,但最終沒有結果。這時空間S1稱為假活動子空間,這種訪問是沒有意義的,因為不但找不到査詢結果,而且對查詢性能有很大的影響。如果采用我們提出的方法的話,可以避免這種假活動子空間的訪問。實施例的過程如下(1)最大間隙空間查找(假設為兩維)整個空間N:MBR=([1,5],[1,7],[1,6],[1,7]),超球體S的0=(3,3,3,3),半徑r=5,貝JL3=(ai=max{xli,xl2},…,an=max{xn,xn2})=(ai=5,a2=7,a3=6,a4=7)L4=(ai=min{xli,xl2},",an=min{xn1,xn2})=(ai=l,a2=l,a3=l,a4=l)Li=(a產xl+r,a2=x2+r,...,an=xn+r)=(ai=8,a2=8,a3=8,a4=8)L2=(.a產xl-r,a2=x2-r,..,an=xn-r)=(ai=-2,a2=-2,a3=-2,a4;2)D產(L4.ai-L2.ai)+(L,.a廣L3.a!)=(l-(-2》+(8-5)=6D2=(L4.a2-L2.a2)+(1^.&2丄3.a2)=(l-(-2))+(8-7)=4D3=(L4.a3-L2.a3)+(I^.arU.a3)=(l-(-2》+(8-6)=5D4=(L4.a4-L2.04)+(Ll34陽L3.=(1-(-2))+(8-7)=4根據上面最大間隙維值的維是第1維和第3維。(2)空間投影對數據空間、子空間S1,S2和查詢Q在這些維上進行投影,得到下面的投影結果D'={(1,1),(2,2),(4,6),(5,5)}Sl':0=(2,2),r=V^;S2':0=(5,5),r=V^Q'=(4,5),r=3(3)査詢處理在映射空間中,Q,的中心點與S2,的中心點之間的距離為1,它小于3+V^。因此在映射空間中仍然需要查詢空間S2'。Q'的中心點與映射后的子空間S1'的中心點的距離為^,這個距離要大于兩個空間的半徑之和3+V^。這表明Q'與S1'不相交,因此在投影空間中不再需要訪問Sl'。但在原始高維空間中,Q和Sl是相交的,這樣就說明Sl是一個假活動子空間,這樣就將假活動子空間S1的訪問被排除在外了,提高了算法的效率。權利要求1、一種基于最大間隙空間映射的高維數據索引方法,其特征在于包括以下步驟步驟1進行最大間隙空間映射計算給定數據空間的每個維間隙值,選擇維間隙值較大的前k個值,將給定空間的實際數據點投影到k個維空間,其中k小于給定數據的維;步驟2構造MS-treeMS-tree首先找到適當的插入節(jié)點M,如果該節(jié)點沒有滿,則該對象被直接插入到該節(jié)點中;如果該節(jié)點已滿,則該節(jié)點將被分裂,然后檢查插入對象是否在結點M的方體最小包絡MBR中,如果不在,則更新M的MBR并將原始空間進行最大間隙空間映射,從M到根節(jié)點,遞歸地執(zhí)行這一步;步驟3進行相似性查找使用兩種類型的相似性查找r-range查找或者KNN查找。2、按照權利要求1所述的基于最大間隙空間映射的高維數據索引方法,其特征在于所述的步驟1中的進行最大空間映射,過程如下給定數據空間N,N的中心點O(xl,x2,...,xn),N的超球體半徑r,N的MBR([xl,,xl2],[x2t,x22],…,xn2]),k維最大間隙空間映射方法如下(1)計算N的MBR的最大邊界值和最小邊界值(L3,L4);L3=(a產max(xli,xl2},…,an=max{xn1,xn2})lu4=(a產min(xli,xl2},…,an=min{xn1,xn2})(2)計算球體的最大邊界值和最小邊界值(",L2);Li=(a產xl+r,a2=x2+r"..,an=xn+r)L2=(a產xl-r,a2=x2-r,...,an=xn-r)(3)計算每個維上的維間隙值DhD2,…Dn;D尸(L4.ai-L2.ai)+(Li.ai-L3.ai)D2=(L4.a2-L2.a2)+(Li.a2-L3.a2)Dn=(L4.an-L2.an)+(Li.an-L3.an)(4)根據最大間隙原則,選擇具有較大維間隙值的維來構造映射后的低維空間;(a)從Pi,D2,…DJ中選擇前k個最大值,設為Ddl,Dd2,...Ddk(b)將數據空間N中的實際數據點投影到維空間(山,d2,…4)上。3、按照權利要求1所述的基于最大間隙空間映射的高維數據索引方法,其特征在于所述的低維空間維數為3。4、按照權利要求1所述的基于最大間隙空間映射的高維數據索引方法,其特征在于所述的步驟2中的構造MS-tree的過程如下(1)從空間N中找到滿足下列空間約束條件的節(jié)點N',待插入節(jié)點OnN'.O.xl國"On.xl《N'.O.xl+rN'.O.x2-r《On.x22N'.O.x2+rN'.O.xn-r《On.xn《N'.O.xn+r(2)如果N'的存儲空間沒有滿(3)則將索引入口項entry(On)插入到N'中(4)否則將N'與entry(On)—起進行二分分裂(5)如果0不滿足下列空間關系N.MBR.xhsOn.xlSN.MBR.xl2N.MBR,x2!SOn.x2SN.MBR.x22N.MBR夠SOn.xnSN.MBR.xn2(6)則調整N的MBRN扁R.xl,=min{On.xl,N.MBR.xl1}N.MBR.xl2=max{On.xl,N.MBR.xl2}N扁R.x2!=min{On.x2,N.MBR.x2"N.MBR.x22=max{On.x2,N.MBR.x22}N雄R.xm=min{On.xn,N扁R,xn"N.MBR.xn2=max{On.xn,N.MBR.xn2}(7)調用Mapping(N),進行最大間隙空間映射;5、按照權利要求1所述的基于最大間隙空間映射的高維數據索引^"法,其特征在于所述的步驟3中的相似性查找,方法如下在非葉子節(jié)點層,第一,在原始的高維空間中,根據節(jié)點中的入口項到其父親節(jié)點路由對象的距離,利用三角不等式進行過濾,即當査詢對象到當前節(jié)點間距離與查詢對象到當前節(jié)點的父親節(jié)點路由對象距離差的絕對值要大于當前節(jié)點空間半徑與査詢半徑之和的話,則當前節(jié)點空間可以不必進行查詢,直接被過濾掉;第二,對第一步不能被過濾的子樹,在映射空間中,進一步精煉結果,通過三角不等式過濾掉那些假活動子樹;最后,計算查詢對象到未過濾掉的節(jié)點入口項之間的距離,并使用三角不等式進行進一步的過濾;對于葉子節(jié)點,執(zhí)行一個兩步過濾操作,其過濾原理與非葉子節(jié)點的前兩步過濾原理相同,第一步在原始空間中過濾,第二步在映射空間中過濾。6、按照權利要求1所述的基于最大間隙空間映射的高維數據索引方法,其特征在于所述的假活動子空間,在基于高維索引的相似性査詢處理過程中,如果一個子空間可能包含査詢結果時,即該子空間與査詢空間相交,則該子空間被稱為一個活動子空間,反之,如果一個子空間不可能包含查詢結果時,即該子空間與查詢空間不相交,則該子空間被稱為一個非活動子空間,在相似性查詢處理過程中,如果一個子空間S可能包含査詢結果,但該子空間的所有孩子空間并不包含任何查詢結果,則稱該子空間S為假活動子空間。全文摘要一種基于最大間隙空間映射的高維數據索引方法,屬于數據庫領域,包括以下步驟步驟1進行最大間隙空間映射計算給定數據空間的每個維間隙值,選擇維間隙值較大的前K值,將給定空間的實際數據點投影到K個維空間;步驟2構造MS-treeMS-tree首先找到適當的插入節(jié)點M,如果該節(jié)點沒有滿,則該對象被直接插入到該節(jié)點中;如果該節(jié)點已滿,則該節(jié)點將被分裂,然后檢查插入對象是否在結點M的MBR中,如果不在,則更新M的MBR并將原始空間映射到一個低維空間;步驟3進行相似性查找本發(fā)明的有益效果是通過減少假活動子樹的訪問來提高查詢性能,因此,減少對假活動子空間的訪問次數來改善索引相似性查詢的性能。文檔編號G06F17/30GK101266607SQ20081001132公開日2008年9月17日申請日期2008年5月9日優(yōu)先權日2008年5月9日發(fā)明者喬百友,于亞新,信俊昌,張恩德,斌王,王國仁,王波濤,趙宇海,趙相國,韓東紅申請人:東北大學