差分编码

差分编码(英语:Delta encoding),又称增量编码,是指在序列式资料之间以数据差异英语Data differencing形式存储或发送资料的方式(相对于存储发送完整文件的方式)。通常应用于目标文件和参考文件之间存在高度冗余的情况,使压缩后文件大小比仅使用目标文件压缩小,可以提高网络和磁碟资源的使用效率。

差异存储在称为“delta”或“diff”的不连续文件中。由于改变通常很小(平均占全部大小的2%),差分编码能大幅减少资料的重复。一连串独特的delta文件在空间上要比未编码的相等文件有效率多了。

差分编码的简单例子是存储序列式资料之间的差异(而不是存储资料本身):不存“2, 4, 6, 9, 7”,而是存“2, 2, 2, 3, -2”。单独使用用处不大,但是在序列式数值常出现时可以帮助压缩资料。

应用

典型的应用场景包括管理有多版本的文件,透过网络传输软件的补丁或更新包,此时需要接收者已经拥有旧版本的资料。或是当网页有共同的布局和菜单结构时可以压缩。 需要查看文件的历史更改记录(版本控制git等)、Windows中的远程差分压缩英语Remote Differential Compression在线备份等场景均用到了差分编码。 大多数使用增量编码的文件为文字或二进制文件。

RCS和SCCS是两种传统系统,为单一文件提供增量压缩的版本控制。更新的版本控制系统,如 CVS和PRCS强调对文件集合(而不是单一文件)提供版本控制的重要性,因此常使用RCS和SCCS进行后端存储而不是用于版本控制。

参考资料

Suel, Torsten. "Delta compression techniques." Encyclopedia of Big Data Technologies 63 (2019). MacDonald, Joshua. (2003). File System Support for Delta Compression.

相关条目