Pour interroger des données analytiques actives dans BigQuery directement depuis AlloyDB pour PostgreSQL sans exécuter de migrations d'extraction, de transformation et de chargement (ETL), vous pouvez configurer la fédération de lakehouse. La fédération de lakehouse unifie votre base de données opérationnelle et votre entrepôt de données analytiques afin que vous puissiez prendre en charge les analyses en temps réel et les applications interactives sans avoir à gérer des pipelines de données distincts. Pour en savoir plus, consultez Présentation de l'accès aux données en temps réel.
Grâce à cette intégration, vous pouvez exécuter des requêtes dans AlloyDB qui accèdent aux données BigQuery en temps réel et joindre des tables opérationnelles dans AlloyDB à des tables externes qui référencent vos ensembles de données BigQuery.
Avant de configurer la fédération de lakehouse, vous devez disposer d'un cluster et d'une instance principale AlloyDB, 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
- Activez l'
option
bigquery_fdw.enabledsur l'instance AlloyDB pour PostgreSQL. - Familiarisez-vous avec les types de données acceptés.
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. 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, if any are not already enabled.
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, if any are not already enabled.
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.-
Activez les APIs Cloud nécessaires pour créer une instance AlloyDB et vous y connecter.
À 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
- API BigQuery
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 projet Google Cloud 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ésidant dans un autre projet Google Cloud .
Rôles requis
Pour accorder l'accès en lecture à l'ensemble de données BigQuery au compte de service du cluster AlloyDB, vous devez disposer des autorisations suivantes. Pour en savoir plus, consultez Accorder à AlloyDB l'accès à l'ensemble de données BigQuery.
- Lecteur de données BigQuery (
roles/bigquery.dataViewer) ou tout rôle personnalisé disposant des autorisationsbigquery.tables.getetbigquery.tables.getData. Lorsqu'il est attribué 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 session 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. - Utilisateur de job BigQuery (
roles/bigquery.jobUser) ou tout rôle personnalisé disposant des autorisationsbigquery.jobs.create. Fournit des autorisations permettant d'exécuter des jobs, y compris des requêtes, dans le projet à l'aide de l'API BigQuery. Ce rôle ne peut être attribué que sur des ressources Resource Manager (projets, dossiers et organisations). Lorsque vous fournissez un projet d'exécution distinct, le job est exécuté dans ce projet au lieu du projet de données. Cela signifie que vous devez attribuer le rôle "Utilisateur de job" sur le projet d'exécution.
Pour accéder aux tables BigLake Metastore :
- Lecteur BigLake (
roles/biglake.viewer) ou tout rôle personnalisé disposant des autorisationsbiglake.catalogs.get,biglake.namespaces.get,biglake.tables.getetbiglake.tables.getData. Fournit les autorisations nécessaires pour lire les catalogues, les espaces de noms et les tables BigLake Metastore. - Lecteur des objets Storage (
roles/storage.objectViewer) ou tout rôle personnalisé disposant des autorisationsstorage.objects.get. Fournit des autorisations pour accéder aux tables externes BigQuery et lire les objets Cloud Storage sous-jacents qui sauvegardent les tables BigLake et BigLake Metastore. Doit être accordé au niveau du projet ou du bucket.
Accorder à AlloyDB l'accès à l'ensemble de données BigQuery
Après avoir activé les rôles et les autorisations requis pour la fédération de lakehouse, vous devez accorder au compte de service du cluster AlloyDB l'accès à l'ensemble de données BigQuery.
La console Google Cloud accorde automatiquement les autorisations requises au compte de service du cluster lorsque vous connectez une table BigQuery à l'aide d'AlloyDB Studio.
Pour accorder l'accès à l'aide de la gcloud CLI, procédez comme suit :
gcloud
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 commande
gcloud beta alloydb clusters describe:gcloud beta alloydb clusters describe CLUSTER --region=REGIONRemplacez les éléments suivants :
CLUSTER: ID du cluster AlloyDB.REGION: emplacement du cluster AlloyDB, par exempleasia-east1,us-east1. Consultez la liste complète des régions sur la page 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 Présentation 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
Pour configurer l'extension, procédez comme suit :
Console
Accédez à la page Clusters.
Cliquez sur l'ID du cluster que vous souhaitez utiliser.
Dans le menu de navigation, cliquez sur AlloyDB Studio.
Connectez-vous à votre base de données.
Dans le volet Explorateur, développez le schéma concerné.
Cliquez sur le menu Actions à côté de Tables BigQuery, puis sur Connecter une table BigQuery.
Dans le volet Connecter une table BigQuery, choisissez un projet source, un ensemble de données source et une table.
Le tableau Examiner et sélectionner des colonnes affiche les colonnes du tableau sélectionné. Sélectionnez les colonnes que vous souhaitez mapper.
Dans le champ Nom de la table, saisissez un nom pour la table externe.
Facultatif : Cliquez sur Afficher la commande SQL pour afficher la commande générée.
Cliquez sur Connecter la table. Une boîte de dialogue affiche la progression. Une fois le processus terminé, vous pouvez interroger la table comme n'importe quelle table dans AlloyDB.
psql
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 console Google Cloud .
Exécutez la commande suivante :
CREATE EXTENSION bigquery_fdw;
Créez un serveur étranger 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 OPTIONS (runtime_project 'RUNTIME_PROJECT_ID');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.RUNTIME_PROJECT_ID(facultatif) : ID du projet Google Cloudqui traite la requête et accumule les coûts de calcul. Si vous omettez cet ID, les requêtes sont facturées au projet qui stocke les données.
Créez le mappage d'utilisateur en exécutant la commande
CREATE USER MAPPING, qui mappe un utilisateur PostgreSQL local que vous souhaitez connecter 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.BIGQUERY_SERVER_NAME: identifiant unique du serveur externe que vous avez créé.
Définissez des tables externes correspondant 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 étrangère peut contenir toutes les colonnes de la table source dans BigQuery ou un sous-ensemble de celles-ci.CREATE FOREIGN TABLE TABLENAME ( COLUMN1_NAME DATA_TYPE, COLUMN2_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS ( project 'BIGQUERY_PROJECT_ID', dataset 'BIGQUERY_DATASET_NAME', table 'BIGQUERY_TABLE_NAME', runtime_project 'RUNTIME_PROJECT_ID' );Remplacez les éléments suivants :
TABLENAME: nom de la table externe dans la base de données AlloyDB 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 BigQuery source.Xindique que la table peut être créée avec plusieurs colonnes. Le nom doit également correspondre exactement à la casse de la colonne BigQuery. Si le nom de la colonne BigQuery contient des lettres 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 Lorsque vous définissez leDATA_TYPEpour chaque colonne de votre table externe, vérifiez qu'il s'agit d'un type PostgreSQL compatible. Pour en savoir plus sur la conversion des types BigQuery, consultez Mappages de types de données.BIGQUERY_SERVER_NAME: identifiant unique du serveur externe que vous avez créé.BIGQUERY_PROJECT_ID: ID du projet dans lequel se trouve 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.RUNTIME_PROJECT_ID(facultatif) : ID du projet Google Cloudà facturer pour l'exécution de la requête. La définition de ce paramètre au niveau de la table remplace le projet d'exécution défini au niveau du serveur.
Une fois la table externe créée, vous pouvez l'interroger de la même manière que n'importe quelle table dans AlloyDB.
Mappages des types de données
Utilisez le tableau suivant pour en savoir plus sur les mappages de types de données entre BigQuery et AlloyDB. Pour en savoir plus, consultez Considérations sur les types de données pour les requêtes fédérées.
Le tableau suivant liste les mappages de types de données entre BigQuery et AlloyDB.
| Types de données de table BigQuery | Types de données de table étrangère PostgreSQL recommandés |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pour en savoir plus, consultez PostGIS_Geography. |
|
|
|
Pour en savoir plus, consultez Extension |