Associe o pgx a uma base de dados de dialeto PostgreSQL

Esta página explica como ligar o controlador pgx do PostgreSQL a uma base de dados de dialeto do PostgreSQL no Spanner. pgx é um controlador Golang para PostgreSQL.

Verifique se o PGAdapter está a ser executado na mesma máquina que a aplicação que está a estabelecer ligação através do controlador pgx do PostgreSQL.

Para mais informações, consulte o artigo Inicie o PGAdapter.

  • pgx requer um nome de utilizador e uma palavra-passe na string de ligação. O PGAdapter ignora-os.
  • Por predefinição, o PGAdapter desativa o SSL. pgx por predefinição, tenta primeiro estabelecer ligação com o SSL ativado. Desativar o SSL no pedido de ligação acelera o processo de ligação, uma vez que requer menos uma viagem de ida e volta.
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)

Substitua o seguinte:

  • APPLICATION_HOST: o nome de anfitrião ou o endereço IP da máquina onde o PGAdapter está em execução. Se estiver a executar localmente, pode usar localhost.
  • PORT: o número da porta onde o PGAdapter está a ser executado. Altere isto na string de ligação se o PGAdapter estiver a ser executado numa porta personalizada. Caso contrário, use a porta predefinida, 5432.

Sockets de domínio Unix

Esta secção explica como usar sockets de domínio Unix para ligar o controlador pgx do PostgreSQL a uma base de dados de dialeto PostgreSQL. Use sockets de domínio Unix para a latência mais baixa possível.

Para usar sockets de domínio Unix, o PGAdapter tem de estar em execução no mesmo anfitrião que a aplicação 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)

Substitua o seguinte:

  • /tmp: o diretório de soquetes de domínio predefinido para o PGAdapter. Pode alterar esta definição através do argumento da linha de comandos -dir.
  • PORT: o número da porta onde o PGAdapter está a ser executado. Altere isto na string de ligação se o PGAdapter estiver a ser executado numa porta personalizada. Caso contrário, use a porta predefinida, 5432.

O que se segue?