É possível usar o driver JDBC do PostgreSQL ou do Spanner com um banco de dados do Spanner com dialeto PostgreSQL. Nesta página, explicamos como se conectar ao banco de dados com esses drivers.
Driver JDBC do PostgreSQL
Esta seção explica como conectar o driver JDBC do PostgreSQL a um banco de dados do Spanner com dialeto PostgreSQL. O JDBC é o driver Java padrão para PostgreSQL.
Se você usar o driver JDBC do PostgreSQL, será necessário usar o PGAdapter para traduzir entre o protocolo de rede do PostgreSQL e o protocolo de rede do Spanner. É possível adicionar o PGAdapter como uma dependência e executá-lo no processo com o aplicativo.
- Adicione o PGAdapter e o driver JDBC do PostgreSQL como dependências
ao aplicativo.
- Inicie o PGAdapter no processo com o aplicativo.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
Substitua:
- PORT: o número da porta em que o PGAdapter está
em execução. Defina como
5432na maioria dos casos ou0para usar uma porta atribuída dinamicamente.
- PORT: o número da porta em que o PGAdapter está
em execução. Defina como
- Verifique se o driver JDBC do PostgreSQL está carregado.
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)); } } }Substitua:
- APPLICATION_HOST: o nome do host ou o endereço IP da máquina em que o PGAdapter está em execução. Se estiver executando localmente,
use
localhost.
O repositório do PGAdapter no GitHub contém um aplicativo de exemplo.
- APPLICATION_HOST: o nome do host ou o endereço IP da máquina em que o PGAdapter está em execução. Se estiver executando localmente,
use
Soquetes de domínio Unix
Esta seção explica como usar soquetes de domínio Unix para conectar o driver JDBC do PostgreSQL a um banco de dados do Spanner com dialeto PostgreSQL. Use soquetes de domínio Unix para a menor latência possível.
Para usar soquetes de domínio Unix, o PGAdapter precisa estar em execução no mesmo host que o aplicativo 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)); } } }
Substitua:
- APPLICATION_HOST: o nome do host ou o endereço IP da máquina em que o PGAdapter está em execução. Se estiver executando localmente,
use
localhost.
argumento de linha de comando. Por exemplo, - PORT: o número da porta em que o PGAdapter está
em execução. Mude isso na string de conexão se o PGAdapter estiver em execução em uma porta personalizada. Caso contrário, use a porta padrão,
5432.
/tmp.
Driver JDBC do Spanner
Esta seção explica como usar o driver JDBC do Spanner para se conectar a um banco de dados do Spanner com dialeto PostgreSQL.
- Adicione o driver JDBC do Spanner como uma dependência ao aplicativo.
- Use um URL de conexão JDBC do Spanner para se conectar ao
banco de dados do Spanner com dialeto 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)); } } }O driver detecta automaticamente o dialeto SQL do banco de dados especificado. Um parâmetro de dialeto no URL de conexão não é obrigatório.
A seguir
- Saiba mais sobre PGAdapter.
- Para mais informações sobre as opções de conexão do driver JDBC do PostgreSQL, consulte PGAdapter - JDBC Connection Options no repositório do PGAdapter no GitHub.
- Confira uma visão geral dos drivers e ORMs com suporte para o Spanner.