zstd - Un algoritmo rápido de compresión de datos utilizado por Facebook


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

Cuando sea necesario, puede cambiar la velocidad de compresión por relaciones de compresión más altas (la compensación entre la velocidad de compresión y la relación de compresión se puede configurar en 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 .zst , .gz , .xz y .lz4 archivos.

Es importante destacar que Zstandard tiene una amplia colección de API, admite 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 Amazon Redshift almacenamiento de datos; bases de datos como Hadoop y Redis; La red Tor y muchas otras aplicaciones, incluidos los juegos.

Los siguientes resultados se obtienen realizando varias pruebas rápidas de algoritmos de compresión en un servidor que ejecuta Linux Debian usando 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 desde las fuentes, pero antes 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 que se hayan instalado todas las herramientas de desarrollo necesarias, ahora puede descargar el paquete fuente, moverse 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 que se haya instalado Zstandard , ahora podemos continuar para aprender algo sobre el uso básico de los ejemplos de comandos de Zstd en la siguiente sección.

Aprenda 10 ejemplos de uso del comando Zstd en Linux

La sintaxis de 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 la marca -z también significa comprimir, que La acción por defecto.

$ 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 la marca -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 manera predeterminada, el archivo de origen no se elimina luego 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 1-19, el 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 1-10 , la velocidad de compresión predeterminada es 1 Puede intercambiar la relación de compresión por la velocidad de compresión con la opción --fast , cuanto mayor sea el número, más rápida será la velocidad de compresión.

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

6. Para mostrar información sobre un archivo comprimido, use el indicador -l , que se usa 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 la marca -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 el --format = 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 la prioridad del proceso zstd en tiempo real, puede usar la opción –priority = rt como se muestra.

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

La marca -r le indica a zstd que opere recursivamente 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 Github de Zstandard : https://github.com/facebook/zstd

Zstandard es una herramienta de compresión y algoritmo de compresión de datos en tiempo real y sin pérdidas que ofrece altos índices de compresión. Pruébelo y comparta sus pensamientos al respecto o haga preguntas a través del formulario de comentarios a continuación.