Meta* ka prezantuar OpenZL, një set mjetesh për kompresim dhe dekompresim të të dhënave që ofron shkallë dhe shpejtësi më të lartë kompresimi sesa formatet Zstd dhe XZ. OpenZL është projektuar për kompresim efikas të grupeve të të dhënave të strukturuara, të tilla si ato të përdorura në të mësuarit automatik, si dhe të depove të të dhënave që përmbajnë fusha me lloje të ndryshme informacioni që përsëriten. OpenZL është shkruar në C/C++ dhe është me burim të hapur sipas licencës BSD.
Gjatë kompresimit të një baze të dhënash që përmbante katalogun astronomik të yjeve SAO, OpenZL e uli madhësinë e të dhënave me një faktor prej 2.06, ndërsa algoritmi zstd i kompresoi të dhënat me një faktor prej 1.31, dhe XZ me një faktor prej 1.64. Për më tepër, OpenZL e tejkaloi zstd në shpejtësinë e kompresimit me një faktor prej 2 (203 MB/s kundrejt 115 MB/s), dhe XZ me një faktor prej 65 (203 MB/s kundrejt 3.1 MB/s). Dekompresimi në OpenZL ishte pak më i ngadaltë se zstd (822 MB/s kundrejt 890 MB/s) dhe 27 herë më i shpejtë se XZ.

OpenZL nuk është një algoritëm me qëllim të përgjithshëm dhe tregon rezultate të mira vetëm për të dhënat me një strukturë të njohur. Funksionimi i OpenZL konsiston në gjenerimin adaptiv të një paketuesi bazuar në përshkrimin e të dhënave të dhëna. Kjo gjeneron kod kompresimi të optimizuar për një format specifik të të dhënave. Një paketues universal, i pajtueshëm me të gjithë paketuesit e gjeneruar, përdoret për dekompresim.
Paketimi dhe çpaketimi kryhen duke përdorur një program të vetëm, "zli", ose bibliotekën libopenzl. Struktura e të dhënave përshkruhet në formën e profileve. Kjo përfshin një grup profilesh të paracaktuara që përshkruajnë formatet tipike të ruajtjes. Për shembull, një profil për formatin CSV ose të dhëna të ruajtura si një varg 64-bitësh. Kompresimi është aq i thjeshtë sa zgjedhja e një profili me komandën "zli list-profiles" dhe fillimi i procesit të kompresimit me komandën "zli compress --profile profile_name". Për ta çpaketuar, thjesht ekzekutoni "zli decompress".
Për formate specifike, duhet të krijohet një profil i personalizuar duke përdorur komandën "zli train", e cila identifikon modelet në të dhëna dhe gjeneron një profil me një nivel optimal kompresimi. Duke përdorur opsionin "--pareto-frontier", profili i krijuar mund të optimizohet për të përshpejtuar kompresimin ose dekompresimin, në kurriz të kompresimit. Gjuha e Thjeshtë e Përshkrimit të të Dhënave (SDDL) mund të përdoret për të përshkruar formate komplekse me struktura të ndërthurura dhe për të përcaktuar paraqitjen e formateve të të dhënave brenda strukturave.
Metoda për krijimin e paketuesve optimalë bazohet në një grup enkoderësh primitivë, secili prej të cilëve është më efektiv për lloje dhe sekuenca specifike të të dhënave. Për kompresim, formohet një grafik i përpunimit të të dhënave aciklike të drejtuara, me kodekë si nyje dhe variante të të dhënave në formatin e përpunuar si skaje. Në varësi të llojit të të dhënave hyrëse, zgjidhet një zinxhir kodekësh që kompreson në mënyrë optimale elementin e të dhënave hyrëse. Me këtë rregullim, koka e skedarit kompresohet duke përdorur një kodek, fusha e të dhënave të numrave të plotë duke përdorur një kodek të dytë, fusha e numëruesit në rritje duke përdorur një kodek të tretë dhe fusha e të dhënave të vargut duke përdorur një kodek të katërt.

Burimi: opennet.ru
