The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Система сжатия OpenZL, опережающая Zstd и XZ по скорости и уровню сжатия структурированных данных

09.10.2025 12:59

Компания Meta* представила инструментарий для сжатия и распаковки данных OpenZL, по сравнению с форматами Zstd и XZ демонстрирующий более высокий уровень сжатия и скорость работы. OpenZL разработан для эффективного сжатия структурированных наборов данных, например, применяемых при машинном обучении, а также хранилищ, содержащих поля с различными повторяющимися типами информации. Код OpenZL написан на C/C++ и открыт под лицензией BSD.

При сжатии БД с астрономическим каталогом звёзд SAO, инструментарий OpenZL позволил сократить размер данных в 2.06 раза, в то время как алгоритм zstd сжал информацию в 1.31 раза, а XZ в 1.64 раза. При этом по скорости сжатия OpenZL опередил zstd в два раза (203 MB/s против 115 MB/s), а XZ - в 65 раз (203 MB/s против 3.1 MB/s). Распаковка в OpenZL оказалась незначительно медленнее zstd (822 MB/s против 890 MB/s) и в 27 быстрее XZ.

OpenZL не является алгоритмом общего назначения и показывает хорошие результаты только для данных с заранее известной структурой. Работа OpenZL сводится к адаптивной генерации упаковщика на основе переданного описания данных. В результате формируется код для сжатия, оптимизированный для конкретного формата данных. Для распаковки применяется универсальный распаковщик, совместимый со всеми генерируемыми упаковщиками.

Упаковка и распаковка осуществляется при помощи одной утилиты "zli" или библиотеки libopenzl. Структура данных описывается в виде профилей. В состав уже входит набор предопределённых профилей, описывающих типовые форматы хранения. Например, профиль для формата CSV или данных, хранимых в форме массива 64-разрядных чисел. Сжатия сводится к выбору профиля командой "zli list-profiles" и запуску процесса упаковки командой "zli compress --profile имя_профиля". Для распаковки достаточно запустить "zli decompress".

Для специфичных форматов требуется сформировать собственный профиль, используя команду "zli train", которая выявляет закономерности в данных и формирует профиль с оптимальным уровнем сжатия. Используя опцию "--pareto-frontier" созданный профиль можно модернизировать в сторону ускорения упаковки или распаковки, ценой снижения уровня сжатия. Для описания сложных форматов со вложенными структурами и определения раскладки форматов данных в структурах может применяться язык SDDL (Simple Data Description Language).

