Experiment mit der Verwendung von SQLite als Container fĂŒr die Archivierung von Dateien

Das Pack-Projekt unternahm den Versuch, ein Format zur Archivierung von Dateien zu schaffen, das auf der SQLite-Bibliothek und dem ZSTD (Zstandard)-Kompressionsalgorithmus basiert. Der vorbereitete Prototyp, geschrieben in Pascal und unter der Lizenz Apache 2.0 verbreitet, ĂŒbertraf in der Geschwindigkeit der Archivierung die gĂ€ngigsten Archive mit der Arbeit, die sich auf das Lesen von Daten, das Komprimieren mit der libzstd-Bibliothek und die AusfĂŒhrung von SQL-Operationen zur HinzufĂŒgung komprimierter Daten in eine Datei mit einer SQLite-Datenbank beschrĂ€nkte.

Beim Komprimieren eines Verzeichnisses mit 81.000 Dateien und einer GesamtgrĂ¶ĂŸe von 1,25 GB war Pack 112-mal schneller als das ZIP-Tool, indem es den Vorgang in 1,3 Sekunden im Vergleich zu 146 Sekunden bei ZIP ausfĂŒhrte. Dabei war die ArchivgrĂ¶ĂŸe bei Pack um 23 % geringer (194 MB bei Pack und 253 MB bei ZIP). Zum Vergleich fĂŒhrte das tar-Tool die Verpackung in 4,7 Sekunden ohne Komprimierung und in 28,5 Sekunden mit gzip-Komprimierung durch, der Archivator RAR bewĂ€ltigte den Test in 27,5 Sekunden und 7z in 54,2 Sekunden. Die ArchivgrĂ¶ĂŸen betrugen: tar.gz — 214 MB, RAR — 235 MB, 7z — 135 MB. Es wird festgestellt, dass Pack auch in Bezug auf die Entpackgeschwindigkeit und den zufĂ€lligen Zugriff auf Dateien andere Archivatoren ĂŒbertrifft und dabei weniger Arbeitsspeicher verbraucht. ZIP: 253 MB, 146 s 7z: 135 MB, 54,2 s 2,7-mal schneller als ZIP 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

Zur Auswirkung des Dateicaches auf die Testergebnisse wird nicht erwĂ€hnt. Wahrscheinlich ist die niedrige Geschwindigkeit von ZIP auf die Reihenfolge der TestausfĂŒhrungen ohne BerĂŒcksichtigung der Datenkellerung im Speicher zurĂŒckzufĂŒhren – der Test mit zip wurde mit kaltem Cache durchgefĂŒhrt, wĂ€hrend die anderen Tests mit warmem Cache durchgefĂŒhrt wurden. Unter normalen Bedingungen zeigt Zstandard eine 3- bis 5-mal höhere Komprimierungsgeschwindigkeit im Vergleich zu zlib und eine doppelt so schnelle Entpackung bei einem Komprimierungsgrad, der 10-15 % höher ist.

ErgĂ€nzung: Eine Ă€hnliche Idee zur Speicherung komprimierter Dateien in Form von Blobs in SQLite wurde 2014 im Archivator sqlar umgesetzt, der von den Entwicklern von SQLite als Experiment zur Bewertung der EffektivitĂ€t der Speicherung von Blobs in SQLite geschaffen wurde. In sqlar wird zur Komprimierung zlib verwendet, und die DateigrĂ¶ĂŸen sind etwa 2 % grĂ¶ĂŸer als bei dem ZIP-Tool.

Quelle: opennet.ru

60GB SSD 8Gb DDR4