数据处理方法以及相关设备

文档序号:31725021发布日期:2022-10-05 00:19阅读:61来源:国知局
数据处理方法以及相关设备

1.本技术实施例涉及存储技术领域,尤其涉及数据处理方法以及相关设备。


背景技术:

2.现有的大规模数据压缩系统,往往会将块级去重和差量压缩技术相结合,以实现更好的压缩效果。其中,无论是块级去重和差量压缩,都是通过对重复数据的只保存一遍并多次引用的方式,达到减少数据规模的目的。
3.现有的数据压缩方式中,通常都是将待处理数据块(包括基础数据块和差量数据块)依次存入容器中,待一个容器放满,就将未放入容器的待处理数据块存入新的容器中,每当一个容器放满后,就对该容器整体进行压缩并存储压缩后的容器,最终实现数据压缩。若需要恢复某个数据,则需要解压不同的容器并获取所需的数据块。
4.但是,按照现有的数据压缩方式,每个容器中所需的数据块的排列是零碎的,即需要解压的容器中所需的数据块和不需要的数据块是交错排列的,在此基础上解压容器并依次读取容器中全部数据块会大大降低数据恢复时的数据读取效率。


技术实现要素:

5.本技术实施例提供了数据处理方法以及相关设备,用于提升数据恢复效率。
6.本技术实施例第一方面提供一种数据处理方法,包括:
7.确定用于恢复目标数据的每个目标数据块所在的目标容器集,其中所述目标容器集中仅包含所述目标数据的目标数据块,所述目标数据块为差量数据块或基础数据块;
8.确定多个所述目标容器集的访问顺序,按照所述访问顺序依次从每个所述目标容器集获取所述目标容器集存储的目标数据块;其中每个差量数据块的获取顺序早于所述差量数据块对应的基础数据块的获取顺序;
9.按照各个所述目标数据块的获取顺序,恢复所述目标数据。
10.在一种具体实现方式中,每个所述目标容器集具有数据标识区间,所述数据标识区间包括至少一个数据标识,所述数据标识区间包括的数据标识为所述目标容器集中的各个目标数据块均用于且只用于参与恢复的数据的标识;
11.所述访问顺序为:先访问数据标识区间右端值较小的目标容器集,再访问数据标识区间右端值较大的目标容器集;对于数据标识区间右端值相同的多个目标容器集,先访问数据标识区间左端值较大的目标容器集,再访问数据标识区间左端值较小的目标容器集。
12.在一种具体实现方式中,所述按照各个所述目标数据块的获取顺序,恢复所述目标数据,包括:
13.若所述目标数据块为差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
14.若所述目标数据块为基础数据块且恢复空间写有所述目标数据块对应的差量数
据块,则将所述目标数据块与所述差量数据块进行差量解压,将所述恢复空间中的差量数据块更新为差量解压后的数据块;
15.若所述目标数据块为基础数据块且恢复空间未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间。
16.在一种具体实现方式中,所述按照各个所述目标数据块的获取顺序,恢复所述目标数据,包括:
17.若所述目标数据块为差量数据块,则将所述目标数据块写入缓存;
18.若所述目标数据块为基础数据块且缓存有所述目标数据块对应的差量数据块,则将所述目标数据块与所述差量数据块进行差量解压,将差量解压后的数据块写入所述目标数据块对应的恢复空间;
19.若所述目标数据块为基础数据块且缓存未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
20.当各个所述目标数据块均写入所述目标数据块对应的恢复空间,将各个所述恢复空间的目标数据块组合为目标数据。
21.本技术实施例第二方面提供一种数据处理方法,包括:
22.根据预设分块条件将目标数据划分为依次排列的多个目标数据块;
23.根据至少一个待定容器集中的数据块,确定每个所述目标数据块的数据块类型;
24.若目标数据块为第一数据块,则将所述目标数据块对应的已经存储的相似数据块从所述待定容器集迁移至第一目标容器集,并将所述目标数据对应的差量数据块存入第二目标容器集,其中所述差量数据块根据所述目标数据块以及所述相似数据块确定;
25.构建所述目标数据与对应容器集之间的对应关系,所述对应容器集为所述第一目标容器集以及所述第二目标容器集。
26.在一些具体实现方式中,所述方法还包括:
27.若目标数据块为第二数据块,则将所述目标数据块对应的已经存储的相同数据块从所述待定容器集迁移至第三目标容器集;
28.若目标数据块为剩余数据块,则将所述目标数据块存入第二目标容器集,所述剩余数据块为所述多个目标数据块中除所述第一数据块以及所述第二数据块之外的目标数据块;
29.所述对应容器集或者为所述第三目标容器集或第二目标容器集。
30.在一些具体实现方式中,所述方法还包括:
31.根据预设分段条件依次将所述多个目标数据块分为至少一个数据段;
32.确定每个所述数据段中数据块类型为第一数据块的每个目标数据块对应的已经存储的相似数据块所在的目标待定容器集;
33.若在一个数据段内目标待定容器集的指名次数不满足预设指名阈值,则将在所述一个数据段内所述目标待定容器集对应的每个所述目标数据块的数据块类型修改为剩余数据块。
34.本技术实施例第三方面提供一种数据处理装置,包括:
35.确定单元,用于确定用于恢复目标数据的每个目标数据块所在的目标容器集,其中所述目标容器集中仅包含所述目标数据的目标数据块,所述目标数据块为差量数据块或
基础数据块;
36.获取单元,用于确定多个所述目标容器集的访问顺序,按照所述访问顺序依次从每个所述目标容器集获取所述目标容器集存储的目标数据块;其中每个差量数据块的获取顺序早于所述差量数据块对应的基础数据块的获取顺序;
37.恢复单元,用于按照各个所述目标数据块的获取顺序,恢复所述目标数据。
38.在一种具体实现方式中,每个所述目标容器集具有数据标识区间,所述数据标识区间包括至少一个数据标识,所述数据标识区间包括的数据标识为所述目标容器集中的各个目标数据块均用于且只用于参与恢复的数据的标识;
39.所述访问顺序为:先访问数据标识区间右端值较小的目标容器集,再访问数据标识区间右端值较大的目标容器集;对于数据标识区间右端值相同的多个目标容器集,先访问数据标识区间左端值较大的目标容器集,再访问数据标识区间左端值较小的目标容器集。
40.在一种具体实现方式中,所述恢复单元,具体用于若所述目标数据块为差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
41.若所述目标数据块为基础数据块且恢复空间写有所述目标数据块对应的差量数据块,则将所述目标数据块与所述差量数据块进行差量解压,将所述恢复空间中的差量数据块更新为差量解压后的数据块;
42.若所述目标数据块为基础数据块且恢复空间未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间。
43.在一种具体实现方式中,所述恢复单元,具体用于若所述目标数据块为差量数据块,则将所述目标数据块写入缓存;
44.若所述目标数据块为基础数据块且缓存有所述目标数据块对应的差量数据块,则将所述目标数据块与所述差量数据块进行差量解压,将差量解压后的数据块写入所述目标数据块对应的恢复空间;
45.若所述目标数据块为基础数据块且缓存未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
46.当各个所述目标数据块均写入所述目标数据块对应的恢复空间,将各个所述恢复空间的目标数据块组合为目标数据。
47.本技术实施例第四方面提供一种数据处理装置,包括:
48.划分单元,用于根据预设分块条件将目标数据划分为依次排列的多个目标数据块;
49.确定单元,用于根据至少一个待定容器集中的数据块,确定每个所述目标数据块的数据块类型;
50.存储单元,用于若目标数据块为第一数据块,则将所述目标数据块对应的已经存储的相似数据块从所述待定容器集迁移至第一目标容器集,并将所述目标数据对应的差量数据块存入第二目标容器集,其中所述差量数据块根据所述目标数据块以及所述相似数据块确定;
51.构建单元,用于构建所述目标数据与对应容器集之间的对应关系,所述对应容器集为所述第一目标容器集以及所述第二目标容器集。
52.在一些具体实现方式中,所述存储单元,还用于若目标数据块为第二数据块,则将所述目标数据块对应的已经存储的相同数据块从所述待定容器集迁移至第三目标容器集;
53.若目标数据块为剩余数据块,则将所述目标数据块存入第二目标容器集,所述剩余数据块为所述多个目标数据块中除所述第一数据块以及所述第二数据块之外的目标数据块;
54.所述对应容器集或者为所述第三目标容器集或第二目标容器集。
55.在一些具体实现方式中,所述装置还包括:
56.所述划分单元,还用于根据预设分段条件依次将所述多个目标数据块分为至少一个数据段;
57.所述确定单元,还用于确定每个所述数据段中数据块类型为第一数据块的每个目标数据块对应的已经存储的相似数据块所在的目标待定容器集;
58.所述确定单元,还用于若在一个数据段内目标待定容器集的指名次数不满足预设指名阈值,则将在所述一个数据段内所述目标待定容器集对应的每个所述目标数据块的数据块类型修改为剩余数据块。
59.本技术实施例第五方面提供一种数据处理装置,包括:
60.中央处理器,存储器以及输入输出接口;
61.所述存储器为短暂存储存储器或持久存储存储器;
62.所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行第一方面或第二方面所述的方法。
63.本技术实施例第六方面提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面或第二方面所述的方法。
64.本技术实施例第七方面提供一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如第一方面或第二方面所述的方法。
65.从以上技术方案可以看出,本技术实施例具有以下优点:存储恢复目标数据的每个目标数据块的目标容器集中,仅包含该恢复该目标数据所需的目标数据块,这样恢复目标数据时无需访问不用于恢复目标数据的数据块,提升了数据恢复效率。
附图说明
66.图1为本技术实施例公开的数据处理方法的一种流程示意图;
67.图2为本技术实施例公开的数据块类型修改方法的一种示例图;
68.图3为本技术实施例公开的数据压缩方法的一种流程示意图;
69.图4为本技术实施例公开的数据压缩方法的一种压缩效果图;
70.图5为本技术实施例公开的数据处理方法的另一流程示意图;
71.图6为本技术实施例公开的数据恢复方法的一种示例图;
72.图7为本技术实施例公开的数据处理装置一个结构示意图;
73.图8为本技术实施例公开的数据处理装置另一结构示意图;
74.图9为本技术实施例公开的数据处理装置另一结构示意图。
具体实施方式
75.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
76.目前,针对大规模数据的压缩方法主要通过块级去重实现。块级去重是指将数据分块,然后针对多个相同数据块,只保留一个相同数据块并通过使用索引代替前述多个相同数据块中除所述一个相同数据块之外的其他相同数据块,来达到压缩数据,降低数据规模的目的。进一步的,除了相同数据块以外,还存在着不完全相同但相似的数据块,针对存在相似部分的两个数据块,可以引入差量压缩来进一步的压缩,最终实现细粒度的(相对于块级去重而言)冗余数据消除的目的。差量压缩是指,在相似的数据块(块a和块b)之间,以其中的一个块a为基础数据块(基础数据块也可以是块b,此处以块a为基础数据块为例),计算另一个块b和基础数据块a之间的不同之处(即差量数据块,并以这些不同之处作为块b的替代品来进行存储,以达到节省块b的存储开销的目的。将得到的诸多普通数据块和差量数据块按照出现顺序放入容器中。容器的容量可以为一个固定值,一个容器放满了之后,就以该容器为一个整体进行容器压缩。后续的数据块就放入下一个容器中。因此,块级去重和差量压缩后的数据中包含两种块:普通块和差量块。其中,差量块为差量压缩后的产物,代替某个差量压缩前的普通块;而普通块有可能作为某个差量块的基础块。
77.随着数据压缩的不断强化,也给数据的压缩和恢复带来一定问题。当前数据压缩流程主要有以下三个问题:
78.其一,对数据进行块级去重和差量压缩时,基础数据块的局部性较差。
79.具体的,进行差量压缩需要同时有基础数据块和待压缩数据块。在流水线式的程序中,数据块是按照它们出现的顺序来进行处理的,当处理到一个数据块a时,发现其不是完全重复的数据块,但是它存在相似数据块b(相似数据块b必然是之前已经处理过并已经写入磁盘的)时,需要先读取相似数据块b作为对数据块a进行差量压缩的基础数据块。为了追求更高的压缩率,处理过的数据块会被存在一个容器,然后以整个容器为单位进行压缩。因此,获取相似数据块b时需要把存储相似数据块b的容器整体读取并解压,造成大量的读放大(存储相似数据块b的容器中仅有相似数据块b是差量压缩数据块a所需的,但是存储相似数据块b的容器中除相似数据块b之外的其他数据块依然被读取出来了),从而导致整体的吞吐不佳。事实上,获取相似块b时造成的大量读放大主要是因为基础数据块的所处的位置具有随机性(在任一容器中)。因此,即使不使用容器这种设计方案,单独零碎的读取零散的数据依然会导致较低的读取效率。
80.其二,对差量压缩过后的数据进行恢复时,所需数据块的空间局部性较差。
81.具体的,无论是块级去重或差量压缩,都是通过对重复的数据块只保存一遍,然后多次引用,来达到减少数据规模的目的。然而,这种引用同时也破坏了数据的空间局部性。比如,现有待处理数据d1以及待处理数据d2,其中,d1包括依次排列的数据块c1、c2、c3以及c4;d2包括依次排列的数据块c5、c3、c6以及c1’
,数据块c1’
为数据块c1的相似块),依次对待处理数据d1以及待处理数据d2进行块级去重和差量压缩并放置于容器s中。容器s中依次排列有数据块c1、c2、c3、c4、c5、c6以及δ(c1’
),其中数据块δ(c1’
)表示以数据块c1作为基础数据
块算得的数据块c1’
和数据块c1之间的差量数据块。若需要从容器s中恢复出数据d2,则需要从容器s中按顺序读取数据块c1、c3、c5、c6以及δ(c1’
),而这些数据块在容器s中的排列是零碎的(恢复d2需要的数据块和恢复d2不需要的数据块相互交错)。由于数据块分布分散的原因,会导致大量的读放大,从而使整体的吞吐不佳。即使不使用规避开容器的设计方案,单独零碎的读取这些零散的数据依然会导致较低的读取效率。
82.其三,对差量压缩过后的数据进行恢复时,差量数据块(差量压缩后的产物)和对应的基础数据块之间的时间局部性较差,即数据块读取顺序混乱。
83.具体的,根据第二点中的例子可以发现,不仅所需的数据块不仅在位置上零碎(空间局部性差,现有方案问题的第二点),同时所需的数据块被使用的顺序和存储的顺序之间也是存在矛盾的(即时间局部性差)。具体而言,假设第二个问题得以解决,恢复d2所需的c1、c3、c5、c6以及δ(c1’
)得以紧密的连续的保存在一起,我们在恢复d2时会发现c1和δ(c1’
)必须同时使用来进行差量解压以得到数据块c1’
(差量压缩的逆过程),但是这两个块在顺序上差别很大(分别为容器s中的第一个数据块和最后一个数据块),导致按顺序读取时,先读取到数据块c1并没有办法进行解码,只能跳过其他数据块(数据块c2、c3、c4、c5以及c6)先去读取数据块δ(c1’
)。这一方面导致非连续的访问数据,造成性能下降;另一方面数据块c6以及数据块δ(c1’
)保存在同一个数据容器中,会导致后续需要数据块c6时再次访问该数据容器,使得同一个数据容器被不必要的多次访问,造成性能下降。
84.为了解决现有技术在数据压缩以及数据恢复过程中的以上问题,本技术实施例提供了数据处理方法以及相关设备,用于提升数据恢复效率。
85.请参阅图1,本技术实施例提供一种数据处理方法,用于对大规模数据进行去重压缩,包括以下步骤:
86.101、根据预设分块条件将目标数据划分为依次排列的多个目标数据块。
87.当需要对目标数据做去重压缩时,首先应该根据预先设置的预设分块条件划分目标数据以得到多个目标数据块。其中,目标数据是指需要进行去重压缩的任意数据,具体可以是新增数据或者备份数据,本实施例不做限定。
88.具体的,若预设分块条件为将目标数据依次划分为指定大小的数据块,则针对目标数据从前到后,从目标数据的开头开始划分,每满足指定大小后,就划分出一个数据块。可以知道的是,预设分块条件还可以是按照目标数据内容的字符类型进行拆分,得到多个目标数据块,本技术不做限定。
89.102、根据至少一个待定容器集中的数据块,确定每个目标数据块的数据块类型。
90.为了基于每个目标数据块的数据块类型对步骤101划分得到的每个目标数据块进行处理,首先需要对每个目标数据块进行分类,并对不同类型的目标数据块采用不同的数据处理方法。其中,数据块类型包括第一数据块,即若待定容器集已经存储的数据块中存在目标数据块的相似数据块,则该目标数据块为第一数据块。
91.具体的,相似数据块是指任一待定容器集中已经存储的与目标数据块不完全相同但有相似部分的数据块,为了避免对相似部分的重复存储导致存储控件的浪费,对在至少一个待定容器集中存在已经存储的相似数据块的目标数据块(即数据块类型为第一数据块)执行步骤103。
92.对于相似数据块的判断,在一些实现方式中可以将目标数据块的数据内容与至少
一个待定容器集中已经存储的数据块进行比对,若至少一个待定容器集已经存储的数据块中存在目标数据块的相似数据块,则确定该目标数据块为第一数据块;或者引入指纹机制与索引,将存储在容器集中的每个数据块对应的数据块指纹存储在索引中,在判断该目标数据块是否存在相似数据块时,因为存储在容器集中的数据块在索引中都存储有对应的局部敏感哈希值,所以可以根据该目标数据块的局部敏感哈希值与索引中每个局部敏感哈希值进行比对,并确定局部敏感哈希值相同的唯一数据块作为该目标数据块的相似数据块。在实际应用中,目标数据块可能存在多个局部敏感哈希值,则确定待定容器集中已经存储的数据块对应的局部敏感哈希值与前述目标数据块对应的多个局部敏感哈希值相似个数最多的作为相似数据块,若存在多个待定容器集中已经存储的数据块对应的局部敏感哈希值与前述目标数据块对应的多个局部敏感哈希值相似个数均为最多,则从多个对应的局部敏感哈希值与前述目标数据块对应的多个局部敏感哈希值相似个数最多的数据块中选择任一数据块作为前述目标数据块的相似数据块。
93.可以知道的是,至少一个待定容器集是指当前去重压缩的目标数据(即步骤101划分的目标数据)对应的前一去重压缩数据划分得到的数据块对应存储至的每个容器集,若当前去重压缩的目标数据(即步骤101划分的目标数据)为首个进行去重压缩的数据,则不存在已经存储的数据块也不存在待定容器集,即无法进行去重压缩。其中,首个进行去重压缩的数据是指在指定的存储空间中或去重压缩系统的全部存储空间中首个进行压缩的数据,即在指定的存储空间中或去重压缩系统的全部存储空间中不存在已经存储的数据块,本实施例不对首个去重压缩对应的存储空间做具体限定。
94.103、若目标数据块为第一数据块,则将目标数据块对应的已经存储的相似数据块从待定容器集迁移至第一目标容器集,并将目标数据对应的差量数据块存入第二目标容器集,其中差量数据块根据目标数据块以及相似数据块确定。
95.当确定目标数据块存在相似数据块时,现有技术通常以对应的相似数据块作为基础数据块对目标数据块进行差量压缩,只保留目标数据块对应的差量数据块(即以相似数据块为基础数据块算得的目标数据块与对应的相似数据块之间的差量数据块)以及差量数据块与相似数据块之间的引用关系。然而,这种方式虽然起到了差量压缩的效果,但是由于数据的读取是以数据块容器集为单位进行的,在对目标数据进行恢复(即读出)时,需要同时读出存储有非第一数据块(即数据块类型不为第一数据块的目标数据块)的数据块容器集以及存储有第一数据块(即数据块类型为第一数据块的目标数据块)的数据块容器集,而存储有第一数据块的数据块容器集中通常还存储有目标数据中不存在的数据(即恢复目标数据无需的数据块)。在这种情况下,对目标数据的恢复过程中需要读出大量目标数据不需要的数据,造成读放大的问题,无法利用系统全部的吞吐性能对目标数据进行恢复,最终导致目标数据恢复速度较慢。
96.为了解决上述问题,本技术实施例在确定存在第一数据块(即数据块类型为第一数据块的目标数据块)后,将每个第一数据块(即数据块类型为第一数据块的目标数据块)从原来存储的待定容器集中迁移至第一目标容器集,并将每个第一数据块(即数据块类型为第一数据块的目标数据块)对应的差量数据块存入第二目标容器集。通过将第一数据块对应的相似数据块进行迁移,实现了对相似数据块的生命周期进行更新的效果,即该相似数据块与原本存储在一起的非目标数据块的生命周期不同,因此相似数据块已经不在与原
本存储在一起的非目标数据块继续存储在一起,而是进行了独立存储。其中,生命周期的定义如下,一个包含块级去重和差量压缩的存储系统,其保存了f1,f2,f3...等数据,如果有且仅有数据fn,fm以及fk的分块结果中包含有相同的某个数据块ck和/或包含有需要把ck作为基础数据块的数据块,那么数据块ck的生命周期为{fn,fm,fk}(即恢复数据fn,fm以及fk需要数据块ck)。其中,前述以及后述容器集均为对具有相同生命周期的容器的集合的总称,一个容器集中至少包括一个容器。
97.基于上述对数据块的生命周期的定义,以及本步骤实施例中所述的方法,可以保证,目标数据的每个目标数据块都对应存储于与其生命周期相同的数据块容器集中,且每个数据块容器集中存储的数据块都为具有相同生命周期的数据块,保证了恢复目标数据时,读取的容器集中的容器仅存储有恢复目标数据所需的数据块(包括但不限于目标数据块,目标数据块对应的相似数据块以及目标数据块对应的差量数据块)
98.104、构建目标数据与对应容器集之间的对应关系,对应容器集为第一目标容器集以及第二目标容器集。
99.在构建目标数据与对应容器集之间的对应关系,若目标数据块的数据块类型均为第一数据块则,目标数据对应的每个目标数据块的对应容器集为该目标数据块对应的相似数据块存储的第一目标容器集以及该目标数据块对应的差量数据块存储的第二目标容器集。
100.本实施例中,存储恢复目标数据的每个目标数据块的目标容器集中,仅包含该恢复该目标数据所需的目标数据块,这样恢复目标数据时无需访问不用于恢复目标数据的数据块,提升了数据恢复效率。
101.进一步的,若目标数据块为第二数据块,则将目标数据块对应的已经存储的相同数据块从待定容器集迁移至第三目标容器集;若目标数据块为剩余数据块,则将目标数据块存入第二目标容器集,剩余数据块为多个目标数据块中除第一数据块以及第二数据块之外的目标数据块;对应容器集或者为第三目标容器集或第二目标容器集。
102.具体的,若待定容器集中存在目标数据块的相同数据块,则确定该目标数据块为第二数据块且该相同数据块为该目标数据块对应的相同数据块。若待定容器集中不存在目标数据块的相同数据块或者相似数据块,则确定目标数据块为剩余数据块。若目标数据块为第二数据块,则对目标数据块执行去重压缩;若目标数据块为剩余数据块,则对目标数据块执行普通压缩。其中,本技术实施例中,去重压缩是指将目标数据块对应的相同数据块从原来存储的待定容器集中迁移至第三目标容器集,普通压缩是指将数据块类型为剩余数据块的目标数据块存储至第二目标容器集中。
103.可以理解的是,进一步基于本实施例中针对第二数据块和剩余数据块的数据处理方式,本技术实施例提供的数据压缩方法可以将存储空间(或者说存储系统)中具有相同生命周期(具体定义可参照前述实施例)的数据块存储在同一数据块容器集中,保证同一数据块容器集中的数据块都是仅用于恢复相同数据的目标数据块,避免大量的读放大。
104.更进一步的,考虑到进行数据处理时,若步骤101划分而得的多个目标数据块中存在不止一个数据块类型为第一数据块的目标数据块,则需要读取每个数据块对应的相似数据块,而这些相似数据块通常都不存储与同一待定容器集中,导致差量压缩的效率的低下。在前述步骤102之后,即完成每个目标数据块的数据类型判断后,本技术实施例中,还可以
将若干个目标数据块视为一个数据段(具体的分段情况视预设分段条件而定)。在同一数据段内,针对数据块类型为第一数据块的目标数据块,基于每个数据块类型为第一数据块的目标数据块对应的相似数据块(即对应的基础数据块)所在的目标待定容器集,统计每个目标待定容器集被指名的次数(即有几个目标数据块需要该目标待定容器集中的数据块进行差量压缩)。仅当目标待定容器集的指名次数满足预设指名阈值时,该目标待定容器集才会被读取,并获取其中相应的相似数据块作为基础数据块以供对应的目标数据块进行差量压缩。而对于该数据段内,其他可以进行差量压缩的数据块(即对应的相似数据块未被读取的且数据块类型为第一数据块的目标数据块),则将其数据块类型修改为剩余数据块(即不进行差量压缩)。以图2中所示数据段为例,图示数据段包括四个数据块类型为第一数据块的数据块,分别为数据块1、2、3以及4。其中,数据块1、2、3以及4分别与对应的相似数据块(即数据块i、j以及q)的对应关系以图2所示虚线箭头为准。数据块i以及数据块j位于容器n,数据块q位于容器m。因此,容器n指名次数为三次,容器m指名次数为1次。若预设指名阈值为大于2,则将数据块4的数据块类型从第一数据块修改为剩余数据块。
105.其中,预设分段条件可以是预设的数据段大小(如12兆,即一个数据段内包含的所有的数据块的数据大小尽可能的接近并小于等于12兆),或者可以是指定数量的数据块(如八个数据块),此处不作限定。
106.在实际应用中,确定每个目标数据块的数据块类型可以参照图3所示流程。
107.具体的,针对被划分为多块的目标数据,首先计算每个目标数据块的强哈希值(即可以标识数据块唯一性的哈希值,如图中所示fp1、fp2、fp3、fp4、fp5、fp6、...)用于从指纹索引(包含已经存储的每个数据块的强哈希值的索引)中确定待定容器中是否存在与任意目标数据块完全相同的相同数据块,若是,则将对应的目标数据块的数据类型确定为第二数据块。
108.接下来,确定多个目标数据块中除第二数据块之外的其他目标数据块的数据块类型。计算多个目标数据块中除第二数据块之外的其他目标数据块的局部敏感哈希值(可以用于确定两个数据块之间的相似度,如图中所示sf1、sf2、sf3、sf4、sf5、sf6、...)用于从相似性指纹索引(包含已经存储的每个数据块的局部敏感哈希值的索引)中确定待定容器中是否存在与任意目标数据块相似的相似数据块,若是则将对应的目标数据块的数据类型确定为第一数据块。
109.然后,确定每个第一数据块对应的相似数据块存储的目标待定容器,以确定每个目标待定容器的指名次数。将对应的相似数据块存储的目标待定容器的指名次数不满足预设指名阈值的目标数据块的数据块类型从第一数据块修改为剩余数据块(即数据块类型更新)。
110.最后,将多个数据块中未确定数据块类型的数据块的数据块类型确定为剩余数据块。
111.本实施例中,经过进一步处理,将需要不满足预设指名阈值的目标待定容器集中的数据块的目标数据块的数据块类型从第一数据类型修改为剩余数据类型,减少了磁盘访问,有效提升了差量压缩过程的吞吐。
112.按照前述实施例的数据压缩流程,可实现如图4中,本技术数据处理方案的分类效果,图中cat.(x,y)为不同目标数据集(即不同类(即category,亦指拥有相同生命周期的数
据块的集合)目标容器集)的数据区间标识。由图4可以明显看出,根据本技术实施例的数据处理方法,可以将生命周期相同的数据块放置于相同类的目标容器集中。比如说,cat.(1,3)中的数据块的生命周期是第一个数据、第二个数据以及第三个数据。当存储空间中已经保存了n个数据,而我们需要恢复第k个数据时,所需的数据块包含且仅包含在若干个cat(即目标数据集)中,所需的目标容器集用公式可以表示为:例如,恢复第二个数据需要且仅需要cat.(1,2)、cat.(2,2)、cat.(1,3)以及cat.(2,3)中所有的数据块。这样,所需的数据块紧密地排列在若干个目标容器集中,恢复数据所需的数据块分散的问题得到了缓解。
113.在前面描述了本技术应用于数据压缩的数据处理方法的基础上,下面请参阅图5,本技术的另一种数据处理方法,应用于数据恢复,包括以下步骤:
114.501、确定用于恢复目标数据的每个目标数据块所在的目标容器集,其中目标容器集中仅包含目标数据的目标数据块,目标数据块为差量数据块或基础数据块;
115.在基于前述应用于数据压缩的数据处理方法对目标数据进行压缩后,可以通过本技术实施例应用于数据恢复的数据处理方法实现高效的数据恢复。
116.首先,若需要恢复目标数据,需要先确定目标数据恢复所需的目标数据块以及每个目标数据块所在的目标容器集。根据前述应用于数据压缩的数据处理方法处理得到的目标容器集中,仅包含有恢复目标数据所需的目标数据块,其中具有相同生命周期(生命周期定义与前述实施例类似,此处不再赘述)的目标数据块存储于同一目标数据集中。
117.在一些具体实现方式中,若每个数据对应的数据块的存储信息以及引用信息都存储于索引中,则可以从索引中直接确定每个目标容器集。
118.502、确定多个目标容器集的访问顺序,按照访问顺序依次从每个目标容器集获取目标容器集存储的目标数据块;其中每个差量数据块的获取顺序早于差量数据块对应的基础数据块的获取顺序;
119.步骤501确定完恢复目标数据所需读取的多个目标容器集后,按照访问顺序依次从每个目标容器集中读取目标数据块,其中访问顺序的选择要保证先获取到目标数据块中的差量数据块,再获取到该差量数据块对应的基础数据块。
120.503、按照各个目标数据块的获取顺序,恢复目标数据。
121.按照访问顺序访问每个目标容器集中的目标数据块,并依照各个目标数据块的获取顺序,恢复目标数据。
122.本实施例中,保证每个差量数据块的获取顺序早于差量数据块对应的基础数据块的获取顺序,解决了现有技术先获取到基础数据块但无法使用,还需获取到对应的差量数据块时在再重复获得该基础数据块的问题,大大提升了数据恢复效率。另外,目标容器集中仅包含有恢复目标数据所需的目标数据块,也大大减少了磁盘访问和读放大问题。
123.进一步的,每个目标容器集具有数据标识区间,数据标识区间包括至少一个数据标识,数据标识区间包括的数据标识为目标容器集中的各个目标数据块均用于且只用于参与恢复的数据的标识;访问顺序为:先访问数据标识区间右端值较小的目标容器集,再访问数据标识区间右端值较大的目标容器集;对于数据标识区间右端值相同的多个目标容器集,先访问数据标识区间左端值较大的目标容器集,再访问数据标识区间左端值较小的目标容器集。
124.具体的,建立每个目标容器集时为该目标容器集配置对应的数据标识区间(用于标识该目标容器集中的每个目标数据块均用于恢复数据标识区间指示的数据标识对应的数据)。因为每个数据标识区间包含一个左端值以及一个右端值,其中数据标识区间中的左端值都小于等于该数据标识区间中的右端值。更进一步的,针对目标容器集中的至少一个目标容器,按照从后至前的顺序访问(此处前后指存储数据块的顺序,即先获取最后存储数据块的目标容器中的数据块),在一个目标容器内,按照从后至前的顺序读取(此处前后指存储数据块的顺序,即先获取目标容器中最后存储的数据块)。
125.在一些具体实现方式中,若需要恢复按照前述数据压缩流程处理后的目标数据(压缩处理后各目标容器数据块排列可参阅图4中本技术数据处理方案),可以根据以下方式确定访问顺序。
126.具体的,当需要恢复图4中所述第二个数据时,首先,针对数据恢复所需的多个目标容器集(如图4中排成若干行若干列),先访问靠前的列(多个目标容器集中对应的数据区间标识cat.(x,y)中的y值较小的目标容器集);接着,在同一列的多个目标容器集中,先访问行数较大的(cat.(x,y)中的x值较大);最后,在同一个目标容器集内部,从后向前访问。例如,恢复第二个数据需要且仅需要cat.(1,2)、cat.(2,2)、cat.(1,3)以及cat.(2,3)这四个目标容器集,则访问顺序为:首先访问cat.(2,2),接着访问cat.(1,2),然后访问cat.(2,3),最后访问cat.(1,3)。
127.进一步的,还可以通过差量预写机制将预先获取的差量块先写入存储空间来解决所需数据块顺序混乱的问题,其中存储空间可以是负载或缓存,此处不做限定。
128.具体的,可以将数据恢复视为把各个数据块当做零件重新拼接出完整负载的过程。恢复出的数据负载wr往往是一个文件,数据恢复过程就是往wr这个文件中不断填充数据。差量块预写机制的步骤如下:由于有了针对不同目标容器集访问顺序的支持,可以保证在数据恢复的过程中,当访问到差量块dn时,其基础块bn还没有被访问到。因此,在访问到差量块dn时将dn预写到wr中,写入的位置为cn在wr中应该处于的位置(cn是dn差量解压后得到的块)。当后续访问到dn的基础块bn时,从wr中dn的预写位置中读回dn,并利用dn和bn差量解压得到cn,最终把cn写入到wr中应该处于的位置,覆盖到之前dn预写的位置。其中,备份空间可以位于硬盘驱动器,而用户空间即待恢复的负载wr位于的空间可以是固态硬盘。在实际应用中,若需恢复图4中第三个数据,则其中数据块类型的为第一数据块的数据块f’的恢复步骤可参照图6所示流程。
129.可以理解的是,本实施例中,也可以不将dn预写到wr中,而是保存在内存中的缓存中,同时在访问到bn时从缓存中获取dn来进行差量解压,本实施例不对dn预写或缓存的位置作具体限定。
130.本实施例中,进一步的解决了差量数据块与其对应的基础数据块无法连续访问的问题,解决了数据恢复过程中的重复访问以及跳跃访问的问题。
131.下面在前述数据处理方法的基础上,描述本技术实施例提供的数据处理装置,
132.请参阅图7,本技术实施例提供一种数据处理装置,包括:
133.确定单元701,用于确定用于恢复目标数据的每个目标数据块所在的目标容器集,其中所述目标容器集中仅包含所述目标数据的目标数据块,所述目标数据块为差量数据块或基础数据块;
134.获取单元702,用于确定多个所述目标容器集的访问顺序,按照所述访问顺序依次从每个所述目标容器集获取所述目标容器集存储的目标数据块;其中每个差量数据块的获取顺序早于所述差量数据块对应的基础数据块的获取顺序;
135.恢复单元703,用于按照各个所述目标数据块的获取顺序,恢复所述目标数据。
136.在一种具体实现方式中,每个所述目标容器集具有数据标识区间,所述数据标识区间包括至少一个数据标识,所述数据标识区间包括的数据标识为所述目标容器集中的各个目标数据块均用于且只用于参与恢复的数据的标识;
137.所述访问顺序为:先访问数据标识区间右端值较小的目标容器集,再访问数据标识区间右端值较大的目标容器集;对于数据标识区间右端值相同的多个目标容器集,先访问数据标识区间左端值较大的目标容器集,再访问数据标识区间左端值较小的目标容器集。
138.在一种具体实现方式中,所述恢复单元703,具体用于若所述目标数据块为差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
139.若所述目标数据块为基础数据块且恢复空间写有所述目标数据块对应的差量数据块,则将所述目标数据块与所述差量数据块进行差量解压,将所述恢复空间中的差量数据块更新为差量解压后的数据块;
140.若所述目标数据块为基础数据块且恢复空间未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间。
141.在一种具体实现方式中,所述恢复单元703,具体用于若所述目标数据块为差量数据块,则将所述目标数据块写入缓存;
142.若所述目标数据块为基础数据块且缓存有所述目标数据块对应的差量数据块,则将所述目标数据块与所述差量数据块进行差量解压,将差量解压后的数据块写入所述目标数据块对应的恢复空间;
143.若所述目标数据块为基础数据块且缓存未写有所述目标数据块对应的差量数据块,则将所述目标数据块写入目标数据块对应的恢复空间;
144.当各个所述目标数据块均写入所述目标数据块对应的恢复空间,将各个所述恢复空间的目标数据块组合为目标数据。
145.请参阅图8,本技术实施例提供一种数据处理装置,包括:
146.划分单元801,用于根据预设分块条件将目标数据划分为依次排列的多个目标数据块;
147.确定单元802,用于根据至少一个待定容器集中的数据块,确定每个所述目标数据块的数据块类型;
148.存储单元803,用于若目标数据块为第一数据块,则将所述目标数据块对应的已经存储的相似数据块从所述待定容器集迁移至第一目标容器集,并将所述目标数据对应的差量数据块存入第二目标容器集,其中所述差量数据块根据所述目标数据块以及所述相似数据块确定;
149.构建单元804,用于构建所述目标数据与对应容器集之间的对应关系,所述对应容器集为所述第一目标容器集以及所述第二目标容器集。
150.在一些具体实现方式中,所述存储单元803,还用于若目标数据块为第二数据块,
则将所述目标数据块对应的已经存储的相同数据块从所述待定容器集迁移至第三目标容器集;
151.若目标数据块为剩余数据块,则将所述目标数据块存入第二目标容器集,所述剩余数据块为所述多个目标数据块中除所述第一数据块以及所述第二数据块之外的目标数据块;
152.所述对应容器集或者为所述第三目标容器集或第二目标容器集。
153.在一些具体实现方式中,所述装置还包括:
154.所述划分单元801,还用于根据预设分段条件依次将所述多个目标数据块分为至少一个数据段;
155.所述确定单元802,还用于确定每个所述数据段中数据块类型为第一数据块的每个目标数据块对应的已经存储的相似数据块所在的目标待定容器集;
156.所述确定单元802,还用于若在一个数据段内目标待定容器集的指名次数不满足预设指名阈值,则将在所述一个数据段内所述目标待定容器集对应的每个所述目标数据块的数据块类型修改为剩余数据块。
157.图9是本技术实施例提供的一种数据处理装置结构示意图,该数据处理装置900可以包括一个或一个以上中央处理器(central processing units,cpu)901和存储器905,该存储器905中存储有一个或一个以上的应用程序或数据。
158.其中,存储器905可以是易失性存储或持久存储。存储在存储器905的程序可以包括一个或一个以上模块,每个模块可以包括对数据处理装置中的一系列指令操作。更进一步地,中央处理器901可以设置为与存储器905通信,在数据处理装置900上执行存储器905中的一系列指令操作。
159.数据处理装置900还可以包括一个或一个以上电源902,一个或一个以上有线或无线网络接口903,一个或一个以上输入输出接口904,和/或,一个或一个以上操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等。
160.该中央处理器901可以执行前述图1至图8所示实施例中数据处理装置所执行的操作,具体此处不再赘述。
161.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
162.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
163.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
164.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
165.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
166.本技术实施例还提供一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述的数据处理方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1