E ルーティング・エンジン管理

この付録は、ルーティング・エンジンを管理する必要のある上級ユーザー向けです。ほとんどのルーティング・ユーザーは対象ではありません。

ノート:

「ルーティング・エンジン」で説明した概念と手法をよく理解していることを想定します。

Oracle Spatial and Graphルーティング・エンジンでは、サブプログラムを使用してルーティング・データの管理を処理します。道路データのパーティション化、道路データを使用したネットワーク・データ・モデル(NDM)ネットワークの構築、トラック輸送および右左折制限のユーザー・データの生成、ルーティング・エンジン・データとユーザー・データのダンプと検証を行うサブプログラムがあります。

E.1 管理操作のロギング

ルーティング・エンジンでは、すべての管理ファンクションが指定したログ・ファイルまたはデフォルト・ログ・ファイルに記録されます。すべての管理ログは、Oracleディレクトリ・オブジェクトSDO_ROUTER_LOG_DIRに記述されるディレクトリに書き込まれます。

SDO_ROUTER_LOG_DIRディレクトリが存在する必要があります。MDSYSとルーティング・エンジン・スキーマの両方に、PL/SQLとJavaの両方からこのディレクトリを読み書きするための権限が必要です。

次のサブプログラムはロギング管理操作に関連します。

E.1.1 CREATE_SDO_ROUTER_LOG_DIRプロシージャ

構文:

SDO_ROUTER_PARTITION.CREATE_SDO_ROUTER_LOG_DIR(
  ROUTER_SCHEMA IN VARCHAR2,
  NEW_DIR_PATH  IN VARCHAR2 DEFAULT NULL);

ディレクトリ・オブジェクトを作成し、他のデータベース・ユーザーに権限を付与するには、Oracle権限を持つアカウントからCREATE_SDO_ROUTER_LOG_DIRプロシージャを実行する必要があります。このプロシージャはルーティング・エンジンおよびMDSYSスキーマに権限を付与するため、これらのスキーマからは実行できません。

ROUTER_SCHEMAパラメータを指定する必要があり、ルーティング・エンジン・データを含む有効なスキーマである必要があります。

NEW_DIR_PATHパラメータはオプションのパラメータです。ディレクトリ・パスが指定されていない場合は、有効なSDO_ROUTER_LOG_DIR Oracleディレクトリがデータベースにすでに存在する必要があります。そうでない場合は、例外が発生します。ディレクトリ・パスが指定されている場合は、新しいSDO_ROUTER_LOG_DIR Oracleディレクトリが作成されます。SDO_ROUTER_LOG_DIRがすでに定義されている場合は、新しい定義で古い定義が置換されます。

ディレクトリの作成後、PL/SQLとJavaの両方からの読取り/書込みアクセス権がルーティング・エンジンとMDSYSスキーマに付与されます。

以前のバージョンのルーティング・エンジンでは、ユーザーはディレクトリの作成と権限の付与に個別のステップを実行しました。これは推奨されなくなりました。現在は、ルーティング・エンジンに必要なOracleディレクトリを管理するにはCREATE_SDO_ROUTER_LOG_DIRプロシージャの使用が推奨されます。

E.1.2 VALIDATE_SDO_ROUTER_LOG_DIRプロシージャ

構文:

