Eksperimentirajte koristeći SQLite kao kontejner za arhiviranje datoteka

Projekt Pack je pokušao kreirati format arhiviranja datoteka baziran na SQLite biblioteci i ZSTD (Zstandard) algoritmu kompresije. Pripremljeni prototip, napisan na Pascalu i distribuiran pod licencom Apache 2.0, nadmašio je najčešće arhivatore u brzini kreiranja arhiva, uprkos činjenici da je njegov rad bio ograničen na čitanje podataka, njihovo kompresovanje bibliotekom libzstd i izvođenje SQL operacija za dodati komprimirane podatke u datoteku s bazom podataka SQLite.

Prilikom komprimiranja direktorija sa 81 tisuću datoteka ukupne veličine 1.25 GB, pack je bio 112 puta brži od ZIP uslužnog programa, završavajući operaciju za 1.3 sekunde u odnosu na 146 sekundi za ZIP. Veličina arhive za paket je bila 23% manja (194 MB za paket i 253 MB za ZIP). Poređenja radi, tar uslužni program je završio pakovanje za 4.7 sekundi bez kompresije i za 28.5 sekundi sa gzip kompresijom, RAR arhiver je završio test za 27.5 sekundi, a 7z za 54.2 sekunde. Veličine arhive su bile: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Napominje se da je po brzini raspakivanja i nasumičnom pristupu datotekama Pack također ispred ostalih arhivatora, dok troši manje RAM-a. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s brži ZIP 2.7 puta tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MBx4.7 MB SX 31

Ne spominje se uticaj keša datoteka na rezultate testa. Vjerovatno je mala brzina ZIP-a posljedica redoslijeda pokretanja testova bez obzira na keširanje podataka u memoriji - test sa zip-om je pokrenut sa hladnom keš memorijom, a ostali testovi sa toplim kešom. U normalnim uslovima, Zstandard pokazuje 3-5 puta veće brzine kompresije od zlib-a i 10 puta bržu dekompresiju, sa 15-XNUMX% višim nivoima kompresije.

Dodatak: Slična ideja pohranjivanja komprimiranih datoteka u obliku blobova u SQLite bazi podataka implementirana je 2014. godine u sqlar arhivatoru, koji su kreirali SQLite programeri kao eksperiment za procjenu efikasnosti pohranjivanja blobova u SQLite. sqlar koristi zlib za kompresiju i veličina datoteke je oko 2% veća od ZIP uslužnog programa.

izvor: opennet.ru

Dodajte komentar