Vous pouvez utiliser le pilote JDBC PostgreSQL ou le pilote JDBC Spanner avec une base de données Spanner utilisant le dialecte PostgreSQL. Cette page explique comment vous connecter à votre base de données avec ces pilotes.
Pilote JDBC PostgreSQL
Cette section explique comment connecter le pilote JDBC PostgreSQL à une base de données avec dialecte PostgreSQL dans Spanner. JDBC est le pilote Java standard pour PostgreSQL.
Si vous utilisez le pilote PostgreSQL JDBC, vous devez utiliser PGAdapter pour traduire entre le protocole réseau PostgreSQL et le protocole réseau Spanner. Vous pouvez ajouter PGAdapter en tant que dépendance et l'exécuter en cours de traitement avec votre application.
- Ajoutez PGAdapter et le pilote JDBC PostgreSQL en tant que dépendances à votre application.
- Démarrez PGAdapter en cours de traitement avec votre application.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
Remplacez les éléments suivants :
- PORT : numéro de port sur lequel PGAdapter est en cours d'exécution. Définissez la valeur sur
5432
dans la plupart des cas ou sur0
pour utiliser un port attribué de manière dynamique.
- PORT : numéro de port sur lequel PGAdapter est en cours d'exécution. Définissez la valeur sur
- Assurez-vous que le pilote JDBC PostgreSQL est chargé.
Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection("jdbc:postgresql://APPLICATION_HOST:PORT/DATABASE_NAME")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf( "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }Remplacez les éléments suivants :
- APPLICATION_HOST : nom d'hôte ou adresse IP de la machine sur laquelle PGAdapter est exécuté. Si vous exécutez le code en local, utilisez
localhost
.
Le dépôt GitHub PGAdapter contient un exemple d'application.
- APPLICATION_HOST : nom d'hôte ou adresse IP de la machine sur laquelle PGAdapter est exécuté. Si vous exécutez le code en local, utilisez
Sockets de domaine Unix
Cette section explique comment utiliser les sockets de domaine Unix pour connecter le pilote JDBC PostgreSQL à une base de données de dialecte PostgreSQL. Utilisez des sockets de domaine Unix pour obtenir la latence la plus faible possible.
Pour utiliser des sockets de domaine Unix, PGAdapter doit être exécuté sur le même hôte que l'application cliente.
// Make sure the PG JDBC driver is loaded. Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection("jdbc:postgresql://APPLICATION_HOST/DATABASE_NAME" + "?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg" + "&socketFactoryArg=DIRECTORY_NAME.s.PGSQL.PORT")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf("Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }
Remplacez les éléments suivants :
- APPLICATION_HOST : nom d'hôte ou adresse IP de la machine sur laquelle PGAdapter est exécuté. Si vous exécutez le code en local, utilisez
localhost
.
argument de ligne de commande. Par exemple, - PORT : numéro de port sur lequel PGAdapter est exécuté. Modifiez cette valeur dans la chaîne de connexion si PGAdapter s'exécute sur un port personnalisé. Sinon, utilisez le port par défaut,
5432
.
/tmp
.
Pilote JDBC Spanner
Cette section explique comment utiliser le pilote JDBC Spanner pour se connecter à une base de données avec le dialecte PostgreSQL.
- Ajoutez le pilote JDBC Spanner en tant que dépendance à votre application.
- Utilisez une URL de connexion JDBC Spanner pour vous connecter à la base de données avec dialecte PostgreSQL.
// Make sure the PostgreSQL JDBC driver is loaded. Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection( "jdbc:cloudspanner:/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf( "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }Le pilote détecte automatiquement le dialecte SQL de la base de données spécifiée. Un paramètre de dialecte n'est pas requis dans l'URL de connexion.
Étapes suivantes
- En savoir plus sur PGAdapter.
- Pour en savoir plus sur les options de connexion du pilote JDBC PostgreSQL, consultez PGAdapter : options de connexion JDBC dans le dépôt GitHub PGAdapter.