CN111651372A - 一种基于哈希查找的Flash检索方法及存储介质 - Google Patents

一种基于哈希查找的Flash检索方法及存储介质 Download PDF

Info

Publication number
CN111651372A
CN111651372A CN202010400678.4A CN202010400678A CN111651372A CN 111651372 A CN111651372 A CN 111651372A CN 202010400678 A CN202010400678 A CN 202010400678A CN 111651372 A CN111651372 A CN 111651372A
Authority
CN
China
Prior art keywords
data
flash
hash
flash storage
storage page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010400678.4A
Other languages
English (en)
Inventor
沈坤
王建国
聂思静
梁美红
陈秀琼
王敏敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hubei Sanjiang Aerospace Wanfeng Technology Development Co Ltd
Original Assignee
Hubei Sanjiang Aerospace Wanfeng Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hubei Sanjiang Aerospace Wanfeng Technology Development Co Ltd filed Critical Hubei Sanjiang Aerospace Wanfeng Technology Development Co Ltd
Priority to CN202010400678.4A priority Critical patent/CN111651372A/zh
Publication of CN111651372A publication Critical patent/CN111651372A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于哈希查找的Flash检索方法及存储介质。该方法包括步骤:接收待存储的数据,每份数据具有唯一的关键值,根据预先构建的哈希函数和每份数据的关键值,计算每份数据的哈希值;在Flash中创建索引表,每份数据的哈希值表示该份数据在索引表中的索引位置,建立索引表中的索引位置与Flash存储页的映射关系;根据每份数据的哈希值和所述映射关系确定每份数据的Flash存储页,将数据存储到对应的Flash存储页中。本发明具有检索效率高的优点。

Description

