Retour à l'accueil

maxpack : déduplication des données versionnées

maxpack implémente la déduplication inter-fichiers pour les datasets versionnés, atteignant jusqu'à 50x de compression sur de grands volumes. Les benchmarks montrent une supériorité sur tar+zstd et 7z en taille et vitesse de décompression. L'outil convient aux tags git, snapshots et datasets avec contenu dupliqué.

Déduplication maxpack : compression 50x des versions Node.js et CPython
Advertisement 728x90

# 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.

Google AdInline article slot

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 |

Google AdInline article slot

|----------------|-----------|-------------|-------------|-------------|

| 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 |

Google AdInline article slot

| 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

Advertisement 728x90

Lire ensuite