Interface do PostgreSQL

Nesta página, descrevemos a interface PostgreSQL para o Cloud Spanner e seus componentes. Ele fornece orientações sobre como escolher entre o PostgreSQL e o GoogleSQL e oferece práticas recomendadas para adotar e usar a Interface PostgreSQL.

A interface PostgreSQL torna os recursos do Spanner (totalmente gerenciado, escala ilimitada, consistência forte, alto desempenho e até 99, 999% de disponibilidade global) acessíveis a partir do ecossistema PostgreSQL de código aberto. Ele inclui um subconjunto central do dialeto SQL do PostgreSQL, suporte para a ferramenta de linha de comando WebP, clientes de linguagem nativa e integração com ferramentas existentes do Google, como o Dataflow. Ao contrário de outros serviços que gerenciam instâncias reais de banco de dados do PostgreSQL, o Spanner usa a sintaxe compatível com o PostgreSQL para expor os recursos de escalonamento horizontal atuais. Isso oferece familiaridade para desenvolvedores e portabilidade para aplicativos, mas não 100% de compatibilidade com o PostgreSQL. Os aplicativos atuais que dependem de recursos do PostgreSQL, como procedimentos armazenados, gatilhos, extensões ou níveis de isolamento configuráveis, vão exigir retrabalho para serem executados no Spanner. No entanto, a sintaxe SQL compatível com o Spanner é o PostgreSQL semanticamente equivalente, o que significa que esquemas e consultas escritas na interface PostgreSQL podem ser facilmente transferidos para outro ambiente PostgreSQL.

A interface PostgreSQL é compatível com a sintaxe SQL do PostgreSQL comum, incluindo consultas, funções e operadores. Além disso, ele é compatível com muitos tipos de dados, sintaxe DDL e visualizações de esquemas de informações. Os aplicativos podem se conectar a um banco de dados do Spanner com interface PostgreSQL usando clientes nativos do Spanner ou o PGAdapter, um proxy leve que implementa o protocolo de fio PostgreSQL aberto. Inicialmente, o suporte ao protocolo de conexão é direcionado para uso com a ferramenta de linha de comando do WebP.

Os administradores provisionam, gerenciam e monitoram bancos de dados com interface PostgreSQL ativada usando o console, as APIs e as ferramentas atuais do Spanner, como a CLI gcloud. A Interface PostgreSQL é configurada por banco de dados no momento da criação. Uma instância do Spanner pode conter bancos de dados de dialetos de interface do GoogleSQL e do PostgreSQL. Como compartilham o mesmo mecanismo de banco de dados distribuído subjacente, os dois dialetos de banco de dados têm as mesmas características de escalonabilidade, consistência, desempenho e segurança.

Componentes da interface do PostgreSQL

A Interface PostgreSQL consiste em dois recursos principais: suporte ao dialeto SQL do PostgreSQL e suporte a clientes que se conectam a bancos de dados ativados para a Interface PostgreSQL.

Suporte ao dialeto SQL do PostgreSQL

A interface PostgreSQL fornece um subconjunto do dialeto SQL do PostgreSQL, incluindo DQL, DML e DDL, além de extensões para oferecer suporte à funcionalidade do Spanner, como tabelas intercaladas e dicas de consulta. Para informações detalhadas sobre o suporte à linguagem PostgreSQL do Spanner, consulte A linguagem PostgreSQL no Cloud Spanner.

Suporte ao cliente PostgreSQL

Os desenvolvedores podem conectar aplicativos a um banco de dados de interface PostgreSQL usando clientes Spanner de código aberto para ambientes Java, Go, Python, Node.js, Ruby, PHP, C# e C++. Eles também podem usar o driver JDBC de código aberto do Spanner e o driver para o pacote database/sql do Go.

