ユーザーガイド > TDVキャッシング > キャッシュ更新動作の定義 > 個々のリソースのキャッシュ更新動作の制御
 
個々のリソースのキャッシュ更新動作の制御
Studioを使用すると、キャッシュを即座に、または定期的に更新できます。キャッシュポリシーを定義して、複数のTDVリソースのキャッシュ更新動作を制御できます。キャッシュはプログラムで更新することもできます。キャッシュ内のデータを最新の状態に保つことで、確実に結果が正しくなります。ビューまたはテーブルリソースが更新されると、オブジェクトの結果セット全体が取得され、キャッシュに書き込まれます。
キャッシングが定義されているビュー(またはテーブル)のクエリーを変更した場合、キャッシュは自動的に更新されません。正しい結果セットを取得するには、更新を実行するか、次回のスケジュールされた更新サイクルまで待つ必要があります。
Studioを使用した1つのリソースのキャッシュの更新とクリア
プログラムによるキャッシュの更新とクリア
Studioを使用した1つのリソースのキャッシュの更新とクリア
Studioでは、キャッシュデータを即座に更新することも、定期的にスケジュールされたキャッシュデータの更新を構成することもできます。
ビューとテーブルの場合、有効期限は結果セット全体に適用されます。プロシージャの場合、各入力バリアントのデータの有効期間は個別に追跡されます。
注意: 複数テーブルキャッシングが定義されている場合、TDVは最初にTRUNCATEコマンドを使用してキャッシュをクリアしようとします。TRUNCATEコマンドがサポートされていない場合は、DELETEコマンドが試行されます。
キャッシュの更新と有効期限のスケジュールを定義するには
1.Studioで、キャッシングが有効になっているビューまたはプロシージャを開きます。
2.[Caching(キャッシュ作成)]タブを選択します。
3.[Refresh Mode(更新モード)]で、キャッシュ更新モードを指定します。キャッシュされたリソースを更新すると、ソースからデータが取得され、指定した古いデータがクリアされます。
[Refresh Now(今すぐ更新)]をクリックすると、キャッシュを即座に更新できます。
 
オプション
説明
[Manual(手動)]
リソースの所有者または管理者は、[Refresh Now(今すぐ更新)]を使用して手動でキャッシュを更新するか、RefreshResourceCacheプロシージャを呼び出してプログラムで更新する必要があります。『TDV Application Programming Interfaces Guide(TDVアプリケーションプログラミングインターフェイスガイド)』を参照してください。
適切な特権が付与されている、ACCESS TOOLS権限を持つユーザーは、キャッシュを手動で更新することもできます。
キャッシュがキャッシュポリシーによって制御されている場合は、定期的な更新またはプログラムによる更新を使用することをお勧めします。
[Exactly Once(1回だけ)]
特定の時刻に1回だけキャッシュを更新するには、[Start on(開始日時)]というラベルが付いたセクションのドロップダウンボックスのセットでキャッシングの開始時刻を選択して指定します。[Hour(時間)]フィールドに「0」を入力してリソースを保存すると、時間が「12」に、[AM/PM]が「AM」に自動的に変換されます。
[Periodic(定期的)]
キャッシュを定期的に更新するには、[Periodic(定期的)]を選択し、[Refresh every(更新間隔)]セクションでキャッシング用にリソースを実行する頻度(x秒ごと、x分ごと、x時間ごと、x日ごと、x週間ごと、xか月ごと、x年ごと)を指定します。[Start on(開始日時)]フィールドで、定期的な更新モードを開始する日時を指定します。
4.[Expiration Schedule(有効期限のスケジュール)]で、[Never expire(無期限)]を選択するか、[Expire after(有効期間)]を選択して期間を指定します。有効期限は、更新の終了から適用されます。インクリメンタルキャッシングを使用している場合は、[Expire after(有効期間)]オプションが無効になります。
5.[詳細(Advanced)]には、さまざまな組み合わせがあります。
a. [Full Refresh Mode(完全更新モード)]を選択した場合は、「完全更新モードキャッシュの事前アクションと事後アクションの定義」で説明するように、キャッシュ前後のアクションを定義できます。
b. [Incremental Refresh Mode(インクリメンタル更新モード)]を選択した場合は、「プルベースのインクリメンタルキャッシュの設定」で説明するように、キャッシュ前後のアクションを定義できます。
6.キャッシュをクリアするタイミングを指定します。
 
