PostgreSQL용 AlloyDB에서 BigQuery에 액세스

이 페이지에서는 BigQuery 외부 데이터 래퍼를 사용하여 PostgreSQL용 AlloyDB 인터페이스에서 BigQuery를 사용하여 저장되거나 액세스할 수 있는 데이터에 액세스하는 방법을 설명합니다. BigQuery에 데이터를 기본 테이블, BigLake 외부 테이블 또는 BigQuery의 Apache Iceberg용 BigLake 테이블로 저장할 수 있습니다. 자세한 내용은 AlloyDB의 BigQuery 뷰 개요를 참조하세요.

이 페이지에서는 AlloyDB 클러스터 및 기본 인스턴스가 있고 BigQuery 데이터 세트와 테이블이 있다고 가정합니다. 자세한 내용은 데이터 세트 만들기테이블 만들기 및 사용을 참조하세요.

시작하기 전에

  1. 클러스터의 BigQuery 뷰 기능에 대한 액세스를 요청하고 사용 설정 확인을 받을 때까지 기다린 후 이 페이지의 안내를 따르세요.
  2. 지원되는 BigQuery 데이터 유형 및 열 매핑에 대해 알아봅니다.
  3. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. PostgreSQL용 AlloyDB를 만들고 여기에 연결하는 데 필요한 Cloud API를 사용 설정합니다.

    API 사용 설정

  9. 프로젝트 확인 단계에서 다음을 클릭하여 변경할 프로젝트의 이름을 확인합니다.

  10. API 사용 설정 단계에서 사용 설정을 클릭하여 다음을 사용 설정합니다.

    • AlloyDB API
    • Compute Engine API
    • Cloud Resource Manager API
    • Service Networking API
    • BigQuery Storage API

    AlloyDB와 동일한 Google Cloud 프로젝트에 있는 VPC 네트워크를 사용하여 AlloyDB에 대한 네트워크 연결을 구성하려면 Service Networking API가 필요합니다.

    다른 Google Cloud 프로젝트에 있는 VPC 네트워크를 사용하여 AlloyDB에 대한 네트워크 연결을 구성하려면 Compute Engine API와 Cloud Resource Manager API가 필요합니다.

  11. 필요한 역할

    AlloyDB 클러스터 서비스 계정에 BigQuery 데이터 세트에 대한 읽기 액세스 권한을 부여하려면 다음 권한이 필요합니다. 자세한 내용은 BigQuery 데이터 세트에 AlloyDB 액세스 권한 부여를 참조하세요.

    • BigQuery 데이터 뷰어(roles/bigquery.dataViewer) 또는 bigquery.tables.getbigquery.tables.getData 권한아 있는 커스텀 역할. 테이블 또는 뷰에 부여되면 이 역할은 테이블 또는 뷰에서 데이터와 메타데이터를 읽을 수 있는 권한을 제공합니다.
    • BigQuery 읽기 세션 사용자(roles/bigquery.readSessionUser) 또는 bigquery.readsessions.createbigquery.readsessions.getData 권한이 있는 커스텀 역할. 읽기 세션을 만들고 사용할 수 있는 기능을 제공합니다.

    BigQuery 데이터 세트에 AlloyDB 액세스 권한 부여

    AlloyDB 클러스터에서 BigQuery 뷰 기능이 사용 설정된 후 AlloyDB 클러스터 서비스 계정에 BigQuery 데이터 세트에 대한 액세스 권한을 부여합니다.

    gcloud CLI를 사용하려면 Google Cloud CLI를 설치 및 초기화하거나 Cloud Shell을 사용합니다.

    1. gcloud CLI를 엽니다. gcloud CLI가 설치되어 있지 않으면 gcloud CLI를 설치 및 초기화하거나 Cloud Shell을 사용합니다.

    2. gcloud beta alloydb clusters describe 명령어를 실행합니다.

      gcloud beta alloydb clusters describe CLUSTER --region=REGION

      다음을 바꿉니다.

      • CLUSTER: AlloyDB 클러스터 ID
      • REGION: AlloyDB 클러스터의 위치(예: asia-east1, us-east1). 인스턴스 위치 관리에서 전체 리전 목록을 확인합니다.

      출력에는 이 클러스터의 서비스 계정인 serviceAccountEmail 필드가 포함됩니다.

    3. 필수 권한 부여 자세한 내용은 IAM으로 리소스 액세스 제어를 참조하세요.

      클러스터 서비스 계정에 필요한 권한이 없으면 BigQuery 테이블에 대해 쿼리를 실행할 때 다음 오류가 표시됩니다.

      • The user does not have bigquery.readsessions.create permissions
      • Permission bigquery.tables.get denied on table
      • Permission bigquery.tables.getData denied on table

    확장 프로그램 구성

    1. 확장 프로그램을 만듭니다.

      1. 인스턴스에 psql 클라이언트 연결의 안내에 따라 psql 클라이언트를 사용하여 AlloyDB 인스턴스에 연결합니다. 또는 AlloyDB Studio를 사용할 수 있습니다. 자세한 내용은 Google Cloud 콘솔을 사용하여 데이터 관리를 참고하세요.
      2. 다음 명령어를 실행합니다.

        CREATE EXTENSION bigquery_fdw;
        
    2. 원격 BigQuery 데이터 세트의 연결 파라미터를 정의하는 외부 서버를 만듭니다.

      CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;
      

      다음을 바꿉니다.

      • BIGQUERY_SERVER_NAME: 외부 서버의 고유 식별자. 지정된 데이터베이스에서 한 번 정의합니다. BIGQUERY_SERVER_NAME을 서버 이름으로 바꿀 수 있습니다.
    3. CREATE USER MAPPING 명령어를 실행하여 사용자 매핑을 만듭니다. 이 명령어는 외부 서버에 연결할 때 사용할 사용자 인증 정보를 지정합니다.

      CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;
      

      다음을 바꿉니다.

      • USERNAME: 외부 테이블에 액세스하는 데이터베이스 사용자 이름 또는 IAM 사용자
      • BIGQUERY_SERVER_NAME: 생성한 외부 서버의 고유 식별자
    4. CREATE FOREIGN TABLE 명령어를 사용하여 BigQuery에서 액세스하려는 테이블에 해당하는 외부 테이블을 정의합니다. 이 명령어를 사용하면 원격 테이블의 구조를 정의할 수 있습니다. 외부 테이블에는 BigQuery의 소스 테이블에 있는 열이 전부 또는 일부 포함될 수 있습니다.

      CREATE FOREIGN TABLE TABLENAME (
      COLUMNX_NAME DATE_TYPE,
      COLUMNX_NAME DATE_TYPE,
      ...
      ) SERVER  BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset  BIGQUERY_DATASET_NAME, table  BIGQUERY_TABLE_NAME);
      

      다음을 바꿉니다.

      • TABLENAME: 로컬 AlloyDB 데이터베이스의 외부 테이블 이름입니다.
      • COLUMNX_NAME: 열 이름이며, BigQuery 소스의 열 이름과 일치해야 합니다. X는 테이블을 여러 열로 만들 수 있음을 나타냅니다.
      • DATA_TYPE: 열의 데이터 유형입니다.
      • BIGQUERY_SERVER_NAME: 생성한 외부 서버의 고유 식별자
      • BIGQUERY_PROJECT_ID: BigQuery 데이터 세트가 있는 프로젝트의 ID
      • BIGQUERY_DATASET_NAME: 테이블의 BigQuery 데이터 세트 이름
      • BIGQUERY_TABLE_NAME: BigQuery 테이블의 이름

      외부 테이블이 생성된 후에는 AlloyDB의 테이블을 쿼리하는 것과 같은 방식으로 이 테이블을 쿼리할 수 있습니다.

    다음 단계