SpatialHadoop中空间索引系列之(九)B树索引



B树索引

       B-树类型的索引树是一种高度平衡多路径检索树结构,在传统的数据库中应用非常广泛。但是传统的 B-树只能检索多属性数据,对于空间数据却无能为力。因此,需要对传统 B-树进行扩展,开拓创新,提出更多的基于 B-树的专用空间索引技术,如 R-树、R+-树、R*-树等。

R树

       R-树就是基于 B-树的专用扩展索引树,由 Guttman 于 1984 年提出,是一颗高度平衡的索引树。它是用空间对象的最小边界矩形(Minimum  bounding rectangle,简称 MBR)来逼近其几何形状的。采用空间聚集的方式把相邻的空间实体划分到一起,组成更高一级的节点;然后在更高一级的节点中又根据这些节点的最小外包矩形进行聚类,最终划分成更高一级的节点,直到所有的实体都组成一个根结点时为止。以图 4-10(a)所示数据为例,其中灰色填充的矩形分别为要素 1 到要素 9 的 MBR,虚线框为查询区域。根据上述逻辑,首先将其中的要素 1、要素 2 聚集为结点 a,要素 3、要素 4 聚集为结点 b,要素 5、要素 6、要素 7 聚集为结点 c,要素 8、要素 9 聚集为结点 d;然后再对结点 a~d 进行聚类,形成了结点 I、II;最后聚为一个根结点,如图 4-10(b)所示。

SpatialHadoop中空间索引系列之(九)B树索引_第1张图片SpatialHadoop中空间索引系列之(九)B树索引_第2张图片

        R 树的特点有:①除根结点外,每个叶子结点包含 m~M 条索引记录,其中m≤M/2;②每个叶结点上记录了空间对象的 MBR 和元组标识符;③除根结点之外,每一个中间结点至多有 M 个子结点,至少有 m 个子结点;④每个非叶子结点上记录了最小外包矩形 MBR,即子结点指针;⑤如果根结点不是叶子结点,那么至少存在两个子结点;⑥所有叶子结点都存在于同一个层中;⑦所有的最小外包矩形 MBR 的边与一个全局坐标系的坐标轴相互平行。

       其优点是提高了空间分区节点的利用效率,也降低了树的深度,提高了树的检索效率;缺点是由于 R 树非叶结点的最小外包矩形 MBR 允许重叠,这样会导致同一空间查询出现多条查询路径的情况。

R+树

       为了避免 R-树非叶结点之间的重叠率,Sellis 等人于 1987 年提出了 R+-树索引结构。R+-树采用空间对象分割技术,避免了非叶结点的重叠,但是它要求跨越子空间的对象必须被分割成两个或多个最小外包矩形 MBR,即就是说一个特定的对象可能被包含于多个结点之中[52]。通过此办法的划分,空间搜索的效率有了明显的提高。同 R-树一样,它也是专用空间索引树结构。关于 R+-树的具体空间划分及其索引对象的 MBR 组织分别如图 4-11(a)和图 4-11(b)所示。

SpatialHadoop中空间索引系列之(九)B树索引_第3张图片SpatialHadoop中空间索引系列之(九)B树索引_第4张图片

       R+-树的优点是解决了 R-树查询中的多路径搜索问题;缺点是:①降低了查找的速度,原因是数据存储冗余使得树的高度过大;②树的生成造成结点的最小外包矩形 MBR 变大,可能会引起向上或者向下的分裂,最终导致更新操作复杂、繁琐,甚至会造成死锁。总而言之,R+-树会使得空间存储开销变大,树结构深度增加,最终影响系统的查找性能。

R*-树

        R*-树[5]由 Beckmann 等于 1990 年提出的,它不但继承了 R-树的结构,且在结构上与 R+-树的也完全一致。Beckmann 等人也指出影响空间数据检索性能的不仅仅是更严重的区域重叠,而是插入的过程。他们通过大量的实验得出了一连串对检索性能起着决定性影响因素的参数,总结了大量结点分裂的优化准则,设计了 R*-树结点的强制重新插入技术。所以说,R*-树在树的构造、删除、查找算法上与 R-树、R+-树基本相同,但在算法结构方面做了很大的改进,特别是插入算法方面,显著提高的索引的性能。

       R*树的优点有:a、强迫重新插入在相邻结点间改变了条目,降低了重叠项,尤其是对于有更多调整的项分裂较少,使得空间存储利用率都得到了较大的提高;b、一个结点远离中心的矩形被重新插入,结点矩形区域会减小,更加利于查询,即检索性能有所提高。缺点是树结构的构造时间过程开销变大,且多路径查找仍然存在,更是制约着检索性能的瓶颈所在。

SpatialHadoop中空间索引系列之(九)B树索引_第5张图片

你可能感兴趣的:(GIS基础概念,SpatialHadoop)