一种基于哈希查找的Flash检索方法及存储介质
技术领域
本发明属于数据检索技术领域,更具体地,涉及一种基于哈希查找的Flash检索方法及存储介质。
背景技术
在嵌入式产品设计中,通常需要存储一些配置参数、运行状态、运行结果等数据。而且这些数据需要能长期保存,不能在掉电时丢失。检索存储数据的效率,将直接影响产品的性能,甚至决定产品设计的成败。
常见的查找算法有顺序查找、二分查找、二叉排序树查找。对于嵌入式单片机上的Flash检索,其储存和可使用的空间有限,所以不太适合二叉排序树,同时对于检索的速度有要求,在存储和检索的数据量比较大时,顺序查找和二分查找在时间要求上也不适合。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种基于哈希查找的Flash检索方法及存储介质,可以让Flash中有限的存储空间内存放更多的数据,同时还能保证数据检索的高效性。
为实现上述目的,按照本发明的第一方面,提供了一种基于哈希查找的Flash检索方法,包括:
接收待存储的数据,每份数据具有唯一的关键值,根据预先构建的哈希函数和每份数据的关键值,计算每份数据的哈希值;
在Flash中创建索引表,每份数据的哈希值表示该份数据在索引表中的索引位置,建立索引表中的索引位置与Flash存储页的映射关系;
根据每份数据的哈希值和所述映射关系确定每份数据的Flash存储页,将数据存储到对应的Flash存储页。
优选地,若多份数据计算的哈希值相同,则多份数据在索引表中的索引位置相同,将该多份数据按序存储到该索引位置对应的Flash存储页。
优选地,所述将该多份数据按序存储到该索引位置对应的Flash存储页中,当存储后一份数据时,若该索引位置对应的Flash存储页没有空余存储空间,则查找空白的Flash存储页,将后一份数据存储到该空白的Flash存储页,建立后一份数据的Flash存储页与该索引位置对应的Flash存储页的链接关系。
优选地,Flash检索方法还包括:
接收数据查询请求,所述数据查询请求中包括待查询数据的关键值;
根据待查询数据的关键值及所述哈希函数计算待查询数据的哈希值;
根据待查询数据的哈希值获取待查询在索引表中的索引位置,在该索引位置对应的Flash存储页查找待查询数据并返回查询结果。
优选地,若待查询数据的索引位置对应的Flash存储页没有找到待查询数据,并且待查询数据的索引位置对应的Flash存储页链接到另一Flash存储页,则继续在该另一Flash存储页查找待查询数据并返回查询结果。
优选地,Flash检索方法还包括:
接收数据删除请求,所述数据删除请求中包括待删除数据的关键值;
根据待删除数据的关键值及所述哈希函数计算待删除数据的哈希值;
根据待删除数据的哈希值获取待删除数据在索引表中的索引位置,在该索引位置对应的Flash存储页查询并删除待删除数据。
优选地,若删除待删除数据后,待删除数据所在的Flash存储页为空,则调整待删除数据所在的Flash存储页链接的其他Flash存储页的链接关系。
按照本发明的第二方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法。
总体而言,本发明与现有技术相比,本发明采用哈希查找算法,可以让Flash中有限的存储空间内存放更多的数据,同时还能保证数据检索的高效性,降低***响应时间,提升数据存储和检索的效率,非常适合嵌入式数据存储的特殊环境。
附图说明
图1是本发明实施例的基于哈希查找的Flash检索方法示意图;
图2是本发明实施例的基于哈希查找的Flash检索方法的查找流程示意图;
图3是本发明实施例的基于哈希查找的Flash检索方法的增加流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例的基于哈希查找的Flash检索方法,适用于单片机等嵌入式***,采用了哈希查找的基本思想,具体包括步骤S1~S3。
S1,接收待存储的数据,每份数据具有唯一的关键值,根据预先构建的哈希函数和每份数据的关键值,计算每份数据的哈希值。
在一个实施例中,使用的哈希函数是将关键值转换成BCD码,然后将这个BCD码的每一个字节依次相加,得出的最后结果,再取这个结果一个字节的数值,即得到了该关键值对应的哈希值,且相对均匀分布。
S2,在Flash中创建索引表,每份数据的哈希值表示该份数据在索引表中的索引位置,建立索引表中的索引位置与Flash存储页的映射关系。
S3,根据每份数据的哈希值和所述映射关系确定每份数据的Flash存储页,将数据存储到对应的Flash存储页。
在对数据进行存储的时候,分为索引表和存储区两块区域,索引表的第0~N处位置即是哈希函数算出来的哈希值。索引表中的第0~N处位置与Flash存储页具有映射关系。真正的数据存储地址并不在索引表上,而是在存储区上。索引表中哈希值对应的位置其实是个“拉链”头,存放着该数据真正存储的Flash存储页的页号。
若多份数据计算的哈希值相同,则多份数据在索引表中的索引位置相同,将该多份数据按序存储到该索引位置对应的Flash存储页。即,假如几份数据算出来的哈希值一样,即是在索引表中同个“拉链”头,则他们都会按照存储先后顺序存放到同一Flash存储页。
在将多份数据存储到相同索引位置对应的Flash存储页中,当存储后一份数据时,若该索引位置对应的Flash存储页没有空余存储空间,则查找空白的Flash存储页,将后一份数据存储到该空白的Flash存储页,建立后一份数据的Flash存储页与该索引位置对应的Flash存储页的链接关系。即,当Flash中的某一页存满了名单,而下一份数据也同样是算出来同个哈希值,也就是也要存放在同一页的时候,就会找到另外一页去存放,同时通过索引头建立链接。
以下以实验室打卡门禁嵌入式***作为示例,来具体说明本发明实施例的基于哈希查找的Flash检索方法。
假设实验室打卡门禁嵌入式***要求:1)需要存储至少5000份名单在Flash中;2)一份名单内容包括***、有效期、权限、密码、用户名等等信息;3)需要根据***快速地从Flash中找到对应的名单,要求时间为毫秒级。
(1)数据存储的具体方法
“哈希”表的存储方法,首先是根据与一份数据唯一对应的一个关键值通过预先构建的哈希函数算出其存储地址,即哈希值,然后直接到该对应的存储地址上去拿这份数据。这样就避免了遍历查找的过程,大大节省了查找时间。
Key值一般是与一份数据相关的唯一对应的一个关键值,比如这个例子中的***,***是唯一的,一份***对应一份名单。所以***作为一份名单的key值是很合适的。在这个实例中,key值即为***,是个4字节或者8字节的数;这里统一认定为是个8字节的数。
构建哈希函数,对于一个长度很长的数来说,该数的每一位数字都是随机均匀的,利用这个特性,此处的哈希函数的算法是将这个数转化成BCD码,然后将这个BCD码的每一个字节依次相加,得出的最后结果,再取这个结果一个字节的数值。这样得到的哈希值就相对地随机均匀分布。哈希函数如下:
Figure BDA0002489329270000051
hextobcd函数是将该8字节的数转换成了10字节的BCD码,然后将这10个字节依次相加,最后将值赋给一个字节的ucFindex,也就是只取一个字节的数值。该值即为存储地址,可见算出来最多可能有256个位置,即此处所规划的Flash中的某一个区域的第0~256处位置。
哈希表查找算法中无可避免的问题是会产生哈希值“冲突”,即是无论哈希函数如何地随机均匀,也是无法保障不会产生不同的key值算出相同的哈希值的问题。这就意味着两份数据要存储在相同的存储地址,这显然是不行的。所以如何解决哈希值“冲突”,也是哈希表查找算法中的重点。
在一个例子中,使用的Flash型号是M45PE80,共有4096页,每一页是256个字节;擦除的最小单位是一页。对于名单的存储,如图1所示,分为索引表和名单表两块区域,索引表的第0~256处位置即是上述哈希函数算出来的哈希值。但是真正的名单存储地址并不在索引表上,而是在名单表上。索引表中哈希值对应的位置其实是个“拉链”头,存放着该名单真正存储的在名单表中的第几页的数值,即页号。这样,假如几份名单算出来的哈希值一样,即是在索引表中同个“拉链”头,则它们都会存放到名单表中的同一页。这样就解决了哈希值“冲突”的问题。
当名单表中的某一页存满了名单,而下一份名单也同样是算出来同个哈希值,也就是也要存放在同一页的时候,就会找到另外一页去存放,同时通过索引头建立链接。就类似“拉链”法中的可无限扩充“拉链”的长度。Flash中每个结点是一页,每一页中存放几份数据。
(2)查找过程
查找过程如图2所示,包括步骤:
a.接收到名单查找请求,名单查找请求中包括关键值***。
b.根据***及哈希函数,算出哈希值,即是在索引表中的位置。
c.到索引表中对应的位置拿到对应的Flash存储页号。
d.遍历该Flash存储页中的名单,找到对应名单返回查询结果;若该页找不到,到其链接的下一页中查找对应名单返回查询结果。
e.若已经没有下一页了还找不到,则说明没有对应的名单。
分析上述查找过程:在该例子中,假如有5000份名单,且均匀分布;索引表中共有256个位置,平均下来每个位置需要大约存放20份名单;而每一页大约能存12分名单,也就是说每个位置大约要链接着2页;在这样的假设中,每一次查找的过程,需要花费读取Flash中的两页数据的时间,从中遍历查找对应名单;而如果不采用算法,5000份名单是直接按顺序存在Flash中的话,是存放大约417页。假设要查找的名单处于中间位置,则查找的时候,需要花费读取Flash中的200页左右的时间来遍历。显然,采用“哈希”算法来存储查找,大大节省了时间。不过这里是假设了均价分布的情况,实际应用中是不可能如此均匀的。但是哪怕不均匀,链接的页数也肯定不会很多,也就是读取Flash的页数不会很多,读取的时间也就不会花费太多。当然这里还有极端的情况,就是当所有名单的哈希值都是相同的,那这样的话,算法的时间复杂度就退化为完全遍历一样了。不过这样的情况在实际应用中是几乎不会发生的。
(3)增加过程
名单增加流程图如图3所示,名单表其实就是一大块空白的区域,名单的链接也并不是按照顺序的。当增加一份名单的时候,增加的过程如下:
a.根据新增名单的***,算出哈希值,即是在索引表中的位置。
b.到索引表中对应的位置拿到对应的页号。
c.将名单存放到对应的页号中。
d.若该页存满,而链接的下一页中未存满,则存放到下一页中。
e.若没有下一页了,即链接的所有页都存满了,这时候就需要到名单表中查找一页空白页,然后添加索引头,建立链接,然后存放到该页中。
f.如果新增存储多个***对应的数据,如此循环3~5。
(4)删除过程
删除名单的过程其实与查找的过程类似,只是在查找到的时候,将该名单删除,包括步骤:
a.接收名单删除请求,名单删除请求中包括***;
b.根据***及哈希函数计算待删除数据的哈希值;
c.根据上述哈希值获取待删除数据在索引表中的索引位置,在该索引位置对应的Flash存储页查询并删除待删除数据。
要注意的是:删除后若该页为空,则要将该页索引头等全清空,并调整好该页链接的其他页的链接;删除的时候由于至少会擦除一页,所以要注意名单的备份,防止删除过程擦除完一页的时候断电了,导致原本不打算删除的名单丢失了。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述任一图像融合方法实施例的技术方案。其实现原理、技术效果与上述方法类似,此处不再赘述。
必须说明的是,上述任一实施例中,方法并不必然按照序号顺序依次执行,只要从执行逻辑中不能推定必然按某一顺序执行,则意味着可以以其他任何可能的顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于哈希查找的Flash检索方法,其特征在于,包括:
接收待存储的数据,每份数据具有唯一的关键值,根据预先构建的哈希函数和每份数据的关键值,计算每份数据的哈希值;
在Flash中创建索引表,每份数据的哈希值表示该份数据在索引表中的索引位置,建立索引表中的索引位置与Flash存储页的映射关系;
根据每份数据的哈希值和所述映射关系确定每份数据的Flash存储页,将数据存储到对应的Flash存储页中。
2.如权利要求1所述的一种基于哈希查找的Flash检索方法,其特征在于,若多份数据计算的哈希值相同,则多份数据在索引表中的索引位置相同,将该多份数据按序存储到该相同索引位置对应的Flash存储页。
3.如权利要求2所述的一种基于哈希查找的Flash检索方法,其特征在于,所述将该多份数据按序存储到该相同索引位置对应的Flash存储页中,当存储后一份数据时,若该索引位置对应的Flash存储页没有空余存储空间,则查找空白的Flash存储页,将后一份数据存储到该空白的Flash存储页,建立后一份数据的Flash存储页与该索引位置对应的Flash存储页的链接关系。
4.如权利要求3所述的一种基于哈希查找的Flash检索方法,其特征在于,包括:
接收数据查询请求,所述数据查询请求中包括待查询数据的关键值;
根据待查询数据的关键值及所述哈希函数计算待查询数据的哈希值;
根据待查询数据的哈希值获取待查询在索引表中的索引位置,在该索引位置对应的Flash存储页查找待查询数据并返回查询结果。
5.如权利要求4所述的一种基于哈希查找的Flash检索方法,其特征在于,若待查询数据的索引位置对应的Flash存储页没有找到待查询数据,并且待查询数据的索引位置对应的Flash存储页链接到另一Flash存储页,则继续在该另一Flash存储页查找待查询数据并返回查询结果。
6.如权利要求3所述的一种基于哈希查找的Flash检索方法,其特征在于,包括:
接收数据删除请求,所述数据删除请求中包括待删除数据的关键值;
根据待删除数据的关键值及所述哈希函数计算待删除数据的哈希值;
根据待删除数据的哈希值获取待删除数据在索引表中的索引位置,在该索引位置对应的Flash存储页查询并删除待删除数据。
7.如权利要求6所述的一种基于哈希查找的Flash检索方法,其特征在于,若删除待删除数据后,待删除数据所在的Flash存储页为空,则调整待删除数据所在的Flash存储页链接的其他Flash存储页的链接关系。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
CN202010400678.4A 2020-05-13 2020-05-13 一种基于哈希查找的Flash检索方法及存储介质 Pending CN111651372A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010400678.4A CN111651372A (zh) 2020-05-13 2020-05-13 一种基于哈希查找的Flash检索方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010400678.4A CN111651372A (zh) 2020-05-13 2020-05-13 一种基于哈希查找的Flash检索方法及存储介质

Publications (1)

Publication Number Publication Date
CN111651372A true CN111651372A (zh) 2020-09-11

Family

ID=72346640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010400678.4A Pending CN111651372A (zh) 2020-05-13 2020-05-13 一种基于哈希查找的Flash检索方法及存储介质

Country Status (1)

Country Link
CN (1) CN111651372A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113096284A (zh) * 2021-03-19 2021-07-09 福建新大陆通信科技股份有限公司 一种ctid门禁授权信息的核验方法
CN114780461A (zh) * 2022-06-17 2022-07-22 山东理工职业学院 单片机参数的存储方法、装置和电子设备
CN115878612A (zh) * 2022-11-17 2023-03-31 石家庄纵宇科技有限公司 一种数据库结构及其检索方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060277178A1 (en) * 2005-06-02 2006-12-07 Wang Ting Z Table look-up method with adaptive hashing
CN101655820A (zh) * 2009-08-28 2010-02-24 深圳市茁壮网络股份有限公司 关键字存储方法及存储装置
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
CN103020262A (zh) * 2012-12-24 2013-04-03 Tcl集团股份有限公司 一种数据存储方法、***及数据存储设备
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN110032528A (zh) * 2019-04-19 2019-07-19 苏州浪潮智能科技有限公司 存储***的内存数据查找方法、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060277178A1 (en) * 2005-06-02 2006-12-07 Wang Ting Z Table look-up method with adaptive hashing
CN101655820A (zh) * 2009-08-28 2010-02-24 深圳市茁壮网络股份有限公司 关键字存储方法及存储装置
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
CN103020262A (zh) * 2012-12-24 2013-04-03 Tcl集团股份有限公司 一种数据存储方法、***及数据存储设备
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN110032528A (zh) * 2019-04-19 2019-07-19 苏州浪潮智能科技有限公司 存储***的内存数据查找方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张黎明: "《计算机软件技术基础》", 北京工业大学出版社, pages: 300 - 301 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113096284A (zh) * 2021-03-19 2021-07-09 福建新大陆通信科技股份有限公司 一种ctid门禁授权信息的核验方法
CN114780461A (zh) * 2022-06-17 2022-07-22 山东理工职业学院 单片机参数的存储方法、装置和电子设备
CN115878612A (zh) * 2022-11-17 2023-03-31 石家庄纵宇科技有限公司 一种数据库结构及其检索方法
CN115878612B (zh) * 2022-11-17 2023-12-15 北京东方京融教育科技股份有限公司 一种数据库结构及其检索方法

Similar Documents

Publication Publication Date Title
CN111651372A (zh) 一种基于哈希查找的Flash检索方法及存储介质
CN106294190B (zh) 一种存储空间管理方法及装置
CN105975399B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
CN110321325B (zh) 文件索引节点查找方法、终端、服务器、***及存储介质
US11580162B2 (en) Key value append
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
CN112287182A (zh) 图数据存储、处理方法、装置及计算机存储介质
CN105117355A (zh) 存储器、存储器***及其数据处理方法
US20100228914A1 (en) Data caching system and method for implementing large capacity cache
CN112860592B (zh) 基于链表的数据缓存方法、装置、电子设备和存储介质
CN109766318B (zh) 文件读取方法及装置
CN111552692A (zh) 一种加减法布谷鸟过滤器
CN114691721A (zh) 图数据的查询方法、装置、电子设备及存储介质
CN116578746A (zh) 对象去重方法及装置
CN114116612B (zh) 一种基于b+树索引归档文件的存取方法
WO2020215580A1 (zh) 一种分布式全局数据去重方法和装置
CN113157600A (zh) 一种叠瓦式硬盘的空间分配方法、文件存储***及服务器
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
CN108241758B (zh) 数据查询方法及相关设备
CN114553885A (zh) 基于dht网络的存储方法及装置、电子设备、存储介质
CN114416741A (zh) 基于多级索引的kv数据写入读取方法、装置及存储介质
CN109325023B (zh) 一种数据处理方法及装置
CN104021142B (zh) 防篡改***网页文件指纹的存储和查询方法
KR102071072B1 (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
CN112699060A (zh) 一种数据块的管理方法、***及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200911

RJ01 Rejection of invention patent application after publication