機械翻訳について

AdbGraphClient APIでのPGX JDBCドライバの使用

グラフ・サーバーおよびクライアント・リリース24.1.0以降では、PGX JDBCドライバをAdbGraphClient APIとともに使用して、グラフ・サーバーのメモリーに格納されているグラフをAutonomous DatabaseのGraph Studioで問い合せることができます。

PGX JDBCドライバを使用してAutonomous Databaseインスタンスに接続するには、次の点に注意してください:

  • PGX JDBCドライバをDriverManagerに登録します:
    import java.sql.DriverManager;
    import oracle.pgx.jdbc.PgxJdbcDriver;
    ...
    DriverManager.registerDriver(new PgxJdbcDriver());
  • PGX JDBCドライバを使用して接続を確立するには、次の2つの方法のいずれかを使用します:
    • プロパティを使用します
      properties = new Properties();
      properties.put("tenancy_ocid", "<tenancy_OCID>");
      properties.put("database_ocid", "<database_OCID>");
      properties.put("database", "<database_name>");
      properties.put("username", "<username>");
      properties.put("password", "<password>");
      Connection connection = DriverManager.getConnection("jdbc:oracle:pgx:https://<hostname-prefix>.adb.<region>.oraclecloudapps.com", properties);
    • Walletの使用
      Connection connection = DriverManager.getConnection("jdbc:oracle:pgx:@<db_TNS_name>?TNS_ADMIN=<path_to_wallet>", "<ADB_username>", "<ADB_password>")

    前述のコード・サンプルのJDBC URLでは、プレフィクスとしてjdbc:oracle:pgx:を使用します。

例5-1 PGX JDBCドライバを使用したAutonomous Databaseでのグラフ問合せの実行

次の例では、PGX JDBCドライバを使用してAutonomous Databaseインスタンスに接続し、Graph Studioでコンピュート環境を起動し、グラフをグラフ・サーバー(PGX)にロードし、文を作成し、グラフに対してPGQL問合せを実行します。

import java.sql.*;
import oracle.pgx.jdbc.*;
import oracle.pg.rdbms.*;
import oracle.pgx.api.*;

public class AdbPgxJdbc {

  public static void main(String[] args) throws Exception {

    DriverManager.registerDriver(new PgxJdbcDriver());


    try (Connection conn = DriverManager.getConnection("jdbc:oracle:pgx:@<db_TNS_name>?TNS_ADMIN=<path_to_wallet>","ADB_username","<ADB_password>")) {
      AdbGraphClient client = conn.unwrap(AdbGraphClient.class);
      if (!client.isAttached()) {
        var job = client.startEnvironment(10);
         job.get();
         System.out.println("job details: name=" + job.getName() + "type= " + job.getType() +"created_by= " + job.getCreatedBy());
        }
      PgxSession session = conn.unwrap(PgxSession.class);
      PgxGraph graph = session.readGraphByName("BANK_PGQL_GRAPH", GraphSource.PG_PGQL);
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT * "+
                                         "FROM GRAPH_TABLE ( BANK_PGQL_GRAPH "+
                                         "MATCH (a IS ACCOUNTS) -[e IS TRANSFERS]-> (b IS ACCOUNTS) "+
                                         "WHERE a.ID = 179 AND b.ID = 688 "+
                                         "COLUMNS (e.AMOUNT AS AMOUNT ))");
      while(rs.next()){
        System.out.println("AMOUNT = " + rs.getLong("AMOUNT"));
      }

    }
  }
}

前述のコードの結果の出力は次のようになります:

AMOUNT = 7562