Database/TSDB

[InfluxDB] 설치 및 사용법

기은P 2021. 4. 28. 15:29
반응형

[InfluxDB] 설치 및 사용 방법

 

 

 

1. InfluxDB

TSDB(시계열 데이터베이스; Time Series Database)로 이루어진 데이터 베이스다.

시계열 데이터는 즉 시간과 값이 한 쌍을 이루는 데이터인데, 시간에 따라 순차적으로 저장하고 서비스하는 시스템이 바로 이 TSDB이다.

스마트 팩토리와 빅데이터가 등장하면서 데이터에 대한 가치가 높아지고, 데이터를 가공하고 처리하는 기술이 중요해졌는데, 특히 수많은 센서들로부터 나오는 센서 데이터 즉, 실시간으로 변화하는 데이터를 처리하는데 용이한 데이터베이스가 필요해졌다.

이런 실시간 데이터는 수 초 단위로 쌓이게 되고, 이 수많은 데이터를 처리하기에는 기존의 RDBMS, 관계형 데이터베이스로는 한계가 생기기 시작했다.

관계형 데이터베이스로 시계열 데이터를 저장하려면 시간과 값을 각각 따로 저장하여 이를 연관시켜야 하고, 하나의 시간에 여러 종류의 데이터가 입력될 때 또는 데이터를 삭제할 때 성능과 속도 저하의 문제가 생긴다.

이러한 시계열 데이터 기반으로 작동되는 InfluxDB Go 언어로 작성되었고, TSDB 오픈소스들 중 가장 인기가 많은 TSDB.

 

 

특징

  • 구글에서 만든 key/value databaselevelDB를 사용함
  • MongoDB와 같이 Schemaless Design이다.
  • Continuous Queries(CQ)를 지원한다.
  • Resi API를 제공한다.

 

 

 

2. InfluxDB 설치법

https://portal.influxdata.com/downloads/

위의 주소에 접속해서 “Are you interested in InfluxDB 1.x?” 밑에서 플랫폼을 선택해준다. 현재 버최신 버전은 2.x 이상이 나왔지만 안정화된 버전은 1.8.x버전이기 때문에 1.8.x버전을 받아준다.

 

 

Window기반은 Windows Binaries(64 bit)를 선택하면 되고, 그 외는 운영체제에 맞게 선택해서 설치해주면 된다.

 

 

 

 

파워 쉘을 관리자 모드로 실행시키고 위의 명령어를 입력해주면 위와 같은 경로에서 파일이 설치가 된 것을 확인할 수 있다.

 

 

 

 

후에 influxd.exe를 실행시키고 위와 같은 화면이 나오면 정상적으로 설치가 완료가 된 것이다.

 

 

 

 

Influxd.exe를 실행시키고, influx.exe를 실행시키면 위와 같이 서버가 정상적으로 작동한다.

Show databases 명령어를 입력하면 현재 서버에서 작동중인 데이터베이스 목록을 확인할 수 있다.

 

 

 

 

3. 사용법

일반적으로 RDBMS와 시계열 데이터베이스와는 차이가 있기 때문에 별도로 사용법을 숙지를 해야 한다.

시계열 데이터베이스에서의 Table은 측정의 의미를 가지는 Measurement라고 불린다.

하나의 데이터베이스 안에는 여러 개의 Measurement가 있을 수가 있으며, Measurement의 구조에 대해서 자세하게 알아두어야 한다.

TableRow가 쌓이는 것처럼, Measurement 안에는 Point라고 하는 데이터가 쌓이게 된다.

Point는 데이터를 입력하는 순간 시간적인 지점인 Point를 의미하는 것이며, Point 내부에는 여러 개의 Key가 존재한다.

 

 

Key

  • Tag Key : RDB에서 Index와 유사한 것으로 Select문으로 조회할 때의 기준이 된다. 또한 항상 String(문자열)의 형태로 들어올 수 있기 때문에 따옴표를 통해 감싸주어야 한다.
  • Field Key : 데이터 그 자체라고 보면 된다.
  • Time Key : 측정 시점의 시간이 들어가는데 자동으로 입력되기 때문에 별도로 건드릴 필요는 없다.

 

 

 

일반적으로 데이터를 삽입하는 방법은 아래와 같다.

INSERT [measurement 이름],[태그 이름1]=[태그 값1],[태그 이름2]=[태그 값2],… [필드이름1]=[필드값1],[필드이름2]=[필드값2],… [time key]

여기서 주의해야 할 점은 태그키 목록과 필드키 목록, 필드키 목록과 타임키 사이에는 (콤마)를 사용하지 않는다.

그리고 콤마 뒤에는 공백이 들어오면 안된다.

Time key는 자동으로 생성되지만 명시적으로 넣을 수도 있다.

 

 

 

INSERT test_db,user=’1’,name=John, number=1000

공백과 콤마를 잘 사용하지 않으면 influxdb invalid boolean 이라는 error가 발생하기 때문에 주의깊게 넣어야 한다.(사실 Java Node.js로 쿼리를 구현해서 사용하기 때문에 크게 신경 쓰지 않아도 될듯함)

 

 

 

 

명령어

설명

use [database 이름]

현재 데이터베이스 지정

show measurements

measurement(테이블) 목록 보기

show tag keys

모든 measurement의 모든 tag key 목록 보기

show field keys

모든 measurement의 모든 field key 목록 보기

show series

모든 measurement의 서로소인 tag key 튜플의 목록 보기

기본적인 TSDB의 사용법은 위와 같다.

 

 

 

반응형