基于数据库的空间索引方式,与前两种索引方式有着本质的不同,比如,存储方式、实现手段等。
1.索引实质不同
如果说基于文件的索引主要是优化I/O,基于内存的索引主要是优化CPU计算量,那么基于数据库的索引则既要优化I/O,又要优化CPU计算量。在基于文件的索引和基于内存的索引的实现过程中,程序员可以从数据结构,存储结构等多方面灵活控制实现的细节,而且大部分的工作都集中在数据结构,存储结构的设计上。但是,在基于数据库的索引中,由于数据库系统本身高度封装,用户调用接口集中在SQL语言的使用,对数据全部操作都是通过SQL调用实现的。对于同一个目的可以编写出不同的SQL语句,但不同语句间的执行效率是有很大差别的。所以,基于数据库的索引,实质上是基于数据库的SQL语言优化,通过适当的表结构设计,表索引设计,以及SQL査询的设计,达到对空间数据的快速检索。对于基于文件的索引和基于内存的索引,都是用结构来适应算法,而对于基于数据库的索引,是用算法来适应结构。所以,研究的起始点不同,在基于数据库的空间索引中,必须从一定的表结构出发,从访问SQL语句的优先级别人手,加以研究。
2.基于数据库的空间索引的特点
添加微信好友, 获取更多信息
复制微信号
无须对原始数据进行结啕调整。基于文件的索引一般要对屉始数据文件进行预处理,最终按照自己设计的文件格式存储数据。
通用性强。一是指所有数据库的访问方式都基本类似,使用标准的SQL语言,而基于文件方式下,不能保证访问的通用性。二是指对要被索引的空间数据表的格式没有具体的要求,这样对于一般的其他行业的表也可以适用。
在一定程度降低了索引设计的复杂度。因为SQL对于基本类型的数据都提供了强大的操作支持,所以就简化了很多工作。比如说,排重处理是索引设计中很重要的一个环节,但使用SQL语句设计索引,可能就不需要额外的排重处理。比如,语句Seiect * from SpatialTable Where ID IN(1,8,9) 和语句Select * from SpatialTable Where ID IN(1,8,9,1,9),执行结果和效率都是一样的。所以在这种情况下就不需要排重处理。
在某些方面又增加了索引设计的复杂度。因为SQL本身是一种结构化语言,很难处理过程化的东西。比如,SQL中不易处理嵌套循环,不能处理条件判断等。这在一定程度上增加了索引设计的难度和复杂度。另外还有很重要的一点,SQL语句有一定的长度限制,这在设计索引中也是不得不考虑的问题。
来源:开源地理空间基金会中文分会
来源链接:https://www.osgeo.cn/post/17b52
本站声明:网站内容来源于 *** ,如有侵权,请联系我们,我们将及时处理。