InfluxDB Overview
InfluxDB 개요
-InfluxData가 개발한, Go 언어 기반의 Open Source TSDB(오픈소스 시계열 데이터베이스)이다.
- Distributed, Scale Horizontally하게 설계되어 Scale-Out이 쉽다.
- Restful API를 제공하고 있어 DB와 API를 통해 통신이 가능하다.
- 운영 모니터링, 애플리케이션 매트릭스, 사물인터넷 센서 데이터, 실시간 분석 등의 분야에서
시계열 데이터의 고속의 HA(High Availaility; 고가용성)적 저장 및 검색에 최적화되어 있다.
* Scale-Out
- 서버의 처리 능력 향상 방법 중 하나로, 접속된 서버의 대수를 늘려 Throughput을 향상시키는 것을 의미한다.
* HA (High Availaility; 고가용성)
- 서버, 네트워크, 프로그램등의 정보 시스템이 오랜기간동안 지속적·정상적으로 운영이 가능한 성질을 의미한다.
- InfluxDB는 아래와 같은 2가지 핵심 기능을 제공하고 있다:
- Continuous Query (Continuous Task; 연속적 쿼리)
- Down Sampling(데이터를 처리하여 새롭게 저장) 을 일정 주기마다 수행한다.
- Continuous Query는 InfluxDB1에서 제공하는 기능이고,
Continuous Task는 InfluxDB2에서 제공하는 기능이다.
- Retention Policy (Retention Period; 데이터 보존 정책)
- 지속적으로 쌓이는 시계열 데이터들을 일정 기간이 지나면 자동으로 삭제해주는 정책이다.
- 일반적으로, 1개의 데이터베이스는 다수의 보존 정책을 유지한다.
- 보존 정책의 Default는 \(\texttt{autogen}\)이며, 이는 보존 기간을 무제한으로 두는 정책이다.
- Retention Policy는 InfluxDB1에서 유지하는 정책이고,
Retention Peroid는 InfluxDB2에서 유지하는 정책이다.
InfluxDB Metadata
* RDB vs InfluxDB
Traditional RDB | InfluxDB |
Database | Database |
Table | Measurement |
Column | Key |
Indexed Column, Primary Key |
Tag Key (String Only) |
Set of Index Entries | Series |
Unindexed Column | Field Key |
Row | Point |
InfluxDB Keys (InfluxDB Columns)
- InfluxDB에서 Column의 구성은 전통적인 RDB에서의 Column과 차이가 있는데,
InfluxDB에서는 Column에 해당되는 개념을 Key라 지칭하고 있으며, Key는 아래와 같이 3가지 종류로 구성된다:
- Tag Key
- RDB에서의 Indexed Column과 유사한 개념으로, 인덱싱되어 Select문으로 Retrieve하는 기준이 된다.
- Tag Value는 string Type만 허용되므로, 질의 시 Quote(' ')로 감싸주어야 한다.
- Field Key
- RDB에서의 Non-Indexed Column과 유사한 개념으로,
저장되는 데이터에는 1개 이상의 Field Key가 포함되어야 한다.
- Field Value로는 string, floats, integer, boolean Type이 허용되며, Type은 변경될 수 없다.
- Time Key
- UNIX Epoch가 Microseconds 단위로 자동 입력된다.
- 수동으로 설정할 수 있지만, 권장되지 않는다.
Reference: influxdata, "influxdb" Repository, GitHub, 2022년 8월 26일 검색, URL.