在MongoDB中用到空间索引,这里对空间索引做一个知识回顾。
什么是索引呢?索引的目的是便于快速检索到需要的要素。图书目录是最常见的索引,我想看《三国演义》里面诸葛亮舌战群儒的桥段,只需要翻看目录,找到相应的章节和页码。如果没有索引,就要一页一页的翻了,可想效率之低。
索引本身是空间数据与网格或其他载体的对应关系。构建索引必然会增加数据量,构建索引时,要根据具体情况做相应处理。
空间索引,顾名思义就是对空间物体建立索引,提高空间物体的查询效率。比较常见的空间索引包括网格索引和四叉树索引。
点的索引比较简单,线和面的索引主要是首先构建最小外包矩形,对最小外包矩形构建索引,检索到外包矩形之后,在进行复杂的地理运算(一般都比较耗费内存和CPU)。
详细内容可以参见:
1、http://technet.microsoft.com/zh-cn/library/bb964712(v=sql.105).aspx 空间索引概述(提到一些处理细节问题)
2、http://www.blogjava.net/sishuiweilan/archive/2009/05/18/271230.html 空间索引(讲解的比较详细)
有时间再做整理。