A interface do PostgreSQL para o Spanner permite-lhe tirar partido da infraestrutura totalmente gerida, escalável e altamente disponível do Spanner através de ferramentas e sintaxe do PostgreSQL familiares. Esta página ajuda a compreender as capacidades e as limitações da interface do PostgreSQL.
Vantagens da interface do PostgreSQL
- Portabilidade: a interface do PostgreSQL oferece acesso à amplitude das funcionalidades do Spanner, através de esquemas, consultas e clientes compatíveis com o PostgreSQL de código aberto. Isto simplifica a mudança de uma aplicação criada no Spanner para outro ambiente PostgreSQL. Esta portabilidade oferece flexibilidade de implementação e suporta cenários de recuperação de desastres, como uma saída forçada.
- Familiaridade: se já usa o PostgreSQL, pode começar rapidamente a usar o Spanner com muitas das mesmas declarações e ferramentas do PostgreSQL. A utilização do PostgreSQL no seu portefólio de bases de dados significa menos variações entre produtos específicos e um conjunto comum de práticas recomendadas.
- Spanner sem compromissos: como é criado com base na fundação existente do Spanner, a interface PostgreSQL oferece todas as vantagens existentes de disponibilidade, consistência e desempenho/preço do Spanner sem ter de comprometer nenhuma das capacidades disponíveis no ecossistema GoogleSQL complementar.
Funcionalidades do PostgreSQL não suportadas no Spanner
É importante compreender que a interface do PostgreSQL oferece as capacidades do Spanner através de esquemas, tipos, consultas e clientes compatíveis com o PostgreSQL. Não suporta todas as funcionalidades do PostgreSQL. A migração de uma aplicação PostgreSQL existente para o Spanner, mesmo usando a interface PostgreSQL para o Spanner, requer provavelmente alguma reformulação para acomodar capacidades PostgreSQL não suportadas ou diferenças no comportamento, como a otimização de consultas ou a conceção de chaves primárias. No entanto, depois de migrados, as suas cargas de trabalho podem tirar partido da fiabilidade e das capacidades multimodelos únicas do Spanner.
A lista seguinte fornece mais informações sobre as funcionalidades do PostgreSQL suportadas e não suportadas:
- Funcionalidade do PostgreSQL suportada: a interface do PostgreSQL suporta muitas das funcionalidades do PostgreSQL mais usadas. Isto inclui partes essenciais do esquema e do sistema de tipos, muitas formas de consulta comuns, uma variedade de funções e operadores, e os aspetos principais do catálogo do sistema PostgreSQL. As aplicações podem usar muitos clientes PostgreSQL ligando-se através da implementação do Spanner do protocolo de rede do PostgreSQL.
- Algumas funcionalidades de idioma do PostgreSQL não são suportadas: as extensões, os tipos de dados definidos pelo utilizador, os procedimentos armazenados definidos pelo utilizador e outras funcionalidades não são suportados. Para ver uma lista completa, consulte o artigo A linguagem PostgreSQL no Spanner. Existem também algumas funcionalidades no PostgreSQL que se comportam de forma diferente do PostgreSQL de código aberto. Para mais informações, consulte o artigo Problemas conhecidos na interface do PostgreSQL para o Spanner.
- Spanner e plano de controlo do Spanner: as bases de dados com interfaces PostgreSQL usam o Spanner e Google Cloud ferramentas para aprovisionar, proteger, monitorizar e otimizar instâncias. O Spanner não suporta ferramentas, como o pgAdmin, para atividades administrativas.
- Suporte de protocolo de cliente e de rede: o Spanner suporta as capacidades de consulta principais do protocolo de rede do PostgreSQL através do PGAdapter, um proxy simples que é executado juntamente com a sua aplicação. Isto permite que muitos clientes do Spanner funcionem tal como estão com uma base de dados de interface do Spanner PostgreSQL, enquanto tiram partido do ponto final global e da gestão de ligações do Spanner, bem como da autenticação do IAM. Os testes de referência internos da Google mostram que o PGAdapter não adiciona nenhuma latência adicional percetível em comparação com a ligação direta aos pontos finais incorporados do Spanner.
Administração e gestão
A interface do PostgreSQL suporta a administração e a gestão das suas bases de dados do Spanner com as seguintes funcionalidades:
- Experiência unificada: aprovisione, faça a gestão e monitorize bases de dados com a interface PostgreSQL através da consola, das APIs e das ferramentas existentes do Spanner, como a Google Cloud CLI.
- Configuração flexível: configure a interface do PostgreSQL por base de dados no momento da criação. Uma única instância do Spanner pode acomodar bases de dados da interface GoogleSQL e PostgreSQL.
- Vantagens partilhadas: ambos os dialetos de base de dados partilham o mesmo motor de base de dados distribuído subjacente, o que garante uma escalabilidade, uma consistência, um desempenho e uma segurança consistentes.
Funcionalidades
A interface PostgreSQL do Spanner oferece duas funcionalidades principais que permitem a integração com o ecossistema PostgreSQL:
Suporte de dialeto 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, inclui extensões para suportar funcionalidades específicas do Spanner, como tabelas intercaladas, tempo de vida (TTL) e sugestões de consultas.
Para obter informações detalhadas sobre os elementos de linguagem PostgreSQL suportados, consulte A linguagem PostgreSQL no Spanner. Para compreender como usar as funcionalidades do Spanner com o dialeto PostgreSQL, consulte a documentação da funcionalidade específica.
Suporte do cliente PostgreSQL
O Spanner permite-lhe estabelecer ligação a bases de dados a partir de vários clientes:
Ferramentas do ecossistema PostgreSQL: pode usar ferramentas familiares, como o controlador JDBC do PostgreSQL e o controlador pgx do PostgreSQL, para ligar as suas aplicações a uma base de dados de interface do PostgreSQL. Para ver uma lista de controladores, ORMs e ferramentas suportados, consulte o artigo Controladores e ORMs do PostgreSQL.
Ferramenta de linha de comandos psql: o popular
psql
ambiente interativo é suportado, o que lhe permite executar consultas, explorar metadados e carregar dados diretamente a partir do seu terminal.PGAdapter: este proxy simples simplifica a gestão e a autenticação de ligações. Para mais detalhes, consulte a vista geral do PGAdapter.
Clientes do Spanner: o Spanner oferece clientes do Spanner de código aberto para várias linguagens de programação (Java, Go, Python, Node.js, Ruby, PHP, C#, C++), juntamente com um controlador JDBC do Spanner e um controlador para o pacote SQL do Go. Os clientes do Spanner ligam-se diretamente ao ponto final global do Spanner sem um proxy. No entanto, os clientes do Spanner não oferecem compatibilidade com clientes, ORMs ou ferramentas do PostgreSQL existentes.
Práticas recomendadas para usar a interface do PostgreSQL
Use as seguintes práticas recomendadas quando usar a interface do PostgreSQL:
- Ligue as suas aplicações: use o conjunto de ferramentas PostgreSQL suportadas para uma conetividade eficiente.
Interagir com a sua base de dados: para trabalho interativo, escolha uma das seguintes opções:
- A conhecida ferramenta de linha de comandos psql (através do proxy PGAdapter)
- A página intuitiva do Spanner Studio na Google Cloud consola
- IDEs, como o DBeaver e o Visual Studio Code, JetBrains> e IntelliJ
- O emulador do Spanner que lhe permite emular o Spanner na sua máquina local. Isto é útil durante o processo de desenvolvimento e teste.
O que se segue?
- Saiba como escolher entre o PostgreSQL e o GoogleSQL.
- Siga o início rápido para criar e interagir com uma base de dados PostgreSQL.
- Saiba mais sobre o suporte do idioma PostgreSQL do Spanner.
- Saiba mais sobre o PGAdapter.
- Saiba mais sobre o repositório do GitHub do PGAdapter.
- Reveja os problemas conhecidos na interface do PostgreSQL.