Puoi utilizzare il driver JDBC PostgreSQL o il driver JDBC Spanner con un database di dialetti PostgreSQL di Spanner. Questa pagina spiega come connetterti al database con questi driver.
Driver JDBC PostgreSQL
Questa sezione spiega come connettere il driver JDBC PostgreSQL a un database di dialetti PostgreSQL in Spanner. JDBC è il driver Java standard per PostgreSQL.
Se utilizzi il driver JDBC PostgreSQL, devi utilizzare PGAdapter per la conversione tra il protocollo di rete PostgreSQL e il protocollo di rete Spanner. Puoi aggiungere PGAdapter come dipendenza ed eseguirlo in-process con la tua applicazione.
- Aggiungi PGAdapter e il driver JDBC PostgreSQL come dipendenze
alla tua applicazione.
- Avvia PGAdapter in-process con la tua applicazione.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
Sostituisci quanto segue:
- PORT: il numero di porta su cui è in esecuzione PGAdapter. Nella maggior parte dei casi, imposta su
5432o0per utilizzare una porta assegnata dinamicamente.
- PORT: il numero di porta su cui è in esecuzione PGAdapter. Nella maggior parte dei casi, imposta su
- Assicurati che il driver JDBC PostgreSQL sia caricato.
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)); } } }Sostituisci quanto segue:
- APPLICATION_HOST: il nome host o l'indirizzo IP della macchina su cui è in esecuzione PGAdapter. Se esegui localmente,
utilizza
localhost.
Il repository GitHub di PGAdapter contiene un 'applicazione di esempio.
- APPLICATION_HOST: il nome host o l'indirizzo IP della macchina su cui è in esecuzione PGAdapter. Se esegui localmente,
utilizza
Socket di dominio Unix
Questa sezione spiega come utilizzare i socket di dominio Unix per connettere il driver JDBC PostgreSQL a un database di dialetti PostgreSQL. Utilizza i socket di dominio Unix per la latenza più bassa possibile.
Per utilizzare i socket di dominio Unix, PGAdapter deve essere in esecuzione sullo stesso host dell'applicazione client.
// 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)); } } }
Sostituisci quanto segue:
- APPLICATION_HOST: il nome host o l'indirizzo IP della macchina su cui è in esecuzione PGAdapter. Se esegui localmente,
utilizza
localhost.
argomento della riga di comando. Ad esempio, - PORT: il numero di porta su cui è in esecuzione PGAdapter. Se PGAdapter è
in esecuzione su una porta personalizzata, modifica questa impostazione nella stringa di connessione. In caso contrario, utilizza la porta predefinita,
5432.
/tmp.
Driver JDBC Spanner
Questa sezione spiega come utilizzare il driver JDBC Spanner per connetterti a un database di dialetti PostgreSQL.
- Aggiungi il driver JDBC Spanner come dipendenza alla tua applicazione.
- Utilizza un URL di connessione JDBC Spanner per connetterti al
database di dialetti 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)); } } }Il driver rileva automaticamente il dialetto SQL del database specificato. Non è necessario un parametro di dialetto nell'URL di connessione.
Passaggi successivi
- Scopri di più su PGAdapter.
- Per saperne di più sulle opzioni di connessione del driver JDBC PostgreSQL, consulta Opzioni di connessione JDBC di PGAdapter nel repository GitHub di PGAdapter.
- Consulta una panoramica dei driver e degli ORM supportati per Spanner.