このページでは、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
を使用します。
次のステップ
- PGAdapter について詳細を確認する。
- PGAdapter GitHub リポジトリの pgx 接続オプションの詳細を確認する。