Zurück zur Startseite

maxpack: Deduplizierung von versionierten Daten

maxpack implementiert Deduplizierung zwischen Dateien für versionierte Datensätze und erreicht bis zu 50x Kompression bei großen Volumen. Benchmarks zeigen Überlegenheit gegenüber tar+zstd und 7z in Größe und Entpackgeschwindigkeit. Das Tool eignet sich für git-Tags, Snapshots und Datensätze mit doppeltem Inhalt.

Deduplizierung maxpack: 50x Kompression von Node.js- und CPython-Versionen
Advertisement 728x90

maxpack: Effiziente Deduplizierung für versionierte Dateisätze

Die inter-file Deduplizierung in maxpack analysiert den gesamten Dateisatz als einheitlichen Datenraum und eliminiert Duplikate über Versionen und Objekte hinweg. Bei 100 MB Node.js erreicht die Kompression 3,9-fach; bei 10 GB sogar 50,1-fach, indem der einzigartige Inhalt auf 0,6 % pro Megabyte reduziert wird. Das Tool ist für Szenarien mit hoher Datenüberlappung optimiert.

Anwendungen in der Praxis

maxpack glänzt bei Datensätzen mit wiederholtem Inhalt:

  • Git-Projektversionen: Gemeinsamer Code wird nur einmal gespeichert.
  • Logs und Datenbank-Dumps: Benachbarte Exporte unterscheiden sich minimal.
  • Blockchain-Node-Snapshots: Überlappungen im Datenbankzustand.
  • Versionierte Datensätze: Model-Checkpoints, Bilder.
  • VM- und Container-Snapshots: Gemeinsame Zustandsschichten.
  • Frontend-Builds: Bytegenaue Übereinstimmungen trotz Hashes in Dateinamen.

Der Effekt verstärkt sich mit wachsendem Volumen und Duplikatanteil.

Google AdInline article slot

Benchmarks mit Node.js v20

Tests auf Apple M4 mit 4 Threads. Skalierung von 100,1 MB bis 10 GB über Git-Tags:

  • Anfangs alle Methoden ~3,9-fach.
  • maxpack L3 bei 10 GB: 50,1-fach.
  • tar+zstd: ~4,8-fach.
  • 7z: ~8,6-fach.

Der Anteil einzigartiger Inhalte sinkt, was maxpack eine stärkere Kompression ermöglicht.

Ergebnisse bei CPython 3.12 (817,3 MB, 8 Tags)

| Methode | Archiv | Kompression | Pack | Entpack |

Google AdInline article slot

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

| maxpack L3 | 31,0 MB | 26,4-fach | 0,9 s | 3,1 s |

| tar+zstd -3 | 215,3 MB | 3,8-fach | 16,5 s | 11,9 s |

Google AdInline article slot

| tar+zstd -19 | 170,3 MB | 4,8-fach | 113,7 s| 17,0 s |

| tar+xz | 168,3 MB | 4,9-fach | 41,6 s | 13,7 s |

maxpack verkleinert das Archiv um das 7-fache im Vergleich zu tar+zstd -3 und ist schneller.

Ergebnisse bei Go 1.23 (974,8 MB, 8 Tags)

| Methode | Archiv | Kompression | Pack | Entpack |

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

| maxpack L3 | 31,0 MB | 31,4-fach | 14,4 s | 14,7 s |

| tar+zstd -3 | 210,1 MB | 4,6-fach | 40,5 s | 35,1 s |

| tar+xz | 149,5 MB | 6,5-fach | 294,0 s | 40,5 s |

| 7z -mx=9 | 70,7 MB | 13,8-fach | 312,4 s | 11,4 s |

Das Archiv ist 2,3-mal kleiner als bei 7z und verbraucht weniger CPU beim Packen.

Bei Projekten wie fd, lsd, bat beträgt die Größenreduktion 41,6–70,3 %, mit Deduplizierung bis zu 81,3 %.

Kontrollierte Datensätze

High-dedup (100 Dateien, 90 % Duplikate, 12 MB):

| Datensatz | Methode | Archiv | Kompression | vs tar+zstd-3 |

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

| High-dedup | tar+zstd-3 | 4.102.948 | 3,1-fach | – |

| High-dedup | maxpack L3 | 1.290.154 | 10,0-fach | -68,6 % |

Das Archiv ist 3,2-mal kleiner. Bei duplikatfreien Sätzen: Parität oder leichter Overhead.

Geschwindigkeitsvergleich

Entpacken ist 1,5–2,2-mal schneller:

  • Diverses Entpacken: maxpack 21 ms vs. 32 ms.
  • High-dedup Entpacken: 29 ms vs. 65 ms.
  • Großes Entpacken: 71 ms vs. 120 ms.

Packen hängt von der Struktur ab: Parität bei Duplikaten, Overhead bei Einzigartigkeit.

Einschränkungen der Nutzung

  • Einzigartige Daten: Minimale Deduplizierung.
  • Kleine Sätze: Analyse nicht wirtschaftlich.
  • Zufallszugriff: Unterlegen gegenüber spezialisierten Speichern.

Tool für versionierte Sätze mit starker Überlappung.

Positionierung gegenüber Alternativen

maxpack kombiniert Eigenschaften von Packer- und Snapshot-Systemen:

| Feature | tar+zstd/7z | borg/restic | maxpack |

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

| Deduplizierung | Nein | Per-Chunk | Ja |

| Solide Kompression| Ja | Nein | Ja |

| Ergebnis | Einzeldatei | Repository | Einzeldatei|

| Inkrementell | Nein | Ja | Anhängen |

| Verschlüsselung | Abhängig | Ja | AES-256-GCM|

Geeignet für portable Versionsarchive.

Testen mit eigenen Daten

maxpack pack your_data/ -o test.maxpack
tar cf - your_data/ | zstd -3 > test.tar.zst
ls -lh test.maxpack test.tar.zst

Wichtige Punkte

  • Kompression skaliert mit Versionierungsvolumen bis über 50-fach.
  • Deduplizierung bis 90 % bei hoch repetitiven Sätzen.
  • Entpacken 1,5–2,2-mal schneller als tar+zstd.
  • Archive 2–7-mal kleiner als Konkurrenz bei realen Projekten.
  • Unterstützung für Inkrementalität und AES-256-GCM.

— Editorial Team

Advertisement 728x90

Weiterlesen