ЗСТД
![]() | |
Оригинальный автор(ы) | Янн Колле |
---|---|
Разработчик(и) | Ян Колле, Ник Террелл, Пшемыслав Скибински [1] |
Первоначальный выпуск | 23 января 2015 г. |
Стабильная версия | 1.5.6 [2] ![]() |
Репозиторий | |
Написано в | С |
Операционная система | Кросс-платформенный |
Платформа | Портативный |
Тип | Сжатие данных |
Лицензия | Пункт BSD-3 или GPL-2.0 или более поздняя версия (двойная лицензия) |
Веб-сайт | Фейсбук ![]() |
Zstandard — это без потерь алгоритм сжатия данных , разработанный Яном Коллетом из Facebook . Zstd — это соответствующая эталонная реализация на C , выпущенная как программное обеспечение с открытым исходным кодом 31 августа 2016 года. [3] [4]
Функции
[ редактировать ]Zstandard был разработан для обеспечения степени сжатия, сравнимой со степенью сжатия алгоритма DEFLATE (разработанного в 1991 году и использовавшегося в исходных программах ZIP и gzip ), но более быстрого, особенно для распаковки. Он настраивается с уровнями сжатия от минус 7 (самый быстрый). [5] до 22 (самая медленная скорость сжатия, но лучшая степень сжатия).
Начиная с версии 1.3.2 (октябрь 2017 г.), zstd дополнительно реализует поиск на очень большом расстоянии и дедупликацию ( --long
, окно размером 128 МБ), аналогично rzip или lrzip . [6]
Скорость сжатия может варьироваться в 20 и более раз между самым быстрым и самым медленным уровнями, в то время как скорость распаковки происходит одинаково быстро, варьируясь менее чем на 20 % между самым быстрым и самым медленным уровнями. [7] В командной строке Zstandard есть «адаптивный» ( --adapt
) режим, который меняет уровень сжатия в зависимости от условий ввода-вывода, главным образом от того, насколько быстро он может записывать выходные данные.
Zstd при максимальном уровне сжатия дает степень сжатия, близкую к lzma , лжам , и ppmx , и работает лучше [ нечеткий ] чем lza или bzip2 . [ неправильный синтез? ] [8] [9] Zstandard достигает текущей границы Парето , поскольку он распаковывает быстрее, чем любой другой доступный в настоящее время алгоритм с аналогичной или лучшей степенью сжатия. [10] [11]
Словари могут оказывать большое влияние на степень сжатия небольших файлов, поэтому Zstandard может использовать словарь сжатия, предоставляемый пользователем. Он также предлагает режим обучения, позволяющий генерировать словарь из набора образцов. [12] [13] В частности, один словарь может быть загружен для обработки больших наборов файлов с избыточностью между файлами, но не обязательно внутри каждого файла, например, файлов журналов .
Дизайн
[ редактировать ]Zstandard сочетает в себе этап сопоставления словаря ( LZ77 ) с большим окном поиска и этап быстрого статистического кодирования . Он использует как кодировку Хаффмана (используется для записей в разделе «Литералы»), так и кодировку Хаффмана. [14] и энтропия конечных состояний (FSE) — быстрая табличная версия ANS, tANS , используемая для записей в разделе «Последовательности». Из-за того, что FSE переносит состояние между символами, декомпрессия включает обработку символов в разделе «Последовательности» каждого блока в обратном порядке (от последнего к первому).
Использование
[ редактировать ]Расширение имени файла | .zst [15] |
---|---|
Тип интернет-СМИ | приложение/zstd [15] |
Магическое число | 28 b5 2f fd [15] |
Тип формата | Сжатие данных |
Стандартный | RFC 8878 |
Веб-сайт | github |
Тип интернет-СМИ | приложение/zstd |
---|---|
Магическое число | 37 a4 30 ec [15] |
Стандартный | RFC 8878 |
Веб-сайт | github |
Ядро Linux включает Zstandard с ноября 2017 года (версия 4.14) в качестве метода сжатия для файловых систем btrfs и sqashfs . [16] [17] [18]
В 2017 году Аллан Джуд интегрировал Zstandard в ядро FreeBSD . [19] и впоследствии он был интегрирован в качестве опции компрессора для дампов ядра (как пользовательских программ, так и паники ядра). Он также использовался для создания экспериментального OpenZFS . метода сжатия [7] который был интегрирован в 2020 году. [20]
Базы данных AWS Redshift и RocksDB поддерживают сжатие полей с помощью Zstandard. [21]
В марте 2018 года компания Canonical протестировала [22] использование zstd в качестве метода сжатия пакетов deb по умолчанию для дистрибутива Ubuntu Linux. По сравнению со сжатием deb-пакетов xz , zstd на уровне 19 распаковывает значительно быстрее, но за счет увеличения размера файлов пакета на 6%. Поддержка была добавлена в Debian (а затем и в Ubuntu) в апреле 2018 года (в версии 1.6~rc1). [23] [22] [24]
В 2018 году алгоритм был опубликован как RFC 8478 , который также определяет связанный тип мультимедиа «application/zstd», расширение имени файла «zst» и кодировку HTTP-контента «zstd». [25]
Arch Linux добавил поддержку zstd в качестве метода сжатия пакетов в октябре 2019 года с выпуском pacman 5.2. менеджера пакетов [26] а в январе 2020 года перешёл с xz на zstd для пакетов в официальном репозитории. Арка использует zstd -c -T0 --ultra -20 -
, размер всех сжатых пакетов вместе взятый увеличился на 0,8% (по сравнению с xz), скорость распаковки в 14 раз выше, память распаковки увеличилась на 50 МБ при использовании нескольких потоков, память сжатия увеличивается, но масштабируется в зависимости от количества используемых потоков. [27] [28] [29] Позже Arch Linux также переключился на zstd в качестве алгоритма сжатия по умолчанию для исходного генератора виртуального диска mkinitcpio. [30]
Fedora добавила поддержку ZStandard в RPM в мае 2018 года (выпуск Fedora 28) и использовала ее для упаковки выпуска в октябре 2019 года (Fedora 31). [31] В Fedora 33 файловая система по умолчанию сжимается с помощью zstd. [32] [33]
Полная реализация алгоритма с возможностью выбора уровня сжатия используется в файлах .NSZ/.XCZ. [34] форматы файлов, разработанные сообществом доморощенных пользователей для гибридной игровой консоли Nintendo Switch . [35] Аналогично, это также один из многих поддерживаемых алгоритмов сжатия в .RVZ Wii и GameCube формате файла образа диска .
15 июня 2020 года Zstandard был реализован в версии 6.3.8 формата zip-файла с номером кодека 93, что делает устаревшим предыдущий номер кодека 20, поскольку он был реализован в версии 6.3.7, выпущенной 1 июня. [36] [37]
В марте 2024 года Google Chrome версии 123 (и браузеры на основе Chromium , такие как Brave или Microsoft Edge ) добавили поддержку zstd в HTTP-заголовок. Content-Encoding
. [38] В мае 2024 года в версии Firefox 126.0 добавлена поддержка zstd в HTTP-заголовке. Content-Encoding
. [39]
Лицензия
[ редактировать ]Эталонная реализация лицензируется по лицензии BSD , опубликованной на GitHub . [40] Начиная с версии 1.0, у него было дополнительное предоставление патентных прав. [41]
Начиная с версии 1.3.1, [42] выдача этого патента была отменена, а лицензия была заменена на двойную лицензию BSD + GPLv2. [43]
См. также
[ редактировать ]- LZ4 (алгоритм сжатия) – быстрый представитель семейства LZ77.
- LZFSE — аналогичный алгоритм Apple, используемый начиная с iOS 9 и OS X 10.11 и открытый исходный код 1 июня 2016 года.
- Злиб
Ссылки
[ редактировать ]- ^ «Авторы Facebook/zstd» . github.com . Архивировано из оригинала 27 января 2021 года . Проверено 26 января 2021 г.
- ^ «Выпуск Zstandard v1.5.6 — Chrome Edition · facebook/zstd» . Проверено 27 марта 2024 г.
- ^ Серджио Де Симоне (2 сентября 2016 г.). «Новый алгоритм сжатия Facebook с открытым исходным кодом превосходит Zlib» . ИнфоQ . Проверено 20 апреля 2019 г.
- ^ «Жизнь подражает сатире: Facebook рекламирует убийцу zlib точно так же, как Крысолов Кремниевой долины» . Регистр . 31 августа 2016 года . Проверено 6 сентября 2016 г.
- ^ «Выпуск Zstandard v1.3.4 — все быстрее · facebook/zstd» . Гитхаб . Проверено 27 марта 2024 г.
- ^ «Интерфейс командной строки для библиотеки Zstandard» . Гитхаб . 28 октября 2021 г.
- ^ Jump up to: а б «ZStandard в ZFS» (PDF) . open-zfs.org . 2017 . Проверено 20 апреля 2019 г.
- ^ Мэтт Махони. «Силезский тест сжатия с открытым исходным кодом» . Проверено 10 мая 2019 г.
- ^ Мэтт Махони (29 августа 2016 г.). «Бенчмарк сжатия большого текста, .2157 zstd» . Проверено 1 сентября 2016 г.
- ^ TurboBench: тест статического/динамического сжатия веб-контента , PowTurbo
- ^ Мэтт Махони, Силезский тест сжатия с открытым исходным кодом
- ^ «Разработчики Facebook сообщают о значительном ускорении и улучшении степени сжатия при использовании словарей» (PDF) . Фермилаб . 11 октября 2017 года . Проверено 27 марта 2024 г.
- ^ «Меньшее и более быстрое сжатие данных с помощью Zstandard» . Фейсбук. 31 августа 2016 г.
- ^ «Фейсбук/ЗСТД» . Гитхаб . 28 октября 2021 г.
- ^ Jump up to: а б с д Колле, Янн (февраль 2021 г.). Кучерави, Мюррей С. (ред.). Zstandard Compression и тип носителя application/zstd . Запрос на комментарии рабочей группы по интернет-инжинирингу. дои : 10.17487/RFC8878 . RFC 8878 . Проверено 26 февраля 2023 г.
- ^ Корбет, Джонатан (17 сентября 2017 г.). «Остальная часть окна слияния 4.14 [LWN.net]» . lwn.net . Проверено 27 марта 2024 г.
- ^ «Linux_4.14 — новички в ядре Linux» . Kernelnewbies.org. 30 декабря 2017 года . Проверено 16 августа 2018 г.
- ^ Ларабель, Майкл (8 сентября 2017 г.). «Сжатие Zstd для Btrfs и Squashfs, установленное для Linux 4.14, уже используется в Facebook — Phoronix» . www.phoronix.com .
- ^ «Интегрируйте ZSTD в ядро · freebsd/Freebsd-SRC@28ef165» . Гитхаб .
- ^ «Добавьте поддержку ZSTD в ZFS · openzfs/ZFS@10b3c7f» . Гитхаб .
- ^ «Кодирование Zstandard — Amazon Redshift» . 20 апреля 2019 г.
- ^ Jump up to: а б Ларабель, Майкл (12 марта 2018 г.). «Каноническая работа над пакетами Debian, сжатыми Zstd, для Ubuntu» . phoronix.com . Фороникс Медиа . Проверено 29 октября 2019 г.
Разработчики из Canonical рассматривают возможность исключения из заморозки функций, чтобы получить недавно разработанную поддержку Zstd Apt/Dpkg в Ubuntu 18.04 LTS. При этом они упоминают, что будут рассматривать возможность включения сжатия Zstd для пакетов по умолчанию в Ubuntu 18.10.
- ^ «Установку новых Ubuntu можно ускорить на 10% с помощью алгоритма сжатия Zstd» . Софтпедия . 12 марта 2018 года . Проверено 13 августа 2018 г.
- ^ «Журнал изменений Debian для apt» . Дебиан . 19 апреля 2021 г. Проверено 7 ноября 2022 г.
- ^ Колле, Янн (октябрь 2018 г.). Кучерави, Мюррей С. (ред.). Zstandard Compression и тип носителя application/zstd . Запрос на комментарии рабочей группы по интернет-инжинирингу. дои : 10.17487/RFC8478 . RFC 8478 . Проверено 7 октября 2020 г.
- ^ Ларабель, Майкл (16 октября 2019 г.). «Arch Linux приближается к выпуску сжатых пакетов ZSTD для более быстрой установки Pacman» . Фороникс .
- ^ Брода, Мара (4 января 2020 г.). «Теперь для сжатия пакетов используется Zstandard вместо xz» . Арч Линукс . Проверено 5 января 2020 г.
- ^ Брода, Мара (25 марта 2019 г.). «RFC: (devtools) Изменение метода сжатия по умолчанию на zstd» . Arch-dev-public (список рассылки).
- ^ Брода, Мара; Поляк, Левенте (27 декабря 2019 г.). «makepkg.conf: измените метод сжатия по умолчанию на zstd» . Гитхаб .
- ^ Раззолини, Джанкарло (19 февраля 2021 г.). «Новости: переход на образы Zstandard по умолчанию на mkinitcpio» . Арч Линукс . Проверено 28 декабря 2021 г.
- ^ «Изменение/переключение RPMS на сжатие ZSTD» . Вики проекта Fedora .
- ^ «Функциональная составляющая Fedora Workstation 34: прозрачное сжатие Btrfs» . Журнал Федора . 14 апреля 2021 г. Проверено 12 мая 2022 г.
- ^ «Изменения/BtrfsTransparentCompression» . Вики проекта Fedora . Проверено 12 мая 2022 г.
- ^ «RELEASE — nsZip — компрессор/декомпрессор NSP для уменьшения объема памяти» . GBAtemp.net — Независимое сообщество видеоигр . 20 октября 2019 г. Проверено 3 ноября 2019 г.
- ^ Босхард, Нико (31 октября 2019 г.), nsZip — это инструмент для сжатия/распаковки игр Nintendo Switch с использованием указанного здесь формата файла NSZ: nicoboss/nsZip , получено 3 ноября 2019 г.
- ^ APPNOTE.TXT — Спецификация формата файла .ZIP Версия: 6.3.8 , 15 июня 2020 г. , получено 7 июля 2020 г.
- ^ APPNOTE.TXT — Спецификация формата файла .ZIP Версия: 6.3.7 , 1 июня 2020 г. , получено 6 июня 2020 г.
- ^ «Новое в Chrome 123 | Блог Chrome» . Chrome для разработчиков . 19 марта 2024 г. Проверено 16 апреля 2024 г.
- ^ «Firefox 126.0: все новые функции, обновления и исправления» . Проверено 15 мая 2024 г.
- ^ «Алгоритм сжатия данных Zstandard Facebook с открытым исходным кодом призван заменить технологию, лежащую в основе Zip» . ЗДнет. 31 августа 2016 года . Проверено 1 сентября 2016 г.
- ^ «zstd/PATENTS at v1.3.0 · facebook/zstd» . Гитхаб . Проверено 27 марта 2024 г.
- ^ «Выпуск Zstandard v1.3.1 · facebook/zstd» . Гитхаб . Проверено 27 марта 2024 г.
- ^ «Новая лицензия от Cyan4973 · Запрос на извлечение № 801 · facebook/zstd» . Гитхаб . Проверено 27 марта 2024 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- zstd на GitHub
- 7zip с Zstandard на GitHub
- « Меньшее и более быстрое сжатие данных с помощью Zstandard », Ян Коллет и Чип Тернер, 31 августа 2016 г., объявление на Facebook.
- The Guardian использует ZStandard вместо zlib.