Vous pouvez importer des données dans AlloyDB pour PostgreSQL à partir de tables intégrées, de vues matérialisées et de vues BigQuery, ainsi que de tables externes BigLake (telles que les tables gérées Apache Iceberg) et de tables externes standards. Iceberg est un format de table ouvert permettant de gérer et d'échanger des données.
En important des données, vous n'avez plus besoin de créer et de gérer des pipelines de données complexes et sujets aux erreurs qui déplacent manuellement les données de BigQuery vers AlloyDB. Pour en savoir plus, consultez la présentation de la synchronisation des données.
Cette page suppose que vous disposez d'un cluster AlloyDB et d'une instance principale, ainsi que d'un ensemble de données et de tables BigQuery. Pour en savoir plus, consultez Créer des ensembles de données et Créer et utiliser des tables.
Avant de commencer
- Configurez l'option
bigquery_fdw.enabledflag sur l'instance AlloyDB. - Consultez les mappages des types de données pour comprendre comment les types BigQuery sont représentés dans PostgreSQL lorsque vous utilisez
bigquery_fdw. - Connectez-vous à votre Google Cloud compte. Si vous n'avez jamais utilisé Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Pour créer une instance AlloyDB et vous y connecter, activez les APIs Cloud requises.
À l'étape Confirmer le projet, cliquez sur Suivant pour confirmer le nom du projet que vous allez modifier.
À l'étape Activer les API, cliquez sur Activer pour activer les éléments suivants :
- API AlloyDB
- API Compute Engine
- API Cloud Resource Manager
- API Service Networking
- API BigQuery Storage
L'API Service Networking est requise si vous prévoyez de configurer la connectivité réseau à AlloyDB à l'aide d'un réseau VPC qui réside dans le même Google Cloud projet qu'AlloyDB.
Les API Compute Engine et Cloud Resource Manager sont requises si vous prévoyez de configurer la connectivité réseau à AlloyDB à l'aide d'un réseau VPC réseau qui réside dans un autre Google Cloud projet.
Rôles requis
Pour accorder un accès en lecture à l'ensemble de données BigQuery au compte de service du cluster AlloyDB, vous avez besoin des autorisations suivantes :
- Lecteur de données BigQuery
(
roles/bigquery.dataViewer) ou tout rôle personnalisé disposant des autorisationsbigquery.tables.getetbigquery.tables.getData. Lorsqu'il est accordé sur une table ou une vue, ce rôle fournit des autorisations permettant de lire les données et les métadonnées de la table ou de la vue. - Utilisateur de sessions de lecture BigQuery
(
roles/bigquery.readSessionUser) ou tout rôle personnalisé disposant des autorisationsbigquery.readsessions.createetbigquery.readsessions.getData. Permet de créer et d'utiliser des sessions de lecture.
Accorder à AlloyDB l'accès à l'ensemble de données BigQuery
Après avoir configuré l'extension bigquery_fdw sur votre cluster AlloyDB, accordez au compte de service du cluster AlloyDB l'accès à l'ensemble de données BigQuery.
Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.
Ouvrez la gcloud CLI. Si la gcloud CLI n'est pas installée, installez-la et initialisez-la, ou utilisez Cloud Shell.
Exécutez la
gcloud beta alloydb clusters describecommande :gcloud beta alloydb clusters describe CLUSTER --region=REGIONRemplacez les éléments suivants :
CLUSTER: ID du cluster AlloyDB.REGION: emplacement du cluster AlloyDB, par exempleasia-east1ouus-east1. Consultez la liste complète des régions dans Emplacements AlloyDB.
Le résultat contient un champ
serviceAccountEmail, qui correspond au compte de service de ce cluster. Vous pouvez également trouver le compte de service sur la page Détails du cluster.Accordez les autorisations requises. Pour en savoir plus, consultez Contrôler l'accès aux ressources avec IAM.
Si le compte de service du cluster ne dispose pas des autorisations requises, les erreurs suivantes s'affichent lorsqu'une requête est exécutée sur la table BigQuery :
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
Configurer l'extension
Créez l'extension.
- Connectez-vous à l'instance AlloyDB à l'aide du client psql en suivant les instructions de la section Connecter un client psql à une instance. Vous pouvez également utiliser AlloyDB Studio. Pour en savoir plus, consultez Gérer vos données à l'aide de la Google Cloud console.
Exécutez la commande suivante :
CREATE EXTENSION bigquery_fdw;
Créez un serveur externe pour définir les paramètres de connexion de l'ensemble de données BigQuery distant.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;Remplacez les éléments suivants :
BIGQUERY_SERVER_NAME: identifiant unique du serveur externe. Définissez-le une seule fois dans une base de données donnée. Vous pouvez remplacerBIGQUERY_SERVER_NAMEpar le nom de votre serveur.
Créez le mappage d'utilisateur en exécutant la commande
CREATE USER MAPPING, qui spécifie les identifiants à utiliser lorsque vous vous connectez au serveur externe.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;Remplacez les éléments suivants :
USERNAME: nom d'utilisateur de base de données ou utilisateur IAM qui accède à la table externe. Pour un utilisateur IAM, le nom doit être en minuscules et placé entre guillemets, car il contient des caractères spéciaux tels que@et.).BIGQUERY_SERVER_NAME: identifiant unique du serveur externe que vous avez créé.
Définissez les tables externes qui correspondent aux tables auxquelles vous souhaitez accéder dans BigQuery à l'aide de la commande
CREATE FOREIGN TABLE. Cette commande vous permet de définir la structure d'une table distante. La table externe peut contenir toutes les colonnes de la table source dans BigQuery ou un sous-ensemble de celles-ci.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');Remplacez les éléments suivants :
TABLENAME: nom de la table externe dans la base de données locale.COLUMNX_NAME: nom de la colonne AlloyDB. Le nom de la colonne doit correspondre exactement au nom de la colonne correspondante dans la table source BigQuery.Xindique que la table peut être créée avec plusieurs colonnes. Le nom doit également correspondre à la casse exacte de la colonne BigQuery. Si le nom de la colonne BigQuery contient des majuscules (par exemple,employeeID), l'identifiant AlloyDB doit être placé entre guillemets doubles (par exemple,"employeeID") pour conserver les lettres mixtes ou majuscules.DATA_TYPE: type de données de la colonne.BIGQUERY_SERVER_NAME: identifiant unique du serveur externe que vous avez créé.BIGQUERY_PROJECT_ID: ID du projet dans lequel réside l'ensemble de données BigQuery.BIGQUERY_DATASET_NAME: nom de l'ensemble de données BigQuery pour la table.BIGQUERY_TABLE_NAME: nom de la table BigQuery.
Une fois la table externe créée, vous pouvez l'interroger de la même manière que n'importe quelle table dans AlloyDB.
Importer des données
Pour importer des données BigQuery ou des données BigLake Iceberg stockées dans BigQuery vers AlloyDB, procédez comme suit :
Identifiez une source de données existante ou créez une table BigQuery intégrée ou de nouvelles tables gérées Iceberg.
Utilisez psql pour créer
local_tableen exécutant la commande suivante :CREATE TABLE local_table AS (SELECT * from foreign_table);Cette commande crée une copie de la table BigQuery dans une table AlloyDB locale standard. En fonction du workflow de votre application, vous pouvez configurer l'extension PostgreSQL
pg_cronpour actualiser la table AlloyDB à intervalles réguliers.
Configurer une programmation pour importer régulièrement des données
Lorsque vous importez des données BigQuery, bigquery_fdw se connecte à la
table distante en tant que table externe, ce qui vous permet de copier les données dans l'espace de stockage AlloyDB local
à l'aide de CREATE TABLE ... AS (SELECT * FROM
foreign_table).
Pour que votre table importée reste à jour, vous pouvez utiliser l'extension pg_cron pour réexécuter régulièrement cette requête et actualiser les données locales selon une programmation.
Pour configurer une programmation afin d'importer régulièrement des données BigQuery ou des données BigLake Iceberg dans AlloyDB, procédez comme suit :
- Configurez l'extension
bigquery_fdw. - Activez l'extension
pg_cronsur l'instance AlloyDB. Pour en savoir plus, consultez Extensions de base de données compatibles.- Définissez l'option
alloydb.enable_pg_cronsuron. Pour en savoir plus, consultez alloydb.enable_pg_cron. - Définissez l'option
cron.database_namesur le nom de la base de données dans laquelle vous avez installé l'extensionbigquery_fdwet dans laquelle vous souhaitez exécuter les requêtes SQL pour actualiser les données. Pour en savoir plus, consultez Options de base de données compatibles.
- Définissez l'option
Pour actualiser régulièrement une copie locale de la table externe, exécutez les commandes suivantes dans la base de données où vous avez installé l'extension
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;');Remplacez les éléments suivants :
JOB_NAME: nom du job.SCHEDULE: programmation du job.
Pour en savoir plus, consultez Qu'est-ce que pg_cron ?.
Mappages des types de données
Lorsque vous définissez une table externe à l'aide de bigquery_fdw, vous mappez les types de données BigQuery sur les types PostgreSQL appropriés.
Le tableau suivant répertorie les mappages des types de données entre BigQuery et AlloyDB.
| Types de données de la table BigQuery data types | Types de données de la table externe PostgreSQL recommandés |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pour en savoir plus, consultez PostGIS_Geography. |
|
|
|
Pour en savoir plus, consultez l'extension |
Étape suivante
- Choisissez comment accéder aux données BigQuery.
- Présentation de la synchronisation des données.
- Configurer l'accès aux données en temps réel.