L'interface PostgreSQL pour Spanner vous permet de profiter de l'infrastructure entièrement gérée, évolutive et à disponibilité élevée de Spanner à l'aide des outils et de la syntaxe PostgreSQL que vous connaissez. Cette page vous aide à comprendre les capacités et les limites de l'interface PostgreSQL.
Avantages de l'interface PostgreSQL
- Portabilité : l'interface PostgreSQL permet d'accéder à l'ensemble des fonctionnalités Spanner à l'aide de schémas, de requêtes et de clients compatibles avec PostgreSQL Open Source. Cela simplifie le transfert d'une application créée sur Spanner vers un autre environnement PostgreSQL. Cette portabilité offre une flexibilité de déploiement et prend en charge les scénarios de reprise après sinistre, tels qu'une sortie forcée.
- Familiarité : si vous utilisez déjà PostgreSQL, vous pouvez rapidement commencer à utiliser Spanner en utilisant de nombreux outils et instructions PostgreSQL. L'utilisation de PostgreSQL dans votre portefeuille de bases de données signifie moins de variations entre les produits spécifiques et un ensemble commun de bonnes pratiques.
- Spanner sans compromis : l'interface PostgreSQL s'appuie sur la base existante de Spanner. Elle offre tous les avantages existants de Spanner en termes de disponibilité, de cohérence et de rapport prix/performances, sans avoir à faire de compromis sur les fonctionnalités disponibles dans l'écosystème GoogleSQL complémentaire.
Fonctionnalités PostgreSQL non compatibles dans Spanner
Il est important de comprendre que l'interface PostgreSQL fournit les fonctionnalités de Spanner via des schémas, des types, des requêtes et des clients compatibles avec PostgreSQL. Il n'est pas compatible avec toutes les fonctionnalités de PostgreSQL. La migration d'une application PostgreSQL existante vers Spanner, même en utilisant l'interface PostgreSQL pour Spanner, nécessite probablement quelques modifications pour s'adapter aux fonctionnalités PostgreSQL non compatibles ou aux différences de comportement, comme l'optimisation des requêtes ou la conception des clés primaires. Toutefois, une fois la migration effectuée, vos charges de travail peuvent profiter de la fiabilité et des capacités multimodèles uniques de Spanner.
La liste suivante fournit plus d'informations sur les fonctionnalités PostgreSQL compatibles et non compatibles :
- Fonctionnalités PostgreSQL compatibles : l'interface PostgreSQL est compatible avec de nombreuses fonctionnalités PostgreSQL les plus couramment utilisées. Cela inclut les parties principales du schéma et du système de types, de nombreuses formes de requêtes courantes, diverses fonctions et opérateurs, ainsi que les aspects clés du catalogue système de PostgreSQL. Les applications peuvent utiliser de nombreux clients PostgreSQL en se connectant à l'implémentation du protocole de communication PostgreSQL de Spanner.
- Certaines fonctionnalités linguistiques de PostgreSQL ne sont pas compatibles : les extensions, les types de données définis par l'utilisateur, les procédures stockées définies par l'utilisateur et d'autres fonctionnalités ne sont pas compatibles. Pour obtenir la liste complète, consultez Le langage PostgreSQL dans Spanner. Certaines fonctionnalités de PostgreSQL se comportent également différemment de celles de PostgreSQL Open Source. Pour en savoir plus, consultez Problèmes connus dans l'interface PostgreSQL pour Spanner.
- Plan de contrôle Spanner : les bases de données avec des interfaces PostgreSQL utilisent Spanner et les outils Google Cloudpour provisionner, sécuriser, surveiller et optimiser les instances. Spanner n'est pas compatible avec les outils tels que pgAdmin pour les activités administratives.
- Compatibilité avec les clients et le protocole filaire : Spanner est compatible avec les principales fonctionnalités de requête du protocole filaire PostgreSQL à l'aide de PGAdapter, un proxy léger qui s'exécute en parallèle de votre application. Cela permet à de nombreux clients Spanner de fonctionner tels quels avec une base de données d'interface Spanner PostgreSQL, tout en tirant parti du point de terminaison mondial, de la gestion des connexions et de l'authentification IAM de Spanner. Les tests comparatifs internes de Google montrent que PGAdapter n'ajoute aucune latence supplémentaire notable par rapport à la connexion directe aux points de terminaison intégrés de Spanner.
Administration et gestion
L'interface PostgreSQL permet d'administrer et de gérer vos bases de données Spanner grâce aux fonctionnalités suivantes :
- Expérience unifiée : provisionnez, gérez et surveillez les bases de données compatibles avec l'interface PostgreSQL à l'aide de la console, des API et des outils existants de Spanner, tels que la Google Cloud CLI.
- Configuration flexible : configurez l'interface PostgreSQL par base de données au moment de la création. Une même instance Spanner peut héberger des bases de données d'interface GoogleSQL et PostgreSQL.
- Avantages partagés : les deux dialectes de base de données partagent le même moteur de base de données distribuée sous-jacent, ce qui garantit une évolutivité, une cohérence, des performances et une sécurité constantes.
Fonctionnalités
L'interface PostgreSQL de Spanner offre deux fonctionnalités principales qui permettent l'intégration à l'écosystème PostgreSQL :
Prise en charge du dialecte PostgreSQL
Spanner fournit un sous-ensemble du dialecte SQL PostgreSQL, y compris le langage de requête de données (DQL), le langage de manipulation de données (LMD) et le langage de définition de données (LDD). Il inclut également des extensions pour prendre en charge les fonctionnalités spécifiques à Spanner, telles que les tables entrelacées, la valeur TTL (Time To Live) et les indications de requête.
Pour en savoir plus sur les éléments de langage PostgreSQL compatibles, consultez Le langage PostgreSQL dans Spanner. Pour savoir comment utiliser les fonctionnalités Spanner avec le dialecte PostgreSQL, consultez la documentation de la fonctionnalité spécifique.
Prise en charge du client PostgreSQL
Spanner vous permet de vous connecter à des bases de données à partir de différents clients :
Outils de l'écosystème PostgreSQL : vous pouvez utiliser des outils connus tels que le pilote PostgreSQL JDBC et le pilote PostgreSQL pgx pour connecter vos applications à une base de données d'interface PostgreSQL. Pour obtenir la liste des pilotes, ORM et outils compatibles, consultez Pilotes et ORM PostgreSQL.
Outil de ligne de commande psql : l'environnement interactif
psqlest compatible. Il vous permet d'exécuter des requêtes, d'explorer des métadonnées et de charger des données directement depuis votre terminal.PGAdapter : ce proxy léger simplifie la gestion des connexions et l'authentification. Pour en savoir plus, consultez la présentation de PGAdapter.
Clients Spanner : Spanner fournit des clients Spanner Open Source pour différents langages de programmation (Java, Go, Python, Node.js, Ruby, PHP, C#, C++), ainsi qu'un pilote JDBC Spanner et un pilote pour le package SQL de Go. Les clients Spanner se connectent directement au point de terminaison mondial de Spanner sans proxy. Toutefois, les clients Spanner ne sont pas compatibles avec les clients, les ORM ni les outils PostgreSQL existants.
Bonnes pratiques concernant l'utilisation de l'interface PostgreSQL
Suivez les bonnes pratiques ci-dessous lorsque vous utilisez l'interface PostgreSQL :
- Connectez vos applications : utilisez l'ensemble d'outils PostgreSQL compatibles pour une connectivité efficace.
Interagir avec votre base de données : pour un travail interactif, choisissez l'une des options suivantes :
- L'outil de ligne de commande psql (à l'aide du proxy PGAdapter)
- Page intuitive Spanner Studio de la console Google Cloud
- IDE tels que DBeaver, Visual Studio Code, JetBrains et IntelliJ
- L'émulateur Spanner, qui vous permet d'émuler Spanner sur votre ordinateur local. Cela s'avère utile pendant le processus de développement et de test.
Étapes suivantes
- Découvrez comment choisir entre PostgreSQL et GoogleSQL.
- Suivez le guide de démarrage rapide pour créer une base de données PostgreSQL et interagir avec elle.
- En savoir plus sur la prise en charge du langage PostgreSQL de Spanner
- En savoir plus sur PGAdapter
- En savoir plus sur le dépôt GitHub PGAdapter
- Consultez les problèmes connus dans l'interface PostgreSQL.