CN106980680A - 数据存储方法及存储设备 - Google Patents
数据存储方法及存储设备 Download PDFInfo
- Publication number
- CN106980680A CN106980680A CN201710203451.9A CN201710203451A CN106980680A CN 106980680 A CN106980680 A CN 106980680A CN 201710203451 A CN201710203451 A CN 201710203451A CN 106980680 A CN106980680 A CN 106980680A
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- length
- stored
- index
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法及存储设备,该方法包括:获取待存储文件;将该待存储文件划分为若干个数据块;该若干个数据块中至少有部分数据块的长度为预设长度;对于每一个数据块,若该数据块的长度为预设长度,基于第一索引库判断是否需存储该数据块,基于判断结果对该数据块进行处理并生成与该数据块对应的第一索引,将该第一索引存入该第一索引库;若该数据块的长度与该预设长度不同,基于第二索引库判断是否需存储该数据块,基于判断结果对该数据块进行处理并生成与该数据块对应的第二索引,将该第二索引存入该第二索引库。本申请的方案可以提高重复数据的删除概率和数据查找效率。
Description
技术领域
本发明涉及信息处理技术领域,更具体地说,涉及一种数据存储方法及存储设备。
背景技术
在数据存储/备份过程中,对于内容相同的数据,只保留其中一份进行存储,这样可以提高存储效率,降低数据占用的存储空间。而为了方便后续查找,除了存储数据,还需要建立索引库。
目前,较常用的一种数据存储方法是基于数据块实现的:假设需要对文件A进行存储或备份,则将文件A划分为若干个数据块,对于每一个数据块,计算该数据块的指纹,在索引库(索引库中存储有文件与指纹的对应关系,以及指纹与数据块的存储位置的对应关系)中查找是否存在与该数据块的指纹相同的指纹,若存在(说明该数据块的内容已被存储,该数据块不需要再存储了),则不存储该数据块,而只在索引库中增加文件A与该数据块的指纹的对应关系;若不存在,则存储该数据块,并在索引库中增加文件A与该数据块的指纹的对应关系,以及该数据块的指纹与该数据块的存储位置的对应关系。
为了达到更好的存储效果,在数据存储过程中,会综合使用定长分块和变长分块两种分块方式对文件进行分块,即部分文件采用定长分块方式进行切分,部分文件采用变长分块方式进行切分。采用定长分块方式时,得到的数据块的长度是固定的;采用变长分块方式时,得到的数据块的长度的变动的。发明人研究发现,目前在综合使用定长分块和变长分块两种数据分块方式进行数据存储时,采用变长分块的文件的索引库和采用定长分块的文件的索引库采分别单独存储,使得重复数据的删除概率较低,且后续进行数据查找时的查询效率较低。
发明内容
本发明的目的是提供一种数据存储方法及存储设备,以提高重复数据的删除概率和数据查找效率。
为实现上述目的,本发明提供了如下技术方案:
一种数据存储方法,包括:
获取待存储文件;
将所述待存储文件划分为若干个数据块;所述若干个数据块中至少有部分数据块的长度为预设长度;
对于每一个数据块,若所述数据块的长度为预设长度,基于第一索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第一索引,将所述第一索引存入所述第一索引库;
若所述数据块的长度与所述预设长度不同,基于第二索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第二索引,将所述第二索引存入所述第二索引库。
优选的,所述将所述待存储文件划分为若干个数据块包括:
采用定长分块方式或者变长分块方式将所述待存储文件划分为若干个数据块;
若采用定长分块方式,所述若干个数据块的长度均为所述预设长度;
若采用变长分块方式,所述若干个数据块中部分数据块的长度为所述预设长度。
优选的,采用变长分块方式将待存储文件划分为若干个数据块包括:
将长度为所述预设长度的滑动窗口在所述待存储文件的数据中滑动;
每将所述滑动窗口滑动一个步长,判断是否达到数据块切分条件;
若达到数据块切分条件,则将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将所述滑动窗口滑经过的且未切分的数据段确定为数据块。
优选的,所述判断是否达到数据块切分条件包括:
计算所述滑动窗口当前覆盖的目标数据的校验和;在第三索引库中查找是否存在所述校验和;所述第三索引库中存储有校验和与所述第一索引库中包含的哈希值之间的对应关系;若所述第三索引库中存在所述校验和,确定达到数据块切分条件。
优选的,采用变长分块方式将待存储文件划分为若干个数据块,还包括:
如果所述滑动窗口滑经过的数据段的长度是否达到所述预设长度,若将所述数据段确定为切分出的一个数据块。
另一方面,本申请实施例还提供了一种存储设备,包括:
通信接口,用于获取待存储文件;
处理器,用于将所述待存储文件划分为若干个数据块;所述若干个数据块中至少有部分数据块的长度为预设长度;对于每一个数据块,若所述数据块的长度为预设长度,基于第一索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第一索引,将所述第一索引存入所述第一索引库;若所述数据块的长度与所述预设长度不同,基于第二索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第二索引,将所述第二索引存入所述第二索引库。
优选的,所述处理器在将所述待存储文件划分为若干个数据块时,具体用于:
采用定长分块方式或者变长分块方式将所述待存储文件划分为若干个数据块;
若采用定长分块方式,所述若干个数据块的长度均为所述预设长度;
若采用变长分块方式,所述若干个数据块中部分数据块的长度为所述预设长度。
优选的,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,具体用于:
将长度为所述预设长度的滑动窗口在所述待存储文件的数据中滑动;
每将所述滑动窗口滑动一个步长,判断是否达到数据块切分条件;
若达到数据块切分条件,则将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将所述滑动窗口滑经过的且未切分的数据段确定为数据块。
优选的,所述处理器在判断是否达到数据块切分条件时,具体用于:
计算所述滑动窗口当前覆盖的目标数据的校验和;在第三索引库中查找是否存在所述校验和;所述第三索引库中存储有校验和与所述第一索引库中包含的哈希值之间的对应关系;若所述第三索引库中存在所述校验和,确定达到数据块切分条件。
优选的,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,还用于,如果所述滑动窗口滑经过的数据段的长度是否达到所述预设长度,若将所述数据段确定为切分出的一个数据块。
通过以上方案可知,本申请提供的一种数据存储方法和装置,在数据存储过程中,按照数据块的长度建立索引库,数据块的长度为预设长度的数据块建立一个索引库,而数据块的长度不是预设长度的数据块建立另一个索引库,从而当综合使用定长分块和变长分块两种数据分块方式进行数据存储时,部分通过变长分块方式划分得到的数据块(长度为预设长度的数据块)会与通过定长分块方式划分得到的数据块(长度为预设长度)共用同一个索引库,从而两个索引库中不会存在相同的索引,且索引总数相对于现有技术有所减少,提高了重复数据的删除概率和数据查找效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据存储方法一个实施例的流程示意图;
图2为本申请实施例提供的一种数据存储方法又一个实施例的流程示意图;
图3为本申请实施例提供的数据存储方法中采用滑动定长方式对待存储文件进行数据分块的一种流程示意图;
图4为本申请实施例的提供的一种存储设备一个实施例的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本申请一种数据存储方法一个实施例的流程示意图,本实施例的方法可以应用于存储设备,如,该存储设备可以为个人计算机,也该分布式存储系统或者集中式存储系统中的服务器。本实施例的方法可以包括:
101,获取待存储文件。
本申请实施例中将需要分块存储的文件称为待存储文件。
102,将该待存储文件划分为若干个数据块,该若干个数据块中至少有部分数据块的长度为预设长度。
其中,数据块的长度是指数据块的大小,如,预设长度可以为8比特,预设长度的数据块为8比特的数据块。
在本申请实施例中,将该待存储文件划分为若干数据块的方式可以采用定长分块方式进行切分,也可以是采用变长分块方式进行切分。
其中,采用定长分块方式进行切分也可以理解为按照定长分块方式对文件进行切分,该种方式为采用预先定义好的块大小对文件进行切分。如,预先定义的块大小为8比特,则文件中第1个比特至第8个比特可以分为一个数据块,相应的,文件中第9个比特至第16个比特的数据为一个数据块,以此类推。
与定长分块方式不同,变长分块方式为按照预定的算法,将文件切分为长度(或者说大小)不同的数据块。
可以理解的是,采用变长分块方式对文件进行分块的过程中,也可能会出现切分出的数据块的大小与定长分块方式预定义的块大小相同。如,定长分块方式中预定义的块大小为8比特,那么采用变长分块方式对文件进行切分的过程中,也可能切换出大小为8比特的数据块。为了后续能够将相同长度的数据块的索引存储到同一个索引库中,在本申请实施例中,该预设长度可以以定长分块方式中所设定的块大小为准,例如,定长分块方式所采用的预定义的块大小为16比特,则该预设长度可以为16比特。
相应的,如果采用定长分块方式将该待存储文件切换为若干个数据块,则该若干个数据块的长度均为该预设长度;如果采用变长分块方式将该待存储文件切换为若干数据块,则该若干个数据块中至少有部分数据块的长度为该预设长度。
可以理解的是,对于不同的待存储文件所需采用的分块方式有可能会有所不同,具体采取哪种分块方式可以根据实际需要选定。如,定长分块方式更适用于在追加写的场景,同时配合压缩来达到一定的去重效果;变长分块方式主要是解决类似备份场景中增量备份全量备份,修改写比较多的场景,能够比定长分块方式效果更显著。
103,对于每一个数据块,若该数据块的长度为预设长度,基于第一索引库判断是否需存储该数据块,基于判断结果对该数据块进行处理并生成与该数据块对应的第一索引,将该第一索引存入该第一索引库。
在本申请实施例中,通过第一索引库存储该预设长度的数据块的索引信息。可见,第一索引库中存储的是针对相同长度的数据块所建立的索引。
其中,根据该第一索引库可以判断数据库中是否存在该数据块,如果数据库中存储有与该数据块相同的数据块,则无需重复存储该数据块;如果数据库中未存储有该数据块,则需要将该数据块存储到数据库中。如,可以计算数据块的哈希值,并检测该第一索引库中是否存在该数据块的哈希值,如果不存在该数据块的哈希值,则说明数据库中不存在与该数据块相同的数据块;否则,则数据库中存在该数据块。
无论是否需要将该数据块存储到数据库中,为了可以定位出该待存储文件中该数据块的存储位置,都需要生成与该待存储文件以及该数据块对应的索引信息,为了便于区分,将为该待存储文件切分出的该数据块所生成的索引称为第一索引。
可以理解的是,在数据库中已经存储有该数据块的情况下,该第一索引数据库中必然也已经存在该数据块的标识与该数据块的存储地址的索引关系,因此,只需要构建该待存储文件与该数据块的标识对应关系,该对应关系即为第一索引。
如果数据库中未存储有该数据块,则将该数据块存储到数据库之后,需要建立该待存储文件与该数据块的标识,以及该数据块的标识与数据块的存储地址之间的对应关系。即,在该种情况下,第一索引除了包括待存储文件与该数据块的标识之间的对应关系之外,还包括数据块的标识与数据块的存储地址之间的对应关系。
需要说明的是,在本申请实施例中,索引中所包含的数据块的标识用于唯一标识该数据块。作为一种可选方式,该数据块的标识可以为数据块的哈希值,即利用哈希算法计算出的该数据块的哈希值,由于不同数据块所包含的数据不同,因此,不同数据块对应的哈希值也不同,从而通过哈希值可以唯一标识一个数据块。
104,若该数据块的长度与该预设长度不同,基于第二索引库判断是否需存储该数据块,基于判断结果对该数据块进行处理并生成与该数据块对应的第二索引,将该第二索引存入该第二索引库。
在本实施例中,通过第二索引库存储该预设长度之外的其他长度的数据块的索引信息。
由于定长分块方式所切换出的数据块的大小是相同的,而本申请中预设长度以定长分块方式所设定的预定大小为准,因此,第二索引库实际上是针对采用变长分块方式切分出的,且长度不属于该预设长度的数据块所构建的索引库。
基于该第二索引库判断是否存储该数据块的过程与前面基于第一索引库判断是否存储该数据块的过程相似,具体都是根据索引库判断数据库中是否存储有该数据块,并在数据库中未存储有该数据块的情况下,才存储该数据块,以避免重复存储,在此不再赘述。
在本申请实施例中,将第二索引库中,针对长度不属于预设长度的数据块所生成的索引称为第二索引。与前面生成第一索引相似,如,如果数据库中不存在该数据块,则生成该待存储文件的标识与该数据块的哈希值,以及该数据块的哈希值与该数据块的存储地址之间的索引关系;如果数据库中存在该数据块,则只需生成该待存储文件的标识与该数据块的哈希值的索引关系。
可见,本申请实施例中,在数据存储过程中,按照数据块的长度建立索引库,数据块的长度为预设长度的数据块建立一个索引库,而数据块的长度不是预设长度的数据块建立另一个索引库,从而当综合使用定长分块和变长分块两种数据分块方式进行数据存储时,部分通过变长分块方式划分得到的数据块(长度为预设长度的数据块)会与通过定长分块方式划分得到的数据块(长度为预设长度)共用同一个索引库,而由于不同长度的数据块不可能相同,两个不同长度的数据块所对应的哈希值等标识也不可能相同,因此,两个索引库中不会存在相同的索引,有利于减少索引总数,从而可以提高数据查找效率。
同时,现有的采用变长分块的文件的索引库和采用定长分块的文件的索引库分别单独存储,这样,采用不同分块方式所切分出的数据块会按照不同的索引块来判断是否存在重复存储,就可能导致数据块的重复存储,进而使得两个索引库中存在相同哈希值(相同数据块的标识)。而与现有的方式相比,本申请的针对预设长度以及不属于预设长度的数据块分别设置索引数据库,只要数据块的长度都为预设长度,就会将数据块的索引存储到同一个索引库中,从而避免该预设长度的相同数据块重复存储,有利于减少数据重复存储的概率,从而提高重复数据的删除概率。
参见图2,其示出了本申请一种数据存储方法又一个实施例的流程示意图,本实施例的方法可以应用于具有数据处理功能的存储设备,本实施例的方法可以包括:
201,获取待存储文件;
202,确定对该待存储文件的分块方式;
其中,该分块方式可以根据实际需要选择或者设定,在此不加以限制。
203,如果分块方式为变长分块方式,按照变长分块算法,对该待存储文件进行分块,并执行步骤204;
其中,变长分块算法可以有多种,对于采用任意变长分块算法对该待存储文件进行分块的方式均适用于本申请实施例。
可选的,为了使得采用变成分块方式对该待存储文件进行分块的过程中,能够产生更多预设长度的数据块,本申请可以该变长分块算法可以为滑动定长分块方式,其中,滑动定长分块的滑动窗口的长度可以为该预设长度。
204,对于该待存储文件切分出的每个数据块,判断该数据块的长度是否为预设长度,如果是,则执行步骤S206;如果否,则执行步骤209;
如果数据块的长度为预设长度,则通过第一索引库管理以及存储该待存储文件与该数据块之间的索引关系;否则,则通过第二索引库管理以及存储该待存储文件与数据块之间的索引关系。
205,如果分块方式为定长分块方式,则按照预设长度,将该待存储文件划分为若干个该预设长度的数据块,并执行步骤206;
其中,该预定长度为定长分块算法中设定的分块大小。
206,对于切分出的每一个数据块,计算该数据块的哈希值,并检索第一索引库中是否存在该哈希值,如果是,则执行步骤207,如果否,则执行步骤208;
207,生成包含该待存储文件的标识与数据块的哈希值之间的第一对应关系,并将包含该第一对应关系的第一索引存储到第一索引库;
即,该第一对应关系为第一索引所包含的内容。
可以理解的是,在第一索引库中包含该数据块的哈希值的情况下,则说明数据库中已经存储了该数据块,而该数据块为该待存储文件之外的其他文件切分得到的,为了避免数据重复,不会将该待存储文件切分得到的数据块再重复存储到数据库中,而为了避免后续删除该其他文件时,导致将该数据块删除,而影响到该待存储文件的完整性,因此,在该步骤206的同时,还可以将该数据块的引用计数加一。其中,该引用计数表明包含该数据块的文件的个数,如,文件A切分出数据块M,而文件B也切分出相同的数据块M,则数据块M的引用计数为2。
相应的,当删除引用该数据块的一个文件时,则将该数据块的引用计数减一。如果该数据块的引用计数为零时,则删除该数据块。
208,将数据块存储到数据库,并生成包含该待存储文件的标识与数据块的哈希值之间的第一对应关系,以及数据块的哈希值与数据块的存储地址之间的第二对应关系,并将包含第二对应关系以及第二对应关系的第一索引存储到该第一索引库。
即,第一索引包括第一对应关系以及该第一对应关系。
209,计算该数据块的哈希值,并检索第二索引库中是否存在该哈希值,如果是,则执行步骤210;如果否,则执行步骤211;
210,生成包含该待存储文件的标识与该数据块的哈希值之间的第三对应关系,并将包含该第三对应关系的第二索引存储到第二索引库;
即,该第三对应关系为第一索引所包含的内容。
为了便于与前面预设长度的数据块的哈希值与该待存储文件的标识之间的第一对应关系进行区分,对于不属于预设长度的数据块,将该待存储文件的标识与该数据块的哈希值之间的对应关系称为第三对应关系。
211,将数据块存储到数据库,并生成包含该待存储文件的标识与数据块的哈希值之间的第三对应关系,以及数据块的哈希值与数据块的存储地址之间的第四对应关系,并将包含第三对应关系以及第四对应关系的第二索引存储到该第二索引库。
为了便于与前面预设长度的数据块的哈希值与该数据块的存储地址之间的第二对应关系进行区分,对于不属于预设长度的数据块,将该数据块的哈希值与该数据块的存储地址之间的对应关系称为第四对应关系。
可以理解的是,在本申请以上实施例中,变长分块方式可以有多种,可选的,为了能够最大限度的减少索引数量,并减少数据重复存储的概率,本申请实施例中变长分块方式具体可以为滑动定长分块,所谓滑动定长分块为利用
如,参见图3,其示出了本申请的数据存储方法中采用滑动定长分块方式对待存储文件进行切分,以完成对待存储文件进行变长分块的一种实现流程,该实现流程可以包括:
301,利用窗口大小为预设长度的滑动窗口在该待存储文件的数据中滑动;
其中,每次滑动一个步长,该步长可以根据需要,如该步长为一个比特。
302,每将该滑动窗口滑动一个步长,检测该待存储文件的数据中,该滑动窗口滑经且未切分的数据段的长度是否等于预设长度,如果是,则执行步骤303;如果否,则执行步骤304;
其中,滑动窗口滑过的滑过且未切分的数据段的长度等于预设长度为确定一种满足数据块切分条件,即确定数据切分边界的条件。
303,如果该数据段的长度为预设长度,则将该数据段切分为一个数据块,并计算该滑动窗口当前覆盖的目标数据的校验和;
如果该数据段的长度为预设长度,则该数据段构成一个数据块,而且由于该数据块的长度为预设长度,则按照前面对于切分出的预设长度的数据块的存储以及生成索引的方式进行处理,在此不再赘述。
同时,为了验证滑动窗口内的目标数据是否可以被切分为一个数据块,本申请还需要计算该目标数据的校验和,其中,计算该校验和的方式可以采用现有的任意方式,在此不加以限制。
可选的,在将该预设长度的数据段切分为一个数据块之后,由于会将该数据块存储到数据库,同时,会在第一索引库中生成与该数据段对应的第一索引,这样,为了后续对该待存储文件进行数据分块时,为了能够验证该待存储文件中是否存在与该数据段相同的数据块,还需要计算该数据段的校验和,并将该数据段的校验和与该数据段的哈希值进行关联存储到第三索引数据库中。
304,计算该滑动窗口当前覆盖的目标数据的校验和;
如果滑动窗口滑经的数据段的长度不足该预设长度,则说明滑动窗口之前的数据不符合数据块切分条件,则仅仅计算该滑动窗口内的目标数据的校验和,以便验证该目标数据是否需要构成一个数据块。
305,在第三索引库中查找是否存在计算得到的校验和;
其中,该第三索引库中存储有校验和与第一索引库中哈希值的对应关系。也就是说,如果第一索引库中存储有某个数据块的哈希值,则确定该哈希值可能对应的校验和,并在第三索引库中存储校验和与相应的哈希值的对应关系。
可以理解的是,由于校验和并不具有唯一性,因此,不同数据的校验和有可能相同,因此,同一个哈希值有可能对应着多个校验和。
如果第三索引库中存在该目标数据的校验和,则说明第一索引库中有可能存在该目标数据的哈希值,也就是说,数据库中有可能存在与该目标数据相同的数据块,而如果数据库中存在与该目标数据相同的数据块,那么为了达到减少数据存储量的目的,可以将该目标数据构成一个数据块。而为了验证数据库中是否存在该目标数据,则需要进一步计算该数据块的哈希值,即执行后续的步骤306。
306,若该第三索引库中存在计算得到的校验和,则计算该目标数据的哈希值;
307,如果该第一索引库中存在该目标数据的哈希值,将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将该滑动窗口滑经过的且未切分的数据段确定为数据块。
可见,在确定出滑动窗口当前覆盖的目标数据的校验和之后,如果在第三索引库中存在该计算得到的校验和,则确定达到数据块切分条件,将该目标数据构成一个数据块。
当然,本申请实施例仅仅是以上提到的两种数据块切分条件为例进行介绍,但是可以理解的是,在实际应用中还可以根据需要设定其他的数据块切分条件,在此不加以限制。
可以理解的是,不断重复以上步骤302至306可以最终完成将该待存储文件切换为若干个数据块。
需要说明的是,与计算数据的哈希值相比,计算数据的校验和所需的计算量较小,计算速度更快,因此,本申请在确定出滑动窗口覆盖的目标数据之后,先计算该目标数据的校验和,并通过判断第三索引库中是否存在该校验和,来预估该第一索引库中是否可能存在该目标数据的哈希值(也可以认为是预估该数据库中是否可能存在该目标数据)的目的,并在第三索引库存在该校验和的前提下,再计算该目标数据的哈希值,并与第一索引库中的哈希值进行比对,以减少数据处理量。但是可以理解的是,在实际应用中,也可以不执行“计算该滑动窗口当前覆盖的目标数据的校验和”以及“在第三索引库中查找是否存在计算得到的校验和”的操作,而直接计算目标数据的哈希值,并检测该第一索引库中存在该目标数据的哈希值,也同样适用于本申请实施例,在此不加以限制。
另一方面,本申请实施例还提供了一种存储设备,如,参见图4,其示出了本申请一种存储设备的组成结构示意图,该存储设备400包括:
通信接口401,用于获取待存储文件;
处理器402,用于将所述待存储文件划分为若干个数据块;所述若干个数据块中至少有部分数据块的长度为预设长度;对于每一个数据块,若所述数据块的长度为预设长度,基于第一索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第一索引,将所述第一索引存入所述第一索引库;若所述数据块的长度与所述预设长度不同,基于第二索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第二索引,将所述第二索引存入所述第二索引库。
当然,该存储设备还可以包括存储器403,用于存储该处理器执行上述操作所需的程序。
可选的,存储器、处理器以及通信接口可以通过通信总线相连。
可选的,所述处理器在将所述待存储文件划分为若干个数据块时,具体用于:
采用定长分块方式或者变长分块方式将所述待存储文件划分为若干个数据块;
若采用定长分块方式,所述若干个数据块的长度均为所述预设长度;
若采用变长分块方式,所述若干个数据块中部分数据块的长度为所述预设长度。
可选的,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,具体用于:
将长度为所述预设长度的滑动窗口在所述待存储文件的数据中滑动;
每将所述滑动窗口滑动一个步长,判断是否达到数据块切分条件;
若达到数据块切分条件,则将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将所述滑动窗口滑经过的且未切分的数据段确定为数据块。
可选的,所述处理器在判断是否达到数据块切分条件时,具体用于:
计算所述滑动窗口当前覆盖的目标数据的校验和;在第三索引库中查找是否存在所述校验和;所述第三索引库中存储有校验和与所述第一索引库中包含的哈希值之间的对应关系;若所述第三索引库中存在所述校验和,确定达到数据块切分条件。
可选的,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,还用于,如果所述滑动窗口滑经过的数据段的长度是否达到所述预设长度,若将所述数据段确定为切分出的一个数据块。
本申请所出现的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示的以外的顺序实施。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取待存储文件;
将所述待存储文件划分为若干个数据块;所述若干个数据块中至少有部分数据块的长度为预设长度;
对于每一个数据块,若所述数据块的长度为预设长度,基于第一索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第一索引,将所述第一索引存入所述第一索引库;
若所述数据块的长度与所述预设长度不同,基于第二索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第二索引,将所述第二索引存入所述第二索引库。
2.根据权利要求1所述的方法,其特征在于,所述将所述待存储文件划分为若干个数据块包括:
采用定长分块方式或者变长分块方式将所述待存储文件划分为若干个数据块;
若采用定长分块方式,所述若干个数据块的长度均为所述预设长度;
若采用变长分块方式,所述若干个数据块中部分数据块的长度为所述预设长度。
3.根据权利要求2所述的方法,其特征在于,所述采用变长分块方式将待存储文件划分为若干个数据块包括:
将长度为所述预设长度的滑动窗口在所述待存储文件的数据中滑动;
每将所述滑动窗口滑动一个步长,判断是否达到数据块切分条件;
若达到数据块切分条件,则将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将所述滑动窗口滑经的且未切分的数据段确定为数据块。
4.根据权利要求3所述的方法,其特征在于,所述判断是否达到数据块切分条件包括:
计算所述滑动窗口当前覆盖的目标数据的校验和;在第三索引库中查找是否存在所述校验和;所述第三索引库中存储有校验和与所述第一索引库中包含的哈希值之间的对应关系;若所述第三索引库中存在所述校验和,确定达到数据块切分条件。
5.根据权利要求3所述的方法,其特征在于,所述采用变长分块方式将待存储文件划分为若干个数据块,还包括:
如果所述滑动窗口滑经过的数据段的长度是否达到所述预设长度,若将所述数据段确定为切分出的一个数据块。
6.一种存储设备,其特征在于,包括:
通信接口,用于获取待存储文件;
处理器,用于将所述待存储文件划分为若干个数据块;所述若干个数据块中至少有部分数据块的长度为预设长度;对于每一个数据块,若所述数据块的长度为预设长度,基于第一索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第一索引,将所述第一索引存入所述第一索引库;若所述数据块的长度与所述预设长度不同,基于第二索引库判断是否需存储所述数据块,基于判断结果对所述数据块进行处理并生成与所述数据块对应的第二索引,将所述第二索引存入所述第二索引库。
7.根据权利要求6所述的存储设备,其特征在于,所述处理器在将所述待存储文件划分为若干个数据块时,具体用于:
采用定长分块方式或者变长分块方式将所述待存储文件划分为若干个数据块;
若采用定长分块方式,所述若干个数据块的长度均为所述预设长度;
若采用变长分块方式,所述若干个数据块中部分数据块的长度为所述预设长度。
8.根据权利要求7所述的存储设备,其特征在于,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,具体用于:
将长度为所述预设长度的滑动窗口在所述待存储文件的数据中滑动;
每将所述滑动窗口滑动一个步长,判断是否达到数据块切分条件;
若达到数据块切分条件,则将滑动窗口当前覆盖的目标数据确定为切分出的一个数据块,并将所述滑动窗口滑经的且未切分的数据段确定为数据块。
9.根据权利要求8所述的存储设备,其特征在于,所述处理器在判断是否达到数据块切分条件时,具体用于:
计算所述滑动窗口当前覆盖的目标数据的校验和;在第三索引库中查找是否存在所述校验和;所述第三索引库中存储有校验和与所述第一索引库中包含的哈希值之间的对应关系;若所述第三索引库中存在所述校验和,确定达到数据块切分条件。
10.根据权利要求8所述的存储设备,其特征在于,所述处理器在采用变长分块方式将待存储文件划分为若干个数据块时,还用于,如果所述滑动窗口滑经过的数据段的长度是否达到所述预设长度,若将所述数据段确定为切分出的一个数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710203451.9A CN106980680B (zh) | 2017-03-30 | 2017-03-30 | 数据存储方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710203451.9A CN106980680B (zh) | 2017-03-30 | 2017-03-30 | 数据存储方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106980680A true CN106980680A (zh) | 2017-07-25 |
CN106980680B CN106980680B (zh) | 2020-11-20 |
Family
ID=59339693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710203451.9A Active CN106980680B (zh) | 2017-03-30 | 2017-03-30 | 数据存储方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106980680B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324998A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种文件处理方法、装置及系统 |
CN111143587A (zh) * | 2019-12-24 | 2020-05-12 | 深圳云天励飞技术有限公司 | 一种数据检索方法、装置及电子设备 |
CN113297321A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN116910051A (zh) * | 2023-09-13 | 2023-10-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN117609152A (zh) * | 2023-10-27 | 2024-02-27 | 广州致远仪器有限公司 | 一种数据回读方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385341B1 (en) * | 1997-04-17 | 2002-05-07 | Microsoft Corporation | Technique for decoding variable length data codes |
CN102323958A (zh) * | 2011-10-27 | 2012-01-18 | 上海文广互动电视有限公司 | 重复数据删除方法 |
CN102467571A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 重复数据删除的数据区块切分方法与新增方法 |
CN105701096A (zh) * | 2014-11-25 | 2016-06-22 | 腾讯科技(深圳)有限公司 | 索引生成方法、数据查询方法、装置及系统 |
CN105808169A (zh) * | 2016-03-14 | 2016-07-27 | 联想(北京)有限公司 | 用于数据去重的方法、装置和系统 |
CN106294352A (zh) * | 2015-05-13 | 2017-01-04 | 姚猛 | 一种文件处理方法、装置和文件系统 |
-
2017
- 2017-03-30 CN CN201710203451.9A patent/CN106980680B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385341B1 (en) * | 1997-04-17 | 2002-05-07 | Microsoft Corporation | Technique for decoding variable length data codes |
CN102467571A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 重复数据删除的数据区块切分方法与新增方法 |
CN102323958A (zh) * | 2011-10-27 | 2012-01-18 | 上海文广互动电视有限公司 | 重复数据删除方法 |
CN105701096A (zh) * | 2014-11-25 | 2016-06-22 | 腾讯科技(深圳)有限公司 | 索引生成方法、数据查询方法、装置及系统 |
CN106294352A (zh) * | 2015-05-13 | 2017-01-04 | 姚猛 | 一种文件处理方法、装置和文件系统 |
CN105808169A (zh) * | 2016-03-14 | 2016-07-27 | 联想(北京)有限公司 | 用于数据去重的方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
张甲燃: "重复数据删除技术研究", 《万方》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324998A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种文件处理方法、装置及系统 |
CN111143587A (zh) * | 2019-12-24 | 2020-05-12 | 深圳云天励飞技术有限公司 | 一种数据检索方法、装置及电子设备 |
CN113297321A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN116910051A (zh) * | 2023-09-13 | 2023-10-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN116910051B (zh) * | 2023-09-13 | 2024-01-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN117609152A (zh) * | 2023-10-27 | 2024-02-27 | 广州致远仪器有限公司 | 一种数据回读方法、装置、设备及存储介质 |
CN117609152B (zh) * | 2023-10-27 | 2024-09-06 | 广州致远仪器有限公司 | 一种数据回读方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106980680B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106980680A (zh) | 数据存储方法及存储设备 | |
CN105630955B (zh) | 一种高效动态的数据集合成员管理方法 | |
CN103870514B (zh) | 重复数据删除方法和装置 | |
US20150127621A1 (en) | Use of solid state storage devices and the like in data deduplication | |
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
EP3217298A1 (en) | Data processing method and apparatus in cluster system | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN103189867A (zh) | 重复数据检索方法及设备 | |
CN103677674B (zh) | 一种数据处理方法及装置 | |
CN111552692B (zh) | 一种加减法布谷鸟过滤器 | |
CN102682086B (zh) | 数据分块方法及设备 | |
CN102467571A (zh) | 重复数据删除的数据区块切分方法与新增方法 | |
CN103067525A (zh) | 一种基于特征码的云存储数据备份方法 | |
CN103914522A (zh) | 一种应用于云存储重复数据删除的数据块合并方法 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN104750432B (zh) | 一种数据存储方法及装置 | |
CN103324699A (zh) | 一种适应大数据应用的快速重复数据删除方法 | |
CN108093024B (zh) | 一种基于数据频度的分类路由方法及装置 | |
EP2778921B1 (en) | A method and a system for distributed processing of a dataset | |
CN107391761A (zh) | 一种基于重复数据删除技术的数据管理方法及装置 | |
CN104252457A (zh) | 一种用于对数据集合进行管理的方法与设备 | |
CN101751475A (zh) | 号段记录压缩方法及其装置 | |
US11307788B2 (en) | Sampling fingerprints in bins | |
CN104956340A (zh) | 可扩展数据重复删除 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |