연속 쿼리 소개
이 문서에서는 BigQuery 연속 쿼리를 설명합니다.
BigQuery 연속 쿼리는 지속적으로 실행되는 SQL 문입니다. 연속 쿼리를 사용하면 BigQuery에서 수신 데이터를 실시간으로 분석할 수 있습니다. 연속 쿼리에서 생성된 출력 행을 BigQuery 테이블에 삽입하거나 Pub/Sub, Bigtable 또는 Spanner로 내보낼 수 있습니다. 연속 쿼리는 다음 방법 중 하나를 사용하여 표준 BigQuery 테이블에 기록된 데이터를 처리할 수 있습니다.
연속 쿼리를 사용하여 통계를 만들어 즉시 조치, 실시간 머신러닝(ML) 추론 적용, 다른 플랫폼에 데이터 복제 등 시간에 민감한 작업을 수행할 수 있습니다. 이를 통해 애플리케이션 결정 로직을 위한 이벤트 기반 데이터 처리 엔진으로 BigQuery를 사용할 수 있습니다.
다음 다이어그램은 일반적인 연속 쿼리 워크플로를 보여줍니다.
사용 사례
연속 쿼리를 사용할 수 있는 일반적인 사용 사례는 다음과 같습니다.
- 맞춤설정된 고객 상호작용 서비스: 생성형 AI를 사용하여 각 고객 상호작용에 맞춤설정된 메시지를 만듭니다.
- 이상 감지: 복잡한 데이터에 대해 실시간으로 이상 및 위협 감지를 수행할 수 있는 솔루션을 빌드하여 문제에 보다 신속하게 대응할 수 있습니다.
- 맞춤설정 가능한 이벤트 기반 파이프라인: Pub/Sub와의 연속 쿼리 통합을 사용해서 수신 데이터를 기반으로 다운스트림 애플리케이션을 트리거합니다.
- 데이터 보강 및 항목 추출: 연속 쿼리를 사용하여 SQL 함수 및 ML 모델을 사용하여 실시간 데이터 보강 및 변환을 수행합니다.
- 역방향 추출, 변환, 로드(ETL): 지연 시간이 짧은 애플리케이션 제공에 더 적합한 다른 스토리지 시스템으로 실시간 역방향 ETL을 수행합니다. 예를 들어 BigQuery에 쓰여진 이벤트 데이터를 분석하거나 개선한 후 애플리케이션 서빙을 위해 Bigtable 또는 Spanner로 스트리밍합니다.
지원되는 작업
연속 쿼리에서 지원되는 작업은 다음과 같습니다.
INSERT
문을 실행하여 연속 쿼리의 데이터를 BigQuery 테이블에 씁니다.EXPORT DATA
문을 실행하여 Pub/Sub 주제에 연속 쿼리 출력을 게시합니다. 자세한 내용은 Pub/Sub로 데이터 내보내기를 참조하세요.Pub/Sub 주제에서 Dataflow를 사용하여 스트리밍 분석을 수행하거나 애플리케이션 통합 워크플로에서 데이터를 사용하는 등 다른 서비스에서 데이터를 사용할 수 있습니다.
EXPORT DATA
문을 실행하여 BigQuery에서 Bigtable 테이블로 데이터를 내보냅니다. 자세한 내용은 Bigtable에 데이터 내보내기를 참조하세요.EXPORT DATA
문을 실행하여 BigQuery에서 Spanner 테이블로 데이터를 내보냅니다. 자세한 내용은 Spanner로 데이터 내보내기(역방향 ETL)를 참고하세요.다음 생성형 AI 함수를 호출합니다.
이 함수를 사용하려면 Vertex AI 모델을 기반으로 한 BigQuery ML 원격 모델이 있어야 합니다.
다음 AI 함수 호출:
이러한 함수를 사용하려면 Cloud AI API를 기반으로 한 BigQuery ML 원격 모델이 있어야 합니다.
ML.NORMALIZER
함수를 사용하여 수치 데이터를 정규화합니다.스테이트리스(Stateless) GoogleSQL 함수(예: 변환 함수)를 사용합니다. 스테이트리스(Stateless) 함수에서 각 행은 테이블의 다른 행과는 별개로 처리됩니다.
APPENDS
변경 내역 함수를 사용하여 특정 시점에서 연속 쿼리 처리를 시작합니다.
승인
연속 쿼리 작업을 실행할 때 사용되는 Google Cloud 액세스 토큰은 사용자 계정으로 생성된 경우 2일의 TTL(수명)을 갖습니다. 따라서 이러한 작업은 2일 후에 실행이 중지됩니다. 서비스 계정에서 생성된 액세스 토큰은 더 오래 실행될 수 있지만 최대 쿼리 런타임을 준수해야 합니다. 자세한 내용은 서비스 계정을 사용하여 연속 쿼리 실행을 참조하세요.
위치
다음 위치에서는 연속 쿼리가 지원되지 않습니다.
리전 설명 | 리전 이름 | 세부정보 | |
---|---|---|---|
미주 | |||
미국 멀티 리전 | us |
||
Dallas | us-south1 |
|
|
아이오와 | us-central1 |
|
|
로스앤젤레스 | us-west2 |
||
멕시코 | northamerica-south1 |
||
몬트리올 | northamerica-northeast1 |
|
|
북버지니아 | us-east4 |
||
오리건 | us-west1 |
|
|
솔트레이크시티 | us-west3 |
||
상파울루 | southamerica-east1 |
|
|
사우스캐롤라이나 | us-east1 |
||
토론토 | northamerica-northeast2 |
|
|
아시아 태평양 | |||
델리 | asia-south2 |
||
홍콩 | asia-east2 |
||
자카르타 | asia-southeast2 |
||
멜버른 | australia-southeast2 |
||
뭄바이 | asia-south1 |
||
오사카 | asia-northeast2 |
||
서울 | asia-northeast3 |
||
싱가포르 | asia-southeast1 |
||
시드니 | australia-southeast1 |
||
타이완 | asia-east1 |
||
도쿄 | asia-northeast1 |
||
유럽 | |||
EU 멀티 리전 | eu |
||
벨기에 | europe-west1 |
|
|
베를린 | europe-west10 |
|
|
핀란드 | europe-north1 |
|
|
프랑크푸르트 | europe-west3 |
||
런던 | europe-west2 |
|
|
마드리드 | europe-southwest1 |
|
|
밀라노 | europe-west8 |
||
네덜란드 | europe-west4 |
|
|
파리 | europe-west9 |
|
|
스톡홀름 | europe-north2 |
|
|
토리노 | europe-west12 |
||
바르샤바 | europe-central2 |
||
취리히 | europe-west6 |
|
|
중동 | |||
도하 | me-central1 |
||
Dammam | me-central2 |
||
텔아비브 | me-west1 |
||
아프리카 | |||
요하네스버그 | africa-south1 |
제한사항
연속 쿼리에는 다음과 같은 제한사항이 적용됩니다.
- BigQuery 연속 쿼리는 수집된 데이터의 상태를 유지하지 않습니다.
JOIN
, 집계 함수, 윈도우 함수와 같이 상태에 의존하는 일반적인 작업은 지원되지 않습니다. 연속 쿼리에서는 다음 SQL 기능을 사용할 수 없습니다.
연속 쿼리는 변경 데이터 캡처(CDC) 삽입/업데이트(upsert) 데이터 처리를 지원하지 않습니다.
연속 쿼리는 데이터 소스로 와일드 카드 테이블을 지원하지 않습니다.
연속 쿼리는 데이터 소스로 외부 테이블을 지원하지 않습니다.
연속 쿼리는 데이터 소스로 INFORMATION_SCHEMA 뷰를 지원하지 않습니다.
연속 쿼리는 BigQuery의 Apache Iceberg용 BigLake 테이블을 지원하지 않습니다.
연속 쿼리는 다음 BigQuery 보안 기능을 지원하지 않습니다.
Bigtable로 데이터를 내보낼 때는 쿼리 중인 테이블이 포함된 BigQuery 데이터 세트와 동일한Google Cloud 리전 경계 내에 있는 Bigtable 인스턴스만 대상으로 지정할 수 있습니다. 자세한 내용은 위치 고려사항을 참조하세요. Pub/Sub는 전역 리소스이므로 Pub/Sub로 데이터를 내보내는 경우에는 이 제한이 적용되지 않습니다.
Bigtable, Spanner 또는 Pub/Sub 위치 엔드포인트로 데이터를 내보낼 때는 쿼리 중인 테이블이 포함된 BigQuery 데이터 세트와 동일한 Google Cloud리전 경계 내에 있는 Bigtable, Spanner 또는 Pub/Sub 리소스만 대상으로 지정할 수 있습니다. Pub/Sub 전역 엔드포인트로 데이터를 내보내는 경우에는 이 제한이 적용되지 않습니다.
데이터 캔버스에서는 연속 쿼리를 실행할 수 없습니다.
연속 쿼리 작업이 실행되는 동안에는 연속 쿼리에 사용되는 SQL을 수정할 수 없습니다. 자세한 내용은 연속 쿼리의 SQL 수정을 참조하세요.
연속 쿼리 작업이 수신 데이터 처리가 지연되고 출력 워터마크 지연이 48시간을 초과하면 실패합니다. 쿼리를 다시 실행하고
APPENDS
변경 내역 함수를 사용하여 이전 연속 쿼리 작업을 중지한 시점부터 처리를 재개할 수 있습니다. 자세한 내용은 특정 시점부터 연속 쿼리 시작을 참조하세요.사용자 계정으로 구성된 연속 쿼리는 최대 2일 동안 실행할 수 있습니다. 서비스 계정으로 구성된 연속 쿼리는 최대 150일 동안 실행할 수 있습니다. 최대 쿼리 런타임에 도달하면 쿼리가 실패하고 수신 데이터 처리가 중지됩니다.
연속 쿼리는 BigQuery 안정성 기능을 사용하여 빌드되지만 일시적인 문제가 가끔 발생할 수 있습니다. 문제가 발생하면 연속 쿼리가 자동으로 일부 재처리되어 연속 쿼리 출력에 중복 데이터가 발생할 수 있습니다. 이러한 시나리오를 처리하도록 다운스트림 시스템을 설계하세요.
예약 제한사항
- 연속 쿼리를 실행하려면 Enterprise 버전 또는 Enterprise Plus 버전 예약을 만들어야 합니다. 연속 쿼리는 주문형 컴퓨팅 청구 모델을 지원하지 않습니다.
CONTINUOUS
예약 할당을 만들면 연결된 예약이 최대 500슬롯으로 제한됩니다. bq-continuous-queries-feedback@google.com으로 문의하여 이 한도 상향을 요청할 수 있습니다.- 연속 쿼리 예약 할당은 예약이 공유하도록 구성된 경우에도 유휴 슬롯을 공유하지 않습니다.
- 연속 쿼리 예약 할당과 동일한 예약에서 다른 작업 유형을 사용하는 예약 할당을 만들 수 없습니다.
- 연속 쿼리 동시 실행은 구성할 수 없습니다. BigQuery는
CONTINUOUS
작업 유형을 사용하는 사용 가능한 예약 할당을 기반으로 동시에 실행할 수 있는 연속 쿼리 수를 자동으로 결정합니다. - 동일한 예약을 사용하여 여러 개의 연속 쿼리를 실행하는 경우 BigQuery 공정성에 정의된 대로 개별 작업이 사용 가능한 리소스를 공정하게 분할하지 않을 수 있습니다.
슬롯 자동 확장
연속 쿼리는 슬롯 자동 확장을 사용하여 할당된 용량을 워크로드에 맞게 동적으로 확장할 수 있습니다. 연속 쿼리 워크로드가 증가하거나 감소함에 따라 BigQuery는 슬롯을 동적으로 조정합니다.
연속 쿼리가 실행되기 시작하면 슬롯 리소스를 소비하는 수신 데이터를 적극적으로 수신 대기합니다. 실행 중인 연속 쿼리가 있는 예약은 슬롯이 0으로 축소되지 않지만, 주로 수신 데이터를 수신 대기하는 유휴 연속 쿼리는 최소한의 슬롯(일반적으로 1개 슬롯)을 소비할 것으로 예상됩니다.
가격 책정
연속 쿼리에서는 슬롯으로 측정되는 BigQuery 용량 컴퓨팅 가격 책정을 사용합니다.
연속 쿼리를 실행하려면 Enterprise 또는 Enterprise Plus 버전을 사용하는 예약 CONTINUOUS
작업 유형을 사용하는 예약 할당이 있어야 합니다.
데이터 수집 및 스토리지 등의 기타 BigQuery 리소스 사용 요금은 BigQuery 가격 책정에 표시된 요율에 따라 청구됩니다.
연속 쿼리 결과를 받거나 연속 쿼리 처리 중에 호출되는 다른 서비스를 사용하면 해당 서비스에 대해 게시된 요금이 청구됩니다. 연속 쿼리에 사용되는 기타 Google Cloud 서비스의 가격 책정은 다음 주제를 참조하세요.