OpenZL tihendussüsteem, mis ületab Zstd ja XZ kiiruselt ja tihendustasemelt struktureeritud andmete puhul

Meta* ettevõte tutvustas OpenZL tihendamise ja dekompressimise tööriistu, mis demonstreerivad Zstd ja XZ formaatidega võrreldes kõrgemat tihendustaset ja kiiruset. OpenZL on loodud tõhusaks struktureeritud andmekogude tihendamiseks, näiteks masinaõppe rakendustes ja ladudes, kus on mitmekesised korduvad andmetüübid. OpenZL kood on kirjutatud C/C++ ja avaldatud BSD litsentsi alusel.

SAO astronomiliste tähtede katalooge tihendades suutis OpenZL tööriist vähendada andmekomplekti suurust 2,06 korda, samas kui zstd tihendas andmed 1,31 korda ja XZ 1,64 korda. Kiiruselt ületas OpenZL zstd kahe korra võrra (203 MB/s võrreldes 115 MB/s) ning XZ 65 korda (203 MB/s võrreldes 3,1 MB/s). OpenZL dekompressioon oli zstd-st veidi aeglasem (822 MB/s võrreldes 890 MB/s) ja 27 korda kiirem kui XZ.

OpenZL tihendussüsteem, mis ületab Zstd ja XZ kiiruselt ja tihendustasemelt struktureeritud andmete puhul

OpenZL ei ole üldotstarbeline algoritm ja näitab häid tulemusi ainult eelnevalt tuntud struktuuriga andmete puhul. OpenZL töö seisneb kohandavas pakendaja genereerimises edastatud andmete kirjelduse põhjal. Selle tulemusena luuakse andmete tihendamiseks kood, mis on optimeeritud konkreetse andmeformaadi jaoks. Ühendav utiliit, mis on ühilduv kõigi genereeritud pakendajatega, kasutatakse andmete lahtipakimiseks.

Pakkimine ja lahtipakimine toimub ühe utiliidi „zli” või raamatukogu libopenzl abil. Andmestruktuur kirjeldatakse profiilide kujul. Komplekti kuulub juba ette määratud profiilide kogum, mis kirjeldab tüüpilisi salvestusformaatide mudeleid. Näiteks profiil CSV formaadi või andmete jaoks, mis on salvestatud 64-bitiste arvude massiivina. Tihendamine toimub profiili valimisega käsu „zli list-profiles” abil ning pakkimisprotsessi käivitamisega käsuga „zli compress —profile profiili_nimi”. Lahtipakimiseks piisab käsu „zli decompress” käivitamisest.

Spetsiifiliste formaatide jaoks tuleb luua oma profiil, kasutades käsku «zli train», mis tuvastab andmetes mustrid ja moodustab profiili optimaalse kokkusurumise tasemega. Kasutades valikut «—pareto-frontier», saab loodud profiili täiendada pakendamise või lahtipakkimise kiirus suunas, ohverdades kokkusurumise taseme. Kompleksete formaatide kirjeldamiseks, mis sisaldavad sisemisi struktuure ja andmeformaadi paigutuse määratlemiseks struktuurides, võib kasutada SDDL (Simple Data Description Language) keelt.

Optimaalne pakkemismeetod põhineb primitiivsete kodeerijate komplekti kasutamisel, millest igaühel on kõige tõhusam teatud tüüpi ja järjestuste andmete puhul. Andmete tihendamiseks luuakse suunatud aktsükliline töötlusgraaf, mille sõlmedeks on kodeerijad ja servad — andmete variandid töödeldavas formaadis. Sõltuvalt siseneva andmetüübi tüübist valitakse kodeerijate ahel, mis tõhusalt tihendab sisestatud andmeelementi. Selle korralduse kohaselt tihendatakse faili päis ühe kodeerijaga, täisarvulised andmed teisega, suurenev loenduri väljund kolmandaga ning stringilised andmed neljandaga.

OpenZL tihendussüsteem, mis ületab Zstd ja XZ kiiruselt ja tihendustasemelt struktureeritud andmete puhul


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster