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 les bonnes pratiques à suivre pour adopter et utiliser l'interface PostgreSQL.

Avec l'interface PostgreSQL, vous pouvez accéder aux fonctionnalités de Spanner (entièrement géré, évolutivité illimitée, cohérence forte, hautes performances et jusqu'à 99,999% de disponibilité mondiale) depuis l'écosystème Open Source PostgreSQL. Il comprend un sous-ensemble principal du dialecte SQL de PostgreSQL, la compatibilité avec l'outil de ligne de commande psql, les clients en langage natif et l'intégration dans des outils Google existants, tels que Dataflow. Contrairement aux 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. Cela permet aux développeurs de se familiariser avec les applications et de bénéficier de la portabilité des applications, mais pas d'une compatibilité totale avec PostgreSQL. Les applications existantes qui s'appuient sur les 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 s'exécuter sur Spanner. Cependant, la syntaxe SQL acceptée par Spanner est sémantiquement équivalente pour PostgreSQL. Cela signifie que les schémas et les requêtes écrits sur l'interface PostgreSQL peuvent facilement être transférés vers un autre environnement PostgreSQL.

L'interface PostgreSQL est compatible avec la syntaxe SQL courante de PostgreSQL, y compris les requêtes, les fonctions et les opérateurs. De plus, il est compatible avec de nombreux types de données, la syntaxe LDD et les vues de schéma d'informations. Les applications peuvent se connecter à une base de données Spanner avec interface PostgreSQL à l'aide de clients Spanner natifs ou de PGAdapter, un proxy léger qui met en œuvre le protocole filaire PostgreSQL ouvert. Dans un premier temps, la compatibilité des protocoles 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 compatibles avec une interface PostgreSQL à l'aide de la console, des API et des outils existants de Spanner, tels que gcloud CLI. L'interface PostgreSQL est configurée par base de données au moment de la création. Une instance Spanner peut contenir des bases de données 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 comprend deux fonctionnalités principales : la compatibilité avec le dialecte SQL de PostgreSQL et la compatibilité avec les clients qui se connectent aux bases de données avec 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 de Spanner telles que l'entrelacement de tables et les suggestions de requêtes. Pour en savoir plus sur les langages PostgreSQL compatibles avec 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 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 les métadonnées et de charger des données, couramment utilisé dans de nombreux environnements PostgreSQL. La compatibilité de psql est activée par PGAdapter, un proxy léger qui traduit le protocole filaire PostgreSQL en interface gRPC intégrée à Spanner, et gère pour vous les connexions et l'authentification IAM. Pour en savoir plus, consultez la présentation de PGAdapter.

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

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 des types de données utilisés par vos applications, ainsi que la manière dont elles 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 le besoin et les objectifs de l'entreprise, et non la compatibilité avec le langage SQL pour les fonctionnalités Spanner. Les dialectes du 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é.
  • Ces deux fonctionnalités expriment les fonctionnalités de Spanner via un sous-ensemble de leurs constructions de langage standard respectives (ANSI 2001 pour l'un, la norme de facto Open Source pour PostgreSQL pour l'autre), avec des extensions ajoutées pour prendre en charge les fonctionnalités de Spanner telles que l'entrelacement des tables et les indications de requête.
  • Dans les deux cas, vous utilisez 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 utilisez 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 la parité complète 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 bien l'écosystème PostgreSQL Open Source, ou si votre organisation utilise PostgreSQL ou standardise son utilisation.

  • Choisissez GoogleSQL:

    • Si l'équipe de développement connaît GoogleSQL, soit par le biais d'une expérience antérieure de Spanner, soit en travaillant avec d'autres bases de données Google Cloud, telles que BigQuery, qui sont également compatibles avec GoogleSQL.
    • Votre organisation standardise l'utilisation de GoogleSQL ou de sa norme ANSI 2011 sous-jacente.

Pour en savoir plus, consultez la page Parité des dialectes entre GoogleSQL et PostgreSQL.

Bonnes pratiques concernant l'utilisation de l'interface PostgreSQL

Pour utiliser efficacement l'interface PostgreSQL, Google vous recommande de:

  • 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.)

  • Utilisez les bibliothèques clientes Spanner pour connecter les applications qui accèdent à votre base de données.

  • 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 utiliser la page Spanner Studio de la console Google Cloud.

Étapes suivantes