專利名稱:一種基于時空數(shù)據(jù)的快速索引方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無線通信計(jì)算機(jī)領(lǐng)域,具體涉及一種時空數(shù)據(jù)快速索引方法。
技術(shù)背景隨著現(xiàn)代通信技術(shù)的不斷發(fā)展,特別是無線通信的多樣化和傳輸速率的迅速提高,使得 它在現(xiàn)代化的生產(chǎn)生活中占有越來越重要的地位。建立一個高效的時空數(shù)據(jù)索引機(jī)制來對大 量的無線數(shù)據(jù)進(jìn)行快速査找和迅速定位成為一個非常重要的任務(wù)?,F(xiàn)在大型商用空間數(shù)據(jù)庫 系統(tǒng),如Oracle Spatial, IBM DB2 Spatial Extender和IBM Informix Spatial Data Blade,都是 采用R-樹索引技術(shù),如圖1所示,為R-樹的平面示意圖和對應(yīng)的結(jié)構(gòu)示意圖。其葉子結(jié)點(diǎn)中 存儲該結(jié)點(diǎn)對應(yīng)的空間要素的外包絡(luò)矩形和空間要素標(biāo)識。非葉子結(jié)點(diǎn)(葉子結(jié)點(diǎn)的父親、 祖先結(jié)點(diǎn))存放其子女結(jié)點(diǎn)集合的整體外包絡(luò)矩形和指向其子女結(jié)點(diǎn)的指針。從R-樹的結(jié)構(gòu) 可以看出,讓空間上靠近的空間要素?fù)碛斜M可能近的共同祖先,能提高R-樹的査找效率;但 是R-樹的這種查找是從整個索引空間開始,在一棵深度很大的豐滿的R-樹中查找,當(dāng)空間維 數(shù)較高或索引目標(biāo)很多時,空間檢索性能會因中間結(jié)點(diǎn)目錄矩形的重疊增加或重復(fù)存儲及樹 的深度增加而急劇下降;并且難以支持隨時間變化的空間數(shù)據(jù)。因此,建立一個能對空間和 時間特性進(jìn)行高效管理的時空數(shù)據(jù)索引機(jī)制成為一個非常重要的任務(wù)。一種將時間獨(dú)立出來,并保存每一時間戳的空間數(shù)據(jù)索引機(jī)制在Nascimento, M.A.和 Silva, J.R.0的文章"Towards Historical R-trees", ACM SAC98, Proceedings, p.235-240中描述 了,其結(jié)構(gòu)為兩級索引機(jī)制,分別對時空對象的時間信息和空間信息進(jìn)行索引,并采用了重 疊技術(shù),利用部分持久(partially persistent)的索引結(jié)構(gòu)。HR-樹的每個時間索引節(jié)點(diǎn)包括( 時間片開始時間,時間片結(jié)束時間,對應(yīng)時間片的R-樹的根結(jié)點(diǎn)指針}。該索引技術(shù)的基本 構(gòu)思如下假定序列表A索引更新發(fā)生的時間點(diǎn),A在tl時刻指向初始的完整的R-樹;到 時間片t2時,對象3的MBR (MBR為該目標(biāo)在k維空間中的最小包圍矩形,簡稱為數(shù)據(jù)矩 形)發(fā)生改變,用3'對發(fā)生改變的MBR進(jìn)行標(biāo)識,最后只有路徑(R1, A, 3}需要更新, 產(chǎn)生新的路徑{ R2, Al, 3'),顯然在t2時間片R-樹的根結(jié)點(diǎn)由子樹A' 、 B和C組成, 如圖2的樹形結(jié)構(gòu)示意圖所示,在HR-樹中沒有發(fā)生變化的結(jié)點(diǎn)不需要復(fù)制,只需要建立相 應(yīng)的指向關(guān)系,就可以節(jié)省可觀的存儲空間。又由于HR-樹索引是對事務(wù)時間索引,時間査 詢效率與己存儲的數(shù)據(jù)量無關(guān),但是HR-樹仍然采用的是R-樹索引,它也就繼承了上述所說 R-樹的缺點(diǎn)發(fā)明內(nèi)容因此,本發(fā)明的目的在于提出了一種基于服-樹的改進(jìn)型時空數(shù)據(jù)快速索引方法,它能在 不增加存儲空間的前提下,取得了優(yōu)越的査找能力和優(yōu)秀的插入、刪除性能。為達(dá)到上述目的,本發(fā)明提供一種快速索引方法,它是結(jié)合HistoricalR-tree和四叉樹 (Quadtree)而提出的一種時空索引結(jié)構(gòu),也可以把它看作一棵特殊的四叉樹。本發(fā)明解決 其技術(shù)問題所采用的技術(shù)方案是包括以下步驟A. 將數(shù)據(jù)存儲到數(shù)據(jù)庫中,并建立以時間點(diǎn)為樹根的樹形索引結(jié)構(gòu);1B. 將待索引的數(shù)據(jù)用深度為d的四叉樹將整個k維索引空間IS0劃分成w:Z(2"'個子索 引空間進(jìn)行索引;C. 將四叉樹的每個結(jié)點(diǎn)均與一個索引子空間和一棵R-樹Rti相關(guān)聯(lián)如果相鄰時間片的R-樹有相同分支,只保留前一個時間片的分支,將下一個時間片的索 引指針指向該分支;如果相鄰時間片的R-樹沒有相同分支,需要建立新的索引關(guān)系,將索引指針指向新添加 的數(shù)據(jù)項(xiàng);D. 根據(jù)所要索引的數(shù)據(jù)項(xiàng),進(jìn)行相應(yīng)的查找操作,插入操作和刪除操作; 步驟B中深度為d的四叉樹將整個k維索引空間ISO劃分為個數(shù)為n的d級子空間,依次記為ISO, ISl,, IS (n-l)。 RtO, Rtl,…,Rt (n_l)這n棵R-樹分別與之相關(guān)聯(lián)。步驟D中的査找操作包括時間查詢和窗口査詢。時間查詢是指查找在某一時間戳所有活動的空間對象;窗口查詢是査找特定時間戳査詢窗口內(nèi)的所有活動對象。其中,時間査詢的操作過程為在時間索引結(jié)點(diǎn)所對應(yīng)的四叉樹劃分出的子索引空間中查找時間片包含指定時間戳的結(jié)點(diǎn),遍歷該四叉樹分支對應(yīng)的R-樹,輸出該葉子結(jié)點(diǎn)中所有索引數(shù)據(jù)項(xiàng)信息。其中,窗口査詢的操作過程為依次對樹形結(jié)構(gòu)的所有時間索引結(jié)點(diǎn)指向的與子空間對 應(yīng)的R-樹執(zhí)行R-樹的窗口操作,輸出各時間片中指定窗口內(nèi)的時空對象。步驟D中的插入操作實(shí)現(xiàn)在的R-樹中插入一個新的MBR或者生成一個新的由[A/now]指向 的R-樹版本(該節(jié)點(diǎn)的時間片[ti,now])。將新的對象插入到樹形結(jié)構(gòu)中,空間對象隨時間發(fā) 生變化,發(fā)生時間為當(dāng)前時間戳。插入操作包括建立分支(create branch)、分裂結(jié)點(diǎn)(split node)和調(diào)整樹(adjust tree)三個過程。情況一,如果一個新的MBR被插入節(jié)點(diǎn),如果節(jié)點(diǎn)仍然維持它的最大索引數(shù)據(jù)項(xiàng)數(shù)目,沒 有上溢,則直接插入節(jié)點(diǎn);情況二,如果一個新的MBR被插入節(jié)點(diǎn),如果節(jié)點(diǎn)不能維持它的最大索引數(shù)據(jù)項(xiàng)數(shù)目,則 上溢,則需要分裂節(jié)點(diǎn),生成兩個新節(jié)點(diǎn)。由于根節(jié)點(diǎn)未滿,不需要進(jìn)一步的分裂。在最壞 的情況下, 一個節(jié)點(diǎn)的分裂從葉節(jié)點(diǎn)繁殖到根節(jié)點(diǎn),造成二個分支被重建。其中,步驟D中的刪除操作實(shí)現(xiàn)刪除樹形索引結(jié)構(gòu)中的對象,由于對象隨時間發(fā)生了變化, 需要創(chuàng)建新的時間索引結(jié)點(diǎn),同樣需要建立分支(create branch)、分裂結(jié)點(diǎn)(split node) 和調(diào)整樹(adjust tree)三個過程。情況一,如果一個MBR被刪除后,節(jié)點(diǎn)仍然維持它的最小索引數(shù)據(jù)項(xiàng)數(shù)目,沒有下溢,則 直接刪除節(jié)點(diǎn);情況二,如果一個MBR被刪除后,節(jié)點(diǎn)維持不了它的最小索引數(shù)據(jù)項(xiàng)數(shù)目,則下溢,由此 原結(jié)點(diǎn)的所有記錄插入到相鄰節(jié)點(diǎn),并且釋放原節(jié)點(diǎn)。在將原節(jié)點(diǎn)記錄插入到鄰節(jié)點(diǎn)的過程 中,若鄰節(jié)點(diǎn)上溢,則參考插入操作過程。與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)是提高了索引速度,減少了存儲空間??紤]倒相鄰時間 片的R-樹可能會重疊,若相鄰時間片的R-樹有相同的分支,只保留該分支的一個版本,節(jié)省了存儲空間;同時引入四叉樹將每一時間戳對應(yīng)的空間塊分成《 = £(2"'個部分,每個部分,=0對應(yīng)四叉樹的一個分支節(jié)點(diǎn),能將索引過程中涉及到的査找空間限制在整個索引空間的一部 分,而不必查找整個樹型結(jié)構(gòu),極大的提高了索引速度。
下面結(jié)合附圖和實(shí)施例對本實(shí)用新型進(jìn)一步說明。圖l是R-樹的平面示意圖和對應(yīng)的結(jié)構(gòu)示意圖。圖2是未改進(jìn)的服-樹結(jié)構(gòu)的示意圖。圖3是tl時刻的二維空間平面的示意圖。圖4是t2時刻的二維空間平面的示意圖。圖5是tl到t2時刻的索引結(jié)構(gòu)的示意圖。圖6為插入一個節(jié)點(diǎn)的樹結(jié)構(gòu)的示意圖。圖7為刪除一個節(jié)點(diǎn)的樹結(jié)構(gòu)的示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì) 描述。圖3,圖4和圖5為二維空間索引結(jié)構(gòu)的一個例子。其中,圖3為tl時刻的二維空間平面示意圖,由公式n二Z(2"'得, 一棵深度為2的四叉樹將整個二維平面索引空間分成了五個子,=0索引空間IS0, IS1, IS2, IS3, IS4。 Rt0, Rtl, Rt2, Rt3, Rt4這5棵R-樹分別與之相關(guān)聯(lián)。 在圖3中所示,完全包圍r3的最小子空間為IS2,因此r3被分配給IS2;完全包圍r4的最小子空 間為IS0,因此r4被分配給IS0。其中,圖3和圖4為從tl時刻到t2時刻的二維數(shù)據(jù)空間平面示意圖。在tl時刻,在子空間ISO中,完全包圍的MBR為r4和r5;在子空間IS1中,完全包圍的MBR為rl和r2;在子空間IS2中,完全包圍的MBR為r3;在子空間IS3中,完全包圍的MBR為r6;在子空間IS4中,完全包圍的MBR為r7和r8;在t2時刻,r2從ISl移動到IS2, r4從IS0移動到IS3,其索引結(jié)構(gòu)也隨之發(fā)生了變化。如 圖5所示,假定序列表A索引更新發(fā)生的時間點(diǎn)。[A/tl]指向初始的樹形結(jié)構(gòu)。到時間片t2時, 對象r2的MBR發(fā)生改變,從子空間IS1移動到子空間IS2中,路徑(Rtl, R2, r2)需要更新,產(chǎn) 生新的路徑^t2, Rl' , r2};對象r4的MBR發(fā)生改變,從子空間IS0移動到子空間IS3中,路 徑(RtO, Rl, r4)需要更新,產(chǎn)生新的路徑(Rt3, R2' , r4}。顯然在t2時刻,rl, r3 r5, r6以及R3節(jié)點(diǎn)沒有改變不需要被重建,只需要修改指針,指向下一個時間片對應(yīng)的節(jié)點(diǎn)。其基本算法的實(shí)施例如下實(shí)施例一數(shù)據(jù)項(xiàng)查找方法,如圖4中所示。以圖為例,說明在樹形索引結(jié)構(gòu)中進(jìn)行時空對象査找的操作過程。在一棵深度為2的四叉 樹所對應(yīng)的二維平面索引空間被分成了五個子索引空間ISO, IS1, IS2, IS3, IS4。 RtO, Rtl, Rt2, Rt3, Rt4這5棵R-樹分別與之相關(guān)聯(lián)。若要查找t2時刻所有與QR重疊的MBR,過程 如下(1) QR與子空間ISO相交,且與RtO的索引空間相交,因此在RtO中查找,返回滿足要求 的數(shù)據(jù)矩形r5;(2) QR與IS1、 IS2、 IS3都不相交,不用繼續(xù)比較;(3) QR與子空間IS4相交,且與Rt4的索引空間相交,因此在Rt4中查找,返回滿足要求 的數(shù)據(jù)矩形r7;實(shí)施例二數(shù)據(jù)項(xiàng)插入方法,如圖6中所示。以圖為例,說明在樹形索引結(jié)構(gòu)中插入新時空對象的操作過程。在一棵深度為2的四叉樹 所對應(yīng)的二維平面索引空間被分成了五個子索引空間ISO, IS1, IS2, IS3, IS4。 RtO, Rtl,Rt2, Rt3, Rt4這5棵R-樹分別與之相關(guān)聯(lián)。從時間片tl到時間片t2, 一個新的標(biāo)識為r8的MBR 被插入。算法描述它應(yīng)該在節(jié)點(diǎn)R2中被插入,假定該節(jié)點(diǎn)的最大索引數(shù)據(jù)項(xiàng)數(shù)目為1=3,此時 節(jié)點(diǎn)R2已滿,上溢。因此需要分裂節(jié)點(diǎn),生成節(jié)點(diǎn)R21和R22。原節(jié)點(diǎn)R2的兩個數(shù)據(jù)項(xiàng)r3和r4 需要修改指針,指向生成的新節(jié)點(diǎn)R21;同時數(shù)據(jù)項(xiàng)r5修改指針,指向生成的新節(jié)點(diǎn)R22,并 插入新增加的數(shù)據(jù)項(xiàng)r8。而節(jié)點(diǎn)R1和R3的數(shù)據(jù)項(xiàng)均未發(fā)生改變,由R1和R3修改指針,指向下 一個時間片所對應(yīng)的節(jié)點(diǎn)RtO和Rt4。實(shí)施例三數(shù)據(jù)項(xiàng)刪除方法,如圖7中所示。以圖為例,說明在樹形索引結(jié)構(gòu)中刪除時空對象的操作過程。在一棵深度為2的四叉樹所 對應(yīng)的二維平面索引空間被分成了五個子索引空間ISO, IS1, IS2, IS3, IS4。 RtO, Rtl, Rt2, Rt3, Rt4這5棵R-樹分別與之相關(guān)聯(lián)。從時間片tl到時間片t2,標(biāo)識為r2和r3的MBR被刪 除。算法描述r2應(yīng)該在節(jié)點(diǎn)Rl中被刪除,r3應(yīng)該在節(jié)點(diǎn)R2中被刪除。假定該節(jié)點(diǎn)的最小索引 數(shù)據(jù)項(xiàng)數(shù)目為j-2,此時節(jié)點(diǎn)R1和R2均下溢。因此,R2中的數(shù)據(jù)項(xiàng)r4修改指針,插入到結(jié)點(diǎn)R1 中,并且釋放R2結(jié)點(diǎn)。而節(jié)點(diǎn)R3的數(shù)據(jù)項(xiàng)未發(fā)生改變,只需由R3修改指針,指向下一個時間 片所對應(yīng)的節(jié)點(diǎn)Rt4。以上對本發(fā)明所提供的時空數(shù)據(jù)快速索引方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體各例 對發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解發(fā)明的方法及其 核心思想,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替 換、改進(jìn)等,應(yīng)均在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種時空數(shù)據(jù)快速索引方法,其特征在于,考慮倒相鄰時間片的R-樹可能會重疊,若相鄰時間片的R-樹有相同的分支,只保留該分支的一個版本;同時引入四叉樹將每一時間戳對應(yīng)的空間塊分成<math-cwu><![CDATA[<math> <mrow><mi>n</mi><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>0</mn> </mrow> <mrow><mi>d</mi><mo>-</mo><mn>1</mn> </mrow></munderover><msup> <mrow><mo>(</mo><msup> <mn>2</mn> <mi>k</mi></msup><mo>)</mo> </mrow> <mi>i</mi></msup> </mrow></math>]]></math-cwu><!--img id="icf0001" file="S2008101013431C00011.gif" wi="83" he="42" img-content="drawing" img-format="tif"/-->個部分,每個部分對應(yīng)四叉樹的一個分支節(jié)點(diǎn),能將索引過程中涉及到的查找空間限制在整個索引空間的一部分,而不必查找整個樹形結(jié)構(gòu)。該方法包括一下步驟A.將數(shù)據(jù)存儲到數(shù)據(jù)庫中,并建立以時間點(diǎn)為樹根的樹形索引結(jié)構(gòu);B.將待索引的數(shù)據(jù)用深度為d的四叉樹將整個k維索引空間IS0劃分成<math-cwu><![CDATA[<math> <mrow><mi>n</mi><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>0</mn> </mrow> <mrow><mi>d</mi><mo>-</mo><mn>1</mn> </mrow></munderover><msup> <mrow><mo>(</mo><msup> <mn>2</mn> <mi>k</mi></msup><mo>)</mo> </mrow> <mi>i</mi></msup> </mrow></math>]]></math-cwu><!--img id="icf0002" file="S2008101013431C00012.gif" wi="84" he="43" img-content="drawing" img-format="tif"/-->個子索引空間進(jìn)行索引;C.將四叉樹的每個結(jié)點(diǎn)均與一個索引子空間和一棵R-樹Rti相關(guān)聯(lián)如果相鄰時間片的R-樹有相同分支,只保留前一個時間片的分支,將下一個時間片的索引指針指向該分支;如果相鄰時間片的R-樹沒有相同分支,需要建立新的索引關(guān)系,將索引指針指向新添加的數(shù)據(jù)項(xiàng);D.根據(jù)所要索引的數(shù)據(jù)項(xiàng),進(jìn)行相應(yīng)的查找操作,插入操作和刪除操作;
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟B中深度為d的四叉樹將整個k維 索引空間ISO劃分為個數(shù)為n的d級子空間,依次記為ISO, IS1,…,IS(n-l)。RtO, Rtl,…, Rt (n-l)這n棵R-樹分別與之相關(guān)聯(lián)。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟D中的查找操作包括時間查詢和窗 口查詢。時間査詢是指查找在某一時間戳所有活動的空間對象;窗口査詢是査找特定時間戳 査詢窗口內(nèi)的所有活動對象。其中,時間查詢的操作過程為在時間索引結(jié)點(diǎn)所對應(yīng)的四叉樹劃分出的子索引空間中 査找時間片包含指定時間戳的結(jié)點(diǎn),遍歷該四叉樹分支對應(yīng)的R-樹,輸出該葉子結(jié)點(diǎn)中所有 索引數(shù)據(jù)項(xiàng)信息。其中,窗口查詢的操作過程為依次對樹形結(jié)構(gòu)的所有時間索引結(jié)點(diǎn)指向的與子空間對應(yīng)的R-樹執(zhí)行R-樹的窗口操作,輸出各時間片中指定窗口內(nèi)的時空對象。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟D中的插入操作實(shí)現(xiàn)在的R-樹中插 入一個新的MBR或者生成一個新的由[A/now]指向的R-樹版本(該節(jié)點(diǎn)的時間片[ti,now])。 將新的對象插入到樹形結(jié)構(gòu)中,空間對象隨時間發(fā)生變化,發(fā)生時間為當(dāng)前時間戳。插入操 作包括建立分支(createbranch)、分裂結(jié)點(diǎn)(splitnode)和調(diào)整樹(adjusttree)三個過程。情況一,如果一個新的MBR被插入節(jié)點(diǎn),.如果節(jié)點(diǎn)仍然維持它的最大索引數(shù)據(jù)項(xiàng)數(shù)目, 沒有上溢,則直接插入節(jié)點(diǎn);情況二,如果一個新的MBR被插入節(jié)點(diǎn),如果節(jié)點(diǎn)不能維持它的最大索引數(shù)據(jù)項(xiàng)數(shù)目, 則上溢,則需要分裂節(jié)點(diǎn),生成兩個新節(jié)點(diǎn)。由于根節(jié)點(diǎn)未滿,不需要進(jìn)一步的分裂。在最 壞的情況下, 一個節(jié)點(diǎn)的分裂從葉節(jié)點(diǎn)繁殖到根節(jié)點(diǎn),造成二個分支被重建。
5、根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟D中的刪除操作實(shí)現(xiàn)刪除樹形索引 結(jié)構(gòu)中的對象,由于對象隨時間發(fā)生了變化,需要創(chuàng)建新的時間索引結(jié)點(diǎn),同樣需要建立分 支(createbranch)、分裂結(jié)點(diǎn)(splitnode)和調(diào)整樹(adjusttree)三個過程。情況一,如果一個MBR被刪除后,節(jié)點(diǎn)仍然維持它的最小索引數(shù)據(jù)項(xiàng)數(shù)目,沒有下溢, 則直接刪除節(jié)點(diǎn);情況二,如果一個MBR被刪除后,節(jié)點(diǎn)維持不了它的最小索引數(shù)據(jù)項(xiàng)數(shù)目,則下溢, 由此原結(jié)點(diǎn)的所有記錄插入到相鄰節(jié)點(diǎn),并且釋放原節(jié)點(diǎn)。在將原節(jié)點(diǎn)記錄插入到鄰節(jié)點(diǎn)的 過程中,若鄰節(jié)點(diǎn)上溢,則參考插入操作過程。
全文摘要
本發(fā)明涉及無線通信計(jì)算機(jī)領(lǐng)域,具體提出了一種時空數(shù)據(jù)快速索引方法,這是一種高效的索引機(jī)制,它使用重疊索引結(jié)構(gòu)存儲不同時間戳的時空狀態(tài),若相鄰時間片有相同的R-樹索引分支,只保留其中一個版本,減少了存儲空間。同時,對于一個時間片上的數(shù)據(jù)不再查找整個索引空間,而是采用基于四叉樹的分塊索引機(jī)制,將整個空間劃分為n=∑<sup>d-1</sup><sub>i=0</sub>(2<sup>k</sup>)<sup>i</sup>個子索引空間(d為四叉樹的深度,k為索引空間的維度),從而只用查找其中的一個子空間,大幅減少了索引時間。利用本索引方法可以用于對多個無線移動節(jié)點(diǎn)高效的進(jìn)行定位和數(shù)據(jù)監(jiān)控管理。
文檔編號G06F17/30GK101241511SQ20081010134
公開日2008年8月13日 申請日期2008年3月5日 優(yōu)先權(quán)日2008年3月5日
發(fā)明者崔曉燕, 燦 袁 申請人:北京郵電大學(xué)