Zstandard - Википедия - Zstandard
Эта статья слишком полагается на Рекомендации к основные источники.Сентябрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Оригинальный автор (ы) | Ян Колле |
---|---|
Разработчики) | Янн Колле, Пшемыслав Скибинский (Иникеп ) |
изначальный выпуск | 23 января 2015 г. |
Стабильный выпуск | 1.4.5 / 22 мая 2020[1] |
Репозиторий | |
Написано в | C |
Операционная система | Кроссплатформенность |
Платформа | Портативный |
Тип | Сжатие данных |
Лицензия | Двойной: Лицензия BSD + GPLv2 |
Интернет сайт | facebook |
Zстандарт (или же zstd) это без потерь Сжатие данных алгоритм, разработанный Янном Колле в Facebook.Zstd эталонная реализация в C. Версия 1 этой реализации была выпущена как бесплатно программное обеспечение 31 августа 2016 г.[2][3]
Функции
Zstandard был разработан для обеспечения степени сжатия, сравнимой с ВЫПУСКАТЬ алгоритм (разработан в 1991 г. и использовался в оригинальной ZIP и gzip программ), но быстрее, особенно для декомпрессии. Он настраивается с уровнями сжатия от отрицательных 5 (самый быстрый)[4] до 22 (самая низкая скорость сжатия, но наилучшая степень сжатия).
Пакет zstd включает параллельные (многопоточные) реализации как сжатия, так и распаковки. Начиная с версии 1.3.2 (октябрь 2017 г.), zstd дополнительно реализует поиск на очень большом расстоянии и дедупликацию (--длинный
, Окно 128 МиБ) аналогично rzip или же lrzip.[5]
Скорость сжатия может варьироваться в 20 или более раз между самым быстрым и самым медленным уровнями, в то время как декомпрессия является равномерно быстрой, варьируя менее 20% между самым быстрым и самым медленным уровнями.[6] В командной строке Zstandard есть «адаптивный» (--адапт
), который варьирует уровень сжатия в зависимости от условий ввода-вывода, в основном от того, насколько быстро он может записывать вывод.
Zstd при максимальном уровне сжатия дает степень сжатия, близкую к Lzma,лжам, и ppmx, и работает лучше, чем lza, или же bzip2.[7][8] Zstandard достигает текущего Граница Парето, поскольку он распаковывается быстрее, чем любой другой доступный в настоящее время алгоритм с аналогичной или лучшей степенью сжатия.[9][10]
Словари могут иметь большое влияние на степень сжатия небольших файлов, поэтому Zstandard может использовать словарь сжатия, предоставленный пользователем. Он также предлагает режим обучения, в котором можно создавать словарь из набора образцов.[11][12] В частности, один словарь может быть загружен для обработки больших наборов файлов с избыточностью между файлами, но не обязательно внутри каждого файла, например, лог-файлы.
Дизайн
Zstandard объединяет этап сопоставления словарей (LZ77 ) с большим окном поиска и быстрым энтропийное кодирование этап, используя оба Конечная энтропия состояния (быстрая табличная версия ANS, TANS, используется для записей в разделе Последовательности) и Кодирование Хаффмана (используется для записей в разделе «Литералы»).[13]
Из-за способа, которым FSE передает состояние между символами, распаковка включает обработку символов в разделе Sequences каждого блока в обратном порядке (от последнего к первому).
использование
Расширение имени файла | .zst[14] |
---|---|
Тип интернет-СМИ | приложение / zstd[14] |
Магическое число | 28 b5 2f fd[14] |
Тип формата | Сжатие данных |
Стандарт | RFC 8478 |
Интернет сайт | https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md |
Магическое число | 37 a4 30 ec[14] |
---|---|
Стандарт | RFC 8478 |
Интернет сайт | https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format |
В Ядро Linux с ноября 2017 года включил Zstandard (версия 4.14) в качестве метода сжатия для btrfs и сквош файловые системы.[15][16][17]
В 2017 году Аллан Джуд интегрировал Zstandard в ядро FreeBSD.[18] и впоследствии он был интегрирован в качестве компрессора для дампа ядра (как пользовательских программ, так и паники ядра). Он также использовался для подтверждения концепции. OpenZFS метод сжатия[6] который был интегрирован в 2020 году[19].
В AWS Redshift и RocksDB базы данных включают поддержку сжатия полей с помощью Zstandard.[20]
В марте 2018 г. Канонический проверено[21] использование zstd как пакет deb метод сжатия по умолчанию для Ubuntu Дистрибутив Linux. По сравнению с xz сжатие пакетов deb, zstd на уровне 19 распаковывает значительно быстрее, но за счет увеличения файлов пакетов на 6%. Разработчик Debian Ян Джексон предпочитали ждать несколько лет до официального усыновления.[22][23][24]
В 2018 году алгоритм был опубликован как RFC 8478, который также определяет связанный тип СМИ "приложение / zstd", расширение имени файла "zst" и Кодирование содержимого HTTP "zstd".[14]
Arch Linux добавлена поддержка zstd как метода сжатия пакетов в октябре 2019 года с выпуском Пакман 5.2 менеджер пакетов,[25] а в январе 2020 года переключился с xz на zstd для пакетов в официальном репозитории. Arch использует zstd -c -T0 --ultra -20 -
, размер всех сжатых пакетов вместе взятых увеличился на 0,8% (по сравнению с xz), скорость распаковки на 1300% выше, память распаковки увеличена на 50 МБ при использовании нескольких потоков, память сжатия увеличивается, но масштабируется с количеством используемых потоков.[26][27][28][29]
Fedora добавлена поддержка ZStandard в Об / мин в мае 2018 г. (выпуск Fedora 28) и использовал его для упаковки выпуска в октябре 2019 г. (Fedora 31)[30]
Полная реализация алгоритма с возможностью выбора степени сжатия используется в файлах .NSZ / .XCZ.[31] форматы файлов, разработанные домашнее пиво сообщество для Nintendo Switch гибридная игровая консоль.[32]
Лицензия
Эталонная реализация лицензирована под Лицензия BSD, опубликовано на GitHub.[33] Начиная с версии 1.0, он имел дополнительные патентные права.[34]
Начиная с версии 1.3.1,[35] эта выдача патента была отменена, и лицензия была изменена на двойную лицензию BSD + GPLv2.[36]
Смотрите также
- Злиб
- LZFSE - аналогичный алгоритм Apple использует с тех пор, как iOS 9 и OS X 10.11 стали открытыми с 1 июня 2016 года.
- LZ4 (алгоритм сжатия) - быстрый член семейства LZ77
Рекомендации
- ^ «Релизы - facebook / zstd». Получено 22 мая 2020 - через GitHub.
- ^ Серхио де Симоне (2 сентября 2016 г.). «Новый алгоритм сжатия с открытыми исходными кодами Facebook превосходит Zlib». InfoQ. Получено 20 апреля 2019.
- ^ «Жизнь имитирует сатиру: Facebook рекламирует убийцу злибов, как Крысолов из Кремниевой долины». Реестр. 31 августа 2016 г.. Получено 6 сентября 2016.
- ^ https://github.com/facebook/zstd/releases/tag/v1.3.4 Более быстрые уровни сжатия
- ^ «Интерфейс командной строки для библиотеки Zstandard». GitHub.
- ^ а б «ZStandard в ZFS» (PDF). open-zfs.org. 2017. Получено 20 апреля 2019.
- ^ Мэтт Махони. «Тест Silesia Open Source Compression Benchmark». Получено 10 мая 2019.
- ^ Мэтт Махони (29 августа 2016 г.). "Тест сжатия большого текста, .2157 zstd". Получено 1 сентября 2016.
- ^ TurboBench: тест сжатия статического / динамического веб-контента, PowTurbo
- ^ Мэтт Махони, Тест Silesia Open Source Compression Benchmark
- ^ «Разработчики Facebook сообщают о значительном ускорении и улучшении степени сжатия при использовании словарей» (PDF).
- ^ «Меньшее и быстрое сжатие данных с помощью Zstandard». Facebook. 31 августа 2016 г.
- ^ "facebook / zstd". GitHub.
- ^ а б c d е Колле, Янн (октябрь 2018 г.). Кучерави, Мюррей С. (ред.). Zstandard Compression и приложение / zstd Media Type. Запрос инженерной группы Интернета о комментариях. Дои:10.17487 / RFC8478. RFC 8478. Получено 7 октября 2020.
- ^ "Остальная часть окна слияния 4.14 [LWN.net]". lwn.net.
- ^ "Linux_4.14 - новички в ядре Linux". Kernelnewbies.org. Получено 16 августа 2018.
- ^ «Сжатие Zstd для Btrfs и Squashfs, установленное для Linux 4.14, уже используется в Facebook - Phoronix». www.phoronix.com.
- ^ https://github.com/freebsd/freebsd/commit/28ef16535cde21eeeaf75f6006b3a77952b3b51
- ^ https://github.com/openzfs/zfs/commit/10b3c7f5e424f54b3ba82dbf1600d866e64ec0a0
- ^ «Zstandard Encoding - Amazon Redshift». 20 апреля 2019.
- ^ Ларабель, Майкл (12 марта 2018 г.). «Каноническая работа над Zstd-сжатыми пакетами Debian для Ubuntu». phoronix.com. Phoronix Media. Получено 29 октября 2019.
Разработчики из Canonical рассматривают исключение для замораживания функций, чтобы получить эту недавно разработанную поддержку Zstd Apt / Dpkg в Ubuntu 18.04 LTS. При этом они упоминают, что будут рассматривать возможность включения сжатия Zstd для пакетов по умолчанию в Ubuntu 18.10.
- ^ «Новые установки Ubuntu можно ускорить на 10% с помощью алгоритма сжатия Zstd». Софтпедия. 12 марта 2018 г.. Получено 13 августа 2018.
- ^ «Каноническая работа над Zstd-сжатыми пакетами Debian для Ubuntu». фороникс. 12 марта 2018 г.. Получено 13 августа 2018.
- ^ RFC: поддержка zstd в пакетах .deb?, Ян Джексон, 2018-04-27.
- ^ https://www.phoronix.com/scan.php?page=news_item&px=Arch-Linux-Pacman-Zstd-Near
- ^ Брода, Робин (4 января 2020 г.). «Теперь для сжатия пакетов используется Zstandard вместо xz». Arch Linux. Получено 5 января 2020.
- ^ [Arch-Dev-Public RFC: (devtools) Изменение метода сжатия по умолчанию на zstd], Робин Брода, 2019-03-25.
- ^ Уточнение гарантий совместимости выходной мощности компрессора zstd для разных версий, Ян Колле, заверяя, что для того же двоичного результата важны версия zstd и уровень сжатия, 18.03.2019.
- ^ makepkg.conf: изменить метод сжатия по умолчанию на zstd, Робин Брода, Левенте Поляк, сжатие по умолчанию с помощью zstd -c -T0 --ultra -20 -, 2019-12-27.
- ^ https://fedoraproject.org/wiki/Changes/Switch_RPMs_to_zstd_compression
- ^ «RELEASE - nsZip - компрессор / декомпрессор NSP для уменьшения объема памяти». GBAtemp.net - Независимое сообщество видеоигр. Получено 3 ноября 2019.
- ^ Босхард, Нико (31 октября 2019 г.), nsZip - это инструмент для сжатия / распаковки игр Nintendo Switch с использованием указанного здесь формата файла NSZ: nicoboss / nsZip, получено 3 ноября 2019
- ^ «Facebook открывает исходный код алгоритма сжатия данных Zstandard, призванного заменить технологию, лежащую в основе Zip». ZDnet. 31 августа 2016 г.. Получено 1 сентября 2016.
- ^ zstd / ПАТЕНТЫ "Дополнительное предоставление патентных прав Версия 2", Facebook
- ^ "Релиз Zstd v1.3.1", GitHub "facebook / zstd"
- ^ «Новая лицензия», GitHub "facebook / zstd"
внешняя ссылка
- Официальный веб-сайт
- zstd на GitHub
- "Меньшее и быстрое сжатие данных с Zstandard ", Янн Колле и Чип Тернер, 31 августа 2016 г., объявление в Facebook
- The Guardian использует ZStandard вместо zlib