一种HASH索引数据的存储、读取方法与系统与流程

文档序号:22500679发布日期:2020-10-13 09:33阅读:129来源:国知局
一种HASH索引数据的存储、读取方法与系统与流程

本发明涉及内存数据库索引数据技术领域,具体涉及一种hash索引数据的存储、读取方法与系统。



背景技术:

为了能够快速的从海量内存记录中查找特定的记录,需要为频繁访问的字段创建索引。针对等值查找,一般使用hash索引。

传统的hash索引,当hash值重复时,一般采用链表存储,也就是将重复的值都存储在同一个链表上。如果某个索引值的重复度很高,那么其对应的链表就会特别长。针对内存数据库的使用场景,一般会对索引记录做频繁的插入删除操作,出于高性能的考虑,删除操作不是真的的删除,而是在对应记录处打上删除标志,以便后续的插入操作可以复用这块内存。因此在插入一条索引记录时,由于需要复用之前已删除的内存空间,就需要顺序遍历整个链表,以便找到某个被删除的位置,然后把新记录放入。

在表数据量很大的情况下,比如重复数据超过100万条记录时,插入会变得非常慢。



技术实现要素:

针对当前采用hash索引的某些值重复度非常高时不能够快速的插入和删除的问题,本发明提供一种hash索引数据的存储、读取方法与系统。

本发明公开了一种hash索引数据的存储、读取方法,所述hash索引数据对应的内存值中储存有索引记录;

所述索引记录的条数由拥有多少hash值重复的数据决定;

所述索引数据格式为依次排列的索引标志、索引值、下一条指针和下一条被删除的记录指针。

优选地,上述hash索引数据的存储方法为:

将多条hash值重复的数据记录,存储在同一个链表中;

插入索引记录时,当链表头部索引记录的“索引标志”为1,则直接复用头部索引记录;当链表头部索引记录的“索引标志”为0,则取出头部索引记录的下一条指针所指向的记录,若头部索引记录的下一条指针所指向的记录为空,则表示没有可复用记录,直接在头部插入一条新记录即可;如果头部索引记录的下一条指针所指向的记录不为空,则复用头部索引记录的下一条指针所指向的那条记录。

优选地,上述索引记录的“索引标志”为1表示当前索引记录状态为在用,所述索引记录的“索引标志”为0表示当前索引记录状态为已删除。

优选地,上述hash索引数据的读取方法为根据hash值、索引标志和索引值进行查询及数据读取;具体过程如下:

先根据hash值进行索引,然后在对应hash值的索引记录中进行查询,查询过程为先读取索引标志,读取索引标志为1的索引记录中的索引值,与查询的索引值进行比较,直到找到对应索引记录。

优选地,上述hash索引数据的删除方法为:

索引记录被删除时,不释放索引空间,也不从索引链表中删除,只是修改索引标志为0;

在删除其中一条索引记录时,如果它不在链表头部,则将头部记录的下一条指针所指向的记录指向当前删除的索引记录,当前删除的索引记录的下一条被删除的记录指针指向原先链表头部记录的下一条指针所指向的记录。

一种hash索引数据的存储、读取系统,至少包括处理器和存储器,所述存储器中储存有上述方法的可执行程序;所述处理器运行上述方法的可执行程序对内存数据进行索引。

与现有技术相比,本发明的有益效果为:

采用本发明的一种hash索引数据的存储、读取方法与系统后,避免了在插入数据时遍历整个索引链表,通过直接内存定位的方式找到对应的索引文件,在重复度大于100万时,可以使执行效率提高100倍。有效提高了hash索引数据的效率,对应用hash索引数据产生了积极影响,提高了hash索引数据的可靠性和实用性。

附图说明

图1是本发明一种hash索引数据的存储、读取方法的架构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合附图对本发明做进一步的详细描述:

参见图1,一种hash索引数据的存储、读取方法,所述hash索引数据对应的内存值中储存有索引记录;

所述索引记录的条数由拥有多少hash值重复的数据决定;

所述索引数据格式为依次排列的索引标志、索引值、下一条指针next和下一条被删除的记录指针next2。

具体实施时,上述hash索引数据的存储方法为:

将多条hash值重复的数据记录,存储在同一个链表中;

插入索引记录时,当链表头部索引记录的“索引标志”为1,则直接复用头部索引记录;当链表头部索引记录的“索引标志”为0,则取出头部索引记录的下一条指针next所指向的记录,若头部索引记录的下一条指针next所指向的记录为空,则表示没有可复用记录,直接在头部插入一条新记录即可;如果头部索引记录的下一条指针next所指向的记录不为空,则复用头部索引记录的下一条指针next所指向的那条记录。

具体实施时,上述索引记录的“索引标志”为1表示当前索引记录状态为在用,所述索引记录的“索引标志”为0表示当前索引记录状态为已删除。

具体实施时,上述hash索引数据的读取方法为根据hash值、索引标志和索引值进行查询及数据读取;具体过程如下:

先根据hash值进行索引,然后在对应hash值的索引记录中进行查询,查询过程为先读取索引标志,读取索引标志为1的索引记录中的索引值,与查询的索引值进行比较,直到找到对应索引记录。

具体实施时,上述hash索引数据的删除方法为:

索引记录被删除时,不释放索引空间,也不从索引链表中删除,只是修改索引标志为0;

在删除其中一条索引记录时,如果它不在链表头部,则将头部记录的下一条指针next所指向的记录指向当前删除的索引记录,当前删除的索引记录的下一条被删除的记录指针next2指向原先链表头部记录的下一条指针next所指向的记录。

一种hash索引数据的存储、读取系统,至少包括处理器和存储器,所述存储器中储存有上述方法的可执行程序;所述处理器运行上述方法的可执行程序对内存数据进行索引。

本发明的一种hash索引数据的存储、读取方法与系统,避免了在插入数据时遍历整个索引链表,通过直接内存定位的方式找到对应的索引文件,在重复度大于100万时,可以使执行效率提高100倍。有效提高了hash索引数据的效率,对应用hash索引数据产生了积极影响,提高了hash索引数据的可靠性和实用性。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。



技术特征:

1.一种hash索引数据的存储、读取方法,其特征在于,所述hash索引数据对应的内存值中储存有索引记录;

所述索引记录的条数由拥有多少hash值重复的数据决定;

所述索引数据格式为依次排列的索引标志、索引值、下一条指针和下一条被删除的记录指针。

2.根据权利要求1所述的一种hash索引数据的存储、读取方法,其特征在于:所述hash索引数据的存储方法为:

将多条hash值重复的数据记录,存储在同一个链表中;

插入索引记录时,当链表头部索引记录的“索引标志”为1,则直接复用头部索引记录;当链表头部索引记录的“索引标志”为0,则取出头部索引记录的下一条指针所指向的记录,若头部索引记录的下一条指针所指向的记录为空,则表示没有可复用记录,直接在头部插入一条新记录即可;如果头部索引记录的下一条指针所指向的记录不为空,则复用头部索引记录的下一条指针所指向的那条记录。

3.根据权利要求2所述的一种hash索引数据的存储、读取方法,其特征在于:所述索引记录的“索引标志”为1表示当前索引记录状态为在用,所述索引记录的“索引标志”为0表示当前索引记录状态为已删除。

4.根据权利要求1所述的一种hash索引数据的存储、读取方法,其特征在于:所述hash索引数据的读取方法为根据hash值、索引标志和索引值进行查询及数据读取;具体过程如下:

先根据hash值进行索引,然后在对应hash值的索引记录中进行查询,查询过程为先读取索引标志,读取索引标志为1的索引记录中的索引值,与查询的索引值进行比较,直到找到对应索引记录。

5.根据权利要求1所述的一种hash索引数据的存储、读取方法,其特征在于:所述hash索引数据的删除方法为:

索引记录被删除时,不释放索引空间,也不从索引链表中删除,只是修改索引标志为0;

在删除其中一条索引记录时,如果它不在链表头部,则将头部记录的下一条指针所指向的记录指向当前删除的索引记录,当前删除的索引记录的下一条被删除的记录指针指向原先链表头部记录的下一条指针所指向的记录。

6.一种hash索引数据的存储、读取系统,至少包括处理器和存储器,其特征在于:所述存储器中储存有上述权利要求1-5所述方法的可执行程序;所述处理器运行上述权利要求1-5所述方法的可执行程序对内存数据进行索引。


技术总结
本发明公开了一种HASH索引数据的存储、读取方法与系统,所述HASH索引数据对应的内存值中储存有索引记录;索引记录的条数由拥有多少HASH值重复的数据决定;索引数据格式为依次排列的索引标志、索引值、下一条指针和下一条被删除的记录指针。HASH索引数据的存储方法为:将多条HASH值重复的数据记录,存储在同一个链表中;插入索引记录时,当链表头部索引记录的“索引标志”为在用状态,则直接复用头部索引记录;当链表头部索引记录的“索引标志”为已删除状态,则取出头部索引记录的下一条指针所指向的记录。解决了当前采用HASH索引的某些值重复度非常高时不能够快速的插入和删除的问题。

技术研发人员:王金山
受保护的技术使用者:北京思特奇信息技术股份有限公司
技术研发日:2020.06.23
技术公布日:2020.10.13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1