LZ4

LZ4
Típusú Adattömörítés
Szerző Yann Collet
Fejlesztő Yann Collet
Beírva C
Operációs rendszer platformközi
Első kiadás 2011. április 24 ( 2011-04-24 )
Hardver platform hordozható
legújabb verzió
Állapot aktív
Engedély Egyszerűsített BSD licenc
Weboldal lz4.github.io/lz4/ (  angol)

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

  1. Kiadás v1.9.4
  2. 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..
  3. 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..
  4. 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. 
  5. 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.. 
  6. 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..
  7. 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.. 
  8. Gyors tömörítési algoritmus http://www.lz4.org LZ4 projekt a GitHubon
  9. Jonathan Corbet. Kernel fejlesztés . LWN.net (2013. július 19.). Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2017. december 15.
  10. Archivált másolat . Letöltve: 2018. október 17. Az eredetiből archiválva : 2018. október 17..
  11. 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.
  12. 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.. 
  13. #3035 LZ4 tömörítési támogatás a ZFS-ben és a GRUB LZ4 projektben a GitHubon
  14. Jellemzők: lz4 tömörítés . openzfs . Letöltve: 2015. augusztus 28. Az eredetiből archiválva : 2020. április 25.
  15. Phillip Lougher. Squashfs: LZ4 tömörítési konfigurációs opció hozzáadása (2014. november 27.). Letöltve: 2015. augusztus 28.

Linkek