TDV キャッシングの概念

このセクションでは、TDVキャッシングに関連する多くの概念を紹介します。これらの概念を十分に理解すれば、キャッシングを使用するかどうか、お使いの環境に最適なTDVキャッシュオプションはどれかを判断できます。

キャッシュとは?
キャッシュを使用する理由
いつキャッシングを設定する必要がありますか?
利用できるキャッシュの種類は?
フルリフレッシュとインクリメンタル リフレッシュとは?
インクリメンタル キャッシュ オプションとは?
キャッシュできる TDV リソースは?
利用可能なキャッシュ ストレージ オプションは?
キャッシュ ターゲットとは?
キャッシュに使用できる更新オプションは?
キャッシュ ポリシーとは?
キャッシュ データが期限切れになり、キャッシュから削除されるのはいつですか?
キャッシュのバージョン管理、トランザクションの整合性、および古いキャッシュの内容が消去されるタイミングとは?
キャッシュをエクスポートおよびインポートできますか?
キャッシュ ポリシーを使用するリソースのエラー処理はどのように機能しますか?
キャッシュの更新と有効期限が個別に定義されたリソースのエラー処理はどのように機能しますか?

キャッシュとは?

キャッシュとは、頻繁にアクセスされるデータのコピーを保持する場所のことです。キャッシュがなければ、このようなデータの取得および計算に高いコストがかかります。

キャッシュを使用する理由

データキャッシングは、データを複製したり、データが利用される場所の近くにデータを保存したりしてアプリケーションのパフォーマンスを向上させるのに役立つ重要なデータ設計オプションです。キャッシングでは、ワークロードを複数のストレージ場所に分散することで、データベーステーブルに対して実行される、大量のリソースを消費するクエリーの影響を軽減することもできます。同じクエリーを複数回実行して同じ結果セットを返す代わりに、キャッシュを使用して結果を保存し、それを再利用できます。

いつキャッシングを設定する必要がありますか?

データベースへの直接クエリーによってデータの取得に顕著な遅延を引き起こすパフォーマンス上の問題が発生する場合は、データキャッシングを検討するときかもしれません。

利用できるキャッシュの種類は?

TDVでは、お客様がニーズに合ったキャッシュを作成できるように、複数のキャッシングオプションを設計しました。オプションは次のとおりです。

フル リフレッシュ キャッシュ - キャッシュ リフレッシュ アクションが開始されると、キャッシュ内のすべてのデータが取得されます。
インクリメンタル リフレッシュ キャッシュ - キャッシュ リフレッシュ アクションが開始されると、変更されたデータのみが取得され、キャッシュ内で更新されます。
プルベースのインクリメンタル キャッシュ - インクリメンタル キャッシュの更新アクションは、消費するクライアント アプリケーションからの要求によって開始されます。この方法は、オンデマンドと見なすことができます。
プッシュベースのインクリメンタル キャッシュ-オプションの構成中に定義されたとおり、インクリメンタル キャッシュの更新アクションが自動的に開始されます。キャッシュ内のデータは関係なく更新されます。

キャッシングを使用するときに考慮する価値がある、データベースベンダーから提供される追加の拡張機能は次のとおりです。

FastLoad などのネイティブ ローディング機能
キャッシュ データを分割し、パラレルプロセスを実行してデータをキャッシュ ターゲットにロードするパラレルキャッシュ機能

フルリフレッシュとインクリメンタル リフレッシュとは?

キャッシュデータの更新をインクリメンタルに、または完全に行うこともできます。完全な更新では、前回のキャッシュ更新以降に変更されたデータと変更されていないデータを含むキャッシュ内のデータ全体が取得されます。インクリメンタルなキャッシュ更新では、更新アクションの実行時に、変更されたデータ(新しく追加されたデータ、変更されたデータ、削除されたデータ)のみがキャッシュで更新されます。

[詳細オプション] の下の [キャッシュ] タブで、キャッシュのいずれかを選択できます。プッシュ ベースの増分更新が必要な場合は、プッシュベースのインクリメンタル キャッシュで説明されているいくつかの特別な構成手順が必要です。

インクリメンタル キャッシュ オプションとは?

TDVには、2つのインクリメンタルキャッシング方法があります。キャッシュへの更新は、次の2つのいずれかのモードで伝達できます。

プルベースのインクリメンタル キャッシュ

プル ベースのインクリメンタル キャッシュは、TDV キャッシュ メカニズムと 2 つのスクリプトを使用してセットアップできます。プル ベースのインクリメンタル キャッシュでは、ユーザーまたはクライアント アプリケーションは、キャッシュのコピーを集中型のキャッシュ コピーと同期するよう要求する必要があります。この非同期メソッドまたはキャッシュ データの更新により、キャッシュの読み込み時間を短縮できます。これは、最初のデータがキャッシュに読み込まれた後、後続の各読み込みが小さなデータ変更でのみキャッシュを更新するためです。プルベースの増分キャッシュの詳細については、「 プルベースのインクリメンタル キャッシュの設定」を参照してください。

プッシュベースのインクリメンタル キャッシュ

プッシュベースのインクリメンタル キャッシングは、ネイティブ TDV キャッシング メカニズムと TDV Change Management Service (CMS)を使用してセットアップし、Central Event Server を構成できます。このキャッシュ データ更新の同期方式により、キャッシュ データのすべてのコピーにわたってキャッシュの一貫性が確保されます。増分キャッシュ内のデータを保護するために、プライマリ Central Event Server をバックアップするように TDV サーバーを構成できます。ソースとキャッシュの間でトランザクションのセマンティクスが異なるのを防ぐために、ソースの変更がキャプチャされ、影響を受けるすべてのビューに適用されます。プッシュ ベースの増分キャッシュの詳細については、「Oracle のプッシュベースのインクリメンタル キャッシュの設定」を参照してください。

キャッシュできる TDV リソースは?

キャッシングを使用すると、さまざまなデータソースのビュー、テーブル、またはプロシージャから生成されたデータを保存できます。テーブルオブジェクトには、テーブル、データソースからのビュー、およびTDVビューが含まれます。プロシージャオブジェクトには、SQLスクリプト、パラメーター化されたクエリー、およびXML変換が含まれます。

利用可能なキャッシュ ストレージ オプションは?

ストレージオプションは、キャッシュに関連する場所と一部の動作を決定します。キャッシュは次の形式で保存できます。

デフォルト - キャッシュ データは、TDV によって決定されたデータベースの場所に保存されます。
自動 - キャッシュ データは、TDV によって決定された構造化されたファイルの場所に保存されます。
シングル テーブル - キャッシュ データは、ユーザーが決定した構造化データベースの場所に保存されます。
マルチ テーブル - キャッシュ データは、ユーザーが決定した数のキャッシュ テーブル内のユーザーが決定したデータベースの場所に保存されます。

単一テーブル キャッシュの場合、データの複数のスナップショット (ある時点で取得されたデータの写真) が同じ物理テーブルに格納されます。複数のスナップショットが同じテーブルに格納されるため、キャッシュされたデータのインデックスはあまり効果的ではありません。マルチテーブル キャッシュ オプションを使用すると、TDV はキャッシュされたリソースごとに複数の物理テーブルを使用して、各スナップショットが独自のテーブルに格納されるようにします。この機能により、古いキャッシュ データの削除と、新しくキャッシュされたデータのインデックス作成の速度が向上します。マルチ テーブル キャッシングは、主に、長期間保持される大量のデータを含むキャッシュを対象としています。このタイプのキャッシュの設定の詳細については、「データベース ターゲットでの複数テーブル キャッシュの作成」を参照してください。

キャッシュ ターゲットとは?

キャッシュターゲットは、データを指定された期間保存するために使用されるファイル、データベーステーブル、または複数のデータベーステーブルです。

データ ソースをキャッシュ ターゲットにするには、キャッシュの要件と制限事項で指定されている前提条件に準拠する必要があります。同じキャッシュ リソースをソースとターゲットの両方として機能させることは可能ですが、それらを異なるものにする方が一般的です。複数のリソースからのデータは、キャッシュ ターゲット テーブルを共有できません。

キャッシュするデータのタイプに最適なキャッシュ ターゲットと、それを操作する方法を検討してください。たとえば、キャッシュ ターゲットは、ソース内の重要なデータ タイプをサポートしていない可能性があります。 キャッシュの要件と制限事項を確認してください。また、TDV リファレンス ガイドのキャッシュ データ タイプ マッピングのセクションも確認してください。

キャッシュに使用できる更新オプションは?

TDVのキャッシュデータの更新は高度に構成可能です。TDV Studio UIから利用できる標準のスケジューリングツールを使用するか、カスタムの更新動作を定義できます。次の標準の更新オプションを使用できます。

ポリシーに従う - 再利用可能なキャッシュ ポリシーを使用して、キャッシュの更新スケジュールを定義できます。ポリシーを使用して、テーブル、ビュー、およびプロシージャの更新オプションを定義できます。
すぐに — TDV ユーザーが [キャッシュ] タブを開いて [今すぐ更新] をクリックすると、すぐにキャッシュが更新されます。
1 回限り — 特定の日時にキャッシュを 1 回更新するようにスケジュールできます。
定期的 - 定期的に繰り返されるキャッシュ更新アクションを定義できます。
カスタム - キャッシュの更新動作を制御および定義する SQL スクリプト、Java プログラム、または Web サービスを定義することもできます。たとえば、適切な形式の件名を持つ特定の電子メール アドレスに電子メールが送信された場合にキャッシュの更新を開始するカスタム Java プログラムを作成できます。カスタム更新動作の定義の詳細については、プログラムによるキャッシュの更新とクリアを参照してください。

キャッシングが定義されているビュー(またはテーブル)のクエリを変更した場合、キャッシュは自動的に更新されません。正しい結果セットを取得するには、更新を実行するか、次回のスケジュールされた更新サイクルまで待つ必要があります。

キャッシュ ポリシーとは?

キャッシュ ポリシーは、キャッシュの更新と有効期限のスケジュールを定義します。定義したキャッシュ ポリシーは、キャッシュする Studio リソースの更新と有効期限のスケジュールを制御するために使用できます。

キャッシュ内のリソースに同じ更新スケジュールと有効期限スケジュールを設定できるため、キャッシュデータにアクセスするアプリケーションのデータの整合性と精度を向上させることができます。たとえば、ORDERSテーブルとORDERDETAILSテーブルのキャッシュデータに依存するアプリケーションがある場合、キャッシュポリシーを使用して、それらのキャッシュが同時に更新されるようにすることができます。

キャッシュポリシーを使用すると、キャッシュのパフォーマンスも向上します。キャッシュポリシーが設定されている場合、特定のポリシーのキャッシュ更新アクションの一部であるリソースのリストが既知であるため、TDVはパフォーマンスに最適なキャッシュロード戦略を計算できます。

キャッシュポリシーが設定されている場合、キャッシュデータの整合性は完全に維持されるか、まったく維持されないかのいずれかです。キャッシュポリシーに含まれるリソースの1つが更新アクション時に失敗した場合、すべてのキャッシュが以前に成功したデータのスナップショットにロールバックされます。このため、キャッシュポリシーとインクリメンタルキャッシングの併用はサポートされていません。

キャッシュ データが期限切れになり、キャッシュから削除されるのはいつですか?

キャッシュの更新は、キャッシュの内容を作成または更新するために使用されます。キャッシュの構成方法に応じて、以前の更新からのデータがどのように期限切れになり、キャッシュから削除される可能性があるかが決まります。

期限切れのキャッシュバージョンは、そのバージョンを使用するすべてのトランザクションホールドが完了するか、ロールバックされるまで削除されません。

一般的な有効期限のスケジュールは次のとおりです。

なし - 現在および以前のすべてのデータ スナップショットをキャッシュに保持します。
定期的 - 定期的に繰り返されるキャッシュの有効期限を定義できます。たとえば、指定された数の週または数年後。
カスタム基準に従う - カスタム SQL スクリプト、Java プログラム、または Web サービスを定義することにより、キャッシュ データの更新と消去を制御できます。

キャッシュデータをクリアするかどうかを制御することもできます。

すぐに—今すぐクリアボタンを使用してキャッシュをクリアします。これにより、キャッシュされた古いバージョンのデータが期限切れとしてマークされ、新しいリクエストで使用できなくなります。その後、システムはバックグラウンド タスクを開始して、有効期限が切れたキャッシュ バージョンが解放されるとクリアします。
失敗時 - このオプションを選択すると、更新が失敗した場合にキャッシュがクリアされます。このオプションを使用すると、更新中に以前にキャッシュされたデータにアクセスできます。
更新前 - このオプションを選択すると、更新を開始する前にキャッシュが自動的にクリアされます。キャッシュされたデータから読み取ろうとするクライアントは、新しいデータを待つ必要があります。すべての新しいリクエストで新しいキャッシュ バージョンを使用するように強制し、キャッシュされた古いバージョンを期限切れとしてマークしますが、実際にはクリアされません。キャッシュされたリソースに対する新しいリクエストでは、キャッシュの更新によって提供される最新のデータを使用する必要があります。
有効期限に定期的に - キャッシュの有効期限が切れると、画面の有効期限スケジュール部分で時間が定義されている場合、古いキャッシュ データが消去されます。
カスタム基準に従う - カスタム SQL スクリプト、Java プログラム、または Web サービスを定義することにより、キャッシュ データの更新と消去を制御できます。

キャッシュのバージョン管理、トランザクションの整合性、および古いキャッシュの内容が消去されるタイミングとは?

TDVのキャッシュのバージョン管理では、既存のトランザクションが完了するまで古いキャッシュバージョンを保持することにより、トランザクションの整合性を維持します。期限切れのキャッシュバージョンは、そのバージョンを使用するすべてのトランザクションホールドが完了するか、ロールバックされるまで削除されません。キャッシュのクリアを手動で開始した場合も、古いキャッシュバージョンは「期限切れ」とマークされ、新しい要求で使用できなくなるだけです。その後、システムによってバックグラウンドタスクが開始され、期限切れのキャッシュバージョンが解放されたときにそのバージョンがクリアされます。

TDVは、以前のすべてのキャッシュデータスナップショットを保持することで、長時間実行されているキャッシュの更新を適切に処理するように構成できます。これにより、キャッシュがバックグラウンドでアクティブに更新されている間、データの使用可能性が維持されます。

読み取りの一貫性を維持するため、キャッシュされたビューのデータを使用する実行時間の長いクエリーでは、キャッシュの更新の開始時に使用していた元のキャッシュされたビューを使用して計算を完了できます。

キャッシュをエクスポートおよびインポートできますか?

TDV内で定義したすべてのキャッシュ情報は、エクスポートしてTDVに再インポートできます。TDVエクスポート機能を使用すると、TDV開発作業を効率的に管理できます。定期的にエクスポートすると、作業内容の有用なロールバックスナップショットが得られます。

キャッシュ ポリシーを使用するリソースのエラー処理はどのように機能しますか?

キャッシュの更新がキャッシュポリシーによって開始され、完了前の任意の時点で失敗した場合、すべてのキャッシュが最後に成功したスナップショットにロールバックされます。

キャッシュの更新と有効期限が個別に定義されたリソースのエラー処理はどのように機能しますか?

更新中に、キャッシュされるデータを提供するデータソースまたはキャッシュされたデータを保存するために使用されるデータソースに障害が発生した場合、キャッシュは、以前のスナップショットが使用可能かどうかに応じて、「失敗」または「失効」とマークされます。

更新中にTDVサーバーに障害が発生した場合、サーバーの再起動時にキャッシュは「失敗」または「失効」とマークされます。

完全更新を実行するキャッシュの場合、サーバーが更新の途中で停止すると、サーバーの再起動時に更新の試行が「失敗」とマークされます。部分的なデータは、最終的にガベージコレクターによって処理されます。

インクリメンタル更新を実行するキャッシュの場合、サーバーが更新の途中で停止すると、サーバーの再起動時にキャッシュステータスが「ダウン」とマークされます。