Interface PostgreSQL pour Spanner

Cette page décrit l'interface PostgreSQL pour Spanner et ses composants. Il fournit des conseils pour choisir entre PostgreSQL et GoogleSQL, ainsi que des bonnes pratiques pour adopter et utiliser l'interface PostgreSQL.

L'interface PostgreSQL rend les fonctionnalités de Spanner (entièrement gérées, évolutivité illimitée, cohérence forte, hautes performances et jusqu'à 99, 999% de disponibilité mondiale) accessibles depuis l'écosystème PostgreSQL Open Source. Elle inclut un sous-ensemble principal du dialecte SQL de PostgreSQL, une compatibilité avec l'outil de ligne de commande psql, des clients en langage natif et une intégration aux outils Google existants, tels que Dataflow. Contrairement à d'autres services qui gèrent des instances de base de données PostgreSQL réelles, Spanner utilise une syntaxe compatible avec PostgreSQL pour exposer ses fonctionnalités de scaling horizontal existantes. Les développeurs sont ainsi familiarisés avec cette fonctionnalité et la portabilité des applications n'est pas garantie, mais la compatibilité 100% avec PostgreSQL n'est pas garantie. Les applications existantes qui reposent sur des fonctionnalités PostgreSQL telles que les procédures stockées, les déclencheurs, les extensions ou les niveaux d'isolation configurables devront être retravaillées avant de pouvoir s'exécuter sur Spanner. Cependant, la syntaxe SQL compatible avec Spanner est sémantiquement équivalente à PostgreSQL. Cela signifie que les schémas et les requêtes écrits sur l'interface PostgreSQL peuvent être facilement transférés vers un autre environnement PostgreSQL.

L'interface PostgreSQL est compatible avec la syntaxe SQL PostgreSQL courante, y compris les requêtes, les fonctions et les opérateurs. En outre, il est compatible avec de nombreux types de données, la syntaxe LDD et les vues du schéma d'informations. Les applications peuvent se connecter à une base de données Spanner dotée d'une interface PostgreSQL à l'aide de clients Spanner natifs ou de PGAdapter, un proxy léger qui met en œuvre le protocole filaire Open PostgreSQL. Dans un premier temps, la compatibilité du protocole de communication filaire est prévue pour être utilisée avec l'outil de ligne de commande psql.

Les administrateurs provisionnent, gèrent et surveillent les bases de données avec interface PostgreSQL à l'aide de la console, des API et des outils existants de Spanner, tels que la gcloud CLI. L'interface PostgreSQL est configurée pour chaque base de données au moment de la création. Une instance Spanner peut contenir à la fois des bases de données de dialectes d'interface GoogleSQL et PostgreSQL. Étant donné qu'ils partagent le même moteur de base de données distribué sous-jacent, les deux dialectes de base de données présentent les mêmes caractéristiques d'évolutivité, de cohérence, de performances et de sécurité.

Composants de l'interface PostgreSQL

L'interface PostgreSQL présente deux fonctionnalités principales : la compatibilité avec le dialecte SQL de PostgreSQL et la prise en charge des clients qui se connectent aux bases de données compatibles avec l'interface PostgreSQL.

Compatibilité avec le dialecte SQL de PostgreSQL

L'interface PostgreSQL fournit un sous-ensemble du dialecte SQL de PostgreSQL, y compris DQL, LMD et LDD, ainsi que des extensions compatibles avec les fonctionnalités Spanner telles que l'entrelacement de tables et l'optimisation des requêtes. Pour en savoir plus sur la compatibilité avec les langages PostgreSQL de Spanner, consultez la page Langage PostgreSQL dans Spanner.

Prise en charge du client PostgreSQL

Les développeurs peuvent connecter leurs applications à une base de données d'interface PostgreSQL à l'aide de clients Spanner Open Source pour les environnements Java, Go, Python, Node.js, Ruby, PHP, C# et C++. Ils peuvent également utiliser le pilote JDBC Open Source de Spanner et le pilote pour le package database/sql de Go.

