您可以搭配 Spanner PostgreSQL 方言資料庫使用 PostgreSQL JDBC 驅動程式或 Spanner JDBC 驅動程式。本頁面說明如何使用這些驅動程式連線至資料庫。
PostgreSQL JDBC 驅動程式
本節說明如何將 PostgreSQL JDBC 驅動程式連線至 Spanner 中的 PostgreSQL 方言資料庫。JDBC 是 PostgreSQL 的標準 Java 驅動程式。
如果您使用 PostgreSQL JDBC 驅動程式,就必須使用 PGAdapter 在 PostgreSQL 網路通訊協定和 Spanner 網路通訊協定之間進行轉換。您可以將 PGAdapter 新增為依附元件,並在應用程式中執行。
- 將 PGAdapter 和 PostgreSQL JDBC 驅動程式新增為應用程式的依附元件。
- 在應用程式中啟動 PGAdapter。
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
更改下列內容:
- PORT:PGAdapter 執行的通訊埠號碼。在大多數情況下,請設為
5432
,或設為0
以使用動態指派的通訊埠。
- PORT:PGAdapter 執行的通訊埠號碼。在大多數情況下,請設為
- 確認已載入 PostgreSQL JDBC 驅動程式。
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)); } } }更改下列內容:
- APPLICATION_HOST:執行 PGAdapter 的電腦主機名稱或 IP 位址。如要在本機執行,請使用
localhost
。
- APPLICATION_HOST:執行 PGAdapter 的電腦主機名稱或 IP 位址。如要在本機執行,請使用
Unix 網域通訊端
本節說明如何使用 Unix 網域通訊端,將 PostgreSQL JDBC 驅動程式連線至 PostgreSQL 方言資料庫。使用 Unix 網域通訊端,盡可能縮短延遲時間。
如要使用 Unix 網域通訊端,PGAdapter 必須與用戶端應用程式在同一部主機上執行。
// 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)); } } }
更改下列內容:
- APPLICATION_HOST:執行 PGAdapter 的電腦主機名稱或 IP 位址。如要在本機執行,請使用
localhost
。
指令列引數。例如: - PORT:PGAdapter 執行的通訊埠號碼。如果 PGAdapter 是在自訂通訊埠上執行,請在連線字串中變更此設定。否則,請使用預設通訊埠
5432
。
/tmp
。Spanner JDBC 驅動程式
本節說明如何使用 Spanner JDBC 驅動程式連線至 PostgreSQL 方言資料庫。
- 將 Spanner JDBC 驅動程式新增為應用程式的依附元件。
- 使用 Spanner JDBC 連線網址連線至 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)); } } }驅動程式會自動偵測指定資料庫的 SQL 方言。連線網址中不需要方言參數。
後續步驟
- 進一步瞭解 PGAdapter。
- 如要進一步瞭解 PostgreSQL JDBC 驅動程式連線選項,請參閱 PGAdapter GitHub 存放區中的「PGAdapter - JDBC Connection Options」。