Метод создания оптимальный упаковщиков основан на применении набора примитивных кодировщиков, каждый из которых наиболее эффективен для отдельных типов и последовательностей данных. Для сжатия формируется ориентированный ациклический граф обработки данных, узлами которого являются кодеки, а рёбрами - варианты данных в обрабатываемом формате. В зависимости от поступающего на вход типа данных выбирается цепочка кодеков, оптимально сжимающих поступивший элемент данных. При подобной организации заголовок файла сжимается одним кодеком, поле с целочисленными данными - вторым, поле с увеличивающимся счётчиком - третьим, а поле со строковыми данными - четвёртым.



  1. Главная ссылка к новости (https://engineering.fb.com/202...)
  2. OpenNews: Facebook опубликовал реализацию алгоритма сжатия Zstandard 1.0
  3. OpenNews: Компания Apple открыла реализацию алгоритма сжатия без потерь LZFSE
  4. OpenNews: Компания Google открыла код Draco, библиотеки для эффективного сжатия 3D-графики
  5. OpenNews: Библиотеки сжатия LZHAM и Crunch переведены в общественное достояние
  6. OpenNews: Автор LZ4 представил новый быстрый и эффективный алгоритм сжатия ZSTD
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64019-openzl
Ключевые слова: openzl, compress, zstd, xz
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:01, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Так все красочно и вкусно. А закладки с бэкдорами прилагаются?
     
     
  • 2.3, анонимно (?), 13:09, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    конечно, именно поэтому код открыт, ага
     
     
  • 3.9, анон (?), 13:31, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    то что код открыт, не означает, что в нем найдут закладку
     
     
  • 4.28, Эффективный менеджер (?), 14:34, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То что в нем найдут закладку равна коэффициенту популярности языка программирования - Виликая Python лучше всех!
     
  • 3.11, Аноним (1), 13:41, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    xz тоже был открыт, ага
     
     
  • 4.20, Аноним (20), 14:02, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но Jia Tan в проектировании формата участия не принимал и изначально код не писал. Решил лишь подрихтовать сбочный скрипт.
     
     
  • 5.54, Аноним (54), 18:24, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И в чём он не прав?
     
  • 2.4, Аноним (4), 13:11, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    сам посмотрим - https://github.com/facebook/openzl

     
     
  • 3.12, Аноним (1), 13:42, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    xz тоже был открыт
     
     
  • 4.22, fz (?), 14:07, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    как страшно жить то...
    шарахайтесь теперь от любого кода
     
     
  • 5.38, Аноним (38), 16:12, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не от любого, а от даров данайцев.
     
  • 5.45, Аноним (1), 16:58, 09/10/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 4.23, JakauBahuslau (?), 14:08, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В xz закладку нашли за две тестовые версии, так что если там действительно что-то есть, то тоже быстро найдут
     
     
  • 5.31, Zzz (??), 14:41, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    К сожалению, нашли случайно из-за CPU overload. Если б китайцы аккуратнее свой имплант написали, то далеко не факт, что обнаружили быстро.
     
     
  • 6.33, Аноним (33), 14:49, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это "поляки" были ж, при чём тут китайцы?
     
  • 5.32, Аноним (32), 14:43, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Потому что васян с кор2дуба заметил как проц грузили типичные задачи с зксзед и обратился к профи из Майкрософт,который и выяснил в чем дело? Великий опенсурс!
     
  • 2.49, Аноним (49), 17:10, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да, прилагаются. Они там свой ЯП развели!
     

  • 1.6, Мемоним (?), 13:16, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Simple Data Description Language

    Интересно, чем им Kaitai Struct не угодил. По описанию вроде почти одно и то же.

     
     
  • 2.8, Жироватт (ok), 13:25, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Там есть крайне фатальный недостаток – его писали не они!
     
     
  • 3.25, Аноним (-), 14:30, 09/10/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.14, anonymous (??), 13:53, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Katai Struct до сих пор не умеет в (де)сериализацию. Фатальный недостаток.
     
     
  • 3.17, Аноним (17), 13:58, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну вот, могли бы исправить :)
     
     
  • 4.27, Аноним (-), 14:33, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Могли.
    Но это нужно идти к каким-то васянам, предлагать свои патчи, оформлять как тем хочется...
    Или сделать свое, в котором ты сам себе хозяин.
     
     
  • 5.37, Аноним (17), 16:05, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    да, не посмотрел, что у kaitai struct неудобная лицензия
     
     
  • 6.44, Аноним (44), 16:53, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Неудобная для проприерастов.
     
  • 5.42, Аноним (44), 16:43, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как ты сейчас яжфинна васяном обозвал.
     
  • 3.34, Мемоним (?), 15:39, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я имел в виду только язык описания структур. А генератор могли бы свой уже писать, хоть с сериализацией, хоть без. Всяко проще чем с нуля изобретать.
     
  • 3.53, Аноним (53), 18:08, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это абсолютно не важно То что он не умеет на самом деле умеет, просто рудимент... большой текст свёрнут, показать
     

  • 1.7, Жироватт (ok), 13:23, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Т.е. её ещё и обучать надо? Перед упаковкой.
    Файлы как набор структурированных данных жуёт или только жмёт один файл как хранилище?

    > команду "zli train"

    Результат СЕЙЧАС насколько зависит от версии и от машины, на которой формируется профиль?

     
  • 1.10, Аноним (10), 13:40, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А чего не сравнили с непрерывном методом сжатия (solid archive) rar архивов? Он уже отлично сжимал повторяющиеся данные лет 25 назад.

    p.s. а лучше бы вообще уже выкупили rar у Рошала и сделали бы алгоритм открытым и бесплатным.

     
     
  • 2.16, ахахахаха (?), 13:58, 09/10/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 3.41, Ан248ним (?), 16:41, 09/10/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 2.19, Эффективный менеджер (?), 14:01, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А может наоборот? Из открытого достояния приватизировать в частное владение.
    Я бы запантетовал колесо, алфавит и т.д. А то ишь, пользуетесь бесплатно! А разработчики чем будут питаться? Им тоже надо на хлеб с маслом!!1!

    Нажо выдать ЖКХ право дарить людей! Не нравиться - прокладыватйте труб к своему дому сами! А платить по раздельному тарифу, в ванной - по аналогии с сотовыми оператороми, покупаете "пакет" литров.

    Тех в провайдерам интернета надо выдать право банить людей за блокировку рекламы, торренты и подозрительую активность... А ещё лучше сделать реестр недобосовечных лиц.

     
  • 2.24, Аноним (32), 14:17, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зачем покупать? Игорь Павлов смог с 7зип реализовать свой них синдром. Дерзайте и вы.
     
  • 2.30, Аноним (33), 14:41, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У него нет дедупликации по факту, только частичная. На и в целом zpaq поинтересней, он лучше комбинации lzss с ppmd. Lrzip, к примеру, действительно дедуплицирует, и легко может обойти и 7z, и, тем более, rar.
     
  • 2.36, Аноним (36), 15:52, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А чего не сравнили с непрерывном методом сжатия (solid archive) rar архивов? Он уже отлично сжимал повторяющиеся данные лет 25 назад.

    Много кто отлично сжимает, мало кто умеет делать это БЫСТРО.

    > p.s. а лучше бы вообще уже выкупили rar у Рошала и сделали бы алгоритм открытым и бесплатным.

    Это вот сейчас к кому обращено было?

     
  • 2.57, Андрей (??), 18:47, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а чем вам tar+<что-то еще>, появившийся за 10 до rar, не угодил ?
     

  • 1.13, Аноним (13), 13:47, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну вообще-то да, если знать структуру данных можно пожать гораздо лучше чем общи... большой текст свёрнут, показать
     
  • 1.15, Аноним (15), 13:54, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Отлично. Ждём в BTRFS.
     

  • 1.26, Аноним (26), 14:31, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Бинарник в разы больше, чем у zstd или 7-zip

    $ ls -l /usr/bin/zli
    -rwxr-xr-x 1 root root 5494744 окт  9 18:20 /usr/bin/zli

     
     
  • 2.29, Аноним (26), 14:34, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    zli --version zstrong-cli version 0 1 zli list-profiles Available profiles ... большой текст свёрнут, показать
     

  • 1.35, Аноним (35), 15:40, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жаль что не на Р_асте, значит будут CVE и прочие сишные прелести.
     
     
  • 2.39, Соль земли2 (?), 16:18, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    безопастность и быстродействие не очень дружат
     
     
  • 3.47, Аноним (47), 17:06, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Напротив, очень мало мест где они не дружат. Проверки границ массивов, например. А они замечательно бранчпредиктятся и поэтому по сути бесплатны.
     
  • 2.43, Ан248ним (?), 16:47, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Боишься, что поломают, и украдут форточки, где ты на пляже? Бойся, пока все на раст не перепишешь.
     
  • 2.50, YetAnotherOnanym (ok), 17:46, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так на р_асте писать - это не на форумах каменты про дыряшечку строчить.
     

  • 1.40, Аноним (49), 16:38, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Для описания сложных форматов со вложенными структурами и определения раскладки форматов данных в структурах может применяться язык SDDL (Simple Data Description Language).

    Могли бы не выпендриваться и Kaitai Struct взять, или DFDL.

     
  • 1.46, Аноним (49), 17:03, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    До PNG никогда не доберётся - там стандарт раз в 20 лет выходит. Пока новый стандарт выйдет - PNG будет вытеснен уже.
     
  • 1.48, Аноним (-), 17:08, 09/10/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.51, Аноним (49), 17:49, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сборочная система крайне уродская - для того, чтобы собрать колесо для Python, н... большой текст свёрнут, показать
     
     
  • 2.52, Аноним (53), 17:56, 09/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    4. libzstd они таки линкуют статически. Вообще не понятно какого хрена она в колесе.
    5. ломать не строить - из record-файла подчистить лишние файлы и пересобрать колесо 7zipом тривиально. Но почему я вообще должен это делать? Нормальные пакеты обычно делают так: у них есть pyproject.toml чтобы собрать через build, а если мы собираем через cmake, то cmake генерит свою sdist-директорию, где можно python3 -m build -nwx -- и соберётся колесо с уже предсобранной библиотекой.
     

  • 1.55, Аноним (55), 18:25, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Our main theoretical contribution is the graph model of compression, defined formally in section 3. In summary, we define a compression graph as a computational graph [ 20] where the nodes are codecs and edges represent data generated as output of one codec and used as input for another.

    Могли бы и расширение для onnx сделать, а не NIH городить. libonnx - это только сериализация графа, небольшая либа, это вообще чисто protobuf.

     
  • 1.56, Аноним (54), 18:25, 09/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это как в том анекдоте. Сжимает хорошо и быстро, а разжимать мы пока не научилсь.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру