zstd: un algoritmo de compresión de datos rápido utilizado por Facebook


Zstandard (también conocido como zstd) es un programa de compresión de datos en tiempo real rápido y gratuito de código abierto con mejores relaciones de compresión, desarrollado por Facebook. Es un algoritmo de compresión sin pérdidas escrito en C (hay una reimplementación en Java), por lo que es un programa nativo de Linux.

Cuando sea necesario, puede cambiar la velocidad de compresión por relaciones de compresión más fuertes (la compensación entre la velocidad de compresión y la relación de compresión se puede configurar mediante pequeños incrementos), y viceversa. Tiene un modo especial para la compresión de datos pequeños, conocido como compresión de diccionario, y puede crear diccionarios a partir de cualquier conjunto de muestra proporcionado. Viene con una utilidad de línea de comandos para crear y decodificar archivos .zst, .gz, .xz y .lz4.

Es importante destacar que Zstandard tiene una rica colección de API, es compatible con casi todos los lenguajes de programación populares, incluidos Python, Java, JavaScript, Nodejs, Perl, Ruby, C #, Go, Rust, PHP, Switft y mucho más.

Se utiliza activamente para comprimir grandes volúmenes de datos en múltiples formatos y casos de uso en Facebook; servicios como el almacenamiento de datos de Amazon Redshift; bases de datos como Hadoop y Redis; la red Tor y muchas otras aplicaciones, incluidos juegos.

Los siguientes resultados se obtienen realizando varias pruebas de algoritmos de compresión rápida en un servidor que ejecuta Linux Debian utilizando lzbench, una herramienta de referencia en memoria de código abierto.

Cómo instalar la herramienta de compresión Zstandard en Linux

Para instalar Zstandard en una distribución de Linux, debe compilarlo a partir de las fuentes, pero antes de eso, primero debe instalar las herramientas de desarrollo necesarias en su sistema utilizando su administrador de paquetes de distribución como se muestra.

$ 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+

Una vez instaladas todas las herramientas de desarrollo necesarias, ahora puede descargar el paquete fuente, pasar al directorio de repositorio local, compilar el binario e instalarlo como se muestra.

$ cd ~/Downloads
$ git clone https://github.com/facebook/zstd.git
$ cd zstd
$ make
$ sudo make install 

Una vez instalado Zstandard, ahora podemos avanzar más para aprender algunos ejemplos de uso básico de los comandos Zstd en la siguiente sección.

Aprenda 10 ejemplos de uso del comando Zstd en Linux

La sintaxis de la línea de comandos de Zstd es generalmente similar a la de las herramientas gzip y xz, con algunas diferencias.

1. Para crear un archivo de compresión .zst , simplemente proporcione un nombre de archivo para comprimirlo o use el indicador -z que también significa comprimir, que es la acción predeterminada.

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

2. Para descomprimir un archivo de compresión .zst , use el indicador -d o la utilidad unzstd como se muestra.

$ zstd -d etcher-1.3.1-x86_64.AppImage.zst 
OR
$ unzstd etcher-1.3.1-x86_64.AppImage.zst 

3. Para eliminar el archivo de origen después de una operación, de forma predeterminada, el archivo de origen no se elimina después de una compresión o descompresión exitosa. Para eliminarlo, use la opción --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. Para establecer un nivel de compresión, zstd tiene varios modificadores de operación, por ejemplo, puede especificar un nivel de compresión como -6 (un número del 1 al 19, el valor predeterminado es 3) como se muestra.

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

5. Para establecer una velocidad de compresión, zstd tiene una relación de velocidad de compresión de 1 a 10, la velocidad de compresión predeterminada es 1. Puede cambiar la relación de compresión por velocidad de compresión con la opción --fast , cuanto mayor sea el valor número cuanto mayor sea la velocidad de compresión.

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

6. Para mostrar información sobre un archivo comprimido, utilice la marca -l , que se utiliza para mostrar información sobre un archivo comprimido, por ejemplo.

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

7. Para probar la integridad de un archivo comprimido, use el indicador -t como se muestra.

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

8. Para habilitar el modo detallado, use la opción -v .

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

9. Para usar otros formatos de compresión o descompresión de archivos como gzip, xz, lzma y lz4, usando --format u003d FORMAT como se muestra.

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

10. Para establecer una prioridad de proceso zstd en tiempo real, puede usar la opción –priority u003d rt como se muestra.

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

El indicador -r indica a zstd que opere de forma recursiva en los diccionarios. Puede encontrar muchas opciones útiles y avanzadas, cómo leer o crear diccionarios consultando la página de manual de zstd.

$ man zstd

Repositorio de Zstandard Github: https://github.com/facebook/zstd

Zstandard es un algoritmo y una herramienta de compresión de datos rápidos en tiempo real y sin pérdidas que ofrece altas relaciones de compresión. Pruébelo y comparta sus opiniones al respecto o haga preguntas a través del formulario de comentarios a continuación.