为数据集合构建索引的方法、数据查询方法及计算设备技术

技术编号:23604849 阅读:20 留言:0更新日期:2020-03-28 05:54
本发明专利技术公开了一种为数据集合构建索引的方法、数据查询方法及计算设备,数据集合以有序单链表的形式存储在计算设备中,数据集合的各元素分别对应单链表的不同数据节点,为数据集合构建索引的方法包括:在单链表中插入多个虚节点、以将单链表划分为多个子链表,其中虚节点为子链表的起始节点;为多个虚节点建立数组索引、以便根据数组索引定位到子链表,其中数组索引的键为虚节点的节点值,值为虚节点的地址;为数据节点建立哈希索引、以便根据哈希索引定位到数据节点,其中哈希索引的键为数据节点的节点值,值为数据节点的地址。

The method of building index for data set, data query method and computing equipment

【技术实现步骤摘要】
为数据集合构建索引的方法、数据查询方法及计算设备
本专利技术涉及数据库领域,特别涉及一种为数据集合构建索引的方法、数据查询方法及计算设备。
技术介绍
随着互联网的迅速发展,数据量的急剧增长,所包含的信息日益丰富,对数据的应用已经深入到生活和工作的方方面面,与此同时,对数据进行检索,得到期望的结果成为应用数据的一个重要方面。目前,针对数据进行检索的主要方式是基于存储有序数据集合的单链表,通过多个逐层稀疏的单链表实现对有序数据集合的索引。一方面,由于在进行单点查询时,需要从顶层单链表开始索引到底层存储链表,导致索引平均时间较长,索引效率较低。另一方面,由于每一层索引链表中的结点及个数决定了索引的效率,为每一层链表增加结点并建立层之间的关联比较复杂,限制了索引效率的提升。如何使服务端尽快的查到符合条件的数据,往往是技术人员提升程序效率、服务方提高用户体验的关键。为此,需要一种新的为数据集合构建索引的方法。
技术实现思路
为此,本专利技术提供一种为数据集合构建索引的方法,以力图解决或者至少缓解上面存在的问题。根据本专利技术的一个方面,提供了一种为数据集合构建索引的方法,在计算设备中执行,数据集合以有序单链表的形式存储在计算设备中,数据集合的各元素分别对应单链表的不同数据节点,方法包括:在单链表中插入多个虚节点,以将单链表划分为多个子链表,其中虚节点为子链表的起始节点;为多个虚节点建立数组索引,以便根据数组索引定位到子链表,其中数组索引的键为虚节点的节点值、值为虚节点的地址;为数据节点建立哈希索引,以便根据哈希索引定位到数据节点,其中哈希索引的键为数据节点的节点值、值为数据节点的地址。可选地,在根据本专利技术的为数据集合构建索引的方法中,在单链表中插入多个虚节点,以将单链表划分为多个子链表,包括:获取数据集合中数据的取值区间;将取值区间划分为多个等长度的子区间;分别将各子区间的起始值作为虚节点的节点值,插入到单链表中。可选地,在根据本专利技术的为数据集合构建索引的方法中,若子区间的起始值为单链表中数据节点的节点值,则将该数据节点作为虚节点,并且将该虚节点的状态标记为有效。可选地,在根据本专利技术的为数据集合构建索引的方法中,还包括:在预定的子链表中插入多个虚节点,以将该子链表划分为多个下级子链表;为该预定的子链表中的多个虚节点建立下级数组索引;将数组索引中该子链表对应的地址,更新为下级数组索引的地址。可选地,在根据本专利技术的为数据集合构建索引的方法中,预定的子链表为多个子链表中、节点密度大于全局节点密度阈值的子链表;节点密度为子链表中有效节点数目除以该子链表的长度。可选地,在根据本专利技术的为数据集合构建索引的方法中,还包括按照如下步骤在单链表中插入数据:获取待插入的目标数据;通过哈希索引确定目标数据是否在单链表中;若目标数据不在单链表中,则通过数组索引,确定目标数据对应的子链表;从子链表的起始节点开始,遍历单链表,查找第一个大于目标数据的数据节点,在该数据节点之前插入目标数据。可选地,在根据本专利技术的为数据集合构建索引的方法中,还包括对单链表进行数据维护,数据维护包括删除数据,删除数据包括:通过哈希索引确定要删除值是否在单链表中;若要删除值在单链表中,则将要删除值对应的数据节点的状态修改为无效。可选地,在根据本专利技术的为数据集合构建索引的方法中,数据维护还包括数据更新,数据更新包括:将待更新的数据从单链表中删除;将更新后的数据插入单链表。可选地,在根据本专利技术的为数据集合构建索引的方法中,数据维护还包括数据清理,数据清理包括:遍历单链表中所有数据节点;对于遍历到的每个数据节点,判断该数据节点是否有效;若数据节点无效,则将该数据节点从单链表中删除。根据本专利技术的一个方面,提供了一种数据查询方法,在计算设备中执行,计算设备中以有序单链表的形式存储有数据集合,数据集合的各元素分别对应单链表的不同数据节点,数据集合按照上述的方法建立有数组索引和哈希索引,数据查询方法包括:获取待查询的目标数据;通过哈希索引确定目标数据是否在单链表中;若目标数据在单链表中,则返回目标数据的节点地址。可选地,在根据本专利技术的一种数据查询方法中,还包括:获取待查询的目标数据区间;通过哈希索引确定目标数据区间的起始值是否在单链表中;若起始值在单链表中,则从起始值对应的数据节点开始,遍历单链表,获取目标数据区间对应的查询结果;若起始值不在单链表中,则通过数组索引确定起始值所对应的子链表,并从子链表的起始节点开始,遍历单链表,获取目标数据区间对应的查询结果。可选地,在根据本专利技术的一种数据查询方法中,通过数组索引确定起始值所对应的子链表,包括:将起始值除以子链表对应的取值区间长度,并向下取整;将向下取整结果乘以取值区间长度,得到目标虚节点的节点值;根据目标虚节点的节点值,从数组索引中确定出起始值对应的子链表。可选地,在根据本专利技术的一种数据查询方法中,当根据目标虚节点的节点值,从数组索引确定出的是下级数组索引的地址时,数据查询方法还包括:通过下级数组索引确定起始值对应的下级子链表;从下级子链表的起始节点开始,遍历单链表,获取目标数据区间对应的查询结果。根据本专利技术的又一方面,提供一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,该一个或多个程序被处理器执行时实现如上所述的为数据集合构建索引的方法和数据查询方法的步骤。根据本专利技术的又一方面,提供一种存储一个或多个程序的可读存储介质,该一个或多个程序包括指令,所述指令当由计算设备执行时实现如上所述的为数据集合构建索引的方法和数据查询方法的步骤。根据本专利技术的为数据集合构建索引的方案,使用有序单链表来存储数据,通过在单链表中插入多个虚节点,将单链表划分为多个子链表,并为多个虚节点建立数组索引,以及为单链表中的数据节点建立哈希索引,这样,在进行数据查询时,根据哈希索引就能定位到具体的数据节点,通过数组索引能够快速定位目标数据所属的子链表,从子链表的起始节点即虚节点开始向后遍历,能够大幅缩短查询区间内数据时索引遍历的时间,加快查询速度,提高效率。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。图1示出了根据本专利技术的一个实施例的计算设备100的结构框图;图2示出了根据本专利技术的一个实施例的为数据集合构建索引的方法200的流程图;图3示出了根据本专利技术的一本文档来自技高网...

