kok202
Influx DB 개요

2019. 7. 26. 17:11[정리] 데이터베이스/[NoSQL] Influx DB

포스팅 참조 (1)

포스팅 참조 (2)

 

 

 

시계열 데이터

데이터가 Timestamp 와 같이 저장된 데이터

가로축이 Timestamp 가 와야 시계열 데이터다.

Timestamp 를 지정안해줘도 자동으로 지정되서 저장됨

테이블 Measurements
인덱싱된 칼럼 Tags
인덱싱되지 않은 칼럼 (실질적인 값이 저장되는 곳) Fields (or point)
기본키 Series (or key)

 

 

 

TSDB 

시계열 데이터를 다루는 데이터베이스

Influx DB는 TSDB의 일종이다.

Influx DB는 Line protocol 를 사용한다

Influx DB는 스키마를 가지지 않는다.

특정 measurments(table)에 존재하지 않는 필드가 들어오면 칼럼이 새로 생긴다.

단 이때 생긴 필드의 타입은 최초에 들어온 필드 데이터의 타입에 의해 결정된다.

 

 

 

Line protocol = 데이터 포맷을 [key] [field] [timestamp] 와 같이 저장하는 것

key 는 measurement 하나일 수도 있고 measurements + tags 일 수도 있다.

이 때 key 를 series 라고도 부른다.

이 때 field 를 point 라고도 부른다.

 

즉 다음 두 데이터 포맷은 같은 의미다.

[key] [field] [timestamp]

[series] [point] [timestamp]

 

 

 

TSDB의 특징

트랜잭션을 보장하지 않는다.

Create Read 에만 포커싱 되어있다.  CRUD 가 아닌 CR-ud 를 지원한다.

Write 작업의 결과는 오름차순을 보장해가며 저장된다.

Write 작업은 가능한 먼 과거의 데이터 삽입이 드문 것이 좋다.

Delete 작업은 bulk 로 모아서 한번에 처리한다.

 

 

 

TSDB의 활용

Monitoring

Real time 분석 

Sensor data 관리

IOT

 

 

 

TSDB 를 사용하는 일반적인 계층구조

1. Collector Layer (선택 사항)

2. TSDB Cluster Layer (필수 사항)

3. Presentation Layer (선택 사항)

4. Alert Layer (선택 사항)

 

 

 

1. Collector Layer

TSDB 는 기본적으로 일반 DB와 유사하게 데이터를 저장하고 읽는 기능밖에 없다.

그래서 데이터를 수집하는 레이어가 하나 필요하다.

이는 개발자가 만든 custom 한 어플리케이션일 수 있다.

ex) Collectd, Telegraf, sCollector

 

2. TSDB Cluster Layer

ex) InfluxDB, OpenTSDB, Druid ...

 

3. Presentation Layer

TSDB에 저장된 데이터를 시각화해서 보여주는 레이어

이 역시 개발자가 만든 Custom 한 어플리케이션일 수 있지만 그래프를 그리는 과정을 직접 만들지는 않는다.

일반적으로 Grafana를 많이 쓰는듯하다.

ex) Grafana, Graphite, Chrongograf

 

4. Alert Layer

시계열 데이터에 어떤 특정 조건이 발생했을 때 알람을 보낼 수 있도록 하는 레이어

Collector Layer와 마찬가지로 개발자가 직접 만든 custom 한 어플리케이션 일 수 있다.

ex) kapacitor

 

 

 

 

Influx DB 접근

influx
> show database
-------------
name
telegraf

> use telegraf                 # database telegraf 를 사용하겠다.
> show measurements            # telegraf 의 measurements(table) 을 검색하겠다.
-------------
name
cpu
disk
diskio
kernel
processes
swap
system

> select * from cpu limit 10    # cpu 안에 들어있는 데이터 열람
> show series                   # 모든 key 를 보여준다.
> show tag keys                 # measurements(table) 안에 어떤 태그들이 있는가
> show field keys               # measurements(table) 안에 어떤 필드들이 있는가

SQL 쿼리문을 유사하게 사용할 수 있고 Where 절에 정규표현이 들어갈 수 있다.

필드 값은 인덱싱하지 않기 때문에 태그값을 검색하는 것을 추천한다.

 

> insert monitoring,cpu=i5,core=5 memory=600,disk=50000
key  monitoring,cpu=i5,core=5
measurements  monitoring
tags cpu=i5,core=5
field  memory=600,disk=50000
timestamp 현재 timestamp 로 자동 입력

 

> insert monitoring,cpu=i5,core=5 memory=700,disk=50000 1564127777
key  monitoring,cpu=i5,core=5
measurements  monitoring
tags cpu=i5,core=5
field  memory=700,disk=50000
timestamp 1564127777

1564127777