Nesta página, descrevemos como usar a federação do Lakehouse para o AlloyDB para PostgreSQL para sincronizar dados de tabelas nativas do BigQuery, visualizações materializadas, visualizações do BigQuery, tabelas externas do BigLake (como tabelas gerenciadas do Apache Iceberg) e tabelas externas padrão. O Iceberg é um formato de tabela aberta para gerenciar e trocar dados.
Esta página pressupõe que você tenha um cluster e uma instância principal do AlloyDB, além de um conjunto de dados e tabelas do BigQuery. Para mais informações, consulte Criar conjuntos de dados e Criar e usar tabelas.
Antes de começar
- Verifique se a flag
bigquery_fdw.enabledestá configurada na instância do AlloyDB. - Familiarize-se com os tipos de dados e mapeamentos de colunas do BigQuery.
- Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Ative as APIs do Cloud necessárias para criar e se conectar ao AlloyDB para PostgreSQL.
Na etapa Confirmar projeto, clique em Avançar para confirmar o nome do projeto no qual você vai fazer alterações.
Na etapa Ativar APIs, clique em Ativar para ativar o seguinte:
- API AlloyDB
- API Compute Engine
- API Resource Manager
- API Service Networking
- API BigQuery Storage
A API Service Networking é necessária se você planeja configurar conectividade de rede com o AlloyDB usando uma rede VPC que reside no mesmo Google Cloud projeto do AlloyDB.
As APIs Compute Engine e API Resource Manager são necessárias se você planeja configurar a conectividade de rede com o AlloyDB usando uma rede VPC que reside em um projeto diferente Google Cloud
Funções exigidas
Para conceder acesso de leitura ao conjunto de dados do BigQuery à conta de serviço do cluster do AlloyDB, você precisa das seguintes permissões:
- Leitor de dados do BigQuery
(
roles/bigquery.dataViewer) ou qualquer função personalizada com permissõesbigquery.tables.getebigquery.tables.getData. Quando concedida em uma tabela ou visualização, essa função fornece permissões para ler dados e metadados da tabela ou visualização. - Usuário de sessão de leitura do BigQuery
(
roles/bigquery.readSessionUser) ou qualquer função personalizada com permissõesbigquery.readsessions.createebigquery.readsessions.getData. Permite criar e usar sessões de leitura.
Conceder acesso do AlloyDB ao conjunto de dados do BigQuery
Depois que o recurso de federação do Lakehouse for ativado no cluster do AlloyDB, conceda acesso da conta de serviço do cluster do AlloyDB ao conjunto de dados do BigQuery.
Para usar a CLI gcloud, você pode instalar e inicializar a Google Cloud CLI ou usar o Cloud Shell.
Abra a CLI gcloud. Se você não tiver a CLI gcloud instalada, instale e inicialize a CLI gcloud ou use o Cloud Shell.
Execute o
gcloud beta alloydb clusters describecomando:gcloud beta alloydb clusters describe CLUSTER --region=REGIONSubstitua:
CLUSTER: o ID do cluster do AlloyDB.REGION: o local do cluster do AlloyDB, por exemplo,asia-east1,us-east1. Consulte a lista completa de regiões em Gerenciar locais de instâncias.
A saída contém um campo
serviceAccountEmail, que é a conta de serviço desse cluster. Você também pode encontrar a conta de serviço na página Detalhes do cluster.Conceder as permissões necessárias. Para mais informações, consulte Controlar o acesso a recursos com o IAM.
Se a conta de serviço do cluster não tiver as permissões necessárias, os seguintes erros vão aparecer quando uma consulta for executada na tabela do BigQuery:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
Configurar a extensão
Crie a extensão.
- Conecte-se à instância do AlloyDB usando o cliente psql seguindo as instruções em Conectar um cliente psql a uma instância. Ou use o AlloyDB Studio. Para mais informações, consulte Gerenciar seus dados usando o Google Cloud console.
Execute este comando:
CREATE EXTENSION bigquery_fdw;
Crie um servidor estrangeiro para definir os parâmetros de conexão do conjunto de dados remoto do BigQuery.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;Substitua:
BIGQUERY_SERVER_NAME: identificador exclusivo do servidor estrangeiro. Defina isso uma vez em um determinado banco de dados. Você pode substituirBIGQUERY_SERVER_NAMEpelo nome do servidor.
Crie o mapeamento de usuário executando o comando
CREATE USER MAPPING, que especifica as credenciais a serem usadas quando você se conecta ao servidor estrangeiro.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;Substitua:
USERNAME: um nome de usuário do banco de dados ou um usuário do IAM que acessa a tabela estrangeira.BIGQUERY_SERVER_NAME: identificador exclusivo do servidor estrangeiro que você criou.
Defina tabelas estrangeiras que correspondam às tabelas que você quer acessar no BigQuery usando o comando
CREATE FOREIGN TABLE. Esse comando permite definir a estrutura de uma tabela remota. A tabela estrangeira 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 [, mode EXECUTION_MODE]);Substitua:
TABLENAME: nome da tabela estrangeira no banco de dados local.COLUMNX_NAME: o nome da coluna do AlloyDB. O nome da coluna precisa corresponder exatamente ao nome da coluna correspondente na tabela de origem do BigQuery.Xindica que a tabela pode ser criada com várias colunas. O nome também precisa corresponder ao caso exato da coluna do BigQuery. Se o nome da coluna do BigQuery contiver letras maiúsculas, por exemplo,employeeID, o identificador do AlloyDB precisará estar entre aspas duplas, por exemplo,"employeeID", para preservar letras mistas ou maiúsculas.DATA_TYPE: o tipo de dados da coluna.BIGQUERY_SERVER_NAME: identificador exclusivo do servidor estrangeiro que você criou.BIGQUERY_PROJECT_ID: ID do projeto em que o conjunto de dados do BigQuery reside.BIGQUERY_DATASET_NAME: nome do conjunto de dados do BigQuery para a tabela.BIGQUERY_TABLE_NAME: nome da tabela do BigQuery.EXECUTION_MODE: opcional. A opçãomodeoferece suporte às seguintes configurações:query: use a API BigQuery para consultas complexas.storage: use a API BigQuery Storage para leituras em massa mais rápidas.auto: escolha automaticamente entre os modos. Esse é o padrão.
Para mais informações, consulte Modos de execução do wrapper de dados externos do BigQuery.
Depois que a tabela estrangeira for criada, você poderá consultar essa tabela da mesma forma que consulta qualquer tabela no AlloyDB.
Sincronizar dados
Para sincronizar dados do BigQuery ou dados do BigLake Iceberg com o AlloyDB, siga estas etapas:
Identifique uma fonte de dados atual ou crie uma tabela nativa do BigQuery ou novas tabelas gerenciadas do Iceberg.
Use psql para criar
local_tableexecutando o seguinte comando:CREATE TABLE local_table AS (SELECT * from foreign_table);Esse comando cria uma cópia da tabela do BigQuery em uma tabela nativa local do AlloyDB.
Dependendo do fluxo de trabalho do aplicativo, você pode configurar a extensãopg_crondo PostgreSQL para atualizar a tabela do AlloyDB em intervalos periódicos.
Configurar uma programação para sincronizar dados com o AlloyDB
Para configurar uma programação para sincronizar dados do BigQuery ou dados do BigLake Iceberg com o AlloyDB, siga estas etapas:
- Configure a extensão
bigquery_fdw. - Ative a extensão
pg_cronna instância do AlloyDB. Para mais informações, consulte Extensões de banco de dados compatíveis.- Defina a flag
alloydb.enable_pg_croncomoon. Para mais informações, consulte alloydb.enable_pg_cron. - Defina a flag
cron.database_namecomo o nome do banco de dados em que você instalou a extensãobigquery_fdwe em que quer executar as consultas SQL para sincronização. Para mais informações, consulte Flags de banco de dados compatíveis.
- Defina a flag
Para atualizar periodicamente uma cópia local da tabela estrangeira, execute os seguintes comandos no banco de dados em que você 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:
JOB_NAME: o nome do job.SCHEDULE: a programação do job.
Para mais informações, consulte O que é pg_cron?.
A seguir
- Saiba mais sobre os casos de uso para acessar dados do BigQuery no AlloyDB.
- Acesse dados do BigQuery no AlloyDB.
- Saiba mais sobre os tipos de dados e mapeamentos de colunas do BigQuery compatíveis.