Menghubungkan JDBC ke database dialek PostgreSQL

Anda dapat menggunakan driver JDBC PostgreSQL atau driver JDBC Spanner dengan database dialek PostgreSQL Spanner. Halaman ini menjelaskan cara terhubung ke database Anda dengan driver ini.

Driver JDBC PostgreSQL

Bagian ini menjelaskan cara menghubungkan driver JDBC PostgreSQL ke database dialek PostgreSQL di Spanner. JDBC adalah driver Java standar untuk PostgreSQL.

Jika menggunakan driver JDBC PostgreSQL, Anda harus menggunakan PGAdapter untuk menerjemahkan antara protokol jaringan PostgreSQL dan protokol jaringan Spanner. Anda dapat menambahkan PGAdapter sebagai dependensi dan menjalankannya dalam proses dengan aplikasi Anda.

  1. Tambahkan PGAdapter dan driver JDBC PostgreSQL sebagai dependensi ke aplikasi Anda.

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>0.48.4</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.48.4</version>
    </dependency>
  2. Mulai PGAdapter dalam proses dengan aplikasi Anda.
    OptionsMetadata.Builder builder =
      OptionsMetadata.newBuilder()
        .setProject("PROJECT_NAME")
        .setInstance("INSTANCE_NAME")
        .setPort(PORT);
    ProxyServer server = new ProxyServer(builder.build());
    server.startServer();
    server.awaitRunning();
          

    Ganti kode berikut:

    • PORT: nomor port tempat PGAdapter berjalan. Tetapkan ke 5432 dalam sebagian besar kasus atau 0 untuk menggunakan port yang ditetapkan secara dinamis.
  3. Pastikan driver JDBC PostgreSQL dimuat.
    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)); } } }

    Ganti kode berikut:

    • APPLICATION_HOST: nama host atau alamat IP mesin tempat PGAdapter berjalan. Jika berjalan secara lokal, gunakan localhost.

    Repositori GitHub PGAdapter berisi aplikasi contoh.

Soket domain Unix

Bagian ini menjelaskan cara menggunakan soket domain Unix untuk menghubungkan driver JDBC PostgreSQL ke database dialek PostgreSQL. Gunakan soket domain Unix untuk latensi serendah mungkin.

Untuk menggunakan soket domain Unix, PGAdapter harus berjalan di host yang sama dengan aplikasi klien.

// 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)); } } }

Ganti kode berikut:

  • APPLICATION_HOST: nama host atau alamat IP mesin tempat PGAdapter berjalan. Jika berjalan secara lokal, gunakan localhost.
  • argumen command line. Misalnya, /tmp.
  • PORT: nomor port tempat PGAdapter berjalan. Ubah ini di string koneksi jika PGAdapter berjalan di port kustom. Jika tidak, gunakan port default, 5432.

Driver JDBC Spanner

Bagian ini menjelaskan cara menggunakan driver JDBC Spanner untuk terhubung ke database dialek PostgreSQL.

  1. Tambahkan driver JDBC Spanner sebagai dependensi ke aplikasi Anda.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.63.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-spanner-jdbc</artifactId>
        <exclusions>
          <exclusion>
            <groupId>com.google.api.grpc</groupId>
            <artifactId>proto-google-cloud-spanner-executor-v1</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
  2. Gunakan URL koneksi JDBC Spanner untuk terhubung ke database dialek 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)); } } }

    Driver otomatis mendeteksi dialek SQL dari database yang ditentukan. Parameter dialek di URL koneksi tidak diperlukan.

Langkah berikutnya