12.2 Autonomous Databaseグラフ・クライアントの使用
AdbGraphClient
APIを使用して、Oracle Graph Clientを使用するかJavaまたはPythonアプリケーションを介して、Autonomous DatabaseのGraph Studio機能にプログラムでアクセスできます。
このAPIには、次の機能があります。
- Autonomous Databaseで認証する
- Graph Studio環境を管理する
- グラフ・サーバー(PGX)に対してグラフ問合せおよびアルゴリズムを実行する
- Oracle Databaseに対してグラフ問合せを直接実行する
AdbGraphClient
APIを使用するには、Oracle Graph Clientインストールへのアクセス権が必要です。APIは、Oracle Graph Server and Clientディストリビューションの一部であるOracle Graph Clientライブラリによって提供されます。JavaまたはPython用のグラフ・クライアント・シェルCLIのインストール方法および開始方法の詳細は、Oracle Graph Clientのインストールを参照してください。
AdbGraphClient
APIを使用してGraph Studioへの接続を確立し、割り当てられたメモリーで環境を起動し、PGQLプロパティ・グラフをメモリーにロードし、PGQL問合せを実行し、グラフに対してアルゴリズムを実行する方法を示しています。
- Autonomous Databaseグラフ・クライアントを使用するための前提条件
- AdbGraphClient APIでのPGX JDBCドライバの使用
Graph Server and Clientリリース24.1.0以降では、PGX JDBCドライバをAdbGraphClient
APIとともに使用して、Autonomous DatabaseのGraph Studioのグラフ・サーバーのメモリーに格納されているグラフを問い合せることができます。
親トピック: クライアント・ツールのスタート・ガイド
12.2.1 Autonomous Databaseグラフ・クライアントを使用するための前提条件
AdbGraphClient
APIの使用を開始するための前提条件として、次を実行する必要があります。
- Oracle Autonomous DatabaseでAutonomous Databaseインスタンスをプロビジョニングする。
- テナンシ詳細を使用して
AdbGraphClient
を構成する場合は、次の情報を取得します。該当しない場合は、このステップを省略します。キー 説明 詳細情報 tenancy OCID テナンシのOracle Cloud ID (OCID) テナンシのOCIDを確認するには、Oracle Cloud InfrastructureドキュメントのテナンシのOCIDを確認する場所に関する項を参照してください。 database Autonomous Databaseインスタンスのデータベース名 - OCIコンソールを開き、左側のナビゲーション・メニューで「Oracle Database」をクリックします。
- 「Autonomous Database」をクリックし、「Autonomous Database」ページにナビゲートします。
- 「表示名」列で必要なAutonomous Databaseを選択し、「Autonomous Databaseの詳細」ページにナビゲートします。
- 「Autonomous Database情報」タブの「一般情報」下の「データベース名」を書き留めます。
database OCID Autonomous DatabaseのOracle Cloud ID (OCID) - OCIコンソールを開き、左側のナビゲーション・メニューで「Oracle Database」をクリックします。
- 「Autonomous Database」をクリックし、「Autonomous Database」ページにナビゲートします。
- 「表示名」列で必要なAutonomous Databaseを選択し、「Autonomous Databaseの詳細」ページにナビゲートします。
- 「Autonomous Database情報」タブの「一般情報」下の「データベースOCID」を書き留めます。
username Graph Studioへのログインに使用される、グラフ対応のAutonomous Databaseユーザー名 詳細は、グラフ・ユーザーの作成を参照してください。 password グラフ・ユーザーのデータベース・パスワード グラフ・ユーザーのパスワードを忘れた場合は、ADMINユーザーとして「データベース・アクション」にログインすることで、グラフ・ユーザーのパスワードをいつでもリセットできます。詳細は、ユーザーの編集を参照してください。 endpoint Graph StudioのエンドポイントURL - Autonomous Databaseインスタンスを選択し、「Autonomous Databaseの詳細」ページにナビゲートします。
- 「ツール」タブをクリックします。
- 「Graph Studio」をクリックします。
- 「Graph Studio」ログイン画面を開く新しいタブのURLをコピーします。
- URLを編集して、
oraclecloudapps.com
の後の部分を削除し、エンドポイントURLを取得します。たとえば、エンドポイントURLのサンプル形式を次に示します。
https://<hostname_prefix>.adb.<region_identifier>.oraclecloudapps.com
- Graph Studioにアクセスし、PGQLプロパティ・グラフを作成します。
- Oracle Graph JavaまたはPythonクライアントをダウンロードしてインストールし、起動する。
12.2.2 AdbGraphClient APIでのPGX JDBCドライバの使用
Graph Server and Clientリリース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);
- ウォレットの使用
Connection connection = DriverManager.getConnection("jdbc:oracle:pgx:@<db_TNS_name>?TNS_ADMIN=<path_to_wallet>", "<ADB_username>", "<ADB_password>")
前述のコード・サンプルのJDBC URLでは、接頭辞として
JDBC:oracle:pgx:
を使用します。 - プロパティの使用
例12-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