葉云霜,林偉華,劉福江,董曉瑩
(中國(guó)地質(zhì)大學(xué)(武漢) 信息工程學(xué)院,湖北 武漢 430000)
對(duì)于海量空間數(shù)據(jù)的高效存儲(chǔ)、管理等問(wèn)題的研究,已經(jīng)發(fā)展了近半個(gè)世紀(jì),國(guó)內(nèi)外學(xué)者已經(jīng)做了大量的研究工作,并取得了顯著成果。如面向?qū)ο蟮年P(guān)系型數(shù)據(jù)庫(kù),主要基于關(guān)系型數(shù)據(jù)庫(kù)開發(fā)支持空間數(shù)據(jù)管理的擴(kuò)展模塊。再有就是空間數(shù)據(jù)引擎中間件技術(shù),使得空間數(shù)據(jù)可以用關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)并用于GIS平臺(tái)上的各種復(fù)雜查詢與分析,能夠與特定GIS平臺(tái)緊密結(jié)合,空間處理效率更高。后來(lái),Thomas Kyte[1](2005)詳細(xì)地闡述了關(guān)系數(shù)據(jù)庫(kù)中分區(qū)的概念、策略、擴(kuò)展及索引分區(qū);目前關(guān)系數(shù)據(jù)庫(kù)中的分區(qū)技術(shù)在管理關(guān)系型數(shù)據(jù)中應(yīng)用較廣泛,如徐暢等(2017)采用影像獲取難易程度分區(qū)及統(tǒng)籌學(xué)的思想,設(shè)計(jì)第一次全國(guó)地理國(guó)情普查標(biāo)準(zhǔn)時(shí)點(diǎn)核準(zhǔn)影像獲取及覆蓋方案,實(shí)現(xiàn)對(duì)普查標(biāo)準(zhǔn)時(shí)點(diǎn)核準(zhǔn)遙感影像任務(wù)區(qū)的優(yōu)化覆蓋[2]。而其在空間數(shù)據(jù)管理中應(yīng)用較少,胡小彭等(2017)提出了一種基于分區(qū)存儲(chǔ)技術(shù)的空間數(shù)據(jù)入庫(kù)解決方案,并應(yīng)用到安徽省地理國(guó)情普查中,驗(yàn)證了分區(qū)存儲(chǔ)數(shù)據(jù)庫(kù)的讀取效率明顯高于非分區(qū)存儲(chǔ)數(shù)據(jù)庫(kù)[3]。張小文等(2011)以SuperMap地理信息系統(tǒng)控件為基礎(chǔ),設(shè)計(jì)與實(shí)現(xiàn)了分區(qū)技術(shù)的靈活管理,與預(yù)報(bào)員交互的預(yù)報(bào)流程和預(yù)報(bào)結(jié)果的Web發(fā)布等功能[4]。但是,當(dāng)矢量圖層要素量達(dá)到10萬(wàn)條時(shí),數(shù)據(jù)庫(kù)查詢性急劇下降,管理負(fù)擔(dān)增大。如何利用關(guān)系型數(shù)據(jù)庫(kù)的分區(qū)技術(shù)管理大容量的空間數(shù)據(jù)尤其是要素量達(dá)到千萬(wàn)級(jí)別以上的矢量圖層數(shù)據(jù),仍是困擾廣大空間數(shù)據(jù)用戶的主要問(wèn)題之一。
因此,文中采用不同管理方式、不同分區(qū)粒度、不同索引方式的分區(qū)技術(shù)來(lái)系統(tǒng)管理空間大圖層數(shù)據(jù),并通過(guò)實(shí)驗(yàn)驗(yàn)證分區(qū)技術(shù)對(duì)海量要素圖層數(shù)據(jù)的存儲(chǔ)具有優(yōu)化作用。
數(shù)據(jù)分區(qū)技術(shù)是按照約定的方式從物理上劃分庫(kù)表結(jié)構(gòu),但分區(qū)表中的每個(gè)分區(qū)在邏輯上是獨(dú)立的。如果選擇合適的數(shù)據(jù)分區(qū)策略,會(huì)大大加快數(shù)據(jù)的查詢速度[5-7]。
由于分區(qū)表不能通過(guò)ArcGIS等GIS平臺(tái)創(chuàng)建,因此需要先在數(shù)據(jù)庫(kù)中建好表結(jié)構(gòu)。構(gòu)建過(guò)程如下:
(1)在GIS平臺(tái)創(chuàng)建企業(yè)級(jí)地理空間數(shù)據(jù)庫(kù)(create enterprise geodatabase),創(chuàng)建SDE用戶、SDE表空間、安裝SDE Repository(SDE資料檔案庫(kù),包含空間數(shù)據(jù)字典和ArcSDE軟件程序包);
(2)在關(guān)系型數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)存儲(chǔ)所用表空間、用戶并授權(quán);
(3)在關(guān)系型數(shù)據(jù)庫(kù)中創(chuàng)建分區(qū)表,并創(chuàng)建全局空間索引;
(4)在關(guān)系型數(shù)據(jù)庫(kù)中創(chuàng)建分區(qū)表,并創(chuàng)建本地空間索引;
(5)按設(shè)置好的規(guī)則執(zhí)行數(shù)據(jù)存儲(chǔ)。
將數(shù)據(jù)按照分區(qū)進(jìn)行組織后,數(shù)據(jù)在邏輯上是同一張表,查詢時(shí)表名沒有區(qū)別,但實(shí)際數(shù)據(jù)存放在不同的分區(qū)中,可能存放于不同的服務(wù)器等存儲(chǔ)設(shè)備上。在地圖窗口進(jìn)行查詢?yōu)g覽時(shí)是整張表同時(shí)展示在地圖窗口中,那么在執(zhí)行空間查詢?nèi)缈蜻x時(shí)數(shù)據(jù)庫(kù)可能同時(shí)需要訪問(wèn)多個(gè)分區(qū),需要考慮是否先找到與感興趣區(qū)域相交的分區(qū)再進(jìn)行查詢;再到分區(qū)中執(zhí)行相關(guān)查詢返回需要的結(jié)果,或者直接就只使用感興趣區(qū)域作為查詢條件。分區(qū)的算法有3種,分別命名為part_query1、part_query2、part_query3,其偽代碼分別為:
(1)part_query1。
根據(jù)slfw(矢量范圍底圖),判斷BR(boundary rectangle,范圍矩形)與哪些矢量底圖相交,得到相交矢量范圍列表slfw_lists。將slfw_lists作為查詢條件之一,SQL語(yǔ)句樣式如下:
“select shape from part_table t where slfwdm in (slfw_lists) sdo_filter (t.shape,BR))”;
(2)part_query2。
將得到的矢量范圍列表slfw_lists的過(guò)程內(nèi)嵌到SQL語(yǔ)句里,其樣式如下:
“select shape from part_table t where slfwdm in (select slfwdm from slfw t where sdo_filter(t.shape,BR));sdo_filter(t.shape,BR))”;
(3)part_query3。
僅使用BR作為查詢條件,SQL語(yǔ)句樣式如下:
Select shape frompart_table t where sdo_filter(t.shape,BR));
其中,part_query1、part_query2都是先用矢量范圍底圖與范圍矩形進(jìn)行相交查詢獲取目標(biāo)要素所在的矢量范圍代碼,然后再到圖層元數(shù)據(jù)表中根據(jù)矢量范圍代碼獲取目標(biāo)要素所在子表名,然后再到相應(yīng)的子表中做精準(zhǔn)查找。而part_query1和part_query2的區(qū)別在于,part_query2同樣將表示在各個(gè)子表中查找的sql語(yǔ)句保存到一個(gè)總的sql語(yǔ)句中只執(zhí)行一次在分表中的精準(zhǔn)查找,嘗試以此來(lái)提高效率;part_query3則是利用分區(qū)表向上只有一個(gè)圖名、邏輯上不分離的特性不考慮子表直接做大表與BR的相交查詢得到目標(biāo)結(jié)果要素。
1.3.1 技術(shù)流程
最優(yōu)分區(qū)方法的確定是通過(guò)采用不同分區(qū)機(jī)制來(lái)確立的。首先對(duì)存儲(chǔ)海量要素圖層數(shù)據(jù)的數(shù)據(jù)庫(kù)大表進(jìn)行分區(qū)拆分。其次,深入研究應(yīng)用分區(qū)技術(shù)管理海量要素圖層數(shù)據(jù)時(shí)的具體問(wèn)題:分區(qū)鍵的確定、不同分區(qū)粒度的選擇、空間索引的建立。然后,利用事件追蹤查詢時(shí)數(shù)據(jù)庫(kù)內(nèi)部的操作,結(jié)合前面的實(shí)驗(yàn)結(jié)果進(jìn)一步研究不同的分區(qū)粒度及索引方式對(duì)查詢效率的影響。最后,確定大表拆分方案。技術(shù)流程如圖1所示。
1.3.2 分區(qū)鍵的選擇
分區(qū)時(shí)需要選擇一個(gè)屬性項(xiàng)作為分區(qū)作用對(duì)象來(lái)完成表的分區(qū),即分區(qū)鍵。分區(qū)鍵的選擇需要考慮被訪問(wèn)次數(shù)最多的那些屬性字段(例如屬性字段“用途”訪問(wèn)次數(shù)最多,則把用途相似的要素放在同一分區(qū)中)、歸檔頻率(歸檔數(shù)據(jù)顯然使用時(shí)間字段實(shí)現(xiàn)范圍分區(qū)是較好的選擇[8-10])等。
圖1 技術(shù)流程
1.3.3 分區(qū)粒度的選擇
在確定了分區(qū)鍵之后,就需要考慮分區(qū)粒度的選擇[11]。分區(qū)粒度的選擇沒有固定的模式或者原則,比如:便于系統(tǒng)維護(hù)考慮的是多大的分區(qū)能夠維護(hù)方便,比如銀行系統(tǒng)的用戶信息存儲(chǔ),按市分區(qū)比按省分區(qū)后期維護(hù)方便,則采用用戶信息存儲(chǔ)按市分區(qū);便于歸檔考慮的是歸檔頻率,比如對(duì)小區(qū)用戶管理,按單元樓歸檔比按門牌號(hào)進(jìn)行歸檔方便,不同目的采用的分區(qū)方法不同。
1.3.4 索引機(jī)制的構(gòu)建
在分區(qū)之后再對(duì)數(shù)據(jù)創(chuàng)建索引雙管齊下能夠快速提提升查詢檢索效率[12-14]。關(guān)系型數(shù)據(jù)庫(kù)中管理空間數(shù)據(jù)使用較多的是四叉樹索引和R樹索引。與四叉樹索引相比,R樹索引更自動(dòng)智能,具有較高的存儲(chǔ)利用率。
文中測(cè)試環(huán)境的硬件設(shè)備包括GIS應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、測(cè)試機(jī)。軟件設(shè)備包括Windows Server 2008、Arcgis[15]服務(wù)器10.2.2版本、Linux[16]操作系統(tǒng)、Oracle[17-18]關(guān)系數(shù)據(jù)庫(kù)11g、旗艦版Microsoft Windows7 、IE測(cè)試瀏覽器。
為了驗(yàn)證數(shù)據(jù)大表拆分方案分區(qū)在包含海量要素的大圖層(一般值要素量超過(guò)200萬(wàn)條圖層)上的適用性,以貴州省87個(gè)縣的地類圖斑數(shù)據(jù)為研究對(duì)象,該地類圖斑圖層數(shù)據(jù)包含的要素總數(shù)為6 695 554條。查詢時(shí)隨機(jī)從貴州省省域內(nèi)選擇3個(gè)樣本范圍,作為空間查詢時(shí)的查詢范圍。將6*3個(gè)樣本范圍分別與3個(gè)實(shí)驗(yàn)主體進(jìn)行空間查詢運(yùn)算,記錄每次查詢的耗時(shí)。
文中研究的海量要素圖層,在其應(yīng)用場(chǎng)景中,當(dāng)在地圖窗口中對(duì)這些矢量數(shù)據(jù)進(jìn)行瀏覽或查詢時(shí),多數(shù)情況下其本質(zhì)為對(duì)集中連片要素集合的訪問(wèn),這些集中連片要素地理位置很接近,通常情況下歸屬于一個(gè)或幾個(gè)行政單元。因此,考慮到若能夠在進(jìn)行矢量數(shù)據(jù)查詢時(shí),根據(jù)行政區(qū)化過(guò)濾和縮小數(shù)據(jù)庫(kù)中檢索范圍,則能夠起到訪問(wèn)較少數(shù)據(jù)而較快找到滿足條件數(shù)據(jù)的效果;另外,在多用戶并發(fā)訪問(wèn)場(chǎng)景下,同一時(shí)刻不同用戶訪問(wèn)的數(shù)據(jù)通常是不同地理范圍的,那么若不同地理范圍的數(shù)據(jù)存放在不同的存儲(chǔ)設(shè)備上,則能夠起到IO負(fù)載均衡的效果。因此,文中選擇以行政區(qū)代碼作為分區(qū)鍵、將相同行政區(qū)代碼的要素存放在同一個(gè)分區(qū)中的分區(qū)策略。
以地類圖斑為測(cè)試數(shù)據(jù),設(shè)計(jì)實(shí)驗(yàn)測(cè)試如何選擇分區(qū)粒度。國(guó)內(nèi)行政區(qū)劃大致可分為:國(guó)、省、市、縣、鄉(xiāng)鎮(zhèn)五個(gè)級(jí)別,而分區(qū)是將分區(qū)后的數(shù)據(jù)分配單獨(dú)的段,國(guó)內(nèi)有40 446個(gè)鄉(xiāng)鎮(zhèn)級(jí)別的區(qū)域,若將數(shù)據(jù)分成40 446個(gè),會(huì)導(dǎo)致分區(qū)數(shù)據(jù)過(guò)于分散、細(xì)致,數(shù)據(jù)的管理和查詢功能性能降低,驗(yàn)證該種分區(qū)方案必要性不高。因此,文中主要考慮驗(yàn)證“按省分區(qū)”、“按市分區(qū)”、“按縣分區(qū)”這三種分區(qū)方式的效率。
為了模擬真實(shí)應(yīng)用場(chǎng)景,提高查詢檢索效率,在對(duì)數(shù)據(jù)進(jìn)行分區(qū)之后也為其創(chuàng)建空間索引,空間索引的類型均選擇適合空間對(duì)象的R樹索引。與表分區(qū)一樣,索引也可以分區(qū),索引分區(qū)方法有本地分區(qū)索引和全局分區(qū)索引。本地分區(qū)索引指的是每個(gè)表分區(qū)都有一個(gè)索引分區(qū),而且只索引該表分區(qū),是一對(duì)一的關(guān)系。全局分區(qū)索引指的是索引存儲(chǔ)時(shí)整體按照范圍或者散列進(jìn)行分區(qū)。此時(shí),一個(gè)索引分區(qū)可能指向任何(和所有)表分區(qū),一個(gè)表分區(qū)的數(shù)據(jù)也可能存在于任何一個(gè)索引分區(qū)。此外,全局索引還可以不進(jìn)行分區(qū),整體存儲(chǔ)在一個(gè)分區(qū)中。
2.3.1 不同分區(qū)方案查詢效率分析
首先,為得到不同分區(qū)方案下的查詢效率,將全國(guó)范圍內(nèi)的分別為千萬(wàn)級(jí)和億級(jí)要素量的兩組數(shù)據(jù)分別按照“未分區(qū)+空間索引”、“按縣分區(qū)+本地空間索引”、“按縣分區(qū)+全局空間索引”、“按市分區(qū)+本地空間索引”、“按市分區(qū)+全局空間索引”、“按省分區(qū)+本地空間索引”、“按省分區(qū)+全局空間索引”分為七組。對(duì)于分組后的數(shù)據(jù)分別選取1∶500、1∶2 000、1∶10 000、1∶25 000、1∶50 000、1∶100 000六個(gè)覆蓋常用的大中小查詢場(chǎng)景,針對(duì)全局和本地空間索引根據(jù)上述結(jié)論分別采用適合其的part_query3(全局空間索引)和part_query2(本地空間索引)算法在全國(guó)范圍內(nèi)隨機(jī)生成各比例尺的查詢范圍,在Oracle數(shù)據(jù)庫(kù)中進(jìn)行空間查詢,記錄查詢耗時(shí)。最后,采用百分位數(shù)回歸法[19]計(jì)算平均值和第100位百分位數(shù),結(jié)果如表1~表4所示。并對(duì)查詢結(jié)果做歸一化處理(用不同分區(qū)方案的查詢統(tǒng)計(jì)結(jié)果與當(dāng)前比例尺下查詢耗時(shí)最低的值的比值表示)。
表1 千萬(wàn)級(jí)要素量下不同分區(qū)方案查詢效率平均值 s
注:表中字體加粗部分圈出的為該行的最小值,表示該比例尺下查詢耗時(shí)最短。
對(duì)查詢效率進(jìn)行排序:按縣+全局>按省+全局>未分區(qū)>按市+全局>按省+本地>按市+本地>按縣+本地。
表2 千萬(wàn)級(jí)要素量下不同分區(qū)方案查詢效率第100百分位數(shù) s
注:表中字體加粗部分圈出的為該行的最小值,表示該比例尺下查詢耗時(shí)最短。
對(duì)查詢效率進(jìn)行排序:按縣+全局>按省+全局>按市+全局>未分區(qū)>按省+本地>按市+本地>按縣+本地。
表3 億級(jí)要素量下不同分區(qū)方案查詢效率平均值 s
注:表中字體加粗部分圈出的為該行的最小值,表示該比例尺下查詢耗時(shí)最短。
對(duì)查詢效率進(jìn)行排序:按縣+全局>按省+全局>按市+全局>未分區(qū)>按省+本地>按市+本地>按縣+本地。
表4 億級(jí)要素量下不同分區(qū)方案查詢效率第100百分位數(shù) s
注:表中字體加粗部分圈出的為該行的最小值,表示該比例尺下查詢耗時(shí)最短。
對(duì)查詢效率進(jìn)行排序:按縣+全局>按省+全局>未分區(qū)>按市+全局>按省+本地>按市+本地>按縣+本地。
觀察比較表1~表4可知:
(1)對(duì)于文中的實(shí)驗(yàn)數(shù)據(jù),“按縣+全局”索引效率更高;
(2)全局索引比本地索引效率更高;
(3)索引為全局索引時(shí),三種分區(qū)粒度的效率從高到低分別是:按縣分區(qū)、按省分區(qū)、按市分區(qū);
(4)索引為本地索引時(shí),三種分區(qū)粒度的效率從高到低分別是:按省分區(qū)、按市分區(qū)、按縣分區(qū),分區(qū)粒度越大效率越高。
2.3.2 分區(qū)粒度對(duì)查詢效率的影響分析
已知查詢檢索的要素集數(shù)據(jù)量越大則耗時(shí)越久,但在數(shù)據(jù)庫(kù)中幾百與幾千甚至幾萬(wàn)條記錄查看時(shí)實(shí)際上相差甚小,因此只要合理選擇分區(qū)粒度,這都不會(huì)是影響查詢效率的主要原因,文中主要研究除此之外由于分區(qū)而額外增加的查詢操作。從elapsed中的三種數(shù)據(jù)庫(kù)調(diào)用類型parse、execute、fetch入手,利用tkprof分析trc文件。以按縣分區(qū)查詢中耗時(shí)較多的一系列SQL為參照,比較相同SQL在按省分區(qū)空間查詢中的耗時(shí)。以數(shù)據(jù)字典表Seg$查詢?yōu)槔绫?所示。
表5 Seg$表中查詢過(guò)程統(tǒng)計(jì)分析
注:表中字體加粗的為執(zhí)行次數(shù)。
SQL查詢的對(duì)象是seg$,按縣分區(qū)對(duì)SQL ID為9tgj4g8y4rwy8的SQL執(zhí)行了17 796次,總耗時(shí)間為1.75 s;而按省分區(qū)對(duì)相同SQL的執(zhí)行次數(shù)僅為383次,總耗時(shí)為0.05 s。在此Lobfrag$、Obj$、Indpart$、Obj$(2)、Tabpart$、SDO_FILTER數(shù)據(jù)字典表不做贅述,得出:
(1)分區(qū)越多、表上的lob column越多,對(duì)數(shù)據(jù)字典表的訪問(wèn)次數(shù)越多。
(2)全局空間索引下,數(shù)據(jù)經(jīng)過(guò)分區(qū)后,不同分區(qū)粒度之所效率會(huì)有不同,差異在于對(duì)于數(shù)據(jù)字典表的訪問(wèn)次數(shù)上,查詢效率與分區(qū)粒度的大小呈負(fù)相關(guān),在主要幾個(gè)與分區(qū)相關(guān)的數(shù)據(jù)字典表中具有如表6的關(guān)系。
表6 全局空間索引下各數(shù)據(jù)字典的訪問(wèn)次數(shù)與分區(qū)個(gè)數(shù)的關(guān)系
其中,X表示分區(qū)數(shù),Y表示lob column 個(gè)數(shù)。
2.3.3 索引方式對(duì)查詢效率的影響分析
索引也可以分區(qū),為了研究索引分區(qū)對(duì)空間數(shù)據(jù)查詢效率的影響,同樣使用范圍為全國(guó)的要素量在千萬(wàn)級(jí)別的數(shù)據(jù)進(jìn)行實(shí)驗(yàn),將數(shù)據(jù)分別按照按縣和按省進(jìn)行分區(qū)并且創(chuàng)建本地空間索引。同樣開啟10046事件[20](Oracle中獲取最完整的sql執(zhí)行計(jì)劃的一個(gè)功能),跟蹤SDO_FILTER操作。使用tkpof分析trc文件中耗時(shí)最多的SQL,對(duì)根據(jù)綁定變量的值分析不同SQL(主要是對(duì)數(shù)據(jù)字典的遞歸查詢)查詢的數(shù)據(jù)內(nèi)容。比較在使用分區(qū)索引時(shí)所查詢的數(shù)據(jù)字典內(nèi)容,與在使用全局索引時(shí)查詢的數(shù)據(jù)字典內(nèi)容。在使用分區(qū)空間索引時(shí),按縣分區(qū)與按省分區(qū)對(duì)數(shù)據(jù)字典的訪問(wèn)次數(shù)及返回記錄數(shù)如下。同樣為了分析SQL語(yǔ)句解析次數(shù)與分區(qū)數(shù)的關(guān)系,將查詢語(yǔ)句中的綁定變量提取出來(lái)與相應(yīng)的數(shù)據(jù)字典表進(jìn)行連接,以Seg$表和Obj$表的查詢統(tǒng)計(jì)過(guò)程為例,見表7、表8。
表7 Seg$表中查詢過(guò)程統(tǒng)計(jì)分析
注:表中字體加粗的為執(zhí)行次數(shù)。
查詢內(nèi)容包括LOB INDEX PRTITION、LOB PARTITION、TABLE PARTITION、少量sys和mdsys用戶下的表和其他表。
以按縣分區(qū)表為例,包括:
INDEX PARTITION:2 531*3=7 593
此處不包括分區(qū)空間索引,僅包括LOB INDEX PARTITION;
LOB PARTITION:2 531*3=7 593
TABLE PARTITION為2 531。
表8 Obj$表中查詢過(guò)程統(tǒng)計(jì)分析
注:表中字體加粗的為執(zhí)行次數(shù)。
查詢內(nèi)容包括LOB PARTITION、SPATIAL INDEX PARTITION相關(guān)的TABLE PARTITION。
以按省分區(qū)表為例,包括:
LOB PARTITION:43*3=129
INDEXPARTITION為43,此處包括SPATIAL INDEX PARTITION,不包括LOB INDEX PARTITION
TABLE PARTITION:(僅包括與查詢范圍相關(guān)的分區(qū),可忽略不計(jì))
Lobfrag$、Indpart$、Obj$(2)、Tabpart$不做贅述,得出訪問(wèn)次數(shù)與分區(qū)個(gè)數(shù)的關(guān)系見表9。
表9 本地空間索引下各數(shù)據(jù)字典的訪問(wèn)次數(shù)與分區(qū)個(gè)數(shù)的關(guān)系
其中,X表示索引分區(qū)數(shù),Y表示lob column個(gè)數(shù)(與數(shù)據(jù)本身格式有關(guān))。已知為所有的數(shù)據(jù)分別按縣和按省進(jìn)行了分區(qū)并為其建立了全局空間索引。根據(jù)表9可知:
(1)對(duì)數(shù)據(jù)字典訪問(wèn)次數(shù)與索引分區(qū)的粒度線性相關(guān),分區(qū)數(shù)越多,訪問(wèn)次數(shù)越多;
(2)索引分區(qū)與數(shù)據(jù)分區(qū)相似,均是在查詢對(duì)象的數(shù)據(jù)量達(dá)到一定程度后,即索引分區(qū)是在要查詢的索引池中數(shù)量達(dá)到影響查詢效率時(shí)可以考慮進(jìn)行索引分區(qū);
(3)索引是提升查詢效率最有效的方法。文中實(shí)驗(yàn)是在普通查詢環(huán)境下(即不以索引主鍵為查詢條件)的查詢效率分析,如果查詢條件中包含分區(qū)鍵使用本地空間索引將可以直接定位到相應(yīng)的分區(qū)中,查詢對(duì)象將僅限于那個(gè)子分區(qū),在這樣的查詢情景下本地空間索引將會(huì)有更高的查詢效率。
在前人利用關(guān)系型數(shù)據(jù)庫(kù)的分區(qū)技術(shù)不能有效管理大容量的空間數(shù)據(jù)尤其是要素量達(dá)到千萬(wàn)級(jí)別以上的矢量圖層數(shù)據(jù)的基礎(chǔ)上,文中采用不同管理方式、不同分區(qū)粒度、不同索引方式及其組合的分區(qū)技術(shù)來(lái)系統(tǒng)管理空間大圖層數(shù)據(jù),并通過(guò)實(shí)驗(yàn)驗(yàn)證了分區(qū)技術(shù)對(duì)海量要素圖層數(shù)據(jù)的存儲(chǔ)具有優(yōu)化作用。得出結(jié)論:(1)分區(qū)技術(shù)在對(duì)海量要素圖層數(shù)據(jù)存儲(chǔ)和查詢中具有優(yōu)化作用;(2)僅僅考慮查詢效率時(shí),如果在分區(qū)后各個(gè)子表中查詢操作本身差別不大,在不使用分區(qū)鍵作為查詢條件的查詢情境中,分區(qū)粒度越大則效率越高;(3)僅僅考慮查詢效率時(shí),使用分區(qū)鍵作為查詢條件時(shí),則本地分區(qū)索引效率更高;否則全局空間索引在查詢情景中表現(xiàn)更優(yōu)等。該方法為更好地應(yīng)用分區(qū)技術(shù)解決實(shí)際遇到的存儲(chǔ)與檢索效率問(wèn)題提供技術(shù)支持。但是,用分區(qū)技術(shù)來(lái)管理其他類型的數(shù)據(jù)時(shí),分區(qū)鍵的確定、分區(qū)粒度的選擇和索引方式的確定不能一概而論,還應(yīng)根據(jù)實(shí)際情況確定,這也是下一步研究的內(nèi)容。