# maxpack : Déduplication efficace pour ensembles de fichiers versionnés
La déduplication inter-fichiers de maxpack analyse l'ensemble des fichiers comme un espace de données unique, éliminant les doublons entre versions et objets. Sur 100 Mo de Node.js, la compression atteint 3,9x ; sur 10 Go, elle grimpe à 50,1x en réduisant le contenu unique à 0,6 % par mégaoctet. L'outil est conçu pour les cas avec un fort chevauchement de données.
Applications réelles
maxpack excelle sur les ensembles de données à contenu répétitif :
- Versions de projets Git : Le code partagé n'est stocké qu'une seule fois.
- Journaux et exports de bases de données : Les exports adjacents diffèrent peu.
- Snapshots de nœuds blockchain : Chevauchements dans l'état de la base.
- Ensembles de données versionnés : Points de contrôle de modèles, images.
- Snapshots de VM et conteneurs : Couches d'état partagées.
- Builds frontend : Correspondances au niveau octet malgré des hachages dans les noms de fichiers.
L'effet s'amplifie avec le volume et le taux de doublons.
Benchmarks sur Node.js v20
Tests sur Apple M4 avec 4 threads. Échelle de 100,1 Mo à 10 Go via les tags Git :
- Initialement, toutes les méthodes ~3,9x.
- maxpack L3 sur 10 Go : 50,1x.
- tar+zstd : ~4,8x.
- 7z : ~8,6x.
La part de contenu unique diminue, permettant à maxpack d'améliorer la compression.
Résultats sur CPython 3.12 (817,3 Mo, 8 tags)
| Méthode | Archive | Compression | Empaquetage | Dépaquetage |
|----------------|-----------|-------------|-------------|-------------|
| maxpack L3 | 31,0 Mo | 26,4x | 0,9 s | 3,1 s |
| tar+zstd -3 | 215,3 Mo | 3,8x | 16,5 s | 11,9 s |
| tar+zstd -19 | 170,3 Mo | 4,8x | 113,7 s | 17,0 s |
| tar+xz | 168,3 Mo | 4,9x | 41,6 s | 13,7 s |
maxpack réduit la taille de l'archive de 7x par rapport à tar+zstd -3, avec des temps plus rapides.
Résultats sur Go 1.23 (974,8 Mo, 8 tags)
| Méthode | Archive | Compression | Empaquetage | Dépaquetage |
|------------------|-----------|-------------|-------------|-------------|
| maxpack L3 | 31,0 Mo | 31,4x | 14,4 s | 14,7 s |
| tar+zstd -3 | 210,1 Mo | 4,6x | 40,5 s | 35,1 s |
| tar+xz | 149,5 Mo | 6,5x | 294,0 s | 40,5 s |
| 7z -mx=9 | 70,7 Mo | 13,8x | 312,4 s | 11,4 s |
L'archive est 2,3x plus petite que 7z, avec un coût CPU moindre pour l'empaquetage.
Sur les projets fd, lsd, bat, la réduction de taille est de 41,6–70,3 %, avec une déduplication jusqu'à 81,3 %.
Ensembles de données contrôlés
Haut-dédupl (100 fichiers, 90 % de doublons, 12 Mo) :
| Ensemble | Méthode | Archive | Compression | vs tar+zstd-3 |
|----------------|--------------|-------------|-------------|---------------|
| Haut-dédupl | tar+zstd-3 | 4 102 948 | 3,1x | – |
| Haut-dédupl | maxpack L3 | 1 290 154 | 10,0x | -68,6 % |
L'archive est 3,2x plus petite. Sur les ensembles sans doublons — parité ou léger surcoût.
Comparaison de vitesse
Le dépaquetage est 1,5–2,2x plus rapide :
- Dépaquetage divers : maxpack 21 ms vs 32 ms.
- Dépaquetage haut-dédupl : 29 ms vs 65 ms.
- Dépaquetage gros : 71 ms vs 120 ms.
L'empaquetage dépend de la structure : parité sur données dupliquées, surcoût sur uniques.
Limites d'utilisation
- Données uniques : Déduplication minimale.
- Petits ensembles : Analyse non rentable.
- Accès aléatoire : Inférieur aux stockages spécialisés.
Outil pour ensembles versionnés à fort chevauchement.
Positionnement face aux alternatives
maxpack combine les atouts des outils d'empaquetage et de snapshots :
| Fonctionnalité | tar+zstd/7z | borg/restic | maxpack |
|--------------------|--------------|-------------|-----------|
| Déduplication | Non | Par bloc | Oui |
| Compression solide | Oui | Non | Oui |
| Résultat | Fichier unique | Dépôt | Fichier unique |
| Incrémentalité | Non | Oui | Ajout |
| Chiffrement | Variable | Oui | AES-256-GCM |
Idéal pour des archives de versions portables.
Test sur vos données
maxpack pack your_data/ -o test.maxpack
tar cf - your_data/ | zstd -3 > test.tar.zst
ls -lh test.maxpack test.tar.zst
Points clés
- Compression qui scale jusqu'à 50x+ sur volumes versionnés.
- Déduplication jusqu'à 90 % sur ensembles très répétitifs.
- Dépaquetage 1,5–2,2x plus rapide que tar+zstd.
- Archives 2–7x plus petites que la concurrence sur projets réels.
- Support de l'incrémentalité et AES-256-GCM.
— Editorial Team
Aucun commentaire pour le moment.