LZ4
Az LZ4 egy veszteségmentes adattömörítési algoritmus , amely a nagy sebességű tömörítésre és kitömörítésre összpontosít. Az LZ77 tömörítési módszerek családjába tartozik, amelyek bájtfolyamokkal működnek. Kompakt kicsomagoló kóddal rendelkezik.
Jellemzők
Az LZ4 algoritmus valamivel alacsonyabb tömörítési aránnyal rendelkezik, mint a korábbi LZO tömörítési módszer . Az LZO viszont kisebb mértékben tömörít, mint a klasszikus gzip és a DEFLATE . Az LZ4 azonban a tömörítési sebesség tekintetében közel áll az LZO-hoz, és többszörösen gyorsabb, mint a gzip, az LZ4 pedig sokkal gyorsabban kicsomagol, mint az LZO. [2]
Tömörítési módszer
Az LZ4 módszerben a tömörített adatok rekordok sorozataként jelennek meg. Minden bejegyzés egy tokennel kezdődik – egy bájt, két 4 bites mezőre osztva. Az első mező a literális sorozat bájtjainak számát adja meg – vagyis azt a karakterláncot, amely kicsomagoláskor a kimeneti adatfolyamba másolódik. A második mező a már kicsomagolt pufferből (a szótárból) másolt karakterlánc hosszát határozza meg. A mezőben lévő 0 érték 4 bájtos minimális egyezési hossznak felel meg. A mezőben lévő 15-ös érték egy további bájt használatát jelzi, amelynek értéke hozzáadódik a hosszhoz. Ha az extra hosszúságú bájt 255, akkor egy további bájt értéke hozzáadódik a hosszmezőhöz, amely lehetővé teszi tetszőleges hosszúságok megadását 255 (0xff) értékű bájtsorozaton keresztül. A tömörített szekvencia literális karakterlánca követi a tokent és a literálhosszúság további bájtjait. Ezután beírja az egyezés eltolását a kimeneti pufferbe, és az egyezés hosszának további bájtjait. [3] [4] [5] Ezenkívül használhatók az adatok méretét jelző keretek, amelyek ellenőrző összegeket tartalmaznak [6] [7] .
Az entrópia kódolást (például a Huffman-kódot ) nem használják.
A tömörítés végrehajtható bájtfolyamon vagy blokkok sorozatán. Az elért tömörítés mértéke az egyezések megtalálása érdekében végzett munka mennyiségétől függ. Ha több időt tölt a tömörítéssel, akkor egy kompaktabb tömörített fájlt kap, és a kicsomagolás sebessége megnő.
Megvalósítás
Az LZ4 eredeti megvalósítását C programozási nyelven írta Yann Collet, és a BSD licenc feltételei szerint terjesztették. Számos nyelvhez léteznek portok és interfészek, köztük Java, C#, Python stb. [8] Egyes adatbázisok, mint például a Hadoop , nagy tömörítési sebessége miatt LZ4-et használnak. Az LZ4 a Linux kernel részeként is implementálva van a 3.11-es verzió óta [9] , és a rendszerindítás felgyorsítására használható [10] . A FreeBSD, Illumos, " ZFS on Linux " és ZFS-OSX implementációk részeként működő ZFS fájlrendszer támogatja az LZ4 adattömörítési módszert. [11] [12] [13] [14] A Linux kernel a 3.19-es verzió óta támogatja az LZ4-et a tömörített SquashFS -képekhez. [15] Az LZ4 Jan Kolle
Zstd archiválójának részeként is megvalósul .
Jegyzetek
- ↑ Kiadás v1.9.4
- ↑ Michael Larabel . Támogatás a Linux kernel LZ4 segítségével történő tömörítéséhez . Phoronix (2013. január 28.). Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2015. szeptember 24.. (határozatlan)
- ↑ Yann Collet. Valós idejű adattömörítés (2011. május 26.). Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2015. szeptember 23.. (határozatlan)
- ↑ ciki. Az LZ4 működése (nem elérhető link) (2016. október 25.). Letöltve: 2017. június 29. Az eredetiből archiválva : 2017. június 27. (határozatlan)
- ↑ LZ4 - Rendkívül gyors tömörítés (nem elérhető link) . Letöltve: 2018. október 17. Az eredetiből archiválva : 2018. szeptember 27.. (határozatlan)
- ↑ Valós idejű adattömörítés: LZ4 Keretformátum : Végső specifikációk . Letöltve: 2018. október 17. Az eredetiből archiválva : 2018. október 17.. (határozatlan)
- ↑ LZ4 - Rendkívül gyors tömörítés (nem elérhető link) . Letöltve: 2018. október 17. Az eredetiből archiválva : 2018. szeptember 27.. (határozatlan)
- ↑ Gyors tömörítési algoritmus http://www.lz4.org LZ4 projekt a GitHubon
- ↑ Jonathan Corbet. Kernel fejlesztés . LWN.net (2013. július 19.). Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2017. december 15. (határozatlan)
- ↑ Archivált másolat . Letöltve: 2018. október 17. Az eredetiből archiválva : 2018. október 17.. (határozatlan)
- ↑ FreeBSD 9.2-RELEASE Kiadási megjegyzések . FreeBSD (2013. november 13.). Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2020. november 12. (határozatlan)
- ↑ LZ4 tömörítés (nem elérhető link) . illumos . Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2018. október 9.. (határozatlan)
- ↑ #3035 LZ4 tömörítési támogatás a ZFS-ben és a GRUB LZ4 projektben a GitHubon
- ↑ Jellemzők: lz4 tömörítés . openzfs . Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2020. április 25. (határozatlan)
- ↑ Phillip Lougher. Squashfs: LZ4 tömörítési konfigurációs opció hozzáadása (2014. november 27.). Letöltve: 2015. augusztus 28. (határozatlan)
Linkek