基于低位哈希标签的存储方法、系统、终端及存储介质与流程

文档序号:26139645发布日期:2021-08-03 14:23阅读:89来源:国知局
基于低位哈希标签的存储方法、系统、终端及存储介质与流程

本发明涉及大数据存储技术领域,具体涉及一种基于低位哈希标签的存储方法、系统、终端及存储介质。



背景技术:

随着大数据、ai、区块链等前沿科学技术的迅速发展,催生了数据爆发式的增长,海量数据将对现有的存储设备带来巨大的压力。随着云计算对传统计算架构的替代,数据存储的结构也在发生变化,计算资源和存储资源将进一步向头部的数据中心聚合,进一步给服务器存储带来压力。面对这些持续增加的海量数据,数据压缩成为减轻服务器存储负担,降低存储成本的有效方法之一。

数据压缩主要体现在重复冗余数据的压缩处理,可分为两步实现:

1,查找重复数据,判断前文中是否有与当前数据相同的段落,并得到前文的地址。

2,表征重复数据,按照一定的规则表示重复数据,通常利用游程编码表征。

因此硬件电路实现数据压缩,需要对当前字段之前一定长度的前文缓存。通常将前文划分为若干个字段,将每个字段的信息独立缓存,需要存储的信息:字段的文字内容和字段的偏移地址。

目前主流的数据压缩算法(lz77,lz4,deflate,gzip等)都是基于hash计算查找重复数据。其实现原理:计算当前字段x的hash值h(x),以h(x)为索引在查询hash表是否存在与当前字段相同的前文字段(即数据重复),如果有重复数据,记录所有重复数据的地址。

hash计算的作用对字段进行分类,可以加速查找重复的流程,因此会把字段按照依据hash值分类存储(即hash表)。

基于当前主流存储方案,假设字段x由n个byte构成,保存字段x的原文需要n=8*nbits。由于前文数据已按照hash值分类存储,hash值由原文通过公式计算得到,x的hash值可以表述h(x)当前的存储方案,看似保存的是原文信息,但从实质上讲是用<h(x),x>来表征x的原文,即用(n+m)bits的标签来描述一个mbits的字段。从信息论角度来看,当前的存储方案,无疑存在信息冗余,理论上有mbits的信息冗余,因此很有必要找到一种高效的存储方案,替代当前的原文的存储方案,这样可以减少存储空间。



技术实现要素:

针对现有技术的上述不足,本发明提供一种基于低位哈希标签的存储方法、系统、终端及存储介质,以解决上述技术问题。

第一方面,本发明提供一种基于低位哈希标签的存储方法,包括:

计算待存储数据的全息哈希值;

将所述全息哈希值的低位信息作为所述待存储数据的标签保存至数据表;

将所述全息哈希值的高位信息作为所述标签的存储索引值。

进一步的,所述方法还包括:

设置所述标签的哈希位宽为理论最小值32。

进一步的,所述方法还包括:

根据目标存储索引值查找目标数据的目标标签;

根据目标存储索引值和目标标签还原目标数据的目标全息哈希值;

根据所述目标全息哈希值逆向计算目标数据。

第二方面,本发明提供一种基于低位哈希标签的存储系统,包括:

哈希计算单元,配置用于计算待存储数据的全息哈希值;

索引确定单元,配置用于将所述全息哈希值的低位信息作为所述待存储数据的标签保存至数据表;

标签保存单元,配置用于将所述全息哈希值的高位信息作为所述标签的存储索引值。

进一步的,所述系统还包括:

位宽设置单元,配置用于设置所述标签的哈希位宽为理论最小值32。

进一步的,所述系统还包括:

标签查找单元,配置用于根据目标存储索引值查找目标数据的目标标签;

哈希组合单元,配置用于根据目标存储索引值和目标标签还原目标数据的目标全息哈希值;

逆向计算单元,配置用于根据所述目标全息哈希值逆向计算目标数据。

第三方面,提供一种终端,包括:

处理器、存储器,其中,

该存储器用于存储计算机程序,

该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。

第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本发明的有益效果在于,

本发明提供的基于低位哈希标签的存储方法、系统、终端及存储介质,利用数据标签来标识数据原文,算法原理简单、高效,标签的位宽比原文少,可以节省缓存内存,用硬件实现截取数据的低位信息的功能,电路设计简单,容易实现。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明一个实施例的方法的另一示意性流程图。

图3是本发明一个实施例的系统的示意性框图。

图4为本发明实施例提供的一种终端的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种基于低位哈希标签的存储系统。

如图1所示,该方法包括:

步骤110,计算待存储数据的全息哈希值;

步骤120,将所述全息哈希值的低位信息作为所述待存储数据的标签保存至数据表;

步骤130,将所述全息哈希值的高位信息作为所述标签的存储索引值。

具体的,请参考图2,所述基于低位哈希标签的存储方法包括:

利用原文的全息hash的低位信息标识原文字段。存储数据时只许保存原文的标签,hash值位宽设为m,字段x为由4个字节构成,那么x会被标记为:

label(x)=(232-m-1)&[(2n-1)&(a*x)](2)

采用低位hash标签方案的存储数据工作流程如下:计算原文的全息hash值h(x),截取全息hash的高位信息作为hash值h,全息hash的低位信息作为原文的标签label,以h为索引寻址查表,并把label存入数据表中(内存)。

假设字段x为“abcd”(二进制形式为01100001011000100110001101100100),用16进制数形式表述为:0x61626364。x的全息hash为0xe87cfc24,二进制形式为:11101000011111001111110000100100

如果hash值位宽设为17,x的标签为15bit的数111110000100100。

如果hash值位宽设为20,x的标签为12bit的数110000100100。

从数学角度而言,字段与标签的关系,可以当作某种函数关系,于是我们可以命名字段x的标签为label(x).即用<h(x),label(x)>替代<h(x),x>来标识x.

一个可行的标签编码方案应该满足如下两个条件:

标签的位宽越小越好,接近甚至等于理论最小值。

使用标签编码方案生成的标签与原文字段必须满足一一映射关系。

为了找到一种可行的编码方案,先得确定标签位宽的理论最小值,为此我们设计如下实验方案来确定标签位宽的理论最小值。

论证1:hash计算的分布特性分析

在本实验中,我们统计分析hash计算的分布特性:以4byte例,假设hash值位宽为m,统计所有4byte字段(总计232种,即0到232-1)的hash值,运用直方图分析hash值频率的分布特性,下图为本实验所用采用的伪代码:

上述伪代码中:calc_hash(x,m)是计算字段x的hash值公式。实验中我们统计分析m常见取值(m=10:20)的分布特性。

根据32bit数字的hash值频率分布特性可以得知,对当hash值位宽m取值为(10,12,14,16,18,20)时,hash值的频率服从均匀分布。对于选定的hash位宽m,hash值的值域为(0到2m-1),任意一个hash值的出现频率都相同为232-m,即每个hash值对应的原文字段总数都为232-m。所以标签位宽的理论最小值为32-m,一种位宽为32-m的标签方案,就是一种理论最佳方案。

接下来的任务就是寻找一种编码方案实现标签功能。

从数学求解角度而言,可以从如下两个思路,找到可行编码方案:

1,单从理论出发,推导出一种可行编码方案。

2,设想一种方案,然后验证该方案可行。

实验中,我们从以上两个角度都找到若干可行标签编码方案,本篇专利仅仅讨论从理论角度推导得出的一种标签编码方案:hash低位信息。

从hash计算公式可知,hash值与hash位宽m取值相关,于是hash计算公式的可以用如下形式描述:

h(x,m)=[(2n-1)&(a*x)]>>(n-m)(3)

当hash值的位宽的取值为n时,即hash值的位宽与原文的位宽相同,hash值计算如下:

h(x,n)=(2n-1)&(a*x)(4)

由公式(4)可知,h(x,n)是一种特殊hash值,由于h(x,n)的位宽与原文的位宽相同,我们可以定义h(x,n)为全息hash。

有公式(3)(4)可知全息hashh(x,n)与h(x,m)有以下关系:

h(x,m)=h(x,n)>>(n-m)(4)

h(x,m)可以看作为h(x,n)的高位信息。从公式(3)看,h(x,n)与x的取值范围相同,都为(0~2n-1),由此我们可以联想到,如果h(x,n)与x存在一一对应关系(任意一个全息hash值h,有且仅有一个对应原文数据),那么我们可以用h(x,n)的低位信息替代x来标记x.换一种说法,全息hash低位信息称为可行编码方案的唯一前提条件为全息hash与原文满足一一映射关系。为此我们设计如下实验:

论证2全息hash与原文的对应关系分析

为了验证全息hash与原文满足一一映射关系,我们设计实验2验证全息hash与原文的一一映射关系。实验2的设计方案如下图所示:

以4字节例,实验中,我们遍历所有的32bit数字(0:232-1),统计每一个全息hash值出现的频率(对应数组mat的元素)。如果4byte原文与全息hash之间存在一一映射关系那么mat的元素全部都是1,反之则mat中的元素值不全为1.所以mat中元素的分布可以反应原文与全息hash之间的映射关系。实验中我们通过计算sum的值分析mat中的元素值是否全为1。如果sum的值为0,那么,mat中的元素值全为1,即原文与全息hash之间存在一一映射关系。如果sum的值不为那么,mat中的元素值不全为1,即原文与全息hash不存在一一映射。

经实验验证sum最后的计算值为0,即mat所有的元素都为1,由此可知4byte原文与全息hash之间存在一一映射关系。

由于原文与全息hash存在一一映射关系,由此可知选用全息hash值的低位信息(计算hash值时舍弃的32-mbit数据),可以实现数据的标签功能。标签的计算公式如下:

label(x)=(232-m-1)&h(x,32)(5)

实验中,我们还发现,对于n字节数据y,全息hashh(y,8*n)与原文y之间满足一一对应关系。

如图3所示,该系统300包括:

哈希计算单元310,配置用于计算待存储数据的全息哈希值;

索引确定单元320,配置用于将所述全息哈希值的低位信息作为所述待存储数据的标签保存至数据表;

标签保存单元330,配置用于将所述全息哈希值的高位信息作为所述标签的存储索引值。

可选地,作为本发明一个实施例,所述系统还包括:

位宽设置单元,配置用于设置所述标签的哈希位宽为理论最小值32。

可选地,作为本发明一个实施例,所述系统还包括:

标签查找单元,配置用于根据目标存储索引值查找目标数据的目标标签;

哈希组合单元,配置用于根据目标存储索引值和目标标签还原目标数据的目标全息哈希值;

逆向计算单元,配置用于根据所述目标全息哈希值逆向计算目标数据。

图4为本发明实施例提供的一种终端400的结构示意图,该终端400可以用于执行本发明实施例提供的基于低位哈希标签的存储方法。

其中,该终端400可以包括:处理器410、存储器420及通信单元430。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

其中,该存储器420可以用于存储处理器410的执行指令,存储器420可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器420中的执行指令由处理器410执行时,使得终端400能够执行以下上述方法实施例中的部分或全部步骤。

处理器410为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器410可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。

通信单元430,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。

本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

因此,本发明利用数据标签来标识数据原文,算法原理简单、高效,标签的位宽比原文少,可以节省缓存内存,用硬件实现截取数据的低位信息的功能,电路设计简单,容易实现,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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