(57)【要約】【課題】演算処理に用いられるデータ群と対応するデータ群を、複数のデータ群の中から特定する。【解決手段】コンピュータに、データ項目に対応する複数の値をそれぞれに含む複数のデータ群を取得し、前記複数のデータ群それぞれについて、データ群に含まれる複数の値の種類数を特定し、前記複数のデータ群の中の特定のデータ群に含まれる複数の値を用いた演算処理の結果を取得し、前記特定のデータ群に含まれる複数の値の種類数を特定し、前記特定のデータ群に含まれる複数の値の種類数と、前記複数のデータ群それぞれに含まれる複数の値の種類数とに基づいて、前記複数のデータ群の中からデータ群を選択し、選択された前記データ群に含まれる値と前記特定のデータ群に含まれる値との相関性に基づいて、前記特定のデータ群に対応するデータ群を選択された前記データ群の中から特定する、処理を実行させる。【選択図】  図８
2018018306.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
データ項目に対応する複数の値をそれぞれに含む複数のデータ群を取得し、
前記複数のデータ群それぞれについて、データ群に含まれる複数の値の種類数を特定し、
前記複数のデータ群の中の特定のデータ群に含まれる複数の値を用いた演算処理の結果を取得し、
前記特定のデータ群に含まれる複数の値の種類数を特定し、
前記特定のデータ群に含まれる複数の値の種類数と、前記複数のデータ群それぞれに含まれる複数の値の種類数とに基づいて、前記複数のデータ群の中からデータ群を選択し、
選択された前記データ群に含まれる値と前記特定のデータ群に含まれる値との相関性に基づいて、前記特定のデータ群に対応するデータ群を選択された前記データ群の中から特定する、
処理を実行させることを特徴とするデータ特定プログラム。
【請求項２】
前記複数のデータ群それぞれについての前記種類数の特定は、前記演算処理の結果が生成されるよりも前に実行されることを特徴とする、
請求項１記載のデータ特定プログラム。
【請求項３】
特定された前記対応するデータ群を用いた前記演算処理が、前記対応するデータ群が特定された後に実行される際に、前記前記対応するデータ群に含まれる複数の値を、値の異同または相関性に応じて複数のグループに分類し、
前記複数のグループそれぞれについて異なる処理資源を割り当てて前記演算処理を実行させる、
処理を実行させることを特徴とする請求項１または請求項２記載のデータ特定プログラム。
【請求項４】
前記複数のグループに分類する処理、および、記複数のグループそれぞれについて異なる処理資源を割り当てて前記演算処理を実行させる処理は、前記演算処理の終了が所定の時刻に対して遅延すると判定された場合に実行される、
ことを特徴とする請求項３記載のデータ特定プログラム。
【請求項５】
前記対応するデータ群を用いた前記演算処理の実行より前に、記憶装置から少なくとも前記対応するデータ群を抽出する処理、および、該抽出する処理により抽出されたデータを加工する処理が実行され、
前記コンピュータに、
前記抽出する処理の実行中に、前記抽出する処理により抽出されるデータのサイズと、前記加工する処理および前記演算処理において単位時間あたりに処理可能なデータのサイズと、前記所定の時刻までの残時間と、に基づいて、前記演算処理の終了が前記所定の時刻に対して遅延するか否かを判定する、
処理を実行させることを特徴とする請求項４記載のデータ特定プログラム。
【請求項６】
前記コンピュータに、
前記抽出する処理の実行中に前記演算処理の終了が前記所定の時刻に対して遅延すると判定された場合、前記複数のグループに分類する処理、および、記複数のグループそれぞれについて異なる処理資源を割り当てて前記加工する処理を実行させ、
前記複数のグループそれぞれについて、グループに対する前記加工する処理の終了後に、当該グループに割り当てられていた処理資源を用いて当該グループに対する前記演算処理を実行させる、
処理を実行させることを特徴とする請求項５記載のデータ特定プログラム。
【請求項７】
コンピュータが、
データ項目に対応する複数の値をそれぞれに含む複数のデータ群を取得し、
前記複数のデータ群それぞれについて、データ群に含まれる複数の値の種類数を特定し、
前記複数のデータ群の中の特定のデータ群に含まれる複数の値を用いた演算処理の結果を取得し、
前記特定のデータ群に含まれる複数の値の種類数を特定し、
前記特定のデータ群に含まれる複数の値の種類数と、前記複数のデータ群それぞれに含まれる複数の値の種類数とに基づいて、前記複数のデータ群の中からデータ群を選択し、
選択された前記データ群に含まれる値と前記特定のデータ群に含まれる値との相関性に基づいて、前記特定のデータ群に対応するデータ群を選択された前記データ群の中から特定する、
処理を実行することを特徴とするデータ特定方法。
【請求項８】
データ項目に対応する複数の値をそれぞれに含む複数のデータ群と、前記複数のデータ群の中の特定のデータ群に含まれる複数の値を用いた演算処理の結果と、を取得する取得部と、
前記複数のデータ群それぞれについてのデータ群に含まれる複数の値の種類数と、特定のデータ群に含まれる複数の値の種類数とを特定する第１特定部と、
前記特定のデータ群に含まれる複数の値の種類数と、前記複数のデータ群それぞれに含まれる複数の値の種類数とに基づいて、前記複数のデータ群の中からデータ群を選択する選択部と、
選択された前記データ群に含まれる値と前記特定のデータ群に含まれる値との相関性に基づいて、前記特定のデータ群に対応するデータ群を選択された前記データ群の中から特定する第２特定部と、
を備えることを特徴とするデータ特定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
データ特定プログラム、データ特定方法、及びデータ特定装置に関する。
【背景技術】
【０００２】
情報処理システムにおいて、情報処理装置が記憶装置に記憶されたデータに対して処理を行い、処理結果を出力、あるいは、記憶装置に記憶する処理が行われている。
【０００３】
一例として、図１に示すケース１のように、記憶装置からデータを抽出する（抽出処理）、抽出されたデータを加工する処理（加工処理）、加工されたデータに対する演算、例えば集計を行う処理（集計処理）を情報処理装置が実行する。抽出処理、加工処理、集計処理が順に実行されることで、処理結果として抽出されたデータの集計結果が生成される。集計結果は、例えば、データの値の平均値や中央値などの代表値を示すデータである。以降では、上述したような、情報処理装置のそれぞれの処理を「ジョブ」と記載する。
【０００４】
ジョブが処理結果を生成して実行を終了した後、生成された処理結果を利用して別のジョブの実行が開始されることがある。また、複数のジョブが順に実行される場合は、それぞれのジョブの実行開始のタイミングがジョブスケジューラなどにより、複数のジョブが所定の期限までに終了するように管理が行われる。
【０００５】
ジョブの処理が遅れてしまうと、複数のジョブが所定の期限までに終了することができなくなるため、ジョブの処理の遅れが発生した場合には、発生した遅れを解消することが求められる。
【０００６】
関連する技術として、例えば、図１に示すケース２のように、上述した加工処理を実行するジョブ（加工ジョブ）を複数の情報処理に分散して並列に処理を実行し（並列実行）、処理の高速化を図ることが行われている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−１８５０２７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ジョブの実行状況によっては、ジョブの実行をさらに高速化することが求められる場合がある。
【０００９】
そこで、例えば図２のように、上述した加工ジョブだけでなく、加工ジョブに後続する集計処理を行うジョブ（集計ジョブ）も並列実行を行うことで、ジョブの実行をさらに高速化することが考えられる。
【００１０】
しかしながら、集計処理の場合、単純に処理を並列実行してしまうと、集計処理の結果の誤りを引き起こすおそれがある。
【００１１】
一例を図３に示す。図３の例では、集計ジョブにより、従業員の平均給与を部署ごとに求めることを想定している。そして、図３の例では、集計ジョブは、ジョブが３つに分散されて実行され、入力データの件数がそれぞれのジョブで均等になるように入力データが分割されている。しかし、集計処理の結果は、複数に分散された並列処理のそれぞれで生成される。そのため、図３の第１開発、あるいは第２開発の集計結果のように、結果の値が異なる複数の集計結果が生成されてしまい、正しい値が得られない。
【００１２】
集計結果の誤りを防ぐためには、例えば、図３の例であれば、各部署のデータごとに入力データが分割されるように、抽出ジョブからの出力データを分割しておく必要がある。そのためには、抽出ジョブを実行する抽出処理の段階で、集計処理における分類を判別可能な抽出データ中のデータ列を特定しておく必要がある。
【００１３】
なお、抽出データをデータベース（Data Base、ＤＢ）のレコードから抽出する場合、一般的にはレコードには複数のデータ列（データ項目）が含まれる。そのため、集計処理における分類を判別可能な抽出データ中のデータ列は、レコードに含まれる複数のデータ列の中から特定する必要がある。
【００１４】
１つの側面では、演算処理に用いられるデータ群と対応するデータ群を、複数のデータ群の中から特定することを目的とする。
【課題を解決するための手段】
【００１５】
１つの態様では、コンピュータに、データ項目に対応する複数の値をそれぞれに含む複数のデータ群を取得し、前記複数のデータ群それぞれについて、データ群に含まれる複数の値の種類数を特定し、前記複数のデータ群の中の特定のデータ群に含まれる複数の値を用いた演算処理の結果を取得し、前記特定のデータ群に含まれる複数の値の種類数を特定し、前記特定のデータ群に含まれる複数の値の種類数と、前記複数のデータ群それぞれに含まれる複数の値の種類数とに基づいて、前記複数のデータ群の中からデータ群を選択し、選択された前記データ群に含まれる値と前記特定のデータ群に含まれる値との相関性に基づいて、前記特定のデータ群に対応するデータ群を選択された前記データ群の中から特定する、処理を実行させる。
【発明の効果】
【００１６】
１つの側面では、演算処理に用いられるデータ群と対応するデータ群を、複数のデータ群の中から特定することができる。
【図面の簡単な説明】
【００１７】
【図１】抽出処理、加工処理、集計処理の一例を示す。
【図２】集計ジョブの並列実行の一例を示す。
【図３】集計処理の結果に誤りが生じる一例を示す。
【図４】実施形態の一例である情報処理システムの構成を示す。
【図５】端末装置１の機能ブロック図を示す。
【図６】実行サーバ３−１〜３−ｎの機能ブロック図を示す。
【図７】ＤＢサーバ４の機能ブロック図を示す。
【図８】管理装置２の機能ブロック図を示す。
【図９】テスト運用時に管理装置２が実行する処理のフローチャート（前半部）を示す。
【図１０】テスト運用時に管理装置２が実行する処理のフローチャート（後半部）を示す。
【図１１】ジョブ定義情報記憶部２２１に記憶される情報の一例を示す。
【図１２】抽出データの一例を示す。
【図１３】集計データの一例を示す。
【図１４】種類数情報記憶部２２４に記憶される情報の一例を示す。
【図１５】抽出データ情報記憶部２２２に記憶される情報の一例を示す。
【図１６】ステップＳ９０１の処理のフローチャート（データ入力時）を示す。
【図１７】シーク処理管理情報記憶部２２３に記憶される情報の一例を示す。
【図１８】ステップＳ９０１の処理のフローチャート（データ出力時）を示す。
【図１９】本番運用時に管理装置２が実行する処理のフローチャートを示す。
【図２０】稼動情報記憶部２２５に記憶される情報の一例を示す。
【図２１】本実施例に基づいてジョブの並列処理を実行した際のイメージ図を示す。
【図２２】本実施例におけるクライアント装置１のハードウェア構成の一例である。
【発明を実施するための最良の形態】
【００１８】
本発明を実施する実施例について、図面とともに説明をする。
〔全体構成〕
図４に、実施形態の一例である情報処理システムの構成を示す。実施形態の一例では、例えば、端末装置１、管理装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４が、ネットワーク５を介して、互いに通信可能に接続される。
【００１９】
端末装置１は、例えば、管理者がジョブの実行要求を行うことや、ジョブの実行結果を閲覧することに用いるコンピュータである。端末装置１として、例えば、Personal Computer（ＰＣ）や、スマートフォン、Personal Digital Assistant（ＰＤＡ）などのコンピュータを用いることが可能である。
【００２０】
管理装置２は、実行サーバ３−１〜３−ｎによるジョブの実行を制御するコンピュータである。
【００２１】
実行装置３−１〜３−ｎは、ジョブの実行要求に応じて、管理装置２による制御のもとで、種々のジョブ、またはジョブに含まれる各処理を実行する。
【００２２】
ＤＢサーバ４は、ジョブの実行に用いられるデータを記憶するデータベースを起動し、データベースの制御を実行する。また、本実施例においては、ＤＢサーバ４により制御されるデータベースに記憶されたレコードから、抽出ジョブによりデータの抽出が行われる。
【００２３】
管理装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４のそれぞれは、例えばサーバ装置などのコンピュータである。
【００２４】
なお、図４においては、端末装置１、管理装置２、ＤＢサーバ４がそれぞれ１台、実行サーバについては実行サーバ３−１〜３−ｎの複数台が示されているが、ハードウェアとしての各装置の台数は任意であって良い。
〔端末装置〕
図５は、端末装置１の機能ブロック図である。端末装置１は、入力部１０１と、表示部１０２と、通信部１０３、記憶部１０４を備える。
【００２５】
入力部１０１は、利用者からの操作入力を受け付ける。入力部１０１は、例えば、キーボードやマウスなどのハードウェアを用いることができる。
【００２６】
表示部１０２は、例えば、液晶ディスプレイであり、ジョブの実行結果や、ＤＢサーバ４により制御されるデータベースに記憶されたデータを表示することができる。なお、表示部１０２として、プロジェクタなどの投影装置が用いられても良い。
【００２７】
通信部１０３は、有線または無線で、制御装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４、あるいは他の情報処理装置との通信を実行することが可能である。通信部１０３は、例えば、端末装置１が備えるネットワークアダプタやNetwork Interface Controller（ＮＩＣ）などの通信デバイスである。
【００２８】
記憶部１０４は、例えば、端末装置１が備える、メモリ、Hard Disk Drive（ＨＤＤ）、Solid State Drive（ＳＳＤ）などの記憶媒体を用いて実現される。記憶部１０４は、データベースなどから取得した各種のデータを記憶することが可能である。
〔実行サーバ〕
図６は、実行サーバ３−１〜３−ｎの機能ブロック図である。図３では、実行サーバ３−１〜３−ｎのうちの実行サーバ３−１について図示するが、実行サーバ３−１〜３−ｎそれぞれは図３と同様の態様であって良い。実行サーバ３−１〜３−ｎは、処理実行部３０１と、記憶部３０２と、通信部３０３とを備える。
【００２９】
処理実行部３０１は、制御装置２による制御に基づいて、ジョブを実行する。処理実行部３０１は、例えば、実行サーバであるサーバ装置が備えるプロセッサがプログラムを実行することにより実現される。ここで、プロセッサは、Central Processing Unit（ＣＰＵ）やMicro Processing Unit（ＭＰＵ）、Application Specific Integrated Circuit（ＡＳＩＣ）などのハードウェア回路の総称である。なお、プログラムは、記憶部３０２に記憶され、処理実行の際に読み出されることとしても良いし、管理装置２などの他の情報処理装置や記憶装置から受信することとしても良い。
【００３０】
記憶部３０２は、ハードウェアとしては、例えば、実行サーバであるサーバ装置が備える、メモリ、ＨＤＤ、ＳＳＤなどの記憶媒体である。記憶部３０２は、実行サーバがジョブの実行において取得、生成する種々のデータを記憶することができる。また、記憶部３０２は、上述のように、ジョブの実行に必要なプログラムを記憶することができる。
【００３１】
通信部３０３は、端末装置１、制御装置２、ＤＢサーバ４、あるいは他の情報処理装置とのデータの送受信を実行することが可能である。通信部３０３は、例えば、実行サーバであるサーバ装置が備えるネットワークアダプタＮＩＣなどの通信デバイスである。
〔ＤＢサーバ〕
図７は、ＤＢサーバ４の機能ブロック図である。ＤＢサーバ４は、制御部４０１と、記憶部４０２と、通信部４０３とを備える。
【００３２】
制御部４０１は、記憶部４０２の記憶領域を用いて実現されるデータベースの制御を実行する。制御部４０１は、例えば、ＤＢサーバであるサーバ装置が備えるプロセッサがプログラムを実行することにより実現される。プログラムは、ＤＢサーバであるサーバ装置が備えるメモリや記憶装置などに格納され、処理実行の際に読み出されることとしてもよいし、他の情報処理装置や記憶装置から受信することとしても良い。
【００３３】
記憶部４０２は、データベースを実現するための記憶領域を有する。記憶部４０２は、ハードウェアとしては、例えば、ＤＢサーバであるサーバ装置が備える、メモリ、ＨＤＤ、ＳＳＤなどの記憶媒体である。また、記憶部４０２は、ＤＢサーバ４０をデータベース制御システム（Database Management System、ＤＢＭＳ）として機能させるためのプログラムを記憶することができる。なお、記憶部４０２は、サーバ装置に内蔵される記憶媒体ではなく、サーバ装置と接続される別個のストレージ装置であって良い。
【００３４】
通信部４０３は、端末装置１、管理装置２、実行サーバ３−１〜３−ｎ、あるいは他の情報処理装置とのデータの送受信を実行することが可能である。通信部２０２は、例えば、ＤＢサーバであるサーバ装置が備えるネットワークアダプタやＮＩＣなどの通信デバイスである。
〔管理装置〕
図８は、管理装置２の機能ブロック図である。管理装置２は、入力部２０１、表示部２０２、通信部２０３、制御部２１０、記憶部２２０を備える。
【００３５】
入力部２０１は、利用者からの操作入力を受け付ける。表示部２０２は、例えば、液晶ディスプレイであり、ジョブの実行結果や、ＤＢサーバ４により制御されるデータベースに記憶されたデータを表示することができる。なお、表示部２０２として、プロジェクタなどの投影装置が用いられても良い。入力部２０１、表示部２０２は、端末装置１が備える、入力部１０１、表示部１０２の代替として用いることが可能であるが、管理装置２が端末装置１と通信可能に接続されている場合には、入力部２０１、表示部２０２は省略されても良い。
【００３６】
通信部２０３は、端末装置１、実行サーバ３−１〜３−ｎ、ＤＢサーバ４、あるいは他の情報処理装置との通信を実行することが可能である。通信部１０３は、例えば、端末装置１が備えるネットワークアダプタやＮＩＣ（Network Interface Controller）などの通信デバイスである。例えば、本実施例において説明する各種のデータの送受信は、通信部１０３を用いて実行される。
【００３７】
制御部２１０は、実行制御部２１１、判定部２１２、遅延検知部２１３を有する。制御部２１０は、例えば、管理装置であるサーバ装置が備えるプロセッサがプログラムを実行することにより実現される。ここで、プロセッサは、ＣＰＵやＭＰＵ、ＡＳＩＣなどのハードウェア回路の総称である。なお、プログラムは、例えば、記憶部２２０に記憶され、処理実行の際に読み出されることとしてもよいし、他の情報処理装置や記憶装置から受信することとしても良い。
【００３８】
実行制御部２１１は、実行サーバ３−１〜３−ｎによるジョブの実行を制御する。
【００３９】
判定部２１２は、抽出処理を実行するジョブ（抽出ジョブ）により抽出されるデータについて、並列実行が可能な否かの判定処理や、後述するデータ列の特定処理などを実行する。
【００４０】
遅延検知部２１３は、ジョブ実行の際に、ジョブの処理の遅延の検知、または遅延の予測を実行する。
【００４１】
記憶部２２０は、ジョブ定義情報記憶部２２１、抽出データ情報記憶部２２２、シーク処理管理情報記憶部２２３、種類数情報記憶部２２４、稼動情報記憶部２２５を含む。記憶部２２０が含むそれぞれの記憶部については、詳細を後述する。また、記憶部２２０は、管理装置２が、後述する本実施例の各種の処理を行うためのプログラムを記憶することができる。
【００４２】
記憶部２２０は、ハードウェアとしては、例えば、管理装置であるサーバ装置が備える、メモリ、ＨＤＤ、ＳＳＤなどの記憶媒体である。なお、例えば、管理装置２がＤＢサーバ４と通信可能に接続される場合には、上述した記憶部２２０が含むそれぞれの記憶部は、ＤＢサーバ４が備える記憶部４０２に備えられることとしても良い。
〔テスト運用〕
本実施例において実行される各種の処理について説明される。なお、以降の説明では、便宜上、情報処理システムの実際の運用としてジョブが実行される場合を本番運用、本番運用に先立って実施される試験的なジョブの実行をテスト運用と記載する。
【００４３】
まず、テスト運用時について説明する。
【００４４】
図９および図１０は、テスト運用時に管理装置２が実行する処理のフローチャートである。図９および図１０に示す一連の処理は、例えば、テスト運用時にジョブの実行依頼が端末装置１から送信されたことに応じて開始される。各々のジョブの実行は、管理装置２の実行制御部２１１による制御のもとで、実行サーバ３−１〜３−ｎのいずれかに割り当てられる。
【００４５】
ここで、ジョブの実行制御に関わる情報について説明する。
【００４６】
図１１に、ジョブ定義情報記憶部２２１に記憶される情報の一例を示す。例えば、ジョブ定義情報記憶部２２１は、図１１に示すように、ジョブネット名１１０１、ジョブ名１１０２、入力ファイル名１１０３、出力ファイル名１１０４、抽出ジョブ判定フラグ１１０５、加工ジョブ判定フラグ１１０６、集計ジョブ判定フラグ１１０７、を記憶する。
ジョブネット名１１０１は、各ジョブが属するジョブネットを識別可能とする情報である。ジョブネットとは、実行順序を指定した、一つ以上のジョブの集合である。図１１では、ジョブネット名として、ｊｏｂｎｅｔ００１、ｊｏｂｎｅｔ００２と記載しているが、ジョブネット名１１０１の具体的なデータ形式は１つの態様に限定されず、各々のジョブネットが一意に識別可能であれば、図１１と異なる態様でも良い。
【００４７】
ジョブ名１１０２は、実行対象の複数のジョブそれぞれを識別可能とする情報である。図１１では、ジョブ名として、ｊｏｂ００１〜ｊｏｂ００３、またｊｏｂ１０１〜ｊｏｂ１０３と記載しているが、ジョブ名１１０２の具体的なデータ形式は１つの態様に限定されず、各々のジョブが一意に識別可能であれば、図１１と異なる態様でも良い。
【００４８】
入力ファイル名１１０３は、各々のジョブの実行の際に入力されるデータを識別可能とする情報である。また、出力ファイル名１１０４は、各々のジョブの実行の結果、生成や出力がされるデータを識別可能とする情報である。図１１では、入力ファイル名、あるいは出力ファイル名として、ｄａｔａ００１〜ｄａｔａ００４、またｄａｔａ１０１〜ｄａｔａ１０４と記載しているが、データ名の具体的なデータ形式は１つの態様に限定されず、各々のデータが一意に識別可能であれば、図１１と異なる態様でも良い。
【００４９】
抽出ジョブ判定フラグ１１０５、加工ジョブ判定フラグ１１０６、集計ジョブ判定フラグ１１０７は、各々のジョブの種別を特定可能とする情報である。ジョブが抽出ジョブである場合、抽出ジョブ判定フラグ１１０５の値はｏｎとなる。同様に、ジョブが加工ジョブであれば加工ジョブ判定フラグ１１０６の値がｏｎとなり、ジョブが集計ジョブであれば集計ジョブ判定フラグ１１０７の値がｏｎとなる。なお、加工ジョブについては、ジョブが加工ジョブであって、且つ、先行する抽出ジョブに対して並列実行が可能である場合に加工ジョブ判定フラグ１１０６の値がｏｎとなる。また、集計ジョブについては、ジョブが集計ジョブであって、且つ、先行する加工ジョブに対して並列実行が可能である場合に集計ジョブ判定フラグ１１０７の値がｏｎとなる。図１１においては、各々のジョブの種別を３つのフラグ情報を用いて特定可能としているが、各々のジョブの種別が特定可能であれば、データの持ち方は適宜変更することができる。
【００５０】
図１１に基づいて説明すると、ジョブネット名がｊｏｂｎｅｔ００１のジョブネットには、ジョブ名がそれぞれｊｏｂ００１、ｊｏｂ００２、ｊｏｂ００３の３つのジョブが含まれることが分かる。以降の説明では、例えば、ジョブ名がｊｏｂ００１のジョブを、「ｊｏｂ００１のジョブ」と記載することがある。
【００５１】
ｊｏｂ００２のジョブは加工ジョブであり、抽出ジョブであるｊｏｂ００１のジョブの出力データを入力データとする。また、ｊｏｂ００３のジョブは集計ジョブであり、加工ジョブであるｊｏｂ００２のジョブの出力データを入力データとする。そのため、３つのジョブは、ｊｏｂ００１、ｊｏｂ００２、ｊｏｂ００３の順序で実行される必要がある。
【００５２】
実行制御部２１１は、上述したようなデータの入出力関係などに基づいて、各々のジョブの実行順序や、実行開始のタイミングについてのスケジューリングを実行する。なお、実行開始のタイミングを特定する情報については、本実施例では稼動情報記憶部２２５に記憶されるが、これについては詳細を後述する。
【００５３】
図９の説明に戻る。ジョブの実行において、管理装置２の判定部２１２は、集計処理を実行するジョブのシーク処理を監視する（ステップＳ９０１）。ステップＳ９０１の処理については、詳細を後述する。
【００５４】
判定部２１２は、例えば、テスト運用時の各ジョブの実行終了後などに、抽出ジョブにより抽出されたデータ（以降、抽出データと記載する）と、集計ジョブにより生成された集計結果のデータ（以降、集計データと記載する）を取得する（ステップＳ９０２）。なお、テスト運用時におけるジョブの実行において、各ジョブについての並列実行は実施されていないものとする。
【００５５】
判定部２１２は、取得した抽出データに基づいて、抽出データの内容に関する情報を抽出データ情報記憶部２２２に記憶する（ステップＳ９０３）。
【００５６】
ここで、上述した抽出データ、集計データの一例について説明する。
【００５７】
図１２は、抽出データの一例である。例えば、図１２に示す抽出データ１２００は、データ列として氏名１２０１、所属１２０２、年齢１２０３、給与１２０４、勤務地１２０５を含むレコードである。各データ列のデータの意味については詳細を割愛するが、抽出データは、例えば企業の人事情報などである。なお、図１２は抽出データの一例であり、抽出データに含まれるデータ列は図１２とは異なるものであったり、さらに多くのデータ列を含みうる。図１２のレコードは、例えば、Relational Database（ＲＤＢ）の場合、氏名１２０１、所属１２０２、年齢１２０３、給与１２０４、勤務地１２０５それぞれがデータ列のラベル名（データ項目名）である。複数のレコードそれぞれに含まれるデータ項目に対応する値の集合は、データ項目に対応する複数の値を含むデータの群と見なすことができる。
【００５８】
図１３は、集計データの一例である。図１３に示す集計データ１３００は、データ列（データ項目）として、部署１３０１、平均給与１３０２を含む。すなわち、集計データ１３００は、集計ジョブの実行により部署ごとの平均給与が算出された結果である。なお、図１３は集計データの一例であり、実行される集計ジョブが異なる、すなわち、集計ジョブについて定義された集計処理が異なる場合は、集計データの態様は異なるものになりうる。
【００５９】
再び図９の説明に戻る。ステップＳ９０４では、ステップＳ９０１にて実行された、シーク処理の監視結果に基づいて、判定部２１２は、集計ジョブについてのデータの入出力がシーケンシャル処理により実行されているか否かを判定する。これは、集計ジョブへのデータ入力と、集計ジョブからのデータ出力の少なくともいずれかが、シーケンシャル処理でない場合は、並列実行を適用することができないためである。なお、シーケンシャル処理とは、例えば、入出力対象のデータがレコードである場合は、データ入力時にレコードの並び順にデータが参照される態様の処理である。あるいは、シーケンシャル処理とは、データ出力時に、出力データであるレコードの出力順と、データベースにおけるレコードの並び順が一致する態様の処理である。
【００６０】
集計ジョブへのデータ入力と、集計ジョブからのデータ出力の少なくともいずれかがシーケンシャル処理でない場合、図１０に示すステップＳ９１１の処理に移行する（フローチャートの図においては、図９の端子Ａから、図１０の端子Ａに移行する）。一方、集計ジョブへのデータ入力と、集計ジョブからのデータ出力の双方がシーケンシャル処理の場合、図１０に示すステップＳ９０５の処理に移行する（フローチャートの図においては、図９の端子Ｂから、図１０の端子Ｂに移行する）。
【００６１】
ステップＳ９０５では、判定部２１２は、抽出データそれぞれに含まれる、各データ列について、データ列の値の種類数を特定する。ここで、データ列の値の種類数は、各々のデータ列について、重複するデータの値をまとめて１と数えた場合の、データの個数である。
【００６２】
例として、図１２に示した抽出データ１２００に基づいて説明する。例えば、名前１２０１のデータ列は、レコードの件数が計７件であり、データの値は、ＡＡ、ＢＢ、ＣＣ、ＤＤ、ＥＥ、ＦＦ、ＧＧとそれぞれ異なる。したがって、名前１２０１のデータ列について、データの種類数は７である。一方、所属１２０２のデータ列は、レコードの件数は、名前１２０１のデータ列と同様に計７件である。データの値の内訳は、１開発が２件、２開発が３件、３開発が２件であり、すなわち、データの値は１開発、２開発、３開発の３つのうちのいずれかである。したがって、所属１２０２のデータ列について、データの種類数は３である。
【００６３】
図１４に種類数情報記憶部２２４に記憶される情報の一例を示す。図１４に示す情報は、図１２に示した抽出データ１２００に含まれる各データ列についてのデータの種類数を示す情報である。なお、抽出データが複数取得される場合は、取得された抽出データそれぞれについて、図１４に示すような情報が生成され、種類数情報記憶部２２４に記憶される。
【００６４】
種類数情報記憶部２２４は、例えば、列番号１４０１、項目名１４０２、種類数１４０３を記憶する。
【００６５】
列番号１４０１は、抽出データにおけるデータ列の位置を、図１２においては左側を先頭（列番号＝１）とした通番で示すものである。ただし、各々のデータ列の位置を特定可能であれば、具体的なデータの態様は、図１４に示す態様に限定されない。例えば、データの値を、図１４において左側を先頭とし、列番号の値を０とした通番としても良い。
【００６６】
項目名１４０２は、抽出データのデータ列の名前（ラベル名）を示す情報である。項目名１４０２は、抽出データにおける各々のデータ列を一意に識別する情報として利用可能である。ただし、列番号１４０１、項目名１４０２のそれぞれが、各々のデータ列を一意に識別可能であれば、列番号１４０１と項目名１４０２のいずれか一方を参照することで、各々のデータ列が識別可能となる。したがって、列番号１４０１、項目名１４０２のそれぞれが、各々のデータ列を一意に識別可能であれば、必ずしも列番号１４０１と項目名１４０２の両者を必要とはしない。
【００６７】
種類数１４０３は、各々のデータ列について、データの種類数を示す情報である。データの種類数については、前述の説明の通りである。
【００６８】
図１４に示す情報により、例えば、抽出データ１２００についての説明で述べたように、名前１２０１のデータ列について、データの種類数は７であり、また、抽出データにおいて、左から１番目（図１２の場合）に位置するデータ列であることが特定される。
【００６９】
再び、図１０のフローチャートの説明に戻る。ステップＳ９０５の処理を実行後、判定部２１２は、集計データの出力行数を特定する（ステップＳ９０６）。出力行数とは、例えば、図１３に示した集計データ１３００であれば、縦方向の行数を示す情報である。ただし、このとき、データ列の項目名となる行（図１３であれば最上段の行）は行数として計数しない。したがって、例えば図１３に示す集計データ１３００については、出力行数は３となる。なお、集計データの出力行数は、集計データにおける分類に用いられるデータ項目の値の種類数とも言える。
【００７０】
判定部２１２は、ステップＳ９０５で種類数情報記憶部２２４に記憶された、抽出データの各データ列についての値の種類数と、ステップＳ９０６で特定された集計データの出力行数とを比較する。そして、抽出データ中に、値の種類数が集計データの出力行数と一致するデータ列があるか否かを判定する（ステップＳ９０７）。
【００７１】
例えば、図１２に示した抽出データ１２００と、図１３に示した集計データ１３００を例として説明すると、集計データの出力行数は３である。したがって、値の種類数、すなわち図１４に示した種類数１４０３が３となるデータ列である、所属１２０２、勤務地１２０５のデータ列を特定する。なお、抽出データ中に、値の種類数が集計データの出力行数と一致するデータ列が存在しないと判定部２１２が判定した場合（Ｓ９０７、Ｎｏ）、ステップＳ９１１の処理に移行する。なお、本実施例においては例示として、抽出データ中に、値の種類数が集計データの出力行数と一致するデータ列があるか否かを判定しているが、完全一致に限定することなく、例えば、種類数の差が所定の値以下という判定とすることもできる。
【００７２】
さて、ステップＳ９０７の処理で、抽出データ中に、値の種類数が集計データの出力行数と一致するデータ列が１つ以上あると判定された場合（Ｓ９０７、Ｙｅｓ）、判定部２１２は、ステップＳ９０８の処理を実行する。ステップＳ９０８では、判定部２１２は、値の種類数が集計データの出力行数と一致するデータ列それぞれについて、データ列の値と集計データの値を比較し、とりうる値が一致するか否かを判定する。集計データの値とデータの値が一致するデータ列が存在しないと判定部２１２が判定した場合、ステップＳ９１１の処理に移行する。一方、集計データの値とデータの値が一致するデータ列が１つ以上あると判定された場合はステップＳ９０９の処理に移行する。なお、ステップＳ９０８の判定は、上述したデータの値の完全一致に限定されず、例えば、データの値の類似や相関の度合いなどに基づいて、所定の基準よりもデータの値が類似する、あるいは相関が高い場合を、データの値が一致すると見なしてもよい。
【００７３】
ステップＳ９０８の処理について、図１２に示した抽出データ１２００と、図１３に示した集計データ１３００を例にすると、集計データ１３００は、前述のように、部署ごとの平均給与が算出された結果であるので、比較に用いる集計データのデータ列は部署１３０１である。部署１３０１には、データの値として、１開発、２開発、３開発の３つが含まれる。
【００７４】
ステップＳ９０７の処理にて、値の種類数が集計データの出力行数と一致するデータ列として、所属１２０２、勤務地１２０５のデータ列が特定されている。所属１２０２のデータ列には、データの値として、１開発、２開発、３開発の３つが含まれる。また、勤務地１２０５のデータ列には、データの値として、東京、愛知、大阪の３つが含まれる。すなわち、所属１２０２に含まれるデータの値は部署１３０１に含まれるデータの値と一致するが、勤務地１２０５に含まれるデータの値は部署１３０１に含まれるデータの値と一致しない。したがって、判定部２１２は、集計データの値とデータの値が一致するデータ列として、所属１２０２を特定する。
【００７５】
ステップＳ９０９の処理の説明に移る。ステップＳ９０９では、判定部２１２が、ステップＳ９０８で特定されたデータ列がソートされているか否かを判定する。ここで、ソートされているとは、データ列の値が、例えばデータ行の最上段から順次参照された場合（シーケンシャル処理の態様で参照された場合）、同じ値のデータが一度に連続して出現するような配列である。例えば、図１２に示す集計データ１２００の所属１２０２のデータ列では、図１２を見た場合のデータ列の最上段から下方向にデータが順次参照された場合、始めにデータの値として１開発が出現し、その後、２開発、そして３開発が出現する。１開発は２開発が出現後、データの値として出現しない。また、２開発は、３開発が出現後、データの値として出現しない。したがって、図１２に示す集計データ１２００の所属１２０２のデータ列については、データ列がソートされていると言える。
【００７６】
ステップＳ９０８で特定されたデータ列がソートされていないと判定された場合、ステップＳ９１１の処理に移行する。一方、ステップＳ９０８で特定されたデータ列がソートされていると判定された場合、ステップＳ９１０の処理に移行する。
【００７７】
ステップＳ９１０では、判定部２１２が、ステップＳ９０８で特定されたデータ列について、データ列が含まれる抽出データ、および抽出データにおけるデータ列の位置を特定する情報を抽出データ情報記憶部２２２に記憶する。
【００７８】
図１５に、抽出データ情報記憶部２２２に記憶される情報の一例を示す。例えば、抽出データ情報記憶部２２２は、図１５に示すように、例えば、ジョブネット名１５０１、ジョブ名１５０２、抽出データ名１５０３、分割基準列情報１５０４を記憶する。
【００７９】
ジョブネット名１５０１は、各ジョブが属するジョブネットを識別可能とする情報であり、例えば、前述したジョブネット名１１０１と同様のデータ形式であって良い。
【００８０】
ジョブ名１５０２、ジョブそれぞれを識別可能とする情報であり、例えば、前述したジョブ名１１０２と同様のデータ形式であって良い。なお、図１５に記載するジョブ名は、抽出ジョブのジョブ名である。
【００８１】
抽出データ名１５０３は、抽出ジョブの抽出処理の入力データを識別可能とする情報である。
【００８２】
分割基準列情報１５０４は、後述する、並列実行のための抽出データの分割の際に参照する、抽出データ中のデータ列を特定する情報である。例えば、抽出データ情報記憶部２２２は、分割基準列情報１５０４の値として、並列実行のための抽出データの分割の際に参照するデータ列に対応する列番号１４０１の値を記憶する。
【００８３】
図１０の説明に戻る。ステップＳ９１１では、判定部２１２は、抽出データ情報記憶部２２２に記憶された、抽出データに対応する分割基準列情報１５０４に、該当のデータ列がない旨の情報を記憶する。
【００８４】
例えば、判定部２１２は、抽出データ情報記憶部２２２に記憶された、抽出データに対応する分割基準列情報１５０４の値として、−１を記憶する。この−１の値は、本実施例においては、並列実行のための抽出データの分割の際に利用可能なデータ列が該当の抽出データ中に存在しないことを示すものである。すなわち、ステップＳ９１１の処理が実行された抽出データを出力する抽出ジョブに後続する集計ジョブは並列実行ができないこととなる。ステップＳ９１０およびステップＳ９１１の処理により、抽出データについて、並列実行が可能な否かが、抽出データ情報記憶部２２２を参照して判別可能となる。
【００８５】
上記で説明した図９に示す一連の処理により実現される効果について説明する。例えば、図３を用いて説明したように、実行サーバ３−１〜３−ｎが集計ジョブを並列実行した場合、集計処理の結果に誤りが生じる可能性がある。集計結果の誤りを防ぐためには、例えば、図３であれば、各部署のデータごとに入力データが分割されるように、抽出ジョブからの出力データを分割しておく必要がある。そのためには、抽出ジョブが実行する抽出処理の段階で、集計処理がどのような分類に基づき実行されるか（例えば図３の場合は部署である）と、分類を判別可能な抽出データ中のデータ列を特定しておく必要がある。
【００８６】
データ列の特定の際、抽出データと集計データとでは、データ列の項目名（データのラベル名）が同一であるとは限らない。図１２および図１３に示した例においても、集計データにおける「部署」に相当する抽出データのデータ列の項目名は「所属」となっており、項目名が一致しない。したがって、データ列の項目名を利用して分類を判別可能な抽出データ中のデータ列を特定しようとすると、特定の結果に誤りが生じるおそれがある。
【００８７】
特定結果の誤りを防ぐためには、例えば、データ列の項目名でなく、データ列中のデータの値に基づいて、分類を判別可能な抽出データ中のデータ列を特定することが考えられる。ただし、前述した各図においては、説明のために簡略化したデータを対象としているが、現実の抽出データは、データ列の数、レコードの件数ともに、膨大な数となることが少なくない。そのため、全てのデータ列に対してデータの値の検証を実行しようとすれば、多くの処理時間が必要となる。
【００８８】
本実施例では、抽出データ中の各データ列について、データの値の種類数に基づいて、分類を判別可能なデータ列の絞込みが実行される。そして、データの値の種類数に基づいて絞り込まれたデータ列に対して選択的に、データの値を検証して、分類を判別可能なデータ列であるか否かが判定される。したがって、データの値について検証を要するデータ列を削減することができる。
【００８９】
また、集計処理がどのような分類に基づき実行されるかは、集計ジョブが終了し、集計ジョブからのデータ出力が終了後でないと判別することはできない。一方、抽出データ中の各データ列について、データの値の種類数を特定する処理は、抽出データ（抽出ジョブに対する入力データ）が特定された段階で、処理を開始することが可能である。そして、データの値の種類数を特定する処理が開始可能なタイミングは、集計処理の終了よりも早い。
【００９０】
したがって、集計処理の終了に先立って、抽出データ中の各データ列についてデータの値の種類数が特定され、データの値の種類数に基づいて、分類を判別可能なデータ列の絞込みを実行することができる。すなわち、集計処理が終了してデータの値が検証可能となる前に、分類を判別可能なデータ列の候補が絞り込みに要する処理が実行可能である。これにより、集計処理の終了後の、データの値の検証に要する時間を削減することができる。
【００９１】
なお、図９および図１０に記載した一連の処理は、本実施例の目的を達成可能な範囲内で、処理の内容や順序などを適宜変更することができる。例えば、ステップＳ９０９として記載した、データ列がソートされているか否かの判定処理についても、抽出データが特定された段階で、処理を開始することが可能である。したがって、例えば、ステップＳ９０９の処理が、ステップＳ９０７およびＳ９０８の処理に先行して実行される態様とすることもできる。
【００９２】
以上が、図９、および図１０に示した一連の処理についての説明である。
〔ステップＳ９０１の詳細〕
前述した、図９のステップＳ９０１の処理について、詳細を説明する。ステップＳ９０１の処理は、集計ジョブの実行時に実施されるものであるが、データ入力時の処理とデータ出力時の処理を含む。以降では、データ入力時の処理、データ出力時の処理の処理を順に説明する。
【００９３】
図１６に、集計ジョブへのデータ入力時における、ステップＳ９０１の処理のフローチャートを示す。図１６に記載の一連の処理は、例えば、集計ジョブに対するデータ入力の発生に応じて開始される。
【００９４】
ステップＳ１６０１では、判定部２１２が、集計ジョブに対するデータ入力においてシーク処理が呼び出されているか否かを判定する。ここで、シーク処理とはデータの入力や出力の際に、データの読み出し位置や書き込み位置が非連続に指定される態様を指す。ファイルのシーク処理が発生していない場合、集計ジョブに対するデータ入力がシーケンシャル処理で行われていることを意味する。判定部２１２は、ステップＳ１６０１の判定結果に応じて、判定結果を示す情報をシーク処理管理情報記憶部２２３に記憶する。
【００９５】
図１７にシーク処理管理情報記憶部２２３に記憶される情報の一例を示す。シーク処理管理情報記憶部２２３は、例えば図１７に示すように、ジョブ名１７０１、入力シーク処理フラグ１７０２、出力シーク処理フラグ１７０３を記憶する。
【００９６】
ジョブ名１７０１は、ジョブそれぞれを識別可能とする情報であり、例えば、前述したジョブ名１１０２と同様のデータ形式であって良い。なお、図１７においては、シーク処理管理情報記憶部２２３にジョブ名が記憶されるジョブは、集計ジョブのみとなっている。
【００９７】
入力シーク処理フラグ１７０２は、集計ジョブに対するデータ入力の際にシーク処理が発生しているか否かを示す情報である。また、出力シーク処理フラグ１７０３は、集計ジョブに対するデータ出力の際にシーク処理が発生しているか否かを示す情報である。
【００９８】
一旦、図１６の説明に戻ると、集計ジョブに対するデータ入力においてファイルのシーク処理が呼び出されていると判定された場合（ステップＳ１６０１、Ｙｅｓ）、判定部２１２は、判定対象のジョブに対応する入力シーク処理フラグ１７０２の値としてｏｎを、管理情報記憶部２２３に記憶する（ステップＳ１６０２）。本実施例においては、入力シーク処理フラグ１７０２の値がｏｎの場合、集計ジョブに対するデータ入力にファイルのシーク処理が呼び出されていることを示すものとする。一方、集計ジョブに対するデータ入力においてファイルのシーク処理が呼び出されていないと判定された場合（ステップＳ１６０１、Ｎｏ）、判定部２１２は、判定対象のジョブに対応する入力シーク処理フラグ１７０２の値としてｏｆｆを、管理情報記憶部２２３に記憶する（ステップＳ１６０３）。本実施例においては、入力シーク処理フラグ１７０２の値がｏｆｆの場合、集計ジョブに対するデータ入力にファイルのシーク処理が呼び出されていることを示すものとする。ただし、フラグの値と意味の対応付けについては、データの値に基づいて、シーク処理の発生有無が区別可能であれば、図１７と異なる態様であっても良い。
【００９９】
集計ジョブに対するデータ入力を監視し、監視の結果をステップＳ１６０２、またはステップＳ１６０３の処理において管理情報記憶部２２３に記憶した後、図１６に示す処理は終了する。
【０１００】
次に、図１８に、集計ジョブからのデータ出力時における、ステップＳ９０１の処理のフローチャートを示す。図１８に記載の一連の処理は、例えば、集計ジョブからのデータ出力の発生に応じて開始される。
【０１０１】
ステップＳ１８０１では、判定部２１２が、集計ジョブからのデータ出力においてファイルのシーク処理が呼び出されているか否かを判定する。集計ジョブからのデータ出力においてファイルのシーク処理が呼び出されていると判定された場合（ステップＳ１８０１、Ｙｅｓ）、判定部２１２は、判定対象のジョブに対応する出力シーク処理フラグ１７０３の値としてｏｎを、管理情報記憶部２２３に記憶する（ステップＳ１８０２）。本実施例においては、出力シーク処理フラグ１７０３の値がｏｎの場合、集計ジョブからのデータ出力においてファイルのシーク処理が呼び出されていることを示すものとする。一方、集計ジョブからのデータ出力においてファイルのシーク処理が呼び出されていないと判定された場合（ステップＳ１８０１、Ｎｏ）、判定部２１２は、判定対象のジョブに対応する出力シーク処理フラグ１７０３の値としてｏｆｆを、管理情報記憶部２２３に記憶する（ステップＳ１８０３）。本実施例においては、出力シーク処理フラグ１７０３の値がｏｆｆの場合、集計ジョブ集計ジョブからのデータ出力においてファイルのシーク処理が呼び出されていることを示すものとする。ただし、フラグの値と意味の対応付けについては、データの値に基づいて、シーク処理の発生有無が区別可能であれば、図１７と異なる態様であっても良い。
【０１０２】
集計ジョブ集計ジョブからのデータ出力を監視し、監視の結果をステップＳ１８０２、またはステップＳ１８０３の処理において管理情報記憶部２２３に記憶した後、図１８に示す処理は終了する。
【０１０３】
なお、図１７に示す情報が管理情報記憶部２２３に記憶されることにより、判定部２１２が、管理情報記憶部２２３を参照して、前述した図９のステップＳ９０４に記載した判定処理を実行することができる。
〔本番運用の処理フロー〕
これまでは、本番運用に先立って実施されるテスト運用時の処理について説明をしたが、以降では、本番運用時の処理について説明をする。
【０１０４】
図１９は、本番運用時に管理装置２が実行する処理のフローチャートである。図１９に示す一連の処理は、例えば、テスト運用時にジョブの実行依頼が端末装置１から送信されたことに応じて開始される。各々のジョブの実行は、管理装置２の実行制御部２１１による制御のもとで、実行サーバ３−１〜３−ｎのいずれかに割り当てられる。
【０１０５】
ステップＳ１９０１では、遅延検知部２１３が、ジョブの実行スケジュールに遅延が生じしているか否かを判定する。例えば、遅延検知部２１３は、抽出処理を実行中に抽出ジョブの出力データ（出力済みのデータ）のサイズを、所定時間（例えば１分）ごとに監視する。そして、遅延検知部２１３は、取得した出力データサイズに基づいて、抽出ジョブに後続する加工ジョブ、あるいは集計ジョブが、設定された終了期限までに終了可能か否かを予測し、終了不可と判定した場合に、遅延が発生すると判定しても良い。
〔稼動情報記憶部〕
図２０に、稼動情報記憶部２２５に記憶される情報の一例を示す。稼動情報記憶部２２５は、例えば図２０に示すように、ジョブ名２００１、出力データサイズ２００２、処理可能データサイズ２００３、終了期限２００４、並列実行フラグ２００５を記憶する。
【０１０６】
ジョブ名２００１は、ジョブそれぞれを識別可能とする情報であり、例えば、前述したジョブ名１１０２と同様のデータ形式であって良い。
【０１０７】
出力データサイズ２００２は、遅延検知部２１３が、抽出処理を実行中に抽出ジョブの出力データ（出力済みのデータ）のサイズを定期的に監視した結果を示す情報である。なお、出力データサイズ２００２として記憶されるデータサイズの値は、遅延検知部２１３による抽出ジョブの監視（ステップＳ１９０１）が実行されることに応じて、逐次更新される。
【０１０８】
処理可能データサイズ２００３は、抽出ジョブに後続する加工ジョブおよび集計ジョブについて、単位時間あたりに処理可能な入力データサイズ（＝抽出ジョブからの出力データサイズ）を示す情報である。例えば、処理可能データサイズ２００３は、１分あたりに加工処理および集計処理が可能な入力データサイズを示す情報とすることができる。なお、例えば、稼動情報記憶部２２５は、単位時間あたりに処理可能な入力データサイズを、加工ジョブと集計ジョブとでそれぞれ別個に記憶しておくこととしても良い。単位時間あたりに処理可能な入力データサイズは、例えば、テスト運用時における抽出ジョブからの出力データサイズと、出力データに対して、加工ジョブが開始され集計ジョブが終了するまでの所要時間を取得しておくことで算出可能である。具体的には例えば、出力データサイズを所要時間で除算した結果を、単位時間あたりに処理可能な入力データサイズとすることができる。なお、単位時間あたりに処理可能な入力データサイズはジョブを並列実行しない場合の単位時間あたりに処理可能な入力データサイズである。
【０１０９】
終了期限２００４は、例えば、抽出ジョブに後続する集計ジョブ対して予め設定された、処理終了の期限（時刻）を示す情報である。処理終了期限は、例えば、予め決定されたジョブの実行計画において、一連のジョブを所定の期限内に終了するために設定される、各ジョブの終了期限である。ジョブの実行計画は、例えば、管理装置２に実装される既知のスケジューリング機能などを実行することで決定することができる。実際の終了時刻が終了期限を超過することは、ジョブの実行遅延を意味する。
【０１１０】
並列実行フラグ２００５は、抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能なジョブであるか否かを示す情報である。図２０の態様では、抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能な場合、並列実行フラグ２００５の値はｏｎとなり、並列実行が不可能な場合、並列実行フラグ２００５の値はｏｆｆとなる。
【０１１１】
再度、図１９のステップＳ１９０１の書類について説明する。遅延検知部２１３は、例えば、現在の時刻と、終了期限２００４に示される時間との差分、すなわち、終了期限までの残り時間と、処理可能データサイズ２００３に示されるデータサイズとを乗算したデータサイズを取得する。乗算により取得されたデータサイズは、現在の時刻から終了期限までに抽出ジョブに後続する加工ジョブおよび集計ジョブが処理可能な入力データ量の推定値と言える。そこで、遅延検知部２１３は、ステップＳ１９０１において出力データサイズ２００２の情報が更新された後、更新された出力データサイズと、前述の乗算により取得されたデータサイズとを比較する。そして、乗算により取得されたデータサイズが、出力データサイズ２００２に示されるデータサイズを上回る場合、遅延検知部２１３は、ジョブの実行に遅延が発生すると判定する（Ｓ１９０１、Ｙｅｓ）。また、乗算により取得されたデータサイズが、出力データサイズ２００２に示されるデータサイズ以下の場合、遅延検知部２１３は、ジョブの実行に遅延が発生しないと判定する（Ｓ１９０１、Ｎｏ）。
【０１１２】
ジョブの実行に遅延が発生しないと判定された場合、遅延検知部２１３は、抽出ジョブによる抽出処理が継続中であるか否かを判定する（ステップＳ１９０２）。抽出処理が継続中の場合（Ｓ１９０２、Ｙｅｓ）、遅延検知部２１３は、再度ステップＳ１９０１の処理を実行する。すなわち、遅延検知部２１３は、抽出ジョブの監視および遅延の判定処理を継続する。これは、現時点ではジョブの実行遅延が検知されなくとも、抽出処理が進行した場合、ジョブの実行に遅延が発生する可能性があるためである。
【０１１３】
一方、抽出処理が終了した場合（Ｓ１９０２、Ｎｏ）、実行制御部２１１は、並列実行を実施することなく、抽出ジョブに後続する加工ジョブおよび集計ジョブを実行するように制御する（Ｓ１９０３）。
【０１１４】
さて、ステップＳ１９０１で、ジョブの実行に遅延が発生すると判定された場合（Ｓ１９０１、Ｙｅｓ）、実行制御部２１１は、抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能であるか否かを判定する（ステップＳ１９０４）。判定部２１２は、例えば、並列実行フラグ２００５を参照することで、抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能であるか否かを判定することができる。抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能でない場合（Ｓ１９０４、Ｎｏ）、ステップＳ１９０３の処理が実行される。抽出ジョブに後続する加工ジョブおよび集計ジョブが並列実行可能である場合（Ｓ１９０４、Ｙｅｓ）、ステップＳ１９０５の処理が実行される。なお、並列実行フラグ２００５の記憶および参照は必須ではなく、例えば、実行制御部２１１がステップＳ１９０１で、シーク処理管理情報記憶部２２３を参照して並列実行の可否を判定することとしても良い。
【０１１５】
ステップＳ１９０５では、実行制御部２１１が、抽出データ情報記憶部２２２に記憶された分割基準列情報１５０４を参照して、抽出データ中のデータ列（分割基準列）を特定し、特定された分割基準列について、出力データの出力状況を監視する。
【０１１６】
そして、ステップＳ１９０６にて、実行制御部２１１は、分割基準列について、データの区切りを検知する。ここで、データの区切りとは、出力データにおいて、データの値が変わる位置であり、抽出ジョブに後続する加工ジョブおよび集計ジョブを並列実行する場合に、データ分割を行うこととなるデータ行の位置である。例えば、図１２に示す抽出データ１２００を例にして説明すると、上述したデータの区切りは図中に２つ存在する。１つは、所属１２０２の値が１開発から２開発に変わる位置、すなわち、名前１２０１の値がＢＢのデータ行とＣＣのデータ行の間である。もう１つは、所属１２０２の値が２開発から３開発に変わる位置、すなわち、名前１２０１の値がＥＥのデータ行とＦＦのデータ行の間である。例えば、実行制御部２１１は、抽出ジョブから出力されたデータを順次参照し、前述のような、分割基準列のデータ列における、データの値の切り替わりを検知した場合、データの区切りを検知する。データの区切りが検知されない場合（Ｓ１９０６、Ｎｏ）、ステップＳ１９０５およびステップＳ１９０６の処理が継続される。
【０１１７】
データの区切りが検知された場合（Ｓ１９０６、Ｙｅｓ）、実行制御部２１１は、検出されたデータの区切りの位置より前に出力された出力データを入力データとして、抽出ジョブに後続する加工ジョブを、実行サーバ３−１、３〜ｎのいずれかに割り当てる（ステップＳ１９０７）。これにより、加工ジョブの実行が割り当てられた実行サーバにおいて、並列実行される複数の加工ジョブの１つが実行されることとなる。
【０１１８】
ステップＳ１９０７の処理を実行後、実行制御部２１１は、抽出ジョブからの出力データの分割が完了したか否かを判定する（ステップＳ１９０８）。例えば、実行制御部２１１が、抽出ジョブからの出力データについて、データの区切りを検知した回数をメモリなどに保持しておく。そして、データの区切りを検知した回数が「（抽出データの分割基準列についてのデータの種類数）−１」に達したか否かに応じて、実行制御部２１１が、出力データの分割が完了したか否かを判定することができる。データの区切りの個数は、データの種類数より１少ない数となるので、データの区切りを検知した回数が「（抽出データの分割基準列についてのデータの種類数）−１」に達した場合、実行制御部２１１は、監視中の出力データについて、以降、データの区切りは検知されないと判定することができる。言い換えれば、抽出ジョブからの出力データの完了後に、完了時点で加工ジョブに入力されていないデータを入力データとして、抽出ジョブに後続する加工ジョブを実行サーバ３−１、３〜ｎのいずれかに割り当てることで、並列実行される複数の加工ジョブの全てが実行開始されることとなる。なお、並列実行される複数のジョブそれぞれに割り当てられる処理リソースの単位は、例えば、ハードウェアとしての実行サーバ単位であっても良いし、実行サーバが有するプロセッサのコア単位であっても良い。
【０１１９】
一方、データの区切りを検知した回数が「（抽出データの分割基準列についてのデータの種類数）−１」よりも少ない場合（Ｓ１９０８、Ｎｏ）、再びステップＳ１９０５の処理が実行される。
【０１２０】
以上で、図１９に示す一連の処理について説明を終わるが、実行制御部２１１によるジョブの割り当てが行われた後の、実行サーバ３−１〜３−ｎによるジョブの実行について説明する。
【０１２１】
ステップＳ１９０７において、加工ジョブの割り当てが行われた後は、ジョブが割り当てられた実行サーバ３−１〜３−ｎにおいて、加工ジョブが実行される。加工ジョブが実行されたあとは、加工ジョブからの出力データを入力データとする集計ジョブが実行される。このとき、後続する集計ジョブは、加工ジョブと同様に並列実行されることとなる。また、複数の集計ジョブそれぞれの実行が割り当てられる実行サーバは、前段の加工ジョブを実行した実行サーバと同じとする。したがって、加工ジョブに引き続き、集計ジョブも並列実行されることとなる。
【０１２２】
並列実行される複数の集計ジョブについて、データの出力には大きく２つの態様がある。
【０１２３】
１つは、集計ジョブからの出力データの出力先がＤＢの場合である。なお、ここで記載するＤＢには例えば、Relational Database Management System（ＲＤＢＭＳ）により実現されるＲＤＢを含む。出力先がＤＢの場合、集計ジョブからのデータ出力は、ＤＢのレコードの更新処理である。このとき、並列実行される複数の集計ジョブそれぞれは、自身の集計処理が終了すれば、他のジョブの集計処理の終了を待たずにデータの出力が可能である。そして、並列実行される複数の集計ジョブすべてのデータ出力の完了を以って、集計ジョブの終了とする。
【０１２４】
もう１つは、集計ジョブからの出力データの出力先がファイルの場合である。このとき、並列実行を行わない場合と同様の出力ファイルの態様とするため、並列実行が行われた場合でも、出力ファイルは１つとする。したがって、並列実行される複数の集計ジョブそれぞれは、自身の集計処理が終了した後に、他のジョブの集計処理の終了まで待機する。そして、並列実行される複数の集計ジョブすべてで集計処理が終了した後に、集計結果をマージしたファイルを生成して、集計ジョブの終了とする。なお、集計結果をマージしたファイルを生成する処理は、実行サーバ３−１〜３−ｎのいずれかで行われても良いし、管理装置２の実行制御部２１１で実行されても良い。
【０１２５】
以上の処理により、抽出ジョブに後続する加工ジョブ、および集計ジョブについて、並列実行を行い、処理時間を短縮することができる。ジョブの実行が遅延していている場合は、処理時間の短縮によって、ジョブの実行遅延の解消を図ることができる。なお、本実施例では、ジョブの実行が遅延していない場合であれば、加工ジョブおよび集計ジョブが並列実行可能であっても、並列実行は行われない。そのため、並列実行が行われる場合よりも少ない処理リソースでジョブが実行される。これにより、ジョブの実行遅延が発生しない限りにおいて、ジョブ実行に要する処理リソースを節約することができる。
【０１２６】
また、本実施例では、実行制御部２１１がデータの区切りを基準として抽出データを複数に分割し、分割した抽出データそれぞれを入力データとして、加工ジョブが並列実行される。データの区切りを基準として抽出データを複数に分割されるので、図３を用いて説明したような、集計データの誤りを防ぐことができる。また、データの区切りの検出に応じて、検出されたデータ区切り以前の加工ジョブが未実行のデータについて加工ジョブの実行を開始することにより、並列実行される加工ジョブの一部を、抽出ジョブ全体の終了を待たずに開始することができる。したがって、並列実行される加工ジョブのそれぞれを、より早く終了させることができる。
【０１２７】
図２１に、図３に記載した抽出データに対して、本実施例に基づいてジョブの並列処理を実行した際のイメージ図を示す。例示する抽出データ、および集計処理が並列実行されている点は図３と同様であるが、図３とは異なり、同じ部署を示すレコードが１つの実行サーバ（処理の割り当て単位）に集約される。そのため、図３と比較して、集計データの誤りが解消されていることが分かる。
〔ハードウェア構成〕
図２２は、本実施例におけるクライアント装置１のハードウェア構成の一例である。なお、図２２では、端末装置１のハードウェア構成の一例を示すが、後述のように、管理装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４についても同様の構成が採用可能である。
【０１２８】
クライアント装置１は、例えば、それぞれがバス２２０１で相互に接続された、ＣＰＵ２２０２、メモリ２２０３、記憶装置２２０４、ＮＩＣ２２０５、媒体読取装置２２０６、入力装置２２０７、表示装置２２０８、を備える情報処理装置である。
【０１２９】
ＣＰＵ２２０２は、端末装置１における種々の動作制御を行う。メモリ２２０３、記憶装置２２０４は、本実施例で説明した各種の処理を実行するプログラムや、各種の処理に利用される種々のデータを記憶する。記憶装置２２０４は、例えば、ＨＤＤや、ＳＳＤ等の記憶媒体である。
【０１３０】
ＣＰＵ２２０２は、メモリ２２０３あるいは記憶装置２２０４に記憶されたプログラムを読み出して処理、制御を実行することで、図３に示す制御部２００および制御部２００に含まれる各機能部が実現されても良い。また、メモリ２２０３、記憶装置２２０４のそれぞれは、図３に記載した記憶部３００として機能することができる。
【０１３１】
ＮＩＣ２２０５は、有線または無線のネットワークを介したデータの送受信に用いられるハードウェアである。ＮＩＣ２２０５は、ＣＰＵ２２０２の制御の下で、通信部１０４として機能することができる。
【０１３２】
媒体読取装置２２０６は、記録媒体からデータを読み取るための装置であり、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のディスク媒体に記憶されたデータを読み取るディスクドライブや、メモリカードに記憶されたデータを読み取るカードスロット等である。前述した記憶部３００に記憶されるデータの一部または全部は、媒体読取装置２２０６を用いて読み取り可能な記録媒体に記憶されることとしても良い。
【０１３３】
入力装置２２０７は、端末装置１のユーザからの入力や指定を受け付ける装置である。入力装置２２０７の例としては、例えばキーボードやマウス、タッチパッドが挙げられる。表示装置２２０８は、ＣＰＵ２２０２の制御の下で、種々の情報の表示を行う。表示装置２２０８は、例えば液晶ディスプレイである。なお、クライアント装置１が、例えばスマートフォンやＰＤＡ、タブレットＰＣである場合には、入力装置２２０７の機能と表示装置２２０８の機能とを備えるタッチパネルを用いることとしても良い。
【０１３４】
本実施例の管理装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４については、図２２と同様のハードウェア構成のコンピュータを用いることが可能であるため、説明を省略する。ただし、ＣＰＵ、メモリ、記憶装置、ＮＩＣ、媒体読取装置、入力装置、出力装置の具体的なハードウェア（型式や性能等）は、端末装置１、管理装置２、実行サーバ３−１〜３−ｎ、ＤＢサーバ４のそれぞれで異なって構わない。例えば、実行サーバ３−１〜３−ｎには、端末装置１よりも演算能力が高いＣＰＵ、より大容量のメモリが搭載されることとしても良い。また、ＤＢサーバ４には、記憶領域の確保のために、端末装置１や実行サーバ３−１〜３−ｎよりも大容量の記憶装置が搭載される、あるいは、データを記憶可能なストレージシステムに接続されることとしても良い。
【符号の説明】
【０１３５】
１      端末装置
２      管理装置
３−１〜３−ｎ      実行サーバ
４      ＤＢサーバ
５      ネットワーク
２２０１      バス
２２０２      ＣＰＵ
２２０３      メモリ
２２０４      記憶装置
２２０５      ＮＩＣ
２２０６      媒体読取装置
２２０７      入力装置
２２０８      表示装置
【図１】
2018018306.tif 000003
【図２】
2018018306.tif 000004
【図３】
2018018306.tif 000005
【図４】
2018018306.tif 000006
【図５】
2018018306.tif 000007
【図６】
2018018306.tif 000008
【図７】
2018018306.tif 000009
【図８】
2018018306.tif 000010
【図９】
2018018306.tif 000011
【図１０】
2018018306.tif 000012
【図１１】
2018018306.tif 000013
【図１２】
2018018306.tif 000014
【図１３】
2018018306.tif 000015
【図１４】
2018018306.tif 000016
【図１５】
2018018306.tif 000017
【図１６】
2018018306.tif 000018
【図１７】
2018018306.tif 000019
【図１８】
2018018306.tif 000020
【図１９】
2018018306.tif 000021
【図２０】
2018018306.tif 000022
【図２１】
2018018306.tif 000023
【図２２】
2018018306.tif 000024