返回首页

maxpack:版本化数据的去重

maxpack 为版本化数据集实现文件间去重,在大容量上实现高达 50 倍压缩。基准测试显示在大小和解包速度上优于 tar+zstd 和 7z。该工具适用于 git 标签、快照和重复内容数据集。

去重 maxpack:Node.js 和 CPython 版本的 50 倍压缩
Advertisement 728x90

# maxpack:版本化文件集的高效重复数据删除

maxpack 的跨文件重复数据删除将整个文件集视为单一数据空间,消除版本和对象间的重复内容。在 100 MB 的 Node.js 数据上,压缩比达 3.9 倍;在 10 GB 数据上,通过将每兆字节的唯一内容降至 0.6%,压缩比高达 50.1 倍。该工具专为数据重叠度高的场景设计。

实际应用场景

maxpack 在重复内容多的数据集上表现卓越:

  • Git 项目版本:共享代码仅存储一次。
  • 日志和数据库导出:相邻导出差异极小。
  • 区块链节点快照:数据库状态高度重叠。
  • 版本化数据集:模型检查点、图像文件。
  • 虚拟机和容器快照:共享状态层。
  • 前端构建产物:文件名含哈希但字节级匹配。

数据量越大、重复率越高,效果越显著。

Google AdInline article slot

Node.js v20 基准测试

在 Apple M4 上使用 4 线程测试。通过 Git 标签从 100.1 MB 扩展至 10 GB:

  • 初始阶段,所有方法压缩比约 3.9 倍。
  • maxpack L3 在 10 GB 上:50.1 倍。
  • tar+zstd:约 4.8 倍。
  • 7z:约 8.6 倍。

唯一内容占比下降,让 maxpack 压缩效果大幅提升。

CPython 3.12 测试结果(817.3 MB,8 个标签)

| 方法 | 归档大小 | 压缩比 | 打包时间 | 解包时间 |

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 |

与 tar+zstd -3 相比,maxpack 归档大小减小 7 倍,打包解包速度更快。

Go 1.23 测试结果(974.8 MB,8 个标签)

| 方法 | 归档大小 | 压缩比 | 打包时间 | 解包时间 |

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

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

归档大小比 7z 小 2.3 倍,打包 CPU 消耗更低。

在 fd、lsd、bat 等项目上,体积缩减 41.6–70.3%,重复数据删除率高达 81.3%。

控制数据集测试

高重复数据集(100 个文件,90% 重复,12 MB):

| 数据集 | 方法 | 归档大小 | 压缩比 | 与 tar+zstd-3 比较 |

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

| 高重复 | tar+zstd-3 | 4,102,948 | 3.1x | – |

| 高重复 | maxpack L3 | 1,290,154 | 10.0x | -68.6% |

归档大小缩小 3.2 倍。无重复数据集上,性能持平或略有开销。

速度对比

解包速度快 1.5–2.2 倍:

  • 多样化解包:maxpack 21 ms vs 32 ms。
  • 高重复解包:29 ms vs 65 ms。
  • 大型解包:71 ms vs 120 ms。

打包速度依数据结构而定:重复数据持平,唯一数据略有开销。

使用限制

  • 唯一数据:重复删除效果有限。
  • 小型数据集:分析成本过高。
  • 随机访问:不如专用存储方案。

适用于重叠度强的版本化数据集。

与竞品的定位对比

maxpack 融合了打包和快照系统的优势:

| 特性 | tar+zstd/7z | borg/restic | maxpack |

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

| 重复数据删除 | 无 | 按块 | 有 |

| 固实压缩 | 有 | 无 | 有 |

| 输出形式 | 单文件 | 仓库 | 单文件 |

| 增量性 | 无 | 有 | 追加 |

| 加密 | 视情况 | 有 | AES-256-GCM |

适合便携式版本归档。

在你的数据上测试

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

关键亮点

  • 版本化数据压缩比随体积增长高达 50 倍以上。
  • 高重复数据集重复删除率达 90%。
  • 解包速度比 tar+zstd 快 1.5–2.2 倍。
  • 真实项目归档比竞品小 2–7 倍。
  • 支持增量备份和 AES-256-GCM 加密。

— Editorial Team

Advertisement 728x90

继续阅读