Interface PostgreSQL para o Spanner

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

A interface PostgreSQL torna os recursos Spanner: totalmente gerenciado, escala ilimitada, consistência forte, alto desempenho e até 99,999% de disponibilidade global, acessíveis de ecossistema de código aberto PostgreSQL. Ela inclui um subconjunto central o dialeto SQL do PostgreSQL, o suporte à ferramenta de linha de comando psql, os clientes de linguagem grandes e integração com as ferramentas atuais do Google, como o Dataflow. Ao contrário de outros serviços que gerenciam instâncias de banco de dados PostgreSQL reais, o Spanner usa uma sintaxe compatível com o PostgreSQL para expor os recursos de escalonamento existentes. Isso oferece familiaridade aos desenvolvedores e portabilidade para aplicativos, mas não oferece compatibilidade total com o PostgreSQL. Os aplicativos atuais que dependem de recursos do PostgreSQL, como procedimentos armazenados, acionadores, extensões ou níveis de isolamento configuráveis, vão precisar ser retrabalhados para serem executados no Spanner. No entanto, a sintaxe SQL que O Spanner dá suporte ao PostgreSQL semanticamente equivalente, ou seja, esquemas e consultas escritos na interface PostgreSQL podem ser facilmente transferidos para outro ambiente PostgreSQL.

A interface do PostgreSQL oferece suporte à sintaxe comum do SQL do PostgreSQL, incluindo consultas, funções e operadores. Além disso, ele oferece suporte a muitos tipos de dados, sintaxe DDL e visualizações de esquemas de informações. Os aplicativos podem se conectar Banco de dados do Spanner com a interface PostgreSQL ativada usando clientes nativos do Spanner, ou PGAdapter, uma proxy leve que implementa o protocolo aberto PostgreSQL. Inicialmente, o suporte ao protocolo de conexão é destinado ao uso com a ferramenta de linha de comando psql.

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

Componentes da interface do PostgreSQL

A interface do PostgreSQL consiste em dois recursos principais: suporte ao dialeto SQL do PostgreSQL e suporte a clientes que se conectam a bancos de dados da interface PostgreSQL ativada.

Suporte a dialeto SQL do PostgreSQL

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

Suporte ao cliente PostgreSQL

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

A interface do PostgreSQL também oferece suporte à ferramenta de linha de comando psql. O psql é um ambiente interativo para executar consultas, analisar metadados e carregar dados, comum em muitos ambientes do PostgreSQL. O suporte a psql é ativado pelo PGAdapter, um proxy leve que converte o protocolo de cabo do PostgreSQL na interface gRPC integrada do Spanner, gerenciando conexões e a autenticação do IAM para você. Para Para mais informações, consulte Visão geral do PGAdapter.

O driver JDBC do PostgreSQL e driver PostgreSQL pgx Os drivers também são compatíveis com PGAdapter. Para conferir uma lista completa de drivers do PostgreSQL compatíveis, consulte Drivers e ORMs do PostgreSQL.

Escolher entre o GoogleSQL e o PostgreSQL

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

O fator decisivo ao escolher usar o GoogleSQL ou o PostgreSQL em um determinado aplicativo ou projeto deve ser a necessidade e as metas de negócios, e não o suporte de linguagem SQL para recursos do Spanner. Os dialetos de 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.
  • Ambos expressam recursos do Spanner usando um subconjunto suas respectivas construções de linguagem padrão (a norma ANSI 2001, padrão PostgreSQL de código aberto para o outro), com extensões adicionados para dar suporte aos recursos do Spanner, como tabelas intercaladas e dicas de consulta.
  • Para ambos, você usa o sistema de gerenciamento do Google Cloud: o console do Google Cloud, a CLI gcloud e bibliotecas de cliente do Spanner para automação de DevOps.
  • Em ambos os casos, você usa as interfaces de desenvolvimento de aplicativos do Spanner: as bibliotecas de cliente do Spanner, as APIs REST e RPC.
  • Em ambos os casos, você usa os esquemas de sistema INFORMATION_SCHEMA e SPANNER_SYS do Spanner para consultar metadados e estatísticas do banco de dados.

A interface PostgreSQL atual não atinge paridade entre os dialetos GoogleSQL e PostgreSQL. No entanto, em longo prazo, é preciso determinar se é necessário usar o PostgreSQL ou o GoogleSQL para um determinado aplicativo ou projeto da seguinte maneira:

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

  • Escolha o GoogleSQL:

    • Se a equipe de desenvolvimento tem familiaridade com o GoogleSQL, de experiência anterior com o Spanner ou usando outro serviço do Google Cloud bancos de dados como BigQuery, que também têm suporte ao GoogleSQL.
    • Se sua organização está padronizando o uso de GoogleSQL ou o padrão ANSI 2011 dele.

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

Práticas recomendadas para usar a interface do PostgreSQL

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

  • Use o console 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 psql pelo proxy PGAdapter para funcionar interativamente com seu banco de dados. Como alternativa, use o Página Spanner Studio no console do Google Cloud.

A seguir