Continuous Query
InfluxDB에서 제공하는 CQ ( contiunuous query )는
실시간 데이터 상에서 설정해논 주기대로 자동으로 실행되고 쿼리 결과를 지정한 measurements에 저장하는 " 지속적으로 실행되는 쿼리 " 입니다.
기본 구문
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
BEGIN
<cq_query>
END
▶ cq name : 설정할 CQ를 명시적으로 선언하기 위해 설정하는 이름
▶ database_name : CQ가 어떤 database에서 실행될지 설정
▶ cq_query : 실행시킬 CQ의 본문
CQ_query의 기본 구문
SELECT <function[s]> INTO <destination_measurement> FROM <measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<tag_key[s]>]
CQ_query의 특징
- INTO GROUP BY time() 이 필수적으로 필요하다. ( 어떤 시간 간격으로 쿼리가 실행될지 명시해야만 하기 때문에 )
- CQ_query 내에서는 where절로 시간 범위를 설정해도 무시당한다.
- 왜냐하면 CQ_query에서는 CQ를 실행할 때의 시간 범위를 자동으로 생성하기 때문이다.
즉, 연속 쿼리는 실시간 데이터에 대해서 로컬 서버의 타임스탬프. group by time() 간격 , InfluxDB 데이터베이스 상에 설정된 시간 경계를 사용하여 쿼리를 실행할 시기와 시간 범위를 결정한다.
시스템에 적용하기
현재 센서 데이터 대시보드를 위해서 우리가 원하는 요구사항은 다음과 같다.
- 매 초마다 각 각의 facility, point, feature_type로 구분되어진 200개의 센서 데이터를 입력받는다.
- 대시보드에는 8개의 센서 값 모니터링 그래프가 구축된다. ( 1H 4H 12H 24H 3D 7D 30D 3M )
- 각 버튼을 누르면 그래프가 그려지고, 각 그래프에서는 3600개의 데이터를 그린다.
- 4H의 경우에는 4초마다 MAX sampling된 value를 출략한다.
- 3D의 경우에는 12분마다 MAX sampling된 value를 출략한다.
- 10분 주기로 max sampling된 데이터를 기록하여 영구적으로 저장한다.
[1] Database & measurements 구축
현재 Daq ( 센서 데이터 출력 ) 에서 값들이 초마다 influxDB가 위치한 Port로 넘어오는 환경을 구축해두었습니다.
[2] Retention Policy 생성하기
반응형
'Tech Stack > Database ( TSDB, NOSQL, SQL )' 카테고리의 다른 글
InfluxDB nodeJS 라이브러리 (0) | 2022.11.15 |
---|---|
Kapacitor (0) | 2022.08.25 |
Telegraf (0) | 2022.07.15 |
InfluxDB (1) | 2022.06.27 |
Redis Command (0) | 2022.04.04 |