Gérer les services et les bases de données SQL Connect

Vos projets SQL Connect se composent de deux éléments d'infrastructure principaux :

  • Une ou plusieurs instances de service SQL Connect
  • Une ou plusieurs instances Cloud SQL pour PostgreSQL

Ce guide explique comment configurer et gérer vos instances de service SQL Connect, et comment gérer vos instances Cloud SQL associées.

Configurer des régions pour Firebase SQL Connect

Les projets qui utilisent SQL Connect nécessitent un paramètre d'emplacement.

Lorsque vous créez une nouvelle instance de service SQL Connect, vous êtes invité à sélectionner l'emplacement du service.

Régions acceptées

SQL Connect services peuvent être créés dans les régions suivantes.

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1 (non disponible pour les essais du forfait Spark)
  • asia-southeast2 (non disponible pour les essais du forfait Spark)
  • australia-southeast1
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4

Gérer les instances de service SQL Connect

Elle crée des services

Pour créer un service, utilisez la console Firebase ou exécutez l'initialisation du projet local à l'aide de la CLI Firebase. Ces workflows créent un nouveau SQL Connect service.

Ces flux vous guident également dans les opérations suivantes :

  • Provisionnement d'une instance Cloud SQL (niveau sans frais)
  • Liaison d'une instance Cloud SQL existante à SQL Connect (forfait Blaze)

Gérer les utilisateurs

SQL Connect fournit des outils permettant de gérer l'accès des utilisateurs conformément au principe du moindre privilège (accordez à chaque utilisateur ou compte de service les autorisations minimales nécessaires pour prendre en charge les fonctionnalités requises) et au concept de contrôle d'accès basé sur les rôles (RBAC, Role-Based Access Control) (avec des rôles prédéfinis pour gérer les autorisations de base de données, ce qui simplifie la gestion de la sécurité).

Pour ajouter des membres du projet en tant qu'utilisateurs pouvant modifier les SQL Connect instances dans votre projet, utilisez la console Firebase pour sélectionner les rôles utilisateur prédéfinis appropriés.

Ces rôles accordent des autorisations à l'aide d'Identity and Access Management (IAM). Un rôle est un ensemble d'autorisations. Lorsque vous attribuez un rôle à un membre du projet, vous lui accordez toutes les autorisations que contient ce rôle. Pour en savoir plus, consultez les ressources suivantes :

Choisir des rôles pour activer des workflows spécifiques

Les rôles IAM permettent aux workflows de la CLI Firebase de gérer vos projets SQL Connect.

