Esportare i dati in AlloyDB (ETL inverso)
Questo documento descrive come configurare un flusso di lavoro di estrazione, trasformazione e caricamento inverso (ETL inverso) da BigQuery ad AlloyDB per PostgreSQL. Puoi
farlo utilizzando l'
EXPORT DATA istruzione.
Puoi anche esportare i dati in AlloyDB sincronizzando la tabella BigQuery con AlloyDB.
Prima di iniziare
Crea un cluster e un'istanza AlloyDB, che includono un database, uno schema, e una tabella, per ricevere i dati esportati. Prima di eseguire il job di esportazione, devi disporre dello schema e della tabella di destinazione.
L'istanza AlloyDB di destinazione deve essere un'istanza
PRIMARYin statoREADY.Crea una connessione BigQuery per connetterti all'istanza AlloyDB. La connessione deve essere autenticata tramite nome utente e password. L'utente del database specificato nella connessione deve disporre dei privilegi
INSERTsulla tabella di destinazione eUSAGEsullo schema di destinazione.Per utilizzare questa funzionalità, devi creare una prenotazione di BigQuery Enterprise o Enterprise Plus. Le esportazioni in AlloyDB sono supportate solo per le prenotazioni con un'
QUERYassegnazione.Concedi i ruoli Identity and Access Management (IAM) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività descritta in questo documento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per esportare i dati BigQuery in AlloyDB, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Esporta i dati da una tabella BigQuery:
Visualizzatore dati BigQuery (
roles/bigquery.dataViewer) -
Esegui un job di estrazione:
Utente BigQuery (
roles/bigquery.user) -
Utilizza una connessione BigQuery:
Utente connessione BigQuery (
roles/bigquery.connectionUser) -
Connettiti a un'istanza AlloyDB:
Client AlloyDB (
roles/alloydb.client) - il account di servizio di connessione
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Limitazioni
Le esportazioni di AlloyDB supportano solo le esportazioni in batch. Non puoi utilizzare le query continue per esportare in AlloyDB.
I dati esportati in AlloyDB vengono aggiunti esclusivamente come nuove righe. Il processo di esportazione non modifica né elimina i record esistenti in AlloyDB. Se la tabella di destinazione non ha vincoli
PRIMARY KEYoUNIQUEdefiniti, l'esportazione degli stessi dati più volte comporterà voci duplicate.Per garantire l'integrità dei dati, ti consigliamo di definire i vincoli
PRIMARY KEYoUNIQUEnelle tabelle AlloyDB. I job di esportazione non eseguono "upsert", in cui un record esistente viene aggiornato se esiste una chiave di corrispondenza univoca. Se una riga in entrata viola un vincoloPRIMARY KEYoUNIQUE, l'intero job di esportazione non andrà a buon fine.Non è consigliabile eseguire più job
EXPORT DATAsimultanei nella stessa tabella AlloyDB. In questo modo, il comportamento può essere imprevedibile, ad esempio perdita di dati o errori dei job. Ti consigliamo di verificare che un solo job di esportazione scriva in una tabella specifica alla volta.È supportata solo l'autenticazione tramite nome utente e password tramite una connessione BigQuery.
I tipi di dati BigQuery
ARRAY,BYTES,GEOGRAPHY,INTERVALeSTRUCTnon sono supportati.Se l'istruzione
SELECTdi BigQuery omette le colonne esistenti nella tabella AlloyDB di destinazione, queste colonne devono consentire i valoriNULLo avere valori predefiniti definiti in AlloyDB. Se hanno un vincoloNOT NULLe nessun valore predefinito, l'esportazione non andrà a buon fine.Le esportazioni in AlloyDB sono supportate solo per le versioni BigQuery Enterprise o Enterprise Plus. La versione BigQuery Standard e il calcolo on demand non sono supportati. Per ulteriori informazioni, consulta Funzionalità di amministrazione.
Un job BigQuery, ad esempio un job di estrazione in AlloyDB, ha una durata massima di 6 ore. Per le esportazioni molto grandi, ti consigliamo di suddividerle in più job più piccoli.
Considerazioni sulla località
L'esportazione dei dati in AlloyDB prevede requisiti specifici relativi alla località del set di dati BigQuery e dell'istanza AlloyDB:
Esportazioni nella stessa regione: l'istanza AlloyDB di destinazione deve risiedere esattamente nella stessa Google Cloud regione del set di dati BigQuery. Ad esempio, un set di dati in
us-east1può essere esportato solo in un'istanza AlloyDB inus-east1.Esportazioni in più regioni:
- I set di dati nella multi-regione
USpossono essere esportati solo in un'istanza AlloyDB che si trova nella regioneus-central1. - I set di dati nella multi-regione
EUpossono essere esportati solo in un'istanza AlloyDB che si trova nella regioneeurope-west4.
- I set di dati nella multi-regione
Le esportazioni tra regioni diverse dalle combinazioni menzionate in precedenza non sono supportate.
Configurare le esportazioni con alloydb_options
Puoi utilizzare l'opzione alloydb_options per specificare lo schema, la tabella e il numero massimo di connessioni di AlloyDB di destinazione. La configurazione viene espressa come stringa JSON. È obbligatorio solo il parametro table; tutti gli altri parametri sono facoltativi.
Quando configuri l'esportazione, le colonne nell'istruzione SELECT devono avere alias che corrispondono ai nomi delle colonne nella tabella AlloyDB di destinazione.
EXPORT DATA WITH CONNECTION `PROJECT_ID.LOCATION.CONNECTION_ID` OPTIONS( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID", alloydb_options="""{ "schema": "SCHEMA_NAME", "table": "TABLE_NAME", "max_parallel_connections":MAX_CONNECTIONS}""" ) AS SELECT * FROM `mydataset.table1`;
Sostituisci quanto segue:
PROJECT_ID: il nome del tuo Google Cloud progetto.LOCATION: la località della connessione e dell'istanza target.CONNECTION_ID: il nome della connessione BigQuery.CLUSTER_ID: il nome del cluster AlloyDB.INSTANCE_ID: il nome dell'istanza AlloyDB di destinazione.SCHEMA_NAME(facoltativo): il nome dello schema di destinazione in AlloyDB. Se non viene fornito, viene utilizzato lo schema predefinito configurato per l'utente del database.TABLE_NAME: il nome di una tabella di destinazione esistente in AlloyDB, senza il prefisso dello schema.MAX_CONNECTIONS(facoltativo): il numero massimo di connessioni parallele simultanee dai worker BigQuery all'istanza AlloyDB. La limitazione delle connessioni può impedire il sovraccarico dell'istanza target durante le esportazioni di grandi dimensioni.
Esporta i dati
Puoi utilizzare l'
EXPORT DATA istruzione
per esportare i dati da una tabella BigQuery in una tabella
AlloyDB.
L'esempio seguente esporta i campi selezionati da una tabella denominata mydataset.table1 in una tabella AlloyDB denominata my_target_table:
EXPORT DATA WITH CONNECTION `myproject.us-central1.my-alloydb-conn` OPTIONS ( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance", alloydb_options="""{ "schema": "public", "table": "my_target_table" }""" ) AS SELECT col1 AS id, col2 AS name, col3 AS value FROM `mydataset.table1`;
Sincronizzare una tabella per l'esportazione
Per le copie complete delle tabelle o il mirroring automatico senza la necessità di trasformazioni basate su SQL, puoi sincronizzare la tabella BigQuery direttamente con AlloyDB. Mentre l'istruzione EXPORT DATA ti consente di utilizzare una query SELECT per elaborare, assegnare alias o filtrare i dati prima che vengano spostati, puoi utilizzare le sincronizzazioni delle tabelle per una migrazione uno a uno di una tabella BigQuery.
Le sincronizzazioni delle tabelle sono disponibili nelle seguenti modalità:
- Importazione una tantum: crea una copia scrivibile e indipendente di una tabella BigQuery in AlloyDB.
- Sincronizzazione periodica (mirroring): crea una tabella locale di sola lettura in AlloyDB che si aggiorna automaticamente da BigQuery in base a una pianificazione definita.
Per ulteriori informazioni, consulta Sincronizzare i dati BigQuery con AlloyDB.
Prezzi
Quando esporti i dati in AlloyDB utilizzando l'istruzione EXPORT DATA,
la fatturazione viene effettuata in base ai
prezzi di calcolo della capacità di BigQuery.
Una volta esportati i dati, ti vengono addebitati i costi per l'archiviazione dei dati in AlloyDB. Per ulteriori informazioni, consulta i prezzi di AlloyDB per PostgreSQL.