O sistema de compressão OpenZL supera Zstd e XZ em velocidade e nível de compressão de dados estruturados.

A empresa Meta* apresentou a ferramenta de compressão e descompressão de dados OpenZL, que, em comparação com os formatos Zstd e XZ, demonstra um nível de compressão e velocidade de operação superiores. O OpenZL foi projetado para compressão eficiente de conjuntos de dados estruturados, como aqueles utilizados em aprendizado de máquina, bem como de armazenamentos que contêm campos com diferentes tipos de informações repetitivas. O código do OpenZL é escrito em C/C++ e é aberto sob a licença BSD.

Ao comprimir um banco de dados com o catálogo astronômico de estrelas SAO, a ferramenta OpenZL conseguiu reduzir o tamanho dos dados em 2,06 vezes, enquanto o algoritmo zstd comprimiu as informações em 1,31 vez e o XZ em 1,64 vez. Além disso, em termos de velocidade de compressão, o OpenZL superou o zstd em duas vezes (203 MB/s contra 115 MB/s) e o XZ em 65 vezes (203 MB/s contra 3,1 MB/s). A descompressão no OpenZL foi ligeiramente mais lenta que a do zstd (822 MB/s contra 890 MB/s) e 27 vezes mais rápida que a do XZ.

O sistema de compressão OpenZL supera Zstd e XZ em velocidade e nível de compressão de dados estruturados.

O OpenZL não é um algoritmo de propósito geral e apresenta bons resultados apenas para dados com uma estrutura conhecida previamente. O funcionamento do OpenZL consiste na geração adaptativa de um empacotador com base na descrição dos dados fornecida. Como resultado, forma-se um código de compressão otimizado para o formato de dados específico. Para descompressão, utiliza-se um descompressor universal, compatível com todos os empacotadores gerados.

A empacotagem e descompressão são realizadas por meio de uma única ferramenta chamada "zli" ou da biblioteca libopenzl. A estrutura dos dados é descrita na forma de perfis. Já está incluído um conjunto de perfis pré-definidos, que descrevem formatos de armazenamento típicos. Por exemplo, um perfil para o formato CSV ou dados armazenados na forma de um array de números inteiros de 64 bits. A compressão se resume à escolha do perfil usando o comando "zli list-profiles" e ao início do processo de empacotagem com o comando "zli compress —profile nome_do_perfil". Para descompressão, basta executar "zli decompress".

Para formatos específicos, é necessário criar um perfil próprio, usando o comando «zli train», que identifica padrões nos dados e forma um perfil com um nível ótimo de compressão. Usando a opção «—pareto-frontier», o perfil criado pode ser modernizado em direção à aceleração da compactação ou descompactação, em troca de uma redução no nível de compressão. Para descrever formatos complexos com estruturas internas e determinar o layout dos formatos de dados nas estruturas, pode ser utilizada a linguagem SDDL (Simple Data Description Language).

O método de criação de compressão otimizada baseia-se na aplicação de um conjunto de codificadores primitivos, cada um dos quais é mais eficiente para tipos e sequências de dados específicos. Para compressão, é formado um gráfico acíclico dirigido de processamento de dados, cujos nós são codecs, e as arestas são as variantes de dados no formato processado. Dependendo do tipo de dados recebidos, é selecionada uma sequência de codecs que comprime de maneira otimizada o elemento de dados recebido. Com esta organização, o cabeçalho do arquivo é comprimido por um codec, o campo com dados inteiros por outro, o campo com um contador crescente por um terceiro, e o campo com dados de string por um quarto.

O sistema de compressão OpenZL supera Zstd e XZ em velocidade e nível de compressão de dados estruturados.


Fonte: opennet.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster