R树是
B树 向
多维空间发展的另一种形式,它将对象空间按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有
子结点的区域范围,非叶结点的 所有子结点的区域都落在它的区域范围之内;
叶结点的磁盘页中存储其区域范围之内的所有
空间对象的外接矩形。R树是一种动态
索引结构。
基本简介
R-tree是
B-tree向
多维空间发展的另一种形式,它将
空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的 所有子结点的区域都落在它的区域范围之内;
叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点所能拥有的子结点数目有上、下限,下限 保证对
磁盘空间的有效利用,上限保证每个结点对应一个磁盘页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二(分裂)。R树是一种动态
索引结构,即:它的查询可与插入或删除同时进行,而且不需要定期地对
树结构进行重新组织。
数据结构
R-Tree是一种
空间索引数据结构,下面做简要介绍:
(1)R-Tree是n 叉树,n称为R-Tree的扇(fan)。
(2)每个结点对应一个矩形。
(3)叶子结点上包含了
小于等于n 的对象,其对应的矩为所有对象的外包矩形。
(4)非叶结点的矩形为所有子结点矩形的外包矩形。
R-Tree的定义很宽泛,同一套数据构造R-Tree,不同方可以得到差别很大的结构。什么样的结构比较优呢?有两标准:
(1)位置上相邻的结点尽量在树中聚集为一个
父结点。
(2)同一层中各兄弟结点相交部分比例尽量小。
R-树是一种用于处理多维数据的数据结构,用来访问二维或者更高维区域对象组成的
空间数据.R树是一棵
平衡树。树上有两类结点:叶子结点和非叶子结点。每一个结点由若干个索引项构成。对于叶子结点,索引项形如(Index,Obj_ID)。其中,Index表示包围空间
数据对象的
最小外接矩形MBR,Obj_ID标识一个空间数据对象。对于一个非叶子结点,它的索引项形如(Index,Child_Pointer)。 Child_Pointer 指向该结点的子结点。Index仍指一个矩形区域,该矩形区域包围了子结点上所有索引项MBR的最小矩形区域。一棵R树的示例如图《r-tree图》所示:
性质简介
符号说明:M:结点中单元的最大数目,m(1<= m <= M/2)为非
根结点中单元个数的下限。
一个R树满足如下性质:
(1) 每一个
叶子结点中包含的单元的个数介于m和M之间,除非他同样是
根结点(2) 每一个叶子结点中的单元(I,
tuple-identifier),I为包含所有子结点的最小包含矩形(MBR),tuple-identifier是指向
存储记录的指针。
(3) 每一个非叶子结点的子结点数介于m和M之间,除非他是根结点
(4) 每一个非叶子结点单元(I, child -pointer)I是包含子结点的最小矩形MBR,child-pointer是指向子结点的指针。通过该指针逐层
递归,可以访问到
叶子结点。
(5)
根结点至少有两个子结点,除非他同时是叶子结点
(6) 所有的叶子结点都处在树的同一层上。
算法描述
(1)估计叶结点数k=n/fan。
(2)将所有几何对象按照其矩形外框
中心点的x值排序。
(3)将排序后的对象分组,每组大小为 *fan,最后一组可能不满员。
(4)上述每一分组内按照几何对象矩形外框中心点的y值排序。
(7)k=nn,返回1。
其他索引结构
R+树
在Guttman的工作的基础上,许多R树的变种被开发出来, Sellis等提出了
R+树,R+树与R树类似,主要区别在于R+树中
兄弟结点对应的空间区域无重叠,这样划分空间消除了R树因允许结点间的重叠而产生的“死区域”(一个结点内不含本结点数据的空白区域),减少了无效查询数,从而大大提高
空间索引的效率,但对于插入、删除
空间对象的操作,则由于操作要保证空间区域无重叠而效率降低。同时R+树对跨区域的
空间物体的数据的存储是有冗余的,而且随着数据库
中数据的增多,
冗余信息会不断增长。Greene也提出了他的R树的变种。
R*树
在1990年,Beckman和Kriegel提出了最佳动态R树的变种——R*树。R树和R树一样允许矩形的重叠,但在构造算法R*树不仅考虑了索引空间的“面积”,而且还考虑了索引空间的重叠。该方法对结点的插入、分裂算法进行了改进,并采用“强制重新插入”的方法使树的结构得到优化。但R*树算法仍然不能有效地降低空间的重叠程度,尤其是在数据量较大、
空间维数增加时表现的更为明显。R*树无法处理
维数高于20的情况。
QR树
QR树利用
四叉树将
空间划分成一些
子空间,在各子空间内使用许多R树索引,从而改良索引空间的重叠。QR树结合了四叉树与R树的优势,是二者的综合应用。实验证明:与R树相比,QR树以略大(有时甚至略小)的空间开销代价,换取了更高的性能,且索引目标数越多,QR树的整体性能越好。
SS树
SS树对R树进行了改进,通过以下措施提高了最邻近查询的性能:用最小边界圆代替最小边界矩形表示区域的形状,增强了最邻近查询的性能,减少将近一半
存储空间;SS树改进了R树的强制重插机制。当维数增加到5是,R树及其变种中的边界矩形的重叠将达到90%,因此在高维情况(≧5)下,其性能将变的很差,甚至不如顺序扫描。
X树
X树是线性数组和层状的R树的
杂合体,通过引入超级结点,大大地减少了最小边界矩形之间的重叠,提高了查询效率。X树用边界圆进行索引,边界矩形的直径(
对角线)比边界圆大,SS树将点分到小直径区域。由于区域的直径对最邻近查询性能的影响较大,因此SS树的最邻近查询性能优于R树;边界矩形的平均
容积比边界圆小,R树将点分到小容积区域;由于大的容积会产生较多的覆盖,因此边界矩形在容积方面要优于边界圆。SR树既采用了最小边界圆(MBS),也采用了最小边界矩形(MBR),相对于SS树,减小了区域的面积,提高了区域之间的
分离性,相对于R树,提高了邻近查询的性能。