CN112395288B - 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 - Google Patents

基于希尔伯特曲线的r树索引合并更新方法、装置及介质 Download PDF

Info

Publication number
CN112395288B
CN112395288B CN202011026535.8A CN202011026535A CN112395288B CN 112395288 B CN112395288 B CN 112395288B CN 202011026535 A CN202011026535 A CN 202011026535A CN 112395288 B CN112395288 B CN 112395288B
Authority
CN
China
Prior art keywords
tree
node
nodes
hilbert
layer
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
CN202011026535.8A
Other languages
English (en)
Other versions
CN112395288A (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202011026535.8A priority Critical patent/CN112395288B/zh
Priority to JP2023519043A priority patent/JP2023543004A/ja
Priority to PCT/CN2020/121521 priority patent/WO2022061995A1/zh
Publication of CN112395288A publication Critical patent/CN112395288A/zh
Application granted granted Critical
Publication of CN112395288B publication Critical patent/CN112395288B/zh
Priority to US18/185,410 priority patent/US20230281182A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于希尔伯特曲线的R树索引合并更新方法、装置及介质。方法步骤包含:S1:获取待合并的第一R树和待插入第一R树的第二R树,R树的非叶子节点中存储所包含对象的希尔伯特值上下限范围;S2:通过“从上至下”层级查询算法查询第一R树叶子节点层中每一个被合并叶子节点在第二R树叶子节点层中的待插入节点;S3:按照“从下至上”层级调整算法,针对第一R树中每一个叶子节点,将其包含的空间对象按照希尔伯特值顺序插入至S2中确定的待插入节点中,实现两棵R树的合并;S4针对合并后的第二R树,按照从叶子节点到根节点的顺序逐层更新每个节点中的存储信息。本发明在地理时空大数据高性能存储领域具有重要的实际应用价值。

Description

基于希尔伯特曲线的R树索引合并更新方法、装置及介质
技术领域
本发明涉及数据检索与更新的技术领域,尤其涉及一种希尔伯特R树索引的合并更新技术。
背景技术
空间数据的更新频率随着地理信息数据采集设备的发展而逐渐提高,对空间数据的管理不仅要满足高效的查询需求,还需要兼顾快速的更新需求。结合LSM 树结构的空间索引能够有效支撑空间数据频繁插入和更新的需求,其中LSM R 树索引相较于DBH树、DHVB树以及SHB树,有更好的普适性和稳定性。但是LSM R树的实际应用过程中往往会涉及到大量R树的合并操作,R树在合并过程中,会占用系统的一定的内存以及计算资源,影响在此期间对索引进行查询、插入、删除等操作的效率。因此需要高效的希尔伯特R树的合并算法,通过提高R树合并效率整体上提升LSM R树的可用性。
发明内容
本发明的目的是克服现有技术在高频时空数据插入时索引更新效率与查询效率不足,提供一种基于希尔伯特曲线的改进R树索引。
本发明所采用的具体技术方案如下:
一种基于希尔伯特曲线的R树索引合并更新方法,其步骤如下:
S1:获取待合并的第一R树和待插入第一R树的第二R树,第一R树的高度不大于第二R树的高度;每棵R树中,每个叶子节点中的存储信息包括空间对象的最小外包矩形框和其主键指针,每个非叶子节点中的存储信息包括所有孩子节点的最小外包矩形框、所有孩子节点的主键指针集合、最小外包矩形框中所有空间对象的最大希尔伯特值以及最小外包矩形框中所有空间对象的最小希尔伯特值;
S2:基于每个节点中存储的希尔伯特值信息,按照从根节点层到叶子节点层的逐层查询顺序,查询得到第一R树叶子节点层中每一个被合并叶子节点在第二R树叶子节点层中的待插入节点;
S3:针对第一R树中每一个叶子节点,将其所包含的空间对象按照希尔伯特值顺序插入至S2中确定的待插入节点中,实现两棵R树的合并;且合并过程中若出现叶子节点容量溢出,则需对第二R树进行节点分裂,并将第一R树和第二R树包含的所有空间对象按照希尔伯特值顺序重新分配至分裂后的第二R 树的所有叶子节点中;
S4:针对合并第一R树后的第二R树,按照从叶子节点到根节点的顺序逐层更新每个节点中的存储信息。
本发明相对于现有技术而言,具有以下有益效果:
本发明通过“从上至下”层级查询算法和“从下至上”层级调整算法,可以实现希尔伯特R树的快速合并更新。在合并过程中,每个待插入的节点只会被读取一次,每个节点的写入和分裂也只会出现一次。相较于逐一插入的方式,大幅度的减少了对磁盘读写的次数,提高了希尔伯特R树的合并效率,降低了R 树合并对整体空间索引操作所带来的影响。同时改进希尔伯特R树采用批量插入均匀分裂的方式,也可以在一定程度上提高节点的填充率,提高R树的空间使用率,因而在查询效率上也能有一定的提升。
附图说明
图1 是基于希尔伯特曲线的R 树索引合并更新方法的流程图;
图2是改进希尔伯特R树结构;
图3是实验数据展示图;
图4是R树与不同数据量R树合并时间对比折线图;
图5是R树空间范围查询效率对比折线图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步阐述和说明。本发明中各个实施方式的技术特征在没有相互冲突的前提下,均可进行相应组合。
R树在合并过程中,会占用系统的一定的内存以及计算资源,会影响在此期间对索引进行查询、插入、删除等操作的效率。因此高效的希尔伯特R树的合并方法,可以减少上述的情况发生,整体上提升树空间索引的使用效率。本发明中改进了传统的希尔伯特R树结构,并设计了基于改进希尔伯特R树的合并方法,实现希尔伯特R树的高效合并。
如图1所示,在本发明的一个较佳实施例中,提供了一种基于希尔伯特曲线的R树索引合并更新方法,该方法的步骤如下:
S1:首先获取两棵R树,分别为待合并的第一R树和待插入第一R树的第二R树。为了便于叙述,下面将第一R树记为R1,将第二R树记为R2。由于索引合并都是从低层往高层合并,因此树R2的高度必然大于或等于树R1
本发明中的树R1和树R2均为改进的希尔伯特R树,两棵R树的基本结构相同。为了统一名词含义,下面定义R树的叶子节点为R树中没有孩子节点的节点,即最后一层节点;R树的根节点为R树中的第一层节点,即最顶层的节点; R树中节点的层次为:从根结点开始,设定根结点的层次为第1层,根结点的孩子节点的层次为第2层,依此类推,如果某一个节点的层次为第L层,则其孩子节点的层次为第L+1层;R树的高度为R树中所有节点的层次最大值。
在每棵R树中,改进的希尔伯特R树叶子节点Cl与常规的希尔伯特R树的叶子节点结构是一致的,每个叶子节点中的存储信息为空间对象的最小外包矩形框和其主键指针,即Cl=(R,object_id)。
但对于非叶子节点Cn,两棵改进的希尔伯特R树均在原有动态希尔伯特R 树非叶子节点的结构基础上,额外存储了最小希尔伯特值,因此每个非叶子节点中的存储信息为该节点的所有孩子节点的最小外包矩形框R、该节点的所有孩子节点的主键指针集合ptr、最小外包矩形框R中所有空间对象的最大希尔伯特值 maxLHV以及最小外包矩形框R中所有空间对象的最小希尔伯特值minLHV,即 Cn=(R,ptr,maxLHV,minLHV)。
如图2所示,为改进的希尔伯特R树结构的一个示意图,从图中可见节点I、节点II、节点III为三个非叶子节点。以节点II为例,其中包含三个空间对象,其希尔伯特值分别为5010,7671和13646,所以节点II存储的最大希尔伯特值 maxLHV为13646,最小希尔伯特值minLHV为5010。根节点包含节点I、节点 II、节点III,因此需要在根节点存放的最大希尔伯特值LHV为14033,最小希尔伯特值minLHV为415。
在该改进的希尔伯特R树中,通过记录节点下所有空间对象的希尔伯特值范围,可以确定此节点下的空间对象在待插入的希尔伯特R树中非叶子节点的路径,而不需要对每一个空间对象的插入都从根节点开始查询。由此,可以减少磁盘的读写次数,提高合并效率。
本发明改进的希尔伯特R树中,针对最小外包矩形的希尔伯特值计算的方式有多种:1)以矩形的中心点作为二维的希尔伯特值计算;2)以左下角坐标和右上角坐标作为四维点的希尔伯特值计算;3)以矩形中心点和中心到矩形边界的距离dx、dy作为四维点的希尔伯特值计算。不同希尔伯特值计算方式会产生多种聚集情况。
本实施例中,优选以空间对象的最小外包矩形框中心点二维坐标在希尔伯特曲线上的一维编码值作为每个空间对象的希尔伯特值。希尔伯特值得编码过程可采用任意现有技术,为了便于理解下面提供了一种编码过程:
若希尔伯特曲线阶数为n,空间数据的坐标为x和y;
步骤1:读取最小外包矩形框中心点二维坐标x和y,并将x和y值转换为长度为2n的二进制值,用xB、yB表示;
步骤2:按顺序分别提取xB和yB中的一位二进制值进行组合,得到二进制值段,第i组二进制值段记为
Figure BDA0002702274050000041
步骤3:对所有二进制值段进行转换,其中‘00’转换为00,‘01’转换为 01,‘10’转换为11,‘11’转换为10;
步骤4:将所有转换后的二进制值段重新按顺序组合,得到的完整的二进制值,再转换为十进制值即为希尔伯特值。
另外为了便于理解,下面对希尔伯特R树的构建过程进行展开描述,但需要注意的是R树的构建过程并非本发明的必要步骤,本发明可用于对已经构建完毕的R树进行合并。希尔伯特R树构建过程如下:
S11:计算得到每个空间对象的希尔伯特后,将所有空间对象按照希尔伯特值升序排列;
S12:根据R树每个节点的容量c,提取前c个空间对象,构造成一个R树的第一个叶子节点,再往后提取c个空间对象,构造下一个叶子节点,不断重复直至提取完所有空间对象,得到k个叶子节点,并将其按照节点构造顺序加入到先进先出队列中;
S13:按照从叶子节点到根节点的顺序逐层构造非叶子节点;且对于每一层非叶子节点而言,从其孩子节点层的先进先出队列中提取前c个节点,构造第一个非叶子节点,再从先进先出队列中提取前c个节点,构造下一个非叶子节点,不断重复直至取完先进先出队列中所有节点,得到当前非叶子节点层并将其中的所有非叶子节点按照节点构造顺序加入到新的先进先出队列中,用于作为下一层非叶子节点的构造。
S2:基于每个节点中存储的希尔伯特值信息,按照从根节点层到叶子节点层的逐层查询顺序,查询得到第一R树叶子节点层中每一个被合并叶子节点在第二R树叶子节点层中的待插入节点。查询过程中,确定待插入节点的原则是:被合并的节点的希尔伯特值范围尽量完全落入被插入的节点的希尔伯特值范围中。
在本实施例中,S2中的该查询过程采用了一种“从上至下”的层级查询算法,该层级查询算法的具体实现过程如下:
S21:将第一R树中当前待查找节点层的层次n设定为1,将第二R树中当前待查找节点层的层次m设定为1,第一R树的高度为H1,第二R树的高度为 H2;第一R树和第二R树的第1层节点层均为根节点,第二R树的根节点作为第一R树的根节点对应的待插入节点;
S22:针对第一R树中的第n层节点,分别获取其中每个节点
Figure BDA0002702274050000051
的所有孩子节点集合
Figure BDA0002702274050000052
同时在第二R树中获取节点
Figure BDA0002702274050000053
对应的待插入节点的所有孩子节点集合
Figure BDA0002702274050000059
针对集合
Figure BDA0002702274050000055
中包含的每个节点
Figure BDA0002702274050000056
根据节点
Figure BDA0002702274050000057
中存储的最大希尔伯特值maxLHVi和最小希尔伯特值minLHVi,在集合Yi n+1包含的所有节点中查找最大希尔伯特值大于minLHVi的第一个节点的指针A,并在集合Yi n+1包含的所有节点中查找最大希尔伯特值大于maxLHVi的第一个节点的指针B,以集合Yi n+1中指针值在[A,B]区间内的节点作为节点
Figure BDA0002702274050000058
的待插入节点。
在执行S22时,在集合Yi n+1包含的所有节点中,可分别采用二分查找的方式查找指针A和指针B对应的节点。
S23:对n和m的值分别进行加1,然后重复S22;
S24:不断重复S23,直至n和m取值均为H1,得到第一R树中的每一个叶子节点在第二R树中对应的待插入节点;
S25:不断执行判断过程,若m<H2,则保持n的值不变并对m值进行加1 后重复S22;直至m=H2后完成查询,使第一R树叶子节点层中每一个被合并叶子节点均在第二R树叶子节点层中找到对应的待插入节点。
在该层级查询算法中,第一次执行S22步骤时对应于查询根节点的待插入节点。其首先读取R1的根节点,并获得其孩子节点的集合
Figure BDA0002702274050000061
下标i代表第i个节点,下同。基于改进的希尔伯特R树节点特点,集合
Figure BDA0002702274050000062
中的节点存储了该节点下空间对象的希尔伯特值范围。针对集合
Figure BDA0002702274050000063
中的每个节点
Figure BDA0002702274050000064
根据其最小希尔伯特值minLHVi和最大希尔伯特值LHVi,采用二分查找的方式,计算R2树根节点的孩子节点集合Yi 2中maxLHV第一个大于minLHVi的孩子节点指针,记为fromPagei。同样计算R2树根节点的孩子节点Yi 2中maxLHV第一个大于LHVi的孩子节点指针,记为toPagei。由此可知节点
Figure BDA0002702274050000065
中的空间对象需要插入的磁盘页位置page满足fromPagei≤page≤toPagei中,即插入至fromPagei至toPagei范围内的节点中。计算集合
Figure BDA0002702274050000066
中每个节点的fromPagei和toPagei,此时R1树第二层中的每个节点,在R2树的根节点中找到了插入位置节点的指针。在后续执行 S23时,根据指针值找到R2树中第二层的节点,再以上述同样的方式找到R1树第三层节点的对应R2树第三层节点的位置。以此方式进行层级查找,直到层级达到为R1树叶子节点对应的空间对象,则R1树不能再往下查找细分,但是R2树在执行S24过程中继续往下查找到叶子节点,将对应的R1树中的空间对象批量插入至该叶子节点中。
S3:针对第一R树中每一个叶子节点,将其所包含的空间对象按照希尔伯特值顺序插入至S2中确定的待插入节点中,实现两棵R树的合并。且合并过程中若出现叶子节点容量溢出,则需对第二R树进行节点分裂,并将第一R树和第二R树包含的所有空间对象按照希尔伯特值顺序重新分配至分裂后的第二R 树的所有叶子节点中。
对第二R树进行节点分裂的方法可按照现有技术中的节点索引分裂方式处理,在本实施例中为了便于实现批量、快速的R树合并,提供了一种“从下至上”的层级调整算法,以便于对第二R树进行节点索引分裂,其做法如S31~S33 所示:
S31:计算第一R树和第二R树包含的所有空间对象总数相对于第二R树的节点容量的溢出对象数量;
S32:对第二R树的叶子节点进行分裂,创建最少的额外叶子节点用于容纳所有溢出对象;
S33:将第一R树和第二R树包含的所有空间对象,按照希尔伯特值升序进行排列,然后重新按序分配至第二R树分裂后的每个叶子节点中;
S34:按照从叶子节点层朝向根节点层的逐层调整顺序,对第二R树的每一层非叶子节点进行节点容量溢出判断,若一层非叶子节点中出现节点容量溢出,则对该层非叶子节点进行节点分裂,并将该层非叶子节点的所有孩子节点重新分配至分裂后的该层非叶子节点中;最终调整完根节点后完成第二R树的节点分裂处理。
根据此方法,首先将最后一层中的所有叶子节点实现空间对象数据的插入和分裂,随后向上调整上一层的非叶子节点。随着叶子节点层中的节点分裂,节点数量会增加,可能会导致倒数第二层中的非叶子节点溢出情况。因此随后调整倒数第二层的节点,以相同的方式进行节点分裂,直至调整到根节点。若根节点出现节点容量溢出,则将根节点分裂成两个节点,并以这两个节点为孩子节点重新构建一个根节点。
需要注意的是,两棵R树的合并过程中,第一R树的空间对象插入第二R 树的待插入节点时,其应当按照希尔伯特值顺序插入,以保证最终每个叶子节点中的所有空间对象按照希尔伯特值升序排列,所有叶子节点整体也按照最大希尔伯特值升序排列。
S4:由于节点合并、分裂后,其存储的空间对象会发生变化,因此节点中的存储信息会发生变化,因此需要针对合并第一R树后的第二R树,按照从叶子节点到根节点的顺序逐层更新每个节点中的存储信息。对于叶子节点,需要更新的存储信息包括空间对象的最小外包矩形框R、主键指针object_id,对于非叶子节点,需要更新的存储信息包括空间对象的最小外包矩形框R、主键指针集合 prt、最大希尔伯特值maxLHV和最小希尔伯特值minLHV。
为了进一步说明本发明的技术效果,下面基于一个具体案例来展示上述基于希尔伯特曲线的R树索引合并更新方法在具体空间数据上的效果。
实施例:
本实施例步骤与具体实施方式前述步骤相同,即步骤S1~S4,且S2步骤具体采用S21~S25实现,S3步骤具体采用S31~S34实现,在此不再进行赘述。下面就部分实施过程和实施结果进行展示:
本实施例采用面状的空间数据类型作为研究对象,数据采用通过 OpenStreetMap下载的全中国建筑区数据,总共要素条数为1000192条。如图3 所示为研究对象的空间数据。从图中可以看出,空间数据大小不一,且分布不均匀,数据的疏密程度存在一定的随机性,可以作为实验样本。
随机选取1000到50000条记录共50组数据,对基于希尔伯特曲线的改进R 树索引、常规R树索引和希尔伯特R树索引进行更新操作,验证本发明改进希尔伯特R树合并算法的高效性,并且对比合并后的查询效率,证实LH R树合并算法可以保证较好的空间聚集性和更高的查询效率。
在图4中,横轴表示被合并R树的大小,纵轴表示R树合并所需的时间。在折线图中,从上至下分别为:黄色折线表示为常规R树合并所需的时间,灰色折线表示为动态希尔伯特R树合并所需的时间,橙色折线表示为静态希尔伯特R树合并所需的时间,蓝色折线表示为本发明改进希尔伯特R树合并所需的时间。从图中可以看出,动态希尔伯特R树的合并方式优于常规R树的合并方式,本发明改进希尔伯特R树合并方式优于静态希尔伯特R树合并方式,本发明改进希尔伯特R树合并方式和静态希尔伯特R树合并方式所需的时间明显少于逐一插入合并的两种方式。
在图5中横轴表示的为搜索矩形的范围,以经纬度作为单位,纵轴表示为对 R树磁盘读取的次数,单位为万页。在R树查询中,当查询的范围较小时,查询速度较快,获得的查询时间误差值较大。由于对磁盘读写的速度远大于内存的查找,因此可以采用磁盘页面读取的次数代替范围查询时间,本实验采用对磁盘读取的次数作为比较查询效率的依据。图中从上至下分别中常规R树空间查询效率折线图,动态希尔伯特R树空间查询效率折线图、本发明改进希尔伯特R树空间查询效率折线图和静态希尔伯特R树空间查询折线图。从图中可以看出,四种R树空间查询效率随着空间范围的增加变化趋势大体一致。但是动态希尔伯特R树查询效率优于常规的R树,可以说明希尔伯特R树的空间聚集性好于常规的R树。采用批量合并算法得到的R树查询效率明显优于上述两种R树,静态希尔伯特R树的效率略优于本发明改进希尔伯特R树。但本发明改进希尔伯特R树对比R树的平均查询效率提升了52%,对比动态希尔伯特R树平均查询效率提升了41%,对比静态希尔伯特R树查询效率降低了5%。
另外,在其他实施例中,还可以提供一种基于希尔伯特曲线的R树索引合并更新装置,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,可实现前述的基于希尔伯特曲线的R树索引合并更新方法。
另外,在其他实施例中,还可以提供一种计算机可读存储介质,该存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,可实现前述的基于希尔伯特曲线的R树索引合并更新方法。
以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。

Claims (10)

1.一种基于希尔伯特曲线的R树索引合并更新方法,其特征在于,步骤如下:
S1:获取待合并的第一R树和待插入第一R树的第二R树,第一R树的高度不大于第二R树的高度;每棵R树中,每个叶子节点中的存储信息包括空间对象的最小外包矩形框和其主键指针,每个非叶子节点中的存储信息包括所有孩子节点的最小外包矩形框、所有孩子节点的主键指针集合、最小外包矩形框中所有空间对象的最大希尔伯特值以及最小外包矩形框中所有空间对象的最小希尔伯特值;
S2:基于每个节点中存储的希尔伯特值信息,按照从根节点层到叶子节点层的逐层查询顺序,查询得到第一R树叶子节点层中每一个被合并叶子节点在第二R树叶子节点层中的待插入节点;
S3:针对第一R树中每一个叶子节点,将其所包含的空间对象按照希尔伯特值顺序插入至S2中确定的待插入节点中,实现两棵R树的合并;且合并过程中若出现叶子节点容量溢出,则需对第二R树进行节点分裂,并将第一R树和第二R树包含的所有空间对象按照希尔伯特值顺序重新分配至分裂后的第二R树的所有叶子节点中;
S4:针对合并第一R树后的第二R树,按照从叶子节点到根节点的顺序逐层更新每个节点中的存储信息。
2.如权利要求1所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述R树中,每个空间对象的希尔伯特值为该空间对象的最小外包矩形框中心点二维坐标在希尔伯特曲线上的一维编码值。
3.如权利要求1所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述R树的构建过程如下:
S11:将所有空间对象按照希尔伯特值升序排列;
S12:根据R树每个节点的容量c,提取前c个空间对象,构造成一个R树的第一个叶子节点,再往后提取c个空间对象,构造下一个叶子节点,不断重复直至提取完所有空间对象,得到k个叶子节点,并将其按照节点构造顺序加入到先进先出队列中;
S13:按照从叶子节点到根节点的顺序逐层构造非叶子节点;且对于每一层非叶子节点而言,从其孩子节点层的先进先出队列中提取前c个节点,构造第一个非叶子节点,再从先进先出队列中提取前c个节点,构造下一个非叶子节点,不断重复直至取完先进先出队列中所有节点,得到当前非叶子节点层并将其中的所有非叶子节点按照节点构造顺序加入到新的先进先出队列中,用于作为下一层非叶子节点的构造。
4.如权利要求1所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述S2的具体实现方法为:
S21:将第一R树中当前待查找节点层的层次n设定为1,将第二R树中当前待查找节点层的层次m设定为1,第一R树的高度为H1,第二R树的高度为H2;第一R树和第二R树的第1层节点层均为根节点,第二R树的根节点作为第一R树的根节点对应的待插入节点;
S22:针对第一R树中的第n层节点,分别获取其中每个节点
Figure FDA0002702274040000021
的所有孩子节点集合
Figure FDA0002702274040000022
同时在第二R树中获取节点
Figure FDA0002702274040000023
对应的待插入节点的所有孩子节点集合Yi n+1;针对集合
Figure FDA0002702274040000024
中包含的每个节点
Figure FDA0002702274040000025
根据节点
Figure FDA0002702274040000026
中存储的最大希尔伯特值maxLHVi和最小希尔伯特值minLHVi,在集合Yi n+1包含的所有节点中查找最大希尔伯特值大于minLHVi的第一个节点的指针A,并在集合Yi n+1包含的所有节点中查找最大希尔伯特值大于maxLHVi的第一个节点的指针B,以集合Yi n+1中指针值在[A,B]区间内的节点作为节点
Figure FDA0002702274040000027
的待插入节点;
S23:对n和m的值分别进行加1,然后重复S22;
S24:不断重复S23,直至n和m取值均为H1,得到第一R树中的每一个叶子节点在第二R树中对应的待插入节点;
S25:不断执行判断过程,若m<H2,则保持n的值不变并对m值进行加1后重复S22;直至m=H2后完成查询,使第一R树叶子节点层中每一个被合并叶子节点均在第二R树叶子节点层中找到对应的待插入节点。
5.如权利要求4所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述S22中,在集合Yi n+1包含的所有节点中,分别采用二分查找的方式查找指针A和指针B对应的节点。
6.如权利要求1所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述S3中,若两棵R树合并过程中出现叶子节点容量溢出,则需按照S31~S33对溢出进行节点分裂处理:
S31:计算第一R树和第二R树包含的所有空间对象总数相对于第二R树的节点容量的溢出对象数量;
S32:对第二R树的叶子节点进行分裂,创建最少的额外叶子节点用于容纳所有溢出对象;
S33:将第一R树和第二R树包含的所有空间对象,按照希尔伯特值升序进行排列,然后重新按序分配至第二R树分裂后的每个叶子节点中;
S34:按照从叶子节点层朝向根节点层的逐层调整顺序,对第二R树的每一层非叶子节点进行节点容量溢出判断,若一层非叶子节点中出现节点容量溢出,则对该层非叶子节点进行节点分裂,并将该层非叶子节点的所有孩子节点重新分配至分裂后的该层非叶子节点中;最终调整完根节点后完成第二R树的节点分裂处理。
7.如权利要求6所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述S34中,若根节点出现节点容量溢出,则将根节点分裂成两个节点,并以这两个节点为孩子节点重新构建一个根节点。
8.如权利要求6所述的基于希尔伯特曲线的R树索引合并更新方法,其特征在于,所述S3中,两棵R树的合并后,每个叶子节点中的空间对象按照希尔伯特值升序排列。
9.一种基于希尔伯特曲线的R树索引合并更新装置,其特征在于,包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如权利要求1~8任一项所述的基于希尔伯特曲线的R树索引合并更新方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1~8任一项所述的基于希尔伯特曲线的R树索引合并更新方法。
CN202011026535.8A 2020-09-25 2020-09-25 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 Active CN112395288B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202011026535.8A CN112395288B (zh) 2020-09-25 2020-09-25 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
JP2023519043A JP2023543004A (ja) 2020-09-25 2020-10-16 ヒルベルト曲線に基づくr木インデックスのマージ更新方法、装置及び媒体
PCT/CN2020/121521 WO2022061995A1 (zh) 2020-09-25 2020-10-16 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
US18/185,410 US20230281182A1 (en) 2020-09-25 2023-03-17 R-tree index merging and updating method and apparatus based on hilbert curve, and medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011026535.8A CN112395288B (zh) 2020-09-25 2020-09-25 基于希尔伯特曲线的r树索引合并更新方法、装置及介质

Publications (2)

Publication Number Publication Date
CN112395288A CN112395288A (zh) 2021-02-23
CN112395288B true CN112395288B (zh) 2022-07-12

Family

ID=74596520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011026535.8A Active CN112395288B (zh) 2020-09-25 2020-09-25 基于希尔伯特曲线的r树索引合并更新方法、装置及介质

Country Status (4)

Country Link
US (1) US20230281182A1 (zh)
JP (1) JP2023543004A (zh)
CN (1) CN112395288B (zh)
WO (1) WO2022061995A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312312B (zh) * 2021-06-08 2022-08-05 武汉理工大学 一种基于lsm高效查询流数据的分布式索引方法及系统
CN113704565B (zh) * 2021-10-28 2022-02-18 浙江大学 基于全局区间误差的学习型时空索引方法、装置及介质
CN117271531B (zh) * 2023-11-21 2024-02-23 苏州元脑智能科技有限公司 一种数据存储方法、系统、设备及介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100418092C (zh) * 2006-02-20 2008-09-10 南京联创科技股份有限公司 海量数据内存数据库中快速定位的网格+t树索引的方法
US9367938B2 (en) * 2013-02-28 2016-06-14 Nokia Technologies Oy Method and apparatus for automated real-time detection of overlapping painted markup elements
US10929501B2 (en) * 2013-08-08 2021-02-23 Sap Se Managing and querying spatial point data in column stores
CN103617162B (zh) * 2013-10-14 2016-09-07 南京邮电大学 一种对等云平台上构建希尔伯特r树索引的方法
CN104408039B (zh) * 2014-09-06 2017-09-08 东北大学 基于Hilbert曲线与R‑tree的HBase多维查询系统的构建及其查询方法
CN104731984B (zh) * 2015-04-22 2019-01-22 山东理工大学 汽车轮毂表面样点r树上溢结点增量式聚类优化方法
CN104933189B (zh) * 2015-07-08 2019-01-22 山东理工大学 基于结点中心漂移分裂的佛像表面采样数据r树优化方法
CN105828292A (zh) * 2016-05-09 2016-08-03 青岛海信移动通信技术股份有限公司 一种基于地理围栏的位置检测方法及装置
CN109582677B (zh) * 2018-12-03 2021-05-04 东北大学 基于孩子节点的多粒度分布式读写锁的r树索引优化方法
CN109978274A (zh) * 2019-04-02 2019-07-05 海南阿凡题科技有限公司 调度路径的规划方法
CN110059067B (zh) * 2019-04-04 2022-09-27 南京南瑞水利水电科技有限公司 一种水利空间矢量大数据存储管理方法

