Yellowfinは、頻繁にリクエストされるオブジェクトを管理し、Yellowfin データベースへのリクエストを最小限に抑えるために、多くのオブジェクトをLRU (Least Recently Used) メモリキャッシュに保存します。LRU キャッシュには最大サイズとタイムアウトがあります。要素は、タイムアウト期間が経過した場合、またはキャッシュが最大サイズに達したため強制的に削除された場合、キャッシュから削除されます。
これらのキャッシュタイムアウトやサイズパラメーターは、成長するYellowfin 環境を最適化するために変更することができます。最適なパフォーマンスを維持するためには、インスタンスの成長に合わせて、これらのパラメーターを拡張することが重要です。現在のキャッシュのデフォルトとステータスを表示するには、標準のYellowfin URLの最後にinfo_cache.jsp を追加することで確認できます。例えば、localhost:7373/info_cache.jsp
タイプに関係なく、効果的なキャッシュを使用することで、エンドユーザーのパフォーマンスが向上します。十分に活用されたキャッシュを備えることで、Yellowfinが構成データベースやデータソースの間を頻繁に行き来する必要がなくなり、ネットワークやCPUリソースを消費することもなくなります。その代償として、多くのデータを含む大規模なキャッシュはRAMを消費します。環境を分析し、システムやビジネスニーズに適した効果的なキャッシュ戦略を実施するのは、システム管理者またはYellowfin 管理者の役割です。
以下は、Yellowfinのキャッシュ一覧とそれらの構成可能なパラメーターです。
レポートデータキャッシュ
レポートデータキャッシュは、SQLでキー設定された結果セットを保存します。これは、Yellowfin ビューでデフォルトのキャッシュ期間が設定されている場合にレポートデータを保存するためのものです。Yellowfinでレポートデータをキャッシュするには、ビューのキャッシュを必ず有効にする必要があります。
パラメーター:
- ReportCacheSize (Integer) - キャッシュに保存されるデータセットの数です。デフォルトでは、20データセットになっています。
- ReportCacheMaxAge (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
レポート定義キャッシュ
レポート定義キャッシュは、各レポートのメタデータを保存します。これはレポートデータキャッシュとは異なり、レポート定義キャッシュにはレポートの構造に関する情報のみを保存し、レポート自体の実際のデータコンテンツは保存しません。
パタメーター:
- ReportDefinitionCacheSize (Integer) - キャッシュに保存される定義の数です。デフォルトでは、1000定義になっています。
- ReportDefinitionCacheTimeout (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
ドキュメントデータキャッシュ
ドキュメントデータキャッシュは、処理のためにバイナリデータを一時的に保存します。これは、プラグインマネージャーにより処理されている間に、JARファイルをメモリに保存することも含まれます。
パラメーター:
- DocumentCacheSize (Integer) - キャッシュに保存されるデータファイルの数です。デフォルトでは、50定義になっています。
- DocumentCacheMaxAge (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、12時間 (43200000 ms) になっています。
ダッシュボード定義キャッシュ
ダッシュボード定義キャッシュは、各ダッシュボードタブのメタデータを保存します。
パラメーター:
- DashboardDefinitionCacheSize (Integer) - キャッシュに保存される定義の数です。デフォルトでは、1000定義になっています。
- DashboardDefinitionCacheTimeout (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
パーソンキャッシュ
パーソンキャッシュは、プロフィール情報、権限、設定などを含む、ユーザーに関する情報を保存します。
パラメーター:
- PersonCacheSize (Integer) - キャッシュに保存されるパーソンオブジェクトの数です。デフォルトでは、50パーソンオブジェクトになっています。
- PersonCacheMaxAge (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、12時間 (43200000 ms) になっています。
キャッシュフィルターキャッシュ
キャッシュフィルターキャッシュは、キャッシュされたフィルターを保存します。
パラメーター:
- CachedFilterCacheSize (Integer) - キャッシュに保存されるキャッシュされたフィルターエントリーの数です。ソース置換またはソースフィルターが使用されていない場合、フィルター階層ごとにエントリーが1つ作成されます。ユーザーまたはソースフィルター値ごとにエントリーが1つ作成される場合もあります。これはキャッシュ方法に依存します。各エントリーは、階層内の各フィルターで使用可能な値を保存します。デフォルトでは、100オブジェクトになっています。
- CachedFilterCachePeriod (Integer ミリ秒) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
- MetaCachedSize (Integer) - キャッシュに保存される階層定義の数です。デフォルトでは1000定義になっています。
- MetaCachedPeriod (Integer ミリ秒) - キャッシュ内のメタデータ要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
- CachedFilterBatchSize (Integer) - キャッシュされたフィルター値の設定時に一度に書き込まれるロウ (行) 数です。デフォルトでは、100ロウ (行) になっています。
- CachedFilterCacheMethod (Code) - 以下のいずれかです。
- NO_CACHE - メモリキャッシュは使用せず、階層がリクエストされる度にデータベースから読み込みます。
- CACHE_BY_USER - ユーザーごとのキャッシュ値です。
- CACHE_BY_SOURCE_FILTER - 異なるソースフィルター値によるキャッシュです。
デフォルトでは、CACHE_BY_USERになっています。
- CachedFilterJoinMethod (Code) - 以下のいずれかです。
- DATABASE - Yellowfin データベースに対する1つの複雑なクエリーで、データベースでのデータ結合を実行します。
- JAVA - Yellowfin データベースに対して複数のシンプルなクエリーを実行し、Java内でデータ結合を実行します。
デフォルトでは、DATABASEになっています。
ビューキャッシュ
ビューキャッシュには、キャッシュされたビューオブジェクトが含まれます。各ビューのキャッシュの設定は、Yellowfin UI内のビュービルダーの準備ステップのパフォーマンス項目で確認できます。
ジオメトリーキャッシュ
ジオメトリーキャッシュは、地図を取り上げたレポートで使用されるジオメトリーをキャッシュします。
パラメーター:
- GeometryCacheSize (Integer) - これはメモリ内にキャッシュされる図形の数を指定します。デフォルトでは、4000図形になっています。
レポートサムネイルキャッシュ
レポートサムネイルキャッシュは、閲覧ページなどに表示されるレポートのサムネイルイメージを保存します。
パラメーター:
- ReportThumbnailCacheSize (Integer) - これはメモリ内にキャッシュされるレポートサムネイルイメージの数を指定します。デフォルトでは、1000イメージになっています。
イメージキャッシュ
イメージキャッシュは、頻繁に使用されるイメージを保存します。これらは通常、ユーザーが提供したイメージです。
パラメーター:
- ImageCacheSize (Integer Bytes) - これはメモリ内にキャッシュされるイメージメモリのバイト数をしていします。デフォルトでは、52428800 バイト (54 メガバイト) になっています。
翻訳キャッシュ
翻訳キャッシュは、頻繁に使用される翻訳オブジェクトを保存します。これらは通常、ユーザーにより提供されたカスタム翻訳です。
パラメーター:
- TranslationCacheSize (Integer) - メモリ内にキャッシュされる翻訳オブジェクトの数を指定します。デフォルトでは、5000オブジェクトになっています。
- TranslationCacheMaxAge (Integer ミリ秒) - このキャッシュに存在する要素の最大タイムアウトです。デフォルトでは、24時間 (86400000 ms) になっています。
LDAP DNキャッシュ
LDAP DNキャッシュは、Yellowfinに頻繁に使用されるLDAP情報を保存します。このキャッシュは、LDAP認証を利用する環境にのみ有効です。
パラメーター:
- LDAPDNCacheSize (Integer) - キャッシュに保存されるLDAPオブジェクトの数です。デフォルトでは、300000 オブジェクトになっています。
- LDAPDNCacheMaxAge (Integer Milliseconds) - キャッシュ内の要素の最大タイムアウトです。デフォルトでは、25時間 (90000000 ms) になっています。
イベントキャッシュ
イベントキャッシュは、Yellowfinに頻繁にアクセスされるイベント情報を保存します。これには、頻繁にアクセスされるページ、アクション、方法などが含まれます。
パラメーター:
- EventCacheSize (Integer) - キャッシュに保存されるイベントオブジェクトの数です。デフォルトでは、100000 オブジェクトになっています。
テキストエンティティキャッシュ
テキストエンティティキャッシュは、Yellowfinのコラボレーション機能の一部で頻繁にアクセスされるテキストアイテムを保存します。これには、ストーリーボード、タイムライン、ディスカッションストリームなどの機能が含まれます。
パラメーター:
- TextEntityCacheSize (Integer) - キャッシュに保存されるテキストオブジェクトの数です。デフォルトでは、10000 アイテムになっています。
- TextEntityCacheMaxAge (Integer ミリ秒) - アイテムがキャッシュに保存されるミリ秒単位の時間です。デフォルトでは、12時間 (43200000 ms) になっています。
パラメーターの追加と編集
上記各パラメーターは、web.xmlで追加することができます。
各パラメーターは、以下の形式になります。
<init-param> <param-name>[PARAMETER NAME]</param-name> <param-value>[PARAMETER VALUE]</param-value> </init-param>
例えば、このようになります。
<init-param> <param-name>CachedFilterJoinMethod</param-name> <param-value>DATABASE</param-value> </init-param>
そして、MIStartup サーブレットの子になります。
各新パラメーターを、com.hof.mi.servlet.MIStartup 配下に追加できます
Yellowfinの起動時に、標準出力でパラメーターが受け入れられたことを確認できます。
| Initialising CachedFilterCache... OK
| Cache Method: CACHE_BY_USER
| Cached Filter Cache Size: 100
| Cached Filter Query Cache Size: 100
| Cached Filter Meta Cache Size: 1000
| Cached Filter Cache Period: 86400000 ms
| Cached Filter Query Cache Period: 86400000 ms
| Cached Filter Meta Cache Period: 86400000 ms
ブラウザで info_cache.jsp ページを読み込むことで、現在のキャッシュ統計を確認することができます。