ヘッダーをスキップ
Oracle® In-Memory Database Cache概要
リリース11.2.1
B56058-02
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

3 Oracle In-Memory Database Cacheのアーキテクチャおよびコンポーネント

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

アーキテクチャの概要

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

図3-1 Oracle In-Memory Database Cacheのアーキテクチャ

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

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

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

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

共有ライブラリ

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

メモリー常駐データ構造

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

データベース・プロセス

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

管理プログラム

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

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

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

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

キャッシュ・データ

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

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

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

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

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

レプリケーション

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

レプリケーションを構成すると、各データベースに対してレプリケーション・エージェントが起動されます。同じサーバー上の複数のデータベースをレプリケーション用に構成した場合は、個別のレプリケーション・エージェントが各データベースに含まれます。各レプリケーション・エージェントで、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ダイレクト・ドライバにアクセスします。

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

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

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

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

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

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

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

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

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

詳細情報

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

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