(57)【要約】  データ処理システムは、同種のデータが所定の単位で分割された複数の分割データを入力データとして格納する第１の記憶装置、複数の分割データの各々の第１の記憶装置への格納に応答して、各分割データを対象に処理を実行する親ジョブを元に子ジョブを生成する子ジョブ生成部、子ジョブ生成部により生成された子ジョブを起動する子ジョブ起動部、および、子ジョブの実行に伴う、各分割データに対応した出力データを格納する第２の記憶装置を有する。
2015125225.tif 000002
【特許請求の範囲】
【請求項１】
同種のデータが所定の単位で分割された複数の分割データを入力データとして格納する第１の記憶装置、
前記複数の分割データの各々の前記第１の記憶装置への格納に応答して、前記各分割データを対象に処理を実行する親ジョブを元に子ジョブを生成する子ジョブ生成部、
前記子ジョブ生成部により生成された前記子ジョブを起動する子ジョブ起動部、および、
前記子ジョブの実行に伴う、前記各分割データに対応した出力データを格納する第２の記憶装置を有することを特徴とするデータ処理システム。
【請求項２】
前記子ジョブ生成部および前記子ジョブ起動部を制御する並列実行制御部を有することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記並列実行制御部は、さらに前記各分割データを対象に処理を実行する前記子ジョブの実行の終了に応答して前記子ジョブを削除する子ジョブ削除部を制御することを特徴とする請求項２記載のデータ処理システム。
【請求項４】
前記複数の分割データの各々は、それぞれ異なる他のシステムから前記第１の記憶装置への格納されることを特徴とする請求項３記載のデータ処理システム。
【請求項５】
前記各分割データを対象に処理を実行する処理がカスケード構成をなすとき、前記カスケード構成をなす各処理に対応して処理ブロックを形成し、前記各処理ブロックの処理に対応して前記親ジョブを有することを特徴とする請求項４記載のデータ処理システム。
【請求項６】
前記各分割データに対応して、前記入力データ、前記子ジョブおよび前記出力データを表示し、実行を終了した前記子ジョブおよび実行中の前記子ジョブを他とは異なる態様で表示する入出力装置を有することを特徴とする請求項５記載のデータ処理システム。
【請求項７】
前記入出力装置は表示した、前記入力データ、前記子ジョブおよび前記出力データに、前記処理ブロックを重ねて表示し、前記入出力装置からの前記処理ブロックの指定入力に応答して、前記並列実行制御部は、指定入力された前記処理ブロックに対応する、前記入力データおよび前記出力データの格納状況、並びに前記子ジョブの処理状態を前記入出力装置に表示することを特徴とする請求項６記載のデータ処理システム。
【請求項８】
同種のデータが所定の単位で分割された複数の分割データを入力データとして格納する第１の記憶装置、および、前記各分割データに対応して実行した処理の出力データを格納する第２の記憶装置を有するデータ処理システムにおけるデータ処理方法であって、前記データ処理システムは、
前記複数の分割データの各々の前記第１の記憶装置への格納に応答して、前記各分割データを対象に処理を実行する親ジョブを元に子ジョブを生成し、
生成された前記子ジョブを起動し、
前記子ジョブの実行に伴う、前記各分割データに対応した前記出力データを前記第２の記憶装置に格納することを特徴とするデータ処理方法。
【請求項９】
前記データ処理システムは、前記子ジョブの生成および起動、並びに、前記各分割データを対象に処理を実行する前記子ジョブの実行の終了に応答して、前記子ジョブの削除を制御することを特徴とする請求項８記載のデータ処理方法。
【請求項１０】
前記複数の分割データの各々は、それぞれ異なる他のシステムから前記第１の記憶装置への格納されることを特徴とする請求項９記載のデータ処理方法。
【請求項１１】
前記各分割データを対象に処理を実行する処理がカスケード構成をなすとき、前記データ処理システムは、前記カスケード構成をなす各処理に対応して処理ブロックを形成し、前記各処理ブロックの処理に対応して前記親ジョブを有することを特徴とする請求項１０記載のデータ処理方法。
【請求項１２】
前記データ処理システムは、前記各分割データに対応して、前記入力データ、前記子ジョブおよび前記出力データを入出力装置に表示し、実行を終了した前記子ジョブおよび実行中の前記子ジョブを他とは異なる態様で前記入出力装置に表示することを特徴とする請求項１１記載のデータ処理方法。
【請求項１３】
前記データ処理システムは、前記入出力装置に表示した、前記入力データ、前記子ジョブおよび前記出力データに、前記処理ブロックを重ねて表示し、前記入出力装置からの前記処理ブロックの指定入力に応答して、前記データ処理システムは、指定入力された前記処理ブロックに対応する、前記入力データおよび前記出力データの格納状況、並びに前記子ジョブの処理状態を前記入出力装置に表示することを特徴とする請求項１２記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム及びデータ処理方法に係り、特に同種の大量データの並列処理技術に関する。
【背景技術】
【０００２】
近年、ビッグデータと呼ばれる大量の同種のデータの活用のために、そのデータを分析する試みがなされている。大量のデータの効率的なデータ処理技術に並列処理技術がある。【０００３】
並列処理技術は、たとえば、特許文献１や特許文献２に開示されている。特許文献１は、異なる複数のワークフローを実行する場合，複数のワークフローの並列実行可能なプロセスを並列に実行し、印刷プロセスのような排他的プロセスに関しては、複数のワークフローの排他的プロセスへのデータの入力順序に従って、排他的プロセスを実行するように制御するデータ処理システムを開示している。【０００４】
特許文献２には、送受信データを分割し、分割データ毎に通信処理を実行し、分割データ毎の通信処理の間に他の処理を実行する疑似的な並列処理を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2010-9200号公報
【特許文献２】特開平9-185568号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
大量の同種のデータの処理には、たとえば次のようなものがある。各基礎自治体のデータを対象に、都道府県などの自治体単位または全国を一纏めにして、集計や分析するデータ処理システムがある。他の例として、世界を市場とする企業等の、たとえばマーケッティングのためにデータ収集・分析を中心とするデータ処理システムがある。このようなデータ処理システムでは、同種のデータ（同じデータ項目を持つレコード）を対象に、集計や分析などの同様の処理を繰り返す必要があり、同様の処理の繰り返しに伴う処理時間の短縮が望まれる。【０００７】
このようなデータ処理システムに、特許文献１や特許文献２の並列処理技術を適用することは困難である。なぜならば、特許文献１や特許文献２の並列処理技術は、異なる処理を並列実行する並列処理技術であるからである。特許文献１は、異なる複数のワークフローの並列実行の技術であり、同種のデータを対象とした同じプロセスの並列実行が考慮されていない。特許文献２は、通信処理と他の処理の並列実行であり、特許文献１と同様に、同種のデータを対象とした同じ処理の並列実行が考慮されていない。【０００８】
大量のデータを対象にして集計や分析するデータ処理システムは、日次（毎日１回）、月次、年次などでデータ処理を実行するが、前者の例では、基礎自治体のシステムや基礎自治体からデータ処理システムに至るネットワークの状況により、基礎自治体からのデータは必ずしも所定の日時には揃わない状況が発生する。後者の例では、世界の各大陸又は国々との時差により、所定の時刻には揃わない状況が発生する。また、必要なデータが一時に揃った場合、データ処理システムは、集計や分析のために、一時的に大容量のメモリとＣＰＵ能力を使用する過負荷状態を避けることが望ましい。【０００９】
そこで、大量の同種のデータが逐次的に用意されるような状況に対応するために、又は、一時的な過負荷状態を避けるために、データ処理を効率的に実行するデータ処理システムが必要とされる。ここで効率的とは、データ処理システムのピーク負荷を抑制しつつ、対象のデータの処理遅れを少なくすることである。
【課題を解決するための手段】
【００１０】
開示するデータ処理システムは、同種のデータが所定の単位で分割された複数の分割データを入力データとして格納する第１の記憶装置、複数の分割データの各々の第１の記憶装置への格納に応答して、各分割データを対象に処理を実行する親ジョブを元に子ジョブを生成する子ジョブ生成部、子ジョブ生成部により生成された子ジョブを起動する子ジョブ起動部、および、子ジョブの実行に伴う、各分割データに対応した出力データを格納する第２の記憶装置を有する。
【発明の効果】
【００１１】
本発明によれば、大量の同種のデータを効率的に処理するデータ処理システムを提供できる。
【図面の簡単な説明】
【００１２】
【図１】データ処理システムの構成例である。
【図２】ジョブ実行管理テーブルの構成例である。
【図３】子ジョブの処理状態を管理するための状態遷移図である。
【図４】並列実行制御部の処理フローチャートである。
【図５】カスケードおよび統合の処理のワークフローの一例である。
【発明を実施するための形態】
【００１３】
図１は、実施形態のデータ処理システム１の構成例である。このデータ処理システム１は、データ処理を、並列処理によって、効率的に実行するので、並列処理システムとも呼ぶ。データ処理システム１は、記憶装置に用意された入力データ２を対象にデータ処理を実行し、記憶装置に出力データ３として出力するシステムである。データ処理システム１が実行する処理内容は、予め定められた処理（例としては、入力データを集計し、総計や平均値などを算出する統計処理、入力データを対象としたマイニング処理）である。
【００１４】
入力データ２は、図示を省略する、ネットワークを介して他のシステム（コンピュータ、端末等）から送信され、記憶装置に格納される。他のシステムから送信されたデータの受信および記憶装置への格納は、データ処理システム１の図示しない処理部によって実行されてもよいし、記憶装置を共有する他のシステムによって実行されてもよい。
【００１５】
入力データ２は、データを送信する他のシステム毎（所定の単位）に分割されている。たとえば、入力データ２は、他のＡシステムからのデータは分割データＡ、他のＢシステムからのデータは分割データＢのように分割されている。具体例を説明する。入力データ２が、基礎自治体（市町村）毎のシステムから送信されるデータとすると、Ａ基礎自治体のＡシステムから送信されるデータが分割データＡであり、Ｂ基礎自治体のＢシステムから送信されるデータが分割データＢである。この例から明らかなように、入力データ２は集計処理等の対象データであるので、分割データＡと分割データＢとは、データ数（レコード数）は一般に異なるが、データ（レコード）を構成する項目やそのフォーマットは同じである。換言すると、各分割データは、レコード構成が同じ同種のデータであり、内容（データの実体、レコード数）を異にする。
【００１６】
データ処理システム１の並列実行制御部３０は、入力データ２の準備状態を確認し、確認結果をジョブ実行管理テーブル２０に格納する。並列実行制御部３０は、入力データ２の準備状態を、分割データを準備する他のシステムからの通知によって確認する。
【００１７】
ジョブ実行管理テーブル２０は、入力データ２の準備状態及びデータ処理実行状態を管理するためのテーブルである。親ジョブ４０は、前述の予め定められた処理のためのジョブ（ここではジョブと呼ぶが、所定の処理を実行するソフトウェアであり、プロセスなどと呼んでもよい。）であり、親ジョブ４０を元に生成された子ジョブ５０が準備された入力データ２を対象にデータ処理を実行し、記憶装置に出力データ３として出力する。
【００１８】
並列実行制御部３０は、ジョブ実行管理テーブル２０に示される入力データ２の準備状態に応じて子ジョブ生成部３１を制御して、親ジョブ４０を元に子ジョブ５０を生成し、子ジョブ起動部３２を制御して、子ジョブ５０を起動する。また、並列実行制御部３０は、子ジョブ５０の処理状態を監視し、監視結果をジョブ実行管理テーブル２０に格納する。並列実行制御部３０は、子ジョブ５０が所定の処理の実行を完了し、子ジョブ５０が不要な場合に、子ジョブ削除部３３を制御して、不要な子ジョブ５０を削除する。
【００１９】
なお、本実施形態では、親ジョブ４０から子ジョブ５０を生成し、生成した子ジョブ５０に所定の処理を実行させるものとして説明するが、データ処理システム１を仮想サーバシステムで構築する場合は、生成する子ジョブ５０に対応するものとして仮想サーバを生成して、生成した仮想サーバに所定の処理を実行させるようにしてもよい。さらに、データ処理システム１をマルチサーバシステムで構築する場合は、マルチサーバシステムを構成する各サーバに子ジョブ５０を生成してもよいし、全体としてＣＰＵやメモリ等の計算機リソースに余裕がある場合は、各サーバに子ジョブ５０を予め生成しておき、生成してある子ジョブ５０を起動するようにしてもよい。ただし、マルチサーバシステムで構築する場合は、入力データ２及び出力データ３を格納する記憶装置を、前述した他のシステムと共有するだけでなく、マルチサーバシステムを構成する各サーバ間で共有するようにデータ処理システム１を構築する。このように種々の計算機環境に応じて、その計算機環境に適合したデータ処理システム１を構築すればよい。
【００２０】
図２は、ジョブ実行管理テーブル２０の構成例である。ジョブ実行管理テーブル２０の各行は、入力データ２を構成する分割データに対応する。入力データ２の名称２１が各分割データを識別する識別子としての名称である。入力データ２は、各分割データの名称２１に対応して、格納する又は格納されている記憶装置のアドレス２２、各分割データのサイズ（レコード数）２３、及び格納状況２４によって管理される。格納する又は格納されている記憶装置のアドレス２２とは、他のシステムが分割データを格納する、又は、他のシステムによって分割データが格納されている記憶装置のアドレスである。
【００２１】
アドレス２２は、各分割データを格納する他のシステム毎に予め定めておく。ここで予め定めておくとは必ずしも固定的ではなく、各分割データの名称２１に対応した記憶装置のアドレス２２が、他のシステムが分割データを格納する前に、他のシステムとデータ処理システム１との間で共通に認識されていればよく、分割データを格納する領域は動的に確保され、そのアドレス２２が決定されてもよい。
【００２２】
また、各分割データがファイルとして記憶装置に格納される場合（いわゆるファイルシステムを用いる場合）は、名称２１をファイル名とし、アドレス２２をファイルへのパスとすることにより、ファイルシステムに依存することになるが、各分割データの格納アドレス（格納領域）の自由度が上がり、他のシステム毎に予め定めておく必要がなくなる。
【００２３】
サイズ２３は、データ処理システム１が処理対象とするデータによっては他のシステム毎に固定サイズの場合もあるが、アドレス２２を可変として、他のシステムが分割データを格納した段階で、格納した分割データのサイズ（レコード数）を格納する。
【００２４】
格納状況２４は、分割データの記憶装置への格納状況を表し、他のシステムが分割データを入力データ２として記憶装置に格納完了した段階で、他のシステムから分割データの格納完了の通知を受けた並列実行制御部３０が０（未格納）から１（格納済）に設定する。格納状況２４の１（格納済）から０（未格納）へは、所定の時刻や入力データ２を対象とした所定のデータ処理の完了に応じて各分割データに関して一斉に並列実行制御部３０が設定してもよいが、ここでは、並列実行制御部３０が、分割データ毎の子ジョブ50による所定のデータ処理完了に応じて設定する。
【００２５】
ジョブ実行管理テーブル２０の各分割データの名称２１に対応して、所定のデータ処理を実行する子ジョブ５０の処理状態が、子ジョブ５０の名称５１とその処理状態５２によって管理される。子ジョブ５０の処理状態に関しては後述するが、子ジョブ５０から状態の通知を受けた並列実行制御部３０が処理状態５２へ、通知された状態を設定する。これは、他のシステムから分割データの格納完了の通知を受けた並列実行制御部３０が格納状況２４を設定するのと同様である。
【００２６】
なお、格納状況２４の他のシステムによる設定および子ジョブ５０の処理状態５２の子ジョブ５０による設定が可能であるが、ジョブ実行管理テーブル２０への複数の処理部（並列実行制御部３０と、他のシステムの処理部や子ジョブ５０）からのアクセスを許容することになるので、その制御の複雑さを避けるために、ここでは並列実行制御部３０が通知を受けて格納状況２４や処理状態５２を設定するものとして説明する。後述の出力データ３の処理状況３８に関しても同様である。格納状況２４や処理状態５２の設定に伴い、アドレスやサイズなどの情報を他のシステムや子ジョブ５０から受ける（前述の動的に格納領域を確保する場合などのように、並列実行制御部３０がそれらの情報を持たない）場合は、それらの情報を含めた通知を受ける。
【００２７】
出力データ３は、各分割データの名称２１に対応して、格納する又は格納されている記憶装置のアドレス３６、各分割データのサイズ（レコード数）３７、及び処理状況３８によって管理される。出力データ３に関するアドレス３６およびサイズ３７は、入力データ２に関するアドレス２２およびサイズ２３と同様であるので、説明を省略する。処理状況３８は、入力データ２に関する格納状況２４に対応し、分割データを対象として子ジョブ５０が所定の処理を完了していない状態０（未処理）および所定の処理を完了している状態１（処理済）を表す。処理状況３８は、前述のように、子ジョブ５０からの通知を受けた並列実行制御部３０によって設定される。０（未処理）から１（処理済）へ及び１（処理済）から０（未処理）への並列実行制御部３０による設定変更は、前述の説明を入力データ２に関する格納から出力データ３に関する処理に読み替えられるので、説明を省略する。
【００２８】
図３は、並列実行制御部３０が子ジョブ５０の処理状態５２を管理するための状態遷移図である。分割データに対応して子ジョブ５０が生成されていない状態がＮｕｌｌ状態（０）である。この状態（０）では、子ジョブ５０の名称がなく、図２のジョブ実行管理テーブル２０では名称５１を―（ハイフン）で表し、処理状態５２に（０）を設定している。
【００２９】
並列実行制御部３０が、格納済みの分割データに対応して、子ジョブ生成部３１を起動し、処理状態５２をＮｕｌｌ状態（０）から生成中状態（１）に遷移させる。起動された子ジョブ生成部３１が、格納済みの分割データに対応して、親ジョブ４０から子ジョブ５０を生成し、子ジョブ５０の生成を並列実行制御部３０へ通知し、通知に対応して並列実行制御部３０は、子ジョブ５０に名称を付し、その名称を名称５１に設定し、処理状態５２を生成中状態（１）から待機状態（２）に遷移させる。
【００３０】
並列実行制御部３０は、出力データ３の処理状態３８の０（未処理）を確認（必要ならば、設定）し、子ジョブ５０の生成に対応した分割データのアドレス２２及びサイズ２３、並びに、その分割データに対応する出力データ３の名称３５及びアドレス３６をパラメータとして子ジョブ起動部３２を制御して、待機状態（２）の子ジョブ５０を起動し、処理状態５２を待機状態（２）から実行状態（３）に遷移させる。分割データに対応する出力データ３のサイズ３７は、子ジョブ５０からの処理終了の通知に含まれるので、その通知に対応して並列実行制御部３０が設定する。
【００３１】
起動された子ジョブ５０は、パラメータのアドレス２２及びサイズ２３を参照して、分割データに対して所定のデータ処理を実行し、パラメータの名称３５及びアドレス３６を参照して、処理結果である出力データ３を記憶装置に格納する。出力データ３を記憶装置へ格納した後、子ジョブ５０は、格納したサイズ（レコード数）を含んだ処理終了を並列実行制御部３０へ通知する。通知を受けた並列実行制御部３０は、通知に含まれるサイズをサイズ３７に設定し、出力データ３の処理状態３８を０（未処理）から１（処理済）に遷移させ、子ジョブ５０の処理状態５２を実行状態（３）から完了状態（４）に遷移させる。
【００３２】
並列実行制御部３０は、子ジョブ５０の処理状態５２を完了状態（４）に遷移させた後、ジョブ実行管理テーブル２０に示される入力データ２の格納状況２４が１（格納済）であり、子ジョブ５０の処理状態５２がＮｕｌｌ状態（０）の分割データがあるかを確認し、あるならば、子ジョブ５０の名称を、確認した分割データに対応する名称５１に設定し、その処理状態５２を完了状態（４）から待機状態（２）に遷移させる。待機状態（２）に遷移させた以降の処理は前述のとおりである。
【００３３】
なお、子ジョブ５０の処理状態５２を完了状態（４）から待機状態（２１）に遷移させる、子ジョブ５０の再利用の場合、厳密には、子ジョブ５０の処理状態５２がＮｕｌｌ状態（０）の分割データがあるかだけでなく、その分割データに対する子ジョブ５０を生成するために子ジョブ生成部３１が起動されていないことも確認する。さもないと、同じ分割データに対して二重に子ジョブ５０が生成される可能性がある。
【００３４】
入力データ２の格納状況２４が１（格納済）であり、子ジョブ５０の処理状態５２がＮｕｌｌ状態（０）の分割データがない場合、この完了状態（４）の子ジョブ５０は不要であり、子ジョブ削除部３３を制御して、不要な子ジョブ５０を削除する。
【００３５】
図４は、並列実行制御部３０の処理フローチャートである。並列実行制御部３０は、通知を受けたかを判定する（Ｓ２００）。通知は、前述したように、他のシステムから分割データの格納完了の通知、子ジョブ５０からの処理終了の通知、および子ジョブ生成部３１からの子ジョブ５０の生成の通知である。他にも、子ジョブ生成部３１からの子ジョブ５０を生成できない旨の通知などの異常処理に係る通知があるが、ここでは省略する。
【００３６】
並列実行制御部３０は、これらの通知を同時に受けることがある。同時とは、通知を受けたかの判定処理において、複数の通知を検知する場合であり、通知が必ずしも同時にあるとは限らない。このような場合に対応するために、子ジョブ生成、子ジョブ終了、分割データ格納の順序を、通知の判定順序（優先順位）とする。この判定順序に従えば、たとえば、子ジョブ生成と子ジョブ終了の通知があるとき、子ジョブ生成の通知に対応する処理を終了し、通知を受けたかの判定処理（Ｓ２００）に戻ったとき、子ジョブ終了の通知が残っている。
【００３７】
子ジョブ生成部３１からの子ジョブ５０の生成の通知の検知に応答して、並列実行制御部３０は、子ジョブ生成部３１の制御要因である分割データに対応した、子ジョブ５０の処理状態５２を生成中状態（１）から待機状態（２）に遷移させ（Ｓ２０５）、子ジョブ起動部３２を制御して、生成された子ジョブ５０を起動し、処理状態５２を待機状態（２）から実行状態（３）に遷移させる（Ｓ２１０）。
【００３８】
子ジョブ５０からの終了の通知の検知に応答して、並列実行制御部３０は、子ジョブ５０が処理を終了した分割データに対応して、通知に含まれるサイズをサイズ３７に設定し、出力データ３の処理状態３８を０（未処理）から１（処理済）に遷移させ、子ジョブ５０の処理状態５２を実行状態（３）から完了状態（４）に遷移させる（Ｓ２１５）。
【００３９】
並列実行制御部３０は、格納状況２４が１（格納済み）の分割データがあるかを判定する（Ｓ２２０）。分割データがあるならば、対応する子ジョブ５０の処理状態５２が生成中状態（１）であるかを判定する（Ｓ２２５）。格納状況２４が１（格納済み）の分割データがない場合、または、格納状況２４が１（格納済み）の分割データがあるが、対応する子ジョブ５０の処理状態５２が生成中状態（１）の場合、並列実行制御部３０は、子ジョブ削除部３３を制御して、終了を通知した子ジョブ５０を削除し、子ジョブ５０の処理状態５２を完了状態（４）からＮｕｌｌ状態（０）に遷移させる（Ｓ２３０）。このとき、削除した子ジョブ５０の名称５１も削除する（図２では、―（ハイフン）で表す。）。
【００４０】
一方、格納状況２４が１（格納済み）の分割データがあり、対応する子ジョブ５０の処理状態５２が生成中状態（１）でない場合、並列実行制御部３０は、処理を終了した分割データに対応して、子ジョブ５０の処理状態５２を完了状態（４）からＮｕｌｌ状態（０）に遷移させ、子ジョブ５０の名称５１を削除し、格納状況２４が１（格納済み）の分割データに対応して、子ジョブ５０の名称５１を付与し、処理状態５２を完了状態（４）から待機状態（２）に遷移させ（Ｓ２３５）、さらに子ジョブ起動部３２を制御して、待機している子ジョブ５０を起動し、処理状態５２を待機状態（２）から実行状態（３）に遷移させる（Ｓ２１０）。
【００４１】
他のシステムから分割データの格納完了の通知に応答して、並列実行制御部３０は、格納完了の通知に含まれるサイズを、格納完了した分割データに対応したサイズ２３に設定し、格納状況２４を０（未格納）から１（格納済）に設定する。並列実行制御部３０は、子ジョブ生成部３１を起動し、格納完了した分割データに対応した、子ジョブの名称５１を付与し、その処理状態５２をＮｕｌｌ状態（０）から生成中状態（１）に遷移させる（Ｓ２４０）。いずれの通知も検知しないときは、通知判定（S２００）を繰り返す。
【００４２】
以上により、基本的な構成と動作の説明を終わる。説明したように、大量の同種のデータを効率的に処理するデータ処理システムを提供できる。大量の同種のデータが逐次的に用意されるような状況に対応するために、分割データの準備状況に応じて処理を実行するので、データ処理システムのピーク負荷を抑制しつつ、対象のデータの処理遅れを少なくすることができる。
【００４３】
次に、分割データに対する処理をカスケードに実行し、最終的に各分割データの出力データ全体を対象とした統合処理を実行するより実際的な場合について説明する。図５は、このようなカスケードおよび統合の処理の流れの例である。
【００４４】
図５は、カスケードおよび統合の処理のワークフロー３００の一例であり、処理ブロックＡ４００、処理ブロックＢ５００、およびマージ処理により最終的な出力データを出力する流れの例である。処理ブロックＡ４００は、他のシステムから記憶装置に格納された入力データ２としての分割データiを対象にジョブＡ（親ジョブＡを元に生成した子ジョブＡi）を実行し、中間データＡiを出力データ３として出力するもので、図２に示したジョブ実行管理テーブル２０を用いて、並列実行制御部３０によって管理されるものであり、基本的な構成と動作として説明したものと同じである。処理ブロックＢ５００は、ジョブＡから記憶装置に格納された入力データ２としての中間データＡiを対象にジョブＢ（親ジョブＡとは異なる処理を実行する親ジョブＢを元に生成した子ジョブＢi）を実行し、中間データＢiを出力データ３として出力するもので、処理ブロックＡ４００と同様の構成および動作である。
【００４５】
このように、処理ブロックのカスケード構成と見なせる部分に関しては、基本的な構成と動作を繰り返すので、説明を省略する。ただし、ジョブ実行管理テーブル２０の説明に用いた用語を読み替える必要がある。処理ブロックＢ５００では、ジョブＡの実行に伴う出力データ３の処理状況３８を、ジョブＡからの入力データ２として扱うので、格納状況２４と読み替える必要がある。
【００４６】
ワークフロー３００ではマージして最終的な出力データを出力する例であるが、マージに限らず中間データＢi（i=1〜n）を対象にした、平均や分散を求める処理、総計を求める処理である。このような中間データの統合に係る処理は、すべての中間データが揃わなければ実行できないので、準備状況が遅れている中間データを待つ必要がある。中間データが揃うのを検知して、統合処理を実行するジョブの起動は、並列実行制御部３０によって制御される。
【００４７】
なお、統合処理が部分的な中間データを対象とする場合がある。たとえば、分割データが、前述の例の基礎自治体（市町村）毎のシステムから送信されるデータでああり、中間的な統合データとして都道府県に対応したデータを得て、この都道府県に対応したデータを対象に国全体の統合データを出力する場合がある。このような場合は、都道府県毎の基礎自治体の、統合処理対象データが揃えば、都道府県単位で統合処理を実行できる。このように階層的に統合処理を実行することにより、データ処理システムのピーク負荷を抑制しつつ、対象のデータの処理遅れを少なくすることができる。
【００４８】
以上説明したように分割データに対応して、ジョブを部分実行（子ジョブによる実行）させると、このような処理の管理者は全体として処理の進捗（ワークフローの進捗）を見る必要が出てくる。なぜならば、部分実行されていない原因が必ずしも分割データが揃っていないだけでなく、ジョブを実行する計算機故障などもあり得るからである。
【００４９】
そのために、データ処理システム１は、図示しない入出力装置を有する。通常は、たとえば、図５に示すような処理の流れを示す図を、並列実行制御部３０が入出力装置に画面表示する。分割データが揃っている場合は、その分割データに対応する実行済みおよび実行中の子ジョブに関して他とは異なる態様（たとえば異なる色）で表示することにより、管理者にとってのワークフローの進捗の視認性を向上させることができる。また、分割データの格納時刻、中間データの出力時刻などのタイムスタンプを、画面上の各データ表示個所に対応付けて表示すれば、管理者は異常な処理遅れに容易に気付くことができる。タイムスタンプに言及していないが、ジョブ実行管理テーブル２０の格納状況２４や処理状態５２に、又はそれらに対応した時刻情報の列を追加して、格納や処理完了に伴いその時刻を設定することにより容易に実現できる。
【００５０】
また、全体としての処理の進捗でなく、異常な処理遅れに注目した表示も必要となる。図５に示した処理ブロック対応にジョブ実行管理テーブル２０があると考えてよい（実際には、例えば図５の中間データＡiに関する重複を無くすために、処理全体としてジョブ実行管理テーブル２０を構成し、その中から処理ブロックに対応する部分を抜き出す。）ので、図５に示すような処理の流れを示す画面表示処理ブロックを指定する管理者による入力（マウスなどによりポインティング）に応答して、並列実行制御部３０が、指定された処理ブロックに対応するジョブ実行管理テーブル２０を入出力装置に表示する。このジョブ実行管理テーブル２０の表示により、管理者は子ジョブ５０の処理状態５２を確認できるので、異常な処理遅れなどに対応しやすくなる。
【００５１】
管理者によるワークフロー３００の進捗管理に伴う、入出力に関しては図面及び詳細を省略するが、本実施形態に係る当業者であれば、容易に実現できる。
【００５２】
以上説明した本実施形態によれば、大量の同種のデータを効率的に処理するデータ処理システムを提供できる。
【符号の説明】
【００５３】
１：データ処理システム、入力データ２、３：出力データ、２０：ジョブ実行管理テーブル、３０：並列実行制御部、３１：子ジョブ生成部、３２：子ジョブ起動部、３３：子ジョブ削除部、４０：親ジョブ４０、５０：子ジョブ。
【図１】
2015125225.tif 000003
【図２】
2015125225.tif 000004
【図３】
2015125225.tif 000005
【図４】
2015125225.tif 000006
【図５】
2015125225.tif 000007
【国際調査報告】
2015125225.tif 000008
2015125225.tif 000009
2015125225.tif 000010
2015125225.tif 000011