CN108573172B - 一种数据校验、存储方法及装置 - Google Patents
一种数据校验、存储方法及装置 Download PDFInfo
- Publication number
- CN108573172B CN108573172B CN201710134998.8A CN201710134998A CN108573172B CN 108573172 B CN108573172 B CN 108573172B CN 201710134998 A CN201710134998 A CN 201710134998A CN 108573172 B CN108573172 B CN 108573172B
- Authority
- CN
- China
- Prior art keywords
- target data
- data segments
- check value
- segments
- storage object
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据校验、存储方法及装置,存储对象中对应存储有各个数据段及数据段的第一校验值;当需要获取目标数据时,在存储对象中确定组成目标数据的N个目标数据段;依次读取M个目标数据段及其第一校验值,M小于N;也就是说,每次读取一部分目标数据段,对这一部分目标数据段进行校验,得到各个第二校验值;如果这一部分目标数据段的第一校验值与对应的第二校验值全部相同,继续获取下一部分目标数据段。由此可见,本方案中,将目标数据分段下载及校验,校验速度快、效率高;另外,当某一部分目标数据段的第一校验值与对应的第二校验值不全相同时,不再继续下载校验其他目标数据段,减少了大量无意义的操作。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据校验、存储方法及装置。
背景技术
一般来说,从存储对象中获得数据后,为了保证数据的完整性,需要进行数据校验。数据校验通常包括:利用校验算法对存储对象中的原始数据进行校验,得到一个校验值;利用该校验算法对所获得的数据进行校验,得到另一个校验值;将这两个校验值进行比较,如果相同,表示所获得的数据是完整的。
上述方案中,将存储对象中的数据全部下载到自身设备之后,才能进行数据校验。如果数据较大,下载过程及校验过程都会耗费较多时间,校验速度慢,效率低。
发明内容
本发明实施例的目的在于提供一种数据校验、存储方法及装置,提高校验速度及效率。
为达到上述目的,本发明实施例公开了一种数据校验方法,包括:
在存储对象存储的数据段中,确定组成目标数据的N个目标数据段,所述N大于1;
从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N;
分别对所获取的M个目标数据段进行校验,得到每个第二校验值;
针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;
如果相同,判断是否获取到所述N个目标数据段,如果未获取到所述N个目标数据段,返回执行所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤;
直至获取到所述N个目标数据段、且确定所述N个目标数据段中每个目标数据段的第一校验值与第二校验值都相同的情况下,将所述N个目标数据段组成校验后目标数据。
可选的,在所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤之前,还可以包括:
确定所述N个目标数据段的读取顺序;
所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤,包括:
根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
可选的,所述根据所确定的顺序,每次读取M个目标数据段的步骤,包括:
根据所确定的顺序,确定M个当前目标数据段;
根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段;
所述读取全部待读取目标数据段的步骤,包括:
根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段。
为达到上述目的,本发明实施例还公开了一种数据存储方法,包括:
利用预设切分规则,将待存储数据切分成至少两个数据段;
对所述至少两个数据段进行校验,分别得到每个数据段的第一校验值;
对应存储每个数据段及其第一校验值。
可选的,所述对应存储每个数据段及其第一校验值的步骤,可以包括:
对所述第一校验值进行散列运算,得到所述待存储数据对应的散列值;
根据所述散列值,判断所述待存储数据是否完整;
如果是,对应存储每个数据段及其第一校验值,或者,对应存储每个数据段、每个第一校验值及所述散列值。
可选的,在所述对应存储每个数据段及其第一校验值的步骤之后,还包括:
记录第一校验值的存储时刻;
当所记录的存储时刻满足预设删除规则时,删除所述第一校验值;
或者,在所述对应存储每个数据段、每个第一校验值及所述散列值的步骤之后,还包括:
记录第一校验值及所述散列值的存储时刻;
当所记录的存储时刻满足预设删除规则时,删除所述第一校验值及所述散列值。
为达到上述目的,本发明实施例还公开了一种数据校验装置,包括:
第一确定模块,用于在存储对象存储的数据段中,确定组成目标数据的N个目标数据段,所述N大于1;
获取模块,用于从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N;
第一校验模块,用于分别对所获取的M个目标数据段进行校验,得到每个第二校验值;
第一判断模块,用于针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;如果相同,触发第二判断模块;
第二判断模块,用于判断是否获取到所述N个目标数据段,如果否,触发所述获取模块,如果是,触发组成模块;
组成模块,用于将所述N个目标数据段组成校验后目标数据。
可选的,所述装置还可以包括:
第二确定模块,用于确定所述N个目标数据段的读取顺序;
所述获取模块,具体可以用于:
根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
可选的,所述获取模块,具体可以用于:
根据所确定的顺序,确定M个当前目标数据段;
根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段、及每个当前目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段、及每个待读取目标数据段的第一校验值。
为达到上述目的,本发明实施例还公开了一种数据存储装置,包括:
切分模块,用于利用预设切分规则,将待存储数据切分成至少两个数据段;
第二校验模块,用于对所述至少两个数据段进行校验,分别得到每个数据段的第一校验值;
存储模块,用于对应存储每个数据段及其第一校验值。
可选的,所述存储模块,具体可以用于:
对所述第一校验值进行散列运算,得到所述待存储数据对应的散列值;
根据所述散列值,判断所述待存储数据是否完整;
如果是,对应存储每个数据段及其第一校验值,或者,对应存储每个数据段、每个第一校验值及所述散列值。
可选的,所述装置还可以包括:
记录模块,用于记录第一校验值的存储时刻;
删除模块,用于当所记录的存储时刻满足预设删除规则时,删除所述第一校验值;
或者,所述记录模块,用于记录第一校验值及所述散列值的存储时刻;
所述删除模块,用于当所记录的存储时刻满足预设删除规则时,删除所述第一校验值及所述散列值。
应用本发明实施例,存储对象中对应存储有各个数据段及数据段的第一校验值;当需要获取目标数据时,在存储对象中确定组成目标数据的N个目标数据段;依次读取M个目标数据段及其第一校验值,M小于N;也就是说,每次读取一部分目标数据段,对这一部分目标数据段进行校验,得到各个第二校验值;如果这一部分目标数据段的第一校验值与对应的第二校验值全部相同,继续获取下一部分目标数据段。由此可见,本方案中,将目标数据分段下载及校验,而不是将目标数据全部下载后再进行校验;分段下载及校验,校验速度快、效率高;另外,当某一部分目标数据段的第一校验值与对应的第二校验值不全相同时,也就是目标数据不完整时,不再继续下载校验其他目标数据段,相比于现有方案中,将全部目标数据下载并校验后发现目标数据不完整,减少了大量无意义的操作。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的流程示意图;
图2为本发明实施例中数据存储的一种具体实施方式;
图3为本发明实施例提供的一种数据校验方法的流程示意图;
图4为本发明实施例中数据校验的一种具体实施方式;
图5为本发明实施例提供的一种数据存储装置的结构示意图;
图6为本发明实施例提供的一种数据校验装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决上述技术问题,本发明实施例提供了一种数据校验、存储方法及装置。数据校验方法及装置可以应用于需要从存储对象中获取数据的各种电子设备,比如,手机、电脑等各种终端等,具体不做限定。数据存储方法可以应用于存储数据的存储对象中,该存储对象可以为存储节点、存储服务器等,具体不做限定。下面首先对本发明实施例提供的数据存储方法进行详细说明。
图1为本发明实施例提供的一种数据存储方法的流程示意图,包括:
S101:利用预设切分规则,将待存储数据切分成至少两个数据段。
该切分规则可以根据实际情况进行设定,比如,可以将数据段的大小设定为固定值,按照设定的数据段的大小,对待存储数据进行切分。
或者,每个数据段的大小也可以不相同,这种情况下,记录待存储数据切分成的每个数据段的大小。
S102:对所述至少两个数据段进行校验,分别得到每个数据段的第一校验值。
本领域技术人员可以理解,校验算法有多种,比如,MD5算法(Message DigestAlgorithm 5,消息摘要算法)算法,CRC(Cyclic Redundancy Check,循环冗余校验)算法等,具体不做限定。
利用预先设定的校验算法对切分得到的每个数据段进行校验,得到每个数据段的第一校验值。
S103:对应存储每个数据段及其第一校验值。
作为一种实施方式,可以对所述第一校验值进行散列运算,得到所述待存储数据对应的散列值;根据所述散列值,判断所述待存储数据是否完整;如果是,对应存储每个数据段及其第一校验值,或者,对应存储每个数据段、每个第一校验值及所述散列值。
本领域技术人员可以理解,散列运算也就是Hash运算,散列值也就是Hash值,通过Hash值可以判断数据是否完整。也就是说,在本实施方式中,仅在待存储数据完整的情况下,对其进行存储,如果待存储数据不完整,不对其进行存储,提高了存储数据的完整性;另外,在待存储数据不完整的情况下,还可以输出提示信息,提示相关人员进行后续处理。
需要说明的是,可以存储该Hash值,也可以不存储该Hash值。
如果没有存储Hash值,则可以记录第一校验值的存储时刻;当所记录的存储时刻满足预设删除规则时,删除所述第一校验值。
如果存储了Hash值,则可以记录第一校验值及所述散列值的存储时刻;当所记录的存储时刻满足预设删除规则时,删除所述第一校验值及所述散列值。
可以理解,存储对象中存储的校验值及散列值会越来越多,占用越来越多的存储空间,因此,需要对存储对象中的校验值及散列值进行清理。具体的,可以根据校验值及散列值的存储时刻对其进行清理。
该预设删除规则可以根据实际情况进行设定。比如,可以为:将存储时长大于设定阈值的校验值及散列值删除。举例来说,如果该阈值为一个月,也就是说,将存储时长大于一个月的校验值及散列值删除。或者,该预设删除规则可以为:当存储的校验值及散列值的数量大于设定阈值时,删除存储时刻最早的预设数量个校验值及散列值。或者,该预设删除规则也可以为其他,具体不做限定。
作为数据存储的一种具体实施方式,可以如图2所示,图2中的数据A、数据B、数据C分别为一份独立的数据,一份独立的数据也可以表示为File block,数据A也可以表示为File block A,数据B也可以表示为File block B,数据C也可以表示为File block C。
图2中,将每份数据切分为多份数据段,切分后的数据段也可以表示为Filesegment。根据切分后的数据段,生成索引文件,也就是Index file,索引文件中包含:数据段号(Number)、第一校验值(Effect Value)、第一校验值的生成时刻(也可以理解为存储时刻,Generation Time)、第一校验值的存储周期(Storge Cycle);还包含散列值(Hash forall segments)、散列值对应的数据段的数量(Numbers of segments)、散列值的生成时刻(也可以理解为存储时刻,Generation Time)、散列值的存储周期(Storge Cycle)。
图2中还可以包含存储对象,存储对象中存储有上述数据段及索引文件,该存储对象可以为磁盘(Disk)或者其他。
需要说明的是,图2所示实施方式中存储有校验值及散列值的存储周期,上述预设删除规则也可以针对存储周期进行设定,比如,将存储周期大于预设阈值的校验值及散列值删除,等等。
图3为本发明实施例提供的一种数据校验方法的流程示意图,包括:
S301:在存储对象存储的数据段中,确定组成目标数据的N个目标数据段。所述N大于1。
需要说明的是,图3所示实施例可以基于图1所示实施例提供的数据存储方法进行数据校验,或者,也可以基于其他数据存储方法进行数据校验。数据存储过程中,存储对象将数据切分成多个数据段,并得到每个数据段的第一校验值;也就是说,存储对象中对应存储有各个数据段及数据段的第一校验值。
本领域技术人员可以理解,将同一份数据切分成多个数据段进行存储时,多个数据段可以携带有标识信息,该标识信息可以表示这多个数据段属于同一份数据。
举个简单的例子:数据A被切分成6个数据段:A1、A2、A3、A4、A5、A6,这6个数据段中携带有标识信息A表示自身属于数据A;另外,这6个数据段中还携带有序号标识信息(1、2、3、4、5、6),表示自身为数据A的第几段。
假设某设备需要获取数据A,也就是说,数据A为目标数据,根据上述标识信息,可以确定出组成目标数据的6个目标数据段:A1、A2、A3、A4、A5、A6。
S302:从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值。
其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N。
M可以根据实际情况进行设定,比如,M可以为1、或者2,具体不做限定。M要小于N,也就是说,至少要在存储对象中进行两次读取,才能获取完整的目标数据。具体的,每次读取哪个或者哪几个数据段可以是随机的,或者,也可以顺序读取各数据段。
作为一种实施方式,在S302之前,可以先确定所述N个目标数据段的读取顺序;然后,S302包括:根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
根据上面描述,各个数据段中可以携带有标识自身为第几段数据段的标识信息,比如上述序号标识信息,可以根据该序号标识信息确定目标数据段的读取顺序,这样可以避免重复读取相同的目标数据段。
在上述例子中,M可以为2,每次读取2个目标数据段,读取顺序可以为:第一次读取A1、A2及A1、A2的第一校验值,第二次读取A3、A4及A3、A4的第一校验值,第三次读取A5、A6及A5、A6的第一校验值。
另外,需要说明的是,如果目标数据段的数量N不能被M整除,比如,N为7,M为2,也就是上述例子中将A切分为7个数据段,其中还包括A7;这种情况下,需要进行四次读取,进行第四次读取时,待读取目标数据段仅剩A7,也就是说,待读取目标数据段的数量1小于M;此时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值,也就是读取A7及A7的第一校验值。
本领域技术人员可以理解,一般来说,对数据进行存储时,即使同一份数据也通常存储在不相邻的位置,这种情况下,可以根据数据段的大小,读取出一个数据段。
本实施例中,各数据段的大小可以相同或不同,执行本方案的设备需要预先获取每个目标数据段的大小。作为一种实施方式,存储对象中可以存储有每个数据段的大小,这样,执行本方案的设备可以从存储对象中获取每个目标数据段的大小;或者,也可以采用其他方式获取目标数据段的大小,具体不做限定。
作为一种实施方式,可以根据所确定的顺序,确定M个当前目标数据段;根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段;当所述存储对象中待读取目标数据段的数量小于M时,根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段。
延续上述例子,目标数据为A,目标数据段为:A1、A2、A3、A4、A5、A6,M为2;第一次读取A1、A2及A1、A2的第一校验值,也就是说,进行第一次读取时,M个当前目标数据段为A1、A2。
假设A1和A2的大小均为100MB,则在存储对象中,分别从各个存储位置,读取出A1,当读取的数据量到达100MB时,A1读取完毕;再从各个存储位置,读取出A2,当读取的数据量到达100MB时,A2读取完毕。另外,如图2所示,存储对象中存储有各数据段的第一校验值,可以一并读取出A1、A2的第一校验值。
读取其他目标数据段的方式类似,不再赘述。
S303:分别对所获取的M个目标数据段进行校验,得到每个第二校验值。
为了区分描述,本实施例中,将存储对象中存储的校验值称为第一校验值,将通过S303得到的校验值称为第二校验值。
本领域技术人员可以理解,校验算法有多种,比如,MD5算法(Message DigestAlgorithm 5,消息摘要算法)算法,CRC(Cyclic Redundancy Check,循环冗余校验)算法等,具体不做限定。需要说明的是,第一校验值与第二校验值对应的校验算法相同,比如说,存储对象利用MD5算法对数据段进行校验得到第一校验值,这样,本设备也要利用MD5算法对数据段进行校验得到第二校验值。
延续上述例子,假设S302中获取到A1的第一校验值为:38b8c2c1093dd0fec383a9d9ac940515,获取到A2的第一校验值为:38b8c2c1093dd0fec383a9d9ac940526。
S303中利用MD5算法分别对A1和A2进行校验。本领域技术人员可以理解,MD5算法通过其不可逆的字符串变换算法,可以生成针对数据段的信息摘要,也就是本发明实施例中的校验值。假设得到A1的第二校验值为:38b8c2c1093dd0fec383a9d9ac940515,得到A2的第二校验值为:38b8c2c1093dd0fec383a9d9ac940526。
S304:针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;如果是,执行S305。
S305:判断是否获取到所述N个目标数据段,如果否,返回执行S302,如果是,执行S306。
S306:将所述N个目标数据段组成校验后目标数据。
上述例子中,A1的第一校验值与第二校验值相同,A2的第一校验值与第二校验值也相同,也就是S304判断结果为是,则执行S305,判断未获取到目标数据为A对应的6个目标数据段,则返回执行S302,继续获取A3、A4及A3、A4的第一校验值。
类似地,利用MD5算法分别对A3和A4进行校验,得到A3和A4的第二校验值,假设A3的第一校验值与第二校验值相同,A4的第一校验值与第二校验值也相同,也就是S304判断结果为是,则执行S305,判断未获取到目标数据为A对应的6个目标数据段,则返回执行S302,继续获取A5、A6及A5、A6的第一校验值。
利用MD5算法分别对A5和A6进行校验,得到A5和A6的第二校验值,假设A5的第一校验值与第二校验值相同,A6的第一校验值与第二校验值也相同,也就是S304判断结果为是,则执行S305,判断已经获取到目标数据为A对应的6个目标数据段,而且这6个目标数据段的第一校验值与第二校验值均相同,也就是说,这6个目标数据段均未出现异常,这种情况下,把这6个目标数据段组成目标数据A,便得到了完整的目标数据,也可以理解为校验后的目标数据。
需要说明的是,本实施例中,每次获取M个目标数据段,S304是针对本次获取的M个目标数据段中的每个目标数据段进行判断。如果判断某个目标数据段的第一校验值与第二校验值不相同,也就是说,从存储对象中获取的目标数据段有异常时,不再继续获取其他目标数据段。另外,这种情况下,还可以输出提示信息,提示相关人员进行后续处理。
可以理解的是,如果某个目标数据段存在异常,则完整的目标数据也会存在异常;现有方案中,将全部目标数据下载并校验后发现目标数据存在异常,这其中包含了大量无意义的操作;而本方案中,当确定某个目标数据段存在异常后,及时停止后续操作,相比于现有方案,减少了大量无意义的操作。
另一方面,本方案中,将目标数据分段下载(获取)及校验,而不是将目标数据全部下载后再进行校验;分段下载及校验,校验速度快、效率高。
应用本方案,如果得到全部目标数据段(N个目标数据段)、且确定这N个目标数据段中每个目标数据段的第一校验值与第二校验值都相同,则表示这N个目标数据段都未出现异常,将这N个目标数据段组合成目标数据,目标数据也是完整的,这样,便得到了完整的目标数据,也可以理解为校验后的目标数据。
作为数据校验的一种具体实施方式,可以如图4所示,图4与图2相对应。根据上面描述,图2所示实施方式中,存储对象进行数据存储时,将每份独立的数据(File block)切分成多份数据段(File segment),并且每份独立的数据(File block)对应一份索引文件(Index file)。
与此相对应,图4所示存储对象中存储的内容与图2所示存储对象中存储的内容相同,包括:各个数据段(File segment)及各份索引文件(Index file)。本设备从存储对象中获取目标数据段后,对其进行校验,得到第二校验值;将得到的第二校验值与索引文件中的第一校验值进行比较,如果相同,表示目标数据段完整,继续获取其他目标数据段,直至获取到完整的目标数据。
应用本发明所示实施例,存储对象中对应存储有各个数据段及数据段的第一校验值;当需要获取目标数据时,在存储对象中确定组成目标数据的N个目标数据段;依次读取M个目标数据段及其第一校验值,M小于N;也就是说,每次读取一部分目标数据段,对这一部分目标数据段进行校验,得到各个第二校验值;如果这一部分目标数据段的第一校验值与对应的第二校验值全部相同,继续获取下一部分目标数据段。由此可见,本方案中,将目标数据分段下载及校验,而不是将目标数据全部下载后再进行校验;分段下载及校验,校验速度快、效率高;另外,当某一部分目标数据段的第一校验值与对应的第二校验值不全相同时,也就是目标数据不完整时,不再继续下载校验其他目标数据段,相比于现有方案中,将全部目标数据下载并校验后发现目标数据不完整,减少了大量无意义的操作。
与上述方法实施例相对应,本发明实施例还提供了一种数据存储、校验装置。
图5为本发明实施例提供的一种数据存储装置的结构示意图,包括:
切分模块501,用于利用预设切分规则,将待存储数据切分成至少两个数据段;
第二校验模块502,用于对所述至少两个数据段进行校验,分别得到每个数据段的第一校验值;
存储模块503,用于对应存储每个数据段及其第一校验值。
在本实施例中,存储模块503,具体可以用于:
对所述第一校验值进行散列运算,得到所述待存储数据对应的散列值;
根据所述散列值,判断所述待存储数据是否完整;
如果是,对应存储每个数据段及其第一校验值,或者,对应存储每个数据段、每个第一校验值及所述散列值。
在本实施例中,所述装置还可以包括:记录模块和删除模块(图中未示出),其中,
记录模块,用于记录第一校验值的存储时刻;
删除模块,用于当所记录的存储时刻满足预设删除规则时,删除所述第一校验值;
或者,所述记录模块,用于记录第一校验值及所述散列值的存储时刻;
所述删除模块,用于当所记录的存储时刻满足预设删除规则时,删除所述第一校验值及所述散列值。
图6为本发明实施例提供的一种数据校验装置的结构示意图,本发明图6所示实施例可以基于本发明图5所示实施例供的数据存储装置进行数据校验,或者,也可以基于其他数据存储装置进行数据校验。
图6包括:
第一确定模块601,用于在存储对象存储的数据段中,确定组成目标数据的N个目标数据段,所述N大于1;
获取模块602,用于从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N;
第一校验模块603,用于分别对所获取的M个目标数据段进行校验,得到每个第二校验值;
第一判断模块604,用于针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;如果相同,触发第二判断模块;
第二判断模块605,用于判断是否获取到所述N个目标数据段,如果否,触发获取模块602,如果是,触发组成模块606;
组成模块606,用于将所述N个目标数据段组成校验后目标数据。
在本实施例中,所述装置还可以包括:
第二确定模块(图中未示出),用于确定所述N个目标数据段的读取顺序;
获取模块602,具体可以用于:
根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
在本实施例中,获取模块601,具体可以用于:
根据所确定的顺序,确定M个当前目标数据段;
根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段、及每个当前目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段、及每个待读取目标数据段的第一校验值。
应用本发明所示实施例,存储对象中对应存储有各个数据段及数据段的第一校验值;当需要获取目标数据时,在存储对象中确定组成目标数据的N个目标数据段;依次读取M个目标数据段及其第一校验值,M小于N;也就是说,每次读取一部分目标数据段,对这一部分目标数据段进行校验,得到各个第二校验值;如果这一部分目标数据段的第一校验值与对应的第二校验值全部相同,继续获取下一部分目标数据段。由此可见,本方案中,将目标数据分段下载及校验,而不是将目标数据全部下载后再进行校验;分段下载及校验,校验速度快、效率高;另外,当某一部分目标数据段的第一校验值与对应的第二校验值不全相同时,也就是目标数据不完整时,不再继续下载校验其他目标数据段,相比于现有方案中,将全部目标数据下载并校验后发现目标数据不完整,减少了大量无意义的操作。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (6)
1.一种数据校验方法,其特征在于,包括:
在存储对象存储的数据段中,确定组成目标数据的N个目标数据段,所述N大于1;
从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N;
分别对所获取的M个目标数据段进行校验,得到每个第二校验值;
针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;
如果相同,判断是否获取到所述N个目标数据段,如果未获取到所述N个目标数据段,返回执行所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤;直至获取到所述N个目标数据段、且确定所述N个目标数据段中每个目标数据段的第一校验值与第二校验值都相同的情况下,将所述N个目标数据段组成校验后目标数据;
如果所述目标数据段的第一校验值与第二校验值不相同,停止继续获取组成所述目标数据的其他目标数据段。
2.根据权利要求1所述的方法,其特征在于,在所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤之前,还包括:
确定所述N个目标数据段的读取顺序;
所述从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值的步骤,包括:
根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
3.根据权利要求2所述的方法,其特征在于,所述根据所确定的顺序,每次读取M个目标数据段的步骤,包括:
根据所确定的顺序,确定M个当前目标数据段;
根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段;
所述读取全部待读取目标数据段的步骤,包括:
根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段。
4.一种数据校验装置,其特征在于,包括:
第一确定模块,用于在存储对象存储的数据段中,确定组成目标数据的N个目标数据段,所述N大于1;
获取模块,用于从所述存储对象中获取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;其中,所述存储对象对应存储有每个数据段的第一校验值,所述第一校验值为:所述存储对象对数据段进行校验得到的;所述M小于所述N;
第一校验模块,用于分别对所获取的M个目标数据段进行校验,得到每个第二校验值;
第一判断模块,用于针对所述M个目标数据段中的每个目标数据段,判断所述目标数据段的第一校验值与第二校验值是否相同;如果相同,触发第二判断模块;
第二判断模块,用于判断是否获取到所述N个目标数据段,如果否,触发所述获取模块,如果是,触发组成模块;
组成模块,用于将所述N个目标数据段组成校验后目标数据;
所述第一判断模块,还用于如果所述目标数据段的第一校验值与第二校验值不相同,停止继续获取组成所述目标数据的其他目标数据段。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定所述N个目标数据段的读取顺序;
所述获取模块,具体用于:
根据所确定的顺序,每次读取M个目标数据段、及所述M个目标数据段中每个目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,读取全部待读取目标数据段、及所述待读取目标数据段的第一校验值。
6.根据权利要求5所述的装置,其特征在于,所述获取模块,具体用于:
根据所确定的顺序,确定M个当前目标数据段;
根据预先获取的每个目标数据段的大小,从所述存储对象中读取所述M个当前目标数据段、及每个当前目标数据段的第一校验值;
当所述存储对象中待读取目标数据段的数量小于M时,根据预先获取的每个目标数据段的大小,从所述存储对象中读取全部待读取目标数据段、及每个待读取目标数据段的第一校验值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710134998.8A CN108573172B (zh) | 2017-03-08 | 2017-03-08 | 一种数据校验、存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710134998.8A CN108573172B (zh) | 2017-03-08 | 2017-03-08 | 一种数据校验、存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108573172A CN108573172A (zh) | 2018-09-25 |
CN108573172B true CN108573172B (zh) | 2021-03-12 |
Family
ID=63577163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710134998.8A Active CN108573172B (zh) | 2017-03-08 | 2017-03-08 | 一种数据校验、存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108573172B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209597B (zh) * | 2018-11-22 | 2022-08-12 | 迈普通信技术股份有限公司 | 数据校验方法及应用系统 |
CN111555841A (zh) * | 2020-04-24 | 2020-08-18 | 中国船舶重工集团海装风电股份有限公司 | 一种通信数据的校验方法、装置、设备及介质 |
CN112558875B (zh) * | 2020-12-14 | 2024-07-23 | 北京百度网讯科技有限公司 | 数据校验方法、装置、电子设备及存储介质 |
CN114721867A (zh) * | 2022-02-14 | 2022-07-08 | 阿里巴巴(中国)有限公司 | 数据校验方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4196770B2 (ja) * | 2003-07-23 | 2008-12-17 | ソニー株式会社 | データ処理方法、データ検査方法 |
US9448877B2 (en) * | 2013-03-15 | 2016-09-20 | Cisco Technology, Inc. | Methods and apparatus for error detection and correction in data storage systems using hash value comparisons |
CN104917586B (zh) * | 2014-03-11 | 2019-06-07 | 腾讯科技(深圳)有限公司 | 传输数据的校验方法、装置及系统 |
CN104202667A (zh) * | 2014-09-19 | 2014-12-10 | 青岛海信宽带多媒体技术有限公司 | Iptv机顶盒升级方法和系统 |
-
2017
- 2017-03-08 CN CN201710134998.8A patent/CN108573172B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108573172A (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108573172B (zh) | 一种数据校验、存储方法及装置 | |
US8055633B2 (en) | Method, system and computer program product for duplicate detection | |
CN108108127B (zh) | 一种文件读取方法及系统 | |
AU2012395331B2 (en) | Method and apparatus for recovering data | |
US8839446B2 (en) | Protecting archive structure with directory verifiers | |
CN112579327B (zh) | 一种故障检测方法、装置及设备 | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN110879687A (zh) | 一种基于磁盘存储的数据读取方法、装置及设备 | |
CN102609644A (zh) | 一种文件保护方法 | |
TW201335779A (zh) | 檔案同步系統及方法 | |
CN105843916A (zh) | 基于文件归并的敏感数据检测方法及设备 | |
WO2015087509A1 (ja) | 状態保存復元装置、状態保存復元方法、および、記憶媒体 | |
CN104778097B (zh) | 一种数据恢复方法及装置 | |
CN111552842A (zh) | 一种数据处理的方法、装置和存储介质 | |
US20190188184A1 (en) | Systems and methods for file fingerprinting | |
CN105260423A (zh) | 电子名片去重方法及装置 | |
US11513884B2 (en) | Information processing apparatus, control method, and program for flexibly managing event history | |
CN114281769A (zh) | 磁盘上文件管理方法、装置、计算机设备及存储介质 | |
CN111460436A (zh) | 一种基于区块链的非结构化数据操作方法和系统 | |
CN115481445B (zh) | 便携式文档格式文件的验签方法、装置、设备及存储介质 | |
CN113704176B (zh) | 文件扫描方法、装置、电子设备及存储介质 | |
CN110765493A (zh) | 一种基于Linux预链接的文件基线防御方法、装置及存储设备 | |
JP2013073526A (ja) | 差分バックアップシステム、差分バックアップ方法、及びプログラム | |
CN109684870B (zh) | 一种自包含的文件信息配置方法及系统 | |
CN117714051B (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 |