Strukturaviy ma'lumotlarning tezligi va siqilish darajasi bo'yicha Zstd va XZ dan ustun bo'lgan OpenZL siqish tizimi

Meta* Zstd va XZ formatlariga qaraganda yuqoriroq siqish tezligi va tezligini taʼminlovchi OpenZL, maʼlumotlarni siqish va dekompressiya vositalari toʻplamini taqdim etdi. OpenZL tizimli ma'lumotlar to'plamlarini, masalan, mashinani o'rganishda ishlatiladigan ma'lumotlar to'plamini, shuningdek, turli xil takrorlanadigan ma'lumotlarga ega maydonlarni o'z ichiga olgan ma'lumotlar omborlarini samarali siqish uchun mo'ljallangan. OpenZL C/C++ tilida yozilgan va BSD litsenziyasi ostida ochiq manba hisoblanadi.

SAO astronomik yulduzlar katalogini o'z ichiga olgan ma'lumotlar bazasini siqishda OpenZL ma'lumotlar hajmini 2.06 marta qisqartirdi, zstd algoritmi esa ma'lumotlarni 1.31, XZ esa 1.64 marta siqdi. Bundan tashqari, OpenZL siqish tezligi bo'yicha zstd dan 2 marta (115 MB/s ga nisbatan 203 MB/s) va XZ dan 65 baravarga (203 MB/s ga nisbatan 3.1 MB/s) dan oshib ketdi. OpenZL-da dekompressiya zstd dan biroz sekinroq (890 MB/s ga nisbatan 822 MB/s) va XZ-dan 27 marta tezroq edi.

 Strukturaviy ma'lumotlarning tezligi va siqilish darajasi bo'yicha Zstd va XZ dan ustun bo'lgan OpenZL siqish tizimi

OpenZL umumiy maqsadli algoritm emas va faqat ma'lum tuzilishga ega ma'lumotlar uchun yaxshi natijalarni ko'rsatadi. OpenZL ning ishlashi taqdim etilgan ma'lumotlar tavsifi asosida moslashtirilgan tarzda paketerni yaratishdan iborat. Bu ma'lum bir ma'lumot formati uchun optimallashtirilgan siqish kodini yaratadi. Dekompressiya uchun barcha yaratilgan qadoqlash moslamalari bilan mos keladigan universal unpacker ishlatiladi.

Qadoqlash va ochish bitta yordamchi dastur, "zli" yoki libopenzl kutubxonasi yordamida amalga oshiriladi. Ma'lumotlar strukturasi profillar shaklida tasvirlangan. Bu odatiy saqlash formatlarini tavsiflovchi oldindan belgilangan profillar to'plamini o'z ichiga oladi. Masalan, CSV formati uchun profil yoki 64 bitli massiv sifatida saqlangan ma'lumotlar. Siqish "zli list-profiles" buyrug'i bilan profilni tanlash va "zli compress --profile profile_name" buyrug'i bilan siqish jarayonini boshlash kabi oddiy. Paketni ochish uchun "zli decompress" ni ishga tushiring.

Muayyan formatlar uchun "zli train" buyrug'i yordamida maxsus profil yaratilishi kerak, bu ma'lumotlardagi naqshlarni aniqlaydi va optimal siqish darajasiga ega profilni yaratadi. "--pareto-chegara" opsiyasidan foydalanib, yaratilgan profil siqilish hisobiga siqishni yoki dekompressiyani tezlashtirish uchun optimallashtirilishi mumkin. Oddiy ma'lumotlarni tavsiflash tili (SDDL) ichki o'rnatilgan tuzilmalar bilan murakkab formatlarni tavsiflash va tuzilmalar ichidagi ma'lumotlar formatlarining tartibini aniqlash uchun ishlatilishi mumkin.

Optimal pakerlarni yaratish usuli ibtidoiy enkoderlar to'plamiga asoslanadi, ularning har biri ma'lum ma'lumotlar turlari va ketma-ketliklari uchun eng samarali hisoblanadi. Siqish uchun kodeklar tugunlar va ishlov berilgan formatdagi ma'lumotlar variantlari qirralar sifatida bo'lgan yo'naltirilgan asiklik ma'lumotlarni qayta ishlash grafigi shakllantiriladi. Kirish ma'lumotlari turiga qarab, kiruvchi ma'lumotlar elementini optimal tarzda siqib chiqaradigan kodeklar zanjiri tanlanadi. Ushbu tartibga solish bilan fayl sarlavhasi bitta kodek yordamida, butun son ma'lumotlar maydoni ikkinchi kodek yordamida, o'sish hisoblagich maydoni uchinchi kodek yordamida va satr ma'lumotlar maydoni to'rtinchi kodek yordamida siqiladi.

 Strukturaviy ma'lumotlarning tezligi va siqilish darajasi bo'yicha Zstd va XZ dan ustun bo'lgan OpenZL siqish tizimi


Manba: opennet.ru

a Izoh qo'shish