当前位置: 首页 > 专利查询>钟士平专利>正文

基于A+树数据结构存储的数据查询方法技术

技术编号:35698278 阅读:9 留言:0更新日期:2022-11-23 14:50
本发明专利技术涉及计算机数据结构及数据查询方法技术领域,尤其涉及基于A+树数据结构存储的数据查询方法,包括:将数据的关键字Key值进行有序分割后,获得数字排列特征序列;将序列中的数字有序的与树结构各层级节点内的数组下标进行关联,构成树形结构与数组相结合表示的链路;将数据地址或数据页地址存储至树叶子节点的数组中,非叶子节点的数组中存储次级节点地址,构建基于A+树数据结构存储的数据查询方法。相对Hash算法,通过将动、静态树节点相结合的方式,实现数据高效查询,支持数据遍历,且无Hash冲突;在外存储器中应用时,A+树通过将链路与数据页结合的方式有效降低I/O请求,相对B+树算法,提高了数据查询及应用效率。提高了数据查询及应用效率。提高了数据查询及应用效率。

【技术实现步骤摘要】
基于A+树数据结构存储的数据查询方法


[0001]本专利技术涉及计算机数据结构及数据查询
,尤其涉及基于A+树数据结构存储的数据查询方法。

技术介绍

[0002]目前,数据的查询算法普遍以B树、B+树、Hash算法为主。其中,Hash算法查询的时间复杂度最优,但因其数据结构的限制,存在着Hash冲突消耗,性能不够稳定的问题,且功能单一,因而其应用范围存在着局限性,通用性较低。而B树、B+树算法因其操作产生的I/O消耗低、功能完善,使其在外存储器中有着成熟、广泛的应用。但B+树算法,在数据集规模超过2000万时,性能开始明显下降,影响查询效率。随着大数据应用的不断深化,对查询算法的数据存储结构也提出了更高的要求,可见,亟需提出一种不仅能提高数据查询效率,且通用性更好的数据存储结构。

技术实现思路

[0003]本专利技术实施例提供基于A+树数据结构存储的数据查询方法,旨在提高数据查询效率的同时,具备更好的通用性。
[0004]本专利技术实施例提供基于A+树数据结构存储的数据查询方法,包括以下步骤:
[0005]将数据的关键字Key值按预设定的分割策略进行有序分割,获得由多个数字组成的数字排列特征序列;
[0006]将树形结构与数组结合生成A+树数据结构,基于所述A+树数据结构构建A+树,其中,所述A+树的树节点类型包括动态节点和/或静态节点;
[0007]将所述数字排列特征序列中的数字对应作为所述A+树中各层级节点的节点特征数字,有序与所述A+树中各层级节点内的数组下标进行关联,构成树形结构与数组相结合表示的链路;
[0008]将数据地址或数据页地址存储至所述A+树中叶子节点的数组中,以及将次级节点地址存储到所述A+树中非叶子节点的数组;
[0009]根据所述A+树中树节点类型的不同,通过所述链路进行数据查询,以及通过所述A+树中的所述叶子节点将所述链路与数据页结构相结合,构成A+树链路页,通过所述A+树链路页进行数据查询。
[0010]在本专利技术实施例中,通过将数据的关键字Key值按预设定的分割策略进行有序分割,获得由多个数字组成的数字排列特征序列;将树形结构与数组结合生成A+树数据结构,基于A+树数据结构构建A+树,其中,A+树的树节点类型包括动态节点和/或静态节点;将数字排列特征序列中的数字对应作为A+树中各层级节点的节点特征数字,有序与A+树中各层级节点内的数组下标进行关联,构成树形结构与数组相结合表示的链路;将数据地址或数据页地址存储至A+树中叶子节点的数组中,以及将次级节点地址存储到A+树中非叶子节点的数组;根据A+树中树节点类型的不同,通过链路进行数据查询,以及通过A+树中的叶子节
点将链路与数据页结构相结合,构成A+树链路页,通过A+树链路页进行数据页查询。相对Hash算法,本申请通过在A+树数据结构中分为动态节点与静态节点,进行数据查询时可实现多种模式的数据查询,实现数据高效查询,支持数据遍历,且无Hash冲突;相对B+树算法,本申请通过将链路与数据页结合的方式,通过A+树链路页进行数据页查询,能有效降低I/O请求,提高数据查询及应用效率。
附图说明
[0011]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1a是本专利技术实施例提供的基于A+树数据结构存储的数据查询方法的流程图;
[0013]图1b是本专利技术实施例提供的A+树数据结构示意图;
[0014]图2a是本专利技术实施例提供的A+树中树节点占用空间示意图;
[0015]图2b是本专利技术实施例提供的A+树中动态节点的结构示意图;
[0016]图2c是本专利技术实施例提供的动态节点中的链路定位流程图;
[0017]图2d是本专利技术实施例提供的一种A+树中链路查询的示意图;
[0018]图3是本专利技术实施例提供的静态节点中的链路定位流程图;
[0019]图4是本专利技术实施例提供的混合节点查询的结构示意图;
[0020]图5是本专利技术实施例提供的静态节点的索引存储空间结构示意图;
[0021]图6是本专利技术实施例提供的一种地址计算的示意图;
[0022]图7是本专利技术实施例提供的查询效率曲线对比图;
[0023]图8是本专利技术实施例提供A+树中动态节点插入数组元素的流程图;
[0024]图9是本专利技术实施例提供的A+树中动态节点删除数组元素流程图;
[0025]图10是本专利技术实施例提供的同级节点间的单向链表的示意图;
[0026]图11是本专利技术实施例提供的页面信息节点的结构示意图;
[0027]图12是本专利技术实施例提供的在外存储器中进行数据查找的流程图;
[0028]图13是本专利技术实施例提供的A+树算法在外存储器中的应用示意图;
[0029]图14是本专利技术实施例提供的寻找相邻且有效的页面信息节点的示意图。
具体实施方式
[0030]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0031]本申请的说明书和权利要求书及附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在
说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0032]请参见图1a,图1a是本专利技术实施例提供的基于A+树数据结构存储的数据查询方法的流程图,如图1a所示,包括以下步骤:
[0033]S1、将数据的关键字Key值按预设定的分割策略进行有序分割,获得由多个数字组成的数字排列特征序列。
[0034]在本专利技术实施例中,基于A+树数据结构存储的数据查询方法运行于其上的电子设备可以通过有线连接方式或者无线连接方式获取数据的关键字Key值或进行数据传输等。其中,无线连接方式可以包括但不限于3G/4G连接、WiFi(Wireless

Fidelity)连接、蓝牙连接、WiMAX(Worldwide Interoperability for Microwave Access)连接、Zigbee(低功耗局域网协议,又称紫峰协议)连接、UWB(ultra wide本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于A+树数据结构存储的数据查询方法,其特征在于,包括以下步骤:将数据的关键字Key值按预设定的分割策略进行有序分割,获得由多个数字组成的数字排列特征序列;将树形结构与数组结合生成A+树数据结构,基于所述A+树数据结构构建A+树,其中,所述A+树的树节点类型包括动态节点和/或静态节点;将所述数字排列特征序列中的数字对应作为所述A+树中各层级节点的节点特征数字,有序与所述A+树中各层级节点内的数组下标进行关联,构成树形结构与数组相结合表示的链路;将数据地址或数据页地址存储至所述A+树中叶子节点的数组中,以及将次级节点地址存储到所述A+树中非叶子节点的数组;根据所述A+树中树节点类型的不同,通过所述链路进行数据查询,以及通过所述A+树中的所述叶子节点将所述链路与数据页结构相结合,构成A+树链路页,通过所述A+树链路页进行数据查询。2.如权利要求1所述的方法,其特征在于,所述将数据的关键字Key值按预设定的分割策略进行有序分割,获得由多个数字组成的数字排列特征序列,包括:检查数据的所述关键字Key值的长度是否小于所述分割策略中预设的所述Key值最大长度,其中,所述Key值最大长度为预设的应用数据集中最大关键字Key值位数;若小于,则基于所述Key值最大长度与所述关键字Key值的长度之间的位数差进行补位0,使所述关键字Key值的长度等于所述Key值最大长度;将补位后的所述关键字Key值基于所述分割策略中预设的分割长度进行有序分割,得到由多个数字组成的所述数字排列特征序列。3.如权利要求1所述的方法,其特征在于,所述动态节点包括头部指针、引导数组和指针数组,所述静态节点包括头部指针和指针数组,所述将所述数字排列特征序列中的数字对应作为A+树中各层级节点的节点特征数字,有序与所述A+树中各层级节点内的数组下标进行关联,构成树形结构与数组相结合表示的链路,包括:根据当前节点的所述节点特征数字的位数长度,一次性申请并初始化所述静态节点中的所述指针数组以及所述动态节点中的所述引导数组对应长度的存储空间,其中,所述动态节点中的所述指针数组长度基于需求动态增减,所述引导数组存储同一节点内所述指针数组的下标,所述头部指针在所述A+树的同层级节点间形成单向有序链表;设置根节点作为当前节点,从所述关键字Key值的所述数字排列特征序列中获取对应当前节点的所述节点特征数字;若所述A+树中树节点为所述动态节点,将当前节点的所述节点特征数字作为当前节点中的所述引导数组的下标定位并读取引导数组元素,将读取的所述引导数组元素作为当前节点中的所述指针数组的下标,定位指针数组元素;基于当前节点中定位到的指针数组元素获取次级节点地址,直至定位到所述叶子节点,构成与所述关键字Key值对应的通过树形结构与数组相结合表示的链路;若所述A+树中树节点为所述静态节点,则直接将对应当前节点的所述节点特征数字作为当前节点中的所述指针数组的下标,定位指针数组元素并获取次级节点地址,直至定位到所述叶子节点;
构建从所述根节点到所述叶子节点通过树形结构与数组相结合表示的链路,构成与所述关键字Key值对应的通过树形结构与数组相结合表示的链路。4.如权利要求3所述的方法,其特征在于,所述根据所述A+树中树节点类型的不同,通过所述链路进行数据查询,包括:当所述A+树中各层级节点的树节点类型为所述静态节点时,或所述A+树中各层级节点的树节点类型为所述动态节点时,则基于当前节点的所述节点特征数字定位指针数组元素,基于定位到的指针数组元素提取次级节点地址进行寻址,直至所述叶子节点,其中,数据查询的时间复杂度为O(H
tree
),H
tree
为所述A+树的高度;当所述A+树中各层级节点的树节点类型包括所述动态节点与所述静态节点时,则进行数据混合查询,其中,当所述A+树的高度为H,且从根节点至第L层为所述静态节点,第H

L层为所述动态节点,则从根节点开始到第L层节点为所述静态节点的数据查询,从L+1层节点至叶子节点层为所述动态节点的数据查询,且所述数据混合查询的时间复杂度为O(H

L)。5.如权利要求4所述的方法,其特征在于,在所述基于当前节点的所述节点特征数字定位指针数组元素之前,包括:若所述A+树中从当前节点层至根节点层均为所述静态节点,且在节点初始化时,当前节点层至根节点层在存储介质中横向、纵向有序排列,则采用地址推算方式,根据当前节点所在的节点层的首地址、当前节点的所述节点特征数字、当前节点在所述关键字Key值中截取的数字,计算当前节点地址,其中,地址推算公式为:P
n
=P0+S
node
×
N
n
×
10
L
+N
f
×
S
p
其中,P
n
为当前节点地址,P0为当前节点所在的节点层的首地址,S
node
为节点占用空间,N
n
为...

【专利技术属性】
技术研发人员:钟士平钟芮谭剑辉罗莽梁庆胡宗平吴智强蒋震东岳奕作李智舒采伟邓振华彭奥宸刘明哲伍康为钟生鹏
申请(专利权)人:钟士平
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1