TimescaleDB 하이퍼테이블
청크 간격에 따른 자동 시간 파티셔닝을 적용해 Postgres 테이블을 TimescaleDB 하이퍼테이블로 변환해보세요.
TimescaleDB 하이퍼테이블은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
TimescaleDB란
시계열 데이터를 위해 만들어진 PostgreSQL 확장입니다. 자동 시간 분할, 압축, 보존 정책 및 연속 집계를 추가합니다. 독립적으로 사용하거나 일반 PostgreSQL과 함께 사용할 수 있습니다.
하이퍼테이블
논리적으로는 하나의 테이블이지만 물리적으로는 시간을 기준으로 여러 "청크"로 나뉘는 테이블입니다:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE metrics (
ts TIMESTAMPTZ NOT NULL,
device_id BIGINT NOT NULL,
value DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.청크 시간 간격
기본 청크는 7일입니다. 데이터 유입 속도에 맞게 조정합니다(유입 속도가 빠른 데이터에는 더 작은 청크를 사용합니다):
SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.데이터 삽입
일반적인 INSERT를 사용하면 됩니다. TimescaleDB가 행을 올바른 청크로 라우팅합니다:
INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);하이퍼테이블 조회
일반 테이블처럼 보입니다. 플래너는 시간 범위가 지정된 쿼리에서 필요 없는 청크를 제거합니다:
SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.time_bucket: 더 똑똑한 date_trunc
TimescaleDB의 그룹화 도우미입니다:
SELECT time_bucket('1 hour', ts) AS hour,
AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;다중 열 파티셔닝
다중 테넌트 작업 부하에서는 device_id를 기준으로도 파티션을 나눕니다:
SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.두 필터를 함께 사용하는 조회
두 파티션 차원으로 모두 필터링할 때 성능이 가장 좋습니다:
SELECT * FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.하이퍼테이블의 인덱스
인덱스가 모든 청크에 전파됩니다:
CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.하이퍼테이블 업데이트
UPDATE와 DELETE를 사용할 수 있지만 시계열 데이터에서는 드물게 사용해야 합니다. 오래된 데이터는 일반적으로 추가 전용이며 변경할 수 없습니다.
일반 테이블에서 마이그레이션하기
기존 테이블을 하이퍼테이블로 변환할 수 있습니다:
SELECT create_hypertable('metrics', 'ts', migrate_data => true);복습
하이퍼테이블은 PostgreSQL을 위한 자동 시간 파티셔닝입니다.
- 하나의 논리적 테이블과 여러 개의 물리적 청크
- create_hypertable + chunk_time_interval
- 구간별 집계에는 time_bucket
- 인덱스가 모든 청크에 전파됨
빠른 확인
IoT 측정값을 초당 10만 행의 속도로 수집하고 있습니다. 테이블을 TimescaleDB 하이퍼테이블로 변환하는 이유는 무엇인가요?
자주 묻는 질문
“TimescaleDB 하이퍼테이블” 강의는 무료인가요?
네 — “TimescaleDB 하이퍼테이블” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“TimescaleDB 하이퍼테이블”에서 뭘 배우나요?
청크 간격에 따른 자동 시간 파티셔닝을 적용해 Postgres 테이블을 TimescaleDB 하이퍼테이블로 변환해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“TimescaleDB 하이퍼테이블” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- TimescaleDB 하이퍼테이블
- 연속 집계
- 압축 및 보존 정책
- 시계열 인덱스 선택