코딩공부/DB

PostgreSQL TimescaleDB의 청크와 압축 개념정리

표자 2025. 4. 18. 16:59

 

✅ 1. 청크(Chunk)의 개념과 "물리적인 데이터 분리"

🔹 청크란?

  • 하나의 큰 테이블 데이터를 시간/범위 기준으로 나누어 저장한 작은 단위
  • 주로 TimescaleDB와 같은 확장 모듈에서 사용
  • 예: test라는 테이블이 있다고 하면, test_chunk_1, test_chunk_2 등으로 나뉘게 됨

🧱 “물리적인 데이터 분리”란?

단순히 "논리적으로 구분된 데이터"가 아니라, 실제 디스크상에서 각각의 청크가 독립된 테이블로 생성되어 분산 저장되는 것을 말합니다.

📌 쉽게 말하면:

큰 창고(test 테이블)를 작은 박스들(test_chunk_xx 테이블)로 나눠 담는 것!


🖼 그림 예시

┌────────────────────────────┐
│         test 테이블        │
└────────────────────────────┘
          ↓ 청크 분리
┌────────────┐ ┌────────────┐ ┌────────────┐
│ test_chunk_1 │ │ test_chunk_2 │ │ test_chunk_3 │
│ (2023년 1월) │ │ (2023년 2월) │ │ (2023년 3월) │
└────────────┘ └────────────┘ └────────────┘
  • 각 청크는 실제로 독립적인 테이블로 생성됨 (pg_class 테이블에도 각각 존재)
  • 따라서 test라는 테이블에는 보이지 않지만, 백엔드에서는 청크들이 물리적으로 존재하는 것입니다.

✅ 2. 청크 vs 압축 – 목적과 차이

항목 청크 (Chunk) 압축 (Compression)

목적 데이터 분산 관리 / 빠른 조회 저장공간 절약 / 대용량 데이터 최적화
동작 방식 테이블을 시간/공간 단위로 쪼개서 저장 중복 데이터를 줄이고, 열 기반으로 데이터 압축
효과 쿼리 속도 개선 (필요한 청크만 검색) 저장 용량 감소 / 디스크 I/O 절감
사용 시점 대량 데이터가 주기적으로 쌓일 때 (ex. 로그, 센서) 오래된 데이터를 더 이상 자주 조회하지 않을 때
PostgreSQL 기본기능? ❌ (TimescaleDB 등 확장 기능) ❌ (TimescaleDB 압축 기능 필요)

📌 요약

  • 청크는 데이터를 잘게 나눠서 저장하는 것 → 조회 성능 ↑
  • 압축은 데이터의 공간을 줄이는 것 → 저장공간 ↓

👉 둘 다 성능 향상 목적이 있지만,
→ 청크는 "분산 저장 & 빠른 조회",
→ 압축은 "공간 절약 & 아카이빙"에 더 초점이 있습니다.

 

728x90