<역사>

TSDB 대표주자 기타 프로메테우스, 한국마크베이스

2013, nosql

시간의 흐름에 따라 기록된 데이터들의 수열

시간-값 쌍으로 입력

실시간변화추적 용이

오래된 데이터 삭제도 용이

입출력이 빠름

 

윈도우, 리눅스 모두 지원

기본 8086포트

 

<예시>

센서데이터, 주가데시터, 온도데이터, 의료정보

자동차 등 동적인 장비 속도정보 등 실시간데이터

 

2018년말부터 TSDB관심도 높아짐.

스마트팩토리, 빅데이터 때문, +HW발전

 

 

Influx(인플럭스)DB Infiniflux(인피니플럭스)DB는 같은 것이 아니니 헷갈리지 않길 바란다.

인피니플럭스는 현재 MACHBASE(마크베이스)로 사명을 변경하였다.

구글 levelDB사용

• MongoDB와 같이 Schemaless Design이다.

• Continuous Queries(CQ)를 지원한다.

• Rest API를 제공한다.

 

 

influxd.exe 서버 실행(끄면안됨)

influx.exe 클라이언트 로 접속

 

RDB                                InfluxDB

database                        database

table                                measurement

column                                key

Primary Key, indexed column        tag key (only string)

unindexed column                field key

SET of index entries                series

 

 

 

 

INSERT table11,company='my_company',region='SouthKorea' X=15,Y=29,Z=31

show measurements

show series

SELECT * FROM table11

SELECT "X","Z" FROM table11

SHOW RETENTION POLICIES

CREATE RETENTION POLICY "rp_test1" ON "myDB" DURATION 24h REPLICATION 1

 

database마다 리텐션정책 설정 가능

retention policy 오래된 것부터 삭제해주는 기능, 플랫폼 자체 내장 기능

 

압축기능은 없는지?

압축해서, 평균시간 판단해서

이상이 있는 시간대 데이터만 보관하고 나머지는 지워버리는?

 

<사용>

grafana 설치 및 실행

설치 후 브라우저를 통해 그라파나 서버 접속 포트 3000

data source influxdb 선택

-> 브라우저에서 대시보드 생성함, 그래프 추가

테이블선택 및 where조건 설정

챠트말고, 전광판같은 것도 있네, 아마도 group by 해서 표현가능할듯

 

<주의사항>

아래와 같이 3가지 주체가 시간이 다른 경우 , 주의가 필요함.

A 기기 :  InfluxDB 에 데이터를 넣는 머신  ( OS시간 1 30 )

DB 서버 : InfluxDB 가 돌아가는 서버 ( OS 시간 1 )

PC :  브라우저를 (Grafana) 통해 가시화하는 내 컴퓨터  (OS 시간 12 30)

 

내 브라우저에서의 X 축이 130분까지 보여지는게 아니라 내 브라우저의 시간인 12 30분까지만 보여진다.

따라서 입력된 데이터가 보여지지 않는다. 데이터가 보여지게 하려면 적어도 내 PC 의 시간이 입력시간보다 빨라야한다.

 

서버에 저장된 시간이 내 컴퓨터의 OS 시간에 맞추어 변경 혹은

입력시 InfluxDB 서버 시간에 맞추어서 재 변경

 

<쿼리예시>

1. 하루전 부터 지금까지  (상대시간 지정)

SELECT mean("watt") as watt, mean("pf") as pf FROM "jinyoung1_5"

WHERE time > now() - 1d GROUP BY time(1h)

 

2. 날짜 지정  (8 12일만 출력됨)

SELECT mean("watt") as watt, mean("pf") as pf FROM "{0}"

WHERE time > '2013-08-12' and time < '2013-08-13'  # 2017-04-04 00:00:01

GROUP BY time({1}) fill(null)

 

3. 절대시간 지정  (00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970.)

select value from response_times where time > 1388534400s




+ Recent posts