前述した処理方式では、格納処理と転送処理が並列に行われるので、記憶装置の同一の領域に対して格納処理と転送処理が同時にアクセス(データの格納/読み出し)する競合が発生する可能性がある。このアクセスの競合によりデータの矛盾等が生ずる可能性があるが、この点に関しては、例えば特許文献1に記載の技術のように、一方が記憶装置にアクセスしている間ロックをかける等の排他制御を行うことで回避できる。しかし、アクセスの競合が発生した場合、一方のアクセスが完了する迄他方のアクセスが待たされ、処理効率が低下するので、特に、高いデータ転送レートでのデータ転送が要求されるケースへの適用を考慮すると、改善の余地がある。
これに対し、特許文献2に記載の技術では、書込バッファと別に設けた管理情報記憶部を介してバッファ格納部及びバッファ読取部が格納情報・読取情報を授受しているので、バッファ格納部及びバッファ読取部を、書込バッファ上で相手側とアクセスが競合しないように構成することは可能である。しかし、特許文献2に記載の技術において、バッファ格納部及びバッファ読取部は、書込バッファをアクセスする毎に管理情報記憶部にアクセスして格納情報又は読取情報の更新を行っているので、管理情報記憶部に対するアクセスの競合が発生する可能性が高く、処理効率(データ転送レート)は必ずしも向上しない。
また、特許文献3に記載の技術では、書き込み中又は書き込み済みのファイルNoが通信回線を介して受信側へ通知されると共に、読み込み中又は読み込み済みのファイルNoが通信回線を介して送信側へ通知されるので、受信側又は送信側がアクセス中のファイルNoを相手側が認識することができ、読み込み対象のファイルが書き込み中の場合は書き込みが終了する迄待機し、書き込み対象のファイルが読み込み中の場合は読み込みが終了する迄待機する処理を行うことで、受信側と送信側が同一のファイルをアクセスしようとして競合が発生することを回避できる。
しかし、特許文献3に記載の技術では、送信側(及び受信側)が一定時間毎にファイルNoを相手側へ通知する処理を行うことで送信側と受信側の間のファイルNoの伝達を実現しており、ファイルNoの伝達時には送信側と受信側が同期して動作する必要がある。このため、ファイルNoの伝達時に、例えばファイルNoを通知する側は、相手にファイルNoの通知を通知した後、通知したファイルNoが相手に正しく受け付けられたことが相手からの応答によって確認される迄待機し、必要に応じてファイルNoを再通知する等の処理を行う必要があり、ファイルNoの通知を受ける側は、相手からファイルNoが通知される毎に、実行中の処理を中断してこれを受信する処理を行い、処理終了後に中断していた処理を再開する処理を行う必要があるので、処理効率が低く高いデータ転送レートでデータを転送できないという問題がある。また、受信側が複数存在している場合、送信側はファイルNoを通知する処理を個々の受信側について各々行う必要があるので、送信側の負荷が増大するという問題も生ずる。
本発明は上記事実を考慮して成されたもので、アクセスの競合を抑制し、処理効率(データ転送レート)の向上を実現できるデータ転送装置及びデータ転送プログラムを得ることが目的である。
上記目的を達成するために請求項1記載の発明に係るデータ転送装置は、転送対象のデータを格納するための第1記憶手段と、該第1記憶手段のうち未転送のデータが格納されている領域の末尾位置又は新たなデータを格納する領域の先頭位置を表す第1位置情報を保持する第2記憶手段と、前記第1記憶手段のうち転送済みのデータが格納されている領域の末尾位置又は未転送のデータが格納されている領域の先頭位置を表す第2位置情報及び前記第1位置情報を保持する第3記憶手段と、前記転送対象のデータを前記第1記憶手段に格納させ、前記第2記憶手段に保持されている前記第1位置情報を前記第1記憶手段への前記転送対象のデータの格納に応じて更新するデータ格納手段と、前記第3記憶手段から前記第2位置情報及び前記第1位置情報を読み出すことで、前記第1記憶手段のうち未転送のデータが格納されている領域を認識し、前記第1記憶手段から未転送のデータを読み出して所定の転送先へ転送し、前記第3記憶手段に保持されている前記第2位置情報を前記所定の転送先へのデータの転送に応じて更新すると共に、前記第3記憶手段に保持されている前記第2位置情報及び前記第1位置情報が未転送のデータ無しを表す状態となった場合に、前記第3記憶手段に保持されている前記第1位置情報を前記第2記憶手段に保持されている前記第1位置情報と一致させる同期処理を行うデータ転送手段と、を含んで構成されている。
請求項1記載の発明では、転送対象のデータを格納するための第1記憶手段と別に、第1記憶手段のうち未転送のデータが格納されている領域の末尾位置又は新たなデータを格納する領域の先頭位置を表す第1位置情報を保持する第2記憶手段と、第1記憶手段のうち転送済みのデータが格納されている領域の末尾位置又は未転送のデータが格納されている領域の先頭位置を表す第2位置情報及び第1位置情報を保持する第3記憶手段が設けられている。なお、請求項1記載の発明において、第1〜第3記憶手段は互いに異なる記憶媒体で構成されていてもよいし、第1〜第3記憶手段のうちの少なくとも2つが、同一の記憶媒体の記憶領域のうちアクセス単位の異なる記憶領域(記憶領域をアクセス単位毎に複数の部分記憶領域に区切ったときの異なる部分記憶領域)で構成されていてもよい。
また、請求項1記載の発明において、データ格納手段は、転送対象のデータを第1記憶手段に格納させ、第2記憶手段に保持されている第1位置情報を第1記憶手段への転送対象のデータの格納に応じて更新する。そしてデータ転送手段は、第3記憶手段から第2位置情報及び第1位置情報を読み出すことで、第1記憶手段のうち未転送のデータが格納されている領域を認識し、第1記憶手段から未転送のデータを読み出して所定の転送先へ転送し、第3記憶手段に保持されている第2位置情報を所定の転送先へのデータの転送に応じて更新すると共に、第3記憶手段に保持されている第2位置情報及び第1位置情報が未転送のデータ無しを表す状態となった場合に、第3記憶手段に保持されている第1位置情報を第2記憶手段に保持されている第1位置情報と一致させる同期処理を行う。
このように、請求項1記載の発明では、データ格納手段及びデータ転送手段によって第1記憶手段が各々アクセスされるが、データ転送手段は、第3記憶手段から第2位置情報及び第1位置情報を読み出すことで、第1記憶手段のうち未転送のデータが格納されている領域(すなわちデータ格納手段によって転送対象のデータが既に格納された領域)を認識した後に、第1記憶手段から未転送のデータを読み出して所定の転送先へ転送するので、第1記憶手段の同一の記憶領域がデータ格納手段及びデータ転送手段によって同時にアクセスされることはなく、第1記憶手段へのアクセスの競合は生じない。また、請求項1記載の発明では、第3記憶手段のアクセスがデータ転送手段のみによって行われ、データ格納手段は第3記憶手段にアクセスしないので、第3記憶手段へのアクセスの競合も生じない。
更に、請求項1記載の発明では、データ格納手段及びデータ転送手段によって第2記憶手段が各々アクセスされるが、データ転送手段によって第2記憶手段がアクセスされるのは、データ転送手段が、第3記憶手段に保持されている第1位置情報を第2記憶手段に保持されている第1位置情報と一致させる同期処理を行う場合、すなわち、第3記憶手段に保持されている第2位置情報及び第1位置情報が未転送のデータ無しを表す状態となった場合のみである。これにより、データ転送手段が第1記憶手段からの未転送のデータを読み出す都度、第2記憶手段にアクセスする(第2記憶手段に保持されている第1位置情報を読み出す)場合と比較して、第3記憶手段に保持されている第2位置情報及び第1位置情報が未転送のデータ無しを表す状態となる迄の間はデータ転送手段によって第2記憶手段がアクセスされないので、データ転送手段によって第2記憶手段がアクセスされる頻度が大幅に低減され、第2記憶手段へのアクセスの競合が発生する頻度を大幅に低減することができる。従って、請求項1記載の発明によれば、各記憶手段へのアクセスの競合を抑制することができ、処理効率(データ転送レート)を向上させることができる。
なお、請求項1記載の発明において、データ格納手段は、例えば請求項2に記載したように、転送対象のデータを第1記憶手段の記憶領域の先頭(論理的な先頭でも物理的な先頭でもよい)から順次格納すると共に、転送対象のデータを記憶領域の末尾(論理的な末尾でも物理的な末尾でもよい)迄格納した場合は、次の転送対象のデータを前記記憶領域の先頭に格納させることで、記憶領域を循環使用するように構成することができる。
また、請求項1記載の発明において、第1記憶手段は複数の記憶媒体で構成されていてもよく、この場合、例えば請求項3に記載したように、第1位置情報及び第2位置情報を、対応する末尾位置又は先頭位置が複数の記憶媒体のうちの何れの記憶媒体の記憶領域内に位置しているかを表す媒体識別情報、及び、対応する末尾位置又は先頭位置が媒体識別情報が表す記憶媒体の記憶領域内の何れの位置かを表す媒体内位置情報で構成することができる。
また、請求項1記載の発明において、例えば請求項4に記載したように、第3記憶手段及びデータ転送手段を複数設け、個々のデータ転送手段を、第1記憶手段から読み出した未転送のデータを互いに異なる特定の転送先へ転送すると共に、複数の第3記憶手段のうち互いに異なる特定の第3記憶手段から第2位置情報及び第1位置情報を読み出すことで、第1記憶手段のうち特定の転送先へ未転送のデータが格納されている領域を認識するように構成してもよい。
本発明では、データ転送手段によって同期処理が行われることで、第3記憶手段に保持されている第1位置情報が第2記憶手段に保持されている第1位置情報と一致され、データ転送手段は、第3記憶手段から第2位置情報及び第1位置情報を読み出すことで、第1記憶手段のうち未転送のデータが格納されている領域を認識している。このため、上記のようにデータ転送手段が複数設けられている場合(データの転送先が複数存在している場合)にも、データ格納手段は第2記憶手段に保持されている第1位置情報を更新する処理を行うのみで、更新後の第1位置情報が個々のデータ転送手段に伝達されることになる。従って、データ転送手段が複数設けられている場合に、データ格納手段に加わる負荷を軽減することができる。なお、同一のデータを複数の転送先へ各々転送することは、本発明に係る第1記憶手段、第2記憶手段、第3記憶手段、データ格納手段及びデータ転送手段の組を転送先の数と同数設けることによっても実現可能である。
請求項5記載の発明に係るデータ転送プログラムは、転送対象のデータを格納するための第1記憶手段、該第1記憶手段のうち未転送のデータが格納されている領域の末尾位置又は新たなデータを格納する領域の先頭位置を表す第1位置情報を保持する第2記憶手段、及び、前記第1記憶手段のうち転送済みのデータが格納されている領域の末尾位置又は未転送のデータが格納されている領域の先頭位置を表す第2位置情報及び前記第1位置情報を保持する第3記憶手段を備えたコンピュータを、前記転送対象のデータを前記第1記憶手段に格納させ、前記第2記憶手段に保持されている前記第1位置情報を前記第1記憶手段への前記転送対象のデータの格納に応じて更新するデータ格納手段、及び、前記第3記憶手段から前記第2位置情報及び前記第1位置情報を読み出すことで、前記第1記憶手段のうち未転送のデータが格納されている領域を認識し、前記第1記憶手段から未転送のデータを読み出して所定の転送先へ転送し、前記第3記憶手段に保持されている前記第2位置情報を前記所定の転送先へのデータの転送に応じて更新すると共に、前記第3記憶手段に保持されている前記第2位置情報及び前記第1位置情報が未転送のデータ無しを表す状態となった場合に、前記第3記憶手段に保持されている前記第1位置情報を前記第2記憶手段に保持されている前記第1位置情報と一致させる同期処理を行うデータ転送手段として機能させる。
請求項5記載の発明に係るデータ転送プログラムは、上記の第1記憶手段、第2記憶手段及び第3記憶手段を備えたコンピュータを、上記のデータ格納手段及びデータ転送手段として機能させるためのプログラムであるので、コンピュータが請求項5記載の発明に係るデータ転送プログラムを実行することで、コンピュータが請求項1に記載のデータ転送装置として機能することになり、請求項1記載の発明と同様に、アクセスの競合を抑制することができ、処理効率(データ転送レート)を向上させることができる。
以上説明したように本発明は、データ格納手段が、転送対象のデータを第1記憶手段に格納させ、第2記憶手段に保持され、第1記憶手段の未転送データ格納領域の末尾位置又は新たなデータの格納領域の先頭位置を表す第1位置情報を更新する処理を行い、データ転送手段が、第1記憶手段の転送済みデータ格納領域の末尾位置又は未転送データ格納領域の先頭位置を表す第2位置情報及び第1位置情報を第3記憶手段から読み出すことで、第1記憶手段のうち未転送データ格納領域を認識し、第1記憶手段から未転送のデータを読み出して所定の転送先へ転送し、第3記憶手段に保持されている第2位置情報を更新すると共に、第3記憶手段に保持されている第2位置情報及び第1位置情報が未転送のデータ無しを表す状態となった場合に、第3記憶手段に保持されている第1位置情報を第2記憶手段に保持されている第1位置情報と一致させる同期処理を行うので、アクセスの競合を抑制し、処理効率(データ転送レート)の向上を実現できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係るコンピュータ・システム10が示されている。本実施形態において、コンピュータ・システム10は特定金融機関に設けられており、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12,26と、特定金融機関内に構築されたコンピュータ・ネットワーク20を含んで構成されている。なお、本実施形態ではホスト・コンピュータ12が本発明に係るデータ転送装置として機能し、このホスト・コンピュータ12は請求項5に記載のコンピュータに対応している。
ホスト・コンピュータ12は汎用の大型コンピュータから成り、CPU12A、RAM等から成るメモリ12B、磁気ディスク等から成る不揮発性の記憶部12C、ネットワークインタフェース(I/F)部12Dを備えている。ホスト・コンピュータ12は、ネットワークI/F部12Dに接続された通信回線を介してコンピュータ・ネットワーク20(詳しくはネットワーク20内のブランチ・サーバ22)及びホスト・コンピュータ26に各々接続されている。
また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12を送信データ生成部として機能させるための送信データ生成アプリケーション・プログラム、ホスト・コンピュータ12を送信データ格納部として機能させるための送信データ格納アプリケーション・プログラム、ホスト・コンピュータ12をデータ送信部として機能させるためのデータ送信アプリケーション・プログラムが各々記憶されている。なお、上記の送信データ格納部は本発明に係るデータ格納手段に、データ送信部は本発明に係るデータ転送手段に対応しており、上記各プログラムのうち、送信データ格納アプリケーション・プログラム及びデータ送信アプリケーション・プログラムは請求項5に記載のデータ転送プログラムに対応している。
また、ホスト・コンピュータ12には、大容量の磁気ディスク等の記憶媒体から成る第1ストレージ14、第2ストレージ16及び第3ストレージ18が各々接続され、第1ストレージ14には送信データ格納データベース(DB)を記憶するための記憶領域が設けられ、第2ストレージ16には格納済インデックスDBを記憶するための記憶領域が設けられ、第3ストレージ18には送信済インデックスDBを記憶するための記憶領域が設けられている。なお、上記各DBのうち送信データ格納DBには大量のデータが格納されるため、本実施形態では第1ストレージ14が複数設けられており、個々の第1ストレージ14には、個々の第1ストレージ14を識別するための識別情報として「区分(1を初期値とする昇順の数値(1,2,3,…))」が各々付与されている。なお、図1は第1ストレージ14が3個設けられた構成を例として示しているが、第1ストレージ14の数はこれに限定されるものでない。上記の第1ストレージ14は本発明に係る第1記憶手段に、第2ストレージ16は本発明に係る第2記憶手段に、第3ストレージ18は本発明に係る第3記憶手段に各々対応している。
一方、コンピュータ・ネットワーク20は、特定金融機関の各支店に各々設置されたブランチ・サーバ22(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線を介して互いに接続されて構成されており、個々のブランチ・サーバ22には、個々のブランチ・サーバ22と同一の支店に設置された複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。なお、ホスト・コンピュータ26はホスト・コンピュータ12とほぼ同一の構成(記憶部に記憶されているプログラムは相違している)であるので説明を省略する。
次に本実施形態の作用を説明する。本実施形態に係るホスト・コンピュータ12では、特定金融機関内で各種業務が行われることに伴い、コンピュータ・システム10内外の他のコンピュータ(例えば個々の営業店端末24)から情報(例えば入出金の情報等)を受信する毎に、業務処理プログラムが起動されてCPU12Aによって実行され、業務処理として、受信した情報に応じた内容の処理(例えば記帳等の処理)を行う。また、行った処理の内容が、他のコンピュータ(例えばホスト・コンピュータ26)へ転送すべきデータが生ずる処理であった場合には、業務処理プログラムによって送信データ生成アプリケーション・プログラムが起動されてCPU12Aによって実行され、他のコンピュータへ転送すべきデータ(送信データ)を生成する送信データ生成処理が行われる。
また、送信データ生成処理によって送信データが生成されると、送信データ生成アプリケーション・プログラムによって送信データ格納アプリケーション・プログラムが起動されてCPU12Aによって実行され、送信データ生成処理によって生成された送信データを第1ストレージ14の送信データ格納DBに格納する送信データ格納処理(詳細は後述)が行われる。一方、送信データ格納DBに格納されている送信データの転送要求を他のコンピュータ(当該送信データを転送すべきコンピュータ:本実施形態ではホスト・コンピュータ26を例に説明する)から受信すると、データ送信アプリケーション・プログラムが起動されてCPU12Aによって実行され、第1ストレージ14の送信データ格納DBから送信データを読み出してデータ要求元のホスト・コンピュータ26へ送信するデータ送信処理(詳細は後述)が行われる。
なお、本実施形態において、ホスト・コンピュータ12の記憶部12Cに記憶されている送信データ生成アプリケーション・プログラム、送信データ格納アプリケーション・プログラム、データ送信アプリケーション・プログラムのプログラム群と、ホスト・コンピュータ12に接続された第1ストレージ14、第2ストレージ16及び第3ストレージ18のストレージ群は、特定金融機関の複数種の業務のうちの特定の業務に対応しており、図示は省略するが、上記のプログラム群及びストレージ群は、特定金融機関の複数種の業務に対応して複数組設けられている。
次に、各ストレージに設けられたDBについて説明する。複数の第1ストレージ14に各々記憶された送信データ格納DBは、送信データ生成処理によって生成された送信データを格納するためのDBであり、個々の第1ストレージ14に各々設けられた送信データ格納DBの記憶領域は一定サイズの多数個の格納領域に分割され、個々の格納領域(レコード)には、以下の表1に示すように、「業務ID」「区分」「通番」「送信済フラグ」「送信データ長」「送信データ」等の情報が格納される。
なお、「業務ID」には、ホスト・コンピュータ12がデータを生成・転送する複数種の業務のうち、自DBに対応する業務の識別情報が設定され、「区分」には自DB(が記憶されている第1ストレージ14)に付与されている区分が設定される。また、個々の格納領域には、個々の格納領域を識別するための識別情報として「通番(1を初期値とする昇順の数値(1,2,3,…))」が各々付与されており、「通番」には対応する格納領域の通番が設定され、「送信済フラグ」には送信済みか否かを表すフラグが設定され、「送信データ」には送信データ生成処理によって生成された送信データ本体が設定され、「送信データ長」には送信データ本体のサイズが設定される。
また、第2ストレージ16に記憶された格納済インデックスDBは、送信データ格納DBに最後に格納された送信データを管理するためのDBであり、以下の表2に示すように、「業務ID」「最新格納区分」及び「最新格納通番」から成る共通情報と、「格納通番」「格納日付」及び「格納時刻」を各々含む複数(第1ストレージ14と同数)の区分情報から構成されている。
なお、共通情報のうち「業務ID」には対応する業務の識別情報が設定され、「最新格納区分」及び「最新格納通番」には送信データ格納DBに最後に格納された送信データが格納されている第1ストレージ14の区分・格納領域の通番が各々設定される。また、区分情報のうち「格納通番」には、対応する区分の第1ストレージ14に最後に格納された送信データが格納されている格納領域の通番が設定され、「格納日付」及び「格納時刻」には、対応する区分の第1ストレージ14に最後に格納された送信データが第1ストレージ14に格納された日付・時刻が各々設定される。また、共通情報の「最新格納区分」は初期値が1とされ、「最新格納通番」は初期値が0とされている。
また、格納済インデックスDBに保持される「最新格納区分」及び「最新格納通番」は、本発明に係る「第1記憶手段のうち未転送のデータが格納されている領域の末尾位置を表す第1位置情報」に対応している。また、上記の「最新格納区分」は請求項3に記載の媒体識別情報に、上記の「最新格納通番」は請求項3に記載の媒体内位置情報に各々対応している。
更に、第3ストレージ18に記憶された送信済インデックスDBは、送信データ格納DBから最後に読み出されて送信された送信データを管理するためのDBであり、以下の表3に示すように、「業務ID」「最終送信区分」「最終送信通番」「最終送信日付」「最終送信時刻」から成る送信済データ情報と、その他の情報(格納済データ情報)から構成されている。
なお、送信済データ情報のうち「業務ID」には対応する業務の識別情報が設定され、「最終送信区分」及び「最終送信通番」には送信データ格納DBから最後に読み出されて送信された送信データが格納されている第1ストレージ14の区分・格納領域の通番が各々設定され、「最終送信日付」及び「最終送信時刻」には送信データ格納DBから最後に読み出されて送信された送信データの送信日付・送信時刻が各々設定される。また、格納済データ情報には、格納済インデックスDB(表2)に設定されている「最新格納区分」以降の各情報がそのまま複写(設定)される。また、送信済みデータ情報の「最終送信区分」及び格納済みデータ情報の「格納区分」は初期値が各々1とされ、送信済みデータ情報の「最終送信通番」及び格納済みデータ情報の「格納通番」は初期値が各々0とされている。
なお、送信済インデックスDBに保持される「最終送信区分」及び「最終送信通番」は、本発明に係る「第1記憶手段のうち転送済みのデータが格納されている領域の末尾位置を表す第2位置情報」に対応している。また、上記の「最終送信区分」は請求項3に記載の媒体識別情報に、上記の「最終送信通番」は請求項3に記載の媒体内位置情報に各々対応している。
続いて、送信データ生成処理によって送信データが生成される毎に、ホスト・コンピュータ12のCPU12Aによって送信データ格納アプリケーション・プログラムが実行されることで行われる送信データ格納処理について、図2を参照して説明する。
送信データ格納処理では、まずステップ50において、第2ストレージ16に記憶されている格納済インデックスDBから「最新格納区分」及び「最新格納通番」を読み込む(図4の(1)も参照)。次のステップ52では、ステップ50で読み込んだ「最新格納通番」が最大値(例えば単一の第1ストレージ14に設けられている格納領域の総数)に一致しているか否か判定する。判定が否定された場合は、送信データ格納DBに最後に格納された送信データと同一の区分(第1ストレージ16)に新たな送信データを格納可能と判断できるので、ステップ54へ移行し、「格納対象区分」としてステップ50で読み込んだ「最新格納区分」を設定すると共に、「格納対象通番」としてステップ50で読み込んだ「最新格納通番」を1だけインクリメントした値を設定する。「格納対象区分」及び「格納対象通番」は新たな送信データの格納対象の格納領域の区分・通番を表しており、この場合、最後に格納された送信データが格納されている送信データ格納DBのうち、前記最後に格納された送信データが格納されている格納領域の次の格納領域(通番が次の格納領域)が新たな送信データの格納領域となる。
一方、ステップ52の判定が肯定された場合は、送信データ格納DBに最後に格納された送信データと同一の区分(第1ストレージ16)には新たな送信データは格納できないと判断できるので、ステップ56へ移行し、ステップ50で読み込んだ「最新格納区分」が最大値(第1ストレージ14の総数)に一致しているか否か判定する。この判定が否定された場合はステップ58へ移行し、「格納対象区分」としてステップ50で読み込んだ「最新格納区分」を1だけインクリメントした値を設定すると共に、「格納対象通番」として1を設定する。この場合、最後に格納された送信データが格納されている送信データ格納DBに対して「区分」の次の送信データ格納DBのうち「通番」が先頭(=1)の格納領域が新たな送信データの格納領域となる。また、ステップ56の判定が肯定された場合はステップ60へ移行し、「格納対象区分」及び「格納対象通番」として各々1を設定する。この場合、「区分」=1の送信データ格納DBのうち「通番」が先頭(=1)の格納領域が新たな送信データの格納領域となる。
上記のようにして「格納対象区分」及び「格納対象通番」を設定するとステップ62へ移行し、「通番」として「格納対象通番」を、「送信済フラグ」として未送信であることを表す"N"を、「送信データ」として送信データ生成処理によって新たに生成された送信データを、「送信データ長」として当該送信データのサイズを各々設定することで、格納対象の格納領域(レコード)に格納する情報を生成し(「通番」については送信データ格納DBに予め固定的に設定されていてもよい)、生成した情報を「格納対象区分」及び「格納対象通番」に対応する格納領域に格納させる(図4の(2)も参照)。これにより、送信データ生成処理によって新たに生成された送信データが送信データ格納DBに格納される。なお、格納領域への情報の格納は、より詳しくは、まず情報を格納する格納領域への他のスレッド又はプロセスによるアクセスをロックした後に、当該格納領域に情報を格納し、情報の格納が完了すると前記格納領域へのアクセスのロックを解除することによって成される。
また、次のステップ64ではステップ62における送信データ格納DBへの送信データ等の格納に応じて、格納済インデックスDBに登録されている情報を更新する。すなわち、格納済インデックスDBの共通情報のうち、「最新格納区分」に「格納対象区分」を、「最新格納通番」に「格納対象通番」を各々設定すると共に、格納済インデックスDBの複数の区分情報のうち「格納対象区分」に対応する区分情報に対し、「格納通番」に「格納対象通番」を、「格納日付」及び「格納時刻」に該当する日付・時刻を各々設定する(図4の(3)も参照)。
次のステップ66では、送信データ生成処理によって生成されかつ送信データ格納DBに未格納の送信データが有るか否か判定する。判定が肯定された場合はステップ50に戻り、ステップ66の判定が否定される迄ステップ50〜ステップ66を繰り返すことで、送信データ生成処理によって生成された送信データを送信データ格納DBに順次格納させる。そしてステップ66の判定が否定されると送信データ格納処理を終了する。上述した送信データ格納処理は、送信データ生成処理によって送信データが生成される毎に行われるので、送信データ生成処理によって生成された送信データは送信データ格納DBに全て格納されることになる。
次に、ホスト・コンピュータ26からデータ要求を受信したことを契機として、ホスト・コンピュータ12のCPU12Aによってデータ送信アプリケーション・プログラムが実行されることで行われるデータ送信処理について、図3を参照して説明する。
データ送信処理では、まずステップ70において、第3ストレージ18に記憶されている送信済インデックスDBから「最終送信区分」「最終送信通番」「格納区分」及び「格納通番」を各々読み込む(図4の(4)も参照)。次のステップ72では、ステップ70で読み込んだ「最終送信区分」が「格納区分」に一致しており、かつステップ70で読み込んだ「最終送信通番」が「格納通番」に一致しているか否か判定する。データ送信処理が最初に起動された場合(送信データの送信を行っていない場合)、送信済みインデックスDBは格納済データ情報が未設定(「格納区分」「格納通番」が初期値のまま)で、「最終送信区分」及び「最終送信通番」も初期値のままの状態となっているので、上記判定が肯定されてステップ90へ移行し、第2ストレージ16に記憶されている格納済インデックスDBから「最新格納区分」以降の全情報(「最新格納区分」及び「最新格納通番」と複数の区分情報)を読み込む(図4の(7)も参照)。なお、ステップ72の判定が肯定された場合は、本発明における「第3記憶手段に保持されている第2位置情報及び第1位置情報が未転送のデータ無しを表す状態となった場合」に対応している。
ステップ92では、ステップ90で格納済インデックスDBから読み込んだ「最新格納区分」及び「最新格納通番」が、送信済インデックスDBに保持されている「格納区分」及び「格納通番」と同一か否か判定する。データ送信処理が起動されるときには、送信データ格納処理によって送信データ格納DBに送信データが格納され、これに伴って格納済インデックスDBに保持されている「最新格納区分」及び「最新格納通番」が更新されているので、上記判定が否定されてステップ94へ移行し、ステップ90で格納済インデックスDBから読み込んだ情報を、格納済データ情報として送信済インデックスDBにそのまま書き込み(複写し)、ステップ72に戻る。これにより、送信済インデックスDBに保持されている「格納区分」及び「格納通番」が、格納済インデックスDBに保持されている「最新格納区分」及び「最新格納通番」に一致するように更新される(図4の(8)も参照)ことになる。このように、ステップ90及びステップ94は本発明に係る同期処理に対応している。
上記のように、格納済インデックスDBに保持されている「最新格納区分」及び「最新格納通番」を含む各情報を送信済インデックスDBに複写すると、送信データ格納DBに未送信の送信データが存在している場合には、送信済インデックスDBに保持されている「最終送信区分」「最終送信通番」「格納区分」及び「格納通番」が、未送信の送信データが存在していることを表す値となる。これにより、ステップ72の判定が否定されてステップ74へ移行し、ステップ70で読み込んだ「最終送信通番」が最大値(単一の第1ストレージ14に設けられている格納領域の総数)に一致しているか否か判定する。
ステップ74の判定が否定された場合、送信データ格納DBから最後に読み出して送信した送信データは、或る区分(第1ストレージ16)の最終格納領域以外の格納領域に格納されていると判断できるので、ステップ76へ移行し、「送信対象区分」としてステップ70で読み込んだ「最終送信区分」を設定すると共に、「送信対象通番」としてステップ70で読み込んだ「最終送信通番」を1だけインクリメントした値を設定する。「送信対象区分」及び「送信対象通番」は今回送信対象とする送信データが格納されている格納領域の区分・通番を表しており、この場合、送信データ格納DBから最後に読み出して送信した送信データが格納されている送信データ格納DBのうち、最後に送信した送信データが格納されている格納領域の次の格納領域(通番が次の格納領域)に格納されている送信データが今回の送信対象となる。
一方、ステップ74の判定が肯定された場合、送信データ格納DBから最後に読み出して送信した送信データは、或る区分の最終格納領域に格納されていると判断できるので、ステップ78へ移行し、ステップ70で読み込んだ「最終送信区分」が最大値(第1ストレージ14の総数)に一致しているか否か判定する。この判定が否定された場合はステップ80へ移行し、「送信対象区分」としてステップ70で読み込んだ「最終送信区分」を1だけインクリメントした値を設定すると共に、「送信対象通番」として1を設定する。この場合、送信データ格納DBから最後に読み出して送信した送信データが格納されている送信データ格納DBに対して「区分」が次の送信データ格納DBのうち「通番」が先頭の格納領域に格納されている送信データが今回の送信対象となる。また、ステップ78の判定が肯定された場合はステップ82へ移行し、「送信対象区分」及び「送信対象通番」として各々1を設定する。この場合、「区分」=1の送信データ格納DBのうち「通番」が先頭の格納領域に格納されている送信データが今回の送信対象となる。
上記のようにして「送信対象区分」及び「送信対象通番」を設定するとステップ84へ移行し、設定した「送信対象区分」に対応する送信データ格納DBのうち、設定した「送信対象通番」に対応する格納領域から「送信データ」を読み出し、読み出した「送信データ」をデータ要求元のホスト・コンピュータ26へ送信する(図4の(5)も参照)。このステップ84でホスト・コンピュータ12から送信された送信データは、データ要求元のホスト・コンピュータ26で受信され、ホスト・コンピュータ26で行われる各種の業務処理に用いられる。また、次のステップ86では、ステップ84で送信データを読み出した格納領域内の「送信済みフラグ」に送信済みであることを表す"Y"を設定することで、「送信済みフラグ」を更新する。なお、データ送信処理による送信データ格納DBへのアクセス(送信データ格納DBの送信対象の格納領域からの送信データの読み出し(ステップ84)や送信データ格納DBの送信対象の格納領域内の送信済みフラグの更新(ステップ86))についても、先に説明した送信データ格納処理と同様に、送信対象の格納領域への他のスレッド又はプロセスによるアクセスをロックした後に行われ、送信データの読み出しや送信済みフラグの更新が完了するとアクセスのロックが解除される。
次のステップ88では、送信済インデックスDBの「最終送信区分」として現在の「送信対象区分」を書き込むと共に、送信済インデックスDBの「最終送信通番」として現在の「送信対象通番」を書き込むことで、送信済インデックスDBの「最終送信区分」及び「最終送信通番」を更新し(図4の(6)も参照)、ステップ72に戻る。これにより、ステップ72の判定が肯定される迄の間、すなわち送信済インデックスDBに保持されている「最終送信区分」「最終送信通番」「格納区分」及び「格納通番」が、送信データ格納DBに未送信の送信データが存在していないことを表す値になる迄の間、ステップ72〜ステップ88が繰り返され、送信データ格納DBに格納されている未送信の送信データが順次読み出されてデータ要求元のホスト・コンピュータ26へ送信される。
送信済インデックスDBに保持されている「最終送信区分」「最終送信通番」「格納区分」及び「格納通番」が、送信データ格納DBに未送信の送信データが存在していないことを表す値になると、ステップ72の判定が肯定されてステップ90へ移行し、先にも説明したように、格納済インデックスDBから「最新格納区分」以降の全情報が読み込まれ(ステップ90)、読み込まれた「最新格納区分」及び「最新格納通番」が送信済インデックスDBに保持されている「格納区分」及び「格納通番」と同一か否か判定される(ステップ92)。ここで、ステップ72〜ステップ88で送信データ格納DBからの送信データの読み込み・送信を行っている間に、送信データ格納処理によって新たな送信データが送信データ格納DBに格納されていた場合には、ステップ92の判定が否定され、ステップ94で格納済インデックスDBから読み込んだ情報が送信済インデックスDBにそのまま書き込まれ(複写され)た後に、ステップ72〜ステップ88が再度繰り返される。
また、送信データ格納DBからの送信データの読み込み・送信を行っている間に、送信データ格納DBに新たな送信データが格納されなかった場合には、ステップ92の判定が肯定されてステップ96へ移行し、送信データ格納DBから最後に読み出して送信した送信データが、ホスト・コンピュータ26から要求されたデータの末尾に相当するデータか否か判定する。この判定は、例えば送信データ生成処理で要求されたデータの生成が完了すると、データ生成の完了が、送信データ生成アプリケーションから送信データ格納アプリケーションを経由してデータ送信アプリケーションに通知されるように構成しておき、データ生成の完了が通知されたか否かを判断することで行うことができる。また、前記判定は、ホスト・コンピュータ26から要求されたデータの末尾に送信データ生成処理が所定の情報を付加し、最後に送信したデータの末尾に前記所定の情報が付加されていたか否かを判断することによっても行うことができる。
ステップ96の判定が否定された場合、何らかの理由で送信データ格納DBへの送信データの格納が遅延していると判断できるので、ステップ98へ移行してタイマをスタートさせ、データ送信処理の実行を一旦終了する。これにより、データ送信処理が実行を停止している間に、送信データ格納処理によって新たな送信データが送信データ格納DBに格納され、格納済インデックスDBに保持されている「最新格納区分」「最新格納通番」が更新される。そして、ステップ98でスタートさせたタイマがタイムアウトするとデータ送信処理が再度実行され、ステップ70,72を経てステップ90,94で送信済インデックスDBに保持されている「格納区分」「格納通番」を格納済インデックスDBに保持されている「最新格納区分」「最新格納通番」と一致させる処理が行われ、ステップ72〜ステップ88における送信データ格納DBからの送信データの読み出し・送信が再開されることになる。
そして、上述した処理を経て、要求されたデータをデータ要求元のホスト・コンピュータ26へ末尾迄送信すると、ステップ72,92,96の判定が各々肯定されることで、タイマをスタートさせることなくデータ送信処理を終了する。
図4からも明らかなように、本実施形態において、送信済インデックスDBにアクセスするのはデータ送信処理(アプリケーション)のみであり、送信データ格納処理(アプリケーション)は送信済インデックスDBにアクセスしないので、送信済インデックスDBではアクセスの競合は発生しない。一方、送信データ格納DBは送信データ格納処理及びデータ送信処理によって各々アクセスされる。しかし、送信データ格納DBのうちデータ送信処理によってアクセスされる格納領域は、送信データ格納処理によって送信データ等が格納され、当該格納に応じて更新された格納済インデックスDBの「最新格納区分」「最新格納通番」の送信済インデックスDBの「格納区分」「格納通番」への反映も完了した状態となっている格納領域であり、データ送信処理によってアクセスされる格納領域が送信データ格納処理によって同時にアクセスされることはないので、送信データ格納DBへのアクセスの競合が発生することも防止できる。
また、格納済みインデックスDBも送信データ格納処理及びデータ送信処理によって各々アクセスされる。しかし、データ送信処理では、送信済インデックスDBに保持されている「最終送信区分」「最終送信通番」「格納区分」及び「格納通番」が、送信データ格納DBに未送信の送信データが存在していないことを表す値になる迄の間、ステップ72〜ステップ88で送信データ格納DBからの未送信の送信データの読み出し・送信を繰り返し、この間は格納済インデックスDBをアクセスしない(ステップ90の処理を行わない)ので、データ送信処理による格納済インデックスDBのアクセスは必要最小限の頻度に抑制されており、格納済インデックスDBへのアクセスの競合が発生する確率も非常に小さくなっている。従って、本実施形態によれば、送信データ生成処理によって生成された送信データを、送信データ格納処理及びデータ送信処理により、非常に高いデータ転送レートでデータ要求元のホスト・コンピュータ26へ送信(転送)することができる。
なお、上記では特定金融機関に設けられたコンピュータ・システム10に本発明を適用し、特定金融機関の特定業務に関連するデータを転送する態様を説明したが、本発明はデータ転送を行う任意のコンピュータ・システムに適用可能であり、転送対象のデータの内容も上記に限定されるものではなく、任意のデータを転送可能である。また、上記では本発明に係る所定の転送先として、ホスト・コンピュータ12と直接接続されたホスト・コンピュータ26を適用した態様を説明したが、本発明はこれに限定されるものではなく、データの転送先はブランチ・サーバ22を介して接続された営業店端末24であってもよいし、複数台のコンピュータから成るコンピュータ・システムであってもよい。
また、上記では単一のデータ要求元からの要求に応じて単一のデータ要求元へデータを送信(転送)する態様を説明したが、本発明はこれに限定されるものではなく、複数のデータ要求元からの要求に応じて、複数のデータ要求元へのデータの送信(転送)を並列に行うことも可能である。これは、例えば送信済インデックスDBをデータ要求元(データ転送先)の数と同数設けると共に、データ送信処理を行うスレッド又はプロセスをデータ要求元の数と同数設け、個々のスレッド又はプロセスでデータ送信処理を互いに独立(並列)に行わせることによって実現できる。この態様は請求項4記載の発明に対応している。送信済インデックスDBの「格納区分」「格納通番」は、データ送信処理によって格納済インデックスDBの「最新格納区分」「最新格納通番」と一致され、データ送信処理では、格納済インデックスDBの「最新格納区分」「最新格納通番」に代えて、送信済インデックスDBの「格納区分」「格納通番」を参照して未送信の送信データの有無を判断している。このため、データ要求元の数が2以上の場合にも、格納済みインデックスDBの数及び送信データ格納処理を行うスレッド又はプロセスの数はデータ要求元の数に拘わらず1個でよく、送信データ格納処理の内容もデータ要求元の数に拘わらず同一でよい。
また、上記では本発明に係る第1位置情報として、「第1記憶手段のうち未転送のデータが格納されている領域の末尾位置を表す第1位置情報」、すなわち送信データ格納DBに最後に格納された送信データを指し示す「最新格納区分」及び「最新格納通番」を格納済インデックスDBに保持させ、本発明に係る第2位置情報として、「第1記憶手段のうち転送済みのデータが格納されている領域の末尾位置を表す第2位置情報」、すなわち送信データ格納DBから最後に読み出して送信した送信データを指し示す「最終送信区分」及び「最終送信通番」を送信済インデックスDBに保持させる態様を説明したが、本発明はこれに限定されるものではなく、第1位置情報として「第1記憶手段のうち新たなデータを格納する領域の先頭位置を表す第1位置情報」、すなわち送信データ格納DBに最後に格納された送信データの次の格納領域を指し示す情報を格納済インデックスDBに保持させるようにしてもよいし、第2位置情報として「第1記憶手段のうち未転送のデータが格納されている領域の先頭位置を表す第2位置情報」、すなわち送信データ格納DBから最後に読み出して送信した送信データの次の格納領域を指し示す情報を送信済インデックスDBに保持させるようにしてもよい。
また、上記では本発明に係るデータ転送プログラムに対応する送信データ格納アプリケーション・プログラム及び送信データ生成アプリケーション・プログラムが、ホスト・コンピュータ12の記憶部12Cに予め記憶されている態様を説明したが、本発明に係るデータ転送プログラムは、CD−ROMやDVD−ROM、或いは磁気テープ等の記録媒体に記録されている形態で提供することも可能である。