본문 바로가기
Tech Stack/Database ( TSDB, NOSQL, SQL )

InfluxDB CQ ( continuous query )

by jaeaemin 2022. 8. 12.

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