4.5.3 複数システム間でのデータ連動システムの注意
複数システム間でのデータ連動システムの注意について説明します。
- 〈この項の構成〉
(1) 複数の抽出側システムからの,同一の反映対象表に対する更新
複数の抽出側システムで同一の反映対象表に対する更新が発生する場合,最終的にどのシステムで更新されたデータであるかが特定できなくなります。例えば,複数の抽出側システムで同一の表に対する全件UPDATEが発生した場合,最終的にどのシステムで更新されたデータであるかが特定できなくなります。
これを防ぐためには,反映対象表に対してキーレンジ分割をして,各抽出側システムからの更新範囲を限定します。
(2) 複数システム間でのデータ連動の順序性
一つの抽出側システムから複数の反映側システムへのデータ連動を実行している場合,各反映側システムでの反映処理の順序性は,各反映側システムの処理速度,負荷などに依存するため,不定になります(ただし,抽出側システムのトランザクションの順序性は保証されます)。
複数システム間でのデータ連動で順序付ける場合には,複数のシステムを一つの線でつないだシステムにしてください。例えば,システムA,システムB,及びシステムCの三つのシステムをデータ連動する場合,システムAとシステムBをデータ連動し,同じくシステムBとシステムCをデータ連動することで,システムAからシステムCまでを一つの線でつないだ構成にできます。
複数のシステムを一つの線でつないだシステムの例を次の図に示します。
(3) ループバックの抑止
双方向更新システムでは,複数のシステム間で更新情報を送受信します。このため,送信されてきた更新情報を反映した後,再抽出して送信元に送信し返すことで,複数のシステム間で同一の更新情報が無限に抽出,反映を繰り返す可能性があります。これをループバックといいます。
このループバックを抑止するには,送信先識別子ごとに送信環境定義のnsndidxxx(xxxは001〜256の整数)オペランドで,送信を抑止する更新情報の受信元の識別子(送信抑止受信元識別子)を指定します。送信抑止受信元識別子には,抑止の対象とするデータ連動システムの,抽出側Datareplicator識別子を指定します。例えば,データ連動システムA(hdeid=01,hdsid=02)で,データ連動システムB(hdeid=11,hdsid=12)から送信されてくる更新情報を抑止の対象とする場合には,データ連動システムAの送信環境定義で,nsndid001=11と指定します。
送信抑止の指定をしているときは,UAP名にhdssqleで始まる名称は使わないでください。送信抑止の指定をしていると,hdssqleで始まるUAP名の更新情報の送信が抑止されることがあります。
ループバックを抑止する双方向更新システムの形態の例を次の図に示します。
図4-27で実行されるDatareplicatorの処理は次のとおりです。
-
動作内容
- UAP1の更新情報の流れ
-
-
システムXで,UAP1の更新情報をシステムログファイルに格納します。
-
システムXでは1.の更新情報を抽出機能で抽出して,システムYに送信します(システムXの抑止の指定はシステムYに対してnsndid001=02だが,この段階のUAP1の更新情報には受信元がないため,抑止しません)。
-
システムYでは2.で送信された更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムYでは3.の更新情報を抽出機能で抽出して,システムZに送信します(システムYの抑止の指定はシステムXに対してはnsndid001=01,システムZに対してはnsndid001=03だが,この段階のUAP1の更新情報の受信元はシステムXであるため,システムXへの送信だけが抑止されます)。
-
システムZでは4.で送信された更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムZでは5.の更新情報を抽出機能で抽出するが,送信しません(システムZの抑止の指定はシステムYに対してnsndid001=02だが,この段階のUAP1の更新情報の受信元はシステムYであるため,システムYへの送信が抑止されます)。
-
- UAP2の更新情報の流れ
-
-
システムYで,UAP2の更新情報をシステムログファイルに格納します。
-
システムYでは1.の更新情報を抽出機能で抽出して,システムXとシステムZに送信します(システムYの抑止の指定はシステムXに対してはnsndid001=01,システムZに対してはnsndid001=03だが,この段階のUAP2の更新情報には受信元がないため,抑止されません)。
-
システムX,Zでは2.で送信された更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムX,Zでは,3.の更新情報を抽出機能で抽出するが,送信しません(システムX,及びシステムZでの抑止の指定はシステムYに対してnsndid001=02であり,この段階のUAP2の更新情報の受信元はシステムYであるため,システムYへの送信が抑止されます)。
-
- UAP3の更新情報の流れ
-
-
システムZで,UAP3の更新情報をシステムログファイルに格納します。
-
システムZでは1.の更新情報を抽出機能で抽出して,システムYに送信します(システムZの抑止の指定はシステムYに対してnsndid001=02だが,この段階のUAP3の更新情報には受信元がないため,抑止されません)。
-
システムYでは2.で送信された更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムYでは3.の更新情報を抽出機能で抽出して,システムXに送信します(システムYの抑止の指定はシステムXに対してはnsndid001=01,システムZに対してはnsndid001=03だが,この段階のUAP3の更新情報の受信元はシステムZであるため,システムZへの送信だけが抑止されます)。
-
システムXでは4.で送信された更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムXでは5.の更新情報を抽出機能で抽出するが,送信しません(システムXの抑止の指定はシステムYに対してnsndid001=02であり,この段階のUAP3の更新情報の受信元はシステムYであるため,システムYへの送信が抑止されます)。
-
(4) 三つ以上のシステムの間で双方向更新をするデータ連動システム
三つ以上のシステムの間で双方向更新をするの例を次の図に示します。
図4-28で実行されるDatareplicatorの処理は次のとおりです。
-
動作内容
- UAP1の更新情報の流れ
-
-
システムXで,UAP1の更新情報をシステムログファイルに格納します。
-
システムXでは,1.の更新情報を抽出機能で抽出して,システムY,Zに送信します(システムXでは抑止を指定していますが,この段階のUAP1の更新情報には抽出元がないため,抑止されません)。
-
システムY,Zでは,2.の更新情報を反映機能で反映して,更新情報をシステムログファイルに格納します。
-
システムYでは,システムX,Zに対して共にnsendid001=01で抽出元がシステムXとなる更新情報の送信を抑止しているため,3.の更新情報は送信されません。
-
システムZでも同様に,3.の更新情報は送信されません。
UAP2,UAP3についても同様に,ループバックの制御をします。
-
(5) XDM/DSからデータ連動機能を使う場合のループバック抑止について
XDM/DSから送信された更新情報に対する対応を次に示します。
XDM/DSの バージョン |
XDM/DSから送信された更新情報に対する対応 |
|
---|---|---|
ループバックの制御をするとき |
UOCで反映するとき |
|
07-00以前 |
送信環境定義のnsndidxxxオペランドには「00」を設定してください。設定しないと,その更新情報を他システムへ送信します。 |
インタフェースブロック(UINTERFACE_BLK)の抽出側Datareplicator識別子には「00」が設定されます。 |
07-01以降 |
送信環境定義のnsndidxxxオペランドにはXDM/DS起動定義のXDM/DS識別子句へ指定した文字コード(EBCDIK)を設定してください。設定しないと,その更新情報を他システムへ送信します。 |
インタフェースブロック(UINTERFACE_BLK)の抽出側Datareplicator識別子にはXDM/DS起動定義のXDM/DS識別子句へ指定した文字コード(EBCDIK)が設定されます。 |