Visão geral do PGAdapter

Esta página fornece uma visão geral do PGAdapter. Para saber como iniciar o PGAdapter, consulte Como iniciar o PGAdapter.

O PGAdapter é um proxy sidecar, que é um pequeno aplicativo que executa junto com o seu aplicativo principal para dar suporte às comunicações entre o Interface PostgreSQL para Spanner e Spanner. Para aplicativos Java, você pode até mesmo vincular o PGAdapter ao aplicativo diretamente, sem precisar executá-lo em um processo separado. O PGAdapter foi projetado para ser executado na mesma máquina que o aplicativo e expõe um endpoint no localhost que suporta o protocolo de transmissão do PostgreSQL. Ele converte o protocolo de transmissão do PostgreSQL no protocolo de transmissão do Spanner, o gRPC. Com esse proxy em execução localmente, um cliente PostgreSQL, como psql, pode se conectar a um banco de dados do Spanner com 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 a seguir mostra como psql se conecta ao Spanner por meio PGAdapter.

O psql se conecta ao Spanner por meio do PGAdapter

O PGAdapter oferece suporte a modos de consulta básicos e estendidos e qualquer tipo de dados aceito pela interface do PostgreSQL para o Spanner.

Ambientes de execução do PGAdapter

É possível executar o PGAdapter usando um dos seguintes métodos:

  • Independente: o PGAdapter é fornecido como um arquivo JAR e executado. autônomo na JVM.
  • Docker O PGAdapter também é empacotado como uma imagem do Docker.
  • Cloud Run: o PGAdapter pode ser implantado como um proxy sidecar no Cloud Run.
  • Proxy sidecar: um uso comum como proxy sidecar é em um ambiente do Kubernetes aglomerado.
  • Em processo: o código do seu aplicativo Java pode usar o arquivo JAR fornecido para crie e inicie uma instância do PGAdapter.

Para obter detalhes sobre esses métodos, consulte Inicie o PGAdapter.

Autorização com PGAdapter

O PGAdapter determina a conta de serviço ou outro principal do Identity and Access Management (IAM) a ser usado para a conexão examinando as credenciais especificadas ao iniciá-lo. As permissões do IAM concedidas a esse participante determinam as permissões que o aplicativo de conexão tem no banco de dados.

Quando um controle de acesso refinado está em uso, é possível especificar uma de banco de dados ao iniciar o PGAdapter. Se você especificar um papel de banco de dados, o PGAdapter usa um controle de acesso refinado ao enviar solicitações de consultas e instruções DML. Isso requer a permissão do IAM spanner.databases.useRoleBasedAccess e, para papéis de banco de dados diferentes public, a permissão spanner.databaseRoles.use. Os privilégios concedidos a o papel de banco de dados determina as operações que o aplicativo de conexão pode executar. Se você não especificar um papel de banco de dados, os papéis do banco de dados as permissões concedidas à equipe do IAM principal são usados. Para executar instruções DDL, o principal precisa ter a permissão spanner.databases.updateDdl.

Saiba mais em Sobre o controle de acesso detalhado e Controle de acesso com o IAM.

A seguir