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

前
 
次
 

3 TimesTenのアーキテクチャ

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

アーキテクチャの概要

次の項では、TimesTen ClassicおよびTimesTen Scaleoutのアーキテクチャについて説明します。

TimesTen ClassicおよびTimesTen Cacheのアーキテクチャの概要

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

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

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

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

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

これらのコンポーネントの詳細は、「TimesTenのアーキテクチャ」を参照してください。

TimesTen Scaleoutのアーキテクチャの概要

TimesTen Scaleoutを使用すると、1つ以上のホストにインストールされている相互接続されたインスタンスのセットであるグリッドを作成できます。TimesTen Scaleoutを使用すると、このグリッド全体にわたってデータベースのデータを分散できます。

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

    各データベースのアーキテクチャを構成するコンポーネントには、共有ライブラリ、メモリー常駐データ構造、データベース・プロセス、管理プログラムなどがあります。アプリケーションからTimesTenデータベースに接続するには、直接リンクまたはクライアント/サーバー接続を使用します。ここでは、これらのコンポーネントについて説明します。

  • (データが含まれ、管理されている)データ・インスタンスは、SQL文およびPL/SQLブロックを実行します。グリッドは各データベース内のデータをデータ・インスタンス間で分散します。

  • グリッドの管理に使用する1つまたは2つの管理インスタンスを作成します。すべてのデータ・インスタンスは、アクティブ管理インスタンスを通じて管理します。

  • 任意の時点で操作可能なデータ・インスタンスを追跡するメンバーシップ・サービスを設定します。メンバーシップ・サービスは3つ以上のメンバーシップ・サーバーで構成されます。

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

図3-2 TimesTen Scaleoutのグリッド構造

図3-2の説明が続きます。
「図3-2 TimesTen Scaleoutのグリッド構造」の説明

TimesTen Scaleoutアーキテクチャの完全な詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のTimesTen Scaleoutのアーキテクチャに関する項を参照してください。

共有ライブラリ

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

メモリー常駐データ構造

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

データベース・プロセス

TimesTenは、データベースごとに個別のバックグラウンド・プロセスを開始して処理を実行します。

TimesTenデーモン

TimesTenデーモンは次の機能を実行します。

  • 共有メモリーのアクセスの管理

  • プロセス・リカバリの調整

  • 存在するデータベース、使用中のデータベースおよびいずれのアプリケーション・プロセスがいずれのデータベースに接続されているかに関する管理用統計の保持

  • RAMポリシーの管理

  • レプリケーション・プロセス(リクエストされた場合)、TimesTenサーバーおよびキャッシュ・エージェント(有効な場合)を起動します。

TimesTenデーモンは、TimesTenのインストール時に起動されます。このメイン・デーモンはバックグラウンドで実行されます。インスタンス管理者は、各システムの再起動後にデーモンを手動で起動および停止する必要があります。そうでない場合、rootユーザーがデーモン起動スクリプトを実行してデーモンを起動できます。

アプリケーション開発者は、デーモンと直接対話しません。デーモンでアプリケーション・コードは実行されないため、通常、アプリケーション開発者がデーモンについて考慮する必要はありません。TimesTenデータベースにアクセスするアプリケーション・プログラムは、TimesTen内部ルーチンを透過的に使用してデーモンと通信します。

詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデーモンの処理に関する項を参照してください。

サブデーモン

TimesTenメイン・デーモンは、必要に応じてサブデーモンを動的に生成します。TimesTenでは、サブデーモンを使用して次のことを行います。

  • データベースの管理

  • ディスクへのトランザクション・ログ・バッファのフラッシュ

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

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

  • 様々な表のデータ・エージング・ポリシーの実装

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

  • 直接モード・アプリケーションが異常終了した場合のトランザクションのロールバック

  • データベースに対して必要なバックグラウンド処理の実行

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

詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のサブデーモンの管理に関する項を参照してください。

TimesTen接続オプション

TimesTenでは、ユーザーが自身のアプリケーションでのパフォーマンスと機能性とのバランスを最適にできるように、直接接続オプション、ドライバ・マネージャ接続オプションおよびクライアント/サーバー接続オプションがサポートされています。アプリケーションから見ると、直接接続、ドライバ・マネージャ接続またはクライアント/サーバー接続かにかかわらず、TimesTen APIは同じです。

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

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

TimesTen Scaleoutの使用によるグリッドへの接続の詳細は、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのデータベース接続およびデータベースへの接続を参照してください。

直接接続

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

直接接続を使用するアプリケーションは、データベースを提供するTimesTenインスタンスの環境で実行する必要があります。TimesTen Scaleoutを使用する場合、アプリケーションは任意のデータ・インスタンスで実行できます。

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

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

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

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

  • TimesTen Serverデーモンは、リモート・クライアント・アプリケーションからの受信接続を管理します。その動作はローカル・アプリケーション用のTimesTenデーモンとほぼ同じですが、これは、クライアントのかわりにデータベースにアクセスするためにサーバー子プロセスを割り当てます。

従来のクライアント/サーバー・アクセスは、レポートなどの機能に対してサポートされています。または、多数のアプリケーション層プラットフォームで共通のインメモリー・データベースへのアクセスを共有する必要がある場合にサポートされます。

クライアントとサーバー間のすべての送受信は、TCP/IP接続で行われます。クライアントとサーバーが内部ネットワーク上の個別のホストに存在する場合、これらはソケットとTCP/IPを使用して通信します。クライアントとサーバーの両方が同一マシン上に存在する場合は、直接接続を使用して、より効率的に通信できます。

  • クライアント・アプリケーションは、データベースを提供するTimesTenインスタンスと通信します。

  • TimesTen Scaleoutを使用すると、クライアント/サーバー接続を使用しているアプリケーションは、データ・インスタンス上、または外部ネットワークへのアクセスを持つ任意のホスト上で実行できます。クライアント・アプリケーションは自動的に実行中のデータ・インスタンスに接続されます。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のデータベース接続に関する項を参照してください。

ODBCおよびJDBCインタフェースを使用した接続の詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』のODBCでのTimesTenデータベースの使用に関する項および『Oracle TimesTen In-Memory Database Java開発者ガイド』のJDBCでのTimesTenデータベースの使用に関する項を参照してください。

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

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

クライアント・アプリケーションは、TimesTen Client ODBCドライバに直接リンクするか、Windows ODBCドライバ・マネージャにリンクして、TimesTenデータベースにアクセスできます。UNIXまたはLinuxシステム用のドライバ・マネージャは、オープン・ソース・ソフトウェアとして使用でき、サード・パーティ・ベンダーから入手できます。ドライバ・マネージャ接続では、異なるバージョンのODBC用に作成されたODBCアプリケーション、またはODBCインタフェースを使用する複数のRDBMS製品のサポートが可能です。ドライバ・マネージャを使用する場合には、パフォーマンス上の考慮事項があります。

詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドのODBCドライバおよびJDBCドライバを使用したTimesTenへの接続を参照してください。

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

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

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

キャッシュ・データ

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

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

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

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

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

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

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

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

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

レプリケーション

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

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

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

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

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