一种基于连续内存的高速数据查询方法及系统技术方案

技术编号:38495762 阅读:14 留言:0更新日期:2023-08-15 17:06
本发明专利技术涉及一种基于连续内存的高速数据查询方法,通过索引节点以及索引偏移相结合的方式,在逻辑连续的内存地址结构上构造了由索引实现的整体平衡的二叉树,打破了目前使用指针进行数据连接的方法带来的局限性,达到进程间高速共享的目的。本发明专利技术所有节点之间的关系,都通过索引(index)及偏移量来进行表示,完美解决了进程间内存地址不同带来的内存共享的问题;采用由索引实现的双向链表算法,以此做为空闲节点管理结构,直接复用未使用的内存块,大量节约了管理空闲地址的内存开销;查询时,由于数据组织结构采用了由索引实现的整体平衡的二叉树,因此实现了高速的数据查询,由于采用索引来连接各个节点,减少了指针本身的内存开销。内存开销。内存开销。

【技术实现步骤摘要】
一种基于连续内存的高速数据查询方法及系统


[0001]本专利技术涉及大数据处理
,尤其涉及一种基于连续内存的高速数据查询方法及系统。

技术介绍

[0002]随着互联网时代的到来,媒体、教育、电商、互联网金融、企业服务、旅游、医疗和物流等各大领域发生了翻天覆地的变化,海量的数据在网络上流动,要对这些巨大的流量进行全面的分析检测,通常需要对其中的关键信息进行检索得到与之匹配的信息,但是目前面临的问题有:1、在如此大的流量场景下,对每个包的处理效率要求极高,对其中的查询步骤更要求在1毫秒以内,而传统数据库无论是关系型的MySQL和Oracle,还是非关系型数据库的MongoDB和HBase都无法胜任这种应用场景;2、如果将查询的数据集放在传统的、查询优先的数据结构中时,会获得较高的查询效率,但无法支持多进程共享,如果每个进程都自行持有如此巨量的数据,那么内存的消耗会非常巨大,同时也难以维护数据的一致性。
[0003]需要说明的是,在上述
技术介绍
部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0004]本专利技术的目的在于克服现有技术的缺点,提供了一种基于连续内存的高速数据查询方法,解决了现有信息查询检索存在的问题。
[0005]本专利技术的目的通过以下技术方案来实现:一种基于连续内存的高速数据查询方法,所述查询方法包括:
[0006]内存管理步骤:内存管理器设置一种索引节点,通过索引节点的结果复用内存,实现数据和空闲链表的存储,内存管理器初始化申请的内存,将头结构中的空闲链表根节点指向数据块,并通过数据节点和索引节点计算type offset偏移量;
[0007]数据插入步骤:根据查询树根节点字段找到根节点所在的数据块,将数据块的地址加上type offset偏移量找到根节点的索引节点,将插入数据与当前节点的数据进行多次比较,根据比较结果通过索引节点进行移动,然后从空闲链表头部开始取出新的数据节点,将需要插入的数据拷贝到取出的新的数据节点中,通过type offset偏移量找到索引节点并设置索引节点后,将其挂接到树结构上;
[0008]数据查询步骤:根据查询树根节点字段找到根节点所在的数据块,根据type offset偏移量找到根节点的索引节点,对数据区进行比较,并根据比较结果通过索引节点进行移动来实现数据的查询。
[0009]所述索引节点包括父节点、左节点、右节点、节点属性、index、前节点index和后节点index;type offset偏移量表示索引节点在数据节点中的偏移量,通过这个偏移量找每个数据节点的索引节点,并将索引节点中的index、前节点index和后节点index进行赋值,使所有数据块形成索引连接起来。
[0010]所述将插入数据与当前节点的数据进行多次比较,根据比较结果通过索引节点进行移动包括:
[0011]插入数据小于当前节点数据时,移动到左节点,插入数据大于当前节点数据时,移动到右节点,插入数据等于当前节点数据时,则表示数据节点已存在;
[0012]移动后又通过type offset找到相应的索引节点,继续将插入数据与当前节点的数据进行比较;
[0013]当左移后的数据大于当前节点数据,或者右移后的数据小于当前节点数据,或者当前节点为空时,则在当前位置进行数据插入。
[0014]将索引节点挂接到树结构上包括:
[0015]将索引节点的父节点设置为当前节点的父节点的index,如果数据插入步骤中是左移则将索引节点的左节点设置为当前节点的index,如果是右移则将索引节点的右节点设置为当前节点的index,然后将当前节点的父节点设置为新的数据节点。
[0016]所述根据比较结果通过索引节点进行移动来实现数据的查询包括:
[0017]查询的数据小则移动到左节点,当左节点为空时表示未找到数据,查询的数据大时则移动到右节点,当右节点为空时表示未找到数据,等于表示找到查询的数据,最后返回用户查询结果。
[0018]一种基于连续内存的高速数据查询系统,它包括内存管理器、数据插入模块和数据查询模块;
[0019]所述内存管理器:用于设置一种索引节点,通过索引节点的结果复用内存,实现数据和空闲链表的存储,内存管理器初始化申请的内存,将头结构中的空闲链表根节点指向数据块,并通过数据节点和索引节点计算type offset偏移量;
[0020]所述数据插入模块:用于根据查询树根节点字段找到根节点所在的数据块,将数据块的地址加上type offset偏移量找到根节点的索引节点,将插入数据与当前节点的数据进行多次比较,根据比较结果通过索引节点进行移动,然后从空闲链表头部开始取出新的数据节点,将需要插入的数据拷贝到其中,通过type offset偏移量找到索引节点并设置索引节点后,将其挂接到树结构上;
[0021]所述数据查询模块:用于根据查询树根节点字段找到根节点所在的数据块,根据type offset偏移量找到根节点的索引节点,对数据区进行比较,并根据比较结果通过索引节点进行移动来实现数据的查询。
[0022]本专利技术具有以下优点:一种基于连续内存的高速数据查询方法,所有节点之间的关系,都通过索引(index)及偏移量来进行表示,完美解决了进程间内存地址不同带来的内存共享的问题;采用由索引实现的双向链表算法,以此做为空闲节点管理结构,直接复用未使用的内存块,大量节约了管理空闲地址的内存开销;查询时,由于数据组织结构采用了由索引实现的整体平衡的二叉树,因此实现了高速的数据查询。在实际项目中达到了亿级数据平均查询时间在3微秒(us)以内;由于采用索引来连接各个节点,减少了指针本身的内存开销,在数据量大时尤其明显。
附图说明
[0023]图1是本专利技术索引节点及数据结点原理图;
[0024]图2是本专利技术内存管理原理图;
[0025]图3是本专利技术插入及查询示意图;
[0026]图4是本专利技术实际内存使用示意图。
具体实施方式
[0027]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本专利技术做进一步的描述。
[0028]本专利技术具体涉及一种基于连续内存的高速数据查询方法,其中,连续内存可以是进程私有的逻辑地址连续的内存块;也可以是共享内存或者文件内存映射等技术提供的、逻辑地址连续的内存块;其具体包括以下内容:本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于连续内存的高速数据查询方法,其特征在于:所述查询方法包括:内存管理步骤:内存管理器设置一种索引节点,通过索引节点的结果复用内存,实现数据和空闲链表的存储,内存管理器初始化申请的内存,将头结构中的空闲链表根节点指向数据块,并通过数据节点和索引节点计算type offset偏移量;数据插入步骤:根据查询树根节点字段找到根节点所在的数据块,将数据块的地址加上type offset偏移量找到根节点的索引节点,将插入数据与当前节点的数据进行多次比较,根据比较结果通过索引节点进行移动,然后从空闲链表头部开始取出新的数据节点,将需要插入的数据拷贝到取出的新的数据节点中,通过type offset偏移量找到索引节点并设置索引节点后,将其挂接到树结构上;数据查询步骤:根据查询树根节点字段找到根节点所在的数据块,根据type offset偏移量找到根节点的索引节点,对数据区进行比较,并根据比较结果通过索引节点进行移动来实现数据的查询。2.根据权利要求1所述的一种基于连续内存的高速数据查询方法,其特征在于:所述索引节点包括父节点、左节点、右节点、节点属性、index、前节点index和后节点index;type offset偏移量表示索引节点在数据节点中的偏移量,通过这个偏移量找每个数据节点的索引节点,并将索引节点中的index、前节点index和后节点index进行赋值,使所有数据块形成索引连接起来。3.根据权利要求2所述的一种基于连续内存的高速数据查询方法,其特征在于:所述将插入数据与当前节点的数据进行多次比较,根据比较结果通过索引节点进行移动包括:插入数据小于当前节点数据时,移动到左节点,插入数据大于当前节点数据时,移动到右节点,插入数据等于当前节点数据时,则表示数据节点已存在;移动后又通过type offset找到相应的索引节点,继续将插入数据与当前节点的数据进行比较;当左移后的数据...

【专利技术属性】
技术研发人员:熊民俞祥基代先勇邓金祥温嵩杰葛维静肖骁王涛唐林
申请(专利权)人:成都锋卫科技有限公司
类型:发明
国别省市:

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

1