主コンテンツへ
Oracle® TimesTen In-Memory Databaseイントロダクション
リリース18.1
E98637-03
  目次へ移動
目次
索引へ移動
Index

前
 
次
 

2 TimesTenの使用

TimesTenは、次の目的で使用できます。

ユーザーは、統合された高パフォーマンスのパラレル・データ・レプリケーション機能を利用して、高可用性および障害時リカバリ機能をアプリケーションに追加できます。

TimesTen Scaleoutの使用

TimesTen Scaleoutは、複数インスタンス環境および分散データベースに使用されます。TimesTen Scaleoutは、インメモリー・データに対する高速アクセス、フォルト・トレランスおよび高可用性を実現します。

TimesTen Scaleoutを使用すると、次のことが可能です。

  • グリッド(1つ以上のホストにインストールされた一連の相互接続されたインスタンス)を作成します。

  • データの1つ以上のコピーを保持します。データのコピーを複数保持することで、単一の障害が発生した場合にデータ損失から保護されます。

  • シェアード・ナッシング・アーキテクチャを使用して、可用性の高い方法でグリッドのインスタンスに各データベースのデータを分散します。

  • データベース全体のデータの分散方法に関係なく、すべてのデータへの完全なアクセス権を使用して、アプリケーションをデータベースに接続します。

  • グリッドにインスタンスを追加または削除して次のことを行います。

    • 必要に応じてデータベースの記憶域容量を拡張または縮小します。

    • アプリケーションのパフォーマンス要件にあわせてデータベースのコンピューティング・リソースを拡張または縮小します。

すべての製品機能および詳細は、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドを参照してください。

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

TimesTen Scaleoutの一般的なユースケース・シナリオは、次の目的で使用されるInternet of Things (IoT)アプリケーションです。

  • 多くの接続済デバイスからデータ(センサー読取り、地理的位置データ、テレメトリなど)を半ばリアルタイムに取得します。

  • データを詳細なレポートおよび分析のために他のシステムにオフロードする前に、(アラートを目的として)リアルタイムで集計および分析します。

インターネットは広く普及しており、ますます多くのデバイス(スマート・ホーム、スマートフォン、タブレット、車、家庭電化製品、電力量計、エクササイズ機器、GPSトラッカ、RFIDタグなど)が接続されるようになってきています。サービスの多くは、このようなデバイスからリアルタイムに生成される大量のデータを効率的に取得して処理する必要があります。

図2-1 Internet of ThingsアプリケーションでのTimesTen Scaleoutの使用

図2-1の説明が続きます。
「図2-1 Internet of ThingsアプリケーションでのTimesTen Scaleoutの使用」の説明

TimesTen Scaleoutアプリケーションの例は、スマート・ホーム・テクノロジのベンダーがTimesTen Scaleoutを使用してセンサー・データ(温度、湿度、CO2レベル、デバイス・イベント)を取得する方法を示しています。取得されたデータは、異常な状態に対してリアルタイムのアラートを生成するために集計および分析され、収集されたデータは、アーカイブの格納や深さ分析などを目的として他のシステムにオフロードされます。オフロードされたデータはデータベースから消去されます。

  • 取得: スマート・ホーム・デバイスから収集されたセンサー・データは、データベースの周辺で実行されているデータ収集アプリケーションにインターネットを介して送信されます。これらのアプリケーションは、受信したデータに基づいてデータベースにデータを挿入して更新します。

  • 集計および分析: リアルタイム集計およびアラート・アプリケーションは、データの到着時に初期処理を実行します。アプリケーションは、重要なイベントを検出すると、スマート・ホーム・デバイス、ユーザーのスマートフォン・アプリケーションなどにアラートを送信します。

オフロード・アプリケーションおよび消去アプリケーションは、不要になった履歴集計データを、長期間の格納および分析を目的としてオンラインで記憶域に移動します。記憶域に移動したら、集計されたデータおよび基礎となるRawデータがデータベースから消去されます。

TimesTen Scaleoutは、このタイプのアプリケーションに最適です。

  • 高スループットと低レイテンシにより、TimesTen Scaleoutは負荷の高い読取り/書込みのワークロードに対処できます。

  • フォルト・トレラント・アーキテクチャを使用すると、TimesTen Scaleoutは、ハードウェア障害やソフトウェア障害が発生しても稼働時間の連続化を実現できます。

  • 柔軟なスケーラビリティ機能を使用すると、オンライン状態を維持しながらデータベースの記憶域と処理能力を動的に増加できます。

  • 業界標準言語およびAPIを幅広くサポートしているため、開発者が様々なアプリケーション・コンポーネントを容易に構築できます。

TimesTen Classicの使用

TimesTen Classic:

  • 単一インスタンスの環境およびデータベースに使用できます。

  • 1つ以上のインメモリー・データベース、SQLリレーショナル・データベース、ACID準拠データベースの作成に使用できます。

  • メモリーが最適化されたリレーショナル・データベースを提供することにより、アプリケーションに対する最適な応答時間と高いスループットを実現します。

  • トランザクション・レプリケーションを介してインメモリー・データベースの高可用性をサポートします。

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

この項では、見積サービス・アプリケーションを使用したTimesTen Classicアプリケーションの使用例を示します。この例では、TimesTen Classicをデータ管理ソリューションの一部として統合する方法を示します。

金融サービス会社が、取引価格とニュースのサービスを自社のオンライン取引設備に追加します。取引価格サービスは、大手マーケット・データ・ベンダーから入電するニュースを読み取り、会社の自動株式取引処理を管理する取引アプリケーションに、そのデータのサブセットを使用可能にします。この会社は、将来の拡張に適応できるインフラストラクチャを構築して、取引価格、ニュースおよびその他の取引サービスを顧客に提供していく予定です。

見積サービス・アプリケーションは、データベースを使用してデータ・フィードからの株価を保存することにより、プログラム取引アプリケーションからアクセスできるようにします。取引価格データは、データ・フィードから収集され、メッセージ・バスで発行されます。データはメッセージ・バスから読み取られると、データベースに保存され、プログラム売買アプリケーションからアクセスされます。

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

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

図2-2に、メッセージ・バスからデータを取得してNewsReadersに入力するための構成を示します。

図2-2 メッセージ・バスからのフィード・データの収集

図2-2の説明が続きます。
「図2-2 メッセージ・バスからのフィード・データの収集」の説明

図2-3に示すように、NewsReaderは、TimesTenデータベースのQUOTES表の株価データを更新します。それよりも動的でない利益データは、EARNINGS表で更新されます。QUOTES表およびEARNINGS表のSTOCK列は、外部キー関係を介してリンクされています。

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

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

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

図2-3の説明が続きます。
「図2-3 マテリアライズド・ビューとXLAの使用」の説明

TimesTen Cacheの使用

TimesTen Cacheは、TimesTen Classicでサポートされており、次のように使用できます。

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

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

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

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

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

TimesTen Cacheの詳細は、第7章「TimesTen Cache」を参照してください。レプリケーションの詳細は、「レプリケーション」を参照してください。

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

この項では、携帯利用者利用状況計測アプリケーションを使用したTimesTen Cacheアプリケーションの使用例を示します。これは、TimesTen Cacheが携帯電話の利用状況計測データを格納する方法を示します。

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

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

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

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

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

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

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

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

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

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