ヘッダーをスキップ

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

前へ | 次へ |

## TimesTenアプリケーション使用例

この項では、総合的なデータ管理ソリューションの一部としてTimesTenを統合する方法を示す、いくつかのアプリケーションの使用例について説明します。

アプリケーションの使用例は次のとおりです。

- 使用例1: 携帯利用者の利用状況計測アプリケーション: TimesTenを使用して、携帯利用者の利用状況の計測データを保存します。計測データは、サービス・エリア全体に分散した複数のTimesTenノードから収集され、中央の通話料金請求アプリケーションが使用する、中央のディスク・ベースのデータベースで保管されます。
- 使用例2: リアルタイム取引価格サービス・アプリケーション: TimesTenを使用して、プログラム売買アプリケーションがアクセスするデータ・フィードの株式取引価格を保存します。取引価格データはデータ・フィードから収集し、リアルタイム・メッセージ・バスで発行されます。データはメッセージ・バスから読み取られると、TimesTenに保存され、プログラム売買アプリケーションによってアクセスされます。
- 使用例3: オンライン旅行代理店のアプリケーション: TimesTenをアプリケーション層のキャッシュとして使用して、中央のOracleデータベースで保持されているユーザー・プロファイルと予約データを保持します。

次の説明では、データ・ストアという用語はTimesTenデータベースを含むメモリー・セグメントを指します。データ・ストアについては、「TimesTenデータ・ストア」で説明しています。

注意: 次のアプリケーション使用例で使用する企業名は架空の名前です。各アプリケーションは、実際のカスタマ・アプリケーションではありませんが、各市場区分の類似アプリケーションを合成したものです。

## 使用例1: 携帯利用者の利用状況計測アプリケーション

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

利用状況計測アプリケーションでは、最大100,000の同時通話を効率的に監視し、各通話の利用データを収集し、請求書、報告書、監査などを生成する他のアプリケーションが使用する、中央データベースにデータを保存する必要があります。

現在の構成では、アプリケーション・データのすべてが、中央のディスク・ベースRDBMSデータベースのCalls表に保存されています。ただし、容量は増大し、会社のインフラストラクチャは近代化する必要があります。この会社では、満足できるパフォーマンスを得るために中央のRDBMSデータベースを拡張すると、接続とCalls表の記録が増えすぎると判断しました。さらに、RDBMSデータベースでは、利用状況計測アプリケーションが最大のパフォーマンスを得るために必要なリアルタイム更新を処理できません。

この会社は、TimesTenを使用して利用状況計測アプリケーションでただちに必要となる携帯利用者のデータを保存し、他のデータを中央RDBMSデータベースに格納することによって、パフォーマンスとスケールを改善できると判断します。この会社の解決方法は、利用状況計測アプリケーションの複数のインスタンスとTimesTenをサービス・エリア全域の個々のノードに分散させて、データの収集処理を集中させないというものです。各利用状況計測アプリケーションが、ODBCダイレクト・ドライバ接続を使用してそのローカルTimesTenデータ・ストアに接続することで、最大のパフォーマンスが得られます。

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

図2.1 使用データの分散収集

この使用例の場合、TimesTenでは、比較的わずかなパフォーマンスの低下で、各表で数百万行を管理できるので、中央のRDBMSデータベースより優れたパフォーマンスが得られます。このため、各TimesTenノードは縦方向に拡張し、環境全体はTimesTenノードを追加するたびに横方向に拡張します。

収益に影響する、TimesTenに対するトランザクション（挿入/更新）は永続性を保つ必要があるため、ディスク・ベースのロギングが使用されます。データの可用性を保証するには、各TimesTenノードを、ホットスタンバイ・ノードにレプリケートします。

