一种基于多维哈希表的数据查找方法、终端设备及存储介质与流程

文档序号:13804957阅读:160来源:国知局

本发明涉及计算机技术存储技术领域,尤其涉及一种基于多维哈希表的数据查找方法、终端设备及存储介质。



背景技术:

随着数字信息量的爆炸式增长,数据占用空间越来越大,在过去的10年里,很多行业提供的存储系统容量从数十gb发展到数百tb,甚至数pb,足足翻了10,000多倍。在高性能计算领域,fpga以低功耗、高传输的优势得到广泛应用,但是由于逻辑资源的限制,没办法对大量的数据进行查找。而cpu因为计算性能不够,完全满足不了高性能计算应用场合。gpu虽然在一定程度上可以满足高性能计算需求,但它功耗高,而且也只能处理“中高”性能应用场合,对于完全高速场合而已,gpu也没办法满足需求,为了缩减数据占用空间,降低成本、最大程度的利用已有资源,采用的方法为数据进行哈希运算,哈希表是一种应用广泛的数据结构,它解决了在有限程序空间内容纳总数有限,但索引取值范围非常大的数据项的设计要求,但其本身存在哈希冲突的问题,即哈希运算是多对一的,即多个数据对应一个运算结果。



技术实现要素:

本发明旨在提供一种基于多维哈希表的数据查找方法、终端设备及存储介质,通过将一个数据分成多个子数据,对子数据进行多重运算后将其结果进行哈希运算得到对应的多个哈希表,然后遍历所有哈希表来查找数据。

具体方案如下:

一种基于多维哈希表的数据查找方法,包括以下步骤:

s10:将数据按照其在地址空间内的顺序线性的均分为n个子数据,所有子数据占据相同的地址空间;

s20:将每个数据对应的子数据进行i(i为整数,且i>1)次运算,所述运算的算法为常用数学运算算法或逻辑运算算法,其参数包括所有子数据,所述i个运算结果分别对应i个有效特征值;

s30:将上述i个有效特征值分别进行哈希运算得到相应的哈希表;

s40:按顺序分别查询i个哈希表内是否处在对应的i个运算结果,当某个哈希表内不存在对应的某个运算结果时,将该数据丢弃,如果均存在,则该数据为所查找数据。

进一步的,所述以m为8的正整数倍,n为能整除m的数。

进一步的,所述有效特征值的选择为选取每个运算结果中固定的a位有效位作为有效特征值。

进一步的,所述a的设定需要综合考虑数据存储空间的大小以及哈希表最大规模,以避免哈希冲突。

进一步的,所述哈希运算为md5运算。

一种基于多维哈希表的数据查找终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于多维哈希表的数据查找方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于多维哈希表的数据查找方法的步骤。

本发明采用如上技术方案,通过对数据进行分组并进行多重运算,将一个数据所对应的一个哈希值变为一个数据对应多个哈希值,通过分别查找多个哈希值来查找数据,这样不仅可以解决数据存储介质逻辑资源有限的问题,也可以提升处理器的处理性能,在现有的技术条件下,有很好的应用前景。

附图说明

图1所示为本发明实施例一的流程示意图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

现结合附图和具体实施方式对本发明进一步说明。

实施例一

本发明实施例一提供了一种基于多维哈希表的数据查找方法,如图1所示,其为本发明实施例一所述的基于多维哈希表的数据查找方法的流程示意图,所述方法可包括以下步骤:

s10:将数据按照其在地址空间内的顺序线性的均分为n个子数据,分别用v1,v2,v3……vn(n为正整数)表示,所有子数据占据相同的地址空间。

设定所述数据在存储空间内的所占地址为m位,由于一个字节为8位,数据在地址中存放以字节为单位,且最少占用一个字节,所以m为8的正整数倍。

该实施例中,数据存储空间内的数据均为16字节的数据,将每个16字节的数据分成各占4字节(4×8=32位)的四个子数据,分为别v1,v2,v3、v4,其中v1,v2,v3、v4分别对应的数据从高到低按顺序排列,即v1对应高32位数据,v4对应低32位数据。

该实施例中,为了能使数据被均分,n设置为能整除m的数。

s20:将每个数据对应的子数据进行i(i为整数,且i>1)次运算,运算结果分别记为s1、s2、s3……si。所述运算的算法为常用数学运算算法或逻辑运算算法,其参数包括所有子数据,所述i个运算结果分别对应i个有效特征值。

该实施例中,设定i=6,运算算法包括:

1)v1+v2+v3+v4=s1

2)v1+v2-v3-v4=s2

3)v1&v2&v3&v4=s3

4)v1|v2&v3&v4=s4

5)v1|v2|v3&v4=s5

6)v1|v2|v3|v4=s6

为了提高数据查找的效率,所述有效特征值的选择为选取每个运算结果中固定的a位有效位作为有效特征值,所述a的设定需要综合考虑数据存储空间的大小以及哈希表最大规模,以避免哈希冲突,设定过大会造成存储空间不足,设定过小容易造成哈希冲突,该实施例中取每个运算结果的低15位为有效特征值,则哈希表的大小为2的15次方,即32768,我们可以在哈希表中保存32768条数据的记录。

s30:将上述i个有效特征值分别进行哈希运算得到相应的哈希表,分别为q1、q2、q3……qi。

所述哈希运算为常用哈希运算,可以包括md5、sha1等哈希运算,哈希运算是将任意长度的二进制值映射为较短的固定长度的二进制值,映射完的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式。该实施例中采用md5哈希运算。

所述哈希表为一个有限的连续的地址集,用于存放映射完的哈希值。

s40:按顺序分别查询哈希表q1、q2、q3……qi内是否处在对应的子数据运算结果s1、s2、s3……si,当某一哈希表内不存在对应子数据运算结果时,将该数据丢弃,如果均存在,则该数据为所查找数据。

该发明实施例一通过对数据进行分组并进行多重运算,将一个数据所对应的一个哈希值变为一个数据对应多个哈希值,通过分别查找多个哈希值来查找数据,这样不仅可以解决数据存储介质逻辑资源有限的问题,也可以提升处理器的处理性能,在现有的技术条件下,有很好的应用前景。

实施例二:

本发明还提供一种基于多维哈希表的数据查找终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述方法实施例中的步骤,例如图1所示的步骤s10-s40的方法步骤。

进一步地,作为一个可执行方案,所述基于多维哈希表的数据查找终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于多维哈希表的数据查找终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述基于多维哈希表的数据查找终端设备的组成结构仅仅是基于多维哈希表的数据查找终端设备的示例,并不构成对基于多维哈希表的数据查找终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于多维哈希表的数据查找终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。

进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述基于多维哈希表的数据查找终端设备的控制中心,利用各种接口和线路连接整个基于多维哈希表的数据查找终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于多维哈希表的数据查找终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。

所述基于多维哈希表的数据查找终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1