(57)【特許請求の範囲】
【請求項１】
系列データを管理するデータ管理サーバと、
前記系列データを複数のチャンクに分割し、前記系列データに対する並列分散処理を制御する並列分散処理制御サーバと、
分割された前記チャンクに含まれるデータを抽出する複数の抽出処理サーバと、
前記各抽出処理サーバによって抽出されたデータを結合し、結合された前記データを処理する複数の集約処理サーバと、
を備える計算機システムにおける並列分散処理方法であって、
前記系列データは、少なくとも第１データ項目及び第２データ項目を含む複数のデータ項目の各々に値が設定された複数のデータであって、
前記方法は、
前記各抽出処理サーバが、前記第２データ項目の値に従って前記データを前記チャンクから抽出することによって、前記データをグループ分けし、前記第２データ項目の値に従って前記データをグループ分けした後、前記グループを識別するための識別子を前記抽出された各グループに付与する第１手順と、
前記各集約処理サーバが、前記各グループに付与された識別子を利用して、前記グループ間における前記第１データ項目の値の順序性を決定し、前記決定された順序性に基づいて、前記第２データ項目の値が同一である前記グループを結合する第２手順と、
前記各集約処理サーバが、前記第１データ項目の値の順序性に着目して、結合された前記グループ内のデータを処理する第３手順と、を含むことを特徴とする並列分散処理方法。
【請求項２】
前記方法は、前記系列データが前記第１データ項目の値に従って並んだデータであり、前記各抽出処理サーバが前記データに前記第１手順を実行し、且つ、前記各集約処理サーバが前記第１データ項目の値の順序性に着目した処理を実行すると判定された場合、前記並列分散処理制御サーバが前記集約処理サーバに前記判定の結果を通知する手順を含み、
前記集約処理サーバは、前記判定の結果が真である旨の通知を受けた場合、前記グループ内のデータに前記第２手順及び前記第３手順の処理を実行することを特徴とする請求項１に記載の並列分散処理方法。
【請求項３】
前記識別子は、前記チャンクに付与される一連番号のうち、前記各グループに含まれる最先の前記チャンクに付与される番号であり、
前記第２手順において、前記集約処理サーバは、前記各グループに付与された識別子に従って前記グループを結合することを特徴とする請求項１に記載の並列分散処理方法。
【請求項４】
前記第２手順において、前記集約処理サーバは、前記各グループに付与された識別子に連続性がある前記グループを結合することを特徴とする請求項１に記載の並列分散処理方法。
【請求項５】
前記第２手順において、前記集約処理サーバは、前記各グループに含まれる最先の前記データの前記第１データ項目の値を利用して、前記グループの順序を決定することを特徴とする請求項１に記載の並列分散処理方法。
【請求項６】
系列データを管理するデータ管理サーバと、
前記系列データを複数のチャンクに分割し、前記系列データに対する並列分散処理を制御する並列分散処理制御サーバと、
分割された前記チャンクに含まれるデータを抽出する複数の抽出処理サーバと、
前記各抽出処理サーバによって抽出されたデータを結合し、結合された前記データを処理する複数の集約処理サーバと、
を備える計算機システムであって、
前記データ管理サーバ、前記並列分散処理制御サーバ、前記複数の抽出処理サーバ、及び、前記複数の集約処理サーバの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、前記プロセッサに接続されたインタフェースとを備え、
前記系列データは、少なくとも第１データ項目及び第２データ項目を含む複数のデータ項目の各々に値が設定された複数のデータであって、
前記各抽出処理サーバは、前記第２データ項目の値に従って前記データを前記チャンクから抽出することによって、前記データをグループ分けし、前記第２データ項目の値に従って前記グループ分けした後、前記グループを識別するための識別子を前記抽出された各グループに付与し、
前記各集約処理サーバは、
前記各グループに付与された識別子を利用して、前記グループ間における前記第１データ項目の値の順序性を決定し、前記決定された順序性に基づいて、前記第２データ項目の値が同一である前記グループを結合し、
前記第１データ項目の値の順序性に着目して、結合された前記グループ内のデータを処理することを特徴とする計算機システム。
【請求項７】
前記系列データは前記第１データ項目の値に従って並んだデータであり、前記各抽出処理サーバが、前記第２データ項目の値に従って前記データを前記チャンクから抽出することによって、前記データをグループ分けし、前記第２データ項目の値に従って前記グループ分けした後、前記グループを識別するための識別子を前記抽出された各グループに付与し、且つ、前記各集約処理サーバが前記第１データ項目の値の順序性に着目した処理を実行する、と前記並列分散処理制御サーバが判定した場合、前記並列分散処理制御サーバは、前記集約処理サーバに前記判定の結果を通知し、
前記集約処理サーバは、前記判定の結果が真である旨の通知を受けた場合、前記各グループに付与された識別子を利用して、前記グループ間における前記第１データ項目の値の順序性を決定し、前記決定された順序性に基づいて、前記第２データ項目の値が同一である前記グループを結合し、前記第１データ項目の値の順序性に着目して、結合された前記グループ内のデータを処理することを特徴とする請求項６に記載の計算機システム。
【請求項８】
前記識別子は、前記チャンクに付与される一連番号のうち、前記各グループに含まれる最先の前記チャンクに付与される番号であり、
前記集約処理サーバは、前記各グループに付与された識別子に従って前記グループを結合することを特徴とする請求項６に記載の計算機システム。
【請求項９】
前記集約処理サーバは、前記各グループに付与された識別子に連続性がある前記グループを結合することを特徴とする請求項６に記載の計算機システム。
【請求項１０】
前記集約処理サーバは、前記各グループに含まれる最先の前記データの前記第１データ項目の値を利用して、前記グループの順序を決定することを特徴とする請求項６に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の分散した計算機を用いて大量の系列データを並列に処理する並列分散処理方法、及び、計算機システムに関する。
【背景技術】
【０００２】
近年、ＲＦＩＤ（Radio Frequency IDentification）やＩＣ（Integrated Circuit）カード等のセンサ装置が様々な場面で利用されている。また、これらのセンサ装置から大量の系列データが取得可能になっている。系列データとは、複数のデータ項目について各々値が設定された複数のデータが、所定のデータ項目（以下、「系列データ項目」という）の値に従って並べられたデータの集合である。一般的に、系列データは系列データ項目の順序でシステムに蓄積され、その順序を維持したままシステムから取り出され、利用される。
【０００３】
ところで、このような系列データの傾向や変化を分析し、その分析結果を事業に活用することが試みられている。例えば、建設機械に対して複数のセンサ装置を取り付け、センサ装置から得られる時系列データの傾向や変化から建設機械の状態を分析し、その分析結果を建設機械の保守に活用する試みである。このような試みでは、一般的には、バッチ処理型の分析アプリケーションによってセンサ装置から取得した大量の系列データに対してグルーピング処理やフィルタリング処理を施し、その後系列データ項目の順序性に着目してデータの集約処理を実行する。
【０００４】
このような分析アプリケーションの処理を実現する技術として、MapReduceが知られている（特許文献１及び非特許文献１参照）。MapReduceとは、データの分析処理を、グループ抽出処理（Map処理）とデータ集約処理（Reduce処理）とに単純化したプログラミングモデルである。グループ抽出処理とは、分割したデータを特定のグループを抽出するためのデータ項目（キー）を用いてグルーピングし、その結果を中間データセット（intermediate files）として出力する処理である。データ集約処理とは、グループ抽出処理によって出力された中間データセットを結合することでデータを集約し、その結果を出力する処理である。
【０００５】
これにより、MapReduceの実行エンジンは分析アプリケーションの処理の分割単位を決定し、並列処理を制御することが可能となる。また、複数の計算機に処理を動的に割当てることが可能となるため、MapReduceの実行エンジンは多数の計算機を用いる大規模な並列構成のシステムに適している。また、開発者にとっては、複数の計算機間でどのように分散処理されるかを意識する必要がなく、グループ抽出処理の方法とデータ集約処理の方法を定義するだけでよいというメリットがある。さらに、運用者にとっては、大規模環境での柔軟なサイジング、スケジューリングが可能になるというメリットがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００８／００８６４４２号明細書
【非特許文献】
【０００７】
【非特許文献１】「MapReduce: Simplified Data Processing on Large Clusters」 Jeffrey Dean, Sanjay Ghemawat, Google, Inc. OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December 6, 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、前述した分析アプリケーションが、大量の系列データから系列データ項目の順序に並んでいることを前提としないでグループ抽出処理を実行し、系列データ項目の順序に並んでいることを前提としてデータ集約処理を実行するものであるとき、全体の処理が効率的に進まないという課題があった。
【０００９】
これは、グループ抽出処理で出力される系列データが系列データ項目の順序に並んでいないような場合には、データ集約処理の前又はデータ集約処理の一部において、グループ抽出処理によって出力された系列データを１件毎に系列データ項目の順序に並び替える処理を加える必要があったからである。
【００１０】
以下、車両の通行データを分析する通行データ分析システムを例に、この課題を説明する。通行データ分析システムとは、分析アプリケーションによって各料金所を退場した車両に関する単位時間あたりの顧客属性を分析する並列分散処理システムである。なお、通行データとは、ＩＣカードを搭載した車両が各料金所を通過した時に取得される時刻情報を系列データ項目とした系列データである。通行データには、時刻情報に加えて、ＩＣカード識別子、料金所識別子、及び、入場又は退場のいずれかを示す通行識別子が含まれる。この通行データは、系列データ項目（時刻情報）の順序で中央サーバに格納される。
【００１１】
このとき、分析アプリケーションは以下の順序で処理を実行する。
（１）中央サーバに格納された大量の通行データを、系列データ項目（時刻情報）とは異なるデータ項目（料金所識別子）でグルーピングし、料金所毎の退場の通行データを抽出する（グループ抽出処理）。
（２）（１）の処理で抽出した料金所毎の退場の通行データを、系列データ項目（時刻情報）の順序で集約し、単位時間あたりの顧客属性を分析する（データ集約処理）。
【００１２】
（１）の処理では、並列分散処理を制御するサーバが、中央サーバに格納された通行データを先頭から複数のデータのチャンクに分割し、グループ抽出処理を実行する複数のサーバの各々に対してデータのチャンクを割当ててグループ抽出処理を要求する。データのチャンクには、系列データ項目（時刻情報）の順序で並んだ通行データが含まれる。
【００１３】
次に、グループ抽出処理を実行する複数のサーバの各々が、自装置に割当てられたデータのチャンクを、料金所識別子と退場の通行識別子をキーにグルーピングし、料金所毎の退場の通行データを中間データセットとして出力する。例えば、データのチャンクが「Ｘ」及び「Ｙ」の２つの料金所のデータを含む場合、「Ｘ」料金所を退場した通行データ及び「Ｙ」料金所を退場した通行データを中間データセットとして出力する。
【００１４】
続いて、データ集約処理を実行するサーバが、グループ抽出処理を実行する複数のサーバの各々から出力された中間データセットのうち、料金所識別子の値が同一の中間データセットをバルク転送によって取得して、取得した中間データセットを結合する。ここで、並列分散処理を制御するサーバの実行進捗状況が制御されていないため、中間データセットを結合したデータが系列データ項目（時刻情報）の順序で並んでいることは期待できない。
【００１５】
従って、（２）の処理の前、又は（２）の処理の一部に、系列データ項目（時刻情報）に基づき、１件毎に通行データを並び替える処理を加える必要が生じる。その結果、従来の通行データ分析システムは大量の通行データを処理するのに長時間を要する。
【００１６】
本発明は、上述した課題を考慮したものであって、大量の系列データを効率的に処理できる並列分散処理方法、及び、計算機システムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、系列データを管理するデータ管理サーバと、前記系列データを複数のチャンクに分割し、前記系列データに対する並列分散処理を制御する並列分散処理制御サーバと、分割された前記チャンクに含まれるデータを抽出する複数の抽出処理サーバと、前記各抽出処理サーバによって抽出されたデータを結合し、結合された前記データを処理する複数の集約処理サーバと、を備える計算機システムにおける並列分散処理方法であって、前記系列データは、少なくとも第１データ項目及び第２データ項目を含む複数のデータ項目の各々に値が設定された複数のデータであって、前記方法は、前記各抽出処理サーバが、前記第２データ項目の値に従って前記データを前記チャンクから抽出することによって、前記データをグループ分けし、前記第２データ項目の値に従って前記データをグループ分けした後、前記グループを識別するための識別子を前記抽出された各グループに付与する第１手順と、前記各集約処理サーバが、前記各グループに付与された識別子を利用して、前記グループ間における前記第１データ項目の値の順序性を決定し、前記決定された順序性に基づいて、前記第２データ項目の値が同一である前記グループを結合する第２手順と、前記各集約処理サーバが、前記第１データ項目の値の順序性に着目して、結合された前記グループ内のデータを処理する第３手順と、を含むことを特徴とする。
【発明の効果】
【００１８】
本発明の代表的な実施の形態によれば、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行する際に、全体の処理を効率的に行うことができる。
【００１９】
具体的には、データ集約処理を実施する際にグループ単位でデータを並び替えて結合することによって、データ集約処理の前工程又はデータ集約処理の一部において、系列データ項目に基づき１件毎に通行データを並び替えることなく、一連の処理を高速に実現することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施の形態の並列分散処理方法の概要を説明する図である。
【図２】本発明の第１の実施の形態の計算機システムの構成の一例を示す図である。
【図３Ａ】本発明の第１の実施の形態のデータ分割管理テーブルの一例を示す図である。
【図３Ｂ】本発明の第１の実施の形態のデータ割当管理テーブルの一例を示す図である。
【図４】本発明の第１の実施の形態の並列分散処理の全体の処理手順を示すフローチャートである。
【図５】本発明の第１の実施の形態のデータ分割処理部の処理手順を示すフローチャートである。
【図６】本発明の第１の実施の形態のグループ抽出処理部の処理手順を示すフローチャートである。
【図７】本発明の第１の実施の形態のデータ集約処理部の処理手順を示すフローチャートである。
【図８】本発明の第１の実施の形態の通行データ分析システムの処理手順を示すフローチャートである。
【図９】本発明の第１の実施の形態の通行データ分析システムの入力データとデータのチャンクの一例を示す図である。
【図１０Ａ】本発明の第１の実施の形態の通行データ分析システムの中間データセットの一例を示す図である。
【図１０Ｂ】本発明の第１の実施の形態の通行データ分析システムの中間データセットの一例を示す図である。
【図１０Ｃ】本発明の第１の実施の形態の通行データ分析システムの中間データセットの一例を示す図である。
【図１１Ａ】本発明の第１の実施の形態の通行データ分析システムの中間データセットを結合したデータの一例を示す図である。
【図１１Ｂ】本発明の第１の実施の形態の通行データ分析システムの中間データセットを結合したデータの一例を示す図である。
【図１２Ａ】本発明の第１の実施の形態の通行データ分析システムの出力データの一例を示す図である。
【図１２Ｂ】本発明の第１の実施の形態の通行データ分析システムの出力データの一例を示す図である。
【図１３】本発明の第１の実施の形態の並列分散処理アプリケーションの実行条件の判定に必要な情報を入力するための入力インタフェースの一例を示す図である。
【図１４】本発明の第１の実施の形態のグループ抽出処理部が複数のデータのチャンクを入力データとして処理するときの処理手順を示すフローチャートである。
【図１５】本発明の第１の実施の形態のデータ集約処理部が全てのグループ抽出処理実行サーバの完了を待たずに処理するときの処理手順を示すフローチャートである。
【図１６】本発明の第２の実施の形態のグループ抽出処理部の処理手順を示すフローチャートである。
【図１７】本発明の第２の実施の形態のデータ集約処理部の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について図面を参照して説明する。
【００２２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態の並列分散処理方法の概要を説明する図である。本実施形態の並列分散処理方法は、系列データ１１１、並列分散処理制御サーバ１０１、系列データ処理制御部１０５、グループ抽出処理実行サーバ１４１、１４２、１４３、データ集約処理実行サーバ１７１、１７２によって実現される。
【００２３】
系列データ１１１は、本実施形態の並列分散処理の処理対象となる系列データである。図１に示す系列データ１１１は、時刻１３１と料金所ＩＤ１３２とについて各々値が設定されたデータの集合である。この系列データ１１１は、系列データ項目（時刻）１１２の値の順序に並んでいる。
【００２４】
並列分散処理制御サーバ１０１は、系列データ１１１に対する並列分散処理を制御する。具体的には、系列データ１１１を複数のデータのチャンク１２１、１２２、１２３に分割する。また、分割されたデータのチャンク１２１、１２２、１２３の各々を、グループ抽出処理実行サーバ１４１、１４２、１４３に割当てる。
【００２５】
グループ抽出処理実行サーバ１４１、１４２、１４３は、グループ抽出処理を実行する。具体的には、各々のサーバのグループ抽出処理部１５１、１５２、１５３が、自装置に割当てられたデータのチャンク１２１、１２２、１２３に対して、キー定義１５７、１５８、１５９に定義されたキーの値（料金所ＩＤ）に従い、開発者がグループの抽出処理方法を定義したユーザ定義プログラム１５４、１５５、１５６によって、キーの値毎にデータをグルーピングする。その結果、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット１６１、１６２、１６３、１６４、１６５、１６６を出力する。図１に示す例では、データのチャンク１２１、１２２、１２３に含まれる料金所ＩＤ１３２の値は「Ｘ」又は「Ｙ」のいずれかであり、キー定義１５７、１５８、１５９に定義されたキーの値は料金所ＩＤである。そのため、グループ抽出処理部１５１、１５２、１５３は、料金所ＩＤの値が「Ｘ」のときの中間データセット１６１、１６３、１６５及び料金所ＩＤの値が「Ｙ」のときの中間データセット１６２、１６４、１６６を抽出する。
【００２６】
データ集約処理実行サーバ１７１、１７２は、データ集約処理を実行する。具体的には、データ集約処理部１８１、１８２が、グループ抽出処理実行サーバ１４１、１４２、１４３から、キーの値が同一の中間データセットをバルク転送によって取得する。図１に示す例では、データ集約処理実行サーバ１７１はキーの値が「Ｘ」の中間データセット１６１、１６３、１６５を取得する。一方、データ集約処理実行サーバ１７２はキーの値が「Ｙ」の中間データセット１６２、１６４、１６６を取得する。その後、中間データセット結合処理部１９１、１９３の中間データセットソート処理部１９５、１９７が、取得した中間データセットに含まれる系列データ項目である時刻１３１の順序を判定し、その順序で中間データセットを結合する。その後、ユーザ定義プログラム１９２、１９４が、データの集約処理を実行する。なお、ユーザ定義プログラム１９２、１９４は、時刻情報１９６、１９８の順序にデータが並んでいることを前提として開発者がデータの集約処理方法を定義したデータ集約処理プログラムである。
【００２７】
なお、系列データ処理制御部１０５は、一連の系列データの処理を制御する。具体的には、系列データ１１１が系列データ項目（時刻）１１２の順序に並んだデータであり、各々のグループ抽出処理実行サーバ１４１、１４２、１４３が系列データ項目１１２の順にデータが並んでいることを前提としないグループ抽出処理を実行するものであり、且つ、各々のデータ集約処理実行サーバ１７１、１７２が系列データ項目（時刻）１９６、１９８の順序性に注目した処理を実行する並列分散処理アプリケーションであることを判定したとき、その情報をデータ集約処理実行サーバ１７１、１７２に通知する。
【００２８】
以上に示すように、本実施形態に係る並列分散処理方法では、まず、並列分散処理制御サーバ１０１が、系列データ項目１１２の順序に並んだ系列データ１１１を複数のデータのチャンク１２１、１２２、１２３に分割する。次に、グループ抽出処理実行サーバ１４１、１４２、１４３が、系列データ項目（時刻）１１２で並んだデータのチャンク１２１、１２２、１２３に対して、キー定義（料金所ＩＤ）１５７、１５８、１５９に定義されたキーの値に従い、系列データ項目１１２の順序にデータが並んでいることを前提としない中間データセット１６１、１６２、１６３、１６４、１６５、１６６を抽出する。続いて、系列データ処理制御部１０５が、系列データ１１１が系列データ項目（時刻）１１２の順序に並んだデータであり、各々のグループ抽出処理実行サーバ１４１、１４２、１４３が系列データ項目１１２の順にデータが並んでいることを前提としないグループ抽出処理を実行するものであり、且つ、各々のデータ集約処理実行サーバ１７１、１７２が系列データ項目（時刻）１９６、１９８の順序性に着目した処理を実行する並列分散処理アプリケーションであることを判定したとき、その情報をデータ集約処理実行サーバ１７１、１７２に通知する。続いて、データ集約処理実行サーバ１７１、１７２は、中間データセット１６１、１６２、１６３、１６４、１６５、１６６の各々の内部ではデータが系列データ項目１１２の順序に並んでいることに着目して、取得した中間データセット１６１、１６２、１６３、１６４、１６５、１６６の間の系列データ項目（時刻）１９６、１９８の順序を判定し、その順序で結合する。その後、系列データ項目（時刻）１９６、１９８の順序にデータが並んでいることを前提としたユーザ定義プログラム１９２、１９４によるデータの集約処理が実行される。
【００２９】
これにより、従来のようにデータ集約処理の前又は処理の一部に系列データ項目（時刻）の順序で１件毎にデータを並べ替える処理を加える必要がなくなる。そのため、大量の系列データを高速に且つ効率的に処理することができる。
【００３０】
＜システム構成＞
図２は、本発明の第１の実施の形態の計算機システム１の構成の一例を示す図である。
【００３１】
図２に示す計算機システム１は、ネットワーク２１１を介して互いに接続された複数のデータ管理サーバ２０１、並列分散処理制御サーバ２０２、クライアント装置２０３、複数のグループ抽出処理実行サーバ２０４、及び、複数のデータ集約処理実行サーバ２０５を備える。このような構成により計算機システム１は、上記の並列分散処理を実行する。なお、ネットワーク２１１は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、又は、インターネット等のグローバルネットワークである。また、ネットワーク２１１は、複数のネットワークに分けられてもよい。
【００３２】
以下、各装置のハードウェア構成及びソフトウェア構成について説明する。
【００３３】
データ管理サーバ２０１は、ネットワークインタフェース３１１、ＣＰＵ３１２、主記憶装置３１３、二次記憶装置３１４、及び、これらを相互に接続するバス３１５を備える。
【００３４】
ネットワークインタフェース３１１は、データ管理サーバ２０１がネットワーク２１１に接続するためのインタフェースである。ＣＰＵ３１２は、主記憶装置３１３に記憶されているプログラムを実行する演算処理装置である。主記憶装置３１３は、ＣＰＵ３１２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ（Random Access Memory）等の記憶装置である。プログラムとは、例えば、不図示のＯＳ（Operating System）である。二次記憶装置３１４は、上記の並列分散処理の入力データ２２２及び出力データ２２３を格納するハードディスク装置などの磁気記憶媒体である。なお、フラッシュメモリなどの半導体記憶媒体であってもよい。
【００３５】
入力データ２２２及び出力データ２２３について補足する。入力データ２２２及び出力データ２２３は、複数の物理的なデータから構成される論理的なデータであり、名前と構成する物理的なデータを識別するための情報とを含む。物理的なデータを識別するための情報とは、例えば物理的なデータを格納するデータ管理サーバ２０１のアドレス情報と物理的なデータの名前である。データの実体は物理的なデータとしてデータ管理サーバ２０１に格納される。入力データ２２２は、複数のデータ項目について各々値が設定された複数のデータが、系列データ項目の値に従って並べられたデータの集合（系列データ）である。出力データ２２３は、前述の並列分散処理によって出力されるデータである。入力データ２２２及び出力データ２２３の具体例は、それぞれ図９、図１２を用いて後述する。
【００３６】
並列分散処理制御サーバ２０２は、ネットワークインタフェース３２１、ＣＰＵ３２２、主記憶装置３２３、二次記憶装置３２４、及び、これらを相互に接続するバス３２５を備える。
【００３７】
ネットワークインタフェース３２１は、並列分散処理制御サーバ２０２がネットワーク２１１に接続するためのインタフェースである。ＣＰＵ３２２は、主記憶装置３２３に記憶されているプログラムを実行することによって並列分散処理制御サーバ２０２の所定の機能を実現する演算処理装置である。主記憶装置３２３は、ＣＰＵ３２２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、及び、順序識別子設定部２３２と系列データ処理制御部２３７からなるデータ分割処理部２３１、実行制御部２３３の機能を実現するためのプログラムである。二次記憶装置３２４は、並列分散処理制御サーバ２０２が所定の機能を実現するために必要なプログラム、及び、データ分割管理テーブル２３５、データ割当管理テーブル２３６等のデータを格納するハードディスク装置等の磁気記憶媒体である。なお、二次記憶装置３２４は、フラッシュメモリなどの半導体記憶媒体であってもよい。
【００３８】
データ分割処理部２３１、順序識別子設定部２３２、実行制御部２３３、系列データ処理制御部２３７について補足する。各機能ブロック（データ分割処理部２３１、実行制御部２３３、系列データ処理制御部２３７、順序識別子設定部２３２）の機能は、ＣＰＵ３２２が主記憶装置３２３に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はＣＰＵ３２２によって実行されるが、説明を簡略化して、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、並列分散処理制御サーバ２０２の各機能ブロックは、各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。
【００３９】
データ分割処理部２３１では、順序識別子設定部２３２が、実行する並列分散アプリケーションが上記の並列分散処理アプリケーションの場合に、系列データを含む入力データ２２２をデータのチャンクに分割する際に、系列データ項目の順序を示す情報をデータのチャンクに付与する機能を有する。データ分割処理部２３１、順序識別子設定部２３２、及び系列データ処理制御部２３７による処理の詳細については、図５にて後述する。
【００４０】
実行制御部２３３は、グル―プ抽出処理実行サーバ２０４及びデータ集約処理実行サーバ２０５に対して実行命令を送信する機能と、グル―プ抽出処理実行サーバ２０４及びデータ集約処理実行サーバ２０５から処理の完了通知を受信する機能を有する。
【００４１】
データ分割管理テーブル２３５は、分割された入力データ２２２を構成する物理的なデータを格納するデータ管理サーバ２０１の識別情報と、分割されたデータのチャンクに付与されたデータ集合識別子を定義したテーブルである。データ分割管理テーブル２３５の詳細については、図３Ａにて後述する。
【００４２】
データ割当管理テーブル２３６は、分割されたデータのチャンクをどのグループ抽出処理実行サーバ２０４が入力データとするかを定義したテーブルである。データ割当管理テーブル２３６の詳細については、図３Ｂにて後述する。
【００４３】
クライアント装置２０３は、ネットワークインタフェース３３１、ＣＰＵ３３２、主記憶装置３３３、二次記憶装置３３４、及び、これらを相互に接続するバス３３５を備える。
【００４４】
ネットワークインタフェース３３１は、クライアント装置２０３がネットワーク２１１に接続するためのインタフェースである。ＣＰＵ３３２は、主記憶装置３３３に記憶されているプログラムを実行することによってクライアント装置２０３の所定の機能を実現する演算処理装置である。主記憶装置３３３は、ＣＰＵ３３２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、クライアント処理部２４１の機能を実現するためのプログラムである。二次記憶装置３３４は、クライアント装置２０３の所定の機能を実現するために必要なプログラム、及び、データ等を格納するハードディスク装置等の磁気記憶媒体である。なお、二次記憶装置３３４は、フラッシュメモリなどの半導体記憶媒体であってもよい。
【００４５】
クライアント処理部２４１は、並列分散処理制御サーバ２０２に対して並列分散処理の実行を要求する。
【００４６】
グループ抽出処理実行サーバ２０４は、ネットワークインタフェース３４１、ＣＰＵ３４２、主記憶装置３４３、二次記憶装置３４４、及び、これらを相互に接続するバス３４５を備える。
【００４７】
ネットワークインタフェース３４１は、グループ抽出処理実行サーバ２０４がネットワーク２１１に接続するためのインタフェースである。ＣＰＵ３４２は、主記憶装置３４３に記憶されているプログラムを実行することによってグループ抽出処理実行サーバ２０４の所定の機能を実現する演算処理装置である。主記憶装置３４３は、ＣＰＵ３４２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、グループ抽出処理部２５１、順序識別子付与部２５２、ユーザ定義抽出処理実行部２５５の機能を実現するためのプログラムである。二次記憶装置３４４は、グループ抽出処理実行サーバ２０４の所定の機能を実現するために必要なプログラム、及び、グループ抽出処理部２５１の処理によって出力される中間データセット２５４等のデータを格納するハードディスク装置などの磁気記憶媒体である。なお、二次記憶装置３４４は、フラッシュメモリなどの半導体記憶媒体であってもよい。
【００４８】
グループ抽出処理部２５１、順序識別子付与部２５２、ユーザ定義抽出処理実行部２５５について補足する。各機能ブロック（グループ抽出処理部２５１、順序識別子付与部２５２、ユーザ定義抽出処理実行部２５５）の機能は、ＣＰＵ３４２が主記憶装置３４３に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はＣＰＵ３４２によって実行されるが、説明の簡略化のために、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、グループ抽出処理実行サーバ２０４の各機能ブロックは、各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。なお、グループ抽出処理部２５１、順序識別子付与部２５２、ユーザ定義抽出処理実行部２５５の処理の詳細については、図６にて後述する。
【００４９】
データ集約処理実行サーバ２０５は、ネットワークインタフェース３５１、ＣＰＵ３５２、主記憶装置３５３、二次記憶装置３５４、及び、これらを相互に接続するバス３５５を備える。
【００５０】
ネットワークインタフェース３５１は、データ集約処理実行サーバ２０５がネットワーク２１１に接続するためのインタフェースである。ＣＰＵ３５２は、主記憶装置３５３に記憶されているプログラムを実行することによってデータ集約処理実行サーバ２０５の所定の機能を実現する演算処理装置である。主記憶装置３５３は、ＣＰＵ３５２によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するＲＡＭ等の記憶装置である。プログラムとは、例えば、不図示のＯＳ、データ集約処理部２６１、中間データセット結合処理部２６２、中間データセットソート処理部２６３、データソート処理部２６４、ユーザ定義集約処理実行部２６５の機能を実現するためのプログラムである。二次記憶装置３５４は、データ集約処理実行サーバ２０５の所定の機能を実現するために必要なプログラム、及び、データを格納するハードディスク装置などの磁気記憶媒体である。なお、二次記憶装置３５４は、フラッシュメモリなどの半導体記憶媒体であってもよい。
【００５１】
データ集約処理部２６１、中間データセット結合処理部２６２、中間データセットソート処理部２６３、データソート処理部２６４、ユーザ定義集約処理実行部２６５について補足する。各機能ブロック（データ集約処理部２６１、中間データセット結合処理部２６２、中間データセットソート処理部２６３、データソート処理部２６４、ユーザ定義集約処理実行部２６５）の機能は、ＣＰＵ３５２が主記憶装置３５３に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はＣＰＵ３５２によって実行されるが、説明の簡略化のために、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、データ集約処理実行サーバ２０５の各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。なお、データ集約処理部２６１、中間データセット結合処理部２６２、中間データセットソート処理部２６３、データソート処理部２６４、及び、ユーザ定義集約処理実行部２６５の処理の詳細については、図７にて後述する。
【００５２】
以上、各装置のハードウェア構成及びソフトウェア構成について説明してきたが、データ管理サーバ２０１、並列分散処理制御サーバ２０２、クライアント装置２０３、グループ抽出処理実行サーバ２０４、データ集約処理実行サーバ２０５の構成は、図３に示す構成に限定されない。例えば、データ管理サーバ２０１は、並列分散処理制御サーバ２０２と同じ計算機上に構成されてもよい。また、データ集約処理実行サーバ２０５のユーザ定義集約処理実行部２６５は、異なる計算機上で実行されてもよい。さらに、並列分散処理制御サーバ２０２のデータ分割処理部２３１や系列データ処理制御部２３７は、クライアント装置２０３等の異なる計算機上で実行されてもよい。
【００５３】
＜各テーブルの内容＞
続いて、本発明の第１の実施の形態の並列分散処理で用いられるテーブルの詳細について説明する。ここでは、並列分散処理制御サーバ２０２に格納されているデータ分割管理テーブル２３５及びデータ割当管理テーブル２３６について説明する。
【００５４】
（データ分割管理テーブル２３５）
図３Ａは、本発明の第１の実施の形態のデータ分割管理テーブル２３５の一例を示す図である。データ分割管理テーブル２３５は、並列分散処理の実行時に主記憶装置３２３（図２参照）にロードされる、例えばファイルである。このデータ分割管理テーブル２３５には、論理データＩＤ４１３、データ集合識別子４１１、データ管理サーバノードＩＤ４１２が関連付けられたデータが格納される。
【００５５】
論理データＩＤ４１３は、並列分散処理アプリケーションの処理対象の系列データ、すなわち入力データ２２２を示す識別子である。例えば、論理データを一意に特定可能な文字列が設定される。データ集合識別子４１１は、並列分散処理制御サーバ２０２によって分割されたデータのチャンクの各々に付与される識別子である。このデータ集合識別子４１１は、例えばこのデータのチャンクを処理するグループ抽出処理実行サーバ２０４に基づいて設定される。例えば、分割した系列データのチャンクの順番を示す通番やグループ抽出処理実行サーバ２０４のＭＡＣアドレスが設定される。データ管理サーバノードＩＤ４１２は、分割されたデータのチャンクを構成する物理的なデータを管理するデータ管理サーバ２０１の識別子である。例えば、データ管理サーバ２０１のホスト名やアドレス情報が設定される。
【００５６】
図３Ａに示す例では、論理データＩＤ４１３「ｄａｔａ１」で示すデータが３個のデータのチャンクに分割されたこと、データ集合識別子「Ｔ１」で示すデータのチャンクは「Ｈｏｓｔ１０」で示すデータ管理サーバ２０１に格納される物理的なデータと「Ｈｏｓｔ１２」で示すデータ管理サーバ２０１に格納される物理的なデータとから構成されること等が示されている。
【００５７】
（データ割当管理テーブル２３６）
図３Ｂは、本発明の第１の実施の形態のデータ割当管理テーブル２３６の一例を示す図である。データ割当管理テーブル２３６は、並列分散処理の実行時に主記憶装置３２３（図２参照）にロードされる、例えばファイルである。このデータ割当管理テーブル２３６には、データ集合識別子４２１、グループ抽出処理ノードＩＤ４２２が関連付けられたデータが格納される。
【００５８】
データ集合識別子４２１は、並列分散処理制御サーバ２０２によって分割されたデータのチャンクの各々に付与される識別子である。このデータ集合識別子４２１は、例えばこのデータのチャンクを処理するグループ抽出処理実行サーバ２０４に基づいて設定される。例えば、分割した系列データのチャンクの順番を示す通番やグループ抽出処理実行サーバ２０４のＭＡＣアドレスが設定される。このデータ集合識別子４２１は図３Ａのデータ集合識別子４１１に対応する。グループ抽出処理ノードＩＤ４２２は、分割されたデータのチャンクを処理するグループ抽出処理実行サーバ２０４を識別する情報である。例えば、グループ抽出処理実行サーバ２０４のホスト名やアドレス情報が設定される。
【００５９】
図３Ｂに示す例では、データ集合識別子「Ｔ１」「Ｔ２」「Ｔ３」が付与された各データのチャンクが、それぞれ「Ｈｏｓｔ１」「Ｈｏｓｔ２」「Ｈｏｓｔ３」に示すグループ抽出処理実行サーバ２０４に割当てられることが示されている。
【００６０】
なお、これら図３Ａ及び図３Ｂに示す各テーブルは、データ集合識別子４１１とデータ集合識別子４２１が対応しているため、一つのテーブルとして表現することも可能である。しかしながら、これらの情報を一つのテーブルで管理すると、グループ抽出処理ノードＩＤ４２２に対応するグループ抽出処理実行サーバ２０４に障害が発生した場合に並列分散処理が継続できない問題が生じる。そのため、二つのテーブルに分けて管理することが好適である。
【００６１】
＜並列分散処理の全体の処理手順＞
図４は、本発明の第１の実施の形態の並列分散処理の全体の処理手順を示すフローチャートである。ここでは、本実施形態に係る並列分散処理の全体の処理手順について説明する。
【００６２】
まずステップＳ５１１において、クライアント装置２０３は、並列分散処理制御サーバ２０２に対して並列分散処理の実行要求を送信する（Ｓ５１１）。ここでは、クライアント装置２０３のクライアント処理部２４１が、並列分散処理制御サーバ２０２に対して並列分散処理の実行要求を送信する。この実行要求は、並列分散処理制御サーバ２０２が制御可能な並列分散処理アプリケーションから今回実行する並列分散処理アプリケーションを識別するための実行アプリケーション識別子を含む。
【００６３】
続いてステップＳ５１２に進み、並列分散処理制御サーバ２０２は、並列分散処理対象のデータをデータのチャンクに分割する（Ｓ５１２）。ここでは、まずデータ分割処理部２３１が、クライアント装置２０３から並列分散処理の実行要求を受信する。次に、データ分割処理部２３１は、クライアント装置２０３から受信した実行要求に含まれる実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションを判定し、並列分散処理対象のデータである入力データ２２２を特定する。続いて、データ分割処理部２３１は、今回実行する並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行する特徴を有するものであるか否かを判定する。この特徴を有する並列分散処理アプリケーションであるときには、今回実行する並列分散処理アプリケーションの処理対象の入力データ２２２をデータ管理サーバ２０１から取得し、グループ抽出処理実行サーバ２０４の個数と同数のデータのチャンクに分割する。その後、各々のデータのチャンクに対してデータ集合識別子４１１を通番で付与する。ステップＳ５１２におけるデータ分割処理部２３１の処理の詳細は、図５にて後述する。
【００６４】
ステップＳ５１２を補足する。ステップＳ５１２において並列分散処理制御サーバ２０２がデータ管理サーバ２０１から取得する入力データ２２２には、入力データ２２２を構成する物理的なデータを識別するための情報が含まれる。また、実行アプリケーション識別子から今回実行する並列分散処理アプリケーション及び処理対象の入力データ２２２を判定する方法には、並列分散処理制御サーバ２０２が制御可能な並列分散アプリケーションの識別子と入力データを識別するための情報とを関連付けた情報を予め管理しておき、その管理情報を基に判定する方法がある。
【００６５】
続いてステップＳ５１３に進み、並列分散処理制御サーバ２０２は、グループ抽出処理実行サーバ２０４に対してグループ抽出処理の実行要求を送信する（Ｓ５１３）。ここでは、実行制御部２３３が、グループ抽出処理実行サーバ２０４に対してグループ抽出処理の実行要求を送信する。この実行要求は、グループ抽出処理実行サーバ２０４が自装置に割当てられたデータのチャンクを構成する物理的なデータを取得する際に必要となる情報を含む。データのチャンクを構成する物理的なデータを取得する際に必要となる情報とは、データ管理サーバ２０１の識別情報及びデータの名前である。実行制御部２３３が、データ分割管理テーブル２３５のデータ管理サーバノードＩＤ４１２及びステップＳ５１２で取得した入力データ２２２に基づいてこの情報を取得する。
【００６６】
続いてステップＳ５１４に進み、グループ抽出処理実行サーバ２０４は、グループ抽出処理を実行する（Ｓ５１４）。ここでは、まずグループ抽出処理部２５１が、並列分散処理制御サーバ２０２からグループ抽出処理の実行要求を受信する。次に、グループ抽出処理部２５１は、実行要求に含まれているデータのチャンクを構成する物理的なデータを取得する際に必要な情報に基づき、データ管理サーバ２０１から入力データ２２２を取得する。その後、グループ抽出処理部２５１は、予め開発者によって定義されたユーザ定義プログラム及びキー定義に定義されたキーの値によって、取得した入力データ２２２をキーの値毎のグループに分ける。その後、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット２５４を生成して、生成した中間データセット２５４を出力する。さらに、グループ抽出処理部２５１は、データのチャンクにデータ集合識別子が付与されているときには、そのデータ集合識別子を生成した中間データセット２５４に付与する。グループ抽出処理部２５１の処理の詳細は図６にて後述する。
【００６７】
続いてステップＳ５１５に進み、グループ抽出処理実行サーバ２０４は、並列分散処理制御サーバ２０２に対してグループ抽出処理が完了した旨を通知する（Ｓ５１５）。ここでは、グループ抽出処理実行サーバ２０４は、グループ抽出処理部２５１がグループ抽出に利用したキーの値を併せて通知する。
【００６８】
続いてステップＳ５１６に進み、並列分散処理制御サーバ２０２は、データ集約処理実行サーバ２０５に対してデータ集約処理の実行要求を送信する（Ｓ５１６）。ここでは、実行制御部２３３が、全てのグループ抽出処理実行サーバ２０４から処理が完了した旨の通知を受信したとき、データ集約処理実行サーバ２０５に対してデータ集約処理の実行要求を送信する。実行要求は、データ集約処理実行サーバ２０５が処理を担当するキーの値とグループ抽出処理実行サーバ２０４を識別する情報とを含む。グループ抽出処理実行サーバ２０４を識別する情報とは、実行制御部２３３がデータ割当管理テーブル２３６を参照して取得する情報であり、具体的には図３Ｂのグループ抽出処理ノードＩＤ４２２である。
【００６９】
続いてステップＳ５１７に進み、データ集約処理実行サーバ２０５は、データ集約処理を実行する（Ｓ５１７）。ここでは、まずデータ集約処理部２６１が、並列分散処理制御サーバ２０２からデータ集約処理の実行要求を受信する。次に、データ集約処理部２６１は、受信した実行要求に含まれている、自装置が担当するキーの値及びグループ抽出処理実行サーバ２０４を識別する情報を基に、全てのグループ抽出処理サーバ２０４からキーの値が同一の中間データセット２５４を取得する。続いて、中間データセット結合処理部２６２は、中間データセット２５４に付与されたデータ集合識別子から中間データセット２５４間の系列データ項目の順序性を判定し、その順序で中間データセット２５４を結合して、キーの値とグループとが関連付けられた値のリストを作成する。さらに、ユーザ定義集約処理実行部２６５が、系列データ項目の順序性に注目したユーザ定義の集約処理を実行し、その結果を出力データ２２３としてデータ管理サーバ２０１に格納する。データ集約処理部２６１の処理の詳細は、図７にて後述する。
【００７０】
ユーザ定義集約処理実行部２６５の処理を補足する。この処理では、出力データ２２３を構成する物理的なデータも併せて格納し、出力データ２２３に名前及び構成する物理的なデータを識別するための情報を設定する。
【００７１】
続いてステップＳ５１８に進み、データ集約処理実行サーバ２０５は、並列分散処理制御サーバ２０２にデータ集約処理が完了した旨を通知する（Ｓ５１８）。ここでは、データ集約処理実行サーバ２０５が、ステップＳ５１７で出力した出力データ２２３の名前及び出力データ２２３を格納するデータ管理サーバ２０１を識別する情報を通知する。データ管理サーバ２０１を識別する情報とは、例えばアドレス情報である。
【００７２】
続いてステップＳ５１９に進み、並列分散処理制御サーバ２０２は、並列分散処理の実行結果をクライアント装置２０３に通知する（Ｓ５１９）。この並列分散処理の実行結果は、データ集約処理実行サーバ２０５が出力した出力データ２２３の名前及び出力データ２２３を格納するデータ管理サーバ２０１を識別する情報を含む。
【００７３】
＜データ分割処理部２３１の処理手順＞
図５は、本発明の第１の実施の形態のデータ分割処理部２３１の処理手順を示すフローチャートである。図５に示す処理手順は、図４のステップＳ５１２の処理に対応する。
【００７４】
まずステップＳ６１１において、データ分割処理部２３１は、クライアント装置２０３から並列分散処理の実行要求を受信する（Ｓ６１１）。この実行要求は、並列分散処理制御サーバ２０２が制御可能な並列分散処理アプリケーションから今回実行する並列分散処理アプリケーションを識別するための実行アプリケーション識別子を含む。
【００７５】
続いてステップＳ６１２に進み、データ分割処理部２３１は、今回実行する並列分散処理アプリケーションの実行条件を判定する（Ｓ６１２）。ここでは、まず系列データ処理制御部２３７が、ステップＳ６１１で受信した実行要求に含まれる実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションを特定する。また、特定した並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行するものであるという実行条件を満たすか否かを判定する。判定した結果は、例えば「ＹＥＳ」又は「ＮＯ」で表される。
【００７６】
なお、今回実行する並列分散処理アプリケーションがこの条件を満たすか否かを判定する方法としては、例えば、今回実行する並列分散処理アプリケーションが実行するグループ抽出処理、データ集約処理の開発時の定義情報と入力データ２２２を解析して判定する方法や、実行条件の判定に必要となる情報を予めユーザに入力させ、その情報に基づき判定する方法がある。実行条件の判定に必要な情報を入力するための入力インタフェースについては、図１３にて後述する。
【００７７】
続いてステップＳ６１３に進み、データ分割処理部２３１は、入力データ２２２をデータのチャンクに分割する（Ｓ６１３）。ここでは、まずデータ分割処理部２３１は、ステップＳ６１１で取得した実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションの入力データ２２２を特定する。その後、データ分割処理部２３１は、入力データ２２２を系列データ項目の先頭からグループ抽出処理実行サーバ２０４の個数と同数のデータのチャンクに分割する。
【００７８】
続いてステップＳ６１４に進み、データ分割処理部２３１は、分割したデータのチャンクを処理するグループ抽出処理実行サーバ２０４を決定する（Ｓ６１４）。ここでは、データ分割処理部２３１は、分割したデータのチャンクの各々に対してグループ抽出処理を担当するグループ抽出処理実行サーバ２０４を決定する。グループ抽出処理実行サーバ２０４を決定する方法としては、例えば、処理可能なグループ抽出処理実行サーバ２０４をキューで管理し、キーの先頭に位置するグループ抽出処理実行サーバ２０４から決定する方法や、ランダムに決定する方法がある。
【００７９】
続いてステップＳ６１５に進み、データ分割処理部２３１は、ステップＳ６１２において今回実行する並列分散処理アプリケーションが上記実行条件を満たす場合には（Ｓ６１５でＹＥＳ）、ステップＳ６１６に進む。満たさない場合には（Ｓ６１５でＮＯ）、処理を終了する。
【００８０】
ステップＳ６１６に進んだ場合、データ分割処理部２３１は、データのチャンクにデータ集合識別子を付与する（Ｓ６１６）。ここでは、順序識別子設定部２３２が、ステップＳ６１４で決定した情報を基に、ステップＳ６１３で分割したデータのチャンクの各々に対して、各々のデータのチャンクを識別するためのデータ集合識別子として、入力データ２２２を先頭から複数のデータのチャンクに分割した順番を示す通し番号（通番）を付与する。例えば時刻を系列データ項目とした時系列データを複数のデータのチャンクに分割したときには、時刻が早いデータを含むデータのチャンクの順に通番を付与する。
【００８１】
続いてステップＳ６１７に進み、データ分割処理部２３１は、データ集合識別子とデータ集合識別子を付与したデータのチャンクを構成するデータを識別するための情報を、データ分割管理テーブル２３５に設定する（Ｓ６１７）。ここでは、順序識別子設定部２３２が、ステップＳ６１６でデータのチャンクに付与したデータ集合識別子と、データ集合識別子を付与したデータのチャンクを構成するデータを識別するための情報とを、データ分割管理テーブル２３５に設定する。
【００８２】
続いてステップＳ６１８に進み、データ分割処理部２３１は、データ集合識別子及びグループ抽出処理ノードＩＤを、データ割当管理テーブル２３６に設定する（Ｓ６１８）。ここでは、順序識別子設定部２３２が、ステップＳ６１６でデータのチャンクに付与したデータ集合識別子と、ステップＳ６１４でこのデータのチャンクを処理することが決定されたグループ抽出処理実行サーバ２０４のノードＩＤとを、データ割当管理テーブル２３６に設定する。
【００８３】
＜グループ抽出処理部２５１の処理手順＞
図６は、本発明の第１の実施の形態のグループ抽出処理部２５１の処理手順を示すフローチャートである。図６に示す処理手順は、図４のステップＳ５１４の処理に対応する。
【００８４】
まずステップＳ７１１において、グループ抽出処理部２５１は、並列分散処理制御サーバ２０２からグループ抽出処理の実行要求を受信する（Ｓ７１１）。ここでは、グループ抽出処理部２５１は、実行要求を受信した後に、この実行要求から自装置に割当てられたデータのチャンクを構成する物理的なデータを識別する情報を取得する。データのチャンクを構成する物理的なデータを識別する情報とは、データ管理サーバ２０１の識別情報及びデータの名前である。この情報は、実行制御部２３３が、データ分割管理テーブル２３５のデータ管理サーバノードＩＤ４１２及び図４のステップＳ５１２で取得した入力データ２２２に基づいて取得する情報である。
【００８５】
続いてステップＳ７１２に進み、グループ抽出処理部２５１は、データのチャンクを取得する（Ｓ７１２）。ここでは、グループ抽出処理部２５１は、ステップＳ７１１で取得したデータのチャンクを構成する物理的なデータを識別する情報を基に、データ管理サーバ２０１からデータのチャンクを取得する。
【００８６】
続いてステップＳ７１３に進み、グループ抽出処理部２５１は、ステップＳ７１２で取得したデータのチャンクに対してグループ抽出処理を実行し、その結果を中間データセット２５４として出力する（Ｓ７１３）。ここでは、ユーザ定義抽出処理実行部２５５が、予め開発者によって定義されたユーザ定義プログラム及びキー定義に定義されたキーの値によって、ステップＳ７１２で取得したデータのチャンクをキーの値毎にグルーピングする。その後、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット２５４として出力する。
【００８７】
例えば、グループ抽出処理の対象のデータのチャンクには料金所ＩＤのデータ項目が１００種類あり、キー定義にはキーの値が料金所ＩＤと定義されているとする。このとき、１台のグループ抽出処理実行サーバ２０４は、料金所ＩＤのデータ項目の種類だけ、すなわち１００個の中間データセット２５４を出力する。
【００８８】
ステップＳ７１３を補足する。ステップＳ７１３ではさらに、ユーザ定義抽出処理実行部２５５が、キーの値を中間データセット２５４に付与する。中間データセット２５４にキーの値を付与する方法には、例えば中間データセット２５４のデータの先頭に追加する方法、中間データセット２５４の名前に付加する方法がある。
【００８９】
続いてステップＳ７１４に進み、グループ抽出処理部２５１は、データ集合識別子があるか否かを判定する（Ｓ７１４）。ここでは、グループ抽出処理部２５１は、ステップＳ７１２で取得したデータのチャンクにデータ集合識別子が付与されているか否かを判定する。付与されている場合には（Ｓ７１４でＹＥＳ）、ステップＳ７１５に進む。付与されていない場合には（Ｓ７１４でＮＯ）、処理を終了する。
【００９０】
ステップＳ７１５に進んだ場合、グループ抽出処理部２５１は、データ集合識別子を取得し、中間データセット２５４に対してデータ集合識別子を付与する（Ｓ７１５）。ここでは、順序識別子付与部２５２が、ステップＳ７１２で取得したデータのチャンクに付与されたデータ集合識別子を取得し、取得したデータ集合識別子をステップＳ７１３で生成された中間データセット２５４に付与する。中間データセット２５４に対してデータ集合識別子を付与する方法には、例えば中間データセット２５４のデータの先頭に追加する方法、中間データセット２５４の名前に追加する方法がある。
【００９１】
＜データ集約処理部２６１の処理手順＞
図７は、本発明の第１の実施の形態のデータ集約処理部２６１の処理手順を示すフローチャートである。図７に示す処理手順は、図４のステップＳ５１７の処理に対応する。
【００９２】
まずステップＳ８１１において、データ集約処理部２６１は、並列分散処理制御サーバ２０２からデータ集約処理の実行要求を受信する（Ｓ８１１）。実行要求は、データ集約処理実行サーバ２０５が処理を担当するキーの値と中間データセット２５４を含むグループ抽出処理実行サーバ２０４を識別する情報とを含む。グループ抽出処理実行サーバ２０４を識別する情報とは、実行制御部２３３がデータ割当管理テーブル２３６を参照して取得する情報であり、具体的には図３Ｂのグループ抽出処理ノードＩＤ４２２である。
【００９３】
続いてステップＳ８１２に進み、データ集約処理部２６１は、キーの値が同一の中間データセット２５４を取得する（Ｓ８１２）。ここでは、データ集約処理部２６１は、ステップＳ８１１で受信した実行要求に含まれていた情報を基に、グループ抽出処理実行サーバ２０４の各々にアクセスし、キーの値が同一の中間データセット２５４を全てバルク転送にて取得する。キーが同一の中間データセット２５４を判定する方法には、例えば、ステップＳ７１３で出力された中間データセット２５４に含まれるデータから判定する方法、中間データセットの名前から判定する方法がある。
【００９４】
続いてステップＳ８１３に進み、データ集約処理部２６１は、ステップＳ８１２で取得した中間データセット２５４にデータ集合識別子が付与されているか否かを判定する（Ｓ８１３）。付与されている場合には（ステップ８１３でＹＥＳ）、ステップＳ８１４に進む。一方、付与されていない場合には（ステップ８１３でＮＯ）、ステップＳ８１６に進む。
【００９５】
ステップＳ８１４に進んだ場合、データ集約処理部２６１は、ステップＳ８１２で取得した中間データセット２５４からデータ集合識別子を取得する（Ｓ８１４）。ここでは、中間データセット結合処理部２６２が、ステップＳ８１２で取得した中間データセット２５４に付与された通番等のデータ集合識別子を取得する。
【００９６】
続いてステップＳ８１５に進み、データ集約処理部２６１は、データ集合識別子を整列させ、その順序で中間データセット２５４を結合する（Ｓ８１５）。ここでは、中間データセットソート処理部２６３が、ステップＳ８１４で取得したデータ集合識別子を番号順に整列させ、その順序で中間データセット２５４を結合する。データ集合識別子を番号順に整列する方法には、クイックソート等の一般的なソート方法がある。
【００９７】
他方、ステップＳ８１６に進んだ場合、データ集約処理部２６１は、ステップＳ８１２で取得した中間データセット２５４を結合する（Ｓ８１６）。ここでは、中間データセット結合処理部２６２が、中間データセット２５４を取得した順序で結合し、キーの値とグループとが関連付けられた値のリストを生成する。
【００９８】
続いてステップＳ８１７に進み、データ集約処理部２６１は、系列データ項目の順序でデータを整列する（Ｓ８１７）。ここでは、データソート処理部２６４が、ステップＳ８１６で生成されたリストを系列データ項目の順序で１件毎に並び替える。
【００９９】
ステップＳ８１８に進むと、データ集約処理部２６１は、系列データ項目の順序性に着目した処理を実行し、出力データ２２３を出力する（Ｓ８１８）。ここでは、ユーザ定義集約処理実行部２６５が、ステップＳ８１５又はステップＳ８１７で生成されたデータに対して、開発者が定義した系列データ項目の順序性を活用した処理方法に従った処理を実行し、その結果を出力データ２２３としてデータ管理サーバ２０１に格納する。
【０１００】
＜並列分散処理の具体例＞
以下、本発明の第１の実施の形態の並列分散処理の具体例を説明する。本具体例では、前述の車両の通行データ分析システムに本実施形態に係る並列分散処理方法を適用した場合の、各料金所を退場した車両に関する単位時間あたりの顧客属性を分析する分析アプリケーションの具体的な動作及び使用されるデータについて説明する。
【０１０１】
具体例に係る通行データ分析システムは、グループ抽出処理実行サーバ２０４を３台、データ集約処理実行サーバ２０５を２台備える。また、通行データの料金所識別子には、２つの料金所「Ｘ」及び「Ｙ」のいずれかの情報が設定される。
【０１０２】
この分析アプリケーションでは、最初に、入力データ２２２として入力された通行データを料金所毎にグルーピングし、料金所毎の退場の通行データのリストを出力データとして出力する。次に、料金所毎の退場の通行データのリストを入力データとして入力し、各料金所を退場した車両に関する単位時間あたりの顧客属性を抽出する処理を実行し、その結果を出力データ２２３として出力する。
【０１０３】
（具体例の通行データ分析システムの処理手順）
図８は、本発明の第１の実施の形態の通行データ分析システムの処理手順を示すフローチャートである。
【０１０４】
まずステップＳ９１１において、並列分散処理制御サーバ２０２は、今回実行する並列分散処理アプリケーションの実行条件を判定する（Ｓ９１１）。ここでは、並列分散処理制御サーバ２０２のデータ分割処理部２３１が、クライアント装置２０３から並列分散処理の実行要求を受信し、受信した実行要求から今回実行する並列分散処理アプリケーションを特定する。その後、特定した並列分散処理アプリケーションの実行条件を判定する。このステップＳ９１１の処理は図５のステップＳ６１１及びＳ６１２の処理に対応する。
【０１０５】
すなわち、データ分割処理部２３１は、特定した並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行するものであるという実行条件を満たすか否かを判定する。
【０１０６】
本具体例に係る分析アプリケーションは、大量の通行データに対して、系列データ項目（時刻）と異なるデータ項目（料金所ＩＤ）の値毎にグルーピングするグループ抽出処理を実行し、その後、系列データ項目（時刻）の順序性に着目したデータ集約処理を実行するものであるため、この実行条件を満たす。
【０１０７】
続いてステップＳ９１２に進み、並列分散処理制御サーバ２０２は、入力データ１００１をデータのチャンク１０２１、１０２２、１０２３に分割する（Ｓ９１２）。ここでは、並列分散処理制御サーバ２０２のデータ分割処理部２３１が、入力データ１００１をグループ抽出処理実行サーバ２０４の台数と同数の３個のデータのチャンク１０２１、１０２２、１０２３に分割する。このステップＳ９１２の処理は図５のステップＳ６１３からＳ６１８の処理に対応する。このステップＳ９１２の処理に係るデータの一例について、図９を用いて説明する。
【０１０８】
図９は、本発明の第１の実施の形態の通行データ分析システムの入力データ１００１とデータのチャンク１０２１、１０２２、１０２３の一例を示す図である。
【０１０９】
図９に示すように、入力データ１００１を構成する物理データは、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３、料金所ＩＤ１０１４を含む。時刻情報１０１１は、車両が料金所を通過した時刻に係る情報である。カードＩＤ１０１２は、車両に搭載されたＩＣカードの識別子である。処理ＩＤ１０１３は、入場又は退場のいずれかを示す通行識別子である。料金所ＩＤ１０１４は、どの料金所かを示す識別子である。
【０１１０】
ステップＳ９１２において、データ分割処理部２３１は、図９に示す入力データ１００１を構成する物理データを、グループ抽出処理実行サーバ２０４の台数と同数の３個のデータのチャンク１０２１、１０２２、１０２３に分割する。データのチャンク１０２１、１０２２、１０２３の各々は大量の通行データを含む。これらのデータのチャンク１０２１、１０２２、１０２３が３台の第１から第３のグループ抽出処理実行サーバ２０４の入力データとなる。
【０１１１】
ステップＳ９１２を補足する。本具体例によれば、データ分割処理部２３１は、上記のように入力データ１００１をデータのチャンク１０２１、１０２２、１０２３に分割した後に、分割したデータのチャンクを実行する第１から第３のグループ抽出処理実行サーバ２０４を決定する（図５のＳ６１４）。続いて、上記の並列分散処理アプリケーションの実行条件を満たしているので（図５のＳ６１５でＹＥＳ）、データのチャンク１０２１、１０２２、１０２３に通番のデータ集合識別子「Ｔ１」「Ｔ２」「Ｔ３」を付与する（図５のＳ６１６）。続いて、データ集合識別子及びデータのチャンクを構成するデータを識別するための情報をデータ分割管理テーブル２３５に設定する（図５のＳ６１７）。さらに、データ集合識別子及びグループ抽出処理実行ノードＩＤを、データ割当管理テーブル２３６に設定する（図５のＳ６１８）。
【０１１２】
続いてステップＳ９１３に進み、グループ抽出処理実行サーバ２０４は、ステップＳ９１２で分割されたデータのチャンク１０２１、１０２２、１０２３に対してグループ抽出処理を実行し、その結果を中間データセット２５４として出力する（Ｓ９１３）。このステップＳ９１３の処理は図６のステップＳ７１１からＳ７１５の処理に対応する。
【０１１３】
すなわち、各々のグループ抽出処理実行サーバ２０４のグループ抽出処理部２５１は、ステップＳ９１２で分割されたデータのチャンク１０２１、１０２２、１０２３のうち、自装置に割当てられたデータのチャンクを取得し、取得したデータのチャンクをキーの値（料金所）毎にグルーピングする。その後、キーの値（料金所）毎に中間データセット２５４を生成して出力する。
【０１１４】
ステップＳ９１３を補足する。本具体例によれば、グループ抽出処理部２５１は、上記のように中間データセット２５４を生成した後に、自装置に割当てられたデータのチャンクにデータ集合識別子が付与されているか否かを判定する（図６のＳ７１３）。本具体例では、データのチャンクにデータ集合識別子が付与されている（図６のＳ７１４でＹＥＳ）。そのため、グループ抽出処理部２５１は、生成した中間データセット２５４に対してデータ集合識別子を付与する（図６のＳ７１５）。このステップＳ９１３の処理に係るデータの一例について、図１０を用いて説明する。
【０１１５】
図１０Ａ、図１０Ｂ及び図１０Ｃは、本発明の第１の実施の形態の通行データ分析システムの中間データセットの一例を示す図である。
【０１１６】
図１０Ａに示すように、第１のグループ抽出処理実行サーバ２０４から出力される中間データセット１１０１は、料金所「Ｙ」の中間データセット１１１１、料金所「Ｘ」の中間データセット１１１２を含む。中間データセット１１１１、１１１２は、料金所ＩＤ１０１４、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３、及び、データ集合識別子「Ｔ１」を含む。
【０１１７】
図１０Ｂに示すように、第２のグループ抽出処理実行サーバ２０４から出力される中間データセット１１０２は、料金所「Ｙ」の中間データセット１１１３、料金所「Ｘ」の中間データセット１１１４を含む。中間データセット１１１３、１１１４は、料金所ＩＤ１０１４、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３、及び、データ集合識別子「Ｔ２」を含む。
【０１１８】
図１０Ｃに示すように、第３のグループ抽出処理実行サーバ２０４から出力される中間データセット１１０３は、料金所「Ｙ」の中間データセット１１１５、料金所「Ｘ」の中間データセット１１１６を含む。中間データセット１１１５、１１１６は、料金所ＩＤ１０１４、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３、及び、データ集合識別子「Ｔ３」を含む。
【０１１９】
以上のように、ステップＳ９１３では、３台の第１から第３のグループ抽出処理実行サーバ２０４のグループ抽出処理部２５１が並列に動作する。これにより、１台のグループ抽出処理実行サーバ２０４は料金所「Ｘ」、「Ｙ」に関する２個の中間データセットを出力し、３台のグループ抽出処理実行サーバ２０４は合計６個の中間データセットを出力する。
【０１２０】
続いてステップＳ９１４に進み、データ集約処理実行サーバ２０５は、中間データセットを結合して処理を実行し、その結果を出力データとして出力する（Ｓ９１４）。このステップＳ９１４の処理は図７のステップＳ８１１からＳ８１５及びＳ８１８の処理に対応する。
【０１２１】
すなわち、各々のデータ集約処理実行サーバ２０５のデータ集約処理部２６１は、並列分散処理制御サーバ２０２からデータ集約処理の実行要求を受信する（図７のＳ８１１）。次に、キーの値が同一の中間データセットを取得する（図７のＳ８１２）。ここで、取得した中間データセットにはデータ集合識別子が付与されている（図７のＳ８１３でＹＥＳ）。そのため、中間データセットからデータ集合識別子を取得する（図７のＳ８１４）。続いて、取得したデータ集合識別子を整列させ、その順序で中間データセットを結合する（図７のＳ８１５）。その後、ユーザ定義集約処理実行部２６５は、結合したデータに基づいて単位時間あたりの顧客属性を分析し、分析結果を出力データとして出力する（図７のＳ８１８）。
【０１２２】
以上のように、ステップＳ９１４では、２台のデータ集約処理実行サーバ２０５のデータ集約処理部２６１が並列に動作する。これにより、料金所「Ｙ」の中間データセットを結合したデータ１２１１と、料金所「Ｘ」の中間データセットを結合したデータ１２１２とが生成される。また、ユーザ定義集約処理実行部２６５は、データ１２１１、１２１２に対して処理を実行し、その結果を出力データ１２２１、１２２２として出力する。このステップＳ９１４の処理に係るデータの一例について、図１１Ａから図１２Ｂを用いて説明する。
【０１２３】
図１１Ａ及び図１１Ｂは、本発明の第１の実施の形態の通行データ分析システムの中間データセットを結合したデータ１２１１、１２１２の一例を示す図である。
【０１２４】
図１１Ａに示すデータ１２１１は、料金所ＩＤ「Ｙ」の中間データセットを結合したデータである。このデータ１２１１は、料金所ＩＤ１０１４、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３のデータを含む。一方、図１１Ｂに示すデータ１２１２は、料金所ＩＤ「Ｘ」の中間データセットを結合したデータである。このデータ１２１２は、料金所ＩＤ１０１４、時刻情報１０１１、カードＩＤ１０１２、処理ＩＤ１０１３のデータを含む。
【０１２５】
図１２Ａ及び図１２Ｂは、本発明の第１の実施の形態の通行データ分析システムの出力データ１２２１、１２２２の一例を示す図である。
【０１２６】
図１２Ａに示す出力データ１２２１は、図１１Ａのデータ１２１１に基づいて料金所「Ｙ」について分析したデータである。この出力データ１２２１は、料金所ＩＤ１０１４、時刻間隔１２３１、男性割合１２３２、平均年齢１２３３のデータを含む。一方、図１２Ｂに示す出力データ１２２２は、図１１Ｂの出力データ１２１２に基づいて料金所「Ｘ」について分析したデータである。この出力データ１２２２は、料金所ＩＤ１０１４、時刻間隔１２３１、男性割合１２３２、平均年齢１２３３のデータを含む。
【０１２７】
＜効果＞
以上に示すように、本発明の第１の実施の形態によれば、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を並列に実行し、その後、系列データ項目の順にデータが並んでいることを前提としたデータ集約処理を実行する並列分散処理アプリケーションの全体の処理を効率的に行うことができる。
【０１２８】
具体的には、このような特徴を備えた並列分散アプリケーションであることを判定したとき、系列データを複数のデータのチャンクに分割する際に、分割したデータのチャンクに通番を示すデータ集合識別子を付与し、グループ抽出処理部２５１でデータ集合識別子を中間データセットに付与し、データ集約処理部２６１でデータ集合識別子の順序で中間データセットを結合して、系列データ項目の順序性に基づいた処理を実行している。そのため、従来よりも効率的に並列分散処理アプリケーションを実行できる。
【０１２９】
例えば、上記で説明した通行データ分析システムのように、系列データ項目（時刻）とグループ抽出処理に用いられるキー（料金所ＩＤ）が異なり、更にデータ集約処理で系列データ項目（時刻）の順序性に着目した処理を行うとき、各料金所を退場した単位時間あたりの顧客属性を従来よりも高速に分析できる。これにより、業務の意思決定の支援を従来よりも素早く行うことも可能になる。
【０１３０】
＜入力インタフェース＞
図１３は、本発明の第１の実施の形態の並列分散処理アプリケーションの実行条件の判定に必要な情報を入力するための入力インタフェースの一例を示す図である。ここでは、図５のステップＳ６１２において説明した、実行条件の判定に必要な情報を入力するための入力インタフェースについて説明する。
【０１３１】
図１３に示す並列分散処理アプリケーション設定画面１７１１は、入力データの系列データ項目を定義する入力フィールド１７２１と、データ抽出処理に際してのキーとなるデータ項目を定義する入力フィールド１７２２と、データ集約処理に際してのデータ項目を定義する入力フィールド１７２３と、を含む。
【０１３２】
ユーザは、この並列分散処理アプリケーション設定画面１７１１を通して、入力フィールド１７２１、１７２２、１７２３に情報を入力する。そうすると、この入力インタフェース上で定義された情報は、系列データ処理制御定義情報として生成され、並列分散処理制御サーバ２０２の図５のステップ６１２で利用される。
【０１３３】
この入力インタフェースは、図２で示した何れかの装置上で動作する。また、入力インタフェースを通して入力された系列データ処理制御定義情報は、系列データ処理制御部２３７が参照可能な位置に配置される。
【０１３４】
なお、図１３はＧＵＩ（Graphical User Interface）による入力インタフェースを示しているが、入力インタフェースはＧＵＩに限定されるものではない。例えば、ユーザが系列データ処理制御定義情報を直接設定する方法でもよい。
【０１３５】
＜グループ抽出処理部２５１の処理手順の別の例＞
なお、以上に示した第１の実施の形態（図５のステップＳ６１３参照）では、データ分割処理部２３１は、入力データ２２２をグループ抽出処理実行サーバ２０４の個数と同数のデータのチャンクに先頭から分割し、分割したデータのチャンクをグループ抽出処理実行サーバ２０４に割当てていた。そのため、入力データ２２２を格納するデータ管理サーバ２０１によっては、ネットワーク上でより近くに位置するグループ抽出処理実行サーバ２０４があるにも関わらず、ネットワーク上で遠いグループ抽出処理実行サーバ２０４にデータのチャンクが割当てられる場合があった。大量データを転送する場合、ネットワーク上でより近いグループ抽出処理実行サーバ２０４に処理を割当てる方が高速に処理できる。
【０１３６】
そこで、図５のステップＳ６１３において、データ分割処理部２３１が、入力データ２２２をデータのチャンクに分割するとき、以下の方法で分割することが好適である。すなわち、ネットワーク上で入力データ２２２を格納するデータ管理サーバ２０１に一番近いグループ抽出処理実行サーバ２０４が当該入力データ２２２を処理できるように入力データ２２２を分割し、分割された複数のデータのチャンクをグループ抽出処理実行サーバ２０４に割当てる方法である。なお、分割した複数のデータのチャンクが割当てられたグループ抽出処理実行サーバ２０４は、複数のデータのチャンクを処理する。
【０１３７】
なお、ネットワーク上でデータ管理サーバ２０１に一番近いグループ抽出処理実行サーバ２０４を特定する方法としては、例えば、データ管理サーバ２０１からグループ抽出処理実行サーバ２０４までのホップ数で判定する方法がある。
【０１３８】
図１４は、本発明の第１の実施の形態のグループ抽出処理部２５１が複数のデータのチャンクを入力データとして処理するときの処理手順を示すフローチャートである。
【０１３９】
図１４に示すフローチャートは、図６に示した各処理に、ステップＳ１３１１からステップＳ１３１６の処理が新たに追加されている。また、図６に示した処理のうちのステップＳ７１５が削除されている。なお、図１４のステップＳ７１１からステップＳ７１４の処理は、図６のステップＳ７１１からステップＳ７１４の処理と同様であるため説明を省略する。ここでは、図１４のステップＳ１３１１からステップＳ１３１６の処理について説明する。
【０１４０】
ステップＳ１３１１に進んだ場合、グループ抽出処理部２５１は、ステップＳ７１２で取得した全てのデータのチャンクに付与されたデータ集合識別子を取得する（Ｓ１３１１）。ここでは、順序識別子付与部２５２が、ステップＳ７１２で取得した全てのデータのチャンクに付与されたデータ集合識別子を取得する。
【０１４１】
続いてステップＳ１３１２に進んで、グループ抽出処理部２５１は、取得した全てのデータ集合識別子の値に連続性があるか否かを判定する（Ｓ１３１２）。ここでは、順序識別子付与部２５２が、ステップＳ１３１１で取得した全てのデータ集合識別子を参照して、取得した全てのデータ集合識別子（例えば通番）の少なくとも一部に値の連続性があるか否かを判定する。少なくとも一部に値の連続性があり、且つ、データ集合識別子の個数が２個以上の場合には（Ｓ１３１２でＹＥＳ）、ステップＳ１３１３に進む。一方、取得した全てのデータ集合識別子に値の連続性がない場合には（Ｓ１３１２でＮＯ）、ステップＳ１３１５に進む。
【０１４２】
ここで、データ集合識別子の少なくとも一部に値の連続性がある場合とは、例えば、３個のデータのチャンクに付与されたデータ集合識別子が「Ｔ１」、「Ｔ２」、「Ｔ４」のように、一部のデータ集合識別子「Ｔ１」、「Ｔ２」の値が連続している場合である。一方、データ集合識別子に値の連続性がない場合とは、例えば、データ集合識別子が「Ｔ１」、「Ｔ３」、「Ｔ５」である場合である。
【０１４３】
ステップＳ１３１３に進んだ場合、グループ抽出処理部２５１は、連続性があるデータ集合識別子が付与されたデータのチャンクを結合し、中間データセット２５４として出力する（Ｓ１３１３）。ここでは、順序識別子付与部２５２が、連続性があるデータ集合識別子を集め、その後、連続性があるデータ集合識別子が付与されたデータのチャンクをデータ集合識別子の順番に従い結合し、開発者が定義した処理を実行し、キーの値毎に中間データセット２５４として出力する。なお、連続性がないデータ集合識別子が付与されたデータのチャンクについては、キーの値毎に中間データセットとして出力する。例えば、データ集合識別子が「Ｔ１」、「Ｔ２」、「Ｔ４」である場合、データ集合識別子「Ｔ１」、「Ｔ２」が付与されたデータのチャンクが結合され、キーの値毎に中間データセットとして出力される。また、データ集合識別子「Ｔ４」が付与されたデータのチャンクは、キーの値毎に中間データセットして出力される。
【０１４４】
続いてステップＳ１３１４に進んで、グループ抽出処理部２５１は、出力した中間データセット２５４にデータ集合識別子を付与する（Ｓ１３１４）。ここでは、順序識別子付与部２５２が、ステップＳ１３１３で出力した中間データセットに対して、ステップＳ１３１１で取得したデータ集合識別子を付与する。その際、データ集合識別子の値に連続性があるデータのチャンクを結合して生成した中間データセットに対しては、データ集合識別子を連結した情報を新たなデータ集合識別子として付与する。一方、データ集合識別子の値に連続性がないデータのチャンクに基づいて生成した中間データセットに対しては、ステップＳ１３１３でそのデータのチャンクから取得したデータ集合識別子をそのまま付与する。例えば、データ集合識別子が「Ｔ１」、「Ｔ２」である場合、データ集合識別子「Ｔ１」、「Ｔ２」が付与されたデータのチャンクを結合して生成した中間データセットには、データ集合識別子「Ｔ１Ｔ２」が付与される。
【０１４５】
一方、ステップＳ１３１５に進んだ場合、グループ抽出処理部２５１は、中間データセット２５４を出力する（Ｓ１３１５）。ここでは、順序識別子付与部２５２が、ステップＳ７１２で取得した全てのデータのチャンクに対して、開発者の定義した処理を実行し、キーの値毎に中間データセットを出力する。例えば、ステップＳ７１２で取得したデータのチャンクが２個あり、２個のデータのチャンクにはキーの値が３個含まれていたとき、中間データセットは６個出力される。
【０１４６】
続いてステップＳ１３１６に進んで、グループ抽出処理部２５１は、出力した中間データセット２５４にデータ集合識別子を付与する（Ｓ１３１６）。ここでは、順序識別子付与部２５２が、ステップＳ１３１５で出力した全ての中間データセットに対して、ステップＳ１３１１で取得したデータ集合識別子を付与する。
【０１４７】
なお、図１４に示す処理が終了すると、データ集約処理実行サーバ２０５の中間データセットソート処理部２６３が、全ての中間データセットに付与されたデータ集合識別子（結合されたデータ集合識別子を含む）を整列して、その順序に従い中間データセットを結合する。その後、ユーザ定義集約処理実行部２６５が、結合したデータに対して系列データ項目の順序性に基づいた処理を実行する。例えば、データ集合識別子が「Ｔ１Ｔ２」、「Ｔ４」、「Ｔ３」である場合、番号順（「Ｔ１Ｔ２」、「Ｔ３」、「Ｔ４」の順序）にデータ集合識別子を整列し、その順序で対応する中間データセットを結合する。
【０１４８】
＜データ集約処理部２６１の処理手順の別の例＞
また、以上に示した第１の実施の形態（図４のステップＳ５１６参照）では、実行制御部２３３は、全てのグループ抽出処理実行サーバ２０４からグループ抽出処理が完了した旨の通知を受信した後に、データ集約処理実行サーバ２０５に対してデータ集約処理の実行要求を送信していた。しかし、実行制御部２３３が、全てのグループ抽出処理実行サーバ２０４の処理が完了するのを待つことなく、データ集約処理実行サーバ２０５に実行要求することによって、部分的にでも中間データセット結合処理を実行でき、並列分散処アプリケーションを効率的に処理できる。
【０１４９】
そこで、図５のステップ５１６において、実行制御部２３３が、全てのグループ抽出処理実行サーバ２０４からグループ抽出処理が完了した旨の通知を受信するのを待つことなく、例えば、ある一定の台数のグループ抽出処理実行サーバ２０４から通知を受信したときに、データ集約処理実行サーバ２０５にデータ集約処理の実行要求を送信する。その後、データ集約処理実行サーバ２０５は、ある時刻までに終了したグループ抽出処理実行サーバ２０４で出力された中間データセット２５４に対してデータ集約処理を実行する。
【０１５０】
図１５は、本発明の第１の実施の形態のデータ集約処理部２６１が全てのグループ抽出処理実行サーバ２０４の完了を待たずに処理するときの処理手順を示すフローチャートである。
【０１５１】
図１５に示すフローチャートは、図７に示した各処理に、ステップＳ１４１１からステップＳ１４１５の処理が新たに追加されている。なお、図１５に示した処理のうちのステップＳ８１１からステップＳ８１７の処理は、図７のステップＳ８１１からステップＳ８１７の処理と同様であるため説明を省略する。ここでは、図１５のステップＳ１４１１からステップＳ１４１５の処理について説明する。
【０１５２】
ステップＳ８１４からステップＳ１４１１に進んで、データ集約処理部２６１は、取得した全てのデータ集合識別子の値に連続性があるか否かを判定する（Ｓ１４１１）。ここでは、中間データセット結合処理部２６２が、ステップＳ８１４で取得した全てのデータ集合識別子を参照して、取得した全てのデータ集合識別子（例えば通番）の少なくとも一部に値の連続性があるか否かを判定する。少なくとも一部に値の連続性があり、且つ、データ集合識別子の個数が２個以上の場合には（Ｓ１４１１でＹＥＳ）、ステップＳ１４１２に進む。一方、取得した全てのデータ集合識別子に値の連続性がない場合には（Ｓ１４１１でＮＯ）、ステップＳ１４１５に進む。
【０１５３】
ここで、データ集合識別子の少なくとも一部に値の連続性がある場合とは、例えば、データ集合識別子が「Ｔ１」、「Ｔ２」、「Ｔ４」のように、一部のデータ集合識別子「Ｔ１」、「Ｔ２」の値が連続している場合である。一方、データ集合識別子に値の連続性がない場合とは、例えば、データ集合識別子が「Ｔ１」、「Ｔ３」、「Ｔ５」である場合である。
【０１５４】
ステップＳ１４１２に進んだ場合、データ集約処理部２６１は、全てのグループ抽出処理実行サーバ２０４から中間データを取得したか否かを判定する（Ｓ１４１２）。全てのグループ抽出処理実行サーバ２０４から中間データを取得した場合には（Ｓ１４１２でＹＥＳ）、ステップＳ８１５に進む。一方、全てのグループ抽出処理実行サーバ２０４から中間データを取得していない場合には（Ｓ１４１２でＮＯ）、ステップＳ１４１３に進む。
【０１５５】
ステップＳ１４１３に進んだ場合、データ集約処理部２６１は、ステップＳ８１４で取得したデータ集合識別子のうちの連続性があるデータ集合識別子に対応する中間データセット２５４を結合する（Ｓ１４１３）。ここでは、中間データセット結合処理部２６２が当該処理を行う。なお、連続性がないデータ集合識別子に対応する中間データセット２５４に対する処理は行わない。例えば、データ集合識別子が「Ｔ１」、「Ｔ２」、「Ｔ４」である場合、データ集合識別子「Ｔ１」、「Ｔ２」が付与された中間データセットは結合される。また、データ集合識別子「Ｔ４」が付与された中間データセットに対する処理は行われない。
【０１５６】
ステップＳ８１３でＮＯからステップＳ１４１４に進んだ場合あ、データ集約処理部２６１は、全てのグループ抽出処理実行サーバ２０４から中間データセット２５４を取得したか否かを判定する（Ｓ１４１４）。全てのグループ抽出処理実行サーバ２０４から中間データセット２５４を取得した場合には（Ｓ１４１４でＹＥＳ）、ステップＳ８１６に進む。一方、全てのグループ抽出処理実行サーバ２０４から中間データセット２５４を取得していない場合には（Ｓ１４１４でＮＯ）、ステップＳ１４１５に進む。
【０１５７】
ステップＳ１４１５に進んだ場合、データ集約処理部２６１は、並列分散処理制御サーバ２０２からデータ集約処理の実行要求を受信するまで待機する（Ｓ１４１５）。
【０１５８】
＜データ集合識別子の別の例＞
また、以上に示した第１の実施の形態（図５のＳ６１６参照）では、通番を示す情報をデータ集合識別子として付与したが、この場合に限らない。例えば、分割したデータのチャンクに含まれる系列データ項目の代表値（平均値や中間値）をデータ集合識別子として付与してもよい。
【０１５９】
（第２の実施の形態）
続いて、本発明の第２の実施の形態について、図１６及び図１７を参照して説明する。
【０１６０】
前述の第１の実施の形態では、系列データを分割する際に、分割したデータのチャンクに対して通番を示す情報をデータ集合識別子として付与し、その通番をもとに系列データ項目の順序性を判定して中間データセットを結合していた。しかし、データ集合識別子を付与する方法とは別の方法として、グループ抽出処理で生成される中間データセットの先頭データに含まれる系列データ項目の値を参照し、その値を比較することで、系列データ項目の順序性を判定して中間データセットを結合する方法が考えられる。
【０１６１】
そこで、本発明の第２の実施の形態では、系列データを分割する際に分割したデータのチャンクに対してデータ集合識別子を付与することなく、データの集約処理を実行する際に、中間データセットに含まれる先頭データから系列データ項目の順序性を判定し、その順序で中間データセットを結合して並列分散処理アプリケーションを実行する。
【０１６２】
なお、第２の実施の形態では、第１の実施の形態と共通する構成については、適宜説明を省略し、相違する構成及び作用を中心に説明する。また、第２の実施の形態に関わる計算機システムの構成は、図２及び図３に示した第１の実施の形態のシステム構成から順序識別子設定部２３２を削除したシステム構成である。
【０１６３】
＜データ分割処理部２３１の処理手順、及び、実行制御部２３３がグループ抽出処理実行サーバ２０４に対してグループ抽出処理の実行要求を送信する際の処理手順＞
第２の実施の形態におけるデータ分割処理部２３１の処理手順、及び、実行制御部２３３がグループ抽出処理実行サーバ２０４に対してグループ抽出処理の実行要求を送信する処理手順について説明する。
【０１６４】
第２の実施の形態のデータ分割処理部２３１は、図５に示す一連の処理のうちのステップＳ６１１からＳ６１５を実行するが、ステップＳ６１６を実行しない。なお、ステップＳ６１７では、データ集合識別子の代わりにデータのチャンクを処理するグループ抽出処理実行サーバ２０４を識別可能な情報をデータ分割管理テーブル２３５に設定する。ステップＳ６１８でも同様に、データ集合識別子の代わりにグループ抽出処理実行サーバ２０４を識別可能な情報をデータ割当管理テーブル２３６に設定する。なお、グループ抽出処理実行サーバ２０４を識別可能な情報とは、例えば、ＭＡＣアドレスである。
【０１６５】
また、ステップＳ６１５において実行条件を満たすと判定すると（Ｓ６１５でＹＥＳ）、図４に示すステップＳ５１３に進んで並列分散処理制御サーバ２０２がグループ抽出処理実行サーバ２０４に対してグループ抽出処理の実行要求を送信する際に、この実行要求に系列データ処理識別子を追加する。系列データ処理識別子とは、今回実行する並列分散処理アプリケーションが、実行条件を満たす並列分散処理アプリケーションであることを示す識別子であり、例えば「EXEC SEQUENCE PROCESSING」のような値である。
【０１６６】
＜グループ抽出処理部２５１の処理手順＞
図１６は、本発明の第２の実施の形態のグループ抽出処理部２５１の処理手順を示すフローチャートである。図１６に示す処理手順は、図４のステップＳ５１４の処理に対応する。
【０１６７】
図１６に示すフローチャートには、図６に示した各処理からステップＳ７１４及びＳ７１５の処理が削除され、ステップＳ１５１１及びステップＳ１５１２の処理が新たに追加されている。なお、図１６に示した処理のうちのステップＳ７１１からステップＳ７１３の処理は、図６のステップＳ７１１からステップＳ７１３の処理と同様であるため説明を省略する。ここでは、図１６のステップＳ１５１１及びステップＳ１５１２の処理について説明する。
【０１６８】
ステップＳ７１３からステップＳ１５１１に進んで、グループ抽出処理部２５１は、ステップＳ７１１で受信した実行要求の中に、系列データ処理識別子が含まれているか否かを判定する（Ｓ１５１１）。系列データ処理識別子が含まれていた場合には（Ｓ１５１１でＹＥＳ）、ステップＳ１５１２に進む。一方、系列データ識別子が含まれていない場合には（Ｓ１５１１でＮＯ）、処理を終了する。
【０１６９】
ステップＳ１５１２に進んだ場合、グループ抽出処理部２５１は、中間データセット２５４を識別可能な情報を中間データセット２５４に付与する（Ｓ１５１２）。ここでは、順序識別子付与部２３２が、ステップＳ７１３で生成した中間データセット２５４の名前に、グループ抽出処理実行サーバ２０４に基づくデータ集合を識別するデータ集合識別子を追加する。ここでいうデータ集合識別子とは、例えば、グループ抽出処理実行サーバ２０４のＭＡＣアドレス等、グループ抽出処理実行サーバ２０４を一意に特定できる情報である。このデータ集合識別子は、中間データセット２５４をバルク転送により取得したデータ集約処理実行サーバ２０５が、取得した中間データセット２５４を識別するために必要となる。
【０１７０】
＜データ集約処理部２６１の処理手順＞
図１７は、本発明の第２の実施の形態のデータ集約処理部２６１の処理手順を示すフローチャートである。図１７に示す処理手順は、図４のステップＳ５１７の処理に対応する。
【０１７１】
図１７に示すフローチャートは、図７に示した各処理からステップＳ８１３からＳ８１５の処理が削除され、ステップＳ１６１１からステップＳ１６１３の処理が新たに追加されている。なお、図１７に示した処理のうちのステップＳ８１１からステップＳ８１２、ステップＳ８１６からステップＳ８１８の処理は、図７のステップＳ８１１からステップＳ８１２、ステップＳ８１６からステップＳ８１８の処理と同様であるため説明を省略する。ここでは、図１７のステップＳ１６１１からステップＳ１６１３の処理について説明する。
【０１７２】
ステップＳ８１２からステップＳ１６１１に進んで、データ集約処理部２６１は、ステップＳ８１２で取得した中間データセット２５４にデータ集合識別子が付与されているか否かを判定する（Ｓ１６１１）。データ集合識別子が付与されている場合には（Ｓ１６１１でＹＥＳ）、ステップＳ１６１２に進む。一方、データ集合識別子が付与されていない場合には（Ｓ１６１１でＮＯ）、ステップＳ８１６に進む。
【０１７３】
ステップＳ１６１２に進んだ場合、データ集約処理部２６１は、ステップＳ８１２で取得した全ての中間データセット２５４に対して、各中間データセット２５４の先頭データを参照し、先頭データに含まれる系列データ項目の値を取得し、比較する（Ｓ１６１２）。この処理は、中間データセット結合処理部２６２によって実行される。なお、先頭データを参照する方法には、例えば、中間データセット２５４がファイルの場合、ファイルを開いて先頭データを取得する方法がある。また先頭データに含まれる系列データ項目を識別する方法には、例えば、系列データ集約処理の開発時の定義情報を解析する方法や、並列分散処理制御サーバ２０２からデータ集約処理実行サーバ２０５に送信する実行要求の中に含める方法、ユーザが系列データ項目を設定する方法がある。
【０１７４】
続いてステップＳ１６１３に進み、データ集約処理部２６１は、データ集合識別子を整列した系列データ項目の順序で、中間データセット２５４を結合する（Ｓ１６１３）。
【０１７５】
以上のように、本発明の第２の実施の形態によれば、系列データを分割する際に、分割したデータのチャンクに対してデータ集合識別子を付与することなく、データの集約処理を実行する際に、中間データセットに含まれる先頭データから系列データ項目の順序性を判定し、その順序で中間データセットを結合して並列分散処理アプリケーションを実行することができる。
【０１７６】
以上、本発明の各実施形態について説明したが、上記実施形態は本発明の適用例の一つを示したものであり、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
【０１７７】
例えば、上記説明においては、グループ抽出処理実行サーバ２０４はキーの値毎に中間データセットを出力していたが、中間データセットの出力単位はキーの値毎に限定されるものではない。例えば、複数のキーの値をまとめた中間データセットを出力することも可能である。その際、中間データセットの名前には複数のキーを、キーの分割識別子を挟んで連結した値を設定する。キーの分割識別子とは、例えば入力データに含まれるキーに対応したデータ項目の全ての値と重複しない文字列である。
【０１７８】
また、例えば、上記説明においては、入力データとして系列データの一種である時系列データを取り上げて説明したが、本発明が対象とする系列データは時系列データには限らない。
【０１７９】
すなわち、複数の販売店舗を展開する企業が、購入金額や購入回数が一定以上を上回る優良顧客に対する個別戦略を計画する時に利用する、販売履歴データであってもよい。販売履歴データとは、各店舗を識別するための店舗ＩＤや、商品の購入者を識別するための購入者ＩＤ、購入金額などの販売情報を含み、販売履歴データ全体が店舗ＩＤ順に並べられている系列データである。
【０１８０】
このとき、各店舗単位に収集された販売履歴から優良顧客を抽出して動向を分析することを考えたとき、以下の順序で分析を実行することが想定される。
【０１８１】
（１）販売履歴データを入力データとして、購入者をキーとして各購入者の購入回数や全購入金額を計算し、一定以上の購入回数や購入金額を含む優良顧客の販売履歴データを購入者単位に抽出する。
【０１８２】
（２）購入者単位に抽出した優良顧客の販売履歴データに対して、店舗毎に購入した商品の種別などの販売傾向を分析する。
【０１８３】
この販売履歴データの例では、入力データとなる系列データ項目（店舗ＩＤ）と、グループ抽出処理に設定されたキー（購入者ＩＤ）が異なり、更に系列データ項目（店舗ＩＤ）の順序性に着目した処理を実行している。
【符号の説明】
【０１８４】
２０１    データ管理サーバ
２０２    並列分散処理制御サーバ
２０３    クライアント装置
２０４    グループ抽出処理実行サーバ
２０５    データ集約処理実行サーバ
２１１    ネットワーク
２２２    入力データ
２２３    出力データ
２３１    データ分割処理部
２３２    順序識別子設定部
２３５    データ分割管理テーブル
２３６    データ割当管理テーブル
２３７    系列データ処理制御部
２５１    グループ抽出処理部
２５２    順序識別子付与部
２５４    中間データセット
２５５    ユーザ定義抽出処理実行部
２６１    データ集約処理部
２６２    中間データセット結合処理部
２６３    中間データセットソート処理部
２６４    データソート処理部
２６５    ユーザ定義集約処理実行部
３１１、３２１、３３１、３４１、３５１    ネットワークインタフェース
３１２、３２２、３３２、３４２、３５２    ＣＰＵ
３１３、３２３、３３３、３４３、３５３    主記憶装置
３１４、３２４、３３４、３４４、３５４    二次記憶装置
３１５、３２５、３３５、３４５、３５５    バス
【図１】
0005408442.tif 000002
【図２】
0005408442.tif 000003
【図３Ａ】
0005408442.tif 000004
【図３Ｂ】
0005408442.tif 000005
【図４】
0005408442.tif 000006
【図５】
0005408442.tif 000007
【図６】
0005408442.tif 000008
【図７】
0005408442.tif 000009
【図８】
0005408442.tif 000010
【図９】
0005408442.tif 000011
【図１０Ａ】
0005408442.tif 000012
【図１０Ｂ】
0005408442.tif 000013
【図１０Ｃ】
0005408442.tif 000014
【図１１Ａ】
0005408442.tif 000015
【図１１Ｂ】
0005408442.tif 000016
【図１２Ａ】
0005408442.tif 000017
【図１２Ｂ】
0005408442.tif 000018
【図１３】
0005408442.tif 000019
【図１４】
0005408442.tif 000020
【図１５】
0005408442.tif 000021
【図１６】
0005408442.tif 000022
【図１７】
0005408442.tif 000023