Expérimentez en utilisant SQLite comme conteneur pour l'archivage de fichiers

Le projet Pack a tenté de créer un format d'archivage de fichiers basé sur la bibliothèque SQLite et l'algorithme de compression ZSTD (Zstandard). Le prototype préparé, écrit en Pascal et distribué sous licence Apache 2.0, a surpassé les archiveurs les plus courants en termes de vitesse de création d'archives, malgré le fait que son travail se limitait à lire les données, à les compresser avec la bibliothèque libzstd et à effectuer des opérations SQL pour ajouter des données compressées à un fichier avec une base de données SQLite.

Lors de la compression d'un répertoire contenant 81 1.25 fichiers d'une taille totale de 112 Go, le pack était 1.3 fois plus rapide que l'utilitaire ZIP, complétant l'opération en 146 seconde contre 23 secondes pour ZIP. La taille de l'archive pour le pack était 194 % plus petite (253 Mo pour Pack et 4.7 Mo pour ZIP). À titre de comparaison, l'utilitaire tar a terminé le packaging en 28.5 secondes sans compression et en 27.5 secondes avec compression gzip, l'archiveur RAR a terminé le test en 7 secondes et 54.2z en 214 secondes. Les tailles des archives étaient : tar.gz - 235 Mo, RAR - 7 Mo, 135z - 253 Mo. Il est à noter qu'en termes de vitesse de déballage et d'accès aléatoire aux fichiers, Pack est également en avance sur les autres archiveurs, tout en consommant moins de RAM. ZIP : 146 Mo, 7 s 135z : 54.2 Mo, 2.7 s plus rapide ZIP 214 fois tar.gz : 28.5 Mo, 5.1 sx 235 RAR : 27.5 Mo, 5.3 sx 1345 tar : 4.7 31 Mo, 194 sx 1.3 Pack : 112 Mo, XNUMX SXXNUMX

Il n'y a aucune mention de l'effet du cache de fichiers sur les résultats des tests. La faible vitesse de ZIP est probablement due à l'ordre dans lequel les tests ont été lancés sans tenir compte de la mise en cache des données en mémoire - le test avec zip a été lancé avec un cache froid et le reste des tests avec un cache chaud. Dans des conditions normales, Zstandard présente des vitesses de compression 3 à 5 fois plus rapides que zlib et une décompression 10 fois plus rapide, avec des niveaux de compression 15 à XNUMX % plus élevés.

Ajout : Une idée similaire consistant à stocker des fichiers compressés sous forme de blobs dans une base de données SQLite a été mise en œuvre en 2014 dans l'archiveur SQLite, créé par les développeurs SQLite à titre expérimental pour évaluer l'efficacité du stockage des blobs dans SQLite. sqlar utilise zlib pour la compression et la taille du fichier est environ 2 % plus grande que celle de l'utilitaire ZIP.

Source: opennet.ru

Ajouter un commentaire