ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

14 結果セットのキャッシングと問合せ

CatalogManagerサブレット(およびそのAPI)は、WebCenter Sitesシステムの結果セット・キャッシュを維持します。この章では、結果セットのキャッシングについて、またCatalogManagerを使用して結果セットを適切にキャッシュして、キャッシュからそれらの結果セットをフラッシュできるようにする問合せの作成方法について説明します。開発者やシステム管理者は、3つのシステム(開発、管理および配信)すべてで結果セットのキャッシングを設定します。

データベースに問い合せるたびに、WebCenter Sitesではキャッシュ済の結果セットまたは未キャッシュの結果セットのいずれかの結果セットが処理されます。結果セットのキャッシングは、ご使用のデータベースの負荷を軽減し、問合せに対するレスポンス時間を改善します。

futuretense.iniファイルには、すべての結果セットのサイズとタイムアウトの期間を設定するグローバル・プロパティが用意されています。表ごとのデフォルト設定をオーバーライドする、表固有のプロパティをfuturetense.iniファイルに追加できます。これらのカスタム・プロパティを使用すると、ピーク・パフォーマンスのシステムを微調整できます。

この章には次の項が含まれます。

14.1 キャッシング・フレームワーク

デフォルトでは、WebCenter Sitesは、結果セットをinCacheフレームワークに格納します。第14.7項「キャッシング・フレームワーク間の切替え」の説明に従い、ハッシュ表のキャッシングに切り替えるオプションを使用できます。

inCacheによる結果セット・キャッシングが有効になると、「システム・ツール」ノード(Adminインタフェースの「管理」タブにある)には、結果セットのキャッシュとそのコンテンツに関する統計情報を提供するinCacheツールによって結果セットが表示されます。inCacheによる結果セットのキャッシュは、inCacheによるページとアセットのキャッシュとは関係なく機能することに注意してください。inCacheフレームワーク、そのキャッシュ・モデルおよびシステム・ツールの詳細は、Oracle Fusion Middleware WebCenter Sites管理者ガイドを参照してください。

14.2 データベースの問合せ

WebCenter Sitesデータベースに情報を問い合せるには、複数の方法があります。例:

14.3 結果セットのキャッシングの仕組み

データベースに問合せがある場合、結果セットのキャッシングを有効にしてあると、問合せからの結果セットがキャッシュされます(関連プロパティの詳細は、第14.8.2項「デフォルト・プロパティ」および第14.8.3項「表固有のプロパティ」を参照)。その場合、同じ問合せが別に実行され、最新の問合せが実行されてから表内のデータが変更されないままだと、データベースに再び問い合せるのではなく、結果セットのキャッシュからの情報が提供されます。キャッシュからの結果セットの提供の方が、別のデータベース検索の実行より迅速に実行されます。

futuretense.ini内のrsCacheOverInCacheプロパティの構成方法に応じて、結果セットのキャッシュはハッシュ表またはinCacheフレームワークのいずれかになります。結果セットは、結果セットを生成した問合せに関連付けられた表名ごとに編成されています。つまり、結果セットは表名に対してキャッシュされます。

表が更新されるたびに(WebCenter Sitesインタフェースから、またはカスタム・エレメントのCatalogManagerコマンドにより)、その表に対するキャッシュ内のすべての結果セットがフラッシュされます。結果セットは単一のJava VMと関連してキャッシュされます。Java VM間では結果セットを共有しませんが、同期機能がクラスタ内のすべてのサーバーで有効になっていれば、WebCenter Sitesではクラスタ内のすべてのJava VMにシグナルが送信され、結果セットは無効になったときにフラッシュされます。

14.4 データベースのロードの削減

結果セットのキャッシングは、次の2つの方法でデータベースのロードを軽減します。

通常、結果セットのキャッシングはすべてのデータベース表で有効にする必要があります。キャッシュする結果セットの数やキャッシュする時間の長さを制限する必要がある場合でも、結果セットのキャッシングを全部まとめて無効にすることは逆効果になりかねません。


注意:

ElementCatalog表の結果セットのキャッシングを無効にしないでください。無効にした場合、いずれかのエレメントでJSPを使用する場合は特に、システム・パフォーマンスが大きく低下します。


14.5 表名の指定

該当する表に対して結果セットをキャッシュできるように、表名は常に問合せと関連付けられている必要があります。それにより、表がWebCenter Sitesインタフェースや独自のカスタム・エレメントで更新されるたびに、その表に関連付けられたすべての結果セットがCatalogManagerによってフラッシュされます。

表名を結果セットに対して指定する方法は、実行している問合せのタイプに応じて異なります。次の項では、最も一般的に使用されるデータベースへの問合せ方法とそのような問合せに対する表名の指定方法について説明します。

この項の内容は、次のとおりです。

14.5.1 SELECTTO

ics.SelectTo Javaメソッド、SELECTTO XMLタグまたはics:selectto JSPタグを使用する場合、FROMパラメータ(句)を使用して表名を指定する必要があります。例:

