この項では、ネットワーク上で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インストレーション・ガイド』を参照してください。
レプリケーション・スキームでは、データ・ストアが存在するホスト・マシンの名前を指定する必要があります。そのホスト名は、オペレーティング・システムによって1つ以上のIPアドレスに変換されます。この項では、各ホスト・マシンに対して正しいホスト名とIPアドレスが使用されるようにレプリケーションを構成する方法について説明します。
レプリケーション要素でデータ・ストアのホストを指定する場合は、hostnameコマンドによって返される名前を常に使用する必要があります(レプリケーションでは、それと同じホスト名を使用して、現在のホストがレプリケーション・スキームに含まれていることを確認します)。現在のホストが含まれないレプリケーション・スキームは作成できません。
ホストに(IPアドレスが異なる)複数のネットワーク・インタフェースがある場合は、レプリケーションで使用するインタフェースをROUTE句で指定する必要があります。また、各インタフェースに対して優先順位を指定する必要もあります。レプリケーションでは、まず優先順位が最も高いアドレスを使用して接続が試行され、その接続を確立できなかった場合は、接続が確立されるまで優先順に残りのアドレスが試されます。あるIPアドレスを使用しているときにホストへの接続が失敗すると、ROUTE句で複数のアドレスが指定されている場合は、別のIPアドレスへの再接続(フォールバック)が試行されます。
注意: | ROUTE句のアドレスは、ホスト名またはIPアドレスのいずれかとして指定できますが、ホストのホスト名に対して複数のIPアドレスが構成されている場合は、IPアドレスを使用してROUTE句を構成する必要があります。これは、意図したIPアドレスのみをレプリケーションで確実に使用するためです。 |
詳細は、「複数のネットワーク・インタフェースを使用したレプリケーション」を参照してください。
レプリケーション構成がIPアドレスではなくホスト名で指定されている場合、レプリケーションではピアのホスト名を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
コマンドのレスポンスは、ホスト名の解決が適切に設定されている場合はすぐに返されます。
注意: | レプリケーション・スキームでのデータ・ストア・ホストの指定は一貫している必要があります。あるデータ・ストアに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に設定した場合、ローカル・ホストのプロセスのみでデーモンおよびエージェントと対話できます。他のホストのプロセスでは、デーモンおよびエージェントと対話できません。 通常、レプリケーション構成に含まれるホストは、オペレーティング・システムの一般的なホスト名の解決方法で識別することができますが、ホスト名の構成が一般的でない場合、レプリケーション・スキームに指定されたホスト名とローカル・ホストが一致しているかどうかをTimesTenで判別できないことがまれにあります。このような状態でttRepStartまたはttAdmin -repStart
を使用してレプリケーションを開始しようとすると、エラー8191「This store is not involved in a replication scheme」を受信することになります。この場合は、組込みプロシージャttHostNameSetを使用して、現在のデータ・ストアが、レプリケーション・スキームで指定されているデータ・ストアであることをTimesTenに明示的に示すことができます。詳細は、『Oracle TimesTen In-Memory Database APIリファレンス・ガイド』のttHostNameSetに関する説明を参照してください。