CN109076021B - 数据处理的方法和装置 - Google Patents
数据处理的方法和装置 Download PDFInfo
- Publication number
- CN109076021B CN109076021B CN201680058640.5A CN201680058640A CN109076021B CN 109076021 B CN109076021 B CN 109076021B CN 201680058640 A CN201680058640 A CN 201680058640A CN 109076021 B CN109076021 B CN 109076021B
- Authority
- CN
- China
- Prior art keywords
- hash
- hash table
- level
- data
- location
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据处理的方法(200)和装置。该方法(200)包括:从第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在所述第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据(S210);将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据(S220);将所述第一哈希数据插入所述候选位置(S230)。上述方法和装置可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
Description
技术领域
本申请涉及存储领域,尤其涉及一种数据处理的方法和装置。
背景技术
存储系统中可以采用哈希(Hash)表来存储数据,哈希表是一种数据存储的索引方式。例如,存储系统可以根据需要存储的数据的唯一索引(比如KV(Key Value,键值)存储系统中的数据项中的key)、给定的哈希函数和哈希表的容量,计算出一个哈希值,从而将数据(比如KV存储系统中的value)存储在该哈希值指示的存储位置(以下,如无特别说明,“存储位置”均指哈希值所指示的存储介质中的位置)上。在查询时,根据给定的索引,给定的哈希函数和表容量,计算出哈希值,进而在该哈希值指示的存储位置进行查找。
由于哈希表的容量有限,会出现两个不同的索引经过计算得到哈希值位于哈希表中相同的位置,这种情况称为哈希冲突。当出现哈希冲突时,一种情况下,会重新调整哈希表的容量。另一种情况下,可以将冲突的索引存储在哈希表中的其它位置,然后在冲突位置放置一个指针,指示该冲突的索引在哈希表中的位置。随着数据量的增大,哈希表中冲突的元素(索引或者指针)也会越来越多,从而导致哈希表的读写效率越来越差。
发明内容
有鉴于此,本申请提供了一种数据处理的方法和装置,能够提高哈希表的读写效率。
一方面,提供了一种数据处理的方法,所述方法应用于存储系统,所述存储系统包括多级哈希表,所述多级哈希表用于存储数据,所述多级哈希表包括第N级哈希表和第N+1级哈希表,所述N≥0且所述N为整数,所述方法包括:从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在所述第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据;将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据;将所述第一哈希数据插入所述候选位置。
根据本申请实施例提供的数据处理的方法,在向第N+1级哈希表中插入哈希数据时,从第N+1级哈希表中确定负载最小的位置为目标位置,并将第N级哈希表中的哈希数据插入该目标位置,提高了第N+1级哈希表的负载均衡度,从而可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
可选地,所述从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,包括:从所述多个位置中确定第一位置,其中,所述第一位置为所述多个位置中负载最大的位置;将所述第一位置存储的第三哈希数据迁移至所述多级哈希表中的第N+2级哈希表;确定所述第一位置为所述目标位置。
根据本申请实施例提供的数据处理的方法,通过将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,减少了第N+1级哈希表中的哈希数据,从而进一步减少了第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
可选地,所述从所述多个位置中确定第一位置,包括:当所述多个位置中的第二位置不能插入所述第二哈希数据时,从所述多个位置中确定所述第一位置,其中,所述第二位置为将所述第三哈希数据迁移至所述第N+2级哈希表之前所述多个位置中负载最小的位置。
根据本申请实施例提供的数据处理的方法,如果第N+1级哈希表中负载最小的位置可以插入所述第二哈希数据,则直接将该位置确定为目标位置,如果第N+1级哈希表中负载最小的位置不能插入所述第二哈希数据,则将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,从而提高了第N+1级哈希表的负载均衡度,进而提高了提高哈希表的读写效率。
可选地,所述将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,包括:将所述第二哈希数据与所述目标位置存储的第四哈希数据合并后插入所述目标位置。
本申请实施例提供的数据处理的方法,可以减少第N+1级哈希表中的哈希数据,从而减小了第N+1级哈希表中哈希冲突的概率,提高了第N+1级哈希表的读写效率。
可选地,所述方法还包括:更新所述目标位置的负载值。
当继续向第N+1级哈希表中写入哈希数据时,可以根据目标位置更新后的负载值确定是否可以将第N级哈希表中的哈希数据插入该目标位置,从而提高了第N+1级哈希表的负载均衡度,提高第N+1级哈希表的读写效率。
另一方面,提供了一种数据处理的装置,该装置可以实现上述方面所涉及方法的执行主体所执行的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的单元或模块。
在一种可能的设计中,该装置的结构中包括处理器和存储器,该处理器被配置为支持该装置执行上述方法中相应的功能,该存储器用于与处理器耦合,其保存该装置必要的程序指令和数据。该装置还可以包括通信接口,该通信接口用于支持该装置与其它网元之间的通信。
再一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述装置所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
相比于现有技术,根据本申请实施例提供的数据处理的方法和装置,从多级哈希表中的第N+1级哈希表中确定负载最小的位置为目标位置,并将该多级哈希表中的第N级哈希表中的哈希数据迁移至该目标位置,提高了第N+1级哈希表的负载均衡度,从而可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
附图说明
图1是适用本申请实施例的一种哈希表的示意性结构图;
图2是本申请实施例提供的一种数据处理方法的示意性流程图;
图3是本申请实施例提供的另一数据处理方法的示意性流程图;
图4是本申请实施例提供的一种可能的数据处理装置的示意性结构图;
图5是本申请实施例提供的另一种可能的数据处理装置的示意性结构图。
具体实施方式
为了便于理解本申请实施例,首先对本申请所涉及的概念做简要描述。
哈希表是实现关联数组(associative array)的一种数据结构,广泛应用于数据的快速查找。哈希表有两个重要操作,一个是写(put)操作,通过写操作把元素插入哈希表中;一个是读(get)操作,从哈希表中快速地找到元素。
一个哈希表可以包括下列结构要素:
项(entry),存入到哈希表中的元素称为项或者条目。
桶(bucket),哈希表中的每一个项被散列到桶中,用哈希函数计算关键字(key)的哈希值,通过哈希值就可以找到关键字在哈希表中的位置。例如对于一个cuckoo hash(布谷鸟哈希)表,桶是一个数组集合,数组可以是(s2,pointer)、(s1,s2,pointer)、(key,pointer)或者其他组织形式,但至少要包括pointer(指示数据),pointer指示关键字所对应的数据的存储位置,s1和s2表示根据关键字和两个哈希函数分别计算得到的两个哈希值,s1=h1(key),s2=h2(key),h1和h2是两个哈希函数(例如cityhash),在向cuckoo hash表中插入元素时,首先计算得到s1和s2,然后将s1和s2分别与cuckoo hash表的容量(size)进行取模运算,得到的结果即待插入元素在cuckoo hash表中的候选位置。
桶中的哈希数据有三种类型,
指针(directory),用于指示该位置在下级哈希表中的对应位置;
元数据(metadata),用于指示当前桶的负载(例如,桶中包括的项的数量),其中,当前桶的负载不包括下级哈希表中的负载;
其它哈希数据,例如关键字;
当桶中的位置被占用时,该位置被标记为占据(occupied),当桶中的位置没有被占用时,该位置被标记为空闲(free)。
在本申请的各个实施例中,哈希数据是指哈希表所包括的数据,例如上述指针、元数据和关键字。此外,任意一级哈希表可能包括多个哈希表,哈希表中的位置可以指桶,也可以指下一级哈希表中的一个哈希表,或者是其它含义,其具体含义由语句的上下文逻辑所确定,例如,假设第1级哈希表是第2级哈希表的上级哈希表,对于“将第1级哈希表中X位置存储的哈希数据迁移至第2级哈希表中的Y位置”,X位置指的是桶,Y位置指的是该桶在第2级哈希表中对应的哈希表。
图1是适用本申请实施例的一种哈希表的示意性结构图。如图1所示,该哈希表包括第0级(level 0)哈希表和第1级(level 1)哈希表,第0级哈希表包括桶n,第1级哈希表包括分段(segment)n,分段n也可称为哈希表n。
在对第0级哈希表进行写操作时,当桶n中的位置被写满后,如果继续在桶n中写入哈希数据,桶n中的哈希数据就会溢出(spill)到下一级哈希表(即,第1级哈希表)中,具体地,溢出的哈希数据会插入第1级哈希表的分段n中,分段n是桶n在第1级哈希表中对应的位置,该分段n的具体位置可以通过桶n中的指针指示;也可以在桶n中的哈希数据溢出前主动将桶n中的哈希数据迁移至分段n。
在对第0级哈希表进行读操作时,对于一个给定的索引,首先计算该索引在第0级哈希表中的位置(例如该位置位于桶n),查询该索引是否在该位置,如果在该位置则返回查询结果;如果不在该位置,则在第1级哈希表中与该位置对应的分段(即分段n)中进行查询,如果查询到则返回查询结果,如果查询不到则继续在下一级哈希表中查询。
图1所示的哈希表仅是举例说明,适用于本申请实施例的哈希表不限于此,本申请对哈希表的数量以及哈希表的类型均不作限定。此外,特定对象可能随着习惯的不同而具有不同名称,但这并不能被理解为对本申请实施例适用范围的限定。
图2是本申请实施例提供的一种数据处理的方法的示意图。方法200例如可以由处理器执行,如图2所示,该方法200包括:
S210,从第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据。
当处理器准备向第N级哈希表中插入第一哈希数据时,处理器可以根据计算出的位置确定候选位置(桶),还可以根据其它方法确定候选位置。
例如,对于一个给定的关键字,利用两个哈希函数计算出两个哈希表中的位置,在这两个哈希表的位置中选择一个位置插入该关键字,如果这两个位置都不能插入该关键字,则踢出这两个位置中的一个位置中的哈希数据,并插入该关键字(即,移位操作),被踢出的哈希数据可以根据其它哈希函数重新查找插入位置(即,进行下一次移位操作),直到所有的哈希数据均找到插入位置或者达到最大查找次数为止,在全部的移位操作中所涉及到的桶即为上述给定的关键字的候选位置。
上述示例仅是举例说明确定候选位置的一种可能的方法,实际上,在候选位置中的哈希数据未迁移至下一级哈希表之前,并不会进行移位操作。
上述候选位置在第N+1级哈希表中对应的位置(哈希表,或称为分段)即为S210中所述的多个位置,该多个位置中负载最小的位置例如可以是存储的哈希数据最少的位置,还可以根据其它策略确定负载最小的位置,例如,还可以根据哈希数据的数量除以哈希表容量得到的结果确定哈希表的负载,从而可以确定所述多个位置中负载最小的位置。
S220,将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据。
例如可以在第二哈希数据所存储的位置设置刷新(flushing)标记,将第二哈希数据迁移至所述目标位置,还可以根据其它方法迁移第二哈希数据,本申请各个实施例对哈希数据的迁移方法不作限定。
S230,将所述第一哈希数据插入所述候选位置。
将第二哈希数据迁移至目标位置后,第一哈希数据就可以通过移位操作插入所述候选位置,或者直接插入所述候选位置。
如果第N+1级哈希表的某个位置负载过大而不能插入第N级哈希表的哈希数据时(例如,因某个位置的哈希数据过多导致哈希冲突过大),会将该哈希数据迁移至第N+1级哈希表中的其它位置,并在上述负载过大的位置放置一个指针,这样,在插入哈希数据时需要重新寻找插入位置,在读取哈希数据时需要先读取指针再读取指针指示的信息,从而降低了哈希表的读写效率。
因此,根据本申请实施例提供的数据处理的方法,在向第N+1级哈希表中插入哈希数据时,从第N+1级哈希表中确定负载最小的位置为目标位置,并将第N级哈希表中的哈希数据插入该目标位置,提高了第N+1级哈希表的负载均衡度,从而可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
可选地,所述从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,包括:
S211,从所述多个位置中确定第一位置,其中,所述第一位置为所述多个位置中负载最大的位置。
S212,将所述第一位置存储的第三哈希数据迁移至所述多级哈希表中的第N+2级哈希表。
S213,确定所述第一位置为所述目标位置。
在确定目标位置时,可以首先确定所述多个位置中负载最大的位置,即,所述第一位置,将第一位置存储的第三哈希数据迁移至多级哈希表中的第N+2级哈希表,第N+2级哈希表是第N+1级哈希表的下一级哈希表,此时,第一位置即第N+1级哈希表的所述多个位置中负载最小的位置,即,目标位置。
根据本申请实施例提供的数据处理的方法,通过将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,减少了第N+1级哈希表中的哈希数据,从而进一步减少了第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
可选地,所述从所述多个位置中确定第一位置,包括:
S214,当所述多个位置中的第二位置不能插入所述第二哈希数据时,从所述多个位置中确定所述第一位置,其中,所述第二位置为将所述第三哈希数据迁移至所述第N+2级哈希表之前所述多个位置中负载最小的位置。
在确定目标位置时,可以先确定所述多个位置中负载最小的位置(即,第二位置),如果第二位置可以直接插入所述第二哈希数据,则可以直接在第二位置插入第二哈希数据;如果第二位置不能插入第二哈希数据,则从所述多个位置中确定负载最大的位置(即,第一位置),将第一位置存储的第三哈希数据迁移至多级哈希表中的第N+2级哈希表,此时,第一位置即所述多个位置中负载最小的位置,即,目标位置。
因此,根据本申请实施例提供的数据处理的方法,如果第N+1级哈希表中负载最小的位置可以插入所述第二哈希数据,则直接将该位置确定为目标位置,无需再对第N+1级哈希表中的哈希数据进行迁移处理,如果第N+1级哈希表中负载最小的位置不能插入所述第二哈希数据,则将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,从而提高了第N+1级哈希表的负载均衡度,进而提高了哈希表的读写效率。
可选地,所述将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,包括:
S221,将所述第二哈希数据与所述目标位置存储的第四哈希数据合并后插入所述目标位置。
如果目标位置没有存储哈希数据,则可以将第二哈希数据直接插入目标位置;如果目标可以存储有哈希数据(即,第四哈希数据),则可以将第二哈希数据与第四哈希数据合并后插入目标位置。
例如,对于索引值相同的哈希数据,可以根据相应的语义对第二哈希数据与第四哈希数据进行合并处理(更新或者删除或者覆盖),合并后的全部哈希数据是一个数据集(包括不同索引值的哈希数据)。
因此,本申请实施例提供的数据处理的方法,可以减少第N+1级哈希表中的哈希数据,从而减小了第N+1级哈希表中哈希冲突的概率,提高了第N+1级哈希表的读写效率。
可选地,方法200还包括:
S240,更新所述目标位置的负载值。
在目标位置插入第二哈希数据后,更新目标位置的负载值,通过更新目标位置的负载值,当继续向第N+1级哈希表中写入哈希数据时,可以根据目标位置更新后的负载值确定是否可以将第N级哈希表中的哈希数据插入该目标位置,从而提高了第N+1级哈希表的负载均衡度,提高第N+1级哈希表的读写效率。
图3是本申请实施例提供的另一数据处理的方法的示意性流程图。如图3所示,方法300包括:
S301,写操作开始后,对于待插入的哈希数据,通过哈希函数以及该哈希数据对应的关键字计算后得到该哈希数据在第0级哈希表中可能插入的位置,如果该位置可以插入该哈希数据,则写操作结束,如果该位置不能插入该哈希数据,则可以进行下一步。
S302,根据S301中计算得到的位置,在第0级哈希表中寻找该哈希数据在第0级哈希表中所有可能的插入位置。
S303,针对该哈希数据在0级哈希表中所有可能的插入位置,从这些位置在第1级哈希表中对应的位置中确定负载最小且未被设置刷新标记的位置(即,A位置),如果A位置有足够的空间,则在第0级哈希表中与A位置对应的位置(A0位置)设置刷新标记,将A0位置的哈希数据迁移至A位置,将A0位置的哈希数据与A位置的哈希数据进行合并操作,更新A0位置的负载,在A0位置插入所述待插入的哈希数据并删除A0位置的刷新标记,写操作结束;如果A位置没有足够的空间,则进行下一步。
S304,在第1级哈希表的可选位置中,选择负载最大的位置(即,B位置),并将B位置设置刷新标记,将B位置的哈希数据与B2位置(第2级哈希表中与B位置对应的位置)的哈希数据执行合并操作,将合并后的哈希数据插入B2位置,删除B位置的哈希数据,更新B2位置的负载,并将指示B2位置的指针保存在B位置,执行下一步,此时,B位置即负载最小的位置。可选地,S304中,也可以直接在A位置设置刷新标记。
S305,将第0级哈希表中与B位置对应的位置(B0位置)设置刷新标记,将B0位置的哈希数据迁移至B位置,执行下一步。
S306,在B0位置插入所述待插入的哈希数据,并删除B0位置的刷新标记,写操作结束。
本申请实施例提供的数据处理的方法300,通过在第1级哈希表中确定负载最小的位置(A位置),如果该位置可以插入所述待插入的哈希数据,则直接将该位置确定为目标位置,无需再对第1级哈希表中的哈希数据进行迁移处理,如果该位置不能插入所述待插入的哈希数据,则将第1级哈希表中负载最大的位置(B位置)存储的哈希数据迁移至第2级哈希表,然后将该位置作为目标位置,从而提高了第1级哈希表的负载均衡度,进而提高了哈希表的读写效率。
上文结合图2和图3,详细描述了本申请实施例提供的数据处理的方法,下面,将结合图4和图5,详细描述本申请实施例提供的数据处理的装置。
图4示出了本申请实施例提供的数据处理的装置400。如图4所示,该装置400包括:
存储单元420,用于存储多级哈希表,所述多级哈希表包括第N级哈希表和第N+1级哈希表,所述N≥0且所述N为整数。
处理单元410,用于从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据;以及用于将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据;以及用于将所述第一哈希数据插入所述候选位置。
存储单元410还用于存储装置400的程序代码和数据,用于支持处理单元410完成上述处理过程和/或本文所描述的技术的其它过程;可选地,装置400还包括可以包括通信单元430,用于支持装置400与其它装置进行通信,例如,用于支持处理单元410获取所述第一哈希数据。
根据本申请实施例的数据处理的装置400可对应于本申请实施例的方法的执行主体,并且装置400中的各个模块的上述和其它操作和/或功能分别为了实现图2中的方法的相应流程,为了简洁,在此不再赘述。
因此,本申请实施例提供的数据处理的装置400,从多级哈希表中的第N+1级哈希表中确定负载最小的位置为目标位置,并将该多级哈希表中的第N级哈希表中的哈希数据迁移至该目标位置,提高了第N+1级哈希表的负载均衡度,从而可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。。
可选地,所述处理单元410具体用于:从所述多个位置中确定第一位置,其中,所述第一位置为所述多个位置中负载最大的位置;将所述第一位置存储的第三哈希数据迁移至所述多级哈希表中的第N+2级哈希表;确定所述第一位置为所述目标位置。
本申请实施例提供的数据处理的装置400,通过将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,减少了第N+1级哈希表中的哈希数据,从而进一步减少了第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
可选地,所述处理单元410具体用于:当所述多个位置中的第二位置不能插入所述第二哈希数据时,从所述多个位置中确定所述第一位置,其中,所述第二位置为将所述第三哈希数据迁移至所述第N+2级哈希表之前所述多个位置中负载最小的位置。
本申请实施例提供的数据处理的装置400,如果第N+1级哈希表中负载最小的位置可以插入所述第二哈希数据,则直接将该位置确定为目标位置,无需再对第N+1级哈希表中的哈希数据进行迁移处理,如果第N+1级哈希表中负载最小的位置不能插入所述第二哈希数据,则将第N+1级哈希表中负载最大的位置存储的哈希数据迁移至第N+2级哈希表,然后将该位置作为目标位置,从而提高了第N+1级哈希表的负载均衡度,进而提高了哈希表的读写效率。
可选地,所述处理单元410具体用于:将所述第二哈希数据与所述目标位置存储的第四哈希数据合并后插入所述目标位置。
本申请实施例提供的数据处理的装置400,可以减少第N+1级哈希表中的哈希数据,从而减小了第N+1级哈希表中哈希冲突的概率,提高了第N+1级哈希表的读写效率。
可选地,所述处理单元410还用于:更新所述目标位置的负载值。
在目标位置插入第二哈希数据后,更新目标位置的负载值,通过更新目标位置的负载值,当继续向第N+1级哈希表中写入哈希数据时,可以根据目标位置更新后的负载值确定是否可以将第N级哈希表中的哈希数据插入该目标位置,从而提高了第N+1级哈希表的负载均衡度,提高第N+1级哈希表的读写效率。
上面主要从功能划分的角度对本申请实施例提供的数据处理的装置进行了介绍。可以理解的是,各个模块为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在本申请实施例提供的数据处理的装置中,处理模块410可以是处理器或控制器,例如可以是中央处理器(Central Processing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific IntegratedCircuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块430可以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口。存储模块420可以是存储器。
当处理单元410为处理器,通信单元430为通信接口,存储单元420为存储器时,本申请实施例所涉及的数据处理的装置可以为图5所示的装置500。
参阅图5所示,该装置500包括:处理器510、通信接口520、存储器530。其中,通信接口520、处理器510以及存储器530可以通过内部连接通路相互通信,传递控制和/或数据信号,例如,通信接口520、处理器510以及存储器530可以通过总线连接。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
因此,本申请实施例提供的数据处理的装置500,在向第N+1级哈希表中插入哈希数据时,从第N+1级哈希表中确定负载最小的位置为目标位置,并将第N级哈希表中的哈希数据插入该目标位置,提高了第N+1级哈希表的负载均衡度,从而可以减小第N+1级哈希表中哈希冲突的概率,提高第N+1级哈希表的读写效率。
在本申请各个实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域技术人员很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (10)
1.一种数据处理的方法,其特征在于,所述方法应用于存储系统,所述存储系统包括多级哈希Hash表,所述多级哈希表用于存储数据,所述多级哈希表包括第N级哈希表和第N+1级哈希表,所述N≥0且所述N为整数,所述方法包括:
从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在所述第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据;
将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据;
将所述第一哈希数据插入所述候选位置。
2.根据权利要求1所述的方法,其特征在于,所述从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,包括:
从所述多个位置中确定第一位置,其中,所述第一位置为所述多个位置中负载最大的位置;
将所述第一位置存储的第三哈希数据迁移至所述多级哈希表中的第N+2级哈希表;
确定所述第一位置为所述目标位置。
3.根据权利要求2所述的方法,其特征在于,所述从所述多个位置中确定第一位置,包括:
当所述多个位置中的第二位置不能插入所述第二哈希数据时,从所述多个位置中确定所述第一位置,其中,所述第二位置为将所述第三哈希数据迁移至所述第N+2级哈希表之前所述多个位置中负载最小的位置。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,包括:
将所述第二哈希数据与所述目标位置存储的第四哈希数据合并后插入所述目标位置。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
更新所述目标位置的负载值。
6.一种数据处理的装置,其特征在于,所述装置配置于存储系统,所述存储系统包括多级哈希Hash表,所述多级哈希表用于存储数据,所述多级哈希表包括第N级哈希表和第N+1级哈希表,所述N≥0且所述N为整数,所述装置包括处理单元和存储单元,所述存储单元用于存储所述多级哈希表,所述处理单元用于:
从所述第N+1级哈希表包括的多个位置中确定负载最小的位置为目标位置,所述多个位置为第一哈希数据在第N级哈希表中的候选位置在所述第N+1级哈希表中对应的位置,所述第一哈希数据为待插入所述第N级哈希表中的哈希数据;
将所述第N级哈希表中的第二哈希数据迁移至所述目标位置,其中,所述第二哈希数据为所述目标位置在所述第N级哈希表中对应的位置存储的哈希数据;
将所述第一哈希数据插入所述候选位置。
7.根据权利要求6所述的装置,其特征在于,所述处理单元具体用于:
从所述多个位置中确定第一位置,其中,所述第一位置为所述多个位置中负载最大的位置;
将所述第一位置存储的第三哈希数据迁移至所述多级哈希表中的第N+2级哈希表;
确定所述第一位置为所述目标位置。
8.根据权利要求7所述的装置,其特征在于,所述处理单元具体用于:
当所述多个位置中的第二位置不能插入所述第二哈希数据时,从所述多个位置中确定所述第一位置,其中,所述第二位置为将所述第三哈希数据迁移至所述第N+2级哈希表之前所述多个位置中负载最小的位置。
9.根据权利要求6至8中任一项所述的装置,其特征在于,所述处理单元具体用于:
将所述第二哈希数据与所述目标位置存储的第四哈希数据合并后插入所述目标位置。
10.根据权利要求6至8中任一项所述的装置,其特征在于,所述处理单元还用于:
更新所述目标位置的负载值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/113705 WO2018120109A1 (zh) | 2016-12-30 | 2016-12-30 | 数据处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109076021A CN109076021A (zh) | 2018-12-21 |
CN109076021B true CN109076021B (zh) | 2020-09-11 |
Family
ID=62706806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680058640.5A Active CN109076021B (zh) | 2016-12-30 | 2016-12-30 | 数据处理的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109076021B (zh) |
WO (1) | WO2018120109A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800228B (zh) * | 2018-12-28 | 2023-03-10 | 深圳竹云科技有限公司 | 一种高效快速解决hash冲突的方法 |
CN109828966A (zh) * | 2019-01-17 | 2019-05-31 | 平安科技(深圳)有限公司 | 渐进式重哈希方法、装置、计算机设备及存储介质 |
CN111857982B (zh) * | 2019-04-25 | 2023-10-27 | 浙江大学 | 一种数据处理方法及其装置 |
CN110688219B (zh) * | 2019-09-05 | 2022-03-18 | 浙江理工大学 | 基于反向混沌布谷鸟搜索的自适应权重负载均衡算法 |
CN111953682A (zh) * | 2020-08-11 | 2020-11-17 | 北京八分量信息科技有限公司 | 银行云计算门户网站页面的防篡改方法、装置及相关产品 |
CN112612419B (zh) * | 2020-12-25 | 2022-10-25 | 西安交通大学 | Nvm的数据存储结构、存储方法、读取方法、设备及介质 |
CN113141317B (zh) * | 2021-03-05 | 2022-09-30 | 西安电子科技大学 | 流媒体服务器负载均衡方法、系统、计算机设备、终端 |
CN114661680B (zh) * | 2022-05-25 | 2022-08-12 | 蓝象智联(杭州)科技有限公司 | 一种私有数据隐匿共享方法 |
CN116401258B (zh) * | 2023-06-06 | 2023-09-22 | 支付宝(杭州)信息技术有限公司 | 数据索引方法、数据查询方法及对应装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151708A (en) * | 1997-12-19 | 2000-11-21 | Microsoft Corporation | Determining program update availability via set intersection over a sub-optical pathway |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
CN101674234A (zh) * | 2009-08-21 | 2010-03-17 | 曙光信息产业(北京)有限公司 | Ip报文的分片重组方法和装置 |
CN102754394A (zh) * | 2010-08-19 | 2012-10-24 | 华为技术有限公司 | 一种哈希表存储、查找方法以及装置 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1184775C (zh) * | 2002-02-07 | 2005-01-12 | 华为技术有限公司 | 多哈希函数的虚通道标识/虚通路标识的查找方法 |
US7571484B2 (en) * | 2003-12-04 | 2009-08-04 | Microsoft Corporation | System and method for image authentication of a resource-sparing operating system |
CN101267381B (zh) * | 2007-03-13 | 2010-12-29 | 大唐移动通信设备有限公司 | 哈希表操作方法及装置 |
CN102073733B (zh) * | 2011-01-19 | 2014-08-13 | 中兴通讯股份有限公司 | 哈希表管理方法及装置 |
CN103581024A (zh) * | 2013-11-21 | 2014-02-12 | 盛科网络(苏州)有限公司 | Mac地址硬件与软件相结合的学习方法及装置 |
-
2016
- 2016-12-30 WO PCT/CN2016/113705 patent/WO2018120109A1/zh active Application Filing
- 2016-12-30 CN CN201680058640.5A patent/CN109076021B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151708A (en) * | 1997-12-19 | 2000-11-21 | Microsoft Corporation | Determining program update availability via set intersection over a sub-optical pathway |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
CN101674234A (zh) * | 2009-08-21 | 2010-03-17 | 曙光信息产业(北京)有限公司 | Ip报文的分片重组方法和装置 |
CN102754394A (zh) * | 2010-08-19 | 2012-10-24 | 华为技术有限公司 | 一种哈希表存储、查找方法以及装置 |
CN105447059A (zh) * | 2014-09-29 | 2016-03-30 | 华为技术有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018120109A1 (zh) | 2018-07-05 |
CN109076021A (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109076021B (zh) | 数据处理的方法和装置 | |
CN109416694B (zh) | 包括资源有效索引的键值存储系统 | |
US10552378B2 (en) | Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset | |
CN111552692B (zh) | 一种加减法布谷鸟过滤器 | |
CN108228646B (zh) | 用于访问数据的方法和电子设备 | |
US20190057090A1 (en) | Method and device of storing data object | |
KR20090048624A (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
US10331662B2 (en) | Dynamic column synopsis for analytical databases | |
CN112395322B (zh) | 一种基于分级缓存的列表数据显示方法、装置及终端设备 | |
CN109690522B (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
CN111427885B (zh) | 基于查找表的数据库管理方法和装置 | |
CN114579561A (zh) | 数据处理方法和装置、存储介质 | |
KR20130049117A (ko) | 메모리 기반의 서머리 벡터를 구비한 인덱스 구조의 데이터 검색 장치 및 방법 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
CN116048396B (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN109992535B (zh) | 一种存储控制方法、装置和系统 | |
CN114385636A (zh) | 持久内存动态哈希索引方法、系统、设备及存储介质 | |
CN111143232B (zh) | 用于存储元数据的方法、设备和计算机可读介质 | |
US10339066B2 (en) | Open-addressing probing barrier | |
CN116450591B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN114281248B (zh) | 一种提升ram读写性能的方法、电子设备及介质 | |
KR20230092443A (ko) | 다중 버전 동시성제어 데이터베이스 시스템에서 신속한 데이터 버전 탐색 방법 및 장치 | |
Feltham et al. | Adapting linear hashing for flash memory resource-constrained embedded devices |
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 |