特許第5998851号(P5998851)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許5998851データ処理システム、データ処理方法およびデータ処理プログラム
<>
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000002
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000003
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000004
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000005
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000006
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000007
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000008
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000009
  • 特許5998851-データ処理システム、データ処理方法およびデータ処理プログラム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5998851
(24)【登録日】2016年9月9日
(45)【発行日】2016年9月28日
(54)【発明の名称】データ処理システム、データ処理方法およびデータ処理プログラム
(51)【国際特許分類】
   G06F 9/52 20060101AFI20160915BHJP
【FI】
   G06F9/46 475A
【請求項の数】9
【全頁数】22
(21)【出願番号】特願2012-238896(P2012-238896)
(22)【出願日】2012年10月30日
(65)【公開番号】特開2014-89572(P2014-89572A)
(43)【公開日】2014年5月15日
【審査請求日】2015年9月18日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】大木 遼
【審査官】 圓道 浩史
(56)【参考文献】
【文献】 特開2011−070310(JP,A)
【文献】 再公表特許第2012/086041(JP,A1)
【文献】 特開2003−036210(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するデータ処理装置において、
スレッドステータスリストと、遅延判定リストと、制御部と、遅延判定部と、出力制御部とを有し、
前記ステータスリストは、前記複数の業務スレッドに一対一対応する複数のスレッドステータスデータを有し、
各前記スレッドステータスデータは、対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とを有し、
前記遅延判定リストは、各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有し、
前記制御部は、外部から与えられた複数の前記処理対象データ群を読み込んで複数の前記業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示し、
各前記業務スレッドは、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報とを登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新し、
前記遅延判定部は、所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新し、
前記出力制御部は、前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する
ことを特徴とするデータ処理装置。
【請求項2】
前記出力制御部は、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項1記載のデータ処理装置。
【請求項3】
前記出力制御部は、前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項1または請求項2記載のデータ処理装置。
【請求項4】
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストと
を備えたデータ処理装置で使用するデータ処理方法において、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始ステップと、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新するデータ処理ステップと、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定ステップと、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御ステップと
を含むことを特徴とするデータ処理方法。
【請求項5】
前記出力制御ステップにおいて、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項4記載のデータ処理方法。
【請求項6】
前記出力制御ステップにおける前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項4または請求項5記載のデータ処理方法。
【請求項7】
複数のデータ処理を自コンピュータ上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストと
を備えたコンピュータで実行されるデータ処理プログラムにおいて、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始処理と、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新する情報登録・更新処理と、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定処理と、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御処理と
を前記コンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項8】
前記出力制御処理において、遅延が発生した業務スレッドが更新するデータベースと同じデータベースに対して、同じデータ処理方法でデータ処理を行う他の業務スレッドをも遅延が発生したとみなす
ことを特徴とする請求項7記載のデータ処理プログラム。
【請求項9】
前記出力制御処理における前記処理結果データの出力において、その時点で処理を完了しているすべての業務スレッドに対し、当該各業務スレッドが更新した前記データベースのコミットを指示して更新結果を確定させる
ことを特徴とする請求項7または請求項8記載のデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システム、データ処理方法およびデータ処理プログラムに関し、特に、複数のデータ処理での処理結果を一括出力するデータ処理システム、データ処理方法およびデータ処理プログラムに関する。
【背景技術】
【0002】
ほぼ同時間帯に大量に発生するデータに対して複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムが一般的に知られている。
【0003】
係るデータ処理システムの一例について、図8を参照して説明する。
【0004】
図8を参照すると、係るデータ処理システムは、各種のデータ処理を実行するコンピュータ等のデータ処理装置500と、入力ファイル600を記憶している記憶装置700と、出力ファイル620を格納する記憶装置800と、それぞれ複数のファイルを格納した3つのデータベース610−1、610−2および610−3とから構成されている。
【0005】
次に本データ処理システムの動作について説明する。
【0006】
まず、データ処理装置500上においてあるデータの処理を行うために、データ処理実行プロセス510がデータ処理装置500上で事前に起動しているものとする。
【0007】
次に、起動中のデータ処理実行プロセス510は、実際に当該データ処理を行う4つの業務スレッド530a〜d(ここで、「スレッド」とは、「並列処理に対応したオペレーティングシステム上でのプログラムの最小の実行単位」を言う。)と、業務スレッド530a〜dを制御する制御スレッド520とを起動させ、常駐させておく。
【0008】
次に、記憶装置700から当該データ処理の対象となる大量の入力データを含む入力ファイル600がデータ処理装置500に与えられると、制御スレッド520が入力ファイル600からファイル600内の全データを読み込んで、それらのデータを関連する業務別にまとめて、4つの処理データ群を作成する。
【0009】
次に、制御スレッド520は、4つの業務スレッド530a〜dに、4つの上記処理データ群を一対一対応に渡し、それらの処理データ群に対するデータ処理の開始を指示する。ここで、各処理データ群のデータ量は、各業務スレッド530a〜dでのデータ処理が完了するまでに要する時間がほぼ等しくなるように、決定される。
【0010】
データ処理の開始を指示された業務スレッド530a〜dは、それぞれ渡された処理データ群に対するデータ処理を同時並行的に行う。このように、複数のスレッドでデータ処理を同時並行的に行うことを一般的にマルチスレッド処理と言う。
【0011】
業務スレッド530a〜dでのデータ処理の実行中に、各業務スレッド530a〜dが処理結果を出力先のデータベースに随時出力し、データベース610−1〜610−3の内容を随時更新する場合があるが、その際、その各更新と同時にはデータベース610−1〜610−3のコミット(更新内容の確定)は行わず、制御スレッド520からのコミット指示があるまで待つ。
【0012】
ここで、データベースのコミットとは、データベースに対して行った更新を正式に反映し、誰もが更新内容を見ることができるようにすることである。
【0013】
多くのデータベースは、コミットされるまで更新箇所を他の利用者が参照や更新できないように制御され、これにより、もし一連のデータ処理中に行ったデータベースの更新において、その更新に異常があったとき、その更新箇所をコミットする前であれば、その更新を取り消すことができ、その結果、他の利用者による誤った更新結果の参照等を回避できる。したがって、コミットは、ある業務スレッドにおける一連のデータ処理中に行われるデータベースの全ての更新処理が正常に完了して、更新の取り消しが必要ないことが確定した後に、その全ての更新箇所に対してまとめて実施される。
【0014】
業務スレッド530a〜dは、与えられた処理データ群に対するデータ処理が完了すると、処理完了通知を制御スレッド520に送り、さらにファイル620に出力するべき処理結果データを制御スレッド520にそれぞれ渡す。
【0015】
制御スレッド520は、全ての業務スレッド530a〜dから処理完了通知を受けると、全ての業務スレッド530a〜dから受け取った処理結果データを1つにまとめ、出力ファイル620に出力する。
【0016】
ここで、全ての業務スレッド530a〜dから処理完了通知を受けとった後、それらの業務スレッド530a〜cから受け取った処理結果データを一括して出力ファイル620に出力する、すなわち、書き込む理由は、処理結果データの発生の度に書き込むよりも、全ての処理結果データが揃うまで待って一括して書き込んだ方が、ファイル620に対する書き込み処理回数が減少し、出力ファイル620へのデータ書き込みのスループットが総合的に見て高くなるからである。
【0017】
制御スレッド520は、出力ファイル620への処理結果データの出力が完了すると、各業務スレッド530にコミット指示を送る。
【0018】
コミット指示に応答して、各業務スレッド530a〜dは、自身が更新を行ったデータベースに対して、更新を確定させるコミット処理を行う。
【0019】
以上で、入力ファイル600に関する全てのデータ処理が完了する。
【0020】
図9a)に、各業務スレッド530a〜dでのデータ処理の開始からデータベース610−1〜610−3のコミットまでの流れを示す。
【発明の概要】
【発明が解決しようとする課題】
【0021】
しかしながら、図8に示したデータ処理システムにおけるデータベースの更新を含むデータ処理においては、しばしば特定のデータベースに対する更新処理の集中などのために、予想外に特定の業務スレッドでデータ処理に時間を要し、当該スレッドでのデータ処理の完了に遅延を生じる場合がある。
【0022】
図9b)は、業務スレッド530bおよび530dでのデータ処理の完了が遅延した場合の例を示す。この場合、他の業務スレッド530aおよびcのデータ処理が終了して、それらの業務スレッド530aおよびcでの処理結果データが揃っているにもかかわらず、業務スレッド530bおよびdでの処理結果データが揃っていないため、最も遅延した業務スレッド530dでのデータ処理が完了して全ての処理結果データが揃うまで出力ファイル620への処理結果データの出力は待たされることになり、その結果、全体的な処理時間の増大を招くという問題点が図8に示すデータ処理システムにはある。
【0023】
本発明の目的は、上述した問題点を解決できるデータ処理システム、データ処理方法およびデータ処理プログラムを提供することにある。
【課題を解決するための手段】
【0024】
本発明のデータ処理装置は、複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行する装置であって、
スレッドステータスリストと、遅延判定リストと、制御部と、遅延判定部と、出力制御部とを有し、
前記ステータスリストは、前記複数の業務スレッドに一対一対応する複数のスレッドステータスデータを有し、
各前記スレッドステータスデータは、対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とを有し、
前記遅延判定リストは、各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有し、
前記制御部は、外部から与えられた複数の前記処理対象データ群を読み込んで複数の前記業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示し、各前記業務スレッドは、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報とを登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新し、
前記遅延判定部は、所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新し、
前記出力制御部は、前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する。
【0025】
また、本発明のデータ処理方法は、
複数のデータ処理を自装置上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストとを備えたデータ処理装置で使用する方法であって、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始ステップと、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新するデータ処理ステップと、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定ステップと、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御ステップとを含む。
【0026】
さらに、本発明のデータ処理プログラムは、
複数のデータ処理を自コンピュータ上に生成された複数の業務スレッドで同時並行的に実行するとともに、
対応する前記業務スレッドを識別するID情報と、対応する前記業務スレッドが行うデータ処理の現在の処理状況を示すステータス情報と、対応する前記業務スレッドが行うデータ処理で更新する対象のデータベースを識別するデータベース識別情報と、対応する前記業務スレッドでのデータ処理方法を識別するデータ処理方法情報と、対応する前記業務スレッドが行うデータ処理の対象となる処理対象データ群のデータサイズ情報と、対応する前記業務スレッドが行うデータ処理の開始時刻を示す開始時刻情報とをそれぞれが有する、前記複数の業務スレッドに一対一対応する、複数のスレッドステータスデータからなるスレッドステータスリストと、
各前記データ処理方法情報と、各前記データ処理方法情報で識別される前記データ処理方法で更新される前記データベースを識別する前記データベース識別情報と、前記データ処理方法情報と前記データベース識別情報との各組合せに対応する各データ処理の前回の処理における処理対象データ群の所定単位サイズあたりの処理時間から求めた遅延基準値情報とを有する遅延判定リストとを備えたコンピュータで実行されるプログラムであって、
外部から与えられた複数の処理対象データ群を読み込んで前記複数の業務スレッドに分配し、各前記業務スレッドにデータ処理の開始を指示するデータ処理開始処理と、
データ処理の開始を指示された各前記業務スレッドにおいて、自スレッドのデータ処理の開始前に、自スレッドに対応する前記スレッドステータスデータに、これから行うデータ処理に対応する、前記ステータス情報と前記データベース識別情報と前記データ処理方法情報と前記データサイズ情報と前記開始時刻情報を登録し、自スレッドの前記データ処理の完了時に、自スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、データ処理が完了したことを示す情報に更新する情報登録・更新処理と、
所定の周期で前記ステータスリストに登録された各前記スレッドステータスデータを参照し、まだ処理が完了していない業務スレッドに対し、当該業務スレッドに対応する前記スレッドステータスデータの前記データベース識別情報および前記データ処理方法情報に対応する前記遅延判定リストに登録された前記遅延基準値情報と、当該業務スレッドに対応する前記スレッドステータスデータの前記データサイズ情報および前記時刻情報とから、当該業務スレッドのデータ処理の遅延有無を判定し、遅延を検出したときには、当該業務スレッドに対応する前記スレッドステータスデータの前記ステータス情報を、遅延中を示す情報に更新する遅延判定処理と、
前記複数の業務スレッドのいずれかがデータ処理を完了した後に、各前記スレッドステータスデータに登録された前記ステータス情報と前記データベース識別情報と前記データ処理方法情報とを参照して、遅延が発生しておらず且つまだ処理中の業務スレッドがない場合に、その時点で処理を完了しているすべての業務スレッドでの処理結果データを一括して外部に出力する出力制御処理とを前記コンピュータに実行させる。
【発明の効果】
【0027】
本発明には、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムにおいて、一部のデータベースを利用するデータ処理に遅延が予想外に発生した場合にも、遅延の影響を受けていない他の複数のデータ処理での処理結果データの記憶装置への一括書き込みを可能にし、その結果、遅延の影響を受けていない当該他の複数のデータ処理での処理結果データを遅滞なく利用することができるという効果がある。
【図面の簡単な説明】
【0028】
図1】本発明の実施形態の構成を示すブロック図である。
図2】本発明の実施形態における業務スレッド制御部121での処理を示すフローチャートである。
図3】本発明の実施形態における遅延判定部122での処理を示すフローチャートである。
図4】本発明の実施形態における出力制御部123での処理を示すフローチャートである。
図5】本発明の実施形態における業務スレッドが実行する処理を示すフローチャートである。
図6】本発明の実施形態における業務スレッドの処理フローの一例を示す図である。
図7】本発明の実施形態における業務スレッドステータスリストと遅延判定リストとの変化の様子を示す図である。
図8】データベースの更新を伴う処理を実行する一般的なデータ処理システムの構成を示すブロック図である。
図9】データベースの更新を伴う処理を実行する一般的なデータ処理システムの業務スレッドの処理フローを示す図である。
【発明を実施するための形態】
【0029】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【0030】
図1は、本発明の実施形態の構成を示すブロック図である。
【0031】
図1を参照すると、本実施形態に係るデータ処理システムは、データ処理装置100と、入力ファイル210を記憶している記憶装置200と、出力ファイル410を格納する記憶装置400と、それぞれ複数のファイルを格納した3つのデータベース300−1〜3から構成される。
【0032】
データ処理装置100は、プログラム制御により動作する一般的な情報処理装置(コンピュータ)によって構成される。
【0033】
記憶装置200および400は、例えば、ディスク装置や半導体メモリ装置により実現される。
【0034】
少なくとも一つの入力ファイル210は、それぞれ、データ処理装置100の行うデータ処理の対象となる大量の入力データおよび各入力データの処理方法を指定する情報などを含む。
【0035】
記憶装置400は、データ処理装置100が生成する出力ファイル410を記憶する。
【0036】
データ処理装置100は、データ処理実行プロセス110と、メモリ160とを含む。
【0037】
すなわち、本実施形態では、データ処理装置100に搭載されたオペレティングシステム(図示せず)が、データ処理装置100上において各種のデータ処理を行うために、データ処理実行プロセス110を予め生成し起動させてあるものとする。なお、ここで言う「プロセス」とは、コンピュータ分野においてよく知られている概念であり、その詳細な説明は省略する。
【0038】
起動中のデータ処理実行プロセス110は、実際にデータ処理を行う4つの業務スレッド130a〜dと、業務スレッド130a〜dを制御する制御スレッド120とを起動させ、常駐させておく。
【0039】
メモリ160は、全ての業務スレッド130a〜dのデータ処理の現況を格納している業務スレッドステータスリスト140と、各データベース300−1〜3に対する処理別にその処理に要する時間の基準値を格納している遅延判定リスト150とを記憶しており、制御スレッド120および業務スレッド130a〜dはそれらリスト140および150にアクセスが可能である。
【0040】
制御スレッド120は、業務スレッド制御部121と、遅延判定部122と、出力制御部123とを有する。
【0041】
業務スレッド制御部121は、入力ファイル210から入力データを読み込み、4つの業務スレッド130a〜dを制御してデータ処理を開始させる。
【0042】
遅延判定部122は、定期的に業務スレッドステータスリスト140を参照し、遅延判定リスト150の情報に基づいて、業務スレッド130a〜dでのデータ処理の遅延発生の有無を判定する。なお、以下の説明では、遅延判定部122によって、データ処理に遅延が発生したと判定された業務スレッドを「遅延中の業務スレッド」または「遅延した業務スレッド」と言う。
【0043】
出力制御部123は、4つの業務スレッド130a〜dでの処理結果の出力を制御する。すなわち、業務スレッド130a〜dは、それらでの処理結果を、ファイル410に直接出力するのではなく、出力制御部123に一旦渡す。処理結果を渡された出力制御部123は、自身で決定したタイミングで、当該処理結果を出力ファイル410へ出力する。また、出力制御部123は、業務スレッド130a〜dに、業務スレッド130a〜dが更新したデータベースのコミットを指示する。
【0044】
業務スレッド130a〜dは、入力ファイル210から業務スレッド制御部121を介してそれぞれ与えられた処理データ群を指示されたデータ処理方法で同時並行的に処理し、業務スレッドステータスリスト140と遅延判定リスト150とを随時更新する。
【0045】
なお、本実施形態では、業務スレッド130の数は4つ、データベースの数は3つとしたが、これらは一例であり、これらに限定されるものではない。
【0046】
図6は、業務スレッド130a〜dでのデータ処理の流れを示す。
【0047】
図7は、図6の時刻T1〜T5の各時点における業務スレッドステータスリスト140および遅延判定リスト150の内容を示す。
【0048】
延判定リスト150には、あらかじめ、以前のデータ処理におけるデータ処理速度から求めた、または、任意に定めた遅延基準値が格納されているものとする。
【0049】
遅延判定リスト150は、データ処理方法を示すデータ処理方法情報を登録するデータ処理方法欄と、当該データ処理方法情報で識別されるデータ処理方法で更新されるデータベースを識別するデータベース識別情報を登録する更新DB欄と、上記の遅延基準値である遅延基準値情報を登録する遅延基準値欄とから構成される。遅延基準値は、前回のデータ処理における処理データ群1KBあたりの処理時間に(1+遅延許容率)を掛けた値である。
【0050】
例えば、図7の遅延判定リスト(T1時点)の2行目を見ると、データ処理方法欄には「処理法A」が、更新DB欄には「DB−1」が、および、遅延基準値欄には1.5がそれぞれ登録されている。これは、データ処理方法が「処理法A」で更新処理対象のデータベースが「DB−1」であるデータ処理であることを示している。
【0051】
係るデータ処理において、1KBあたりの処理時間が1.6になった場合には、この1.6という値は、対応する遅延基準値欄が示す値である1.5を越えているので、DB−1を対象とする処理法Aのデータ処理は「遅延している」とみなされる。すなわち、遅延基準値はデータ処理の遅延を判定するための閾値である。
【0052】
遅延許容率は、データ処理の業務内容にあわせて設定する任意の値であり、本実施形態では遅延許容率を0.5とする。
【0053】
本実施形態では、遅延判定リスト150は、あらかじめ図7の遅延判定リスト(T1時点)の通りに設定されているものとする。
【0054】
次に、本実施形態の動作について、図2図5を参照して詳細に説明する。
【0055】
まず、記憶装置200からデータ処理の対象となる大量の入力データを含む入力ファイル210がデータ処理装置100に与えられると、制御スレッド120の業務スレッド制御部121がその入力ファイル210内の全データを読み込む(図2のステップS101)。
【0056】
次に、業務スレッド制御部121は、入力ファイル210から読み込んだ、各入力データの処理方法を指定する、情報に従って、読み込んだ入力データを関連する処理法別にまとめて、4つの処理データ群を作成する(図2のステップS102)。
【0057】
次に、業務スレッド制御部121は、4つの業務スレッド130a〜dに、4つの上記処理データ群を一対一対応に渡し、それらの処理データ群それぞれに対するデータ処理方法を指定して、それらの処理データ群に対する処理の開始を指示する(図2のステップS103)。
【0058】
ここで、業務スレッド制御部121は、業務スレッド130aに対して、データサイズが500KBの処理データ群を渡し、データ処理の開始を指示したとする。さらに、業務スレッド制御部121は、データ処理方法としてデータベース300−1(DB−1)の更新を伴う処理法Aを指定したとする。
【0059】
同様に、業務スレッド制御部121は、業務スレッド130b〜dにも、それぞれ300KB、600KBおよび500KBの処理データ群を渡してデータ処理の開始を指示するとともに、業務スレッド130bに対して、データ処理方法としてデータベース300−2(DB−2)の更新を伴う処理法Bを、業務スレッド130cに対して、データ処理方法としてデータベース300−3(DB−3)の更新を伴う処理法Bを、および、業務スレッド130dに対して、データ処理方法としてデータベース300−2(DB−2)の更新を伴う処理法Bをそれぞれ指定したとする。
【0060】
次に、データ処理の開始を指示された業務スレッド側の動作について、業務スレッド130aを代表例として、図5を参照して詳細に説明する。また、4つの業務スレッド130a〜dの動作の流れの相互関係を、図6および図7を参照して説明する。
【0061】
まず、業務スレッド130aは、業務スレッドステータスリスト140にこれから実施するデータ処理の情報を登録する(図5のステップS401)。このときの時刻をT1とする。このとき業務スレッド130b〜dも、図6に示すように、時刻T1に、同時並行的にデータ処理を開始する。
【0062】
図7に示すように、業務スレッドステータスリスト140は、データ処理を実行する業務スレッドを識別するスレッドID情報を登録するスレッドID欄、データ処理の現在状況を示すステータス情報を登録するステータス欄、データ処理中に更新する対象のデータベースを識別するデータベース識別情報を登録する更新DB欄、データ処理方法を示すデータ処理方法情報を登録するデータ処理方法欄、与えられた処理データ群のデータサイズをKB単位で表した値であるデータサイズ情報を登録するデータサイズ欄およびデータ処理を開始した時刻を示す開始時刻情報を登録する開始時刻欄から構成される。
【0063】
業務スレッドステータスリスト140の2行目以降の行は、複数の業務スレッドと一対一対応し、各行の全て欄の内容(情報)をまとめてスレッドステータスデータと言う。
【0064】
ここで、スレッドID欄において、「a」、「b」、「c」および「d」はそれぞれ業務スレッド130a、b、cおよびdを識別するスレッドIDであり、更新DB欄の「DB−1」、「DB−2」および「DB−3」はそれぞれデータベース300−1、300−2および300−3を識別するデータベース識別番号である。
【0065】
図7の業務スレッドステータスリスト(T1時点)に示すように、データ処理の開始前に、業務スレッド130aは、スレッドID欄に自スレッドを示す「a」、ステータス欄に「処理中」、更新DB欄にデータベース300−1を示す「DB−1」、データ処理方法欄に「処理法A」、データサイズ欄に「500」および開始時刻欄に現在時刻である「T1」を登録する。
【0066】
このとき、業務スレッド130b〜dも、同様に業務スレッドステータスリスト(T1時点)の各欄に自スレッドに対応する各情報を登録する。
【0067】
次に、業務スレッド130aは、指定された「処理法A」のデータ処理を実施する(図5のステップS402)。データ処理の間、業務スレッド130aは、必要に応じてデータベース300−1の更新を随時行う。このとき、データベース300−1のコミットは行わず、出力制御部123のコミット指示があるまで待つ。
【0068】
また、業務スレッド130a〜dでのデータ処理の開始後、遅延判定部122は、一定周期で各業務スレッド130a〜dの遅延判定を行い、遅延している業務スレッドについては業務スレッドステータスリスト140のステータス欄を「遅延中」に書き換える。本実施形態では、遅延判定動作の周期は100ms毎とする。遅延判定の詳細な動作は後述する。
【0069】
次に、データ処理開始時刻T1から400ms経過後の時刻T2時点の動作を説明する。
【0070】
時刻T2において、業務スレッド130aが与えられた処理データ群のデータ処理を完了したとする。なお、図6に示すとおり、業務スレッド130b〜dのいずれも、時刻T2ではまだデータ処理を終えておらず、また、この時点で「遅延中」と判定された業務スレッド130はないものとする。
【0071】
データ処理が完了すると、業務スレッド130aは、その時点の業務スレッドステータスリスト140(すなわち、図7の業務スレッドステータスリスト(T1時点))における自スレッドのステータスを確認する(図5のステップS403)。上述したとおり、時刻T2時点で、業務スレッド130aは「遅延中」とは判定されておらず、また、そのステータスは「処理中」のままである。
【0072】
自スレッドのステータス欄が「遅延中」ではないので、業務スレッド130aは、今回のデータ処理に要した処理時間から遅延基準値を算出して遅延判定リスト150を更新する(図5のステップS404)。ここで、遅延基準値は、上述したとおり、データ処理に要した処理データ群1KBあたりの処理時間に(1+遅延許容率)を乗じて求める。業務スレッド130aは、時刻T1にデータ処理を開始し、それから400ms経過した時刻T2に処理を終了したので、所要時間は400msであり、処理データ群のサイズは500KBである。したがって、業務スレッド130aの今回のデータ処理における遅延基準値は以下のような計算式で求められる。
【0073】
1KBあたりの処理時間=所要時間/処理データ群のサイズ=400/500=0.8(ms/KB)
遅延基準値=1KBあたりの処理時間*(1+遅延許容率)=0.8*1.5=1.2(ms/KB)
業務スレッド130aは、遅延判定リスト150のデータ処理方法欄が「処理法A」で且つ更新DB欄が「DB−1」であるという条件を満たす遅延基準値欄の内容を、算出した値である1.2に書き換える(図7の遅延判定リスト(T2時点)参照)。
【0074】
次に、業務スレッド130aは、業務スレッドステータスリスト140の自スレッドのステータス欄を「処理中」から「完了」に変更し(図7の業務スレッドステータスリスト(T2時点)参照)(図5のステップS405)、制御スレッド120の出力制御部123に対して、処理結果データの引渡しと処理完了通知の送信とを行う(図5のステップS406)。
【0075】
この後、業務スレッド130aは、制御スレッド120からコミット指示を受信するまで待機する(図5のステップS407)。
【0076】
次の、このようにして処理完了通知および処理結果データを業務スレッド130aから受信した出力制御部123の動作を、図4を参照して説明する。
【0077】
まず、出力制御部123は、業務スレッド130aから渡された処理結果データを、メモリ160内に設けたバッファ領域(図示せず)に格納する(図4のステップS301)。
【0078】
次に、出力制御部123は、現時点(T2時点)で「処理中」の業務スレッドが存在するかどうかを確認する(図4のステップS302)。すなわち、出力制御部122は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T2時点))のステータス欄を上から順に見ていき、「処理中」の業務スレッドが存在するかどうかを確認する。その結果、出力制御部123は、スレッドIDが「b」〜「d」である業務スレッド130b〜dの3つが「処理中」であると認識する。
【0079】
「処理中」の業務スレッド130b〜dが存在するので、次に、出力制御部123は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T2時点))のステータス欄を参照して、「処理中」の業務スレッド130b〜dのそれぞれについて、当該「処理中」の業務スレッドが更新する更新DBと同じ更新DBを更新する他の業務スレッドであって、当該「処理中」の業務スレッドが実施するデータ処理方法と同じデータ処理方法を実施している該他の業務スレッドが「遅延中」ではないかを確認する(図4のステップS310)。時刻T2時点で、「遅延中」の業務スレッドはないので、出力制御部123は、「処理中」の業務スレッド130b〜dでのデータ処理(すなわち、「DB−2」または「DBー3」を更新対象とする「処理法B」のデータ処理)には遅延が発生していないと認識する。
【0080】
この後、出力制御部123は、一定時間経過後、図4のステップS302の「処理中」の業務スレッドの存在確認に戻る(図4のステップS320)。すなわち、出力制御部123は、時刻T2時点では、業務スレッド130b〜dが遅延せず正常に処理を行っているため、業務スレッド130b〜dの処理が完了するか、または、遅延とみなされるまで、上記バッファ領域に格納した業務スレッド130aからの処理結果データの記憶装置400への出力を待ち合わせる。
【0081】
次に、時刻T1から500ms経過後の時刻T3時点の動作を説明する。
【0082】
上述したとおり、遅延判定部122は、業務スレッド130a〜dでのデータ処理開始後、100ms周期で遅延判定の動作を行っているため、時刻T3のタイミングでも遅延判定を行う。
【0083】
図6に示すとおり、業務スレッド130b〜dは、この時点ではまだデータ処理を終えていない。
【0084】
図3を参照して、時刻T3における遅延判定部122の遅延判定の動作を説明する。
【0085】
まず、遅延判定部122は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T2時点))のステータス欄を上から順に見ていき、「処理中」の業務スレッドを探す(図3のステップS201)。このとき業務スレッド130aは「完了」しているので該当せず、初めに該当するのは業務スレッド130bである。なお、「処理中」の業務スレッドがない場合、遅延判定部122は、これで遅延判定動作を終了する。
【0086】
次に、遅延判定部122は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T2時点))と遅延判定リスト150(図7の遅延判定リスト(T2時点))とから、ステータス欄が「処理中」となっている業務スレッドが処理している処理データ群のデータサイズと、処理の開始時刻およびデータ処理方法に対応する遅延基準値を取得する(図3のステップS202)。
【0087】
ここで業務スレッド103bの上記各種情報として、業務スレッドステータスリスト(T2時点)のデータサイズ欄から、データサイズが「300KB」であり、同リストの開始時刻欄から、開始時刻が「T1」であることが分かる。また、業務スレッドステータスリスト(T2時点)のデータ処理方法欄および更新DB欄から、業務スレッド130bに対応するデータ処理方法および更新DBはそれぞれ「処理法B」および「DB−2」であることが分かるので、遅延判定リスト(T2時点)のデータ処理方法欄の内容が「処理法B」で且つ同リストの更新DB欄の内容が「DB−2」であるという条件を満たす、同リストの遅延基準値欄の、行の内容から、遅延基準値は、「1.5」であることが分かる。
【0088】
次に、遅延判定部122は、時刻T3において、遅延判定を行っている当該業務スレッドが遅延しているかどうかを判断する(図3のステップS203)。その方法は以下の通りである。
【0089】
まず、遅延判定部122は、業務スレッド130bでのデータ処理が今終了したと仮定して、仮の処理データ群1KBあたりの処理時間を計算する。計算式は以下のとおりである。
【0090】
仮の1KBあたりの処理時間=(現在時刻−開始時刻)/データサイズ=500/300≒1.7
次に、遅延判定部122は、計算した処理時間と図3のステップS202で取得した遅延基準値とを比較し、計算した処理時間が遅延基準値以上であった場合は、その業務スレッド130を「遅延中」と判定する。すなわち、時刻T3時点で処理が終了していない業務スレッド130bの仮の1KBあたりの処理時間は少なくとも1.7より長くなり、遅延基準値である1.5以上なので、業務スレッド130bは「遅延中」と判定される。
【0091】
判定結果が「遅延中」の場合、遅延判定部122は、業務スレッドステータスリスト140の遅延している業務スレッドに対応するステータス欄を「遅延中」に変更する(図3のステップS204)。ここでは、業務スレッド130bは遅延中と判定されたため、図7の業務スレッドステータスリスト(T3時点)に示すように、業務スレッド130bに対応するステータス欄は「遅延中」に更新される。
【0092】
なお、図3のステップS203で、遅延していないと判定された場合は、何もせず次の「処理中」の業務スレッドの処理に移る。
【0093】
遅延判定部122は、これらの動作を全ての「処理中」の業務スレッドについて行う。すなわち、本実施形態では、残りの業務スレッド130cおよび業務スレッド130dについても実施する。
【0094】
図3のステップS203において、仮の1KBあたりの処理時間は、業務スレッド130cについては約0.8、業務スレッド130dについては1と算出されるので、遅延判定部122は、時刻T3時点ではどちらのスレッドも遅延していないと判定する。結果として、業務スレッドステータスリスト140の内容は、図7の業務スレッドステータスリスト(T3時点)の通りとなる。
【0095】
以上のような遅延判定動作を、遅延判定部122が周期的(100ms毎)に行う。
【0096】
次に、時刻T1から700ms経過後の時刻T4時点の動作を説明する。
【0097】
時刻T4において、業務スレッド130cが与えられた処理データ群のデータ処理を完了したとする。なお、図6に示すとおり、時刻T4では、業務スレッド130aは既に処理を完了しており、遅延と判定された業務スレッド130bと、業務スレッド130dとは、この時点ではまだデータ処理を終えていない。
【0098】
まず、業務スレッド130cは、データ処理を完了すると、図5のステップS407までの処理を上述したとおりに実施する。すなわち、業務スレッド130cは、遅延判定リスト150のデータ処理方法欄の内容が「処理法B」で且つ同リストの更新DB欄の内容が「DB−3」であるという条件を満たす、同リストの遅延基準値欄の、行の内容を「1.8」に書き換え(図7の遅延判定リスト(T4時点)参照)、業務スレッドステータスリスト140の自スレッドのステータス欄を「完了」に変更し(図7の業務スレッドステータスリスト(T4時点)参照)、出力制御部123に処理結果データの引渡しと処理完了通知の送信とを行う。
【0099】
以下、処理完了通知を受信した出力制御部123の動作については、時刻T2時点の動作と異なる点のみ説明する
まず、出力制御部123は、業務スレッド130cからの処理完了通知と処理結果データとを受け取ると、当該処理結果データを先の業務スレッド130aの処理結果データと合わせてメモリ160内のバッファ領域に格納する(図4のステップS301)。
【0100】
次に、出力制御部123は、現時点(T4時点)で「処理中」の業務スレッドが存在するかどうかを確認し、今回は、業務スレッド130dのみが「処理中」であると認識する(図4のステップS302)。
【0101】
「処理中」の業務スレッド130dが存在するので、出力制御部123は、「遅延中」の業務スレッドを探し、今回は、業務スレッド130bが遅延していることを認識する。ここでさらに、出力制御部123は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T4時点))を参照し、「処理中」の業務スレッド130dでの更新対象である更新DBおよびデータ処理方法と、「遅延中」の業務スレッド130bでの更新対象である更新DBおよびデータ処理方法とを比較する。どちらも更新DBは「DB−2」であり、データ処理方法は「処理法B」であり一致するので、出力制御部123は、「処理中」の業務スレッド130dで実施されているデータ処理と『同じデータベースを更新対象とする同じデータ処理方法』すなわち『「DB−2」を更新対象とする「処理法B」』に遅延が発生していると認識する。そこで、出力制御部123は、業務スレッド130dの処理も遅延するとみなす。業務スレッド130d以外の「処理中」の業務スレッドはないので結局、現時点では、データ処理に遅延がなく正常な処理を継続している「処理中」の業務スレッドが1つも存在しないと判断する。
【0102】
すなわち、出力制御部123は、すべての「処理中」スレッドのそれぞれについて、当該「処理中」の業務スレッドが更新する更新ベータベースと同じ更新データベースを更新する他の業務スレッドであって、当該「処理中」の業務スレッドが実施するデータ処理方法と同じデータ処理方法を実施する該他の業務スレッドが「遅延中」であるか否かを判断する(図4のステップS310)。
【0103】
そこで、出力制御部123は、この時点でデータ処理を「完了」している業務スレッド130aおよび130cでの処理結果データのみを出力する(図4のステップS303)。すなわち、メモリ160のバッファ領域に格納していた業務スレッド130aおよび130cでの処理結果データを1つの出力ファイル410−1にまとめて、記憶装置400に出力する。
【0104】
その後、出力制御部123は、業務スレッド130aおよび130cにコミット指示を送信する(図4のステップS304)。
【0105】
業務スレッド130aおよび130cは、コミット指示を受信すると(図5のステップS408)、それぞれが更新したデータベース300−1および300−3のコミット処理を行い、データベースの更新を確定する(図5のステップS409)。
【0106】
最後に、業務スレッド130aおよび130cは、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T4時点))から、自スレッドに対応する、スレッドID欄以外の欄の、内容を消去し、業務スレッド制御部121に指示された処理データ群に関する処理を終了する。
【0107】
このようにして、出力制御部123は、遅延した業務スレッド130bと遅延するとみなされた業務スレッド130dとの処理完了を待たずに、先に処理が完了した業務スレッド130aおよび130cの処理結果データのファイル出力とデータベース更新のコミットとを一括して行い、業務スレッド130aおよび130cを解放する。
【0108】
以下に、遅延した業務スレッド130bと遅延するとみなされた業務スレッド130dとについて、それらでのデータ処理の完了までを説明する。
【0109】
業務スレッド130bは、時刻T1から900ms経過後の時刻T5に、遅延していたデータ処理を完了したとする。このとき、図6に示すとおり、業務スレッド130dはまだデータ処理を終えていない。さらに、業務スレッド130dは、時刻T1から750ms経過以降(本実施形態では判定周期が100ms毎のため800ms時点)に遅延判定部122によって遅延が発生したと判定され、業務スレッドステータスリスト140の業務スレッド130dに対応するステータス欄の内容はすでに「遅延中」と書き換えられている。
【0110】
業務スレッド130bは、データ処理を完了すると、業務スレッドステータスリスト140の自スレッドのステータス欄の内容を確認し、その内容が「遅延中」となっているか否かを判定する(図5のステップS403)。このときのステータス欄の内容は「遅延中」となっているため、業務スレッド130bは、遅延判定リスト150の更新を行わず、図5のステップS405以降の処理を行う。
【0111】
すなわち、業務スレッドbは、業務スレッドステータスリスト140の自スレッドに対応するステータス欄の内容を「完了」に更新し(図7の業務スレッドステータスリスト(T5時点)参照)(図5のステップS405)、制御スレッド120の出力制御部123に対して、処理結果データの引き渡しと処理完了通知の送信とを行う(図5のステップS406)。この後、業務スレッド130aは、制御スレッド120からコミット指示を受信するまで待機する(図5のステップS407)。
【0112】
業務スレッド130bからの処理完了通知および処理結果データを受信した出力制御部123は、業務スレッドステータスリスト140(図7の業務スレッドステータスリスト(T5時点))のステータス欄の内容を参照し、その内容が「処理中」となっている業務スレッドが存在するか否かを判定し(図4のステップS302)、「処理中」の業務スレッドが存在しないため、データ処理を「完了」している業務スレッド130bでの処理結果データだけを新たな出力ファイル410−2として記憶装置400に出力するとともに(図4のステップS303)、業務スレッド130bにコミット指示を送信する(図4のステップS304)。
【0113】
次に、最後に残った業務スレッド130dは、時刻T1から1500ms経過後の時刻T6に、遅延していたデータ処理を完了したとする。データ処理完了後の業務スレッド130dの動作は、上述した業務スレッド130bと全く同じである。また、業務スレッド130dからの処理完了通知を受信した出力制御部123の動作も上述した業務スレッド130bに対する動作と全く同じである。
【0114】
以上の動作により、時刻T4(時刻T1から700ms経過)時点で、業務スレッド130aおよび130cでの処理結果データを含む出力ファイル410−1が記憶装置400に出力され、時刻T5(時刻T1から900ms経過)時点で、業務スレッド130bでの処理結果データを含む出力ファイル410−2が記憶装置400に出力され、時刻T6(時刻T1から1500ms経過)時点で、業務スレッド130dの処理結果データを含む出力ファイル410−3が記憶装置400に出力される。また、時刻T4時点で、データベース300−1および300−3がデータベース300−2に先んじてコミットされる。
【0115】
このように、本実施形態によれば、データベース300−2を更新対象とする「処理法B」を実施する業務スレッド130bおよび業務スレッド130dでのデータ処理に遅延が発生した場合でも、その遅延の影響を受けない業務スレッド130aおよび130cでの処理結果データを含む出力ファイルを先に記憶装置400に出力し、遅延している業務スレッド130bおよび業務スレッド130dに無関係なデータベース300−1および300−3を先にコミットさせることができる。
【0116】
また、遅延していない業務スレッド130aおよび130cでの処理結果データを一括して記憶装置400に書き込むことで書込み処理を1回で済ませることができ、総合的に見て、記憶装置400へのデータ書き込みのスループットの低下を可能な限り抑制している。
【0117】
以上説明したように、本実施形態には、複数のデータ処理をコンピュータで同時並行的に実行し、係るデータ処理の実行中に複数のデータベースを更新するデータ処理システムにおいて、一部のデータベースを利用するデータ処理に遅延が予想外に発生した場合にも、遅延の影響を受けていない他の複数のデータ処理での処理結果データの記憶装置への一括書き込みを可能にし、その結果、遅延の影響を受けていない当該他の複数のデータ処理での処理結果データを遅滞なく利用することができるという効果がある。
【0118】
その理由は、データ処理の遅延が発生したスレッドを検出し、遅延が発生したスレッドが利用するデータベースと同じデータベースに対して同じデータ処理方法でデータ処理を行う他のスレッドも遅延が発生するとみなして、それらの遅延スレッドの処理完了を待ち合わせずに、遅延の影響を受けなかったスレッドでの処理結果データだけを先に一括して記憶装置に書き込むためである。
【0119】
なお、業務スレッドステータスリスト140の開始時刻欄は、遅延を判定するための時刻情報であれば良く、例えば、それ以上処理完了が遅れたら遅延とみなす遅延確定時刻などでも良い。
【符号の説明】
【0120】
100、500 データ処理装置
110、510 データ処理実行プロセス
120、520 制御スレッド
121 業務スレッド制御部
122 遅延判定部
123 出力制御部
130a〜d、530a〜d 業務スレッド
140 業務スレッドステータスリスト
150 遅延判定リスト
160 メモリ
200、400、700、800 記憶装置
210、600 入力ファイル
300−1〜3、610−1〜3 データベース
410−1〜3、620 出力ファイル
図1
図2
図3
図4
図5
図6
図7
図8
図9