R-Tree

R-Tree

​ R-Tree是一颗用来存储高维数据的平衡树,它把B树的思想扩展到了多维空间,采用了B树分割空间思想,并在添加、删除操作时采用合并、分解节点的方法,保证树的平衡性。

数据结构

​ 每个R树的叶子节点包含了多个指向不同数据的指针,这些数据可以存放在硬盘中,也可以存放在内存中。根据R树的这种数据结构,当需要进行一个高维空间查询时,只需要遍历少数几个叶子节点所包含的指针,查看这些指针指向的数据是否满足要求即可。

​ R树采用了MBR的方法,从叶子节点开始用矩形(Rectangle)将空间框起来,节点越往上,框住的空间就越大,从而实现对空间的分割,如下图所示:

8394323_1307440584OHk3

​ 先看图b,首先假设所有数据都是二维空间下的点,图中标识了R8区域中的数据,将那个不规则图形看作是多个数据围成的一个区域,为了实现R树,用一个MBR框住这个不规则图形,这样就形成了一个区域R8。采用同样的方法,一共得到了12个最基本的MBR,这些MBR将被2存储在叶子节点中。下一步是进行高一层的处理,我们发现R8、R9和R10这三个矩形距离最为靠近,因此就可以用一个更大的矩形R3恰好框住这三个矩形,同样,R15和R16恰好被R6框住,R11和R12恰好被R4框住等等。所有最基本的MBR被框入更大的矩形中后,再次迭代,用更大的框框住这些矩形

R树的性质

  1. 除根节点外,所有叶子节点包含有m至M个记录索引,作为根节点的叶子节点所具有的记录个数可以少于m,通常 m = M / 2
  2. 对于所有在叶子中存储的记录,I是最小的可以在空间中完全覆盖这些记录所代表的点的矩形
  3. 每个非叶子节点拥有m至M个孩子节点,除非它是根节点
  4. 每个非叶子节点上的每一个记录,I是最小的可以在空间上完全覆盖这些记录所代表的点的矩形
  5. 所有叶子节点都位于同一层,因此R树为平衡树

叶子节点

​ 叶子节点所保存的数据形式为:(I, tuple-identifier),其中,tuple-identifier表示的是一个存放于数据库中的tuple,也就是一条记录,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值