연속 쿼리 소개

이 문서에서는 BigQuery 연속 쿼리를 설명합니다.

BigQuery 연속 쿼리는 지속적으로 실행되는 SQL 문입니다. 연속 쿼리를 사용하면 BigQuery에서 수신 데이터를 실시간으로 분석할 수 있습니다. 연속 쿼리에서 생성된 출력 행을 다음 대상으로 작성하거나 내보낼 수 있습니다.

연속 쿼리는 다음 방법 중 하나를 사용하여 표준 BigQuery 테이블에 기록된 데이터를 처리할 수 있습니다.

연속 쿼리를 사용하여 통계를 만들어 즉시 조치, 실시간 머신러닝 (ML) 추론 적용, 다른 플랫폼에 데이터 복제 등 시간에 민감한 작업을 수행할 수 있습니다. 이를 통해 애플리케이션 결정 로직을 위한 이벤트 기반 데이터 처리 엔진으로 BigQuery를 사용할 수 있습니다.

다음 다이어그램은 일반적인 연속 쿼리 워크플로를 보여줍니다.

데이터 수집, 처리, Bigtable 및 Pub/Sub과 같은 대상으로의 내보내기를 포함한 일반적인 BigQuery 연속 쿼리 워크플로를 보여주는 다이어그램

사용 사례

연속 쿼리를 사용하면 좋은 일반적인 사용 사례는 다음과 같습니다.

  • 맞춤형 고객 상호작용 서비스: 생성형 AI를 사용하여 각 고객 상호작용에 맞게 맞춤설정된 메시지를 만듭니다.
  • 이상 감지: 복잡한 데이터에 대해 실시간으로 이상 및 위협 감지를 수행할 수 있는 솔루션을 빌드하여 문제에 보다 신속하게 대응할 수 있습니다.
  • 맞춤설정 가능한 이벤트 기반 파이프라인: Pub/Sub와의 연속 쿼리 통합을 사용해서 수신 데이터를 기반으로 다운스트림 애플리케이션을 트리거합니다.
  • 데이터 보강 및 엔티티 추출: 연속 쿼리를 사용하여 SQL 함수와 ML 모델을 통해 실시간 데이터 보강 및 변환을 실행합니다.
  • 역방향 추출, 변환, 로드 (ETL): 지연 시간이 짧은 애플리케이션 제공에 더 적합한 다른 스토리지 시스템으로 실시간 역방향 ETL을 수행합니다. 예를 들어 BigQuery에 쓰여진 이벤트 데이터를 분석하거나 개선한 후 애플리케이션 서빙을 위해 Bigtable, Spanner 또는 Apache Iceberg 관리 테이블로 스트리밍합니다.
  • 자율 에이전트 트리거링: 라이브 데이터 스트림에서 감지된 복잡한 이벤트를 기반으로 에이전트 데이터 파이프라인을 실시간으로 트리거합니다. 예를 보려면 BigQuery 및 에이전트 개발 키트 (ADK)로 이벤트 기반 데이터 에이전트 빌드 Codelab을 참고하세요.
  • 자율 에이전트 모니터링: 모든 에이전트 추적 데이터, 도구 사용, 운영 로그를 BigQuery로 직접 스트리밍하여 AI 인력에 대한 심층적인 관측 가능성을 제공하는 BigQuery 에이전트 분석 플러그인을 사용하여 실시간 에이전트 상호작용을 위한 실시간 자동 모니터링 및 알림을 개발합니다.

지원되는 기능

연속 쿼리에서 지원되는 작업은 다음과 같습니다.

지원되는 스테이트풀(Stateful) 작업

이 기능에 대한 지원을 요청하거나 의견을 제공하려면 bq-continuous-queries-feedback@google.com으로 이메일을 보내세요.

상태 저장 작업을 사용하면 연속 쿼리가 여러 행 또는 시간 간격에 걸쳐 정보를 유지해야 하는 복잡한 분석을 실행할 수 있습니다. 스테이트리스(Stateless) 함수는 각 행을 독립적으로 처리하지만 스테이트풀(Stateful) 작업은 JOIN, 집계, 윈도우 집계와 같은 함수를 지원하기 위해 수집된 데이터의 상태를 유지합니다. 이 기능을 사용하면 쿼리가 실행되는 동안 필요한 데이터를 메모리에 저장하여 여러 스트림의 이벤트를 상호 연관시키거나 시간 경과에 따른 측정항목(예: 30분 평균)을 계산할 수 있습니다.

연속 쿼리는 다음 상태 저장 작업을 지원합니다.

승인

연속 쿼리 작업을 실행할 때 사용되는 Google Cloud 액세스 토큰은 사용자 계정으로 생성된 경우 2일의 TTL (수명)을 갖습니다. 따라서 이러한 작업은 2일 후에 실행이 중지됩니다. 서비스 계정에서 생성된 액세스 토큰은 더 오래 실행될 수 있지만 최대 쿼리 런타임을 준수해야 합니다. 자세한 내용은 서비스 계정을 사용하여 연속 쿼리 실행을 참조하세요.

위치

지원되는 리전 목록은 BigQuery 연속 쿼리 위치를 참고하세요.

제한사항

연속 쿼리에는 다음과 같은 제한사항이 적용됩니다.

