본문 바로가기
Fast API/fastapi 팁

TimescaleDB에 배우기

by 붕어사랑 티스토리 2023. 12. 12.
반응형

1. TimescaleDB란?

 

시간에 따라 데이터를 저장하고 싶을 때 사용하는 데이터베이스이다. 보통 이런걸 시계열 데이터베이스 라고 한다.

TimescaleDB는 Postgresql의 extension이다. 대충 확장팩이라고 생각하면 될듯

주식그래프 같이 시간에 따른 데이터를 저장해야 할 때 이 데이터베이스를 사용해야 한다.

 

 

 

2. 설치

 

공식문서를 들어가면 자기네들 클라우드를 사용하라고 가이드를 엄청 하는데, 실제 개발 테스트에서는 커맨드로 하고 싶은게 보통이다.

하기 링크를 참고하여 커맨드로 설치해주자

 

 

Timescale Documentation | Install self-hosted TimescaleDB

Install TimescaleDB on your own hardware

docs.timescale.com

 

 

 

 

3. 하이퍼테이블의 개념과 생성방법

 

하이퍼테이블이란 TimescaleDB의 핵심 기능중 하나이다. 하이퍼 테이블은 chunk단위로 시간 데이터를 저장한다. 만약 아래의 그림처럼 chunk의 interval을 1day로 하면, 하이퍼테이블은 데이터를 삽입할 때 알아서 chunk단위로 분류 해 준다. 인터벌 값은 내맘대로 바꿀 수 있다.

 

 

아래는 각 환경별로 하이퍼테이블을 생성하는 가이드 링크이다.

 

Timescale Documentation | Code quick starts

Get started with TimescaleDB and your favorite language

docs.timescale.com

 

 

 

 

4. 하이퍼테이블의 chunkinterval 설정방법

 

 

먼저 chunk internval 확인방법은 다음과 같다

SELECT h.table_name, c.interval_length
  FROM _timescaledb_catalog.dimension c
  JOIN _timescaledb_catalog.hypertable h
    ON h.id = c.hypertable_id;

 

위 쿼리를 입력하면 아래와 같이 나온다

 

table_name | interval_length
-----------+-----------------
metrics    |    604800000000
(1 row)

 

 

 

chunk interval을 설정하는 방법은 다음과 같다

 

먼저 생성할때는 테이블을 생성한뒤에 아래와 같은 쿼리를 이용한다

SELECT create_hypertable(
  'conditions',
  by_range('time', INTERVAL '1 day')
);

 

 

이미 존재하는 하이퍼테이블의 chunk interval을 바꾸고 싶다면 아래와 같은 쿼리를 이용한다.

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

 

 

 

 

5. 하이퍼 테이블 수정방법

 

Column추가하는 방법은 다음과 같다

ALTER TABLE conditions
  ADD COLUMN humidity DOUBLE PRECISION NULL;

 

 

테이블의 이름을 수정하고 싶다면 다음과 같은 쿼리를 이용한다

ALTER TABLE conditions
  RENAME TO weather;

 

반응형

댓글