pgx の PostgreSQL 言語データベースへの接続

このページでは、PostgreSQL pgx ドライバを Spanner の PostgreSQL 言語データベースに接続する方法について説明します。pgx は、PostgreSQL 用の Golang ドライバです。

PostgreSQL pgx ドライバを使用して接続しているアプリケーションと同じマシンで PGAdapter が実行されていることを確認します。

詳細については、PGAdapter を起動するをご覧ください。

  • pgx では、接続文字列にユーザー名とパスワードを含める必要があります。PGAdapter ではこれらが無視されます。
  • デフォルトでは、PGAdapter は SSL を無効にします。pgx は、デフォルトではまず SSL を有効にして接続を試みます。接続リクエストで SSL を無効にすると、必要となる往復が 1 回減るため、接続プロセスが高速化されます。
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)

次のように置き換えます。

  • APPLICATION_HOST: PGAdapter が実行されているマシンのホスト名または IP アドレス。ローカルで実行している場合は、localhost を使用できます。
  • PORT: PGAdapter が実行されているポート番号。PGAdapter がカスタムポートで実行されている場合は、接続文字列でこれを変更します。それ以外の場合は、デフォルト ポート 5432 を使用します。

Unix ドメイン ソケット

このセクションでは、Unix ドメイン ソケットを使用して PostgreSQL pgx ドライバを PostgreSQL 言語データベースに接続する方法について説明します。レイテンシを最小限に抑えるには、Unix ドメイン ソケットを使用します。

Unix ドメイン ソケットを使用するには、PGAdapter がクライアント アプリケーションと同じホストで実行されている必要があります。

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)

次のように置き換えます。

  • /tmp: PGAdapter のデフォルトのドメイン ソケット ディレクトリ。これは、-dir コマンドライン引数を使用して変更できます。
  • PORT: PGAdapter が実行されているポート番号。PGAdapter がカスタムポートで実行されている場合は、接続文字列でこれを変更します。それ以外の場合は、デフォルト ポート 5432 を使用します。

次のステップ