ヘッダーをスキップ
Oracle® TimesTen Application-Tier Database Cache概要
11gリリース2 (11.2.2)
B66721-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 TimesTen Cacheのアーキテクチャとコンポーネント

この章の内容は次のとおりです。

アーキテクチャの概要

この項では、TimesTen Application-Tier Database Cache (TimesTen Cache)のアーキテクチャについて説明します。Oracle TimesTen In-Memory Databaseのアーキテクチャは、Oracle Databaseおよびキャッシュ・エージェントが含まれないことを除いて、TimesTen Cacheのアーキテクチャと同じです。図3-1に、TimesTen Cacheのアーキテクチャを示します。

図3-1 TimesTen Application-Tier Database Cacheのアーキテクチャ

図3-1の説明が続きます。
図3-1「TimesTen Application-Tier Database Cacheのアーキテクチャ」の説明

アーキテクチャを構成するコンポーネントには、共有ライブラリ、メモリー常駐データ構造、データベース・プロセス、管理プログラムなどがあります。メモリー常駐データ構造には、表、索引、システム表、ロック、カーソル、コンパイルされたコマンド、一時索引などがあります。アプリケーションからTimesTen CacheまたはTimesTenデータベースに接続するには、直接リンクまたはクライアント/サーバー接続を使用します。

レプリケーション・エージェントは、マスター・データベースから情報を受信し、サブスクライバ・データベースに送信します。キャッシュ・エージェントは、TimesTen Cache内のキャッシュ・グループとOracle Databaseのキャッシュ・グループ間のすべての非同期データ転送を実行します。

ここでは、これらのコンポーネントについて説明します。

共有ライブラリ

TimesTen機能を実装するルーチンは、開発者がアプリケーションとリンクし、アプリケーションのプロセスの一部として実行する一連の 共有ライブラリで実現されます。共有ライブラリを使用するこの方法は、アプリケーションが通常クライアント/サーバー・ネットワークを介して接続するデーモン・プロセスのコレクションとして実行される従来のRDBMSとは対照的です。アプリケーションでは、クライアント/サーバー接続を使用してTimesTen CacheまたはTimesTenデータベースにアクセスすることもできますが、ほとんどの場合、直接リンクされたアプリケーションを使用した場合に最高のパフォーマンスを実現できます。詳細は、「TimesTen接続オプション」を参照してください。

メモリー常駐データ構造

実行時には、TimesTen CacheまたはTimesTenデータベース全体がメイン・メモリーに常駐します。これは、オペレーティング・システムによって提供される共有メモリー・セグメントに保持され、すべてのユーザー・データ、索引、システム・カタログ、ログ・バッファおよび一時領域を含みます。複数のアプリケーションで1つのデータベースを共有したり、1つのアプリケーションで同じシステムの複数のデータベースにアクセスすることができます。

データベース・プロセス

TimesTenでは、次のタスクを実行するために各データベースに個別のバックグラウンド・プロセスが割り当てられます。

  • ディスク上のチェックポイント・ファイルからメモリーへのデータベースのロード

  • データベースのリカバリ(データベースをメモリーにロードした後にリカバリする必要がある場合)

  • アクティブなデータベースに対するバックグラウンドでの定期的なチェックポイントの実行

  • デッドロックの検出および処理

  • データ・エージングの実行

  • ファイルへのログ・レコードの書込み

管理プログラム

アクティブでないSQL、バルク・コピー、バックアップとリストア、データベースの移行およびシステムの監視などのサービスを実行するユーティリティ・プログラムは、ユーザー、スクリプトまたはアプリケーションによって明示的に起動されます。

チェックポイント・ファイルおよびトランザクション・ログ・ファイル

チェックポイント・ファイルには、ディスク上の永続記憶域にデータベースのイメージが含まれます。TimesTenでは、チェックポイントの処理中にシステムで障害が発生した場合に備えて、セキュリティの強化のために2つのチェックポイント・ファイルが使用されます。データベースへの変更は、ディスク上の永続記憶域に定期的に書き込まれるトランザクション・ログに記録されます。TimesTenでは、データベースをリカバリする必要がある場合、トランザクション・ログ・ファイルに存続している実行済トランザクションとディスク上の最新のデータベース・チェックポイント・ファイルがマージされます。チェックポイント・ファイルおよびトランザクション・ログ・ファイルには、通常のファイル・システムが使用されます。

