스트림 쿼리

스트림 쿼리는 데이터 스트림을 입력으로 하는 쿼리를 설정하여, 실시간으로 이벤트 처리나 통계 분석을 수행할 수 있습니다. 일정 기간마다 실행되는 스케줄 쿼리와 달리, 스트림 쿼리는 연속적으로 입력 순서를 보장하면서 쿼리를 수행하는 특징을 가지고 있습니다.

예를 들어 10분마다 스트림에 대한 통계를 생성하려는 경우, 스케줄 쿼리로는 미묘한 시간 차이로 인해 10분 마다 생성된 결과의 합이 전체와 일치하지 않을 수 있습니다. 반면, 스트림 쿼리는 연속적인 데이터 입력에 대해 쿼리가 실행되므로 순서와 정합성을 보장합니다.

스트림 쿼리를 사용하여 특정 시간 단위의 통계를 산출하여 중간 통계 테이블에 저장하고, 이 테이블을 쿼리하여 최종적인 통계 결과를 쿼리하도록 설계하면, 디스크를 거의 사용하지 않으면서 대용량 데이터 스트림에 대하여 실시간으로 통계 결과를 계산할 수 있습니다. 특히, 그루비 스크립팅을 이용하면 고도로 복잡한 실시간 분석 및 가공이 가능합니다.

  • 쿼리 메인화면에서 왼쪽 상단의 스트림 탭을 선택하여 사용합니다.

스트림 쿼리 메인 화면

스트림 쿼리는 입력으로 3가지의 스트림 유형을 지원합니다.

  1. 로거: 수집 설정을 통해 생성한 로그 수집기를 입력으로 사용합니다. 수집되는 모든 데이터가 스트림 쿼리에 입력됩니다.
  2. 테이블: 테이블에 새로운 데이터가 기록될 때마다 스트림 쿼리에 입력됩니다. 관계형 데이터베이스(RDBMS)에서 사용하던 트리거가 진화된 기능으로 생각할 수 있습니다.
  3. 스트림 쿼리: 다른 스트림 쿼리의 출력을 입력으로 사용할 수 있습니다. 비정형 데이터에 대하여 파싱을 수행하는 스트림 쿼리를 앞단에 두고, 해당 스트림 쿼리를 입력으로 사용하는 다수의 분석용 스트림 쿼리를 배치하는 시나리오를 예로 들 수 있습니다.