當前位置:
首頁 > 最新 > 如何使用Facebook開發的這種快速數據壓縮演算法Zstd

如何使用Facebook開發的這種快速數據壓縮演算法Zstd

Zstandard(又叫Zstd)是一款免費開源的快速實時數據壓縮程序,具有更高的壓縮比,由Facebook開發。它是用C語言編寫的無損壓縮演算法,因此它是一個原生的Linux程序。

需要的話,它可以犧牲壓縮速度,換取更高的壓縮比(壓縮速度與壓縮比這個組合可以逐級配置),反之亦然。它有一種用於小數據壓縮的特殊模式,名為字典壓縮,可以用提供的任何樣本集來構建字典。它帶有一個命令行實用程序,用於創建和解碼.zst、.gz、.xz和.lz4等文件。

重要的是, Zstandard有一套豐富的API,支持幾乎所有流行的編程語言,包括Python、Java、JavaScript、Nodejs、Perl、Ruby、C#、Go、Rust、PHP和Swift等語言。

它在Facebook積極用於壓縮多種格式的大量數據,支持多種使用場景,適用於亞馬遜Redshift數據倉庫等服務、Hadoop和Redis等資料庫、Tor網路以及包括遊戲在內的其他許多應用。

通過使用lzbench這種開源的內存基準測試工具,在一台運行Linux Debian的伺服器上執行幾項快速壓縮演算法測試,獲得了以下結果:

Zstandard壓縮測試

如何在Linux中安裝Zstandard壓縮工具?

想在Linux發行版上安裝Zstandard,你需要用源代碼來編譯,不過在此之前,需要使用發行版軟體包管理器在系統上安裝必要的開發工具,如下所示:

$ sudo apt update && sudo apt install build-essential #Ubuntu/Debian

# yum group install "Development Tools" #CentOS/REHL

# dnf groupinstall "C Development Tools and Libraries" #Fedora 22+

一旦安裝了所有需要的開發工具,可以下載源代碼軟體包,進入到本地倉庫目錄,構建二進位文件並安裝,所下所示:

$ cd ~/Downloads

$ git clone https://github.com/facebook/zstd.git

$ cd zstd

$ make

$ sudo make install

一旦Zstandard安裝完畢,現在我們可以進一步學習下面部分中Zstd命令示例的一些基本用法。

學習Linux中10個Zstd命令使用示例

Zstd的命令行語法通常與gzip和xz工具類似,不過有幾個差異。

1.想創建.zst壓縮文件,只需提供一個壓縮文件名即可,或者使用-z標誌也意味著壓縮,這是默認操作。

$ zstd etcher-1.3.1-x86_64.AppImage

或者

$ zstd -z etcher-1.3.1-x86_64.AppImage

2.想解壓縮.zst壓縮文件,使用-d標誌或unzstd實用程序,如下所示:

$ zstd -d etcher-1.3.1-x86_64.AppImage

或者

$ unzstd etcher-1.3.1-x86_64.AppImage

3.想在壓縮操作和後刪除源文件,默認情況下,源文件在成功壓縮或解壓縮後不會被刪除;想刪除它,使用--rm選項。

$ ls etcher-1.3.1-x86_64.AppImage

$ zstd --rm etcher-1.3.1-x86_64.AppImage

$ ls etcher-1.3.1-x86_64.AppImage

4.想設置壓縮級別,Zstd有許多操作修改符,比如你可以指定壓縮級別為-6 (數值1-19,默認值為3),如下所示:

$ zstd -6 --rm etcher-1.3.1-x86_64.AppImage

5.想設置壓縮速度,Zstd的壓縮速度比為1-10,默認壓縮速度為1。可以使用--fast選項,犧牲壓縮比,換取更高的壓縮速度;數值越大,壓縮速度越快。

$ zstd --fast=10 etcher-1.3.1-x86_64.AppImage

6.想顯示有關壓縮文件的信息,使用-l標誌,這可以用來顯示有關壓縮文件的信息。

$ zstd -l etcher-1.3.1-x86_64.AppImage.zst

7.想測試壓縮文件的完整性,使用-t標誌,如下所示:

$ zstd -t etcher-1.3.1-x86_64.AppImage.zst

8.想啟用詳細模式,使用-v選項。

$ zstd -v -5 etcher-1.3.1-x86_64.AppImage

9.想使用其他文件壓縮或解壓縮格式,比如gzip、xz、lzma和lz4,使用--format=FORMAT,如下所示:

$ zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage

$ zstd -v --format=xz etcher-1.3.1-x86_64.AppImage

10.想將Zstd進程優先順序設置為實時,可以使用選項-priority = rt,如下所示:

$zstd --priority=rt etcher-1.3.1-x86_64.AppImage

-r標誌指令Zstd對字典執行遞歸操作。只要查閱Zstd參考手冊頁,你就可以找到許多實用的高級選項,以及如何閱讀或創建字典。

$ man zstd

Zstandard Github倉庫:https://github.com/facebook/zstd

Zstandard是一種快速的實時無損數據壓縮演算法和壓縮工具,提供了高壓縮比。嘗試一下,分享你的想法,也可以通過下面的反饋表來提問。

原文標題:zstd – A Fast Data Compression Algorithm Used By Facebook,作者:Aaron Kili

文章來源:51CTO

識別下圖二維碼,加數盟社區「」為好友,回復暗號「入群」,加入數盟社區交流群,群內持續有乾貨分享~~

本周乾貨內容:Deep Reinforcement Learning What is Next in AI

媒體合作請聯繫:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數盟 的精彩文章:

TAG:數盟 |