この会社は、各TimesTenノードで実行する、送信エージェントという特別なバックグラウンド・コンポーネントを実装します。図2.2に示すように、送信エージェントは、ODBCダイレクト・ドライバによってTimesTenに、またIPCによってリモートRDBMSデータベースにローカルに接続します。送信エージェントの目的は、レプリケーションのフェイルオーバーとリカバリの処理、チェックポイントの管理および統計情報の更新に加えて、TimesTenの記録を定期的に中央のRDBMSデータベースにアーカイブすることです。メイン・ノードで障害が発生すると、送信エージェントが、TimesTenスタンバイ・ノード上の冗長な利用状況計測アプリケーションに携帯利用者を移動します。

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

送信エージェントは、Calls表の最初の5000行を定期的に選択し、高速バッチ処理を使用して、それらを中央のRDBMSにアーカイブします（SQL SELECTの結果セットを最初のN行の値に制限して、通話のリアルタイム処理に及ぼす影響を小さくし、アーカイブするデータを管理可能なサイズに維持します）。送信エージェントは、通話記録が中央RDBMSデータベースに正常にアーカイブされたことを確認すると、それらをTimesTenから削除します。送信エージェントが通話をアーカイブする間隔は、通話の負荷と現在のデータ・ストアのサイズによって動的に変化します。

図2.2 通話記録をアーカイブする送信エージェント

## 使用例2: リアルタイム取引価格サービス・アプリケーション

金融サービス会社Beeman&Shusterは、リアルタイムの取引価格とニュースのサービスを自社のオンライン取引設備に追加します。リアルタイム取引価格サービスでただちに必要となるのは、大手のマーケット・データ・ベンダーの1社から入電するニュースを読み取ることと、会社の自動株式取引処理を管理する取引アプリケーションに対して、選択したデータのサブセットを使用可能にすることです。この会社の計画では、将来の拡張に適応できる十分な拡張性と柔軟性を備えたインフラストラクチャを構築して、リアルタイムの取引価格、ニュース、およびその他の取引サービスを顧客に提供していきます。

リアルタイム取引価格サービスには、NewsReaderの処理が含まれ、ニュース・ワイヤーから絶えずデータが供給される、TIBCO SmartSocketsやRendezvousなどのリアルタイム・メッセージ・バスから入電するデータを読み取ります。各NewsReaderは、独立してバスからデータを読み取って別のTimesTenデータ・ストアにデータを挿入する、バックアップのNewsReaderと対になっています。この方法では、メッセージ・バスを使用して、冗長性のために入電データを2つのTimesTenデータ・ストアに分岐させています。この使用例では、メッセージ・バスのデータを分岐させる方が、TimesTenレプリケーションを使用するより効率的です。

各ペアでは、一方のNewsReaderが取引アプリケーションで株式データを使用可能にし、もう一方がホットスタンバイ・バックアップとして動作して、障害発生時にアプリケーションで使用されます。現在のロードでは、4組のNewsReaderのペアが必要ですが、将来的にはさらにNewsReaderのペアを追加して、Web、ポケットベル、携帯電話などを介してリアルタイム取引価格を他のタイプの顧客に配信できます。

図2.3 メッセージ・バスからのデータの収集

図2.4に示すように、NewsReaderは、TimesTenデータ・ストアのQuotes表の株価データを更新します。それよりも動的でない利益データは、Earnings表で更新されます。Quotes表およびEarnings表のStock列は、外部キー関係を介してリンクされています。

取引アプリケーションの目的は、50未満の株価収益率を持つ株式のみ追跡し、いくつかの内部ロジックを使用して、現在の株価と取引量を分析し、取引機能の別の部分を使用して取引を行うかどうか判断することです。取引アプリケーションでは、最大のパフォーマンスを得るために、関心のある株式の更新について、TimesTenトランザクション・ログAPI（XLA）を使用してTimesTenトランザクション・ログを監視する、イベント機能を実装します。

こうした更新に対して、できるかぎり高速なアクセスを実現するために、マテリアライズド・ビューPE_Alertsを作成します。このマテリアライズド・ビューには、Quotes表のPrice列とEarnings表のEarns列から株価収益率を計算するWHERE句があります。XLAイベント機能を使用して、マテリアライズド・ビューの価格更新についてトランザクション・ログを監視することによって、取引アプリケーションは取引基準に一致する株式のアラートのみを受信します。

