Eksperiment med at bruge SQLite som beholder til arkivering af filer

Projekt Pack har forsøgt at skabe et format til arkivering af filer, baseret på SQLite-biblioteket og ZSTD (Zstandard) komprimeringsalgoritmen. Den forberedte prototype, skrevet i Pascal og distribueret under Apache 2.0 licensen, overgik de mest almindelige arkiveringsprogrammer i hastighed ved at læse data, komprimere med libzstd og udføre SQL-operationer til at tilføje de komprimerede data til en fil med en SQLite-database.

Ved komprimering af en mappe med 81.000 filer, i alt 1,25 GB, viste Pack sig at være 112 gange hurtigere end ZIP-værktøjet, idet operationen blev udført på 1,3 sekunder mod 146 sekunder for ZIP. Størrelsen på arkivet viste sig at være 23 % mindre (194 MB for Pack og 253 MB for ZIP). Til sammenligning udførte tar-værktøjet emballeringen på 4,7 sekunder uden komprimering og 28,5 sekunder med gzip-komprimering, RAR klarede testen på 27,5 sekunder, og 7z brugte 54,2 sekunder. Arkivstørrelserne var: tar.gz — 214 MB, RAR — 235 MB, 7z — 135 MB. Det bemærkes, at Pack også overgår andre arkiveringsprogrammer i hastigheden af udpakkning og tilfældig adgang til filer, samtidig med at det bruger mindre RAM. ZIP: 253 MB, 146 s 7z: 135 MB, 54,2 s hurtigere end ZIP med 2,7 gange 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

Der nævnes ikke noget om virkningen af filcache på testresultaterne. Sandsynligvis skyldes den lave hastighed for ZIP rækkefølgen af testene uden hensyntagen til cachelagring af data i hukommelsen — testen med ZIP blev kørt med kold cache, mens de øvrige tests blev kørt med varm cache. Under normale forhold viser Zstandard en 3-5 gange højere kompressionshastighed sammenlignet med zlib og en to gange hurtigere udpakkning, med et kompressionsniveau der er 10-15 % højere.

Tilføjelse: En lignende idé om at gemme komprimerede filer som blobs i SQLite-databasen blev implementeret i 2014 i arkiveringsprogrammet sqlar, skabt af udviklerne af SQLite som et eksperiment for at vurdere effektiviteten af at gemme blobs i SQLite. I sqlar anvendes zlib til kompression, og størrelsen på filerne er cirka 2 % større end med ZIP-programmet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster