PGAdapter traduce il protocollo di rete PostgreSQL nel protocollo gRPC di Spanner. Ti consente di connettere applicazioni e driver PostgreSQL all'interfaccia PostgreSQL di Spanner per i database Spanner con un overhead di latenza minimo.
Per scoprire come avviare PGAdapter, consulta Avviare PGAdapter.
Puoi eseguire PGAdapter come proxy sidecar insieme all'applicazione principale o, per le applicazioni Java, in-process direttamente all'interno della JVM dell'applicazione. Esposendo un endpoint su localhost che supporta il protocollo di rete PostgreSQL, PGAdapter consente a strumenti come psql di connettersi a Spanner.
PGAdapter aggiunge al massimo 0,2 ms di overhead di latenza. L'interfaccia PostgreSQL mantiene gli stessi livelli di latenza di GoogleSQL.
Il seguente diagramma mostra come psql si connette a Spanner
tramite PGAdapter.

PGAdapter supporta le modalità di query di base ed estese e qualsiasi tipo di dati supportato dall'interfaccia PostgreSQL per Spanner.
Driver e ORM supportati
PGAdapter supporta driver, ORM e strumenti client PostgreSQL standard, tra cui:
- Strumenti da riga di comando:
psql(versioni da 11 a 14) e IDE JetBrains (come DataGrip). - Java/JVM: JDBC (versione 42.x e successive), R2DBC, Hibernate e Spring Data JPA.
- Go:
pgx(versione 4.15 e successive) egorm. - Python:
psycopg2,psycopg3,SQLAlchemye Python ADBC. - Node.js:
node-postgres,Knex.js,Sequelize.js,PrismaeDrizzle. - Altre lingue:
npgsql(.NET) ePDO_PGSQL(PHP).
Per una matrice di compatibilità completa, consulta Driver e ORM PostgreSQL.
Ambienti di esecuzione di PGAdapter
Puoi eseguire PGAdapter utilizzando uno dei seguenti metodi:
- Standalone: PGAdapter viene fornito come file JAR ed è eseguito in modalità standalone nella JVM.
- Docker. PGAdapter è anche pacchettizzato come immagine Docker.
- Cloud Run: PGAdapter può essere sottoposto a deployment 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 i dettagli su questi metodi, consulta Avviare PGAdapter.
Autorizzazione con PGAdapter
PGAdapter determina il account di servizio o un'altra entità Identity and Access Management (IAM) per la connessione esaminando le credenziali che specifichi quando avvii il proxy. Le autorizzazioni IAM concesse a questa entità determinano le operazioni di database consentite.
Quando utilizzi il controllo dell'accesso granulare, specifica un ruolo di database quando avvii PGAdapter. PGAdapter utilizza il controllo dell'accesso granulare quando invia query e istruzioni DML, che richiedono l'autorizzazione IAM spanner.databases.useRoleBasedAccess. Per i ruoli di database diversi da public, l'entità deve disporre anche dell'autorizzazione spanner.databaseRoles.use. I privilegi concessi al ruolo di database determinano le operazioni che l'applicazione di connessione può eseguire. Se non specifichi un ruolo di database, vengono applicate le autorizzazioni concesse all'entità IAM. Per eseguire istruzioni DDL, l'entità 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
- Avviare PGAdapter
- Scopri di più sul repository GitHub di PGAdapter.
- Scopri di più sui driver e sugli ORM PostgreSQL per una tabella di driver e ORM PostgreSQL supportati da PGAdapter.