본문으로 건너뛰기

InfluxDB

InfluxDB

  • Open Source Time Series DataBase(TSDB)이다.
  • 타 TSDB와 달리 SQL문과 유사한 Query를 지원한다.
  • Go Lang으로 작성되었다.
  • Google의 LevelDB를 사용한다.
  • Continuous Queries를 지원한다.
  • Schemaless Design이다.
  • Rest API를 제공한다.
  • 성능이 뛰어나다.

Terminology Comparison

RDBMSInfluxDB
DatabaseDatabase
TableMeasurement
ColumnKey
Primary Key, Indexed ColumnTag Key
SET of Index EntiresSeries

Measurement에 Data를 Point라는 틀에 맞게 저장한다.

  • Tag Key: 구분자이며 String Type만 가능하다.
  • Field Key: Data이다.
  • Time Key: 자동으로 입력되는 시간 값이다.

Installation

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10.x86_64.rpm

sudo yum localinstall influxdb-1.8.10.x86_64.rpm

systemctl start influxdb
systemctl status influxdb

### Show Retention Policy###
Create Databaseuxdb
systemctl enable influxdb

Command

Start InfluxDB

influx

Create Database

CREATE DATABASE <db_name>

Show Databases

SHOW DATABASES

Output Example

name: databases
name
----
_internal
JUNGIN

Create Retention Policy

Retention Policy는 일정 기간이 지난 Data를 삭제하는 정책이다.

각 Database 별로 다르게 지정 가능하다.

별도 설정을 하지 않을 경우 DB 생성 시 autogen이라는 기본 정책이 사용된다.

CREATE RETENTION POLICY "<policy_name>" ON "<database_name>" <duration_option> <replication_option> <shard_group_duration_option> [DEFALT]

Alter Retention Policy

ALTER RETENTION POLOCY "<policy_name>" ON "<database_name>" <option> [option] [option] ...

Delete Retention Policy

DROP RETENTION POLICY <policy_name> ON <database_name>

Show Retention Policy

SHOW RETENTION POLICIES

Output Example

name    duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
  • duration: Data 보존 기간
  • shardGroupDuration: ShardGroup 적용 기간
  • replicaN: Cluster에 저장되는 Data 복사본 개수
  • default: 기본 정책 유무

Insert Data

INSERT <measurement_name>,<tag_name>=<tag_value>,...<tag_name>=<tag_value> <field_name>=<field_value>,...<field_name>=<field_value> <time_key(Optional)>

Tag Key, Field Key, Time Key 사이에 , 없이 사용한다.

, 뒤 공백을 붙일 수 없다.

Select Data

SELECT * FROM <measurement_name>

SELECT "<field_name>", "<field_name>"... FROM <measurement_name>

Delete Data

DELETE FROM <measurement_name> WHERE <conditional_statement>

Delete Measurement

DROP MEASUREMENT <measurement_name>

Delete Database

DROP DATABASE <database_name>