物件儲存服務的壓縮特性

jackieathome發表於2024-08-07

在物件儲存服務中整合壓縮演算法,可以有效節省最終佔用的空間,提升介質的利用效率,提高儲存的收益。
選擇壓縮演算法時,通常綜合考慮物件的格式、訪問頻率、訪問時延、儲存服務的負載、儲存伺服器的硬體規格、儲存介質的規格等。
對於高壓縮比的文字類資料,通常建議在客戶端應用側完成壓縮,這樣除節省儲存空間,還節省了傳輸頻寬和網路傳輸引入的時延。
對於二進位制類的檔案,考慮到壓縮的收益比較低,通常不建議進行壓縮。
對於訪問頻率較低的歸檔類的冷資料,通常選擇高壓縮比的壓縮演算法,有助於節省空間。
對於訪問頻率中等的溫資料,初期可採用解壓吞吐量高的壓縮演算法,待訪問量逐漸下降到一定程度之後變為冷資料,此時在後臺任務中逐步轉換為採用高壓縮比的演算法,同時兼顧訪問效率和儲存空間的利用率。
對於已壓縮的物件,假如一定時間內訪問頻率超出閾值,可以還原一份非壓縮的副本,透過空間換時間的方式,改善訪問效率。
對於大量的小檔案,比如小於1MB,可以考慮採用先聚合再壓縮的策略,改善壓縮演算法的工作收益。
對於大的檔案,比如超出10GB,可以依據壓縮演算法的特點,拆解為多個塊,同時壓縮,充分利用硬體,縮短壓縮演算法的工作時間,同時也可以改善訪問時解壓檔案的效率。

實現時的關注點,如下:

  • 資料的格式
    • 文字,比如TXT、XML、INI、PROPERTIES、CSV、JSON、YAML等
    • 二進位制,比如圖片、影片、音訊、可執行檔案等
  • 壓縮的演算法
    • 無失真壓縮
    • 有失真壓縮
  • 壓縮演算法的評估指標
    • 吞吐量
      • 壓縮時吞吐量
      • 解壓時吞吐量
    • CPU使用量
    • 記憶體使用量
    • 硬碟使用量
    • 壓縮比率
  • 常見的壓縮演算法
    • gzip
    • bzip2
    • zip
    • lzw
    • snappy
    • zstd
  • 專用的壓縮演算法
    • H264
    • MPEG2
    • MPEG4
    • JPEG
  • 執行壓縮操作的位置
    • 客戶應用
    • 物件SDK
    • 物件儲存服務
  • 執行壓縮的時機
    • 寫入時壓縮
    • 後臺壓縮
      • 對於未壓縮的物件,在建立後、訪問頻率較低,可在後臺任務中轉換為壓縮檔案,節省儲存空間
      • 對於已壓縮的物件,訪問頻率超過一定閾值,可在後臺任務中建立一個非壓縮的副本,透過空間換時間的方式來提升訪問效率
  • 壓縮的粒度
    • 以檔案為粒度,執行壓縮
    • 以資料塊為粒度,執行壓縮
  • 壓縮演算法的選擇
    • 針對所有的檔案,使用統一的壓縮演算法
    • 依據檔案型別的特點,使用特定的壓縮演算法
    • 由客戶指定壓縮演算法

參考資料

  • 壓縮演算法

相關文章