A interface PostgreSQL também é compatível com a ferramenta de linha de comando HBase. O SQL é um ambiente interativo para executar consultas, explorar metadados e carregar dados, comuns em muitos ambientes PostgreSQL. O suporte a SQL é ativado pelo PGAdapter, um proxy leve que converte o protocolo de cabo PostgreSQL na interface gRPC nativa do Spanner, gerenciando conexões e autenticação IAM para você. Para mais informações, consulte Sobre o PGAdapter.

Os drivers JDBC JDBC e PostgreSQL pgx também são compatíveis com PGAdapter (em inglês). Para ver uma lista completa de drivers PostgreSQL compatíveis, consulte Drivers e ORMs do PostgreSQL.

Escolher entre GoogleSQL e PostgreSQL

Ao criar um banco de dados do Spanner, é possível escolher entre os dialetos GoogleSQL e PostgreSQL. O dialeto determina a sintaxe e a semântica das consultas e dos tipos de dados usados pelos aplicativos e como eles se conectam ao banco de dados.

O fator decisivo ao escolher usar o GoogleSQL ou o PostgreSQL para um determinado aplicativo ou projeto deve ser as necessidades e os objetivos dos negócios, não o suporte à linguagem SQL para recursos do Spanner. Os dialetos da linguagem SQL são pares que compartilham as mesmas características em relação aos recursos do Spanner:

  • Ambos são implementados com base na mesma base de armazenamento distribuído e processamento de consultas. Dessa forma, eles compartilham características de desempenho, escalonabilidade, consistência e disponibilidade.
  • Ambas expressam a funcionalidade de banco de dados do Spanner por meio de um subconjunto das respectivas construções de linguagem padrão (o ANSI 2001 para uma e o PostgreSQL de fato padrão de código aberto para a outra), com extensões adicionadas para oferecer suporte à funcionalidade do Spanner, como tabelas intercaladas e dicas de consulta.
  • Para ambos, você usa as interfaces de gerenciamento do Spanner: o console do Google Cloud, a CLI gcloud e as bibliotecas de cliente do Spanner para automação de DevOps.
  • Para ambos, você usa as interfaces de desenvolvimento de aplicativos do Spanner: as bibliotecas de cliente do Spanner, as APIs REST e RPC.
  • Para ambos, use os esquemas de sistema INFORMATION_SCHEMA e SPANNER_SYS do Spanner para consultar metadados e estatísticas do banco de dados.

A versão atual da interface PostgreSQL ainda não atinge total paridade entre os dialetos GoogleSQL e PostgreSQL. No entanto, em longo prazo, você precisa determinar se vai usar o PostgreSQL ou o GoogleSQL para um determinado aplicativo ou projeto da seguinte maneira:

  • Escolha o PostgreSQL se a equipe de desenvolvimento estiver familiarizada com o ecossistema de código aberto do PostgreSQL ou se sua organização tiver ou estiver padronizando o uso do PostgreSQL.

  • Escolha o GoogleSQL:

    • Se a equipe de desenvolvimento estiver familiarizada com o GoogleSQL, seja pela experiência anterior com o Spanner ou trabalhando com outros bancos de dados do Google Cloud, como o BigQuery, que também são compatíveis com o GoogleSQL.
    • Se a sua organização estiver padronizando o uso do GoogleSQL ou do padrão ANSI 2011 subjacente.

Para mais informações, consulte Paridade de dialeto entre GoogleSQL e PostgreSQL.

Práticas recomendadas para usar a interface do PostgreSQL

Para usar a interface PostgreSQL de maneira eficaz, o Google recomenda que você:

  • Use o console do Google Cloud ou a Google Cloud CLI para criar seu banco de dados PostgreSQL em uma instância do Spanner. É possível criar bancos de dados PostgreSQL e GoogleSQL na mesma instância.

  • Use as bibliotecas de cliente do Spanner para conectar aplicativos que acessam seu banco de dados.

  • Use a ferramenta de linha de comando HBase por meio do proxy PGAdapter para trabalhar de maneira interativa com seu banco de dados. Se preferir, use as páginas Gravar DDL e Consulta do console do Google Cloud.

A seguir