유전체 데이터 압축 저장을 위한 범용 프레임워크 CARGO

유전체 데이터 압축 저장을 위한 범용 프레임워크 CARGO

초록

CARGO는 형식에 구애받지 않는 압축 저장을 목표로, 사용자 정의 데이터 타입을 선언하면 자동으로 최적화된 압축·해제 프로그램을 생성한다. FASTQ와 SAM에 적용했을 때 기존 전용 압축기와 동등하거나 더 나은 압축률·속도를 보이며, 테라바이트 규모 데이터에도 효율적으로 확장된다.

상세 분석

CARGO는 “형식‑프리(format‑free)” 압축이라는 새로운 패러다임을 제시한다. 기존의 압축 솔루션은 FASTQ, SAM, VCF 등 특정 바이오인포매틱스 포맷에 맞춰 설계돼, 포맷 자체의 비효율성을 그대로 물려받는다. CARGO는 이러한 한계를 극복하기 위해 고수준 선언형 스키마 언어를 도입한다. 사용자는 데이터 레코드의 필드와 타입(정수, 문자열, 배열, 구조체 등)을 간단히 정의하고, 각 필드에 적용할 압축 알고리즘(예: BSC, LZMA, ZSTD 등)을 선택한다. 선언만 하면 CARGO의 코드 생성 엔진이 C++ 기반의 직렬화·압축 파이프라인을 자동으로 생성한다. 이 파이프라인은 필드‑별 압축을 수행해, 예를 들어 시퀀스 문자열은 문자‑레벨 사전 압축 후 블록‑단위 LZMA를 적용하고, 품질 점수는 정수‑레벨 차분·런-레ング스 인코딩을 거쳐 ZSTD로 압축한다.

핵심 기술은 (1) 타입‑특화 인코더/디코더 자동 생성, (2) 블록‑단위 스트리밍 압축 및 (3) 멀티스레드 파이프라인이다. 타입‑특화 인코더는 각 필드의 통계적 특성을 분석해 최적의 비트‑레벨 표현을 만든다. 예컨대, DNA 염기 서열은 2‑비트 코드로 변환하고, 반복 구간은 런‑레ング스 코딩으로 압축한다. 블록‑단위 스트리밍은 대용량 파일을 메모리 제한 없이 순차적으로 처리하게 하며, 각 블록은 독립적인 압축 단위가 되므로 병렬화가 용이하다. 멀티스레드 설계는 생산자‑소비자 모델을 채택해 입출력·인코딩·압축·인덱싱을 동시에 수행한다.

성능 평가에서는 FASTQ와 SAM 두 대표 포맷에 CARGO를 적용했다. FASTQ에서는 기존의 fqzcomp, DSRC2와 비교해 압축률 5 %12 % 향상, 압축·해제 속도는 1.2배1.8배 빠른 결과를 얻었다. SAM에서는 CRAM과 동일하거나 약간 높은 압축률을 보였으며, 특히 대규모 멀티‑TB 데이터셋(>3 TB)에서는 I/O 병목을 최소화한 스트리밍 구조 덕분에 전체 파이프라인이 1.5배 가량 가속되었다. 또한 CARGO는 메타데이터(예: 샘플 ID, 실험 조건)를 별도 인덱스로 관리해 랜덤 액세스와 부분 해제가 가능하도록 설계돼, downstream 분석 파이프라인과의 연동이 용이하다.

CARGO의 장점은 유연성확장성이다. 새로운 포맷이나 커스텀 필드가 추가될 때마다 스키마만 수정하면 되며, 기존 코드를 재작성할 필요가 없다. 또한 압축 알고리즘 모듈을 플러그인 형태로 교체·추가할 수 있어, 최신 압축 기술이 등장하면 즉시 적용 가능하다. 다만 현재 구현은 C++ 기반이므로, 비전문가가 직접 사용하기엔 빌드·의존성 관리가 다소 복잡할 수 있다. 향후 파이썬·R 바인딩 제공과 GUI 툴 개발이 이루어진다면, 실험실 수준에서의 채택이 더욱 촉진될 전망이다.