Panoramica di PGAdapter

Questa pagina fornisce una panoramica di PGAdapter. Per scoprire come avviare PGAdapter, consulta Avvio di PGAdapter.

PGAdapter è un proxy sidecar, ovvero una piccola applicazione che viene eseguita insieme all'applicazione principale per supportare le comunicazioni tra l' interfaccia PostgreSQL per Spanner e Spanner. Per le applicazioni Java puoi anche collegare PGAdapter all'applicazione direttamente senza doverla eseguire in un processo separato. PGAdapter è progettato per essere eseguito sulla stessa macchina dell'applicazione ed espone un endpoint su localhost che supporta il protocollo di comunicazione PostgreSQL. Traduce il protocollo di comunicazione PostgreSQL nel protocollo di comunicazione Spanner, gRPC. Con questo proxy in esecuzione localmente, un client PostgreSQL come psql può connettersi a un database Spanner con dialetto PostgreSQL.

PGAdapter aggiunge, al massimo, 0,2 ms di overhead di latenza. L'interfaccia PostgreSQL ha gli stessi livelli di latenza di GoogleSQL.

Il seguente diagramma mostra come psql si connette a Spanner tramite PGAdapter.

psql si connette a Spanner tramite PGAdapter

PGAdapter supporta le modalità di query di base ed estese e supporta qualsiasi tipo di dati supportato dall'interfaccia PostgreSQL per Spanner.

Ambienti di esecuzione di PGAdapter

Puoi eseguire PGAdapter utilizzando uno dei seguenti metodi:

  • Autonomo: PGAdapter viene fornito come file JAR e viene eseguito in modo autonomo nella JVM.
  • Docker. PGAdapter è pacchettizzato anche come immagine Docker.
  • Cloud Run: PGAdapter può essere implementato come proxy sidecar su Cloud Run.
  • Proxy sidecar: un utilizzo tipico come proxy sidecar è in un cluster Kubernetes.
  • In-process: il codice dell'applicazione Java può utilizzare il file JAR fornito per creare e avviare un'istanza di PGAdapter.

Per informazioni dettagliate su questi metodi, consulta Avvia PGAdapter.

Autorizzazione con PGAdapter

PGAdapter determina il account di servizio o un'altra entità IAM (Identity and Access Management) da utilizzare per la connessione esaminando le credenziali specificate al momento dell'avvio. Le autorizzazioni IAM concesse a questo utente principale determinano le autorizzazioni dell'applicazione di connessione sul database.

Quando è in uso il controllo dell'accesso granulare, puoi specificare facoltativamente un ruolo database quando avvii PGAdapter. Se specifichi un ruolo del database, PGAdapter utilizza il controllo dell'accesso granulare quando invia richieste di query e istruzioni DML. Questa operazione richiede l'autorizzazione IAM spanner.databases.useRoleBasedAccess e, per i ruoli database diversi da public, l'autorizzazione spanner.databaseRoles.use. I privilegi concessi al ruolo del database determinano le operazioni che l'applicazione di connessione può eseguire. Se non specifichi un ruolo database, vengono utilizzate le autorizzazioni a livello di database concesse all'entità IAM. Per eseguire istruzioni DDL, il principale deve disporre dell'autorizzazione spanner.databases.updateDdl.

Per ulteriori informazioni, consulta Informazioni sul controllo dell'accesso granulare e Controllo dell'accesso con IAM.

Passaggi successivi