<SELECTTO FROM="EmployeeInfo" 
         WHERE="name"
         WHAT="*"
         LIST="MatchingEmployees"/>

この場合、EmployeeInfoは問合せ先の表名であり、結果セットをキャッシュした表の名前です。EmployeeInfo表が更新されるたびに、CatalogManagerではその表に対してキャッシュされたすべての結果セットがフラッシュされます。

14.5.2 EXECSQL

EXECSQLにより、インラインSQL文を実行できます。TABLEパラメータを使用して、結果セットをキャッシュする表(複数可)を指定します。複数の表を指定すると(カンマ区切りリストを使用して)、結果セットはリストの最初の表に対してキャッシュされます。つまり、結果セットは、タイムアウトや最大サイズなど最初の表に指定された結果セットのキャッシュの設定に基づいてキャッシュされます。

CatalogManagerでは、指定された表が更新されると古くなった結果セットが削除されます。

たとえば、次の問合せは記事の表に対する結果セットをキャッシュします。

<EXECSQL SQL="SELECT article.headline, images.imagefile FROM article,images WHERE article.id='FTX1EE17FWB' AND images.id='FTK9384FWW'" LIST="sqlresult" TABLE="article,images"/>

14.5.3 CALLSQL

ics.CallSQL Javaメソッド、CALLSQL XMLタグまたはics:callsql JSPタグを使用して、SystemSQL表内に格納されているSQL問合せを呼び出すと、表名はSystemSQL表内の問合せのエントリ(行)によって設定されます。

SystemSQL表にはdeftable列があり、問合せからの結果セットをキャッシュする表名を識別します。複数の表を指定するには、deftable列に表のカンマ区切りリストを追加します。リストの最初の表は、問合せがキャッシュされる表です。

表に格納された各問合せでは、deftable列に値が存在する必要があります。値がないと、CatalogManagerで結果セットを適切に保存できなくなり、必要な場合に結果セットをフラッシュできなくなります。表名は既存の表を識別する必要があります。存在しない表名を入力したり、表名のスペルを間違えると、結果セットを適切にキャッシュできません。

14.5.4 WebCenter Sitesインタフェースのフォームの検索

WebCenter Sitesインタフェースのアセットを検索する際に使用する「検索」フォームは、アセットをそのタイプに基づいて検索します。検索フォームの問合せからの結果セットは、該当するタイプのアセットのプライマリ記憶域表に対して格納されます。

たとえば、Burlington Financialサンプル・サイトで、記事という名前のアセットの結果セットはArticle表に対してキャッシュされ、ページのアセットはPage表に対してキャッシュされます。

14.5.5 問合せアセット

問合せアセットが返すことができるアセットは、1タイプのアセットのみです。問合せアセットを作成する際には、問合せアセットが「問合せの結果」フィールドに返すアセットの種類を、記事、イメージファイルなどのように指定します。

該当する問合せアセットがオンライン・サイトのページで使用されると、WebCenter Sitesでは問合せアセットが返すアセット・タイプ(ArticleImagefileなど)のプライマリ記憶域表の表名に対する結果セットが格納されます。

14.5.6 SEARCHSTATE

SEARCHSTATE XMLタグおよびJSPタグは、一連のフレックス・アセット(ASSETSETタグにより作成される)に適用される一連の検索絞込み条件を作成します。絞込み条件として、属性値または別のsearchstate(ネストされたsearchstate)のいずれかに基づいたフィルタ(制限)を使用できます。

SEARCHSTATEタグとASSETSETタグを使用して、フレックス・アセットまたはフレックス親アセット(定義やフレックス属性ではない)を抽出し、オンライン・ページで訪問者に表示します。

WebCenter Sitesでは、検索状態の結果セットがフレックス・アセット・タイプの_Mungo表に対してキャッシュされます。たとえば、検索状態が製品と名付けられたGE Lightingのサンプル・サイトのフレックス・アセットを返した場合、その結果セットはProducts_Mungo表に対してキャッシュされます。

配信システムを構成する際には、必ずすべての_Mungo表に対する結果セットのキャッシング・プロパティを追加してください。

14.6 結果セットのキャッシュのフラッシュ

ほとんどの場合、データはCatalogManager APIによってデータベースに書き込まれ、必要に応じて結果セットのキャッシュがフラッシュされます。例:

14.7 キャッシング・フレームワーク間の切替え

inCacheに関する結果セットのキャッシングは、次の条件に一致すると有効になります。

  1. linked-cache.xml構成ファイルがアプリケーション・サーバーのクラスパス(WEB-INF/classesディレクトリ)に格納されている場合。

  2. rsCacheOverInCacheプロパティ(futuretense.ini内の)がtrueに設定されている場合。

そのうえでinCacheおよびハッシュ表のフレームワークを切り替えるには、rsCacheOverInCacheプロパティをtrueまたはfalseに設定します。

14.8 結果セットのキャッシングの構成

この項では、すべての表と特定の表について結果セットのキャッシング・プロパティを計画して使用するプロセスについて説明します。

