CN112632069B - 哈希表数据存储管理方法、装置、介质和电子设备 - Google Patents
哈希表数据存储管理方法、装置、介质和电子设备 Download PDFInfo
- Publication number
- CN112632069B CN112632069B CN202011529973.6A CN202011529973A CN112632069B CN 112632069 B CN112632069 B CN 112632069B CN 202011529973 A CN202011529973 A CN 202011529973A CN 112632069 B CN112632069 B CN 112632069B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- storage
- address
- memory
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Abstract
本公开涉及一种哈希表数据存储管理方法、装置、介质和电子设备,其中方法包括:获取待处理哈希表中的数据,每个数据携带哈希值、地址偏移量及所属哈希表的标识;基于每个数据所属哈希表的标识及哈希值,在预先建立的哈希查找表中查找每个数据在存储器内对应存储区的地址,以及在相应存储区内对应的存储单元的地址,再基于地址偏移量确定数据待写入的实际物理地址,最后将数据写入存储器内对应的存储单元。本公开的实施方案可以提高哈希表的可移植性,数据存储得更聚集,从而使得后续对哈希表的数据读取效率较高。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种哈希表数据存储管理方法、哈希表数据存储管理装置,实现哈希表数据存储管理方法的计算机可读存储介质和电子设备。
背景技术
在数据库系统中,哈希表(Hash table)是最常见的一种数据结构。通常在数据库系统中哈希表的数据量相对较大,并且会建有多个哈希表。因此一般情况下无法将哈希表中数据全部缓存到片上存储器中,需要存储到片外主存例如动态随机存取存储器(DynamicRandom Access Memory,DRAM)中。
DRAM具有高数据存取延时和高数据带宽的特征,发明人发现,如果直接对DRAM进行哈希表的数据存储,可能会造成数据存储的较为离散,这样后续对哈希表的数据读取时会浪费很多时间,并且使哈希表的可移植性降低。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种哈希表数据存储管理方法、哈希表数据存储管理装置,实现哈希表数据存储管理方法的计算机可读存储介质和电子设备。
第一方面,本公开实施例提供了一种哈希表数据存储管理方法,包括:
获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识;
基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系;
基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系;
基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址;
基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
在本公开的一些实施例中,所述存储器是动态随机存取存储器,包括多个不同的存储区,每个所述存储区包括逻辑上的主存储区,所述主存储区包括多个存储单元,所述哈希查找表包括每个哈希表中各数据的哈希值与对应的每个所述存储区内的主存储区的存储单元的地址之间的对应关系。
在本公开的一些实施例中,每个所述存储区还包括逻辑上的辅存储区,所述辅存储区包括多个存储单元;每个所述主存储区内的每个所述存储单元包括数据存储子单元和地址存储子单元。
在本公开的一些实施例中,所述方法还包括:
在计算的每个所述数据的哈希值中存在哈希冲突时,将哈希冲突的哈希值对应的数据写入对应主存储区的对应存储单元的数据存储子单元;
在所述主存储区写满时,在所述辅存储区中为新哈希冲突的哈希值对应的数据申请一个存储单元,将新哈希冲突的哈希值对应的数据写入申请的该存储单元中,并将申请的该存储单元的地址存储于所述主存储区中与新哈希冲突对应的数据所在存储单元的地址存储子单元。
在本公开的一些实施例中,所述方法还包括:
在所述辅存储区中申请一个存储单元时,记录所述辅存储区中当前可用的其余存储单元的地址;
下一次在所述辅存储区中申请一个存储单元时,基于记录的所述可用的其余存储单元的地址在所述辅存储区中申请存储单元。
在本公开的一些实施例中,所述方法还包括:
预先基于哈希表的标识,建立不同哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系,从而形成所述哈希查找表。
在本公开的一些实施例中,所述方法还包括:
对所述存储器发送连续多次读请求;
缓存所述存储器响应多次所述读请求而输出的数据。
在本公开的一些实施例中,所述方法还包括:
接收删除指令,所述删除指令指示删除所述哈希查找表中一个哈希表相关的对应关系;
响应所述删除指令,在所述哈希查找表中删除对应的哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系。
第二方面,本公开实施例提供一种哈希表数据存储管理装置,包括:
数据获取模块,用于获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识;
第一地址查询模块,用于基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系;
第二地址查询模块,用于基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系;
实际地址确定模块,用于基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址;
数据写入模块,用于基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述哈希表数据存储管理方法的步骤。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任一实施例所述哈希表数据存储管理方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例中对哈希表数据进行转移存储时进行管理,可获取预先建立的哈希查找表,其包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系,以及哈希表中数据的哈希值与对应存储区内不同的存储单元的地址之间的对应关系,基于获取的每个数据携带的哈希表的标识、哈希值以及地址偏移量来查表实现实际物理地址的转换,进而进行数据写入存储,从而可使哈希表中数据转移存储至存储器中时更聚集,使得后续对哈希表的数据读取效率较高,同时基于哈希值以及哈希查找表、地址偏移量等来转换实现实际物理地址的确定,也即实现逻辑地址到物理地址的转换,可提高哈希表的可移植性,从而减少了开发成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例哈希表数据存储管理方法流程图;
图2为本公开实施例中DRAM内存储单元划分示意图;
图3为本公开另一实施例哈希表数据存储管理方法流程图;
图4为本公开又一实施例哈希表数据存储管理方法流程图;
图5为本公开实施例哈希表数据存储管理装置示意图;
图6为本公开实施例实现哈希表数据存储管理方法的电子设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开实施例示出的哈希表数据存储管理方法流程图,该哈希表数据存储管理方法可以包括如下步骤:
步骤S101:获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识。
示例性的,例如计算设备接收来自一个哈希表的数据流,将该数据流缓存在数据流缓存单元中。本实施例中可以从数据流缓存单元中获取一个或多个数据,每个数据携带哈希值、地址偏移量以及所属哈希表的标识。该哈希表的标识可以是唯一编码,但不限于此。
步骤S102:基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系。
示例性的,哈希查找表中的对应关系可以预先建立,查找到的每个数据携带的所属哈希表的标识如编码在存储器内对应的存储区的地址可以作为首地址。本实施例中,一个哈希表的标识如编码对应存储器内一个存储区。
步骤S103:基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系。
示例性的,对应关系中一个哈希表中的数据携带的哈希值对应存储区内的存储单元的地址,查找到的哈希值对应的存储单元的地址可以理解为数据对应的段地址。
例如哈希表A对应存储区A,则哈希表A中的数据X的哈希值对应存储区A内的存储单元A1的地址,哈希表A中的数据Y的哈希值对应存储区A内的存储单元A2的地址。此处仅为举例说明,本实施例中并不限于此。
具体的,获取一个数据的哈希值后,可以在所述哈希查找表中查找该数据在对应的存储区内的存储单元的地址。
步骤S104:基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址。
示例性的,地址偏移量是数据以上述段地址为基准偏移。例如将每个数据的地址偏移量与查找到的对应的存储区的地址即首地址,以及该存储区内对应的存储单元的地址即段地址相加,即可确定每个数据待写入的实际物理地址。
步骤S105:基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
具体的,在确定每个数据待写入的实际物理地址之后,即可将相应数据写入所述存储器内对应的存储单元。
本公开实施例的上述哈希表数据存储管理方法对哈希表数据进行转移存储时进行管理,获取预先建立的哈希查找表,其包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系,以及哈希表中数据的哈希值与对应存储区内不同的存储单元的地址之间的对应关系,基于每个数据携带的哈希表的标识、哈希值以及地址偏移量来查表实现实际物理地址的转换,进而进行数据写入存储,从而可使哈希表中数据转移存储至存储器中时更聚集,使得后续对哈希表的数据读取效率较高,同时基于哈希值以及哈希查找表、地址偏移量等来转换实现实际物理地址的确定,也即实现逻辑地址到物理地址的转换,可提高哈希表的可移植性,从而减少了开发成本。
需要说明的是,本公开实施例中哈希表的可移植性是针对调用该哈希表数据存储管理方法的上层程序模块来说的。通常,如果要将哈希表数据存到一个存储器上,是需要给总线物理地址的。如果上层程序模块直接访问存储器如DRAM,就必须给总线物理地址,这样上层程序模块要是想转移到其他平台上,就很困难。而因为有了本公开实施例的方案之后,上层程序模块就可以给例如DRAM的逻辑地址而不用给出总线物理地址,这样这个上层程序模块就可以转接到其他平台上,大为减少了开发成本。
可选的,在本公开的一些实施例中,所述存储器可以但不限于是DRAM,DRAM可以包括多个不同的存储区,每个所述存储区包括逻辑上的主存储区,所述主存储区包括多个存储单元,所述哈希查找表包括每个哈希表中各数据的哈希值与对应的每个所述存储区内的主存储区的存储单元的地址之间的对应关系。
示例性的,每个存储区即一个分区,图2中示例性示出DRAM内部存储单元划分示意图,在如图2所示的实施例中,DRAM内部可被划分为多个不同的分区20,每个分区20对应用于存储一个哈希表中的数据,即一个哈希表的标识如编码N分别对应一个分区20。本实施例中各个分区20如图2中左侧编号0~N的N个分区的存储空间大小相同,例如为128M,但不限于此。在其他实施例中也可以各个分区20的存储空间大小不同,对此不作限制。每个所述分区20包括逻辑上的主存储区,所述主存储区可包括多个存储单元201,也即每个分区20实际划分为多个存储单元201,本实施例中哈希表中数据以512Byte作为最基本的存储单元201,但不限于此。这些存储单元201逻辑上分为主存储区和下文的辅存储区。与此对应的,本实施例中,可以预先构建所述哈希查找表,即构建每个哈希表的标识如编码与对应分区的对应关系,以及每个哈希表中数据的哈希值与对应的分区20内的主存储区的存储单元201的地址之间的对应关系。
举例来说,例如一哈希表中数据的哈希值如图2中右侧哈希值0~2^17-1,也即主存储区包含2^17个512Byte的存储单元201,每一存储单元201的地址对应一个哈希值如0~2^17-1,用来存储相应哈希值所对应的数据信息。
本实施例中通过对DRAM进行合理地分区,在写入存储哈希表中数据时可有效地将例如有关联的数据存储的更聚集,从而使得当后续对哈希表相应的数据块进行读取时,可以实现对多个数据块的连续读取,大大地增加了数据读取的速率,整体上提供了一种高效的哈希表内存数据管理功能。
可选的,在本公开的一些实施例中,每个所述存储区还包括逻辑上的辅存储区,所述辅存储区包括多个存储单元;每个所述主存储区内的每个所述存储单元包括数据存储子单元和地址存储子单元。具体的,再次参考图2中所示,每个所述分区20还可以包括逻辑上的辅存储区,所述辅存储区可以包括多个存储单元201;每个所述主存储区内的每个所述存储单元201可以包括数据存储子单元和地址存储子单元,例如图2中右侧哈希值1对应的存储单元201包括数据存储子单元A和地址存储子单元B。
具体的,辅存储区作为例如下文描述的哈希值冲突时的扩展存储区使用,如主存储区被写满时,可以从辅存储区申请新的存储单元来存储冲突哈希值所对应的数据信息。辅存储区也以512Byte作为基本的存储单元,但与主存储区不同的是,其中各基本存储单元与主存储区各存储单元201的地址对应的哈希值不存在固定的对应关系,具体的对应关系在实际应用中根据主存储区中各哈希值冲突情况动态分布。
在上述主/辅存储区的关系下,为了建立起主存储区各存储单元的地址对应的哈希值和辅分区中各存储单元之间的对应关系,每个512Byte的存储单元201又分成了数据存储子单元A和地址存储子单元B两部分,例如数据存储子单元A是504Byte,地址存储子单元B是8Byte。前504Byte用来存储例如哈希值1对应的数据信息,后面8Byte用来存储例如哈希值1对应的在辅存储区中申请到的存储单元B’的地址,哈希值1对应的数据信息超过对应存储单元的容量时,申请的存储单元B’来存储该冲突哈希值例如1所对应的部分数据信息。同理,当某一哈希值在辅存储区申请的存储单元B’被存满时,仍然可以继续在辅存储区申请新的存储单元C,存储例如哈希值1对应的新的冲突数据信息。同时,B’存储单元后8Byte的部分存储指向存储单元C的地址。
本实施例中通过对DRAM进行合理地分区,然后可以实现哈希表数据链式的存储方式,在写入存储哈希表中数据时可有效地将例如有关联的数据存储的更聚集,从而使得当后续对哈希表相应的数据块进行读取时,可以实现对多个数据块的连续读取,大大地增加了后续数据读取的速率。
可选的,在上述各实施例的基础上,本公开的一些实施例中,如图3所示,所述方法还可以包括以下步骤:
步骤S301:在计算的每个所述数据的哈希值中存在哈希冲突时,将哈希冲突的哈希值对应的数据写入对应主存储区的对应存储单元的数据存储子单元。
示例性的,步骤S301可以在步骤S101之后执行,例如当前时刻基于一个数据X的哈希值1在哈希查找表中查找到该数据X在DRAM内主存储区对应的存储单元201的地址,然后可基于数据X的地址偏移量与查找到的该数据X对应的地址相加,即可确定数据X待写入的实际物理地址,最后基于数据X待写入DRAM内的该实际物理地址,将数据X写入DRAM内的对应存储单元201的数据存储子单元A。
步骤S302:在所述主存储区写满时,在所述辅存储区中为新哈希冲突的哈希值对应的数据申请一个存储单元,将新哈希冲突的哈希值对应的数据写入申请的该存储单元中,并将申请的该存储单元的地址存储于所述主存储区中与新哈希冲突对应的数据所在存储单元的地址存储子单元。
示例性的,在一个数据Y的哈希值也是1时,数据Y的哈希值与数据X的哈希值冲突,且在冲突哈希值1对应的数据写满主存储区时,可以在辅存储区中为数据Y申请一个存储单元B’,然后可将数据Y写入申请的该存储单元B’中,并将申请的该存储单元B’的地址存储于写入数据X主存储区内的存储单元的地址存储子单元B。
可选的,在上述实施例的基础上,本公开的一些实施例中,如图4所示,所述方法还可以包括以下步骤:
步骤S401:在所述辅存储区中申请一个存储单元时,记录所述辅存储区中当前可用的其余存储单元的地址。
步骤S402:下一次在所述辅存储区中申请一个存储单元时,基于记录的所述可用的其余存储单元的地址在所述辅存储区中申请存储单元。
本实施例中在每次写完数据之后,都可以将下次可写入的辅存储区的存储单元即空闲的存储单元的地址信息进行记录,以便下次对此哈希表数据进行写操作时,如果发生例如将主存储区的存储单元写满的情况时可以方便基于记录信息快速找到可以向辅存储区申请新的存储单元的位置,进一步提高整体的数据写入效率。
可选的,在本公开的一些实施例中,所述方法还可包括以下步骤:
预先基于哈希表的标识,建立不同哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系,从而形成所述哈希查找表。
本实施例中可以根据需要新建一个哈希表与存储器内的存储区的对应关系,实现多个哈希表的信息记录、维护管理等,从而合理划分存储器如DRAM内的存储单元,使得在写入哈希表中数据时可有效地使数据存储的更聚集,从而使得当后续对哈希表相应的数据块进行读取时,可以实现对多个数据块的连续读取,大大地增加了数据读取的速率,实现高效的哈希表内存数据管理功能。
可选的,在上述各实施例的基础上,本公开的一些实施例中,所述方法还可包括数据读取的步骤,具体可包括以下步骤:对所述存储器DRAM发送连续多次读请求;缓存所述存储器DRAM响应多次所述读请求而输出的数据。
在一个具体示例中,例如对DRAM发送连续例如8次的读请求,待DRAM响应读请求使读数据块有效之后,将读数据缓存到数据缓存模块,当数据块缓存到数据缓存模块的时候,就可以准备将数据块送到数据输出缓存单元,准备将数据块进行输出,并返回完成成功信号。与此同时,可以在存入数据缓存模块的每一个数据中留有一个标志位,读完某哈希值对应主存储区的存储单元的数据信息后,可以根据该存储单元的后8Byte部分的地址来自动切换到辅存储区的后一存储单元中的数据的读取,如果后续仍然有数据继续切换到后一存储单元中进行读取,直到读到最后的存储单元,此时将标志位拉高,表示数据块读取完成。本实施例中基于DRAM的特性,通过发送连续多次读请求,使得数据读取效率更为高效。
可选的,在上述各实施例的基础上,在本公开的一些实施例中,所述方法还可包括:接收删除指令,所述删除指令指示删除所述哈希查找表中一个哈希表相关的对应关系;响应所述删除指令,在所述哈希查找表中删除对应的哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系接收删除指令,所述删除指令指示删除所述哈希查找表中一个哈希表相关的对应关系。本实施例中可以实现对哈希查找表中相应哈希表信息的清零,以便于减少空间占用,提高整体的哈希表数据存储或读取效率。
在一个应用场景下,本公开实施例的方案可以实现哈希表数据的创建、删除、读和写等操作。发明人经过试验测试,本公开实施例的方案的时钟周期可以达到4ns以内,能够在很快的时间内完成对于哈希表如读和写等常见操作,例如:要读取DRAM中某一分区下的HASH值对应的数据,从接收指令到传给用户数据再到传输完毕,整个过程只需要在100个周期左右就可以完成500多Byte数据的传输。对于写操作,当用户端的输入数据为8Byte。如果要向DRAM中某一分区的某个哈希值对应的位置写入8Byte数据,在地址偏移量小于504的时候,从接收指令到写完成,则只需要经历8个周期就可以完成;当地址偏移量更大时,例如为1296时,从接收到指令到写完成,则只需要经历13个周期。如果要向DRAM中某一分区的某个哈希值对应的位置写入64Byte数据,在地址偏移量为520时,从接收指令到写完成,则只需要经历18个周期就可以完成;如果要向DRAM某一分区的某个哈希值对应的位置写入512Byte数据,地址偏移量小于504的时候,从接收指令到写完成,则只需要72个周期。因此本公开实施例的方案可以使对DRAM的访存变得更加高效。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
基于同一构思,本公开实施例还提供一种哈希表数据存储管理装置,如图5所示哈希表数据存储管理装置可包括以下模块:
数据获取模块501,用于获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识。
第一地址查询模块502,用于基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系。
第二地址查询模块503,用于基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系。
实际地址确定模块504,用于基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址。
数据写入模块505,用于基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
本公开实施例的上述哈希表数据存储管理装置对哈希表数据进行转移存储时进行管理,获取预先建立的哈希查找表,其包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系,以及哈希表中数据的哈希值与对应存储区内不同的存储单元的地址之间的对应关系,基于每个数据携带的哈希表的标识、哈希值以及地址偏移量来查表实现实际物理地址的转换,进而进行数据写入存储,从而可使哈希表中数据转移存储至存储器中时更聚集,使得后续对哈希表的数据读取效率较高,同时基于哈希值以及哈希查找表、地址偏移量等来转换实现实际物理地址的确定,也即实现逻辑地址到物理地址的转换,可提高哈希表的可移植性,从而减少了开发成本。
在本公开的一些实施例中,所述存储器是动态随机存取存储器,包括多个不同的存储区,每个所述存储区包括逻辑上的主存储区,所述主存储区包括多个存储单元,所述哈希查找表包括每个哈希表中各数据的哈希值与对应的每个所述存储区内的主存储区的存储单元的地址之间的对应关系。
在本公开的一些实施例中,每个所述存储区还包括逻辑上的辅存储区,所述辅存储区包括多个存储单元;每个所述主存储区内的每个所述存储单元包括数据存储子单元和地址存储子单元。
在本公开的一些实施例中,所述装置还可包括哈希冲突处理模块,用于:在计算的每个所述数据的哈希值中存在哈希冲突时,将哈希冲突的哈希值对应的数据写入对应主存储区的对应存储单元的数据存储子单元;在所述主存储区写满时,在所述辅存储区中为新哈希冲突的哈希值对应的数据申请一个存储单元,将新哈希冲突的哈希值对应的数据写入申请的该存储单元中,并将申请的该存储单元的地址存储于所述主存储区中与新哈希冲突对应的数据所在存储单元的地址存储子单元。
在本公开的一些实施例中,所述装置还可包括辅存储单元记录模块,用于在所述辅存储区中申请一个存储单元时,记录所述辅存储区中当前可用的其余存储单元的地址;下一次在所述辅存储区中申请一个存储单元时,基于记录的所述可用的其余存储单元的地址在所述辅存储区中申请存储单元。
在本公开的一些实施例中,所述装置还可包括新建模块,用于预先基于哈希表的标识,建立不同哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系,从而形成所述哈希查找表。
在本公开的一些实施例中,所述装置还可包括数据读取模块,用于:对所述存储器发送连续多次读请求;缓存所述存储器响应多次所述读请求而输出的数据。
在本公开的一些实施例中,所述装置还可包括删除模块,用于接收删除指令,所述删除指令指示删除所述哈希查找表中一个哈希表相关的对应关系;响应所述删除指令,在所述哈希查找表中删除对应的哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系。
关于上述实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述哈希表数据存储管理方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备,包括处理器以及存储器,存储器用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一项实施例中所述哈希表数据存储管理方法的步骤。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述哈希表数据存储管理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示方法的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述哈希表数据存储管理方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种哈希表数据存储管理方法,其特征在于,包括:
获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识;
基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系;其中,所述存储器是动态随机存取存储器,包括多个不同的存储区,每个所述存储区包括逻辑上的主存储区,所述主存储区包括多个存储单元,所述哈希查找表包括每个哈希表中各数据的哈希值与对应的每个所述存储区内的主存储区的存储单元的地址之间的对应关系;
基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系;
基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址;
基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
2.根据权利要求1所述的哈希表数据存储管理方法,其特征在于,每个所述存储区还包括逻辑上的辅存储区,所述辅存储区包括多个存储单元;每个所述主存储区内的每个所述存储单元包括数据存储子单元和地址存储子单元。
3.根据权利要求2所述的哈希表数据存储管理方法,其特征在于,所述方法还包括:
在计算的每个所述数据的哈希值中存在哈希冲突时,将哈希冲突的哈希值对应的数据写入对应主存储区的对应存储单元的数据存储子单元;
在所述主存储区写满时,在所述辅存储区中为新哈希冲突的哈希值对应的数据申请一个存储单元,将新哈希冲突的哈希值对应的数据写入申请的该存储单元中,并将申请的该存储单元的地址存储于所述主存储区中与新哈希冲突对应的数据所在存储单元的地址存储子单元。
4.根据权利要求3所述的哈希表数据存储管理方法,其特征在于,所述方法还包括:
在所述辅存储区中申请一个存储单元时,记录所述辅存储区中当前可用的其余存储单元的地址;
下一次在所述辅存储区中申请一个存储单元时,基于记录的所述可用的其余存储单元的地址在所述辅存储区中申请存储单元。
5.根据权利要求1~4任一项所述的哈希表数据存储管理方法,其特征在于,所述方法还包括:
预先基于哈希表的标识,建立不同哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系,从而形成所述哈希查找表。
6.根据权利要求1~4任一项所述的哈希表数据存储管理方法,其特征在于,所述方法还包括:
对所述存储器发送连续多次读请求;
缓存所述存储器响应多次所述读请求而输出的数据。
7.根据权利要求1~4任一项所述的哈希表数据存储管理方法,其特征在于,所述方法还包括:
接收删除指令,所述删除指令指示删除所述哈希查找表中一个哈希表相关的对应关系;
响应所述删除指令,在所述哈希查找表中删除对应的哈希表的标识与所述存储器内不同的存储区的地址之间的对应关系。
8.一种哈希表数据存储管理装置,其特征在于,包括:
数据获取模块,用于获取待处理哈希表中的一个或多个数据,每个所述数据携带哈希值、地址偏移量以及所属哈希表的标识;
第一地址查询模块,用于基于每个所述数据所属哈希表的标识,在哈希查找表中查找每个所述数据在存储器内对应的存储区的地址,所述哈希查找表包括不同哈希表的标识与存储器内不同的存储区的地址之间的对应关系;其中,所述存储器是动态随机存取存储器,包括多个不同的存储区,每个所述存储区包括逻辑上的主存储区,所述主存储区包括多个存储单元,所述哈希查找表包括每个哈希表中各数据的哈希值与对应的每个所述存储区内的主存储区的存储单元的地址之间的对应关系;
第二地址查询模块,用于基于每个所述数据的哈希值,在所述哈希查找表中查找每个所述数据在对应的所述存储区内的存储单元的地址,所述哈希查找表还包括每个哈希表中各数据的哈希值与存储区内的不同存储单元的地址之间的对应关系;
实际地址确定模块,用于基于每个所述数据的地址偏移量,以及查找的每个所述数据在所述存储器内对应的存储区的地址以及所述存储区内对应的存储单元的地址,确定每个所述数据待写入的实际物理地址;
数据写入模块,用于基于每个所述数据待写入的实际物理地址,将每个所述数据写入所述存储器内对应的存储单元。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~7任一项所述哈希表数据存储管理方法的步骤。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~7任一项所述哈希表数据存储管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529973.6A CN112632069B (zh) | 2020-12-22 | 2020-12-22 | 哈希表数据存储管理方法、装置、介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011529973.6A CN112632069B (zh) | 2020-12-22 | 2020-12-22 | 哈希表数据存储管理方法、装置、介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632069A CN112632069A (zh) | 2021-04-09 |
CN112632069B true CN112632069B (zh) | 2021-08-31 |
Family
ID=75321009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011529973.6A Active CN112632069B (zh) | 2020-12-22 | 2020-12-22 | 哈希表数据存储管理方法、装置、介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632069B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342615B (zh) * | 2021-06-29 | 2022-08-26 | 海光信息技术股份有限公司 | 命令监控方法、装置、控制器、系统、设备和存储介质 |
CN114063931B (zh) * | 2021-11-26 | 2023-04-25 | 重庆科创职业学院 | 一种基于大数据的数据存储方法 |
CN115080268B (zh) * | 2022-06-15 | 2024-03-26 | 苏州轻棹科技有限公司 | 面向自动驾驶系统内部模块的消息发布-订阅处理方法 |
CN114840449B (zh) * | 2022-06-30 | 2022-10-18 | 广州万协通信息技术有限公司 | 基于MCU片内flash的数据存储方法、装置、设备及存储介质 |
CN115421804B (zh) * | 2022-07-29 | 2023-02-24 | 中科驭数(北京)科技有限公司 | 一种基于kpu统一接口的数据管理方法、系统及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188096A (zh) * | 2019-04-18 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 一种数据记录的索引创建方法、装置及设备 |
CN110275864A (zh) * | 2019-06-11 | 2019-09-24 | 武汉深之度科技有限公司 | 索引建立方法、数据查询方法及计算设备 |
US10503697B1 (en) * | 2016-06-30 | 2019-12-10 | EMC IP Holding Company LLC | Small file storage system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692651B (zh) * | 2009-09-27 | 2014-12-31 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
US10437785B2 (en) * | 2016-03-29 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for maximized dedupable memory |
CN108810181A (zh) * | 2017-05-03 | 2018-11-13 | 普天信息技术有限公司 | 一种基于Intel DPDK的地址转换方法 |
JP2019057178A (ja) * | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20200107101A (ko) * | 2019-03-06 | 2020-09-16 | 에스케이하이닉스 주식회사 | 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 |
-
2020
- 2020-12-22 CN CN202011529973.6A patent/CN112632069B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503697B1 (en) * | 2016-06-30 | 2019-12-10 | EMC IP Holding Company LLC | Small file storage system |
CN110188096A (zh) * | 2019-04-18 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 一种数据记录的索引创建方法、装置及设备 |
CN110275864A (zh) * | 2019-06-11 | 2019-09-24 | 武汉深之度科技有限公司 | 索引建立方法、数据查询方法及计算设备 |
Non-Patent Citations (1)
Title |
---|
"一种基于Bigram二级哈希的中文索引结构";孙德才 等;《电子设计工程》;20140630;第22卷(第12期);第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112632069A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US11741053B2 (en) | Data management system, method, terminal and medium based on hybrid storage | |
CN108519862B (zh) | 区块链系统的存储方法、装置、系统和存储介质 | |
CN110663019B (zh) | 用于叠瓦式磁记录(smr)的文件系统 | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
US9092321B2 (en) | System and method for performing efficient searches and queries in a storage node | |
KR102569545B1 (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
US20150127691A1 (en) | Efficient implementations for mapreduce systems | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
CN110727403B (zh) | 元数据管理方法及装置 | |
WO2023035646A1 (zh) | 一种扩展内存的方法、装置及相关设备 | |
US20240086332A1 (en) | Data processing method and system, device, and medium | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
KR102471966B1 (ko) | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 | |
CN103595720A (zh) | 卸载数据传输方法、装置和客户端 | |
US20240070120A1 (en) | Data processing method and apparatus | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
CN116431530B (zh) | 一种cxl内存模组、内存的处理方法及计算机系统 | |
CN113805789A (zh) | 存储设备中的元数据处理方法及相关设备 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN115981559A (zh) | 分布式数据存储方法、装置、电子设备和可读介质 | |
US11875152B2 (en) | Methods and systems for optimizing file system usage |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 100094 room 801, 8 / F, building 3, yard 1, 81 Beiqing Road, Haidian District, Beijing Patentee after: YUSUR TECHNOLOGY Co.,Ltd. Address before: Room 715, Institute of computing, Chinese Academy of Sciences, Haidian District, Beijing 100086 Patentee before: YUSUR TECHNOLOGY Co.,Ltd. |