CN107544863B - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN107544863B CN107544863B CN201710495333.XA CN201710495333A CN107544863B CN 107544863 B CN107544863 B CN 107544863B CN 201710495333 A CN201710495333 A CN 201710495333A CN 107544863 B CN107544863 B CN 107544863B
- Authority
- CN
- China
- Prior art keywords
- check value
- data
- target data
- unit
- stored
- 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
Abstract
本申请实施例提供了一种数据存储方法及装置,涉及计算机技术领域,其中,上述方法包括:获得目标数据对象的数据段;按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;分别存储所确定的各个单位数据和所述目标数据对象的校验值。应用本申请实施例提供的方案进行数据存储,提高了数据存储性能。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法及装置。。
背景技术
随着大数据时代的到来,仅通过扩大传统的存储阵列规模逐渐不能满足用户日益增长的数据存储需求。基于上述情况,由于分布式文件存储拥有较大且可扩展的存储空间,以及分布式文件存储对数据的可靠性和一致性有着很高的要求,所以分布式文件存储应用越来越广泛。
现有技术中,进行数据存储时通过分布式存储设备进行。具体的,获得目标数据对象的数据段;计算每一数据段的校验值;采用CRC32算法对每一数据段的校验值进行计算得到目标数据对象的校验值,作为目标校验值;分别在本地存储上述目标校验值和目标数据对象的各个数据段。
下面通过一个具体实例对上述通过分布式存储设备进行数据存储的方法进行介绍:
参见图1,目标数据对象包含A、B和C三个数据段,分别计算数据段A、B、C的校验值,记为:XA、XB和XC,然后采用CRC32算法对XA、XB和XC进行计算得到目标数据对象的校验值XT,分别存储XT、数据段A、B、C。
虽然应用上述方式可以完成数据存储,但是若需要修改目标数据对象中的一个数据段,也就是以随机写入方式在目标数据对象中进行数据存储时,以修改上述数据段B为例,具体过程如下:
假设,修改后的数据段为:D,也就是在数据段B的位置以随机写入的方式存储数据段D;
需要先获得数据段A、D、C三者的校验值,然后采用CRC32算法对上述三者的校验值进行计算得到新的校验值,并以上述新的校验值更新本地存储的目标数据对象的校验值以及在原来数据段B的位置存储上述数据段D。这样需要从本地读取数据段A、C,否则无法计算其校验值,因此,应用上述方式进行数据存储时,可能会造成读取大量数据,进而导致数据存储性能下降。
发明内容
本申请实施例的目的在于提供一种数据存储方法及装置,以提升数据存储性能。具体技术方案如下:
一种数据存储方法,所述方法包括:
获得目标数据对象的数据段;
按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;
对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
分别存储所确定的各个单位数据和所述目标数据对象的校验值。
一种数据存储装置,所述装置包括:
数据段获得模块,用于获得目标数据对象的数据段;
第一校验值计算模块,用于按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;
第一校验值获得模块,用于对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
第一数据存储模块,用于分别存储所确定的各个单位数据和所述目标数据对象的校验值。
一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本申请实施例所述的数据存储的方法步骤。
一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例所述的数据存储的方法步骤。
由以上可见,本申请实施例提供的技术方案中,获得目标数据对象的数据段后,按照预设的数据存储单位确定所获得数据段的单位数据,并计算各个单位数据的校验值,对计算得到的校验值进行异或操作,获得目标数据对象的校验值,分别存储所确定的各个单位数据和目标数据对象的校验值。由于本申请实施例提供的技术方案中计算校验值时是以数据存储单位为单位进行计算的,而且数据对象的校验值是由其单位数据校验值异或的方式得到的,所以,在数据对象中进行数据存储时,能够方便的计算数据对象的校验值,进而能够提高数据存储性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为应用现有技术提供的数据存储方法进行数据存储的示意图;
图2为本申请实施例提供的一种数据存储方法的流程示意图;
图3为本申请实施例提供的以随机写入方式进行数据存储的方法的流程示意图;
图4为本申请实施例提供的以顺序写入方式进行数据存储的方法的流程示意图;
图5为本申请实施例提供的一种数据存储装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2为本申请实施例提供的一种数据存储方法的流程示意图,该方法包括:
S201:获得目标数据对象的数据段。
存储设备对数据对象进行存储时,通常是一段一段的获得连续的数据,并对所获得的数据进行存储。上述一段一段的数据可以称之为数据段。
另外,存储设备对所获得的数据进行存储时,通常是以预设的数据存储单位为基准进行存储的,所以一个数据段通常又可以按照上述数据存储单位划分为多个大小相同的单位数据,不同数据段能够划分出的单位数据的数量可以相同,也可以不相同。其中,数据存储单位可以理解为:数据存储的最小单位。单位数据可以理解为:一段连续数据中要存储于一个数据存储单位中的数据。
具体的,上述预设的数据存储单位可以为条带。
从上面的描述可以得知,本步骤中所获得的数据段可以是目标数据对象的一个数据段,也可以是目标数据对象的多个数据段,本申请并不对此进行限定。
S202:按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值。
由于在数据应用过程中,一般会对数据的可靠性和一致性有较高的要求,所以在存储数据的过程中除了需要存储数据本身外,还需要存储数据的校验值,因此在确定数据段的单位数据后,可以计算各个单位数据的校验值。
另外,本步骤中按照预设的数据存储单位,确定所获得数据段的单位数据,可以理解为:对所获得数据段进行条带化处理。
S203:对计算得到的校验值进行异或操作,获得目标数据对象的校验值。
本领域内技术人员可以理解的是,对数据进行异或操作后所得结果具有如下特点:
(a^b)^a=b
其中,a、b为任意两个数据,所以采用对目标数据对象的数据段的单位数据的校验值进行异或操作的方式获得目标数据对象的校验值后,若需要计算目标数据对象中除单位数据m以外其他数据的校验值时,仅仅需要从本地读取单位数据m、目标数据对象的校验值,然后对上述两者进行异或操作即可得到目标数据对象中除单位数据m以外其他数据的校验值。可见能够大大减少计算校验值过程需要读取数据的数据量,进而有助于提高数据存储性能。
S204:分别存储所确定的各个单位数据和目标数据对象的校验值。
由以上可见,本实施例提供的技术方案中,获得目标数据对象的数据段后,按照预设的数据存储单位确定所获得数据段的单位数据,并计算各个单位数据的校验值,对计算得到的校验值进行异或操作,获得目标数据对象的校验值,分别存储所确定的各个单位数据和目标数据对象的校验值。由于本实施例提供的技术方案中计算校验值时是以数据存储单位为单位进行计算的,而且数据对象的校验值是由其单位数据校验值异或的方式得到的,所以,在数据对象中进行数据存储时,能够方便的通过读取已存储的少量数据计算数据对象中其他数据的校验值,进而能够提高数据存储性能。
本领域内技术人员可以理解的是,获得目标数据对象的数据段并进行数据存储后,还有可能继续对目标数据对象的数据进行存储,一般包括两种方式:以随机写入方式进行的数据存储和以顺序写入方式进行的数据存储。
其中,以随机写入方式进行的数据存储,可以理解为:对目标数据对象的已存储数据中的部分数据进行修改的存储方式;
以顺序写入方式进行的数据存储,可以理解为:在目标数据对象的已存储数据的数据尾顺次写入数据的存储方式。
下面从上述两种不同存储方式的角度分别对本申请实施例提供的数据存储方法进行更进一步介绍:
一、以随机写入方式进行的数据存储
在本申请的一种实现方式中,参见图3,提供了以随机写入方式进行数据存储的方法的流程示意图,在按照前述图2所示实施例提供的数据存储方法进行数据存储的基础上,该方法包括:
S301:接收以随机写入方式在目标数据对象中写入目标数据段的写入指令。
具体的,上述写入指令中可以包含与待写入位置相关的信息(待写入位置在目标数据对象中的相对位置等等)、目标数据段等,本申请并不对此进行限定。
S302:根据上述写入指令,确定待写入位置,并计算待写入位置已存储的单位数据的校验值。
上述待写入位置通常指向整数个数据存储单位,具体的,上述待写入位置可以由待写入数据的起始数据存储单位的位置、待写入数据的终止数据存储单位的位置组成,也可以包含所有待写入数据的数据存储单位的位置。
上述待写入位置所指向的数据存储单位除与写入指令中包含的与待写入位置相关的信息有关外,还可能与目标数据段的数据量等信息相关,例如,待写入位置对应的数据量与目标数据段的数据量相等等等。
确定待写入位置后,可以依次从待写入位置指向的各个数据存储单位中读取已存储的数据,然后分别计算各个数据存储单位所存储数据的校验值。
S303:获得已存储的目标数据对象的校验值,作为第一校验值。
S304:对待写入位置已存储的单位数据的校验值和第一校验值进行异或操作,获得第二校验值。
由于已存储的目标数据对象的校验值是:对目标数据对象的各个数据段包含的单位数据的校验值进行异或操作得到的,又由于对任意两个数据进行异或操作具有以下表达式表述的特征,所以,本步骤中通过对待写入位置已存储的单位数据的校验值和上述第一校验值进行异或操作,所得的第二校验值表达的是:除上述待写入位置存储的数据外,目标数据对象的其他已存储数据的校验值,
(a^b)^a=b。
S305:按照预设的数据存储单位确定目标数据段的单位数据,并计算目标数据段的各个单位数据的校验值。
S306:对第二校验值和目标数据段的各个单位数据的校验值进行异或操作,获得第三校验值。
S307:将已存储的目标数据对象的校验值更新为第三校验值,并在待写入位置存储目标数据段的各个单位数据。
由以上可见,本实施例提供的方案中,以随机写入方式进行数据存储时,仅仅从已存储数据中读取待存储位置已存储的数据即可,无需读取目标数据对象的其他已存储数据,因此能够大大减小数据存储时需要读取的数据量,进而能够提高数据存储性能。
二、以顺序写入方式进行的数据存储
在本申请的一种实现方式中,参见图4,提供了以顺序写入方式进行数据存储的方法的流程示意图,在按照前述图2所示实施例提供的数据存储方法进行数据存储的基础上,该方法包括:
S401:接收以顺序写入方式在目标数据对象中写入目标数据段的写入指令。
具体的,上述写入指令中可以包含与待写入位置相关的信息、目标数据段等,本申请并不对此进行限定。
其中,上述与待写入位置相关的信息可以是:目标数据对象的已存储数据的数据尾在目标数据对象中的相对位置、顺序写入方式的标识等等。
S402:按照预设的数据存储单位,确定目标数据段的单位数据,并计算目标数据段的各个单位数据的校验值。
S403:获得已存储的目标数据对象的校验值,作为第一校验值。
S404:对第一校验值和目标数据段的各个单位数据的校验值进行异或操作,获得第二校验值。
S405:将已存储的目标数据对象的校验值更新为第二校验值,并以顺序写入方式存储目标数据段的各个单位数据。
以顺序写入方式存储目标数据段的各个单位数据时,可以理解为:将目标数据段的各个单位数据依次存储至上述待写入位置。
由以上可见,本实施例提供的方案中,以数据存储单位为单位计算目标数据段的各个单位数据的校验值,且采用计算得到的校验值与已存储的目标数据对象的校验值进行异或操作的方式计算新的校验值,以新的校验值更新已存储的目标数据对象的校验值。这样能够通过读取数据对象较少的数据,计算出数据对象中其他数据的校验值,进而能够大大提高数据存储性能。
需要说明的是,本申请实施例中计算一个单位数据的校验值时可以采用CRC32等算法进行计算,本申请并不对此进行限定。
由于数据应用过程中尤其是基于分布式数据存储的数据应用过程中对数据的可靠性、一致性具有较高的要求,所以在数据应用过程对数据对象进行一致性校验是必不可少的,基于前述各个实施例提供的数据存储方法,本申请的一种实现方式中,可以采用以下方式对数据对象的一致性进行校验:
计算已存储的目标数据对象的各个单位数据的校验值,并对计算得到的各个校验值进行异或操作,获得第四校验值;
获得已存储的目标数据对象的校验值,作为第一校验值;
验证第四校验值与第一校验值是否匹配;
若匹配,确定目标数据对象通过一致性校验。
下面通过具体实例对本申请实施例提供的数据存储方法进行介绍:
S1:假设获得目标数据对象的数据段A、B和C;
S2:以条带为数据存储单位,确定数据段A、B和C的条带以及各个条带的校验值如下表1所示:
表1
S3:目标数据对象的校验值XT为:
XT=XA1^XA2^XA3^XB1^XB2^XB3^XC1^XC2^XC3;
S4:存储条带A1、A2、A3、B1、B2、B3、C1、C2、C3和XT。
在上述已存储数据的基础上,接收到以随机写入方式写入数据的写入指令时,数据存储过程如下:
S5:接收以随机写入方式在目标数据对象中写入目标数据段D的写入指令,其中,写入指令表明待写入位置为:条带B1和B2所在位置;
S6:根据上述写入指令确定待写入数据的位置:条带B1和B2所在的位置,并从B1和B2所在的位置读取数据,对所读取的数据进行校验值计算,得到条带B1的校验值XB1和条带B2的校验值XB2;
S7:读取已存储的目标数据对象的校验值XT;
S8:XT’=XT^XB1^XB2
=(XA1^XA2^XA3^XB1^XB2^XB3^XC1^XC2^XC3)^XB1^XB2
=XA1^XA2^XA3^XB3^XC1^XC2^XC3;
S9:确定目标数据段D的条带D1和D2,计算得到条带D1和D2的校验值为:XD1、XD2;
S10:XT”=XT’^XD1^XD2
=XA1^XA2^XA3^XB3^XC1^XC2^XC3^XD1^XD2;
S11:XT更新为XT”,在上述B1和B2所在位置存储D1和D2,此时目标数据对象中已存储的条带、各个条带的校验值以及各个条带的相对存储位置如下表2所示:
表2
由以上可见,以随机写入方式在原来条带B1和B2所在位置写入数据时,需要更新已存储的目标数据对象的校验值,而更新校验值需要知道条带A1、A2、A3、B3、C1、C2、C3共计7个条带所确定数据的校验值,从上述步骤S5-S11可见,应用本申请实施例提供的方案进行数据存储时,仅仅读取了已存储的条带B1和B2的数据以及已存储目标数据对象的校验值,即可通过计算得到上述7个条带所确定数据的校验值,而无需读取这7个条带的数据,可见大大减少了所读取数据的数据量,能够提高数据存储性能。
在表2所示已存储数据的基础上,接收到以顺序写入方式写入数据的写入指令时,数据存储过程如下:
S12:接收以顺序写入方式在目标数据对象中写入目标数据段E的写入指令;
S13:确定目标数据段E的条带E1和E2,计算得到条带E1和E2的校验值为:XE1、XE2;
S14:读取已存储的目标数据对象的校验值XT,
XT=XA1^XA2^XA3^XB3^XC1^XC2^XC3^XD1^XD2;
S15:XT=XT’^XE1^XE2
=(XA1^XA2^XA3^XB3^XC1^XC2^XC3^XD1^XD2)^XE1^XE2
=XA1^XA2^XA3^XB3^XC1^XC2^XC3^XD1^XD2^XE1^XE2
S16:XT更新为XT’,在目标数据对象已存储数据的数据尾存储E1和E2,此时目标数据对象中已存储的条带、各个条带的校验值以及各个条带的相对存储位置如下表3所示:
表3
与上述数据存储方法相对应,本申请实施例还提供了一种数据存储装置。
图5为本申请实施例提供的一种数据存储装置的结构示意图,该装置包括:
数据段获得模块501,用于获得目标数据对象的数据段;
第一校验值计算模块502,用于按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;
第一校验值获得模块503,用于对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
第一数据存储模块504,用于分别存储所确定的各个单位数据和所述目标数据对象的校验值。
具体的,所述数据存储装置还可以包括:
第一指令接收模块,用于在所述第一数据存储模块504存储单位数据和校验值后,接收以随机写入方式在所述目标数据对象中写入目标数据段的写入指令;
第二校验值计算模块,用于根据所述写入指令,确定待写入位置,并计算所述待写入位置已存储的单位数据的校验值;
第二校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
第三校验值获得模块,用于对所述待写入位置已存储的单位数据的校验值和所述第一校验值进行异或操作,获得第二校验值;
第三校验值计算模块,用于按照所述预设的数据存储单位确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
第四校验值获得模块,用于对所述第二校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第三校验值;
第二数据存储模块,用于将已存储的所述目标数据对象的校验值更新为所述第三校验值,并在所述待写入位置存储所述目标数据段的各个单位数据。
具体的,所述数据存储装置还可以包括:
第二指令接收模块,用于在所述第一数据存储模块504存储单位数据和校验值后,接收以顺序写入方式在所述目标数据对象中写入目标数据段的写入指令;
第四校验值计算模块,用于按照所述预设的数据存储单位,确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
第五校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
第六校验值获得模块,用于对所述第一校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第二校验值;
第三数据存储模块,用于将已存储的所述目标数据对象的校验值更新为所述第二校验值,并以顺序写入方式存储所述目标数据段的各个单位数据。
具体的,所述数据存储装置还可以包括:
第七校验值获得模块,用于在所述第一数据存储模块504存储单位数据和校验值后,计算已存储的所述目标数据对象的各个单位数据的校验值,并对计算得到的各个校验值进行异或操作,获得第四校验值;
第八校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
校验值验证模块,用于验证所述第四校验值与所述第一校验值是否匹配,若匹配,确定所述目标数据对象通过一致性校验。
具体的,所述预设的数据存储单位为条带。
由以上可见,上述各个实施例提供的技术方案中,获得目标数据对象的数据段后,按照预设的数据存储单位确定所获得数据段的单位数据,并计算各个单位数据的校验值,对计算得到的校验值进行异或操作,获得目标数据对象的校验值,分别存储所确定的各个单位数据和目标数据对象的校验值。由于上述各个实施例提供的技术方案中计算校验值时是以数据存储单位为单位进行计算的,而且数据对象的校验值是由其单位数据校验值异或的方式得到的,所以,在数据对象中进行数据存储时,能够方便的通过读取已存储的少量数据计算数据对象中其他数据的校验值,进而能够提高数据存储性能。
本申请实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现本申请实施例提供的数据存储方法。
具体的,上述数据存储方法,包括:
获得目标数据对象的数据段;
按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;
对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
分别存储所确定的各个单位数据和所述目标数据对象的校验值。
上述数据存储方法的其他实现与前述方法实施例部分提供的数据存储方法的各种实现方式相同,这里不再赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可见,本实施例提供的技术方案中,电子设备获得目标数据对象的数据段后,按照预设的数据存储单位确定所获得数据段的单位数据,并计算各个单位数据的校验值,对计算得到的校验值进行异或操作,获得目标数据对象的校验值,分别存储所确定的各个单位数据和目标数据对象的校验值。由于本实施例提供的技术方案中计算校验值时是以数据存储单位为单位进行计算的,而且数据对象的校验值是由其单位数据校验值异或的方式得到的,所以,在数据对象中进行数据存储时,能够方便的通过读取已存储的少量数据计算数据对象中其他数据的校验值,进而能够提高数据存储性能。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的数据存储方法。
具体的,上述数据存储方法,包括:
获得目标数据对象的数据段;
按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值;
对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
分别存储所确定的各个单位数据和所述目标数据对象的校验值。
上述数据存储方法的其他实现与前述方法实施例部分提供的数据存储方法的各种实现方式相同,这里不再赘述。
由以上可见,本实施例提供的技术方案中,通过执行上述计算机可读存储介质中存储的计算机程序,获得目标数据对象的数据段后,按照预设的数据存储单位确定所获得数据段的单位数据,并计算各个单位数据的校验值,对计算得到的校验值进行异或操作,获得目标数据对象的校验值,分别存储所确定的各个单位数据和目标数据对象的校验值。由于本实施例提供的技术方案中计算校验值时是以数据存储单位为单位进行计算的,而且数据对象的校验值是由其单位数据校验值异或的方式得到的,所以,在数据对象中进行数据存储时,能够方便的通过读取已存储的少量数据计算数据对象中其他数据的校验值,进而能够提高数据存储性能。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (8)
1.一种数据存储方法,其特征在于,所述方法包括:
获得目标数据对象的数据段;
按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值,所述预设的数据存储单位为条带;
对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
分别存储所确定的各个单位数据和所述目标数据对象的校验值;
接收以随机写入方式在所述目标数据对象中写入目标数据段的写入指令;
根据所述写入指令,确定待写入位置,并计算所述待写入位置已存储的单位数据的校验值;
获得已存储的所述目标数据对象的校验值,作为第一校验值;
对所述待写入位置已存储的单位数据的校验值和所述第一校验值进行异或操作,获得第二校验值;
按照所述预设的数据存储单位确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
对所述第二校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第三校验值;
将已存储的所述目标数据对象的校验值更新为所述第三校验值,并在所述待写入位置存储所述目标数据段的各个单位数据。
2.一种数据存储方法,其特征在于,所述方法包括:
获得目标数据对象的数据段;
按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值,所述预设的数据存储单位为条带;
对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
分别存储所确定的各个单位数据和所述目标数据对象的校验值;
接收以顺序写入方式在所述目标数据对象中写入目标数据段的写入指令;
按照所述预设的数据存储单位,确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
获得已存储的所述目标数据对象的校验值,作为第一校验值;
对所述第一校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第二校验值;
将已存储的所述目标数据对象的校验值更新为所述第二校验值,并以顺序写入方式存储所述目标数据段的各个单位数据。
3.根据权利要求1所述的方法,其特征在于,在所述分别存储所确定的各个单位数据和所述目标数据对象的校验值之后,还包括:
计算已存储的所述目标数据对象的各个单位数据的校验值,并对计算得到的各个校验值进行异或操作,获得第四校验值;
获得已存储的所述目标数据对象的校验值,作为第一校验值;
验证所述第四校验值与所述第一校验值是否匹配;
若匹配,确定所述目标数据对象通过一致性校验。
4.一种数据存储装置,其特征在于,所述装置包括:
数据段获得模块,用于获得目标数据对象的数据段;
第一校验值计算模块,用于按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值,其中,所述预设的数据存储单位为条带;
第一校验值获得模块,用于对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
第一数据存储模块,用于分别存储所确定的各个单位数据和所述目标数据对象的校验值;
第一指令接收模块,用于在所述第一数据存储模块存储单位数据和校验值后,接收以随机写入方式在所述目标数据对象中写入目标数据段的写入指令;
第二校验值计算模块,用于根据所述写入指令,确定待写入位置,并计算所述待写入位置已存储的单位数据的校验值;
第二校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
第三校验值获得模块,用于对所述待写入位置已存储的单位数据的校验值和所述第一校验值进行异或操作,获得第二校验值;
第三校验值计算模块,用于按照所述预设的数据存储单位确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
第四校验值获得模块,用于对所述第二校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第三校验值;
第二数据存储模块,用于将已存储的所述目标数据对象的校验值更新为所述第三校验值,并在所述待写入位置存储所述目标数据段的各个单位数据。
5.一种数据存储装置,其特征在于,所述装置包括:
数据段获得模块,用于获得目标数据对象的数据段;
第一校验值计算模块,用于按照预设的数据存储单位,确定所获得数据段的单位数据,并计算各个单位数据的校验值,其中,所述预设的数据存储单位为条带;
第一校验值获得模块,用于对计算得到的校验值进行异或操作,获得所述目标数据对象的校验值;
第一数据存储模块,用于分别存储所确定的各个单位数据和所述目标数据对象的校验值;
第二指令接收模块,用于在所述第一数据存储模块存储单位数据和校验值后,接收以顺序写入方式在所述目标数据对象中写入目标数据段的写入指令;
第四校验值计算模块,用于按照所述预设的数据存储单位,确定所述目标数据段的单位数据,并计算所述目标数据段的各个单位数据的校验值;
第五校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
第六校验值获得模块,用于对所述第一校验值和所述目标数据段的各个单位数据的校验值进行异或操作,获得第二校验值;
第三数据存储模块,用于将已存储的所述目标数据对象的校验值更新为所述第二校验值,并以顺序写入方式存储所述目标数据段的各个单位数据。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第七校验值获得模块,用于在所述第一数据存储模块存储单位数据和校验值后,计算已存储的所述目标数据对象的各个单位数据的校验值,并对计算得到的各个校验值进行异或操作,获得第四校验值;
第八校验值获得模块,用于获得已存储的所述目标数据对象的校验值,作为第一校验值;
校验值验证模块,用于验证所述第四校验值与所述第一校验值是否匹配,若匹配,确定所述目标数据对象通过一致性校验。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710495333.XA CN107544863B (zh) | 2017-06-26 | 2017-06-26 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710495333.XA CN107544863B (zh) | 2017-06-26 | 2017-06-26 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107544863A CN107544863A (zh) | 2018-01-05 |
CN107544863B true CN107544863B (zh) | 2021-07-20 |
Family
ID=60970543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710495333.XA Active CN107544863B (zh) | 2017-06-26 | 2017-06-26 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544863B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304503A (zh) * | 2018-01-18 | 2018-07-20 | 阿里巴巴集团控股有限公司 | 一种数据的处理方法、装置及设备 |
CN108762973B (zh) * | 2018-04-17 | 2021-05-14 | 华为技术有限公司 | 存储数据的方法和存储设备 |
CN110874283B (zh) * | 2018-08-31 | 2021-07-20 | 杭州海康威视系统技术有限公司 | 一种基于纠删码的数据存储方法、装置及电子设备 |
CN112988041A (zh) | 2019-12-18 | 2021-06-18 | 华为技术有限公司 | 存储系统中的数据存储方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
CN103034559A (zh) * | 2012-12-18 | 2013-04-10 | 无锡众志和达存储技术股份有限公司 | 基于rdma架构设计的pq检验模块及检验方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958436B2 (en) * | 2005-12-23 | 2011-06-07 | Intel Corporation | Performing a cyclic redundancy checksum operation responsive to a user-level instruction |
CN101452409B (zh) * | 2007-12-04 | 2010-10-13 | 无锡江南计算技术研究所 | 数据校验冗余方法及装置 |
CN102043685A (zh) * | 2010-12-31 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 独立磁盘冗余阵列系统及其数据恢复方法 |
CN106529218B (zh) * | 2016-10-28 | 2020-03-06 | 新华三技术有限公司 | 一种应用校验方法和装置 |
CN106874140B (zh) * | 2016-12-30 | 2020-03-31 | 深圳忆联信息系统有限公司 | 数据存储方法及装置 |
-
2017
- 2017-06-26 CN CN201710495333.XA patent/CN107544863B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
CN103034559A (zh) * | 2012-12-18 | 2013-04-10 | 无锡众志和达存储技术股份有限公司 | 基于rdma架构设计的pq检验模块及检验方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107544863A (zh) | 2018-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107544863B (zh) | 一种数据存储方法及装置 | |
US10127997B2 (en) | Data storage device comprising super block parity data based on page type of word line or plane | |
US20180321874A1 (en) | Flash management optimization for data update with small block sizes for write amplification mitigation and fault tolerance enhancement | |
CN110347528A (zh) | 用于坏块管理的存储器系统及方法 | |
US9558852B2 (en) | Method and apparatus for defect repair in NAND memory device | |
US10261705B2 (en) | Efficient data consistency verification for flash storage | |
US11544223B2 (en) | Write operation verification method and apparatus | |
US10475517B2 (en) | Characterizing and operating a non-volatile memory device | |
CN103853503A (zh) | 存储设备、快闪存储器、以及操作所述存储设备的方法 | |
CN110504002B (zh) | 一种硬盘数据一致性测试方法与装置 | |
CN109725850A (zh) | 存储器系统和存储设备 | |
CN115657946A (zh) | Raid顺序写场景下的片外ddr带宽卸载方法、终端及存储介质 | |
CN105528183A (zh) | 一种存储数据的方法及存储设备 | |
CN110955545A (zh) | 一种数据完整性校验方法、系统及相关设备 | |
CN106325769B (zh) | 一种数据存储的方法及装置 | |
CN111143240B (zh) | 图像存储方法、系统及终端设备 | |
CN111143146B (zh) | 一种存储装置的健康状态预测方法及系统 | |
CN110658994B (zh) | 一种基于hdd和ssd混合磁盘阵列的数据处理方法及装置 | |
CN108665940B (zh) | Ecc编码电路、解码电路以及存储器控制器 | |
CN107257281B (zh) | Nor flash存储密钥记录的方法、装置及计算机可读存储介质 | |
CN108491160B (zh) | 一种数据写入方法及装置 | |
CN109542872A (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
WO2023024383A1 (zh) | 一种mlc芯片的错误率分析方法、系统及装置 | |
CN112650441B (zh) | 条带缓存分配方法、装置、电子设备及存储介质 | |
CN109542671B (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 |