基于數(shù)據(jù)庫的空間索引方式,與前兩種索引方式有著本質(zhì)的不同,比如,存儲方式、實現(xiàn)手段等。
1.索引實質(zhì)不同
如果說基于文件的索引主要是優(yōu)化I/O,基于內(nèi)存的索引主要是優(yōu)化CPU計算量,那么基于數(shù)據(jù)庫的索引則既要優(yōu)化I/O,又要優(yōu)化CPU計算量。在基于文件的索引和基于內(nèi)存的索引的實現(xiàn)過程中,程序員可以從數(shù)據(jù)結(jié)構(gòu),存儲結(jié)構(gòu)等多方面靈活控制實現(xiàn)的細節(jié),而且大部分的工作都集中在數(shù)據(jù)結(jié)構(gòu),存儲結(jié)構(gòu)的設(shè)計上。但是,在基于數(shù)據(jù)庫的索引中,由于數(shù)據(jù)庫系統(tǒng)本身高度封裝,用戶調(diào)用接口集中在SQL語言的使用,對數(shù)據(jù)全部操作都是通過SQL調(diào)用實現(xiàn)的。對于同一個目的可以編寫出不同的SQL語句,但不同語句間的執(zhí)行效率是有很大差別的。所以,基于數(shù)據(jù)庫的索引,實質(zhì)上是基于數(shù)據(jù)庫的SQL語言優(yōu)化,通過適當?shù)谋斫Y(jié)構(gòu)設(shè)計,表索引設(shè)計,以及SQL査詢的設(shè)計,達到對空間數(shù)據(jù)的快速檢索。對于基于文件的索引和基于內(nèi)存的索引,都是用結(jié)構(gòu)來適應(yīng)算法,而對于基于數(shù)據(jù)庫的索引,是用算法來適應(yīng)結(jié)構(gòu)。所以,研究的起始點不同,在基于數(shù)據(jù)庫的空間索引中,必須從一定的表結(jié)構(gòu)出發(fā),從訪問SQL語句的優(yōu)先級別人手,加以研究。
2.基于數(shù)據(jù)庫的空間索引的特點
添加微信好友, 獲取更多信息
復(fù)制微信號
無須對原始數(shù)據(jù)進行結(jié)啕調(diào)整。基于文件的索引一般要對屜始數(shù)據(jù)文件進行預(yù)處理,最終按照自己設(shè)計的文件格式存儲數(shù)據(jù)。
通用性強。一是指所有數(shù)據(jù)庫的訪問方式都基本類似,使用標準的SQL語言,而基于文件方式下,不能保證訪問的通用性。二是指對要被索引的空間數(shù)據(jù)表的格式?jīng)]有具體的要求,這樣對于一般的其他行業(yè)的表也可以適用。
在一定程度降低了索引設(shè)計的復(fù)雜度。因為SQL對于基本類型的數(shù)據(jù)都提供了強大的操作支持,所以就簡化了很多工作。比如說,排重處理是索引設(shè)計中很重要的一個環(huán)節(jié),但使用SQL語句設(shè)計索引,可能就不需要額外的排重處理。比如,語句Seiect * from SpatialTable Where ID IN(1,8,9) 和語句Select * from SpatialTable Where ID IN(1,8,9,1,9),執(zhí)行結(jié)果和效率都是一樣的。所以在這種情況下就不需要排重處理。
在某些方面又增加了索引設(shè)計的復(fù)雜度。因為SQL本身是一種結(jié)構(gòu)化語言,很難處理過程化的東西。比如,SQL中不易處理嵌套循環(huán),不能處理條件判斷等。這在一定程度上增加了索引設(shè)計的難度和復(fù)雜度。另外還有很重要的一點,SQL語句有一定的長度限制,這在設(shè)計索引中也是不得不考慮的問題。
來源:開源地理空間基金會中文分會
來源鏈接:https://www.osgeo.cn/post/17b52
本站聲明:網(wǎng)站內(nèi)容來源于 *** ,如有侵權(quán),請聯(lián)系我們,我們將及時處理。