Importe dados do BigQuery e do Iceberg para o AlloyDB for PostgreSQL

Esta página descreve como usar as vistas do BigQuery para o AlloyDB para importar dados do BigQuery, incluindo tabelas nativas, tabelas externas do BigLake e tabelas do BigLake para o Apache Iceberg no BigQuery. O Iceberg é um formato de tabela aberto para gerir e trocar dados.

Esta página pressupõe que tem um cluster e uma instância principal do AlloyDB, e que tem um conjunto de dados e tabelas do BigQuery. Para mais informações, consulte os artigos Crie conjuntos de dados e Crie e use tabelas.

Antes de começar

  1. Peça acesso à funcionalidade BigQueryViews para o seu cluster e aguarde até receber a confirmação da ativação antes de seguir as instruções nesta página.
  2. Familiarize-se com os tipos de dados e as associações de colunas do BigQuery suportados.
  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. Ative as APIs Cloud necessárias para criar e estabelecer ligação ao AlloyDB para PostgreSQL.

    Ative as APIs

  9. No passo Confirmar projeto, clique em Seguinte para confirmar o nome do projeto ao qual vai fazer alterações.

  10. No passo Ativar APIs, clique em Ativar para ativar o seguinte:

    • API AlloyDB
    • API Compute Engine
    • Cloud Resource Manager API
    • API de rede de serviços
    • BigQuery Storage API

    A API Service Networking é necessária se planear configurar a conetividade de rede ao AlloyDB através de uma rede VPC que resida no mesmo projeto que o AlloyDB. Google Cloud

    A API Compute Engine e a API Cloud Resource Manager são necessárias se planear configurar a conetividade de rede ao AlloyDB através de uma rede VPC que reside num projeto Google Cloud diferente.

  11. Funções necessárias

    Para conceder acesso de leitura ao conjunto de dados do BigQuery à conta de serviço do cluster do AlloyDB, precisa das seguintes autorizações:

    • Visualizador de dados do BigQuery (roles/bigquery.dataViewer) ou qualquer função personalizada com autorizações bigquery.tables.get e bigquery.tables.getData. Quando concedida numa tabela ou numa vista, esta função concede autorizações para ler dados e metadados da tabela ou da vista.
    • Utilizador da sessão de leitura do BigQuery (roles/bigquery.readSessionUser) ou qualquer função personalizada com autorizações bigquery.readsessions.create e bigquery.readsessions.getData. Oferece a capacidade de criar e usar sessões de leitura.

    Conceda acesso do AlloyDB ao conjunto de dados do BigQuery

    Depois de ativar a funcionalidade de vistas do BigQuery no cluster do AlloyDB, conceda ao cluster do AlloyDB acesso à conta de serviço ao conjunto de dados do BigQuery.

    Para usar a CLI gcloud, pode instalar e inicializar a CLI Google Cloud ou usar a Cloud Shell.

    1. Abra a CLI gcloud. Se não tiver a CLI gcloud instalada, instale e inicialize a CLI gcloud ou use o Cloud Shell.

    2. Execute o comando gcloud beta alloydb clusters describe:

      gcloud beta alloydb clusters describe CLUSTER --region=REGION

      Substitua o seguinte:

      • CLUSTER: o ID do cluster do AlloyDB.
      • REGION: a localização do cluster do AlloyDB, por exemplo, asia-east1, us-east1. Consulte a lista completa de regiões em Gerir localizações de instâncias.

      O resultado contém um campo serviceAccountEmail, que é a conta de serviço deste cluster.

    3. Conceda as autorizações necessárias. Para mais informações, consulte o artigo Controle o acesso aos recursos com a IAM.

      Se a conta de serviço do cluster não tiver as autorizações necessárias, são apresentados os seguintes erros quando uma consulta é executada na tabela do BigQuery:

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

    Configure a extensão

    1. Crie a extensão.

      1. Ligue-se à instância do AlloyDB através do cliente psql seguindo as instruções em Ligue um cliente psql a uma instância. Em alternativa, pode usar o AlloyDB Studio. Para mais informações, consulte o artigo Faça a gestão dos seus dados através da Google Cloud consola.
      2. Execute o seguinte comando:

        CREATE EXTENSION bigquery_fdw;
        
    2. Crie um servidor externo para definir os parâmetros de ligação para o conjunto de dados do BigQuery remoto.

      CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;
      

      Substitua o seguinte:

      • BIGQUERY_SERVER_NAME: identificador exclusivo do servidor externo. Defina isto uma vez numa determinada base de dados. Pode substituir BIGQUERY_SERVER_NAME pelo nome do seu servidor.
    3. Crie o mapeamento de utilizadores executando o comando CREATE USER MAPPING, que especifica as credenciais a usar quando se liga ao servidor externo.

      CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;
      

      Substitua o seguinte:

      • USERNAME: um nome de utilizador da base de dados ou um utilizador de IAM que acede à tabela externa.
      • BIGQUERY_SERVER_NAME: identificador exclusivo do servidor externo que criou.
    4. Defina tabelas externas que correspondam às tabelas às quais quer aceder no BigQuery através do comando CREATE FOREIGN TABLE. Este comando permite-lhe definir a estrutura de uma tabela remota. A tabela externa pode ter todas ou um subconjunto das colunas na tabela de origem no BigQuery.

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

      Substitua o seguinte:

      • TABLENAME: nome da tabela externa na base de dados local.
      • COLUMNX_NAME: o nome da coluna tem de corresponder ao nome da coluna na origem do BigQuery.
      • DATA_TYPE: o tipo de dados da coluna.
      • BIGQUERY_SERVER_NAME: identificador exclusivo do servidor externo que criou.
      • BIGQUERY_PROJECT_ID: ID do projeto onde reside o conjunto de dados do BigQuery.
      • BIGQUERY_DATASET_NAME: nome do conjunto de dados do BigQuery para a tabela.
      • BIGQUERY_TABLE_NAME: nome da tabela do BigQuery.

      Depois de criar a tabela externa, pode consultá-la da mesma forma que consulta qualquer tabela no AlloyDB.

    Importar dados

    Para importar dados do BigQuery ou dados do BigLake Iceberg para o AlloyDB, siga estes passos:

    1. Identifique uma origem de dados existente ou crie uma tabela nativa do BigQuery ou novas tabelas Iceberg do BigLake no BigQuery.

    2. Use psql para criar local_table executando o seguinte comando:

      CREATE TABLE local_table AS (SELECT * from foreign_table);
      

      Este comando cria uma cópia da tabela do BigQuery numa tabela local nativa do AlloyDB.
      Consoante o fluxo de trabalho da sua aplicação, pode configurar a extensão pg_cron do PostgreSQL para atualizar a tabela do AlloyDB a intervalos periódicos.

    Configure uma agenda para importar dados para o AlloyDB

    Para configurar uma programação para importar dados do BigQuery ou dados do Iceberg do BigLake para o AlloyDB, siga estes passos:

    1. Configure a extensão bigquery_fdw.
    2. Ative a extensão pg_cron na instância do AlloyDB. Para mais informações, consulte o artigo Extensões de base de dados suportadas.
      1. Defina a flag alloydb.enable_pg_cron como on. Para mais informações, consulte alloydb.enable_pg_cron.
      2. Defina a flag cron.database_name para o nome da base de dados onde instalou a extensão bigquery_fdw e onde quer executar as consultas SQL para importação. Para mais informações, consulte o artigo Flags de base de dados suportadas.
    3. Para atualizar periodicamente uma cópia local da tabela externa, execute os seguintes comandos na base de dados onde instalou a extensão bigquery_fdw:

      CREATE EXTENSION pg_cron;
      SELECT cron.schedule(JOB_NAME, SCHEDULE, 'CREATE TABLE IF NOT EXISTS local_table_copy AS (SELECT * FROM foreign_table); DROP TABLE IF EXISTS local_table; ALTER TABLE local_table_copy RENAME TO local_table;');
      

      Substitua o seguinte:

      • JOB_NAME: o nome da tarefa.
      • SCHEDULE: a programação da tarefa.

      Para mais informações, consulte o artigo O que é o pg_cron?.

    O que se segue?