差分編碼

差分編碼(英語: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.

相關條目