詳細は、「データの可用性と整合性」を参照してください。

キャッシュ・データ

TimesTen Cacheを使用して、Oracle Databaseの一部をTimesTenのインメモリー・データベースにキャッシュする場合は、キャッシュ・データを保持するためにキャッシュ・グループが作成されます。

キャッシュ・グループは、主キーと外部キーの関係を使用して論理階層に配置された1つ以上の表の集合です。キャッシュ・グループの各表は、Oracle Database表に関連付けられています。1つのキャッシュ表に、関連付けられているOracle Database表のすべての行と列または行と列のサブセットを格納できます。キャッシュ・グループを作成または変更するには、SQL文またはOracle SQL Developerを使用します。キャッシュ・グループでは、次の機能がサポートされています。

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

  • キャッシュ・グループをOracle Databaseから自動または手動でリフレッシュできます。

  • キャッシュ・グループへの更新をOracle Database表に自動または手動で伝播できます。

  • Oracle Database表またはキャッシュ・グループのいずれかへの変更を自動的に追跡できます。

キャッシュ・グループ内の行がアプリケーションによって更新された場合、キャッシュ・グループのタイプに応じて、Oracle Database表内の対応する行を同じトランザクションの一部として同期して更新するか、または直後に非同期で更新することができます。非同期構成を使用すると、スループットが大幅に向上し、アプリケーションのレスポンス時間が非常に短くなります。

最初にOracle Database表で行われた変更は、キャッシュ・エージェントによってキャッシュにリフレッシュされます。

詳細は、「TimesTen Cache」を参照してください。

レプリケーション

TimesTenのレプリケーションでは、2つ以上のホスト間で更新を送信することによって、ほぼ間断なく可用性またはワークロード分散を実現できます。マスター・ホストは更新を送信するように構成され、サブスクライバ・ホストはそれらの更新を受信するように構成されます。双方向レプリケーション・スキームでは、ホストをマスターとサブスクライバの両方にすることができます。時間ベースの競合の検出および解決を実行して、同じデータが同時に複数の場所で更新される場合に備えて優先順位を決定します。

TimesTenで可用性を最大限に高めるには、アクティブ・スタンバイ・ペア構成をお薦めします。これは、TimesTen Cacheのレプリケートに使用できる唯一のレプリケーション構成です。アクティブ・スタンバイ・ペアには、アクティブ・データベース、スタンバイ・データベース、オプションの読取り専用サブスクライバ・データベース、データベースを構成する表およびキャッシュ・グループが含まれます。

レプリケーションを構成すると、同じホスト上に複数のデータベースが存在する場合でも、各データベースに対してレプリケーション・エージェントが起動されます。各レプリケーション・エージェントで、1つ以上のサブスクライバに更新を送信し、1つ以上のマスターから更新を受信することができます。これらの接続は、レプリケーション・エージェント・プロセス内で実行される個別のスレッドとしてそれぞれ実装されます。レプリケーション・エージェントは、TCP/IPストリーム・ソケットを介して通信します。

最高のパフォーマンスを実現するために、レプリケーション・エージェントでは、既存のトランザクション・ログを監視することによってデータベースへの更新が検出されます。また、可能な場合は、サブスクライバへの更新がバッチで送信されます。コミット済のトランザクションのみがレプリケートされます。サブスクライバ・ホストの場合、レプリケーション・エージェントでは、SQLレイヤーのオーバーヘッドが発生しないように効率的な低レベルのインタフェースを介してデータベースが更新されます。

レプリケーションの構成の詳細は、「レプリケーション」を参照してください。

TimesTen接続オプション

アプリケーションは、次のいずれかの方法でTimesTenデータベースに接続できます。

ダイレクト・ドライバ接続

