En esta página, se explica cómo conectar el controlador pgx de PostgreSQL a una base de datos de dialecto de PostgreSQL en Spanner. pgx
es un controlador de Golang para PostgreSQL.
Verifica que PGAdapter se ejecute en la misma máquina que la aplicación que se conecta con el controlador pgx de PostgreSQL.
Para obtener más información, consulta Cómo iniciar PGAdapter.
pgx
requiere un nombre de usuario y una contraseña en el string de conexión. PGAdapter los ignora.- De forma predeterminada, PGAdapter inhabilita SSL.
pgx
intenta conectarse de forma predeterminada primero con SSL habilitado. Inhabilitar SSL en la solicitud de conexión acelera el proceso de conexión, ya que requiere un viaje de ida y vuelta menos.
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)
Reemplaza lo siguiente:
- APPLICATION_HOST: Es el nombre de host o la dirección IP de la máquina en la que se ejecuta PGAdapter. Si ejecutas el código de forma local, puedes usar
localhost
. - PORT: Es el número de puerto en el que se ejecuta PGAdapter. Cambia esto en la cadena de conexión si PGAdapter se ejecuta en un puerto personalizado. De lo contrario, usa el puerto predeterminado,
5432
.
Sockets de dominio Unix
En esta sección, se explica cómo usar sockets de dominio de Unix para conectar el controlador pgx de PostgreSQL a una base de datos de dialecto de PostgreSQL. Usa sockets de dominio Unix para obtener la menor latencia posible.
Para usar sockets de dominio Unix, PGAdapter debe ejecutarse en el mismo host que la aplicación cliente.
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)
Reemplaza lo siguiente:
- /tmp: Es el directorio de sockets de dominio predeterminado para PGAdapter. Esto se puede cambiar con el argumento de línea de comandos
-dir
. - PORT: Es el número de puerto en el que se ejecuta PGAdapter. Cambia esto en la cadena de conexión si PGAdapter se ejecuta en un puerto personalizado. De lo contrario, usa el puerto predeterminado,
5432
.
¿Qué sigue?
- Obtén más información sobre PGAdapter.
- Obtén más información sobre las opciones de conexión de pgx en el repositorio de GitHub de PGAdapter.