zstd

zstd
즈스트드
Zstandard logo.png
원본 작성자얀 콜레트
개발자얀 콜레트, 닉 테렐, 프르제미스와프 스키비슈스키[1]
초기 릴리즈2015년 1월 23일 (2015-01-23)
안정적 해제
1.5.2 / 2022년 1월 20일; 2개월(2022-01-20)[2]
리포지토리
기록 위치C
운영 체제크로스 플랫폼
플랫폼휴대용
유형데이터 압축
면허증듀얼: BSD 라이센스, GPLv2
웹사이트facebook.github.io/zstd/ Edit this on Wikidata

흔히 참조 구현 zstd라는 이름으로 알려진 zstand는 Yann Collet가 페이스북에서 개발한 무손실 데이터 압축 알고리즘이다.ZstdC에서 참조 구현이다.이 구현의 버전 1은 2016년 8월 31일에 오픈 소스 소프트웨어로 출시되었다.[3][4]

특징들

zstandard는 DEFLATE 알고리즘(1991년에 개발되어 원래의 ZIPgzip 프로그램에서 사용됨)에 비견할 만한 압축 비율을 제공하도록 설계되었지만, 특히 감압에 대해서는 속도가 더 빨랐다.음극 7(가장 빠름)[5]부터 22(압축 속도가 가장 느리지만 최상의 압축 비율)까지 압축 수준을 조절할 수 있다.

zstd 패키지는 압축과 압축 해제를[citation needed] 모두 병렬(다중 스레드) 구현을 포함한다.zstd는 버전 1.3.2(2017년 10월)부터 선택적으로 매우 긴 범위 검색 및 중복제거를 구현한다.--long, 128MiB 창)은 rzip 또는 lrzip과 유사하다.[6]

압축 속도는 가장 빠른 수준과 가장 느린 수준 사이에서 20배 이상의 인자에 의해 달라질 수 있는 반면, 감압은 균일하게 빠른 속도로 가장 빠른 수준과 가장 느린 수준 사이에서 20% 미만으로 변화한다.[7]Zstandard 명령줄에는 "적응"이 있다.--adaptI/O 조건에 따라 압축 수준이 달라지는 모드, 주로 출력을 얼마나 빨리 쓸 수 있는지.

최대 압축 수준의 zstdlzma, lzham, ppmx에 가까운 압축비를 제공하며 lza, 즉 bzip2보다 더 좋은 성능을 발휘한다.[8][9]zstandard는 압축비가 비슷하거나 더 나은 현재 사용 가능한 다른 알고리즘보다 더 빠르게 압축을 풀기 때문에 현재의 파레토 프론티어에 도달한다.[10][11]

사전은 소형 파일의 압축비에 큰 영향을 미칠 수 있어 Zstandard는 사용자가 제공한 압축 사전을 사용할 수 있다.그것은 또한 일련의 샘플로부터 사전을 생성할 수 있는 훈련 모드를 제공한다.[12][13]특히 하나의 사전을 로딩하여 파일 사이에 중복성이 있는 대용량 파일 세트를 처리할 수 있지만, 각 파일(예: 로그 파일) 내에서 반드시 처리할 필요는 없다.

디자인

Zstandard는 LZ77)과 Limited State Entropy(서열 섹션의 항목에 사용되는 ANS, tans의 빠른 표 버전)와 Huffman coding(Literals 섹션의 입력에 사용됨)을 모두 사용하여 큰 검색 창과 빠른 엔트로피 코딩 단계를 결합한다.[14]

FSE가 기호 사이에 상태를 전달하는 방식 때문에 감압은 각 블록의 시퀀스 섹션 내에서 (마지막에서 첫 번째까지) 역순으로 기호를 처리하는 것을 포함한다.

사용법

Z표준
파일 이름 확장명
.zst[15]
인터넷 미디어 유형
애플리케이션/zstd[15]
매직넘버28 b5 2f fd[15]
형식 유형데이터 압축
표준RFC 8478
웹사이트https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md
Zstandard 사전
인터넷 미디어 유형응용 프로그램/z표준
매직넘버37 a4 30 ec[15]
표준RFC 8478
웹사이트https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format

리눅스 커널btrfs스쿼시fs 파일 시스템을 압축하는 방법으로 2017년 11월(버전 4.14)부터 Zstandard를 포함했다.[16][17][18]

2017년 앨런 주드는 Zstand를 FreeB에 통합했다.SD 커널과[19] 그것은 이후에 코어 덤프를 위한 압축기 옵션으로 통합되었다(사용자 프로그램과 커널 패닉 둘 다).개념 증명서 OpenZ를 만드는 데도 사용되었다.2020년에 통합된 FS 압축[7] 방식.[20]

AWS RedshiftRocksDB 데이터베이스는 Zstand를 이용한 필드 압축을 지원한다.[21]

캐논컬은 2018년 3월 우분투 리눅스 배포에 대해 기본적으로 zstd를 deb 패키지 압축 방법으로 사용하는 것을 테스트했다[22].deb 패키지의 xz 압축과 비교했을 때, 레벨 19의 zstd는 훨씬 더 빨리 압축을 풀지만 6% 더 큰 패키지 파일의 비용은 든다.데비안 개발자인 이안 잭슨은 공식 입양 몇 년 전에 기다리는 것을 좋아했다.[23][24][25]

2018년에 알고리즘은 RFC 8478로 발행되었으며, RFC 8478은 관련 미디어 유형 "application/zstd", 파일 이름 확장명 "zst" 및 HTTP 콘텐츠 인코딩 "zstd"[15]를 정의하기도 한다.

아치 리눅스pacman 5.2 패키지 매니저 출시와 함께 2019년 10월 패키지 압축 방식으로 zstd 지원을 추가했고,[26] 2020년 1월 공식 저장소에 있는 패키지에 대해 xz에서 zstd로 전환했다.Arch useszstd -c -T0 --ultra -20 -, 조합된 모든 압축 패키지의 크기는 0.8% 증가(xz 대비), 감압 속도는 14배 빨라지고, 감압 메모리는 여러 스레드를 사용할 때 50MiB 증가하며, 압축 메모리는 증가하지만 사용되는 스레드의 수에 따라 확장된다.[27][28][29]나중에 Arch Linux도 mkinitcpio 초기 ramdisk 발생기의 기본 압축 알고리즘으로 zstd로 전환했다.[30]

Fedora는 2018년 5월 RPM(RPM)에 ZSandard 지원을 추가한 후(Fedora 릴리즈 28), 2019년 10월 출시 포장에 사용했다(Fedora 31).[31]

압축 수준을 선택할 수 있는 옵션이 있는 알고리즘의 완전한 구현이 에서 사용된다.홈브류 커뮤니티에서 닌텐도[32] 스위치 하이브리드 게임 콘솔용으로 개발한 NSZ / .XCZ 파일 형식.[33]

7-Zip ZS는 Zstand(및 기타 형식)가 지원되는 7-Zip FM의 포크로서 Tino Reichardt에 의해 개발되었다.[34]

7-Zip FM용 Zstandard(및 기타 형식) 플러그인인 Modern7z는 Denis Anisimov(TC4shell)에 의해 개발되었다.[35]

면허증

참조 구현은 GitHub에서 발행된 BSD 라이선스에 따라 허가된다.[36]버전 1.0 이후 추가 특허권 부여가 있었다.[37]

버전 1.3.1부터는 이 특허권 부여가 해제되어 BSD + GPLv2 이중 라이선스로 변경되었다.[38][39]

참고 항목

  • 즈립
  • LZFSE – Apple이 2016년 6월 1일 iOS 9와 OS X 10.11을 오픈 소스로 만든 이후 사용한 유사한 알고리즘
  • LZ4(압축 알고리즘) – LZ77 계열의 빠른 멤버

