首页 理论教育 OracleSpatial中的R树空间索引及存储方式

OracleSpatial中的R树空间索引及存储方式

时间:2023-08-29 理论教育 版权反馈
【摘要】:Oracle Spatial的空间索引用SPATIAL_INDEX表示,在内部主要是采用R树实现,能加快空间操作符和空间函数在Oracle数据表的SDO_GEOMETRY字段(或列)上的执行速度。图5-2点集上的R树示例图5-3描述了Oracle中如何存储R树索引。空间索引的元数据存储在视图USER_SDO_INDEX_METADATA中。图5-3Oracle Spatial中R树的存储执行下列查询语句:可以得到以下结果:从查询结果可以看出,CUSTOMERS数据表中的LOCATION字段对应的R树空间索引的信息存放在MDRT_1682A$表中。

OracleSpatial中的R树空间索引及存储方式

Oracle Spatial的空间索引用SPATIAL_INDEX表示,在内部主要是采用R树实现,能加快空间操作符和空间函数在Oracle数据表的SDO_GEOMETRY字段(或列)上的执行速度。R树是类似于B树的分层结构,它将几何体的矩形逼近(也称为边界矩形)存储为关键值

如图5-2所示,以MVDEMO方案中的CUSTOMERS表为例,左边图上的黑点表示每个CUSTOMER的位置,它们以几何点的形式存储在含有SDO_GEOMETRY字段中对应的LOCATION列。对于LOCATION列中的每一个SDO_GEOMETRY,R树都用一个最小限定矩形MBR将其包围起来,并以此创建一个MBR的层次结构。在图5-2中,代表位置的点聚集形成三个结点A、B、C。每个结点关联的MBR都将对应子树中数据的位置包围起来,这些MBR又进一步聚集成根结点。以这样的方式,一个R树就可以用一个表中的SDO_GEOMETRY数据MBR构造出一个层次的树状结构。然后,R树使用这个MBR的树形层次结构帮助查询找到相应的R树分支,并最终找到数据表相应的行。

图5-2 点集上的R树示例

图5-3描述了Oracle中如何存储R树索引。树的逻辑结构被存储为以MDRT开头的数据表中。树结构的每个结点用表中单独的行存储。空间索引的元数据存储在视图USER_SDO_INDEX_METADATA中。该视图存储空间索引名称(SDO_INDEX_NAME)、存放索引的表(SDO_INDEX_TABLE)、R树索引的根ROWID、R树结点的分支因子以及其他的相关参数。通过这个视图,可以确定给定空间索引对应的空间索引表(MDTR_开头的表)。另外,也可以参考更加简单的USER_SDO_INDEX_INFO视图。

图5-3 Oracle Spatial中R树的存储(www.xing528.com)

执行下列查询语句:

可以得到以下结果:

从查询结果可以看出,CUSTOMERS数据表中的LOCATION字段对应的R树空间索引的信息存放在MDRT_1682A$表中(注意:这个表的名称是创建索引的时候由Oracle自动命名的,索引在机器上可能不是这个名称)。该表的结构与数据如图5-4所示。

图5-4 CUSTOMERS数据表中LOCATION字段对应R树的存储表结构与数据

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