図2.4 マテリアライズド・ビューとXLAの使用

## 使用例3: オンライン旅行代理店のアプリケーション

オンライン旅行代理店CustomTravel.comは、Webベースの対話型旅行サービスを提供します。会社は各顧客の広範囲のプロファイルを保持して、航空会社、旅行先、レンタカー、ホテルなどに関する旅行履歴と個人的な嗜好を含む特徴を記録します。これらのプロファイルは、予約アプリケーションによって使用され、各顧客に個人向け対話型旅行計画セッションを提供します。

図2.5の下部に示すように、会社のシステムには中央サーバーが含まれ、バックエンド・アプリケーション、および顧客プロファイルと予約データを保存するOracleデータベースをホストします。予約データには、航空便のスケジュール、利用可能な座席、ホテル、レンタカー利用の有無、さらに旅行業界ベンダーからの類似情報が含まれます。この予約データは、会社とその旅行ベンダー間の通信を管理するベンダー・サービス・アプリケーションによって、Oracleデータベースで定期的に更新されます。

予期される最大1000の顧客の同時実行セッションを効率的に管理するため、この会社では、図2.5の上部に示すように、サービス地区全域にいくつかのアプリケーション・サーバーを分散させています。各アプリケーション・サーバーは、個別の予約アプリケーションを含み、顧客セッション・データをローカルTimesTenデータ・ストアにキャッシュします。可用性を保証するために、各TimesTenデータ・ストアがホットスタンバイ・データ・ストアにレプリケートされます。

図2.5 OracleデータをキャッシュするCache Connectの使用

各TimesTenデータ・ストアのセッション・データには、予約データのコピーと、中央のOracleデータベースに保存されている特定の顧客プロファイルが含まれます。このOracleデータはTimesTenキャッシュ・グループにキャッシュされ、TimesTenのCache Connect to Oracle機能を使用してTimesTenとOracle間で伝播されます。

TimesTenのCache Connect to Oracleでは、定期的に中央Oracleデータベースの予約データをTimesTenデータ・ストアのキャッシュ・グループにリフレッシュします。顧客プロファイルは別のキャッシュ・グループにキャッシュされています。顧客がログオンすると、予約アプリケーションは、顧客プロファイル・キャッシュ・グループのキャッシュ・インスタンスとして、中央Oracleデータベースからその顧客のプロファイルをロードします。目的地や日付などの初期情報について顧客に問合せを行った後、予約アプリケーションは、TimesTenキャッシュの顧客プロファイルを使用して、最も関心のあるデータを顧客に提供するように予約データをフィルタ処理するSELECT問合せを作成します。

顧客がセッションを完了すると、航空便、ホテルなどの最終的な選択がTimesTenからOracleにフラッシュされます。空き領域が必要になると、Cache Connect to Oracleは非アクティブの顧客プロファイルのキャッシュ・インスタンスをTimesTenからOracleにエージ・アウトします。

最終的な予約とスケジュールのデータはすべてOracleデータベースに保存されます。Oracleデータベースは、各TimesTenデータ・ストアと比較するとかなり大規模です。Oracleデータベースに最もアクセスするのは、TimesTenのリアルタイム・パフォーマンスは必要ないが、大量のデータにアクセスする必要があるアプリケーションです。このようなアプリケーションには、旅行ベンダーが提供する予約データを更新し、TimesTenが提供する最終的な予約をベンダーに確認する、会社のベンダー・サービス・アプリケーションと、選択したサービスの代金を顧客の口座に請求し、請求書を発行する、請求書発行アプリケーションが含まれます。別のOracleアプリケーションは、履歴データを分析し、旅行の時期、旅行の期間、旅行に同行した家族の人数と関連させて予約パターンを判断する、会社のデータ・マイニング・アプリケーションです。このアプリケーションの結果は、旅行の閑散期に料金の割引を提示することによって、収益全体を改善するために使用されます。