一种数据编码方法、系统、设备以及介质与流程

文档序号:29403449发布日期:2022-03-26 10:02阅读:126来源:国知局
一种数据编码方法、系统、设备以及介质与流程

1.本发明涉及数据编码领域,具体涉及一种数据编码方法、系统、设备以及存储介质。


背景技术:

2.纠删码(erasure coding,ec)是一种数据保护方法,它将数据分割成片段,把冗余数据扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。将原始数据分割成k个数据块,并根据编码矩阵生成m编码块,将n(n=k+m)块分布到不同的服务器上。只需要k个块就可以恢复原来的数据。
3.参数配置:k:数据块。k表示将原始数据划分的块数和恢复原始数据的最小块数。k值越小,发生故障时,数据重构的代价越大;k值越大,需要多路数据拷贝,增加网络和io的负载。
4.m:编码块。m影响数据保存的可靠性和存储成本。取值越大,对故障的容忍度大,数据的冗余度也会增加,存储成本也会提高。
5.n:生成块数(n=k+m)有效存储比:k/n传统的纠删码编码一般利用范德蒙或柯西矩阵,其编码如图1所示,图中待编码的数据块为k=5个,编码需求为m=3,最终的生成码块为d+c部分,总量为k+m=8个,有效存储比为:k/n=5/8。这样实现的纠删系统,可以对k个d进行编码,得到m个c,编码的方式即为图中所示。
6.纠删系统可在m个编码实现后很对系统中任意m个错误就行解码恢复。
7.纠删码(erasure code)属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗这类问题。由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。纠删码可以在保证相同可靠性的前提下有效地降低存储开销,因此纠删码技术被广泛地应用于各大存储系统以及数据中心例如微软的azure、facebook的f4等。纠删码的种类众多,在实际存储系统中较常见的有应用在分布式环境下的rs码(reed-solomon code)。rs码与两个参数k和r相关。给定两个正整数k和r,rs码将k个数据块编码为r个额外的校验块。而r个校验块基于范德蒙矩阵或柯西矩阵进行编码的方式就称为利用范德蒙矩阵或柯西矩阵编码的rs纠删码,具体编码过程如下所示(左侧为基于范德蒙矩阵的rs纠删码,右侧为基于柯西矩阵的rs纠删码):
或上部分的k*k矩阵对应的就是k个原始数据块,下部分的r*k矩阵对应的就是编码矩阵,通过与原始数据d1到dk相乘,得到新添加的p1到pr就是编码所得到的r个校验数据。当其中任意做多r个数据在传输中出错或丢失,需要纠错时,即用剩余数据对应矩阵的逆矩阵与数据相乘,即会得到原始数据块d1到dk(推导过程不再赘述)。
8.以d1到dr数据丢失,进行解码为例,过程如下所示:可知纠删码的核心概念是构建一个可逆的编码矩阵用以产生校验数据,其逆矩阵可经过计算恢复原始数据。常见的rs纠删码使用的是上面介绍的柯西矩阵或范德蒙矩阵,这样的优势是所得到的矩阵肯定可逆,其任意子矩阵也都可逆,并且矩阵的大小扩充简单。
9.虽然利用范德蒙矩阵实现的编解码纠删是工业界现在常用的算法方案,其具有很好的扩展性和简易实现的优势,但是同样因为数据的增加,其矩阵的复杂度也会有几何级的增加,而每一次的编码都会涉及很多的参数乘法,解码涉及到大量的矩阵逆运算以及求逆运算后新的参数的乘法和加法运算,因此复杂度很高。
10.工业界常用的乘法复杂度的解决方案时候通过引入伽罗华域来简化乘法运算,但是这样依然会额外增加一步在范德蒙矩阵和其对应关系之外的运算。


技术实现要素:

11.有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种数据编码方法,包括以下步骤:获取待编码的数据块矩阵和编码矩阵,其中编码矩阵的行数为待编码的数据块的总数量k+3,列数为数据块的总数量k,第一编码矩阵的前k行k列构成的矩阵为单位矩阵,第k+1行至第k+3行的元素为:
其中,r为纠删恢复数量,h为,表示m-1的单位阵,m为h的行数或列数,表示m-1列的全0行向量,表示m-1行的全0列向量,且h满足阿贝尔乘法群;利用所述编码矩阵乘以数据块矩阵以得到校验块,其中校验块的数量等于r;将所述校验块存储到预设位置。
12.在一些实施例中,还包括:响应于若干个数据块和/或校验块错误,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块。
13.在一些实施例中,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块,进一步包括:将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵;利用所述恢复矩阵得到所述恢复矩阵的逆矩阵,其中所述逆矩阵中所有元素通过单位矩阵、矩阵h以及矩阵h的幂次方表示;根据阿贝尔乘法群q确定矩阵h的不同幂次方之间的对应关系以求得所述逆矩阵中所有元素;利用所述逆矩阵乘以剩余的正确数据块和校验块构成的矩阵得到所有的数据块以恢复错误的数据块;再次利用编码矩阵对所述恢复的数据块进行编码以恢复错误的校验块。
14.在一些实施例中,将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵,进一步包括:判断所述恢复矩阵的对角线是否存在元素0;响应于存在元素0,调整恢复矩阵中行的顺序。
15.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据编码系统,包括:获取模块,配置为获取待编码的数据块矩阵和编码矩阵,其中编码矩阵的行数为待编码的数据块的总数量k+3,列数为数据块的总数量k,第一编码矩阵的前k行k列构成的矩阵为单位矩阵,第k+1行至第k+3行的元素为:
其中,r为纠删恢复数量,h为,表示m-1的单位阵,m为h的行数或列数,表示m-1列的全0行向量,表示m-1行的全0列向量,且h满足阿贝尔乘法群;计算模块,配置为利用所述编码矩阵乘以数据块矩阵以得到校验块,其中校验块的数量等于r;存储模块,配置为将所述校验块存储到预设位置。
16.在一些实施例中,还包括恢复模块,配置为:响应于若干个数据块和/或校验块错误,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块。
17.在一些实施例中,恢复模块还配置为:将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵;利用所述恢复矩阵得到所述恢复矩阵的逆矩阵,其中所述逆矩阵中所有元素通过单位矩阵、矩阵h以及矩阵h的幂次方表示;根据阿贝尔乘法群q确定矩阵h的不同幂次方之间的对应关系以求得所述逆矩阵中所有元素;利用所述逆矩阵乘以剩余的正确数据块和校验块构成的矩阵得到所有的数据块以恢复错误的数据块;再次利用编码矩阵对所述恢复的数据块进行编码以恢复错误的校验块。
18.在一些实施例中,恢复模块还配置为:判断所述恢复矩阵的对角线是否存在元素0;响应于存在元素0,调整恢复矩阵中行的顺序。
19.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种数据编码方法的步骤。
20.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种数据编码方法的步骤。
21.本发明具有以下有益技术效果之一:本发明提出的方案能够使得控制端只需要登录邮箱通过发邮件的方式实现对被控端的远程控制,无需安装任何程序。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的实施例。
23.图1为传统的编码方法示意图;图2为本发明的实施例提供的数据编码方法的流程示意图;图3为本发明的实施例提供的数据编码系统的结构示意图;图4为本发明的实施例提供的计算机设备的结构示意图;图5为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
24.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
25.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
26.根据本发明的一个方面,本发明的实施例提出一种数据编码方法,如图2所示,其可以包括步骤:s1,获取待编码的数据块矩阵和编码矩阵,其中编码矩阵的行数为待编码的数据块的总数量k+3,列数为数据块的总数量k,第一编码矩阵的前k行k列构成的矩阵为单位矩阵,第k+1行至第k+3行的元素为:其中,r为纠删恢复数量,h为,表示m-1的单位阵,m为h的行数或列数,表示m-1列的全0行向量,表示m-1行的全0列向量,且h满足阿贝尔乘法群;s2,利用所述编码矩阵乘以数据块矩阵以得到校验块,其中校验块的数量等于r;s3,将所述校验块存储到预设位置。
27.本发明提出的数据编码方法将运算与硬件的比特处理特性相结合,将所有的运算放入了比特级,从而无需常规的乘法运算和伽罗华域运算模块。在算法构建时,矩阵采用了范德蒙的基本原理,首先构建稀疏阵降低运算复杂度,然后将其构建为阿贝尔乘法群,从而简化了编解码的运算复杂度,以及解码的逆矩阵求取复杂度。
28.在一些实施例中,为了省略复杂的范德蒙矩阵的参数进行纠删编码时的运算,采用的方法是利用稀疏阵来代替范德蒙的参数。
29.已知在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。纠删中常常用到的ldpc(low density parity check code)就是利用稀疏阵进行编码的一种方法。
30.这里构建的稀疏阵参考了构建ldpc的gallager构建的基本思路,保证每行每列有
一个1,其他为0。
31.具体的稀疏阵的行列数参照编码涉及的硬件的具体操作位宽来作设定,因为硬件中一般的传输都是按照byte进行的,亦即是8个bit(比特),因此我们建议这里设定为行列数为m=n=8,以8举例所构建的稀疏阵方式为: (1)这里的表示m-1的单位阵,以上述m=8为例,则这里的为: (2)相应的,这里的表示的m-1的全0行向量,则上述h矩阵在考虑m=n=8时举例情况为:(3)这样构造得到的h可以满足实现一个集合数量为m的阿贝尔乘法群集合:(4)接着可以利用第一步中构建出的阿贝尔乘法群集合来构造编码关系。
32.首先考虑信息位的对应关系,因为上述的矩阵构造是基于数据传输时的位宽制定的,因此同样以1byte作为硬件的传输单位举例,考虑有数据a,b,c,d四块作为信息,则信息位的编码利用矩阵展开则为: (5)这里的i为m=8的单位阵,而abcd四块信息如上所述是以1byte为基本传输单位,则实现到每一个比特的运算为(转换成二进制运算):
(6)校验位的产生我们参照范德蒙的关系式:(7)则这里将替换为步骤一种产生的稀疏阵,则可以表示为:(8)需要注意使用这种方法为了构造满足公式(7)的范德蒙矩阵特性,需要将其的k限定在小于等于m的范围内。同理r需要小于等于m。
33.以上述的abcd情况举例,考虑需要支持的纠删恢复数量为r=2的情况下,本方法的具体编码情况则为:(9)在一些实施例中,还包括:响应于若干个数据块和/或校验块错误,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块。
34.在一些实施例中,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块,进一步包括:将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵;利用所述恢复矩阵得到所述恢复矩阵的逆矩阵,其中所述逆矩阵中所有元素通过单位矩阵、矩阵h以及矩阵h的幂次方表示;根据阿贝尔乘法群q确定矩阵h的不同幂次方之间的对应关系以求得所述逆矩阵中所有元素;利用所述逆矩阵乘以剩余的正确数据块和校验块构成的矩阵得到所有的数据块
以恢复错误的数据块;再次利用编码矩阵对所述恢复的数据块进行编码以恢复错误的校验块。
35.具体的,本方法的编码矩阵是通过范德蒙矩阵,利用阿贝尔乘法群集合构造所得,因此其解码首先利用范德蒙的解码矩阵关系来计算。
36.具体计算如上类似,将具体的计算关系利用矩阵来代替,考虑矩阵所组成的大矩阵下的逆矩阵关系。
37.同样用上述关系举例(即纠删恢复数量为r=2的情况),考虑信息位及校验位所得到的总的编码矩阵为: (10)解码时首先考虑求逆矩阵,待求逆矩阵的构造如范德蒙相同都是抽去错误信息位对应的编码行列式,然后利用剩余的矩阵求逆。
38.针对上述abcd的编码需求下,以bc发生错误举例,则上述矩阵的待求逆矩阵也即恢复矩阵构造为: (11)对其基于矩阵组合方法进行拆解求逆可得:对其基于矩阵组合方法进行拆解求逆可得:对其基于矩阵组合方法进行拆解求逆可得:(12)而通过上面对h的构造我们可知,此时的核心运算相当于去求,从上面的关系观察可知,事实上abcd相互之间因为矩阵构造的系数性关系,所以互相没有影响,
并且其求法还存在一定的类似性。
39.因此这里以b1b2的求法举例说明。抽取b1b2的关系后,可以得到关系式:(13)通过上面的介绍可知,在构建h的编码矩阵时,我们构建其符合稀疏的阿贝尔乘法群集合关系,即是说h的集合内可以通过乘法相互转换,因此上式的关系就可以转化为更简单的对应关系,具体如下:首先通过矩阵行列变化可以得到: (14)因此上述的矩阵关系中,可以简单推得: (15)即是说h2的逆矩阵为h6。
40.同理在同一个阿贝尔乘法群关系中有: (16)利用阿贝尔乘法群关系推导(15)和(16)后,代入公式(13)可以得到:(17)因此轻易可得到b2进而得到b1,同理可以推得所有的矩阵,最终得到逆矩阵的关系,从而实现译码得到,这样通过在比特级实现运算,具有无需乘法运算,无需伽罗华域的优势。而且在解码求逆方面,因为阿贝尔乘法群的引入,使其只需要计算有限域的宽度,即可轻易得到逆矩阵,从而省略了逆矩阵的求取流程。方法与硬件可以较好的结合,所实现的编解码矩阵可以很好的和硬件操作特性相结合,达到高速低功耗的优势。
41.在一些实施例中,将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵,进一步包括:
判断所述恢复矩阵的对角线是否存在元素0;响应于存在元素0,调整恢复矩阵中行的顺序。
42.具体的,在公式11中,正常第四行应该为第二行,但是由于其第二列为0,从而若其在第二行,则会导致对角线上出现0元素,因此需要调整其位置,从而提高运算速度。
43.本发明提出了的编解码方案,通过将运算与硬件的比特处理特性相结合,使得所有的运算放入了比特级,从而无需常规的乘法运算和伽罗华域运算模块。在算法构建时,矩阵采用了范德蒙的基本原理,首先构建稀疏阵降低运算复杂度,然后将其构建为阿贝尔乘法群,从而简化了编解码的运算复杂度,以及解码的逆矩阵求取复杂度。通过举例验证,本方法可以实现在比特级运算,具有无需乘法运算,无需伽罗华域。在解码求逆方面,因为阿贝尔乘法群的引入,使其只需要计算有限域的宽度,即可轻易得到逆矩阵,从而省略了逆矩阵的求取流程。方法与硬件可以较好的结合,所实现的编解码矩阵可以很好的和硬件操作特性相结合,达到高速低功耗的优势。
44.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据编码系统400,如图3所示,包括:获取模块401,配置为获取待编码的数据块矩阵和编码矩阵,其中编码矩阵的行数为待编码的数据块的总数量k+3,列数为数据块的总数量k,第一编码矩阵的前k行k列构成的矩阵为单位矩阵,第k+1行至第k+3行的元素为:其中,r为纠删恢复数量,h为,表示m-1的单位阵,m为h的行数或列数,表示m-1列的全0行向量,表示m-1行的全0列向量,且h满足阿贝尔乘法群;计算模块402,配置为利用所述编码矩阵乘以数据块矩阵以得到校验块,其中校验块的数量等于r;存储模块403,配置为将所述校验块存储到预设位置。
45.在一些实施例中,还包括恢复模块,配置为:响应于若干个数据块和/或校验块错误,利用所述编码矩阵和剩余正确的数据块和所述校验块恢复错误的若干个数据块和/或校验块。
46.在一些实施例中,恢复模块还配置为:将所述编码矩阵中错误的数据块和/或校验块对应的行删除得到恢复矩阵;利用所述恢复矩阵得到所述恢复矩阵的逆矩阵,其中所述逆矩阵中所有元素通过单位矩阵、矩阵h以及矩阵h的幂次方表示;根据阿贝尔乘法群q确定矩阵h的不同幂次方之间的对应关系以求得所述逆矩阵中所有元素;利用所述逆矩阵乘以剩余的正确数据块和校验块构成的矩阵得到所有的数据块
以恢复错误的数据块;再次利用编码矩阵对所述恢复的数据块进行编码以恢复错误的校验块。
47.在一些实施例中,恢复模块还配置为:判断所述恢复矩阵的对角线是否存在元素0;响应于存在元素0,调整恢复矩阵中行的顺序。
48.基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机设备501,包括:至少一个处理器520;以及存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种数据编码方法的步骤。
49.基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种数据编码方法的步骤。
50.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
51.此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
52.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
53.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
54.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
55.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
56.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
57.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明
实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1