この項の内容は、次のとおりです。

14.8.1 結果セットのキャッシング戦略の計画作成

データベースに対して結果セットのキャッシングを構成する前に、WebCenter Sitesデータベース内のすべての表のスプレッドシートを作成し、開発者とデータベース管理者のチームを作り、開発、管理、テストおよび配信のすべてのシステムについての設定内容を検討します。戦略の1つとして、デフォルトのプロパティを使用できる類似表の大きなグループを1つ特定し、例外の表固有のプロパティを追加します。ただし、配信システムを調整して最高のパフォーマンスを得るには、配信システムのデータベース内の各表で最低でも50から100個のカスタム・プロパティを作成する必要があると考えられます。


注意:

com.fatwire.logging.cs.cache.resultsetプロパティを設定すると、結果セットのキャッシュに関するデバッグ・メッセージがWebCenter Sitesログ・ファイルに書き込まれます。(使用しているロギング・フレームワークに応じて、commons-logging.propertiesファイルまたはlog4j.propertiesのいずれかでプロパティを設定します。)


14.8.2 デフォルト・プロパティ

表14-1は、すべての表に割り当てられる、futuretense.iniの結果セットのキャッシング・プロパティについて説明しています。表固有のキャッシング・プロパティが表に割り当てられていなければ、これらのプロパティが表の結果セットのキャッシュを制御します。同一のプロパティが、inCacheとハッシュ表の両方で結果セットのキャッシングに有効となります。これらのプロパティを変更するには、futuretense.iniファイルをプロパティ・エディタ・ユーティリティで開いて変更します。プロパティ・エディタの使用の詳細は、第8章「WebCenter Sitesのツールおよびユーティリティ」を参照してください。

表14-1 結果セットのキャッシュを制御するデフォルト・プロパティ

プロパティ 説明

cc.cacheResults

メモリーにキャッシュする結果セットのデフォルトの数を指定します。これは結果セットのレコードの数ではなく、結果セットの数を意味する点に注意してください。

注意: デバッグしている場合を除いて、このプロパティを0または-1に設定しないでください。その値に設定すると、WebCenter Sitesインタフェースはアセットを適切に保存できなくなります。(このプロパティを0または-1に設定すると、独自のキャッシング・プロパティを構成していないすべての表で結果セットのキャッシングが無効になります。)

cc.cacheResultsTimeout

キャッシュされる結果セットをメモリー内に保持する時間を分単位で指定します。

このプロパティを-1に設定すると、独自のキャッシング・プロパティを構成していない表のタイムアウト値がなくなります。

cc.cacheResultsAbs

結果セットのキャッシュ内にある結果セットの有効期限の計算方法を指定します。

  • このプロパティがtrueに設定されていると、結果セットの有効期限が絶対となります。たとえば、cc.cacheResultsTimeoutが5分に設定されていると、結果セットがキャッシュされた5分後に、結果セットはキャッシュからフラッシュされます。

  • このプロパティがfalseに設定されていると、結果セットの有効期限はそのアイドル時間を基準にします。たとえば、cc.cacheResultsTimeoutが5分に設定されていると、結果セットは最初にキャッシュされてから5分ではなく、最後にリクエストされてから5分後にキャッシュからフラッシュされます。


14.8.3 表固有のプロパティ

表固有のプロパティは、デフォルト・プロパティをオーバーライドし、システムをピーク・パフォーマンスで微調整できるようにします。CatalogManagerでは、表14-1で説明したデフォルト・プロパティを使用して、表固有の結果セットのキャッシング・プロパティが含まれているかどうかを確認するためにfuturetense.iniファイルがチェックされます。

WebCenter Sitesデータベースの各表について3つの結果セットのキャッシング・プロパティを作成できます。表固有のプロパティは、デフォルト・プロパティと同様に動作します(詳細は表14-1)。

表固有のプロパティの構文は、次のとおりです。

cc.<tablename>CSz=<number of resultsets> 
cc.<tablename>Timeout=<number of minutes>
cc.<tablename>Abs=<true or false>

注意:

アセット・タイプがリビジョン追跡で有効になっていたり、アセット・バージョンの結果セットをキャッシュしたりする場合、前述のプロパティを使用しますが、<tablename>の後に_tを追加します。

cc.<tablename>_tCSz=<number of resultsets>
cc.<tablename>_tTimeout=<number of minutes>
cc.<tablename>_tAbs=<true or false>

結果セットのキャッシングの詳細は、『Oracle Fusion Middleware WebCenter Sitesプロパティ・ファイル・リファレンス』を参照してください。


futuretense.iniファイルをプロパティ・エディタ・ユーティリティで開き、制御する各表に表固有のプロパティを追加します。プロパティ・エディタ・ユーティリティの使用の詳細は、第8章「WebCenter Sitesのツールおよびユーティリティ」を参照してください。

14.9 まとめ

結果セットのキャッシングは、ご使用のデータベースの負荷を軽減し、問合せに対するレスポンス時間を改善します。必ず次の操作を実行してください。