El sistema de compresión OpenZL, que supera a Zstd y XZ en velocidad y nivel de compresión de datos estructurados.

La empresa Meta* ha presentado una herramienta para la compresión y descompresión de datos llamada OpenZL, que, en comparación con los formatos Zstd y XZ, muestra un nivel de compresión más alto y una mayor velocidad de operación. OpenZL está diseñado para la compresión eficiente de conjuntos de datos estructurados, como los utilizados en el aprendizaje automático, así como de almacenes que contienen campos con diferentes tipos de información repetitiva. El código de OpenZL está escrito en C/C++ y es de código abierto bajo la licencia BSD.

Al comprimir una base de datos con un catálogo astronómico de estrellas SAO, la herramienta OpenZL logró reducir el tamaño de los datos en un 2.06 veces, mientras que el algoritmo zstd comprimió la información en 1.31 veces, y XZ en 1.64 veces. Además, en términos de velocidad de compresión, OpenZL superó a zstd por el doble (203 MB/s frente a 115 MB/s), y a XZ en 65 veces (203 MB/s frente a 3.1 MB/s). La descompresión en OpenZL resultó ser ligeramente más lenta que zstd (822 MB/s frente a 890 MB/s) y 27 veces más rápida que XZ.

El sistema de compresión OpenZL, que supera a Zstd y XZ en velocidad y nivel de compresión de datos estructurados.

OpenZL no es un algoritmo de propósito general y muestra buenos resultados solo para datos con estructura previamente conocida. El funcionamiento de OpenZL se basa en la generación adaptativa de un empaquetador en función de la descripción de los datos proporcionados. Como resultado, se genera un código para la compresión, optimizado para un formato de datos específico. Para la descompresión se utiliza un descompresor universal, compatible con todos los empaquetadores generados.

La compresión y descompresión se lleva a cabo mediante una única utilidad «zli» o la biblioteca libopenzl. La estructura de los datos se describe en forma de perfiles. Ya se incluye un conjunto de perfiles predefinidos que describen formatos de almacenamiento típicos. Por ejemplo, un perfil para el formato CSV o datos almacenados en forma de un arreglo de números de 64 bits. La compresión consiste en seleccionar un perfil con el comando «zli list-profiles» y ejecutar el proceso de compresión con el comando «zli compress —profile nombre_del_perfil». Para la descompresión, basta con ejecutar «zli decompress».

Para formatos específicos, es necesario crear un perfil propio utilizando el comando «zli train», que identifica patrones en los datos y genera un perfil con un nivel óptimo de compresión. Usando la opción «—pareto-frontier», el perfil creado se puede modernizar para acelerar el empaquetado o desempaquetado, a costa de reducir el nivel de compresión. Para describir formatos complejos con estructuras anidadas y definir la disposición de formatos de datos en las estructuras, se puede utilizar el lenguaje SDDL (Simple Data Description Language).

El método para crear empaquetadores óptimos se basa en el uso de un conjunto de codificadores primitivos, cada uno de los cuales es más eficaz para tipos y secuencias de datos específicos. Para la compresión, se forma un grafo acíclico dirigido de procesamiento de datos, cuyos nodos son los códecs y las aristas son las variantes de datos en el formato procesado. Dependiendo del tipo de datos que se recibe, se elige una cadena de códecs que comprime de manera óptima el elemento de datos ingresado. Con esta organización, el encabezado del archivo se comprime con un códec, el campo con datos enteros con otro, el campo con un contador creciente con un tercero, y el campo con datos de texto con un cuarto.

El sistema de compresión OpenZL, que supera a Zstd y XZ en velocidad y nivel de compresión de datos estructurados.


Fuente: opennet.ru
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster