(57)【特許請求の範囲】
【請求項１】
第１の処理部を有する第１の計算機ノードと、
前記第１の計算機に接続され、第２の処理部を有する第２の計算機ノードとを有する計算機システムであって、
データレコードを格納する第１の記憶領域と、
前記第１の記憶領域からコピーされたデータレコードを格納する第２の記憶領域と、を備え、
前記第１の処理部は、任意の時間間隔で前記第２の処理部とは非同期に前記第１の記憶領域に前記データレコードを格納し、
前記第２の処理部は、前記第１の処理部とは非同期の任意の時間間隔で前記第１の記憶領域から読み出すべきデータレコードを指定して前記第２の記憶領域に読み出し、参照する、ことを特徴とする計算機システム。
【請求項２】
第１の処理部を有する第１の計算機ノードと、
前記第１の計算機ノードに接続され、第２の処理部を有する第２の計算機ノードとを有する計算機システムであって、
前記第１の処理部は、任意の時間間隔で前記第２の処理部とは非同期に第１の記憶領域にデータレコードを格納し、
前記第２の処理部は、前記第１の処理部とは非同期の任意の時間間隔で前記第１の記憶領域から読み出すべきデータレコードを指定して読み出し、参照し、
前記第１の記憶領域は識別番号と前記データレコードが組で格納される複数個のエントリを有しており、
前記第１の処理部は、前記データレコードが格納された順序を示し連続性のある前記識別番号を付与して前記データレコードを前記エントリに格納し、
前記第２の処理部は、前記第１の処理部が前記データレコードを前記エントリに格納する前記順序とは逆の順序で、前記エントリから前記データレコード及び前記識別番号を読み出して第２の記憶領域に格納し、
前記第２の処理部は、読み出された前記データレコードの前記識別番号に連続性がある場合当該データレコードは正しいと判断し、連続性がない場合当該データレコードが不正であると判断することを特徴とする計算機システム。
【請求項３】
第１の処理部を有する第１の計算機ノードと、
前記第１の計算機ノードに接続され、第２の処理部を有する第２の計算機ノードとを有する計算機システムであって、
データレコードを格納する第１の記憶領域と、
前記第１の記憶領域からコピーされたデータレコードを格納する第２の記憶領域と、を備え
前記第１の処理部は、任意の時間間隔で前記第２の処理部とは非同期に前記第１の記憶領域に前記データレコードを格納し、
前記第２の処理部は、前記第１の処理部とは非同期の任意の時間間隔で前記第１の記憶領域から読み出すべきデータレコードを指定して前記第２の記憶領域に読み出し、参照し、
前記第１の処理部は前記データレコードに対して誤り検出符号を生成する誤り検出符号生成処理部を有し、
前記第１の処理部は、前記第１の記憶領域に前記データレコードと前記誤り検出符号を書き込み、前記第２の処理部は、前記第２の記憶領域に読み出されたデータレコードについて前記誤り検出符号により誤りの検出を行ない、誤りが検出されない場合当該データレコードを正しいものと判断し誤りが検出された場合当該データレコードを正しくないものと判断することを特徴とする計算機システム。
【請求項４】
前記第１の記憶領域は前記誤り検出符号と前記データレコードが組で格納される複数個のエントリを有しており、前記エントリに前記第１の処理部で書き込まれる方向と前記エントリから読み出される方向とは同一方向であることを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記第１の記憶領域は、前記第１の計算機ノード内に配置されていることを特徴とする請求項１乃至４のいずれかに記載の計算機システム。
【請求項６】
前記第２の記憶領域は、前記第２の計算機ノード内に配置されていることを特徴とする請求項１乃至５のいずれかに記載の計算機システム。
【請求項７】
前記第１の記憶領域は、前記第１の計算機ノードおよび前記第２の計算機ノードと互いに接続する外部記憶装置内に配置されていることを特徴とする請求項１、２、３、４、６のいずれかに記載の計算機システム。
【請求項８】
前記第２の計算機ノードは前記第２の処理部を一定の時間間隔で起動し、前記第１の記憶領域から前記第２の記憶領域へデータを読み出すためのタイマを備えたことを特徴とする請求項１乃至７のいずれかに記載の計算機システム。
【請求項９】
第１の計算機ノードと第２の計算機ノードが接続された計算機システムであって、
前記第１の計算機ノードは、データレコードを格納する第１の記憶領域と、任意の時間間隔で前記第２の計算機ノードと非同期に前記第１の記憶領域に前記データレコードを格納する第１の処理部と、任意の時間間隔で前記第１の記憶領域の前記データレコードを前記第２の計算機ノードに送信するデータ送信要求を生成するデータ送信生成処理部とを備え、
第２の計算機ノードは、コピーされた前記第１の記憶領域の前記データレコードを格納する第２の記憶領域と、前記第２の記憶領域のデータレコードを任意の時間間隔で前記第１の計算機ノードと非同期に参照する第２の処理部とを備えたことを特徴とする計算機システム。
【請求項１０】
第１の計算機ノード上の第１の記憶領域に格納された一つ以上のレコードで構成されるデータを、第２の計算機ノード上で動作しているプログラムが、前記第２の計算機ノード上の第２の記憶領域にコピーさせて参照することが可能な通信手段を有する計算機システムのデータ転送方法において、
前記第１の計算機ノード上で動作し、任意の時間間隔で、前記第１の記憶領域に、一つ以上のレコードで構成されるデータを格納するステップと、
前記第２の計算機ノード上で動作し、任意の時間間隔で、前記通信手段を用いて前記第１の記憶領域の指定されたデータを前記第２の記憶領域にコピーさせ、前記データを参照するステップとを備えたことを特徴とするデータ転送方法。
【請求項１１】
第１の記憶領域を持つ第１の計算機ノード上で動作しているプログラムが、第２の計算機ノードの主記憶装置内の第２の記憶領域に、前記第１の記憶領域の一つ以上のレコードで構成されるデータを、直接格納することが可能な通信手段を有する計算機システムのデータ転送方法において、
前記第１の計算機ノード上で動作し、任意の時間間隔で、前記通信手段を用いて前記第２の記憶領域に前記一つ以上のレコードで構成されるデータを格納するステップと、
前記第２の計算機ノード上で動作し、任意の時間間隔で、前記第２の領域のデータを参照するステップとを備えたことを特徴とするデータ転送方法。
【請求項１２】
外部記憶装置にある第１の記憶領域に、第１の計算機ノード上で動作しているプログラムが、データを直接格納することが可能な第１の通信手段と、第２の計算機ノード上で動作しているプログラムが、前記第１の記憶領域を指定して、前記第２の計算機ノード上の第２の記憶領域にコピーさせて参照することが可能な第２の通信手段を有する計算機システムのデータ転送方法において、
前記第１の計算機ノード上で動作し、前記第１の通信手段を用いて任意の時間間隔で、前記第１の記憶領域に、一つ以上のレコードで構成されるデータを格納する第１のステップと、
前記第２の計算機ノード上で動作し、前記第１のステップとは非同期に任意の時間間隔で、前記第２の通信手段を用いて前記第１の記憶領域の指定されたデータを前記第２の記憶領域にコピーさせ、前記データを参照する第２のステップとを備えたことを特徴とするデータ転送方法。
【請求項１３】
第１の計算機ノード上の第１の記憶領域に格納された一つ以上のレコードで構成されるデータを、第２の計算機ノード上で動作している第２のプログラムが、前記第２の計算機ノード上の第２の記憶領域にコピーさせて参照することが可能な通信手段を有する計算機システムのデータ転送方法において、
前記第１の計算機ノード上で動作している第１のプログラムが、データレコードを格納した順序を示し連続性のある識別番号を付与して、前記データレコードを前記第１の記憶領域のエントリに格納するステップと、
前記第２のプログラムが、前記第１のプログラムが前記データレコードを前記エントリに格納する前記順序とは逆の順序で、前記エントリから前記データレコード及び前記識別番号を読み出して前記第２の記憶領域に格納するステップと、
前記第２のプログラムが、読み出された前記データレコードの前記識別番号に連続性がある場合当該データレコードは正しいと判断し、連続性がない場合当該データレコードが不正であると判断するステップを備えたことを特徴とするデータ転送方法。
【請求項１４】
前記第１の記憶領域は誤り検出符号と前記データレコードが組で格納される複数個のエントリを有しており、
前記第１の計算機ノード上で動作し、前記第１の記憶領域に前記データレコードと前記誤り検出符号を書き込み、前記エントリに書き込まれる方向と同一方向に前記エントリから読み出すステップと、
前記第２の計算機ノード上で動作し、前記第２の記憶領域に読み出されたデータレコードについて前記誤り検出符号により誤りの検出を行ない、誤りが検出されない場合当該データレコードを正しいものと判断し、誤りが検出された場合当該データレコードを正しくないものと判断するステップとを備えたことを特徴とする請求項１１または１２記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークまたは入出力チャネルで接続された計算機の間で、複数のレコードからなるデータを受け渡す処理に関する。
【０００２】
【従来の技術】
二つの計算機ノード間で、多数のレコードからなるデータを受け渡す従来の技術として、以下に示すものがある。
【０００３】
第１の従来の技術は、特開平６−６７９４４号公報の２ページ６１行目から、２ページ８１行目に示されている。この第１の従来の技術は、２つの計算機ノード間で共用しているディスク装置を利用した方法である。この方法では、同一のデータを格納した２個のボリュームからなる組を用意し、各々のボリュームを各計算機ノードに接続させて、共用できる状態にしておく。そして、一方の計算機ノードがデータを参照する場合は、ボリュームの組を解き（ボリュームの切り離し）、一方のボリューム（以下、第１のボリューム）を参照する側の計算機ノードに占有させる。その間、該ディスクの制御装置は、もう片方のボリューム（以下、第２のボリューム）に他方の計算機ノードによる変更を全て記録しておく。データを参照した計算機ノードが、参照を終え、上記第１のボリュームの占有を解くと、上記ディスクの制御装置は、上記第２のボリュームに対する変更の記録を、上記第１のボリュームに反映し、その後、上記２個のボリュームを、同一のデータを格納する組として、二つの計算機ノードから共用できる状態にする（ボリュームの再同期化）。
【０００４】
第２の従来の技術は、特開平６−１４９４８５号公報の３ページ５８行目から、４ページ５２行目に示されている。この第２の従来の技術は、計算機ノード間で共用している半導体外部記憶装置を利用した方法である。この方法では、単一のメモリ領域を複数の計算機ノード間で共用し、各々の計算機ノードは、該メモリ領域に対して排他的にアクセスする。
【０００５】
【発明が解決しようとする課題】
ここで、第１の従来の技術は、一方の計算機ノードがデータを参照するたびにボリュームの切り離しと、再同期化を行う必要が有る。そのため、リアルタイム処理に適用することは困難である問題がある。
【０００６】
一方、第２の従来の技術は、データ転送のたびに、レコードの完全性を保証するためにデータの出力側の計算機ノードと、データの参照側計算機ノードとの間で、これらの領域の排他制御を行う必要がある。大量のデータを転送する際には、これらの排他処理に要するオーバヘッドが膨大となる問題がある。さらに、このオーバヘッドは、データ転送の効率を低下させることがある。
【０００７】
本発明の第１の目的は、データ転送効率の向上を阻害する排他処理に要するオーバヘッドを軽減することにある。
【０００８】
本発明の第２の目的は、リアルタイム処理にも利用可能なデータ転送方法を提供することにある。
【０００９】
【課題を解決するための手段】
本発明では、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を用いた、データ転送を行う。ＲＤＭＡとは、送信側の計算機ノードの送信すべきデータのアドレスを受信側の計算機ノードが判っている、または受信側の計算機ノードの受信すべきデータのアドレスを送信側の計算機ノードがわかっているものである。そして、ネットワークで接続された二つの計算機ノード間において、一方の計算機ノードのプログラムが、該計算機ノードの主記憶のデータを格納すべき／データを読み出すべき領域と、他方の計算機ノードの主記憶のデータを読み出すべき／データを格納すべき領域とを指定してそれらの領域間でデータのコピーをする要求を作成し、この要求を、通信手段またはそれを制御するソフトウェアで処理することで、上記計算機ノードのそれぞれの主記憶間で直接データのコピーを行う技術である。
【００１０】
ＲＤＭＡには、ＲＤＭＡを起動する計算機ノードの主記憶のデータを、他方の計算機ノード上の主記憶に格納するＲＤＭＡ−Ｗｒｉｔｅと、ＲＤＭＡを起動する計算機ノードの主記憶に、他方の計算機ノード上の主記憶のデータを格納するＲＤＭＡ−Ｒｅａｄの２種がある。
【００１１】
ＲＤＭＡは、例えば米Ｉｎｔｅｌ社、米Ｃｏｍｐａｑ社、米マイクロソフト社による、Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｆａｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  １．０（１９９７．１２．１６）に記載されている。
【００１２】
本発明では、第１の計算機ノードの主記憶上の領域に、同期を取らずに一方的に（非同期の手順で）任意の時間間隔で、一つ以上のレコードを格納し、第２の計算機ノード上で動作しているプログラムが、ＲＤＭＡ−Ｒｅａｄを利用して、当該領域を任意の時間間隔で参照することで、データ転送を実現する。
【００１３】
また、第１の計算機ノード上のプログラムが、第２の計算機ノードの主記憶上の領域に、同期を取らずに一方的に（非同期の手順で）任意の時間間隔で、ＲＤＭＡ−Ｗｒｉｔｅを用いて一つ以上のレコードを格納し、第２の計算機ノード上で動作しているプログラムが、上記領域を任意の時間間隔で参照することでデータ転送を実現する。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を、図を用いて説明する。
【００１５】
まず、図１から図１０を用いて第１の本発明の実施の形態を説明する。
【００１６】
図１は、第１の本発明の実施の形態の全体構成図である。第１の計算機ノード１０と第２の計算機ノード２０は、ネットワーク３０に接続している。そして、第１の計算機１０と第２の計算機２０とは、ネットワーク３０を介して互いに通信することが可能である。
【００１７】
第１の計算機ノード１０には、第２の計算機ノード２０に送信すべきデータレコード１５３を出力する第１のプログラム１１０と主記憶１５０に格納され、データレコード１５３を格納するデータレコードテーブル１５１と、前記データレコード１５３をネットワーク３０を経由して第２の計算機２０へ送信する送信部１７０を有している。送信部１７０は、第１のプログラムと独立したプログラム、又はハードウェアで構成されている。さらに、第１のプログラム１１０は、前記データレコード１５３を出力するデータレコード出力処理部１１１と、後述する識別情報１５２を出力する識別情報出力処理部１１２と、データレコード出力処理部１１１および識別情報出力処理部１１２の出力をデータレコードテーブル１５１に格納する格納処理部１１３で構成される。ここで、前記識別情報１５２とは、少なくとも前後に連続して格納された２個のデータレコード１５３を識別できる情報であり、例えばデータレコード１５３のそれぞれに対し採番される通し番号である。識別情報出力処理部１１２には該通し番号を生成するカウンタ１１６を有する。さらに、格納処理部１１３には、データレコードテーブル１５１における格納すべきエントリのインデクス（ある識別情報及びデータレコードをどのエントリに格納すべきかを示すもの）を格納するポインタ１１５を含む。
【００１８】
また、データレコード出力処理部１１１とは例えば、ＯＬＴＰ（Ｏｎ  Ｌｉｎｅ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）がジャーナルデータをデータレコードテーブル１５１に書き込むものであり、この例ではデータレコード１５３はオンライン処理におけるジャーナルデータである。
【００１９】
第２の計算機ノード２０は、第１の計算機１０が出力したデータレコード１５３を受信し、参照する第２のプログラム２１０と第１の計算機１０のデータレコードテーブル１５１の、完全または不完全な複製である主記憶２５０上のデータレコードテーブル２５１と、前記データレコード１５３をネットワーク３０を経由して第１の計算機から受信する受信部２７０を有している。さらに、第２のプログラム２１０は、タイマ２１１と、前記データレコード１５３の受信要求を生成するデータ受信要求生成処理部２１２と、データレコード参照処理部２２１を有する。なお、タイマ２１１は一定の時間間隔でデータ受信要求生成処理部２１２を起動するための処理であり、第２のプログラム２１０の外部に存在しても良い。
【００２０】
さらに、データレコード参照処理部２２１はデータレコードテーブル２５１において、どのエントリを参照すべきかを示すインデクスを格納するポインタ２２５と、読み出された前記識別情報２５２の妥当性を検証する為に使用するカウンタ２２６とを含む。
【００２１】
なお、データレコード１５３を生成するプログラム、およびデータレコード２５３を参照してさらに別の処理を行うプログラムは、本発明とは直接関係ないので、本実施例では省略する。
【００２２】
図２は第１の実施の形態において、第１のプログラム１１０の処理を示すフローチャートである。
【００２３】
まず、データレコード出力処理部１１１が１個のデータレコード１５３を出力し、格納処理部１１３に該データレコード１５３のデータレコードテーブル１５１への格納処理を依頼する（ステップ１１ａ）。格納処理部１１３は、識別情報出力処理部１１２を起動する（ステップ１１ｂ）。識別情報出力処理部１１２は識別情報１５２を出力し、これを格納処理部１１３に返す（ステップ１１ｃ）。
【００２４】
格納処理部１１３は、ステップ１１ａのデータレコード１５３とステップ１１ｃの識別情報１５２とを組にして、ポインタ１１５が指すエントリに格納する（ステップ１１ｇ）。その後、格納処理部１１３は、ポインタ１１５をインクリメントし、最大値を超えた場合はラップ処理を行う（ステップ１１ｈ）。識別情報出力処理部１１２および格納処理部１１３の詳細については後述する。第１のプログラム１１０が複数のデータレコード１５３を出力する場合、上記ステップ１１ａからステップ１１ｈを繰り返す。識別情報及びデータレコードは第２の計算機ノードとは関係なくデータレコードが発生する毎にデータレコードテーブル１５１へと格納される。
【００２５】
図３は、第１の実施の形態において、第２のプログラム２１０の処理を示すフローチャートである。
【００２６】
まず、第２のプログラム２１０はデータレコードテーブル２５１を初期化する（ステップ２１ａ）。初期化後のデータレコードテーブル２５１は、後に図７で説明するため、ここでは説明を省略する。次にデータ受信要求生成処理部２１２が参照先としてデータレコードテーブル１５１を、受信先としてデータレコードテーブル２５１を、それぞれ指定したデータ受信要求を生成し、受信部２７０を起動する（ステップ２１ｃ）。即ち、このときにＲＤＭＡ−Ｒｅａｄの起動が行なわれる。ステップ２１ｃにおいて、送信先および受信先には、データレコードテーブル１５１および２５１の全てのエントリ、または一部のエントリ群、のいずれを指定しても良い。望ましくは、前回の最後のデータ転送において、送信部１７０が最後のエントリを読み出した時刻から、今回のデータ転送において、送信部が最初のエントリを読み出す時刻までの間に、格納処理部１１３が格納するエントリ群を指定する。第１の計算機ノード１０の負荷により、上記エントリ群に含まれるエントリ数が変化する場合は、負荷に追随して読み出すエントリ数を増減する。例えば、前回読み出しに失敗したエントリ数が多い場合は、次に読み出すエントリ数を減少させる。
【００２７】
さらに、第２のプログラム２１０は、受信部２７０からの、ステップ２１ｃで発行したデータ転送の完了を待つ（ステップ２１ｄ、ステップ２１ｅ）。さらに、データレコード受信処理部２２１が、データレコードテーブル２５１を参照する（ステップ２１ｆ）。データレコード参照処理部２２１については、後に図１０を用いて説明する。さらに、第２のプログラム２１０は、タイマ２１１に対し、一定時間後にステップ２１ｃから処理を続行することを要求する（ステップ２１ｇ）。ステップ２１ｇにおいて、タイマに要求する時間間隔は任意で良い。リアルタイム性を向上する為に望ましくは、該時間間隔として、今回のデータ転送において、送信部１７０が最後のエントリを読み出した時刻から、次回のデータ転送において、送信部１７０が最初のエントリを読み出す時刻までの間に、格納処理部１１３が一つ以上のエントリを格納可能な時間間隔を指定する。特に、ステップ２１ｆにおいて、今回データ転送した全てのエントリが読み出し可能であった場合には、次のデータが既に格納されている可能性が有るので、時間間隔として０を設定することが望ましい。
【００２８】
データ転送効率を向上する為に望ましくは、該時間間隔として今回のデータ転送において、送信部１７０が最後のエントリを読み出した時刻から、次回のデータ転送において、送信部が最初のエントリを読み出す時刻までの間に、格納処理部１１３がデータレコードテーブル１５１の半分に相当するエントリを格納可能な時間間隔を指定する。次に、タイマ２１１が一定の時間後にデータ受信要求生成処理部２１２を起動する（ステップ２１ｂ）。このようにＲＤＭＡに関して第１の計算機ノードにおけるデータの格納と第２の計算機ノードにおけるＲＤＭＡ−Ｒｅａｄによるデータの読み出しがそれぞれ任意の時間間隔で非同期に行なわれるので、これらの間での確認手順が不要であり、プログラムにかかる負担は小さいものとなる。
【００２９】
以下では、ｌ、ｍ、ｎは１を超える自然数とし、ｌとｎ、およびｍとｎはそれぞれ互いに素であるとする。ｎ−１はカウンタ１１６の上限値の意味を持ち、ｍはデータレコードテーブル１５１のエントリ数を、ｌはデータレコードテーブル２５１のエントリ数をそれぞれ示す。
【００３０】
図４は、第１の実施の形態において、識別情報出力処理部１１２の処理を示すフローチャートである。
【００３１】
まず識別情報出力処理部１１２は、カウンタ１１６を０にクリアし（ステップ１１２ａ）、格納処理部１１３からの要求を待つ（ステップ１１２ｂ、ステップ１１２ｃ）。ここで、格納処理部１１３からの要求があると、識別情報出力処理部１１２はカウンタ１１６の値を格納処理部１１３に返す（ステップ１１２ｄ）。ここで、カウンタ１１６の値がｎ−１より小さいか判断し（ステップ１１２ｅ）、該判断が真の場合、カウンタ１１６をインクリメントし（ステップ１１２ｆ）、ステップ１１２ｂからの処理を繰り返す。該判断が偽の場合は、ステップ１１２ａからの処理を繰り返す。
【００３２】
図５は、第１の実施の形態において、格納処理部１１３を示すフローチャートである。
【００３３】
まず格納処理部１１３は、データレコードテーブル１５１を初期化する（ステップ１１３ａ）。初期化後のデータレコードテーブル１５１は後に図８に説明する。さらに格納処理部１１３は、ポインタ１１５を０にクリアし（ステップ１１３ｂ）、データレコード出力処理部１１１からの要求を待つ（ステップ１１３ｃ、ステップ１１３ｄ）。ここで、データレコード出力処理部１１１からの要求があると、格納処理部１１３は、データレコード出力処理部１１１が出力したデータレコード１５３を受け取り（ステップ１１３ｅ）、さらに図２で示したステップ１１ｂを行い、識別情報出力処理部１１２から識別情報１５２を得る（ステップ１１３ｆ）。さらに、格納処理部１１３は、データレコードテーブル１５１においてポインタ１１５が指すエントリに、ステップ１１３ｅで得たデータレコード１５３を格納し（ステップ１１３ｇ）、ステップ１１３ｆで得た識別情報１５２を、該エントリに格納する（ステップ１１３ｈ）。さらにポインタのインクリメントのための処理を行う（ステップ１１３ｋ、ステップ１１３ｌ）。
【００３４】
図６は、第１の実施の形態において、格納処理部１１３のステップ１１３ａの直後の、即ち初期化後のデータレコードテーブル１５１を示している。
【００３５】
データレコードテーブルはエントリ０からエントリｍ−１で成り立っており、それぞれポインタが０からｍ−１をとるときに指すエントリに対応している。格納処理部１１３は各エントリの識別情報１５２を、次のように格納する。格納処理部１１３はエントリ０の識別情報１５２．０に−１を、エントリ１の識別情報１５２．１からエントリｍ−２の識別情報１５２．ｍ−２までは、０、１、２、．．．の順に、０から１ずつ増加させた数を格納する。ここで、もし、識別情報１５２に格納すべき値がｎ−１を超えた場合には、該エントリの識別情報１５２には０を格納し、以降は同様に１ずつ増加させた数を格納する。さらに格納処理部１１３は、エントリｍ−１の識別情報１５２．ｍ−１にはｎ−１を格納する。
【００３６】
各エントリのデータレコード１５３は、適当な初期値で初期化されている。但し、以降に述べるデータレコード参照処理部２２１では、これらのデータレコード１５３を無視するため、必ずしも初期化する必要はない。
【００３７】
図７は、本発明の第１の実施の形態において、第２のプログラム２１０のステップ２１ａの直後の、即ち初期化後のデータレコードテーブル２５１を示している。図６との違いは、エントリ数がｍではなくｌ（エル）であることである。
【００３８】
図８は、本発明の第１の実施の形態において、格納処理部１１３と送信部１７０がそれぞれデータレコードテーブル１５１に対する書き込みと読み出しを行っているときの、ある一時点の状態を示している。
【００３９】
矢印１５６は格納処理部１１３がエントリを書き込む方向を、矢印１５７は送信部１７０がエントリを読み出す方向を示している。すなわち、格納処理部１１３と送信部１７０とは互いに逆の順序で読み書きしている。この理由は、格納処理部１１３の書き込みと、送信部１７０の読み出しとのすれ違いを、識別情報１５２の不連続により検出するためである。以下に詳しく説明する。
【００４０】
格納処理部１１３は、エントリ９のデータレコード１５３．９、エントリ９の識別情報１５２．９、エントリ１０のデータレコード１５３．１０、エントリ１０の識別情報１５２．１０、．．．の順にデータレコードテーブル１５１のエントリを書き込んでおり、送信部１７０の読み出しとすれ違う瞬間は、エントリ１２のデータレコード１５３．１２を書き換え途中にある。送信部１７０は、エントリ１２の識別情報１５２．１２、エントリ１２のデータレコード１５３．１２、エントリ１１の識別情報１５２．１１、エントリ１１のデータレコード１５２．１１、．．．の順にデータレコードテーブル１５１のエントリを読み出している。
【００４１】
ここで、識別情報１５２．１２とデータレコード１５３．１２、および識別情報１５２．１１に注目する。格納処理部１１３は、データレコード１５３．１２の書き込みを完了してから識別情報１５２．１２を書き込む。そのため、図８に示した時点では、識別情報１５２．１２に格納処理１１３が書き込む前の値（具体的には１２）が残っていて、この値は識別情報１５２．１１の値（具体的には６８）とは不連続になる。この時、送信部１７０は既に識別情報１５２．１２を読み込んでおり、その後識別情報１５２．１１を読み出す。そのため、上記のすれ違いが生じたときは、必ず識別番号１５２．１１と識別番号１５２．１２が不連続になる。不連続になるということはまだ、エントリ１２は書き換え中のデータレコードを含んでいることを意味する。
【００４２】
なお、もし仮に格納処理部１１３と送信部１７０とが同じ順序で読み書きした場合はこの限りではない。これを図９および図１０を用いて説明する。図９では、読み出し動作が書き込み動作に追いついて来た場合を示している。格納処理部１１３が識別番号１５２．１１を書き込んで（６１５．１）から、送信部１７０がこれを読み出す（６１５．２）。その後、送信部１７０がデータレコード１５３．１２を読み出している（６１５．３）が、このデータレコード１５３．１２は格納処理部１１３が書き込みを完了する前であるから、不正な値のまま読み出される。その後の処理は図１０に示す。
【００４３】
図１０では、まず格納処理部１１３がデータレコード１５３．１２を書き込む（６１５．４）。その後、格納処理部１１３が識別番号１５２．１２を書き込んで（６１５．５）から送信部１７０がこれを読み出し（６１５．６）ているが、この識別番号１５２．１２は正しい値（具体的には６９）が読み出される。すなわち、送信部１７０が読み出した識別番号１５２．１１と識別番号１５２．１２は、連続になる。このように、格納処理部１１３の書き込みと、送信部１７０の読み出しとの順序が同じであると、図９で示したように、６９番目のデータレコードは正しくないまま読み出しているにも係わらず識別番号は連続したものとして読み出されてしまう。従って、識別番号１５２の連続性だけでデータレコード１５３が正しく読めたことを保証できない。
【００４４】
図１１は本発明の第１の実施の形態において、図８のデータレコードテーブル１５１が、送信部１７０と受信部２７０とによって、第２の計算機ノード２０に転送された、データレコードテーブル２５１を示している。
【００４５】
図８で述べたように、エントリ９の識別情報２５２．９から、エントリ１１の識別情報２５２．１１は６６から６８と連続しており、これらに対するデータレコード２５３．９からデータレコード２５３．１１が正しく書き込まれたことを示している。さらに、データレコード２５３．１２の識別情報は１２であり連続でなく、データレコード２５３．１２が書き換え途中に読み出されたことを示している。
【００４６】
図１２は、第１の実施の形態において、データレコード参照処理部２２１の内容を示すフローチャートである。ここでは、識別番号がエントリ上で連続性があるか、どのエントリのデータレコードが不正であるかを知る。
【００４７】
まず、データレコード参照処理部２２１はカウンタ２２６を０にクリアし（ステップ２２１ａ）、ポインタ２２５を０にクリアする（ステップ２２１ｂ）。次に、ポインタ２２５が指すエントリの一つ前のエントリの識別番号２５２が正しいかを確認するため、ポインタ２２５の値から１を減じた数をラップさせ、その値をインデクスとして持つエントリの識別情報２２５を読み取り（ステップ２２１ｃ）、カウンタ２２６から１を減じた数をラップさせた値を求める（ステップ２２１ｄ）。そして、ステップ２２１ｃの識別情報２２５と、ステップ２２１ｄの値とが等しいか否かを判断する（ステップ２２１ｅ）。該判断が真の場合はステップ２２１ｆへ進み、偽の場合は、ノードＢへ進む。詳しくは後述するが、ノードＢからの処理は、ポインタ２２５が指すエントリのデータレコードが不正のときの処理である。ステップ２２１ｆでは、データレコード参照処理部２２１は、ポインタ２２５が指すエントリの識別情報２５２が、カウンタ２２６の値と一致しているか否かを判断する。該判断が真の場合はノードＡへ進み、該判断が偽の場合はノードＢへ進む。ノードＡに進んだ場合は、データレコード参照処理部２２１は、ポインタ２２５が指すエントリのデータレコード２５３は正しいと判断し、該データレコード２５３を参照する（ステップ２２１ｋ）。さらにデータレコード参照処理部２２１は、カウンタ２２６をインクリメントし（ステップ２２１ｍ）、ポインタ２２５をインクリメントして（ステップ２２１ｎ）、ポインタ２２５、カウンタ２２６のラップ処理を行って（ステップ２２１ｖ）、ステップ２２１ｃへ進む。ノードＢへ進んだ場合は、データレコード参照処理部２２１は、ポインタ２２５が指すエントリのデータレコード２５３は不正と判断し、該データレコード２５３は参照しない（ステップ２２１ｌ）。さらに、データレコード参照処理部２２１は、ポインタ２２５、カウンタ２２６の値を変更せずに、ステップ２２１ｃから処理を繰り返す。また、不正と判断されたデータレコード２５３に関する情報が出力され、データレコード２５３を参照する別の処理で利用される。
【００４８】
ここで、データレコードが不正と判断された場合はポインタはインクリメントされない。従って、次のデータの転送はこのポインタで表されるエントリを含むいくつかのエントリのデータレコードが適当な時間間隔後に転送されることになる。
【００４９】
本発明の第１の実施形態ではＣＰＵの負荷の削減効果が大きい。
【００５０】
次に、図１３から図１８を用いて、第２の本発明の実施の形態と第１の本発明の実施の形態との違いを説明する。
【００５１】
図１３は、第２の本発明の実施の形態の全体構成図である。図１との違いは、第1のプログラム１１０が誤り検出符号生成処理部１１４を含むことと、第２のプログラム２１０が誤り検出符号検査処理部２２２を含むこと、データレコードテーブル１５１に誤り検査符号１５４を含むこと、データレコードテーブル２５１に誤り検査符号２５４を含むことである。
【００５２】
誤り検出符号生成処理部１１４は、データレコードエントリの識別情報１５２と、データレコード１５３の組から、誤り検出符号１５４を生成する。誤り検出符号検査処理部２２２は、誤り検出符号２５４が、データレコードエントリの識別情報２５２と、データレコード２５３との組から生成された符号（誤りなし）か否（誤りあり）かを検査する。ここで、誤り検出符号を採用した理由を簡単に説明しておく。第１の実施例ではデータレコードテーブル１５１にジャーナルデータなどのデータレコードを書き込む方向と反対の方向に転送のための読み出しを進めることにより不正なデータを検出する方法を採ったのに対して、同一方向に読み出す場合を想定している。そして、データレコードの正しさを誤り検出符号を利用して保証しようとしたものである。
【００５３】
図１４は、第２の本発明の実施の形態において、第１のプログラム１１０の処理を示すフローチャートである。
【００５４】
図２との違いは、ステップ１１ｄおよびステップ１１ｅ、ステップ１１ｆを含むこと、ステップｇを含まないことである。ステップ１１ｄでは、格納処理部１１３がステップ１１ａのデータレコード１５３とステップ１１ｃの識別情報１５２とを組にして、誤り検出符号生成処理部１１４に渡す。ステップ１１ｅでは、誤り検出符号生成処理部１１４が、ステップ１１ｄで渡された情報から誤り検出符号１５４を生成し、格納処理部１１３に返す。ステップ１１ｆでは、格納処理部１１３が、ステップ１１ａのデータレコード１５３とステップ１１ｃの識別情報１５２とステップ１１ｅの誤り検出符号１５４とを組にして、ポインタ１１５が指すエントリに格納する。
【００５５】
図１５は、第２の本発明の実施の形態において、格納処理部１１３の内容を示すフローチャートである。
【００５６】
図５との違いは、ステップ１１３ｉとステップ１１３ｊを含むことである。ステップ１１３ｉにおいて、格納処理部１１３は、図１４で示したステップ１１ｄを行い、誤り検出符号生成処理部１１４から誤り検出符号１５４を得る。ステップ１１３ｊにおいて、格納処理部１１３は、ステップ１１３ｉで取得した誤り検出符号１５４をポインタ１１５が指すエントリに格納する。
【００５７】
図１６は、本発明の第２の実施の形態において、初期化後のデータレコードテーブル１５１を示している。
【００５８】
図６との違いは、誤り検出符号１５４を含むこと、データレコード１５３の初期化を必ず行う必要があることである。何故ならば古いデータではあるがデータレコードと誤り検出符号とが整合したデータが残っているとそれが新しく格納された正しいデータレコードなのか、古い（正しくない）データなのかの区別が付かなくなるからである。格納処理部１１３は、ステップ１１３ａにおいて、これらの誤り検出符号１５４を、識別情報１５２、データレコード１５３から生成した誤り訂正符号以外の値、即ち、不正な符号を格納する。
【００５９】
図１７は、本発明の第２の本発明の実施の形態において、データレコードテーブル１５１の、ある一時点の状態を示している。
【００６０】
図８との違いは、誤り検出符号１５４を含むことである。図１７で、格納処理部１１３がエントリ１２のデータレコード１５３に書き込んでいる途中で、送信部１７０が当該エントリを読み出しているとする。このとき、エントリ１２の誤り検出符号１５４．１２は、当該エントリから生成された誤り検出符号でないため、不正な符号となる。図１７のその他の誤り検出符号１５４．９から誤り検出符号１５４．１１はそれぞれのエントリから生成された誤り検出符号であるため、正しい符号である。
【００６１】
図１８は、本発明の第２の実施の形態において、データレコード参照処理部２２１の内容を示すフローチャートである。ここでは誤り検出符号によって読み出されたデータレコードが正しいものかどうかを判定している。
【００６２】
図１２との違いは、ステップ２２１ｒおよび２２１ｓを含むこと、ステップ２２１ｃからステップ２２１ｅを含まないことである。ステップ２２１ｒにおいて、データレコード参照処理部２２１はポインタ２２５が指すエントリを誤り検出符号検査処理部２２２に渡す。
【００６３】
ステップ２２１ｓにおいて、データレコード参照処理部２２１は、誤り検出符号検査処理部２２２の結果から、当該レコードに誤りが含まれたか否かを判断する。該判断が真の場合はノードＢへ進み、該判断が偽の場合はノードＡに進む。
【００６４】
本発明の第２の実施の形態においては、読み取り順序が同一方向のものでもデータレコードの正しさが保証できる。
【００６５】
次に、図１９から図２２を用いて、第３の本発明の実施の形態と第１の本発明の実施の形態との違いを説明する。
【００６６】
図１９は、第３の本発明の実施の形態の全体構成図である。図１との違いは、第1のプログラム１１０がデータ送信要求生成処理部１２２を含むこと、第２のプログラム２１０がタイマ２１１とデータ受信要求生成処理部２１２を含まないこと、である。データ送信要求生成処理部１２２は送信部１７０に対し、データレコードテーブル１５１の送信要求を生成する。即ち、ＲＤＭＡ−Ｗｒｉｔｅを使って送信側の主導によりデータの転送を行なう場合を示している。このとき、第１の計算機ノードには図１の構成に比べて負荷はかかるが同期を取らない転送方式としているため従来例よりも負荷は小さいものとなっている。データ送信要求生成処理部１２２は送信データがある程度たまったときに送信部１７０にデータの読み出しを行なわせるものである。データの転送は第２のプログラムがポーリングして転送データがあることを認知して実施される。
【００６７】
図２０は、本発明の第３の実施の形態における、第１のプログラム１１０の処理を示すフローチャートである。
【００６８】
図２との違いは、ステップ１１iからステップ１１ｌを含むことである。ステップ１１ｉにおいて、第１のプログラム１１０はデータレコードテーブル１５１を送信するか否かの判断をする。即ち、本発明の第３の実施の形態おいて、データ送信の間隔は任意である。リアルタイム性を向上する為に望ましくは、該時間間隔を短くする、即ち、なるべく多くの場合についてステップ１１ｉにおける判断を真とする。データ送信の時間間隔の調整はデータ送信要求生成処理部１２２がステップ１１ｉで行なう。
【００６９】
データ転送効率を向上する為に望ましくは、最後にデータ送信を行った時点から現在までに、格納処理部１１３がデータレコードテーブル１５１の半分に相当するエントリを格納したときにステップ１１ｉにおける判断を真とする。
【００７０】
該判断が真の場合、ステップ１１ｊに進み、偽の場合は１１ａに進む。ステップ１１ｊにおいては、データ送信要求生成処理部１２２が、データ送信要求を作成し、送信部１７０を起動する。さらに、ステップ１１ｋとステップ１１ｌにおいて、第１のプログラム１１０は、ステップ１１ｊで起動した送信が完了したことを待つ。その後、第１のプログラム１１０はステップ１１ａから処理を続行する。本発明の第３の実施の形態では、第２のプログラム２１０は、図３に示すステップ２１ｆを実行するのみである。
【００７１】
本発明の第３の実施の形態では、格納処理部１１３は、図５に示す処理と同一だが、ステップ１１３ｇとステップ１１３ｈの順序の入れ替えが可能であることが異なる。本発明の第３の実施の形態では、データレコードテーブル１５１の読み書き順序について、図８に示す順序でなくても構わない。
【００７２】
図２１は、本発明の第３の実施の形態において、データレコードテーブル１５１が、送信部１７０と受信部２７０とによって、第２の計算機ノード２０に転送された、データレコードテーブル２５１を示している。
【００７３】
矢印２５６は受信部２７０がエントリを書き込む方向を、矢印２５７は第２のプログラム２１０がエントリを読み出す方向を示している。データレコード２５３が正しく読めたか否かの判定は、本発明の第１の実施の形態と同様である。
【００７４】
図２２は、第３の実施の形態において、データレコード参照処理部２２１の内容を示すフローチャートである。
【００７５】
図２２は図１２と異なり、ステップ２２１ｖからステップ２２１ｘを含み、ステップ２２１ｆをステップ２２１ｃの前に実行する。即ち、本発明の第３の実施の形態によれば、データレコード参照処理部２２１はインデクスの大きいほうの識別情報２５２から参照する。ステップ２２１ｖでは、データレコード参照処理部２２１はポインタ２２５、カウンタ２２６それぞれに、同じ任意の自然数を加える。ここで望ましくは、該自然数は以降のステップ２２１ｆの判断が真となる、最大の数とする。ただし、この最適値を予測することは困難なので、例えば前回のステップ２２１ｖにおいて加算した自然数を記憶しておき、今回のステップ２２１ｖでは、該自然数から、前回のステップ２２１ｖ処理から不正レコードを読み出した数を差し引いた数、またはそれに近い数を指定する。
【００７６】
ステップ２２１ｆの判断が真の場合、データレコード参照処理部２２１はステップ２２１ｃへ進み、偽の場合はノードＢへ進む。ステップ２２１Ｗにおいて、データレコード参照処理部２２１はポインタ２２５から１を減じた値が指すエントリ（ポインタ２２５が０の場合は、エントリｌ−１）が既に正しく読み込み済みか判断する。
【００７７】
該判断が真の場合、データレコード参照処理部２２１はステップ２２１ｖに進み、該判断が偽の場合、ステップ２２１ｘに進む。ステップ２２１ｘにおいて、データレコード参照処理部２２１は、カウンタ２２６、ポインタ２２５をそれぞれデクリメントする。本発明の第３の実施の形態ではＲＤＭＡ−Ｒｅａｄをサポートしていないものにも適用できる。
【００７８】
次に、図２３から図２４を用いて、第４の本発明の実施の形態と第２の本発明の実施の形態との違いを説明する。
【００７９】
図２３は、第４の本発明の実施の形態の全体構成図である。図２３は、図１３と異なり、第1のプログラム１１０がデータ送信要求生成処理部１２２を含み、第２のプログラム２１０がタイマ２１１とデータ受信要求生成処理部２１２を含まない。データ送信要求生成処理部１２２は本発明の第３の実施の形態と変わらない。
【００８０】
図２４は、第４の本発明の実施の形態における、第1のプログラム１１０の処理を示すフローチャートである。
【００８１】
図２４は、図１４と異なり、ステップ１１iからステップ１１ｌを含む。これらのステップは、本発明の第３の実施の形態と同様である。本発明の第４の実施の形態では読み取り順序が書き込み順序と同一で、ＲＤＭＡ−Ｒｅａｄをサポートしていないものにも適用出来る。
【００８２】
次に、図２５から図２７を用いて、第５の本発明の実施の形態と第１の本発明の実施の形態との違いを説明する。図２５は、第５の本発明の実施の形態の全体構成図である。図２５は図１と異なり、第１のプログラム１１０に通知処理部１１７を含み、第２のプログラム２１０にタイマ２１１を含まない。通知処理部１１７はデータレコードがある程度たまったとき送信部１７０に読み出しをなさせるとともに第２のプログラムに読み取りのきっかけを与えるものでＲＤＭＡ−Ｗｒｉｔｅの割り込みをするものである。
【００８３】
図２６は、第５の本発明の実施の形態における、第1のプログラム１１０の処理を示すフローチャートである。
【００８４】
図２６は、図２と異なり、ステップ１１ｍを有する。ステップ１１ｍにおいて、通知処理部１１７は、送信部１７０に、第２のプログラム２１０が受信するイベント通知を依頼する。本実施例では第２のプログラムにタイマが不要で送信側のトリガでデータの転送が制御される。つまり、データの転送の時間間隔は通知処理部１１７の制御による。
【００８５】
図２７は、第５の実施の形態において、第２のプログラム２１０の処理を示すフローチャートである。
【００８６】
図２７は、図３と異なり、ステップ２１ｈを含み、ステップ２１ｂおよびステップ２１ｇを含まない。ステップ２１ｂにおいて、第２のプログラム２１０は通知処理部１１７からのイベント通知を待つ。本発明の第５の実施の形態ではＣＰＵの負荷の削減効果が大きく、送信側の通知をトリガとしてデータの転送が行なわれるので受信側の負担が小さい。
【００８７】
次に、図２８を用いて、第６の本発明の実施の形態と第２の本発明の実施の形態との違いを説明する。
【００８８】
図２８は、第６の本発明の実施の形態の全体構成図である。
【００８９】
図２８は図１３と異なり、第１のプログラム１１０に通知処理部１１７を含み、第２のプログラム２１０にタイマ２１１を含まない。第６の本発明の実施の形態と第２の本発明の実施の形態とのその他の違いは、第５の本発明の実施の形態と第１の本発明の実施の形態との違いと同一なので説明を省略する。これはデータレコードテーブル１５１へのジャーナルデータなどのデータレコードを書き込む方向とその読み出し方向とが同じである場合を想定し、且つ、送信側でデータの転送時間間隔を制御する場合である。本発明の第６の実施の形態では読み取り順序が書き込み順序と同一のものでもサポートでき、ＣＰＵ負荷の削減の効果が大きい。また、送信側の通知をトリガとしているので受信側の負担が小さい。
【００９０】
次に、図２９を用いて、第７の本発明の実施の形態と第３の本発明の実施の形態との違いを説明する。
【００９１】
図２９は、第７の本発明の実施の形態の全体構成図である。図２９は図１９と異なり、第１のプログラム１１０にデータ送信要求生成・通知処理部１２３を含み、第1のプログラム１１０にデータ送信要求生成処理部１２２を含まない。
【００９２】
データ送信要求生成・通知処理部１２３は、データ送信要求生成処理部１２２と異なり、送信部１１７を起動するとき、データ送信要求と通知要求を組みにして送信部に渡す。ただし、本発明を実施するためには、データ送信要求と通知要求は必ずしも組みにする必要はない。本発明の第７の実施の形態ではＣＰＵの負荷の削減効果が大きく、ＲＤＭＡ−Ｒｅａｄをサポートしていないものにも適用が可能である。また、送信側の通知によるため受信側の負担は小さい。
【００９３】
次に、図３０を用いて、第８の本発明の実施の形態と第４の本発明の実施の形態との違いを説明する。
【００９４】
図３０は、第８の本発明の実施の形態の全体構成図である。図３０は図２３と異なり、第１のプログラム１１０にデータ送信要求生成・通知処理部１２３を含み、第1のプログラム１１０にデータ送信要求生成処理部１２２を含まない。本発明の第８の実施の形態では読み取りが書き込みと同一方向でも適用でき、ＲＤＭＡ−Ｒｅａｄをサポートしていないものにも適用出来る。また、送信側の通知によるため受信側の負荷は小さい。
【００９５】
次に、図３１を用いて、第９の本発明の実施の形態を説明する。
【００９６】
図３１は、第９の本発明の実施の形態の全体構成図である。第1の計算機ノード１０は基幹系システム５１０を含み、第2の計算機ノード２０は情報系システム２０を含む。第1のプログラム１１０は、第９の本発明の実施の形態ではオンライン・トランザクション・プロセッシング（ＯＬＴＰ）である。データレコード１５３は第９の本発明の実施の形態では、ＯＬＴＰ１１０が処理過程を保存するために出力するジャーナルである。第２のプログラム２１０は、第９の本発明の実施の形態ではデータベース管理システム（ＤＢＭＳ）である。
【００９７】
第９の本発明の実施の形態では、第1の本発明の実施の形態から、第８の本発明の実施の形態に示した処理内容の具体的応用を示すもので、これらのいずれか一つと同様の処理を行って、ＯＬＴＰ１１０が出力するジャーナル１５３を情報系システム５２０に転送する。
【００９８】
次に、図３２を用いて、第１０の本発明の実施の形態を説明する。
【００９９】
図３２は、第１０の本発明の実施の形態の全体構成図である。第１０の本発明の実施の形態では、第１の計算機ノード１０と第２の計算機ノード２０と外部記憶装置４０が、ネットワーク３０を介して互いに接続されている。外部記憶装置４０は、送信手段１７０と受信手段４７０、データレコードテーブル１５１、受信制御部４１０、および送信制御部４１１を含む。受信制御部４１０は受信手段４７０を制御する。送信制御部４１１は、送信手段１７０を制御する。第１の計算機ノードは、第１のプログラム１１０と主記憶１５０、送信手段１７１を含む。さらに、主記憶１５０は、バッファ１６１を含む。このバッファ１６１は、第１のプログラム１１０がデータレコードテーブル１５１に格納すべきデータを一時的に格納し、送信手段１７１が送信時に参照できるようにする。
【０１００】
第２の計算機ノード２０は、第２のプログラム２１０と主記憶２５０、受信手段２７０とを含む。主記憶２５０はデータレコードテーブル２５１を含む。
【０１０１】
第１０の本発明の実施の形態では、第１のプログラム１１０はデータレコード１５３と識別情報１５２の組を、データレコードテーブル１５１に格納することを、バッファ１６１、送信手段１７１、受信手段４７０を介して、受信制御部４１０と通信しながら行うこと以外、既に述べた第１から第８の本発明の実施の形態と変りない。この格納方法は、本発明と直接関係ないので説明を省略する。
【０１０２】
第１０の本発明の実施の形態ではデータレコードテーブル１５１の最終的な書き込みは、受信手段４７０が行う。受信手段４７０が、データレコードテーブル１５１に書き込む方向は、第１から第８の本発明の実施の形態における格納処理１１３が格納する方向と同じである。
【０１０３】
送信制御部４１１は、第３、４の本発明の実施の形態における、データ送信要求生成処理部１２２、または第５、６の本発明の実施の形態における、通知処理部１１７、または第７、８の本発明の実施の形態における、データ送信要求生成・通知処理部１２３と同様の処理を行う。なお、送信制御部４１１と受信制御部４１０とは互いに非同期に独立に動作する。
【０１０４】
第１０の本発明の実施の形態の構成は、以上に述べた相違を除き、第１から第８の本発明の実施の形態の構成と同様である。
【０１０５】
第１０の本発明の実施の形態においては、以上の構成で、第１から第８の本発明の実施の形態の処理内容の何れか一つと同様の処理を行って、第１のプログラムが出力するデータレコード１５３を第２のプログラムに転送する。
【０１０６】
【発明の効果】
本発明により、データを送信するプログラムと受信するプログラムとの同期オーバヘッドが低減する。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の全体構成図である。
【図２】第１のプログラム１１０の処理を示すフローチャートである。
【図３】第２のプログラム２１０の処理を示すフローチャートである。
【図４】識別情報出力処理１１２の処理を示すフローチャートである。
【図５】格納処理１１３を示すフローチャートである。
【図６】データレコードテーブル１５１を示す図である。
【図７】データレコードテーブル２５１を示す図である。
【図８】データレコードテーブル１５１を示す図である。
【図９】同方向に読み出しと書き込みを行なったときのデータレコードテーブルの状態を説明する図（１）である。
【図１０】同方向に読み出しと書き込みを行なったときのデータレコードテーブルの状態を説明する図（２）である。
【図１１】データレコードテーブル２５１を示す図である。
【図１２】データレコード参照処理２２１の内容を示すフローチャートである。
【図１３】第２の本発明の実施の形態の全体構成図である。
【図１４】第１のプログラム１１０の処理を示すフローチャートである。
【図１５】格納処理１１３の内容を示すフローチャートである。
【図１６】データレコードテーブル１５１を示す図である。
【図１７】データレコードテーブル１５１を示す図である。
【図１８】データレコード参照処理２２１の内容を示すフローチャートである。
【図１９】第３の本発明の実施の形態の全体構成図である。
【図２０】第１のプログラム１１０の処理を示すフローチャートである。
【図２１】データレコードテーブル２５１を示す図である。
【図２２】データレコード参照処理２２１の内容を示すフローチャートである。
【図２３】第４の本発明の実施の形態の全体構成図である。
【図２４】第１のプログラム１１０の処理を示すフローチャートである。
【図２５】第５の本発明の実施の形態の全体構成図である。
【図２６】第１のプログラム１１０の処理を示すフローチャートである。
【図２７】第２のプログラム２１０の処理を示すフローチャートである。
【図２８】第６の本発明の実施の形態の全体構成図である。
【図２９】第７の本発明の実施の形態の全体構成図である。
【図３０】第８の本発明の実施の形態の全体構成図である。
【図３１】第９の本発明の実施の形態の全体構成図である。
【図３２】第１０の本発明の実施の形態の全体構成図である。
【符号の説明】
１０：第１の計算機ノード
２０：第２の計算機ノード
１１０：第１のプログラム
１１１：データレコード出力処理部
１１２：識別情報出力処理部
１１３：格納処理部
１１５：ポインタ
１１６：カウンタ
１５０：主記憶
１５１：データレコードテーブル
１５２：識別情報
１５３：データレコード
１７０：送信部
２１０：第２のプログラム
２１１：タイマ
２１２：データ受信要求生成処理部
２２１：データレコード参照処理部
２２５：ポインタ
２２６：カウンタ
２５０：主記憶
２５１：データレコードテーブル
２５２：識別情報
２５３：データレコード
２７０：受信部
３０：ネットワーク
【図１】
0004192416.tif 000002
【図２】
0004192416.tif 000003
【図３】
0004192416.tif 000004
【図４】
0004192416.tif 000005
【図５】
0004192416.tif 000006
【図６】
0004192416.tif 000007
【図７】
0004192416.tif 000008
【図８】
0004192416.tif 000009
【図９】
0004192416.tif 000010
【図１０】
0004192416.tif 000011
【図１１】
0004192416.tif 000012
【図１２】
0004192416.tif 000013
【図１３】
0004192416.tif 000014
【図１４】
0004192416.tif 000015
【図１５】
0004192416.tif 000016
【図１６】
0004192416.tif 000017
【図１７】
0004192416.tif 000018
【図１８】
0004192416.tif 000019
【図１９】
0004192416.tif 000020
【図２０】
0004192416.tif 000021
【図２１】
0004192416.tif 000022
【図２２】
0004192416.tif 000023
【図２３】
0004192416.tif 000024
【図２４】
0004192416.tif 000025
【図２５】
0004192416.tif 000026
【図２６】
0004192416.tif 000027
【図２７】
0004192416.tif 000028
【図２８】
0004192416.tif 000029
【図２９】
0004192416.tif 000030
【図３０】
0004192416.tif 000031
【図３１】
0004192416.tif 000032
【図３２】
0004192416.tif 000033