TimesTen Client/TimesTen Serverの概要
TimesTenサーバーは、サーバー・システム上で実行されるプロセスであり、TimesTenクライアントからネットワーク・リクエストを受け付け、サーバー・システム上にあるデータベースでの処理に変換します。これにより、クライアントは、異なるプラットフォームおよびオペレーティング・システムを実行している可能性のある様々なシステム上に存在するデータベースに接続できます。
TimesTenクライアントは、TimesTenサーバーと別のシステムにも同じシステムにもインストールできます。TimesTenクライアントをTimesTenサーバーと同じシステムにインストールする場合は、それを使用してローカル・システム上のTimesTenデータベースにアクセスできます。
ノート:
クライアント/サーバー接続は、TimesTenがサポートするプラットフォーム間のいずれの組合せに対しても作成できます。
TimesTenでは、クライアント/サーバーを使用したIPレベルのフェイルオーバーまたはロード・バランシングはサポートされていません。
図3-1に、それぞれのドライバを使用したTimesTenクライアントとTimesTenサーバーの通信方法を示します。
-
TimesTenクライアント: リモート・システム上のTimesTenデータベースにアクセスするには、TimesTenクライアントODBCドライバにアプリケーションをリンクします。その後、アプリケーションはTimesTenサーバー・プロセスと通信します。TimesTenクライアントODBCドライバを使用すると、アプリケーションは、TimesTenがインストールされているリモート・システムまたはローカル・システム上のTimesTenデータベースに透過的に接続できます。
クライアント・アプリケーションは、TimesTenクライアントODBCドライバに直接リンクするか、Windows ODBCドライバ・マネージャにリンクして、TimesTenデータベースにアクセスできます。TimesTenでは、Linux、UNIXおよびWindows用のドライバ・マネージャを用意しており、クイック・スタート・サンプル・アプリケーションが付属しています。ドライバ・マネージャを使用する場合には、パフォーマンス上の考慮事項があります。
また、JDBC、OCI、Pro*C/C++など指定したインタフェースを通じて、クライアント・アプリケーションをリンクし、TimesTenデータベースにアクセスすることもできます。
ノート:
アプリケーションで各種のドライバとインタフェースを使用してTimesTenデータベースにアクセスする方法の詳細は、「ODBCドライバおよびJDBCドライバを使用したTimesTenへの接続」を参照してください
-
TimesTenサーバー: サーバー・システム上では、TimesTenサーバーはTimesTen Data Managerドライバを使用します。サーバーで実行されるのは、クライアント・アプリケーションからのリクエストをリスニングし、TimesTen Data Managerドライバを介してリクエストを処理した後、結果およびエラー情報(エラーが発生した場合)をクライアント・アプリケーションに戻す処理です。
ノート:
TimesTenアプリケーションのコンパイルおよびリンクの詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』のJava開発のためのクラスパスの設定、または『Oracle TimesTen In-Memory Database C開発者ガイド』のアプリケーションのコンパイルおよびリンクを参照してください。
次の項では、クライアント/サーバー通信の制限および通信プロトコルについて説明します。
クライアント/サーバー通信に関する制限事項
LinuxおよびUNIXの場合、ttAdmin
、ttRepAdmin
、ttBackup
などの一部のTimesTenユーティリティは、直接接続経由でのみ動作します。
LinuxおよびUNIXプラットフォームのクライアント/サーバー接続経由で実行可能なユーティリティの名前には、ttIsqlCS
、ttBulkCpCS
、ttMigrateCS
、ttSchemaCS
など、CS
という接尾辞が付いています。
クライアント/サーバー通信に対する制限は、次のとおりです。
-
これらのユーティリティは、TimesTenクライアント・ドライバにリンクされており、クライアント/サーバー接続を介してデータべースにアクセスするときにクライアントDSNに接続するために使用できます。『Oracle TimesTen In-Memory Databaseリファレンス』内のユーティリティでは、各ユーティリティにクライアント/サーバー・バージョンがある場合はその名前が示されています。
-
XLAはクライアント/サーバー接続では使用できず、TimesTen Classic内でのみサポートされます。
-
ttCacheUidPwdSet
組込みプロシージャは、クライアント/サーバー接続経由では使用できません。 -
あるホスト上で定義されている外部ユーザーは、リモート・ホスト上のTimesTenデータソースに接続できません。内部ユーザーの接続には制限はありません。内部ユーザーと外部ユーザーの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenユーザーの概要を参照してください。
-
クライアント/サーバー接続を介して内部ユーザーを作成または変更できません。したがって、
CREATE USER
またはALTER USER
文は、TimesTenデータベースに直接接続されているときのみ発行できます。作成後、ユーザーがクライアントからサーバーに接続するには、そのユーザーにCREATE SESSION
権限を付与しないと、接続は失敗します。TimesTenデータベースでのユーザーの作成方法、および管理者によるCREATE SESSION
権限の付与方法の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のデータベース・ユーザーの作成または識別およびデータベースに接続するための権限を参照してください。 -
LinuxおよびUNIX上のTimesTenでは、親プロセスがオープンした接続をその子プロセスは使用できません。親プロセスがオープンした接続を使用するために子プロセスが
fork()
を使用して処理を試行すると、エラーが戻されます。
クライアント/サーバー通信用プロトコル
次の各項では、TimesTenクライアントがTimesTenサーバーとの間で使用できる通信プロトコルについて説明します。
TCP/IP通信
デフォルトでは、TimesTenクライアントは、TCP/IPソケットを使用してTimesTenサーバーと通信します。
これは、TimesTenクライアントとTimesTenサーバーが別々のシステムにインストールされている場合に使用可能な唯一の通信形式です。
通信に使用される共有メモリー・セグメント
クライアント/サーバー接続は、通信に共有メモリーを使用します。
各クライアント/サーバー接続の期間に、小さい共有メモリー・セグメントが割り当てられます(クライアント/サーバー接続ごとに1つずつ)。この共有メモリー・セグメントは接続時に作成され、クライアント/サーバー接続がTimesTenデータベースから切断されるときに破棄されます。
SHMMNI
値は、ホストが同時に作成できる共有メモリー・セグメントの数を制御します。クライアント/サーバー接続の数を考慮するようにSHMMNI
パラメータ設定を構成する必要があります。SHMMNI
を、予想されるクライアント/サーバー接続の数より大きい値に設定します。『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のSHMMNIパラメータの設定を参照してください。
UNIXドメイン・ソケット通信
LinuxおよびUNIXプラットフォームでは、TimesTenクライアントとTimesTenサーバーが同一システムにインストールされている場合、通信にUNIXドメイン・ソケットを使用できます。
共有メモリー・セグメントを使用すると、パフォーマンスは向上しますが、消費されるメモリーがわずかに増えます。UNIXドメイン・ソケットを使用すると、共有メモリー・セグメントの接続より少ないメモリーの消費でTCP/IPのパフォーマンスを向上させることができます。ドメイン・ソケットを使用するには、論理サーバーのネットワーク・アドレスとしてttLocalHost
を定義する必要があります。「論理サーバー名の定義」を参照してください。