VDPCache 抽出セクション

VDPCache タイプのジョブの抽出セクションを構成するには、VDP タイプの データソース を選択する必要があります。選択後に、[New Load Process] をクリックすると、VDP ビューのキャッシュをプリロードするためのいくつかのロードプロセスが作成される場合があります。

さらに、ジョブ実行時に同時に実行するロードプロセスの数も構成できます (Concurrency Level)。

[New Load Process] をクリックすると、作成するロードプロセスのタイプを選択できます。

  • 非増分: キャッシュの完全なロードを実行します。

  • 増分: Denodo Incremental Cache Load ストアドプロシージャ を使用します。新しいタプルと更新されたタプルで増分の追加キャッシュを作成し、キャッシュビューを最新に保ちます。このオプションは、選択されたデータソースによって参照される Virtual DataPort サーバーにより拡張機能がインストールされ、手順 INCREMENTAL_CACHE_LOAD (名前が正確にこれと一致) が作成された場合にのみ使用可能です。

非増分ロードプロセス

各ロードプロセスの構成 (Example of the extraction section of a VDPCache job) は、VDP タイプのジョブの抽出セクションと非常によく似ています (このジョブは同じデータソースを使用した VDP タイプのジョブの集合体のようなものと考えることができます)。以下から構成されています。

  • プリロードする VDP ビュー: 選択されたビューのすべてのフィールドが投影されます。このコンボボックスのビューはジョブに構成された VDP データソースから取得されます (データソースに指定されたデータベースからのビューだけではなく、ユーザーがアクセス許可を持つ各データベースからのすべてのビューがリストされます)。対応する VDP サーバーが稼働中である必要があります (いつでもビューを VDP データソースから再読み込みできる更新ボタンがあります)。

  • クエリ条件: VDP タイプのジョブの、既存のパラメーター化クエリの where 部分です。クエリ条件はオプションで、ユーザーがそれらの条件を作成するために役立つ 2 つのコンボボックスがあります。

    • 1 つは、選択したビューの フィールドを条件に追加 するためのものです (必須フィールドが示されます)。このコンボは、新しいビューが選択されるたびに更新されます (VDP データソースがアクセス可能な場合)。

    • もう 1 つは、条件に 演算子を追加 するためのものです。このコンボには条件で使用できるすべての指定可能な演算子が含まれます。

    クエリ条件にはパラメーターを指定できます。ソースと同時実行性のレベルの定義方法は VDP ジョブの場合と同じです。

    ジョブ構成を保存すると、各ロードプロセスのクエリ条件が VDP に対して検証されます。エラーがある場合は、エラーのあるロードプロセスの名前が赤色で表示され、各エラーに関する詳細情報が該当のロードプロセスの詳細に表示されます。

  • クエリ コンテキスト: VDP に送信されるクエリの CONTEXT 句にプロパティを指定できます。たとえば、クエリの実行時に単純化を適用しないように、 'simplify' = 'off' を指定できます。他のパラメーターを使用して構成された CONTEXT 句に適用可能なオプション 1 はここでは指定できなません。

  • ロードする前に キャッシュを無効にする ためのオプション: このオプションには、以下の 3 つの値のいずれかを指定できます。

    1. None: キャッシュを無効にしません。

    2. All rows: このオプションが選択されている場合は、VDP に送信されるクエリの CONTEXT 句に、オプション 'cache_invalidate' = 'all_rows' が追加されます。その場合、クエリに関係なく、キャッシュからのすべてのタプルが無効になります。

    3. Matching rows: このオプションが選択されている場合は、VDP に送信されるクエリの CONTEXT 句に、オプション 'cache_invalidate' = 'matching_rows' が追加されます。その場合、クエリによって返される行に一致するタプルのみがキャッシュから無効にされます。これは、新しいジョブのデフォルトオプションです。

  • ロードのプロセスとキャッシュデータの無効化 (構成されている場合、前述の事項を参照) が同じトランザクションで実行されているかどうかを示すオプション (Load / Invalidate data in a single transaction): このオプションがチェックされている場合、VDP に送信されるクエリの CONTEXT 句に、オプション 'cache_atomic_operation = 'true' が追加されます。チェックされていない場合は、CONTEXT 句にオプション 'cache_atomic_operation' = 'false' が追加されます。デフォルトでは、このオプションはチェックされています。

  • クエリがエラーで終了した場合もキャッシュにデータを読み込む必要があるかどうかを示すオプション (Populate the cache even when a query finishes with errors): このオプションがチェックされている場合は、VDP に送信されるクエリの CONTEXT 句に、オプション 'cache_load_on_error' = 'true' が追加されます。チェックされていない場合は、CONTEXT 句にオプション 'cache_load_on_error' = 'false' が追加されます。デフォルトでは、このオプションはチェックされていません。

これらの 5 つのフィールドの値を考慮すると、VDP データソースに送信されるクエリは以下のようになります。

SELECT *
FROM view
[ WHERE <query_conditions> ]
CONTEXT(
'cache_preload' = 'true',
'cache_wait_for_load' = 'true',
'cache_return_query_results' = 'false',
[ 'cache_invalidate' = { 'all_rows' | 'matching_rows' },
'cache_atomic_operation' = { 'true' | 'false' }, ]
'cache_load_on_error' = { 'true' | 'false' } )

