Auf dieser Seite wird erläutert, wie Sie den PostgreSQL-pgx-Treiber mit einer Datenbank mit PostgreSQL-Dialekt in Spanner verbinden. pgx
ist ein Golang-Treiber für PostgreSQL.
Prüfen Sie, ob PGAdapter auf demselben Computer wie die Anwendung ausgeführt wird, die eine Verbindung mit dem PostgreSQL-pgx-Treiber herstellt.
Weitere Informationen finden Sie unter PGAdapter starten.
- Für
pgx
sind ein Nutzername und ein Passwort im Verbindungsstring erforderlich. PGAdapter ignoriert diese. - Standardmäßig deaktiviert PGAdapter SSL.
pgx
versucht standardmäßig zuerst, eine Verbindung mit aktivierter SSL-Verschlüsselung herzustellen. Wenn Sie SSL in der Verbindungsanfrage deaktivieren, wird der Verbindungsvorgang beschleunigt, da ein Roundtrip weniger erforderlich ist.
connString := "postgres://uid:pwd@APPLICATION_HOST:PORT/DATABASE_NAME?sslmode=disable"
ctx := context.Background()
conn, err := pgx.Connect(ctx, connString)
if err != nil {
return err
}
defer conn.Close(ctx)
var greeting string
err = conn.QueryRow(ctx, "select 'Hello world!' as hello").Scan(&greeting)
if err != nil {
return err
}
fmt.Printf("Greeting from Cloud Spanner PostgreSQL: %v\n", greeting)
Ersetzen Sie Folgendes:
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Bei einer lokalen Ausführung können Sie
localhost
verwenden. - PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport
5432
.
Unix Domain Sockets
In diesem Abschnitt wird beschrieben, wie Sie Unix-Domain-Sockets verwenden, um den PostgreSQL-pgx-Treiber mit einer Datenbank mit PostgreSQL-Dialekt zu verbinden. Verwenden Sie Unix-Domain-Sockets, um die Latenz so gering wie möglich zu halten.
Wenn Sie Unix-Domain-Sockets verwenden möchten, muss PGAdapter auf demselben Host wie die Clientanwendung ausgeführt werden.
connString := "host=/tmp port=PORT database=DATABASE_NAME"
ctx := context.Background()
conn, err := pgx.Connect(ctx, connString)
if err != nil {
return err
}
defer conn.Close(ctx)
var greeting string
err = conn.QueryRow(ctx, "select 'Hello world!' as hello").Scan(&greeting)
if err != nil {
return err
}
fmt.Printf("Greeting from Cloud Spanner PostgreSQL: %v\n", greeting)
Ersetzen Sie Folgendes:
- /tmp: Das Standardverzeichnis für Domain-Sockets für PGAdapter. Dies kann mit dem Befehlszeilenargument
-dir
geändert werden. - PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport
5432
.
Nächste Schritte
- Weitere Informationen zu PGAdapter.
- Weitere Informationen zu pgx-Verbindungsoptionen finden Sie im GitHub-Repository für PGAdapter.