Sistemi i kompresionit OpenZL, që tejkalon Zstd dhe XZ në shpejtësi dhe nivel kompresimi të të dhënave të strukturuara

Kompania Meta* prezantoi një mjet për kompresimin dhe shpërbërjen e të dhënave OpenZL, i cili, në krahasim me formatet Zstd dhe XZ, tregon një nivel më të lartë kompresimi dhe shpejtësie. OpenZL është zhvilluar për kompresimin efektiv të grupeve të dhënash të strukturuara, për shembull, që përdoren në mësimin makinë, si dhe për magazinat që përmbajnë fusha me lloje informacionesh që përsëriten. Kodi OpenZL është shkruar në C/C++ dhe është i hapur nën licencën BSD.

Kur u kompresua një DB me katalogun astronomik të yjeve SAO, mjeti OpenZL arriti të reduktonte madhësinë e të dhënave me 2.06 herë, ndërsa algoritemi zstd kompresoi informacionin me 1.31 herë, dhe XZ me 1.64 herë. Në të njëjtën kohë, për shpejtësinë e kompresimit, OpenZL tejkaloi zstd me dy herë (203 MB/s kundrejt 115 MB/s), dhe XZ me 65 herë (203 MB/s kundrejt 3.1 MB/s). Shpërbërja në OpenZL doli të ishte pak më e ngadalshme se zstd (822 MB/s kundrejt 890 MB/s) dhe 27 herë më e shpejtë se XZ.

Sistemi i kompresionit OpenZL, që tejkalon Zstd dhe XZ në shpejtësi dhe nivel kompresimi të të dhënave të strukturuara

OpenZL nuk është një algoritem i përgjithshëm dhe tregon rezultate të mira vetëm për të dhënat me strukturë të njohur paraprakisht. Funksionimi i OpenZL përfshin gjenerimin adaptiv të paketuesit bazuar në përshkrimin e dhënave që është dhënë. Si rezultat, formohet kodi për kompresim, i optimizuar për formatin specifik të të dhënave. Për shpërbërje përdoret një shpërbërës universali, i pajtueshëm me të gjithë paketuesit e gjeneruar.

Paketimi dhe shpërbërja realizohet me ndihmën e një utilitari "zli" ose bibliotekës libopenzl. Struktura e të dhënave përshkruhet në formë profilesh. Një grup i perfilave të paracaktuar tashmë përfshihet, të cilët përshkruajnë formatet tipike të ruajtjes. Për shembull, një profil për formatin CSV ose të dhënat që ruhen në formën e një vargu të numrave 64-bit. Kompresimi përfshin zgjedhjen e profilit me komandën "zli list-profiles" dhe nisjen e procesit të paketimit me komandën "zli compress —profile emri_profilit". Për shpërbërje, mjafton të nisni "zli decompress".

Për formate specifike, kërkohet të krijohet një profil i veçantë duke përdorur komandën „zli train“, e cila identifikon modelet në të dhëna dhe formon një profil me nivelin optimal të kompresimit. Duke përdorur opsionin „—pareto-frontier“, profili i krijuar mund të modernizohet për të përshpejtuar paketimin ose shpërndarjen, me kushtin e uljes së nivelit të kompresimit. Për të përshkruar formate komplekse me struktura të ndërthurura dhe për të përcaktuar shpërndarjen e formateve të të dhënave në struktura, mund të përdoret gjuha SDDL (Simple Data Description Language).

Metoda e krijimit të paketuesve optimalë bazohet në përdorimin e një seti koduesish primitivë, secili prej të cilëve është më efektiv për lloje dhe sekuenca të veçanta të të dhënave. Për kompresionin, krijohet një graf i orientuar aciklik i përpunimit të të dhënave, ku nodet janë kodekët dhe brinjët janë variantet e të dhënave në formatin e përpunuar. Në varësi të llojit të të dhënave në hyrje, zgjidhet një zinxhir kodekësh që kompreson optimalisht elementin e të dhënave që është marrë. Me këtë organizim, titulli i skedarit kompresohet nga një kodek, fusha me të dhëna të numrave të plotë nga një e dytë, fusha me një numërator në rritje nga një e tretë, dhe fusha me të dhëna tekstuale nga një e katërt.

Sistemi i kompresionit OpenZL, që tejkalon Zstd dhe XZ në shpejtësi dhe nivel kompresimi të të dhënave të strukturuara


Burimi: opennet.ru
Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster