Pode usar o controlador JDBC do PostgreSQL ou o controlador JDBC do Spanner com uma base de dados do dialeto PostgreSQL do Spanner. Esta página explica como estabelecer ligação à sua base de dados com estes controladores.
Controlador JDBC do PostgreSQL
Esta secção explica como associar o controlador JDBC do PostgreSQL a uma base de dados com dialeto do PostgreSQL no Spanner. O JDBC é o controlador Java padrão para o PostgreSQL.
Se usar o controlador JDBC do PostgreSQL, tem de usar o PGAdapter para fazer a tradução entre o protocolo de rede do PostgreSQL e o protocolo de rede do Spanner. Pode adicionar o PGAdapter como uma dependência e executá-lo no processo com a sua aplicação.
- Adicione o PGAdapter e o controlador JDBC do PostgreSQL como dependências
à sua aplicação.
- Inicie o PGAdapter no processo com a sua aplicação.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
Substitua o seguinte:
- PORT: o número da porta onde o PGAdapter está a ser executado. Defina como
5432na maioria dos casos ou0para usar uma porta atribuída dinamicamente.
- PORT: o número da porta onde o PGAdapter está a ser executado. Defina como
- Certifique-se de que o controlador 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 o seguinte:
- APPLICATION_HOST: o nome de anfitrião ou o endereço IP da máquina onde o PGAdapter está a ser executado. Se estiver a executar localmente,
use
localhost.
O repositório do GitHub do PGAdapter contém uma aplicação de exemplo.
- APPLICATION_HOST: o nome de anfitrião ou o endereço IP da máquina onde o PGAdapter está a ser executado. Se estiver a executar localmente,
use
Sockets de domínio Unix
Esta secção explica como usar sockets de domínio Unix para ligar o controlador JDBC do PostgreSQL a uma base de dados de dialeto PostgreSQL. Use sockets de domínio Unix para a latência mais baixa possível.
Para usar sockets de domínio Unix, o PGAdapter tem de estar em execução no mesmo anfitrião que a aplicação 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 o seguinte:
- APPLICATION_HOST: o nome de anfitrião ou o endereço IP da máquina onde o PGAdapter está a ser executado. Se estiver a executar localmente,
use
localhost.
argumento de linha de comandos. Por exemplo, - PORT: o número da porta onde o PGAdapter está a ser executado. Altere isto na string de ligação se o PGAdapter estiver
a ser executado numa porta personalizada. Caso contrário, use a porta predefinida,
5432.
/tmp.
Controlador JDBC do Spanner
Esta secção explica como usar o controlador JDBC do Spanner para estabelecer ligação a uma base de dados com dialeto PostgreSQL.
- Adicione o controlador JDBC do Spanner como uma dependência à sua aplicação.
- Use um URL de ligação JDBC do Spanner para se ligar à base de dados do 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 controlador deteta automaticamente o dialeto SQL da base de dados especificada. Não é necessário um parâmetro de dialeto no URL de ligação.
O que se segue?
- Saiba mais acerca do PGAdapter.
- Para mais informações sobre as opções de ligação do controlador JDBC do PostgreSQL, consulte o artigo PGAdapter - Opções de ligação JDBC no repositório do GitHub do PGAdapter.