[PostgreSQL] TimescaleDB

2025. 9. 5. 17:33·Database

TimescaleDB란 ?

TimeScaleDB는 PostgreSQL 확장으로 개발된 오픈 소스 시계열 데이터베이스

  • 시계열데이터 저장 및 쿼리 성능 최적화하면서도 PostgreSQL의 강력한 기능 유지

 

핵심 기능 : 하이퍼테이블

하이퍼테이블은 사용자에게 하나의 테이블처럼 보이지만, 내부적으로 여러 개의 작은 청크로 분할되어있다.
(한마디로 논리적 테이블)

  • 쪼개는 최적화 작업이 백그라운드에서 실행
    이 청크들은 시간 간격, 다른 차원 (id, 위치 등)으로 분할될 수 있다.

 

장점

  1. Chunk pruning
    WHERE ts BETWEEN ... 같은 시간 필터만 있어도, 해당 범위를 벗어난 chunk는 통째로 스킵 → I/O 크게 절감.
  2. 병렬 처리 쉬움
    서로 다른 chunk를 여러 워커가 병렬 스캔 가능(특히 집계/리포트).
  3. 인덱스/압축/보존을 chunk 단위로
    오래된 chunk만 압축/삭제(retention) 하고, 최근 chunk는 쓰기 최적화 상태 유지
 
하이퍼테이블 생성 및 chunk interval 설정 예시

 

1. 기존 테이블 -> 하이퍼테이블

SELECT create_hypertable(
'bgp_updates', 
'time', // 시간축 컬럼 지정, TIMESTAMP 타입 필수
chunk_time_interval => INTERVAL '1 day', // chunk interval
if_not_exists => TRUE);

 

2. 기존테이블 -> 하이퍼테이블 : by_range (postgre 14~)

SELECT create_hypertable('bgp_updates', by_range('time', INTERVAL '1 day') );
//이 경우 if not exitst는 별도 설정

 

3. 이미 존재하는 테이블의 chunk interval 수정

SELECT set_chunk_time_interval('bgp_updates', INTERVAL '24 hours');

 

 

공간축 파티셔닝

 

데이터가 특정 시간 구간 내에 너무 많아 단일 chunk가 커지는 경우
추가로 다른 컬럼을 기준으로 나눈다. 이때 사용하는 컬럼을 파티셔닝 컬럼 이라고 한다.
(예시 : BGP Updates 데이터에서의 컬렉터 번호, IoT 센서 데이터의 디바이스id)

 

간단하게 만약 컬렉터 번호에 대한 8-way 파티션을 주면, 시간 구간 x 8 개의 청크가 생성된다.

 

적용예시

SELECT create_hypertable(
  'bgp_updates',
  'ts',
  partitioning_column => 'collector',
  number_partitions  => 8,              -- RRC00~RRC07
  chunk_time_interval => interval '12 hours'
);

 

장점

  • 쓰기 분산: 동시에 많은 데이터가 들어올 때, 여러 chunk에 나눠 기록되므로 INSERT 경합 줄어듦.
  • 병렬 읽기: 한 시간 구간 안에서도 여러 worker가 chunk별로 나눠 읽을 수 있음.
  • Chunk 크기 관리: 특정 컬럼 값이 너무 많아 chunk가 몇십 GB까지 커지는 걸 방지.

'Database' 카테고리의 다른 글

[MySQL] 클러스터링 인덱스  (2) 2025.01.23
[MySQL] B-Tree 인덱스 - 2  (0) 2025.01.16
[MySQL] B-Tree 인덱스-1  (1) 2025.01.14
[MySQL] 인덱스  (2) 2025.01.14
[MySQL] 인덱스와 잠금, MySQL의 격리 수준  (0) 2025.01.10
'Database' 카테고리의 다른 글
  • [MySQL] 클러스터링 인덱스
  • [MySQL] B-Tree 인덱스 - 2
  • [MySQL] B-Tree 인덱스-1
  • [MySQL] 인덱스
폐프
폐프
  • 폐프
    폐프의삶
    폐프
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • 2023 하계 모각코 (12)
      • 2023-24 동계 모각코 (8)
      • 2024 SW ACADEMY (5)
      • Spring (1)
      • JPA (0)
      • JAVA (2)
      • Database (11)
      • OS (5)
      • Network (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
폐프
[PostgreSQL] TimescaleDB
상단으로

티스토리툴바