Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A interface do PostgreSQL para o Spanner permite aproveitar a infraestrutura totalmente gerenciada, escalonável e altamente disponível do Spanner usando ferramentas e sintaxe conhecidas do PostgreSQL. Esta página
ajuda você a entender os recursos e as limitações da interface do PostgreSQL.
Benefícios da interface do PostgreSQL
Portabilidade: a interface do PostgreSQL oferece acesso a
uma ampla variedade de recursos do Spanner, usando esquemas, consultas e
clientes compatíveis com o PostgreSQL de código aberto. Isso
simplifica a migração de um aplicativo criado no Spanner para outro
ambiente do PostgreSQL. Essa portabilidade oferece flexibilidade de
implantação e oferece suporte a cenários de recuperação de desastres, como uma saída
sobrecarregada.
Familiaridade: se você já usa o PostgreSQL, pode começar a usar o Spanner rapidamente usando muitas das mesmas instruções e ferramentas do PostgreSQL. Usar o PostgreSQL em todo o portfólio de bancos de dados
significa menos variações entre produtos específicos e um conjunto comum
de práticas recomendadas.
Spanner sem concessões: como a interface do PostgreSQL foi criada com base na estrutura do Spanner, ela oferece todos os benefícios de disponibilidade, consistência e relação preço-desempenho do Spanner sem comprometer nenhum dos recursos disponíveis no ecossistema complementar do GoogleSQL.
Recursos do PostgreSQL não compatíveis com o Spanner
É importante entender que a interface do PostgreSQL
oferece os recursos do Spanner por meio de esquemas, tipos,
consultas e clientes compatíveis com o PostgreSQL. Ele não
oferece suporte a todos os recursos do PostgreSQL. A migração de um aplicativo
PostgreSQL para o Spanner, mesmo usando
a interface PostgreSQL para o Spanner, provavelmente requer algum retrabalho para acomodar
recursos do PostgreSQL sem suporte ou diferenças de comportamento, como
otimização de consultas ou design de chave primária. No entanto, depois da migração, suas
cargas de trabalho podem aproveitar a confiabilidade e os recursos exclusivos
multimodelo do Spanner.
A lista a seguir fornece mais informações sobre os recursos do PostgreSQL
com suporte e sem suporte:
Funcionalidade do PostgreSQL com suporte: a
interface do PostgreSQL oferece suporte a muitos dos recursos mais usados
do PostgreSQL. Isso inclui partes principais do esquema e do sistema de tipos, muitas formas de consulta comuns, uma variedade de funções e operadores e os principais aspectos do catálogo do sistema do PostgreSQL. Os aplicativos
podem usar muitos clientes do PostgreSQL se conectando pela
implementação do Spanner do protocolo de transmissão do PostgreSQL.
Alguns recursos de linguagem do PostgreSQL não são compatíveis: extensões,
tipos de dados definidos pelo usuário, procedimentos armazenados definidos pelo usuário e outros recursos
não são compatíveis. Para uma lista completa, consulte
A linguagem PostgreSQL no Spanner.
Há também alguns recursos no PostgreSQL que se comportam de maneira diferente do PostgreSQL de código aberto. Para mais informações, consulte
Problemas conhecidos na interface do PostgreSQL para o Spanner.
Spanner e plano de controle do Spanner: os bancos de dados com
interfaces do PostgreSQL usam o Spanner e as ferramentas
Google Cloudpara provisionar, proteger, monitorar e otimizar instâncias.
O Spanner não oferece suporte a ferramentas, como o pgAdmin para atividades
administrativas.
Suporte a cliente e protocolo de rede: o Spanner oferece suporte aos principais
recursos de consulta do protocolo de rede do PostgreSQL usando
o PGAdapter, um proxy leve executado junto com o
aplicativo. Isso permite que muitos clientes do Spanner funcionem como estão com um
banco de dados de interface do Spanner PostgreSQL, aproveitando o gerenciamento de endpoint e de conexão global do Spanner e
a autenticação do IAM. O benchmarking interno do Google mostra que
o PGAdapter não adiciona nenhuma latência perceptível em comparação com
a conexão direta aos endpoints integrados do Spanner.
Administração e gerenciamento
A interface do PostgreSQL oferece suporte à administração e
ao gerenciamento dos seus bancos de dados do Spanner com os seguintes recursos:
Experiência unificada: provisione, gerencie e monitore bancos de dados ativados pela interface do PostgreSQL usando o console, as APIs e as ferramentas atuais do Spanner, como a CLI do Google Cloud.
Configuração flexível: configure a interface do PostgreSQL por banco de dados no momento da criação. Uma única
instância do Spanner pode acomodar bancos de dados da interface
GoogleSQL e PostgreSQL.
Benefícios compartilhados: os dois dialetos de banco de dados compartilham o mesmo mecanismo
de banco de dados distribuído, garantindo escalonabilidade, consistência,
desempenho e segurança consistentes.
Recursos
A interface do PostgreSQL do Spanner oferece dois recursos principais
que permitem a integração com o ecossistema do PostgreSQL:
Suporte a dialetos do PostgreSQL
O Spanner fornece um subconjunto do dialeto SQL do PostgreSQL, incluindo a linguagem de consulta de dados (DQL), a linguagem de manipulação de dados (DML) e a linguagem de definição de dados (DDL). Além disso, ele inclui extensões para dar suporte a recursos específicos do Spanner, como tabelas intercaladas, time to live (TTL) e dicas de consulta.
Para informações detalhadas sobre os elementos de linguagem do PostgreSQL compatíveis, consulte A linguagem PostgreSQL no
Spanner. Para
entender como usar os recursos do Spanner com o
dialeto do PostgreSQL, consulte a documentação do recurso
específico.
Suporte ao cliente do PostgreSQL
O Spanner permite conectar-se a bancos de dados de vários
clientes:
Ferramentas do ecossistema do PostgreSQL:você pode usar ferramentas conhecidas, como o driver JDBC do PostgreSQL e o driver pgx do PostgreSQL, para conectar seus aplicativos a um banco de dados de interface do PostgreSQL. Para
acessar uma lista de drivers, ORMs e ferramentas com suporte, consulte
Drivers e ORMs do PostgreSQL.
Ferramenta de linha de comando psql: o popular
ambiente interativo psql
é compatível, permitindo executar consultas, analisar metadados e carregar dados
diretamente do terminal.
PGAdapter:esse proxy leve simplifica o gerenciamento e a autenticação
de conexões. Para mais detalhes, consulte a
Visão geral do PGAdapter.
Clientes do Spanner:o Spanner oferece
clientes de código aberto para várias linguagens de programação (Java, Go, Python, Node.js, Ruby, PHP, C#, C++), além de um
driver JDBC do Spanner
e um driver para o pacote SQL do Go.
Os clientes do Spanner se conectam diretamente ao
endpoint global do Spanner sem um proxy. No entanto,
os clientes do Spanner não oferecem compatibilidade com clientes, ORMs ou ferramentas do PostgreSQL.
Práticas recomendadas para usar a interface do PostgreSQL
Siga estas práticas recomendadas ao usar a interface do PostgreSQL:
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]