압축 및 보존 정책
TimescaleDB의 열 기반 압축으로 오래된 청크를 압축하고 만료된 청크를 자동으로 삭제해보세요.
압축 및 보존 정책은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
왜 압축할까요
시계열 데이터는 압축 효율이 매우 높습니다. TimescaleDB는 청크를 열 형식으로 압축하며, 압축률이 10~20배에 이르는 경우가 많습니다.
하이퍼테이블 압축
압축된 데이터를 분할하고 정렬할 열을 구성합니다:
ALTER TABLE metrics SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'device_id',
timescaledb.compress_orderby = 'ts DESC'
);압축 정책
오래된 청크의 압축을 자동화합니다:
SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.압축된 데이터의 쿼리 성능
압축된 청크에 대한 읽기도 여전히 빠릅니다. TimescaleDB가 필터를 열 저장소로 푸시다운하기 때문입니다. 압축된 청크의 쓰기와 UPDATE는 제한됩니다(대부분 추가 전용으로 사용됩니다).
보존 정책
N개 간격보다 오래된 데이터를 삭제합니다 — 빠른 방식(청크 삭제)과 느린 방식(DELETE)의 차이입니다:
SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.수동 청크 작업
청크를 살펴봅니다:
SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');스토리지 계층화
청크별 테이블스페이스를 변경하여 오래된 청크를 느린 디스크로 이동합니다. 압축과 함께 사용하면 적은 비용으로 수년간의 데이터를 보관할 수 있습니다.
실제 압축률
센서 데이터에서 일반적으로 나타나는 압축률:
- 수치 측정값: 공간을 90~95% 이상 절약
- 범주형 데이터: 70~80%
- 문자열 또는 JSON: 내용에 따라 다름
업데이트를 위한 압축 해제
오래된 데이터를 업데이트하기 위해 청크의 압축을 해제한 다음 다시 압축할 수 있습니다:
SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;순수 PostgreSQL에서의 대응 방식
TimescaleDB가 없어도 파티션을 사용하여 직접 구현할 수 있습니다:
DROP TABLE events_2022; -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.연속 집계와 결합하기
일반적인 패턴은 원시 데이터를 30일 동안 보관하고, 시간 단위 집계는 1년 동안 보관하며, 일 단위 집계는 영구적으로 보관하는 것입니다. 각 계층에 적절한 압축 또는 보존 정책을 적용합니다.
모니터링
압축된 크기와 압축률을 추적합니다:
SELECT * FROM hypertable_compression_stats('metrics');복습
압축과 보존 정책을 결합하면 PostgreSQL을 제대로 된 시계열 저장소로 만들 수 있습니다.
- 오래된 청크를 10~20배 압축합니다
- 보존 정책은 청크를 즉시 삭제합니다
- 보존 기간에 따라 원시 데이터, 시간 단위 데이터, 일 단위 데이터를 계층별로 저장합니다
- 필요하면 과거 데이터를 채우기 위해 압축을 해제합니다
빠른 확인
원시 측정값은 7일 동안 보관하고 그보다 오래된 데이터는 모두 자동으로 삭제하려고 합니다. TimescaleDB에서는 어떻게 해야 하나요?
자주 묻는 질문
“압축 및 보존 정책” 강의는 무료인가요?
네 — “압축 및 보존 정책” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“압축 및 보존 정책”에서 뭘 배우나요?
TimescaleDB의 열 기반 압축으로 오래된 청크를 압축하고 만료된 청크를 자동으로 삭제해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“압축 및 보존 정책” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- TimescaleDB 하이퍼테이블
- 연속 집계
- 압축 및 보존 정책
- 시계열 인덱스 선택