OpenZL tömörítőrendszer, amely a strukturált adatok sebessége és tömörítési szintje tekintetében felülmúlja a Zstd-t és az XZ-t

A Meta* bemutatta az OpenZL-t, egy adattömörítő és -kicsomagoló eszközkészletet, amely nagyobb tömörítési sebességet és sebességet kínál, mint a Zstd és az XZ formátumok. Az OpenZL-t strukturált adathalmazok, például a gépi tanulásban használt adathalmazok, valamint a különféle ismétlődő információtípusokat tartalmazó mezőket tartalmazó adattárak hatékony tömörítésére tervezték. Az OpenZL C/C++ nyelven íródott, és BSD licenc alatt nyílt forráskódú.

Egy, az SAO csillagászati ​​csillagkatalógusát tartalmazó adatbázis tömörítésekor az OpenZL 2.06-szorosára csökkentette az adatméretet, míg a zstd algoritmus 1.31-szeresére, az XZ pedig 1.64-szeresére tömörítette az adatokat. Ezenkívül az OpenZL tömörítési sebességben kétszeresére (203 MB/s vs. 115 MB/s), az XZ-hez pedig 65-szörösére (203 MB/s vs. 3.1 MB/s) felülmúlta a zstd-t. Az OpenZL-ben a kicsomagolás valamivel lassabb volt, mint a zstd-ben (822 MB/s vs. 890 MB/s), és 27-szer gyorsabb, mint az XZ-ben.

 OpenZL tömörítőrendszer, amely a strukturált adatok sebessége és tömörítési szintje tekintetében felülmúlja a Zstd-t és az XZ-t

Az OpenZL nem egy általános célú algoritmus, és csak ismert szerkezetű adatok esetén mutat jó eredményeket. Az OpenZL működése abból áll, hogy adaptívan generál egy csomagolót a megadott adatleírás alapján. Ez egy adott adatformátumra optimalizált tömörítési kódot generál. A kicsomagoláshoz egy univerzális kicsomagoló kerül felhasználásra, amely kompatibilis az összes generált csomagolóval.

A be- és kicsomagolás egyetlen segédprogrammal, a "zli"-vel vagy a libopenzl könyvtárral végezhető. Az adatszerkezet profilok formájában van leírva. Ez magában foglal egy előre definiált profilkészletet, amely a tipikus tárolási formátumokat írja le. Például egy profil a CSV formátumhoz vagy a 64 bites tömbként tárolt adatokhoz. A tömörítés olyan egyszerű, mint egy profil kiválasztása a "zli list-profiles" paranccsal, és a tömörítési folyamat elindítása a "zli compress --profile profile_name" paranccsal. A kicsomagoláshoz egyszerűen futtassa a "zli decompress" parancsot.

Bizonyos formátumokhoz egyéni profilt kell létrehozni a "zli train" parancs használatával, amely azonosítja az adatok mintázatait, és optimális tömörítési szintű profilt generál. A "--pareto-frontier" opció használatával a létrehozott profil optimalizálható a tömörítés vagy kicsomagolás felgyorsítása érdekében, a tömörítés rovására. Az egyszerű adatleíró nyelv (SDDL) használható beágyazott struktúrákkal rendelkező összetett formátumok leírására, valamint az adatformátumok elrendezésének meghatározására a struktúrákon belül.

Az optimális csomagolók létrehozásának módszere primitív kódolók halmazán alapul, amelyek mindegyike a leghatékonyabb adott adattípusokhoz és szekvenciákhoz. A tömörítéshez egy irányított, aciklikus adatfeldolgozó gráfot hoznak létre, amelynek csomópontjai a kodekek, élei pedig a feldolgozott formátumú adatváltozatok. A bemeneti adattípustól függően egy kodekláncot választanak ki, amely optimálisan tömöríti a bejövő adatelemet. Ezzel az elrendezéssel a fájlfejlécet egy kodekkel, az egész adatmezőt egy második kodekkel, a növekvő számlálómezőt egy harmadik kodekkel, a karakterlánc adatmezőt pedig egy negyedik kodekkel tömörítik.

 OpenZL tömörítőrendszer, amely a strukturált adatok sebessége és tömörítési szintje tekintetében felülmúlja a Zstd-t és az XZ-t


Forrás: opennet.ru

Hozzászólás