Esta página fornece um resumo do PGAdapter. Para saber como iniciar o PGAdapter, consulte Como iniciar o PGAdapter.
O PGAdapter é um proxy sidecar, um pequeno aplicativo executado
com o aplicativo principal, para oferecer suporte às comunicações entre a
interface PostgreSQL para Spanner e o Spanner.
Para aplicativos Java, é possível até mesmo vincular o PGAdapter diretamente ao aplicativo
sem precisar executá-lo em um processo separado. O PGAdapter foi
desenvolvido para ser executado na mesma máquina que o aplicativo e expõe um
endpoint no localhost compatível com 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 PostgreSQL tem os mesmos níveis de latência do GoogleSQL.
O diagrama a seguir mostra como psql se conecta ao Spanner por meio do
PGAdapter.

O PGAdapter é compatível com os modos de consulta básica e estendida e qualquer tipo de dados compatível com a interface PostgreSQL para Spanner.
Ambientes de execução do PGAdapter
É possível executar o PGAdapter com 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 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 cluster do Kubernetes.
- No processo: o código do aplicativo Java pode usar o arquivo JAR fornecido para criar e iniciar uma instância do PGAdapter.
Para saber mais sobre esses métodos, consulte Iniciar o 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 na conexão ao examinar as credenciais especificadas ao iniciar. As permissões do IAM concedidas a esse principal determinam as permissões que o aplicativo de conexão tem no banco de dados.
Quando o controle de acesso minucioso 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á o controle de acesso minucioso 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 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 o controle de acesso minucioso e Controle de acesso com o IAM.
A seguir
- Iniciar o PGAdapter
- Saiba mais sobre o repositório do PGAdapter no GitHub.
- Saiba mais sobre drivers e ORMs do PostgreSQL para conferir uma tabela de drivers e ORMs do PostgreSQL compatíveis com o PGAdapter.