참조

  1. ^ "Contributors to facebook/zstd". github.com. Archived from the original on 27 January 2021. Retrieved 26 January 2021.
  2. ^ "Releases - facebook/zstd". Retrieved 20 January 2022 – via GitHub.
  3. ^ Sergio De Simone (2 September 2016). "Facebook Open-Sources New Compression Algorithm Outperforming Zlib". InfoQ. Retrieved 20 April 2019.
  4. ^ "Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper". The Register. 31 August 2016. Retrieved 6 September 2016.
  5. ^ https://github.com/facebook/zstd/releases/tag/v1.3.4 더 빠른 압축 수준
  6. ^ "Command Line Interface for Zstandard library". GitHub. 28 October 2021.
  7. ^ a b "ZStandard in ZFS" (PDF). open-zfs.org. 2017. Retrieved 20 April 2019.
  8. ^ Matt Mahoney. "Silesia Open Source Compression Benchmark". Retrieved 10 May 2019.
  9. ^ Matt Mahoney (29 August 2016). "Large Text Compression Benchmark, .2157 zstd". Retrieved 1 September 2016.
  10. ^ TurboBench: Static/Dynamic web content compression benchmark, PowTurbo
  11. ^ Matt Mahoney, Silesia Open Source Compression Benchmark
  12. ^ "Facebook developers report massive speedups and compression ratio improvements when using dictionaries" (PDF).
  13. ^ "Smaller and faster data compression with Zstandard". Facebook. 31 August 2016.
  14. ^ "facebook/zstd". GitHub. 28 October 2021.
  15. ^ a b c d e Collet, Yann (October 2018). Kucherawy, Murray S. (ed.). Zstandard Compression and the application/zstd Media Type. Internet Engineering Task Force Request for Comments. doi:10.17487/RFC8478. RFC 8478. Retrieved 7 October 2020.
  16. ^ "The rest of the 4.14 merge window [LWN.net]". lwn.net.
  17. ^ "Linux_4.14 - Linux Kernel Newbies". Kernelnewbies.org. Retrieved 16 August 2018.
  18. ^ "Zstd Compression For Btrfs & Squashfs Set For Linux 4.14, Already Used Within Facebook - Phoronix". www.phoronix.com.
  19. ^ https://github.com/freebsd/freebsd/commit/28ef16535cde21eeeaf75f6006b3a77952b3b51
  20. ^ "Add ZSTD support to ZFS · openzfs/ZFS@10b3c7f". GitHub.
  21. ^ "Zstandard Encoding - Amazon Redshift". 20 April 2019.
  22. ^ Larabel, Michael (12 March 2018). "Canonical Working On Zstd-Compressed Debian Packages For Ubuntu". phoronix.com. Phoronix Media. Retrieved 29 October 2019. The developers at Canonical are considering a feature freeze exception to get this newly-developed Zstd Apt/Dpkg support in Ubuntu 18.04 LTS. In doing so, they mention they would be looking at enabling Zstd compression for packages by default in Ubuntu 18.10.
  23. ^ "New Ubuntu Installs Could Be Speed Up by 10% with the Zstd Compression Algorithm". Softpedia. 12 March 2018. Retrieved 13 August 2018.
  24. ^ "Canonical Working On Zstd-Compressed Debian Packages For Ubuntu". phoronix. 12 March 2018. Retrieved 13 August 2018.
  25. ^ Jackson, Ian (27 April 2018). "RFC: Support for zstd in .deb packages?". debian-devel (Mailing list).
  26. ^ "Arch Linux Nears Roll-Out of ZSTD Compressed Packages for Faster Pacman Installs - Phoronix".
  27. ^ Broda, Mara (4 January 2020). "Now using Zstandard instead of xz for package compression". Arch Linux. Retrieved 5 January 2020.
  28. ^ Broda, Mara (25 March 2019). "RFC: (devtools) Changing default compression method to zstd". arch-dev-public (Mailing list).
  29. ^ Broda, Mara; Polyak, Levente (27 December 2019). "makepkg.conf: change default compression method to zstd".
  30. ^ Razzolini, Giancarlo (19 February 2021). "Arch Linux - News: Moving to Zstandard images by default on mkinitcpio". Arch Linux. Retrieved 28 December 2021.{{cite web}}: CS1 maint : url-status (링크)
  31. ^ "Changes/Switch RPMS to ZSTD compression - Fedora Project Wiki".
  32. ^ "RELEASE - nsZip - NSP compressor/decompressor to reduce storage". GBAtemp.net - The Independent Video Game Community. Retrieved 3 November 2019.
  33. ^ Bosshard, Nico (31 October 2019), nsZip is a tool to compress/decompress Nintendo Switch games using the here specified NSZ file format: nicoboss/nsZip, retrieved 3 November 2019
  34. ^ "Milkys Homepage - 7-Zip with support for Zstandard, Brotli, Lz4, Lz5 and Lizard Compression".
  35. ^ "Modern7z".
  36. ^ "Facebook open sources Zstandard data compression algorithm, aims to replace technology behind Zip". ZDnet. 31 August 2016. Retrieved 1 September 2016.
  37. ^ zstd/PATENTS "특허권 추가 부여 버전 2", Facebook
  38. ^ "Zstd v1.3.1 릴리스", GitHub "facebook/zstd"
  39. ^ "새 라이센스", GitHub "facebook/zstd"

외부 링크