Experiment mit SQLite als Container zum Archivieren von Dateien

Das Pack-Projekt hat versucht, ein Format zum Archivieren von Dateien zu schaffen, das auf der SQLite-Bibliothek und dem ZSTD (Zstandard) Kompressionsalgorithmus basiert. Der vorbereitete Prototyp, der in Pascal geschrieben und unter der Apache 2.0-Lizenz verbreitet wird, übertrifft in der Geschwindigkeit der Archivierung die gängigsten Archivierungsprogramme, wobei seine Funktion darauf beschränkt war, Daten zu lesen, mit der libzstd-Bibliothek zu komprimieren und SQL-Operationen zum Hinzufügen komprimierter Daten in die SQLite-Datenbankdatei auszuführen.

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 und führte die Operation in 1,3 Sekunden aus im Vergleich zu 146 Sekunden bei ZIP. Die Archivgröße war bei Pack 23 % kleiner (194 MB bei Pack und 253 MB bei ZIP). Zum Vergleich: Das Tool tar benötigte ohne Komprimierung 4,7 Sekunden und mit gzip-Komprimierung 28,5 Sekunden, der Archivator RAR bewältigte den Test in 27,5 Sekunden, während 7z 54,2 Sekunden benötigte. Die Archivgrößen betrugen: tar.gz – 214 MB, RAR – 235 MB, 7z – 135 MB. Es wird darauf hingewiesen, dass Pack auch in Bezug auf die Entpackgeschwindigkeit und den zufälligen Zugriff auf Dateien die anderen Archivatoren übertrifft und dabei weniger Arbeitsspeicher verbraucht. ZIP: 253 MB, 146 s 7z: 135 MB, 54,2 s schneller als ZIP um das 2,7-fache 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

Es wird nicht erwähnt, wie sich die Datei-Cache auf die Testergebnisse auswirkt. Wahrscheinlich ist die niedrige ZIP-Geschwindigkeit auf die Reihenfolge der Testausführungen ohne Berücksichtigung der Daten-Caching im Speicher zurückzuführen – der Test mit ZIP wurde bei kaltem Cache gestartet, während die anderen Tests bei warmem Cache durchgeführt wurden. Unter normalen Bedingungen zeigt Zstandard eine 3- bis 5-mal höhere Kompressionsgeschwindigkeit im Vergleich zu zlib und eine doppelt so schnelle Dekompression, bei einer Kompressionsrate, die um 10-15 % höher ist.

Zusatz: Eine ähnliche Idee, komprimierte Dateien als BLOBs in einer SQLite-Datenbank zu speichern, wurde 2014 im Archivierungsprogramm sqlar umgesetzt, das von den Entwicklern von SQLite als Experiment zur Bewertung der Effizienz der Speicherung von BLOBs in SQLite erstellt wurde. In sqlar wird zlib zur Kompression verwendet, und die Dateigröße liegt etwa 2 % über der von ZIP.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster