ヘッダーをスキップ

Oracle TimesTen In-Memory Databaseアーキテクチャ概要 リリース6.0 B25763-01 |
| 目次 | 索引

前へ | 次へ |

## ユーザー管理キャッシュ・グループ

ユーザー管理キャッシュ・グループでは、あらゆる属性とSQL文をユーザーが選択して、キャッシュの動作をカスタマイズできます。ユーザーは、キャッシュ・データのロード、伝播、およびキャッシュ・グループからの削除について、その方法とタイミングを完全に制御できます。

図9.5 ユーザー管理キャッシュ・グループ

## キャッシュ・インスタンス

Oracleとキャッシュ・グループの間での変更の伝播が表レベルの粒度で行われるシステム管理キャッシュ・グループとは異なり、ユーザー管理キャッシュ・グループでは、データの行（総称してキャッシュ・インスタンスと呼びます）のロード、リフレッシュおよびフラッシュ処理を伝播できます。

図9.6に示すように、各キャッシュ・グループには、そのキャッシュ・グループの主キーが含まれるルート表があります。ルート表の行は、子表の行と1対多の関係を持つことができます。また、その子表の行は、他の子表の行と1対多の関係を持つことができます。

キャッシュ・インスタンスは、外部キー関係によってキャッシュ・グループのルート表にある特定行と関連付けられた一連の行です。ルート表のそれぞれの主キー値がキャッシュ・インスタンスを指定します。キャッシュ・インスタンスは、「キャッシュのロード方法」で説明するキャッシュのロードとキャッシュのエージングの単位になります。キャッシュ・インスタンスの行の1つは、ルート表の行であることが必要です。キャッシュ・グループでは、そのグループ内に複数の親を持つ子表が存在することはできません。これらの制約によって、各TimesTenレコードが属しているキャッシュ・インスタンスは1つのみであり、また、同じキャッシュ・グループ内に存在する親は1つのみであることが保証されます。これで、キャッシュ・インスタンスのエージングの曖昧さが排除されます。外部キー制約は、親に対する更新や削除によって、または親のない子レコードの挿入によって、参照先がない子レコードが生成されるのを防ぎます。

図9.6に示す例で、特定の顧客ID（CustId）に属する表Customer、Orders、Interestsのすべてのレコードは、外部キー制約を介して互いに関連しているため、同じキャッシュ・インスタンスに属します。CustIdはキャッシュ・インスタンスを一意に識別するため、キャッシュ・インスタンス・キーと呼ばれます。

図9.6 TargetCustomersキャッシュ・グループ

## キャッシュのロード方法

ユーザー管理キャッシュ・グループを使用する場合、アプリケーションは、次の方法を選択して、OracleデータベースからTimesTenにキャッシュ・グループ・データをロードできます。

- キャッシュ・グループ全体を一度にロードします。これは、キャッシュ・グループ全体の内容がメモリーに収まる場合に適した方法です。また、TimesTenではキャッシュ・グループ全体をアンロードすることもできます。
- キャッシュ・インスタンスをそのキャッシュ・インスタンス・キーでロードします。この場合、キャッシュ・インスタンスを構成するレコードが、リクエストに応じてTimesTenにロードされます。キャッシュ・インスタンスがすでにTimesTenにロードされている場合、リクエストは無視されます。この方法は、キャッシュの容量がキャッシュ・グループによって記述されるすべてのデータを保持できるほど大きくない場合に適しています。また、TimesTenでは、キャッシュ・インスタンスをそのキャッシュ・インスタンス・キーでアンロードすることもできます。
- キャッシュ・インスタンスをWHERE句でロードします。この方法は、キャッシュ・インスタンスをそのキャッシュ・インスタンス・キーでロードする方法と似ていますが、この場合は、キャッシュ・インスタンスはIDではなく、WHERE句で記述されます。また、キャッシュ・インスタンスをWHERE句でアンロードすることもできます。

注意: ロギングが有効か無効かにかかわらず、データをロードおよびリフレッシュすることもできます。詳細は、「ロギング・オプション」を参照してください。

## キャッシュ・インスタンスのエージング

TimesTenにロードされたキャッシュ・インスタンスは、指定されたしきい値にキャッシュ容量が達したときに、TimesTenから自動的にエージ・アウトできます。TimesTenでは、アプリケーションに多数のキャッシュ・エージング・オプションを用意しており、様々なキャッシュ・インスタンスに様々なエージング期間を設定できます。また、特定のキャッシュ・インスタンスがエージ・アウトされないように設定することもできます。たとえば、アプリケーションではカタログ情報のキャッシュは常に保持されますが、ユーザー・プロファイルは、ユーザーがアプリケーションに接続したときにのみロードし、ユーザーが切断してしばらくしてから自動的にエージ・アウトすることができます。