管理ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

クエリ結果キャッシュのコンフィグレーション

この章では、ALDSP でデータ サービスのキャッシングを設定および管理する方法について説明します。内容は以下のとおりです。

注意 : キャッシングは、アド ホック クエリおよびセキュリティ用の XQuery 関数では使用できません。

 


結果キャッシングについて

データ サービス関数によって返されたデータをキャッシングすると、クライアントへの応答時間を短縮し、バックエンド システムに対する処理負荷を低減できます。

注意 : 結果セットがキャッシュされた時、更新情報の代わりに古いデータが使用される可能性があります。

結果キャッシングを使用するには、ALDSP キャッシングのサポートが確認されているデータベースがインストールされており、実行中であることが必要です。このような DBMS システムは「サポート対象のコンフィグレーション」で特定されます。

Data Services Studio Overview モードで関数のキャッシングを有効にするかどうかを指定できます。関数をはじめに実行する場合、関数のクエリ結果がローカルのクエリ結果キャッシュに保存されます。次に同じ関数が同じパラメータで実行されると、ALDSP はキャッシュのコンフィグレーションをチェックし、結果が期限切れになっていなければ、結果を外部ソースからではなく、キャッシュから取得します。

キャッシュ エントリは、それぞれ異なったパラメータによる関数呼び出しの結果ごとに存在します。キャッシュが有効になった関数が、2 つの異なったパラメータで 2 回、呼び出された場合は、2 つのキャッシュ エントリが作成されます。

デフォルトでは、キャッシングは無効になっています。有効にすると、個々のデータ サービス関数について、キャッシュおよびそのキャッシュの生存時間 (TTL) を ALDSP Administration Console を使用してコンフィグレーションできます。

データ サービス関数のキャッシングを有効にするには、以下の手順に従います。

各データ サービス関数について、TTL 設定は個別に指定されます。一般に、基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。

注意 : キャッシュしたデータは、キャッシュされた時点から TTL 制限を超えるまで有効です。その間コンフィグレーションに行った変更に関係はありません。

場合によっては、キャッシングをまったく使用すべきでないこともあります。以下に、例を 2 つ挙げます。

ALDSP 対応サーバが停止した場合でも、結果キャッシュの内容は保持されます。サーバが再起動すると、ALDSP 対応サーバはそれまでと同じようにキャッシングを再開します。キャッシュの有効化された関数が最初に呼び出されると、ALDSP 対応サーバは結果キャッシュをチェックして、その関数のキャッシュ結果が有効か期限切れかを調べ、それに応じて処理を続行します。

キャッシング API

ALDSP では、クライアント アプリケーションが物理データ ソースを優先して任意の既存キャッシュ結果を回避することを可能とする API を提供しています。この API により、影響を受けた関数について、クライアント サイドでキャッシュの更新が自動的に行われます。「データ キャッシュのリードスルーと更新の強制」の詳細については、『Java クライアントからのデータ サービスの呼び出し』章の「データ キャッシュのリードスルーと更新の強制」を参照してください。アプリケーション開発者ガイド :

注意 : 大きなデータ セットに対して重大な処理が適用され、フィルタ処理された結果が生成される場合、キャッシングは特に効果的です。最適なパフォーマンスを得るには、単にリレーショナル データベースのデータ ソースから直接大きなデータ セットを返すだけの関数に対しては、キャッシングを有効にしないことをお勧めします。

ALDSP では、データ ソース内に自動的にキャッシュ テーブルを設定 (サーバが開発モードの場合) することも、以下の節で説明するように自分で作成することもできます。データスペースでは、キャッシュ テーブルの共有を行わないことをお勧めします。各データスペースについて、別個のテーブルが必要です。

注意 : 許可のないユーザのキャッシュ内の機密性の高いデータへのアクセスを防止するために、キャッシュ データベースに対しアクセス制御を維持することが重要です。また、キャッシングに使用される JDBC データ ソースを、その他の目的には使用しないことが必要です。

 


キャッシングの設定

キャッシュを設定する手順は、開発モードなのかプロダクション モードなのか、キャッシュ テーブル スキーマをカスタマイズする必要があるのかどうかなど、いくつかの要因によって変わります。図 8-1 に、キャッシングの設定手順を示します。

図 8-1 キャッシュ設定手順

キャッシュ設定手順

図 8-1 に示した手順については、以下の節で説明します。

手順 1 : (省略可能) SQL スクリプトの実行によるキャッシュ テーブルの作成

開発モードの WebLogic サーバの場合、任意に選択したデータ ソースを使用して ALDSP Administration Console から自動的にキャッシュ テーブルを設定できます。プロダクション環境の場合、またはキャッシュ スキーマをカスタマイズする場合は、手動で SQL スクリプトを実行する必要があります。

次の場所にある、特定の DBMS に対応するサブディレクトリ内の SQL スクリプトを使用して、キャッシュ テーブルを作成できます。

<ALDSP_HOME>/dbscripts/

次に例を示します。

<ALDSP_HOME>/dbscripts/oracle/dsp_cache.sql

キャッシュ テーブルを作成するには、次の手順に従います。

  1. DBMS に対応するサブディレクトリからスクリプトを開き、作成されたテーブルの名前を、データスペースに対してユニークな名前になるように変更します。
  2. 各データスペースにおいて、キャッシュされたデータは独自のキャッシュ テーブルに保持することをお勧めします。たとえば、テーブルに <dsname>_CACHE という名前を付けることができます。

  3. 必要に応じて、スキーマに対してその他の任意の変更を加えます。
  4. カラム名、またはスキーマ テーブルの構造を、変更しないでください (「キャッシュ テーブルの構造を変更する」に示すような特別な場合を除く)。キャッシュ テーブル スキーマについては、表 8-1 を参照してください。

  5. スクリプトを実行します。
  6. CHASH カラム (取得用) および CUID カラム (レコード更新用) に基づきテーブルをインデックス化します。
  7. テーブルが (「手順 3 : キャッシュ データ ソースとキャッシュ テーブルの指定」で説明するように) ALDSP によって自動的に作成されると、CHASH のインデックスが作成されます。自動作成される名前は、テーブル名に「_INDEX」を付加したものとなります。

注意 : DB2 では、この名前は最大 18 文字までで切り捨てられます。

キャッシュ テーブルの構造を変更する

ALDSP では、キャッシュ テーブルに特定のスキーマを必要とします。したがって通常は、キャッシュ テーブルの構造を変更しないでください。しかし場合によっては、デプロイメントに基づき、デフォルトのカラム サイズの調整が必要となることがあります。これが必要となる状況としては、デフォルトのデータベース テーブルのコンテンツ カラムより大きい結果セットを頻繁に処理するデータ サービスがあり、DBMS として DB2 を使用しているという場合が考えられます。

DB2 の場合、表 8-1 に示すように、スクリプトは特定サイズの CINVKEY カラムおよび CCONTENT カラム (結果データを格納) を作成します。シリアライズされたキーまたはコンテンツを、そのサイズより大きくする必要がある場合、スクリプトを実行する前に、それに応じてテーブル スキーマを調整する必要があります。

キャッシュ テーブルに対するカスタマイズの実施を試みる前に、表 8-1 に示すスキーマをよく理解しておくことが必要です。