예약 제한사항

  • 연속 쿼리를 실행하려면 CONTINUOUS 할당 유형이 있는 Enterprise 버전 또는 Enterprise Plus 버전 예약을 만들어야 합니다. 연속 쿼리는 주문형 컴퓨팅 청구 모델을 지원하지 않습니다.
  • CONTINUOUS 예약 할당을 만들면 연결된 예약이 최대 500슬롯으로 제한됩니다. bq-continuous-queries-feedback@google.com으로 문의하여 이 한도 상향을 요청할 수 있습니다.
  • 연속 쿼리 예약 할당과 동일한 예약에서 다른 작업 유형을 사용하는 예약 할당을 만들 수 없습니다.
  • BigQuery는 CONTINUOUS 작업 유형을 사용하는 예약 할당의 구성된 크기를 기반으로 프로젝트당 동시에 실행할 수 있는 연속 쿼리 수를 결정합니다. 새 작업을 허용하려면 BigQuery에 연속 쿼리 작업당 10개의 슬롯이라는 기준이 필요합니다. 쿼리가 정상 실행 중에 10개의 슬롯을 모두 사용하지 않을 수도 있습니다. 이 기준점을 통해 실행 중인 모든 연속 쿼리가 지연되거나 지연 시간이 짧은 처리가 저하되지 않고 수신 데이터 볼륨의 갑작스러운 급증을 처리할 수 있는 충분한 기준 컴퓨팅 용량을 유지할 수 있습니다.

    동시 실행 제한에 도달하지 않고 쿼리가 성공적으로 허용되도록 하려면 슬롯 자동 확장을 사용하는 것이 좋습니다. 자동 확장을 사용하면 실제 리소스 수요에 따라 전체 슬롯 사용량이 동적으로 확장됩니다. 더 작은 기준 예약으로 구성하고 예상되는 동시 쿼리에 대한 쿼리당 10개 슬롯 기준점을 편안하게 충족하는 최대 자동 확장 한도를 설정할 수 있습니다.

  • 동일한 예약을 사용하여 여러 개의 연속 쿼리를 실행하는 경우 BigQuery 공정성에 정의된 대로 개별 작업이 사용 가능한 리소스를 공정하게 분할하지 않을 수 있습니다.

슬롯 자동 확장

연속 쿼리는 슬롯 자동 확장을 사용하여 할당된 용량을 워크로드에 맞게 동적으로 확장할 수 있습니다. 연속 쿼리 워크로드가 증가하거나 감소함에 따라 BigQuery는 슬롯을 동적으로 조정합니다.

연속 쿼리가 실행되기 시작하면 슬롯 리소스를 소비하는 수신 데이터를 적극적으로 수신 대기합니다. 실행 중인 연속 쿼리가 있는 예약은 슬롯이 0으로 축소되지 않지만, 주로 수신 데이터를 수신 대기하는 유휴 연속 쿼리는 최소한의 슬롯(일반적으로 1개 슬롯)을 소비할 것으로 예상됩니다.

유휴 슬롯 공유

연속 쿼리는 유휴 슬롯 공유를 사용하여 미사용 슬롯 리소스를 다른 예약 및 작업 유형과 공유할 수 있습니다.

  • 연속 쿼리를 실행하려면 CONTINUOUS 예약 할당이 여전히 필요하며 다른 예약의 유휴 슬롯에만 의존할 수는 없습니다. 따라서 CONTINUOUS 예약 할당에는 0이 아닌 슬롯 기준 또는 0이 아닌 슬롯 자동 확장 구성이 필요합니다.
  • CONTINUOUS 예약 할당의 유휴 기준 슬롯 또는 약정 슬롯만 공유할 수 있습니다. 자동 확장된 슬롯은 다른 예약의 유휴 슬롯으로 공유할 수 없습니다.

가격 책정

연속 쿼리는 BigQuery 유연한 확장을 사용할 수 있습니다.

연속 쿼리에서는 슬롯으로 측정되는 BigQuery 용량 컴퓨팅 가격 책정을 사용합니다. 연속 쿼리를 실행하려면 Enterprise 또는 Enterprise Plus 버전을 사용하는 예약 CONTINUOUS 작업 유형을 사용하는 예약 할당이 있어야 합니다.

데이터 수집 및 스토리지 등의 기타 BigQuery 리소스 사용 요금은 BigQuery 가격 책정에 표시된 요율에 따라 청구됩니다.

연속 쿼리 결과를 받거나 연속 쿼리 처리 중에 호출되는 다른 서비스를 사용하면 해당 서비스에 대해 게시된 요금이 청구됩니다. 연속 쿼리에 사용되는 기타 Google Cloud 서비스의 가격 책정은 다음 주제를 참조하세요.

슬롯 용량 요구사항 예상

모든 워크로드가 서로 다르기 때문에 연속 쿼리에 대한 정확한 슬롯 추정은 사전에 불가능한 경우가 많습니다. 연속 쿼리에 필요한 슬롯 수는 다음과 같은 여러 요인의 조합에 따라 달라집니다.

  • 동시에 실행되는 연속 쿼리 수입니다.
  • SQL 문의 복잡성입니다.
  • 윈도우 기간, JOIN, 집계를 비롯한 스테이트풀(Stateful) 처리 함수 사용
  • 수신 데이터의 속도 또는 속력입니다.
  • 수집되는 데이터의 구조와 크기

개념적으로 총 슬롯 요구사항을 연속 쿼리 워크로드의 함수로 추정할 수 있습니다.

예상 슬롯 ≈ 연속 쿼리 수 x ∑ (데이터 비율 x 쿼리 복잡성)

실제 슬롯 소비량은 고유한 워크로드와 데이터 패턴에 크게 좌우되므로 비용을 가장 정확하게 추정하는 방법은 실행 중인 작업을 모니터링하는 것입니다. INFORMATION_SCHEMA 뷰를 사용하여 격리된 연속 쿼리 실행의 최대 슬롯 사용량을 측정할 수 있습니다. 시간 경과에 따른 슬롯 사용량을 추적하는 자세한 안내와 예시 쿼리는 슬롯 사용량 정보 보기를 참고하세요.

다음 단계

연속 쿼리 만들어 보기