块选取所有原数据区的原数据分片,共计m-k个;然后在待解码区域中选用k个数据分片,并组成待解码矩阵P’ [k]。
[0085]步骤S322,矩阵求逆模块,根据丢失的k个原数据分片的位置、和选用待解码区域的k个数据分片的位置,从生成矩阵Code [m] [η]中选取对应的元素构成选定矩阵Gl [k][k],求出选定矩阵的逆矩阵作为解码矩阵Decode [k] [k]。
[0086]步骤S324,根据待解码矩阵P’ [k]和解码矩阵Decode [k] [k],计算出丢失的k个原数据分片。将丢失的原数据分片插入输出模块的原数据区的相应位置处。执行步骤S326。
[0087]步骤S326,将输出模块的原数据区所有数据分片,恢复为原来的文件或者完整的大数据块(Chunk)。原数据区内,既有原来放入的数据分片,也有计算出来的丢失数据分片。
[0088]此时,结束整个解码流程。
[0089]需要说明的是,图3所示的基于RS纠删码的快速解码流程只是为了说明本发明实施例所提供的快速编码流程的正常实现原理,具体实现时可能还会出现异常情况,因此还需要提供异常处理、文件按块处理、按文件元数据处理、对最后多补的零或者单独对尾块进行拼装等处理过程。
[0090]本发明的技术方案可以实现边下载数据分片边进行解码;最终解码时,可充分利用所有获得的原数据分片,减少解码时校验分片的数量。解码时和输入数据的序列无关,数据可以任意顺序进入解码系统,只要输入缓冲区内进入的数据分片数量大于等于m,最后均能解码成功。且解码时,需要进行矩阵求逆的矩阵从原来的m*m变为k*k,k < n,矩阵求逆变得更加容易,可提高解码性能。解码处理的过程与m,η具体数值无关,与生成矩阵种类也无关。因此分片数量m可以大幅度提升,提高存储利用率。本发明解决了现有技术中,基于RS纠删码的解码方法中,存在的解码计算量庞大,矩阵求逆困难,解码速度慢,以及系统编码率低的问题。同时,系统解码的开始时间不再受制于获取的第m个分片,进一步提高了解码速度,特别适用于基于公网的P2P下载环境和低速网络;或者对于数据通讯领域,可在接收数据的同时进行解码,大大提高了解码效率。
[0091]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在硬件中来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不受限于任何特定的硬件和软件结合。本发明和RS纠删码使用的生成矩阵无关,无论范德蒙德矩阵、柯西矩阵或者其它任何满足RS纠删码性质的矩阵均适用。
[0092]可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
【主权项】
1.一种解码方法,其特征在于,包括步骤: 读取输入缓冲区的待解码数据,将读取到的包括原数据分片和校验数据分片的待解码数据移送至输出模块,并在输出模块中对待解码数据进行处理; 根据处理后输出模块中原数据区和待解码区域中数据分片的数量,选取相应的数据分片进行解码操作,将解码操作结果组合成全部原数据。2.根据权利要求1所述的解码方法,其特征在于,所述方法中,所述在输出模块中对待解码数据进行处理具体包括: 若读取到校验数据分片,则将所述校验数据分片与输出模块的待解码区域的相应位置处的已有数据进行异或操作,并将异或结果作为该位置处新的已有数据; 若读取到原数据分片,则将所述原数据分片移动到输出模块的原数据区的相应位置处,同时将所述原数据分片分别乘以生成矩阵对应行的全部元素,将各结果分别与输出模块的待解码区域的相应位置处的已有数据进行异或操作,并将异或结果作为该位置处新的已有数据。3.根据权利要求1所述的解码方法,其特征在于,所述方法中,所述根据处理后输出模块中原数据区和待解码区域中数据分片的数量,选取相应的数据分片进行解码操作具体包括: 若输出模块中原数据区和待解码区域中数据分片的数量之和不小于编码时的原数据分片的总数量m,则将原数据区中可获得的全部m-k个原数据分片和从待解码区域中选用的k个数据分片进行解码。4.根据权利要求3所述的解码方法,其特征在于,所述进行解码具体包括: 根据丢失的k个原数据分片的位置、和选用待解码区域的k个数据分片的位置,从生成矩阵中选取对应的元素构成选定矩阵,求出选定矩阵的逆矩阵作为解码矩阵; 同时将从待解码区域中选用的k个数据分片组成待解码矩阵; 将所述待解码矩阵与所述解码矩阵相乘,得到所述丢失的k个原数据分片。5.一种云存储方法,其特征在于,所述方法包括步骤: 将原数据进行编码,分为至少一个原数据分片和至少一个校验数据分片,分别进行存储和/或通讯; 在用户要获取所述原数据时,执行如权利要求1-4中任一项所述的解码方法。6.一种解码装置,其特征在于,包括: 数据获取模块,用于读取输入缓冲区的待解码数据,将读取到的包括原数据分片和校验数据分片的待解码数据移送至输出模块,并在输出模块中对待解码数据进行处理; 数据解码模块,用于根据处理后输出模块中原数据区和待解码区域中数据分片的数量,选取相应的数据分片进行解码操作,将解码操作结果组合成全部原数据。7.根据权利要求6所述的解码装置,其特征在于,所述数据获取模块具体包括: 输入缓冲区模块,用于接收并存放包括原数据分片和校验数据分片的待解码数据; 判断和读取模块,用于读取输入缓冲区模块内的待解码数据,若读取到校验数据分片,则将所述校验数据分片与输出模块的待解码区域的相应位置处的已有数据进行异或操作,并将异或结果作为该位置处新的已有数据;若读取到原数据分片,则将所述原数据分片移动到输出模块的原数据区的相应位置处,同时将所述原数据分片分别乘以生成矩阵对应行的全部元素,将各结果分别与输出模块的待解码区域的相应位置处的已有数据进行异或操作,并将异或结果作为该位置处新的已有数据。8.根据权利要求6所述的解码装置,其特征在于,所述数据解码模块还包括: 分片选取模块,用于在输出模块中原数据区和待解码区域中数据分片的数量之和不小于编码时的原数据分片的总数量m时,将原数据区中可获得的全部m-k个原数据分片和从待解码区域中选用的k个数据分片进行解码。9.根据权利要求8所述的解码装置,其特征在于,所述数据解码模块进一步包括: 矩阵求逆模块,用于根据丢失的k个原数据分片的位置、和选用待解码区域的k个数据分片的位置,从生成矩阵中选取对应的元素构成选定矩阵,求出选定矩阵的逆矩阵作为解码矩阵; 计算模块,用于将从待解码区域中选用的k个数据分片组成的待解码矩阵与所述解码矩阵相乘,得到所述丢失的k个原数据分片。10.一种云存储系统,其特征在于,所述系统包括: 编码模块,用于将原数据进行编码,分为至少一个原数据分片和至少一个校验数据分片,分别进行存储和/或通讯;以及如权利要求6-9中任一项所述的解码装置。
【专利摘要】本发明提供一种解码方法和装置及云存储方法和系统,属于云存储技术领域。该解码方法包括:读取输入缓冲区的待解码数据,将读取到的包括原数据分片和校验数据分片的待解码数据移送至输出模块,并在输出模块中对待解码数据进行处理;根据处理后输出模块中原数据区和待解码区域中数据分片的数量,选取相应的数据分片进行解码操作,将解码操作结果组合成全部原数据。本发明的技术方案可以实现解码操作和数据获取工作并行进行,大大提高了解码效率。本发明对待解码数据的顺序没有要求,包含原数据和校验数据的待解码数据,可以任意顺序在输入缓冲区内得到处理。
【IPC分类】H04L29/08
【公开号】CN105007286
【申请号】CN201410167214
【发明人】孙崎
【申请人】苏宁云商集团股份有限公司
【公开日】2015年10月28日
【申请日】2014年4月23日