表 8-1 キャッシュ テーブル スキーマ
カラム
説明
CUID
キャッシュ エントリのユニークな数字による識別子。
CHASH
64 ビット整数としての、キー (CINVKEY) のハッシュ値。キーはバイナリ オブジェクトとして格納されているため、キー自体による検索は非効率的なので、このフィールドを使用すると検索を高速化できる (実際には、スクリプトが CINVKEY を BLOB 型として作成する DBMS の場合、キー自体による検索は不可能)。
CEXPIRE
レコードの期限を示すタイムスタンプ値。この値はレコード挿入中に、関数に対して定義された TTL 値を現在の時間に加えて計算される。
CFID
関数のシリアライズされた名前。テーブルが自動的に作成される場合には、VARCHAR(512) 型が使用される。この値は、データスペース内のすべての関数の名前が 512 文字より短いか、または一部の名前が 512 文字より長い場合には、より小さいサイズまたはより大きいサイズに調整する必要がある。
CFARITY
関数が受け入れる引数の数。これは、関数のオーバーロードが生じた場合に、関数を区別するために使用する (現在は使用されていない)。
CINVKEY
関数および関数の引数からなるシリアライズされた呼び出し識別子 (Pointbase DBMS 上で 50 KB のサイズで作成される)。
CCONTENT
キャッシュ結果を構成するバイナリ データ (DB2 では 1 GB、Pointbase DBMS では 200K のサイズで作成される)。

手順 2 : キャッシュ データベース用の JDBC データ ソースの作成

キャッシュ テーブル作成後、WebLogic Administration Console を使用して、ALDSP キャッシュ用に設定したデータベースを参照する JDBC データ ソースを WebLogic Server 上で作成できます。

注意 : キャッシュ データベースとして Oracle を使用する場合、[グローバル トランザクションを受け付ける] を FALSE に設定する必要があります (デフォルトは TRUE)。WebLogic Administration Console で Oracle JDBC データ ソースを作成する場合、[グローバル トランザクションを受け付ける] ボックスのチェックを外す必要があります。

作成が済んだら、次の節の説明に従って結果キャッシュを有効化します。

手順 3 : キャッシュ データ ソースとキャッシュ テーブルの指定

WebLogic Administration Console で JDBC データ ソースとしてキャッシングに使用するテーブルをコンフィグレーション後は、ALDSP を使用してキャッシュ テーブルを設定できます。

キャッシュ データベースを指定してキャッシングを有効化するには、次の手順に従います。

  1. ナビゲーション ペインでデータスペース ノードを選択します。図 8-2 に示すように、[一般] タブが表示されます。
  2. 図 8-2 データスペースのための結果キャッシングの有効化


    データスペースのための結果キャッシングの有効化

  3. ロックを取得するには [ロックして編集] をクリックします。
  4. [一般] タブの [データ キャッシュ] セクションで、[データ キャッシュの有効化] をクリックします。
  5. [データ ソース名リスト] ボックスで、キャッシュ テーブル用にコンフィグレーションしたデータ ソースの JNDI 名を指定します。
  6. キャッシュ テーブルを作成しなかった場合は、ALDSP でキャッシュ テーブルを作成するデータ ソースを選択します。

  7. データスペース用にカスタム キャッシュ テーブルを作成した場合は、[データ キャッシュのテーブル名] フィールドにその名前を入力します。
  8. 別の手順としては、ALDSP で、テーブル作成時に使用する別の名前を入力するか、またはフィールドを空白のままにしておきます。空白にした場合は、デフォルト名 <dsName>_CACHE が使用されます。

  9. [保存|変更のアクティブ化] をクリックします。

キャッシングが有効化されたら、各関数に関する結果キャッシングのコンフィグレーションを行う必要があります。

手順 4 : 関数によるキャッシングの有効化

データスペースのためのキャッシュ設定を有効化したら、データ サービス関数のキャッシングをコンフィグレーションできます。各関数について、キャッシングを有効にするかどうかを指定し、キャッシュ エントリの生存時間 (秒) を設定できます。

関数によりキャッシングを有効化するには、次の手順に従います。

  1. [システム管理] カテゴリが選択されていることを確認します。
  2. ナビゲーション ペインでデータ サービス名をクリックします。
  3. 図 8-3 に示すように、[データ キャッシュ] ページが表示されます。

    図 8-3 関数によるキャッシングの有効化


    関数によるキャッシングの有効化

  4. ロックを取得するには [ロックして編集] をクリックします。
  5. キャッシングを有効化する各関数の [データ キャッシュの有効化] チェックボックスを選択します。
  6. 注意 : コンソールでデータ キャッシングを有効化する前に、ALDSP IDE で関数に対して [データ キャッシングの許可] プロパティを true に設定していることを確認します。例えば、ADDRESS() のキャッシングを有効にするには、図 8-4 に示すように、ALDSP IDE で [データ キャッシングの許可] プロパティを true に設定します。
    図 8-4 ALDSP IDE で [データ キャッシングの許可] プロパティのコンフィグレーション


    ALDSP IDE で [データ キャッシングの許可] プロパティのコンフィグレーション

  7. キャッシュが有効化された各関数について、生存時間 (TTL) を秒単位で入力します。
  8. 基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。

  9. ALDSP リソースの ID キーのキャッシング情報を格納したい場合、キャッシュで「ID キーの追加」を選択します。これによって、他の環境変数に頼るデータ キャッシュ値を保護できます。この機能の詳細については、「セキュリティのための ID キーのキャッシング」を参照してください。
  10. [保存|アクティブ化] をクリックして変更を保存します。

セキュリティのための ID キーのキャッシング

この機能により、キャッシュされたエントリをユーザ プロファイルに基づいてフィルタすることができます。[データ キャッシュ] チェックボックスで「ID キーの追加」を選択すると、データ キャッシュ値がユーザ固有になります。これにより、該当するデータ キャッシュ エントリは、対応するユーザから使用できることになります。例えば、ユーザ A とユーザ B の 2 人のユーザが関数に対してキャッシュされた値にアクセスしようとする場合、ユーザ A は自分のトランザクションに固有の値を表示でき、ユーザ B は自分で行ったトランザクションのキャッシュされた値を表示できます。

この機能は、ALDSP Administration Console を使用して外部データ ソースをマップし管理する場合に特に便利です。

 


データ キャッシュのモニタおよびパージ

オペレーション カテゴリを使用して関数レベルのデータ キャッシングを管理できます。[オペレーション] カテゴリを選択すると、図 8-5 に示すように、[モニタ] タブが表示されます。

図 8-5 データ キャッシュ値のモニタ

データ キャッシュ値のモニタ

このタブによって、関数のランタイム キャッシュ統計情報が提供され、キャッシュをパージできます。

[データ キャッシュ エントリの数] フィールド では、データ キャッシュでキャッシュされた結果の数が表示されます。

データ キャッシュのパージ

キャッシュのパージを行うと、キャッシュ データベースからキャッシュされたエントリが削除されます。キャッシュがパージされると、各関数はそのデータソースに対して再びキャッシュされるまで実行されます。

ALDSP は、以下のいずれかのイベントが発生した場合、指定されたストアド クエリの結果キャッシュをフラッシュします。

ALDSP は、以下のいずれかのイベントが発生した場合、次の呼び出し時に関数の結果キャッシュをフラッシュします。

以下の節で示すように、手動で、データスペース全体に対して一度に、または個々の関数について、キャッシュをパージすることもできます。

データスペースのキャッシュのパージ

データスペースのキャッシュをパージするには、次の手順に従います。

  1. ナビゲーション ペインからデータスペースを選択します。
  2. [オペレーション] カテゴリをクリックします。
  3. 図 8-6 データスペースのキャッシュのパージ


    データスペースのキャッシュのパージ

  4. [モニタ] タブの [データ キャッシュのパージ] をクリックします。

関数のキャッシュのパージ

図 8-5 に示すように、[オペレーション] カテゴリの [モニタ] タブを使用して個々の関数のキャッシュをパージできます。

関数によりキャッシュをパージするには、次の手順に従います。

  1. ナビゲーション ツリーから関数によりキャッシュをパージするデータ サービスを選択します。
  2. [データ キャッシュのパージ] フィールドのゴミ箱アイコンをクリックして関数のキャッシュをパージします。

  ページの先頭       前  次