# maxpack: 버전 파일 세트의 효율적인 중복 제거
maxpack의 파일 간 중복 제거는 전체 파일 세트를 하나의 데이터 공간으로 분석해 버전과 객체 간 중복을 제거합니다. Node.js 100MB에서 압축률 3.9배, 10GB에서 50.1배에 달하며, 메가바이트당 고유 콘텐츠를 0.6%로 줄입니다. 데이터 중복이 높은 시나리오에 최적화된 도구입니다.
실제 활용 사례
maxpack은 반복 콘텐츠가 많은 데이터 세트에서 탁월합니다:
- Git 프로젝트 버전: 공통 코드는 한 번만 저장.
- 로그 및 데이터베이스 덤프: 인접한 내보내기 간 차이 최소.
- 블록체인 노드 스냅샷: 데이터베이스 상태 중복.
- 버전화된 데이터셋: 모델 체크포인트, 이미지.
- VM 및 컨테이너 스냅샷: 공유 상태 레이어.
- 프론트엔드 빌드: 파일명 해시에도 불구하고 바이트 수준 일치.
볼륨과 중복 비율이 증가할수록 효과가 극대화됩니다.
Node.js v20 벤치마크
Apple M4에서 4스레드 테스트. Git 태그로 100.1MB에서 10GB까지 확장:
- 초기: 모든 방법 ~3.9배.
- maxpack L3 (10GB): 50.1배.
- tar+zstd: ~4.8배.
- 7z: ~8.6배.
고유 콘텐츠 비율이 줄어들어 maxpack의 압축이 강화됩니다.
CPython 3.12 결과 (817.3MB, 8 태그)
| Method | Archive | Compression | Pack | Unpack |
|----------------|-----------|-------------|--------|--------|
| 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은 tar+zstd -3 대비 아카이브 크기 7배 줄이고, 속도도 빠릅니다.
Go 1.23 결과 (974.8MB, 8 태그)
| Method | Archive | Compression | 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 |
7z 대비 아카이브 2.3배 작고, 패킹 CPU 비용 낮음.
fd, lsd, bat 프로젝트에서 크기 41.6–70.3% 감소, 중복 제거 최대 81.3%.
제어된 데이터셋
고중복 (100파일, 90% 중복, 12MB):
| Dataset | Method | Archive | Compression | 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% |
아카이브 3.2배 작음. 중복 없는 세트에서는 동등하거나 약간 오버헤드.
속도 비교
언패킹 1.5–2.2배 빠름:
- 다양 언패킹: maxpack 21ms vs 32ms.
- 고중복 언패킹: 29ms vs 65ms.
- 대용량 언패킹: 71ms vs 120ms.
패킹은 구조에 따라: 중복 데이터 동등, 고유 데이터 오버헤드.
사용 제한
- 고유 데이터: 중복 제거 최소.
- 소규모 세트: 분석 비용 비효율.
- 랜덤 액세스: 전용 저장소에 열위.
강한 중복의 버전 세트에 적합한 도구.
대안 비교
maxpack은 패킹과 스냅샷 시스템 특징 결합:
| Feature | tar+zstd/7z | borg/restic | maxpack |
|-------------------|-------------|-------------|-----------|
| Deduplication | No | Per-chunk | Yes |
| Solid compression | Yes | No | Yes |
| Result | Single file | Repository | Single file |
| Incrementality | No | Yes | Append |
| Encryption | Depends | Yes | 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
아직 댓글이 없습니다.