【技术保护点】
1.一种为数据集合构建索引的方法,在计算设备中执行,所述数据集合以有序单链表的形式存储在所述计算设备中,所述数据集合的各元素分别对应所述单链表的不同数据节点,所述方法包括:/n在所述单链表中插入多个虚节点,以将所述单链表划分为多个子链表,其中所述虚节点为子链表的起始节点;/n为所述多个虚节点建立数组索引,以便根据所述数组索引定位到子链表,其中所述数组索引的键为虚节点的节点值、值为虚节点的地址;/n为所述数据节点建立哈希索引,以便根据所述哈希索引定位到数据节点,其中所述哈希索引的键为数据节点的节点值、值为数据节点的地址。/n

【技术特征摘要】
1.一种为数据集合构建索引的方法,在计算设备中执行,所述数据集合以有序单链表的形式存储在所述计算设备中,所述数据集合的各元素分别对应所述单链表的不同数据节点,所述方法包括:
在所述单链表中插入多个虚节点,以将所述单链表划分为多个子链表,其中所述虚节点为子链表的起始节点;
为所述多个虚节点建立数组索引,以便根据所述数组索引定位到子链表,其中所述数组索引的键为虚节点的节点值、值为虚节点的地址;
为所述数据节点建立哈希索引,以便根据所述哈希索引定位到数据节点,其中所述哈希索引的键为数据节点的节点值、值为数据节点的地址。


2.如权利要求1所述的方法,其中,所述在所述单链表中插入多个虚节点,以将所述单链表划分为多个子链表,包括:
获取所述数据集合中数据的取值区间;
将所述取值区间划分为多个等长度的子区间;
分别将各子区间的起始值作为虚节点的节点值,插入到所述单链表中。


3.如权利要求2所述的方法,其中,若所述子区间的起始值为所述单链表中数据节点的节点值,则将该数据节点作为虚节点,并且将该虚节点的状态标记为有效。


4.如权利要求1至3中任一项所述的方法,还包括:
在预定的子链表中插入多个虚节点,以将该子链表划分为多个下级子链表;
为该预定的子链表中的多个虚节点建立下级数组索引;
将所述数组索引中该子链表对应的地址,更新为下级数组索引的地址。


5.一种数据查询方法,在计算设备中执行,所述计算设备中以有序单链表的形式存储有数据集合,所述数据集合的各元素分别对应所述单链表的不同数据节点,所述数据集合按照如权利要求1-4中任一项所述的方法建立有数组索引和哈希索引,所述数据查询方法包括:
获取待查询的目标数据;
通过所述哈希索引确定所述目标数据是否在所...

【专利技术属性】
技术研发人员:杨明哲
申请(专利权)人:车智互联北京科技有限公司
类型:发明
国别省市:北京;11

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

1