上の例が示すとおり:

  • クエリは常に明示的なキャッシュロードを示します ('cache_preload' = 'true')。

  • クエリの結果は Scheduler に返されません ('cache_return_query_results' = 'false')。これは、このジョブタイプにはエクスポーターセクションがないからです。

  • クエリのすべての結果がキャッシュされるまで、制御権が Scheduler に戻るのを待機します ('cache_wait_for_load' = 'true')。

  • オプションで、キャッシュをロードされる前に無効にすることができます ('cache_invalidate' = '{all_rows | matching_rows}')。キャッシュのロードと無効化のプロセスを単一のトランザクションで実行するかどうかを指定できます ('cache_atomic_operation' = {'true' | 'false'})。

  • クエリがエラーで終了した場合もキャッシュにデータを読み込む必要があるかどうかを指定できます ('cache_load_on_error' = {'true' | 'false'})。

また、フィールド [Load Process Name] では、ユーザーが各ロードプロセスにわかりやすい名前を指定できます。この名前はロードプロセスを特定しやすいよう、それらプロセスのリストに表示されます。デフォルトでは、プリロードされたビューの名前が表示されます (同じ名前を複数のロードプロセスに割り当てることはできません)。

Example of the extraction section of a VDPCache job

VDPCache ジョブの抽出セクションの例

増分ロードプロセス

前述のとおり、増分ロードプロセスの作成はストアドプロシージャ INCREMENTAL_CACHE_LOAD が Virtual DataPort に正しくインストールされている場合のみ実行可能です。このプロシージャには (関連するドキュメントに記載されているとおり) いくつかの制限があります。

  • キャッシュされるビューは、プライマリキーを保持している必要があります。

  • キャッシュされるビューは、フルキャッシュが有効になっている必要があります。

  • 基本ビューとは問題なく連携しますが、派生ビューの場合はいくつかの制限があります。

各ロードプロセスの構成は、 非増分プロセス を構成する場合のものとかなり似ていますが、オプションの数が減っており、以下で構成されます。

  • プリロードする VDP ビュー: この場合、プライマリキー (PK) を持つビューのみが表示されます。このオプションにより、ストアドプロシージャのパラメーター DATABASE_NAMEVIEW_NAME の値が入力されます。

  • Load Process Name: 各ロードプロセスのわかりやすい名前。

  • Block Size: キャッシュを更新するクエリの IN 演算子のチャンクサイズ (NUM_ELEMENTS_IN_CLAUSE)。

キャッシュにまだ存在しないソースからデータを取得する条件 (LAST_UPDATE_CONDITION) とストアドプロシージャによってキャッシュにロードされる条件は、以下のパラメーターで構成できます (そのうちの少なくとも 1 つは必須)。

  • Field Name: ビューからフィールドを選択する場合は、条件 fieldName > @LASTCACHEREFRESH がクエリに追加されます。

  • Custom conditions: このフィールドを使用して、クエリに追加されるカスタム条件を指定できます (変数 \@LASTCACHEREFRESH を使用して、最後の実行時間を参照できます)。

これらのフィールドの値を考慮すると、VDP データソースに送信されるクエリは以下のようになります。

SELECT *
FROM <database_with_the_sp>.INCREMENTAL_CACHE_LOAD
('<DATABASE_NAME>',
 '<VIEW_NAME>',
 '<LAST_UPDATE_CONDITION>',
 <NUM_ELEMENTS_IN_CLAUSE>);

この場合

<LAST_UPDATE_CONDITION> ::= <fieldName> > @LASTCACHEREFRESH
                            | <custom conditions>
                            | <fieldName> > @LASTCACHEREFRESH AND <custom conditions>

一般的な考慮事項

このタイプのジョブは他の抽出ジョブとは少し異なるため (クエリされたビューによって返されるタプルが Scheduler に送信されないため、エクスポーターセクションがないことを思い出してください)、ジョブのテーブルの「Extracted」列と「Processed」列の値の意味を以下で説明します。

  • クエリされた VDP ビューから抽出されたタプルは Scheduler には送信されませんが、「Extracted」列はそれらタプルの数が示されます。

  • 「Processed」列は、「CacheLoader」と呼ばれる 仮想 エクスポーターの名前と、クエリされた VDP ビューのキャッシュに挿入されたタプルの数を示します。

どちらの列も個別のロードプロセスの値の集計を示しています。何らかの警告またはエラーがある場合は、最終的にそのロードプロセスのレポートを個別に確認することができます。さらに、ロードプロセスが、数回実行されるパラメーター化クエリで構成されている場合は、各パラメーターに関するレポートを確認できます。「Extracted」と「Processed」のどちらの列も、各プロセスで生成されたエラーの数、つまり、それぞれ抽出エラーの数とキャッシュ挿入エラーの数を示します (他のジョブタイプと同様に、エラーがない場合、エラーの数は示されません)。

注釈

VDP へのコネクションが失われた場合、ユーザーは作業内容が失われないように、ジョブをドラフトとして保存できます。

1

これらのプロパティは、 cache_preloadcache_wait_for_loadcache_return_query_resultscache_invalidatecache_atomic_operationcache_load_on_error です。