Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
L'interface PostgreSQL pour Spanner vous permet de profiter de l'infrastructure entièrement gérée, évolutive et hautement disponible de Spanner à l'aide d'outils et de syntaxes PostgreSQL familiers. Cette page vous aide à comprendre les fonctionnalité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 de 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 est compatible avec les scénarios de reprise après sinistre, tels qu'une sortie stressée.
Connaissances: si vous utilisez déjà PostgreSQL, vous pouvez commencer à utiliser Spanner rapidement en utilisant de nombreux outils et instructions PostgreSQL. L'utilisation de PostgreSQL dans l'ensemble de votre portefeuille de bases de données permet de réduire les variations entre les produits spécifiques et de définir un ensemble commun de bonnes pratiques.
Spanner sans compromis: comme elle est basée sur les fondations existantes de Spanner, l'interface PostgreSQL offre tous les avantages existants de Spanner en termes de disponibilité, de cohérence et de rapport qualité-prix, sans avoir à faire de compromis sur les fonctionnalités disponibles dans l'écosystème GoogleSQL complémentaire.
Fonctionnalités PostgreSQL non compatibles avec 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 à l'aide de l'interface PostgreSQL pour Spanner, nécessite probablement un certain travail pour prendre en charge les fonctionnalités PostgreSQL non compatibles ou les différences de comportement, comme l'optimisation des requêtes ou la conception de clés primaires. Toutefois, une fois la migration effectuée, vos charges de travail peuvent profiter de la fiabilité et des fonctionnalité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 essentielles du schéma et du système de types, de nombreuses formes de requêtes courantes, une variété de fonctions et d'opérateurs, ainsi que les principaux aspects du catalogue système de PostgreSQL. Les applications peuvent utiliser de nombreux clients PostgreSQL en se connectant via l'implémentation du protocole de communication PostgreSQL par Spanner.
Certaines fonctionnalités du langage 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 la section Le langage PostgreSQL dans Spanner.
Certaines fonctionnalités de PostgreSQL se comportent différemment de PostgreSQL Open Source. Pour en savoir plus, consultez la page Problèmes connus dans l'interface PostgreSQL pour Spanner.
Spanner et le plan de contrôle Spanner: les bases de données avec des interfaces PostgreSQL utilisent Spanner et des outils pour provisionner, sécuriser, surveiller et optimiser les instances. Google Cloud
Spanner n'est pas compatible avec des outils tels que pgAdmin pour les activités administratives.
Compatibilité avec le client et le protocole de communication: Spanner est compatible avec les principales fonctionnalités de requête du protocole de communication PostgreSQL à l'aide de PGAdapter, un proxy léger qui s'exécute avec votre application. Cela permet à de nombreux clients Spanner de fonctionner tels quels avec une base de données d'interface PostgreSQL Spanner, tout en tirant parti de la gestion des points de terminaison et des connexions globaux de Spanner, ainsi que de l'authentification IAM. Les analyses 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 seule instance Spanner peut accueillir à la fois 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é sous-jacent, ce qui garantit une évolutivité, une cohérence, des performances et une sécurité cohérentes.
Fonctionnalités
L'interface PostgreSQL de Spanner offre deux fonctionnalités principales qui permettent l'intégration à l'écosystème PostgreSQL:
Compatibilité avec les dialectes PostgreSQL
Spanner fournit un sous-ensemble du dialecte SQL de 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). De plus, il inclut des extensions pour prendre en charge des fonctionnalités spécifiques à Spanner, telles que les tables entrelacées, la valeur TTL (Time To Live) et les indices de requête.
Pour en savoir plus sur les éléments de langage PostgreSQL compatibles, consultez la section Le langage PostgreSQL dans Spanner. Pour comprendre 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 familiers tels que le pilote JDBC PostgreSQL et le pilote pgx PostgreSQL pour connecter vos applications à une base de données d'interface PostgreSQL. Pour obtenir la liste des pilotes, des ORM et des outils compatibles, consultez la page Pilotes et ORM PostgreSQL.
Outil de ligne de commande psql: l'environnement interactif psql populaire est 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 et l'authentification des connexions. Pour en savoir plus, consultez la
Présentation de PGAdapter.
Clients Spanner:Spanner fournit des clients Spanner Open Source pour divers 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 global de Spanner sans proxy. Toutefois, les clients Spanner ne sont pas compatibles avec les clients, ORM ou outils PostgreSQL existants.
Bonnes pratiques concernant l'utilisation de l'interface PostgreSQL
Suivez les bonnes pratiques suivantes lorsque vous utilisez l'interface PostgreSQL:
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (UTC)."],[],[],null,["# PostgreSQL interface\n\nThe PostgreSQL interface for Spanner lets you take advantage of\nSpanner's fully managed, scalable, and highly available\ninfrastructure using familiar PostgreSQL tools and syntax. This page\nhelps you understand the capabilities and limitations of the PostgreSQL\ninterface.\n\nBenefits of the PostgreSQL interface\n------------------------------------\n\n- **Portability**: the PostgreSQL interface provides access to the breadth of Spanner features, using schemas, queries, and clients that are compatible with open source PostgreSQL. This simplifies moving an application built on Spanner to another PostgreSQL environment. This portability provides deployment flexibility and supports disaster recovery scenarios, such as a stressed exit.\n- **Familiarity**: if you already use PostgreSQL, you can quickly get started with Spanner using many of the same PostgreSQL statements and tools. Using PostgreSQL across your database portfolio means fewer variations between specific products and a common set of best practices.\n- **Uncompromisingly Spanner**: because it's built on Spanner's existing foundation, the PostgreSQL interface provides all of Spanner's existing availability, consistency, and price-performance benefits without having to compromise on any of the capabilities available in the complementary GoogleSQL ecosystem.\n\nUnsupported PostgreSQL features on Spanner\n------------------------------------------\n\nIt's important to understand that the PostgreSQL interface\nprovides the capabilities of Spanner through schemas, types,\nqueries, and clients that are compatible with PostgreSQL. It doesn't\nsupport all of the features of PostgreSQL. Migrating an existing\nPostgreSQL application to Spanner, even using\nthe PostgreSQL interface for Spanner, likely requires some rework to accommodate\nunsupported PostgreSQL capabilities or differences in behavior, like\nquery optimization or primary key design. However, once it's migrated, your\nworkloads can take advantage of Spanner's reliability and unique\nmulti-model capabilities.\n\nThe following list provides more information on supported and unsupported\nPostgreSQL features:\n\n- **Supported PostgreSQL functionality**: the PostgreSQL interface supports many of the most commonly used features of PostgreSQL. This includes core parts of the schema and type system, many common query shapes, a variety of functions and operators, and the key aspects of PostgreSQL's system catalog. Applications can use many PostgreSQL clients by connecting over Spanner's implementation of the PostgreSQL wire protocol.\n- **Some PostgreSQL language features aren't supported** : extensions, user-defined data types, user-defined stored procedures, and other features aren't supported. For a complete list, see [The PostgreSQL language in Spanner](/spanner/docs/reference/postgresql/overview). There are also some features in PostgreSQL that behave differently from open source PostgreSQL. For more information, see [Known issues in the PostgreSQL interface for Spanner](/spanner/docs/reference/postgresql/known-issues-postgresql-interface).\n- **Spanner and Spanner control plane**: databases with PostgreSQL interfaces use Spanner and Google Cloud tools to provision, secure, monitor, and optimize instances. Spanner doesn't support tools, such as pgAdmin for administrative activities.\n- **Client and wire protocol support**: Spanner supports the core query capabilities of the PostgreSQL wire protocol using PGAdapter, a lightweight proxy that runs alongside your application. This lets many Spanner clients work as-is with a Spanner PostgreSQL interface database, while leveraging Spanner's global endpoint and connection management and IAM authentication. Google's internal benchmarking shows that PGAdapter doesn't add any noticeable additional latency compared to direct connection to Spanner's built-in endpoints.\n\nAdministration and Management\n-----------------------------\n\nThe PostgreSQL interface supports the administration and\nmanagement of your Spanner databases with the following features:\n\n- **Unified experience**: provision, manage, and monitor PostgreSQL interface-enabled databases using Spanner's existing console, APIs, and tools like Google Cloud CLI.\n- **Flexible configuration**: configure the PostgreSQL interface per database at creation time. A single Spanner instance can accommodate both GoogleSQL and PostgreSQL interface databases.\n- **Shared benefits**: both database dialects share the same underlying distributed database engine, ensuring consistent scalability, consistency, performance, and security.\n\nFeatures\n--------\n\nSpanner's PostgreSQL interface offers two primary\nfeatures that enable integration with the PostgreSQL ecosystem:\n\n- **PostgreSQL dialect support**\n\n Spanner provides a subset of the PostgreSQL SQL\n dialect, including Data Query Language (DQL), Data Manipulation Language\n (DML), and Data Definition Language (DDL). Additionally, it includes\n extensions to support Spanner-specific features like\n [interleaved tables](/spanner/docs/schema-and-data-model#parent-child),\n [time to live (TTL)](/spanner/docs/ttl), and [query hints](/spanner/docs/reference/postgresql/query-syntax#pg_extensions).\n\n For detailed information on the supported PostgreSQL language\n elements, see [The PostgreSQL language in\n Spanner](/spanner/docs/reference/postgresql/overview). To\n understand how to use Spanner features with the\n PostgreSQL dialect, consult the documentation for the specific\n feature.\n- **PostgreSQL client support**\n\n Spanner lets you connect to databases from a variety of\n clients:\n - **PostgreSQL ecosystem tools:** you can use familiar\n tools like the [PostgreSQL JDBC driver](/spanner/docs/pg-jdbc-connect)\n and [PostgreSQL pgx driver](https://github.com/jackc/pgx) to connect\n your applications to a PostgreSQL interface database. For\n a list of supported drivers, ORMs, and tools see\n [PostgreSQL drivers and ORMs](/spanner/docs/drivers-overview#postgresql-drivers-and-orms).\n\n - **psql command-line tool** : the popular\n [`psql` interactive environment](/spanner/docs/psql-commands)\n is supported, letting you run queries, explore metadata, and load data\n directly from your terminal.\n\n - **PGAdapter:** this lightweight proxy simplifies connection\n management and authentication. For more details, refer to the [PGAdapter overview](/spanner/docs/pgadapter).\n\n - **Spanner clients:** Spanner provides\n open source Spanner clients for various programming\n languages (Java, Go, Python, Node.js, Ruby, PHP, C#, C++), along with a\n [Spanner JDBC driver](https://github.com/googleapis/java-spanner-jdbc)\n and a [driver for Go's SQL package](https://github.com/googleapis/go-sql-spanner).\n Spanner clients connect directly to\n Spanner's global endpoint without a proxy. However,\n Spanner clients don't offer compatibility with existing\n PostgreSQL clients, ORMs, or tools.\n\nBest practices for using the PostgreSQL interface\n-------------------------------------------------\n\nUse the following best practices when using the PostgreSQL interface:\n\n1. **Connect your applications** : use the [set of supported PostgreSQL\n tools](#connect-pg) for efficient connectivity.\n2. **Interact with your database**: for interactive work, choose\n between the following:\n\n - The familiar [psql command-line tool](/spanner/docs/psql-connect) (using the [PGAdapter proxy](/spanner/docs/pgadapter-get))\n - The intuitive [Spanner Studio](/spanner/docs/manage-data-using-console) page within the Google Cloud console\n - IDEs, such [DBeaver](https://cloud.google.com/blog/topics/developers-practitioners/exploring-cloud-spanner-data-dbeaver/) and [Visual Studio Code](https://cloud.google.com/blog/topics/developers-practitioners/browse-and-query-cloud-spanner-databases-visual-studio-code), [JetBrains](https://cloud.google.com/blog/topics/developers-practitioners/cloud-spanner-connectivity-using-jetbrains-ides), and [IntelliJ](/spanner/docs/use-intellij)\n - The Spanner emulator which lets you emulate Spanner on your local machine. This is useful during the development and test process.\n\n### What's next\n\n- Learn how to [choose between PostgreSQL and\n GoogleSQL](/spanner/docs/choose-googlesql-or-postgres).\n- Follow the [quickstart](/spanner/docs/create-query-database-console) to create and interact with a PostgreSQL database.\n- Learn more about [Spanner's PostgreSQL language\n support](/spanner/docs/reference/postgresql/overview).\n- Learn about [PGAdapter](/spanner/docs/pgadapter).\n- Learn about the [PGAdapter GitHub\n repository](https://github.com/GoogleCloudPlatform/pgadapter).\n- Review [known issues](/spanner/docs/known-issues-postgresql-interface) in the PostgreSQL interface."]]