LZO
LZO (zkr. Lempel-Ziv-Oberhumer - Lempel-Ziv-Oberheimer) je algoritmus pro kompresi dat navržený k dosažení maximální rychlosti dekomprese v polovině 90. let. Algoritmus komprimuje data beze ztrát a jeho základní implementace podporuje vícevláknové provádění.
Bezplatný program, který implementuje LZO, je lzop . Původní knihovna byla napsána v ANSI C a je dostupná pod licencí GPL . Existují také implementace LZO v Assembly ( x86 ), Perl , Python , Java a .NET . Kód napsal Markus Oberheimer ( Markus FXJ Oberhumer )
Knihovna LZO implementuje několik algoritmů s následujícími vlastnostmi.
- Rozbalení je jednoduché a velmi rychlé.
- Dekomprese nevyžaduje žádnou další paměť kromě vyrovnávacích pamětí pro komprimovaná a dekomprimovaná data.
- Komprese je také velmi rychlá.
- Komprese vyžaduje 64 KB paměti.
- Další komprese můžete dosáhnout tím, že komprimaci strávíte trochu více času. V tomto případě se rychlost dekomprese nesnižuje.
- Existuje několik úrovní komprese (s různými požadavky na rychlost).
- Konkrétně je implementována varianta algoritmu, která vyžaduje pouze 8 KB paměti pro kompresi.
- Algoritmus lze bezpečně použít ve vícevláknovém prostředí.
- Algoritmus komprimuje a dekomprimuje data bez ztráty.
Vysoká rychlost algoritmu umožňuje jeho integraci do různých vysoce výkonných systémů, například v DBMS [1] , systémech zpracování dat [2] [3] , souborových systémech [4] [5] , pro rozbalení jader OS při spouštění [6] (včetně zařízení Samsung Android), systémy komprimované paměti [7] [8] . Používá se na několika planetách [9] .
Algoritmus je jedním z nejrychlejších dekompresních spolu s metodou LZ4 (LZ4 HC) vytvořenou na jeho základě, stejně jako řadou dalších kompresních algoritmů: Snappy , FastLZ , LZF [6] .
Mezi nedostatky patří absence jediné specifikace pro formát komprimovaného toku [10] . V původním dekompresním kódu před rokem 2014 došlo k chybě přetečení celého čísla. Rozšířené používání algoritmu vedlo k potenciální zranitelnosti mnoha projektů [9] [11] [12] .
Viz také
Poznámky
- ↑ Kódování LZO – Amazon Redshift . Získáno 31. října 2016. Archivováno z originálu 24. listopadu 2016. (neurčitý)
- ↑ Paralelní LZO: Splittable Compression for Apache Hadoop – Cloudera Engineering Blog (downlink) . Získáno 31. října 2016. Archivováno z originálu 1. listopadu 2016. (neurčitý)
- ↑ Průvodce použitím komprese LZO v Hadoopu
- ↑ Btrfs LZO kompresní výkon - Phoronix . Získáno 31. října 2016. Archivováno z originálu 14. dubna 2016. (neurčitý)
- ↑ Compression-btrfs Wiki . Získáno 31. října 2016. Archivováno z originálu 12. června 2017. (neurčitý)
- ↑ 1 2 Archivovaná kopie (odkaz není k dispozici) . Získáno 31. října 2016. Archivováno z originálu 6. března 2016. (neurčitý)
- ↑ Archivovaná kopie . Získáno 31. října 2016. Archivováno z originálu 22. března 2016. (neurčitý)
- ↑ Komprese paměti v jádře Archivováno 9. října 2021 na Wayback Machine , LWN.net
- ↑ 1 2 Raising Lazarus – The 20 Year Old Bug that Got to Mars Archived 22. října 2016 na Wayback Machine / The Lab Mouse Security research blog. "Algoritmus LZO se několikrát dostal na planetu Mars na zařízeních NASA"
- ↑ Formát streamu LZO, jak jej chápe linuxový dekompresor LZO Archivováno 9. června 2016 na Wayback Machine , Linux Kernel Documentation ,
- ↑ V kompresním algoritmu LZO nalezena dlouhodobá bezpečnostní chyba | securityweek.com . Získáno 31. října 2016. Archivováno z originálu 1. listopadu 2016. (neurčitý)
- ↑ Dvacet let stará zranitelnost v LZO konečně opravena Archivováno 1. listopadu 2016 na Wayback Machine / CSO Online
Odkazy