管理ガイド

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

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

この章では、BEA AquaLogic Data Services Platform でデータ サービスのキャッシングを設定および管理する方法について説明します。

この章の内容は以下のとおりです。

注意 : キャッシングが使用できるのは、それが許可されているデータ サービス関数に対してのみです。 詳細については、『データ サービス開発者ガイド』の「データ サービスの設計」の「関数のキャッシング」を参照してください。

キャッシングは、アド ホック クエリまたは XQuery セキュリティ関数では使用できません。

 


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

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

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

初めてデータ サービス関数が実行された際にデザイン ビュー (『データ サービス開発者ガイド』の「データ サービスの設計」における「関数のキャッシング」を参照) を通じて関数のキャッシングが認可されると、AquaLogic Data Services Platform は結果をローカルのクエリ結果キャッシュに保存します。 次に同じ関数が同じパラメータで実行されると、AquaLogic Data Services Platform はキャッシュのコンフィグレーションをチェックし、結果が期限切れになっていなければ、結果を外部ソースからではなく、キャッシュから取得します。

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

デフォルトでは、キャッシングは無効になっています。 有効化されると、個々のデータ サービス関数について、キャッシュおよびそのキャッシュの生存時間 (TTL) をコンフィグレーションできます。 キャッシングと関連付けられたコンフィグレーション タスクには、次のものがあります。

各データ サービス関数について、TTL 設定は個別に指定されます。 一般に、基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。 場合によっては、キャッシングをまったく使用すべきでないこともあります。 以下に、例を 2 つ挙げます。

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

キャッシング API

AquaLogic Data Services Platform では、クライアント アプリケーションが物理データ ソースを優先して任意の既存キャッシュ結果を回避することを可能とする API を提供しています。 この API により、影響を受けた関数について、クライアント サイドでキャッシュの更新が自動的に行われます。 詳細については、『アプリケーション開発者ガイド』における、キャッシュされたデータの回避に関する次の説明を参照してください。

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

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

注意 : AquaLogic Data Services Platform キャッシュには、機密性の高いデータが格納されている場合があるため、認可されたユーザのみがアクセスできるように、キャッシュ データベースに対しアクセス制御を維持することが重要です。 また、キャッシュに使用される JDBC データ ソースを、その他の目的には使用しないことをお勧めします。

 


キャッシングの設定

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

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

キャッシュ設定手順

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

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

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

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

<WebLogicHome>/liquiddata/dbscripts/

例えば、次のように指定します。

<WebLogicHome>/liquiddata/dbscripts/oracle/ld_cache.sql

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

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

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

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

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

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

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

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

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

表 7-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 を使用して、AquaLogic Data Services Platform キャッシュ用に設定したデータベースを参照する JDBC データ ソースを WebLogic Server 上で作成できます。

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

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

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

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

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

  1. ナビゲーション ペインでアプリケーション ノードを選択します。
  2. 図 7-2 に示すように、[全般] タブが表示されます。

    図 7-2 アプリケーションのための結果キャッシングの有効化


    アプリケーションのための結果キャッシングの有効化

  3. [全般] タブの [データ キャッシュ] セクションで、[データ キャッシュの有効化] をクリックします。
  4. [データ キャッシュのデータ ソース名] ドロップダウン リストを使用して、キャッシュ テーブル用にコンフィグレーションしたデータ ソースの JNDI 名を選択します。
  5. キャッシュ テーブルを作成しなかった場合は、AquaLogic Data Services Platform でキャッシュ テーブルを作成するデータ ソースを選択します。

  6. アプリケーション用にカスタム キャッシュ テーブルを作成した場合は、[データ キャッシュのテーブル名] フィールドにその名前を入力します。
  7. 別の手順としては、AquaLogic Data Services Platform で、テーブル作成時に使用する別の名前を入力するか、またはフィールドを空白のままにしておきます。空白にした場合は、デフォルト名 <appName>_CACHE が使用されます。

  8. [適用] をクリックします。

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

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

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

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

  1. ナビゲーション ペインでデータ サービス名をクリックします。
  2. 図 7-3 に示すように、[データ キャッシュ] ページが表示されます。

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


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

  3. キャッシングを有効化する各関数の [データ キャッシュの有効化] チェック ボックスをチェックします。
  4. キャッシュが有効化された各関数について、生存時間を秒単位で入力します。
  5. 基底のデータの変更頻度が高ければ高いほど、キャッシュの期限切れの頻度も高くする必要があります。

  6. [適用] をクリックして変更を保存します。 このページではまた、関数ごとのキャッシュのパージ、および現在のキャッシュ エントリの表示もできます。

 


キャッシュ エントリのパージ

キャッシュのパージを行うと、キャッシュ データベースからキャッシュされたエントリが削除されます。 キャッシュがパージされると、そのデータ ソースに対する各関数が実行され、再びキャッシュされます。 AquaLogic Data Services Platform は、以下のいずれかのイベントが発生した場合、指定されたストアド クエリの結果キャッシュをフラッシュします。

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

手動で、アプリケーション全体に対して一度に、または個々の関数について、キャッシュをパージすることもできます。 この節の内容は以下のとおりです。

アプリケーションのキャッシュのパージ

[全般] アプリケーション設定ページを使用して、アプリケーションのキャッシュをパージできます。 アプリケーションのキャッシュをパージするには、次の手順に従います。

  1. AquaLogic Data Services Console のナビゲーション ペインでアプリケーション ノードを選択します。
  2. 図 7-4 に示すように、[全般] アプリケーション設定ページが表示されます。

    図 7-4 アプリケーションのキャッシュのパージ


    アプリケーションのキャッシュのパージ

  3. [全般] タブの [データ キャッシュ] セクションにある [データ キャッシュのパージ] リンクをクリックします。
  4. キャッシュをパージする前に、コンソールから確認を求められます。

  5. [はい] をクリックします。
  6. 変更を適用する必要なしに、パージは即座に行われます。

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

図 7-5 に示すように、[データ キャッシュ] ページを使用して個々の関数のキャッシュをパージできます。

図 7-5 関数のキャッシュのパージ

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

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

  1. ナビゲーション ペインで、関数によりキャッシュをパージするデータ サービスをクリックします。
  2. キャッシュをパージする関数の横にあるゴミ箱をクリックします。

  ページの先頭       前  次