스트림 쿼리

개요

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

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

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

스트림 쿼리의 데이터소스

스트림 쿼리가 처리할 수 있는 데이터 스트림은 로거, 테이블, 다른 스트림 쿼리의 출력, 이렇게 세 가지로 나누어 볼 수 있습니다.

로거
수집 설정을 통해 생성한 로거로 들어오는 데이터 스트림을 입력으로 사용합니다. 수집되는 모든 데이터가 스트림 쿼리에 입력됩니다.
테이블
테이블에 새로 쓰여지는 행을 입력으로 사용합니다. 관계형 데이터베이스(RDBMS)에서 사용하던 트리거가 진화된 기능으로 생각할 수 있습니다.
다른 스트림 쿼리의 출력
다른 스트림 쿼리의 출력을 입력으로 사용할 수 있습니다. 비정형 데이터 스트림을 파싱하는 스트림 쿼리를 앞에 두고, 해당 스트림 쿼리를 입력으로 사용하는 다수의 분석용 스트림 쿼리를 배치하는 방식으로 응용할 수 있습니다.

스트림 쿼리 조회

스트림 쿼리 목록은 쿼리 > 스트림에서 조회할 수 있습니다.

목록으로 보기
스트림 쿼리 현황을 조회하는 가장 기본적인 형태입니다. 스트림 쿼리의 타입, 활성화 상태, 현황 정보를 조회할 때 유용합니다.

스트림 쿼리 화면(목록으로 보기)

레이아웃 보기
데이터 스트림의 원천과 데이터를 가공하는 스트림 쿼리, 스트림 쿼리의 출력을 저장하는 테이블의 전체 흐름과 의존성을 확인할 수 있도록 레이아웃 보기를 제공합니다. 스트림 화면에서 오른쪽 위에 있는 레이아웃 보기(레이아웃 버튼)를 누르면 스트림 레이아웃을 조회할 수 있습니다.

스트림 쿼리 화면(레이아웃 보기)

스트림 쿼리 추가

스트림 쿼리를 추가하는 방법은 다음과 같습니다.

  1. 스트림 도구 모음에서 + 새 스트림 쿼리를 누른 후, 데이터소스를 선택합니다.

    데이터소스 선택 메뉴

  2. 선택한 데이터소스에 따라 필요한 속성을 설정하고 완료를 누릅니다.

    • 이름(필수): 스트림 쿼리에 부여할 고유한 이름
    • 비동기 모드(선택): 스트림 쿼리의 비동기 모드 실행 여부. 스트림 쿼리를 비동기로 실행하면 데이터 처리 순서가 보장되지 않는 대신 단위 처리량이 향상됩니다(기본값: 선택 해제).
    • 실행 주기(필수): 스트림 쿼리의 재실행 주기(기본값: 60초).
    • 쿼리(필수): 데이터소스로부터 받은 데이터를 가공할 쿼리문
    • 데이터소스 유형에 따라 선택할 속성
      • 로거(선택): (데이터소스가 로거일 때) 데이터소스로 사용할 로거를 목록에서 선택
      • 테이블(선택): (데이터소스가 테이블일 때) 데이터소스로 사용할 테이블을 목록에서 선택
      • 스트림 쿼리(선택): (데이터소스가 스트림 쿼리일 때) 데이터소스로 사용할 스트림 쿼리를 목록에서 선택
    • 설명(선택): 스트림 쿼리에 대한 설명

    로거를 데이터소스로 이용하는 스트림 쿼리의 속성 화면은 다음과 같습니다.

    로거를 데이터소스로 이용하는 스트림 쿼리의 속성

    테이블을 데이터소스로 이용하는 스트림 쿼리의 속성 화면은 다음과 같습니다.

    테이블을 데이터소스로 이용하는 스트림 쿼리의 속성

    다른 스트림 쿼리를 데이터소스로 이용하는 스트림 쿼리의 속성 화면은 다음과 같습니다.

    다른 스트림 쿼리를 데이터소스로 이용하는 스트림 쿼리의 속성

스트림 쿼리 수정

스트림 쿼리를 수정하는 방법은 다음과 같습니다.

  1. 수정할 스트림 쿼리의 이름을 누릅니다.

  2. 스트림 쿼리 속성 창에서 편집을 누릅니다.

    편집을 위한 클릭 순서

  3. 수정을 마친 후 완료를 누릅니다.

    편집을 위한 클릭 순서

레이아웃 보기에서도 스트림 쿼리를 수정할 수 있습니다. 방법은 목록으로 볼 때와 같이 수정할 스트림 쿼리의 이름을 선택한 후, 편집을 누르십시오.

레이아웃 보기에서 스트림 쿼리 수정하기

스트림 쿼리 활성화/비활성화

스트림 쿼리를 추가하면 바로 활성화되어 동작합니다. 스트림 쿼리의 상태를 활성화/비활성화하려면 활성화 토글 버튼을 누르십시오.

활성화 토글 버튼의 위치

스트림 쿼리 삭제

스트림 쿼리의 삭제는 목록 보기 상태에서만 실행할 수 있습니다. 스트림 쿼리를 삭제하는 방법은 다음과 같습니다.

  1. 목록에서 삭제할 스트림 쿼리를 선택하고 도구 모음에서 휴지통을 누릅니다.

    스트림 쿼리를 삭제하는 버튼

  2. 스트림 쿼리 삭제 창에서 삭제할 스트림 쿼리를 확인하고 삭제를 누릅니다.

    스트림 쿼리 삭제 - 삭제할 스트림 쿼리를 확인하고 삭제 실행

  3. 스트림 쿼리 목록에서 스트림 쿼리가 삭제된 것을 확인합니다.