数据遍历方法、装置、电子设备、计算机可读存储介质及计算机程序产品与流程

文档序号:43002830发布日期:2025-09-15 12:18阅读:20来源:国知局

本技术涉及数据处理技术,尤其涉及一种数据遍历方法、装置、电子设备、计算机可读存储介质及计算机程序产品。


背景技术:

1、随着互联网的发展,互联网中产生的海量数据可通过数据库技术进行有效地管理和存取。在数据库技术中,可以使用哈希索引来管理数据,以提升数据库的查询速度。

2、相关技术中,当数据库中数据是采用哈希索引来存储检索数据时,在数据遍历过程,每次只返回一个哈希桶下的全部数据的关键字(key),需要通过反复调用遍历接口来得到值(value),数据遍历效率低下。


技术实现思路

1、本技术实施例提供一种数据遍历方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够实现哈希索引数据的有序排列,进而提高数据库中数据遍历的效率。

2、本技术实施例的技术方案是这样实现的:

3、本技术实施例提供一种数据遍历方法,所述方法包括:接收客户端发送的针对第一哈希表的第一遍历请求;所述第一遍历请求包括第一指示信息,所述第一哈希表包括多个哈希桶和多个链表,每个所述链表对应一个所述哈希桶,所述链表包括按序排列的多个节点;所述第一指示信息至少包括第一哈希值;根据所述第一哈希值确定第一哈希桶,并根据所述第一指示信息,以及所述第一哈希桶对应的链表中每个节点的节点信息,确定第一节点,所述第一节点为起始节点;基于每个所述节点的节点信息和数据量阈值,确定所述第一节点至第二节点的键值对信息,并根据所述第一节点至所述第二节点的键值对信息确定目标数据包;其中,所述第二节点为结束节点,当确定遍历未结束时,所述目标数据包中包括遍历未结束标识和第二指示信息;将所述目标数据包发送至所述客户端,所述客户端用于基于所述第二指示信息构建第二遍历请求。

4、本技术实施例提供一种数据遍历装置,包括:请求接收模块,用于接收客户端发送的针对第一哈希表的第一遍历请求;所述第一遍历请求包括第一指示信息,所述第一哈希表包括多个哈希桶和多个链表,每个所述链表对应一个所述哈希桶,所述链表包括按序排列的多个节点;所述第一指示信息至少包括第一哈希值;第一节点确定模块,用于根据所述第一哈希值确定第一哈希桶,并根据所述第一指示信息,以及所述第一哈希桶对应的链表中每个节点的节点信息,确定第一节点,所述第一节点为起始节点;目标数据包确定模块,用于基于每个所述节点的节点信息和数据量阈值,确定所述第一节点至第二节点的键值对信息,并根据所述第一节点至所述第二节点的键值对信息确定目标数据包;其中,所述第二节点为结束节点,当确定遍历未结束时,所述目标数据包中包括遍历未结束标识和第二指示信息;目标数据包发送模块,将所述目标数据包发送至所述客户端,所述客户端用于基于所述第二指示信息构建第二遍历请求。

5、在一些实施例中,所述第一节点确定模块,还用于获取所述第一哈希表中哈希桶的数量;根据所述第一哈希值以及所述哈希桶的数量,确定第一哈希桶编号;基于所述第一哈希桶编号,从所述第一哈希表中确定所述第一哈希桶。

6、在一些实施例中,当所述链表中每一节点对应不同的哈希值时,所述第一节点确定模块,还用于确定所述第一哈希值的第一反向数;获取所述第一哈希桶对应的链表中第k个节点对应的哈希值的反向数,其中,k=1,2,…,m,m为正整数;当所述第k个节点对应的哈希值的反向数小于所述第一反向数时,获取所述链表中第k+1个节点对应的哈希值的反向数;当所述第k+1个节点对应的哈希值的反向数等于所述第一反向数时,将所述第k+1个节点确定为所述第一节点;当所述第k+1个节点对应的哈希值的反向数小于所述第一反向数时,继续获取下一个节点对应的哈希值的反向数,直至当第m个节点对应的哈希值的反向数等于所述第一反向数时,将第m个节点确定为第一节点。

7、在一些实施例中,所述第一节点确定模块,还用于确定所述第一哈希值的二进制数;将所述第一哈希值的二进制数进行反向二进制处理,得到所述第一哈希值的反向二进制数;基于所述反向二进制数确定所述第一哈希值的第一反向数。

8、在一些实施例中,所述第一节点为所述链表中的第i个节点,所述目标数据包确定模块,还用于基于第i个节点的节点信息,获取所述第i个节点的键值对信息,并将所述第i个节点的键值对信息写入第一数据包;i为大于0的整数;当所述第一数据包的数据量小于所述数据量阈值时,从所述第i个节点的节点信息中获取节点指针;当所述节点指针不为空时,基于所述节点指针确定第i+1个节点,将所述第i+1个节点的键值对信息写入所述第一数据包;当所述第一数据包的数据量大于或等于所述数据量阈值时,将所述i+1个节点确定为所述第二节点,并根据所述第一数据包确定目标数据包。

9、在一些实施例中,所述目标数据包确定模块,还用于当所述节点指针为空时,基于所述第一哈希桶的第一哈希桶编号确定第二哈希桶;当所述第二哈希桶的第二哈希桶编号不为第一预设值,且所述第二哈希桶包括所述链表时,将所述第二哈希桶对应的链表中第一个节点确定为所述第i+1个节点;当所述第二哈希桶的第二哈希桶编号为第一预设值时,确定遍历结束,在所述第一数据包中设置遍历结束标识,得到所述目标数据包。

