CN112181288B - 一种非易失性存储介质的数据处理方法和计算机存储介质 - Google Patents
一种非易失性存储介质的数据处理方法和计算机存储介质 Download PDFInfo
- Publication number
- CN112181288B CN112181288B CN202010825520.1A CN202010825520A CN112181288B CN 112181288 B CN112181288 B CN 112181288B CN 202010825520 A CN202010825520 A CN 202010825520A CN 112181288 B CN112181288 B CN 112181288B
- Authority
- CN
- China
- Prior art keywords
- hash table
- data
- layer
- entering
- hash
- 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
- 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/0614—Improving the reliability of storage systems
-
- 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]
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
一种非易失性存储介质的数据处理方法和计算机存储介质,初始化步骤完成后,根据用户的指令进行并发的数据插入、数据查询、数据删除和数据更新步骤,并发的顺利执行由自旋锁来保证。数据插入和数据删除步骤中如果需要改变哈希表大小,则触发调整哈希表大小步骤,当哈希表大小调整完后,继续执行数据插入和数据删除步骤。当用户发出结束访问指令时,进入结束步骤。本发明减少对哈希表的级联写入并有效地解决哈希冲突,同时减少调整哈希表大小操作时需要移动的数据,减少频繁写入时调整哈希表大小操作执行的次数,进而提高非易失性存储介质的寿命,保证数据一致性的同时提高哈希索引结构在非易失性存储介质上的性能。
Description
技术领域
本发明涉及计算机数据存储领域,特别是一种非易失性存储介质的数据处理方法和计算机存储介质。
背景技术
目前,非易失性内存(也称为持久性内存)逐渐商业化,例如傲腾持久性内存已经推出市场,非易失性内存的特性也逐渐被大家熟悉;由于其具有非易失性、字节寻址、高密度等特性,非易失性内存将成为下一代内存系统的主要组成部分。虽然非易失性内存可以通过内存总线使用装载指令和存储指令同中央处理器直接交换数据,但是由于非易失性内存具有有限的写持久性以及不对称的读写性能,因此在其上面设计数据结构会面临许多问题。
如今,关于基于树的索引结构在非易失性内存上的改进已经有了很多研究,例如B树、日志结构合并树等,还有一小部分研究针对的是基于哈希的索引结构。由于哈希索引结构的查找时间是常量,因此被广泛地应用于内存中。但是非易失性内存有着比普通内存更复杂的特性,因此针对非易失性内存设计哈希索引结构时应该充分考虑这些特性。
相对于普通内存,非易失性内存的写持久性更长、写延迟更高,而且具有读写非对称性即写性能弱于读性能,因此当非易失性内存采用传统哈希方法(例如链式哈希、布谷鸟哈希和跳房子哈希)时,解决哈希冲突时会引起级联写入,性能会大幅下降。所以针对非易失性内存,如何解决哈希冲突时导致的级联写入成为一个关键的问题。以往的一些在非易失性内存上对哈希索引的研究,例如路径哈希,分层哈希和缓存敏感的扩展哈希,都解决了级联写入的问题,但是它们的写入和哈希表大小的调整操作仍然会带来巨大的开销。
哈希表的大小可以随着数据量的变化而动态调整。数据频繁插入时,哈希表的负载因子(即哈希表利用率)会变得越来越大,当负载因子到达顶点时,哈希表不能再插入任何数据,因此需要调整哈希表的大小以容纳更多的数据。调整哈希表大小的操作通常包括将旧哈希表的数据重新哈希并移动到新哈希表中,这些操作会带来巨大的开销,同时也会堵塞哈希表的其他操作。虽然有效解决哈希冲突可以推迟调整哈希表大小操作的时间,但是仍然不能解决调整哈希表操作带来的昂贵开销。
现有的一些哈希方法在调整哈希表大小时尽可能地移动更少的旧哈希表中的数据,例如分层哈希方法每次调整哈希表大小操作只需要移动三分之一的数据,因此降低了调整哈希表大小操作的开销;但是分层哈希方法仍然会频繁地进行调整哈希表大小的操作,因为新生成的哈希表只是旧哈希表的两倍。
另一方面,非易失性内存上的数据会产生一致性问题,即当故障发生时产生的数据丢失或者数据不完整的现象。解决数据一致性问题需要使用昂贵的日志操作,即先把旧数据或者要更新的数据写入到非易失性内存中,然后再进行正常的写入或者更新操作,在非易失性内存上进行日志操作毫无疑问会带来巨大的开销,同时会降低其寿命。
发明内容
本发明的主要目的在于克服现有技术中的上述缺陷,提出一种非易失性存储介质的数据处理方法和计算机存储介质,减少对哈希表的级联写入并有效地解决哈希冲突,同时减少调整哈希表大小操作时需要移动的数据,减少频繁写入时调整哈希表大小操作执行的次数,进而提高新型存储介质的寿命,保证数据一致性的同时提高哈希索引结构在非易失性存储介质上的性能。
本发明采用如下技术方案:
一种非易失性存储介质的数据处理方法,其特征在于,包括如下步骤:
1)初始化时,根据用户指令在非易失性存储介质中创建环状结构的多层环状哈希表,并在最后一层哈希表和第一层哈希表之间设置一层空层,初始化三个变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表,根据各层哈希表桶的总数创建一个位图组,设置用于解决哈希冲突的桶的探测距离和探测次数;
2)根据用户指令进行并发的数据插入步骤、数据查询步骤、数据删除步骤或数据更新步骤;
3)在执行数据插入步骤或数据删除步骤过程中,判断是否需要改变多层环状哈希表的大小,若是,则调整哈希表大小后再执行数据插入步骤或数据删除,否则继续执行数据插入步骤或数据删除;
4)判断用户是否发出结束访问指令,若是,则将标识第一层哈希表、最后一层哈希表和空层的哈希表的变量、探测距离和探测次数、各层哈希表和位图组的大小写入到非易失性存储介质的中,释放相关资源,若否,则回到步骤2)。
优选的,步骤1)具体包括如下:
1.1)根据用户指令在非易失性存储介质中用哈希值的不同位创建多层环状哈希表,并初始化各层哈希表的索引比特数,每层哈希表中桶的数量为2的索引比特数的次方;
1.2)初始化三个8字节整数型变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表;
1.3)根据各层哈希表桶的总数创建一个位图组,位图组由各层哈希表的位图组合得到,位图组中的每一个位对应于哈希表的一个桶,用来确定桶是否存放了数据项;
1.4)设置用于解决哈希冲突的桶探测距离和探测次数。
优选的,所述数据插入步骤具体包括如下:
A2.1)根据用户要插入的数据计算每层哈希表和位图组中的初始索引,根据位图组的索引,依次判断每一层哈希表中初始索引位置上的桶是否为空,若是,则进入步骤A2.5),否则进入步骤A2.2);
A2.2)判断初始索引加上探测距离后生成的新索引后对应的桶是否为空,若是,则进入步骤2.5),否则进入步骤A2.3);
A2.3)判断是否可以将桶中的冲突数据移动到它的新索引对应的桶中,若是,则进入步骤A2.4),否则进入步骤3)调整多层环状哈希表大小,回到步骤A2.1);
A2.4)将桶中的冲突数据移动到它的新索引对应的桶中,进入步骤A2.5);
A2.5)将用户要插入的数据插入到对应桶中并更改位图组中对应的位。
优选的,所述数据查询步骤包括如下:
B2.1)根据用户要查询的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要找的数据,若是,则进入步骤B2.3),否则进入步骤B2.2);
B2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要查找的数据,若是,则进入步骤B2.3),否则进入步骤B2.4);
B2.3)返回要查找的数据;
B2.4)返回未找到标志。
优选的,所述数据删除步骤包括如下:
C2.1)根据用户要删除的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.2);
C2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.5);
C2.3)删除数据并更改位图组中对应的位,判断环状哈希表中的数据量是否少于环状哈希表容量的二分之一,若是,则进入步骤3)调整多层环状哈希表大小并回到步骤C2.4),否则进入步骤C2.4);
C2.4)返回删除成功标志。
C2.5)返回删除失败标志。
优选的,所述数据更新步骤,包括如下:
D2.1)根据用户要更新的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置的桶中是否有要更新的数据,若是,则转过程D2.3),否则转过程D2.2);
D2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要更新的数据,若是,则进入步骤D2.3),否则进入步骤D2.4);
D2.3)更新数据,返回更新成功标志;
D2.4)返回更新失败标志。
优选的,所述环状结构的多层哈希表根据哈希值的不同位作为索引来构成多层哈希表;在调整哈希表大小时,所有操作都是在环状结构的多层哈希表上完成,新的最后一层的哈希表比原来最后一层的哈希表大指数倍,同时只需要重新哈希原来第一层的哈希表。
优选的,所述调整多层环状哈希表大小,包括如下:
3.1)将标识第一层、最后一层和空层的变量分别加1或减1后标识新的第一层、新的最后一层和新的空层,并在新的最后一层上生成一个比原先的最后一层大指数倍或小指数倍的哈希表;根据新哈希表的大小生成新的位图组,并将未重新哈希的桶对应的位写入到新的位图组中,进入步骤3.2);
3.2)判断要重新哈希的桶中是否有数据,若是,则进入步骤3.3),否则进入步骤3.6);
3.3)判断各层哈希表和位图组初始索引的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.4);
3.4)判断初始索引加上探测距离后生成的新索引对应的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.8);
3.5)将数据插入到桶中并更改位图组中的对应位,进入步骤3.6);
3.6)判断是否还有要重新哈希的桶,若是,则进入步骤3.2),否则进入步骤3.7);
3.7)释放旧的哈希表和位图组的空间,返回调整大小成功标志;
3.8)返回调整大小失败标志。
一种计算机存储介质,其特征在于:用于执行上述的一种非易失性存储介质的数据处理方法。
由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:
1、本发明利用哈希值的不同位来分成不同的层,每一层都有一个不同大小的哈希表,同时将各个层组成一个环状结构。对于数据插入操作来说,首先探测初始索引位置上的桶,如果该桶不为空,再探测初始索引加上探测距离后的新索引位置上的桶,由于这些探测均是在位图组上完成,所以探测效率高、探测速度快。为了提高负载因子,若数据插入时探测到的桶都不为空,则会移动探测桶中的数据到哈希表的其他桶中,这样的移动只有一次,所以并不会造成级联写入。
2、本法在调整哈希表大小操作时,在原先最后一层的下一层生成一个指数倍大的新哈希表,原来的第一层哈希表中的数据被全部移动到新哈希表中。另外,对标识层数的三个变量的改变都是有顺序的原子操作,保证了它们的数据一致性。基于环状哈希表的大小调整操作生成了更大或更小的哈希表同时减少了数据移动的次数,从而也减少了哈希表调整的次数,同时使哈希表的大小指数增长或减少。由于调整哈希表大小操作在本地完成,所以不会影响数据插入、查询、删除、更新操作。
附图说明
图1为本发明方法流程图;
图2为本发明初始化步骤过程示意图;
图3为本发明的数据插入步骤流程示意图;
图4为本发明的数据查询步骤流程示意图;
图5为本发明的数据删除步骤流程示意图;
图6为本发明的数据更新步骤流程示意图;
图7为本发明的调整哈希表大小步骤流程示意图;
图8为本发明的结束步骤流程示意图;
图9为本发明的环状结构的多层哈希表基本结构示意图。
具体实施方式
以下通过具体实施方式对本发明作进一步的描述。
一种非易失性存储介质的数据处理方法,参照图1,包括如下步骤:
1)初始化时,根据用户指令在非易失性存储介质中创建环状结构的多层环状哈希表,并在最后一层哈希表和第一层哈希表之间设置一层空层,初始化三个变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表,根据各层哈希表桶的总数创建一个位图组,设置用于解决哈希冲突的桶的探测距离和探测次数。
参见图2,该步骤具体包括如下:
1.1)根据用户指令在非易失性存储介质中用哈希值的不同位作为索引创建多层环状哈希表,并初始化各层哈希表的索引比特数,每层哈希表中桶的数量为2的索引比特数的次方;
1.2)初始化三个8字节整数型变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表(初始值为0);
1.3)根据各层哈希表桶的总数创建一个位图组,位图组由各层哈希表的位图组合得到,位图组中的每一个位对应于哈希表的一个桶,用来确定桶是否存放了数据项;
1.4)设置用于解决哈希冲突的桶的探测距离和探测次数。
参见图9,第一层哈希表由哈希值的前两位进行索引,桶的数量为四,最后一层哈希表(即此图中的第二层哈希表)由哈希值接下来的两位进行索引,桶的数量为十六,更多层的哈希表的大小以此类推。在最后一层哈希表和第一层哈希表之间是一层空层,当调整哈希表大小操作进行时,需要改变三个标识变量,空层成为新环状哈希表的最后一层,需要重新哈希的第一层变为新环状哈希表的空层,等到所有数据全部重新哈希完成后释放该层内存空间。
2)根据用户指令进行并发的数据插入步骤、数据查询步骤、数据删除步骤或数据更新步骤,并发的顺利执行由自旋锁来保证。
参见图3,数据插入步骤具体包括如下:
A2.1)根据用户要插入的数据计算每层哈希表和位图组中的初始索引,根据位图组的索引,依次判断每一层哈希表中初始索引位置上的桶是否为空,若是,则进入步骤A2.5),否则进入步骤A2.2);
A2.2)判断初始索引加上探测距离后生成的新索引后对应的桶是否为空,若是,则进入步骤2.5),否则进入步骤A2.3);
A2.3)判断是否可以将桶中的冲突数据移动到它的新索引对应的桶中,若是,则进入步骤A2.4),否则调整多层环状哈希表大小;
A2.4)将桶中的冲突数据移动到它的新索引对应的桶中,进入步骤A2.5);
A2.5)将用户要插入的数据插入到对应桶中并更改位图组中对应的位。
参见图4,数据查询步骤包括如下:
B2.1)根据用户要查询的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要找的数据,若是,则进入步骤B2.3),否则进入步骤B2.2);
B2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要查找的数据,若是,则进入步骤B2.3),否则进入步骤B2.4);
B2.3)返回要查找的数据;
B2.4)返回未找到标志。
参见图5,数据删除步骤包括如下:
C2.1)根据用户要删除的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.2);
C2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.5);
C2.3)删除数据并更改位图组中对应的位,判断环状哈希表中的数据量是否少于环状哈希表容量的二分之一,若是,则进入步骤3)调整多层环状哈希表大小并回到步骤C2.4),否则进入步骤C2.4);
C2.4)返回删除成功标志。
C2.5)返回删除失败标志。
参见图5,数据更新步骤,包括如下:
D2.1)根据用户要更新的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置的桶中是否有要更新的数据,若是,则转过程D2.3),否则转过程D2.2);
D2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要更新的数据,若是,则进入步骤D2.3),否则进入步骤D2.4);
D2.3)更新数据,返回更新成功标志;
D2.4)返回更新失败标志。
3)在执行数据插入步骤或数据删除步骤过程中,判断是否需要改变多层环状哈希表的大小,若是,则调整哈希表大小后再执行数据插入步骤或数据删除,否则继续执行数据插入步骤或数据删除。
环状结构的多层哈希表根据哈希值的不同位作为索引来构成多层哈希表;在调整哈希表大小时,所有操作都是在环状结构的多层哈希表上完成,新的最后一层的哈希表比原来最后一层的哈希表大指数倍,同时只需要重新哈希原来第一层的哈希表。
参见图7,调整多层环状哈希表大小,包括如下:
3.1)将标识第一层、最后一层和空层的变量分别加1后(或减1)标识新的第一层、新的最后一层和新的空层,并在新的最后一层上生成一个比原先的最后一层大指数倍(或小指数倍)的哈希表;根据新哈希表的大小生成新的位图组,并将未重新哈希的桶对应的位写入到新的位图组中,进入步骤3.2);
3.2)判断要重新哈希的桶中是否有数据,若是,则进入步骤3.3),否则进入步骤3.6);
3.3)判断各层哈希表和位图组初始索引的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.4);
3.4)判断初始索引加上探测距离后生成的新索引对应的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.8);
3.5)将数据插入到桶中并更改位图组中的对应位,进入步骤3.6);
3.6)判断是否还有要重新哈希的桶,若是,则进入步骤3.2),否则进入步骤3.7);
3.7)释放旧的哈希表和位图组的空间,返回调整大小成功标志;
3.8)返回调整大小失败标志。
4)判断用户是否发出结束访问指令,若是,则将标识第一层哈希表、最后一层哈希表和空层的哈希表的变量、探测距离和探测次数、各层哈希表和位图组的大小写入到非易失性存储介质的内存中,释放相关资源,即释放空层哈希表和旧位图组所占用的空间,若否,则回到步骤2),参见图8。
本发明还提出一种计算机存储介质,用于执行权利要求至8中任一所述的一种非易失性存储介质的数据处理方法。
本发明充分利用哈希值的不同位和环状哈希表来解决哈希冲突,使用了位图组来减少访问操作带来的延迟,同时在调整哈希表大小操作中,移动尽可能少的旧数据并生成更大或更小的新哈希表,进而提高了数据插入和哈希表大小调整操作的性能,提高了非易失性存储介质的可靠性。
本发明由初始化步骤、数据插入步骤、数据查询步骤、数据删除步骤、数据更新步骤、调整哈希表大小步骤和结束步骤组成。为了保证非易失性存储介质上的数据一致性,要确保数据更改的顺序,例如在数据插入操作时,应先插入新数据,然后更改位图组中的对应位,若更改位图组中的对应位之前发生系统故障,则需要重新插入新数据;对于调整哈希表大小操作来说,应先使用原子操作更新表示不同层的三个变量,然后进行有顺序的数据移动操作(即把旧数据插入新表),这样才能在移动数据最少的同时保证数据的一致性。
上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。
Claims (8)
1.一种非易失性存储介质的数据处理方法,其特征在于,包括如下步骤:
1)初始化时,根据用户指令在非易失性存储介质中创建环状结构的多层环状哈希表,并在最后一层哈希表和第一层哈希表之间设置一层空层,初始化三个变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表,根据各层哈希表桶的总数创建一个位图组,设置用于解决哈希冲突的桶的探测距离和探测次数;
2)根据用户指令进行并发的数据插入步骤、数据查询步骤、数据删除步骤或数据更新步骤;
3)在执行数据插入步骤或数据删除步骤过程中,判断是否需要改变多层环状哈希表的大小,若是,则调整哈希表大小后再执行数据插入步骤或数据删除,否则继续执行数据插入步骤或数据删除;
调整多层环状哈希表大小,包括如下:
3.1)将标识第一层、最后一层和空层的变量分别加1或减1后标识新的第一层、新的最后一层和新的空层,并在新的最后一层上生成一个比原先的最后一层大指数倍或小指数倍的哈希表;根据新哈希表的大小生成新的位图组,并将未重新哈希的桶对应的位写入到新的位图组中,进入步骤3.2);
3.2)判断要重新哈希的桶中是否有数据,若是,则进入步骤3.3),否则进入步骤3.6);
3.3)判断各层哈希表和位图组初始索引的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.4);
3.4)判断初始索引加上探测距离后生成的新索引对应的桶是否为空,若是,则进入步骤3.5),否则进入步骤3.8);
3.5)将数据插入到桶中并更改位图组中的对应位,进入步骤3.6);
3.6)判断是否还有要重新哈希的桶,若是,则进入步骤3.2),否则进入步骤3.7);
3.7)释放旧的哈希表和位图组的空间,返回调整大小成功标志;
3.8)返回调整大小失败标志;
4)判断用户是否发出结束访问指令,若是,则将标识第一层哈希表、最后一层哈希表和空层的哈希表的变量、探测距离和探测次数、各层哈希表和位图组的大小写入到非易失性存储介质中,释放相关资源,若否,则回到步骤2)。
2.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,步骤1)具体包括如下:
1.1)根据用户指令在非易失性存储介质中用哈希值的不同位创建多层环状哈希表,并初始化各层哈希表的索引比特数,每层哈希表中桶的数量为2的索引比特数的次方;
1.2)初始化三个8字节整数型变量来分别标识第一层哈希表、最后一层哈希表以及空层的哈希表;
1.3)根据各层哈希表桶的总数创建一个位图组,位图组由各层哈希表的位图组合得到,位图组中的每一个位对应于哈希表的一个桶,用来确定桶是否存放了数据项;
1.4)设置用于解决哈希冲突的桶探测距离和探测次数。
3.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,所述数据插入步骤具体包括如下:
A2.1)根据用户要插入的数据计算每层哈希表和位图组中的初始索引,根据位图组的索引,依次判断每一层哈希表中初始索引位置上的桶是否为空,若是,则进入步骤A2.5),否则进入步骤A2.2);
A2.2)判断初始索引加上探测距离后生成的新索引后对应的桶是否为空,若是,则进入步骤A2.5),否则进入步骤A2.3);
A2.3)判断是否可以将桶中的冲突数据移动到它的新索引对应的桶中,若是,则进入步骤A2.4),否则进入步骤3)调整多层环状哈希表大小,回到步骤A2.1);
A2.4)将桶中的冲突数据移动到它的新索引对应的桶中,进入步骤A2.5);
A2.5)将用户要插入的数据插入到对应桶中并更改位图组中对应的位。
4.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,所述数据查询步骤包括如下:
B2.1)根据用户要查询的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要找的数据,若是,则进入步骤B2.3),否则进入步骤B2.2);
B2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要查找的数据,若是,则进入步骤B2.3),否则进入步骤B2.4);
B2.3)返回要查找的数据;
B2.4)返回未找到标志。
5.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,所述数据删除步骤包括如下:
C2.1)根据用户要删除的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置上的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.2);
C2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要删除的数据,若是,则进入步骤C2.3),否则进入步骤C2.5);
C2.3)删除数据并更改位图组中对应的位,判断环状哈希表中的数据量是否少于环状哈希表容量的二分之一,若是,则进入步骤3)调整多层环状哈希表大小并回到步骤C2.4),否则进入步骤C2.4);
C2.4)返回删除成功标志;
C2.5)返回删除失败标志。
6.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,所述数据更新步骤,包括如下:
D2.1)根据用户要更新的数据计算每层哈希表和位图组中的初始索引,判断各层哈希表中初始索引位置的桶中是否有要更新的数据,若是,则转过程D2.3),否则转过程D2.2);
D2.2)判断初始索引加上探测距离后生成的新索引对应的桶中是否有要更新的数据,若是,则进入步骤D2.3),否则进入步骤D2.4);
D2.3)更新数据,返回更新成功标志;
D2.4)返回更新失败标志。
7.如权利要求1所述的一种非易失性存储介质的数据处理方法,其特征在于,所述环状结构的多层哈希表根据哈希值的不同位作为索引来构成多层哈希表;在调整哈希表大小时,所有操作都是在环状结构的多层哈希表上完成,新的最后一层的哈希表比原来最后一层的哈希表大指数倍,同时只需要重新哈希原来第一层的哈希表。
8.一种计算机存储介质,其特征在于:用于执行权利要求1至7中任一所述的一种非易失性存储介质的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010825520.1A CN112181288B (zh) | 2020-08-17 | 2020-08-17 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010825520.1A CN112181288B (zh) | 2020-08-17 | 2020-08-17 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181288A CN112181288A (zh) | 2021-01-05 |
CN112181288B true CN112181288B (zh) | 2022-03-04 |
Family
ID=73918931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010825520.1A Active CN112181288B (zh) | 2020-08-17 | 2020-08-17 | 一种非易失性存储介质的数据处理方法和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181288B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778752A (zh) * | 2021-09-10 | 2021-12-10 | 中国电信集团系统集成有限责任公司 | 用于重复数据删除的哈希数据存储方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165321A (zh) * | 2018-07-28 | 2019-01-08 | 华中科技大学 | 一种基于非易失内存的一致性哈希表构建方法和系统 |
DE102019100122A1 (de) * | 2018-02-05 | 2019-08-08 | Intel Corporation | Verfahren zum gesicherten und authentifizierten Paaren von nichtflüchtigem Speicher und Speichercontroller |
CN110413617A (zh) * | 2019-07-30 | 2019-11-05 | 南京邮电大学 | 一种根据数据量的大小动态调节哈希表组的方法 |
CN111221776A (zh) * | 2019-12-30 | 2020-06-02 | 上海交通大学 | 面向非易失性内存的文件系统的实现方法、系统及介质 |
CN111459846A (zh) * | 2020-03-12 | 2020-07-28 | 华中科技大学 | 一种基于混合dram-nvm内存的动态哈希表操作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8321385B2 (en) * | 2010-03-12 | 2012-11-27 | Lsi Corporation | Hash processing in a network communications processor architecture |
CN107122248B (zh) * | 2017-05-02 | 2020-01-21 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
-
2020
- 2020-08-17 CN CN202010825520.1A patent/CN112181288B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102019100122A1 (de) * | 2018-02-05 | 2019-08-08 | Intel Corporation | Verfahren zum gesicherten und authentifizierten Paaren von nichtflüchtigem Speicher und Speichercontroller |
CN109165321A (zh) * | 2018-07-28 | 2019-01-08 | 华中科技大学 | 一种基于非易失内存的一致性哈希表构建方法和系统 |
CN110413617A (zh) * | 2019-07-30 | 2019-11-05 | 南京邮电大学 | 一种根据数据量的大小动态调节哈希表组的方法 |
CN111221776A (zh) * | 2019-12-30 | 2020-06-02 | 上海交通大学 | 面向非易失性内存的文件系统的实现方法、系统及介质 |
CN111459846A (zh) * | 2020-03-12 | 2020-07-28 | 华中科技大学 | 一种基于混合dram-nvm内存的动态哈希表操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112181288A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083601B (zh) | 面向键值存储系统的索引树构建方法及系统 | |
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN105117415B (zh) | 一种优化的ssd数据更新方法 | |
JP6764359B2 (ja) | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 | |
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
CN103229164B (zh) | 数据访问方法和装置 | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
US20090319721A1 (en) | Flash memory apparatus and method for operating the same | |
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN109165321B (zh) | 一种基于非易失内存的一致性哈希表构建方法和系统 | |
CN112181288B (zh) | 一种非易失性存储介质的数据处理方法和计算机存储介质 | |
KR20170065374A (ko) | 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
CN104077078B (zh) | 读存储区、更新存储区的方法及装置 | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
US20110153674A1 (en) | Data storage including storing of page identity and logical relationships between pages | |
CN113253932A (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN110515897B (zh) | Lsm存储系统读性能的优化方法及系统 | |
US11645202B2 (en) | Parsing method, parsing apparatus, electronic device, and computer storage medium | |
CN114238226A (zh) | 一种基于simd指令的nvm本地文件管理系统及方法 | |
CN113342706A (zh) | 一种基于非易失性内存的写优化可扩展哈希索引结构以及插入、刷新和删除方法 | |
CN114741382A (zh) | 一种减少读时延的缓存方法和系统 | |
KR101866697B1 (ko) | 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법 | |
KR100859989B1 (ko) | 플래시 메모리의 공간정보 관리장치 및 그 방법 | |
CN113821177B (zh) | 一种基于nvm的lsm树的存储结构及其数据存储方法 |
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 |