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.