티스토리 뷰

반응형

최근에 관계형 데이터베이스(Relational Database)와 NoSQL(비관계형 데이터베이스)에 이어 많은 주목을 받는 시계열 데이터베이스(TSDB, Time Series Database)가 있습니다. 이번에는 TSDB에 대해 간단히 살펴보고자 합니다.

 

 

1. 시계열 데이터베이스(TSDB, Time Series Database) 란?


[ 시계열 데이터(Time Series Data) 란? ]

Time-Stamped Data라고도 불리는 Time Seriese Data(시계열 데이터)는 시간에 따라 저장된 데이터를 의미한다. 시계열 데이터들은 동일한 소스로부터 시간이 지남에 따라 만들어진 데이터들로 구성되므로 시간 경과에 따른 변화를 추적하는데 용이하다. 다소 어렵게 느낄 수 있지만 Time Series Data는 어디에나 있는 데이터이다.

예를 들어 어떤 집안의 온도들부터 경제 지표, 환자의 심장 박동수나 회사의 주가 등과 같은 모든 것들이 시계열 데이터가 될 수 있다. 그 뿐만 아니라 서버로부터 기록되는 히스토리성 데이터나 센서 데이터, 이벤트 등 역시 시계열 모두 데이터가 될 수 있다.

 

 

예를 들어 어떤 회사의 주가를 파악하기 위해서는 시간에 따라 주가가 어떻게 저장되어 있는지를 저장해야 한다. 그러므로 회사의 주가 정보들은 시계열 데이터가 될 수 있으며, 이러한 시간에 따른 데이터들을 기존의 데이터베이스들로 저장하기에는 분명 한계가 있기 때문에 시계열 데이터베이스(TSDB, Time Series Database)가 주목을 받게 되는 것이다.

 

 

[ 시계열 데이터베이스(TSDB, Time Series Database) 란? ]

시계열 데이터베이스(TSDB, Time Series Database)란 시계열 데이터를 처리하기 위해 최적화된 데이터베이스로써 빠르고 정확하게 실시간으로 쌓이는 대규모 데이터들을 처리할 수 있도록 고안되었다.

TSDB는 데이터들과 시간이 함께 저장하는데, 이를 통해 시간의 흐름에 따라 데이터를 분석하기에 매우 용이하다. 과거의 데이터를 시간과 함께 기록용으로 저장하므로 주된 작업은 INSERT와 DELETE이며 UPDATE가 아니다.

사실 TSDB는 새로운 것이 아니고 2010년 초반부터 존재하였다. 하지만 1세대의 시계열 데이터베이스들은 지나치게 경제 데이터에만 초점을 두고 있어서 범용적으로 적용하기에는 한계가 있었고, 그 외에도 하드웨어 성능의 한계가 있었다. 하지만 최근 TSDB는 이러한 부분들을 개선하였을 뿐만 아니라 최근 하드웨어가 급속도로 발전하고, 빅데이터의 시대가 도래함에 따라 더욱 주목을 받게 되었다.

 

 

[ 시계열 데이터베이스(TSDB, Time Series Database)의 중요성 및 증가 추세 ]

Time Series Database(시계열 데이터베이스)가 중요한 이유는 오늘날 엄청나게 많은 데이터들이 수집되기 때문이다. 인공지능의 급격한 발달로 필요한 데이터들의 양은 급증하였고, 이러한 데이터들을 처리하기에는 관계형 데이터베이스와 NoSQL로 한계가 있기 때문이다.

대표적으로 많은 데이터를 사용하는 자율주행과 같은 경우 약 8시간 운전할 때 마다 40TB의 데이터를 만들고 사용하는 것으로 알려져있는데, 기존의 구조에서는 분명 한계가 있을 것이다. 이러한 문제를 해결하기 위해 거의 끝없는 데이터들을 처리할 수 있는 TSDB, 시계열 데이터베이스의 중요성이 대두되기 시작하였다.

 

 

DB Engines에서 최근 2년 동안의 데이터를 살펴보면 Time Series 데이터베이스가 엄청난 속도로 증가하고 있음을 파악할 수 있다. 이렇듯 TimeSeries DB에 대한 관심이 증가하는 이유는 빅데이터의 시대에 대용량의 데이터를 빠르게 처리하기에 적합하기 때문이다.

참고로 가장 유명하고 많이 사용되는 TSDB 중 하나인 InfluxDB는 2013년에 처음 탄생하였다.

 

 

[ 시계열 데이터베이스(TSDB, Time Series Database)의 특징 ]

 

시간을 기반으로 하는 저장 공간

시계열 데이터베이스는 기존의 다른 데이터베이스들과 차별이 되는 핵심적인 아키텍처 디자인 특징이 있는데, 그것은 바로 time-stamp를 기반으로 하는 저장소를 가지고 있다는 것이다. 이를 통해 데이터를 압축하고 요약하는 등의 작업을 진행하여 대규모의 시간 기반 데이터들을 다룰 수 있고, 시간을 기반으로 하는 쿼리를 가능하게 한다.

 

위의 그림은 대표적인 TSDB인 InfluxDB의 데이터 저장 구조이다. 이렇듯 시간을 기반으로 하여 데이터를 분할해 저장함으로써 메모리에 로드되는 데이터의 양 자체를 줄일 수 있다. 또한 최적화된 압축 알고리즘을 사용하여 이러한 비용을 최소화하고 있다.

 

 

빠른 처리 속도

TSDB는 빠르고 효율적인 방법으로 데이터를 수집하기 위해 만들어졌다. 물론 RDB도 빠르지만 데이터의 양이 증가함에 따라 성능이 급격하게 느려지는 경향이 있다. 특히 테이블에 인덱싱이 걸려있다면 인덱싱의 재정렬 등에 의해 퍼포먼스는 점점 더 떨어지게 된다.

반면에 TSDB에서의 인덱스는 시간에 따라 축적된 데이터들에 최적화되었기 때문에, 시간이 지나도 데이터를 수집하는 속도가 느려지지 않고 빠른 처리 속도를 보여준다.

다양한 자동화된 기능 제공

TSDB에는 시간에 따라 변화되는 데이터들을 저장하므로 데이터의 양이 상당히 많으며, 시간에 따른 데이터의 요약 또는 통계 등과 같은 작업이 흔히 요구된다. 예를 들어 회사의 주가가 지난 6개월 대비 몇 퍼센트 데이터가 증가하였는지 등과 같은 것들이다.

TSDB는 이렇게 특정 주기마다 자동으로 데이터들을 처리하는 기능(InfluxDB의 Continous Query, 연속적인 쿼리)이나 오래된 데이터를 자동으로 삭제하도록 도와주는 기능(InfluxDB의 Retention Policy, 보존 정책) 등을 제공함으로써 편리성을 제공하고 있다.

 

 

 

물론 그 외에도 여러가지 단점 또는 데이터베이스를 시간에 최적화하기 위한 Trade-Off들이 있다. 대표적인 것들로는 다음과 같은 것들이 있다.

  • INSERT와 SELECT에 최적화되어 DELETE나 UPDATE에 대한 기능이 상당히 제한된다.
  • 시간에 따라 데이터를 오름차순으로 정렬하므로 임의의 시간으로 데이터를 읽고 쓰는 작업(Read/Write)은 성능이 떨어진다.
  • 대량의 데이터가 쓰여지도록 최적화되어 DB에 부하가 걸린 경우 항상 최신의 데이터를 반환하지 못할 수 있다.
  • 기타 등등

 

은빛 탄환은 없다(No Silver Bullet). 결국 모든 것에는 Trade-Off가 있기 마련인데, TSDB의 경우 실시간으로 시간에 따라 계속되는 데이터가 쌓이는 것들을 고려하여 설계되었다. 그러므로 삭제나 수정의 요청이나 임의로 접근하는 데이터들에 대한 성능은 비교적 떨어질 수 있으며, 데이터가 끊임없이 적재될 수 있도록 쓰기 작업에 최적화된 것이다.

 

 

 

 

TSDB가 최근에 많은 주목을 받고, 떠오르고 있다고 하여 무조건 좋은 것이 아니다. 내가 사용하고자 하는 데이터베이스의 주된 용도와 각각의 데이터베이스들의 장점 및 단점 등을 비교하여 현명하게 선택하는 것이 중요할 것이다.

 

 

 

 

관련 포스팅

  1. 시계열 데이터베이스(TSDB, Time Series Database) 란? - (1/2)
  2. InfluxDB란? 핵심 개념, 내부 구조 및 특징  - (2/2)

 

 

 

참고 자료

반응형
댓글
댓글쓰기 폼
반응형
공지사항
Total
1,584,951
Today
1,428
Yesterday
5,473
TAG more
«   2021/10   »
          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
31            
글 보관함