Eksperiment s korištenjem SQLite-a kao spremnika za arhiviranje datoteka

Projekt Pack pokušao je stvoriti format za arhiviranje datoteka temeljen na SQLite biblioteci i ZSTD (Zstandard) algoritmu kompresije. Pripremljeni prototip, napisan na Pascal jeziku i distribuiran pod Apache 2.0 licencom, nadmašio je brzinu arhiviranja najčešćih arhivatora, pri čemu je njegov rad bio usmjeren na čitanje podataka, kompresiju uz pomoć libzstd biblioteke i izvođenje SQL operacija za dodavanje komprimiranih podataka u SQLite datoteku.

Pri kompresiji direktorija s 81 tisućom datoteka, ukupne veličine 1.25 GB, Pack je bio brži od ZIP alata 112 puta, izvršivši operaciju za 1.3 sekunde u odnosu na 146 sekundi za ZIP. Veličina arhiva kod Packa bila je 23% manja (194 MB kod Packa i 253 MB kod ZIP-a). U usporedbi, tar alat izvršio je pakiranje za 4.7 sekundi bez kompresije i za 28.5 sekundi s gzip kompresijom, arhivator RAR završio je test za 27.5 sekundi, a 7z za 54.2 sekunde. Veličine arhiva su bile: tar.gz — 214 MB, RAR — 235 MB, 7z — 135 MB. Primjećuje se da Pack također nadmašuje druge arhivatore po brzini dekompresije i slučajnom pristupu datotekama, trošeći pritom manje radne memorije. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s brži od ZIP-a 2.7 puta tar.gz: 214 MB, 28.5 s x 5.1 RAR: 235 MB, 27.5 s x 5.3 tar: 1345 MB, 4.7 s x 31 Pack: 194 MB, 1.3 s x 112

O utjecaju datotečnog predmemoriranja na rezultate testiranja se ne spominje. Vjerojatno je niska brzina ZIP-a uvjetovana redoslijedom pokretanja testova bez obzira na keširanje podataka u memoriji — test s zipom pokrenut je s hladnim kešom, dok su ostali testovi pokrenuti s zagrijanim. U uobičajenim uvjetima Zstandard pokazuje 3-5 puta veću brzinu kompresije u usporedbi s zlib-om i dvostruko bržu dekompresiju, uz razinu kompresije veću za 10-15%.

Dodatak: Slična ideja o pohrani komprimiranih datoteka u obliku blobova u SQLite bazi podataka realizirana je 2014. godine u arhivatoru sqlar, kojeg su razvili programeri SQLite kao eksperiment za procjenu učinkovitosti pohrane blobova u SQLite-u. U sqlar-u se za kompresiju koristi zlib, a veličina datoteka je približno 2% veća nego kod ZIP alata.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster