数据冗余
数据冗余是在原始数据基础上附加用于恢复的额外数据,使得即使部分丢失也能恢复整体的机制。RAID 的镜像、通信的奇偶校验位、二维码的纠错码字等,在确保数据可靠性的所有场景中都有使用。
二维码的纠错通过里德-所罗门码的数据冗余实现。纠错级别 L 可恢复约 7%、M 约 15%、Q 约 25%、H 约 30% 的缺损。这个数字是可恢复的缺损比例,并非冗余数据所占的比例。H 级时,二维码整体码字中约 66% 用于纠错,可用于原始数据的约占 34%。
冗余性存在权衡。冗余数据越多破损耐性越高,但存储相同信息量所需的二维码尺寸(版本)也会变大。100 字符的 URL 用 L 级存储版本 5(37×37 模块、106 字节)即可,但 H 级需要版本 10(57×57 模块、119 字节)。根据用途选择适当级别决定尺寸与耐久性的平衡。
设计二维码中将 Logo 放置在中央时,Logo 覆盖的模块被视为「损坏」。H 级最多可恢复约 30% 的码字缺损,被 logo 盖住的模块会被当成缺损,中央才有放 logo 的余地;但这个 30% 是相对数据而言的比例,并非可覆盖的面积,实际推荐把遮挡控制在 20% 左右以确保安全边际,以纠错等级 H 为前提时上限的经验值约为 25%。