시계열 데이터베이스란?

image.png

image.png

시계열 데이터란 간단히 말해 시간에 따라 저장된 데이터를 의미합니다. 우리 주변에는 사실 시계열 데이터가 굉장히 많습니다. 스마트폰의 위치 정보, 심박수 모니터링, 주식 시장의 가격 변동, 공장 기계의 온도 측정값 등 모두 시간을 축으로 기록되는 데이터들입니다.

시계열 데이터베이스, 줄여서 TSDB는 이러한 시계열 데이터를 처리하기 위해 특별히 최적화된 데이터베이스입니다. 빠르고 정확하게 실시간으로 쌓이는 대규모 데이터들을 효율적으로 처리할 수 있도록 고안되었습니다.

image.png

TSDB의 중요한 특징 중 하나는 데이터를 '기록용'으로 저장한다는 점입니다. 즉, 주된 작업은 INSERT와 DELETE이며, UPDATE 작업은 상대적으로 드뭅니다. 이는 시계열 데이터의 특성상 과거 데이터가 변경되는 경우가 거의 없기 때문입니다. 고객의 1시간전의 8000원의 체결 히스토리가 갑자기 5000원으로 바뀌는 일이 없는 것과 같습니다.

이러한 특성 때문에 TSDB는 쓰기 작업이 매우 빈번하게 발생하며, 저장 공간이 빠르게 증가하는 경향이 있습니다. 또한 시간 범위를 기준으로 한 쿼리가 많다는 특징이 있습니다.

시계열 데이터베이스는 일반 관계형 데이터베이스와 달리, 데이터의 양이 증가해도 수집 성능이 크게 저하되지 않습니다. RDB는 데이터가 증가함에 따라 인덱스 재정렬 등으로 인해 성능이 급격히 느려지는 반면, TSDB는 시간에 따라 축적되는 데이터에 최적화된 인덱싱 방식을 사용하기 때문에 장기간 사용해도 안정적인 성능을 유지할 수 있습니다.

다운 샘플링이란?

image.png

다운 샘플링(Downsampling)은 시계열 데이터베이스에서 중요한 개념입니다. 이는 높은 세부 수준(고해상도)의 데이터를 낮은 세부 수준(저해상도)으로 변환하는 과정을 의미합니다.

예를 들어, 초당 한 번씩 코인 가격을 기록한다면 하루에만 8만 6천 개, 1년이면 3천 150만 개의 데이터 포인트가 생성됩니다. 이런 대량의 데이터를 1분 단위로 다운샘플링하면 1년 데이터가 약 52만 개로 줄어들어 저장 공간과 쿼리 성능을 크게 개선할 수 있습니다. 이러한 시간 기반 집계와 다운샘플링은 시계열 데이터베이스의 핵심 기능 중 하나입니다.

특히 시계열 데이터는 시간이 지날수록 세부 데이터의 중요성이 낮아지는 경향이 있습니다. 예를 들어, 지금의 체결은 초 단위로 모니터링해야 할 수 있지만, 6개월 전 데이터는 일 단위 평균값만으로도 충분한 인사이트를 얻을 수 있습니다. TSDB는 이런 '시간에 따른 데이터 중요도 감소'라는 특성을 활용해 자동화된 다운샘플링과 보존 정책을 제공합니다.

다운 샘플링 적용과 정책 설정은 이후에 보여드리겠습니다.

TimescaleDB 소개

image.png

저희 코인 거래소 프로젝트는 차트 정보를 제공하기 위해 시계열 데이터베이스를 도입했습니다.

처음에는 대표적인 시계열 데이터베이스인 InfluxDB를 사용했지만 체결 데이터 특성상 높은 카디널리티, 즉 매수자와 매도자 ID 필드에 수백만 개의 고유값이 존재하는 환경에서 성능이 다소 저하되는 문제가 있었습니다. 이러한 이유로 TimescaleDB로 전환하게 되었습니다

TimescaleDB는 PostgreSQL을 확장한 형태의 시계열 데이터베이스로, 관계형 데이터베이스와 시계열 데이터베이스의 장점을 모두 결합한 솔루션입니다.

TimescaleDB 특징