Meta* huet OpenZL agefouert, en Toolkit fir Datenkompressioun an -dekompressioun, deen méi héich Kompressiounsraten a Geschwindegkeet bitt wéi d'Zstd- an XZ-Formater. OpenZL ass fir d'effizient Kompressioun vu strukturéierte Datensätz entwéckelt, wéi déi, déi am maschinelle Léieren benotzt ginn, souwéi Datenspeicher, déi Felder mat verschiddenen widderhuelenden Aarte vun Informatioun enthalen. OpenZL ass a C/C++ geschriwwen an ass Open-Source ënner der BSD-Lizenz.
Beim Kompriméiere vun enger Datebank mat dem astronomesche Stärekatalog vun der SAO huet OpenZL d'Dategréisst ëm de Faktor 2.06 reduzéiert, während den zstd-Algorithmus d'Donnéeën ëm de Faktor 1.31 an XZ ëm de Faktor 1.64 kompriméiert huet. Ausserdeem huet OpenZL zstd a punkto Kompressiounsgeschwindegkeet ëm de Faktor 2 (203 MB/s géint 115 MB/s) an XZ ëm de Faktor 65 (203 MB/s géint 3.1 MB/s) iwwertroffen. D'Dekompressioun an OpenZL war liicht méi lues wéi zstd (822 MB/s géint 890 MB/s) a 27-mol méi séier wéi XZ.

OpenZL ass keen allgemengen Algorithmus a weist nëmme gutt Resultater fir Daten mat enger bekannter Struktur. D'Operatioun vun OpenZL besteet doran, adaptiv e Packer op Basis vun der geliwwerter Datenbeschreiwung ze generéieren. Dëst generéiert Kompressiounscode, deen fir e spezifescht Datenformat optimiséiert ass. Fir d'Dekompressioun gëtt en universellen Unpacker benotzt, deen mat all generéierte Packer kompatibel ass.
D'Packung an d'Auspackung ginn iwwer een eenzegt Utility, "zli", oder d'libopenzl Bibliothéik, duerchgefouert. D'Datestruktur gëtt a Form vu Profiler beschriwwen. Dëst enthält eng Rei vu virdefinéierte Profiler, déi typesch Späicherformater beschreiwen. Zum Beispill e Profil fir de CSV-Format oder Daten, déi als 64-Bit-Array gespäichert sinn. D'Kompressioun ass sou einfach wéi e Profil mam Kommando "zli list-profiles" auszewielen an de Kompressiounsprozess mam Kommando "zli compress --profile profile_name" ze starten. Fir auszepacken, gitt einfach "zli decompress" aus.
Fir spezifesch Formater muss e personaliséierte Profil mat dem Kommando "zli train" erstallt ginn, deen Muster an den Daten identifizéiert an e Profil mat engem optimale Kompressiounsniveau generéiert. Mat der Optioun "--pareto-frontier" kann de erstallte Profil optimiséiert ginn, fir d'Kompressioun oder Dekompressioun ze beschleunegen, op Käschte vun der Kompressioun. Simple Data Description Language (SDDL) kann benotzt ginn, fir komplex Formater mat verschachtelten Strukturen ze beschreiwen an d'Layout vun Datenformater bannent Strukturen ze definéieren.
D'Method fir optimal Packer ze kreéieren baséiert op engem Set vu primitive Encoderen, déi all am effektivsten fir spezifesch Datentypen a Sequenzen sinn. Fir d'Kompressioun gëtt e geriichteten azyklischen Datenveraarbechtungsgraf geformt, mat Codecs als Knuet an Datenvarianten am veraarbechte Format als Kanten. Ofhängeg vum Input-Datentyp gëtt eng Kette vu Codecs ausgewielt, déi den akommenden Datenelement optimal kompriméiert. Mat dëser Anordnung gëtt den Dateiheader mat engem Codec kompriméiert, d'Integer-Datenfeld mat engem zweete Codec, dat inkrementéierend Zählerfeld mat engem drëtte Codec an d'String-Datenfeld mat engem véierte Codec.

Source: opennet.ru