キャッシュクリアオプション
説明
[when user clears it manually(ユーザーが手動でクリアしたとき)]
[Clear Now(今すぐクリア)]ボタンが押されたとき、API呼び出しが行われたとき、またはキャッシュの有効期限が切れた([Expiration Schedule(有効期限のスケジュール)]セクションで[Expire after(有効期間)]が選択されている場合)ときにのみキャッシュをクリアします。
[when refresh fails(更新が失敗したとき)]
(完全更新キャッシングの場合のみ)このオプションを選択すると、更新が失敗した場合にキャッシュがクリアされます。このオプションを使用すると、更新中に以前にキャッシュされたデータにアクセスできます。
[when refresh begins(更新の開始時)]
(完全更新キャッシュの場合のみ)このオプションを選択すると、更新を開始する前にキャッシュが自動的にクリアされます。キャッシュされたデータから読み取ろうとするクライアントは、新しいデータを待つ必要があります。
[When load fails(ロードが失敗したとき)]
(プッシュベースのインクリメンタルキャッシュの場合のみ)このオプションを選択すると、データのロードが完了しなかった場合にキャッシュが自動的にクリアされます。
[When initial load begins(初期ロードの開始時)]
(プッシュベースのインクリメンタルキャッシュの場合のみ)このオプションを選択すると、更新を開始する前にキャッシュが自動的にクリアされます。キャッシュされたデータから読み取ろうとするクライアントは、新しいデータを待つ必要があります。
7.(プロシージャの場合のみ)キャッシュするプロシージャの結果からキャッシュに保存するバリアントの最大数を定義します。入力パラメーター値の一意のセットの最大数(デフォルトは32です)。
8.キャッシュの設定を保存します。
プログラムによるキャッシュの更新とクリア
キャッシュされたデータをプログラムで更新する場合は、次のオプションがあります。
TDVには、キャッシュの内容をクリアしたり、更新を開始したり、キャッシュの状態を変更したりするために使用できるストアドプロシージャが用意されています。SQLスクリプトを使用して、任意のキャッシング機能を呼び出して実行できます。
TDVトリガー関数を使用すると、キャッシュを更新するプロシージャを呼び出す、システムまたはユーザーによって生成されたイベントに応答することができます。
管理Webサービスを使用すると、キャッシュをクリア、更新、有効化、および無効化する外部プログラムを定義できます。
以下のTDV API呼び出しは、SQLスクリプトまたはJavaプロシージャから使用できます。また、クライアントから使用できるように公開することもできます。これらはそれぞれ、Studioの<localhost>/lib/resourceにあります。
ClearResourceCache(path, type)
CreateResourceCacheKey(path, type, cacheKey)
LoadResourceCacheStatus(path, type)
RefreshResourceCache(path,type)
UpdateResourceCacheEnabled(path, type, enabled)
UpdateResourceCacheKeyStatus(path, type, cacheKey, status, startTime, message)
詳細については、『TDV Application Programming Interfaces Guide(TDVアプリケーションプログラミングインターフェイスガイド)』を参照してください。
以下のWebサービスは、サーバー外部のクライアントから使用できます。これらは、StudioのData Services/Web Services/system/admin/resource/operationsにあります。
clearResourceCache (path, type)
getResourceCacheConfig(path, type)
refreshResourceCache (path, type)
updateResourceCacheConfig (path, type, detail, cacheConfig)