zstd
zstd![]() | |
원본 작성자 | 얀 콜레트 |
---|---|
개발자 | 얀 콜레트, 닉 테렐, 프르제미스와프 스키비슈스키[1] |
초기 릴리즈 | 2015년 1월 23일 ( |
안정적 해제 | 1.5.2 / 2022년 1월 20일;[2] 전 |
리포지토리 | |
기록 위치 | C |
운영 체제 | 크로스 플랫폼 |
플랫폼 | 휴대용 |
유형 | 데이터 압축 |
면허증 | 듀얼: BSD 라이센스, GPLv2 |
웹사이트 | facebook![]() |
흔히 참조 구현 zstd라는 이름으로 알려진 zstand는 Yann Collet가 페이스북에서 개발한 무손실 데이터 압축 알고리즘이다.Zstd는 C에서 참조 구현이다.이 구현의 버전 1은 2016년 8월 31일에 오픈 소스 소프트웨어로 출시되었다.[3][4]
특징들
zstandard는 DEFLATE 알고리즘(1991년에 개발되어 원래의 ZIP 및 gzip 프로그램에서 사용됨)에 비견할 만한 압축 비율을 제공하도록 설계되었지만, 특히 감압에 대해서는 속도가 더 빨랐다.음극 7(가장 빠름)[5]부터 22(압축 속도가 가장 느리지만 최상의 압축 비율)까지 압축 수준을 조절할 수 있다.
zstd 패키지는 압축과 압축 해제를[citation needed] 모두 병렬(다중 스레드) 구현을 포함한다.zstd는 버전 1.3.2(2017년 10월)부터 선택적으로 매우 긴 범위 검색 및 중복제거를 구현한다.--long
, 128MiB 창)은 rzip 또는 lrzip과 유사하다.[6]
압축 속도는 가장 빠른 수준과 가장 느린 수준 사이에서 20배 이상의 인자에 의해 달라질 수 있는 반면, 감압은 균일하게 빠른 속도로 가장 빠른 수준과 가장 느린 수준 사이에서 20% 미만으로 변화한다.[7]Zstandard 명령줄에는 "적응"이 있다.--adapt
I/O 조건에 따라 압축 수준이 달라지는 모드, 주로 출력을 얼마나 빨리 쓸 수 있는지.
최대 압축 수준의 zstd는 lzma, lzham, ppmx에 가까운 압축비를 제공하며 lza, 즉 bzip2보다 더 좋은 성능을 발휘한다.[8][9]zstandard는 압축비가 비슷하거나 더 나은 현재 사용 가능한 다른 알고리즘보다 더 빠르게 압축을 풀기 때문에 현재의 파레토 프론티어에 도달한다.[10][11]
사전은 소형 파일의 압축비에 큰 영향을 미칠 수 있어 Zstandard는 사용자가 제공한 압축 사전을 사용할 수 있다.그것은 또한 일련의 샘플로부터 사전을 생성할 수 있는 훈련 모드를 제공한다.[12][13]특히 하나의 사전을 로딩하여 파일 사이에 중복성이 있는 대용량 파일 세트를 처리할 수 있지만, 각 파일(예: 로그 파일) 내에서 반드시 처리할 필요는 없다.
디자인
Zstandard는 LZ77)과 Limited State Entropy(서열 섹션의 항목에 사용되는 ANS, tans의 빠른 표 버전)와 Huffman coding(Literals 섹션의 입력에 사용됨)을 모두 사용하여 큰 검색 창과 빠른 엔트로피 코딩 단계를 결합한다.[14]
FSE가 기호 사이에 상태를 전달하는 방식 때문에 감압은 각 블록의 시퀀스 섹션 내에서 (마지막에서 첫 번째까지) 역순으로 기호를 처리하는 것을 포함한다.
사용법
파일 이름 확장명 | .zst[15] |
---|---|
인터넷 미디어 유형 | 애플리케이션/zstd[15] |
매직넘버 | 28 b5 2f fd [15] |
형식 유형 | 데이터 압축 |
표준 | RFC 8478 |
웹사이트 | https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md |
인터넷 미디어 유형 | 응용 프로그램/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 Redshift와 RocksDB 데이터베이스는 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 계열의 빠른 멤버
참조
- ^ "Contributors to facebook/zstd". github.com. Archived from the original on 27 January 2021. Retrieved 26 January 2021.
- ^ "Releases - facebook/zstd". Retrieved 20 January 2022 – via GitHub.
- ^ Sergio De Simone (2 September 2016). "Facebook Open-Sources New Compression Algorithm Outperforming Zlib". InfoQ. Retrieved 20 April 2019.
- ^ "Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper". The Register. 31 August 2016. Retrieved 6 September 2016.
- ^ https://github.com/facebook/zstd/releases/tag/v1.3.4 더 빠른 압축 수준
- ^ "Command Line Interface for Zstandard library". GitHub. 28 October 2021.
- ^ a b "ZStandard in ZFS" (PDF). open-zfs.org. 2017. Retrieved 20 April 2019.
- ^ Matt Mahoney. "Silesia Open Source Compression Benchmark". Retrieved 10 May 2019.
- ^ Matt Mahoney (29 August 2016). "Large Text Compression Benchmark, .2157 zstd". Retrieved 1 September 2016.
- ^ TurboBench: Static/Dynamic web content compression benchmark, PowTurbo
- ^ Matt Mahoney, Silesia Open Source Compression Benchmark
- ^ "Facebook developers report massive speedups and compression ratio improvements when using dictionaries" (PDF).
- ^ "Smaller and faster data compression with Zstandard". Facebook. 31 August 2016.
- ^ "facebook/zstd". GitHub. 28 October 2021.
- ^ 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.
- ^ "The rest of the 4.14 merge window [LWN.net]". lwn.net.
- ^ "Linux_4.14 - Linux Kernel Newbies". Kernelnewbies.org. Retrieved 16 August 2018.
- ^ "Zstd Compression For Btrfs & Squashfs Set For Linux 4.14, Already Used Within Facebook - Phoronix". www.phoronix.com.
- ^ https://github.com/freebsd/freebsd/commit/28ef16535cde21eeeaf75f6006b3a77952b3b51
- ^ "Add ZSTD support to ZFS · openzfs/ZFS@10b3c7f". GitHub.
- ^ "Zstandard Encoding - Amazon Redshift". 20 April 2019.
- ^ 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.
- ^ "New Ubuntu Installs Could Be Speed Up by 10% with the Zstd Compression Algorithm". Softpedia. 12 March 2018. Retrieved 13 August 2018.
- ^ "Canonical Working On Zstd-Compressed Debian Packages For Ubuntu". phoronix. 12 March 2018. Retrieved 13 August 2018.
- ^ Jackson, Ian (27 April 2018). "RFC: Support for zstd in .deb packages?". debian-devel (Mailing list).
- ^ "Arch Linux Nears Roll-Out of ZSTD Compressed Packages for Faster Pacman Installs - Phoronix".
- ^ Broda, Mara (4 January 2020). "Now using Zstandard instead of xz for package compression". Arch Linux. Retrieved 5 January 2020.
- ^ Broda, Mara (25 March 2019). "RFC: (devtools) Changing default compression method to zstd". arch-dev-public (Mailing list).
- ^ Broda, Mara; Polyak, Levente (27 December 2019). "makepkg.conf: change default compression method to zstd".
- ^ 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 (링크) - ^ "Changes/Switch RPMS to ZSTD compression - Fedora Project Wiki".
- ^ "RELEASE - nsZip - NSP compressor/decompressor to reduce storage". GBAtemp.net - The Independent Video Game Community. Retrieved 3 November 2019.
- ^ 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
- ^ "Milkys Homepage - 7-Zip with support for Zstandard, Brotli, Lz4, Lz5 and Lizard Compression".
- ^ "Modern7z".
- ^ "Facebook open sources Zstandard data compression algorithm, aims to replace technology behind Zip". ZDnet. 31 August 2016. Retrieved 1 September 2016.
- ^ zstd/PATENTS "특허권 추가 부여 버전 2", Facebook
- ^ "Zstd v1.3.1 릴리스", GitHub "facebook/zstd"
- ^ "새 라이센스", GitHub "facebook/zstd"
외부 링크
- 공식 웹사이트
- zstd on GitHub
- GitHub에 Zstandard 포함 7zip
- "Zstandard로 더 작고 빠른 데이터 압축", Yann Collet 및 Chip Turner, 2016년 8월 31일, Facebook 발표
- 가디언은 zlib 대신 ZStandard를 사용하고 있다.