Volver al inicio

maxpack: desduplicación de datos versionados

maxpack implementa desduplicación entre archivos para datasets versionados, logrando hasta 50x de compresión en grandes volúmenes. Benchmarks muestran superioridad sobre tar+zstd y 7z en tamaño y velocidad de desempaquetado. La herramienta es adecuada para git tags, snapshots y datasets con contenido duplicado.

Desduplicación maxpack: 50x compresión de versiones de Node.js y CPython
Advertisement 728x90

# maxpack: Deduplicación eficiente para conjuntos de archivos versionados

La deduplicación entre archivos en maxpack analiza todo el conjunto de archivos como un único espacio de datos, eliminando duplicados entre versiones y objetos. Con 100 MB de Node.js, la compresión alcanza 3,9x; con 10 GB, llega a 50,1x al reducir el contenido único al 0,6% por megabyte. La herramienta está diseñada para escenarios con alto solapamiento de datos.

Aplicaciones en el mundo real

maxpack destaca en conjuntos de datos con contenido repetitivo:

  • Versiones de proyectos Git: El código compartido se almacena solo una vez.
  • Registros y volcados de bases de datos: Exportaciones adyacentes difieren mínimamente.
  • Instantáneas de nodos blockchain: Solapamientos en el estado de la base de datos.
  • Conjuntos de datos versionados: Puntos de control de modelos, imágenes.
  • Instantáneas de VM y contenedores: Capas de estado compartidas.
  • Compilaciones frontend: Coincidencias a nivel de bytes pese a hashes en nombres de archivos.

El efecto se intensifica con mayor volumen y ratio de duplicados.

Google AdInline article slot

Benchmarks en Node.js v20

Pruebas en Apple M4 con 4 hilos. Escalado de 100,1 MB a 10 GB mediante etiquetas Git:

  • Inicialmente, todos los métodos ~3,9x.
  • maxpack L3 en 10 GB: 50,1x.
  • tar+zstd: ~4,8x.
  • 7z: ~8,6x.

La proporción de contenido único disminuye, permitiendo que maxpack impulse la compresión.

Resultados en CPython 3.12 (817,3 MB, 8 etiquetas)

| Método | Archivo | Compresión | Empaquetado | Desempaquetado |

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 reduce el tamaño del archivo 7x respecto a tar+zstd -3, con tiempos más rápidos.

Resultados en Go 1.23 (974,8 MB, 8 etiquetas)

| Método | Archivo | Compresión | Empaquetado | Desempaquetado |

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

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

El archivo es 2,3x más pequeño que 7z, con menor coste de CPU en empaquetado.

En proyectos como fd, lsd, bat, la reducción de tamaño es del 41,6–70,3%, con deduplicación hasta 81,3%.

Conjuntos de datos controlados

Alto dedup (100 archivos, 90% duplicados, 12 MB):

| Conjunto | Método | Archivo | Compresión | vs tar+zstd-3 |

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

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

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

El archivo es 3,2x más pequeño. En conjuntos sin duplicados, paridad o ligera sobrecarga.

Comparación de velocidad

Desempaquetado 1,5–2,2x más rápido:

  • Desempaquetado diverso: maxpack 21 ms vs 32 ms.
  • Desempaquetado alto dedup: 29 ms vs 65 ms.
  • Desempaquetado grande: 71 ms vs 120 ms.

Empaquetado depende de la estructura: paridad en datos duplicados, sobrecarga en únicos.

Limitaciones de uso

  • Datos únicos: Deduplicación mínima.
  • Conjuntos pequeños: Análisis no rentable.
  • Acceso aleatorio: Inferior a almacenamiento especializado.

Herramienta para conjuntos versionados con fuerte solapamiento.

Posicionamiento frente a alternativas

maxpack combina características de empaquetado y sistemas de instantáneas:

| Característica | tar+zstd/7z | borg/restic | maxpack |

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

| Deduplicación | No | Por trozos | Sí |

| Compresión sólida | Sí | No | Sí |

| Resultado | Archivo único | Repositorio | Archivo único |

| Incrementalidad | No | Sí | Añadir |

| Cifrado | Depende | Sí | AES-256-GCM |

Ideal para archivos portátiles de versiones.

Pruebas con tus datos

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

Puntos clave

  • Compresión escala con volumen de datos versionados hasta 50x+.
  • Deduplicación hasta 90% en conjuntos muy repetitivos.
  • Desempaquetado 1,5–2,2x más rápido que tar+zstd.
  • Archivos 2–7x más pequeños que competidores en proyectos reales.
  • Soporte para incrementalidad y AES-256-GCM.

— Editorial Team

Advertisement 728x90

Leer después