CN102880628B - 哈希数据存储方法和装置 - Google Patents
哈希数据存储方法和装置 Download PDFInfo
- Publication number
- CN102880628B CN102880628B CN201210199209.6A CN201210199209A CN102880628B CN 102880628 B CN102880628 B CN 102880628B CN 201210199209 A CN201210199209 A CN 201210199209A CN 102880628 B CN102880628 B CN 102880628B
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- memory location
- hash
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种哈希数据存储方法和装置,方法包括:采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中;当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行迭代递归存储处理;本发明还提供了一种哈希数据存储装置。本发明可以有效减少哈希冲突,提高了资源的使用效率。
Description
技术领域
本发明涉及通信技术,尤其涉及一种哈希数据存储方法和装置。
背景技术
散列(Hash)算法通常也称之为哈希算法,通过hash算法将任意长度的输入变换成固定长度的输出,该输出便是散列值。这种转换是一种压缩映射,即散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,因此不可能通过散列值来唯一确定输入值。哈希算法可以用于多种操作,如身份验证、通信领域中的目的地址匹配等过程。根据设定的哈希函数和冲突处理方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,其中的存储位置称为哈希地址或散列地址。哈希表作为一种线性数据结构,与表格和队列相比,查找速度较快。
现有技术中存在各种各样的哈希算法,可以优化数据查找速度;然而,现有技术中的哈希算法通常存在哈希冲突,无法有效减少哈希冲突,从而影响资源的使用效率。
发明内容
本发明提供一种哈希数据存储方法和装置,有效减少哈希冲突,提高资源的使用效率。
本发明的第一个方面是提供一种哈希数据存储方法,包括:
采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;
当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;
当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。
本发明的另一个方面是提供一种哈希数据存储装置,包括:
哈希处理模块,用于采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;
第一存储模块,用于当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;
第二存储模块,用于当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。
本发明的技术效果是:通过采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中,当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行迭代递归存储处理;本发明利用多种哈希算法来生成待存储数据的多个存储位置,从而可以有效减少哈希冲突,提高了资源的使用效率。
附图说明
图1为本发明哈希数据存储方法实施例一的流程图;
图2为本发明哈希数据存储方法实施例二的流程图;
图3为本发明哈希数据存储方法实施例二中的数据存储过程示意图一;
图4为本发明哈希数据存储方法实施例二中的数据存储过程示意图二;
图5为本发明哈希数据存储方法实施例二中的数据存储过程示意图三;
图6为本发明哈希数据存储装置实施例一的结构示意图;
图7为本发明哈希数据存储装置实施例二的结构示意图。
具体实施方式
图1为本发明哈希数据存储方法实施例一的流程图,如图1所示,本实施例提供了一种哈希数据存储方法,可以具体包括如下步骤:
步骤101,采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值。
本实施例为了有效减少哈希冲突,利用多种哈希算法来对数据进行存储。本步骤为采用至少两种哈希算法分别对待存储数据进行哈希处理,此处的至少两种哈希算法可以具体采用现有的各种哈希算法,通过至少两种哈希算法对待存储数据进行哈希处理,分别得到待存储数据的至少两个哈希值,此处的各哈希值分别与各哈希算法相对应。即通过一个哈希算法计算得到待存储数据的一个哈希值,通过至少两个哈希算法计算得到待存储数据的至少两个哈希值,具体每个哈希算法的哈希处理过程可以采用该哈希算法的现有哈希机制,此处不再一一赘述。对于已有的各哈希算法来说,可能不同哈希算法具体适用于不同的应用场景中,每个哈希算法在某个应用场景中可能有较好的散列效果,但其在其他应用场景中散列效果则较差,因此,本实施例综合多种哈希算法的优势来分别获取各哈希算法对应的哈希值。
步骤102,当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中。
由于通过上述步骤获取到了该待存储数据的多个哈希值,每个哈希值在存储空间中对应一个存储位置,因此待存储数据在存储空间中存在可以存储的多个存储位置。采用不同哈希算法对待存储数据进行哈希处理得到的不同哈希值,可能与其他已存储在存储空间中的已存储数据的哈希值相同,若两个数据的两个哈希值相同,则二者在存储时出现哈希冲突。为了避免这种哈希冲突,在本实施例中,在对每一个待存储数据进行存储时,均需要对该待存储数据的各存储位置进行哈希冲突判断,此处的待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置。在本实施例中,一个存储空间中包含有多个存储位置,通过哈希处理得到的各哈希值与这些存储位置具有对应关系,对应关系具体可以为哈希值与存储位置的序号的对应关系,二者可以相同,即哈希值代表存储位置的序号,例如,哈希值为2对应于存储空间中的第二个存储位置。
当待存储数据的各存储位置中存在一个或多个空闲的存储位置时,可以将该待存储数据存储在其中一个空闲的存储位置中。在本实施例中,当存储空间中的某个存储位置未存储有数据,则表明该存储位置空闲;当存储空间中的某个位置存储有数据,则表明该存储位置不空闲。在对待存储数据进行存储时,由于每个待存储数据均包含至少两个存储位置,则可以依次判断这些存储位置是否空闲,当某个存储位置空闲时,便可以直接将该待存储数据存储在该存储位置,其他存储位置可以暂不用判断。如果待存储数据为第一个需要存储在存储空间中的数据,则在该待存储数据存储之前,该存储空间中的各存储位置均空闲,可以将该待存储数据存储在其中任意一个存储位置。如果待存储数据不是第一个需要存储在存储空间中的数据,则在该待存储数据存储之前,需要先判断当前存储空间中其他数据的存储位置是否与其存储位置发生冲突。
步骤103,当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。
当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。通过对待存储数据的各存储位置进行上述判断后,当该待存储数据的各存储位置均不空闲时,即各存储位置中均被其他数据占据,此时则根据该待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况,对该待存储数据进行递归存储处理。
此处的递归存储处理可以具体为以待存储数据为递归存储过程中的第1层级的数据,通过哈希处理得到待存储数据的各存储位置,若待存储数据的各存储位置均不空闲,则获取到各存储位置当前存储的第一已存储数据;该第一已存储数据即为递归存储过程中的第2层级的数据,再获取对第一已存储数据进行哈希处理得到的各存储位置,若第一已存储数据的各存储位置均不空闲,则获取到各存储位置当前存储的第二已存储数据;该第二已存储数据为递归存储过程中的第3层的数据,若第二已存储数据的各存储位置也均不空闲,则可以将第二已存储数据作为上述第一已存储数据,继续获取下一层级的数据,并查找下一层级的数据的各存储位置;依次类推,对递归存储过程中各层级的数据的存储位置进行查找判断,最终将待存储数据存储在存储空间中。在本实施例中,为了提高数据存储效率,可以对整体递归次数进行限定,如设置递归次数阈值,若上述递归次数达到预设的递归次数阈值,则不再进行下一层级的查找判断,直接将该待存储数据进行丢弃处理。当然也可以不限定递归此时,则当存储空间中已不存在空闲的存储位置,则不管查找到哪个层级,均无法对数据进行移动,则将该待存储数据进行丢弃处理。其中,第一已存储数据的其他存储位置为第一已存储数据的其他哈希值对应的存储位置,此处的第一已存储数据具体指待存储数据的存储位置中已存储的数据,其只是为了与后续第二已存储数据作区分,并没有特别的含义。在本实施例中,存储在存储空间中的已存储数据也是采用上述过程进行存储的,即每个已存储数据在存储之前也需要采用至少两个哈希算法进行哈希处理,得到至少两个哈希值。具体地,本步骤为根据第一已存储数据的其他存储位置的存储情况,来存储该待存储数据,第一已存储数据的其他存储位置为,第一已存储数据的各存储位置中除其当前的存储位置之外的其他存储位置,存储情况具体指这些存储位置为空闲或不为空闲的情况。
具体地,本实施例中的上述步骤103具体可以包括下述各个步骤:当所述待存储数据的各存储位置均不空闲时,依次判断所述待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置;若所述待存储数据的各存储位置中一个或多个第一已存储数据的其他存储位置中存在空闲的存储位置,则将一个第一已存储数据迁移到所述第一已存储数据的空闲的存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置;若所述待存储数据的各存储位置中各第一已存储数据的其他存储位置均不空闲,则根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。
更具体地,本实施例中的上述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤可以具体包括如下步骤:依次判断所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置;若所述各第一已存储数据的各存储位置中一个或多个第二已存储数据的其他存储位置中存在空闲的存储位置,则将一个第二已存储数据迁移到所述第二已存储数据的空闲的存储位置,将所述第二已存储数据对应的第一已存储数据迁移到所述第二已存储数据的原存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置。
更进一步地,本实施例中的上述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤还可以包括如下步骤:若所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置均不空闲,则将所述第二已存储数据作为第一已存储数据,递归执行所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤,上述递归次数达到预设的递归次数阈值为止。
更进一步地,本实施例提供的哈希数据存储方法在上述步骤103之后,还可以包括如下步骤:采用数据存储时所使用的多个哈希算法分别对待查询数据进行哈希处理,获取所述待查询数据的多个哈希值,各哈希值分别与各哈希算法相对应;在所述待查询数据的各哈希值对应的存储空间中的存储位置分别查询所述待存储数据。
本实施例提供了一种哈希数据存储方法,通过采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中,当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行递归存储处理;本实施例利用多种哈希算法来生成待存储数据的多个存储位置,从而可以有效减少哈希冲突,提高了资源的使用效率。
图2为本发明哈希数据存储方法实施例二的流程图,如图2所示,本实施例提供了一种哈希数据存储方法,可以具体包括如下步骤:
步骤201,采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值。
本步骤为采用至少两种哈希算法分别对待存储数据进行哈希处理,分别得到待存储数据的至少两个哈希值,此处的各哈希值分别与各哈希算法相对应。对于已有的各哈希算法来说,可能不同哈希算法具体适用于不同的应用场景中,每个哈希算法在某个应用场景中可能有较好的散列效果,但其在其他应用场景中散列效果则较差,因此,本实施例综合多种哈希算法的优势来分别获取各哈希算法对应的哈希值。假设采用两种哈希算法A、B对待存储数据进行哈希处理,此处以待存储数据为IP地址为例进行说明,以IP地址作为哈希算法的键值(key),采用A算法、B算法分别对IP地址进行哈希处理,可以得到对应的哈希值,从而根据哈希值进行存储和查找。假设分别有两个不同的IP地址:P和Q需要存储在存储空间中;IP地址P经过A算法的哈希处理后得到哈希值为x1,经过B算法的哈希处理后得到哈希值为x2,即IP地址P的哈希值表示为(x1,x2);IP地址Q经过A算法的哈希处理后得到哈希值为y1,经过B算法的哈希处理后得到哈希值为y2,即IP地址Q的哈希值表示为(y1,y2)。
步骤202,判断待存储数据的各存储位置中是否存在空闲的存储位置,如果是,则执行步骤203,否则执行步骤204。
在获取到待存储数据的各哈希值后,由于本实施例中哈希值与存储空间中的存储位置相对应,则可以根据待存储数据的哈希值对该待存储数据进行存储处理。在进行待存储数据的存储之前,先判断待存储数据的各存储位置中是否存在空闲的存储位置,空闲的存储位置为存储空间中当前未存储数据的位置,如果该待存储数据的各存储空间中存在一个或多个空闲的存储位置,则执行步骤203,否则执行步骤204。具体可以按照待存储数据的哈希值的顺序进行查找判断,依次判断各存储位置是否为空闲。此处的待存储数据的存储位置为待存储数据的哈希值对应的存储位置,如图3所示为本发明哈希数据存储方法实施例二中的数据存储过程示意图一,图中节点P(x,y)表示数据P经过哈希算法的计算后得到的两个哈希值分别为x和y,这两个哈希值x和y分别与序号为x和y的存储位置相对应。本实施例中哈希值与存储位置的对应关系可以表现为,哈希值可以表示该数据在存储空间中可以存储的存储位置的序号,如图3中数据A的哈希值为1和5,则该数据A可以存储在序号为1或5的存储空间中。
步骤203,将待存储数据存储在一个空闲的存储位置中,并返回步骤201。
经过查找判断,若待存储数据的各存储位置中存在一个或多个空闲的存储位置,则将该待存储数据存储在其中一个空闲的存储位置中,并结束该待存储数据的存储流程,并返回步骤201,对下一个待存储数据进行存储处理。如图3所示,假设待存储数据为C,通过上述步骤201获取到待存储数据C的哈希值为(1,3),当前存储空间中已经在序号为1、2、4、5的四个存储位置存储有数据A(1,5)、数据B(2,7)、数据D(4,9)、数据E(5,12),以待存储数据C的哈希值的顺序进行查找判断,发现待存储数据C的哈希值“1”对应的存储位置已被数据A占据,则此次查找存储失败;再查找哈希值“3”对应的存储位置,发现哈希值“3”对应的存储位置处于空闲状态,则可以将待存储数据C直接存储在序号为3的存储位置,此次查找存储成功,并返回步骤201,对下一个待存储数据进行存储处理。
步骤204,依次判断待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置,如果是,则执行步骤205,否则执行步骤206。
经过查找判断,若待存储数据的各存储位置均不空闲,即待存储数据的各哈希值对应的各存储位置均被其他数据占据,则依次判断待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置,如果是,则执行步骤205,否则执行步骤206。其中,第一已存储数据的其他存储位置为第一已存储数据的其他哈希值对应的存储位置,此处的第一已存储数据具体指待存储数据的存储位置中已存储的数据,其只是为了与后续第二已存储数据作区分,并没有特别的含义。图4为本发明哈希数据存储方法实施例二中的数据存储过程示意图二,如图4所示,当存储完数据C后,对待存储数据F进行存储,经过上述步骤201的计算获取到待存储数据F的哈希值为(3,4),依照上述过程,先对哈希值“3”对应的存储位置进行查找判断,发现该存储位置已被数据C(1,3)占据,此次查找存储失败;继续对哈希值“4”对应的存储位置进行查找判断,发现该存储位置已被数据D(4,6)占据,此次查找存储也失败。此时,依次判断待存储数据F(3,4)的各存储位置中各第一已存储数据,即C(1,3)和D(4,6),的其他存储位置是否存在空闲的存储位置,如果存在,则执行步骤205,否则执行步骤206。
步骤205,将一个第一已存储数据迁移到所述第一已存储数据的空闲的存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置,并返回步骤201。
若待存储数据的各存储位置中一个或多个第一已存储数据的其他存储位置中存在空闲的存储位置,则将其中一个第一已存储数据迁移到第一已存储数据的空闲的存储位置,将待存储数据存储在第一已存储数据的原存储位置,并返回步骤201,对下一个待存储数据进行存储处理。在本实施例中,可以按照顺序对各第一已存储数据的其他存储位置进行查找判断,当查找到其中某一个第一已存储数据的其中一个其他存储位置空闲时,便可以将该第一已存储数据从原存储位置迁移到该空闲的存储位置,而无需再对该第一已存储数据的其他存储位置以及其他第一已存储数据的其他存储位置进行查找判断。继续参照上述图4,先对数据C(1,3)的其他存储位置进行查找判断,发现序号为3的存储位置已被自身占据,则无法进行数据移动;在对数据D(4,6)其他存储位置进行查找判断,发现序号为6的存储位置为空闲,则将数据D(4,6)从其原存储位置前移到序号为6的存储位置,然后便可以将待存储数据F(3,4)存储到数据D(4,6)的原存储位置,此次查找存储成功,并返回步骤201,对下一个待存储数据进行存储处理。
步骤206,依次判断各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置,如果是,则执行步骤207,否则执行步骤208。
经过上述对各第一已存储数据的其他存储位置的查找判断,若该待存储数据的各存储位置中各第一已存储数据的其他存储位置均不空闲,即各第一已存储数据的其他存储位置也已被其他数据占据,则继续尝试移动第一已存储数据的存储位置中的第二已存储数据,即依次判断各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置,如果是,则执行步骤207,否则执行步骤208。其中,第二已存储数据的其他存储位置为第二已存储数据的其他哈希值对应的存储位置,此处的第二已存储数据具体指上述第一已存储数据的存储位置中已存储的数据,其只是为了与上述第一已存储数据作区分,并没有特别的含义。图5为本发明哈希数据存储方法实施例二中的数据存储过程示意图三,如图5所示,当完成数据C和数据F的存储后,对待存储数据G进行存储,经过上述步骤201的计算获取到待存储数据G的哈希值为(4,2),依照上述过程,先对哈希值“4”对应的存储位置进行查找判断,发现该存储位置已被数据F(3,4)占据,此次查找存储失败;继续对哈希值“2”对应的存储位置进行查找判断,发现该存储位置已被数据B(2,7)占据,此次查找存储也失败。此时,依次判断待存储数据G(4,2)的各存储位置中各第一已存储数据,即F(3,4)和B(2,7),的其他存储位置是否存在空闲的存储位置;先对第一已存储数据F(3,4)的其他存储位置进行查找判断,发现序号为4的存储位置被其自身占据,此次查找存储失败;再对第一已存储数据B(2,7)的其他存储位置进行查找判断,发现序号为7的存储位置被数据H(8,7)占据,此次查找存储失败。此时则递归尝试移走第一已存储数据的存储位置中的第二已存储数据,即依次判断各第一已存储数据F(3,4)和B(2,7)的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置,其中,第一已存储数据F(3,4)的各存储位置中的第二已存储数据为其自身,第一已存储数据B(2,7)的各存储位置中的第二已存储数据还包括H(8,7),则现在只需第二已存储数据H(8,7)的其他存储位置中是否存在空闲的存储位置,判断如果是,则执行步骤207,否则执行步骤208。
步骤207,将一个第二已存储数据迁移到第二已存储数据的空闲的存储位置,将第二已存储数据对应的第一已存储数据迁移到第二已存储数据的原存储位置,将待存储数据存储在第一已存储数据的原存储位置,并返回步骤201。
若一个或多个第一已存储数据的其他存储位置中一个或多个第二已存储数据的其他存储位置中存在空闲的存储位置,则将一个第二已存储数据迁移到第二已存储数据的空闲的存储位置,将第二已存储数据对应的第一已存储数据迁移到第二已存储数据的原存储位置,将待存储数据存储在第一已存储数据的原存储位置,并返回步骤201,继续对下一个待存储数据进行存储处理。继续参照上述图5,待存储数据G(4,2)的存储位置中的第一已存储数据F(3,4)的其他存储位置中不包含第二已存储数据,待存储数据G(4,2)的存储位置中的第一已存储数据B(2,7)的其他存储位置中的第二已存储数据为H(8,7),通过查找判断,第二已存储数据H(8,7)的其他存储位置存在空闲的存储位置,即序号为8的存储位置,此时则先将该第二已存储数据H(8,7)迁移到该空闲的存储位置,即序号为8的存储位置,然后将对应于该第二已存储数据H(8,7)的第一已存储数据B(2,7)迁移到第二已存储数据H(8,7)的原存储位置,即序号为7的存储位置,再将待存储数据G(4,2)存储到第一已存储数据B(2,7)的原存储位置,即序号为2的存储位置,此次查找存储成功,并返回步骤201,对下一个待存储数据进行存储处理。
步骤208,丢弃所述待存储数据,并返回步骤201。
本实施例以进行两次递归查找和移动为例对本发明的方案进行说明,即若各第一已存储数据的各存储位置中各第二已存储数据的其他存储位置均不空闲,表明当前存储空间可能已满或接近满,同时为了避免因递归查找次数多导致查找存储的性能降低,则不再继续移动第二已存储数据的各存储位置中的已存储数据,可以直接丢弃该待存储数据。
进一步地,当通过上述各个步骤完成对各待存储数据的存储后,本实施例还可以包括在已存储有数据的存储空间中查找待查询数据的步骤。具体地,在进行数据查询时,先采用上述步骤201中数据存储时所使用的多个哈希算法分别对待查询数据进行哈希处理,获取待查询数据的多个哈希值,各哈希值分别与各哈希算法相对应。然后直接在该待查询数据的各哈希值对应的存储空间中的存储位置分别查询待存储数据,若在各存储位置查询到待存储数据,则表明数据查询成功,否则数据查询失败。在上述数据存储过程中,对于每个待存储数据来说,其只可能存储在其哈希值对应的存储位置,因此在后续查询过程中只需在其对应的存储位置进行查找,无需查找其他位置,因此可以提高数据查找速度。
本实施例提供了一种哈希数据存储方法,通过采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中,当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行递归存储处理;本实施例利用多种哈希算法来生成待存储数据的多个存储位置,当其存储位置与已存储数据的存储位置出现冲突,通过迭代查找和数据移动来克服出现的冲突,从而可以有效减少哈希冲突,提高了资源的使用效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图6为本发明哈希数据存储装置实施例一的结构示意图,如图6所示,本实施例提供了一种哈希数据存储装置,可以具体执行上述方法实施例一中的各个步骤,此处不再赘述。本实施例提供的哈希数据存储装置可以具体包括第一哈希处理模块601、第一存储模块602和第二存储模块603。其中,第一哈希处理模块601用于采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应。第一存储模块602用于当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置。第二存储模块603用于当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。
图7为本发明哈希数据存储装置实施例二的结构示意图,如图7所示,本实施例提供了一种哈希数据存储装置,可以具体执行上述方法实施例二中的各个步骤,此处不再赘述。本实施例提供的哈希数据存储装置在上述图6所示的基础之上,第二存储模块603可以具体包括判断单元613、第一存储单元623和第二存储单元633。其中,判断单元613用于当所述待存储数据的各存储位置均不空闲时,依次判断所述待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置。第一存储单元623用于若判断单元613的判断结果为所述待存储数据的各存储位置中一个或多个第一已存储数据的其他存储位置中存在空闲的存储位置,则将一个第一已存储数据迁移到所述第一已存储数据的空闲的存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置。第二存储单元633用于若判断单元613的判断结果为所述待存储数据的各存储位置中各第一已存储数据的其他存储位置均不空闲,则根据所述各第一已存储数据的各存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行存储处理。
具体地,本实施例中的第二存储单元633可以具体包括判断子单元6331和第一存储子单元6332。其中,判断子单元6331用于依次判断所述各第一已存储数据的各存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置。第一存储子单元6332用于若所述判断子单元的判断结果为所述各第一已存储数据的各存储位置中一个或多个第二已存储数据的其他存储位置中存在空闲的存储位置,则将一个第二已存储数据迁移到所述第二已存储数据的空闲的存储位置,将所述第二已存储数据对应的第一已存储数据迁移到所述第二已存储数据的原存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置。
进一步地,本实施例中的第二存储单元633还可以包括第二存储子单元6333。第二存储子单元6333用于若所述判断子单元的判断结果为所述各第一已存储数据的各存储位置中各第二已存储数据的其他存储位置均不空闲,则将所述第二已存储数据作为第一已存储数据,递归执行所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤,上述递归次数达到预设的递归次数阈值为止。
更进一步地,本实施例提供的哈希数据存储装置还可以包括第二哈希处理模块604和查询模块605。其中,第二哈希处理模块604用于在所述根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理之后,采用所述第一哈希处理模块所使用的多个哈希算法分别对待查询数据进行哈希处理,获取所述待查询数据的多个哈希值,各哈希值分别与各哈希算法相对应。查询模块605用于在所述待查询数据的各哈希值对应的存储空间中的存储位置分别查询所述待存储数据。
本实施例提供了一种哈希数据存储装置,通过采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中,当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行存储处理;本实施例利用多种哈希算法来生成待存储数据的多个存储位置,当其存储位置与已存储数据的存储位置出现冲突,通过迭代查找和数据移动来克服出现的冲突,从而可以有效减少哈希冲突,提高了资源的使用效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种哈希数据存储方法,其特征在于,包括:
采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;
当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;
当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置;
所述根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理包括:
依次判断所述待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置;
若所述待存储数据的各存储位置中一个或多个第一已存储数据的其他存储位置中存在空闲的存储位置,则将一个第一已存储数据迁移到所述第一已存储数据的空闲的存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置;
若所述待存储数据的各存储位置中各第一已存储数据的其他存储位置均不空闲,则根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理包括:
依次判断所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置;
若所述各第一已存储数据的各存储位置中一个或多个第二已存储数据的其他存储位置中存在空闲的存储位置,则将一个第二已存储数据迁移到所述第二已存储数据的空闲的存储位置,将所述第二已存储数据对应的第一已存储数据迁移到所述第二已存储数据的原存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置。
3.根据权利要求2所述的方法,其特征在于,所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理还包括:
若所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置均不空闲,则将所述第二已存储数据作为第一已存储数据,递归执行所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤,直到上述递归次数达到预设的递归次数阈值为止。
4.权利要求1-3中任一项所述的方法,其特征在于,在所述根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理之后,还包括:
采用数据存储时所使用的多个哈希算法分别对待查询数据进行哈希处理,获取所述待查询数据的多个哈希值,各哈希值分别与各哈希算法相对应;
在所述待查询数据的各哈希值对应的存储空间中的存储位置分别查询所述待存储数据。
5.一种哈希数据存储装置,其特征在于,包括:
第一哈希处理模块,用于采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;
第一存储模块,用于当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;
第二存储模块,用于当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置;
所述第二存储模块包括:
判断单元,用于当所述待存储数据的各存储位置均不空闲时,依次判断所述待存储数据的各存储位置中各第一已存储数据的其他存储位置中是否存在空闲的存储位置;
第一存储单元,用于若所述判断单元的判断结果为所述待存储数据的各存储位置中一个或多个第一已存储数据的其他存储位置中存在空闲的存储位置,则将一个第一已存储数据迁移到所述第一已存储数据的空闲的存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置;
第二存储单元,用于若所述判断单元的判断结果为所述待存储数据的各存储位置中各第一已存储数据的其他存储位置均不空闲,则根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行存储处理。
6.根据权利要求5所述的装置,其特征在于,所述第二存储单元包括:
判断子单元,用于依次判断所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置中是否存在空闲的存储位置;
第一存储子单元,用于若所述判断子单元的判断结果为所述各第一已存储数据的各存储位置中一个或多个第二已存储数据的其他存储位置中存在空闲的存储位置,则将一个第二已存储数据迁移到所述第二已存储数据的空闲的存储位置,将所述第二已存储数据对应的第一已存储数据迁移到所述第二已存储数据的原存储位置,将所述待存储数据存储在所述第一已存储数据的原存储位置。
7.根据权利要求6所述的装置,其特征在于,所述第二存储单元还包括:
第二存储子单元,用于若所述判断子单元的判断结果为所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置均不空闲,则将所述第二已存储数据作为第一已存储数据,递归执行所述根据所述各第一已存储数据的其他存储位置中各第二已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理的步骤,直到上述递归次数达到预设的递归次数阈值为止。
8.根据权利要求5-7中任一项所述的装置,其特征在于,还包括:
第二哈希处理模块,用于在所述根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理之后,采用所述第一哈希处理模块所使用的多个哈希算法分别对待查询数据进行哈希处理,获取所述待查询数据的多个哈希值,各哈希值分别与各哈希算法相对应;
查询模块,用于在所述待查询数据的各哈希值对应的存储空间中的存储位置分别查询所述待存储数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210199209.6A CN102880628B (zh) | 2012-06-15 | 2012-06-15 | 哈希数据存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210199209.6A CN102880628B (zh) | 2012-06-15 | 2012-06-15 | 哈希数据存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880628A CN102880628A (zh) | 2013-01-16 |
CN102880628B true CN102880628B (zh) | 2015-02-25 |
Family
ID=47481954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210199209.6A Active CN102880628B (zh) | 2012-06-15 | 2012-06-15 | 哈希数据存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880628B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6025149B2 (ja) * | 2013-11-06 | 2016-11-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データを管理するシステムおよび方法 |
CN104298899A (zh) * | 2014-08-29 | 2015-01-21 | 苏州蓝恩信息科技有限公司 | 基于文件摘要信息对电子数据进行手写签名的方法 |
CN105760413B (zh) * | 2015-12-07 | 2018-10-23 | 重庆川仪自动化股份有限公司 | 基于哈希表的rfid数据在mes***中的管理方法 |
CN106202548B (zh) * | 2016-07-25 | 2018-09-04 | 网易(杭州)网络有限公司 | 数据存储方法、查找方法及装置 |
CN106528670A (zh) * | 2016-10-31 | 2017-03-22 | 盛科网络(苏州)有限公司 | 一种减少Hash查找冲突的方法 |
CN108874803B (zh) * | 2017-05-09 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置及存储介质 |
CN108985057B (zh) * | 2018-06-27 | 2022-07-22 | 平安科技(深圳)有限公司 | 一种webshell检测方法及相关设备 |
CN110750508A (zh) * | 2019-09-27 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种数据存储方法与装置 |
CN111158590B (zh) * | 2019-12-17 | 2021-07-06 | 苏州浪潮智能科技有限公司 | 一种解决哈希冲突的方法和设备 |
US11636224B2 (en) | 2019-12-19 | 2023-04-25 | Micro Focus Llc | Generating hash values for input strings |
CN111143288A (zh) * | 2019-12-22 | 2020-05-12 | 北京浪潮数据技术有限公司 | 一种数据存储方法、***及相关装置 |
US11789636B2 (en) | 2021-09-13 | 2023-10-17 | International Business Machines Corporation | Ensuring sufficient space is available on target volumes before performing a point-in-time copy job |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043695A (zh) * | 2006-03-23 | 2007-09-26 | 上海宇梦通信科技有限公司 | 一种在移动通信***内存储和维护用户设备信息的方法 |
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、***及数据缓存装置 |
CN101996217A (zh) * | 2009-08-24 | 2011-03-30 | 华为技术有限公司 | 一种存储数据的方法及其存储设备 |
-
2012
- 2012-06-15 CN CN201210199209.6A patent/CN102880628B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101043695A (zh) * | 2006-03-23 | 2007-09-26 | 上海宇梦通信科技有限公司 | 一种在移动通信***内存储和维护用户设备信息的方法 |
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、***及数据缓存装置 |
CN101996217A (zh) * | 2009-08-24 | 2011-03-30 | 华为技术有限公司 | 一种存储数据的方法及其存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102880628A (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102880628B (zh) | 哈希数据存储方法和装置 | |
CN108846133B (zh) | 基于b-m树的区块链存储结构、b-m树建立算法及查找算法 | |
EP3432157B1 (en) | Data table joining mode processing method and apparatus | |
CN101594319B (zh) | 表项查找方法和装置 | |
US20110016142A1 (en) | Method and apparatus for creating pattern matching state machine and identifying pattern | |
US9294390B2 (en) | Hash table storage and search methods and devices | |
WO2019160128A1 (ja) | ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード | |
CN111083179B (zh) | 物联网云平台、基于物联网云平台的设备交互方法及装置 | |
CN101604337A (zh) | 一种哈希表项存储、查找装置及方法 | |
CN106951179B (zh) | 一种数据迁移方法及装置 | |
CN102420771B (zh) | 高速网络环境中提高tcp并发连接速度的方法 | |
US20130159347A1 (en) | Automatic and dynamic design of cache groups | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN106341280A (zh) | 业务处理方法和装置 | |
CN102187642B (zh) | 在哈希表中添加、查找或删除键值的方法及装置 | |
JP6951846B2 (ja) | 計算機システム及びタスクの割当方法 | |
CN112148738A (zh) | 哈希冲突处理方法及*** | |
CN102427420B (zh) | 基于图模式匹配的虚拟网络映射方法及装置 | |
CN112380004B (zh) | 内存管理方法、装置、计算机可读存储介质及电子设备 | |
CN112165505B (zh) | 去中心化的数据处理方法、电子装置和存储介质 | |
CN106878185B (zh) | 一种报文ip地址匹配电路及方法 | |
KR102620584B1 (ko) | 블록체인 기반 시스템에서 상태 db의 무결성을 보장하는 장치 및 그 방법 | |
CN109062694B (zh) | 一种将应用程序迁移到云平台的方法 | |
CN110555158A (zh) | 互斥数据处理方法及***、计算机可读存储介质 | |
US11063869B2 (en) | ARP table management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |