Data Boost로 통합 쿼리 실행

이 페이지에서는 BigQuery에서 Spanner 데이터베이스로 제휴 쿼리를 실행할 때 Spanner Data Boost를 사용하는 방법을 설명합니다. Data Boost를 사용하면 통합 쿼리가 프로비저닝된 Spanner 인스턴스의 기존 워크로드에 최소한의 영향을 미치면서 실행됩니다. BigQuery에서 Spanner 데이터베이스로의 Data Boost 쿼리는 BigQuery 데이터와 Spanner 데이터를 조인할 수 있습니다.

Spanner 통합을 사용하면 BigQuery에서 데이터를 복사하거나 이동하지 않고도 Spanner에 있는 데이터를 실시간으로 쿼리할 수 있습니다. Spanner 통합 쿼리에 대한 자세한 내용은 Spanner 통합 쿼리를 참조하세요. Data Boost에 대한 자세한 내용은 Data Boost 개요를 참조하세요.

시작하기 전에

Data Boost로 제휴 쿼리를 실행하려면 먼저 다음 작업을 완료해야 합니다.

Spanner 인스턴스와 데이터베이스 만들기

Spanner 인스턴스와 데이터베이스가 없는 경우 Google Cloud 콘솔을 사용하여 데이터베이스 만들기 및 쿼리의 단계에 따라 만드세요.

BigQuery Connection API 사용 설정

BigQuery Connection API를 사용하면 Spanner 데이터베이스와 같은 외부 데이터 소스에 대한 BigQuery 연결을 관리할 수 있습니다.

  • Enable the BigQuery connection API.

    Enable the API

자세한 내용은 BigQuery 문서의 BigQuery 연결 API를 참고하세요.

주 구성원에게 Data Boost에 대한 IAM 권한 부여

Data Boost로 쿼리와 내보내기를 실행하려면 주 구성원에게 다음 권한이 부여되어야 합니다.

  • spanner.instances.get - 인스턴스의 구성을 가져올 수 있습니다.
  • spanner.databases.useDataBoost - Spanner Data Boost의 컴퓨팅 리소스를 사용하여 파티션을 나눈 쿼리를 처리할 수 있습니다.

Spanner 권한에 대한 자세한 내용은 Identity and Access Management(IAM) 권한을 참고하세요.

이러한 필수 권한을 부여하려면 spanner.instances.getspanner.databases.useDataBoost가 포함된 Spanner 데이터베이스 리더(roles/spanner.databaseReader) 역할을 기반으로 커스텀 역할을 만드는 것이 좋습니다. 그런 다음 Data Boost로 쿼리와 내보내기를 실행해야 하는 모든 주 구성원에 이 역할을 추가할 수 있습니다. 커스텀 IAM 역할을 만드는 방법을 알아보려면 커스텀 역할 만들기를 참고하세요. Spanner의 사전 정의된 역할에 대해 자세히 알아보려면 사전 정의된 역할을 참고하세요.

제휴 Data Boost 쿼리 실행

BigQuery에서 외부 소스로 Data Boost 쿼리를 실행하려면 외부 소스에 대한 BigQuery 연결과 연결 ID가 필요합니다. Data Boost를 사용하여 통합 Spanner 쿼리를 실행하면 외부 소스는 Spanner 데이터베이스입니다. 연결 ID를 만들면 BigQuery에서 Spanner 데이터베이스의 Data Boost 쿼리를 실행하는 데 사용됩니다.

다음 옵션 중 하나를 사용하여 BigQuery 연결 ID를 만든 다음 연결 ID를 사용하여 BigQuery에서 Data Boost 쿼리를 실행합니다.

  1. Spanner에서 시작 - Spanner 콘솔에서 BigQuery 외부 연결 ID를 만듭니다. Spanner 콘솔에서 연결 ID가 생성되면 BigQuery 콘솔로 리디렉션되어 Spanner 데이터베이스에 대한 제휴 Data Boost 쿼리를 실행합니다.

  2. BigQuery에서 시작 - BigQuery 콘솔 또는 bq 명령줄 도구를 사용하여 Data Boost 외부 연결 ID를 만듭니다. 연결 ID를 만든 후 BigQuery 콘솔에 계속 머물러 Spanner 데이터베이스에 대한 제휴 Data Boost 쿼리를 실행합니다.

Spanner에서 시작하여 Data Boost 쿼리 실행

Spanner 스튜디오에서 시작하여 제휴 Data Boost 쿼리를 실행하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.

    인스턴스 페이지로 이동

    콘솔에 Spanner 인스턴스 목록이 표시됩니다.

  2. Spanner 인스턴스를 선택한 후 데이터베이스를 선택합니다.

  3. 데이터베이스 개요 페이지의 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.

  4. BiqQuery에서 보기를 클릭합니다.

  5. BigQuery에서 보기 대화상자에 연결 ID를 입력합니다.

    연결 ID는 Spanner 데이터베이스에 대한 새 BigQuery 외부 연결을 만드는 데 사용됩니다. 다음 패턴을 사용하여 외부 연결을 참조합니다.

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    ID가 이미 존재하는 경우 오류가 발생합니다.

  6. 대화상자의 나머지 부분을 작성하고 다음을 실행합니다.

    • 동시에 데이터 읽기를 선택합니다.
    • Spanner Data Boost 사용을 선택합니다.
  7. BigQuery에서 보기를 클릭합니다.

    BigQuery Studio가 다음 쿼리와 함께 열립니다.

    SELECT * FROM EXTERNAL_QUERY("PROJECT-ID.LOCATION.CONNECTION-ID", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
    

    이를 제휴 쿼리로 대체할 수 있습니다. 예를 들어 다음 예와 유사한 쿼리를 실행할 수 있습니다. 이 예에서는 Spanner 데이터베이스의 orders 테이블에서 제휴 쿼리를 실행하고 결과를 mydataset.customers라는 BigQuery 테이블과 조인합니다.

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

BigQuery에서 시작하여 Data Boost 쿼리 실행

BigQuery에서 Spanner 데이터베이스로 외부 데이터 연결을 만들고 이 연결을 사용하여 BigQuery에서 제휴 Data Boost 쿼리를 실행하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. BigQuery 문서의 Spanner 연결 만들기로 이동하여 콘솔 탭의 안내를 따릅니다.

  2. 외부 데이터 소스 창에서 다음을 수행합니다.

    • 동시에 데이터 읽기를 선택합니다.
    • Spanner Data Boost 사용을 선택합니다.

bq

  1. BigQuery 문서의 Spanner 연결 만들기로 이동하여 bq* 탭의 안내를 따릅니다.

  2. 다음 연결 속성을 true로 설정합니다.

    • useParallelism
    • useDataBoost

다음 예시에서는 bq mk 명령어를 사용하여 Data Boost의 두 가지 필수 속성이 포함된 my_connection이라는 새 연결을 만듭니다.

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

다음 단계