청크 파티셔닝의 정의 및 작동 원리
시계열 데이터베이스(TSDB)에서 청크 파티셔닝은 시간 구간별로 데이터를 물리적으로 분할하는 저장소 전략입니다. 각 청크는 특정 시간 범위(예: 7일, 2시간)의 모든 시계열 샘플을 포함하며, 새로운 데이터는 항상 가장 최근의 청크에 먼저 기록됩니다. 이 구조는 최근 데이터를 메모리에 유지하면서 오래된 데이터는 디스크로 자동 이동시켜, 메모리 사용량을 제한적으로 유지합니다.
다중 차원 파티셔닝 및 실무 고려사항
단순 시간 기반 파티셔닝 외에도, 현대적 TSDB 구현들은 시간과 공간(series label) 차원을 결합하여 다중 파티셔닝을 지원합니다. 이를 통해 최근 시간 구간으로의 동시 쓰기를 병렬화하고, 동일 대상(예: 특정 기기)의 시계열을 같은 서버에 배치하여 쿼리 지연 시간을 감소시킵니다. 파티션 크기 설계는 중요한데, 너무 크면 메모리 부족과 쿼리 병렬도 저하를 야기하고, 너무 작으면 관리 오버헤드가 증가합니다. 실무 가이드라인은 압축 전 단일 파티션 크기를 400MB~1GB로 제시합니다.
저장소 계층화와 청크 생명주기
청크는 생성 후 단계적으로 변환됩니다. 활성 청크(hot data)는 행 형식으로 빠른 쓰기를 지원하고, 시간 경과에 따라 불변 블록으로 전환되어 디스크에 기록됩니다. LSM-Tree 기반 구현에서는 다단계(Level 0~3) 파일 구조로 관리되며, 각 청크 내 데이터는 정렬된 블록으로 저장되어 순차 스캔 성능을 극대화합니다. 오래된 청크는 압축(5~15배), 싼 저장소로의 이동 또는 완전 삭제 등의 라이프사이클 정책이 적용됩니다.