# 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.
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 |
|----------------|------------|------------|-------------|----------------|
| 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 |
| 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
Aún no hay comentarios.