TSDB에 대한 내용은 방대하다. 본 포스트에서는 TSDB에 대해 기초적인 이해를 위해 공부하며 작성됐다.
TSDB는 시계열 데이터베이스(Time Series Database)라는 뜻으로, 시간(time)과 값(value)가 한 쌍을 이루는 데이터를 시간에 따라 순차적으로 저장하고 서비스하는 시스템을 말한다.
TSDB의 종류에는 InfluxDB, Prometheus, Graphite 등등이 존재한다.
본 포스트는 Elasticsearch
오래된 데이터를 삭제하기 편리하다
RDBMS에선 오래된 데이터를 삭제하기 번거로우나, TSDB는 시간을 기준으로 데이터 삭제가 가능하다.
빠른 처리 속도
TSDB는 시계열 데이터를 빠르고 효율적으로 수집할 수 있다. RDB의 경우 데이터 양이 많아질 수록 속도가 저하되며 인덱싱이 걸려있다면 퍼포먼스는 더욱 급격히 저하된다.
전통적인 RDB는 테이블 전체의 데이터를 like 검색하기 때문에, row가 많아질 수록 퍼포먼스가 저하된다. 하지만 TSDB에서는 inverted index를 기준으로 데이터를 저장하기에 데이터를 빠르게 조회할 수 있다.
즉, RDB는 데이터를 저장하지만 TSDB는 데이터를 색인 한다.
색인하다 : 색인(索引)은 책 속의 낱말이나 구절, 또 이에 관련한 지시자를 찾아보기 쉽도록 일정한 순서로 나열한 목록을 가리킨다. 인덱스(index)라고도 한다.
데이터를 term과 id로 저장하며, term을 기준으로 인덱싱 되는 것이다.
문자열 데이터를 검색어 토큰으로 저장하기 위한 일련의 과정이다.
Text Analysis는 Elasticsearch를 기준으로 작성됐으며, 다른 TSDB에서는 해당 과정을 어떻게 수행하는지 나도 모른다. 다만 Elasticsearch를 기준으로 TSDB의 concept를 이해할 수 있을 것으로 생각되어 정리했다.
문자열 데이터를 검색어 토큰으로 처리하는 기능. Text Analysis는 전체의 과정이며, Analyzer는 기능을 뜻한다. Text Analysis는 Analyzer 후 stemming을 거쳐 완료된다.
Analyzer는 아래 3가지로 이루어져있다. 문자열 데이터는 아래 작성된 순서의 과정을 거쳐 검색어 토큰으로 처리된다.
각 과정에서 정확히 어떤 것을 하는지 이해하기 위해, 예시를 하나씩 적었다.
병합 전
term id coffee document1 COFFEE document2 병합 후
term id coffee document1, document2
형태소 분석에 따라 동일하지만 다르게 분류된 토큰들을 합쳐준다.
ex) does, did, doing, do ----형태소분석----> do
위의 과정을 통해 분류된 term들은 데이터로 저장된다.
데이터 저장 역시 TSDB는 RDB와는 다른 스토리지 아키텍쳐를 통해 저장되는데, 해당 내용은 Prometheus를 기준으로 별도 포스팅 예정이다.
참고자료
https://esbook.kimjmin.net/07-settings-and-mappings/7.1-settings
https://mangkyu.tistory.com/190