Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La interfaz de PostgreSQL para Spanner te permite aprovechar la infraestructura completamente administrada, escalable y con alta disponibilidad de Spanner con herramientas y sintaxis de PostgreSQL conocidas. En esta página,
se te ayuda a comprender las capacidades y limitaciones de la interfaz de
PostgreSQL.
Beneficios de la interfaz de PostgreSQL
Portabilidad: La interfaz de PostgreSQL proporciona acceso a la amplia variedad de funciones de Spanner mediante esquemas, consultas y clientes compatibles con PostgreSQL de código abierto. Esto
simplifica el traslado de una aplicación compilada en Spanner a otro
entorno de PostgreSQL. Esta portabilidad proporciona flexibilidad de implementación y admite situaciones de recuperación ante desastres, como una salida estresada.
Familiaridad: Si ya usas PostgreSQL, puedes comenzar a usar Spanner rápidamente con muchas de las mismas instrucciones y herramientas de PostgreSQL. Usar PostgreSQL en tu cartera de bases de datos significa menos variaciones entre productos específicos y un conjunto común de prácticas recomendadas.
Sin concesiones con Spanner: Como se compila en la base existente de Spanner, la interfaz de PostgreSQL proporciona todos los beneficios de disponibilidad, coherencia y relación precio-rendimiento existentes de Spanner sin tener que comprometer ninguna de las funciones disponibles en el ecosistema complementario de GoogleSQL.
Funciones de PostgreSQL no compatibles en Spanner
Es importante comprender que la interfaz de PostgreSQL proporciona las capacidades de Spanner a través de esquemas, tipos, consultas y clientes compatibles con PostgreSQL. No admite todas las funciones de PostgreSQL. Es probable que migrar una aplicación de PostgreSQL existente a Spanner, incluso con la interfaz de PostgreSQL para Spanner, requiera algunos cambios para adaptarse a las funciones de PostgreSQL no admitidas o a las diferencias de comportamiento, como la optimización de consultas o el diseño de claves primarias. Sin embargo, una vez que se realice la migración, tus cargas de trabajo podrán aprovechar la confiabilidad de Spanner y sus capacidades únicas de varios modelos.
En la siguiente lista, se proporciona más información sobre las funciones de PostgreSQL compatibles y no compatibles:
Funcionalidad de PostgreSQL compatible: La interfaz de PostgreSQL admite muchas de las funciones más usadas de PostgreSQL. Esto incluye las partes principales del esquema y el sistema de tipos, muchas formas de consulta comunes, una variedad de funciones y operadores, y los aspectos clave del catálogo del sistema de PostgreSQL. Las aplicaciones pueden usar muchos clientes de PostgreSQL conectándose a través de la implementación de Spanner del protocolo de red de PostgreSQL.
Algunas funciones del lenguaje de PostgreSQL no son compatibles: extensiones, tipos de datos definidos por el usuario, procedimientos almacenados definidos por el usuario y otras funciones. Para obtener una lista completa, consulta El lenguaje de PostgreSQL en Spanner.
También hay algunas funciones en PostgreSQL que se comportan de manera diferente al PostgreSQL de código abierto. Para obtener más información, consulta Problemas conocidos en la interfaz de PostgreSQL para Spanner.
Spanner y el plano de control de Spanner: Las bases de datos con interfaces de PostgreSQL usan Spanner y herramientas de Google Cloudpara aprovisionar, proteger, supervisar y optimizar instancias.
Spanner no admite herramientas, como pgAdmin para actividades administrativas.
Compatibilidad con el cliente y el protocolo de cable: Spanner admite las funciones de consulta principales del protocolo de cable de PostgreSQL con PGAdapter, un proxy ligero que se ejecuta junto con tu aplicación. Esto permite que muchos clientes de Spanner funcionen tal como están con una base de datos de interfaz de PostgreSQL de Spanner, a la vez que aprovechan la administración de extremos y conexiones globales de Spanner, y la autenticación de IAM. Las comparativas internas de Google muestran que PGAdapter no agrega ninguna latencia adicional notable en comparación con la conexión directa a los extremos integrados de Spanner.
Administración
La interfaz de PostgreSQL admite la administración de tus bases de datos de Spanner con las siguientes funciones:
Experiencia unificada: Aprovisiona, administra y supervisa bases de datos habilitadas para la interfaz de PostgreSQL con la consola, las APIs y las herramientas existentes de Spanner, como Google Cloud CLI.
Configuración flexible: Configura la interfaz de PostgreSQL por base de datos en el momento de la creación. Una sola
instancia de Spanner puede admitir bases de datos de interfaz de GoogleSQL y PostgreSQL.
Beneficios compartidos: Ambos dialectos de bases de datos comparten el mismo motor de base de datos distribuido subyacente, lo que garantiza una escalabilidad, coherencia, rendimiento y seguridad coherentes.
Funciones
La interfaz de PostgreSQL de Spanner ofrece dos funciones principales que permiten la integración con el ecosistema de PostgreSQL:
Compatibilidad con dialectos de PostgreSQL
Spanner proporciona un subconjunto del dialecto SQL de PostgreSQL, que incluye el lenguaje de consulta de datos (DQL), el lenguaje de manipulación de datos (DML) y el lenguaje de definición de datos (DDL). Además, incluye extensiones para admitir funciones específicas de Spanner, como tablas intercaladas, tiempo de actividad (TTL) y sugerencias de consulta.
Para obtener información detallada sobre los elementos del lenguaje PostgreSQL compatibles, consulta El lenguaje PostgreSQL en Spanner. Para comprender cómo usar las funciones de Spanner con el dialecto de PostgreSQL, consulta la documentación de la función específica.
Compatibilidad con clientes de PostgreSQL
Spanner te permite conectarte a bases de datos desde una variedad de clientes:
Herramienta de línea de comandos psql: Se admite el popular entorno interactivo psql, que te permite ejecutar consultas, explorar metadatos y cargar datos directamente desde la terminal.
PGAdapter: Este proxy ligero simplifica la administración y la autenticación de las conexiones. Para obtener más detalles, consulta la
descripción general de PGAdapter.
Clientes de Spanner: Spanner proporciona clientes de Spanner de código abierto para varios lenguajes de programación (Java, Go, Python, Node.js, Ruby, PHP, C# y C++), junto con un controlador JDBC de Spanner y un controlador para el paquete SQL de Go.
Los clientes de Spanner se conectan directamente al extremo global de Spanner sin un proxy. Sin embargo, los clientes de Spanner no ofrecen compatibilidad con clientes, ORM o herramientas de PostgreSQL existentes.
Prácticas recomendadas para usar la interfaz de PostgreSQL
Usa las siguientes prácticas recomendadas cuando uses la interfaz de PostgreSQL:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]