TimesTenでのキャッシュの使用

キャッシュは、TimesTen ScaleoutとTimesTen Classicの両方でサポートされており、読取り専用データまたは更新可能データに使用できます。

TimesTenでのキャッシュの機能を次に示します:

  • 読取り専用キャッシュ。Oracle Databaseのデータを読取り専用キャッシュ・グループにキャッシュできます。読取りキャッシュ・グループは、Oracle Database表を更新すると、自動的にリフレッシュされます。読取り専用キャッシュ・グループによって、参照表やサブスクライバ・プロファイルなどの参照データへの高速アクセスが実現します。

  • 更新可能キャッシュ。Oracle Databaseのデータを更新可能キャッシュ・グループにキャッシュできます。キャッシュ・グループでのトランザクションは、関連Oracle Database表に同期または非同期でコミットできます。

  • Oracle Databaseのようなファイル・システム・ベースのRDBMSと連携した総合的なワークフローでの特定のタスク用のデータ・マネージャ。たとえば、通話料請求アプリケーションでは、顧客、請求書の送付先住所、クレジット情報などはOracleデータベースに保存し、最新の通話記録はTimesTenデータベースに収集および保存できます。また、すべての通話記録のアーカイブをOracle Databaseに保管することもできます。このように、即時アクセスが必要な情報はTimesTenデータベースに保存し、長期の分析、監査、アーカイブに必要な情報はOracleデータベースに保存します。

  • スケーラブル・キャッシュ。Oracle Databaseのデータは、スケーラビリティを実現するために、様々なマシンで実行されているTimesTenの複数のインストールにキャッシュできます。レコードのロードおよびエージングが自動的に実行される動的分散キャッシュを構成できます。

  • 高可用性および障害時リカバリのための統合メソッド。TimesTenレプリケーションはキャッシュ機能と緊密に統合されています。それにより、お客様が可用性の高いキャッシュ構成をデプロイできるようになります。キャッシュ機能は、Oracle RACやOracle Data Guardなど、Oracle Databaseの高可用性機能とも統合されています。それにより、シームレスかつ層をまたいだ高可用性機能および障害時リカバリ機能が提供されます。

「TimesTenでのキャッシュ」および「レプリケーション」を参照してください。

キャッシュ・アプリケーション使用例

キャッシュ・グループの使用の一例は、携帯電話利用状況計測アプリケーションです。この例では、どのようにキャッシュ・グループで携帯電話の利用状況計測データを格納できるかを示します。

無線通信会社には、携帯の各通話時間と使用されたサービスの記録を保管する、利用状況計測アプリケーションがあります。たとえば、携帯利用者が通常の通話を行うと、通話時間に対して基本料金が適用されます。携帯利用者がローミングなどの特別な機能を利用すると、特別料金が追加されます。

利用状況計測アプリケーションでは、最大100,000の同時通話を効率的に監視し、各通話の利用データを収集し、請求書、報告書、監査などを生成する他のアプリケーションが使用する、中央データベースにデータを保存する必要があります。これにより、計測データは、サービス・エリア全体に分散した複数のTimesTenデータベースから収集され、中央の通話料金請求アプリケーションが使用する、中央のOracle Databaseで保管されます。

この会社は、アクティブ・スタンバイ・ペアでTimesTenデータベースを使用して、利用状況計測アプリケーションでただちに必要となる携帯利用者データを保存し、その他のデータをOracleデータベースに保存します。この会社は、利用状況計測アプリケーションの複数のインスタンスをそのサービス・エリア全域の個々のノードに分散しています。各利用状況計測アプリケーションがODBCダイレクト・ドライバ接続を使用してそのローカルTimesTenデータベースに接続することで、最大のパフォーマンスを得られます。

図2-4に構成を示します。

図2-4 利用状況データの分散キャッシュ

図2-4の説明が続きます。
「図2-4 利用状況データの分散キャッシュ」の説明

市外局番で区別された地理的に異なる位置で開始および終了される通話を処理するために、各ノードに利用状況計測アプリケーションおよびTimesTenデータベースがデプロイされています。ローカル・ノードでは、通話ごとに通話の開始と終了について個別の記録を保存します。これは、あるノードで開始を検出した携帯の通話が、別のノードで終了を検出されることがあるためです。

収益に影響するトランザクション(挿入および更新)には、永続性が必要となります。データの可用性を確保するために、各TimesTenデータベースは、TimesTenレプリケーションを使用してアクティブ/スタンバイのレプリケートされるペアとして構成されています。

顧客が携帯の通話を開始、受信および終了するたびに、アプリケーションはアクティビティの記録をTimesTenデータベース内のCalls表に挿入します。各通話記録には、タイムスタンプ、一意識別子、開始ホストのIPアドレスおよび使用されたサービスに関する情報が含まれます。

この使用例では、CALLS表はライトスルー・キャッシュ用に構成されています。データはTimesTenの表で挿入、更新または削除されるため、その変更内容は、基にあるOracleデータベースに(リアルタイムで)自動的に伝播されます。コール・レコードはOracleデータベースに正常に伝播された後、自動的な時間ベースのエージング・プロセスによって(Oracleデータベースからではなく) TimesTenデータベースから削除されます。