Meta* parantos ngenalkeun OpenZL, alat komprési data sareng dekompresi anu nawiskeun tingkat komprési sareng laju anu langkung luhur tibatan format Zstd sareng XZ. OpenZL dirancang pikeun komprési épisién tina susunan data terstruktur, sapertos anu dianggo dina pembelajaran mesin, kitu ogé toko data anu ngandung widang kalayan sababaraha jinis inpormasi anu diulang. OpenZL ditulis dina C/C++ sarta open-sourced handapeun lisénsi BSD.
Nalika ngompres database anu ngandung katalog bintang astronomi SAO, OpenZL ngirangan ukuran data ku faktor 2.06, sedengkeun algoritma zstd ngkomprés data ku faktor 1.31, sareng XZ ku faktor 1.64. Leuwih ti éta, OpenZL outperformed zstd dina laju komprési ku faktor 2 (203 MB / s versus 115 MB / s), sarta XZ ku faktor 65 (203 MB / s versus 3.1 MB / s). Decompression di OpenZL rada laun ti zstd (822 MB/s versus 890 MB/s) jeung 27 kali leuwih gancang ti XZ.

OpenZL sanes algoritma tujuan umum sareng ngan ukur nunjukkeun hasil anu saé pikeun data anu gaduh struktur anu dipikanyaho. Operasi OpenZL diwangun ku adaptively generating a packer dumasar kana pedaran data disadiakeun. Ieu ngahasilkeun kode komprési dioptimalkeun pikeun format data husus. A unpacker universal, cocog sareng sadaya packers dihasilkeun, dipaké pikeun decompression.
Bungkusan sareng ngabongkar bungkusan dilaksanakeun nganggo utilitas tunggal, "zli," atanapi perpustakaan libopenzl. Struktur data digambarkeun dina wangun propil. Ieu kalebet sakumpulan profil anu tos siap dijelaskeun pikeun ngajéntrékeun format panyimpenan anu biasa. Contona, profil pikeun format CSV atawa data disimpen salaku Asép Sunandar Sunarya 64-bit. Komprési saderhana sapertos milih profil nganggo paréntah "zli list-profiles" sareng ngamimitian prosés komprési kalayan paréntah "zli compress --profile profile_name". Pikeun ngabongkar bungkusan, kantun ngajalankeun "zli decompress".
Pikeun format khusus, profil khusus kedah didamel nganggo paréntah "zli train", anu ngaidentipikasi pola dina data sareng ngahasilkeun profil kalayan tingkat komprési anu optimal. Nganggo pilihan "--pareto-frontier", profil anu diciptakeun tiasa dioptimalkeun pikeun nyepetkeun komprési atanapi decompression, kalayan biaya komprési. Basa Basa Pedaran Data Basajan (SDDL) tiasa dianggo pikeun ngajelaskeun format kompleks sareng struktur nested sareng netepkeun tata perenah format data dina struktur.
Metodeu pikeun nyieun packers optimal dumasar kana sakumpulan encoders primitif, nu masing-masing paling mujarab pikeun tipe data husus sarta runtuyan. Pikeun komprési, grafik ngolah data asiklik diarahkeun, kalayan codec salaku titik sareng varian data dina format anu diolah salaku ujung. Gumantung kana tipe data input, hiji ranté codecs dipilih nu optimal compresses unsur data asup. Kalawan susunan ieu, lulugu file dikomprés maké hiji codec, widang data integer maké codec kadua, incrementing widang counter maké codec katilu, sarta widang data string maké codec kaopat.

sumber: opennet.ru
