Oracleのデータは、最初にTimesTenにロードされキャッシュ・グループに移入されます。キャッシュ・グループへのロードが終了したら、そのキャッシュ・データは、TimesTenキャッシュ・グループとOracleデータベースのいずれでも更新できます。Cache Connectでは、キャッシュ・グループからOracleへの更新の伝播とOracleからキャッシュ・グループへのデータのリフレッシュを、いずれも自動的に実行できます。
図8.3は、OracleからTimesTenへのデータのロード、TimesTenからOracleへの更新の伝播およびOracleからTimesTenへの更新のリフレッシュを示しています。
アプリケーションは、次の方法を選択して、OracleデータベースからTimesTenにキャッシュ・グループ・データをロードできます。
この項の後半の内容は次のとおりです。
次のメカニズムを使用して、TimesTenキャッシュ・グループを、Orable実表の最新状態と同じ状態に維持できます。
各メカニズムにはメリットとデメリットがあります。増分自動リフレッシュでは変更のあった行のみがリフレッシュされますが、更新を常時監視するにはOracleでのトリガーの使用が必要です。このため、オーバーヘッドが増え、更新が遅くなります。完全自動リフレッシュでは、Oracleで更新を常時監視する必要はありませんが、キャッシュ内であらゆるものが一度に更新されます。手動リフレッシュは、アプリケーションで制御され、特定のキャッシュ・インスタンスと特定のスケジュールに対してカスタマイズできますが、リフレッシュを実行するタイミングを決定するために必要なロジックによって、アプリケーションのオーバーヘッドが増えます。透過的ロードでは、リクエストに応じて特定のデータをOracle表からTimesTenに自動的にロードできます。
様々な状況で、これらのメカニズムは有効です。たとえば、Oracle表の更新が1日に1度のみ行われ、更新される行数が多い場合は、完全自動リフレッシュが最適です。Oracle表の更新頻度は高いものの、それぞれの更新で変更される行数が少ない場合は、増分自動リフレッシュが最適です。また、リフレッシュを実行する必要のあるタイミングがアプリケーションのロジックで既知の場合は、手動リフレッシュが最適です。キャッシュ・コンテンツが動的で、最新のデータを持つ特定のキャッシュ・インスタンスが必要な場合は、透過的ロードが最適です。たとえば、顧客がコール・センターに連絡する場合に、顧客情報を即座にロードすることができます。
TimesTenキャッシュ・グループで更新されるデータについては、次のメカニズムを使用することで、Oracleデータベースの状態を最新のキャッシュ・グループと同じ状態に維持できます。
PROPAGATEオプションを有効にすると、キャッシュ・グループに対するすべての変更が自動的にOracleデータベースに伝播されます。PROPAGATEオプションが有効になっている1つ以上のキャッシュ・グループ、またはSWTキャッシュ・グループの1つ以上のキャッシュ・グループを変更したトランザクションをアプリケーションで終了した場合、TimesTenはまずOracleでトランザクションをコミットし、次にTimesTenでコミットします。この方法では、Oracleが常に最新のデータのイメージを反映できるように、データがTimesTenでコミットされる前に、Oracleはデータに関係する必要なロジックを適用できます。PROPAGATEオプションまたはSWTキャッシュ・グループは、キャッシュとOracleを常に同期する必要がある場合に使用します。
AWTキャッシュ・グループへの変更は、Oracleへの適用を待機せずにコミットされます。AWTキャッシュ・グループは、レスポンス時間が短くパフォーマンスも良好ですが、変更は非同期でOracleに適用されるため、キャッシュとOracleのデータは必ずしも同一ではありません。
TimesTenにロードされたキャッシュ・インスタンスは、TimesTenから自動的にエージ・アウトできます。使用量ベースのエージングまたは時間ベースのエージングを指定できます。使用量ベースのエージングでは、指定した範囲のメモリー使用量で最低使用頻度(LRU)のデータが削除されます。時間ベースのエージングでは、指定した存続期間および頻度のエージング処理に基づいてデータが削除されます。エージングはキャッシュ・インスタンスに基づいているため、キャッシュ・グループのルート表のみに定義できます。同じシステムに使用量ベースのエージングと時間ベースのエージングを構成できますが、特定のキャッシュ・グループに1つのタイプのエージングしか定義できません。
詳細は、『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のキャッシュ・グループでのエージングの実装に関する項を参照してください。
TimesTenアプリケーションでは、TimesTenデータベースへの単一接続を介して、TimesTenキャッシュ・グループまたはOracleデータベースのいずれかにSQL文を送信できます。このような単一接続は、図8.4に示すパススルー機能で、SQL文はTimesTenのキャッシュ表でローカルに処理できるのか、またはOracleに転送する必要があるのかをチェックすることによって使用可能になります。パススルー機能の設定では、パススルーの対象とする文の種類とそれを実行する状況が指定されます。
パススルー機能の具体的な動作は、データベース属性PassThroughで制御されます。詳細は、『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のパススルー・レベルの設定に関する項を参照してください。