1.14 Spatial and Graphトポロジ・サポート

この項では、Oracle Spatial and Graphトポロジの表でWorkspace Managerを使用する際の特別な考慮事項と手法について説明します。

トポロジの詳細は、『Oracle Spatial and Graphトポロジ・データ・モデルおよびネットワーク・データ・モデル・グラフ開発者ガイド』を参照してください。

トポロジは、フィーチャー表と、<topology-name>_NODE$<topology-name>_EDGE$<topology-name>_FACE$<topology-name>_RELATION$および<topology-name>_HISTORY$形式の名前を持つ表で構成されています。トポロジ表をバージョン対応表にする場合は、そのトポロジに関連付けられている表をすべてバージョン対応にする必要があります。そのためには、EnableVersioningプロシージャのtable_nameパラメータにトポロジ名を指定し、isTopologyパラメータをTRUEに設定する必要があります。たとえば:

EXECUTE DBMS_WM.EnableVersioning(table_name => 'xyz_topo', isTopology => TRUE);

この例では、xyz_topoトポロジをバージョン対応にしています。つまり、xyz_topoトポロジに関連付けられているフィーチャー表すべてと、XYZ_TOPO_NODE$XYZ_TOPO_FACE$XYZ_TOPO_EDGE$XYZ_TOPO_RELATION$およびXYZ_TOPO_HISTORY$の各表がバージョン対応になります。

バージョン対応トポロジには、1つ以上のフィーチャー表が必要です。

トポロジ表のバージョニングを使用禁止にするには、DisableVersioningプロシージャのtable_nameパラメータにトポロジ名を指定し、isTopologyパラメータをTRUEに設定して、そのトポロジに関連付けられている表すべてのバージョニングを使用禁止にする必要があります。

ただし、トポロジ表をバージョン対応またはバージョン非対応にする操作に関する前述のガイドラインには、次の例外があります。

  • トポロジのフィーチャー表が、そのトポロジにない表とのCASCADEオプションが指定されている参照整合性制約の子表である場合

  • トポロジのフィーチャー表が、そのトポロジにない表を含む参照整合性制約の親表である場合

この2つの場合は、フィーチャー表を個別にバージョン対応またはバージョン非対応にする必要があります。つまり、最初にフィーチャー表(および参照整合性制約で要求される表)に対してEnableVersioningまたはDisableVersioningプロシージャをコールしてから、トポロジ名を指定してEnableVersioningまたはDisableVersioningプロシージャをコールします。

1.14.1 トポロジ使用時のロックに関する考慮事項

トポロジに関連付けられている行をロックまたはロック解除するには、LockRowsまたはUnlockRowsプロシージャのtable_nameパラメータにトポロジ名を指定し、XminYminXmaxおよびYmaxパラメータを使用して、その行を含むウィンドウを識別する必要があります。また、where_clauseパラメータは指定できません。たとえば:

EXECUTE DBMS_WM.LockRows (workspace => 'ws1', table_name => 'xyz_topo', Xmin => 0.1, Ymin => 0.1,  Xmax => 0.5, Ymax => 0.5 );

この例では、指定のウィンドウに含まれる指定のトポロジの行すべてにバージョン・ロックが適用されます。作業領域(LIVE作業領域を含む)内でトポロジの要素を編集するステップは、次のとおりです。

  1. LockRowsプロシージャをコールして、対象ウィンドウに含まれるトポロジの要素すべてにバージョン・ロックを適用します。

  2. 同じ対象ウィンドウに対して、Oracle Spatial and Graph Topology JavaクライアントのloadWindowメソッドをコールします。

1.14.2 トポロジ使用時のその他の考慮事項

Workspace ManagerをSpatial and Graphトポロジとともに使用する場合は、さらに次の考慮事項が適用されます。

  • トポロジに関連付けられている表をバージョン対応にする前に、そのトポロジに対して少なくとも1回はSDO_TOPO.INITIALIZE_METADATAプロシージャをコールする必要があります。(SDO_TOPO.INITIALIZE_METADATAプロシージャは、トポロジをバージョン対応にした後も必要に応じてコールできます。)

  • トポロジに関連付けられているバージョン対応表では、MergeTableRefreshTableまたはRollbackTableプロシージャを使用しないでください。トポロジに関連付けられている表のマージ、リフレッシュまたはロールバックには、かわりにMergeWorkspaceRefreshWorkspaceまたはRollbackWorkspaceプロシージャを使用してください。