4.6.4 送信方法の設計
送信方法の設計手順について説明します。
(1) 送信で使うバッファの設計
抽出側Datareplicatorは,送信先ごとに次の処理を実行しています。
-
抽出情報キューファイルから,送信対象の更新情報を読み込みます。このとき,送信用の抽出情報キューI/Oバッファを使います。
-
抽出情報キューファイルから読み込んだ更新情報の中で,トランザクションが完了している更新情報だけを抽出して編集して,反映側システムに送信します。このとき,更新情報編集バッファを使います。
また,トランザクションの完了状態を管理するため,トランザクションの管理情報を格納しているトランザクション管理情報バッファを使います。
送信方法の概要を次の図に示します。
(a) トランザクション管理情報バッファ
トランザクション管理情報バッファは,抽出側Datareplicatorの起動時に,ローカルメモリ上に確保されます。ここでは,トランザクション管理情報バッファサイズの見積もり時の考慮点とバッファサイズの指定について説明します。
- トランザクション管理情報バッファサイズの見積もり時の考慮点
-
-
トランザクション管理情報バッファには,抽出情報キューファイルに格納されているトランザクションの管理情報が格納されます。抽出側Datareplicatorでは,更新情報の編集と送信に,このトランザクション管理情報バッファを使います。データの抽出,送信を実行中に,トランザクション管理情報のサイズがバッファサイズよりも大きくなった場合には,抽出側Datareplicatorによって,さらに初期値の1/5の領域が追加されます。この場合,バッファの追加のためにシステムに負荷が掛かり,処理速度が低下することがあります。バッファサイズを大きくする方が,バッファの追加が発生する可能性が低くなります。逆にバッファサイズを大きくし過ぎると,メモリが不足する可能性が大きくなります。このため,トランザクション管理情報バッファのサイズを見積もるときには,領域追加が発生しないで,さらにメモリが不足しないように十分考慮してください。
-
抽出側HiRDBがパラレルサーバの場合には,バックエンドサーバごとに見積もります。
-
- トランザクション管理情報バッファサイズの指定
-
トランザクション管理情報バッファサイズは,送信環境定義のmaxtranオペランドとmaxtrandataオペランドで指定します。抽出側Datareplicatorでは,maxtranオペランドで指定した同時実行最大トランザクション数と,maxtrandataオペランドで指定したトランザクション内最大更新情報数の積を,トランザクション管理情報バッファサイズの初期値とします。
(b) 送信用の抽出情報キューI/Oバッファ
抽出側Datareplicatorを起動すると,送信用の抽出情報キューI/Oバッファはローカルメモリ上に確保されます。ここでは,送信用の抽出情報キューI/Oバッファサイズ,バッファ数の見積もり時の考慮点,バッファサイズの指定,バッファ数の指定について説明します。
- 送信用の抽出情報キューI/Oバッファサイズ,バッファ数の見積もり時の考慮点
-
-
送信用の抽出情報キューI/Oバッファは,抽出情報キューファイルに格納されている更新情報を読み込むときに使います。このときには,システムログファイルから抽出した更新情報を格納したときと同じサイズで,更新情報を読み込む必要があります。このため,送信用の抽出情報キューI/Oバッファのサイズは,抽出用の抽出情報キューI/Oバッファと同じになります。抽出用の抽出情報キューI/Oバッファについては,「4.6.3 抽出方法の設計」を参照してください。
-
送信用の抽出情報キューI/Oバッファでは,バッファ数が指定できます。送信間隔が指定されている場合,抽出側Datareplicatorは送信間隔で更新情報を再び読み込んで送信します。このため,バッファ数が多く指定されていると,バッファ中の更新情報を使えるため,抽出情報キューファイルからの読み込みを減らせます。
-
- 送信用の抽出情報キューI/Oバッファのサイズの指定
-
送信用の抽出情報キューI/Oバッファのサイズは,抽出用の抽出情報キューI/Oバッファと同じになります。抽出用の抽出情報キューI/Oバッファについては,「4.6.3 抽出方法の設計」を参照してください。
- 送信用の抽出情報キューI/Oバッファの数の指定
-
送信用の抽出情報キューI/Oバッファの数は,送信環境定義のreadbufnumオペランドで指定します。
(2) 送信処理の送信間隔の設計
抽出側Datareplicatorでは,前回の更新情報を,一定の時間間隔ごとに送信先に送信します。この時間間隔を送信間隔といいます。送信間隔は,送信環境定義のsendintvlオペランドで指定します。
送信処理の送信間隔の概要を次の図に示します。
(3) コネクションリトライ回数
抽出側Datareplicatorでは,送信先の反映側システムとの接続に失敗したときに,接続を再実行できます。これをコネクションリトライといいます。送信環境定義のretrynumでコネクションリトライ回数を指定します。コネクションリトライ回数を指定していない場合は,次の送信間隔まで待機し,送信間隔ごとに再接続を実行します。
(4) 送信処理の縮退の設計
抽出側Datareplicatorでは,一つの抽出環境から複数の送信先に更新情報を送信できます。何らかの原因によって更新情報が抽出情報キューファイルに残ったままの状態が続くと,抽出情報キューファイルのスワップができなくなり,システムログファイルから更新情報を抽出できなくなります。
抽出側Datareplicatorでは,抽出情報キューファイルのスワップができない場合に,特定の送信先に対応するデータ連動だけを中止し,送信対象の更新情報をスワップ先になる抽出情報キューファイルから破棄して,抽出情報キューファイルのスワップを可能にします。これを送信処理の縮退といいます。送信処理の縮退は,送信環境定義のoverwriteオペランドで指定します。
送信処理の縮退の概念を次の図に示します。
(a) 送信処理の縮退を指定した場合の動作
抽出情報キューファイルのスワップができない状態で,さらに送信処理の縮退を指定した送信先の,送信対象の更新情報が,スワップ先になる抽出情報キューファイルに残っている場合,その送信プロセスだけを停止し,対応する更新情報をスワップ先になる抽出情報キューファイルから破棄します。これによって,抽出情報キューファイルのスワップが可能になって,引き続きシステムログファイルからの抽出を続行できます。
送信処理の縮退が発生した場合には,縮退の対象になる送信先の反映側DBと抽出側DBとの整合性は保証されません。このため,送信先の反映側DBを再作成する必要があります。
一部の送信先の,抽出側DBと反映側DBとの整合性よりも,システム全体のデータ連動を優先したい場合には,送信処理の縮退を指定します。
(b) 送信処理の縮退を指定していない場合の動作
抽出情報キューファイルがスワップできなくなった場合には,反映側システムへの更新情報の送信によって,スワップ先になる抽出情報キューファイルに空きができるまで,システムログファイルからの更新情報の抽出を停止します。このため,抽出側DBと反映側DBの整合性は保証されます。
データ連動システム全体の抽出側DBと反映側DBの整合性を保証したい場合には,縮退を指定しません。