Esporta i dati in AlloyDB (ETL inverso)

Un flusso di lavoro di estrazione, trasformazione e caricamento inverso (ETL inverso) da BigQuery ad AlloyDB per PostgreSQL consente di spostare i dati da BigQuery in un database AlloyDB. Puoi utilizzare l'istruzione EXPORT DATA per elaborare o filtrare i dati con una query prima di esportarli oppure puoi sincronizzare la tabella BigQuery con AlloyDB per copiare o eseguire il mirroring dell'intera tabella.

Prima di iniziare

  • Crea un cluster e un'istanza AlloyDB, che includono un database, uno schema e una tabella, per ricevere i dati esportati. Devi avere lo schema e la tabella di destinazione prima di eseguire il job di esportazione.

  • L'istanza AlloyDB di destinazione deve essere un'istanza PRIMARY in stato READY.

  • Crea una connessione BigQuery per connetterti alla tua istanza AlloyDB. La connessione deve essere autenticata con nome utente e password. L'utente del database specificato nella connessione deve disporre dei privilegi INSERT sulla tabella di destinazione e USAGE sullo schema di destinazione.

  • Per utilizzare questa funzionalità, devi creare una prenotazione di livello BigQuery Enterprise o Enterprise Plus. Le esportazioni in AlloyDB sono supportate solo per le prenotazioni con un assegnazione QUERY.

  • Concedi i ruoli di Identity and Access Management (IAM) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per esportare i dati di BigQuery in AlloyDB, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

  • Esportare i dati da una tabella BigQuery: Visualizzatore dati BigQuery (roles/bigquery.dataViewer)
  • Eseguire un job di estrazione: Utente BigQuery (roles/bigquery.user)
  • Utilizza una connessione BigQuery: BigQuery Connection User (roles/bigquery.connectionUser)
  • Connettersi a un'istanza AlloyDB: AlloyDB Client (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 batch. Non puoi utilizzare le query continue per l'esportazione 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 nella tabella di destinazione non sono definiti vincoli PRIMARY KEY o UNIQUE, l'esportazione degli stessi dati più volte comporterà la creazione di voci duplicate.

  • Per garantire l'integrità dei dati, ti consigliamo di definire vincoli PRIMARY KEY o UNIQUE sulle 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 vincolo PRIMARY KEY o UNIQUE, l'intero job di esportazione non andrà a buon fine.

  • Non è consigliabile eseguire più job EXPORT DATA contemporaneamente sulla stessa tabella AlloyDB. Ciò può comportare un comportamento imprevedibile, come la 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 con nome utente e password tramite una connessione BigQuery.

  • I tipi di dati BigQuery ARRAY, BYTES, GEOGRAPHY, INTERVAL e STRUCT non sono supportati.

  • Se l'istruzione SELECT di BigQuery omette le colonne esistenti nella tabella AlloyDB di destinazione, queste colonne devono consentire valori NULL o avere valori predefiniti definiti in AlloyDB. Se hanno un vincolo NOT NULL e nessun valore predefinito, l'esportazione non riuscirà.

  • 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 saperne di più, consulta Funzionalità di amministrazione.

  • Un job BigQuery, ad esempio un job di estrazione in AlloyDB, ha una durata massima di 6 ore. Per esportazioni molto grandi, consigliamo di suddividerle in più job di dimensioni ridotte.

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 trovarsi esattamente nella stessa regione Google Cloud del set di dati BigQuery. Ad esempio, un set di dati in us-east1 può essere esportato solo in un'istanza AlloyDB in us-east1.

  • Esportazioni multiregionali:

    • I set di dati nella regione multiregione US possono essere esportati solo in un'istanza AlloyDB situata nella regione us-central1.
    • I set di dati nella regione multiregione EU possono essere esportati solo in un'istanza AlloyDB situata nella regione europe-west4.

Le esportazioni tra regioni diverse dalle combinazioni menzionate in precedenza non sono supportate.

Configura le esportazioni con alloydb_options

Puoi utilizzare l'opzione alloydb_options per specificare lo schema, la tabella e le connessioni massime di AlloyDB di destinazione. La configurazione è espressa come stringa JSON. Solo il parametro table è obbligatorio; 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 progetto Google Cloud .
  • LOCATION: la località della connessione e dell'istanza target.
  • CONNECTION_ID: il nome della connessione BigQuery.
  • CLUSTER_ID: il nome del tuo 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 esportazioni di grandi dimensioni.

Esporta i dati

Puoi utilizzare l'istruzione EXPORT DATA 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`;

Sincronizza una tabella per l'esportazione

Per copie di tabelle complete o mirroring automatico senza la necessità di trasformazioni basate su SQL, puoi sincronizzare la tabella BigQuery direttamente con AlloyDB. Mentre l'istruzione EXPORT DATA 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 indipendente e scrivibile di una tabella BigQuery all'interno di 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 Sincronizza i dati di BigQuery con AlloyDB.

Prezzi

Quando esporti i dati in AlloyDB utilizzando l'istruzione EXPORT DATA, ti vengono addebitati i costi in base ai prezzi di calcolo della capacità di BigQuery.

Dopo l'esportazione dei dati, ti verrà addebitato il costo per l'archiviazione dei dati in AlloyDB. Per saperne di più, consulta Prezzi di AlloyDB per PostgreSQL.