Auf dieser Seite wird erläutert, wie Sie den PostgreSQL-pgx-Treiber mit einer Datenbank im 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
pgxsind ein Nutzername und ein Passwort im Verbindungsstring erforderlich. PGAdapter ignoriert diese. - Standardmäßig wird SSL von PGAdapter deaktiviert.
pgxversucht 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
localhostverwenden. - PORT: Die Portnummer, auf 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 im 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
-dirgeändert werden. - PORT: Die Portnummer, auf 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 PGAdapter-GitHub-Repository.
- Übersicht über die für Spanner unterstützten Treiber und ORMs