L'interface PostgreSQL est également compatible avec l'outil de ligne de commande psql. psql est un environnement interactif permettant d'exécuter des requêtes, d'explorer des métadonnées et de charger des données, ce qui est courant dans de nombreux environnements PostgreSQL. La compatibilité psql est activée par PGAdapter, un proxy léger qui traduit le protocole filaire PostgreSQL dans l'interface gRPC intégrée de Spanner, et gère les connexions et l'authentification IAM pour vous. Pour en savoir plus, consultez la présentation de PGAdapter.

Les pilotes du pilote JDBC PostgreSQL et du pilote PostgreSQL pgx sont également compatibles avec PGAdapter. Pour obtenir la liste complète des pilotes PostgreSQL compatibles, consultez la section Pilotes PostgreSQL et ORM.

Choisir entre GoogleSQL et PostgreSQL

Lorsque vous créez une base de données Spanner, vous avez le choix entre les dialectes GoogleSQL et PostgreSQL. Le dialecte détermine la syntaxe et la sémantique des requêtes et les types de données utilisés par vos applications, ainsi que la manière dont ils se connectent à la base de données.

Le facteur décisif dans le choix d'utiliser GoogleSQL ou PostgreSQL pour une application ou un projet donnés doit être basé sur les besoins et les objectifs de l'entreprise, et non sur la compatibilité du langage SQL avec les fonctionnalités Spanner. Les dialectes de langage SQL sont des pairs qui partagent les mêmes caractéristiques concernant les fonctionnalités de Spanner:

  • Les deux sont mis en œuvre sur la même base de stockage distribué et de traitement des requêtes. Ils partagent donc les mêmes caractéristiques de performances, d'évolutivité, de cohérence et de disponibilité.
  • Les deux expriment les fonctionnalités de Spanner via un sous-ensemble de leurs constructions de langage standard respectives (ANSI 2001 pour l'une, la norme Open Source PostgreSQL de facto pour l'autre), avec des extensions ajoutées pour prendre en charge les fonctionnalités de Spanner telles que les tables entrelacées et l'optimisation des requêtes.
  • Dans les deux cas, vous devez utiliser les interfaces de gestion Spanner: la console Google Cloud, gcloud CLI et les bibliothèques clientes Spanner pour l'automatisation DevOps.
  • Dans les deux cas, vous devez utiliser les interfaces de développement d'applications Spanner: les bibliothèques clientes Spanner, ainsi que les API REST et RPC.
  • Dans les deux cas, vous utilisez les schémas système INFORMATION_SCHEMA et SPANNER_SYS de Spanner pour interroger les métadonnées et les statistiques de la base de données.

L'interface PostgreSQL actuelle n'atteint pas une parité totale entre les dialectes GoogleSQL et PostgreSQL. Toutefois, à plus long terme, vous devez déterminer si vous devez utiliser PostgreSQL ou GoogleSQL pour une application ou un projet donnés comme suit:

  • Choisissez PostgreSQL si l'équipe de développement connaît l'écosystème PostgreSQL Open Source, ou si votre organisation utilise ou standardise l'utilisation de PostgreSQL.

  • Choisissez GoogleSQL:

    • L'équipe de développement doit connaître GoogleSQL, soit par une expérience passée avec Spanner, soit par l'utilisation d'autres bases de données Google Cloud, telles que BigQuery, également compatibles avec GoogleSQL.
    • si votre organisation standardise l'utilisation de GoogleSQL ou de sa norme ANSI 2011 sous-jacente ;

Pour en savoir plus, consultez la section Parité dialecte entre GoogleSQL et PostgreSQL.

Bonnes pratiques concernant l'utilisation de l'interface PostgreSQL

Pour utiliser efficacement l'interface PostgreSQL, voici les recommandations de Google:

  • Utilisez la console Google Cloud ou la Google Cloud CLI pour créer votre base de données PostgreSQL dans une instance Spanner. (Vous pouvez créer des bases de données PostgreSQL et GoogleSQL dans la même instance.)

  • Connectez les applications qui accèdent à votre base de données à l'aide des bibliothèques clientes Spanner.

  • Utilisez l'outil de ligne de commande psql via le proxy PGAdapter pour travailler de manière interactive avec votre base de données. Vous pouvez également accéder à la page Spanner Studio de la console Google Cloud.

Étapes suivantes