Sie können entweder den PostgreSQL-JDBC-Treiber oder den Cloud Spanner-JDBC-Treiber mit einer Cloud Spanner-Datenbank im PostgreSQL-Dialekt verwenden. Auf dieser Seite wird erläutert, wie Sie mit diesen Treibern eine Verbindung zu Ihrer Datenbank herstellen.
PostgreSQL-JDBC-Treiber
In diesem Abschnitt wird erläutert, wie Sie den PostgreSQL-JDBC-Treiber mit einer Datenbank im PostgreSQL-Dialekt in Cloud Spanner verbinden. JDBC ist der Standard-Java-Treiber für PostgreSQL.
Wenn Sie den PostgreSQL-JDBC-Treiber verwenden, müssen Sie PGAdapter verwenden, um zwischen dem PostgreSQL-Netzwerkprotokoll und dem Cloud Spanner-Netzwerkprotokoll zu übersetzen. Sie können PGAdapter als Abhängigkeit hinzufügen und es im selben Prozess wie Ihre Anwendung ausführen.
- Fügen Sie PGAdapter und den PostgreSQL-JDBC-Treiber als Abhängigkeiten
zu Ihrer Anwendung hinzu.
- Starten Sie PGAdapter im selben Prozess wie Ihre Anwendung.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
Ersetzen Sie Folgendes:
- PORT: die Portnummer, auf der PGAdapter ausgeführt wird. Setzen Sie sie in den meisten Fällen auf
5432oder auf0, um einen dynamisch zugewiesenen Port zu verwenden.
- PORT: die Portnummer, auf der PGAdapter ausgeführt wird. Setzen Sie sie in den meisten Fällen auf
- Achten Sie darauf, dass der PostgreSQL-JDBC-Treiber geladen ist.
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)); } } }Ersetzen Sie Folgendes:
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Wenn Sie ihn lokal ausführen,
verwenden Sie
localhost.
Das PGAdapter-GitHub-Repository enthält eine Beispielanwendung.
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Wenn Sie ihn lokal ausführen,
verwenden Sie
Unix Domain Sockets
In diesem Abschnitt wird erläutert, wie Sie Unix Domain Sockets verwenden, um den PostgreSQL-JDBC-Treiber mit einer Datenbank im PostgreSQL-Dialekt zu verbinden. Verwenden Sie Unix Domain Sockets, um die niedrigstmögliche Latenz zu erzielen.
Wenn Sie Unix Domain Sockets verwenden möchten, muss PGAdapter auf demselben Host wie die Clientanwendung ausgeführt werden.
// 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)); } } }
Ersetzen Sie Folgendes:
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Wenn Sie ihn lokal ausführen,
verwenden Sie
localhost.
Befehlszeilenargument. Beispiel: - PORT: die Portnummer, auf der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport,
5432.
/tmp.
Cloud Spanner-JDBC-Treiber
In diesem Abschnitt wird erläutert, wie Sie den Cloud Spanner-JDBC-Treiber verwenden, um eine Verbindung zu einer Datenbank im PostgreSQL-Dialekt herzustellen.
- Fügen Sie den Cloud Spanner-JDBC-Treiber als Abhängigkeit zu Ihrer Anwendung hinzu.
- Verwenden Sie eine Cloud Spanner-JDBC-Verbindungs-URL, um eine Verbindung zur
Datenbank im PostgreSQL-Dialekt herzustellen.
// 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)); } } }Der Treiber erkennt automatisch den SQL-Dialekt der angegebenen Datenbank. Ein Dialektparameter in der Verbindungs-URL ist nicht erforderlich.
Nächste Schritte
- Weitere Informationen zu PGAdapter.
- Weitere Informationen zu den Verbindungsoptionen des PostgreSQL-JDBC-Treibers finden Sie im PGAdapter-GitHub-Repository unter PGAdapter – JDBC Connection Options.
- Hier finden Sie eine Übersicht der für Cloud Spanner unterstützten Treiber und ORMs.