Also Published As

Publication number Publication date
US20230281182A1 (en) 2023-09-07
CN112395288A (zh) 2021-02-23
JP2023543004A (ja) 2023-10-12
WO2022061995A1 (zh) 2022-03-31

Similar Documents

Publication Publication Date Title
CN112395288B (zh) 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
US11899641B2 (en) Trie-based indices for databases
US9672235B2 (en) Method and system for dynamically partitioning very large database indices on write-once tables
US10102253B2 (en) Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
Beckmann et al. A revised R*-tree in comparison with related index structures
US8190649B2 (en) Ranking and clustering of geo-located objects
CN105975587B (zh) 一种高性能的内存数据库索引组织与访问方法
Zhang et al. Hbasespatial: A scalable spatial data storage based on hbase
CN111427847B (zh) 面向用户自定义元数据的索引与查询方法和系统
CN104199986A (zh) 基于hbase和geohash的矢量数据空间索引方法
CN111723096B (zh) 一种集成GeoHash和Quadtree的空间数据索引方法
CN108009265B (zh) 一种云计算环境下的空间数据索引方法
Jing et al. An improved distributed storage and query for remote sensing data
Azri et al. Review of spatial indexing techniques for large urban data management
CN110597805B (zh) 一种内存索引结构处理方法
CN115408382A (zh) 面向大规模卫星数据的矢量空间信息网格化存储管理方法
CN107273443B (zh) 一种基于大数据模型元数据的混合索引方法
Tang et al. A hybrid index for multi-dimensional query in HBase
CN117608476A (zh) 矢量数据分块存储方法、装置、电子设备及介质
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
WO2016043121A1 (ja) 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
JP6006740B2 (ja) インデックス管理装置
JP6403232B2 (ja) 情報処理装置、情報処理方法、及びプログラム
Liu et al. Management of large indoor point clouds: An initial exploration
Arpitha et al. A Navigation Supporting System Using R-Tree

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