압축 (Compression)

DBX는 ZSTD(Zstandard) 알고리즘을 지원하여 저장 공간을 효율적으로 사용하고 디스크 I/O 성능을 최적화합니다.


개요

DBX의 압축은 투명(Transparent)하게 작동합니다. 즉, 데이터 삽입 시 자동으로 압축되고, 조회 시 자동으로 해제되므로 애플리케이션 코드를 수정할 필요가 없습니다.

주요 특징

  • ZSTD 알고리즘: 빠른 속도와 높은 압축률의 균형
  • 조정 가능한 레벨: 1(빠름)부터 22(고압축)까지 설정 가능
  • 테이블별 설정: 각 테이블의 데이터 특성에 따라 선택적으로 적용

기본 사용법

압축 활성화

use dbx_core::Database;

fn main() -> dbx_core::DbxResult<()> {
    let db = Database::open("./db")?;
    
    // 'logs' 테이블에 대해 압축 활성화 (기본 레벨 3)
    db.enable_compression("logs")?;
    
    // 데이터 삽입 시 자동으로 압축됨
    db.insert("logs", b"key:1", b"Large log message...")?;
    
    Ok(())
}

압축 레벨 조정

압축률과 처리 속도의 트레이드오프를 조정할 수 있습니다.

// 실시간 처리 (로그 등): 낮은 레벨 (1~3)
db.set_compression_level("realtime_data", 1)?;

// 일반적인 목적: 중간 레벨 (3~9)
db.set_compression_level("user_data", 6)?;

// 장기 보관 (아카이브): 높은 레벨 (10~15)
db.set_compression_level("archives", 15)?;

압축 성능 통계 (일반적 지표)

데이터 타입 예상 압축률 속도 영향
텍스트/로그 10-20배 낮음
JSON/XML 5-10배 낮음
랜덤/이미지 1-2배 높음 (권장 안 함)
  • 디스크 I/O: 데이터 크기가 줄어들어 전체적인 입출력 효율이 50~80% 향상됩니다.
  • CPU 부하: 압축/해제 시 약간의 CPU 사용량이 증가하지만(10~15%), 대부분의 현대 시스템에서는 디스크 I/O 병목을 줄여 전체 속도가 개선됩니다.

권장 사항 (Best Practices)

  1. 대용량 텍스트에 적용: 로그, 설정파일, JSON 문서 등에 가장 효과적입니다.
  2. 이미 압축된 데이터는 피하세요: JPEG, MP4, ZIP 파일 등은 이미 압축되어 있어 중복 압축 시 오버헤드만 발생합니다.
  3. 데이터 특성에 따른 레벨 선택: 실시간 서비스는 낮은 레벨(1~3)을 사용하고, 정기 백업이나 로그 보관은 높은 레벨을 사용하세요.

다음 단계


Copyright © 2026 ByteLogicCore. MIT OR Apache-2.0 License.

This site uses Just the Docs, a documentation theme for Jekyll.