티스토리 뷰

TimescaleDB 소개

  • TimescaleDBPostgreSQL을 기반으로 시계열 데이터(time-series data) 지원을 강화한 오픈 소스 시계열 RDBMS이다.

TimescaleDB 장점

  • 40년 넘은 역사와 대중성을 자랑하는 SQL을 지원하는 유일한 시계열 데이터베이스이다.
  • PostgreSQL의 확장판이므로, PostgreSQL을 지원하는 모든 클라이언트, ORM을 포함한 여러 언어의 코드 레벨에서 즉시 사용이 가능하다. (예를 들어 HeidiSQL 클라이언트에서도 즉시 이용이 가능하다.)
  • 프로덕션 레벨의 상업 버전으로 Timescale Cloud 매니지드 서비스를 제공한다. AWS 등의 주요 클라우드 벤더를 모두 지원하며, VPC 피어링, IP 화이트리스트 기능을 제공한다. 가장 큰 장점은 데이터베이스 스토리지에 대한 오토 스케일링을 다운 타입 없이 제공하여 멀티 노드의 관리 부담을 줄일 수 있다. (2021-10-07 현재 시점 노드 당 최대 16TB까지 오토 스케일링 지원)
  • 멀티 노드 환경에서 데이터베이스의 수평 확장을 Peta-byte Scale 레벨까지 유연하게 지원한다. (2021-02-04 공개된 TimescaleDB 2.0부터 지원) 실제 운영 사례에 따르면 22대 멀티 노드 환경에서 하루 10억개 이상의 시계열 데이터를 아무 문제 없이 저장할 수 있었다고 한다. [관련 링크]

TimescaleDB 단점

  • PostgreSQL만큼 보편적이지 않다보니 클라이언트나 코드 레벨에서 네이티브하게 지원하지 않는다. 예를 들어 TimescaleDB에만 존재하는 시계열 필드 관련 Function의 실행은 가능하지만, 네이티브하게 알아듣지는 못한다. 코드 레벨에서 JPA의 경우 커스텀 Dialect 구현체를 직접 구현해야 한다.

TimescaleDB 특징

  • 특정 테이블이 TIMESTAMP 또는 DATE 타입의 필드를 포함할 경우, 시계열 테이블(time-series table)로 취급된다. (보다 전문적으로는 hypertable이라고 부르며 TimescaleDB의 핵심 개념이라고 할 수 있다.)
  • 시계열 테이블에는 데이터 변경점이 발생할 때마다 시계열 필드를 기준으로 테이블을 여러 덩어리(chunked)로 쪼개는 최적화 작업을 백그라운드에서 자동으로 수행한다. 이를 통해 가장 최근의 덩어리에 해당하는 데이터와 인덱스가 메모리에 유지되어 대량의 데이터가 유입되어도 꾸준하게 빠른 성능의 CRUD를 보장한다.
  • 한편, 백그라운드에서 내부 알고리즘의 판단에 의해 자동으로 특정 시일이 지난 덩어리를 압축한다. 이를 통해 최신 데이터의 유입 성능은 보장하면서(노드 1개 기준 초당 10만개 로우 유입 보장) 오래된 데이터를 압축하여 전체 스토리지 공간을 절약할 수 있다. (압축 기법을 통해 200TB 이상의 데이터를 16TB 크기에 담을 수 있다.)

TimescaleDB 실행

  • Docker를 이용하여 아래와 같이 실행할 수 있다.
# TimescaleDB 데몬 프로세스로 실행
$ docker run -d --name some-timescaledb -p 5432:5432 -e POSTGRES_PASSWORD=password timescale/timescaledb:latest-pg12

# 실행 중인 TimescaleDB의 psql 콘솔 실행
$ docker exec -it some-timescaledb psql -U postgres

참고 글

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함