Commande CLI, autre workflow Rôle(s) requis
firebase init dataconnect
  • Aucune autorisation (lorsqu'aucune instance Cloud SQL n'est liée)
  • roles/cloudsql.admin (lors de la création d'une instance Cloud SQL)
firebase deploy -–only dataconnect
  • firebasedataconnect.connectors.*
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
  • roles/cloudsql.admin
firebase dataconnect:sql:diff
  • firebasedataconnect.services.*
  • firebasedataconnect.schemas.*
firebase dataconnect:sql:migrate
  • roles/cloudsql.admin sur l'instance Cloud SQL cible
firebase dataconnect:sql:grant
  • roles/cloudsql.admin sur l'instance Cloud SQL cible

Surveiller les performances du service SQL Connect

Examen des performances des services

Les performances du service SQL Connect et du service Cloud SQL pour PostgreSQL peuvent avoir une incidence sur votre expérience.

  • Pour le service Cloud SQL pour PostgreSQL, consultez les conseils généraux de la documentation Quotas et limites.
  • Pour le service SQL Connect, il existe un quota pour les requêtes GraphQL, qui affecte la fréquence à laquelle vous pouvez appeler et exécuter des requêtes :

    • Un quota de 24 000 requêtes GraphQL par minute et par projet et par région

    Si vous atteignez ces limites de quota, veuillez contacter l'assistance Firebase pour ajuster le quota concerné.

Surveiller les performances, l'utilisation et la facturation du service

Vous pouvez surveiller les requêtes, les erreurs et les taux d'opération, à la fois globalement et par opération dans la Firebase console.

Gérer les instances Cloud SQL

Limites de l'essai sans frais

Les fonctionnalités Cloud SQL pour PostgreSQL suivantes ne sont pas compatibles avec les essais sans frais des forfaits Spark ou Blaze :

  • Niveau de machine différent de db-f1-micro
  • Modification des ressources de votre instance, telles que la région, l'espace de stockage, la mémoire et le processeur
  • Versions de PostgreSQL autres que 15.x
  • Instances dupliquées avec accès en lecture
  • Adresse IP privée de l'instance
  • Haute disponibilité (multizone) : seules les instances monozones sont compatibles
  • Édition Enterprise Plus
  • Sauvegardes automatiques
  • Augmentation automatique de l'espace de stockage

Limites des bases de données d'intégration temporaires

Lorsque vous ajoutez SQL Connect à votre projet Firebase, vous pouvez commencer à prototyper votre modèle de données et à charger des données immédiatement, car les données seront stockées dans une base de données temporaire. Notez que le provisionnement de votre instance Cloud SQL pour PostgreSQL permanente prendra entre 5 et 20 minutes. Toutes les données initiales que vous chargez seront automatiquement migrées vers votre base de données PostgreSQL permanente une fois qu'elle sera provisionnée.

Cette base de données temporaire est idéale pour explorer votre schéma et vos opérations CRUD.

Si vous ne souhaitez pas utiliser la base de données temporaire, attendez que votre instance Cloud SQL soit provisionnée.

La base de données temporaire n'est pas une base de données PostgreSQL et ne fournit pas toutes les fonctionnalités PostgreSQL.

Les limites importantes sont les suivantes :

  • La taille de la base de données doit être inférieure à 1 Mo.
  • Le nombre de lignes par table doit être inférieur à 1 000.
  • Moins d'une requête par seconde
  • Aucune prise en charge de la recherche en texte intégral
  • Aucune prise en charge de la génération d'embeddings vectoriels
  • Aucune prise en charge des fonctionnalités SQL telles que @view, @col(dataType), ou SQL natif.

Administrer les instances Cloud SQL

En général, vous pouvez gérer vos instances Cloud SQL à l'aide de la Google Cloud console pour effectuer les workflows suivants.

SQL Connect
  • Arrêter et redémarrer des instances Cloud SQL
  • Créer et supprimer des bases de données Cloud SQL (dans des instances)
  • Démarrer des instances de base de données PostgreSQL avec des indicateurs et utiliser une variété d'extensions
  • Surveiller les performances grâce aux fonctionnalités d'observabilité Cloud SQL dans la Google Cloud console
  • Gérer l'accès et la sécurité Cloud SQL avec des fonctionnalités telles qu'IAM, Secret Manager, le chiffrement des données et le proxy d'authentification
  • Ajouter, supprimer et administrer des utilisateurs Cloud SQL

Pour ces workflows et d'autres, consultez la documentation Cloud SQL pour PostgreSQL.

Accorder des rôles utilisateur PostgreSQL

SQL Connect fournit des outils permettant de gérer l'accès des utilisateurs conformément au principe du moindre privilège (accordez à chaque utilisateur ou compte de service les autorisations minimales nécessaires pour prendre en charge les fonctionnalités requises) et au concept de contrôle d'accès basé sur les rôles (RBAC, Role-Based Access Control) (avec des rôles prédéfinis pour gérer les autorisations de base de données, ce qui simplifie la gestion de la sécurité).

Dans certains cas, vous pouvez vous connecter directement à la base de données Cloud SQL gérée par SQL Connect via un client SQL de votre choix, par exemple à l'aide de Cloud Run, Cloud Functions ou GKE.

Pour activer ces connexions, vous devez accorder des autorisations SQL en procédant comme suit :

  • Attribuer le rôle IAM roles/cloudsql.client à l'utilisateur ou au compte de service qui doit se connecter à l'instance, soit à partir de la console Google Cloud soit à l'aide de la gcloud CLI
  • Accorder le rôle PostgreSQL nécessaire à l'aide de la Firebase CLI

Attribuer le rôle IAM Cloud SQL

Pour en savoir plus sur l'utilisation de Cloud SQL pour PostgreSQL afin d'attribuer le rôle IAM roles/cloudsql.client, consultez Rôles et autorisations.

Accorder des rôles PostgreSQL

À l'aide de la Firebase CLI, vous pouvez accorder des rôles PostgreSQL prédéfinis aux utilisateurs ou aux comptes de service associés à votre projet à l'aide de la firebase dataconnect:sql:grant commande.

Par exemple, pour accorder le rôle de rédacteur, exécutez la commande suivante dans la CLI :

firebase dataconnect:sql:grant --role writer

Pour en savoir plus, consultez le guide de référence de la CLI.

Intégrer des bases de données Cloud SQL pour PostgreSQL existantes

Le flux de provisionnement et de gestion de base de données par défaut suppose que votre projet utilise de nouvelles bases de données (greenfield). Lorsque vous appelez firebase deploy, SQL Connect affiche les modifications de schéma de base de données à apporter et effectue toutes les migrations après votre approbation.

Pour les bases de données existantes (brownfield), vous pouvez avoir votre propre workflow de gestion des schémas et ne pas pouvoir utiliser les outils SQL Connect pour les migrations. Toutefois, vous pouvez utiliser votre base de données dans un projet SQL Connect pour profiter de la génération de SDK pour mobile et Web, de l'autorisation basée sur les requêtes, de la gestion des connexions client, etc.

Cette section fournit des conseils sur ce dernier cas : l'intégration de bases de données existantes avec SQL Connect.

Intégrer une base de données existante dans un projet SQL Connect

Le workflow d'intégration d'une base de données existante comprend généralement les étapes suivantes :

  1. Lors de la configuration du projet SQL Connect dans la console Firebase, sélectionnez l'instance et la base de données.
  2. À l'aide de la CLI Firebase, exécutez la commande firebase dataconnect:sql:setup et refusez l'option permettant à SQL Connect de gérer les migrations SQL.

    Pour éviter que des modifications ne soient apportées à votre schéma de base de données par votre outil personnalisé, la commande setup attribue les rôles de lecteur et de rédacteur appropriés, mais pas le rôle owner. Pour en savoir plus sur la commande setup et les rôles PostgreSQL, consultez le guide de référence de la CLI.

  3. Écrivez un schéma GraphQL SQL Connect qui correspond à votre schéma de base de données.

    Vous ne pouvez déployer votre schéma, vos requêtes et vos mutations GraphQL que lorsque votre schéma GraphQL est compatible avec votre schéma PostgreSQL.

    Pour simplifier l'alignement des deux schémas, nous fournissons la commande firebase dataconnect:sql:diff, qui vous fournit les instructions SQL requises pour migrer votre base de données. Vous pouvez l'utiliser pour affiner de manière itérative votre schéma GraphQL afin qu'il corresponde à votre schéma de base de données existant.

  4. Vous pouvez ensuite itérer rapidement sur votre schéma, vos requêtes et vos mutations GraphQL dans votre environnement de développement local. Une fois que vous êtes satisfait, vous pouvez utiliser firebase dataconnect:sql:diff pour obtenir les instructions de migration SQL que vous pouvez appliquer à PostgreSQL à l'aide de vos outils et flux personnalisés.

  5. Vous pouvez également apporter des modifications directement à votre base de données PostgreSQL, puis essayer de les reporter dans votre schéma GraphQL. Nous vous recommandons d'adopter l'approche GraphQL en premier, car il peut arriver que les modifications de schéma ne soient pas compatibles. De plus, si vous déployez des modifications qui rendent votre schéma PostgreSQL incompatible avec les requêtes ou les mutations de connecteur déployées, ces connecteurs peuvent cesser de fonctionner ou se comporter de manière anormale.