キャッシュ・グループ

Oracle Database内のデータをキャッシュするには、TimesTenデータベースにキャッシュ・グループを作成します。キャッシュ・グループを作成すると、単一のOracleデータベース表または関連する一連のOracleデータベース表をキャッシュできます。

キャッシュしたOracle Databaseのデータは、Oracle Database表のすべての行および列、または行および列のサブセットで構成できます。

キャッシュでは、次の機能がサポートされています。

  • アプリケーションでは、キャッシュ・グループの読取りおよびキャッシュ・グループへの書込みを行えます。

  • キャッシュ・グループを自動または手動でリフレッシュ(Oracle Databaseのデータをキャッシュ・グループにアップロード)できます。

  • キャッシュの更新は、Oracle Databaseに自動または手動で送信できます。更新は、同期または非同期で送信できます。

TimesTenデータベースはOracle Databaseとやり取りして、キャッシュ・グループの作成やキャッシュ・グループとOracle Databaseの間の更新の伝播などのすべての同期キャッシュ・グループ処理を実行します。キャッシュ・エージェントと呼ばれるプロセスは、キャッシュ・グループへのデータのロード、Oracle Databaseからキャッシュ・グループへのデータの手動リフレッシュ、Oracle Databaseからキャッシュ・グループへのデータの自動リフレッシュなどの非同期キャッシュ処理を実行します。

キャッシュ・グループの詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』キャッシュ・グループの概要を参照してください。

図7-1に、TimesTenでのキャッシュ機能およびプロセスを示します。

図7-1 TimesTenでのキャッシュ

図7-1の説明が続きます。
「図7-1 TimesTenでのキャッシュ」の説明

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

キャッシュ・インスタンスは、外部キー関係によってルート表にある特定行と関連付けられた一連の行です。ルート表のそれぞれの主キー値がキャッシュ・インスタンスを指定します。キャッシュ・インスタンスは、キャッシュのロードとキャッシュのエージングの単位になります。キャッシュ・グループでは、そのグループ内に複数の親を持つ子表が存在することはできません。各キャッシュ・レコードは、1つのキャッシュ・インスタンスのみに属しており、そのキャッシュ・グループ内に親が1つのみあります。

よく使用されるキャッシュ・グループ・タイプは、次のとおりです。

  • 読取り専用キャッシュ・グループ - 読取り専用キャッシュ・グループで実行されるキャッシュ動作では、Oracleデータベース表に対するコミットされた更新が、TimesTenデータベース内の対応するキャッシュ表に対して自動的に反映されます。

  • 非同期ライトスルー(AWT)キャッシュ・グループ - AWTキャッシュ・グループで実行されるキャッシュ動作では、TimesTenデータベース内のキャッシュ表に対するコミットされた更新が、対応するOracleデータベース表に非同期的に自動伝播されます。

キャッシュ・グループのその他のタイプは、次のとおりです。

  • 同期ライトスルー(SWT)キャッシュ・グループ - SWTキャッシュ・グループで実行されるキャッシュ動作では、TimesTenデータベース内のキャッシュ表に対するコミットされた更新が、対応するOracleデータベース表に同期的に自動伝播されます。

  • ユーザー管理キャッシュ・グループ - ユーザー管理キャッシュ・グループでは、カスタマイズされたキャッシュ動作が定義されます。たとえば、ユーザー管理キャッシュの各キャッシュ表をすべて同じタイプに統一する必要はありません。一部の表を読取り専用として定義し、別の表を更新可能な表として定義することが可能です。

複数のTimesTenデータベースがある場合、キャッシュされている表内のデータは別々のTimesTenデータベース間で共有されません。したがって、データベースのコンテンツは、アプリケーションによってそれらのデータが様々なノード間で論理的にパーティション化されているか読取り専用キャッシュ・グループが使用されている場合を除き、キャッシュからの調整はなく重複する可能性があります。

TimesTen Classicでは、すべてのキャッシュ・グループ・タイプがサポートされます。TimesTen Scaleoutでは、静的読取り専用キャッシュ・グループのみがサポートされます。

『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』キャッシュ・グループ・タイプを参照してください。