Configurer l'accès AlloyDB aux données en temps réel dans BigQuery

Ce document explique comment implémenter la fédération de lakehouse, une fonctionnalité qui vous permet d'interroger des données en direct dans BigQuery directement depuis AlloyDB sans effectuer de migrations ETL (extraction, transformation, chargement) complexes. La fédération de lakehouse unifie vos magasins de données opérationnels et analytiques, ce qui élimine le besoin de pipelines de données complexes et sujets aux erreurs. Pour en savoir plus, consultez la Présentation de l'accès aux données en temps réel.

En intégrant AlloyDB et BigQuery, vous pouvez obtenir un flux de données fluide entre votre base de données transactionnelle et votre entrepôt de données, ce qui permet d'effectuer des analyses en temps réel et de créer des applications interactives puissantes.

Vous pouvez utiliser cette intégration pour exécuter des requêtes dans AlloyDB qui accèdent aux données BigQuery en temps réel. Vous pouvez effectuer des jointures entre des tables dans AlloyDB et des tables externes qui font référence à vos ensembles de données BigQuery. Cela est utile lorsque vous avez besoin des données les plus récentes de BigQuery sans les déplacer.

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

  1. Activez l' bigquery_fdw.enabled indicateur sur l' instance AlloyDB pour PostgreSQL.
  2. Familiarisez-vous avec les types de données acceptés.
  3. 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.
  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  7. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  10. Activez les APIs Cloud nécessaires pour créer une instance AlloyDB et vous y connecter.

    Activer les API

  11. À l'étape Confirmer le projet, cliquez sur Suivant pour confirmer le nom du projet que vous allez modifier.

  12. À 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 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. 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é avec les autorisations bigquery.tables.get et bigquery.tables.getData. Lorsqu'il est accordé sur une table ou une vue, ce rôle fournit des autorisations pour 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é avec les autorisations bigquery.readsessions.create et bigquery.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é avec les autorisations bigquery.jobs.create. Fournit des autorisations permettant d'exécuter des tâches, y compris des requêtes, dans le projet à l'aide de l'API BigQuery. Ce rôle ne peut être accordé que sur les ressources Resource Manager (projets, dossiers et organisations).
  • Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) ou tout rôle personnalisé avec l'autorisation storage.objects.get. Fournit des autorisations pour accéder aux tables externes BigQuery. Doit être accordé au niveau du projet ou du bucket.

Accorder à AlloyDB l'accès à l'ensemble de données BigQuery

Une fois que vous avez activé les rôles et 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 Google Cloud console 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 gcloud CLI, procédez comme suit :

gcloud

Pour utiliser gcloud CLI, vous pouvez installer et initialiser Google Cloud CLI, ou utiliser Cloud Shell.

  1. Ouvrez gcloud CLI. Si gcloud CLI n'est pas installé, installez et initialisez gcloud CLI, ou utilisez Cloud Shell.

  2. Exécutez la gcloud beta alloydb clusters describe commande :

    gcloud beta alloydb clusters describe CLUSTER --region=REGION

    Remplacez les éléments suivants :

    • CLUSTER : ID du cluster AlloyDB.
    • REGION: emplacement du cluster AlloyDB, par exemple asia-east1 ou us-east1. Consultez la liste complète des régions dans Emplacements AlloyDB.

    La sortie 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.

  3. 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 permissions
    • Permission bigquery.tables.get denied on table
    • Permission bigquery.tables.getData denied on table

Configurer l'extension

Pour configurer l'extension, procédez comme suit :

Console

  1. Accédez à la page Clusters.

    Accéder aux clusters

  2. Cliquez sur l'ID du cluster que vous souhaitez utiliser.

  3. Dans le menu de navigation, cliquez sur AlloyDB Studio.

  4. Connectez-vous à votre base de données.

  5. Dans le volet Explorateur, développez le schéma approprié.

  6. Cliquez sur le menu Actions à côté de Tables BigQuery , puis sur Connecter la table BigQuery.

  7. Dans le volet Connecter la table BigQuery , choisissez un projet source, un ensemble de données source et une table.

  8. Le tableau Vérifier et sélectionner les colonnes affiche les colonnes de la table sélectionnée. Sélectionnez les colonnes que vous souhaitez mapper.

  9. Dans le champ Nom de la table, saisissez un nom pour la table externe.

  10. Facultatif : Cliquez sur Afficher la commande SQL pour afficher la commande générée.

  11. 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 autre table dans AlloyDB.

psql

  1. Créez l'extension.

    1. 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.
    2. Exécutez la commande suivante :

      CREATE EXTENSION bigquery_fdw;
      
  2. 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 remplacer BIGQUERY_SERVER_NAME par le nom de votre serveur.
  3. Créez le mappage 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éé.
  4. 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 (
    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);
    

    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 source BigQuery. X indique 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. Lorsque vous définissez le DATA_TYPE pour 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 des types de données.
    • 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 autre table dans AlloyDB.

Mappages des types de données

Utilisez le tableau suivant pour en savoir plus sur les mappages des 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 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

BOOLEAN

BOOLEAN

INTEGER (INT64)

BIGINT

FLOAT (FLOAT64)

DOUBLE PRECISION

STRING

VARCHAR

NUMERIC

NUMERIC(38, 9)

NUMERIC(P[, S])

NUMERIC(P, S)

BIGNUMERIC

NUMERIC(77, 38)

BIGNUMERIC(P[, S])

NUMERIC(P, S)

DATE

DATE

TIMESTAMP

TIMESTAMPTZ

TIME

TIME

JSON

JSONB

BYTES

BYTEA

GEOGRAPHY

GEOGRAPHY(POINT), ...

Pour en savoir plus, consultez PostGIS_Geography.

DATETIME

TIMESTAMP

ARRAY

VECTOR(N)

N correspond à la dimension du vecteur. Vous devez définir l' bigquery_fdw.enable_vector_downcasting indicateur dans la session. Étant donné que le type VECTOR dans AlloyDB utilise float4 type, vous risquez de perdre en précision lors de cette conversion.

Pour en savoir plus, consultez l'extension pgvector

Étape suivante