如何使用Facebook开发的这种快速数据压缩算法Zstd

译文
开源 Linux 算法
Zstandard(又叫Zstd)是一款免费开源的快速实时数据压缩程序,具有更高的压缩比,由Facebook开发。它是用C语言编写的无损压缩算法,因此它是一个原生的Linux程序。

【51CTO.com快译】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的服务器上执行几项快速压缩算法测试,获得了以下结果: 

如何使用Facebook开发的这种快速数据压缩算法Zstd

Zstandard压缩测试

如何在Linux中安装Zstandard压缩工具?

想在Linux发行版上安装Zstandard,你需要用源代码来编译,不过在此之前,需要使用发行版软件包管理器在系统上安装必要的开发工具,如下所示: 

  1. $ sudo apt update && sudo apt install build-essential       #Ubuntu/Debian  
  2. # yum group install "Development Tools"               #CentOS/REHL  
  3. # dnf groupinstall "C Development Tools and Libraries"  #Fedora 22+  

一旦安装了所有需要的开发工具,可以下载源代码软件包,进入到本地仓库目录,构建二进制文件并安装,所下所示: 

  1. $ cd ~/Downloads  
  2. $ git clone https://github.com/facebook/zstd.git  
  3. $ cd zstd  
  4. $ make  
  5. $ sudo make install   

一旦Zstandard安装完毕,现在我们可以进一步学习下面部分中Zstd命令示例的一些基本用法。

学习Linux中10个Zstd命令使用示例

Zstd的命令行语法通常与gzip和xz工具类似,不过有几个差异。

1.想创建.zst压缩文件,只需提供一个压缩文件名即可,或者使用-z标志也意味着压缩,这是默认操作。 

  1. $ zstd etcher-1.3.1-x86_64.AppImage  

或者 

  1. $ zstd -z etcher-1.3.1-x86_64.AppImage  

2.想解压缩.zst压缩文件,使用-d标志或unzstd实用程序,如下所示: 

  1. $ zstd -d etcher-1.3.1-x86_64.AppImage  

或者 

  1. $ unzstd etcher-1.3.1-x86_64.AppImage  

3.想在压缩操作和后删除源文件,默认情况下,源文件在成功压缩或解压缩后不会被删除;想删除它,使用--rm选项。 

  1. $ ls etcher-1.3.1-x86_64.AppImage  
  2. $ zstd --rm  etcher-1.3.1-x86_64.AppImage  
  3. $ ls etcher-1.3.1-x86_64.AppImage  

4.想设置压缩级别,Zstd有许多操作修改符,比如你可以指定压缩级别为-6 (数值1-19,默认值为3),如下所示: 

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

5.想设置压缩速度,Zstd的压缩速度比为1-10,默认压缩速度为1。可以使用--fast选项,牺牲压缩比,换取更高的压缩速度;数值越大,压缩速度越快。 

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

6.想显示有关压缩文件的信息,使用-l标志,这可以用来显示有关压缩文件的信息。 

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

7.想测试压缩文件的完整性,使用-t标志,如下所示: 

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

8.想启用详细模式,使用-v选项。 

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

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

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

10.想将Zstd进程优先级设置为实时,可以使用选项-priority = rt,如下所示: 

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

-r标志指令Zstd对字典执行递归操作。只要查阅Zstd参考手册页,你就可以找到许多实用的高级选项,以及如何阅读或创建字典。 

  1. $ man zstd  
  2. Zstandard Github仓库:https://github.com/facebook/zstd  

Zstandard是一种快速的实时无损数据压缩算法和压缩工具,提供了高压缩比。尝试一下,分享你的想法,也可以通过下面的反馈表来提问。

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

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2013-07-22 13:54:32

iOS开发ASIHTTPRequ

2017-06-12 18:24:25

数据库压缩技术

2021-09-15 11:48:02

FacebookAndroid AppSuperpack技术

2023-11-09 09:48:16

数据压缩微服务

2010-07-14 14:07:50

SQL Server

2018-05-28 21:51:25

Protocol bu数据存储序列化

2013-03-13 09:53:50

SQL Server

2011-03-29 13:56:12

SQL Server 数据压缩

2010-07-30 09:36:15

StorwizeIBM

2009-07-08 00:24:00

数据压缩Oracle 11g

2021-02-25 09:02:29

FacebookZstd应用

2023-06-05 08:46:42

2010-03-05 09:27:07

SQL Server

2021-10-13 10:32:37

算法Facebook技术

2022-05-12 15:05:32

云计算数据压缩

2022-06-13 15:49:38

LinuxLinux 5.19

2021-07-06 18:19:03

Ubuntu 21.1zstd压缩软件包

2011-10-17 14:04:11

戴尔DX6000G数据压缩

2021-09-26 10:08:33

TSDB时序数据库压缩解压
点赞
收藏

51CTO技术栈公众号