Blog logo콜로리 블로그
개발 > 데이터
2달 전

시계열 데이터베이스 TimescaleDB 사용해보기 - 설치

Post thumbnailImage

TimescaleDB?

TimescaleDB는 시계열DB이며 오픈소스이다.


RDBMS인 PostgreSQL를 기반에 Extension으로 설치되어 동작하며, RDBMS 구조를 함께 사용 할 수 있는 장점이 있다.


이전에 소개했던 InfluxDB 에서는 일반적으로 사용되는 쿼리 언어가 아닌 InfluxDB만의 문법을 이용해야 질의해야했는데,

TimescaleDB는 일반적인 SQL 문법 그대로 이용 가능한 장점이 있다.

(시계열 DB를 사용하는데 있어서 InfluxDB 대신에 TimescaleDB를 선택하게 된 주된 이유이기도 하다.)


PostgresDB에서 Extension으로 쉽게 설치 가능하며, 혹은 완전 관리형 클라우드 서비스(요금 참조)를 이용 할 수도 있다.




TimescaleDB의 특징으로는 Postgresql 을 확장하면서 표준 인터페이스를 따르며 시간에 따른 자동 파티셔닝을 지원한다.


그리고 TimescaleDB는 일반 테이블처럼 보이지만 실제로는 추상화된 가상뷰라고 보면 되는 하이퍼테이블(HyperTable)이다.

기준이 되는 시간(TIMESTAMPTZ) 속성은 자동으로 인덱스로 사용되며,

데이터 변경시 시계열 필드를 기준으로 테이블을 청크(chunked)로 나누어 최적화해 저장해 빠른 성능의 데이터 쓰기,읽기 작업을 처리한다고 한다.


어쨋든 TimescaleDB의 장점은 기존의 PostgresSQL를 사용하는 것처럼 느껴지기에 사용성이 좋다는 것이다.

(물론 주요 특징은 공부하면 좋다.)



Mac M1에서 Postgresql를 설치해서 TimescaleDB를 사용해보자.

(참조- Postgres 설치하기)




설치하기

공식홈페이지에서 Mac OS에 설치하는 가이드 링크를 보며 따라해보자.


Homebrew가 설치가 안되어있다면 아래 명령어로 설치해주자.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


tap 명령어로 timescale 저장소를 brew에 추가해준다.

brew tap timescale/tap


DB를 설치한다.

brew install timescaledb



그리고 설치된 Postgresql의 설정(postgresql.conf)을 변경해야한다.

postgresql의 기본 설정이 보수적으로 되어있기 때문에 Timescale 운영에 적합하게 변경해야 하는 것이다.

직접 설정을 변경해도 되지만, 이 귀찮은 작업을 대신 해주는 timescaledb-tune 라이브러리가 있다. (오예)


해당 라이브러리를 이용하려면 Go 언어가 설치되어 있어야 한다.


만약 Go가 설치가 안되어있다면 Go 공식홈을 참조해 설치해주고 환경변수에 아래 내용을 추가해주자.

(그래야 go install로 설치한 것을 명령어로 바로 사용 할 수 있다)

export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin"



Go설치 후에 라이브러리를 설치한다.

go install github.com/timescale/timescaledb-tune/cmd/timescaledb-tune@main


설치된 라이브러리 이름을 입력해주면 postgresql.conf 설정을 변경해준다.

만약 단계별로 설정되는 값을 상세히 확인하며 진행하고 싶다면 옵션 없이 실행해주면 된다.

timescaledb-tune --quiet --yes



참고로 postgresql이 실행중이라면 변경된 설정을 적용하기 위해 재시작해주어야한다.

brew services restart postgresql@16



homebrew에서 설치된 timescaledb 버전을 확인하고 스크립트를 실행시켜준다.

해당 스크립트는 postgresql에서 extension으로 설치 할 수 있게 설치된 timescaledb의 경로를 옮겨주는 목적이다.

나의 경우에는 2.14.2 버전이 설치되어서 해당 버전의 맞는 경로를 입력해 실행해주었다.

ls /opt/homebrew/Cellar/timescaledb/
/opt/homebrew/Cellar/timescaledb/2.14.2/bin/timescaledb_move.sh



psql도 설치해주자.

postgresql를 다루는 도구라고 보면 된다.

brew install libpq
brew link --force libpq
echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc



이제 postgresql에 접속해서 extension을 설치해준다.

CREATE EXTENSION IF NOT EXISTS timescaledb;




이제 시계열 DB 사용을 위한 준비가 끝났다.

다음 포스팅에서 데이터 다루는 내용을 준비해보겠다.

#시계열 DB#TimescaleDB#설치