개요

시계열 데이터

현재 우리가 살아가는 환경에서는 시계열 데이터가 폭발적으로 존재한다.

 

여기서 말하는 시계열 데이터란, 다음의 특징을 가진다.

  • 시간별로 구성된 값들의 집합
  • 시간과 하나 이상의 속성으로 구성
  • Line diagram으로 시각화할 수 있다.

 

시계열 데이터를 분석하기 위해 많은 기업들이 노력을 한다. 1s는 물론 1ns 또는 그 이하의 아주 짧은 시간 동안 생성되는 수많은 데이터를 분석하여 경향, 주기 등의 특성을 파악할 수 있다.

 

시계열 데이터베이스

  • 시간 처리에 최적화 된 데이터베이스
  • SQL 기반 시계열 질의 지원
  • 빠른 데이터 입력 → 트랜잭션 지원 및 데이터 변경 불가
  • 롤업 기능 지원

시계열 데이터베이스의 종류

  • InfluxDB
  • Kdb+
  • Graphite

등이 존재하고, influxDB가 현재 가장 많이 쓰이고 있는 데이터베이스이다.

이번 학기에 진행하는 졸업 프로젝트에서도 influxDB를 사용할 예정이다.

 

InfluxDB란

  • 빠른 쓰기 및 읽기가 가능한 오픈소스
  • 시계열 데이터를 저장하는 NoSQL 형태의 데이터베이스
  • Go, Java, Python, Node.js 등과 같은 클라이언트 지원
  • Schemaless Design
  • 플러그인 아키텍처 설계로 타사 제품과 통합하는데 용이

일반 DB와 용어 비교

RDEBMS InfluxDB
database database
table measurement
rows points
indexed columns tags(string type only)
unindexed columns fileds

Unix time

influxDB는 nanosecond단위의 unix time 값을 이용한다.

 

unix time이란?

  • <1970년 1월 1일 00:00:00> 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것
  • ex. 1561681930 ( 2019-06-28T00:32:10Z)

 

예제 문법

show databases 데이터베이스 조회 

create database exemDB exemDB라는 데이터베이스 생성

use (database) 데이터베이스 선택 

show (measurements) 선택한 데이터베이스 내의 measurements 조회

 

influx -precision rfc3339 읽기 쉬운 형태의 시간 표현으로 열기

 

Data Format

Line protocol을 사용해 data format을 정의한다.

  • Measurement, Tag-set Field-set timestamp
  • 하나의 행을 point라 부른다.
  • Tag-set과 Field-set은 key=value 형태로 구성되며 여러 개 일 때 쉼표로 구분해서 나열

쉼표와 띄어쓰기를 굉장히 주의해야 한다!

tag는 string type만 가능하다. 따라서 문자열에 따옴표를 붙여주지 않아도 된다.

하지만, fieild는 다른 type도 가능하기 때문에 문자열에 따옴표를 붙여야 한다.

 

(예시)

soccer,name=son,team=tot city="london",age=28 1511783000000000000

  • measurement: soccer
  • tag: name, team
  • field: city, age

 

백업

'exemDB' 데이터베이스를 /tmp/backup 디렉토리에 백업(디렉토리 없을 시 자동생성)

influxd backup -portable -database exemDB /tmp/backup

 

/tmp/backup 디렉토리에 있는 정보를 'exemDB' 데이터베이스명으로 복구

influxd restore -portable -db exemDB /backdup

 

 

참조

[엑셈 웨비나] 시계열 데이터베이스 'InfluxDB' - https://www.youtube.com/watch?v=a00l1GxJszM

squareyun