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 secundário compatível com a interface PostgreSQL para o Spanner. Ele é executado na mesma máquina que o aplicativo e expõe um endpoint no localhost que oferece suporte ao protocolo de transferência do PostgreSQL. Ele converte o protocolo de fio do PostgreSQL em o protocolo de rede do Spanner, gRPC. Com esse proxy em execução local, um cliente PostgreSQL como psql pode se conectar a um banco de dados PostgreSQL do Spanner.

O diagrama a seguir mostra como o psql se conecta ao Spanner usando o PGAdapter.

O psql se conecta ao Spanner pelo PGAdapter

O PGAdapter é compatível com os modos de consulta simples e estendido e com qualquer tipo de dados aceito pela interface 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 de forma independente na JVM.
  • Docker O PGAdapter também é empacotado como uma imagem do Docker.
  • Pelo Cloud Run O PGAdapter pode ser implantado como um proxy de arquivo secundário no Cloud Run.
  • Proxy sidecar. Um uso típico como um proxy secundário é um cluster do Kubernetes.
  • Em processamento. O código do aplicativo Java pode usar o arquivo JAR fornecido para criar e iniciar uma instância de PGAdapter.

Para mais detalhes sobre esses métodos, consulte Iniciar PGAdapter.

Autorização com o 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 que você especifica ao iniciá-la. As permissões do IAM concedidas a esse principal determinam as permissões que o aplicativo conectado tem no banco de dados.

Quando o controle de acesso detalhado está em uso, é possível especificar um papel de banco de dados ao iniciar o PGAdapter. Se você especificar um papel de banco de dados, o PGAdapter usará um controle de acesso detalhado quando 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 de public, a permissão spanner.databaseRoles.use. Os privilégios concedidos ao papel de banco de dados determinam as operações que o aplicativo conectado pode realizar. Se você não especificar um papel de banco de dados, serão usadas as permissões no nível do banco de dados concedidas ao principal do IAM. Para executar instruções DDL, o principal precisa ter a permissão spanner.databases.updateDdl.

Para mais informações, consulte Sobre controle de acesso detalhado e Controle de acesso com o IAM.

A seguir