`
foreversunyao
  • 浏览: 214160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

R-Tree空间索引算法的研究历程和最新进展分析 收藏

阅读更多
摘要:本文介绍了空间索引的概念、R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tree的改进结构——变种R-Tree进行了论述。最后,对R-Tree的最新研究进展进行了分析。 关键词:空间索引技术;R-Tree;研究历程;最新进展 当前数据搜索的一个关键问题是速度。提高速度的核心技术是空间索引。空间索引是由空间位置到空间对象的映射关系。当前的一些大型数据库都有空间索引能力,像Oracle,DB2。 空间索引技术并不单是为了提高显示速度,显示速度仅仅是它所要解决的一个问题。空间索引是为空间搜索提供一种合适的数据结构,以提高搜索速度。 空间索引技术的核心是:根据搜索条件,比如一个矩形,迅速找到与该矩形相交的所有空间对象集合。当数据量巨大,矩形框相对于全图很小时,这个集合相对于全图数据集大为缩小,在这个缩小的集合上再处理各种复杂的搜索,效率就会大大提高。 所谓空间索引,就是指依据空间实体的位置和形状或空间实体之间的某种空间关系,按一定顺序排列的一种数据结构,其中包含空间实体的概要信息如对象的标识、外接矩形及指向空间实体数据的指针。简单的说,就是将空间对象按某种空间关系进行划分,以后对空间对象的存取都基于划分块进行。 1 引言 空间索引是对存储在介质上的数据位置信息的描述,用来提高系统对数据获取的效率。空间索引的提出是由两方面决定的:其一是由于计算机的体系结构将存贮器分为内存、外存 两种,访问这两种存储器一次所花费的时间一般为30~40ns,8~10ms,可以看出两者相差十 万倍以上,尽管现在有“内存数据库”的说法,但绝大多数数据是存储在外存磁盘上的,如果对磁盘上数据的位置不加以记录和组织,每查询一个数据项就要扫描整个数据文件,这种访问磁盘的代价就会严重影响系统的效率,因此系统的设计者必须将数据在磁盘上的位置加以记录和组织,通过在内存中的一些计算来取代对磁盘漫无目的的访问,才能提高系统的效率,尤其是GIS涉及的是各种海量的复杂数据,索引对于处理的效率是至关重要的。其二是GIS 所表现的地理数据多维性使得传统的B树索引并不适用,因为B树所针对的字符、数字等传统数据类型是在一个良序集之中,即都是在一个维度上,集合中任给两个元素,都可以在这个维度上确定其关系只可能是大于、小于、等于三种,若对多个字段进行索引,必须指定各个字段的优先级形成一个组合字段,而地理数据的多维性,在任何方向上并不存在优先级问题,因此B树并不能对地理数据进行有效的索引,所以需要研究特殊的能适应多维特性的空间索引方式。 1984年Guttman发表了《R树:一种空间查询的动态索引结构》,它是一种高度平衡的树,由中间节点和页节点组成,实际数据对象的最小外接矩形存储在页节点中,中间节点通过聚集其低层节点的外接矩形形成,包含所有这些外接矩形。其后,人们在此基础上针对不同空间运算提出了不同改进,才形成了一个繁荣的索引树族,是目前流行的空间索引。 R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有效利用,上限保证每个结点对应一个磁盘页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二。R树是一种动态索引结构,即:它的查询可与插入或删除同时进行,而且不需要定期地对树结构进行重新组织。 2 R-Tree数据结构 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树的示例如图所示: 3 R-Tree算法描述 算法描述如下: 对象数为n,扇区大小定为fan。 (1)估计叶结点数k=n/fan。 (2)将所有几何对象按照其矩形外框中心点的x值排序。 (3)将排序后的对象分组,每组大小为 *fan,最后一组可能不满员。 (4)上述每一分组内按照几何对象矩形外框中心点的y值排序。 (5)排序后每一分组内再分组,每组大小为fan。 (6)每一小组成为叶结点,叶子结点数为nn。 (7)N=nn,返回1。 4 R-Tree空间索引算法的研究历程 1 R-Tree 多维索引技术的历史可以追溯到20世纪70年代中期。就在那个时候,诸如Cell算法、四叉树和k-d树等各种索引技术纷纷问世,但它们的效果都不尽人意。在GIS和CAD系统对空间索引技术的需求推动下,Guttman于1984年提出了R树索引结构,发表了《R树:一种空间查询的动态索引结构》,它是一种高度平衡的树,由中间节点和页节点组成,实际数据对象的最小外接矩形存储在页节点中,中间节点通过聚集其低层节点的外接矩形形成,包含所有这些外接矩形。其后,人们在此基础上针对不同空间运算提出了不同改进,才形成了一个繁荣的索引树族,是目前流行的空间索引。 2 R+树 在Guttman的工作的基础上,许多R树的变种被开发出来, Sellis等提出了R+树,R+树与R树类似,主要区别在于R+树中兄弟结点对应的空间区域无重叠,这样划分空间消除了R树因允许结点间的重叠而产生的“死区域”(一个结点内不含本结点数据的空白区域),减少了无效查询数,从而大大提高空间索引的效率,但对于插入、删除空间对象的操作,则由于操作要保证空间区域无重叠而效率降低。同时R+树对跨区域的空间物体的数据的存储是有冗余的,而且随着数据库中数据的增多,冗余信息会不断增长。Greene也提出了他的R树的变种。 3 R*树 在1990年,Beckman和Kriegel提出了最佳动态R树的变种——R*树。R*树和R树一样允许矩形的重叠,但在构造算法R*树不仅考虑了索引空间的“面积”,而且还考虑了索引空间的重叠。该方法对结点的插入、分裂算法进行了改进,并采用“强制重新插入”的方法使树的结构得到优化。但R*树算法仍然不能有效地降低空间的重叠程度,尤其是在数据量较大、空间维数增加时表现的更为明显。R*树无法处理维数高于20的情况。 4 QR树 QR树利用四叉树将空间划分成一些子空间,在各子空间内使用许多R树索引,从而改良索引空间的重叠。QR树结合了四叉树与R树的优势,是二者的综合应用。实验证明:与R树相比,QR树以略大(有时甚至略小)的空间开销代价,换取了更高的性能,且索引目标数越多,QR树的整体性能越好。 5 SS树 SS树对R*树进行了改进,通过以下措施提高了最邻近查询的性能:用最小边界圆代替最小边界矩形表示区域的形状,增强了最邻近查询的性能,减少将近一半存储空间;SS树改进了R*树的强制重插机制。当维数增加到5是,R树及其变种中的边界矩形的重叠将达到90%,因此在高维情况(≧5)下,其性能将变的很差,甚至不如顺序扫描。 6 X树 X树是线性数组和层状的R树的杂合体,通过引入超级结点,大大地减少了最小边界矩形之间的重叠,提高了查询效率。X树用边界圆进行索引,边界矩形的直径(对角线)比边界圆大,SS树将点分到小直径区域。由于区域的直径对最邻近查询性能的影响较大,因此SS树的最邻近查询性能优于R*树;边界矩形的平均容积比边界圆小,R*树将点分到小容积区域;由于大的容积会产生较多的覆盖,因此边界矩形在容积方面要优于边界圆。SR树既采用了最小边界圆(MBS),也采用了最小边界矩形(MBR),相对于SS树,减小了区域的面积,提高了区域之间的分离性,相对于R*树,提高了邻近查询的性能。 5 R-Tree空间索引算法的最新研究 信息的膨胀使数据库检索需要面对的问题越来越多。在构建索引方面,最主要面临的则是如何构造高效的索引算法来支持各种数据库系统(比如:多媒体数据库、空间数据库等),特别是如何有效的利用算法来实现加速检索。概括地说,R-Tree空间索引算法的研究要做到:支持高维数据空间;有效分割数据空间,来适应索引的组织;高效的实现多种查询方式系统中的统一。R-Tree的索引结构最新研究不能是单纯为了加速某种查询方式或提高某个方面的性能,忽略其他方面的效果,这样可能会造成更多不必要的性能消耗。 XML作为可扩展的标示语言,其索引方法就是基于传统的R-Tree索引技术的XR-Tree索引方法。该方法构造了适合于XML数据的索引结构。XR-Tree索引方法是一种动态扩充内存的索引数据结构,针对XISS(XML Indexing and Storage System:XML索引和存储体系)中结构连接中的问题,设计了基于XR-Tree索引树有效地跳过不参与匹配的元素的连接算法。但这种索引方法在进行路径的连接运算中仍然存储大量的中间匹配结果,为此一种基于整体查询模式的基于索引的路径连接算法提出,即利用堆栈链表来临时压栈存储产生的部分匹配结果,并且随着匹配的动态进行出栈操作。这样在查询连接处理完成以后,直接输出最终结果,既节省了存储空间又提高了操作效率。
分享到:
评论

相关推荐

    R-Tree空间索引算法的研究历程和最新进展分析

    R-Tree 空间索引算法是一种高效的数据组织方式,尤其适用于处理多维空间数据。自1984年Guttman首次提出R-Tree以来,它已成为地理信息系统(GIS)和其他领域处理大规模空间数据的关键技术。R-Tree的核心在于通过外接...

    R-Tree空间索引算法的研究历程和最新进展

    ### R-Tree空间索引算法的研究历程和最新进展 #### 一、引言 随着信息技术的发展,特别是地理信息系统(GIS)、计算机辅助设计(CAD)、多媒体技术等领域的不断进步,空间数据库已经成为处理和管理大规模空间数据的...

    基于R-Tree的DBSCAN算法的改进(Java版)

    R-Tree是一种多维空间索引,特别适用于存储和查询具有地理坐标的对象。它通过将数据分层并将其放入矩形节点来组织数据,使得在多维空间中的范围查询和邻近搜索变得高效。在DBSCAN中应用R-Tree,可以极大地减少在大...

    R-tree空间索引

    一个R-tree模板,C++代码,还有一篇R-tree的英文原文 :R-Tree: A dynamic index structure for spatial searching, sigmod 1984 希望对大家有点参考价值

    基础R-Tree空间的索引方法

    ### 基础R-Tree空间的索引方法——MRD-Tree #### 概述 随着地理信息系统(GIS)的广泛应用以及空间数据量的急剧增加,如何高效地管理和检索这些数据成为了一个重要的研究课题。空间索引技术是实现这一目标的关键...

    python实现FP-TREE挖掘算法

    Python作为一种强大的编程语言,因其易读性与丰富的库支持,成为了实现FP-TREE算法的理想选择。在这个项目中,我们使用Python 3.2版本来实现这一算法,并且能可视化每一步的FP树,帮助用户更好地理解和分析过程。 ...

    基于matlab实现KD-TREE与BBF算法的结合

    【作品名称】:基于matlab实现KD-TREE与BBF算法的结合 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 使用matlab...

    fp-tree算法程序

    总的来说,FP-Tree算法通过独特的数据结构和高效的挖掘策略,极大地减少了数据挖掘过程中的时间和空间复杂性。在C#中实现这一算法,需要深入理解算法原理,并巧妙地利用C#语言特性,以实现高效、可读性强的代码。

    C++R-Tree代码

    C++ R-Tree代码是一种实现空间索引的数据结构,它在地理信息系统、数据库和计算机图形学等领域广泛应用。R-Tree是一种多维空间索引结构,主要用于高效存储和检索多维数据,例如地理位置坐标、图像像素等。下面我们将...

    数据挖掘Apriori和FP-tree算法的实现

    在数据挖掘中,关联规则学习是探索数据中项集之间有趣关系的重要方法,而Apriori和FP-growth(FP-tree)是两种经典的关联规则挖掘算法。 **Apriori算法** 是最早被提出的关联规则挖掘算法之一,由Rakesh Agrawal和...

    R-tree 索引结构实现

    R树(R-tree)是一种多维空间索引结构,它被设计用来有效地管理与查询多维数据,如地理坐标、图像像素等。在数据库和GIS(地理信息系统)领域,R树广泛应用于存储和检索复杂的几何对象,如点、线、面等。其核心思想...

    使用matlab实现KD-TREE与BBF算法的结合.zip

    在IT领域,尤其是在数据结构和算法的学习中,KD-TREE(K-Dimensional Tree)和Best-Bin-First(BBF)算法是两个重要的概念。MATLAB作为一种强大的数值计算和编程环境,非常适合用来实现这些算法。下面我们将深入探讨...

    i-Tree最新版2019年中文操作手册

    i-Tree是一款由美国林务局开发的都市及小区林业分析与效益评估工具,它是CITYgreen模型的升级版本,于2019年发布了最新中文操作手册。i-Tree旨在帮助各地区的城市森林管理,其功能包括量化环境树木提供的服务、评估...

    kd-tree的基本教程PDF

    - **形式化表述**:设有一个多维空间\( Domain = \mathbb{R}^k \),对于任意给定的目标向量\( d \)和一个包含多个数据点的集合\( E \),寻找一个或多个满足条件的数据点\( (d_0, r_0) \in E \),使得\( |d - d_0| \...

    FP-TREE算法 C++实现

    FP-TREE算法通过构建一棵特殊的树结构来存储这些频繁项,从而减少存储空间和计算时间。以下是FP-TREE算法的关键步骤: 1. **预处理**:首先,对原始数据集进行事务处理,将每条记录视为一个事务,事务中的每个元素...

    The Log-Structured Merge-Tree (LSM-Tree).pdf

    LSM-Tree通过一种算法来推迟和批处理索引更改,这种算法类似于归并排序,能够高效地将变化从基于内存的组件传递到一个或多个磁盘组件。在此过程中,除了非常短的锁定时间外,所有索引值都可随时供检索使用,要么通过...

    基于Ph-tree的多属性朋友推荐算法

    【基于Ph-tree的多属性朋友推荐算法】是一种用于社交网络中的朋友推荐方法,它结合了用户的各种属性并利用Ph-tree的数据结构来优化推荐过程。Ph-tree,也称为Packed Hierarchical Tree,是一种高效的多维数据索引...

Global site tag (gtag.js) - Google Analytics