この項では、ネットワーク上でTimesTenデータをレプリケートする場合に考慮する必要があるいくつかの問題について説明します。内容は次のとおりです。
TimesTenレプリケーションに必要なネットワーク帯域幅は、レプリケートしているデータの量および頻度によって異なります。ここでは、データ範囲の上位と下位、およびTimesTenデータ・ストア間でデータをレプリケートするために必要なネットワーク帯域幅を特徴付けるトランザクションのタイプについて説明します。
データ範囲の上位は、小量のデータの更新または挿入で特徴付けることができます。これらの更新または挿入では、約1.5から1.6MB/秒でデータをレプリケートできます。データ範囲の下位は、RETURN RECEIPTを指定して実行中の単一のchar(10)列更新で特徴付けることができます。この更新では、約125KB/秒でデータをレプリケートできます。
次の表に、レプリケート・レコードのサイズを計算するためのガイドラインを示します。
レコード・タイプ
|
サイズ
|
---|---|
開始トランザクション | 48バイト |
伝播 | 48バイト |
更新 | 116バイト + 18バイト/更新された列 +古い列のサイズ +新しい列のサイズ +主キーまたは一意キーのサイズ |
削除 | 104バイト +主キーまたは一意キーのサイズ |
挿入 | 104バイト +主キーまたは一意キーのサイズ +挿入された行のサイズ |
終了トランザクション | 48バイト |
トランザクションはレプリケート対象のデータ・ストア間をバッチで送信されます。マスター・データ・ストアのトランザクション・ログ・バッファにデータがなくなった場合、または現在のバッチがほぼ256Kバイトである場合にバッチが作成されます。各バッチの最後に、マスターは48バイトのバッチ終了メッセージを送信し、バッチ受信時にサブスクライバから送信される48バイトの確認応答を待機します。詳細は、「レプリケーション・エージェントによって更新をデータ・ストア間でコピーする方法」を参照してください。
次の表に示すとおり、LANで通常使用される100 Base-Tイーサネットでは、10MB/秒の速度を持続できます。これは、ほとんどのレプリケーションで必要とされる速度に十分対応できる持続帯域幅です。ただし、サーバーがWANで通信している場合、レプリケーション・スキームおよびトランザクション・ロードの設定は、ネットワークの使用可能帯域幅に一致させる必要があります。
前述の表のとおり、T3回線では、4.8MB/秒の使用可能帯域幅によって、パフォーマンスを損なうことなく、実行可能な最速のトランザクション速度(合計で3.2MB/秒)で稼働する2つのサブスクライバを十分にサポートできる帯域幅が提供されます。
対照的に、T1回線では、行に1KB未満を挿入するユーザーのRETURN RECEIPTレプリケーションに十分対応できる帯域幅が提供されます。
TimesTenレプリケーションでは、TCP/IPプロトコルを使用していますが、このプロトコルはWAN環境用には最適化されていません。WANでのレプリケーションのパフォーマンスは、サードパーティのTCPスタック製品を使用して向上できます。TCPスタックの交換を実行できない場合は、CREATE REPLICATION文にCOMPRESS TRAFFIC属性を設定して、TCP/IPプロトコルで処理する必要があるネットワーク通信量を削減します。詳細は、「レプリケートの通信量の圧縮」を参照してください。
パフォーマンスを向上させるためにTCP/IPカーネル・パラメータを変更する方法については、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。
ほとんどのレプリケーション・スキームで、データ・ストアが存在するホスト・マシンの名前を指定する必要があります。オペレーティング・システムは、このホスト名をIPアドレスに変換します。この項では、正しいIPアドレスが使用されるようにホスト名を設定する方法について説明します。
UNIXホストが1つのIPアドレスおよびホスト名を持っている場合は、hostnameコマンドによって返されるホスト名を使用できます。
1つのホストに(異なるIPアドレスを持つ)複数のネットワーク・インタフェースがある場合、TimesTenレプリケーションは、gethostbyname()関数コールから返される順序でIPアドレスに接続を試行します。最初のアドレスを使用して接続を試行し、接続できない場合は、接続が確立するまで、順番に残りのアドレスに接続を試行します。TimesTenレプリケーションは、ホストに新しく接続するたびにこの同じ順序を使用します。あるIPアドレスでホストへの接続が失敗すると、TimesTenレプリケーションは、前述の方法と同じ方法でホストの別のIPアドレスに再接続(またはフォールバック)を試行します。
注意: | Solarisの場合、TimesTenはgethostbyname()関数コールではなく、getaddrinfo()関数コールを使用します。 |
注意: | ネットワーク・インタフェース・カード(NIC)が複数ある場合は、/etc/host.conf ファイルにmulti onが指定されていることを確認してください。指定されていない場合、gethostbyname()は複数のアドレスを返しません。 |
UNIX Platformsで複数のIPアドレスを使用するようにホストを設定するには、基本的にDNSまたは/etc/hosts
ファイルを使用する2つの方法があります。
たとえば、マシンに2つのNICがある場合は、/etc/hosts
ファイルに対して次の構文を使用します。
127.0.0.1 localhost
<IP addr 1 for NIC 1> <official hostname> <alias name>
<IP addr 2 for NIC 2> <official hostname> <alias name>
official hostnameは、hostnameコマンドによって返されたホスト名です。
/etc/hosts
ファイルを編集する場合は、次のことに注意してください。
注意: | オペレーティング・システムがSolarisバージョン8以上の場合は、ホストIP構成を/etc/inet/ipnodes ファイルに追加する必要がある場合があります。レプリケーションで使用するホスト名がこのファイルに記述されている場合、TimesTenは/etc/hosts ファイルに記述されているホスト名の構成情報を無視して、/etc/inet/ipnodes ファイルに記述されている情報のみを使用します。 |
たとえば、UNIX Platformにある/etc/hosts
ファイル内の次のエントリは、名前がMachine1で2つのIPアドレスを持つサーバーについて記述しています。
127.0.0.1 localhost
10.10.98.102 Machine1
192.168.1.102 Machine1
DNSに対して同じ設定を指定する場合、ドメイン・ゾーン・ファイルのエントリは次のようになります。
Machine1 IN A 10.10.98.102
IN A 192.168.1.102
いずれの場合も、レプリケーション・スキームにホスト名としてMachine1 を指定する必要のみがあります。レプリケーションでは、接続の確立時に使用可能なIPアドレスが使用されます。
また、複数のIPアドレスが使用されている環境では、1つのIPアドレスに複数のホスト名を割り当てて特定のIPアドレスへのレプリケーション接続を制限することもできます。たとえば、/etc/hosts
ファイルに次のようなエントリを含めることができます。
127.0.0.1 localhost
10.10.98.102 Machine1
192.168.1.102 Machine1 RepMachine1
また、次のようなDNSゾーン・ファイルを含めることもできます。
Machine1 IN A 10.10.98.102
IN A 192.168.1.102
RepMachine1 IN A 192.168.1.102
このホストのレプリケーション接続をIPアドレス192.168.1.102に制限するには、レプリケーション・スキームでRepMachine1をホスト名として指定できます(別の方法として、レプリケーション・スキームの設定に使用するCREATE REPLICATION文にホスト名としてIPアドレスを指定する方法もあります)。
デフォルトでは、TimesTenのメイン・デーモン、すべてのサブデーモンおよびエージェントは、使用可能なアドレスを使用してソケット上でリクエストをリスニングします。ttendaemon.options
ファイルに-listenaddr
オプションを設定することで、エージェントとデーモン間の通信用のアドレスを指定できます。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデーモン・オプションの管理に関する説明を参照してください。
マシンに2つのNICがあり、NICのアドレスがそれぞれ10.10.10.100と10.10.11.200であるとします。ループバック・アドレスは127.0.0.1です。ループバック・アドレスをレプリケーション・エージェントに適用する場合は次のことに注意してください。
ttendaemon.options
ファイルに-listenaddr
オプションを設定しない場合は、すべてのプロセスでデーモンおよびエージェントと対話できます。-listenaddr
を10.10.10.100に設定した場合、ローカル・ホストのすべてのプロセスまたは10.10.10ネットで、10.10.10.100のデーモンおよびエージェントと対話できます。10.10.11ネット上のプロセスでは、10.10.10.100のデーモンおよびエージェントと対話できません。-listenaddr
を127.0.0.1に設定した場合、ローカル・ホストのプロセスのみでデーモンおよびエージェントと対話できます。他のホストのプロセスでは、デーモンおよびエージェントと対話できません。レプリケーション構成では、ピアのホスト名をIPアドレスに変換できる必要があります。Windowsでこれを効率的に行うには、有効なWINSサーバーまたは有効なDNSサーバーのいずれかを問い合せるように各Windowsマシンが設定されていることを確認してください。これらのサーバーにはネットワーク上のホストに関する正しい情報があります。このようなサーバーがない場合、次のいずれかの方法で静的なHOST-to-IPエントリを入力できます。
%windir%\system32\drivers\etc\hosts
または
%windir%\system32\drivers\etc\lmhosts
これらの4つのオプションを指定しなかった場合、Windowsマシンはブロードキャスト(非常に低速)を実行してピア・ノードを検出します。
また、Windowsマシンで定義済のWINSサーバーまたはDNSサーバーと通信できない場合、またはホスト名の解決がこれらのサーバーで正しく設定されていない場合は、ホスト名の解決に非常に時間がかかる場合があります。ping
コマンドを使用して、ホストを効率的に検出できるかどうかをテストします。ping
コマンドのレスポンスは、ホスト名の解決が適切に設定されている場合はすぐに返されます。
Windowsでの\etc\hosts
のホスト名の解決設定の問題は、UNIXでの/etc/hosts
の問題(「UNIX上のデータ・ストア・ホストの指定」を参照)と同じです。
ホスト名の長さは、最大30文字にできます。
注意: | レプリケーション・スキームでのデータ・ストア・ホストの指定は一貫している必要があります。あるデータ・ストアにIPアドレスを使用してホストを指定した後、同じデータ・ストアまたは別のデータ・ストアにそのホスト名は使用しないでください。 |
通常、レプリケーション構成に含まれるホストは、オペレーティング・システムの一般的なホスト名の解決方法で識別することができますが、ホスト名の構成が一般的でない場合、レプリケーション・スキームに指定されたホスト名とローカル・ホストが一致しているかどうかをTimesTenで判別できないことがまれにあります。このような状態でttRepStartまたはttAdmin -repStart
を使用してレプリケーションを開始しようとすると、エラー8191「This store is not involved in a replication scheme」を受信することになります。この場合は、組込みプロシージャttHostNameSetを使用して、現在のデータ・ストアが、レプリケーション・スキームで指定されているデータ・ストアであることをTimesTenに明示的に示すことができます。詳細は、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』のttHostNameSetに関する説明を参照してください。