Vista geral do PGAdapter

Esta página fornece uma vista geral do PGAdapter. Para saber como iniciar o PGAdapter, consulte o artigo Iniciar o PGAdapter.

O PGAdapter é um proxy sidecar, que é uma pequena aplicação executada juntamente com a sua aplicação principal para suportar as comunicações entre a interface PostgreSQL para o Spanner e o Spanner. Para aplicações Java, pode até associar o PGAdapter diretamente à aplicação sem ter de o executar num processo separado. O PGAdapter foi concebido para ser executado na mesma máquina que a aplicação e expõe um ponto final no localhost que suporta o protocolo de rede do PostgreSQL. Traduz o protocolo de rede do PostgreSQL no protocolo de rede do Spanner, o gRPC. Com este proxy em execução localmente, um cliente PostgreSQL, como o psql, pode ligar-se a uma base de dados do Spanner no dialeto PostgreSQL.

O PGAdapter adiciona, no máximo, 0,2 ms de sobrecarga de latência. A interface do PostgreSQL tem os mesmos níveis de latência que o GoogleSQL.

O diagrama seguinte mostra como o psql se liga ao Spanner através do PGAdapter.

O psql liga-se ao Spanner através do PGAdapter

O PGAdapter suporta modos de consulta básicos e alargados, e suporta qualquer tipo de dados que a interface PostgreSQL para o Spanner suporte.

Ambientes de execução do PGAdapter

Pode executar o PGAdapter através de um dos seguintes métodos:

  • Autónomo: o PGAdapter é fornecido como um ficheiro JAR e é executado autonomamente na JVM.
  • Docker. O PGAdapter também é fornecido como uma imagem do Docker.
  • Cloud Run: o PGAdapter pode ser implementado como um proxy sidecar no Cloud Run.
  • Proxy complementar: uma utilização típica como proxy complementar é num cluster do Kubernetes.
  • No processo: o código da aplicação Java pode usar o ficheiro JAR fornecido para criar e iniciar uma instância do PGAdapter.

Para ver detalhes sobre estes métodos, consulte o artigo Inicie o PGAdapter.

Autorização com o PGAdapter

O PGAdapter determina a conta de serviço ou outro principal de gestão de identidade e acesso (IAM) a usar para a ligação examinando as credenciais que especifica quando o inicia. As autorizações do IAM concedidas a esse principal determinam as autorizações que a aplicação de ligação tem na base de dados.

Quando o controlo de acesso detalhado está em utilização, pode especificar opcionalmente uma função de base de dados quando inicia o PGAdapter. Se especificar uma função de base de dados, o PGAdapter usa o controlo de acesso detalhado quando envia pedidos de consultas e declarações DML. Isto requer a autorização de IAM spanner.databases.useRoleBasedAccess e, para funções de base de dados que não sejam public, a autorização spanner.databaseRoles.use. Os privilégios concedidos à função de base de dados determinam as operações que a aplicação de ligação pode realizar. Se não especificar uma função de base de dados, são usadas as autorizações ao nível da base de dados concedidas ao principal do IAM. Para executar declarações de LDD, o principal tem de ter a autorização spanner.databases.updateDdl.

Para mais informações, consulte os artigos Acerca do controlo de acesso detalhado e Controlo de acesso com a IAM.

O que se segue?