Kompresní systém OpenZL, který překonává Zstd a XZ z hlediska rychlosti a úrovně komprese strukturovaných dat

Společnost Meta* představila OpenZL, sadu nástrojů pro kompresi a dekompresi dat, která nabízí vyšší kompresní poměry a rychlost než formáty Zstd a XZ. OpenZL je navržen pro efektivní kompresi strukturovaných datových sad, jako jsou ty používané ve strojovém učení, a také datových úložišť obsahujících pole s různými opakujícími se typy informací. OpenZL je napsán v jazyce C/C++ a je open-source pod licencí BSD.

Při kompresi databáze obsahující astronomický katalog hvězd SAO OpenZL zmenšil velikost dat faktorem 2.06, zatímco algoritmus zstd komprimoval data faktorem 1.31 a XZ faktorem 1.64. OpenZL navíc překonal zstd v rychlosti komprese faktorem 2 (203 MB/s oproti 115 MB/s) a XZ faktorem 65 (203 MB/s oproti 3.1 MB/s). Dekomprese v OpenZL byla o něco pomalejší než u zstd (822 MB/s oproti 890 MB/s) a 27krát rychlejší než u XZ.

Kompresní systém OpenZL, který překonává Zstd a XZ z hlediska rychlosti a úrovně komprese strukturovaných dat

OpenZL není univerzální algoritmus a ukazuje dobré výsledky pouze pro data se známou strukturou. Fungování OpenZL spočívá v adaptivním generování packeru na základě poskytnutého popisu dat. Tím se generuje kompresní kód optimalizovaný pro specifický datový formát. Pro dekompresi se používá univerzální rozbalicí program kompatibilní se všemi generovanými packery.

Balení a rozbalování se provádí pomocí jediného nástroje „zli“ nebo knihovny libopenzl. Datová struktura je popsána ve formě profilů. To zahrnuje sadu předdefinovaných profilů popisujících typické formáty úložiště. Například profil pro formát CSV nebo data uložená jako 64bitové pole. Komprese je jednoduchá jako výběr profilu pomocí příkazu „zli list-profiles“ a spuštění procesu komprese příkazem „zli compress --profile profile_name“. Pro rozbalení jednoduše spusťte příkaz „zli decompress“.

Pro specifické formáty je nutné vytvořit vlastní profil pomocí příkazu „zli train“, který identifikuje vzory v datech a generuje profil s optimální úrovní komprese. Pomocí volby „--pareto-frontier“ lze vytvořený profil optimalizovat pro urychlení komprese nebo dekomprese na úkor komprese. Jazyk SDDL (Simple Data Description Language) lze použít k popisu složitých formátů s vnořenými strukturami a k ​​definování rozvržení datových formátů v rámci struktur.

Metoda pro vytváření optimálních packerů je založena na sadě primitivních kodérů, z nichž každý je nejúčinnější pro specifické datové typy a sekvence. Pro kompresi se vytvoří orientovaný acyklický graf zpracování dat, kde kodeky slouží jako uzly a varianty dat ve zpracovávaném formátu jako hrany. V závislosti na vstupním datovém typu se vybere řetězec kodeků, který optimálně komprimuje vstupní datový prvek. Při tomto uspořádání se záhlaví souboru komprimuje pomocí jednoho kodeku, celočíselné datové pole pomocí druhého kodeku, inkrementační pole čítače pomocí třetího kodeku a řetězcové datové pole pomocí čtvrtého kodeku.

Kompresní systém OpenZL, který překonává Zstd a XZ z hlediska rychlosti a úrovně komprese strukturovaných dat


Zdroj: opennet.ru
Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster