(57)【要約】      （修正有）【課題】複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムにおいて、一部のデータベースを利用するデータ処理に遅延が予想外に発生した場合に、既に処理が完了しているスレッドでの出力可能な処理結果データ出力を待たさないようにする。【解決手段】データ処理の遅延が発生したスレッドを検出し、遅延が発生したスレッドが利用するデータベースと同じデータベースに対して同じデータ処理方法でデータ処理を行う他のスレッドも遅延が発生するとみなして、それらの遅延スレッドの処理完了を待ち合わせずに、遅延の影響を受けなかったスレッドでの処理結果データだけを先に一括して記憶装置に書き込む。【選択図】図１
2014089572.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するデータ処理装置において、
スレッドステータスリストと、遅延判定リストと、制御部と、遅延判定部と、出力制御部とを有し、
前記ステータスリストは、前記複数の業務スレッドに一対一対応する複数のスレッドステータスデータを有し、
各前記スレッドステータスデータは、対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とを有し、
前記遅延判定リストは、各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有し、
前記制御部は、外部から与えられた複数の前記処理対象データ群を読み込んで複数の前記業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示し、
各前記業務スレッドは、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報とを登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新し、
前記遅延判定部は、所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新し、
前記出力制御部は、前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する
ことを特徴とするデータ処理装置。
【請求項２】
前記出力制御部は、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記出力制御部は、前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項１または請求項２記載のデータ処理装置。
【請求項４】
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストと
を備えたデータ処理装置で使用するデータ処理方法において、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始ステップと、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新するデータ処理ステップと、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定ステップと、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御ステップと
を含むことを特徴とするデータ処理方法。
【請求項５】
前記出力制御ステップにおいて、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項４記載のデータ処理方法。
【請求項６】
前記出力制御ステップにおける前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項４または請求項５記載のデータ処理方法。
【請求項７】
複数のデータ処理を自コンピュータ上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストと
を備えたコンピュータで実行されるデータ処理プログラムにおいて、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始処理と、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新する情報登録・更新処理と、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定処理と、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御処理と
を前記コンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項８】
前記出力制御処理において、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項７記載のデータ処理プログラム。
【請求項９】
前記出力制御処理における前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項７または請求項８記載のデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システム、データ処理方法およびデータ処理プログラムに関し、特に、複数のデータ処理での処理結果を一括出力するデータ処理システム、データ処理方法およびデータ処理プログラムに関する。
【背景技術】
【０００２】
ほぼ同時間帯に大量に発生するデータに対して複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムが一般的に知られている。
【０００３】
係るデータ処理システムの一例について、図８を参照して説明する。
【０００４】
図８を参照すると、係るデータ処理システムは、各種のデータ処理を実行するコンピュータ等のデータ処理装置５００と、入力ファイル６００を記憶している記憶装置７００と、出力ファイル６２０を格納する記憶装置８００と、それぞれ複数のファイルを格納した３つのデータベース６１０−１、６１０−２および６１０−３とから構成されている。
【０００５】
次に本データ処理システムの動作について説明する。
【０００６】
まず、データ処理装置５００上においてあるデータの処理を行うために、データ処理実行プロセス５１０がデータ処理装置５００上で事前に起動しているものとする。
【０００７】
次に、起動中のデータ処理実行プロセス５１０は、実際に当該データ処理を行う４つの業務スレッド５３０ａ〜ｄ（ここで、「スレッド」とは、「並列処理に対応したオペレーティングシステム上でのプログラムの最小の実行単位」を言う。）と、業務スレッド５３０ａ〜ｄを制御する制御スレッド５２０とを起動させ、常駐させておく。
【０００８】
次に、記憶装置７００から当該データ処理の対象となる大量の入力データを含む入力ファイル６００がデータ処理装置５００に与えられると、制御スレッド５２０が入力ファイル６００からファイル６００内の全データを読み込んで、それらのデータを関連する業務別にまとめて、４つの処理データ群を作成する。
【０００９】
次に、制御スレッド５２０は、４つの業務スレッド５３０ａ〜ｄに、４つの上記処理データ群を一対一対応に渡し、それらの処理データ群に対するデータ処理の開始を指示する。ここで、各処理データ群のデータ量は、各業務スレッド５３０ａ〜ｄでのデータ処理が完了するまでに要する時間がほぼ等しくなるように、決定される。
【００１０】
データ処理の開始を指示された業務スレッド５３０ａ〜ｄは、それぞれ渡された処理データ群に対するデータ処理を同時並行的に行う。このように、複数のスレッドでデータ処理を同時並行的に行うことを一般的にマルチスレッド処理と言う。
【００１１】
業務スレッド５３０ａ〜ｄでのデータ処理の実行中に、各業務スレッド５３０ａ〜ｄが処理結果を出力先のデータベースに随時出力し、データベース６１０−１〜６１０−３の内容を随時更新する場合があるが、その際、その各更新と同時にはデータベース６１０−１〜６１０−３のコミット（更新内容の確定）は行わず、制御スレッド５２０からのコミット指示があるまで待つ。
【００１２】
ここで、データベースのコミットとは、データベースに対して行った更新を正式に反映し、誰もが更新内容を見ることができるようにすることである。
【００１３】
多くのデータベースは、コミットされるまで更新箇所を他の利用者が参照や更新できないように制御され、これにより、もし一連のデータ処理中に行ったデータベースの更新において、その更新に異常があったとき、その更新箇所をコミットする前であれば、その更新を取り消すことができ、その結果、他の利用者による誤った更新結果の参照等を回避できる。したがって、コミットは、ある業務スレッドにおける一連のデータ処理中に行われるデータベースの全ての更新処理が正常に完了して、更新の取り消しが必要ないことが確定した後に、その全ての更新箇所に対してまとめて実施される。
【００１４】
業務スレッド５３０ａ〜ｄは、与えられた処理データ群に対するデータ処理が完了すると、処理完了通知を制御スレッド５２０に送り、さらにファイル６２０に出力するべき処理結果データを制御スレッド５２０にそれぞれ渡す。
【００１５】
制御スレッド５２０は、全ての業務スレッド５３０ａ〜ｄから処理完了通知を受けると、全ての業務スレッド５３０ａ〜ｄから受け取った処理結果データを１つにまとめ、出力ファイル６２０に出力する。
【００１６】
ここで、全ての業務スレッド５３０ａ〜ｄから処理完了通知を受けとった後、それらの業務スレッド５３０ａ〜ｃから受け取った処理結果データを一括して出力ファイル６２０に出力する、すなわち、書き込む理由は、処理結果データの発生の度に書き込むよりも、全ての処理結果データが揃うまで待って一括して書き込んだ方が、ファイル６２０に対する書き込み処理回数が減少し、出力ファイル６２０へのデータ書き込みのスループットが総合的に見て高くなるからである。
【００１７】
制御スレッド５２０は、出力ファイル６２０への処理結果データの出力が完了すると、各業務スレッド５３０にコミット指示を送る。
【００１８】
コミット指示に応答して、各業務スレッド５３０ａ〜ｄは、自身が更新を行ったデータベースに対して、更新を確定させるコミット処理を行う。
【００１９】
以上で、入力ファイル６００に関する全てのデータ処理が完了する。
【００２０】
図９ａ）に、各業務スレッド５３０ａ〜ｄでのデータ処理の開始からデータベース６１０−１〜６１０−３のコミットまでの流れを示す。
【発明の概要】
【発明が解決しようとする課題】
【００２１】
しかしながら、図８に示したデータ処理システムにおけるデータベースの更新を含むデータ処理においては、しばしば特定のデータベースに対する更新処理の集中などのために、予想外に特定の業務スレッドでデータ処理に時間を要し、当該スレッドでのデータ処理の完了に遅延を生じる場合がある。
【００２２】
図９ｂ）は、業務スレッド５３０ｂおよび５３０ｄでのデータ処理の完了が遅延した場合の例を示す。この場合、他の業務スレッド５３０ａおよびｃのデータ処理が終了して、それらの業務スレッド５３０ａおよびｃでの処理結果データが揃っているにもかかわらず、業務スレッド５３０ｂおよびｄでの処理結果データが揃っていないため、最も遅延した業務スレッド５３０ｄでのデータ処理が完了して全ての処理結果データが揃うまで出力ファイル６２０への処理結果データの出力は待たされることになり、その結果、全体的な処理時間の増大を招くという問題点が図８に示すデータ処理システムにはある。
【００２３】
本発明の目的は、上述した問題点を解決できるデータ処理システム、データ処理方法およびデータ処理プログラムを提供することにある。
【課題を解決するための手段】
【００２４】
本発明のデータ処理装置は、複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行する装置であって、
スレッドステータスリストと、遅延判定リストと、制御部と、遅延判定部と、出力制御部とを有し、
前記ステータスリストは、前記複数の業務スレッドに一対一対応する複数のスレッドステータスデータを有し、
各前記スレッドステータスデータは、対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とを有し、
前記遅延判定リストは、各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有し、
前記制御部は、外部から与えられた複数の前記処理対象データ群を読み込んで複数の前記業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示し、各前記業務スレッドは、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報とを登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新し、
前記遅延判定部は、所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新し、
前記出力制御部は、前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する。
【００２５】
また、本発明のデータ処理方法は、
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストとを備えたデータ処理装置で使用する方法であって、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始ステップと、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新するデータ処理ステップと、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定ステップと、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御ステップとを含む。
【００２６】
さらに、本発明のデータ処理プログラムは、
複数のデータ処理を自コンピュータ上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するＩＤ情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストとを備えたコンピュータで実行されるプログラムであって、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始処理と、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新する情報登録・更新処理と、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定処理と、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御処理とを前記コンピュータに実行させる。
【発明の効果】
【００２７】
本発明には、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムにおいて、一部のデータベースを利用するデータ処理に遅延が予想外に発生した場合にも、遅延の影響を受けていない他の複数のデータ処理での処理結果データの記憶装置への一括書き込みを可能にし、その結果、遅延の影響を受けていない当該他の複数のデータ処理での処理結果データを遅滞なく利用することができるという効果がある。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本発明の実施形態における業務スレッド制御部１２１での処理を示すフローチャートである。
【図３】本発明の実施形態における遅延判定部１２２での処理を示すフローチャートである。
【図４】本発明の実施形態における出力制御部１２３での処理を示すフローチャートである。
【図５】本発明の実施形態における業務スレッドが実行する処理を示すフローチャートである。
【図６】本発明の実施形態における業務スレッドの処理フローの一例を示す図である。
【図７】本発明の実施形態における業務スレッドステータスリストと遅延判定リストとの変化の様子を示す図である。
【図８】データベースの更新を伴う処理を実行する一般的なデータ処理システムの構成を示すブロック図である。
【図９】データベースの更新を伴う処理を実行する一般的なデータ処理システムの業務スレッドの処理フローを示す図である。
【発明を実施するための形態】
【００２９】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００３０】
図１は、本発明の実施形態の構成を示すブロック図である。
【００３１】
図１を参照すると、本実施形態に係るデータ処理システムは、データ処理装置１００と、入力ファイル２１０を記憶している記憶装置２００と、出力ファイル４１０を格納する記憶装置４００と、それぞれ複数のファイルを格納した３つのデータベース３００−１〜３から構成される。
【００３２】
データ処理装置１００は、プログラム制御により動作する一般的な情報処理装置（コンピュータ）によって構成される。
【００３３】
記憶装置２００および４００は、例えば、ディスク装置や半導体メモリ装置により実現される。
【００３４】
少なくとも一つの入力ファイル２１０は、それぞれ、データ処理装置１００の行うデータ処理の対象となる大量の入力データおよび各入力データの処理方法を指定する情報などを含む。
【００３５】
記憶装置４００は、データ処理装置１００が生成する出力ファイル４１０を記憶する。
【００３６】
データ処理装置１００は、データ処理実行プロセス１１０と、メモリ１６０とを含む。
【００３７】
すなわち、本実施形態では、データ処理装置１００に搭載されたオペレティングシステム（図示せず）が、データ処理装置１００上において各種のデータ処理を行うために、データ処理実行プロセス１１０を予め生成し起動させてあるものとする。なお、ここで言う「プロセス」とは、コンピュータ分野においてよく知られている概念であり、その詳細な説明は省略する。
【００３８】
起動中のデータ処理実行プロセス１１０は、実際にデータ処理を行う４つの業務スレッド１３０ａ〜ｄと、業務スレッド１３０ａ〜ｄを制御する制御スレッド１２０とを起動させ、常駐させておく。
【００３９】
メモリ１６０は、全ての業務スレッド１３０ａ〜ｄのデータ処理の現況を格納している業務スレッドステータスリスト１４０と、各データベース３００−１〜３に対する処理別にその処理に要する時間の基準値を格納している遅延判定リスト１５０とを記憶しており、制御スレッド１２０および業務スレッド１３０ａ〜ｄはそれらリスト１４０および１５０にアクセスが可能である。
【００４０】
制御スレッド１２０は、業務スレッド制御部１２１と、遅延判定部１２２と、出力制御部１２３とを有する。
【００４１】
業務スレッド制御部１２１は、入力ファイル２１０から入力データを読み込み、４つの業務スレッド１３０ａ〜ｄを制御してデータ処理を開始させる。
【００４２】
遅延判定部１２２は、定期的に業務スレッドステータスリスト１４０を参照し、遅延判定リスト１５０の情報に基づいて、業務スレッド１３０ａ〜ｄでのデータ処理の遅延発生の有無を判定する。なお、以下の説明では、遅延判定部１２２によって、データ処理に遅延が発生したと判定された業務スレッドを「遅延中の業務スレッド」または「遅延した業務スレッド」と言う。
【００４３】
出力制御部１２３は、４つの業務スレッド１３０ａ〜ｄでの処理結果の出力を制御する。すなわち、業務スレッド１３０ａ〜ｄは、それらでの処理結果を、ファイル４１０に直接出力するのではなく、出力制御部１２３に一旦渡す。処理結果を渡された出力制御部１２３は、自身で決定したタイミングで、当該処理結果を出力ファイル４１０へ出力する。また、出力制御部１２３は、業務スレッド１３０ａ〜ｄに、業務スレッド１３０ａ〜ｄが更新したデータベースのコミットを指示する。
【００４４】
業務スレッド１３０ａ〜ｄは、入力ファイル２１０から業務スレッド制御部１２１を介してそれぞれ与えられた処理データ群を指示されたデータ処理方法で同時並行的に処理し、業務スレッドステータスリスト１４０と遅延判定リスト１５０とを随時更新する。
【００４５】
なお、本実施形態では、業務スレッド１３０の数は４つ、データベースの数は３つとしたが、これらは一例であり、これらに限定されるものではない。
【００４６】
図６は、業務スレッド１３０ａ〜ｄでのデータ処理の流れを示す。
【００４７】
図７は、図６の時刻Ｔ１〜Ｔ５の各時点における業務スレッドステータスリスト１４０および遅延判定リスト１５０の内容を示す。
【００４８】
延判定リスト１５０には、あらかじめ、以前のデータ処理におけるデータ処理速度から求めた、または、任意に定めた遅延基準値が格納されているものとする。
【００４９】
遅延判定リスト１５０は、データ処理方法を示すデータ処理方法情報を登録するデータ処理方法欄と、当該データ処理方法情報で識別されるデータ処理方法で更新されるデータベースを識別するデータベース識別情報を登録する更新ＤＢ欄と、上記の遅延基準値である遅延基準値情報を登録する遅延基準値欄とから構成される。遅延基準値は、前回のデータ処理における処理データ群１ＫＢあたりの処理時間に（１＋遅延許容率）を掛けた値である。
【００５０】
例えば、図７の遅延判定リスト（Ｔ１時点）の２行目を見ると、データ処理方法欄には「処理法Ａ」が、更新ＤＢ欄には「ＤＢ−１」が、および、遅延基準値欄には１．５がそれぞれ登録されている。これは、データ処理方法が「処理法Ａ」で更新処理対象のデータベースが「ＤＢ−１」であるデータ処理であることを示している。
【００５１】
係るデータ処理において、１ＫＢあたりの処理時間が１．６になった場合には、この１．６という値は、対応する遅延基準値欄が示す値である１．５を越えているので、ＤＢ−１を対象とする処理法Ａのデータ処理は「遅延している」とみなされる。すなわち、遅延基準値はデータ処理の遅延を判定するための閾値である。
【００５２】
遅延許容率は、データ処理の業務内容にあわせて設定する任意の値であり、本実施形態では遅延許容率を０．５とする。
【００５３】
本実施形態では、遅延判定リスト１５０は、あらかじめ図７の遅延判定リスト（Ｔ１時点）の通りに設定されているものとする。
【００５４】
次に、本実施形態の動作について、図２〜図５を参照して詳細に説明する。
【００５５】
まず、記憶装置２００からデータ処理の対象となる大量の入力データを含む入力ファイル２１０がデータ処理装置１００に与えられると、制御スレッド１２０の業務スレッド制御部１２１がその入力ファイル２１０内の全データを読み込む（図２のステップＳ１０１）。
【００５６】
次に、業務スレッド制御部１２１は、入力ファイル２１０から読み込んだ、各入力データの処理方法を指定する、情報に従って、読み込んだ入力データを関連する処理法別にまとめて、４つの処理データ群を作成する（図２のステップＳ１０２）。
【００５７】
次に、業務スレッド制御部１２１は、４つの業務スレッド１３０ａ〜ｄに、４つの上記処理データ群を一対一対応に渡し、それらの処理データ群それぞれに対するデータ処理方法を指定して、それらの処理データ群に対する処理の開始を指示する（図２のステップＳ１０３）。
【００５８】
ここで、業務スレッド制御部１２１は、業務スレッド１３０ａに対して、データサイズが５００ＫＢの処理データ群を渡し、データ処理の開始を指示したとする。さらに、業務スレッド制御部１２１は、データ処理方法としてデータベース３００−１（ＤＢ−１）の更新を伴う処理法Ａを指定したとする。
【００５９】
同様に、業務スレッド制御部１２１は、業務スレッド１３０ｂ〜ｄにも、それぞれ３００ＫＢ、６００ＫＢおよび５００ＫＢの処理データ群を渡してデータ処理の開始を指示するとともに、業務スレッド１３０ｂに対して、データ処理方法としてデータベース３００−２（ＤＢ−２）の更新を伴う処理法Ｂを、業務スレッド１３０ｃに対して、データ処理方法としてデータベース３００−３（ＤＢ−３）の更新を伴う処理法Ｂを、および、業務スレッド１３０ｄに対して、データ処理方法としてデータベース３００−２（ＤＢ−２）の更新を伴う処理法Ｂをそれぞれ指定したとする。
【００６０】
次に、データ処理の開始を指示された業務スレッド側の動作について、業務スレッド１３０ａを代表例として、図５を参照して詳細に説明する。また、４つの業務スレッド１３０ａ〜ｄの動作の流れの相互関係を、図６および図７を参照して説明する。
【００６１】
まず、業務スレッド１３０ａは、業務スレッドステータスリスト１４０にこれから実施するデータ処理の情報を登録する（図５のステップＳ４０１）。このときの時刻をＴ１とする。このとき業務スレッド１３０ｂ〜ｄも、図６に示すように、時刻Ｔ１に、同時並行的にデータ処理を開始する。
【００６２】
図７に示すように、業務スレッドステータスリスト１４０は、データ処理を実行する業務スレッドを識別するスレッドＩＤ情報を登録するスレッドＩＤ欄、データ処理の現在状況を示すステータス情報を登録するステータス欄、データ処理中に更新する対象のデータベースを識別するデータベース識別情報を登録する更新ＤＢ欄、データ処理方法を示すデータ処理方法情報を登録するデータ処理方法欄、与えられた処理データ群のデータサイズをＫＢ単位で表した値であるデータサイズ情報を登録するデータサイズ欄およびデータ処理を開始した時刻を示す開始時刻情報を登録する開始時刻欄から構成される。
【００６３】
業務スレッドステータスリスト１４０の２行目以降の行は、複数の業務スレッドと一対一対応し、各行の全て欄の内容（情報）をまとめてスレッドステータスデータと言う。
【００６４】
ここで、スレッドＩＤ欄において、「ａ」、「ｂ」、「ｃ」および「ｄ」はそれぞれ業務スレッド１３０ａ、ｂ、ｃおよびｄを識別するスレッドＩＤであり、更新ＤＢ欄の「ＤＢ−１」、「ＤＢ−２」および「ＤＢ−３」はそれぞれデータベース３００−１、３００−２および３００−３を識別するデータベース識別番号である。
【００６５】
図７の業務スレッドステータスリスト（Ｔ１時点）に示すように、データ処理の開始前に、業務スレッド１３０ａは、スレッドＩＤ欄に自スレッドを示す「ａ」、ステータス欄に「処理中」、更新ＤＢ欄にデータベース３００−１を示す「ＤＢ−１」、データ処理方法欄に「処理法Ａ」、データサイズ欄に「５００」および開始時刻欄に現在時刻である「Ｔ１」を登録する。
【００６６】
このとき、業務スレッド１３０ｂ〜ｄも、同様に業務スレッドステータスリスト（Ｔ１時点）の各欄に自スレッドに対応する各情報を登録する。
【００６７】
次に、業務スレッド１３０ａは、指定された「処理法Ａ」のデータ処理を実施する（図５のステップＳ４０２）。データ処理の間、業務スレッド１３０ａは、必要に応じてデータベース３００−１の更新を随時行う。このとき、データベース３００−１のコミットは行わず、出力制御部１２３のコミット指示があるまで待つ。
【００６８】
また、業務スレッド１３０ａ〜ｄでのデータ処理の開始後、遅延判定部１２２は、一定周期で各業務スレッド１３０ａ〜ｄの遅延判定を行い、遅延している業務スレッドについては業務スレッドステータスリスト１４０のステータス欄を「遅延中」に書き換える。本実施形態では、遅延判定動作の周期は１００ｍｓ毎とする。遅延判定の詳細な動作は後述する。
【００６９】
次に、データ処理開始時刻Ｔ１から４００ｍｓ経過後の時刻Ｔ２時点の動作を説明する。
【００７０】
時刻Ｔ２において、業務スレッド１３０ａが与えられた処理データ群のデータ処理を完了したとする。なお、図６に示すとおり、業務スレッド１３０ｂ〜ｄのいずれも、時刻Ｔ２ではまだデータ処理を終えておらず、また、この時点で「遅延中」と判定された業務スレッド１３０はないものとする。
【００７１】
データ処理が完了すると、業務スレッド１３０ａは、その時点の業務スレッドステータスリスト１４０（すなわち、図７の業務スレッドステータスリスト（Ｔ１時点））における自スレッドのステータスを確認する（図５のステップＳ４０３）。上述したとおり、時刻Ｔ２時点で、業務スレッド１３０ａは「遅延中」とは判定されておらず、また、そのステータスは「処理中」のままである。
【００７２】
自スレッドのステータス欄が「遅延中」ではないので、業務スレッド１３０ａは、今回のデータ処理に要した処理時間から遅延基準値を算出して遅延判定リスト１５０を更新する（図５のステップＳ４０４）。ここで、遅延基準値は、上述したとおり、データ処理に要した処理データ群１ＫＢあたりの処理時間に（１＋遅延許容率）を乗じて求める。業務スレッド１３０ａは、時刻Ｔ１にデータ処理を開始し、それから４００ｍｓ経過した時刻Ｔ２に処理を終了したので、所要時間は４００ｍｓであり、処理データ群のサイズは５００ＫＢである。したがって、業務スレッド１３０ａの今回のデータ処理における遅延基準値は以下のような計算式で求められる。
【００７３】
１ＫＢあたりの処理時間＝所要時間／処理データ群のサイズ＝４００／５００＝０．８（ｍｓ／ＫＢ）
遅延基準値＝１ＫＢあたりの処理時間＊（１＋遅延許容率）＝０．８＊１．５＝１．２（ｍｓ／ＫＢ）
業務スレッド１３０ａは、遅延判定リスト１５０のデータ処理方法欄が「処理法Ａ」で且つ更新ＤＢ欄が「ＤＢ−１」であるという条件を満たす遅延基準値欄の内容を、算出した値である１．２に書き換える（図７の遅延判定リスト（Ｔ２時点）参照）。
【００７４】
次に、業務スレッド１３０ａは、業務スレッドステータスリスト１４０の自スレッドのステータス欄を「処理中」から「完了」に変更し（図７の業務スレッドステータスリスト（Ｔ２時点）参照）（図５のステップＳ４０５）、制御スレッド１２０の出力制御部１２３に対して、処理結果データの引渡しと処理完了通知の送信とを行う（図５のステップＳ４０６）。
【００７５】
この後、業務スレッド１３０ａは、制御スレッド１２０からコミット指示を受信するまで待機する（図５のステップＳ４０７）。
【００７６】
次の、このようにして処理完了通知および処理結果データを業務スレッド１３０ａから受信した出力制御部１２３の動作を、図４を参照して説明する。
【００７７】
まず、出力制御部１２３は、業務スレッド１３０ａから渡された処理結果データを、メモリ１６０内に設けたバッファ領域（図示せず）に格納する（図４のステップＳ３０１）。
【００７８】
次に、出力制御部１２３は、現時点（Ｔ２時点）で「処理中」の業務スレッドが存在するかどうかを確認する（図４のステップＳ３０２）。すなわち、出力制御部１２２は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ２時点））のステータス欄を上から順に見ていき、「処理中」の業務スレッドが存在するかどうかを確認する。その結果、出力制御部１２３は、スレッドＩＤが「ｂ」〜「ｄ」である業務スレッド１３０ｂ〜ｄの３つが「処理中」であると認識する。
【００７９】
「処理中」の業務スレッド１３０ｂ〜ｄが存在するので、次に、出力制御部１２３は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ２時点））のステータス欄を参照して、「処理中」の業務スレッド１３０ｂ〜ｄのそれぞれについて、当該「処理中」の業務スレッドが更新する更新ＤＢと同じ更新ＤＢを更新する他の業務スレッドであって、当該「処理中」の業務スレッドが実施するデータ処理方法と同じデータ処理方法を実施している該他の業務スレッドが「遅延中」ではないかを確認する（図４のステップＳ３１０）。時刻Ｔ２時点で、「遅延中」の業務スレッドはないので、出力制御部１２３は、「処理中」の業務スレッド１３０ｂ〜ｄでのデータ処理（すなわち、「ＤＢ−２」または「ＤＢー３」を更新対象とする「処理法Ｂ」のデータ処理）には遅延が発生していないと認識する。
【００８０】
この後、出力制御部１２３は、一定時間経過後、図４のステップＳ３０２の「処理中」の業務スレッドの存在確認に戻る（図４のステップＳ３２０）。すなわち、出力制御部１２３は、時刻Ｔ２時点では、業務スレッド１３０ｂ〜ｄが遅延せず正常に処理を行っているため、業務スレッド１３０ｂ〜ｄの処理が完了するか、または、遅延とみなされるまで、上記バッファ領域に格納した業務スレッド１３０ａからの処理結果データの記憶装置４００への出力を待ち合わせる。
【００８１】
次に、時刻Ｔ１から５００ｍｓ経過後の時刻Ｔ３時点の動作を説明する。
【００８２】
上述したとおり、遅延判定部１２２は、業務スレッド１３０ａ〜ｄでのデータ処理開始後、１００ｍｓ周期で遅延判定の動作を行っているため、時刻Ｔ３のタイミングでも遅延判定を行う。
【００８３】
図６に示すとおり、業務スレッド１３０ｂ〜ｄは、この時点ではまだデータ処理を終えていない。
【００８４】
図３を参照して、時刻Ｔ３における遅延判定部１２２の遅延判定の動作を説明する。
【００８５】
まず、遅延判定部１２２は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ２時点））のステータス欄を上から順に見ていき、「処理中」の業務スレッドを探す（図３のステップＳ２０１）。このとき業務スレッド１３０ａは「完了」しているので該当せず、初めに該当するのは業務スレッド１３０ｂである。なお、「処理中」の業務スレッドがない場合、遅延判定部１２２は、これで遅延判定動作を終了する。
【００８６】
次に、遅延判定部１２２は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ２時点））と遅延判定リスト１５０（図７の遅延判定リスト（Ｔ２時点））とから、ステータス欄が「処理中」となっている業務スレッドが処理している処理データ群のデータサイズと、処理の開始時刻およびデータ処理方法に対応する遅延基準値を取得する（図３のステップＳ２０２）。
【００８７】
ここで業務スレッド１０３ｂの上記各種情報として、業務スレッドステータスリスト（Ｔ２時点）のデータサイズ欄から、データサイズが「３００ＫＢ」であり、同リストの開始時刻欄から、開始時刻が「Ｔ１」であることが分かる。また、業務スレッドステータスリスト（Ｔ２時点）のデータ処理方法欄および更新ＤＢ欄から、業務スレッド１３０ｂに対応するデータ処理方法および更新ＤＢはそれぞれ「処理法Ｂ」および「ＤＢ−２」であることが分かるので、遅延判定リスト（Ｔ２時点）のデータ処理方法欄の内容が「処理法Ｂ」で且つ同リストの更新ＤＢ欄の内容が「ＤＢ−２」であるという条件を満たす、同リストの遅延基準値欄の、行の内容から、遅延基準値は、「１．５」であることが分かる。
【００８８】
次に、遅延判定部１２２は、時刻Ｔ３において、遅延判定を行っている当該業務スレッドが遅延しているかどうかを判断する（図３のステップＳ２０３）。その方法は以下の通りである。
【００８９】
まず、遅延判定部１２２は、業務スレッド１３０ｂでのデータ処理が今終了したと仮定して、仮の処理データ群１ＫＢあたりの処理時間を計算する。計算式は以下のとおりである。
【００９０】
仮の１ＫＢあたりの処理時間＝（現在時刻−開始時刻）／データサイズ＝５００／３００≒１．７
次に、遅延判定部１２２は、計算した処理時間と図３のステップＳ２０２で取得した遅延基準値とを比較し、計算した処理時間が遅延基準値以上であった場合は、その業務スレッド１３０を「遅延中」と判定する。すなわち、時刻Ｔ３時点で処理が終了していない業務スレッド１３０ｂの仮の１ＫＢあたりの処理時間は少なくとも１．７より長くなり、遅延基準値である１．５以上なので、業務スレッド１３０ｂは「遅延中」と判定される。
【００９１】
判定結果が「遅延中」の場合、遅延判定部１２２は、業務スレッドステータスリスト１４０の遅延している業務スレッドに対応するステータス欄を「遅延中」に変更する（図３のステップＳ２０４）。ここでは、業務スレッド１３０ｂは遅延中と判定されたため、図７の業務スレッドステータスリスト（Ｔ３時点）に示すように、業務スレッド１３０ｂに対応するステータス欄は「遅延中」に更新される。
【００９２】
なお、図３のステップＳ２０３で、遅延していないと判定された場合は、何もせず次の「処理中」の業務スレッドの処理に移る。
【００９３】
遅延判定部１２２は、これらの動作を全ての「処理中」の業務スレッドについて行う。すなわち、本実施形態では、残りの業務スレッド１３０ｃおよび業務スレッド１３０ｄについても実施する。
【００９４】
図３のステップＳ２０３において、仮の１ＫＢあたりの処理時間は、業務スレッド１３０ｃについては約０．８、業務スレッド１３０ｄについては１と算出されるので、遅延判定部１２２は、時刻Ｔ３時点ではどちらのスレッドも遅延していないと判定する。結果として、業務スレッドステータスリスト１４０の内容は、図７の業務スレッドステータスリスト（Ｔ３時点）の通りとなる。
【００９５】
以上のような遅延判定動作を、遅延判定部１２２が周期的（１００ｍｓ毎）に行う。
【００９６】
次に、時刻Ｔ１から７００ｍｓ経過後の時刻Ｔ４時点の動作を説明する。
【００９７】
時刻Ｔ４において、業務スレッド１３０ｃが与えられた処理データ群のデータ処理を完了したとする。なお、図６に示すとおり、時刻Ｔ４では、業務スレッド１３０ａは既に処理を完了しており、遅延と判定された業務スレッド１３０ｂと、業務スレッド１３０ｄとは、この時点ではまだデータ処理を終えていない。
【００９８】
まず、業務スレッド１３０ｃは、データ処理を完了すると、図５のステップＳ４０７までの処理を上述したとおりに実施する。すなわち、業務スレッド１３０ｃは、遅延判定リスト１５０のデータ処理方法欄の内容が「処理法Ｂ」で且つ同リストの更新ＤＢ欄の内容が「ＤＢ−３」であるという条件を満たす、同リストの遅延基準値欄の、行の内容を「１．８」に書き換え（図７の遅延判定リスト（Ｔ４時点）参照）、業務スレッドステータスリスト１４０の自スレッドのステータス欄を「完了」に変更し（図７の業務スレッドステータスリスト（Ｔ４時点）参照）、出力制御部１２３に処理結果データの引渡しと処理完了通知の送信とを行う。
【００９９】
以下、処理完了通知を受信した出力制御部１２３の動作については、時刻Ｔ２時点の動作と異なる点のみ説明する
まず、出力制御部１２３は、業務スレッド１３０ｃからの処理完了通知と処理結果データとを受け取ると、当該処理結果データを先の業務スレッド１３０ａの処理結果データと合わせてメモリ１６０内のバッファ領域に格納する（図４のステップＳ３０１）。
【０１００】
次に、出力制御部１２３は、現時点（Ｔ４時点）で「処理中」の業務スレッドが存在するかどうかを確認し、今回は、業務スレッド１３０ｄのみが「処理中」であると認識する（図４のステップＳ３０２）。
【０１０１】
「処理中」の業務スレッド１３０ｄが存在するので、出力制御部１２３は、「遅延中」の業務スレッドを探し、今回は、業務スレッド１３０ｂが遅延していることを認識する。ここでさらに、出力制御部１２３は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ４時点））を参照し、「処理中」の業務スレッド１３０ｄでの更新対象である更新ＤＢおよびデータ処理方法と、「遅延中」の業務スレッド１３０ｂでの更新対象である更新ＤＢおよびデータ処理方法とを比較する。どちらも更新ＤＢは「ＤＢ−２」であり、データ処理方法は「処理法Ｂ」であり一致するので、出力制御部１２３は、「処理中」の業務スレッド１３０ｄで実施されているデータ処理と『同じデータベースを更新対象とする同じデータ処理方法』すなわち『「ＤＢ−２」を更新対象とする「処理法Ｂ」』に遅延が発生していると認識する。そこで、出力制御部１２３は、業務スレッド１３０ｄの処理も遅延するとみなす。業務スレッド１３０ｄ以外の「処理中」の業務スレッドはないので結局、現時点では、データ処理に遅延がなく正常な処理を継続している「処理中」の業務スレッドが１つも存在しないと判断する。
【０１０２】
すなわち、出力制御部１２３は、すべての「処理中」スレッドのそれぞれについて、当該「処理中」の業務スレッドが更新する更新ベータベースと同じ更新データベースを更新する他の業務スレッドであって、当該「処理中」の業務スレッドが実施するデータ処理方法と同じデータ処理方法を実施する該他の業務スレッドが「遅延中」であるか否かを判断する（図４のステップＳ３１０）。
【０１０３】
そこで、出力制御部１２３は、この時点でデータ処理を「完了」している業務スレッド１３０ａおよび１３０ｃでの処理結果データのみを出力する（図４のステップＳ３０３）。すなわち、メモリ１６０のバッファ領域に格納していた業務スレッド１３０ａおよび１３０ｃでの処理結果データを１つの出力ファイル４１０−１にまとめて、記憶装置４００に出力する。
【０１０４】
その後、出力制御部１２３は、業務スレッド１３０ａおよび１３０ｃにコミット指示を送信する（図４のステップＳ３０４）。
【０１０５】
業務スレッド１３０ａおよび１３０ｃは、コミット指示を受信すると（図５のステップＳ４０８）、それぞれが更新したデータベース３００−１および３００−３のコミット処理を行い、データベースの更新を確定する（図５のステップＳ４０９）。
【０１０６】
最後に、業務スレッド１３０ａおよび１３０ｃは、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ４時点））から、自スレッドに対応する、スレッドＩＤ欄以外の欄の、内容を消去し、業務スレッド制御部１２１に指示された処理データ群に関する処理を終了する。
【０１０７】
このようにして、出力制御部１２３は、遅延した業務スレッド１３０ｂと遅延するとみなされた業務スレッド１３０ｄとの処理完了を待たずに、先に処理が完了した業務スレッド１３０ａおよび１３０ｃの処理結果データのファイル出力とデータベース更新のコミットとを一括して行い、業務スレッド１３０ａおよび１３０ｃを解放する。
【０１０８】
以下に、遅延した業務スレッド１３０ｂと遅延するとみなされた業務スレッド１３０ｄとについて、それらでのデータ処理の完了までを説明する。
【０１０９】
業務スレッド１３０ｂは、時刻Ｔ１から９００ｍｓ経過後の時刻Ｔ５に、遅延していたデータ処理を完了したとする。このとき、図６に示すとおり、業務スレッド１３０ｄはまだデータ処理を終えていない。さらに、業務スレッド１３０ｄは、時刻Ｔ１から７５０ｍｓ経過以降（本実施形態では判定周期が１００ｍｓ毎のため８００ｍｓ時点）に遅延判定部１２２によって遅延が発生したと判定され、業務スレッドステータスリスト１４０の業務スレッド１３０ｄに対応するステータス欄の内容はすでに「遅延中」と書き換えられている。
【０１１０】
業務スレッド１３０ｂは、データ処理を完了すると、業務スレッドステータスリスト１４０の自スレッドのステータス欄の内容を確認し、その内容が「遅延中」となっているか否かを判定する（図５のステップＳ４０３）。このときのステータス欄の内容は「遅延中」となっているため、業務スレッド１３０ｂは、遅延判定リスト１５０の更新を行わず、図５のステップＳ４０５以降の処理を行う。
【０１１１】
すなわち、業務スレッドｂは、業務スレッドステータスリスト１４０の自スレッドに対応するステータス欄の内容を「完了」に更新し（図７の業務スレッドステータスリスト（Ｔ５時点）参照）（図５のステップＳ４０５）、制御スレッド１２０の出力制御部１２３に対して、処理結果データの引き渡しと処理完了通知の送信とを行う（図５のステップＳ４０６）。この後、業務スレッド１３０ａは、制御スレッド１２０からコミット指示を受信するまで待機する（図５のステップＳ４０７）。
【０１１２】
業務スレッド１３０ｂからの処理完了通知および処理結果データを受信した出力制御部１２３は、業務スレッドステータスリスト１４０（図７の業務スレッドステータスリスト（Ｔ５時点））のステータス欄の内容を参照し、その内容が「処理中」となっている業務スレッドが存在するか否かを判定し（図４のステップＳ３０２）、「処理中」の業務スレッドが存在しないため、データ処理を「完了」している業務スレッド１３０ｂでの処理結果データだけを新たな出力ファイル４１０−２として記憶装置４００に出力するとともに（図４のステップＳ３０３）、業務スレッド１３０ｂにコミット指示を送信する（図４のステップＳ３０４）。
【０１１３】
次に、最後に残った業務スレッド１３０ｄは、時刻Ｔ１から１５００ｍｓ経過後の時刻Ｔ６に、遅延していたデータ処理を完了したとする。データ処理完了後の業務スレッド１３０ｄの動作は、上述した業務スレッド１３０ｂと全く同じである。また、業務スレッド１３０ｄからの処理完了通知を受信した出力制御部１２３の動作も上述した業務スレッド１３０ｂに対する動作と全く同じである。
【０１１４】
以上の動作により、時刻Ｔ４（時刻Ｔ１から７００ｍｓ経過）時点で、業務スレッド１３０ａおよび１３０ｃでの処理結果データを含む出力ファイル４１０−１が記憶装置４００に出力され、時刻Ｔ５（時刻Ｔ１から９００ｍｓ経過）時点で、業務スレッド１３０ｂでの処理結果データを含む出力ファイル４１０−２が記憶装置４００に出力され、時刻Ｔ６（時刻Ｔ１から１５００ｍｓ経過）時点で、業務スレッド１３０ｄの処理結果データを含む出力ファイル４１０−３が記憶装置４００に出力される。また、時刻Ｔ４時点で、データベース３００−１および３００−３がデータベース３００−２に先んじてコミットされる。
【０１１５】
このように、本実施形態によれば、データベース３００−２を更新対象とする「処理法Ｂ」を実施する業務スレッド１３０ｂおよび業務スレッド１３０ｄでのデータ処理に遅延が発生した場合でも、その遅延の影響を受けない業務スレッド１３０ａおよび１３０ｃでの処理結果データを含む出力ファイルを先に記憶装置４００に出力し、遅延している業務スレッド１３０ｂおよび業務スレッド１３０ｄに無関係なデータベース３００−１および３００−３を先にコミットさせることができる。
【０１１６】
また、遅延していない業務スレッド１３０ａおよび１３０ｃでの処理結果データを一括して記憶装置４００に書き込むことで書込み処理を１回で済ませることができ、総合的に見て、記憶装置４００へのデータ書き込みのスループットの低下を可能な限り抑制している。
【０１１７】
以上説明したように、本実施形態には、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムにおいて、一部のデータベースを利用するデータ処理に遅延が予想外に発生した場合にも、遅延の影響を受けていない他の複数のデータ処理での処理結果データの記憶装置への一括書き込みを可能にし、その結果、遅延の影響を受けていない当該他の複数のデータ処理での処理結果データを遅滞なく利用することができるという効果がある。
【０１１８】
その理由は、データ処理の遅延が発生したスレッドを検出し、遅延が発生したスレッドが利用するデータベースと同じデータベースに対して同じデータ処理方法でデータ処理を行う他のスレッドも遅延が発生するとみなして、それらの遅延スレッドの処理完了を待ち合わせずに、遅延の影響を受けなかったスレッドでの処理結果データだけを先に一括して記憶装置に書き込むためである。
【０１１９】
なお、業務スレッドステータスリスト１４０の開始時刻欄は、遅延を判定するための時刻情報であれば良く、例えば、それ以上処理完了が遅れたら遅延とみなす遅延確定時刻などでも良い。
【符号の説明】
【０１２０】
１００、５００    データ処理装置
１１０、５１０    データ処理実行プロセス
１２０、５２０    制御スレッド
１２１    業務スレッド制御部
１２２    遅延判定部
１２３    出力制御部
１３０ａ〜ｄ、５３０ａ〜ｄ    業務スレッド
１４０    業務スレッドステータスリスト
１５０    遅延判定リスト
１６０    メモリ
２００、４００、７００、８００    記憶装置
２１０、６００    入力ファイル
３００−１〜３、６１０−１〜３    データベース
４１０−１〜３、６２０    出力ファイル
【図１】
2014089572.tif 000003
【図２】
2014089572.tif 000004
【図３】
2014089572.tif 000005
【図４】
2014089572.tif 000006
【図５】
2014089572.tif 000007
【図６】
2014089572.tif 000008
【図７】
2014089572.tif 000009
【図８】
2014089572.tif 000010
【図９】
2014089572.tif 000011