![]() ![]() ![]() ![]() |
この章では、ALDSP でデータ サービスのキャッシングを設定および管理する方法について説明します。内容は以下のとおりです。
注意 : | キャッシングは、アド ホック クエリおよびセキュリティ用の XQuery 関数では使用できません。 |
データ サービス関数によって返されたデータをキャッシングすると、クライアントへの応答時間を短縮し、バックエンド システムに対する処理負荷を低減できます。
注意 : | 結果セットがキャッシュされた時、更新情報の代わりに古いデータが使用される可能性があります。 |
結果キャッシングを使用するには、ALDSP キャッシングのサポートが確認されているデータベースがインストールされており、実行中であることが必要です。このような DBMS システムは「サポート対象のコンフィグレーション」で特定されます。
Data Services Studio Overview モードで関数のキャッシングを有効にするかどうかを指定できます。関数をはじめに実行する場合、関数のクエリ結果がローカルのクエリ結果キャッシュに保存されます。次に同じ関数が同じパラメータで実行されると、ALDSP はキャッシュのコンフィグレーションをチェックし、結果が期限切れになっていなければ、結果を外部ソースからではなく、キャッシュから取得します。
キャッシュ エントリは、それぞれ異なったパラメータによる関数呼び出しの結果ごとに存在します。キャッシュが有効になった関数が、2 つの異なったパラメータで 2 回、呼び出された場合は、2 つのキャッシュ エントリが作成されます。
デフォルトでは、キャッシングは無効になっています。有効にすると、個々のデータ サービス関数について、キャッシュおよびそのキャッシュの生存時間 (TTL) を ALDSP Administration Console を使用してコンフィグレーションできます。
データ サービス関数のキャッシングを有効にするには、以下の手順に従います。
各データ サービス関数について、TTL 設定は個別に指定されます。一般に、基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。
注意 : | キャッシュしたデータは、キャッシュされた時点から TTL 制限を超えるまで有効です。その間コンフィグレーションに行った変更に関係はありません。 |
場合によっては、キャッシングをまったく使用すべきでないこともあります。以下に、例を 2 つ挙げます。
ALDSP 対応サーバが停止した場合でも、結果キャッシュの内容は保持されます。サーバが再起動すると、ALDSP 対応サーバはそれまでと同じようにキャッシングを再開します。キャッシュの有効化された関数が最初に呼び出されると、ALDSP 対応サーバは結果キャッシュをチェックして、その関数のキャッシュ結果が有効か期限切れかを調べ、それに応じて処理を続行します。
ALDSP では、クライアント アプリケーションが物理データ ソースを優先して任意の既存キャッシュ結果を回避することを可能とする API を提供しています。この API により、影響を受けた関数について、クライアント サイドでキャッシュの更新が自動的に行われます。「データ キャッシュのリードスルーと更新の強制」の詳細については、『Java クライアントからのデータ サービスの呼び出し』章の「データ キャッシュのリードスルーと更新の強制」を参照してください。アプリケーション開発者ガイド :
注意 : | 大きなデータ セットに対して重大な処理が適用され、フィルタ処理された結果が生成される場合、キャッシングは特に効果的です。最適なパフォーマンスを得るには、単にリレーショナル データベースのデータ ソースから直接大きなデータ セットを返すだけの関数に対しては、キャッシングを有効にしないことをお勧めします。 |
ALDSP では、データ ソース内に自動的にキャッシュ テーブルを設定 (サーバが開発モードの場合) することも、以下の節で説明するように自分で作成することもできます。データスペースでは、キャッシュ テーブルの共有を行わないことをお勧めします。各データスペースについて、別個のテーブルが必要です。
注意 : | 許可のないユーザのキャッシュ内の機密性の高いデータへのアクセスを防止するために、キャッシュ データベースに対しアクセス制御を維持することが重要です。また、キャッシングに使用される JDBC データ ソースを、その他の目的には使用しないことが必要です。 |
キャッシュを設定する手順は、開発モードなのかプロダクション モードなのか、キャッシュ テーブル スキーマをカスタマイズする必要があるのかどうかなど、いくつかの要因によって変わります。図 8-1 に、キャッシングの設定手順を示します。
図 8-1 に示した手順については、以下の節で説明します。
開発モードの WebLogic サーバの場合、任意に選択したデータ ソースを使用して ALDSP Administration Console から自動的にキャッシュ テーブルを設定できます。プロダクション環境の場合、またはキャッシュ スキーマをカスタマイズする場合は、手動で SQL スクリプトを実行する必要があります。
次の場所にある、特定の DBMS に対応するサブディレクトリ内の SQL スクリプトを使用して、キャッシュ テーブルを作成できます。
<ALDSP_HOME>
/dbscripts/oracle/dsp_cache.sql
各データスペースにおいて、キャッシュされたデータは独自のキャッシュ テーブルに保持することをお勧めします。たとえば、テーブルに <dsname>_CACHE という名前を付けることができます。
カラム名、またはスキーマ テーブルの構造を、変更しないでください (「キャッシュ テーブルの構造を変更する」に示すような特別な場合を除く)。キャッシュ テーブル スキーマについては、表 8-1 を参照してください。
テーブルが (「手順 3 : キャッシュ データ ソースとキャッシュ テーブルの指定」で説明するように) ALDSP によって自動的に作成されると、CHASH のインデックスが作成されます。自動作成される名前は、テーブル名に「_INDEX」を付加したものとなります。
注意 : | DB2 では、この名前は最大 18 文字までで切り捨てられます。 |
ALDSP では、キャッシュ テーブルに特定のスキーマを必要とします。したがって通常は、キャッシュ テーブルの構造を変更しないでください。しかし場合によっては、デプロイメントに基づき、デフォルトのカラム サイズの調整が必要となることがあります。これが必要となる状況としては、デフォルトのデータベース テーブルのコンテンツ カラムより大きい結果セットを頻繁に処理するデータ サービスがあり、DBMS として DB2 を使用しているという場合が考えられます。
DB2 の場合、表 8-1 に示すように、スクリプトは特定サイズの CINVKEY カラムおよび CCONTENT カラム (結果データを格納) を作成します。シリアライズされたキーまたはコンテンツを、そのサイズより大きくする必要がある場合、スクリプトを実行する前に、それに応じてテーブル スキーマを調整する必要があります。
キャッシュ テーブルに対するカスタマイズの実施を試みる前に、表 8-1 に示すスキーマをよく理解しておくことが必要です。
キャッシュ テーブル作成後、WebLogic Administration Console を使用して、ALDSP キャッシュ用に設定したデータベースを参照する JDBC データ ソースを WebLogic Server 上で作成できます。
注意 : | キャッシュ データベースとして Oracle を使用する場合、[グローバル トランザクションを受け付ける] を FALSE に設定する必要があります (デフォルトは TRUE )。WebLogic Administration Console で Oracle JDBC データ ソースを作成する場合、[グローバル トランザクションを受け付ける] ボックスのチェックを外す必要があります。 |
作成が済んだら、次の節の説明に従って結果キャッシュを有効化します。
WebLogic Administration Console で JDBC データ ソースとしてキャッシングに使用するテーブルをコンフィグレーション後は、ALDSP を使用してキャッシュ テーブルを設定できます。
キャッシュ データベースを指定してキャッシングを有効化するには、次の手順に従います。
キャッシュ テーブルを作成しなかった場合は、ALDSP でキャッシュ テーブルを作成するデータ ソースを選択します。
別の手順としては、ALDSP で、テーブル作成時に使用する別の名前を入力するか、またはフィールドを空白のままにしておきます。空白にした場合は、デフォルト名 <dsName>_CACHE が使用されます。
キャッシングが有効化されたら、各関数に関する結果キャッシングのコンフィグレーションを行う必要があります。
データスペースのためのキャッシュ設定を有効化したら、データ サービス関数のキャッシングをコンフィグレーションできます。各関数について、キャッシングを有効にするかどうかを指定し、キャッシュ エントリの生存時間 (秒) を設定できます。
関数によりキャッシングを有効化するには、次の手順に従います。
図 8-3 に示すように、[データ キャッシュ] ページが表示されます。
注意 : | コンソールでデータ キャッシングを有効化する前に、ALDSP IDE で関数に対して [データ キャッシングの許可] プロパティを true に設定していることを確認します。例えば、ADDRESS() のキャッシングを有効にするには、図 8-4 に示すように、ALDSP IDE で [データ キャッシングの許可] プロパティを true に設定します。 |
基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。
この機能により、キャッシュされたエントリをユーザ プロファイルに基づいてフィルタすることができます。[データ キャッシュ] チェックボックスで「ID キーの追加」を選択すると、データ キャッシュ値がユーザ固有になります。これにより、該当するデータ キャッシュ エントリは、対応するユーザから使用できることになります。例えば、ユーザ A とユーザ B の 2 人のユーザが関数に対してキャッシュされた値にアクセスしようとする場合、ユーザ A は自分のトランザクションに固有の値を表示でき、ユーザ B は自分で行ったトランザクションのキャッシュされた値を表示できます。
この機能は、ALDSP Administration Console を使用して外部データ ソースをマップし管理する場合に特に便利です。
オペレーション カテゴリを使用して関数レベルのデータ キャッシングを管理できます。[オペレーション] カテゴリを選択すると、図 8-5 に示すように、[モニタ] タブが表示されます。
このタブによって、関数のランタイム キャッシュ統計情報が提供され、キャッシュをパージできます。
[データ キャッシュ エントリの数] フィールド では、データ キャッシュでキャッシュされた結果の数が表示されます。
キャッシュのパージを行うと、キャッシュ データベースからキャッシュされたエントリが削除されます。キャッシュがパージされると、各関数はそのデータソースに対して再びキャッシュされるまで実行されます。
ALDSP は、以下のいずれかのイベントが発生した場合、指定されたストアド クエリの結果キャッシュをフラッシュします。
ALDSP は、以下のいずれかのイベントが発生した場合、次の呼び出し時に関数の結果キャッシュをフラッシュします。
以下の節で示すように、手動で、データスペース全体に対して一度に、または個々の関数について、キャッシュをパージすることもできます。
データスペースのキャッシュをパージするには、次の手順に従います。
図 8-5 に示すように、[オペレーション] カテゴリの [モニタ] タブを使用して個々の関数のキャッシュをパージできます。
![]() ![]() ![]() |