10、在一些实施例中,当所述链表中每一节点对应不同的哈希值时,所述目标数据包确定模块,还用于当所述第二节点的节点指针不为空时,基于所述节点指针确定第三节点,并将所述第三节点对应的哈希值确定为所述第二指示信息;当所述第二节点的节点指针为空时,基于所述第一哈希桶的第一哈希桶编号确定第二哈希桶,当所述第二哈希桶的第二哈希桶编号不为第一预设值,且所述第二哈希桶包括链表时,将所述第二哈希桶对应的链表中第一个节点对应的哈希值确定为所述第二指示信息;基于所述遍历未结束标识、所述第二指示信息以及所述第一数据包,生成目标数据包。

11、在一些实施例中,当所述链表中存在多个节点对应的相同的哈希值时,所述第一指示信息还包括第一键数据;所述第一节点确定模块,还用于确定所述第一哈希值的第一反向数;获取所述第一哈希桶对应的链表中第j个节点对应的哈希值的反向数,其中,j=1,2,…,n,n为正整数;当所述第j个节点对应的哈希值的反向数等于所述第一反向数时,基于所述第j个节点的节点信息确定键值对信息;从所述第j个节点的键值对信息中获取键数据,当所述键数据大于所述第一键数据时,将所述第j个节点确定为所述第一节点。

12、在一些实施例中,所述目标数据包确定模块,还用于基于每个所述节点的节点信息和数据量阈值,确定所述第一节点至第二节点的键值对信息、所述第二节点的节点指针;当所述第二节点的节点指针不为空的情况时,基于所述节点指针获取第三节点的哈希值和键值对信息;从所述第三节点的键值对信息中确定键数据,并将所述第三节点对应的键数据确定为第二键数据,将所述第三节点对应的哈希值确定为第二哈希值;将所述第二键数据和所述第二哈希值确定为所述第二指示信息;基于所述遍历未结束标识、所述第二指示信息以及所述第一节点至第二节点的键值对信息,确定目标数据包。

13、在一些实施例中,所述数据遍历装置还包括数据新增模块,用于接收针对所述第一哈希表的新增请求,所述新增请求包括目标键值对信息中的目标键数据;获取所述目标键数据的目标哈希值;根据所述目标哈希值,从所述多个哈希桶中确定目标哈希桶;当所述目标哈希桶包括所述链表时,基于所述目标哈希值在所述链表中新增目标节点,得到所述目标链表;所述目标链表中的多个节点按照哈希值的反向数从小到大排列;其中,当多个所述节点的哈希值相同时,多个所述节点按照键数据从小到大排列。

14、在一些实施例中,所述数据遍历装置还包括数据查询模块,用于当将所述第一哈希表中的数据迁移至第二哈希表时,接收查询请求,所述查询请求包括第三键数据;确定第三键数据对应的第三哈希值;根据所述第三哈希值以及所述第一哈希表中哈希桶的数量,确定第三哈希桶编号;获取当前数据迁移进行中的第四哈希桶编号,当所述第三哈希桶编号的反向数小于所述第四哈希桶编号的反向数时,根据所述第三哈希值以及所述第二哈希表中哈希桶的数量,得到目标哈希桶编号;从所述第二哈希表中所述目标哈希桶编号对应的目标哈希桶中,获取所述第三键数据对应的键值对信息。

15、本技术实施例提供一种电子设备,所述电子设备包括:存储器,用于存储计算机可执行指令或者计算机程序;处理器,用于执行所述存储器中存储的计算机可执行指令或者计算机程序时,实现本技术实施例提供的数据遍历方法。

16、本技术实施例提供一种计算机可读存储介质,存储有计算机程序或计算机可执行指令,用于被处理器执行时实现本技术实施例提供的数据遍历方法。

17、本技术实施例提供一种计算机程序产品,包括计算机程序或计算机可执行指令,所述计算机程序或计算机可执行指令被处理器执行时,实现本技术实施例提供的数据遍历方法。

18、本技术实施例具有以下有益效果:

19、一方面,在遍历数据过程中,根据第一遍历请求中的第一指示信息来确定第一哈希桶的链表中第一节点为数据获取的起始节点,由于链表中的多个节点按序排列,因此在确定第一节点后,可以按序依次基于节点的节点信息获取节点的键值对信息,在获取的各节点的键值对信息的数据量到达数据量阈值时,确定结束节点,停止第一遍历请求对应的数据获取过程,得到目标数据包。相比于相关技术中每次只返回一个哈希桶下的全部数据的关键字,再次反复调用遍历接口来得到关键字对应的值,本技术实施例基于数据量阈值来确定返回客户端的目标数据包中包括的键值对信息,也即可以支持逐个返回节点的键值对信息或者返回多个节点数据的键值对信息,提高了数据遍历的效率。

20、另一方面,由于哈希桶对应的链表中的多个节点按序排列,每次遍历都可以确定结束节点,遍历未结束时,目标数据包中包括遍历未结束标识和第二指示信息,客户端可以基于第二指示信息构建第二遍历请求,从而可以根据第二遍历请求中的第二指示信息来确定下一次数据获取的起始节点,使得返回的目标数据包不会出现重复或者遗漏数据的情况。

当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!