PGAdapter übersetzt das PostgreSQL-Wire-Protokoll in das Spanner-gRPC-Protokoll. So können Sie PostgreSQL-Anwendungen und -Treiber mit minimalem Latenzaufwand mit der PostgreSQL-Schnittstelle von Spanner für Spanner-Datenbanken verbinden.
Informationen zum Starten von PGAdapter finden Sie unter PGAdapter starten.
Sie können PGAdapter als Sidecar-Proxy neben Ihrer Hauptanwendung oder für Java-Anwendungen direkt in der JVM der Anwendung ausführen. Durch die Bereitstellung eines Endpunkts auf „localhost“, der das PostgreSQL-Wire-Protokoll unterstützt, ermöglicht PGAdapter Tools wie psql, eine Verbindung zu Spanner herzustellen.
PGAdapter verursacht eine zusätzliche Latenz von maximal 0,2 ms. Die PostgreSQL-Schnittstelle hat die gleichen Latenzwerte wie GoogleSQL.
Das folgende Diagramm zeigt, wie psql eine Verbindung zu Spanner
über PGAdapter herstellt.

PGAdapter unterstützt einfache und erweiterte Abfragemodi sowie alle Datentypen, die von der PostgreSQL-Schnittstelle für Spanner unterstützt werden.
Unterstützte Treiber und ORMs
PGAdapter unterstützt Standard-PostgreSQL-Treiber, ORMs und Client-Tools, darunter:
- Befehlszeilentools:
psql(Versionen 11 bis 14) und JetBrains-IDEs (z. B. DataGrip) - Java/JVM: JDBC (Version 42.x und höher), R2DBC, Hibernate und Spring Data JPA
- Go:
pgx(Version 4.15 und höher) undgorm. - Python:
psycopg2,psycopg3,SQLAlchemyund Python ADBC - Node.js:
node-postgres,Knex.js,Sequelize.js,PrismaundDrizzle. - Andere Sprachen:
npgsql(.NET) undPDO_PGSQL(PHP).
Eine vollständige Kompatibilitätsmatrix finden Sie unter PostgreSQL-Treiber und -ORMs.
PGAdapter-Ausführungsumgebungen
Sie können PGAdapter mit einer der folgenden Methoden ausführen:
- Eigenständig: PGAdapter wird als JAR-Datei bereitgestellt und wird eigenständig in der JVM ausgeführt.
- Docker PGAdapter ist auch in ein Docker-Image gepackt.
- Cloud Run: PGAdapter kann als Sidecar-Proxy in Cloud Run bereitgestellt werden.
- Sidecar-Proxy: Eine typische Verwendung als Sidecar-Proxy ist in einem Kubernetes Cluster.
- In-Process: Ihr Java-Anwendungscode kann die bereitgestellte JAR-Datei verwenden, um eine PGAdapter-Instanz zu erstellen und zu starten.
Weitere Informationen zu diesen Methoden finden Sie unter PGAdapter starten.
Autorisierung mit PGAdapter
PGAdapter ermittelt das Dienstkonto oder ein anderes IAM-Hauptkonto (Identity and Access Management) für die Verbindung, indem die Anmeldedaten geprüft werden, die Sie beim Starten des Proxys angeben. Die diesem Hauptkonto gewährten IAM-Berechtigungen bestimmen die zulässigen Datenbankvorgänge.
Wenn Sie die detaillierte Zugriffssteuerung verwenden, geben Sie beim Starten von PGAdapter eine Datenbankrolle an. PGAdapter verwendet die detaillierte Zugriffssteuerung beim Senden von Abfragen und DML-Anweisungen. Dazu ist die IAM-Berechtigung spanner.databases.useRoleBasedAccess erforderlich. Für andere Datenbankrollen als public benötigt das Hauptkonto auch die Berechtigung spanner.databaseRoles.use. Die der Datenbankrolle gewährten Berechtigungen bestimmen die Vorgänge, die die verbindende Anwendung ausführen kann. Wenn Sie keine Datenbankrolle angeben, gelten die dem IAM-Hauptkonto gewährten Berechtigungen. Zum Ausführen von DDL-Anweisungen muss das Hauptkonto die Berechtigung spanner.databases.updateDdl haben.
Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung und Zugriffssteuerung mit IAM.
Nächste Schritte
- PGAdapter starten
- Weitere Informationen zum PGAdapter-GitHub-Repository.
- Weitere Informationen zu PostgreSQL-Treibern und -ORMs finden Sie in der Tabelle der PostgreSQL-Treiber und -ORMs, die von PGAdapter unterstützt werden.