專利名稱:基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于地理空間信息系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種基于數(shù)據(jù)內(nèi)容的三維
空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和數(shù)據(jù)獲取技術(shù)的迅速發(fā)展,具有三維數(shù)據(jù)處理能力的三維GIS 的發(fā)展受到了極大的關(guān)注,并在日益增長的三維空間信息需求的牽引和蓬勃發(fā)展的現(xiàn)代 新興技術(shù)的驅(qū)動下得到了穩(wěn)步發(fā)展。從二維GIS到三維GIS,雖然空間維數(shù)只增加了一
維,但基于此既包容了幾乎所有豐富的空間信息,也突破了常規(guī)二維表示對真實(shí)世界表
達(dá)的束縛,為更好地洞察和理解現(xiàn)實(shí)世界提供了多種多樣的選擇。但是,表達(dá)三維GIS 數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)較之傳統(tǒng)的二維空間數(shù)據(jù)要復(fù)雜得多,主要體現(xiàn)在地上地下三 維空間實(shí)體的語義、幾何與紋理等屬性多樣、數(shù)據(jù)量龐大、三維空間對象之間的相互關(guān) 系錯(cuò)綜復(fù)雜等方面。在現(xiàn)有計(jì)算機(jī)硬件條件下,TB級的大規(guī)模三維空間數(shù)據(jù)的三維實(shí)時(shí) 可視化是目前三維GIS亟需突破的難題。為了提高三維空間數(shù)據(jù)從三維空間數(shù)據(jù)庫中動 態(tài)調(diào)度的效率,滿足三維實(shí)時(shí)可視化的快速數(shù)據(jù)請求,高效的緩存機(jī)制成為有效的解決 方法之一。 在計(jì)算機(jī)技術(shù)的發(fā)展過程中,緩存技術(shù)一直具有非常重要的作用,可以有效地 減少網(wǎng)絡(luò)通信量、減輕服務(wù)器的負(fù)載和降低用戶等待時(shí)間等。在緩存技術(shù)的研究領(lǐng)域, 依據(jù)緩存技術(shù)的應(yīng)用領(lǐng)域不同,主要有存儲器緩存技術(shù)、磁盤緩存技術(shù)、Web服務(wù)器的 緩存技術(shù)以及數(shù)據(jù)緩存技術(shù)等;根據(jù)緩存的應(yīng)用位置不同可以分為客戶機(jī)端數(shù)據(jù)緩存 系統(tǒng)、集中式數(shù)據(jù)緩存系統(tǒng)、分布式數(shù)據(jù)緩存系統(tǒng)以及虛擬數(shù)據(jù)緩存系統(tǒng)等。對于緩存 技術(shù)論述的相關(guān)文獻(xiàn)有R.Karedla, J.S丄ove, B.G.Wherry, Caching strategies to improve disk system performance.IEEE Computer, 1994 ; G.Barish, K.Obraczka.World Wide Web Caching : Trends and Techniques.IEEE Communication Magazine Internet Technology Series,
2000;涂小朋,汪林林.分布式空間數(shù)據(jù)庫中基于事務(wù)的客戶端高速緩存技術(shù)研究.計(jì)算
機(jī)科學(xué),2004;徐尤南.數(shù)據(jù)緩沖技術(shù)在客戶/服務(wù)器環(huán)境下的應(yīng)用.計(jì)算機(jī)應(yīng)用,2001。
現(xiàn)有的緩存策略主要包括的LFU(Least Frequently Used) 、 LRU(Least Recently Used)、 FIFO隊(duì)列等,LFU算法關(guān)注訪問頻率,LRU算法關(guān)注最近訪問的歷史,F(xiàn)IFO 是一種先入先出隊(duì)列。LRFU緩沖區(qū)頁面置換算法結(jié)合了 LFU和LRU兩種置換策略, 兼顧訪問時(shí)間(Recency)和訪問次數(shù)(Frequency)兩個(gè)值,其原則是最近的一次訪問所占 的權(quán)值最大,越往后其權(quán)值越小。這些經(jīng)典的緩存策略主要針對非空間數(shù)據(jù),利用了時(shí) 間局部性原理,即最近訪問的數(shù)據(jù)在最近的將來被訪問的概率比較大。而三維空間數(shù)據(jù) 具有三維空間局部性的特性,即若一個(gè)區(qū)域中的數(shù)據(jù)被訪問,那么此區(qū)域中其它數(shù)據(jù)被 訪問的可能性也很大。因此在三維空間數(shù)據(jù)的緩存管理技術(shù)中三維空間局部性也要被考 慮在內(nèi),但傳統(tǒng)的緩存管理技術(shù)對此沒有涉及。Jun-KiMin提出的BEAST算法(Buffer Replacement Algorithm using Spatial and Temporal locality)是在LRU的基石出上,考慮了空間局部性,利用兩個(gè)LRU緩存隊(duì)列得以實(shí)現(xiàn)的,提高了空間數(shù)據(jù)庫的存訪效率,但這些 算法針對的是空間數(shù)據(jù)庫系統(tǒng),很難擴(kuò)展到應(yīng)用級的系統(tǒng)。LeeD, Choi J, KimJH, et al丄RFU : a spectrum of policies that subsumes the least recently used and least frequently Used Policies.IEEE Trans Computers, 2001; Edith Cohen, Haim Kaplan, Uri Zwick.Competitive analysis of the LRFU paging algorithm.Source, LectureNotes In Computer Science, 2002 ;李 占勝,畢會娟,李艷平,張立松.一種對LRFU置換策略的自適應(yīng)改進(jìn).計(jì)算機(jī)工程與應(yīng) 用,2008;李東軍,曾國蓀.一種基于四叉樹的空間數(shù)據(jù)緩存策略.計(jì)算機(jī)工程與應(yīng)用, 2008 。 Min J K.BEAST : a buffer replacement algorithm using spatial and temporal locality. LNCS 3981: ICCSA2006, 2006。 為了提高空間數(shù)據(jù)的顯示效率,越來越多的GIS商業(yè)軟件開始采用緩存技術(shù), 如ArcGIS提供二維、三維緩存技術(shù),并結(jié)合應(yīng)用需求,支持融合緩存、多圖層緩存、按 需緩存,滿足實(shí)際需要。ArcGlobe的緩存通過切片方案(Tiling scheme)預(yù)先定義,并分 層(Multi-layer)創(chuàng)建。國內(nèi)SuperMap iServer系列產(chǎn)品提供多級緩存機(jī)制,其內(nèi)嵌的地圖 網(wǎng)格緩存技術(shù)和智能客戶端技術(shù),在不同層次上進(jìn)行性能優(yōu)化,實(shí)現(xiàn)了高效的數(shù)據(jù)緩存 和應(yīng)用緩存,對應(yīng)用及其相關(guān)數(shù)據(jù)進(jìn)行高速緩存,智能客戶端技術(shù)具有本地緩存、斷點(diǎn) 續(xù)傳、本地渲染、即時(shí)局部數(shù)據(jù)獲取特點(diǎn),但是SuperMap iServer主要針對傳統(tǒng)的二維空 間數(shù)據(jù)緩存而設(shè)計(jì)。適用于對象存儲網(wǎng)絡(luò)的分布式多級緩存系統(tǒng)的發(fā)明專利在客戶端、 對象存儲節(jié)點(diǎn)設(shè)置三級緩存提供緩存系統(tǒng)及其緩存策略,但并不適合空間數(shù)據(jù)的管理特 點(diǎn)。Google Earth、 Virtual Earth 3D等數(shù)字地球系統(tǒng)等通過在客戶端建立磁盤文件緩存, 來減少訪問服務(wù)器的次數(shù),提高數(shù)據(jù)調(diào)度的效率,但這些軟件主要針對地形和影像進(jìn)行 處理,并未真正處理大規(guī)模的三維城市模型數(shù)據(jù),而且都難以兼顧地上地下三維空間數(shù) 據(jù)的一體化處理。相關(guān)文獻(xiàn)有Yingwei Luo, XiaolinWang, and Zhuoqun Xu, 2004.A Cache Mechanism for Component-Based WebGIS ;朱欣焰.面向網(wǎng)絡(luò)的海量影像空間數(shù)據(jù) 在線分發(fā)技術(shù).武漢大學(xué)學(xué)報(bào)信息科學(xué)版,2003 ; Amiri, K., Park, S., Tewari, R., Padmanabhan, S, 2003 : DBProxy : A dynamic data cache for web applications.In : ICDE Conference ; http:〃www.supermap.com.cn/ ; http:〃www.esri.com/。
發(fā)明內(nèi)容
本發(fā)明的目的在于提高大規(guī)模三維空間數(shù)據(jù)動態(tài)調(diào)度的效率,解決大規(guī)模三維 空間數(shù)據(jù)實(shí)時(shí)可視化的性能瓶頸,提供一種基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)自適應(yīng)多級緩 存系統(tǒng)。 —種三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),系統(tǒng)包括有客戶端和數(shù)據(jù)庫服務(wù)器 端,客戶端和數(shù)據(jù)庫服務(wù)器端建立通信連接;包括有四級緩存和相應(yīng)的各級緩存管理模 塊,以及位于數(shù)據(jù)庫服務(wù)器端的多級緩存自適應(yīng)管理模塊和三維空間數(shù)據(jù)庫,各級緩存 中基于三維空間數(shù)據(jù)的內(nèi)容類型建立有相應(yīng)緩存池;所述四級緩存和相應(yīng)的各級緩存管 理模塊,即位于客戶端的三維空間數(shù)據(jù)繪制緩存和三維空間數(shù)據(jù)繪制緩存管理模塊、三 維空間數(shù)據(jù)內(nèi)存緩存和三維空間數(shù)據(jù)內(nèi)存緩存管理模塊、三維空間數(shù)據(jù)文件緩存和三維 空間數(shù)據(jù)文件緩存管理模塊,以及位于數(shù)據(jù)庫服務(wù)器端的三維空間數(shù)據(jù)引擎服務(wù)緩存和 三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊;
7
所述三維空間數(shù)據(jù)繪制緩存管理模塊,用于提供一級緩存,負(fù)責(zé)實(shí)時(shí)更新三維空間數(shù)據(jù)繪制緩存中用于三維場景可視化的三維空間數(shù)據(jù); 所述三維空間數(shù)據(jù)內(nèi)存緩存管理模塊,用于提供二級緩存,負(fù)責(zé)三維空間數(shù)據(jù)內(nèi)存緩存的緩存空間申請、分配與回收,以及緩存中三維空間數(shù)據(jù)的查找與替換;
所述三維空間數(shù)據(jù)文件緩存管理模塊,用于提供三級緩存,負(fù)責(zé)三維空間數(shù)據(jù)文件緩存的三維空間數(shù)據(jù)組織與管理; 所述三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊,用于提供四級緩存,負(fù)責(zé)三維空間數(shù)據(jù)引擎服務(wù)緩存的三維空間數(shù)據(jù)預(yù)取、查找與替換; 所述多級緩存自適應(yīng)管理模塊,統(tǒng)一管理四級緩存與相應(yīng)的各級緩存管理模塊,負(fù)責(zé)各級緩存的一致性維護(hù),以及對各級緩存進(jìn)行自適應(yīng)調(diào)整。; 其中,三維空間數(shù)據(jù)繪制緩存、三維空間數(shù)據(jù)內(nèi)存緩存、三維空間數(shù)據(jù)引擎服務(wù)緩存和三維空間數(shù)據(jù)庫之間依次建立數(shù)據(jù)傳輸通道,三維空間數(shù)據(jù)文件緩存與三維空間數(shù)據(jù)內(nèi)存緩存之間建立數(shù)據(jù)傳輸通道;多級緩存自適應(yīng)管理模塊與各級緩存管理模塊分別建立傳輸管理信息的連接,各級緩存管理模塊分別與所管理的緩存建立傳輸管理信息的連接。 而且,三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)提供用于實(shí)現(xiàn)三維場景實(shí)時(shí)可視化的三維空間數(shù)據(jù),當(dāng)三維場景發(fā)生變化需要三維空間數(shù)據(jù)繪制緩存中沒有的新三維空間數(shù)據(jù)時(shí),進(jìn)行以下步驟, 步驟2.1,由三維空間數(shù)據(jù)繪制緩存管理模塊向三維空間數(shù)據(jù)內(nèi)存緩存管理模塊發(fā)出數(shù)據(jù)查詢請求; 步驟2.2,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊在三維空間數(shù)據(jù)內(nèi)存緩存中查找,如果命中,則返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則未命中,則發(fā)送數(shù)據(jù)查詢請求到三維空間數(shù)據(jù)文件緩存管理模塊; 步驟2.3,三維空間數(shù)據(jù)文件緩存管理模塊在三維空間數(shù)據(jù)文件緩存中查找,如果命中,則從三維空間數(shù)據(jù)文件緩存中讀取命中的數(shù)據(jù),返回給三維空間數(shù)據(jù)內(nèi)存緩存,由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則未命中,則發(fā)送數(shù)據(jù)查詢請求到數(shù)據(jù)庫服務(wù)器端; 步驟2.4,數(shù)據(jù)庫服務(wù)器端接收客戶端的數(shù)據(jù)查詢請求,首先驗(yàn)證用戶的合法性,合法則建立客戶端與數(shù)據(jù)庫服務(wù)器端的連接,否則不合法,則拒絕連接,返回連接錯(cuò)誤信息; 步驟2.5,建立連接后,數(shù)據(jù)查詢請求由三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊處理,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊在三維空間數(shù)據(jù)引擎服務(wù)緩存中查找是否命中,如果命中,則將命中的數(shù)據(jù)返回到客戶端,否則未命中,則向三維空間數(shù)據(jù)庫發(fā)送數(shù)據(jù)查詢請求; 步驟2.6,三維空間數(shù)據(jù)庫根據(jù)數(shù)據(jù)查詢請求查找到命中的數(shù)據(jù)后,返回該數(shù)據(jù)到三維空間數(shù)據(jù)引擎服務(wù)緩存,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊將該數(shù)據(jù)返回給客戶端,并保存在三維空間數(shù)據(jù)引擎服務(wù)緩存中; 步驟2.7,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊將數(shù)據(jù)庫服務(wù)器端所返回命中的數(shù)據(jù)保存在三維空間數(shù)據(jù)內(nèi)存緩存中,并由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;并在客戶端資源較空閑時(shí),將該數(shù)據(jù)保存到三維空間數(shù)據(jù)文 件緩存中。 而且,系統(tǒng)內(nèi)的三維空間對象通過唯一的三維空間對象ID進(jìn)行標(biāo)識,所述三 維空間數(shù)據(jù)內(nèi)存緩存管理模塊和三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊的三維空間對象替 換,實(shí)現(xiàn)過程包括以下步驟, 步驟3.1,申請緩存空間,從緩存空間劃分出三維R樹索引數(shù)據(jù)緩存池、三維空 間對象緩存池,配置每個(gè)緩存池的大小; 所述三維R樹索引數(shù)據(jù)緩存池,用于存儲三維空間數(shù)據(jù)的三維R樹空間索引數(shù) 據(jù),所述三維R樹空間索引數(shù)據(jù)包括有系統(tǒng)中所有三維空間對象的三維空間對象ID和最 小外包圍盒; 所述三維空間對象緩存池,用于存儲三維空間對象;為三維空間對象緩存池中 存有的三維空間對象建立3DSRtree-LRFU鏈表,所述3DSRtree-LRFU鏈表基于三維R樹 索引數(shù)據(jù)來建立; 步驟3.2,當(dāng)三維空間數(shù)據(jù)繪制緩存管理模塊發(fā)出的數(shù)據(jù)查詢請求是針對三維空 間對象的請求時(shí),首先在三維空間對象緩存池中查找是否命中,如果命中,則將命中的 三維空間對象訪問頻率+1,重新計(jì)算其最近訪問時(shí)間和訪問頻率的綜合加權(quán)值,更新命 中的三維空間對象在3DSRtree-LRFU鏈表中的位置,進(jìn)入步驟3.6;否則不命中,進(jìn)入步 驟3.3 ; 步驟3.3,判斷三維空間對象緩存池中是否有空閑空間,如果有則進(jìn)入步驟 3.5,否則按照步驟3.3.1 3.3.3選取待替換的三維空間對象; 步驟3.3.1,在三維R樹索引數(shù)據(jù)緩存池中獲取滿足數(shù)據(jù)查詢請求的三維空間對 象個(gè)數(shù)為n ; 步驟3.3.2,在3DSRtree-LRFU鏈表的尾部,依次選取nX 2個(gè)三維空間對象;
步驟3.3.3,在三維R樹索引數(shù)據(jù)緩存池中對選取的nX2個(gè)三維空間對象的最小 包圍盒進(jìn)行比較,選擇與數(shù)據(jù)查詢請求所涉及空間范圍最不臨近的n個(gè)三維空間對象作 為待替換的三維空間對象; 步驟3.4,將選定的n個(gè)待替換的三維空間對象從3DSRtree-LRFU鏈表和三維空 間對象緩存池中刪除,更新3DSRtree-LRFU鏈表,進(jìn)入步驟3.5 ; 步驟3.5,當(dāng)從三維空間數(shù)據(jù)文件緩存或三維空間數(shù)據(jù)引擎服務(wù)緩存或三維空間 數(shù)據(jù)庫中獲取命中的三維空間對象時(shí),將新獲取的所有三維空間對象訪問頻率設(shè)為O,計(jì) 算當(dāng)前的最近訪問時(shí)間和訪問頻率的綜合權(quán)值,根據(jù)該綜合權(quán)值將新獲取的三維空間對 象插入到3DSRtree-LRFU鏈表中;
步驟3.6,替換操作結(jié)束。 而且,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊從申請的緩存空間中劃分出空間查 詢范圍緩存池,用于存儲已查詢過的空間范圍,所述三維空間數(shù)據(jù)引擎服務(wù)緩存管理模 塊的緩存數(shù)據(jù)查找,實(shí)現(xiàn)過程包括以下步驟, 步驟4.1,接收客戶端發(fā)送的數(shù)據(jù)查詢請求,分析數(shù)據(jù)查詢請求的類型,若為空 間范圍查詢請求,進(jìn)入步驟4.2,否則為三維空間對象ID查詢請求,進(jìn)入步驟4.5;
步驟4.2,將數(shù)據(jù)查詢請求所涉及空間范圍,在空間查詢范圍緩存池中進(jìn)行比較,若在空間查詢范圍緩存池中未找到與該請求所涉及空間范圍重合或相交的空間范 圍,則進(jìn)入步驟4.3,否則進(jìn)入步驟4.4; 步驟4.3,以數(shù)據(jù)查詢請求所涉及空間范圍作為空間查詢條件,在三維空間數(shù)據(jù) 庫中查詢所有該空間范圍內(nèi)的所有符合要求的三維空間數(shù)據(jù),進(jìn)入步驟4.7 ;
步驟4.4,在三維R樹索引數(shù)據(jù)緩存池中查找該空間范圍內(nèi)的所有符合查詢請求 的三維空間對象ID,進(jìn)入步驟4.5 ; 步驟4.5,將獲取的三維空間對象ID在三維空間對象緩存池中查找,將命中的三 維空間對象直接返回,將未命中的三維空間對象ID放在按需查詢?nèi)蝿?wù)隊(duì)列中;
步驟4.6,按需查詢?nèi)蝿?wù)請求隊(duì)列中的查詢?nèi)蝿?wù)進(jìn)行分解,啟動多線程向三維空 間數(shù)據(jù)庫中提取滿足查詢請求的三維空間數(shù)據(jù); 步驟4.7,將從三維空間數(shù)據(jù)庫獲取的三維空間數(shù)據(jù)返回給客戶端,并同時(shí)保存 在三維空間數(shù)據(jù)引擎服務(wù)緩存中;
步驟4.8,查找結(jié)束。 而且,所述三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊的緩存數(shù)據(jù)預(yù)取,實(shí)現(xiàn)過程包 括以下步驟, 步驟5.1,三維空間引擎服務(wù)緩存管理模塊建立按需查詢?nèi)蝿?wù)隊(duì)列、空間范圍預(yù) 取任務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,在按需查詢?nèi)蝿?wù)隊(duì)列中保存客戶端發(fā)送過 來的全部數(shù)據(jù)查詢請求; 步驟5.2,定時(shí)從按需查詢?nèi)蝿?wù)隊(duì)列中獲取最新的數(shù)據(jù)查詢請求; 步驟5.3,將獲取的數(shù)據(jù)查詢請求按照請求時(shí)間的先后進(jìn)行排序,統(tǒng)計(jì)分析數(shù)據(jù)
查詢請求的空間范圍變化趨勢,預(yù)測得出三維場景視點(diǎn)運(yùn)動方向和預(yù)可見空間范圍; 步驟5.4,根據(jù)當(dāng)前場景可見的數(shù)據(jù)內(nèi)容得到預(yù)取數(shù)據(jù)類型,將預(yù)可見空間范
圍和預(yù)取數(shù)據(jù)類型存入空間范圍預(yù)取任務(wù)隊(duì)列;根據(jù)預(yù)測的三維場景視點(diǎn)運(yùn)動方向和當(dāng)
前場景內(nèi)三維空間對象的多細(xì)節(jié)層次信息,預(yù)測可能發(fā)生多細(xì)節(jié)層次變化的三維空間對
象,將其ID和預(yù)測的多細(xì)節(jié)層次級別存入三維空間對象ID預(yù)取任務(wù)隊(duì)列; 步驟5.5,監(jiān)測數(shù)據(jù)庫服務(wù)器端的資源利用率,當(dāng)資源較空閑時(shí),啟動預(yù)取多線
程,分別執(zhí)行空間范圍預(yù)取任務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,向三維空間數(shù)據(jù)
庫中預(yù)取符合數(shù)據(jù)查詢請求的三維空間數(shù)據(jù); 步驟5.6,將從三維空間空間數(shù)據(jù)庫中預(yù)取的三維空間數(shù)據(jù)保存在三維空間引擎 服務(wù)緩存中; 步驟5J,預(yù)取結(jié)束。 本發(fā)明提供的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)通過客戶端和數(shù)據(jù)庫服務(wù)器端 建立自適應(yīng)的多級緩存及其緩存管理策略,提高了系統(tǒng)I/0處理能力,大幅提高三維空間 數(shù)據(jù)的調(diào)度效率,減少大規(guī)模三維空間數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān),降低了數(shù)據(jù)庫服務(wù)器的工 作負(fù)載。從而解決了現(xiàn)有三維GIS系統(tǒng)訪問請求延遲較大、大規(guī)模復(fù)雜場景動態(tài)漫游不 流暢的問題,并且,本發(fā)明提出基于數(shù)據(jù)內(nèi)容進(jìn)行三維空間數(shù)據(jù)緩存,按照三維空間數(shù) 據(jù)類型在緩存中進(jìn)行分類組織、分池管理,可以進(jìn)一步提高三維空間數(shù)據(jù)調(diào)度效率。
10
圖l為本發(fā)明的
圖2為本發(fā)明的
圖3為本發(fā)明的
間對象替換算法流程圖;
圖4為本發(fā)明的
圖5為本發(fā)明的
圖6為本發(fā)明的
具體實(shí)施方式
以下結(jié)合附圖詳細(xì)說明本發(fā)明的技術(shù)方案 現(xiàn)有空間數(shù)據(jù)庫系統(tǒng)包括客戶端和數(shù)據(jù)庫服務(wù)器端,客戶端和數(shù)據(jù)庫服務(wù)器端 建立通信連接, 一般是通過高速局域網(wǎng)實(shí)現(xiàn)通信連接。由于數(shù)據(jù)庫服務(wù)器端采用數(shù)據(jù)庫 技術(shù)存儲海量的三維空間數(shù)據(jù),當(dāng)用戶通過客戶端觀看三維場景時(shí),數(shù)據(jù)庫服務(wù)器端向 客戶端提供相應(yīng)三維空間數(shù)據(jù)。因此數(shù)據(jù)庫服務(wù)器端一般采用服務(wù)器提供三維空間數(shù)據(jù) 庫實(shí)現(xiàn),客戶端采用PC機(jī)實(shí)現(xiàn)。本發(fā)明在系統(tǒng)中設(shè)計(jì)了四級緩存和相應(yīng)的各級緩存管理 模塊,所謂四級緩存是位于客戶端的三維空間數(shù)據(jù)繪制緩存(一級緩存)、三維空間數(shù)據(jù) 內(nèi)存緩存(二級緩存)、三維空間數(shù)據(jù)文件緩存(三級緩存),位于數(shù)據(jù)庫服務(wù)器端的三維 空間數(shù)據(jù)引擎服務(wù)緩存(四級緩存)。具體實(shí)施時(shí),三維空間數(shù)據(jù)繪制緩存與三維空間數(shù) 據(jù)內(nèi)存緩存均在客戶端內(nèi)存中實(shí)現(xiàn),三維空間數(shù)據(jù)文件緩存在客戶端硬盤上實(shí)現(xiàn),三維 空間數(shù)據(jù)引擎服務(wù)緩存在服務(wù)器端的內(nèi)存中實(shí)現(xiàn),海量三維空間數(shù)據(jù)庫基于典型的商業(yè) 關(guān)系數(shù)據(jù)庫管理系統(tǒng)來實(shí)現(xiàn),部署在數(shù)據(jù)庫服務(wù)器端。 本發(fā)明的四級緩存分別由各自的緩存管理模塊來控制。三維空間數(shù)據(jù)繪制緩存 管理模塊負(fù)責(zé)三維空間數(shù)據(jù)繪制緩存中三維場景可視化所需三維空間數(shù)據(jù)的實(shí)時(shí)更新, 通過專門針對快速三維場景可視化的緩存數(shù)據(jù)組織,減少實(shí)時(shí)繪制時(shí)因頻繁的狀態(tài)切換 等原因引起的時(shí)間消耗;三維空間數(shù)據(jù)內(nèi)存緩存管理模塊用于負(fù)責(zé)客戶端三維空間數(shù)據(jù) 內(nèi)存緩存的緩存空間申請、分配與回收,以及緩存中三維空間數(shù)據(jù)的快速查找與替換, 三維空間數(shù)據(jù)內(nèi)存緩存的高命中率可以極大的提高客戶端三維空間數(shù)據(jù)獲取的效率;三 維空間數(shù)據(jù)文件緩存管理模塊用于負(fù)責(zé)客戶端三維空間數(shù)據(jù)文件緩存中三維空間數(shù)據(jù)高 效組織與管理,三維空間數(shù)據(jù)文件緩存的命中可以避免訪問數(shù)據(jù)庫服務(wù)器,極大減少網(wǎng) 絡(luò)通信量;三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊負(fù)責(zé)數(shù)據(jù)庫服務(wù)器端三維空間數(shù)據(jù)引擎 服務(wù)緩存的三維空間數(shù)據(jù)預(yù)取、查找與替換,通過緩存數(shù)據(jù)預(yù)取技術(shù),可以減少訪問低 速的磁盤存儲設(shè)備頻率,提高數(shù)據(jù)訪問效率;多級緩存自適應(yīng)管理模塊統(tǒng)一管理四級緩 存和各級緩存管理模塊,統(tǒng)一對各級緩存進(jìn)行一致性維護(hù),自適應(yīng)對各級緩存進(jìn)行緩存 空間、緩存替換策略等方面的調(diào)整。因此各緩存管理模塊要與各自管理的緩存之間建立 交換管理信息的連接,多級緩存自適應(yīng)管理模塊則與四個(gè)緩存管理模塊分別建立交換管 理信息的連接。參見圖l,為了實(shí)現(xiàn)四級緩存,三維空間數(shù)據(jù)繪制緩存、三維空間數(shù)據(jù)內(nèi) 存緩存、三維空間數(shù)據(jù)引擎服務(wù)緩存和三維空間數(shù)據(jù)庫之間依次建立數(shù)據(jù)傳輸通道,三 維空間數(shù)據(jù)文件緩存與三維空間數(shù)據(jù)內(nèi)存緩存之間建立數(shù)據(jù)傳輸。本發(fā)明的三維空間數(shù)
三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)示意圖; 三維空間數(shù)據(jù)多級緩存工作流程三維空間數(shù)據(jù)內(nèi)存緩存與三維空間數(shù)據(jù)引擎服務(wù)緩存的三維空
三維空間數(shù)據(jù)內(nèi)存緩存與引擎服務(wù)緩存數(shù)據(jù)查找流程圖; 三維空間數(shù)據(jù)引擎服務(wù)緩存數(shù)據(jù)預(yù)取流程圖; 三維空間數(shù)據(jù)多級緩存一致性維護(hù)流程圖;據(jù)自適應(yīng)多級緩存系統(tǒng)實(shí)現(xiàn)三維場景可視化時(shí),三維場景實(shí)時(shí)可視化的數(shù)據(jù)都在三維空 間數(shù)據(jù)繪制緩存中進(jìn)行管理,當(dāng)場景更新需要調(diào)入新數(shù)據(jù)時(shí),由三維空間數(shù)據(jù)繪制緩存 管理模塊針對客戶請求向三維空間數(shù)據(jù)內(nèi)存緩存管理模塊發(fā)出數(shù)據(jù)查詢請求,實(shí)施例中 的工作流程如圖2所示,包括如下步驟, 步驟2.1,由三維空間數(shù)據(jù)繪制緩存管理模塊向三維空間數(shù)據(jù)內(nèi)存緩存管理模塊 發(fā)出數(shù)據(jù)查詢請求; 步驟2.2,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊在三維空間數(shù)據(jù)內(nèi)存緩存中查找,如 果命中,則返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則未命中,則發(fā)送數(shù)據(jù)查詢請 求到三維空間數(shù)據(jù)文件緩存管理模塊; 步驟2.3,三維空間數(shù)據(jù)文件緩存管理模塊在三維空間數(shù)據(jù)文件緩存中查找, 如果命中,則從三維空間數(shù)據(jù)文件緩存中讀取命中的數(shù)據(jù),返回給三維空間數(shù)據(jù)內(nèi)存緩 存,由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則 未命中,則發(fā)送數(shù)據(jù)查詢請求到數(shù)據(jù)庫服務(wù)器端; 步驟2.4,數(shù)據(jù)庫服務(wù)器端接收客戶端的數(shù)據(jù)查詢請求,首先驗(yàn)證用戶的合法 性,合法則建立客戶端與數(shù)據(jù)庫服務(wù)器端的連接,否則不合法,則拒絕連接,返回連接 錯(cuò)誤信息; 步驟2.5,建立連接后,數(shù)據(jù)查詢請求由三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊 處理,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊在三維空間數(shù)據(jù)引擎服務(wù)緩存中查找是否命 中,如果命中,則將命中的數(shù)據(jù)返回到客戶端(同樣可以沿?cái)?shù)據(jù)傳輸通道返回客戶端的三 維空間數(shù)據(jù)內(nèi)存緩存,由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三維空間數(shù) 據(jù)繪制緩存;并在客戶端資源較空閑時(shí),將該數(shù)據(jù)保存到三維空間數(shù)據(jù)文件緩存中),否 則未命中,則向三維空間數(shù)據(jù)庫發(fā)送數(shù)據(jù)查詢請求; 步驟2.6,三維空間數(shù)據(jù)庫根據(jù)數(shù)據(jù)查詢請求查找到命中的數(shù)據(jù)后,返回該數(shù)據(jù) 到三維空間數(shù)據(jù)引擎服務(wù)緩存,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊將該數(shù)據(jù)返回給客 戶端(具體返回到客戶端后的處理即為步驟2.7),并保存在三維空間數(shù)據(jù)引擎服務(wù)緩存 中; 步驟2.7,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊將數(shù)據(jù)庫服務(wù)器端所返回命中的數(shù)據(jù) 保存在三維空間數(shù)據(jù)內(nèi)存緩存中,并由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù) 到三維空間數(shù)據(jù)繪制緩存;并在客戶端資源較空閑時(shí),將該數(shù)據(jù)保存到三維空間數(shù)據(jù)文 件緩存中。 實(shí)施例只考慮三維空間數(shù)據(jù)庫提供了所有所需數(shù)據(jù)的情況,因此如果四級緩存 都沒有命中,就是在三維空間數(shù)據(jù)庫中通過查詢命中。值得注意的是,步驟2.2、 2.3、 2.5中無論是直接或間接,都是將命中的數(shù)據(jù)發(fā)至三維空間數(shù)據(jù)繪制緩存,對三維空間數(shù) 據(jù)繪制緩存進(jìn)行更新以便向用戶呈現(xiàn)新的三維場景。為了效率起見,三維空間數(shù)據(jù)引擎 服務(wù)緩存中的數(shù)據(jù)不提交給三維空間數(shù)據(jù)文件緩存,而是直接更新三維空間數(shù)據(jù)內(nèi)存緩 存,只在適當(dāng)時(shí)機(jī)更新三維空間數(shù)據(jù)文件緩存。 一般是客戶端資源較空閑時(shí)自動更新三 維空間數(shù)據(jù)文件緩存,或者在客戶端的程序關(guān)閉的時(shí)候,把所有更新的數(shù)據(jù)一次性存儲 在三維空間數(shù)據(jù)文件緩存中。 與二維空間數(shù)據(jù)相比,三維空間數(shù)據(jù)要復(fù)雜得多,主要體現(xiàn)在地上地下三維目標(biāo)的語義、幾何與紋理等屬性多樣、數(shù)據(jù)量龐大、模型之間的相互關(guān)系錯(cuò)綜復(fù)雜等方 面。因此,如果將所有類型的三維空間數(shù)據(jù)混在一起放在緩存中進(jìn)行管理,勢必造成緩 存查找的效率不高且更新維護(hù)困難等問題。因此,為了提高緩存查找的效率、降低更新 維護(hù)困難,本發(fā)明提出,各級緩存一方面采用緩存池的設(shè)計(jì)思想進(jìn)行實(shí)現(xiàn);另一方面通 過基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)分類方法,將三維空間數(shù)據(jù)進(jìn)行分類,不同類型的三維 空間數(shù)據(jù)放在不同的緩存池中管理。三維空間數(shù)據(jù)基于數(shù)據(jù)內(nèi)容主要分為以下幾種類 型元數(shù)據(jù)、三維空間索引數(shù)據(jù)、地形數(shù)據(jù)、三維模型數(shù)據(jù)與屬性數(shù)據(jù),其中三維模型 數(shù)據(jù)按數(shù)據(jù)內(nèi)容可進(jìn)一步劃分為地上下建筑模型、交通設(shè)施模型、管線模型、地質(zhì)體模 型和其它設(shè)施模型。因此具體實(shí)施時(shí),可以按照涉及的三維空間數(shù)據(jù)的類型,為各級緩 存分別建立元數(shù)據(jù)緩存池、三維空間索引數(shù)據(jù)池、地形數(shù)據(jù)池等。
以下說明各管理模塊的實(shí)現(xiàn)
1.三維空間數(shù)據(jù)繪制緩存管理模塊 本發(fā)明的三維空間數(shù)據(jù)繪制緩存的管理對象為當(dāng)前幀繪制涉及的所有三維空間 數(shù)據(jù),直接用于用戶三維實(shí)時(shí)可視化。三維實(shí)時(shí)可視化過程中幀與幀的之間的視點(diǎn)變化 將引起可視數(shù)據(jù)集的變化,每幀需要的新數(shù)據(jù)都從三維空間數(shù)據(jù)內(nèi)存緩存中獲取,并將 不需要的數(shù)據(jù)及時(shí)清除。因此,三維空間數(shù)據(jù)繪制緩存的數(shù)據(jù)都是從三維空間數(shù)據(jù)內(nèi)存 緩存中進(jìn)行實(shí)時(shí)獲取。 為了加速三維場景的繪制速度,實(shí)施例的三維空間數(shù)據(jù)繪制緩存采用場景樹組 織結(jié)構(gòu)X3D格式構(gòu)建三維場景模型,三維場景模型的根結(jié)點(diǎn)下面分為場景樹與空間索引 結(jié)構(gòu)。其中場景樹下面首先分類為可視化信息和非可視化信息。這些分類的下面按照 空間信息的屬性,將其分為不同的層,可視化信息分為建筑層、交通層、管線層、地質(zhì) 體層等;非可視化信息分為工程層、相機(jī)路徑層等。三維空間繪制緩存中的三維空間數(shù) 據(jù)空間索引采用KD樹算法。由于節(jié)點(diǎn)在空間分布并不是均勻的,如果按照均勻的方式 進(jìn)行空間剖分的話,遍歷過程中的可見性剔除效果就會很差,因此采用非均值剖分的方 式構(gòu)建K-D樹。 構(gòu)造K-D樹的過程是從上到下的遞歸剖分過程,建立代價(jià)函數(shù)來計(jì)算每一種可
能的剖分平面所產(chǎn)生的代價(jià)函數(shù),代價(jià)函數(shù)定義如下 L.surfaceArea*L.numObjects+R.surfaceArea*R.numObjects其中,L、 R分別是左右子樹,surfaceArea為左右子樹的表面積,numObjects為
左右子樹的集合物體的個(gè)數(shù)。 2.三維空間數(shù)據(jù)內(nèi)存緩存管理模塊和三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊
本發(fā)明客戶端的三維空間數(shù)據(jù)內(nèi)存緩存由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊來控 制,數(shù)據(jù)庫服務(wù)器端的三維空間數(shù)據(jù)引擎服務(wù)緩存由三維空間數(shù)據(jù)引擎服務(wù)緩存管理模 塊來控制。由于三維空間數(shù)據(jù)內(nèi)存緩存和三維空間數(shù)據(jù)引擎服務(wù)緩存都是在內(nèi)存中實(shí) 現(xiàn),因此這兩個(gè)緩存采用了基本一致的緩存數(shù)據(jù)組織方法和替換策略。三維空間數(shù)據(jù)內(nèi) 存緩存的高命中率可以減少讀取本地硬盤和訪問數(shù)據(jù)庫服務(wù)器的次數(shù),三維空間數(shù)據(jù)引 擎服務(wù)緩存的高命中率可以減少訪問三維空間數(shù)據(jù)庫的頻率,因此都可以非常明顯提高 數(shù)據(jù)調(diào)度的效率。 實(shí)施例通過基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)分類方式,三維空間數(shù)據(jù)內(nèi)存緩存和
13三維空間數(shù)據(jù)引擎服務(wù)緩存將緩存空間分為多個(gè)獨(dú)立的緩存池,包括元數(shù)據(jù)緩存池、三 維R樹索引數(shù)據(jù)緩存池、空間范圍緩池、三維空間對象緩存池、紋理數(shù)據(jù)緩存池、共 享模型數(shù)據(jù)緩存池、地形數(shù)據(jù)緩存池,每個(gè)的緩存池都分配一塊獨(dú)立的內(nèi)存空間進(jìn)行管 理。元數(shù)據(jù)緩存池用于存儲三維空間數(shù)據(jù)的描述性信息,如工程信息、工作區(qū)信息等; 三維R樹索引數(shù)據(jù)緩存池存儲三維空間數(shù)據(jù)的三維R樹索引數(shù)據(jù),可以極大的提高緩存 的查找效率;空間范圍緩存池存儲已查詢過的空間范圍;三維空間對象緩存池用于存儲 三維空間對象,三維空間對象是以對象方式存儲的三維模型數(shù)據(jù)的幾何數(shù)據(jù),每個(gè)三維 空間對象都通過唯一的ID進(jìn)行標(biāo)識;材質(zhì)數(shù)據(jù)緩存池用于存儲三維模型數(shù)據(jù)的材質(zhì)數(shù) 據(jù);紋理數(shù)據(jù)緩存池用于存儲三維模型數(shù)據(jù)的紋理數(shù)據(jù);共享模型數(shù)據(jù)緩存池用于存儲 3ds、 CAD等格式的共享模型數(shù)據(jù);地形數(shù)據(jù)緩存池存儲數(shù)據(jù)高程模型(DEM)數(shù)據(jù)和數(shù) 字正射影像(DOM)數(shù)據(jù),其中地形數(shù)據(jù)按照金字塔分層組織,金字塔層之間的分辨率保 證是2的倍數(shù)關(guān)系,每個(gè)金字塔層的地形數(shù)據(jù)進(jìn)行分塊,每個(gè)數(shù)據(jù)塊進(jìn)行四叉樹編碼。 具體實(shí)施時(shí),系統(tǒng)可以根據(jù)實(shí)際的三維空間數(shù)據(jù)的數(shù)據(jù)量、數(shù)據(jù)訪問頻率等統(tǒng)計(jì)分析情 況,對各緩存池的大小進(jìn)行自適應(yīng)調(diào)整。 高效的緩存替換算法是提高緩存命中率的關(guān)鍵,目前LRU算法和LFU算法是兩 種廣泛應(yīng)用的緩存替換算法,LRU算法利用上一次訪問的時(shí)間特性,對訪問特性的變化 比較敏感,但沒有考慮數(shù)據(jù)訪問的全局特性;LFU算法則使用所有訪問的頻率信息,考 慮數(shù)據(jù)訪問的整體特性,但不能適應(yīng)數(shù)據(jù)訪問模式的變化和陣發(fā)性的訪問。將LRU和 LFU結(jié)合起來的LRFU算法,通過權(quán)值函數(shù),兼顧訪問時(shí)間和訪問次數(shù)兩個(gè)值,其原則 是最近的一次訪問所占的權(quán)值最大,越往后其權(quán)值越小。但是,LRFU算法未考慮三維 空間數(shù)據(jù)的空間臨近性特點(diǎn),即如果用戶訪問了某個(gè)三維空間對象,用戶很可能繼續(xù)訪 問該三維空間對象或訪問與其空間上臨近的三維空間對象,所以在空間上臨近的三維空 間對象一般具有相似的訪問頻率。 由于三維R樹構(gòu)造算法充分考慮了三維空間的鄰近性原則,三維空間相鄰的對 象聚集于R樹相同的節(jié)點(diǎn)或者鄰近兄弟節(jié)點(diǎn)中,并且其固有的樹狀層次結(jié)構(gòu)具備從全局 空間迅速鎖定局部空間的能力,從而加速真三維空間查詢,只需極少數(shù)的計(jì)算量就能從 三維空間中獲取滿足指定查詢請求的三維空間數(shù)據(jù)。因此,本發(fā)明以三維R樹空間索引 為基礎(chǔ),結(jié)合三維空間數(shù)據(jù)的空間區(qū)域連續(xù)性訪問原理,設(shè)計(jì)了 3DSRtree-LRFU(基于三 維R樹空間索引的LRFU)替換算法。 在3DSRtree-LRFU算法中,通過對LRFU算法中每個(gè)在緩存隊(duì)列中的對象和一 個(gè)量化對象最近將來被訪問可能性的CRF(最近訪問時(shí)間和訪問頻率的綜合加權(quán))值相關(guān) 聯(lián)。設(shè)緩存對象被訪問n次,則其CRF值為 CRF=i-S(l/2)' CRF是一個(gè)介于0和1/2之間的數(shù)。3DSRtree-LRFU總是選擇緩存鏈表尾部的 空間對象作為替換的犧牲者。在3DSRtree-LRFU中,并不是根據(jù)CRF值來選擇替換的對 象,而是當(dāng)某個(gè)空間對象被訪問時(shí)根據(jù)CRF值來決定空間對象在3DSRtree-LRFU鏈表中 的位置。設(shè)當(dāng)前3DSRtree-LRFU鏈表長度為L,則將被訪問對象插入到隊(duì)列的CRFXL 處。當(dāng)對象第一次被訪問時(shí),n=l, CRF =1/2,則將此對象插入到隊(duì)列的中間;隨著對象被訪問次數(shù)的增多,CRF漸漸趨向于O,最終插入到鏈表的頭部。
步驟2.2中在三維空間數(shù)據(jù)內(nèi)存緩存中查找數(shù)據(jù),以及基于本發(fā)明設(shè)計(jì)的 3DSRtree-LRFU算法,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊對三維空間數(shù)據(jù)內(nèi)存緩存內(nèi)的三 維空間對象替換流程如圖3所示,包括以下步驟 步驟3.1,申請緩存空間,從緩存空間劃分出三維R樹索引數(shù)據(jù)緩存池、三維空 間對象緩存池,配置每個(gè)緩存池的大??; 所述三維R樹索引數(shù)據(jù)緩存池,用于存儲三維空間數(shù)據(jù)的三維R樹空間索引數(shù)
據(jù)。本發(fā)明實(shí)施例的三維R樹空間索引數(shù)據(jù)包括有系統(tǒng)中所有三維空間對象的ID和最小
外包圍盒信息,從而在使用三維R樹空間索引時(shí),不需要去三維空間數(shù)據(jù)庫中查詢索引
數(shù)據(jù),可以直接從三維R樹索引數(shù)據(jù)緩存池中獲取,提高了索引檢索的效率。 所述三維空間對象緩存池,用于存儲三維空間對象;為三維空間對象緩存池中
存有的三維空間對象緩存池建立3DSRtree-LRFU鏈表,所述3DSRtree-LRFU鏈表基于三
維R樹空間索引數(shù)據(jù)建立。 具體實(shí)施時(shí),在客戶端系統(tǒng)啟動后,首先申請三維空間數(shù)據(jù)內(nèi)存緩存的空間, 除了考慮三維R樹索引數(shù)據(jù)緩存池和三維空間對象緩存池還對應(yīng)其它數(shù)據(jù)類型,將緩存 空間分為元數(shù)據(jù)緩存池、三維R樹索引數(shù)據(jù)緩存池、空間范圍緩存池、地形數(shù)據(jù)緩存 池、三維空間對象緩存池、材質(zhì)數(shù)據(jù)緩存池、紋理數(shù)據(jù)緩存池、共享模型數(shù)據(jù)緩存池和 地形數(shù)據(jù)緩存池,然后初始化每個(gè)緩存池的大小。 步驟3.2,當(dāng)三維空間數(shù)據(jù)繪制緩存管理模塊發(fā)出的數(shù)據(jù)查詢請求是針對三維空 間對象的請求時(shí),首先查找在三維空間對象緩存池中是否命中,如果命中,則將命中的 三維空間對象訪問頻率+1,重新計(jì)算其最近訪問時(shí)間和訪問頻率的綜合加權(quán)值,更新命 中的三維空間對象在3DSRtree-LRFU鏈表中的位置,進(jìn)入步驟3.6;否則不命中,進(jìn)入步 驟3.3 ; 步驟3.3,判斷三維空間對象緩存池中是否有空閑空間,如果有則進(jìn)入步驟 3.5,否則按照步驟3.3.1 3.3.3選取待替換的三維空間對象; 步驟3.3.1,在三維R樹索引數(shù)據(jù)緩存池中獲取滿足數(shù)據(jù)查詢請求的三維空間對 象個(gè)數(shù)為n ; 步驟3.3.2,在3DSRtree-LRFU鏈表的尾部,依次選取nX 2個(gè)三維空間對象;
步驟3.3.3,在三維R樹索引數(shù)據(jù)緩存池中對選取的nX2個(gè)三維空間對象的最小 包圍盒進(jìn)行比較,選擇與數(shù)據(jù)查詢請求所涉及空間范圍最不臨近的n個(gè)三維空間對象作 為待替換的三維空間對象; 步驟3.4,將選定的n個(gè)待替換的三維空間對象從3DSRtree-LRFU鏈表和三維空 間對象緩存池中刪除,更新3DSRtree-LRFU鏈表,進(jìn)入步驟3.5 ; 步驟3.5,當(dāng)從三維空間數(shù)據(jù)文件緩存或三維空間數(shù)據(jù)引擎服務(wù)緩存或三維空間 數(shù)據(jù)庫中獲取命中的三維空間對象時(shí),將新獲取的所有三維空間對象訪問頻率設(shè)為O,計(jì) 算當(dāng)前的最近訪問時(shí)間和訪問頻率的綜合權(quán)值,根據(jù)該綜合權(quán)值將新獲取的三維空間對 象插入到3DSRtree-LRFU鏈表中;
步驟3.6,替換操作結(jié)束。本發(fā)明實(shí)施例的3DSRtree-LRFU算法利用了三維R樹索弓I在三維空間查詢中
15的優(yōu)勢,充分考慮了三維空間數(shù)據(jù)的空間臨近性的特點(diǎn),利用了空間區(qū)域連續(xù)性訪問原 理,同時(shí)結(jié)合了時(shí)間局部性上經(jīng)典的LRU算法和LFU算法,具有較好的緩存對象替換效 果。 三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊對三維空間數(shù)據(jù)引擎服務(wù)緩存內(nèi)的三維空 間數(shù)據(jù)替換與上述過程類似,但由于四級緩存機(jī)制,步驟3.5中只可能從三維空間數(shù)據(jù) 庫中獲取命中的三維空間對象。而三維空間數(shù)據(jù)內(nèi)存緩存管理模塊則還可能從其它緩存 獲取,包括三維空間數(shù)據(jù)文件緩存和三維空間數(shù)據(jù)引擎服務(wù)緩存。實(shí)施例中,三維空間 數(shù)據(jù)引擎服務(wù)緩存也相應(yīng)設(shè)置元數(shù)據(jù)緩存池、三維R樹索引數(shù)據(jù)緩存池、空間范圍緩存 池、地形數(shù)據(jù)緩存池、三維空間對象緩存池、材質(zhì)數(shù)據(jù)緩存池、紋理數(shù)據(jù)緩存池、共享 模型數(shù)據(jù)緩存池和地形數(shù)據(jù)緩存池。在系統(tǒng)啟動時(shí),三維空間數(shù)據(jù)引擎服務(wù)緩存管理模 塊將元數(shù)據(jù)和三維R樹索引數(shù)據(jù)從三維空間數(shù)據(jù)庫中提取出來,分別保存到元數(shù)據(jù)緩存 池和三維R樹索引數(shù)據(jù)緩存池,這兩個(gè)緩存池一般不發(fā)生替換操作??臻g范圍緩存池保 存已查詢的空間范圍信息,當(dāng)該空間范圍內(nèi)的數(shù)據(jù)被替換掉后,該空間范圍信息也必須 從空間范圍緩存池中刪除。材質(zhì)數(shù)據(jù)、紋理數(shù)據(jù)和共享模型數(shù)據(jù)都是與三維空間對象建 立關(guān)聯(lián),不保存空間坐標(biāo)信息,因此材質(zhì)數(shù)據(jù)緩存池、紋理數(shù)據(jù)緩存池和共享模型數(shù)據(jù) 緩存池直接采用LRFU算法實(shí)現(xiàn)緩存數(shù)據(jù)的替換。 在數(shù)據(jù)庫技術(shù)支持下,客戶端發(fā)出的數(shù)據(jù)查詢請求可以包括對空間范圍查詢請 求和三維空間對象ID查詢。實(shí)施例針對這兩種情況,提供三維空間數(shù)據(jù)引擎服務(wù)緩存管 理模塊的緩存數(shù)據(jù)查找過程。具體實(shí)施時(shí),三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊申請三 維空間數(shù)據(jù)引擎服務(wù)緩存空間,監(jiān)聽客戶端發(fā)出的數(shù)據(jù)查詢請求。三維空間數(shù)據(jù)引擎服 務(wù)緩存管理模塊接收到客戶端發(fā)出的數(shù)據(jù)查詢請求后,首先驗(yàn)證客戶端的用戶信息是否 合法,如果合法則建立連接,否則,不合法則拒絕連接,向客戶端返回連接錯(cuò)誤信息。
建立連接后,進(jìn)行以下具體步驟,參見圖4: 步驟4.1,接收客戶端發(fā)送的數(shù)據(jù)查詢請求,分析數(shù)據(jù)查詢請求的類型,若為空 間范圍查詢請求,進(jìn)入步驟4.2,否則為三維空間對象ID查詢請求,進(jìn)入步驟4.5;
其中,空間范圍查詢請求是指查詢條件是給定的矩形、或多邊形等空間范圍, 三維空間對象ID查詢是指查詢條件是一系列三維空間對象的唯一 ID標(biāo)識號。
步驟4.2,將數(shù)據(jù)查詢請求所涉及空間范圍,在空間查詢范圍緩存池中進(jìn)行比 較,若在空間查詢范圍緩存池中未找到與該請求所涉及空間范圍重合或相交的空間范 圍,則進(jìn)入步驟4.3,否則進(jìn)入步驟4.4; 步驟4.3,以數(shù)據(jù)查詢請求所涉及空間范圍作為空間查詢條件,在三維空間數(shù)據(jù) 庫中查詢所有該空間范圍內(nèi)的所有符合要求的三維空間數(shù)據(jù),進(jìn)入步驟5.7 ;
步驟4.4,在三維R樹索引數(shù)據(jù)緩存池中查找該空間范圍內(nèi)的所有符合查詢請求 的三維空間對象ID,進(jìn)入步驟45; 步驟4.5,將獲取的三維空間對象ID在三維空間對象緩存池中查找,將命中的三 維空間對象直接返回,將未命中的三維空間數(shù)據(jù)對象ID放在按需查詢?nèi)蝿?wù)隊(duì)列中;
按需查詢?nèi)蝿?wù)隊(duì)列用于存儲未命中的數(shù)據(jù)查詢請求,每個(gè)數(shù)據(jù)查詢請求作為隊(duì) 列中的一項(xiàng),所有未命中的數(shù)據(jù)查詢請求會在這個(gè)隊(duì)列中排隊(duì)。 步驟4.6,按需查詢?nèi)蝿?wù)請求隊(duì)列中的查詢?nèi)蝿?wù)進(jìn)行分解,啟動多線程向三維空間數(shù)據(jù)庫中提取滿足查詢請求的三維空間數(shù)據(jù)(即命中的數(shù)據(jù)); 步驟4.7,將從三維空間數(shù)據(jù)庫獲取的三維空間數(shù)據(jù)返回給客戶端,并同時(shí)保存 在三維空間數(shù)據(jù)引擎服務(wù)緩存中;
步驟4.8,查找結(jié)束。 三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊可通過兩種方式實(shí)現(xiàn)緩存數(shù)據(jù)的加載一 是按需加載方式,即在客戶端應(yīng)用程序發(fā)出數(shù)據(jù)查詢請求時(shí),對數(shù)據(jù)查詢請求進(jìn)行處 理,并到三維空間數(shù)據(jù)庫中提取滿足查詢需求的三維空間數(shù)據(jù),然后將獲取的數(shù)據(jù)存儲 在三維空間數(shù)據(jù)引擎服務(wù)緩存中。該方式以上已經(jīng)作了描述。二是預(yù)加載方式,通過對 下一步三維場景可視化所需三維空間數(shù)據(jù)變化的預(yù)測,如三維空間對象多細(xì)節(jié)層次的變 化、可視空間范圍的變化等,將下一步可能被請求的三維空間數(shù)據(jù)從三維空間數(shù)據(jù)庫中 預(yù)先讀取出來,預(yù)先在三維空間數(shù)據(jù)引擎服務(wù)緩存中管理起來,以便下一步請求這些數(shù) 據(jù)時(shí)可以直接從服務(wù)緩存獲取,以提高數(shù)據(jù)調(diào)度的效率。本發(fā)明實(shí)施例支持空間范圍預(yù) 取和三維空間對象ID預(yù)取,三維空間數(shù)據(jù)引擎服務(wù)緩存數(shù)據(jù)預(yù)取方法如圖5所示,包括 以下步驟 步驟5.1,三維空間引擎服務(wù)緩存管理模塊建立按需查詢?nèi)蝿?wù)隊(duì)列、空間范圍預(yù) 取任務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,在按需查詢?nèi)蝿?wù)隊(duì)列中保存客戶端發(fā)送過 來的全部數(shù)據(jù)查詢請求; 空間范圍預(yù)取任務(wù)隊(duì)列用于保存預(yù)測的新空間范圍;三維空間對象ID預(yù)取任 務(wù)隊(duì)列用于保存可能發(fā)生多細(xì)節(jié)層次級數(shù)變化的三維空間對象ID及其新的多細(xì)節(jié)層次級 數(shù)。 步驟5.2,定時(shí)從按需查詢?nèi)蝿?wù)隊(duì)列中獲取最新的數(shù)據(jù)查詢請求; 即每隔一定的時(shí)間(如5秒)都會去按需查詢?nèi)蝿?wù)隊(duì)列中查找是否有新的數(shù)據(jù)查
詢請求,如果有,則將這些請求信息返回,否則直接返回。 步驟5.3,將獲取的數(shù)據(jù)查詢請求按照請求時(shí)間的先后進(jìn)行排序,統(tǒng)計(jì)分析數(shù)據(jù) 查詢請求的空間范圍變化趨勢,預(yù)測得出三維場景視點(diǎn)運(yùn)動方向和預(yù)可見空間范圍;
步驟5.4,根據(jù)當(dāng)前場景可見的數(shù)據(jù)內(nèi)容得到預(yù)取數(shù)據(jù)類型,將預(yù)可見空間范 圍和預(yù)取數(shù)據(jù)類型存入空間范圍預(yù)取任務(wù)隊(duì)列;根據(jù)預(yù)測的三維場景視點(diǎn)運(yùn)動方向和當(dāng) 前場景內(nèi)三維空間對象的多細(xì)節(jié)層次信息,預(yù)測可能發(fā)生多細(xì)節(jié)層次變化的三維空間對 象,將其ID和預(yù)測的多細(xì)節(jié)層次級別存入三維空間對象ID預(yù)取任務(wù)隊(duì)列;
其中,地形數(shù)據(jù)的多細(xì)節(jié)層次是指不同分辨率的金字塔層,而三維模型數(shù)據(jù)的 多細(xì)節(jié)層次是單個(gè)三維空間對象的不同精細(xì)程度的模型。三維模型數(shù)據(jù)多細(xì)節(jié)層次選擇 的依據(jù)主要根據(jù)視點(diǎn)位置與三維空間對象的距離來判斷的,根據(jù)預(yù)測視點(diǎn)運(yùn)動方向和空 間范圍變化趨勢,可以重新獲得視點(diǎn)與三維空間對象之間的距離,從而可以判斷是否需 要換更高或更低的細(xì)節(jié)層次。 地形數(shù)據(jù)多分辨率金字塔的選擇可以如下公式, <formula>formula see original document page 17</formula> 其中,l為地形數(shù)據(jù)塊的中心位置到視點(diǎn)的距離,d為地形數(shù)據(jù)塊的大小,C為 一個(gè)可以調(diào)節(jié)的因子,r為地形數(shù)據(jù)塊粗糙程度。當(dāng)它們滿足f〈 l這個(gè)公式的時(shí)候,則需要新分辨率的地形數(shù)據(jù)塊。 步驟5.5,監(jiān)測數(shù)據(jù)庫服務(wù)器端的資源利用率,當(dāng)資源較空閑時(shí),啟動預(yù)取多線 程,分別執(zhí)行空間范圍預(yù)取任務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,向三維空間數(shù)據(jù) 庫中預(yù)取符合數(shù)據(jù)查詢請求的三維空間數(shù)據(jù); 步驟5.6,將從三維空間空間數(shù)據(jù)庫中預(yù)取的三維空間數(shù)據(jù)保存在三維空間引擎 服務(wù)緩存中; 步驟5J,預(yù)取結(jié)束。 3.三維空間數(shù)據(jù)文件緩存管理模塊 本發(fā)明的客戶端三維空間數(shù)據(jù)文件緩存由三維空間數(shù)據(jù)文件緩存管理模塊來管 理。三維空間數(shù)據(jù)文件緩存管理模塊設(shè)置在客戶端硬盤上申請一塊連續(xù)的硬盤空間,將 從數(shù)據(jù)庫服務(wù)器端獲取的數(shù)據(jù)寫入三維空間數(shù)據(jù)文件緩存后,再次訪問同樣的數(shù)據(jù)時(shí), 不需要訪問數(shù)據(jù)庫服務(wù)器,可以直接從三維空間數(shù)據(jù)文件緩存中獲得,從而減少訪問數(shù) 據(jù)庫服務(wù)器端的次數(shù),減輕了數(shù)據(jù)庫服務(wù)器端和網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān),減少客戶端的等待時(shí) 間。 三維空間數(shù)據(jù)文件緩存的內(nèi)容主要包括三維空間數(shù)據(jù)索引文件和數(shù)據(jù)文件,通 過建立不同類型空間數(shù)據(jù)的索引文件與針對三維實(shí)時(shí)可視化等應(yīng)用的緩存文件存儲格式 來提高文件緩存的效率。其中三維空間數(shù)據(jù)索引文件包括地形索引文件、三維幾何數(shù)據(jù) 索引文件、紋理數(shù)據(jù)索引文件和共享模型數(shù)據(jù)索引文件。數(shù)據(jù)文件包括地形數(shù)據(jù)文件, 三維模型幾何數(shù)據(jù)文件、材質(zhì)數(shù)據(jù)文件、紋理數(shù)據(jù)文件和共享模型數(shù)據(jù)文件。三維空間 索引文件主要記錄空間對象的ID、空間對象三維包圍盒及空間對象在數(shù)據(jù)文件中的偏 移位置。數(shù)據(jù)文件主要記錄三維空間數(shù)據(jù)類型,數(shù)據(jù)長度和實(shí)際數(shù)據(jù)值。由于文件存 儲結(jié)構(gòu)比較緊湊,三維空間數(shù)據(jù)文件緩存也可省略分緩存池進(jìn)行存儲的處理。
4.多級緩存自適應(yīng)管理模塊 多級緩存自適應(yīng)管理模塊位于數(shù)據(jù)庫服務(wù)器端,用于統(tǒng)一管理客戶端和數(shù)據(jù)庫 服務(wù)器端的多級緩存,負(fù)責(zé)多級緩存的一致性維護(hù),對各級緩存進(jìn)行自適應(yīng)調(diào)整。
可以通過多級緩存自適應(yīng)管理模塊提供統(tǒng)一的緩存管理模塊注冊和查詢的接 口,客戶端的三維空間數(shù)據(jù)繪制緩存管理模塊、三維空間數(shù)據(jù)內(nèi)存緩存管理模塊、三維 空間數(shù)據(jù)文件緩存管理模塊和數(shù)據(jù)庫服務(wù)器端的三維空間引擎服務(wù)緩存管理模塊在使用 之前都先到多級緩存自適應(yīng)管理模塊中進(jìn)行注冊,通過多級緩存自適應(yīng)管理模塊中的消 息管理接口來提供各級緩存管理模塊的消息注冊,分發(fā)、過濾及處理結(jié)果的返回等事 務(wù),各級緩存管理模塊通過注冊感興趣的消息,監(jiān)聽與自己有關(guān)的消息,在收到自己支 持的消息后根據(jù)自身狀態(tài)對消息進(jìn)行響應(yīng),并通過消息總線返回處理結(jié)果,因此多級緩 存自適應(yīng)管理模塊記錄了各級緩存管理模塊的數(shù)據(jù)查詢請求和數(shù)據(jù)返回等各種事務(wù), 這使多級緩存自適應(yīng)管理模塊能統(tǒng)一的管理各級緩存管理模塊,通過對每級緩存的命中 率、空間利用率等信息統(tǒng)計(jì),使多級緩存管理模塊能夠高效的協(xié)同工作,自適應(yīng)的對各 級緩存進(jìn)行緩存空間大小的配置,保證各級緩存都能達(dá)到較高的命中率,減少網(wǎng)絡(luò)訪問 的通信量,減少按需加載時(shí)的低速硬盤存儲設(shè)備的讀取。 多級緩存自適應(yīng)管理模塊是各級緩存管理模塊共同工作的核心,通過多級緩存 自適應(yīng)管理模塊來完成各級緩存一致性的統(tǒng)一維護(hù),并配合各級緩存管理模塊共同保證每級緩存中數(shù)據(jù)的一致性。實(shí)施例的多級緩存自適應(yīng)管理模塊的多級緩存一致性維護(hù)實(shí) 現(xiàn)如圖6所示,包括以下步驟 (1)在三維空間數(shù)據(jù)引擎服務(wù)緩存中維護(hù)一個(gè)更新列表,定時(shí)向三維空間數(shù)據(jù)庫 中設(shè)置的數(shù)據(jù)更新日志管理表中查詢數(shù)據(jù)更新信息,若有更新信息,進(jìn)入以下步驟,否 則一致性維護(hù)操作結(jié)束; 其中,三維空間數(shù)據(jù)庫中的數(shù)據(jù)更新日志管理表中記錄了更新數(shù)據(jù)信息,包括 發(fā)生更新的數(shù)據(jù)ID號、更新時(shí)間等信息; (2)三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊根據(jù)數(shù)據(jù)更新日志管理表中已更新數(shù)據(jù) 的ID號,從三維空間數(shù)據(jù)庫中提取發(fā)生更新的三維空間數(shù)據(jù),并在三維空間數(shù)據(jù)引擎服 務(wù)緩存中查找同樣ID的三維空間數(shù)據(jù),并采用更新的三維空間數(shù)據(jù)替代這些三維空間數(shù) 據(jù),更新三維空間數(shù)據(jù)引擎服務(wù)緩存; (3)多級緩存自適應(yīng)管理模塊將數(shù)據(jù)庫服務(wù)器端的更新數(shù)據(jù)信息(包括更新的數(shù) 據(jù)ID號、更新時(shí)間等信息)發(fā)送到客戶端,客戶端的三維空間數(shù)據(jù)內(nèi)存緩存管理模塊根 據(jù)獲取的更新數(shù)據(jù)信息,將發(fā)生更新的三維空間數(shù)據(jù)設(shè)置為"臟"塊,從數(shù)據(jù)庫服務(wù)器 端獲取更新的三維空間數(shù)據(jù)后,再將這些三維空間數(shù)據(jù)的"臟"標(biāo)志清除;
(4)多級緩存自適應(yīng)管理模塊根據(jù)三維空間數(shù)據(jù)文件緩存的文件頭時(shí)間戳,將三 維空間數(shù)據(jù)文件緩存中發(fā)生變化的三維空間數(shù)據(jù)設(shè)置"臟"標(biāo)志,并在客戶端資源比較 空閑的時(shí)候,由三維空間數(shù)據(jù)文件緩存管理模塊主動更新三維空間數(shù)據(jù)文件緩存,并清 除"臟"標(biāo)志; (5)多級緩存一致性維護(hù)結(jié)束。
權(quán)利要求
一種基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),系統(tǒng)包括有客戶端和數(shù)據(jù)庫服務(wù)器端,客戶端和數(shù)據(jù)庫服務(wù)器端建立通信連接,其特征在于包括有四級緩存和相應(yīng)的各級緩存管理模塊,以及位于數(shù)據(jù)庫服務(wù)器端的多級緩存自適應(yīng)管理模塊和三維空間數(shù)據(jù)庫,各級緩存中基于三維空間數(shù)據(jù)的內(nèi)容類型建立有相應(yīng)緩存池;所述四級緩存和相應(yīng)的各級緩存管理模塊,即位于客戶端的三維空間數(shù)據(jù)繪制緩存和三維空間數(shù)據(jù)繪制緩存管理模塊、三維空間數(shù)據(jù)內(nèi)存緩存和三維空間數(shù)據(jù)內(nèi)存緩存管理模塊、三維空間數(shù)據(jù)文件緩存和三維空間數(shù)據(jù)文件緩存管理模塊,以及位于數(shù)據(jù)庫服務(wù)器端的三維空間數(shù)據(jù)引擎服務(wù)緩存和三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊;所述三維空間數(shù)據(jù)繪制緩存管理模塊,用于提供一級緩存,負(fù)責(zé)實(shí)時(shí)更新三維空間數(shù)據(jù)繪制緩存中用于三維場景可視化的三維空間數(shù)據(jù);所述三維空間數(shù)據(jù)內(nèi)存緩存管理模塊,用于提供二級緩存,負(fù)責(zé)三維空間數(shù)據(jù)內(nèi)存緩存的緩存空間申請、分配與回收,以及緩存中三維空間數(shù)據(jù)的查找與替換;所述三維空間數(shù)據(jù)文件緩存管理模塊,用于提供三級緩存,負(fù)責(zé)三維空間數(shù)據(jù)文件緩存的三維空間數(shù)據(jù)組織與管理;所述三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊,用于提供四級緩存,負(fù)責(zé)三維空間數(shù)據(jù)引擎服務(wù)緩存的三維空間數(shù)據(jù)預(yù)取、查找與替換;所述多級緩存自適應(yīng)管理模塊,統(tǒng)一管理四級緩存與相應(yīng)的各級緩存管理模塊,負(fù)責(zé)各級緩存的一致性維護(hù),以及對各級緩存進(jìn)行自適應(yīng)調(diào)整。;其中,三維空間數(shù)據(jù)繪制緩存、三維空間數(shù)據(jù)內(nèi)存緩存、三維空間數(shù)據(jù)引擎服務(wù)緩存和三維空間數(shù)據(jù)庫之間依次建立數(shù)據(jù)傳輸通道,三維空間數(shù)據(jù)文件緩存與三維空間數(shù)據(jù)內(nèi)存緩存之間建立數(shù)據(jù)傳輸通道;多級緩存自適應(yīng)管理模塊與各級緩存管理模塊分別建立傳輸管理信息的連接,各級緩存管理模塊分別與所管理的緩存建立傳輸管理信息的連接。
2. 采用權(quán)利要求1所述的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),其特征在于三維空 間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng)提供用于實(shí)現(xiàn)三維場景實(shí)時(shí)可視化的三維空間數(shù)據(jù),當(dāng)三維 場景發(fā)生變化需要三維空間數(shù)據(jù)繪制緩存中沒有的新三維空間數(shù)據(jù)時(shí),進(jìn)行以下步驟,步驟2.1,由三維空間數(shù)據(jù)繪制緩存管理模塊向三維空間數(shù)據(jù)內(nèi)存緩存管理模塊發(fā)出 數(shù)據(jù)查詢請求;步驟2.2,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊在三維空間數(shù)據(jù)內(nèi)存緩存中查找,如果命 中,則返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則未命中,則發(fā)送數(shù)據(jù)查詢請求到 三維空間數(shù)據(jù)文件緩存管理模塊;步驟2.3,三維空間數(shù)據(jù)文件緩存管理模塊在三維空間數(shù)據(jù)文件緩存中查找,如果 命中,則從三維空間數(shù)據(jù)文件緩存中讀取命中的數(shù)據(jù),返回給三維空間數(shù)據(jù)內(nèi)存緩存, 由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三維空間數(shù)據(jù)繪制緩存;否則未命 中,則發(fā)送數(shù)據(jù)查詢請求到數(shù)據(jù)庫服務(wù)器端;步驟2.4,數(shù)據(jù)庫服務(wù)器端接收客戶端的數(shù)據(jù)查詢請求,首先驗(yàn)證用戶的合法性,合 法則建立客戶端與數(shù)據(jù)庫服務(wù)器端的連接,否則不合法,則拒絕連接,返回連接錯(cuò)誤信 息;步驟2.5,建立連接后,數(shù)據(jù)查詢請求由三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊處理,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊在三維空間數(shù)據(jù)引擎服務(wù)緩存中查找是否命中,如 果命中,則將命中的數(shù)據(jù)返回到客戶端,否則未命中,則向三維空間數(shù)據(jù)庫發(fā)送數(shù)據(jù)查 詢請求;步驟2.6,三維空間數(shù)據(jù)庫根據(jù)數(shù)據(jù)查詢請求查找到命中的數(shù)據(jù)后,返回該數(shù)據(jù)到 三維空間數(shù)據(jù)引擎服務(wù)緩存,三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊將該數(shù)據(jù)返回給客戶 端,并保存在三維空間數(shù)據(jù)引擎服務(wù)緩存中;步驟2.7,三維空間數(shù)據(jù)內(nèi)存緩存管理模塊將數(shù)據(jù)庫服務(wù)器端所返回命中的數(shù)據(jù)保存 在三維空間數(shù)據(jù)內(nèi)存緩存中,并由三維空間數(shù)據(jù)內(nèi)存緩存管理模塊返回命中的數(shù)據(jù)到三 維空間數(shù)據(jù)繪制緩存;并在客戶端資源較空閑時(shí),將該數(shù)據(jù)保存到三維空間數(shù)據(jù)文件緩 存中。
3.根據(jù)權(quán)利要求1所述的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),其特征在于系統(tǒng)內(nèi)的三維空間對象通過唯一的三維空間對象ID進(jìn)行標(biāo)識,所述三維空間數(shù)據(jù)內(nèi)存緩存管理 模塊和三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊的三維空間對象替換,實(shí)現(xiàn)過程包括以下步 驟,步驟3.1,申請緩存空間,從緩存空間劃分出三維R樹索引數(shù)據(jù)緩存池、三維空間對 象緩存池,配置每個(gè)緩存池的大?。凰鋈SR樹索引數(shù)據(jù)緩存池,用于存儲三維空間數(shù)據(jù)的三維R樹空間索引數(shù)據(jù), 所述三維R樹空間索引數(shù)據(jù)包括有系統(tǒng)中所有三維空間對象的三維空間對象ID和最小外 包圍盒;所述三維空間對象緩存池,用于存儲三維空間對象;為三維空間對象緩存池中存有 的三維空間對象建立3DSRtree-LRFU鏈表,所述3DSRtree-LRFU鏈表基于三維R樹索引 數(shù)據(jù)來建立;步驟3.2,當(dāng)三維空間數(shù)據(jù)繪制緩存管理模塊發(fā)出的數(shù)據(jù)查詢請求是針對三維空間對 象的請求時(shí),首先在三維空間對象緩存池中查找是否命中,如果命中,則將命中的三維 空間對象訪問頻率+1,重新計(jì)算其最近訪問時(shí)間和訪問頻率的綜合加權(quán)值,更新命中的 三維空間對象在3DSRtree-LRFU鏈表中的位置,進(jìn)入步驟3.6 ;否則不命中,進(jìn)入步驟3.3 ;步驟3.3,判斷三維空間對象緩存池中是否有空閑空間,如果有則進(jìn)入步驟3.5,否 則按照步驟3.3.1 3.3.3選取待替換的三維空間對象;步驟3.3.1,在三維R樹索引數(shù)據(jù)緩存池中獲取滿足數(shù)據(jù)查詢請求的三維空間對象個(gè) 數(shù)為n ;步驟3.3.2,在3DSRtree-LRFU鏈表的尾部,依次選取nX 2個(gè)三維空間對象;步驟3.3.3,在三維R樹索引數(shù)據(jù)緩存池中對選取的nX 2個(gè)三維空間對象的最小包圍 盒進(jìn)行比較,選擇與數(shù)據(jù)查詢請求所涉及空間范圍最不臨近的n個(gè)三維空間對象作為待 替換的三維空間對象;步驟3.4,將選定的n個(gè)待替換的三維空間對象從3DSRtree-LRFU鏈表和三維空間對 象緩存池中刪除,更新3DSRtree-LRFU鏈表,進(jìn)入步驟3.5 ;步驟3.5,當(dāng)從三維空間數(shù)據(jù)文件緩存或三維空間數(shù)據(jù)引擎服務(wù)緩存或三維空間數(shù)據(jù) 庫中獲取命中的三維空間對象時(shí),將新獲取的所有三維空間對象訪問頻率設(shè)為O,計(jì)算當(dāng)前的最近訪問時(shí)間和訪問頻率的綜合權(quán)值,根據(jù)該綜合權(quán)值將新獲取的三維空間對象插 入到3DSRtree-LRFU鏈表中; 步驟3.6,替換操作結(jié)束。
4. 根據(jù)權(quán)利要求1所述的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),其特征在于三維空 間數(shù)據(jù)引擎服務(wù)緩存管理模塊從申請的緩存空間中劃分出空間查詢范圍緩存池,用于存 儲已查詢過的空間范圍,所述三維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊的緩存數(shù)據(jù)查找,實(shí) 現(xiàn)過程包括以下步驟,步驟4.1,接收客戶端發(fā)送的數(shù)據(jù)查詢請求,分析數(shù)據(jù)查詢請求的類型,若為空間范 圍查詢請求,進(jìn)入步驟4.2,否則為三維空間對象ID查詢請求,進(jìn)入步驟4.5;步驟4.2,將數(shù)據(jù)查詢請求所涉及空間范圍,在空間查詢范圍緩存池中進(jìn)行比較,若 在空間查詢范圍緩存池中未找到與該請求所涉及空間范圍重合或相交的空間范圍,則進(jìn) 入步驟4.3,否則進(jìn)入步驟4.4;步驟4.3,以數(shù)據(jù)查詢請求所涉及空間范圍作為空間查詢條件,在三維空間數(shù)據(jù)庫中 查詢所有該空間范圍內(nèi)的所有符合要求的三維空間數(shù)據(jù),進(jìn)入步驟4.7 ;步驟4.4,在三維R樹索引數(shù)據(jù)緩存池中查找該空間范圍內(nèi)的所有符合查詢請求的三 維空間對象ID,進(jìn)入步驟4.5;步驟4.5,將獲取的三維空間對象ID在三維空間對象緩存池中查找,將命中的三維空 間對象直接返回,將未命中的三維空間對象ID放在按需查詢?nèi)蝿?wù)隊(duì)列中;步驟4.6,按需查詢?nèi)蝿?wù)請求隊(duì)列中的查詢?nèi)蝿?wù)進(jìn)行分解,啟動多線程向三維空間數(shù) 據(jù)庫中提取滿足查詢請求的三維空間數(shù)據(jù);步驟4.7,將從三維空間數(shù)據(jù)庫獲取的三維空間數(shù)據(jù)返回給客戶端,并同時(shí)保存在三 維空間數(shù)據(jù)引擎服務(wù)緩存中;步驟4.8,查找結(jié)束。
5. 根據(jù)權(quán)利要求1所述的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),其特征在于所述三 維空間數(shù)據(jù)引擎服務(wù)緩存管理模塊的緩存數(shù)據(jù)預(yù)取,實(shí)現(xiàn)過程包括以下步驟,步驟5.1,三維空間引擎服務(wù)緩存管理模塊建立按需查詢?nèi)蝿?wù)隊(duì)列、空間范圍預(yù)取任 務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,在按需查詢?nèi)蝿?wù)隊(duì)列中保存客戶端發(fā)送過來的 全部數(shù)據(jù)查詢請求;步驟5.2,定時(shí)從按需查詢?nèi)蝿?wù)隊(duì)列中獲取最新的數(shù)據(jù)查詢請求;步驟5.3,將獲取的數(shù)據(jù)查詢請求按照請求時(shí)間的先后進(jìn)行排序,統(tǒng)計(jì)分析數(shù)據(jù)查詢 請求的空間范圍變化趨勢,預(yù)測得出三維場景視點(diǎn)運(yùn)動方向和預(yù)可見空間范圍;步驟5.4,根據(jù)當(dāng)前場景可見的數(shù)據(jù)內(nèi)容得到預(yù)取數(shù)據(jù)類型,將預(yù)可見空間范圍和預(yù) 取數(shù)據(jù)類型存入空間范圍預(yù)取任務(wù)隊(duì)列;根據(jù)預(yù)測的三維場景視點(diǎn)運(yùn)動方向和當(dāng)前場景 內(nèi)三維空間對象的多細(xì)節(jié)層次信息,預(yù)測可能發(fā)生多細(xì)節(jié)層次變化的三維空間對象,將 其ID和預(yù)測的多細(xì)節(jié)層次級別存入三維空間對象ID預(yù)取任務(wù)隊(duì)列;步驟5.5,監(jiān)測數(shù)據(jù)庫服務(wù)器端的資源利用率,當(dāng)資源較空閑時(shí),啟動預(yù)取多線程, 分別執(zhí)行空間范圍預(yù)取任務(wù)隊(duì)列和三維空間對象ID預(yù)取任務(wù)隊(duì)列,向三維空間數(shù)據(jù)庫中 預(yù)取符合數(shù)據(jù)查詢請求的三維空間數(shù)據(jù);步驟5.6,將從三維空間空間數(shù)據(jù)庫中預(yù)取的三維空間數(shù)據(jù)保存在三維空間引擎服務(wù)緩存中;步驟5.7,預(yù)取結(jié)束。
全文摘要
本發(fā)明涉及一種基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)自適應(yīng)多級緩存系統(tǒng),該系統(tǒng)的三維空間數(shù)據(jù)多級緩存采用緩存池的設(shè)計(jì)思想,通過基于數(shù)據(jù)內(nèi)容的三維空間數(shù)據(jù)分類方法,將三維空間數(shù)據(jù)在緩存進(jìn)行分類組織、分池管理;其中包括位于客戶端的三維空間數(shù)據(jù)繪制緩存(一級緩存)、三維空間數(shù)據(jù)內(nèi)存緩存(二級緩存)、三維空間數(shù)據(jù)文件緩存(三級緩存)、以及位于數(shù)據(jù)庫服務(wù)器端的三維空間數(shù)據(jù)引擎服務(wù)緩存(四級緩存)。四級緩存分別由各自的緩存管理模塊來控制,并通過多級緩存自適應(yīng)管理模塊統(tǒng)一管理客戶端和數(shù)據(jù)庫服務(wù)器端的多級緩存,自適應(yīng)對各級緩存進(jìn)行調(diào)整。本發(fā)明大幅提高了大規(guī)模三維空間數(shù)據(jù)動態(tài)調(diào)度的效率,為滿足三維實(shí)時(shí)可視化提供了有效的解決方法。
文檔編號G06F17/30GK101692229SQ20091006337
公開日2010年4月7日 申請日期2009年7月28日 優(yōu)先權(quán)日2009年7月28日
發(fā)明者張葉廷, 朱慶, 李曉明, 杜志強(qiáng) 申請人:武漢大學(xué)