如何使用Facebook開發(fā)的這種快速數(shù)據(jù)壓縮算法Zstd
譯文【51CTO.com快譯】Zstandard(又叫Zstd)是一款免費(fèi)開源的快速實(shí)時數(shù)據(jù)壓縮程序,具有更高的壓縮比,由Facebook開發(fā)。它是用C語言編寫的無損壓縮算法,因此它是一個原生的Linux程序。
需要的話,它可以犧牲壓縮速度,換取更高的壓縮比(壓縮速度與壓縮比這個組合可以逐級配置),反之亦然。它有一種用于小數(shù)據(jù)壓縮的特殊模式,名為字典壓縮,可以用提供的任何樣本集來構(gòu)建字典。它帶有一個命令行實(shí)用程序,用于創(chuàng)建和解碼.zst、.gz、.xz和.lz4等文件。
重要的是, Zstandard有一套豐富的API,支持幾乎所有流行的編程語言,包括Python、Java、JavaScript、Nodejs、Perl、Ruby、C#、Go、Rust、PHP和Swift等語言。
它在Facebook積極用于壓縮多種格式的大量數(shù)據(jù),支持多種使用場景,適用于亞馬遜Redshift數(shù)據(jù)倉庫等服務(wù)、Hadoop和Redis等數(shù)據(jù)庫、Tor網(wǎng)絡(luò)以及包括游戲在內(nèi)的其他許多應(yīng)用。
通過使用lzbench這種開源的內(nèi)存基準(zhǔn)測試工具,在一臺運(yùn)行Linux Debian的服務(wù)器上執(zhí)行幾項(xiàng)快速壓縮算法測試,獲得了以下結(jié)果:
Zstandard壓縮測試
如何在Linux中安裝Zstandard壓縮工具?
想在Linux發(fā)行版上安裝Zstandard,你需要用源代碼來編譯,不過在此之前,需要使用發(fā)行版軟件包管理器在系統(tǒng)上安裝必要的開發(fā)工具,如下所示:
- $ 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+
一旦安裝了所有需要的開發(fā)工具,可以下載源代碼軟件包,進(jìn)入到本地倉庫目錄,構(gòu)建二進(jìn)制文件并安裝,所下所示:
- $ cd ~/Downloads
- $ git clone https://github.com/facebook/zstd.git
- $ cd zstd
- $ make
- $ sudo make install
一旦Zstandard安裝完畢,現(xiàn)在我們可以進(jìn)一步學(xué)習(xí)下面部分中Zstd命令示例的一些基本用法。
學(xué)習(xí)Linux中10個Zstd命令使用示例
Zstd的命令行語法通常與gzip和xz工具類似,不過有幾個差異。
1.想創(chuàng)建.zst壓縮文件,只需提供一個壓縮文件名即可,或者使用-z標(biāo)志也意味著壓縮,這是默認(rèn)操作。
- $ zstd etcher-1.3.1-x86_64.AppImage
或者
- $ zstd -z etcher-1.3.1-x86_64.AppImage
2.想解壓縮.zst壓縮文件,使用-d標(biāo)志或unzstd實(shí)用程序,如下所示:
- $ zstd -d etcher-1.3.1-x86_64.AppImage
或者
- $ unzstd etcher-1.3.1-x86_64.AppImage
3.想在壓縮操作和后刪除源文件,默認(rèn)情況下,源文件在成功壓縮或解壓縮后不會被刪除;想刪除它,使用--rm選項(xiàng)。
- $ 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.想設(shè)置壓縮級別,Zstd有許多操作修改符,比如你可以指定壓縮級別為-6 (數(shù)值1-19,默認(rèn)值為3),如下所示:
- $ zstd -6 --rm etcher-1.3.1-x86_64.AppImage
5.想設(shè)置壓縮速度,Zstd的壓縮速度比為1-10,默認(rèn)壓縮速度為1??梢允褂?-fast選項(xiàng),犧牲壓縮比,換取更高的壓縮速度;數(shù)值越大,壓縮速度越快。
- $ zstd --fast=10 etcher-1.3.1-x86_64.AppImage
6.想顯示有關(guān)壓縮文件的信息,使用-l標(biāo)志,這可以用來顯示有關(guān)壓縮文件的信息。
- $ zstd -l etcher-1.3.1-x86_64.AppImage.zst
7.想測試壓縮文件的完整性,使用-t標(biāo)志,如下所示:
- $ zstd -t etcher-1.3.1-x86_64.AppImage.zst
8.想啟用詳細(xì)模式,使用-v選項(xiàng)。
- $ 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進(jìn)程優(yōu)先級設(shè)置為實(shí)時,可以使用選項(xiàng)-priority = rt,如下所示:
- $zstd --priority=rt etcher-1.3.1-x86_64.AppImage
-r標(biāo)志指令Zstd對字典執(zhí)行遞歸操作。只要查閱Zstd參考手冊頁,你就可以找到許多實(shí)用的高級選項(xiàng),以及如何閱讀或創(chuàng)建字典。
- $ man zstd
- Zstandard Github倉庫:https://github.com/facebook/zstd
Zstandard是一種快速的實(shí)時無損數(shù)據(jù)壓縮算法和壓縮工具,提供了高壓縮比。嘗試一下,分享你的想法,也可以通過下面的反饋表來提問。
原文標(biāo)題:zstd – A Fast Data Compression Algorithm Used By Facebook,作者:Aaron Kili
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】