PostgreSQL 언어 데이터베이스에 JDBC 연결

Spanner PostgreSQL 언어 데이터베이스에서 PostgreSQL JDBC 드라이버 또는 Spanner JDBC 드라이버를 사용할 수 있습니다. 이 페이지에서는 이러한 드라이버를 사용하여 데이터베이스에 연결하는 방법을 설명합니다.

PostgreSQL JDBC 드라이버

이 섹션에서는 PostgreSQL JDBC 드라이버를 Spanner의 PostgreSQL 언어 데이터베이스에 연결하는 방법을 설명합니다. JDBC는 PostgreSQL용 표준 Java 드라이버입니다.

PostgreSQL JDBC 드라이버를 사용하는 경우 PGAdapter를 사용하여 PostgreSQL 네트워크 프로토콜과 Spanner 네트워크 프로토콜 간에 변환해야 합니다. PGAdapter를 종속 항목으로 추가하고 애플리케이션에서 진행 중으로 실행할 수 있습니다.

  1. PGAdapter 및 PostgreSQL JDBC 드라이버를 종속 항목으로 애플리케이션에 추가합니다.

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>0.51.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.51.0</version>
    </dependency>
  2. 애플리케이션에서 진행 중인 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로 설정합니다.
  3. 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를 사용합니다.

    PGAdapter GitHub 저장소에 샘플 애플리케이션이 포함되어 있습니다.

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를 사용합니다.
  • 명령줄 인수입니다. 예를 들면 /tmp입니다.
  • PORT: PGAdapter가 실행 중인 포트 번호입니다. PGAdapter가 맞춤 포트에서 실행 중인 경우 연결 문자열에서 이를 변경합니다. 그렇지 않으면 기본 포트인 5432을 사용합니다.

Spanner JDBC 드라이버

이 섹션에서는 Spanner JDBC 드라이버를 사용하여 PostgreSQL 언어 데이터베이스에 연결하는 방법을 설명합니다.

  1. Spanner JDBC 드라이버를 종속 항목으로 애플리케이션에 추가합니다.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.69.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. Spanner JDBC 연결 URL을 사용하여 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 언어를 자동으로 감지합니다. 연결 URL의 언어 매개변수는 필요하지 않습니다.

다음 단계

  • PGAdapter에 대해 자세히 알아보세요.
  • PostgreSQL JDBC 드라이버 연결 옵션에 대한 자세한 내용은 PGAdapter GitHub 저장소의 PGAdapter - JDBC 연결 옵션을 참조하세요.