含冗余的数据压缩与解压缩的系统和方法_3

文档序号:9326869阅读:来源:国知局
1/926,158中已经描述,上述专利申请的全部内容在此以引用方式并入作为参考。
[0037]图3A示出根据本发明的实施方式的便于历史数据查找的示例数据块结构300的框图。在一些实施方式中,历史数据(例如图2中的历史数据294)可组织为一个或多个数据块,每个数据块以数据块结构300表示,数据块结构300存储于存储器(例如图1中的存储器114)和/或存储设备(例如图1中的存储设备116)中。正如后续讨论,数据块结构可从存储器中交换出存入存储设备中,或者反向进行。每一数据块结构300包含块数据310,块数据310可包含一个或多个数据区块312和314,区块是指数据大小单位,该数据大小单位被与本发明的实施方式一致的压缩和/或解压缩方法支持的所有设备所采用。
[0038]数据块结构300亦与块表316相关联,虽然图3A显示块表316为数据块结构300的一部分且紧邻数据区块312和314,应当理解为,块表316不需要存储于与数据区块相同的位置。在一些实施方式中,块表316可以为图2中的表296的一部分,包含用于在数据块结构300中定位数据片段的信息,这些信息可包含用于识别数据片段以及数据块结构300中数据定位的识别码。如图3A所示,块表316包含存储区块签名的域318,区块签名用于代表数据特定区块的内容,例如,“1234”的区块签名关联数据区块312,另外,“5678”的区块签名关联数据区块314。关于区块签名生成的进一步描述将在下面讨论。
[0039]块表316还包含以字节存储有数据偏移的域320,数据偏移关联数据块结构300中数据特定区块的位置。因为数据区块312为数据块结构300中第一数据区块,与数据区块312相关联的数据偏移为0,数据区块314在数据块结构中紧邻存储。在这一特殊实施例中,数据区块312的大小为64字节,所以与数据区块314相关联的数据偏移为64字节。数据块结构300进一步包含域322,域322可用来关联一个特定数据块结构300与块识别码(ID),块识别码在为历史数据存储相同数据块的系统之间是一致的,唯一识别数据块。基于已知的区块签名,通过寻找与已知签名匹配的一个或多个区块签名,数据片段可在该特定数据块结构中高效地被定位(或判定为无数据片段),虽然图3A未示出,每一数据块结构300还可关联一个时间戳,查找可从最近更新的指定为工作历史数据块的数据块结构上开始。
[0040]图3B示出根据本发明的实施方式的便于历史数据查找的示例存储器块表350的框图。存储器块表350可方便从最近存储在易失性存储器(例如图1中的存储器114)的每一历史数据块(例如根据图3A中的数据块结构300存储)中查找数据片段。如图3B所示,存储器块表350包含存储块ID的域352,每一块ID识别存储器中的数据块结构。对于域352识别的每一数据块结构,存储器块表350进一步包含分别关联代表数据块结构内特定数据区块和数据区块位置的域354和356,基于已知签名,通过寻找与已知签名匹配的一个或多个区块签名,输入数据的片段可在存储于存储器内的一组数据块结构中高效地被定位(或判定为无数据片段),如果输入数据位于特定数据块结构中,关联这一特定数据块结构以及该数据块结构中数据位置的块ID可被检索到。在一些实施方式中,检索到的块ID以及位置信息可用来做二次甚至多次精细检索,相关内容将在下面详述。是否需要二次检索取决于区块签名如何计算一一如果区块签名不能独一无二地识别数据(即不同数据值可产生相同的区块签名),二次检索可能是必要的,以确定位于数据块结构内的数据区块与输入数据完全一致,这样,由此生成的引用令牌准确代表输入数据。
[0041]图3C示出根据本发明的实施方式的便于历史数据查找的示例磁盘块表370的框图。磁盘块表370可方便从最近存储在非易失性存储器(例如图1中的存储器116)的每一历史数据块(例如根据图3A中的数据块结构300存储)中查找数据片段。如图3C所示,磁盘块表370包含存储块ID的域372,每一块ID识别代表存储设备中数据块的数据块结构,对于域372识别的每一数据块结构,磁盘块表370进一步包含存储磁盘签名的域374,磁盘签名用于代表存储与存储设备中的多个数据区块的内容。
[0042]在一些实施方式中,表316、350和370提供用于查找组织为数据块结构300的历史数据的层级结构(以下简称历史数据块),为了定位历史数据中的数据片段,通过寻找与数据的签名相匹配的一个或多个具有区块签名的区块,基于与工作历史数据块相关联的表316,从载入存储器的最近历史数据块(指定为工作历史数据块)开始查找。如果不能找到数据,基于表350上的信息,查找范围可扩展至最近载入存储器的每个历史数据块。基于一些原因,首先限定在存储器内查找是可取的,第一,很有可能存储于存储器内的数据包含最近的更新(例如,包含因压缩或解压缩而添加的数据),因此,找到数据片段的可能性会更高;第二,从存储器中访问数据通常比从存储设备中访问数据要块,这就价款可查找,因此,可从最近存储与存储器上的历史数据块中开始查找。
[0043]如果从存储器中不能定位数据片段,可以从存储于存储设备上具有表370上的信息的历史数据块中开始查找,如果基于磁盘签名找到匹配,含有关联匹配磁盘签名的块ID的历史数据块可载入到存储器,那么通过关联的表316上的信息,可在最新载入的历史数据块中基于区块签名更精确地进行查找。
[0044]图4A示出根据本发明的实施方式的示例压缩模块430的框图。在一些实施方式中,压缩模块430的功能类似于如图2所示的数据压缩模块230的功能。压缩模块430包含签名生成器431、第一阶段压缩模块432以及第二阶段压缩模块433。第一阶段压缩模块432进一步包含粗查找模块434、细查找模块435、原始令牌生成器模块436以及引用令牌生成器模块437。
[0045]随着压缩模块430接收输入数据,该数据可被签名生成器431处理产生一个或多个区块签名,其中,每个区块签名与每一连续的大小为例如64字节的数据区块相关联,关于区块签名生成将在下面进一步详述。
[0046]输入数据的至少一个区块签名生成后,生成的区块签名以及输入数据可通过第一阶段压缩模块432的粗检索模块434。基于生成的区块签名,粗检索模块可在特定历史数据块(例如工作历史数据块)中、基于例如与工作历史数据块相关联的块表316上的信息查找匹配区块签名。在一些实施方式中,通过利用例如如图3A-3C所示的表316、350以及370上的信息,粗检索模块可对存储与存储器和存储设备中的历史数据块进行层次查找,如果找到匹配,这表明找到输入数据(或其部分)的准确副本的可能性很大,工作历史数据块中的输入数据以及与含有匹配区块签名的数据区块相关联的数据偏移可通过细检索模块。
[0047]在细检索模块435阶段,可进行工作历史数据块中输入数据的更精确查找。在一些实施方式中,进行这类查找来确定位于该工作历史数据块的数据区块与输入数据完全一致。基于数据偏移,细检索模块435可读取数据区块并针对该数据区块进行准确字节串比较来确认输入数据与数据区块完全匹配。为了最大化与相同大小输入数据的一部分相匹配的数据区块的数量,在数据偏移指示位置之前或之后,通过从工作历史数据块中读取数据区块(或其部分),细检索模块435亦可正向或反向扩大比较范围。在工作历史数据块中定位最大量匹配数据区块后,输入数据的相应部分可由引用令牌代表,该引用令牌指示历史数据块中匹配数据区块的位置及数量(或作为数据区块一部分的匹配数据的长度)。在一些实施方式中,引用令牌还包含与工作历史数据块相关联的块ID。引用令牌由引用令牌生成器模块437生成,并添加至代表输入数据的令牌流中。
[0048]另一方面,对于输入数据的一部分,尽管事实是匹配的区块签名存在,但是粗检索模块434没有找到匹配的区块签名,细检索模块435也没有精确匹配输入数据的一部分的数据片段,那么这样一个输入数据的一部分用原始令牌代表。在一些实施方式中,原始令牌包含输入数据的一部分的副本,原始令牌由原始令牌生成器模块436生成,并添加至代表输入数据的令牌流中。在一些实施方式中,压缩模块430进一步包含历史数据更新模块438,历史数据更新模块438将输入数据添加至压缩模块430可访问的历史数据中,并在存储器块表350和磁盘块表370至少之一中更新,存储器块表350和磁盘块表370中含有区块和/或为输入数据生成的磁盘签名。
[0049]第一阶段压缩模块432生成令牌流的至少一个令牌后,生成的令牌流可通过第二阶段压缩模块433进一步压缩令牌流。在一些实施方式中,第二阶段压缩模块433应用无损数据流压缩算法进行压缩,然后压缩的令牌流可用来代表压缩状态的输入数据。
[0050]图4B示出根据本发明的实施方式的示例解压缩模块450的框图。在一些实施方式中,解压缩模块450的功能类似于如图2所示的数据解压缩模块250的功能。解压缩模块450包含令牌流解压缩模块451、令牌处理模块452、签名生成器模块453以及历史数据更新模块454。令牌流解压缩模块451可从例如压缩模块430中接收压缩的令牌流,根据进行压缩模块430的第二阶段压缩模块433使用的压缩算法进行解压缩来恢复令牌流,恢复的令牌流进而由令牌处理模块452处理,令牌处理模块452可以从令牌流中识别一个或多个引用令牌和/或原始
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1