6.8 サポートされていないキー・タイプのSQLプロパティ・グラフのロード

SQLグラフ内の既存のキーをグラフ・サーバー(PGX)にロードできない場合、かわりにデータベースに保持されている生成済キーを使用できます。

エッジ表FRIENDS_WITHのコンポジット・エッジ・キー(USER1USER2)で定義されている次のSQLプロパティ・グラフについて考えてみます。
CREATE PROPERTY GRAPH SOCIAL_NETWORK
    VERTEX TABLES (
        ACCOUNT 
          KEY (ID) LABEL USER PROPERTIES (FULL_NAME, USERNAME)
    ) 
    EDGE TABLES (
        FRIENDS_WITH 
          KEY (USER1, USER2)
          SOURCE KEY (USER1) REFERENCES ACCOUNT (USERNAME)
          DESTINATION KEY (USER2) REFERENCES ACCOUNT (USERNAME)
          NO PROPERTIES
    )
    OPTIONS (TRUSTED MODE);

SOCIAL_NETWORKグラフはグラフ・サーバー(PGX)にロードできますが、エッジ・キーはロードされません。また、コンポジット・エッジ・キーについてはサブグラフのロードはサポートされていません。

これらの問題を解決するために、基礎となるFRIENDS_WITHエッジ表で次の回避策ステップを実行できます。
  1. FRIENDS_WITH表に数値キー列を追加します。
    ALTER TABLE FRIENDS_WITH ADD ID NUMBER(5) GENERATED ALWAYS AS IDENTITY;

    FRIENDS_WITHプロバイダのデータ表に、生成された数値キーを自動的に移入するID列が追加されました。

    GENERATED AS IDENTITY列を使用するには、データベースにCREATE ANY SEQUENCEなどの追加の権限が必要です。

  2. グラフ定義を更新し、この新しい列をFRIENDS_WITHエッジ表のキーとして使用するようにします。
    1. 同じ名前のグラフを作成する場合は、最初に既存のグラフを削除する必要があります。
      DROP PROPERTY GRAPH SOCIAL_NETWORK;
    2. 新しいグラフ定義を更新して実行します。
      CREATE PROPERTY GRAPH SOCIAL_NETWORK
          VERTEX TABLES (
              ACCOUNT 
                KEY (ID) 
                LABEL USER 
                PROPERTIES (FULL_NAME, USERNAME)
          ) 
          EDGE TABLES (
              FRIENDS_WITH 
                KEY (ID) 
                SOURCE KEY (USER1) REFERENCES ACCOUNT (USERNAME)
                DESTINATION KEY (USER2) REFERENCES ACCOUNT (USERNAME)
                NO PROPERTIES
          )
          OPTIONS (TRUSTED MODE);

      または、同じ名前のグラフ定義がすでに存在する場合は、CREATE OR REPLACE PROPERTY GRAPH文を使用してグラフ定義をオーバーライドすることもできます。

    新しいグラフ定義では、SOCIAL_NETWORK SQLグラフを使用するサブグラフのロードがサポートされます。