Interface do PostgreSQL

A interface PostgreSQL para 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 as capacidades e limitações da interface do PostgreSQL.

Benefícios da interface PostgreSQL

  • Portabilidade: a Interface PostgreSQL oferece acesso a toda a gama de recursos do Spanner, usando esquemas, consultas e clientes compatíveis com o PostgreSQL de código aberto. Isso simplifica a movimentação de um aplicativo criado no Spanner para outro ambiente do PostgreSQL. Essa portabilidade oferece flexibilidade de implantação e é compatível com cenários de recuperação de desastres, como uma saída forçada.
  • Familiaridade: se você já usa o PostgreSQL, pode começar a usar o Spanner rapidamente com 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 é criada com base na fundação atual do Spanner, a Interface PostgreSQL oferece todos os benefícios de disponibilidade, consistência e custo-benefício do Spanner sem comprometer nenhum dos recursos disponíveis no ecossistema complementar do GoogleSQL.

Recursos do PostgreSQL incompatíveis com o Spanner

É importante entender que a Interface PostgreSQL fornece os recursos do Spanner por meio de esquemas, tipos, consultas e clientes compatíveis com o PostgreSQL. Ele não é compatível com todos os recursos do PostgreSQL. A migração de um aplicativo PostgreSQL para o Spanner, mesmo usando a interface PostgreSQL para o Spanner, provavelmente exigirá 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 poderão aproveitar a confiabilidade e os recursos multimodais exclusivos do Spanner.

A lista a seguir fornece mais informações sobre recursos do PostgreSQL compatíveis e incompatíveis:

  • Funcionalidade compatível do PostgreSQL: a Interface PostgreSQL é compatível com 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 PostgreSQL conectando-se pela implementação do Spanner do protocolo de transmissão do PostgreSQL.
  • Alguns recursos da linguagem 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 PostgreSQL para Spanner.
  • Plano de controle do Spanner: bancos de dados com interfaces do PostgreSQL usam o Spanner e ferramentas do Google Cloud para provisionar, proteger, monitorar e otimizar instâncias. O Spanner não é compatível com ferramentas como o pgAdmin para atividades administrativas.
  • Suporte a clientes e protocolo de transmissão: o Spanner oferece suporte aos principais recursos de consulta do protocolo de transmissão do PostgreSQL usando o PGAdapter, um proxy leve que é executado ao lado do aplicativo. Isso permite que muitos clientes do Spanner funcionem como estão com um banco de dados da interface PostgreSQL do Spanner, aproveitando o endpoint global e o gerenciamento de conexões do Spanner e a autenticação do IAM. Os comparativos internos do Google mostram que o PGAdapter não adiciona nenhuma latência extra perceptível em comparação com a conexão direta aos endpoints integrados do Spanner.

Administração e gerenciamento

A Interface PostgreSQL oferece suporte à administração e ao gerenciamento dos 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 Google Cloud CLI.
  • Configuração flexível: configure a Interface PostgreSQL por banco de dados no momento da criação. Uma única instância do Spanner pode acomodar bancos de dados da interface do GoogleSQL e do PostgreSQL.
  • Benefícios compartilhados: os dois dialetos de banco de dados compartilham o mesmo mecanismo de banco de dados distribuído subjacente, garantindo escalonabilidade, consistência, desempenho e segurança consistentes.

Recursos

Interface PostgreSQL do Spanner oferece dois recursos principais que permitem a integração com o ecossistema do PostgreSQL:

  • Suporte ao dialeto do PostgreSQL

    O Spanner oferece 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 oferecer 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 da linguagem PostgreSQL compatíveis, consulte A linguagem PostgreSQL no Spanner. Para entender como usar os recursos do Spanner com o dialeto PostgreSQL, consulte a documentação do recurso específico.

  • Suporte ao cliente PostgreSQL

    O Spanner permite que você se conecte a bancos de dados de vários clientes:

    • Ferramentas do ecossistema PostgreSQL:é possível usar ferramentas conhecidas, como o driver JDBC do PostgreSQL e o driver pgx do PostgreSQL, para conectar seus aplicativos a um banco de dados Interface PostgreSQL. Para uma lista de drivers, ORMs e ferramentas compatíveis, consulte Drivers e ORMs do PostgreSQL.

    • Ferramenta de linha de comando psql: o popular ambiente interativo psql é compatível, permitindo que você execute consultas, explore metadados e carregue dados diretamente do terminal.

    • PGAdapter:esse proxy leve simplifica o gerenciamento de conexões e a autenticação. 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

Use as seguintes práticas recomendadas ao usar a Interface PostgreSQL:

  1. Conecte seus aplicativos: use o conjunto de ferramentas compatíveis do PostgreSQL para uma conectividade eficiente.
  2. Interagir com seu banco de dados: para trabalho interativo, escolha entre as seguintes opções:

A seguir