Questa pagina mostra come sincronizzare le tabelle da BigQuery nell'istanza AlloyDB per PostgreSQL.
Sincronizzando i dati analitici da BigQuery in AlloyDB, puoi creare sistemi operativi che beneficiano dell'accesso transazionale a bassa latenza al tuo data lake. A differenza di un wrapper di dati esterni (FDW) che esegue query sui dati sul posto, la tabella di sincronizzazione sposta i dati nello spazio di archiviazione AlloyDB per ottenere le massime prestazioni.
AlloyDB offre i seguenti modi per spostare i dati BigQuery nella tua istanza:
Sincronizzazione una tantum:crea una copia indipendente e scrivibile della tua tabella BigQuery.
Sincronizzazione periodica (mirroring): crea una tabella locale di sola lettura che si aggiorna automaticamente in base a una pianificazione, ad esempio ogni 6 ore o ogni giorno.
Considerazioni operative e sulle prestazioni
Quando utilizzi le tabelle di sincronizzazione BigQuery, tieni presente quanto segue:
- Utilizzo delle risorse: lo spostamento dei dati consuma CPU e memoria. Per le tabelle molto grandi, valuta la possibilità di pianificare le sincronizzazioni durante le ore non di punta per evitare di influire sul workload transazionale principale.
- Visibilità dei dati: durante un'operazione di sostituzione, la tabella di destinazione esistente viene eliminata e ricreata in anticipo. Le query durante l'importazione inizialmente visualizzano una tabella vuota, seguita dai nuovi dati importati che vengono visualizzati in modo incrementale man mano che vengono eseguite le transazioni batch.
Prima di iniziare
- Acquisisci familiarità con il modo in cui
bigquery_fdwgestisce i tipi di dati e i mapping delle colonne BigQuery, perché l'estensionealloydb_syncutilizzabigquery_fdwper connettersi a BigQuery. - Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
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.
-
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.
-
Abilita le API Cloud necessarie per creare e connetterti ad AlloyDB.
Per confermare il nome del progetto a cui apporterai le modifiche, fai clic su Avanti nel passaggio Conferma progetto.
Nel passaggio Abilita API, fai clic su Abilita per abilitare quanto segue:
- API AlloyDB
- API Compute Engine
- API Cloud Resource Manager
- API Service Networking
- API BigQuery Storage
L'API Service Networking è necessaria se prevedi di configurare la connettività di rete ad AlloyDB utilizzando una rete VPC che si trova nello stesso progetto Google Cloud di AlloyDB.
L'API Compute Engine e l'API Cloud Resource Manager sono necessarie se prevedi di configurare la connettività di rete ad AlloyDB utilizzando una rete VPC che si trova in un progetto Google Cloud diverso.
- Assicurati di avere una tabella BigQuery esistente da cui sincronizzare i dati. Per saperne di più, consulta Creare e utilizzare tabelle BigQuery.
Ruoli obbligatori
Per concedere l'accesso al set di dati BigQuery al account di servizio del cluster AlloyDB, devi disporre delle seguenti autorizzazioni:
- Visualizzatore dati BigQuery
(
roles/bigquery.dataViewer) o qualsiasi ruolo personalizzato con le autorizzazionibigquery.tables.getebigquery.tables.getData. Se concesso a un account di servizio, questo ruolo fornisce le autorizzazioni per leggere dati e metadati dalla tabella o dalla visualizzazione. - Utente sessione di lettura BigQuery
(
roles/bigquery.readSessionUser) o qualsiasi ruolo personalizzato con le autorizzazionibigquery.readsessions.createebigquery.readsessions.getData. Fornisce la possibilità di creare e utilizzare sessioni di lettura. - Utente job BigQuery
(
roles/bigquery.jobUser) o qualsiasi ruolo personalizzato con autorizzazionibigquery.jobs.create. Offre la possibilità di creare ed eseguire job, inclusi i job di query.
Configurare l'estensione
Prima di sincronizzare le tabelle da BigQuery, attiva l'estensione richiesta e configura la connessione a BigQuery. Se utilizzi la console Google Cloud , AlloyDB esegue questi passaggi automaticamente.
Crea l'estensione.
- Connettiti all'istanza AlloyDB utilizzando il client psql seguendo le istruzioni riportate in Connettere un client psql a un'istanza.
Esegui questo comando:
CREATE EXTENSION IF NOT EXISTS alloydb_sync;
Per consentire ad AlloyDB di autenticarsi con BigQuery, crea il mapping utente.
CREATE EXTENSION IF NOT EXISTS bigquery_fdw; CREATE SERVER IF NOT EXISTS BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw; CREATE USER MAPPING IF NOT EXISTS FOR USER SERVER BIGQUERY_SERVER_NAME;Sostituisci quanto segue:
USER: un nome utente del database o un utente IAM che accede alla tabella BigQuery.BIGQUERY_SERVER_NAME: identificatore univoco per il server BigQuery. Definisci questa impostazione una sola volta in un determinato database. Puoi sostituireBIGQUERY_SERVER_NAMEcon il nome del tuo server.
Sincronizza una tabella BigQuery per l'esportazione una tantum
Puoi sincronizzare una tabella BigQuery per l'esportazione una tantum utilizzando la consoleGoogle Cloud o psql.
Utilizzare la Google Cloud console
Per sincronizzare una tabella BigQuery con AlloyDB utilizzando la consoleGoogle Cloud :
Apri la pagina BigQuery nella console Google Cloud .
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:
Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi sul tuo set di dati.
Fai clic su Panoramica > Tabelle e seleziona una tabella.
Nel riquadro dei dettagli, fai clic su Carica Esporta / Sincronizza > AlloyDB (Esporta una volta o sincronizza).
In Scegli un cluster di destinazione, seleziona una delle seguenti opzioni:
Seleziona Utilizza un cluster esistente per esportare la tabella BigQuery in un cluster AlloyDB esistente. Poi, procedi nel seguente modo:
Seleziona il cluster AlloyDB principale.
Seleziona il database AlloyDB di destinazione.
Seleziona lo schema per la tabella AlloyDB di destinazione.
Specifica un nome per la tabella AlloyDB di destinazione.
Per Frequenza di sincronizzazione, seleziona Una sola volta per creare una copia della tabella BigQuery.
Fai clic su Configura esportazione.
Al termine della configurazione della sincronizzazione, puoi utilizzare le istruzioni SQL fornite per monitorare il job di importazione ed eseguire query sulle tabelle importate. Fai clic su Query per visualizzare la tabella importata in AlloyDB Studio.
Seleziona Crea un nuovo cluster per esportare la tabella BigQuery in un nuovo cluster AlloyDB. Quindi:
Fai clic su Configura esportazione.
Nella finestra di dialogo Reindirizza ad AlloyDB, seleziona Reindirizza.
Seleziona un tipo di cluster: Cluster di prova senza costi o Cluster di cui è stato eseguito il provisioning.
Fai clic su Continua.
In Configurazione della sincronizzazione, seleziona il database AlloyDB di destinazione
postgrespredefinito, lo schemapublicpredefinito per la tabella AlloyDB di destinazione e specifica un nome per la tabella AlloyDB di destinazione.Per Frequenza di sincronizzazione, seleziona Una sola volta per creare una copia della tabella BigQuery.
Fai clic su Continua.
Configura il cluster. Per saperne di più su ciascun campo, vedi Crea un nuovo cluster e un'istanza primaria.
Fai clic su Crea cluster.
Al termine della configurazione della sincronizzazione, vai ad AlloyDB Studio per eseguire query sulle tabelle importate.
Sincronizzare una tabella BigQuery una sola volta utilizzando psql
Per creare una copia modificabile dei dati BigQuery, utilizza
psql per eseguire la funzione alloydb_sync.import_bq_table.
SELECT alloydb_sync.import_bq_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui si trova il set di dati BigQuery.DATASET_ID: il nome del set di dati BigQuery per la tabella. Per le tabelle Iceberg con un nome in quattro parti, questo èCatalog.Namespace.TABLE_ID: il nome della tabella o della vista BigQuery.ALLOYDB_DESTINATION_TABLE_NAME: il nome della tabella locale nel database AlloyDB in cui creare e importare i dati. Puoi includere il nome dello schema, ad esempiopublic.local_sales.ON_EXISTS: la strategia da utilizzare se la tabella di destinazione esiste già.PRIMARY_KEY_COLUMN: un elenco facoltativo di nomi di colonne da utilizzare come chiave primaria.
Esempio
L'esempio seguente mostra come sincronizzare una tabella denominata transactions da un set di dati BigQuery in una nuova tabella AlloyDB denominata public.local_sales:
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
'replace'
);
Parametro on_exists
Il parametro on_exists determina la modalità di gestione della sincronizzazione da parte della funzione se la
tabella di destinazione esiste già in AlloyDB:
error: l'opzione predefinita. Interrompe la sincronizzazione se la tabella di destinazione esiste già.skip: ignora la sincronizzazione se la tabella di destinazione esiste già.replace: sostituisce la tabella locale esistente con dati aggiornati da BigQuery.
Supporto delle chiavi primarie
Se fornisci il parametro facoltativo primary_key come array di testo,
AlloyDB crea la tabella con le colonne specificate come
chiave primaria.
SELECT alloydb_sync.import_bq_table(
'my-gcp-project.sales_data.transactions',
'public.local_sales',
ARRAY['transaction_id']
);
Sincronizzare una tabella BigQuery per l'esportazione periodica
Puoi sincronizzare una tabella BigQuery per l'esportazione periodica utilizzando la consoleGoogle Cloud o psql.
Utilizzare la Google Cloud console
Per sincronizzare una tabella BigQuery con AlloyDB utilizzando la consoleGoogle Cloud :
Apri la pagina BigQuery nella console Google Cloud .
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi sul tuo set di dati.
Fai clic su Panoramica > Tabelle e seleziona una tabella.
Nel riquadro dei dettagli, fai clic su Carica Esporta / Sincronizza > AlloyDB (Esporta una volta o sincronizza).
In Scegli un cluster di destinazione, seleziona una delle seguenti opzioni:
Seleziona Utilizza un cluster esistente per esportare la tabella BigQuery in un cluster AlloyDB esistente. Poi, procedi nel seguente modo:
Seleziona il cluster AlloyDB principale.
Seleziona il database AlloyDB di destinazione.
Seleziona lo schema per la tabella AlloyDB di destinazione.
Specifica un nome per la tabella AlloyDB di destinazione.
Per Frequenza di sincronizzazione, seleziona un periodo di tempo per creare una sincronizzazione periodica della tabella BigQuery, ad esempio Ogni ora o Ogni sei ore.
Fai clic su Configura esportazione.
Al termine della configurazione della sincronizzazione, puoi utilizzare le istruzioni SQL fornite per monitorare il job di importazione ed eseguire query sulla tabella importata. Fai clic su Query per visualizzare la tabella importata in AlloyDB Studio.
Seleziona Crea un nuovo cluster per esportare la tabella BigQuery in un nuovo cluster AlloyDB. Quindi:
Fai clic su Configura esportazione.
Nella finestra di dialogo Reindirizza ad AlloyDB, seleziona Reindirizza.
Seleziona un tipo di cluster: Cluster di prova senza costi o Cluster di cui è stato eseguito il provisioning.
Fai clic su Continua.
In Configurazione della sincronizzazione, seleziona il database AlloyDB di destinazione
postgrespredefinito, lo schemapublicpredefinito per la tabella AlloyDB di destinazione e specifica un nome per la tabella AlloyDB di destinazione.Per Frequenza di sincronizzazione, seleziona Una sola volta per creare una copia della tabella BigQuery.
Fai clic su Continua.
Configura il cluster. Per saperne di più su ciascun campo, vedi Crea un nuovo cluster e un'istanza primaria.
Fai clic su Crea cluster.
Al termine della configurazione della sincronizzazione, vai ad AlloyDB Studio per eseguire query sulle tabelle importate.
Crea una sincronizzazione periodica
Per mantenere una tabella di sola lettura sincronizzata con i dati BigQuery, utilizza psql per eseguire la funzione alloydb_sync.create_bq_sync_table.
SELECT alloydb_sync.create_bq_sync_table(
'PROJECT_ID.DATASET_ID.TABLE_ID',
'ALLOYDB_DESTINATION_TABLE_NAME',
'REFRESH_INTERVAL',
'ON_EXISTS',
ARRAY['PRIMARY_KEY_COLUMN']
);
Sostituisci quanto segue:
PROJECT_ID.DATASET_ID.TABLE_ID: Il nome completo della tabella o della visualizzazione BigQuery, inclusi l'ID progetto, l'ID set di dati e l'ID tabella, separati da punti. Per le tabelle Iceberg con un nome in quattro parti,DATASET_IDè rappresentato comeCatalog.Namespace. Ad esempio:my-gcp-project.sales_data.transactions.ALLOYDB_DESTINATION_TABLE_NAME: il nome della tabella locale nel database AlloyDB in cui creare e sincronizzare i dati.REFRESH_INTERVAL: l'intervallo in cui AlloyDB aggiorna periodicamente i dati da BigQuery, ad esempio,12 hours.ON_EXISTS: la strategia da utilizzare se la tabella di destinazione esiste già.PRIMARY_KEY_COLUMN: un elenco facoltativo di nomi di colonne da utilizzare come chiave primaria.
Esempio
L'esempio seguente mostra come creare un mirror del profilo cliente che si aggiorna ogni 12 ore:
SELECT alloydb_sync.create_bq_sync_table(
'my-gcp-project.crm_data.profiles',
'public.customer_mirror',
'12 hours',
'replace'
);
Monitorare e gestire i job
Dopo aver avviato una sincronizzazione, puoi monitorarne l'avanzamento e gestire i job.
Verifica dello stato di un job
Le sincronizzazioni di grandi dimensioni possono richiedere tempo. Puoi monitorare l'avanzamento, inclusi i record
elaborati e il tempo stimato per il completamento, eseguendo query sulla vista job_status:
SELECT
import_id,
status,
records_processed,
total_records,
error
FROM alloydb_sync.job_status;
Ad esempio, per annullare il job, esegui questo comando:
SELECT alloydb_sync.cancel_import_job('85bb5dfa-dfb9-4017-9153-738f55abe4b1');
Interrompere ed eliminare un job di sincronizzazione
Per interrompere il mirroring di una tabella BigQuery ed eliminare la tabella locale,
utilizza la funzione alloydb_sync.delete_bq_sync_table:
SELECT alloydb_sync.delete_bq_sync_table('public.customer_mirror');
Mappature dei tipi di dati
Quando sincronizzi o importi dati da BigQuery ad AlloyDB utilizzando l'estensione alloydb_sync, AlloyDB mappa i tipi di dati BigQuery ai tipi di dati PostgreSQL corrispondenti nella tabella di destinazione.
Verifica che le colonne della tabella BigQuery di origine utilizzino i seguenti tipi di dati supportati.
La tabella seguente elenca i mapping dei tipi di dati tra BigQuery e AlloyDB.
| Tipi di dati della tabella BigQuery | Tipi di dati delle tabelle esterne PostgreSQL consigliati |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Per saperne di più, consulta PostGIS_Geography. |
|
|
|
Per saperne di più, consulta l'estensione |
Limitazioni
Quando sincronizzi le tabelle da BigQuery, si applicano le seguenti limitazioni:
- Questa funzionalità è supportata solo per PostgreSQL versione 18.
- Se
DROPl'estensionealloydb_sync, devi riavviare l'istanza prima di ricrearla. - Le sincronizzazioni vengono eseguite all'interno di una transazione. Se il job di importazione viene interrotto o non va a buon fine, il sistema esegue il rollback dei dati importati.
- Se due utenti avviano job di sincronizzazione contemporaneamente con le stesse tabelle di destinazione, le tabelle potrebbero sovrascriversi a vicenda.
- Se si verifica un'interruzione durante l'importazione iniziale in background di una tabella di sincronizzazione appena registrata, la tabella rimane incompleta fino al successivo intervallo di aggiornamento pianificato. Per risolvere il problema, puoi eliminare la tabella di sincronizzazione
utilizzando la funzione
alloydb_sync.delete_bq_sync_table()e ricrearla. - I tipi BigQuery complessi come
ARRAY,BYTES,VECTOReGEOGRAPHYnon sono supportati per la sincronizzazione. Per un elenco completo, consulta Tipi di dati e mappature delle colonne di BigQuery supportati. - Non eliminare manualmente una tabella replicata. Utilizza la
funzione API
alloydb_sync.delete_bq_sync_table()per eliminare in modo sicuro la tabella e gli aggiornamenti. - Per eliminare un database che utilizza l'estensione
alloydb_sync, devi utilizzareDROP DATABASE ... WITH (FORCE). - Se il database Postgres si arresta in modo anomalo durante l'esecuzione di un'importazione, i metadati
potrebbero bloccarsi nello stato
RUNNING, impedendo le importazioni future. Devi eseguire manualmenteUPDATE alloydb_sync.import_job_status SET status = 'FAILED' WHERE status = 'RUNNING';per sbloccarlo.
Prezzi
Quando sincronizzi i dati da BigQuery ad AlloyDB, ti viene addebitato l'utilizzo dei prezzi delle letture in streaming di BigQuery (API Storage Read).
Una volta esportati i dati, ti vengono addebitati i costi per l'archiviazione in AlloyDB. Per saperne di più, consulta la sezione Prezzi di AlloyDB per PostgreSQL.
Passaggi successivi
- Scopri di più sull'esportazione dei dati in AlloyDB (ETL inversa).
- Scopri di più sull'esecuzione di query dei dati di BigQuery in loco utilizzando FDW.