従来のデータベース・システムでは、クライアント・アプリケーションではTCP/IPまたは別のIPCメカニズムを使用して、データベース・サーバー・プロセスと通信します。クライアントとサーバー間のすべての送受信は、TCP/IP接続で行われます。このIPCオーバーヘッドにより、すべてのSQL操作でかなりのコストがかかりますが、TimesTenでは、アプリケーションを直接TimesTen ODBCダイレクト・ドライバに接続することで、これを回避できます。

ODBCダイレクト・ドライバは、ODBCおよびTimesTenルーチンのライブラリであり、データベース管理に使用されるデータベース・エンジンを実装します。Javaアプリケーションは、JDBCライブラリを介してODBCダイレクト・ドライバにアクセスします。OCIアプリケーションは、OCIライブラリを介してODBCダイレクト・ドライバにアクセスします。

アプリケーションでは、TimesTen CacheまたはTimesTenデータベースと同じマシン上で実行する場合に、ダイレクト・ドライバ接続を作成できます。ダイレクト・ドライバ接続では、ODBCドライバは、共有メモリー・セグメントにTimesTen CacheまたはTimesTenデータベースを直接ロードします。次に、アプリケーションはダイレクト・ドライバを使用して、データベースのメモリー・イメージにアクセスします。どのような種類のプロセス間通信(IPC)も必要ないため、ダイレクト・ドライバ接続は非常に高速なパフォーマンスを実現し、TimesTen CacheまたはTimesTenデータベースにアクセスするアプリケーションにとって適した接続方法です。

クライアント/サーバー接続

TimesTen ClientドライバおよびServerデーモン・プロセスは、ネットワーク上のリモート・クライアント・マシンからデータベースへの接続を調整します。各クライアントがデータベースに接続するたびに、Serverデーモンはサーバー子プロセスを生成します。

クライアント・マシン上のアプリケーションは、ODBCコール、JDBCコールまたはOCIコールを発行します。これらのコールは、TimesTen Serverマシン上のサーバー子プロセスと通信するローカルODBCクライアント・ドライバにアクセスします。次に、サーバー子プロセスがODBCダイレクト・ドライバにODBC固有のリクエストを発行して、TimesTen CacheまたはTimesTenデータベースにアクセスします。

クライアントとサーバーがネットワーク上の個別のホストに存在する場合は、ソケットとTCP/IPを使用して通信します。クライアントとサーバーの両方が同一マシン上に存在する場合は、共有メモリー・セグメントをIPCとして使用して、より効率的に通信できます。

アプリケーションとデータベースが同一システム上に存在していても、通常、従来のデータベース・システムはこのクライアント/サーバー・モデルで構築されています。クライアント/サーバー通信では、すべてのデータベース処理で追加のコストがかかります。

ドライバ・マネージャ接続

アプリケーションは、ODBCドライバ・マネージャを介してTimesTen CacheまたはTimesTenデータベースに接続できます(このドライバ・マネージャは、アプリケーションとTimesTenデータベース間に抽象レイヤーを追加する、データベースに依存しないインタフェースです)。このため、ドライバ・マネージャを使用すると、アプリケーションをデータベースから独立して動作するように作成したり、TimesTenで直接サポートされないインタフェースを使用するように作成することができます。また、ドライバ・マネージャを使用すると、単一のプロセスではデータベースへのダイレクト接続とクライアント接続の両方が可能となります。

Windows Systemsの場合、アプリケーションでMS ODBCドライバ・マネージャに接続して、他のベンダーのデータソースとともにTimesTen CacheまたはTimesTenデータベースを使用できます。UNIX Systems用のドライバ・マネージャは、オープン・ソース・ソフトウェアとして使用でき、サード・パーティ・ベンダーから入手できます。

詳細情報

TimesTenデータベースの詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のODBCでのTimesTenデータベースの使用に関する説明と、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースのデータの使用に関する説明を参照してください。

データベースへの接続の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースの管理に関する説明と、TimesTen ClientおよびServerの使用に関する説明を参照してください。