Sie können entweder den PostgreSQL-JDBC-Treiber oder den Spanner-JDBC-Treiber mit einer 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 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 Spanner-Netzwerkprotokoll zu übersetzen. Sie können PGAdapter als Abhängigkeit hinzufügen und es als Verarbeitungsprozess mit Ihrer Anwendung ausführen.
- Fügen Sie PGAdapter und den PostgreSQL-JDBC-Treiber als Abhängigkeiten
zu Ihrer Anwendung hinzu.
- Starten Sie PGAdapter als Verarbeitungsprozess mit Ihrer 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. In den meisten Fällen auf
5432oder auf0setzen, um einen dynamisch zugewiesenen Port zu verwenden.
- PORT: die Portnummer, auf der PGAdapter ausgeführt wird. In den meisten Fällen auf
- Prüfen Sie, ob 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. Bei lokaler Ausführung,
localhostverwenden.
Das PGAdapter-GitHub-Repository enthält eine Beispielanwendung.
- APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Bei lokaler Ausführung,
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 Latenz so gering wie möglich zu halten.
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. Bei lokaler Ausführung,
localhostverwenden.
Befehlszeilenargument. Beispiel: - PORT: die Portnummer, auf der PGAdapter ausgeführt wird. Ändern Sie dies in der Verbindungs-URL, wenn PGAdapter
auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport,
5432.
/tmp.
Spanner-JDBC-Treiber
In diesem Abschnitt wird erläutert, wie Sie den Spanner-JDBC-Treiber verwenden, um eine Verbindung zu einer Datenbank im PostgreSQL-Dialekt herzustellen.
- Fügen Sie den Spanner-JDBC-Treiber als Abhängigkeit zu Ihrer Anwendung hinzu.
- Verwenden Sie eine 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 für den PostgreSQL-JDBC-Treiber finden Sie im PGAdapter-GitHub-Repository unter PGAdapter – JDBC Connection Options.
- Sehen Sie sich eine Übersicht über die für Spanner unterstützten Treiber und ORMs an.