← 학습 카테고리

Learn

ClickHouse

47개 모듈 · 현재 22번째

ClickHouse 모듈 22/47 clickhouse-learn-22

storage_policy — 디스크를 계층화해 hot/cold 데이터를 자동으로 옮기기

ClickHouse join_algorithm 및 storage_policy(hot/cold 계층) 공식 문서 종합 (웹 리서치, 2026) — ClickHouse 공식 문서(guides/joining-tables, guides/developer/ttl) ClickHouse 공식 문서 Automatic data tiering with TTL

이 모듈을 다 읽으면

  • disk와 volume, storage_policy의 계층 구조를 설명할 수 있다
  • TTL ... TO VOLUME이 TTL DELETE와 근본적으로 다른 지점을 설명할 수 있다

clickhouse-learn-12에서 다룬 TTL(컬럼/테이블 자동 만료)을 전제로, 데이터를 아예 삭제하는 대신 오래될수록 더 저렴한 스토리지로 자동 이동시켜 비용과 성능을 함께 관리하는 storage_policy 기반 계층 저장을 정리한다.

disk → volume → storage_policy 3단계 구조

XML 설정으로 먼저 disk를 선언해 실제 파일시스템 경로에 대응시킨다 — 예를 들어 hot_disk를 빠른 SSD 경로에, cold_disk를 느리거나 저렴한 저장소(HDD, 오브젝트 스토리지 등) 경로에 매핑한다. 그 다음 하나 이상의 disk를 volume으로 묶고, 여러 volume을 계층적으로 조합한 것이 storage_policy다 — 이 3단계 구조 덕분에 ClickHouse는 물리적 저장 매체의 토폴로지(어떤 게 빠르고 어떤 게 느린지)를 이해하고 그에 맞춰 데이터를 배치할 수 있다.

핵심 포인트

  • disk(실제 파일시스템 경로) → volume(disk 하나 이상 묶음) → storage_policy(volume들의 계층 조합) 3단계 구조
  • hot_disk(빠른 SSD)/cold_disk(느리거나 저렴한 HDD·오브젝트 스토리지) 같은 서로 다른 매체를 계층으로 구성

TTL ... TO VOLUME — 삭제가 아니라 '이동'

TTL timestamp + INTERVAL 2 YEAR TO VOLUME 'warm_volume'처럼 TTL 절에 TO VOLUME(또는 TO DISK)을 지정하면, 조건을 만족한 데이터 파트가 삭제되는 게 아니라 지정한 볼륨으로 이동한다 — 새로 쓰인 데이터는 빠른 저장소에 위치하다가, 지정한 기간이 지나면 점점 더 느리고 저렴한 계층으로 자동 이동해간다. 이는 clickhouse-learn-12에서 다룬 TTL DELETE(데이터를 아예 시스템에서 제거)와 근본적으로 다르다 — 여기서는 데이터를 완전히 잃지 않으면서도 비용을 절감하는 게 목적이다.

핵심 포인트

  • TTL ... TO VOLUME/TO DISK는 조건 만족 시 데이터를 삭제가 아니라 지정한 저장 계층으로 이동
  • TTL DELETE(완전 제거)와 근본적으로 다름 — 데이터를 보존하면서 비용만 절감하는 게 목적

실제로 어디로 이동했는지 확인하기

system.parts 시스템 테이블을 조회하면 각 데이터 파트가 실제로 어느 disk에 위치해 있는지 확인할 수 있다 — 이는 TTL 기반 계층 이동이 실제로 의도한 대로 일어났는지(예상한 파트가 정말 cold 볼륨으로 옮겨갔는지) 검증하는 표준적인 방법이다. 이 계층화 전략의 핵심 가치는 자주 조회되는 최근 데이터는 빠른 저장소에서 응답 속도를 유지하고, 드물게 조회되는 과거 데이터는 저렴한 저장소로 옮겨 전체 비용을 낮추는 균형을 자동으로 유지한다는 점이다.

핵심 포인트

  • system.parts로 각 파트가 실제 어느 disk에 위치하는지 확인 — TTL 기반 계층 이동이 의도대로 일어났는지 검증하는 표준 방법
  • 핵심 가치: 최근 데이터는 빠른 저장소로 응답속도 유지, 과거 데이터는 저렴한 저장소로 옮겨 전체 비용 절감을 자동으로 균형