数据库必知词汇:R-Tree

简介: 1984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynamic index structure for spatial searching”的论文,向世人介绍了R树这种处理高维空间存储问题的数据结构。R-Tree是B-Tree向多维空间发展的另一种形式,它将对象空间按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。

1984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynamic index structure for spatial searching”的论文,向世人介绍了R树这种处理高维空间存储问题的数据结构。R-Tree是B-Tree向多维空间发展的另一种形式,它将对象空间按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。

R-Tree是一种空间索引数据结构,下面做简要介绍:
(1)R-Tree是n 叉树,n称为R-Tree的扇(fan)。
(2)每个结点对应一个矩形。
(3)叶子结点上包含了小于等于n 的对象,其对应的矩为所有对象的外包矩形。
(4)非叶结点的矩形为所有子结点矩形的外包矩形。
R-Tree的定义很宽泛,同一套数据构造R-Tree,不同方可以得到差别很大的结构。什么样的结构比较优呢?有两标准:
(1)位置上相邻的结点尽量在树中聚集为一个父结点。
(2)同一层中各兄弟结点相交部分比例尽量小。

R树是一种动态索引结构。每个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有效利用,上限保证每个结点对应一个磁盘页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二(分裂)。R树是一种动态索引结构,即:它的查询可与插入或删除同时进行,而且不需要定期地对树结构进行重新组织。

R-树是一种用于处理多维数据的数据结构,用来访问二维或者更高维区域对象组成的空间数据.R树是一棵平衡树。树上有两类结点:叶子结点和非叶子结点。每一个结点由若干个索引项构成。对于叶子结点,索引项形如(Index,Obj_ID)。其中,Index表示包围空间数据对象的最小外接矩形MBR,Obj_ID标识一个空间数据对象。对于一个非叶子结点,它的索引项形如(Index,Child_Pointer)。 Child_Pointer 指向该结点的子结点。Index仍指一个矩形区域,该矩形区域包围了子结点上所有索引项MBR的最小矩形区域。

R树满足的性质:

  1. 除根结点之外,所有非根结点包含有m至M个记录索引(条目)。根结点的记录个数可以少于m。通常,m=M/2。
  2. 对于所有叶子中存储的记录(条目),I是最小的可以在空间中完全覆盖这些记录所代表的点的矩形(注意:此处所说的“矩形”是可以扩展到高维空间的)。
  3. 对于所有非叶子结点上的记录(条目),i是最小的可以在空间上完全覆盖这些条目所代表的点的矩形(同性质2)。
  4. 所有叶子结点都位于同一层,因此R树为平衡树。

资料来源:
邓红艳, 武芳, 翟仁健, et al. 一种用于空间数据多尺度表达的R树索引结构[J]. 计算机学报, 2016, 32(01).
肖予钦, 张巨, 景宁, et al. 基于R树的方向关系查询处理[J]. 软件学报, 2004(01):106-114.
雷小锋, 谢昆青, 韩亮, et al. 基于惰性聚类分裂的动态R树实现方法[J]. 计算机科学, 2007, 34(4):102-103.
张明波, 陆锋, 申排伟,等. R树家族的演变和发展[J]. 计算机学报, 2005, 28(3):289-300.

相关文章
|
存储 安全 数据库
数据库必知词汇:分级存储
分级存储是将数据采取不同的存储方式分别存储在不同性能的存储设备上,减少非重要性数据在一级本地磁盘所占用的空间,还可加快整个系统的存储性能。
996 0
|
存储 JSON NoSQL
数据库必知词汇:Cassandra
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案,线性可扩展性和在商用硬件或云基础架构上经过验证的容错能力使它成为关键任务数据的理想平台。
981 0
|
分布式计算 负载均衡 算法
数据库必知词汇:Zookeeper
ZooKeeper是用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。ZooKeeper是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,构成一个高效可靠的原语集,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
362 0
|
SQL 存储 分布式计算
数据库必知词汇:Hive
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储的数据上。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
852 0
|
SQL 分布式计算 数据挖掘
数据库必知词汇:Pig
Apache Pig 是一个高级过程语言,特点是其结构易于大量并行化,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。
576 0
|
机器学习/深度学习 存储 分布式计算
数据库必知词汇:Mahout
Mahout 是 Apache基金会旗下的一个开源项目,其提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
395 0
|
SQL 分布式计算 Oracle
数据库必知词汇:Sqoop
Apache Sqoop是一个用于在Apache Hadoop和关系数据库等结构化数据存储之间高效传输大容量数据的开源工具。主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。此外,对于某些NoSQL数据库Sqoop也提供了连接器。
467 0
|
Apache 数据库
数据库必知词汇:Flume
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume具有简单灵活的基于流数据流的体系结构。它具有鲁棒性和容错性,具有可调的可靠性机制和许多故障转移和恢复机制。Flume使用一个简单的可扩展数据模型,允许在线分析应用程序。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
437 0
|
存储 缓存 API
数据库必知词汇:Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
347 0
|
存储 分布式计算 搜索推荐
数据库必知词汇:HDFS
Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)是指被设计成适合运行在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。
402 0