홈으로 돌아가기

maxpack: 버전화된 데이터 중복 제거

maxpack는 버전화된 데이터셋에 파일 간 중복 제거를 구현하여 대용량에서 최대 50배 압축을 달성합니다. 벤치마크는 tar+zstd 및 7z보다 크기와 압축 해제 속도에서 우수함을 보여줍니다. 이 도구는 git 태그, 스냅샷 및 중복 콘텐츠가 있는 데이터셋에 적합합니다.

중복 제거 maxpack: Node.js 및 CPython 버전 50배 압축
Advertisement 728x90

# maxpack: 버전 파일 세트의 효율적인 중복 제거

maxpack의 파일 간 중복 제거는 전체 파일 세트를 하나의 데이터 공간으로 분석해 버전과 객체 간 중복을 제거합니다. Node.js 100MB에서 압축률 3.9배, 10GB에서 50.1배에 달하며, 메가바이트당 고유 콘텐츠를 0.6%로 줄입니다. 데이터 중복이 높은 시나리오에 최적화된 도구입니다.

실제 활용 사례

maxpack은 반복 콘텐츠가 많은 데이터 세트에서 탁월합니다:

  • Git 프로젝트 버전: 공통 코드는 한 번만 저장.
  • 로그 및 데이터베이스 덤프: 인접한 내보내기 간 차이 최소.
  • 블록체인 노드 스냅샷: 데이터베이스 상태 중복.
  • 버전화된 데이터셋: 모델 체크포인트, 이미지.
  • VM 및 컨테이너 스냅샷: 공유 상태 레이어.
  • 프론트엔드 빌드: 파일명 해시에도 불구하고 바이트 수준 일치.

볼륨과 중복 비율이 증가할수록 효과가 극대화됩니다.

Google AdInline article slot

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 |

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

Advertisement 728x90

다음 읽기