1、为什么要有R树:
首先,我们知道了有“高效的多维空间点的索引算法”:Google的S2算法,geohash算法;用分型和降维的思想,将一个空间的点编码为一维的数据
那么R树的作用是什么呢?
关于空间搜索其实还有一大类问题,如何搜索多维空间线,多维空间面,多维空间多边形呢?他们都是由无数个空间点组成的。
实际的例子,比如街道,高楼,铁路,河流。要搜索这些东西,数据库表如何设计?如何做到高效的搜索呢?
R树就很好的解决了这种"高维空间搜索"问题。
它把B树的思想很好的扩展到了多维空间,采用了B树分割空间的思想,并在添加、删除操作时采用合并、分解结点的方法,保证树的平衡性。
因此,R树就是一棵用来存储高维数据的平衡树
(一个是解决点索引,一个是解决空间索引,需要索引的内容不同!)