stringtranslate.com

ЗСТД

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 , lzham и ppmx , и работает лучше [ неопределенно ] , чем lza или bzip2 . [ неправильный синтез? ] [8] [9] Zstandard достигает текущей границы Парето , поскольку он распаковывает быстрее, чем любой другой доступный в настоящее время алгоритм с аналогичной или лучшей степенью сжатия. [10] [11]

Словари могут оказывать большое влияние на степень сжатия небольших файлов, поэтому Zstandard может использовать словарь сжатия, предоставляемый пользователем. Он также предлагает режим обучения, позволяющий генерировать словарь из набора образцов. [12] [13] В частности, один словарь может быть загружен для обработки больших наборов файлов с избыточностью между файлами, но не обязательно внутри каждого файла, например, файлов журналов .

Дизайн

Zstandard сочетает в себе этап сопоставления словаря ( LZ77 ) с большим окном поиска и этап быстрого статистического кодирования . Он использует как кодирование Хаффмана (используется для записей в разделе «Литералы») [14], так и энтропию конечных состояний (FSE) — быструю табличную версию ANS, tANS , используемую для записей в разделе «Последовательности». Из-за того, что FSE переносит состояние между символами, декомпрессия включает обработку символов в разделе «Последовательности» каждого блока в обратном порядке (от последнего к первому).

Применение

Ядро 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 для пакетов в официальном репозитории. Arch использует 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]

Лицензия

Эталонная реализация лицензируется по лицензии BSD , опубликованной на GitHub . [38] Начиная с версии 1.0, у него было дополнительное предоставление патентных прав. [39]

Начиная с версии 1.3.1 [40] выдача патента была прекращена, а лицензия была изменена на двойную лицензию BSD + GPLv2. [41]

Смотрите также

Рекомендации

  1. ^ «Авторы Facebook/zstd» . github.com . Архивировано из оригинала 27 января 2021 года . Проверено 26 января 2021 г.
  2. ^ "Релизы - Facebook/zstd" . Проверено 4 апреля 2023 г. — через GitHub .
  3. Серджио Де Симоне (2 сентября 2016 г.). «Новый алгоритм сжатия Facebook с открытым исходным кодом, превосходящий Zlib» . ИнфоQ . Проверено 20 апреля 2019 г.
  4. ^ «Жизнь имитирует сатиру: Facebook рекламирует убийцу zlib, как и Крысолова Кремниевой долины» . Регистр. 31 августа 2016 года . Проверено 6 сентября 2016 г.
  5. ^ https://github.com/facebook/zstd/releases/tag/v1.3.4 Более быстрые уровни сжатия.
  6. ^ «Интерфейс командной строки для библиотеки Zstandard». Гитхаб . 28 октября 2021 г.
  7. ^ ab «ZStandard в ZFS» (PDF) . open-zfs.org . 2017 . Проверено 20 апреля 2019 г.
  8. ^ Мэтт Махони. «Силезский тест сжатия с открытым исходным кодом» . Проверено 10 мая 2019 г.
  9. Мэтт Махони (29 августа 2016 г.). «Бенчмарк сжатия большого текста, .2157 zstd» . Проверено 1 сентября 2016 г.
  10. ^ TurboBench: тест статического/динамического сжатия веб-контента, PowTurbo
  11. ^ Мэтт Махони, Силезский тест сжатия с открытым исходным кодом
  12. ^ «Разработчики Facebook сообщают о значительном ускорении и улучшении степени сжатия при использовании словарей» (PDF) .
  13. ^ «Меньшее и более быстрое сжатие данных с помощью Zstandard». Фейсбук. 31 августа 2016 г.
  14. ^ "Фейсбук/zstd". Гитхаб . 28 октября 2021 г.
  15. ^ abcd Колле, Янн (февраль 2021 г.). Кучерави, Мюррей С. (ред.). Zstandard Compression и тип носителя application/zstd. Запрос на комментарии рабочей группы по интернет-инжинирингу. дои : 10.17487/RFC8878 . RFC 8878 . Проверено 26 февраля 2023 г.
  16. ^ «Остальная часть окна слияния 4.14 [LWN.net]» . lwn.net .
  17. ^ «Linux_4.14 — Новички в ядре Linux» . Kernelnewbies.org . Проверено 16 августа 2018 г.
  18. ^ «Сжатие Zstd для Btrfs и Squashfs, установленное для Linux 4.14, уже используется в Facebook — Phoronix» . www.phoronix.com .
  19. ^ «Интегрируйте ZSTD в ядро ​​· freebsd/Freebsd-SRC@28ef165» . Гитхаб .
  20. ^ «Добавьте поддержку ZSTD в ZFS · openzfs/ZFS@10b3c7f» . Гитхаб .
  21. ^ «Кодировка Zstandard — Amazon Redshift» . 20 апреля 2019 г.
  22. ^ Аб Ларабель, Майкл (12 марта 2018 г.). «Каноническая работа над пакетами Debian, сжатыми Zstd, для Ubuntu». phoronix.com . Фороникс Медиа . Проверено 29 октября 2019 г. Разработчики из Canonical рассматривают возможность исключения из заморозки функций, чтобы получить недавно разработанную поддержку Zstd Apt/Dpkg в Ubuntu 18.04 LTS. При этом они упоминают, что будут рассматривать возможность включения сжатия Zstd для пакетов по умолчанию в Ubuntu 18.10.
  23. ^ «Новые установки Ubuntu можно ускорить на 10% с помощью алгоритма сжатия Zstd» . Софтпедия . 12 марта 2018 года . Проверено 13 августа 2018 г.
  24. ^ «Журнал изменений Debian для apt» . Дебиан . 19 апреля 2021 г. Проверено 7 ноября 2022 г.
  25. ^ Колле, Янн (октябрь 2018 г.). Кучерави, Мюррей С. (ред.). Zstandard Compression и тип носителя application/zstd. Запрос на комментарии рабочей группы по интернет-инжинирингу. дои : 10.17487/RFC8478 . RFC 8478 . Проверено 7 октября 2020 г.
  26. ^ «Arch Linux близок к выпуску сжатых пакетов ZSTD для более быстрой установки Pacman» . Фороникс .
  27. Брода, Мара (4 января 2020 г.). «Теперь для сжатия пакетов используется Zstandard вместо xz». Арч Линукс . Проверено 5 января 2020 г.
  28. Брода, Мара (25 марта 2019 г.). «RFC: (devtools) Изменение метода сжатия по умолчанию на zstd». Arch-dev-public (список рассылки).
  29. ^ Брода, Мара; Поляк, Левенте (27 декабря 2019 г.). «makepkg.conf: измените метод сжатия по умолчанию на zstd». Гитхаб .
  30. Раззолини, Джанкарло (19 февраля 2021 г.). «Новости: переход на изображения Zstandard по умолчанию на mkinitcpio». Арч Линукс . Проверено 28 декабря 2021 г.
  31. ^ «Изменения/переключение RPMS на сжатие ZSTD» . Вики проекта Fedora .
  32. ^ «Функция Fedora Workstation 34: прозрачное сжатие Btrfs» . Журнал Федора . 14 апреля 2021 г. Проверено 12 мая 2022 г.
  33. ^ «Изменения/BtrfsTransparentCompression». Вики проекта Fedora . Проверено 12 мая 2022 г.
  34. ^ «RELEASE - nsZip - компрессор/декомпрессор NSP для уменьшения объема памяти» . GBAtemp.net — Независимое сообщество видеоигр . 20 октября 2019 г. Проверено 3 ноября 2019 г.
  35. ^ Босхард, Нико (31 октября 2019 г.), nsZip - это инструмент для сжатия/распаковки игр Nintendo Switch с использованием указанного здесь формата файла NSZ: nicoboss/nsZip , получено 3 ноября 2019 г.
  36. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.8, 15 июня 2020 г. , получено 7 июля 2020 г.
  37. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.7, 1 июня 2020 г. , получено 6 июня 2020 г.
  38. ^ «Алгоритм сжатия данных Zstandard Facebook с открытым исходным кодом призван заменить технологию, лежащую в основе Zip» . ЗДнет. 31 августа 2016 года . Проверено 1 сентября 2016 г.
  39. ^ zstd/ПАТЕНТЫ «Дополнительное предоставление патентных прав, версия 2», Facebook
  40. ^ «Выпуск Zstd v1.3.1», GitHub «facebook/zstd»
  41. ^ «Новая лицензия», GitHub «facebook/zstd»

Внешние ссылки