[InfluxDB] 설치 및 사용 방법
1. InfluxDB란
TSDB(시계열 데이터베이스; Time Series Database)로 이루어진 데이터 베이스다.
시계열 데이터는 즉 시간과 값이 한 쌍을 이루는 데이터인데, 시간에 따라 순차적으로 저장하고 서비스하는 시스템이 바로 이 TSDB이다.
스마트 팩토리와 빅데이터가 등장하면서 데이터에 대한 가치가 높아지고, 데이터를 가공하고 처리하는 기술이 중요해졌는데, 특히 수많은 센서들로부터 나오는 센서 데이터 즉, 실시간으로 변화하는 데이터를 처리하는데 용이한 데이터베이스가 필요해졌다.
이런 실시간 데이터는 수 초 단위로 쌓이게 되고, 이 수많은 데이터를 처리하기에는 기존의 RDBMS, 관계형 데이터베이스로는 한계가 생기기 시작했다.
관계형 데이터베이스로 시계열 데이터를 저장하려면 시간과 값을 각각 따로 저장하여 이를 연관시켜야 하고, 하나의 시간에 여러 종류의 데이터가 입력될 때 또는 데이터를 삭제할 때 성능과 속도 저하의 문제가 생긴다.
이러한 시계열 데이터 기반으로 작동되는 InfluxDB는 Go 언어로 작성되었고, TSDB 오픈소스들 중 가장 인기가 많은 TSDB다.
특징
- 구글에서 만든 key/value database인 levelDB를 사용함
- 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의 구조에 대해서 자세하게 알아두어야 한다.
Table에 Row가 쌓이는 것처럼, 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의 사용법은 위와 같다.