EC编码

http://www.infoq.com/cn/articles/hierarchical-storage-of-sequential-databases?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

为了保证时序数据在机器宕机、硬盘故障的时候还能正常的访问、不会丢失,也就是为了保证数据的可用性和持久性,会为数据保存多个备份 (也称为副本) ,根据可用性和持久性的需求一般是保存2到3个副本,这样当其中的1个或者2个机器宕机、硬盘故障的时候也能保证数据的正常访问以及不会丢失。但是这也大大增加了存储的成本,3个副本就是3倍的存储成本。通过EC编码,可以将存储成本降到1.5倍,同时不会降低数据的可用性和持久性。

EC编码全称是Erasure Coding纠删码,是一种数据保护技术,最早应用于通信行业的数据传输的数据恢复中,同时也用于RAID-5和RAID6存储阵列技术中。EC编码主要是利用算法对原始数据块进行编码得到校验块,并将原始数据块和校验块都存储起来。当原始数据块丢失时,通过其他原始数据块以及校验块能重新计算出丢失的数据块;当校验块丢失时,重新计算即可得到校验块。这样就能对丢失的数据进行恢复,从而达到容错的目的。对于k个原始数据块和m个校验块,算法能保证在丢失任意m个块后,都可以通过算法恢复出原来的k个原始数据块。如图3所示,一个生成矩阵GT乘以k个原始数据块组成的向量,可以得到由k个原始数据块和m个校验块组成的向量。