Företaget Meta* har introducerat ett verktyg för komprimering och dekomprimering av data, OpenZL, som jÀmfört med formaten Zstd och XZ visar en högre kompressionsnivÄ och arbetskapacitet. OpenZL Àr utformat för effektiv komprimering av strukturerade datamÀngder, som de som anvÀnds vid maskininlÀrning, samt lagringssystem som innehÄller fÀlt med olika upprepade informations typer. Koden för OpenZL Àr skriven i C/C++ och Àr öppen under BSD-licens.
Vid komprimering av en databas med den astronomiska katalogen över stjÀrnor, SAO, lyckades verktyget OpenZL reducera datastorleken med 2,06 gÄnger, medan algoritmen zstd komprimerade informationen med 1,31 gÄnger och XZ med 1,64 gÄnger. Vidare övertrÀffade OpenZL zstd i komprimeringshastighet med dubbelt sÄ mycket (203 MB/s mot 115 MB/s), medan den var 65 gÄnger snabbare Àn XZ (203 MB/s mot 3,1 MB/s). Dekomprimeringen med OpenZL var nÄgot lÄngsammare Àn zstd (822 MB/s mot 890 MB/s) och 27 gÄnger snabbare Àn XZ.

OpenZL Àr inte en generell algoritm och visar goda resultat endast för data med kÀnd struktur i förvÀg. OpenZLs arbetsprincip bygger pÄ adaptiv generering av en packare baserat pÄ den överlÀmnade databeskrivningen. Som ett resultat skapas kod för komprimering som Àr optimerad för det specifika dataformatet. För dekomprimering anvÀnds en universell dekompressor som Àr kompatibel med alla genererade packare.
Packning och dekomprimering sker med hjĂ€lp av ett enda verktyg "zli" eller biblioteket libopenzl. Datastrukturen beskrivs i form av profiler. Det finns en uppsĂ€ttning fördefinierade profiler som beskriver typiska lagringsformat, till exempel en profil för CSV-formatet eller data som lagras i form av en array med 64-bitars heltal. Komprimeringen innebĂ€r att man vĂ€ljer en profil med kommandot "zli list-profiles" och startar packningsprocessen med kommandot "zli compress âprofile profilnamn". För dekomprimering rĂ€cker det med att köra "zli decompress".
För specifika format mĂ„ste en egen profil skapas med kommandot âzli trainâ, som identifierar mönster i data och skapar en profil med optimal kompressionsnivĂ„. Genom att anvĂ€nda alternativet ââpareto-frontierâ kan den skapade profilen moderniseras för att öka hastigheten pĂ„ packning eller uppackning, pĂ„ bekostnad av att kompressionsnivĂ„n sĂ€nks. För att beskriva komplexa format med inbĂ€ddade strukturer och faststĂ€lla layouten för dataformat i strukturer kan sprĂ„ket SDDL (Simple Data Description Language) tillĂ€mpas.
Metoden för att skapa optimala packare baseras pÄ anvÀndningen av en uppsÀttning primitiva kodare, dÀr var och en Àr mest effektiv för specifika typer och sekvenser av data. För kompression skapas en riktad acyklisk graf av databehandling, dÀr noderna Àr codec och kanterna representerar datavarianter i det bearbetade formatet. Beroende pÄ vilken datatyp som matas in, vÀljs en kedja av codec som optimalt komprimerar den mottagna datapart.

KĂ€lla: opennet.ru