SDO_ROUTER_PARTITION.VALIDATE_SDO_ROUTER_LOG_DIR(
  LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log');

VALIDATE_SDO_ROUTER_LOG_DIRプロシージャは、ルーティング・エンジンとMDSYSスキーマの両方から実行する必要があります。

LOG_FILE_NAMEパラメータは、開いて書込みを試行するログ・ファイルの名前です。名前を指定するか、デフォルトのログ・ファイルsdo_router_partition.logを使用できます。

ログ・ファイルが存在しない場合は、SDO_ROUTER_LOG_DIRディレクトリに作成されて開かれます。ログ・ファイルが存在する場合は、それが再び開かれます。検証プロシージャは、PL/SQLとJavaの両方からログ・ファイルへの書込みを試行し、ログ・ファイルを閉じます。

ディレクトリが存在しない場合、またはPL/SQL、Java、あるいはその両方がログ・ファイルへの書込みに失敗した場合は、例外がスローされます。

E.2 ネットワーク・データ・モデル(NDM)ネットワーク管理

Oracle Routing Engineには、ルート・リクエストを処理し、レスポンスを生成するために、ルーティング・エンジン・データに基づいて構築されたOracle Spatial and Graphネットワーク・データ・モデル(NDM)ネットワークが必要です。

E.2.1 CREATE_ROUTER_NETWORKプロシージャ

構文:

SDO_ROUTER_PARTITION.CREATE_ROUTER_NETWORK(
  LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
  NETWORK_NAME IN VARCHAR2 := 'ROUTER_NETWORK');

CREATE_ROUTER_NETWORKプロシージャは、ルーティング・エンジンOracle Data Format (ODF)データを含むルーティング・エンジン・スキーマから実行する必要があります。

LOG_FILE_NAMEパラメータは、ネットワーク作成時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ネットワークの作成を独自のログ・ファイルに記録するか、デフォルトのパーティション化ログ・ファイルsdo_router_partition.logに書き込むかを選択できます。

NETWORK_NAMEパラメータでは、作成されるネットワークの名前を指定します。ネットワークの名前はユーザーの判断で決定します。明確化のために、国コードとデータ・バージョンを名前に含めることをお薦めします。たとえば、2012年第1四半期にリリースされた北米データの場合、適切なネットワーク名はROUTER_NA_Q112です。

すでに存在するネットワークの名前を使用してネットワークを作成すると、古いネットワークが新しいネットワークで置換されます。これはお薦めしません。最初に古いネットワークを削除してから(DELETE_ROUTER_NETWORKプロシージャを使用)、新しいネットワークを作成する必要があります。

E.2.2 DELETE_ROUTER_NETWORKプロシージャ

構文:

SDO_ROUTER_PARTITION.DELTE_ROUTER_NETWORK(
  LOG_FILE_NAME	IN VARCHAR2 := 'sdo_router_partition.log',
  NETWORK_NAME	IN VARCHAR2 := 'ROUTER_NETWORK',
  LOG_DELETE    IN BOOLEAN DEFAULT TRUE);

DELETE_ROUTER_NETWORKプロシージャは、ルーティング・エンジン・スキーマから実行する必要があり、ネットワーク名パラメータに一致するネットワークがスキーマに存在する必要があります。

LOG_FILE_NAMEパラメータは、ネットワーク削除時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ネットワークの削除を独自のログ・ファイルに記録するか、デフォルトのパーティション化ログ・ファイルsdo_router_partition.logに書き込むかを選択できます。

NETWORK_NAMEパラメータは、削除されるネットワークの名前です。この名前のネットワークが存在しない場合は、例外がスローされ、エラー・メッセージがログ・ファイルに書き込まれます。

LOG_DELETEパラメータは、削除操作がログ・ファイルに記録されるかどうかを制御します。このパラメータは、主にデバッグ目的で使用します。

E.2.3 ネットワーク作成例

この項では、ルーティング・エンジンで使用するサンプルNDMネットワークの作成ステップを説明します。

  1. ルーティング・エンジン・スキーマのルーティング・エンジン・ログ・ディレクトリを検証します。SDO_ROUTER_LOG_DIRが存在し、適切な権限を持っている必要があります。ルーティング・エンジン・スキーマにログインし、次の文を実行します。

    EXECUTE SDO_ROUTER_PARTITION.VALIDATE_ROUTER_LOG_DIR(
        'validate_log.log');
    

    検証が正常に完了すると、validate_log.logファイルに次のメッセージが含まれます。

    [INFO] PLSQL logging OK (ROUTER_SCHEMA)
    [INFO] Java logging OK (ROUTER_SCHEMA)
    [INFO] PLSQL logging OK (MDSYS)
    [INFO] Java logging OK (MDSYS)
    
  2. MDSYSスキーマのルーティング・エンジン・ログ・ディレクトリを検証します。SDO_ROUTER_LOG_DIRが存在し、適切な権限を持っている必要があります。MDSYSスキーマにログインし、ステップ1と同じ文を実行します。

  3. ルーティング・エンジン・スキーマで、次の問合せを使用して、既存のネットワークの名前を検索します。

    SELECT SUBSTR(view_name, 0, LENGTH(view_name)-7) Network_Name
     FROM user_views 
     WHERE view_name LIKE '%PBLOB$';
    

    結果が戻されない場合は、ステップ5に進みます。次のような結果が戻された場合は、次のステップに進み、新しいネットワークを作成する前にネットワークを削除します。

    NETWORK_NAME
    ------------
    <any-network-name>
    
  4. DELETE_NETWORKプロシージャを使用して、既存のネットワークを削除します。たとえば、既存のネットワーク名がROUTER_NA_Q112の場合は、次のようになります。

    EXECUTE SDO_ROUTER_PARTITION.DELETE_ROUTER_NETWORK(
        'delete_net.log', 'ROUTER_NA_Q112');
    

    削除が正常に完了すると、delete_net.logファイルに次のメッセージが含まれます。

    INFO: deleting the Routeserver network: ROUTER_NA_Q112
    
  5. CREATE_ROUTER_NETWORKプロシージャを使用して、新しいネットワークを作成します。次に例を示します。

    EXECUTE SDO_ROUTER_PARTITION.CREATE_ROUTER_NETWORK(
        'create_net.log', 'ROUTER_NA_112');
    

    作成操作が正常に完了すると、create_net.logファイルに次のメッセージが含まれます。

    INFO: creating the Routeserver network: ROUTER_NA_Q112
    INFO: rebuild edge table statistics
          creating views
          generating metadata

E.3 ルーティング・エンジン・データ

ルーティング・エンジンでは、ルーティング・エンジン・データとユーザー・データを使用します。ルーティング・エンジン・データは、EDGE、NODE、SIGN_POSTおよびPARTITION表に格納されます。

ルーティング・エンジン・データは、道路ネットワークをノードとエッジの方向付きグラフとしてモデル化します。パーティション化により、この道路ネットワークが2**N (2N)個のサブグラフ(ローカル・パーティション)と1つの高速道路パーティションに分割されます。道路ネットワークのノードはトポロジによりパーティション化されるため、各ローカル・パーティションには同じ数のノードが含まれます。ネットワーク内の各ノードは、1つのパーティションだけに必ず存在します。エッジは、1つのパーティションに完全に含まれる内部エッジまたは2つのパーティションのブリッジ(境界エッジ)にすることができます。パーティションはデータベースにBLOBとして格納されるため、キャッシュから簡単に読取りおよび削除できます。これにより、ルーティング・エンジンは道路ネットワーク全体がメモリーになくても動作できます。

パーティション1からNのローカル・パーティションは、すべてほぼ同じサイズです。ローカル・パーティションは、ルートの計算時に必要に応じてキャッシュに読み込まれます。これらのパーティションは、キャッシュが一杯になるまでキャッシュに残り、キャッシュが一杯になると、最も使用頻度の低いパーティションがスワップ・アウトされて、現在のルートの計算に必要なパーティション領域を解放します。

パーティション0 (ゼロ)は高速道路パーティションであり、2つの点でローカル・パーティションと異なります。

  • 道路ネットワークのトポロジ・パーティションではありません。高速道路情報のみを含む、道路ネットワークのサブグラフです。このため、高速道路パーティションはローカル・パーティションよりはるかに大きくなります。

  • ルーティング・エンジンの起動時にキャッシュに読み込まれ、常駐します。

道路ネットワークは3つのフェーズでパーティション化されます。最初のフェーズではデータをパーティション化し、必要なパーティションの数と、どのパーティションにノードおよびエッジが含まれるかを計算します。2番目のフェーズでは、これらのパーティションをBLOBに変換し、これらをデータベースに書き込みます。最後のフェーズでは、ルーティング・エンジン・ネットワークを再構築し、ユーザー・データをパーティション化し、ユーザー・データBLOBをデータベースに書き込みます。

ルーティング・エンジン・データはバージョン管理されます。パーティション化の第3フェーズ中に、ルーティング・エンジン・バージョンがSDO_ROUTER_DATA_VERSION表に書き込まれ、このデータ・セットのデータ・バージョンになります。別のルーティング・エンジン・スキーマで使用するためにデータ・セットがエクスポートされる場合、この新しいルーティング・エンジンのバージョンはデータ・セットのデータ・バージョンと互換である必要があります。

ルーティング・エンジン・データは、Oracle Data Format (ODF)でデータ・ベンダーによって提供され、すでにパーティション化されています。一般に、顧客がデータを再パーティション化する必要はありません。ただし、異なるパーティション・サイズのパフォーマンス・テストやデータ・セットのマージを行う場合など、ルーティング・エンジン・データを再パーティション化することが必要な場合もあります。

ノート:

ルーティング・エンジン・データの再パーティション化は、時間とリソースを非常に要する操作です。使用されるハードウェアによっては、北米やEUなどの大きなデータ・セットの再パーティション化の実行に1日以上かかることも少なくありません。

E.3.1 PARTITION_ROUTERプロシージャ

構文:

SDO_ROUTER_PARTITION.PARTION_ROUTER(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    MAX_V_NO      IN NUMBER DEFAULT 10000,
    DRIVING_SIDE  IN VARCHAR2 := 'R',
    NETWORK_NAME  IN VARCHAR := 'ROUTER_NETWORK',
    MAX_MEMORY    IN NUMBER := 1.75,
    CLEANUP       IN BOOLEAN DEFAULT TRUE,
    USE_SECUREFILES           IN BOOLEAN DEFAULT TRUE,
    GENERATE_11G_RESTRICTIONS IN BOOLEAN DEFAULT TRUE);

PARTITION_ROUTERプロシージャは、ルーティング・エンジンOracle Data Formatデータを含むルーティング・エンジン・スキーマから実行する必要があります。このプロシージャでは、道路ネットワークをパーティション化し、BLOB形式のルーティング・エンジン・データを含むPARTITION表を作成します。

LOG_FILE_NAMEパラメータは、ルーティング・エンジン・パーティション化時に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ユーザーはログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logを使用できます。

MAX_V_NOパラメータでは、パーティションに含まれるノードの最大数を指定します。NODE表に少なくとも(MAX_V_NO+1)個のノードが必要です。

DRIVING_SIDEパラメータはレガシー・パラメータです。その用途は、リリース11gの右左折制限を生成することだけです。有効な値はR(右側)およびL(左側)です。NETWORK_NAMEパラメータでは、パーティション化時に作成するルーティング・エンジン・ネットワークの名前を指定します。

MAX_MEMORYパラメータでは、パーティション化プロセスに使用する最大Javaヒープ・サイズ(ギガバイト)を指定します。ほとんどのデータ・セットではデフォルト値の1.75Gで十分です。このパラメータは、標準よりも大幅に小さいまたは大幅に大きいデータ・セットをパーティション化する場合にのみ調整する必要があります。

CLEANUPパラメータはデバッグに使用されます。デフォルトでは、ルーティング・エンジン・データのパーティション化中に作成されるすべての中間表がクリーンアップされます。パーティション化中に問題が発生する場合は、これらの表をそのまま残す(CLEANUP=>FALSEを指定する)と、かなりのデバッグ情報を提供できます。

USE_SECUREFILESパラメータでは、ルーティング・エンジンのBLOBをBASICFILEまたはSECUREFILE形式で作成できます。SECUREFILE形式の使用をお薦めします。

GENERATE_11G_RESTRICTIONSパラメータでは、リリース11gの右左折制限データの生成を制御します。Oracle Databaseリリース11gでは、基本的な右左折制限が実装され、PARTITION表に格納されました。Oracle Databaseリリース12cでは、右左折制限が拡張され、ユーザー・データ表ROUTER_TURN_RESTRICTION_DATAに格納されます。データ・プロバイダがまだリリース11g Route Serverを使用しているユーザーにリリース12cでパーティション化されたデータを提供できるようにするために、両方のタイプの右左折制限がデフォルトで生成されます。リリース12c Route Server用にOracleリリース12cでデータを再パーティション化する場合は、このパラメータをFALSEに設定できます。

E.3.2 CLEANUP_ROUTERプロシージャ

構文:

SDO_ROUTER_PARTITION.CLEANUP_ROUTER(
    ALL_TABLES IN BOOLEAN DEFAULT TRUE);

CLEANUP_ROUTERプロシージャは、ルーティング・エンジンの状態をリセットして、すべての表および索引が適切な順序になり、すべての中間表が削除されるようにします。これは、パーティション化が失敗した場合、またはCLEANUPフラグがFALSEに設定されたパーティション化が正常に完了した場合に役立ちます。

ALL_TABLESパラメータでは、リセットする対象を制御します。FALSEに設定されている場合、ルーティング・エンジンは安定した状態にリセットされますが、中間表はデバッグ目的で残されます。これはパーティション化が失敗した場合に役立つことがあります。TRUEに設定されている場合、ルーティング・エンジンは安定した状態にリセットされ、パーティション化で使用されたすべての中間表が削除されます。これは、CLEANUPパラメータをFALSEに設定して実行されたPARTITION_ROUTERプロシージャが正常に終了した後のクリーンアップに役立つことがあります。

E.3.3 DUMP_PARTITIONSプロシージャ

構文:

DUMP_PARTITIONS(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    START_PID     IN NUMBER DEFAULT 0,
    END_PID       IN NUMBER DEFAULT -1,
    VERBOSE       IN BOOLEAN DEFAULT FALSE);

DUMP_PARTITIONSプロシージャは、ルーティング・エンジン・データ・パーティションBLOBの内容をダンプします。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回実行して、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続しないパーティション範囲を1つのコールでダンプすることはできません。

LOG_FILE_NAMEパラメータは、ルーティング・エンジン・パーティションのダンプ時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

START_PIDパラメータは、ダンプする最初のパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。

END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDより小さい場合、エラー・メッセージがログに書き込まれます。

VERBOSEパラメータは、ダンプするデータを制御します。デフォルト値のFALSEでは、ノードとエッジの数およびBLOBのサイズを含む、パーティション情報のサマリーがダンプされます。このパラメータをTRUEに設定した場合は、サマリーに加えて、パーティション内のすべてのノードおよびエッジを説明する情報がすべてダンプされます。

E.3.4 VALIDATE_PARTITIONSプロシージャ

構文:

VALIDATE_PARTITIONS(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    START_PID     IN NUMBER DEFAULT 0,
    END_PID       IN NUMBER DEFAULT -1,
    VERBOSE       IN BOOLEAN DEFAULT FALSE);

VALIDATE_PARTITIONSプロシージャでは、ルーティング・エンジン・データ・パーティションBLOBの内容を検証します。大きなデータセット内のすべてのパーティションの検証は実行に時間がかかる場合がありますが、これはすべてのパーティション内のすべてのバイトを読み取ってパーティションをルーティングに使用する準備ができていることを確認するための最も速い方法です。検証を実行する必要があるのは、パーティションに問題があると疑われる場合のみです。検証が実行される場合は、VERBOSEフラグをFALSEに設定してすべてのパーティションで初期検証を実行することをお薦めします。問題が検出された場合、VERBOSEをtrueに設定して問題のパーティションに対して検証を再実行します。

LOG_FILE_NAMEパラメータは、ルーティング・エンジン・データ・パーティションの検証時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

START_PIDパラメータは、検証する最初のパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。

END_PIDパラメータは、検証する最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションが検証されます。END_PIDがSTART_PIDより小さい場合、エラー・メッセージがログに書き込まれます。

VERBOSEパラメータは、検証メッセージの詳細レベルを制御します。デフォルト値のFALSEでは、パーティションの検証が成功したか失敗したかがログに記録されます。このパラメータがTRUEに設定されている場合は、BLOBの各要素の検証がログに記録されます。

E.3.5 GET_VERSIONプロシージャ

構文:

GET_VERSION(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log');

GET_VERSIONプロシージャは、SDO_ROUTER_DATA_VERSION表を問い合せてルーティング・エンジン・データのバージョンを取得し、結果をログ・ファイルに書き込みます。(かわりに、SQLを使用してSDO_ROUTER_DATA_VERSION表に対する問合せを行うことができます。)

LOG_FILE_NAMEパラメータは、ルーティング・エンジン・データ・バージョンが書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

E.3.6 ルーティング・エンジン・データの例

この項には、次の操作の例が記載されています。

E.3.6.1 小さいデータ・セットのパーティション化

例E-1に、小さいデータ・セットのパーティション化を示します。この例のデータ・セットは、San Franciscoの中心から半径100マイルの道路ネットワーク・データです。このデータ・セットには、約520,000個のノードと1,200,00個のエッジが含まれます。ルーティング・エンジン・データをパーティション化するには、ルーティング・エンジン・スキーマから文を実行します。

例E-1 小さいデータ・セットのパーティション化

EXECUTE SDO_ROUTER_PARTITION.PARTITION_ROUTER(
   'sdo_router_partition.log', 1000, 'R', 
   'ROUTER_SF_NET', .75, FALSE, FALSE, FALSE);

******** Beginning SDO Router partitioning
** Schema: ROUTER_SF_SCHEMA
** Logfile location:/scratch/logs/sdo_router_partition.log
** Nodes per partition: 1000
** Driving side: R
** Router network name: ROUTER_SF_NET
** Max JVM Memory Size: .75GB (805306368 bytes)
** Cleanup temporary files: FALSE
** BLOBs stored in BASICFILE format
** Generating 11g turn restrictions: FALSE
[This header is followed by extensive logging of the partitioning process.]

この例では、1,025個のパーティション、1個の高速道路パーティションおよび1,024個のローカル・パーティションが生成されます。パーティション当たり平均516個のノードがあります。走行側が設定されますが、リリース11gの右左折制限はリクエストされていないため使用されません。Javaの最大ヒープ・サイズは、このような小さいデータ・セットに十分な4分の3GBに設定されます。パーティションBLOBはBasicfile形式で書き込まれ、パーティション化の完了時に中間表はクリーンアップされていません。

パーティション化で残された中間表をクリーンアップするには、次のように入力します。

EXECUTE SDO_ROUTER_PARTITION.CLEANUP_ROUTER()
E.3.6.2 完全データ・セットのパーティション化

例E-2に、完全データ・セットのパーティション化を示します。この例のデータ・セットは、北米の道路ネットワーク全体です。このデータ・セットには、約3,000万個のノードと7,400万個のエッジが含まれます。ルーティング・エンジン・データをパーティション化するには、ルーティング・エンジン・スキーマから文を実行します。

例E-2 完全データ・セットのパーティション化

EXECUTE SDO_ROUTER_PARTITION.PARTITION_ROUTER(
   'sdo_router_partition.log, 32000, 'R', 'ROUTER_NA_NET');

******** Beginning SDO Router partitioning
** Schema: ROUTER_NA_SCHEMA
** Logfile location:/scratch/logs/sdo_router_partition.log
** Nodes per partition: 32000
** Driving side: R
** Router network name: ROUTER_NA_NET
** Max JVM Memory Size: 1.75GB (1879048192 bytes)
** Cleanup temporary files: TRUE
** BLOBs stored in SECUREFILE format
** Generating 11g turn restrictions: TRUE
[This header is followed by extensive logging of the partitioning process.]
++ Partitioning a data set of this size is time and resource intensive ++
 

この例では、1,025個のパーティション、1個の高速道路パーティションおよび1,024個のローカル・パーティションが生成されます。パーティション当たり平均29,443個のノードがあります。走行側は"右側"に設定され、リクエストされたOracle 11g右左折制限の生成に使用されます。デフォルトのJavaヒープ・サイズの1.75GBが使用されます。すべてのルーティング・エンジン・データおよびユーザー・データBLOBはSECUREFILE形式で格納され、すべての中間表はパーティション化が正常終了した後にクリーンアップされます。

E.3.6.3 パーティションの内容のダンプ

例E-3に、San Franciscoデータ・セットからの、デフォルトのVERBOSE値(FALSE)が設定されたパーティション0から3のダンプを示します。BLOBサイズは、高速道路パーティションとローカル・パーティションとで異なります。高速道路パーティションは完全に自己包含であるため、アウトバウンド・エッジはないことにも注意してください。ローカル・パーティションには、他のローカル・パーティションに接続する出発エッジがあります。

例E-3 パーティションの内容のダンプ(VERBOSE = FALSE)

EXEC SDO_ROUTER_PARTITION.DUMP_PARTITIONS(
   'dump_part0-3.log', 0, 3);

******** Beginning partition dump
** Logfile location: /scratch/logs/dump_part0-3.log
** Routeserver data version: 12.1.0.2.1
** Start partition id: 0
** End partition id: 3
** Verbose mode: FALSE
[INFO] Starting dump of partition 0
  Number of Nodes: 19392
  Number of Nonboundary Edges: 22706
  Number of Outgoing Boundary Edges: 0
  Number of Incoming Boundary Edges: 0
  Stored Partition ID: 0
  Blob Length: 1748332
 
[INFO] Starting dump of partition 1
  Number of Nodes: 516
  Number of Nonboundary Edges: 1190
  Number of Outgoing Boundary Edges: 49
  Number of Incoming Boundary Edges: 49
  Stored Partition ID: 1
  Blob Length: 81372
 
[INFO] Starting dump of partition 2
  Number of Nodes: 516
  Number of Nonboundary Edges: 1099
  Number of Outgoing Boundary Edges: 68
  Number of Incoming Boundary Edges: 68
  Stored Partition ID: 2
  Blob Length: 78388
[INFO] Starting dump of partition 3
  Number of Nodes: 516
  Number of Nonboundary Edges: 1101
  Number of Outgoing Boundary Edges: 60
  Number of Incoming Boundary Edges: 60
  Stored Partition ID: 3
  Blob Length: 77756

例E-4 パーティションの内容のダンプ(VERBOSE = TRUE)

例E-4に、San Franciscoデータ・セットからの、VERBOSEがTRUEに設定されたパーティション8のダンプを示します。アウトバウンド・エッジは終了するパーティションIDをログに記録し、インバウンド・エッジは開始するパーティションIDをログに記録します。

EXEC SDO_ROUTER_PARTITION.DUMP_PARTITIONS(
   'dump_part8.log', 8, 8, TRUE);

******** Beginning partition dump
** Logfile location:/scratch/logs/dump_part8.log
** Routeserver data version: 12.1.0.2.1
** Start partition id: 8
** End partition id: 8
** Verbose mode: TRUE
[INFO] Starting dump of partition 8
  Number of Nodes: 517
  Number of Non-boundary Edges: 1145
  Number of Outgoing Boundary Edges: 37
  Number of Incoming Boundary Edges: 37
  Stored Partition ID: 8
  Blob Length: 77957

  Node information for partition 8:
    Node ID/X/Y/Highway: 84096388/-120.50809/37.98399/false
    In Edges(3): -120862233, -120862227, 120862232
    Out Edges(3): -120862232, 120862227, 120862233
    *******************************
    Node ID/X/Y/Highway: 84098023/-120.4882/37.99961/true
    In Edges(3): -127829801, -120428259, 776737023
    Out Edges(3): -776737023, 120428259, 127829801
    *******************************
*** Node information for the other 515 nodes...

  Non-boundary Edge information for partition 8:
  Internal Edges(1145):
    Edge ID/Start Node ID/End Node ID: 910681077/942981443/206194644
    Length/Speed Limit/Function Class: 130.3/5/5
    *******************************
    Edge ID/Start Node ID/End Node ID: -105461005/206194651/206194644
    Length/Speed Limit/Function Class: 229.93/11/5
    *******************************
*** Edge information for the other 1143 internal edges...

   Outbound Boundary Edges(37):
    Edge ID/Start Node ID/End Node ID: -724019630/253265936/810705655
    End Node Partition ID/Length: 7/511.07
    Speed Limit/Function Class: 26/2
    *******************************
    Edge ID/Start Node ID/End Node ID: -105462459/252152310/206193109
    End Node Partition ID/Length: 7/814.68
    Speed Limit/Function Class: 11/5
    *******************************
*** Edge information for the other 35 outbound boundary edges...
 
   Inbound Boundary Edges(37):
    Edge ID/Start Node ID/End Node ID: 724019630/810705655/253265936
    Start Node Partition ID/Length: 7/511.07
    Speed Limit/Function Class: 26/2
    *******************************
    Edge ID/Start Node ID/End Node ID: 105462459/206193109/252152310
    Start Node Partition ID/Length: 7/814.68
    Speed Limit/Function Class: 11/5
    *******************************
*** Edge information for the other 35 inbound boundary edges...
E.3.6.4 パーティションの内容の検証

例E-5に、デフォルトのVERBOSE値(FALSE)が設定された、データ・セット内のすべてのパーティションの内容の検証を示します。

例E-5 パーティションの内容の検証(VERBOSE = FALSE)

EXEC SDO_ROUTER_PARTITION.VALIDATE_PARTITIONS(
   'validate_all_partitions.log');

******** Beginning partition validation
** Logfile location:/scratch/logs/validate_all_partitions.log
** Routeserver data version: 12.1.0.2.1
** Start partition id: 0
** End partition id: 1024
** Verbose mode: FALSE
[INFO] Starting validation of partition 0
[INFO] Starting validation of partition 1
[INFO] Starting validation of partition 2
…
[INFO] Starting validation of partition 1022
[INFO] Starting validation of partition 1023
[INFO] Starting validation of partition 1024
[INFO] Partition validation complete

例E-6 パーティションの内容の検証(VERBOSE = TRUE)

例E-6に、VERBOSEがTRUEに設定されたパーティション7および8の内容の検証を示します。

EXEC SDO_ROUTER_PARTITION.VALIDATE_PARTITIONS(
   'validate_part7-8.log', 7, 8, TRUE);

******** Beginning partition validation
** Logfile location: /scratch/logs/validate_part7-8.log
** Routeserver data version: 12.1.0.2.1
** Start partition id: 7
** End partition id: 8
** Verbose mode: TRUE
[INFO] Starting validation of partition 7
  Header node count: OK
  Header edge count: OK
  BLOB partition id: OK
  BLOB length: OK
  BLOB node count: OK
  BLOB information for 516 nodes: OK
  BLOB information for 1154 internal edges: OK
  BLOB information for 66 outbound boundary edges: OK
  BLOB information for 65 inbound boundary edges: OK

[INFO] Starting validation of partition 8
  Header node count: OK
  Header edge count: OK
  BLOB partition id: OK
  BLOB length: OK
  BLOB node count: OK
  BLOB information for 517 nodes: OK
  BLOB information for 1145 internal edges: OK
  BLOB information for 37 outbound boundary edges: OK
  BLOB information for 37 inbound boundary edges: OK

[INFO] Partition validation complete
E.3.6.5 ルーティング・エンジン・データのバージョンの問合せ

例E-7では、ルーティング・エンジン・データのバージョン番号を問い合せて、結果をログ・ファイルに書き込みます。

SELECT * FROM sdo_router_data_version;

例E-7 ルーティング・データのバージョンの問合せ

EXEC SDO_ROUTER_PARTITION.GET_VERSION('version.log');

INFO: Routeserver data version: 12.1.0.2.1

かわりに、次のSQL問合せを使用して、ルーティング・エンジン・データのバージョンを取得することもできます。

E.4 ユーザー・データ

ユーザー・データは、道路ネットワークに対する制限をモデル化します。現在、ルーティング・エンジンには、制限付き運転マヌーバ(右左折制限)ユーザー・データおよびトラック輸送ユーザー・データの2種類のユーザー・データがあります。

ユーザー・データはバージョン管理されます。ユーザー・データがパーティション化されると、SDO_ROUTER_DATA_VERSION表のルーティング・エンジン・データ・バージョンがユーザー・データBLOBに格納されます。ユーザー・データがキャッシュに格納される場合、ユーザー・データ・パーティションに格納されるバージョンは、SDO_ROUTER_DATA_VERSION表のバージョンと互換である必要があります。

ユーザー・データのパーティション化は、一般に非常に高速な操作です。ルーティング・エンジン・データのパーティション化の一部として実行するか、ルーティング・エンジン・データがすでにパーティション化されている場合はスタンドアロン操作として実行できます。いずれの場合も、ユーザー・データのパーティション化では、パーティション化されたルーティング・エンジン・データがガイドとして使用され、パーティション化操作が大幅に高速化されます。

ユーザー・データ・パーティションの数は、ルーティング・エンジン・データ・パーティションの数以下です。ルーティング・エンジン・データ・パーティションに関連付けられているユーザー・データがない場合、ユーザー・データ・パーティションは生成されません。ユーザー・データ・ローカル・パーティションは、関連するルーティング・エンジン・データ・パーティションとともにキャッシュに出し入れされます。ユーザー・データ高速道路パーティションは、ルーティング・エンジンの起動時にロードされ、キャッシュに常駐します。

リリース12cでは、制限付き運転マヌーバ・ユーザー・データはデータ・ベンダーが提供するルーティング・エンジンODFデータの一部です。トラック輸送ユーザー・データはルーティング・エンジンODFデータとともに提供されず、別途購入する必要があります。リリース12c以降のルーティング・エンジンの起動時には、使用可能なユーザー・データが検出されて使用されます。リリース12cより前のすべてのバージョンのルーティング・エンジンでは、ユーザー・データが検出されず、ルーティング・エンジン・データのみ使用してルートが計算されます。

E.4.1 制限付き運転マヌーバ・ユーザー・データ

制限付き運転マヌーバは、右折を許可しない単純な右左折制限など、あるエッジから別のエッジへの移動を許可しないという単純なものにすることができます。または、開始エッジ、中央分離帯上のエッジおよび反対方向へ向かう道路上のエッジがある、中央分離帯で分割されている道路上でのUターン制限など、多くのエッジが関係する非常に複雑なマヌーバの場合もあります。

ルーティング・エンジンでは、制限付き運転マヌーバに3つの表を使用します。最初の2つの表ROUTER_NAV_STRANDおよびROUTER_CONDITIONには、制限付きマヌーバ・ユーザー・データを作成するためのRAWデータが含まれます。

最後の表ROUTER_TURN_RESTRICTION_DATAには、BLOB形式で格納された、パーティション化された制限付きマヌーバ・ユーザー・データが含まれます。制限付きマヌーバ・データをパーティション化すると、そのデータを同じパーティションのルーティング・エンジン・データとともにキャッシュに出し入れできます。

リリース12cでは、制限付き運転マヌーバ・ユーザー・データはデータ・ベンダーが提供するODFデータの一部です。リリース12cのルーティング・エンジンの起動時に、右左折制限ユーザー・データが検出されて使用されます。リリース11cのルーティング・エンジンが起動された場合、ユーザー・データは検出されず、ルーティング・エンジン・データのみ使用してルートが計算されます。

制限付き運転マヌーバ・ユーザー・データはODFデータ・セットの一部であるため、すでにパーティション化されています。一般に、このユーザー・データを再パーティション化する理由はありません。ただし、ルーティング・エンジン・データが再パーティション化された場合は、ユーザー・データも再パーティション化されます。制限付き運転マヌーバ・ユーザー・データを再作成することで、ルーティング・エンジン・データを再パーティション化しなくても、右左折制限データを再パーティション化することもできます。

E.4.2 CREATE_TURN_RESTRICTION_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.CREATE_TURN_RESTRICTION_DATA(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    CLEANUP       IN BOOLEAN DEFAULT TRUE);

CREATE_TURN_RESTRICTION_DATAプロシージャは、制限付き運転マヌーバRAWデータ表ROUTER_NAV_STRANDおよびROUTER_CONDITIONを含むルーティング・エンジン・スキーマから実行する必要があります。このプロシージャは、制限付き運転マヌーバ・データをパーティション化し、BLOB形式の右左折制限ユーザー・データを含むROUTER_TURN_RESTRICTION_DATA表を作成します。右左折制限ユーザー・データの作成にはデータ・バージョンへのアクセスが必要であるため、SDO_ROUTER_DATA_VERSION表がルーティング・エンジン・スキーマに存在する必要があります。

LOG_FILE_NAMEパラメータは、右左折制限の生成時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logを使用できます。

CLEANUPパラメータはデバッグに使用されます。デフォルトでは、右左折制限の生成中に作成されるすべての中間表がクリーンアップされます。右左折制限の生成に問題がある場合は、これらの表をそのまま残すと、かなりのデバッグ情報を提供できます。

E.4.3 DUMP_TURN_RESTRICTION_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.DUMP_TURN_RESTRICTION_DATA(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    START_PID     IN NUMBER DEFAULT 0,
    END_PID       IN NUMBER DEFAULT -1,
    DUMP_SOFT_RESTRICTIONS IN BOOLEAN DEFAULT FALSE);

DUMP_TURN_RESTRICTION_DATAプロシージャでは、右左折制限ユーザー・データ・パーティションBLOBの内容がダンプされます。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回コールして、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続しないパーティション範囲を1つのコールでダンプすることはできません。

LOG_FILE_NAMEパラメータは、右左折制限ユーザー・データ・パーティションのダンプ時に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

START_PIDパラメータは、ダンプする最初のパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。

END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDより小さい場合、エラー・メッセージがログに書き込まれます。

DUMP_SOFT_RESTRICTIONSパラメータでは、右左折制限データのダンプ方法を制御します。3つ以上のエッジがある右左折制限では、ソフト制限は右左折制限を部分的に説明する一連のエッジです。これはデバッグ・パラメータであり、一般にはデフォルト値のFALSEに設定したままにする必要があります。

E.4.4 CREATE_TRUCKING_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.CREATE_TRUCKING_DATA(
    LOG_FILE_NAME IN VARCHAR2 := ' sdo_router_partition.log',
    CLEANUP       IN BOOLEAN DEFAULT TRUE);

CREATE_TRUCKING_DATAプロシージャは、RAWトラック輸送データ表ROUTER_TRANSPORTを含むルーティング・エンジン・スキーマから実行する必要があります。このプロシージャでは、トラック輸送データをパーティション化し、BLOB形式のトラック輸送ユーザー・データを含むROUTER_TRUCKING_DATA表を作成します。トラック輸送ユーザー・データの作成にはデータ・バージョンへのアクセスが必要であるため、SDO_ROUTER_DATA_VERSION表がルーティング・エンジン・スキーマに存在する必要があります。

LOG_FILE_NAMEパラメータは、トラック輸送制限の生成時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logを使用できます。

CLEANUPパラメータはデバッグに使用されます。デフォルトでは、トラック輸送制限の生成中に作成されるすべての中間表がクリーンアップされます。トラック輸送制限の生成に問題がある場合は、これらの表をそのまま残すと、かなりのデバッグ情報を提供できます。

E.4.5 DUMP_TRUCKING_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.DUMP_TRUCKING_DATA(
    LOG_FILE_NAME    IN VARCHAR2 := ' sdo_router_partition.log',
    START_PID        IN NUMBER DEFAULT 0,
    END_PID          IN NUMBER DEFAULT -1,
    SKIP_UNSUPPORTED IN BOOLEAN DEFAULT TRUE);

DUMP_TRUCKING_DATAプロシージャでは、トラック輸送制限ユーザー・データ・パーティションBLOBの内容がダンプされます。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回コールして、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続しないパーティション範囲を1つのコールでダンプすることはできません。

LOG_FILE_NAMEパラメータは、トラック輸送制限ユーザー・データ・パーティションのダンプ時に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

START_PIDパラメータは、ダンプする最初のパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。

END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDより小さい場合、エラー・メッセージがログに書き込まれます。

SKIP_UNSUPPORTEDパラメータでは、トラック輸送制限データのダンプ方法を制御します。ユーザー・データには、将来の作業用に含まれ、現在はサポートされていないいくつかの制限が含まれます。SKIP_UNSUPPORTEDをTRUE (デフォルト)に設定すると、現在サポートされているトラック輸送制限のみダンプされます。SKIP_UNSUPPORTEDをFALSEに設定すると、すべてのトラック輸送制限がダンプされます。

E.4.6 CREATE_TIMEZONE_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.CREATE_TIMEZONE_DATA(
    LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log',
    CLEANUP       IN BOOLEAN DEFAULT TRUE);

CREATE_TIMEZONE_DATAプロシージャでは、ROUTER_TIMEZONE_DATA表のユーザー・データを作成します。データの再パーティション化時にも実行する必要があります。

LOG_FILE_NAMEパラメータは、操作時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logを使用できます。

CLEANUPパラメータはデバッグに使用されます。デフォルトでは、操作中に作成されたすべての中間表がクリーンアップされます。操作に問題がある場合は、これらの表をそのまま残すと、かなりのデバッグ情報を提供できます。

E.4.7 DUMP_TIMEZONE_DATAプロシージャ

構文:

SDO_ROUTER_PARTITION.DUMP_TIMEZONE_DATA(
    LOG_FILE_NAME    IN VARCHAR2 := ' sdo_router_partition.log',
    START_PID        IN NUMBER DEFAULT 0,
    END_PID          IN NUMBER DEFAULT -1);

DUMP_TIMEZONE_DATAプロシージャでは、タイム・ゾーン・データ・パーティションBLOBの内容がダンプされます。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回コールして、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続しないパーティション範囲を1つのコールでダンプすることはできません。

LOG_FILE_NAMEパラメータは、タイム・ゾーン・ユーザー・データ・パーティションのダンプ時に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.logに書き込むことができます。

START_PIDパラメータは、ダンプする最初のパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。

END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDより小さい場合、エラー・メッセージがログに書き込まれます。

E.4.8 ユーザー・データの例

この項では、ユーザー・データに関連する操作の例を示します。これらの例のデータ・セットは、San Franciscoの中心から半径100マイルの道路ネットワーク・データです。このデータ・セットには、約520,000個のノードと、トラック輸送制限のある82,000個のエッジと制限付き運転マヌーバのある30,000個のエッジを含む1,200,00個のエッジが含まれます。

E.4.8.1 右左折制限ユーザー・データの再構築

例E-8では、右左折制限ユーザー・データを再構築します。クリーンアップはFALSEに設定されているため、右左折制限ユーザー・データの再構築に使用される中間表は削除されません。(これらの表を削除するには、SDO_ROUTER_PARTITION.CLEANUP_ROUTERプロシージャを実行します。)

例E-8 右左折制限ユーザー・データの再構築

EXEC SDO_ROUTER_PARTITION.CREATE_TURN_RESTRICTION_DATA('rebuild_turn_restriction_data.log', FALSE);

******** Begin generation of turn restriction user data
** Logfile location: /scratch/logs/rebuild_turn_restriction_data.log
[INFO] Generating turn restriction user data for 995 partitions, data version (12.1.0.1.2)
 
[INFO] SQL String: CREATE TABLE new_turn_restriction_data(partition_id NUMBER, num_edges NUMBER, turn_restriction_data BLOB) LOB(turn_restriction_data) STORE AS (STORAGE (INITIAL 512K NEXT 128K MAXEXTENTS UNLIMITED) CHUNK 32768 NOCACHE NOLOGGING)
[INFO] ---- Writing 573 edges for partition 0
[INFO] ---- Writing 16 edges for partition 1
[INFO] ---- Writing 10 edges for partition 2
 
*** Note that partition 3 contains no turn restriction user data
 
[INFO] ---- Writing 8 edges for partition 4
[INFO] ---- Writing 23 edges for partition 5
[INFO] ---- Writing 39 edges for partition 6
*** Many more Writing partition messages
[INFO] ---- Writing 4 edges for partition 1023
[INFO] ---- Writing 11 edges for partition 1024
 
INFO: creating the final turn restriction user data table
INFO: create index rtrud_p_idx on router_turn_restriction_data table
******** Completed generation of turn restriction user data
E.4.8.2 すべてのハード右左折制限ユーザー・データBLOBのダンプ

例E-9では、すべてのハード右左折制限ユーザー・データBLOBをダンプします。(ソフト制限のダンプでは、はるかに大きなダンプ・ファイルが生成され、右左折制限制約で問題をデバッグする場合にのみ役立ちます。)

例E-9 すべてのハード右左折制限ユーザー・データBLOBのダンプ

EXEC SDO_ROUTER_PARTITION.DUMP_TURN_RESTRICTION_DATA('dump_all_turn_restrictions.log');

******** Beginning turn restriction dump
** Logfile location: /scratch/logs/dump_all_turn_restrictions.log
** Routeserver data version: 12.1.0.1.2                  (A)
** Start partition id: 0
** End partition id: 1024
** Dumping soft restrictions: FALSE

Starting turn restriction dump for partition 0, blob length 19956 bytes
  Data version: 12.1.0.1.2
  Partition 0 has 573 edges with turn restrictions       (B)
    edge id -937799058 has 1 turn restrictions
      Restriction Type/Attributes: Hard/None
      AppliesTo(959): Trucks, Through Traffic, Taxies, Motorcycles,
                      Emergency Vehicles, Delivery Vehicles, Carpools,
                      Buses, Automobiles
      Subpath(1): 24501308
    *******************************
    edge id -936524317 has 2 turn restrictions           (C)
      Restriction Type/Attributes: Hard/None
      AppliesTo(943): Trucks, Through Traffic, Taxies, Motorcycles,
                      Delivery Vehicles, Carpools, Buses, Automobiles
      Subpath(1): -724922777
      -------
      Restriction Type/Attributes: Hard/None
      AppliesTo(959): Trucks, Through Traffic, Taxies, Motorcycles,
                      Emergency Vehicles, Delivery Vehicles, Carpools,
                      Buses, Automobiles
      Subpath(1): 936524317
    *******************************
    edge id -932185370 has 2 turn restrictions
      Restriction Type/Attributes: Hard/None
      AppliesTo(1023): All Vehicles
      Subpath(1): 836074944                              
      -------
      Restriction Type/Attributes: Hard/None
      AppliesTo(1023): All Vehicles
      Subpath(1): -24638792
    *******************************
    edge id 834380593 has 1 turn restrictions            (D)
      Restriction Type/Attributes: Hard/None
      AppliesTo(943): Trucks, Through Traffic, Taxies, Motorcycles,
                      Delivery Vehicles, Carpools, Buses, Automobiles
      Subpath(4): 112065672, -112065610, -112008660, -834380591
    *******************************

*** Dump of the remaining restrictions in Partition 0
Starting turn restriction dump for partition 1, blob length 520 bytes
  Partition 1 has 16 edges with turn restrictions        (E)
    edge id -806530190 has 1 turn restrictions      
      Restriction Type/Attributes: Hard/None
      AppliesTo(703): Trucks, Taxies, Motorcycles, Emergency Vehicles,
                      Delivery Vehicles, Carpools, Buses, Automobiles
      Subpath(1): 120865027
    *******************************
*** Dump of the remaining restrictions in Partition 1 through 1024

例E-9では、次のことを示しています。

  • (A): 標準ユーザー・ダンプ・ヘッダーには、ログ・ファイルの場所とダンプで使用されるパラメータが含まれます。SDO_ROUTER_DATA_VERSION表から問合せされるルーティング・エンジン・データ・バージョンも含まれます。このデータ・バージョンは、パーティション0のBLOBのヘッダーに格納されるデータ・バージョンと一致する必要があります。

  • (B): パーティション0のBLOBのBLOBヘッダー・セクションでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。パーティション0のBLOBヘッダーにはユーザー・データ・バージョンも含まれます。このバージョンは、SDO_ROUTER_DATA_VERSION表にあるデータ・バージョンと一致する必要があります。

  • (C): エッジ-936524317の右左折制限のダンプでは、このエッジには2つの単純な右左折制限が関連付けられています。どちらの制限も、エッジ-936524317へのサブパスで単一エッジからの移動を許可しない単純な右左折制限です。制限が適用される車両の違いにも注意してください。最初の制限は緊急車両に適用されませんが、2つ目の制限は緊急車両にも適用されます。

  • (D): エッジ834380593には1つの右左折制限のみありますが、記述されている制限は単純な右左折よりもはるかに複雑です。エッジ834380593の直前のサブパスがエッジ-834380591で開始するサブパスと一致し、エッジ-112008660、-112065610、112065672を厳密にこの順序で通過する場合、マヌーバは許可されません。現在のエッジへのサブパスに、リストされているサブパス・エッジの1つがない場合、またはサブパス内のエッジの順序が異なる場合、マヌーバは許可されます。

  • (E): ローカル・パーティションのBLOBヘッダーでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。

E.4.8.3 トラック輸送ユーザー・データの再構築

例E-10では、トラック輸送ユーザー・データを再構築します。クリーンアップではデフォルト値のTRUEが使用されるため、右左折制限ユーザー・データの再構築に使用される表は構築完了時に削除されます。

例E-10 トラック輸送ユーザー・データの再構築

EXEC SDO_ROUTER_PARTITION.CREATE_TRUCKING_DATA('rebuild_trucking_data.log');
******** Begin generation of trucking user data
** Logfile location:/scratch/logs/rebuild_trucking_data.log
[INFO] Generating trucking user data for 974 partitions, 
data version (12.1.0.1.2)                                (A)
 
[INFO] SQL String: CREATE TABLE new_trucking_data
(partition_id NUMBER, num_edges NUMBER, trucking_data BLOB) LOB(trucking_data) STORE AS (STORAGE (INITIAL 512K NEXT 128K MAXEXTENTS UNLIMITED) CHUNK 32768 NOCACHE NOLOGGING)

INFO: creating the final trucking user data table
INFO: create index rtud_p_idx on router_trucking_data table
******** Completed generation of trucking user data

例E-10では、次のことを示しています。

  • (A): ルーティング・エンジン・データの1,023個のローカル・パーティションに比べて、974パーティションのトラック輸送ユーザー・データしかないことに注意してください(例E-9の出力を参照)。パーティションがユーザー・データ出力にない場合、これは関連するルーティング・エンジン・データ・パーティションのトラック輸送データがないことを意味します。

E.4.8.4 トラック輸送ユーザー・データ制限のダンプ

例E-11は、トラック輸送ユーザー・データの制限をダンプします。この例では、パーティション0から25のサポートされる制限をダンプします。ダンプでは、Main Typeは制限のタイプ、Subtypeは制限の理由、Valueは制限を測定する手段です。たとえば、高さ制限がMain Typeの場合、SubtypeはBridgeやTunnelまたはUnknownになり、Valueは高さと幅を表すメートルや重量を表すメートル・トンなどの測定単位(常にメートル単位)になります。Valueは、物理的に測定できない制限(法定制限など)を表す0にすることもできます。

例E-11 トラック輸送ユーザー・データ制限のダンプ

EXEC SDO_ROUTER_PARTITION.DUMP_TRUCKING_DATA('dump_trucking_data0-25.log', 0, 25);

******** Beginning trucking data dump
** Logfile location: /scratch/logs/dump_trucking_data0-25.log
** Routeserver data version: 12.1.0.1.2                  (A)
** Start partition id: 0
** End partition id: 25

Starting truck data dump for partition 0, blob length 1019048 bytes
  Data version: 12.1.0.1.2
  Partition 0 has 21808 edges with truck data            (B)
    edge id -939054768 has 4 truck restrictions
      Main Type(10): Physical Height Restriction
      Sub-type(99): Unknown
      Value: 4.65
    *******************************
    edge id -854677940 has 3 truck restrictions
      Main Type(10): Physical Height Restriction
      Sub-type(1): Bridge
      Value: 4.67
    *******************************
    edge id -929320205 has 4 truck restrictions          (C)
      Main Type(10): Physical Height Restriction
      Sub-type(2): Tunnel
      Value: 4.27
      -------
      Main Type(20): Physical Weight Restriction
      Sub-type(99): Unknown
      Value: 4.08
    *******************************

*** The rest of the trucking data for edges in partition 0

Starting truck data dump for partition 2, blob length 296 bytes
                                                         (D)

Starting truck data dump for partition 3, blob length 3272 bytes
  Partition 3 has 91 edges with truck data
    edge id -811551125 has 1 truck restrictions
      Main Type(50): Legal Restriction
      Sub-type(22): All trailers forbidden
      Value: 0.0
    *******************************
    edge id 105439903 has 1 truck restrictions
      Main Type(20): Physical Weight Restriction
      Sub-type(99): Unknown
      Value: 9.07
    *******************************
    edge id -105491810 has 1 truck restrictions          (E)
      Main Type(50): Legal Restriction
      Sub-type(21): All trucks forbidden
      Value: 0.0
    *******************************
    edge id -105449802 has 1 truck restrictions
      Main Type(50): Legal Restriction
      Sub-type(26): All trucks forbidden except deliveries and residents
      Value: 0.0
    *******************************

 *** The rest of the trucking data for edges in partitions 3 through 25

例E-11では、次のことを示しています。

  • (A): 標準ユーザー・ダンプ・ヘッダーには、ログ・ファイルの場所とダンプで使用されるパラメータが含まれます。SDO_ROUTER_DATA_VERSION表から問合せされるルーティング・エンジン・データ・バージョンも含まれます。このデータ・バージョンは、パーティション0のBLOBのヘッダーに格納されるデータ・バージョンと一致する必要があります。

  • (B): パーティション0のBLOBのBLOBヘッダー・セクションでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。パーティション0のBLOBヘッダーにはユーザー・データ・バージョンも含まれます。このバージョンは、SDO_ROUTER_DATA_VERSION表にあるデータ・バージョンと一致する必要があります。

    エッジ-939054768は4つのトラック輸送制限を持つものとしてリストされていますが、1つのみリストされています。他に3つの制限がありますが、現在はルーティング・エンジンでサポートされていません。これらの制限を表示するには、ダンプのリクエスト時にSKIP_UNSUPPORTEDをFALSEに設定します。

    エッジ-929320205では、Height制限はBridgeが理由です。エッジ-939054768にもHeight制限がありますが、それを説明するSubtypeは指定されていません。

  • (C): これは複数の制限があるエッジの例です。この場合、高さ制限と重量制限の両方がメートルおよびメートル・トンで表現されます。

  • (D): ここでは次の2点に注意する必要があります。(1) パーティション1はありません。これはパーティション1のトラック輸送ユーザー・データがないことを意味します。(2) パーティション・ヘッダーはパーティション2に対して出力されていますが、データはダンプされていません。これは、パーティション2のトラック輸送制限があるにもかかわらず、ルーティング・エンジンが現在そのいずれもサポートしていないことを意味します。

  • (E): これは、モデル化できる2種類の法定制限の例です。(1) エッジ-105491810は、排他的な法定制限の例です。エッジにはすべてのトラックを禁止する法定制限があります。(2) エッジ-105449802は、含まれる法定制限の例です。エッジにはトラックを除外する法定制限がありますが、配送トラックおよび居住者用トラックの例外もリストされています。

E.4.8.5 タイム・ゾーン・ユーザー・データの再構築

次の例では、タイム・ゾーン・ユーザー・データを再構築します。タイム・ゾーン・ユーザー・データを構築する前に、SDO_TIMEZONES表がデータ・セットに存在することを確認します。この表は、Oracle Routerデモ・ディレクトリからインポートできます。

例E-12 タイム・ゾーン・ユーザー・データの再構築

-- 1) Create a spatial index on the SDO_TIMEZONES table.

EXEC SDO_ROUTER_TIMEZONE.CREATE_SDO_TIMEZONES_INDEX(‘create_timezone_index.log’);

******** Begin indexing of the sdo_timezones table
** Logfile location: /scratch/logs/create_timezone_index.log
[INFO] Creating metadata and spatial index on sdo_timezones for HERE_SF
[INFO] Added metadata for sdo_timezones to user_sdo_geom_metadata
[INFO] Rebuilding the spatial index on node table 
[INFO] Added metadata for node to user_sdo_geom_metadata

-- 2) Associate the edges in the data set with their correct time zone.

EXEC SDO_ROUTER_TIMEZONE.CREATE_ROUTER_TIMEZONES_EDGES('create_router_timezone_edges.log’);

******** Begin generation of router_timezones_edges (timezones raw data)
** Logfile location: /scratch/logs/create_router_timezone_edges.log
[INFO] Creating router_timezones_edges table for HERE_SF
[INFO] Associate nodes to timezones
[INFO] Dropped metadata for router_timezones_nodes from user_sdo_geom_metadata
[INFO] Added metadata for router_timezones_nodes to user_sdo_geom_metadata
[INFO] Creating node id index on the router_timezones_nodes table
[INFO] Creating spatial index on the router_timezones_nodes table
[INFO] Associate orphan nodes to timezone polygons
[INFO] Duplicate node cleanup
[INFO] Associate edges to timezones
[INFO] Creating edge id index on the router_timezones_edges table
[INFO] Creating partition id index on the router_timezones_edges table
[INFO] Creating timezone id index on the router_timezones_edges table
******** Completed generation of router_timezones_edges

-- 3) Create the actual Router time zone user data.

EXEC SDO_ROUTER_PARTITION.CREATE_TIMEZONE_DATA('rebuild_timezone_data.log’);

******** Begin generation of timezone user data
** Logfile location: /scratch/logs/rebuild_timezone_data.log
[INFO] Generating timezone user data for 65 partitions, data version (12.2.0.0.0)
[INFO] SQL String: CREATE TABLE new_timezone_data(partition_id NUMBER, num_edges NUMBER, timezone_data BLOB) LOB(timezone_data) STORE AS (STORAGE (INITIAL 512K NEXT 128K MAXEXTENTS UNLIMITED) CHUNK 32768 NOCACHE NOLOGGING)
[INFO] ---- Writing 3096 timezones for partition 0
[INFO] ---- Writing 2063 timezones for partition 1
[INFO] ---- Writing 1961 timezones for partition 2
[INFO] ---- Writing 2281 timezones for partition 3
…
…
[INFO] ---- Writing 1839 timezones for partition 64
INFO: creating the final timezone user data table
INFO: create index rtd_p_idx on router_timezone_data table
E.4.8.6 すべてのタイム・ゾーン・ユーザー・データBLOBのダンプ

次の例では、すべてのタイム・ゾーン・ユーザー・データBLOBをダンプします。

例E-13 すべてのタイム・ゾーン・ユーザー・データBLOBのダンプ

EXEC SDO_ROUTER_PARTITION.DUMP_TIMEZONE_DATA('dump_timezone_data.log');

Starting timezone user data dump for partition 0, blob length 30992 bytes
  Data version: 12.2.0.0.0
  Partition 0 has 3096 edges with timezone user data
    edge id/Timezone -960842086/America/Los_Angeles(0)
    edge id/Timezone -960842085/America/Los_Angeles(0)
    edge id/Timezone -958443422/America/Los_Angeles(0)
…
…
Starting timezone user data dump for partition 64, blob length 18398 bytes
  Partition 64 has 1839 edges with timezone user data
    edge id/Timezone -961912976/America/Los_Angeles(0)
    edge id/Timezone -961912975/America/Los_Angeles(0)
    edge id/Timezone -958078848/America/Los_Angeles(0)
…
…

E.5 その他のファンクションおよびプロシージャ

次のファンクションおよびプロシージャは、パーティション化プロセス中にルーティング・エンジンによって内部使用されます。Oracleサポートによって指示されないかぎり、これらを直接コールしないでください。

  • GET_PID: パーティション化中にパーティションIDを取得するために使用されます。

  • MIN_EIGENVECTOR: パーティション化中に使用される固有ベクトルです。

  • GATHER_TABLE_STATS: 非推奨。表および索引統計の再構築に使用されます。

  • すべてのELOCATION_*: パーティション化で使用されるJavaコードのラッパーです。

  • BUILD_TURN_RESTRICTIONS: 非推奨。リリース11gの右左折制限の構築に使用されます。

  • GET_EDGE_INFO: ルートの運転方向を構築するためのエッジ情報を収集します。

  • GET_GEOMETRY_INFO: ルートの線ストリング・ジオメトリを構築します。