Resumo do PGAdapter

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 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