Experimenteer met het gebruik van SQLite als container voor het archiveren van bestanden

Het Pack-project probeerde een bestandsarchiveringsformaat te creëren op basis van de SQLite-bibliotheek en het ZSTD (Zstandard) compressie-algoritme. Het voorbereide prototype, geschreven in Pascal en gedistribueerd onder de Apache 2.0-licentie, presteerde beter dan de meest gebruikelijke archiveringsprogramma's wat betreft de snelheid van het creëren van archieven, ondanks het feit dat het werk beperkt was tot het lezen van gegevens, het comprimeren ervan met de libzstd-bibliotheek en het uitvoeren van SQL-bewerkingen om gecomprimeerde gegevens toevoegen aan een bestand met een database SQLite.

Bij het comprimeren van een map met 81 bestanden met een totale grootte van 1.25 GB was het pakket 112 keer sneller dan het ZIP-hulpprogramma, waardoor de bewerking in 1.3 seconden werd voltooid, tegenover 146 seconden voor ZIP. De archiefgrootte voor pack was 23% kleiner (194 MB voor Pack en 253 MB voor ZIP). Ter vergelijking: het tar-hulpprogramma voltooide de verpakking in 4.7 seconden zonder compressie en in 28.5 seconden met gzip-compressie, de RAR-archiver voltooide de test in 27.5 seconden en 7z in 54.2 seconden. De archiefgroottes waren: tar.gz - 214 MB, RAR - 235 MB, 7z - 135 MB. Opgemerkt wordt dat Pack qua uitpaksnelheid en willekeurige toegang tot bestanden ook een voorsprong heeft op andere archiveringsprogramma's, terwijl het minder RAM verbruikt. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s sneller ZIP 2.7 keer tar.gz: 214 MB, 28.5 sx 5.1 RAR: 235 MB, 27.5 sx 5.3 tar: 1345 MB, 4.7 sx 31 Pack: 194 MB, 1.3 SX 112

Er wordt geen melding gemaakt van het effect van de bestandscache op de testresultaten. Waarschijnlijk is de lage snelheid van ZIP te wijten aan de volgorde waarin de tests zijn gestart, ongeacht de datacaching in het geheugen: de test met zip is gestart met een koude cache en de rest van de tests met een warme cache. Onder normale omstandigheden vertoont Zstandard 3-5 keer hogere compressiesnelheden dan zlib en 10 keer snellere decompressie, met 15-XNUMX% hogere compressieniveaus.

Toevoeging: Een soortgelijk idee van het opslaan van gecomprimeerde bestanden in de vorm van blobs in een SQLite-database werd in 2014 geïmplementeerd in de sqlar archiver, gemaakt door de SQLite-ontwikkelaars als een experiment om de efficiëntie van het opslaan van blobs in SQLite te evalueren. sqlar gebruikt zlib voor compressie en de bestandsgrootte is ongeveer 2% groter dan die van het ZIP-hulpprogramma.

Bron: opennet.ru

Voeg een reactie