Exporter des données vers AlloyDB (ETL inversé)

Ce document explique comment configurer un workflow d'extraction, de transformation et de chargement inversé (ETL inversé) de BigQuery vers AlloyDB pour PostgreSQL. Pour ce faire, utilisez l' EXPORT DATA instruction.

Vous pouvez également exporter des données vers AlloyDB en synchronisant votre table BigQuery avec AlloyDB.

Avant de commencer

Rôles requis

Pour obtenir les autorisations nécessaires à l'exportation de données BigQuery vers AlloyDB, demandez à votre administrateur de vous attribuer les rôles IAM suivants dans votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Limites

  • Les exportations AlloyDB ne sont compatibles qu'avec les exportations par lot. Vous ne pouvez pas utiliser de requêtes continues pour exporter des données vers AlloyDB.

  • Les données exportées vers AlloyDB sont ajoutées exclusivement sous forme de nouvelles lignes. Le processus d'exportation ne modifie ni ne supprime les enregistrements existants dans AlloyDB. Si la table cible ne comporte pas de contraintes PRIMARY KEY ni UNIQUE définies, l'exportation des mêmes données plusieurs fois entraînera la création d'entrées en double.

  • Pour garantir l'intégrité des données, nous vous recommandons de définir des contraintes PRIMARY KEY ou UNIQUE sur vos tables AlloyDB. Les tâches d'exportation n'effectuent pas d'"upserts", où un enregistrement existant est mis à jour s'il existe une clé correspondante unique. Si une ligne entrante ne respecte pas une contrainte PRIMARY KEY ou UNIQUE, l'ensemble de la tâche d'exportation échoue.

  • Nous vous déconseillons d'exécuter plusieurs tâches EXPORT DATA simultanées sur la même table AlloyDB. Cela peut entraîner un comportement imprévisible, comme une perte de données ou des échecs de tâches. Nous vous recommandons de vérifier qu'une seule tâche d'exportation écrit dans une table spécifique à la fois.

  • Seule l'authentification par nom d'utilisateur et mot de passe via une connexion BigQuery est acceptée.

  • Les types de données BigQuery ARRAY, BYTES, GEOGRAPHY, INTERVAL et STRUCT ne sont pas compatibles.

  • Si l'instruction BigQuery SELECT omet des colonnes qui existent dans la table AlloyDB cible, ces colonnes doivent autoriser les valeurs NULL ou avoir des valeurs par défaut définies dans AlloyDB. Si elles comportent une contrainte NOT NULL et aucune valeur par défaut, l'exportation échoue.

  • Les exportations vers AlloyDB ne sont compatibles qu'avec les éditions BigQuery Enterprise ou Enterprise Plus. L'édition standard de BigQuery et le calcul à la demande ne sont pas compatibles. Pour en savoir plus, consultez la section Fonctionnalités d'administration.

  • Une tâche BigQuery, telle qu'une tâche d'extraction vers AlloyDB, a une durée maximale de six heures. Pour les exportations très volumineuses, nous vous recommandons de les diviser en plusieurs tâches plus petites.

Considérations relatives aux emplacements

L'exportation de données vers AlloyDB est soumise à des exigences spécifiques concernant l'emplacement de votre ensemble de données BigQuery et de votre instance AlloyDB :

  • Exportations dans la même région : l'instance AlloyDB cible doit résider exactement dans la même Google Cloud région que l'ensemble de données BigQuery. Par exemple, un ensemble de données dans us-east1 ne peut être exporté que vers une instance AlloyDB dans us-east1.

  • Exportations multirégionales :

    • Les ensembles de données dans la zone multirégionale US ne peuvent être exportés que vers une instance AlloyDB située dans la région us-central1.
    • Les ensembles de données dans la zone multirégionale EU ne peuvent être exportés que vers une instance AlloyDB située dans la région europe-west4.

Les exportations interrégionales autres que les combinaisons mentionnées précédemment ne sont pas compatibles.

Configurer des exportations avec alloydb_options

Vous pouvez utiliser l'option alloydb_options pour spécifier le schéma, la table et le nombre maximal de connexions AlloyDB de destination. La configuration est exprimée sous forme de chaîne JSON. Seul le paramètre table est obligatoire. Tous les autres paramètres sont facultatifs.

Lors de la configuration de l'exportation, les colonnes de l'instruction SELECT doivent comporter des alias qui correspondent aux noms des colonnes de la table AlloyDB cible.

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`;

Remplacez les éléments suivants :

  • PROJECT_ID : nom de votre Google Cloud projet.
  • LOCATION : emplacement de votre connexion et de votre instance cible.
  • CONNECTION_ID : nom de votre connexion BigQuery.
  • CLUSTER_ID : nom de votre cluster AlloyDB.
  • INSTANCE_ID : nom de votre instance AlloyDB cible.
  • SCHEMA_NAME (facultatif) : nom du schéma de destination dans AlloyDB. Si aucun schéma n'est fourni, le schéma par défaut configuré pour l'utilisateur de la base de données est utilisé.
  • TABLE_NAME: nom d'une table de destination existante dans AlloyDB, sans le préfixe de schéma.
  • MAX_CONNECTIONS (facultatif) : nombre maximal de connexions parallèles simultanées entre les workers BigQuery et l'instance AlloyDB. Limiter les connexions peut éviter de surcharger l'instance cible lors d'exportations volumineuses.

Exporter les données

Vous pouvez utiliser l' EXPORT DATA instruction pour exporter des données d'une table BigQuery vers une table AlloyDB.

L'exemple suivant exporte les champs sélectionnés à partir d'une table nommée mydataset.table1 vers une table AlloyDB nommée 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`;

Synchroniser une table pour l'exportation

Pour obtenir des copies de tables complètes ou une mise en miroir automatisée sans avoir besoin de transformations basées sur SQL, vous pouvez synchroniser votre table BigQuery directement avec AlloyDB. Alors que l'instruction EXPORT DATA vous permet d'utiliser une requête SELECT pour traiter, aliaser ou filtrer les données avant leur déplacement, vous pouvez utiliser des synchronisations de tables pour une migration un-à-un d'une table BigQuery.

Les synchronisations de tables sont disponibles dans les modes suivants :

  • Importation unique : crée une copie indépendante et accessible en écriture d'une table BigQuery dans AlloyDB.
  • Synchronisation périodique (mise en miroir) : crée une table locale en lecture seule dans AlloyDB qui s'actualise automatiquement à partir de BigQuery selon une planification définie.

Pour en savoir plus, consultez Synchroniser des données BigQuery avec AlloyDB.

Tarifs

Lorsque vous exportez des données vers AlloyDB à l'aide de l'instruction EXPORT DATA, la tarification des calculs de capacité BigQuery s'applique.

Une fois les données exportées, leur stockage dans AlloyDB vous est facturé. Pour en savoir plus, consultez Tarifs d'AlloyDB pour PostgreSQL.