Interface do PostgreSQL

A Interface 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 PostgreSQL.

Benefícios da Interface PostgreSQL

  • Portabilidade: a Interface 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. O uso do 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 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 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 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 têm suporte: extensões, tipos de dados definidos pelo usuário, procedimentos armazenados definidos pelo usuário e outros recursos não têm suporte. 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 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 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 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 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 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

Interface 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 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 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 Interface 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 PostgreSQL:

  1. Conectar seus aplicativos: use o conjunto de ferramentas PostgreSQL com suporte para uma conectividade eficiente.
  2. Interagir com seu banco de dados: para trabalho interativo, escolha uma das seguintes opções:

A seguir