CN109582678B - 基于叶子节点的多粒度分布式读写锁的r树索引优化方法 - Google Patents

基于叶子节点的多粒度分布式读写锁的r树索引优化方法 Download PDF

Info

Publication number
CN109582678B
CN109582678B CN201811463096.XA CN201811463096A CN109582678B CN 109582678 B CN109582678 B CN 109582678B CN 201811463096 A CN201811463096 A CN 201811463096A CN 109582678 B CN109582678 B CN 109582678B
Authority
CN
China
Prior art keywords
lock
node
tree
nodes
znode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811463096.XA
Other languages
English (en)
Other versions
CN109582678A (zh
Inventor
王波涛
田箫
李睿
亢建强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University China
Original Assignee
Northeastern University China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Northeastern University China filed Critical Northeastern University China
Priority to CN201811463096.XA priority Critical patent/CN109582678B/zh
Publication of CN109582678A publication Critical patent/CN109582678A/zh
Application granted granted Critical
Publication of CN109582678B publication Critical patent/CN109582678B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于叶子节点的多粒度分布式读写锁的R树索引优化方法。在叶子节点加锁后,锁等待队列的队首元素获得锁,进行更新操作导致R树索引结构变化时,锁等待队列中的其他元素就不能在叶子节点继续获得锁,将这些锁的节点临时删除,使其从根节点重新执行一遍查询操作,保证了结果的正确性。在叶子节点建立了读写锁,降低了锁的粒度,支持较高的并行度,提高了查询和更新等操作的执行效率。

Description

基于叶子节点的多粒度分布式读写锁的R树索引优化方法
技术领域
本发明涉及数据库索引领域,具体的涉及一种基于叶子节点的多粒度分布式读写锁的R树索引优化方法。
背景技术
基于位置服务(Location Based Service,LBS)为代表的移动应用已经步入移动大数据时代,成为人们日常生活的重要组成部分,滴滴打车、高德地图,日益方便着人们的生活,提高了人们的生活质量。随着移动应用规模的扩大,移动服务中的查询也呈现鲜明的流式特征。现有的系统无法有效地处理在扩展性、实时性、可靠性及性能方面所面临的挑战。移动大数据时代的数据处理不仅需要存储与处理能力更强更灵活的计算平台,还需要依托于计算平台的相关移动服务的处理与优化技术。
在计算平台的处理与优化技术中,空间移动对象数据库起着重要的作用,它的核心功能旨在提供高效的查询与更新处理,与高性能的索引结构密切相关,因此,移动对象的查询处理和索引技术是移动对象数据库设计的核心部分。在多连续范围查询系统中,针对网格索引中空网格也要访问造成额外开销的问题,提出了基于HBase的支持频繁更新的节点重组R树的索引结构。将空间区域映射在平面上,进而划分为网格,然后将包含有移动对象的网格插入到R树中。
针对这种双层索引结构,在移动对象位置更新时,会出现性能以及读写锁之间、写锁和写锁之间的冲突问题。为了解决读写锁之间、写锁和写锁之间的冲突问题,采用Zookeeper分布式读写锁在R树root节点加锁来解决多个进程对共享资源的访问。但是出现锁的阻塞等待和并发度低的问题,尤其是在查询和更新比较频繁、以及R树层级比较高的情况下。因为在使用R树索引时,是对R树root节点加锁,独占整个R树,导致很多不受更新影响的节点也不可以并发访问,降低了并行性,造成了很大的资源浪费。如图1所示,如果有一个查询是对20号网格内的数据,有一个更新是对63号网格内的数据,两个区域并不相交,在进行查询操作时,更新操作等待root锁,由此会造成资源利用率低下。
发明内容
本发明为了解决现有技术的不足,提供一种基于叶子节点的多粒度分布式读写锁的R树索引优化方法。在叶子节点加锁后,锁等待队列的队首元素获得锁,进行更新操作导致R树索引结构变化时,锁等待队列中的其他元素就不能在叶子节点继续获得锁,将这些锁的节点临时删除,使其从root节点重新执行一遍查询操作,保证了结果的正确性。
本发明采用的技术方案:
基于叶子节点的多粒度分布式读写锁的R树索引优化方法,包括如下步骤:
第一步,基于HBase的R树索引通过execute函数取得具体请求信息,根据请求信息获得要操作的具体网格ID,找到网格所在的R树叶子节点;
基于HBase的R树索引结构如图2所示,首先将整个空间区域进行规则划分,划分成大小相同的网格,将移动对象存储到网格的索引项里,建立起一个底层的网格索引;然后,用R树索引网格,R树的叶子节点存储网格的ID。这样,就建立起了一个底层为网格索引,上层为R树索引的双层索引结构。
第二步,对该叶子节点加锁,加锁过程中设置节点数据包括:MBR和节点容量,保存其请求操作的具体信息;
Zookeeper实现的分布式读写锁如图4图5所示。所述的加锁操是采用Zookeeper分布式读写锁在R树节点进行加锁,Zookeeper的节点类型是znode,一个znode表示一个锁,加锁就是通过创建znode的方式实现;这个节点也叫做Zookeeper的锁队列节点;创建znode节点时设置顺序标识,znode节点名称后会附加一个值,顺序号是一个单调递增的计数器;znode节点组成,Z ookeeper的锁队列,按顺序号依次等待执行。
第三步,Zookeeper锁队列中的序号最小的znode节点获得锁,并进行相关更新请求操作,更新请求操作过程中,同时会有其他并发的请求操作在等待锁。
第四步,对并发操作的处理,遍历Zookeeper锁队列中的等待进程,先获取znode节点中的数据信息,然后释放等待锁,让其从操作请求代码的入口重新执行一遍具体的操作请求;
第五步,释放叶子节点的锁。
上述的R树是一种与B树类似的空间高度平衡树。这种空间索引是动态的,不需要定期重建。基于其高效的特性,很多空间问题都可以使用R树索引来解决,大大提高了效率。R树运用了空间分割的思想,使用一种称为MBR最小边界矩形的方法,从叶子结点开始,用矩形将空间框起来,逐层向上,框住的空间依次增大,以此对空间进行分割R树的非叶子节点包含指向子节点的指针,称之为child-pointer,其MBR表示能框住其子节点的最小N维矩形;R树的叶子节点包含指向空间对象的条目,称之为tuple-identifier,其MBR表示能框住其tuple所对应的空间对象的最小N维矩形。如图3所示。
上述HBase即Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase是非关系型数据库,其设计目标是用来解决关系数据库在处理海量数据时的局限性。HBase支持高并发的高速读写访问。因为数据是被水平切分并分布到多台服务器上,所以在大量用户访问时,访问负载也被均衡的分配到了不同的服务器上,虽然每个服务器的服务能力有限,但是大规模集群可以提供极高的性能。HBase集群通过Zookeeper来协调主节点和从节点。
上述Zookeeper是一个分布式协调服务,可以为用户的分布式应用程序提供协调服务。在分布式系统中,可以使用顺序号为所有的事件进行全局排序,那么客户端就可以通过顺序号推断事件的执行顺序。如上所述,把Zookeeper上的每一个znode节点看作是一个锁,获得锁就是通过创建znode的方式来实现。Zookeeper的数据结构是一棵节点树,存储了整棵树的内容,包括所有的节点数据、节点路径及其ACL信息等,Zookeeper会定时将这个数据刷新存储到磁盘上。
上述请求操作是移动对象发起的利用R树索引对HBase数据库的操作,包括移动对象的移动、查询移动对象、插入移动对象、删除移动对象。
本发明一种基于叶子节点的多粒度分布式读写锁的R树索引优化方法,在叶子节点建立了读写锁,降低了锁的粒度,支持较高的并行度,提高了查询和更新等操作的执行效率。此外,随着查询范围的增大,以及移动对象密度的增大,查询的索引节点数目增多,也会导致查询效率的降低。但整体效果优于R树root节点的分布式读写锁。
附图说明
图1是树root节点分布式锁示意图。
图2是索引结构示意图。
图3是MBR示意图。
图4是Zookeeper写锁示意图。
图5是Zookeeper读锁示意图。
图6本发明的R树叶子节点分布式锁示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实例,对本发明做进一步详细说明。这些实例仅仅是说明性的,而并非对本发明的限制。
面向R树叶子节点分布式读写锁的具体的实施步骤:
步骤一:先是在基于HBase的R树索引中进行操作取得具体的请求信息,根据信息获得要操作的具体网格id,找到网格所在的R树叶子节点。输入范围查询和更新的信息,包括id和左下、右上坐标信息。然后获取移动对象的ID和经纬度然后根据移动对象的经纬度计算所在网格cellID;
步骤二:如图6所示,虚线椭圆形内是对叶子节点加锁,右上角方框内是Zookeeper锁队列。都在请求等待叶子节点的锁,且保留着例如‘p1移动至51’,‘查询p1’,‘插入p2’等具体操作信息。
步骤三:如图6所示,序号最小的znode获得锁,执行位置更新操作。更新过程中,同时会有其他并发的操作在等待锁。移动对象p1由原来所在的64号网格移动到54号网格,由此会引起叶子节点、上层父节点甚至root节点的分裂,在此过程中,其他操作不能继续等待叶子节点的锁,比如锁队列中第二个操作时‘查询移动对象p1’,那么它这时候是查不到的。因为它保存的R树索引节点指向的还是之前54号网格的,而不是最新的54号网格。
步骤四:遍历Zookeeper锁队列中的这些等待进程,先获取znode节点中的数据信息,然后释放等待锁,让其从操作请求代码的入口重新执行一遍具体的操作请求。如图6所示,从2号等待节点中获取请求数据信息,然后让其从R树root节点重新向下执行查询,就可以得到正确的p1结果。同理,锁等待队列中的3号节点是插入移动对象p2,由于3号操作此前执行的也并不是最新的索引结构,此时插入,会引起R树孩子和叶子节点结构的错乱,所以还是应该从root节点向下遍历最新的索引结构,然后再执行操作。
步骤五:释放叶子节点上的锁。
通过本发明,既降低了节点频繁存储更新造成的磁盘访问的代价,也减少了锁的等待时间。同时基于Zookeeper节点数据存储特性,节点锁保存了具体信息,保证了操作结果的正确性。通过测试,本发明和之前的方法相比,具有广泛的使用价值和较高的稳定性。

Claims (3)

1.一种基于叶子节点的多粒度分布式读写锁的R树索引优化方法,其特征在于,包括如下步骤
第一步,基于HBase的R树索引通过execute函数取得具体请求信息,根据请求信息获得要操作的具体网格ID,找到网格所在的R树叶子节点;
基于HBase的R树索引结构,首先将整个空间区域进行规则划分,划分成大小相同的网格,将移动对象存储到网格的索引项里,建立起一个底层的网格索引;然后,用R树索引网格,R树的叶子节点存储网格的ID;
第二步,对该叶子节点加锁,加锁过程中设置节点数据包括:MBR和节点容量,保存其请求操作的具体信息;
加锁操是采用Zookeeper分布式读写锁在R树节点进行加锁,Zookeeper的节点类型是znode,一个znode表示一个锁,加锁就是通过创建znode的方式实现;这个节点也叫做Zookeeper的锁队列节点;创建znode节点时设置顺序标识,znode节点名称后会附加一个值,顺序号是一个单调递增的计数器;znode节点组成,Zookeeper的锁队列,按顺序号依次等待执行;
第三步,Zookeeper锁队列中的序号最小的znode节点获得锁,并进行相关更新请求操作,更新请求操作过程中,同时会有其他并发的请求操作在等待锁;
第四步,对并发操作的处理,遍历Zookeeper锁队列中的等待进程,先获取znode节点中的数据信息,然后释放等待锁,让其从操作请求代码的入口重新执行一遍具体的操作请求;
第五步,释放叶子节点的锁。
2.根据权利要求1所述的基于叶子节点的多粒度分布式读写锁的R树索引优化方法,其特征在于,R树的非叶子节点包含指向子节点的指针,称之为child-pointer,其MBR表示能框住其子节点的最小N维矩形;R树的叶子节点包含指向空间对象的条目,称之为tuple-identifier,其MBR表示能框住其tuple所对应的空间对象的最小N维矩形。
3.根据权利要求1所述的基于叶子节点的多粒度分布式读写锁的R树索引优化方法,其特征在于,所述请求操作是移动对象发起的利用R树索引对HBase数据库的操作,包括移动对象的移动、查询移动对象、插入移动对象、删除移动对象。
CN201811463096.XA 2018-12-03 2018-12-03 基于叶子节点的多粒度分布式读写锁的r树索引优化方法 Active CN109582678B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811463096.XA CN109582678B (zh) 2018-12-03 2018-12-03 基于叶子节点的多粒度分布式读写锁的r树索引优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811463096.XA CN109582678B (zh) 2018-12-03 2018-12-03 基于叶子节点的多粒度分布式读写锁的r树索引优化方法

Publications (2)

Publication Number Publication Date
CN109582678A CN109582678A (zh) 2019-04-05
CN109582678B true CN109582678B (zh) 2021-05-04

Family

ID=65925999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811463096.XA Active CN109582678B (zh) 2018-12-03 2018-12-03 基于叶子节点的多粒度分布式读写锁的r树索引优化方法

Country Status (1)

Country Link
CN (1) CN109582678B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825734B (zh) * 2019-10-09 2023-04-28 上海交通大学 平衡树的并发更新方法及读写系统
CN110990404B (zh) * 2019-11-27 2023-09-05 亚信科技(中国)有限公司 一种索引数据的处理方法、装置及电子设备
CN112667409A (zh) * 2020-11-25 2021-04-16 紫光云技术有限公司 一种可重入的分布式排它锁实现方法
CN113204435B (zh) * 2021-07-01 2021-12-03 阿里云计算有限公司 数据处理方法以及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354263A (zh) * 2015-10-19 2016-02-24 东北大学 基于HBase分布式环境下移动对象并行网格索引同步方法
CN106776055A (zh) * 2017-02-19 2017-05-31 网宿科技股份有限公司 一种分布式锁实现方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016149552A1 (en) * 2015-03-17 2016-09-22 Cloudera, Inc. Compaction policy

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354263A (zh) * 2015-10-19 2016-02-24 东北大学 基于HBase分布式环境下移动对象并行网格索引同步方法
CN106776055A (zh) * 2017-02-19 2017-05-31 网宿科技股份有限公司 一种分布式锁实现方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于HBase的支持频繁更新与多用户并发的R树;王波涛等;《计算机科学》;20180731;全文 *
基于Storm的连续范围查询优化技术;王波涛等;《计算机工程与科学》;20170131;全文 *

Also Published As

Publication number Publication date
CN109582678A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
CN109582678B (zh) 基于叶子节点的多粒度分布式读写锁的r树索引优化方法
CN107423368B (zh) 一种非关系数据库中的时空数据索引方法
CN109582677B (zh) 基于孩子节点的多粒度分布式读写锁的r树索引优化方法
Ma et al. An efficient index for massive IOT data in cloud environment
Jensen et al. Query and update efficient B+-tree based indexing of moving objects
US9501550B2 (en) OLAP query processing method oriented to database and HADOOP hybrid platform
JP2022534215A (ja) ハイブリッド・インデックス作成方法、システム、プログラム
US10169446B1 (en) Relational modeler and renderer for non-relational data
CN111639075B (zh) 一种基于扁平化r树的非关系数据库矢量数据管理方法
Deng et al. Parallel processing of dynamic continuous queries over streaming data flows
Borkar et al. Have your data and query it too: From key-value caching to big data management
CN103226608B (zh) 一种基于目录级可伸缩的Bloom Filter位图表的并行文件搜索方法
Challa et al. DD-Rtree: A dynamic distributed data structure for efficient data distribution among cluster nodes for spatial data mining algorithms
Liu et al. DGFIndex for smart grid: Enhancing hive with a cost-effective multidimensional range index
WO2023179787A1 (zh) 分布式文件系统的元数据管理方法和装置
Tian et al. A survey of spatio-temporal big data indexing methods in distributed environment
Iyer et al. A scalable distributed spatial index for the internet-of-things
US10558636B2 (en) Index page with latch-free access
Mitreva et al. NoSQL solutions to handle big data
US11599516B1 (en) Scalable metadata index for a time-series database
WO2013123867A1 (zh) 数据索引方法和装置
Qi et al. The consistency analysis of secondary index on distributed ordered tables
Li et al. SP-phoenix: a massive spatial point data management system based on phoenix
Xiang et al. Providing R-Tree Support for MongoDB
CN113779353B (zh) 高速铁路时空大数据分析服务引擎系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant