R-Tree 学习笔记
引言
空间数据对象(spatial data objects)通常是一个在多维空间中区域,不能仅用坐标点位置很好的表示。
例如,在地图应用中,代表一个国家的空间数据对象,就是一个在二维空间中的区域。
对于空间数据的常用操作就是查找一个区域中的所有对象,所以根据空间数据对象所表示的区域范围,高效的获取该区域中的空间数据对象,是很重要的。
传统的一维数据库索引并不适合多维的空间搜索。如基于hash的索引结构适用于精确匹配查找值的搜索,而空间数据搜索通常是范围查找,而B-Tress这样的一维排序键值所以又难以满足对多维数据索引。
R-Tree索引的结构
一个空间数据库由一系列对应空间对象的tuple组成,而每一个tuple具有一个唯一标示(tuple identifier,简称tupleID
吧),数据库可以通过这个唯一标示获取到该tuple。
R-Tree所做的就是将这些tupleID索引起来。
叶子节点
每一个叶子节点包含一组索引记录(index record,后文称之为entry)。
每个entry的格式如下:
(MBR,tupleID)
其中,MBR(Minimum Bounding Region)表示可以框住tupleID所对应的空间数据对象的最小N维矩形。
MBR=(MBR0,MBR1,...,MBRn−1)
其中n为 MBR 所在空间维度, MBRi 为该 MBR