Это не официальный сайт wikipedia.org 01.01.2023

Zstandard — Википедия

Zstandard — алгоритм сжатия данных без потерь, разрабатываемый с 2015 года Яном Колле (фр. Yann Collet) при поддержке корпорации Facebook; zstd — эталонная реализация алгоритма Zstandard на языке программирования Си под свободной лицензией BSD. Версия 1.0 алгоритма и реализации были представлены в конце августа 2016 года[5][6].

Zstandard
Тип библиотека функций и утилита командной строки[d]
Написана на Си
Операционная система GNU/Linux[d], BSD[d] и Mac OS
Последняя версия
Лицензия модифицированная лицензия BSD[d][2][3] и GNU GPL 2[2][4]
Сайт facebook.github.io/…​ (англ.)

Сочетает словарный алгоритм сжатия данных типа LZ77 и эффективное энтропийное кодирование типа ANS (FSE — Finite State Entropy), алгоритм, сходный с кодом Хаффмана, реализующий нецелое количество бит для хранения символов[7][8].

ОсобенностиПравить

Целью разработки является достижение коэффициентов сжатия, сопоставимых или превосходящих классический алгоритм deflate (разработан в середине 1990-х, реализован в Zip, gzip и других) при более высокой скорости как сжатия, так и распаковки. Сходные цели решают алгоритмы Brotli (Google) и LZFSE[fr] (Apple, также использует ANS FSE)[9].

По данным LTCB, zstd 0.6 при максимальной степени сжатия показывает уровень сжатия, близкий к архиваторам boz, yxz, tornado; более высокий, чем у lza, brotli, bzip2, обеспечивая при этом очень быструю распаковку (2,2 нс/байт на Core i7-3930K при 4,5 ГГц)[10]

Алгоритм реализует 22 уровня сжатия, различающихся скоростью и эффективностью (уровень «1» — самый быстрый, уровень «22» — более эффективный). Опционально алгоритм может проанализировать заданный набор данных для составления специализированных внешних словарей. Задаваемый пользователем словарь улучшает степень сжатия сходных файлов, но требуется при распаковке. Словари применяют для сжатия небольших файлов, имеющих общие наборы строк, например, XML-файлы[11][12].

Эталонная реализация алгоритма на Си распространяется под свободной лицензией BSD[13]. Код опубликован на сайте Github. Начиная с версии 1.3.1[14] из условий было убрано упоминание ограниченной патентной лицензии, а код был перелицензирован под условиями двойной BSD + GPLv2 лицензии.[15]

ПрименениеПравить

Метод Zstandard включён в состав ядра Linux с версии 4.14 от ноября 2017 для использования в файловых системах, в частности, в btrfs и squashfs.[16][17][18] Также метод тестировался во FreeBSD для интеграции в файловую систему OpenZFS[19].

Алгоритм используется в ряде дата-центров и системах обработки «больших данных», в частности, в Amazon RedShift[20]. Поддерживается в базах данных, например RocksDB, в некоторых архиваторах, в частности, в FreeArc.

Описание метода Zstandard и MIME-тип «application/zstd» были поданы в IETF в качестве интернет-черновика[21].

Корпорация Canonical в дистрибутиве Ubuntu планирует перевести пакетный формат deb на сжатие при помощи zstd начиная с версии 18.10 (октябрь 2018) ради ускорения процесса установки примерно на 10 процентов. Сжатие пакетов при помощи Zstd на уровне 19 приводит к немного большему размеру пакета, чем при ранее использовавшемся алгоритме xz (LZMA), но zstd позволяет быстрее распаковывать[22][23].

Полноценная реализация алгоритма с выбором уровня сжатия используется в форматах .NSZ/.XCZ[24], разработанных homebrew-сообществом для гибридной игровой консоли Nintendo Switch.[25][26]

ПримечанияПравить

  1. Zstandard v1.5.4 — 2023.
  2. 1 2 License // https://github.com/facebook/zstd/blob/v1.3.3/README.md
  3. https://github.com/facebook/zstd/blob/v1.3.3/LICENSE
  4. https://github.com/facebook/zstd/blob/v1.3.3/COPYING
  5. Sergio De Simone, Facebook Open-Sources New Compression Algorithm Outperforming Zlib Архивная копия от 7 октября 2021 на Wayback Machine / InfoQ, Sep 02, 2016
  6. Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper, The Register (31 августа 2016). Архивировано 3 сентября 2016 года. Дата обращения: 6 сентября 2016.
  7. Архивированная копия  (неопр.). Дата обращения: 1 сентября 2016. Архивировано 5 марта 2016 года.
  8. Архивированная копия  (неопр.). Дата обращения: 1 сентября 2016. Архивировано 11 сентября 2016 года.
  9. Компания Apple открыла реализацию алгоритма сжатия без потерь LZFSE Архивная копия от 11 сентября 2016 на Wayback Machine // Opennet.ru, 07.07.2016
  10. Matt Mahoney. Large Text Compression Benchmark, .2157 zstd  (неопр.) (29 августа 2016). Дата обращения: 1 сентября 2016. Архивировано 31 марта 2022 года.
  11. https://indico.fnal.gov/event/15154/contribution/5/material/slides/0.pdf Архивная копия от 25 января 2018 на Wayback Machine «Facebook developers report massive speedups and compression ratio improvements when using dictionaries»
  12. Smaller and faster data compression with Zstandard — Facebook Code  (неопр.). Дата обращения: 1 сентября 2016. Архивировано 8 ноября 2020 года.
  13. Facebook open sources Zstandard data compression algorithm, aims to replace technology behind Zip (англ.), ZDnet (31 August 2016). Архивировано 1 сентября 2016 года. Дата обращения: 1 сентября 2016.
  14. «Zstd v1.3.1 release» Архивная копия от 12 сентября 2020 на Wayback Machine, GitHub
  15. «New license» Архивная копия от 12 сентября 2020 на Wayback Machine, GitHub
  16. [https://web.archive.org/web/20211122141753/https://lwn.net/Articles/733846/ Архивная копия от 22 ноября 2021 на Wayback Machine The rest of the 4.14 merge window [LWN.net]]
  17. Linux_4.14 — Linux Kernel Newbies  (неопр.). Дата обращения: 13 августа 2018. Архивировано 10 января 2018 года.
  18. Zstd Compression For Btrfs & Squashfs Set For Linux 4.14, Already Used Within Facebook — Phoronix  (неопр.). Дата обращения: 13 августа 2018. Архивировано 25 июля 2019 года.
  19. Архивированная копия  (неопр.). Дата обращения: 13 августа 2018. Архивировано 18 декабря 2019 года.
  20. Zstandard Encoding — Amazon Redshift  (неопр.). Дата обращения: 13 августа 2018. Архивировано 14 августа 2021 года.
  21. Collet, Yann; Kucherawy, Murray S. Zstandard Compression and The application/zstd Media Type  (неопр.). IETF. Дата обращения: 13 июля 2018.
  22. New Ubuntu Installs Could Be Speed Up by 10% with the Zstd Compression Algorithm  (неопр.). Softpedia (12 марта 2018). Дата обращения: 13 августа 2018. Архивировано 6 октября 2021 года.
  23. Canonical Working On Zstd-Compressed Debian Packages For Ubuntu - Phoronix (англ.). phoronix (12 марта 2018). Дата обращения: 13 августа 2018. Архивировано 16 августа 2021 года.
  24. RELEASE - nsZip - NSP compressor/decompressor to reduce storage (англ.). GBAtemp.net - The Independent Video Game Community. Дата обращения: 3 ноября 2019. Архивировано 15 августа 2021 года.
  25. Nico Bosshard. nsZip is a tool to compress/decompress Nintendo Switch games using the here specified NSZ file format: nicoboss/nsZip. — 2019-10-31. Архивировано 27 марта 2022 года.
  26. Руководство по взлому Nintendo Switch - 4PDA  (неопр.). 4pda.to. Дата обращения: 3 ноября 2019.

СсылкиПравить