7 PGQLプラグインの使用

プロパティ・グラフ問合せ言語(PGQL)は、プロパティ・グラフ・データ・モデルのためのグラフ・パターン一致問合せ言語です。PGQLプラグインを使用すると、SQLclのコマンドラインからPGQL文を実行および変換できます。

SQLcl用のPGQLプラグインは、Oracle Graph Server and Clientリリース20.3以上のリリースで使用できます。

関連項目:

PGQLの詳細は、Property Graph Query Languageを参照してください。

この章の構成は、次のとおりです。

7.1 ダウンロードおよびインストール

プラグインは、Oracle Software Delivery Cloud (「Oracle Graph Server and Client」で検索)またはOracle Graph Server and Client Downloadsからダウンロードできます。

SQLcl用のPGQLプラグインをインストールするには、ダウンロードしたプラグインをローカルのSQLclインストールのlib/extディレクトリに解凍する必要があります。

7.2 PGQLコマンドについて

データベースに対してPGQL文を実行するには、SQLclを起動し、次のコマンドを使用してPGQLモードをオンにします。

pgql auto on;

PGQLモードをオンにすると、後続のSELECT文、INSERT文、UPDATE文、DELETE文、CREATE文およびDROP文はすべてPGQL文とみなされます。

PGQLモードをオンにするときに、別の引数を指定することもできます。

pgql auto on [args]

指定できる引数値は次のとおりです。

  • graph <graph_name>: 指定したグラフに対して問合せを実行します。

  • execute: PGQL実行をオンにします。

  • executeonly: PGQL実行をオンにし、PGQLからSQLへの変換を表示しません。

  • translate: PGQLからSQLへの変換を表示します。

  • translateonly: PGQLからSQLへの変換を表示し、PGQL実行をオフにします。

  • parallel <parallel>: 指定されたパラレル値を使用してPGQL問合せを実行(または変換)します。

  • dynamic_sampling <dynamic_sampling>: 指定された動的サンプリング値を使用してPGQL問合せを実行(または変換)します。

デフォルトでは、graph値は設定されず、PGQL実行はオンになっており、PGQLからSQLへの変換はオフになっています。parallelのデフォルト値は0で、dynamic_samplingのデフォルト値は6です。

SQL文を再度実行するには、PGQLモードをオフにします。

pgql auto off;

すべてのパラメータをデフォルト値にリセットするには、PGQLモードをオフにしてから再度オンにします。

7.3

PGQLモードをオンにする

この例では、PGQLモードをオンにします。PGQLが有効な場合、PGQLプロンプトが表示されます。

SQL> pgql auto on;
  
PGQL Auto enabled for graph=[null], execute=[true], translate=[false]
PGQL>

プロパティ・グラフの作成と問合せの実行

この例では、プロパティ・グラフを作成し、新しく作成されたscott_hrグラフに対して問合せを実行します。

PGQL> CREATE PROPERTY GRAPH scott_hr
  2    VERTEX TABLES (
  3      emp KEY(empno) LABEL Employee
  4        PROPERTIES ARE ALL COLUMNS EXCEPT ( deptno ),
  5      dept KEY(deptno) LABEL Department
  6        PROPERTIES ( deptno, dname )
  7    )
  8    EDGE TABLES (
  9      emp AS works_for
 10        SOURCE KEY ( empno ) REFERENCES emp
 11        DESTINATION KEY ( deptno ) REFERENCES dept
 12        NO PROPERTIES
 13    );
  
Graph created
  
PGQL> column name format a15;
PGQL> SELECT e.ename AS name
  2  FROM MATCH (e:Employee) ON scott_hr
  3  ORDER by e.ename
  4  LIMIT 4;
 
NAME          
---------------
ADAMS         
ALLEN         
BLAKE         
CLARK

グラフ・パラメータの定義

graphパラメータを定義して、特定のグラフに対してすべてのPGQL問合せを実行できます。この例では、graphscott_hrに設定します。問合せにON句は必要ないことに注意してください。

PGQL> pgql auto on graph scott_hr;
 
PGQL Auto enabled for graph=[SCOTT_HR], execute=[true], translate=[false]
 
PGQL> column department format a20;
PGQL> column employees format a10;
PGQL> SELECT d.dname AS department, COUNT(e) AS employees
  2  FROM MATCH (e:Employee) -[:works_for]-> (d:Department)
  3  GROUP BY d
  4  ORDER BY employees
  5* LIMIT 3;
 
DEPARTMENT           EMPLOYEES
-------------------- ----------
ACCOUNTING           3        
RESEARCH             5        
SALES                6

パラレル値2を使用したSQL翻訳の表示

この例は、パラレル値2を使用したPGQL問合せのSQL翻訳を示しています。SQL翻訳には、定義されたパラレル値の使用に関するヒントがあることに注意してください。

SQL> pgql auto on translateonly parallel 2;
 
PGQL Auto enabled for graph=[null], execute=[false], translate=[true]
PGQL> SELECT id(n) FROM MATCH (n) ON scott_hr;
SELECT /*+ parallel(2) */ * FROM(SELECT 7 AS "id(n)$T",
to_nchar(T0$0.VID,'TM9','NLS_Numeric_Characters=''.,''') AS "id(n)$V",
T0$0.VID AS "id(n)$VN",
to_timestamp_tz(null) AS "id(n)$VT"
FROM "SCOTT".SCOTT_HRVD$ T0$0);

PGQLモードをオフにする

この例は、PGQLモードをオフにする方法を示しています。

PGQL> pgql auto off;
  
PGQL Auto disabled
SQL>