Zpět na domů

maxpack: deduplikace verzí dat

maxpack implementuje mezi souborovou deduplikaci pro sady verzí dat, dosahuje komprese až 50x na velkých objemech. Benchmarky ukazují převahu nad tar+zstd a 7z v velikosti a rychlosti rozbalování. Nástroj je vhodný pro git-tagy, snímky a datasety s opakujícím se obsahem.

Deduplikace maxpack: 50x komprese verzí Node.js a CPython
Advertisement 728x90

maxpack: Efektivní deduplikace verzovaných souborových sad

Mezisouborová deduplikace v maxpack analyzuje celou sadu souborů jako jednotný datový prostor, odstraňuje duplicity mezi verzemi a objekty. Na 100 MB Node.js dosahuje komprese 3,9x, na 10 GB pak 50,1x díky snížení jedinečného obsahu na 0,6 % na megabajt. Nástroj je zaměřen na scénáře s vysokým překryvem dat.

Použití v reálných úlohách

maxpack prokazuje efektivitu na sadách s opakujícím se obsahem:

  • Verze git-projektů: společný kód se ukládá pouze jednou.
  • Logy a výstupy z databází: sousední exporty se liší minimálně.
  • Snapshoty blockchainových uzlů: překryvy ve stavu databáze.
  • Verzované datové sady: kontrolní body modelů, obrázky.
  • Snapshoty virtuálních strojů a kontejnerů: společné vrstvy stavů.
  • Frontendové buildy: bajtové shody navzdory hashům v názvech.

Efekt se zesiluje s růstem objemu a podílu duplicit.

Google AdInline article slot

Benchmarky na Node.js v20

Testování na Apple M4 se 4 vlákny. Škálování od 100,1 MB do 10 GB podle git tagů:

  • Na začátku všechny metody ~3,9x.
  • maxpack L3 na 10 GB: 50,1x.
  • tar+zstd: ~4,8x.
  • 7z: ~8,6x.

Podíl jedinečného obsahu klesá, maxpack toho využívá pro růst komprese.

Výsledky na CPython 3.12 (817,3 MB, 8 tagů)

| Metoda | Archiv | Komprese | Pack | Unpack |

Google AdInline article slot

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

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

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

Google AdInline article slot

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

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

maxpack zmenšuje archiv 7krát oproti tar+zstd -3, předčí i v čase.

Výsledky na Go 1.23 (974,8 MB, 8 tagů)

| Metoda | Archiv | Komprese | Pack | Unpack |

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

| maxpack L3 | 31,0 MB | 31,4x | 14,4 s | 14,7 s |

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

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

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

Archiv je 2,3krát menší než 7z, balení je levnější na CPU.

Na projektech fd, lsd, bat je zisk 41,6–70,3 % ve velikosti, deduplikace až 81,3 %.

Řízené datové sady

High-dedup (100 souborů, 90 % duplicit, 12 MB):

| Datová sada | Metoda | Archiv | Komprese | vs tar+zstd-3 |

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

| High-dedup | tar+zstd-3 | 4 102 948 | 3,1x | – |

| High-dedup | maxpack L3 | 1 290 154 | 10,0x | -68,6 % |

Archiv je 3,2krát menší. Na sadách bez opakování – parita nebo malý overhead.

Porovnání rychlostí

Rozbalení je rychlejší o 1,5–2,2x:

  • Diverse Unpack: maxpack 21 ms vs 32 ms.
  • High-dedup Unpack: 29 ms vs 65 ms.
  • Big Unpack: 71 ms vs 120 ms.

Balení závisí na struktuře: na datech s opakováním – parita, na jedinečných – overhead.

Omezení použití

  • Jedinečná data: minimální deduplikace.
  • Malé sady: analýza se nevyplatí.
  • Náhodný přístup: zaostává za specializovanými úložišti.

Nástroj pro verzované sady se silným překryvem.

Pozice vůči analogům

maxpack kombinuje vlastnosti balení a snapshotových systémů:

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

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

| Deduplikace | Ne | Per-chunk | Ano |

| Solid komprese | Ano | Ne | Ano |

| Výsledek | Jeden soubor| Repozitář | Jeden soubor|

| Inkrementálnost | Ne | Ano | Append |

| Šifrování | Závisí | Ano | AES-256-GCM |

Hodí se pro přenosné archivy verzí.

Testování na vlastních datech

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

Co je důležité

  • Komprese roste s objemem verzovaných dat až na 50x+.
  • Deduplikace až 90 % na vysoce opakujících se sadách.
  • Rozbalení je rychlejší než tar+zstd o 1,5–2,2x.
  • Archivy jsou 2–7krát menší než konkurence na reálných projektech.
  • Podpora inkrementálnosti a AES-256-GCM.

— Editorial Team

Advertisement 728x90

Číst dál