CN112612419A - Nvm的数据存储结构、存储方法、读取方法、设备及介质 - Google Patents
Nvm的数据存储结构、存储方法、读取方法、设备及介质 Download PDFInfo
- Publication number
- CN112612419A CN112612419A CN202011567944.9A CN202011567944A CN112612419A CN 112612419 A CN112612419 A CN 112612419A CN 202011567944 A CN202011567944 A CN 202011567944A CN 112612419 A CN112612419 A CN 112612419A
- Authority
- CN
- China
- Prior art keywords
- hash
- data
- bucket
- target
- buckets
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机存储系统技术领域,公开了一种NVM的数据存储结构、存储方法、读取方法、设备及介质,包括主哈希表和公共溢出区;主哈希表内设置若干哈希桶,公共溢出区内设置第一级至第n级从哈希表,第一级至第n级从哈希表内均设置若干哈希桶。存储时,在线性哈希索引每次分裂的时候结合延迟分裂和正常分裂策略,降低线性哈希对NVM的写次数,提高写性能;公共溢出区设计多级从哈希表,将主哈希表内哈希桶的溢出桶存放在公共溢出区的从哈希表中,在提高线性哈希写性能的同时,提高线性哈希的读性能,实现读写友好的应用于NVM上的线性哈希索引方法。
Description
技术领域
本发明属于计算机存储系统技术领域,涉及一种NVM的数据存储结构、存储方法、读取方法、设备及介质。
背景技术
大数据应用对现有存储系统在性能、容量、可扩展性和可靠性等方面提出了重大技术挑战,新型非易失性存储器件(Non-Volatile Memory,NVM),例如PCM、3D-XPoint及忆阻器RRAM等,因其具有高性能、大容量和非易失等特性得到了更广泛的关注与研究。新型NVM存储介质的使用可以弥补现有存储体系架构中内外存特性差异,更好地满足大数据存储对容量、性能与功耗等方面的需求。新型NVM存储介质的出现和应用对传统数据结构机制带来了新的机遇和挑战,一方面,新型NVM介质拥有接近DRAM(Dynamic Random AccessMemory,动态随机存取存储器)的低读写访问延迟,有利于树、哈希等数据结构的读性能。但另一方面,新型NVM介质的耐久性差、读写性能不对称等新特性也给传统数据结构机制带来了挑战。
静态哈希可以实现恒定的查找时间。但是,这种传统的哈希方案通常必须估计哈希表的大小,并提前分配足够的存储桶,对于某些应用程序,这是可行的。例如,键值存储中的内存中哈希表起着固定大小的缓冲区缓存的作用,因此,可以根据可用内存空间来优先设置哈希表的大小。然而,并非所有应用程序都可以预先估计哈希表的大小,在负载因子很高的情况下,必须创建一个较大的哈希表,并且必须将现有记录移至新的存储桶,同时,为了防止在重哈希处理期间被访问,需要增加锁的机制来保证一致性,这增加了查询的延迟。为了减轻重哈希的开销,已经开发了各种优化技术,例如线性探测和布谷鸟哈希来处理哈希冲突。但是,如果数据元素是动态插入和删除的,则固定大小的静态哈希方案会遭受哈希冲突,溢出或利用率不足的困扰。为了解决这些问题,必须动态调整哈希表大小,即动态哈希方法,与这些静态散列方案不同,动态哈希可以根据需要动态分配和释放内存空间,而线性哈希作为动态哈希的一种,可以保证哈希空间的线性增长。线性哈希索引不仅提供了快速的查找速度,还可以根据需要动态地分配和释放空间。
但是,线性哈希的频繁分裂增加了NVM的写次数,导致线性哈希面对在NVM时的读写速率较低,NVM对传统的线性哈希索引结构提出了新的挑战。
发明内容
本发明的目的在于克服上述现有技术中,数据在NVM上的写次数较多,导致NVM数据读写速率较低的缺点,提供一种NVM的数据存储结构、存储方法、读取方法、设备及介质。
为达到上述目的,本发明采用以下技术方案予以实现:
本发明第一方面,一种NVM的数据存储结构,包括主哈希表和公共溢出区;
主哈希表内设置若干哈希桶,公共溢出区内设置第一级至第n级从哈希表,第一级至第n级从哈希表内均设置若干哈希桶;主哈希表内的所有哈希桶分为若干哈希桶组,各哈希桶组均包括预设数量的哈希桶,第一级从哈希表内的若干哈希桶一一对应的作为主哈希表的若干哈希桶组的溢出哈希桶;各级从哈希表内的所有哈希桶均分为若干哈希桶组,下一级从哈希表内的若干哈希桶一一对应的作为当前级从哈希表的若干哈希桶组的溢出哈希桶。
本发明NVM的数据存储结构进一步的改进在于:
所述哈希桶组包括两个哈希桶。
本发明第二方面,一种NVM的数据存储方法,包括以下步骤:
获取待存储数据的哈希值及主哈希表的负载因子;
当负载因子小于预设阈值时,根据预设的哈希函数及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入对应的目标哈希桶;当负载因子不小于预设阈值时,获取主哈希表的当前哈希分裂轮次及待分裂的哈希桶号,并在主哈希表内增加一个哈希桶;当当前哈希分裂轮次为偶数时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;当当前哈希分裂轮次为奇数且待分裂的哈希桶号小于上一哈希分裂轮次完成后主哈希表内哈希桶的的总数一半时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;否则,获取待分裂的哈希桶号对应的哈希桶内各已存储数据的哈希值,并根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的哈希值及各已存储数据的目标哈希桶的桶号,将待存储数据的哈希值及各已存储数据存储在对应的目标哈希桶;将待分裂的哈希桶号加1,且当待分裂的哈希桶号等于上一哈希分裂轮次完成后主哈希表内哈希桶的总数时,当前哈希分裂轮次加1。
本发明NVM的数据存储方法进一步的改进在于:
所述获取主哈希表的负载因子的具体方法为:
通过下式获取主哈希表的负载因子Q:
其中,R为主哈希表中已存储数据的个数,N为主哈希表中哈希桶的个数,p为哈希桶的容量。
所述预设的哈希函数为:
hi(k)=k%2im
其中,k为数据的哈希值,m为初始哈希桶的个数,i为当前哈希分裂轮次,hi(k)为哈希值为k的数据在第i个分裂轮次中的哈希桶桶号。
还包括:当目标哈希桶已满时,确定目标哈希桶所属的哈希桶组为目标哈希桶组;在NVM的公共溢出区的各级从哈希表内,确定目标哈希桶组的关联溢出哈希桶并作为目标哈希桶;当最后一级从哈希表内的关联溢出哈希桶已满时,新建下一级从哈希表,并将下一级从哈希表内的关联溢出哈希桶作为目标哈希桶。
本发明第三方面,一种NVM的数据读取方法,包括以下步骤:
获取待读取数据的哈希值;
获取主哈希表的当前哈希分裂轮次,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第一目标哈希桶的桶号;当第一目标哈希桶桶号小于主哈希表的哈希桶总数时,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,读取第一目标哈希桶和第二目标哈希桶中的数据;否则,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,当前哈希分裂轮次再减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第三目标哈希桶的桶号,读取第二目标哈希桶和第三目标哈希桶中的数据。
本发明NVM的数据读取方法进一步的改进在于:
还包括:当读取第一目标哈希桶和第二目标哈希桶中的数据时,当第一目标哈希桶和第二目标哈希桶中的数据已满时,读取第一目标哈希桶和第二目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据;当读取第二目标哈希桶和第三目标哈希桶中的数据,当第二目标哈希桶和第三目标哈希桶中的数据已满时,分别读取第二目标哈希桶和第三目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据。
本发明第四方面,一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述NVM的数据存储方法,和/或上述NVM的数据读取方法的步骤。
本发明第五方面,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述NVM的数据存储方法,和/或上述NVM的数据读取方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明NVM的数据存储结构,通过构建公共溢出区,在公共溢出区内设置第一级至第n级从哈希表,将主哈希表中产生哈希冲突的待存储数据,即溢出的数据进行储存来处理哈希冲突,相比于现有线性哈希所采用的链地址法来处理哈希冲突的方式,具有物理空间连续的特点,从而使得数据具有良好的空间局部性,能够提高数据的读取速率。
本发明NVM的数据存储方法,设计了新的哈希分裂策略,当当前哈希分裂轮次为偶数时,采用延迟哈希分裂策略,即不对已存储的数据进行重新的写入,仅将待存储数据直接写入,否则,进行正常的哈希分裂策略。通过这样的设置,在保证线性哈希结构动态增长的同时,有效的降低了NVM的写次数,拥有比初始线性哈希结构更少的写次数,较少的写次数带来较少的写延迟,有效提升了NVM的数据写入效率,从来使得线性哈希在写效率方面获得更高的性能,提高了NVM的使用寿命,得到NVM友好的数据存储方式。
进一步的,采用公共溢出区处理冲突数据的方法,相比于初始线性哈希所采用的链地址法来处理哈希冲突,具有物理空间连续的特点,从而使得数据具有良好的空间局部性,提高了数据的读取速率。
附图说明
图1为本发明实施例的NVM的数据存储结构示意图;
图2为本发明实施例的NVM的数据存储方法流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合附图对本发明做进一步详细描述:
参见图1,本发明一实施例中,提供一种NVM的数据存储结构,包括主哈希表和公共溢出区。
其中,主哈希表内设置若干哈希桶,公共溢出区内设置第一级至第n级从哈希表,第一级至第n级从哈希表内均设置若干哈希桶;主哈希表内的所有哈希桶分为若干哈希桶组,各哈希桶组均包括预设数量的哈希桶,主哈希表及各级从哈希表内的各哈希桶顺序设置桶号。第一级从哈希表内的若干哈希桶一一对应的作为主哈希表的若干哈希桶组的溢出哈希桶;各级从哈希表内的所有哈希桶均分为若干哈希桶组,下一级从哈希表内的若干哈希桶一一对应的作为当前级从哈希表的若干哈希桶组的溢出哈希桶。
每个哈希桶中设置若干个直接存储数据的槽slot。
在实际应用中,可按照上述结构要求,根据需要逐级扩展从哈希表。
这里,将所有级从哈希表内与主哈希表内的某一哈希桶组有关联关系的哈希桶,均作为该哈希桶组的关联溢出哈希桶,比如,主哈希表内的第一哈希桶组的溢出哈希桶为第一级从哈希表内的第一哈希桶,而第一级从哈希表内的第一哈希桶属于第一级从哈希表内的第一哈希桶组,而第一级从哈希表内的第一哈希桶组的溢出哈希桶为第二级从哈希表内的第一哈希桶,那么,第一级从哈希表内的第一哈希桶及第二级从哈希表内的第一哈希桶均为主哈希表内的第一哈希桶组的关联溢出哈希桶。
优选的,每个哈希桶组均包括两个哈希桶,更适用于计算机的二进制操作。
通过构建公共溢出区,在公共溢出区内设置第一级至第n级从哈希表,将主哈希表中产生哈希冲突的待存储数据,即溢出的数据进行储存来处理哈希冲突,相比于现有线性哈希所采用的链地址法来处理哈希冲突的方式,具有物理空间连续的特点,从而使得数据具有良好的空间局部性,能够提高数据的读取速率。
参见图2,本发明再一实施例中,提供一种NVM的数据存储方法,具体为一种提高数据在NVM上的读写速率的线性哈希索引方法,包括以下步骤。
S1:获取待存储数据的哈希值及主哈希表的负载因子。
待存储数据的哈希值,一般根据存储数据的特性预先设定。
其中,获取主哈希表的负载因子的具体方法为:
通过下式获取主哈希表的负载因子Q:
其中,R为主哈希表中已存储数据的个数,N为主哈希表中哈希桶的个数,p为哈希桶的容量,代表每个桶能装的数据个数。
S2:当负载因子小于预设阈值时,根据预设的哈希函数及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入对应的目标哈希桶;当负载因子不小于预设阈值时,获取主哈希表的当前哈希分裂轮次及待分裂的哈希桶号,并在主哈希表内增加一个哈希桶。
其中,预设的哈希函数为:
hi(k)=k%2im
其中,k为数据的哈希值,m为初始哈希桶的个数,i为当前哈希分裂轮次,hi(k)为哈希值为k的数据在第i个分裂轮次中的哈希桶号。
随着存储数据的量不断增长,当负载因子Q大于某一个阈值时,触发主哈希表的桶分裂,获取主哈希表的当前哈希分裂轮次及待分裂的哈希桶号,并在主哈希表内增加一个哈希桶。
S3:当当前哈希分裂轮次为偶数时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;当当前哈希分裂轮次为奇数且待分裂的哈希桶号小于上一哈希分裂轮次完成后主哈希表内哈希桶的总数一半时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;否则,获取待分裂的哈希桶号对应的哈希桶内各已存储数据的哈希值,并根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的哈希值及各已存储数据的目标哈希桶的桶号,将待存储数据的哈希值及各已存储数据存储在对应的目标哈希桶;将待分裂的哈希桶号加1,且当待分裂的哈希桶号等于主哈希表内当前哈希桶的总数时,当前哈希分裂轮次加1。
分裂过程中,依据当前哈希分裂轮次i制定分裂策略。总体上采用正常分裂和延迟分裂相结合的策略。当i%2=0时,即当当前哈希分裂轮次为偶数时,采取延迟分裂策略;否则,采取正常分裂策略。正常分裂意味着需要增加新桶,并且根据新的哈希函数移动旧桶的数据。而延迟分裂只需要增加新桶,旧桶的数据不做移动,仅在next指针下次指向旧桶时,数据重新分布。延迟分裂策略对写操作友好,而降低读操作性能,因为需要读取新桶和旧桶来得到数据。因此,延迟分裂的策略在保证低写入代价的同时,会降低对读取性能的影响。
具体的,当i%2=0时,仅增加新哈希桶即可,不需要将旧哈希桶的数据移动到新哈希桶。当i%2=1,数据需要从旧哈希桶移动到新哈希桶,即要分裂新哈希桶和旧哈希桶的数据,但是考虑到之前延迟分裂,旧哈希桶的数据如果直接使用新的哈希函数进行计算,有可能数据需要移动的位置还没有出现哈希桶,因此需要分情况讨论。若i%2=1且此时要分裂的哈希桶bucketi<第i-1次哈希分裂轮次后哈希桶的总数/2,则有可能数据需要移动到的位置还没有出现哈希桶,因此不分裂该哈希桶的数据,只增加新的哈希桶。若i%2=1且此时要分裂的哈希桶bucketi≥第i-1次哈希分裂轮次后哈希桶的总数/2,则不存在上述情况,直接分裂哈希桶bucketi的数据和哈希桶bucketi-1的数据。
完成上述步骤之后,将待分裂的哈希桶号加1并进行判断,当待分裂的哈希桶号等于主哈希表内当前哈希桶的总数时,将当前哈希分裂轮次加1,否则,当前哈希分裂轮次不变。
本发明NVM的数据存储方法,设计了新的哈希分裂策略,当当前哈希分裂轮次为偶数时,采用延迟哈希分裂策略,即不对已存储的数据进行重新的写入,仅将待存储数据直接写入,否则,进行正常的哈希分裂策略。通过这样的设置,在保证线性哈希结构动态增长的同时,有效的降低了NVM的写次数,拥有比初始线性哈希结构更少的写次数,较少的写次数带来较少的写延迟,有效提升了NVM的数据写入效率,从来使得线性哈希在写效率方面获得更高的性能,提高了NVM的使用寿命,得到NVM友好的数据存储方式。
优选的,当目标哈希桶已满时,确定目标哈希桶所属的哈希桶组为目标哈希桶组;在NVM的公共溢出区的各级从哈希表内,确定目标哈希桶组的关联溢出哈希桶并作为目标哈希桶;当最后一级从哈希表内的关联溢出哈希桶已满时,新建下一级从哈希表,并将下一级从哈希表内的关联溢出哈希桶作为目标哈希桶。
具体的,当向主哈希表插入数据导致哈希冲突时,冲突数据存放在公共溢出区中的各级从哈希表中,初始的各级从哈希表容量有限,若溢出数据增加,从哈希表可以动态增长。若第一级从哈希表已满,发生哈希冲突时则继续生成新的第二级从哈希表,第三级从哈希表,……,等等。各级从哈希表空间连续,保证了数据的空间局部性。
主哈希表中连续g个哈希桶形成哈希桶组groupj(j=0,1,2,...),groupj中所有的溢出数据对应存放在公共溢出区中第一级从哈希表的哈希桶bucketj中。公共溢出区有多级从哈希表。若溢出区的某一级从哈希表中的哈希桶bucketj溢出,即存在溢出的标志位“1”,需要查找数据在下一级从哈希表中的位置,且该级从哈希表中连续g个哈希桶形成哈希桶组group,该哈希桶组group中所有的溢出数据都放在下一级从哈希表对应的哈希桶中,根据以下公式求得数据在下一级从哈希表中的位置:
bucketj+1=bucketj/g。
若不存在下一级哈希表,则新建下一级哈希表。
采用公共溢出区处理冲突数据的方法,相比于初始线性哈希所采用的链地址法来处理哈希冲突,具有物理空间连续的特点,从而使得数据具有良好的空间局部性,提高了数据的读取速率,并且,查找数据时需要查找新哈希桶和旧哈希桶的值,若是通过链地址法,需要多次读取指针,且添加溢出链需要更新指针并且持久化指针,持久化指针的操作会带来大量的开销,这些开销会抵消掉NVM特有的高速的读写速率,从而降低NVM带给数据读写速率。然而,使用公共溢出区的策略,仅通过计算得到新哈希桶和旧哈希桶的值,直接读取新哈希桶和旧哈希桶的数据即可,不需要指针持久化操作。因此,该存储结构仅通过增加少量的溢出区存储空间开销,就能拥有更高的读速率,且延迟分裂策略降低了线性哈希结构分裂过程中在NVM上的数据移动开销,有利于减缓新型NVM等存储设备的磨损,提高其使用寿命。
本发明再一实施例中,提供一种NVM的数据读取方法,包括以下步骤:
获取待读取数据的哈希值;获取主哈希表的当前哈希分裂轮次,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第一目标哈希桶的桶号;当第一目标哈希桶桶号小于主哈希表的哈希桶总数时,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,读取第一目标哈希桶和第二目标哈希桶中的数据;否则,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,当前哈希分裂轮次再减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第三目标哈希桶的桶号,读取第二目标哈希桶和第三目标哈希桶中的数据。
具体的,查找待读取数据时,要在新的哈希桶和旧的哈希桶中多次查找,且需要查找主哈希表和公共溢出区,过程如下:
1)采用哈希函数hi对待读取数据的哈希值进行计算,得到第一目标哈希桶的桶号bucketi。
2)若bucketi≥N,N为当前哈希分裂轮次哈希桶的总数,表示哈希桶还未分裂,利用哈希函数hi-1求出第二目标哈希桶的桶号bucketi-1,但是因为延迟分裂,需要查找两个哈希桶,一个为第二目标哈希桶,另一个为第三目标哈希桶;利用哈希函数hi-2求出第三目标哈希桶的桶号bucketi-2。
3)若bucketi<N,表示哈希桶已经分裂,则获取第一目标哈希桶的桶号bucketi和第二目标哈希桶的桶号bucketi-1,方法如上1)和2)。
优选的,还包括当读取第一目标哈希桶和第二目标哈希桶中的数据时,当第一目标哈希桶和第二目标哈希桶中的数据已满时,读取第一目标哈希桶和第二目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据;当读取第二目标哈希桶和第三目标哈希桶中的数据,当第二目标哈希桶和第三目标哈希桶中的数据已满时,分别读取第二目标哈希桶和第三目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据。
因为采用了延迟分裂策略,需要查找新的哈希桶和旧的哈希桶,除此以外,如果新的哈希桶和旧的哈希桶后面还有溢出,需要在公共溢出区中进一步查找。不管是公共溢出表还是主哈希表,都是其中g个哈希桶的溢出数据对应存放在下一级溢出区的哈希桶。因此,根据上一级的bucketj既可以得到该数据在下一级从哈希表中的哈希桶的位置。具体的,若公共溢出区的某一级从哈希表中的哈希桶bucketj溢出,即存在溢出的标志位,需要查找数据在下一级从哈希表中的位置,该级从哈希表中连续g个哈希桶形成哈希桶组group,根据下式求得数据在下一级从哈希表中的位置:
bucketj+1=bucketj/g
因此,可以根据上一级的元素位置既可以得到该数据在下一级从哈希表的哈希桶的位置,至此,数据的读取工作完成,有效的提升了数据的读取效率。
综上,本发明为线性哈希的分裂设计数据移动策略,减少线性哈希随着数据增长而频繁分裂带来的NVM多余写操作,提高线性哈希结构在数据插入时候的效率,降低NVM的磨损次数,提高NVM的寿命;为线性哈希增加额外的公共溢出区,公共溢出区域地址连续,使得线性哈希中的数据具有良好的空间局部性,并且仅通过读取下标就可以访问到数据,改进了线性哈希的读性能,从而提高数据在NVM上的读写速率。本发明通过增加少量公共溢出区的存储开销,拥有了更高的数据插入、读取速度,而且降低了线性哈希在动态增长过程中对NVM的额外写代价,有利于减缓新型NVM等高速存储设备的磨损。
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于NVM的数据存储方法及NVM的数据读取方法的操作。
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关NVM的数据存储方法及NVM的数据读取方法的相应步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种NVM的数据存储结构,其特征在于,包括主哈希表和公共溢出区;
主哈希表内设置若干哈希桶,公共溢出区内设置第一级至第n级从哈希表,第一级至第n级从哈希表内均设置若干哈希桶;主哈希表内的所有哈希桶分为若干哈希桶组,各哈希桶组均包括预设数量的哈希桶,第一级从哈希表内的若干哈希桶一一对应的作为主哈希表的若干哈希桶组的溢出哈希桶;各级从哈希表内的所有哈希桶均分为若干哈希桶组,下一级从哈希表内的若干哈希桶一一对应的作为当前级从哈希表的若干哈希桶组的溢出哈希桶。
2.根据权利要求1所述的NVM的数据存储结构,其特征在于,所述哈希桶组包括两个哈希桶。
3.一种NVM的数据存储方法,其特征在于,包括以下步骤:
获取待存储数据的哈希值及主哈希表的负载因子;
当负载因子小于预设阈值时,根据预设的哈希函数及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入对应的目标哈希桶;
当负载因子不小于预设阈值时,获取主哈希表的当前哈希分裂轮次及待分裂的哈希桶号,并在主哈希表内增加一个哈希桶;
当当前哈希分裂轮次为偶数时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;
当当前哈希分裂轮次为奇数且待分裂的哈希桶号小于上一哈希分裂轮次完成后主哈希表内哈希桶的的总数一半时,根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的目标哈希桶的桶号,并将待存储数据存入目标哈希桶;
否则,获取待分裂的哈希桶号对应的哈希桶内各已存储数据的哈希值,并根据预设的哈希函数、当前哈希分裂轮次及待存储数据的哈希值,确定待存储数据的哈希值及各已存储数据的目标哈希桶的桶号,将待存储数据的哈希值及各已存储数据存储在对应的目标哈希桶;
将待分裂的哈希桶号加1,且当待分裂的哈希桶号等于上一哈希分裂轮次完成后主哈希表内哈希桶的总数时,当前哈希分裂轮次加1。
5.根据权利要求3所述的NVM的数据存储方法,其特征在于,所述预设的哈希函数为:
hi(k)=k%2im
其中,k为数据的哈希值,m为初始哈希桶的个数,i为当前哈希分裂轮次,hi(k)为哈希值为k的数据在第i个分裂轮次中的哈希桶桶号。
6.根据权利要求3所述的NVM的数据存储方法,其特征在于,还包括:
当目标哈希桶已满时,确定目标哈希桶所属的哈希桶组为目标哈希桶组;
在NVM的公共溢出区的各级从哈希表内,确定目标哈希桶组的关联溢出哈希桶并作为目标哈希桶;
当最后一级从哈希表内的关联溢出哈希桶已满时,新建下一级从哈希表,并将下一级从哈希表内的关联溢出哈希桶作为目标哈希桶。
7.一种NVM的数据读取方法,其特征在于,包括以下步骤:
获取待读取数据的哈希值;
获取主哈希表的当前哈希分裂轮次,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第一目标哈希桶的桶号;
当第一目标哈希桶桶号小于主哈希表的哈希桶总数时,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,读取第一目标哈希桶和第二目标哈希桶中的数据;
否则,当前哈希分裂轮次减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第二目标哈希桶的桶号,当前哈希分裂轮次再减1,根据待读取数据的哈希值、当前哈希分裂轮次及预设的哈希函数,确定待读取数据的第三目标哈希桶的桶号,读取第二目标哈希桶和第三目标哈希桶中的数据。
8.根据权利要求7所述的NVM的数据读取方法,其特征在于,还包括:
当读取第一目标哈希桶和第二目标哈希桶中的数据时,当第一目标哈希桶和第二目标哈希桶中的数据已满时,读取第一目标哈希桶和第二目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据;
当读取第二目标哈希桶和第三目标哈希桶中的数据,当第二目标哈希桶和第三目标哈希桶中的数据已满时,分别读取第二目标哈希桶和第三目标哈希桶所属哈希桶组在公共溢出内所有关联溢出哈希桶中的数据。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求3至6任一项所述NVM的数据存储方法,和/或权利要求7至8任一项所述NVM的数据读取方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求3至6任一项所述NVM的数据存储方法,和/或权利要求7至8任一项所述NVM的数据读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567944.9A CN112612419B (zh) | 2020-12-25 | 2020-12-25 | Nvm的数据存储结构、存储方法、读取方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567944.9A CN112612419B (zh) | 2020-12-25 | 2020-12-25 | Nvm的数据存储结构、存储方法、读取方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612419A true CN112612419A (zh) | 2021-04-06 |
CN112612419B CN112612419B (zh) | 2022-10-25 |
Family
ID=75248609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011567944.9A Active CN112612419B (zh) | 2020-12-25 | 2020-12-25 | Nvm的数据存储结构、存储方法、读取方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612419B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703678A (zh) * | 2021-08-20 | 2021-11-26 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
CN117891625A (zh) * | 2024-01-17 | 2024-04-16 | 北京奇虎科技有限公司 | 数据共享方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782922A (zh) * | 2009-12-29 | 2010-07-21 | 山东山大鸥玛软件有限公司 | 一种面向海量数据检索的多级桶哈希索引方法 |
CN109076021A (zh) * | 2016-12-30 | 2018-12-21 | 华为技术有限公司 | 数据处理的方法和装置 |
CN111459846A (zh) * | 2020-03-12 | 2020-07-28 | 华中科技大学 | 一种基于混合dram-nvm内存的动态哈希表操作方法 |
-
2020
- 2020-12-25 CN CN202011567944.9A patent/CN112612419B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782922A (zh) * | 2009-12-29 | 2010-07-21 | 山东山大鸥玛软件有限公司 | 一种面向海量数据检索的多级桶哈希索引方法 |
CN109076021A (zh) * | 2016-12-30 | 2018-12-21 | 华为技术有限公司 | 数据处理的方法和装置 |
CN111459846A (zh) * | 2020-03-12 | 2020-07-28 | 华中科技大学 | 一种基于混合dram-nvm内存的动态哈希表操作方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703678A (zh) * | 2021-08-20 | 2021-11-26 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
CN113703678B (zh) * | 2021-08-20 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
CN117891625A (zh) * | 2024-01-17 | 2024-04-16 | 北京奇虎科技有限公司 | 数据共享方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112612419B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
CN110347336B (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
JP5943096B2 (ja) | 複合不揮発性記憶装置のためのデータ移行 | |
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
US8271462B2 (en) | Method for creating a index of the data blocks | |
JP6764359B2 (ja) | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
US20120030413A1 (en) | Memory management device, information processing device, and memory management method | |
CN107622020B (zh) | 一种数据存储方法、访问方法及装置 | |
CN112612419B (zh) | Nvm的数据存储结构、存储方法、读取方法、设备及介质 | |
CN103838853A (zh) | 一种基于不同存储介质的混合文件系统 | |
TW201437808A (zh) | 分割實體區塊之方法及記憶體系統 | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN104424110B (zh) | 固态驱动器的主动回收 | |
CN103425435B (zh) | 磁盘存储方法及磁盘存储系统 | |
CN106873912A (zh) | Tlc芯片固态硬盘的动态分区存储方法及装置、系统 | |
CN109918316B (zh) | 一种减少ftl地址映射空间的方法及其系统 | |
US20140223072A1 (en) | Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology | |
KR101226600B1 (ko) | 메모리 시스템 및 그의 메모리 맵핑 방법 | |
CN110532200B (zh) | 一种基于混合内存架构的内存系统 | |
CN104778132A (zh) | 一种多核处理器目录缓存替换方法 | |
US8996786B2 (en) | Nonvolatile memory system and block management method | |
US10754786B2 (en) | Memory access method using simplified mapping table requiring smaller memory space | |
TW201830244A (zh) | 快閃記憶體以及其管理方法 | |
CN112559384A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |