17.4.8 データ同期化の管理

「データ同期化」を有効にすると、ローカル表の内容をRESTサービスのデータと自動的に同期できます。

関連項目:

『Oracle APEX管理ガイド』バックグラウンド・ジョブの構成

17.4.8.1 データ同期化について

データ同期化では、開発者は、ローカル表のコンテンツをRESTサービスのデータと自動的に同期化できます。

データ同期化は、手動でトリガーすることも、スケジューラ・ジョブを使用して定期的にトリガーすることもできます。スケジュールどおりにRESTソース同期化を実行するには、アプリケーションの解析対象スキーマにCREATE JOB権限を付与する必要があります。

Oracle APEXでは、RESTデータ・ソースの「データ・プロファイル」の表示列に基づいてローカル表を作成できます。この表はデータベース・スキーマの表示オブジェクトであるため、開発者は、索引の追加、物理プロパティの変更または別の列の追加を行うことができます。

表がデータ・プロファイルと同期していない場合、データ同期化は表とデータ・プロファイルの両方に存在する列を対象に動作し続けます(他の列は無視されます)。ただし、APEXでは、データ・プロファイルに表の列を同期化するためのSQL DDL文が生成されます。これらの文は、サポートするオブジェクトとしてアプリケーションに追加できます。

データ同期化のユースケース

RESTデータ・ソースのデータ同期化を使用する一般的なユースケースには、次のものがあります。

  • RESTサービスから取得された大きいデータ・セットに関する効率的なレポートの提供

    一部のRESTサービスは、ページ区切りを含む大量の結果データを返すことがあります。レポート要件でより大きなデータ・セットが必要な場合は、複数のHTTPリクエストが発行され、レスポンス時間が遅くなる可能性があります。索引やその他のデータベース機能を使用して、レポート問合せを高速化することもできません。この場合は、データ同期化を有効にしてリモート・データをローカル表に同期し、ローカル表に基づくレポートを作成することをお薦めします。

  • RESTサービスからの、PL/SQLパッケージまたはその他のロジックで使用するデータの収集

    RESTサービスからのデータをローカル表にレプリケートすると、開発者は、ローカル表についてあらゆる種類の処理を実行したり様々なレポートを作成できます。

  • REST APIからの長期間にわたるデータの収集

    一部のREST APIでは、最近の期間のデータのみが提供されます。長期間のレポートを作成する場合、開発者は、データ同期化を使用してRESTデータをフェッチし、ローカル表に格納できます。このユースケースでは、後続の2つのRESTリクエストで重複するデータ・セットが返されるため、主キーによるマージ機能も必要になる場合があります。

  • APEXコンポーネントへのインテリジェント・キャッシュの利用

    RESTデータ・ソースには、すでにキャッシュ・メカニズムが用意されています。APEXは、JSONレスポンスをCLOBとしてキャッシュ表にキャッシュします。APEXコンポーネントでRESTデータ・ソースが使用され、キャッシュが失効していない場合は、HTTPリクエストが保存され、キャッシュされたJSONが使用されます。ただし、JSONは引き続き解析する必要があります(つまり、データ・セットが大きいと、JSON解析のオーバーヘッドが大きくなります)。索引またはその他のデータベース・テクノロジを使用して問合せを高速化することはできません。JSONは解析されなくなり、レポート問合せをサポートするように表を最適化できるため、名前付きローカル表内のキャッシュにより、より適切なレベルのキャッシュが作成されます。

17.4.8.2 「データ同期化」ページへのアクセス

RESTデータ・ソースを選択し、ページの右側で「同期化の管理」を選択して、「データ同期化」ページにアクセスします。

「データ同期化」ページにアクセスするには:

  1. 「RESTデータ・ソース」ページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、ページの中央にある「共有コンポーネント」をクリックします。
    4. 「データ・ソース」で、「RESTデータ・ソース」を選択します。
  2. 「RESTデータ・ソース」ページで、「RESTソース名」をクリックします。
  3. 「RESTデータ・ソース」ページの右側にある「同期化の管理」をクリックします。
    「データ同期化」ページが表示されます。

17.4.8.3 データ同期化の構成

ローカル表をRESTサービスのデータと自動的に同期するようにデータ同期化を構成します。

同期化は、手動でトリガーすることも、スケジューラ・ジョブを使用して定期的にトリガーすることもできます。

データ同期化を構成するには:

  1. 「データ同期化」ページにナビゲートします。
    「データ同期化」ページが表示されます。
  2. 「詳細」で、次の項目を指定します。
    1. ローカル表の所有者 - データを同期化するローカル表のスキーマを選択します。デフォルトでは、アプリケーションの解析対象スキーマが使用されます。
    2. 同期先 - 「新規表」または「既存の表」のいずれかを選択し、「変更の適用」をクリックします。

      新しい表を作成する場合、メッセージTable does not existが表示されます。「表の作成」をクリックします。

    3. 同期タイプ: 同期タイプを選択します。
      • 追加 - ローカル表に行を追加します。これは通常、データ・プロファイルに主キーが定義されていない場合に使用されます。

      • マージ - ローカル表に行をマージします。このオプションを使用するには、データ・プロファイルに主キーが定義されている必要があります。指定した主キー値の行が存在する場合は、その行が更新されます。そうでない場合は、行が作成されます。

      • 置換 - 新しいデータをロードする前にローカル表を空にします。

    4. ジョブ実行間隔: データベース・スケジューラ・カレンダ構文を使用して、同期化の繰返しスケジュールを定義します(「毎週火曜日と金曜日の午後4時」や「毎月第2水曜日」など)。このカレンダ構文は、単純な式を使用して手動で指定するか、入力フィールドの横にあるハンマー・アイコンをクリックして間隔ビルダーで作成できます。

      ノート:

      スケジューラ・カレンダ構文の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』DBMS_SCHEDULERの操作上のノートを参照してください

  3. 「ステップ」で、次のようにします。「ステップ」を使用して、パラメータ値または特定の外部フィルタをRESTサービスに渡します。
    ステップが定義されていない場合、RESTデータ・ソースがデフォルトのパラメータで一度起動されます。ステップが定義されている場合、APEXはRESTデータ・ソースをステップごとに一度起動し、構成済パラメータを渡します。
  4. 「詳細設定」で、次の項目を指定します。
    1. コミット間隔 - データ同期中に使用するコミット間隔を指定します。指定しない場合、同期化全体が1つのトランザクションになり、最終行の後にコミットが行われます。間隔を指定すると、APEXは指定された行数が処理されるたびにコミットします。
    2. HTTPリクエスト制限 - 必要に応じて、同期化ステップごとに行うHTTPリクエストの最大数を指定します。この制限を超えると、同期化は停止し、Incompleteとしてログに記録されます。
      実際の実行メソッドが原因で、同期化はこの制限をリクエスト1つ分超えることに注意してください。そのため、10という制限を指定すると、同期化は11番目のリクエストが行われた後に停止します。
    3. 簡易レート制限の有効化 - 有効にすると、APEXでは、指定された時間枠内で限られた数のHTTPリクエストのみが実行されます。このレート制限は、純粋に一定の時間枠内に実行されるHTTPリクエストの数に基づいています。RESTサービスから返されたHTTPレスポンス・ヘッダーは調査されません。
  5. 変更内容を保存するには、保存をクリックします。
  6. データ同期化を実行するには、「保存して実行」をクリックします。

17.4.8.4 同期化設定のクリア

同期化設定をクリアします。

同期化設定をクリアすると、同期化処理が停止し、同期化に関連するすべてのRESTデータ・ソース属性がリセットされます。APEXコンポーネントは、ローカル同期化表を使用している場合、RESTサービスを直接使用するようにリセットされます。

同期化設定をクリアするには:

  1. 「データ同期化」ページにナビゲートします。
    「データ同期化」ページが表示されます。
  2. 「設定のクリア」をクリックします。

17.4.8.5 同期化の使用状況の表示

ローカル同期化表をデータ・ソースとして現在使用しているアプリケーション・コンポーネントのレポートを表示します。

同期化の使用状況レポートを表示します。

  1. 「データ同期化」ページにナビゲートします。
    「データ同期化」ページが表示されます。
  2. 「詳細」で、「同期化の使用状況」をクリックします。
    ローカル同期化表をデータ・ソースとして現在使用しているアプリケーション・コンポーネントを示すレポートが表示されます。

17.4.8.6 RESTソース同期のインポートおよびエクスポートについて

アプリケーションのインポート後、RESTソースの同期は無効になります。インポート後に同期化を有効にする方法について学習します。

バージョン管理などの目的で、開発者はアプリケーションをワークスペースに複数回インポートすることがよくあります。これらのインポート時に同期が有効になっていた場合は、これにより複数の同期インスタンスが同時に実行されることになります。これは望ましい結果ではありません。したがって、Oracle APEXでは、アプリケーションのインポート後に同期が無効になります。

次の例に示すように、次のPL/SQLブロックを使用して、共有コンポーネント、RESTデータ・ソース、同期管理またはランタイムのみの環境で同期を直接アクティブ化できます。

例17-1 同期を有効にし、すぐに実行スケジュールを開始する

declare
    l_app_id number := {new application ID};
begin
    apex_session.create_session(
        p_app_id => l_app_id,
        p_page_id => {one of the application pages},
        p_username => '{workspace user}');

    apex_rest_source_sync.enable(
        p_application_id => l_app_id,
        p_module_static_id => '{REST Source static ID}');
end;

例17-2 同期化を有効にし、次の実行タイムスタンプを明示的に設定する

declare
    l_app_id number := {new application ID};
begin
    apex_session.create_session(
        p_app_id => l_app_id,
        p_page_id => {one of the application pages},
        p_username => '{workspace user}');

    apex_rest_source_sync.reschedule(
        p_application_id => l_app_id,
        p_module_static_id => '{REST Source static ID}');
        p_next_run_at => trunc( sysdate + 1 ), -- next midnight
end;

17.4.8.7 RESTデータ・ソース同期ログの管理

RESTデータ・ソース同期ログについて学習します。

関連項目:

『Oracle APEX管理ガイド』RESTソース同期ログの管理

17.4.8.7.1 RESTデータ・ソース同期ログについて

RESTデータ・ソース同期ログには、以前に実行された同期化の詳細が記録されます。

同期化が正常に実行されると、「データ同期化」ページの「ログ」の下にRESTデータ・ソース同期ログが表示されます。

RESTデータ・ソース同期ログには、ステータス(成功または失敗)、処理された行数、作成されたHTTPリクエストの数など、以前に実行された同期化の詳細が含まれます。同期ログからWebサービス・ログにドリルダウンして、この同期化に対して行われた個々のHTTPリクエストを確認できます。

17.4.8.7.2 同期ログのパージ

RESTデータ・ソース同期ログをパージします。

RESTデータ・ソース同期ログをパージするには:

  1. 「データ同期化」ページにナビゲートします。

    「データ同期化」ページが表示されます。

    RESTデータ・ソース同期ログは、ページ下部の「ログ」の下に表示されます。

  2. 「ログ」で、「ログのパージ」をクリックします。