"複数のキー種で分類された複数のデータを集約するコンピュータに、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶し、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較し、前記比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する、処理を実行させることを特徴とする処理プログラム。前記マップデータは、前記データの内容のリストであるイベントリストを含み、前記新たなマップデータを生成して記憶する処理では、前記比較の結果、前記合計キー数の方が大きかった場合に、前記マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを集約キーとするマップデータを特定し、当該特定されたマップデータのイベントリストにのみデータを関連付けることを特徴とする請求項1に記載の処理プログラム。前記比較する処理における比較の結果、前記合計キー数の方が大きくなかった場合であって、前記取得したイベントリストにデータが含まれる場合には、前記マージしたキーリストのうち辞書式に先頭となるキーを集約キーとし、前記取得したイベントリストをマージしたイベントリスト及び前記マージしたキーリストが関連付けられた新たなマップデータを生成し、前記記憶部に記憶することを特徴とする請求項1又は2に記載の処理プログラム。前記比較する処理における比較の結果、前記記憶部に記憶されている全ての集約キーに関連付けられたキーリストにおいて、前記合計キー数の方が大きくなかった場合に、前記記憶部に記憶されているキーリストに基づいて一意の値を作成し、当該値を集約キーとするマップデータを生成する処理、を前記コンピュータに実行させることを特徴とする請求項1~3のいずれか一項に記載の処理プログラム。複数のキー種で分類された複数のデータを集約するコンピュータが、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶する工程と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する工程と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する工程と、を実行することを特徴とする処理方法。複数のキー種で分類された複数のデータを集約する処理装置であって、前記複数のデータ及び当該複数のデータから生成されるマップデータを記憶する記憶部と、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して前記記憶部に記憶する第1生成記憶部と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する比較部と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する第2生成記憶部と、を備える処理装置。しかしながら、図23aのように、一連の業務フローを示すキーが複数図23aでは3種存在する場合もあり得る。なお、図23bは、図23aのデータを集約した例を示している。このような場合には、単純にはグルーピングを行うことができない。複数のキー種を用いて関連のあるデータ群を集約する処理以下、複数キー集約処理と呼ぶでは、どのキーの組み合わせが一連のデータ群を示すのかが、データ全体を見ないと完全には確定しないからである。例えば、図23aの場合、伝票番号=001で集約しようとすると、伝票明細詳細テーブルのデータを集約できない。一方、伝票明細詳細番号=001001001で集約する場合、伝票テーブルのデータを集約できない。この場合、処理の進展に応じてキー値の組み合わせの情報を最新化しながら集約処理を進めるような工夫が必要であり、また、最新化する処理が不十分な場合には、データの集約漏れが発生する場合がある。これに対し、キー種間の関連を管理する表をRDB関係データベースRelationalDatabaseなどに作成することも考えられる。しかるに、分散並列処理する各処理マシンが共通に参照更新する箇所があると、分散処理の性能スケーラビリティが劣化するおそれがある。そこで本件は上記の課題に鑑みてなされたものであり、複数のキー種で分類された複数のデータを集約する際に、データ集約漏れを防止し、性能スケーラビリティの向上を図ることが可能な処理プログラム、処理方法及び処理装置を提供することを目的とする。本明細書に記載の処理プログラムは、複数のキー種で分類された複数のデータを集約するコンピュータに、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶し、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較し、前記比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する、処理を実行させる処理プログラムである。本明細書に記載の処理方法は、複数のキー種で分類された複数のデータを集約するコンピュータが、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶する工程と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する工程と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する工程と、を実行する処理方法である。本明細書に記載の処理装置は、複数のキー種で分類された複数のデータを集約する処理装置であって、前記複数のデータ及び当該複数のデータから生成されるマップデータを記憶する記憶部と、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して前記記憶部に記憶する第1生成記憶部と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する比較部と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する第2生成記憶部と、を備える処理装置である。本明細書に記載の処理プログラム、処理方法及び処理装置は、複数のキー種で分類された複数のデータを集約する際に、データ集約漏れを防止し、性能スケーラビリティの向上を図ることができるという効果を奏する。以下、一実施形態について、図1~図21に基づいて詳細に説明する。図1には、分散処理システム100の構成が概略的に示されている。本実施形態の分散処理システム100では、複数のキー種で分類されたデータを集約する複数キー集約処理を行うこととし、当該処理では、MapReduceアルゴリズムを適用するものとする。ここで、集約とは、同一のキーのデータを取得し纏めることを意味する。分散処理システム100は、図1に示すように、処理を実行するn台の処理装置コンピュータとしての処理サーバ10と、各処理サーバ10の処理を管理する管理サーバ20と、を備える。各処理サーバ10と管理サーバ20は、LANLocalAreaNetwork、インターネットなどのネットワーク30に接続されている。図2には、処理サーバ10のハードウェア構成が示されている。図2に示すように、処理サーバ10は、CPU90、ROM92、RAM94、記憶部ここではHDDHardDiskDrive96、ネットワークインタフェース97、可搬型記憶媒体用ドライブ99等を備えている。これら処理サーバ10の構成各部は、バス98に接続されている。処理サーバ10では、ROM92あるいはHDD96に格納されているプログラム処理プログラム、又は可搬型記憶媒体用ドライブ99が可搬型記憶媒体91から読み出したプログラム処理プログラムをCPU90が実行することにより、図3aの各部の機能が実現される。なお、管理サーバ20も処理サーバ10と同様の構成を有しているが、管理サーバ20では、ROMあるいはHDDに格納されているプログラム管理プログラム、又は可搬型記憶媒体用ドライブが可搬型記憶媒体から読み出したプログラム管理プログラムをCPUが実行することで、図3bの各部の機能が実現される。なお、図3a、図3bの各機能の詳細については、後述する。図1に戻り、各処理サーバ10のディスクHDD96は、仮想的に1つのディスクに見える記憶部としての分散ファイルシステム40に組み込まれている。なお、図示の便宜上、図1では、HDD96を各処理サーバ10の外側に出して示している。図3aには、処理サーバ10の機能ブロック図が示されている。処理サーバ10は、CPU90が処理プログラムを実行することで、図3aに示す、第1生成記憶部としてのMap処理部12、第2生成記憶部及び比較部としてのReduce処理部14、としての機能を実現する。Map処理部12は、分散ファイルシステム40に格納されているデータを用いて、後述するMap処理を実行する。Reduce処理部14は、Map処理部12においてMap処理されたデータMapデータを用いて、後述するReduce処理を行う。図3bには、管理サーバ20の機能ブロック図が示されている。管理サーバ20では、CPUが管理プログラムを実行することで、図3bに示す、処理管理部22、キー数増加フラグ管理部24、通信部26、としての機能を実現する。なお、本実施形態では、管理サーバ20における管理プログラムの実行に連動して各処理サーバ10の処理プログラムが起動されるようになっている。処理管理部22は、各処理サーバ10の状態を通信部26を介して把握するとともに、キー数増加フラグ管理部24が管理する後述するキー数増加フラグを参照して、各処理サーバ10に対して処理を実行させる。キー数増加フラグ管理部24は、通信部26を介して各処理サーバ10から取得した情報に基づいて、キー数増加フラグの値を管理する。キー数増加フラグは、0又は1の値をとりうるものである。なお、キー数増加フラグの値は、キー数増加フラグ管理部24のみが参照可能である。したがって、各処理サーバ10においては、カウンタの値を参照せずに、キー数増加フラグ管理部24に対してフラグの値を変更する指示をリモートかつ非同期的にて行うのみである。このため、処理プログラムの処理がカウンタの影響で待たされたりすることはない。通信部26は、処理サーバ10との間で通信を行い、通信結果を処理管理部22及びキー数増加フラグ管理部24に対して送信する。また、通信部26は、処理管理部22からの指示を処理サーバ10に対して送信する。なお、上記構成は、分散処理ミドルウェアとしてApacheHadoopを利用したときの標準的な構成である。したがって、分散ファイルシステム40や、処理プログラムの起動停止制御、及びカウンタの機能はHadoopの基本機能として実装されているものである。次に、MapReduce処理の基本的な処理内容について、図4に基づいて説明する。処理の流れとして、最初は、処理対象のデータは全て管理サーバ20上のストレージに格納されているものとする。これを管理サーバ20が分散ファイルシステム40にアップロードすると、処理対象のデータは自動的に分割され、均一な量になるように、各処理サーバ10のストレージに格納される。この後に、MapReduce処理が実行される。図4は、MapReduce処理の基本概念を示す図である。MapReduce処理では、分散ファイルシステム40上の処理対象のデータを、主キー集約に用いるキーであるので集約キーとも呼ばれると値からなるMapデータに分割する処理Map処理と、主キーの値に応じてMapデータを纏める処理Reduce処理とを、各処理サーバ10において分散並列的に行う。Map処理における主キーと値の形式は自由であり、また、Mapデータをひとつも生成しないMap処理もあり得る。例えば、各処理サーバ10において分散並列的に行われたMap処理によって、図4の上段に示すようなMapデータが生成されたとする。一方、Reduce処理とは、Map処理によって生成されたMapデータを元データとし、その主キーの値によって処理サーバを振分け、ある基準でグループ化したMapデータ群に対して何らかの処理を行うことを指す。一般的には、同一の主キー値を持つMapデータ群をグループ化し、そのMapデータのグループに対して処理を行う。図4に示したのは、最も基本的な処理サーバの振分け方法である。具体的には、各処理サーバ10又は管理サーバ20は、各Mapデータの主キーの値に対し、一意なハッシュ値を公知の計算方法により計算し、そのハッシュ値を処理サーバ数図4では3で割った剰余0~2を求める。この場合、予め、各処理サーバ10に関し、対応する剰余値を、図4の下段に示す番号0~2で決めておくことで、各Mapデータを処理する処理サーバ10を決定することができる。なお、同一の値の主キーに対しては常に同一のハッシュ値が得られるため、同一の主キーの値を持ったMapデータ群は1つの処理サーバに集められる。また、ハッシュ値が偏りのない前提であれば、各Mapデータの処理を各サーバに偏りなく分散させることができる。なお、上述したハッシュ値から一意に処理サーバを決定する方法は、最も単純な例である。したがって、例えば、ハッシュ値に加えて、その時点の処理サーバの負荷を考慮に入れるなどして、より高度に処理サーバを決定することとしてもよい。なお、一般には処理サーバ10の数より主キーの値の種類の方が多くなるので、各処理サーバ10は複数のMapデータグループを処理する。各処理サーバ10は、マルチプロセスまたはマルチスレッドにより、同時に複数のMapデータグループの処理を行う。各処理サーバ10Reduce処理部14は、集められたMapデータの主キーの値を参照する。そして、各処理サーバ10Reduce処理部14は、同一の主キーの値を持ったMapデータMapデータ群を1つのグループとし、そのグループに対してReduce処理を行う図4の下段における主キー=CCCのグループ参照。なお、管理サーバ20処理管理部22は、各処理サーバ10の状態を把握しているため、各処理サーバ10におけるMap処理やReduce処理が完了したかどうかについても把握している。このため、管理サーバ20は、Reduce処理の結果を受けて、再度各処理サーバ10にMap処理を実行させるなどすることで、MapReduce処理を繰り返し行うことができる。次に、本実施形態の分散処理システム100における、複数キー集約処理の詳細について、説明する。この場合の複数キー集約処理とは、図23aに示すような一連の業務フローを示すキーの種類キー種が複数存在する場合の集約処理を意味する。図5は、複数キー集約処理における具体的な処理の流れを示すフローチャートである。この図5の処理は、管理サーバ20の処理管理部22が、処理対象の元データを分散ファイルシステム40にアップロードした後に開始される。図5の複数キー集約処理では、Map処理とReduce処理とが必要回数繰り返される。このMapReduce処理の繰り返しによって、データのグループ化が進展し、最後に複数キーで紐付いたデータを正しくグループ化した結果を得ることができる。なお、以下においては、1回のMapReduce処理を集約と呼ぶものとする。図5の処理では、まず、ステップS10において、管理サーバ20のキー数増加フラグ管理部24が、キー数増加フラグを0に初期化する。次いで、ステップS12では、処理サーバ10のMap処理部12が、元データからMapデータを生成するMap処理を実行する。各処理サーバ10のMap処理の起動は、Hadoopの機能で実行される。各サーバのMap処理では、分散ファイルシステム40にアップロードされた処理対象データのうち、そのサーバに格納されている元データ例えば図6aに対し、図6b、図6cに示すような構造のMapデータを生成する処理を行う。なお、一般的にHadoopでは、分散ファイルシステム40にアップロードされたファイルは、冗長性のために同じ内容のデータを複数のサーバにコピーして保持する。しかしながら、ここでは、説明の単純化のため、同じ内容のデータは1箇所にのみ存在するものとして説明する。ここで、図6aのデータは、複数のキーによって関連付けられたデータであるので、各レコードは必ず主キーを持ち、また、0~複数個の関連キーを持っている。1つのレコードの中でどの項目が主キーで、どの項目が関連キーであるかは自明であることとし、あらかじめ定義しておくこととする。例えば、複数個のキーの中で辞書式に最初のキーとなるキーX→Y→Zの順、かつ数値の小さい順に先頭となるキーが主キーであるものとする。この定義は管理サーバ20上に存在し、Map処理の起動の際のパラメータとして、各処理サーバ10に通知される。Mapデータは、主キーと値を有し、値にはキーリストとイベントリストが格納される。ここでイベントとは入力データそのものを指す。Map処理部12では、Map処理に際して、処理対象データの1レコードを読込み、その主キーと関連キーの項目名値をリストアップし、キーリストを作成する。図6aは、伝票明細詳細テーブルの1レコードを処理する場合の例で、伝票明細詳細番号Yが主キーで、その値は0101である。また、関連キーは伝票明細番号Zで、値は010101である。よって、キーリストは2つのキーから構成されることになる。また、Map処理部12は、キーリストの要素数分キー数分のMapデータを作成する。図6aの例ではキーリストに含まれるキー数は、2個であるので、生成するMapデータは図6b、図6cに示す2個になる。生成した各Mapデータの主キーには、キーリストの各要素を用いる。よって、1つ目のMapデータの主キーは伝票明細詳細番号Yの0101になり、2つ目のMapデータの主キーは伝票明細番号Zの010101になる。また、Map処理部12は、作成したMapデータのうち、キーの値を辞書式に評価し、先頭となるMapデータのイベントリストにのみ、入力レコードの内容データ内容を1要素として格納する。初回の集約時には、イベントリストに格納されるのは最大で1個のみとなる。キー値が先頭以外のMapデータに関しては、イベントリストは空にする図6c参照。なお、元の入力データに、その後の処理では用いない無駄なデータが含まれている場合、どの項目が不要かを定義しておくことで、イベントリスト格納の際にフィルタリングをすることが可能である。ここで、図7には、本実施形態における複数の処理対象データの初期状態の一例が示されている。この図7の例では、太線矩形枠がイベントデータを示し、破線矩形枠がキーリストを示している。また、1つのイベントが入力データ1レコードに対応し、各イベント下部のキーリストは、そのレコードに含まれる主キーおよび関連キーを示している。本実施形態ではキーリストにおいて主キーと関連キーの区別をする必要はないが、イベントの判別のため、入力データの主キーの値を元キーとして表記している。また、図7において各データを結ぶ破線は、関連キーと主キーの関係を示している。入力データは3層からなり、1番下の層から2番目の層、2番目から最上位の層へ関連が設定されている。図7では、最終的に2つのグループ一点鎖線で分割されたグループにグループ化されるのが正解である。また、図7では、左側のグループのZ=010101等において、下層の1種類のキーが、上層の複数のキーに関連付いているケースが含まれている。このため、単純に最下層から上の層へ向かって集約を繰り返す方法で集約させる方法は適用できない。この図7に示す各処理対象のデータに関しても、Map処理部12によって、上述したようなMap処理が行われる。例えば、元キーがY=0101で、関連キーがX=01,Y=0101のデータの場合、図8a、図8bに示すような2つのMapデータが生成されることになる。これら2つのMapデータは、図9において、矢印→で示すMapデータである。なお、図7のその他のデータについても同様にMap処理が行われ、図9に示すような多数のMapデータが生成されることになる。なお、図9において、各Mapデータの上部に記載されているキーは、主キーを意味する。Map処理完了後、生成されたMapデータは図4で説明したように各処理サーバに再分配される。Map処理の完了検知、Mapデータの振分け、Reduce処理の起動はHadoopの機能で実行される。図5に戻り、ステップS14では、Reduce処理部14が、主キー毎にデータ群を集約し、Reduce処理を実行する。このステップS14では、具体的には、各処理サーバ10で並列的に図10のフローチャートに沿った処理が実行される。なお、Reduce処理は、主キーの値が一致するMapデータ群に対して実行される。ここでは、その処理単位を集約グループまたはグループと呼ぶことにする。図10の処理では、ステップS30において、Reduce処理部14が、各グループ主キーがX=01~Z=010106のイベントリスト、キーリスト、及び最大入力キー数を初期化する。この場合、最大入力キー数の初期値は0である。なお、図11は、図9のMapデータをグループ毎に纏めて示す図である。これ以降、ステップS32からステップS40においては、各Mapデータを対象とするループ処理が行われる。ステップS32では、Reduce処理部14が、処理対象のMapデータを取得する。この場合、各処理サーバ10のReduce処理部14は、図11で示される集約グループ主キーの値が一致するデータ群の中から1つのMapデータを取得することになる。次いで、ステップS34では、Reduce処理部14が、Mapデータのキーリストの要素数キー数が、これまでに取得した同一グループ内の最大入力キー数より大きければ、そのキー数を最大入力キー数に設定する。すなわち、Reduce処理部14は、取得したMapデータ群に対し、そのMapデータのキーリストの要素数キー数をカウントし、グループの最大入力キー数より大きければ、グループの最大入力キー数をその値で更新する。したがって、集約グループの全てのMapデータに対してステップS34を行った場合には、最終的に、グループの最大入力キー数は、入力されたMapデータ群のキーリストのうち、最大のもののキー数と一致することになる。例えば、図11の主キーがX=01のグループでは、最大入力キー数は、2つのキーリストのうち最大のキー数である2となる。次いで、ステップS36では、Reduce処理部14が、Mapデータのキーリストの内容をグループのキーリスト図12の太破線枠参照にコピーする。ただし、グループのキーリストに同じキーがすでに含まれている場合、そのキー重複するキーについては、コピーせず、破棄するものとする。したがって、集約グループの全てのMapデータに対してステップS36を行った場合には、最終的に、各キーリストをマージ集計したグループのキーリスト図12の太破線枠が生成されることになる。次いで、ステップS38では、Reduce処理部14が、Mapデータにイベントが含まれていた場合に、そのイベントをイベントリストに追加コピーする。イベントに関しては、同一の内容のものが複数存在することは無い仮に同一の内容だったとしても別のレコードに起因する別データである。したがって、Reduce処理部14は、内容のチェックを特に行うことなく、イベントリストにイベントをコピーすることができる。次いで、ステップS40では、Reduce処理部14が、未処理のMapデータが存在するか否かを判断する。ここでの判断が肯定された場合には、ステップS32に戻る。一方、ステップS40の判断が否定された場合には、ステップS42に移行する。ステップS40の判断が否定された段階では、全てのMapデータの処理が終了しており、各グループの最大入力キー数と、各グループのマージしたキーリストの要素数キー数とが求められている。なお、図12において、各グループの右上に記載されている数値a→bは、aが各グループの最大入力キー数を意味し、bが各グループのマージしたキーリストの要素数キー数を意味する。ステップS40の判断が否定されてステップS42に移行すると、Reduce処理部14は、グループのマージしたキーリストのキー数bが、最大入力キー数aより大きいか否かを判断する。なお、この比較では、最大入力キー数とマージしたキーリストの要素数キー数が一致するか、マージしたキーリストの要素数キー数の方が大きくなるかのいずれかになる。ステップS42の判断が肯定された場合マージしたキーリストのキー数が、最大入力キー数より大きい場合には、ステップS44に移行する。なお、図12では、主キーがX=03,05、Y=0101,0102,0103,0104,0105、Z=010101のグループのいずれかの処理の場合にステップS42の判断が肯定される。このように、マージしたキーリストのキー数の方が多い場合、集約によって新たなキー間の関連が判明したことを意味するので、新しいキー間の関連を利用した再度の集約が必要になる。したがって、マージしたキーリストのキー数の方が多かった場合には、ステップS44において、Reduce処理部14が、管理サーバ20に通知し、キー数増加フラグ管理部24が、キー数増加フラグを1に設定する。キー数増加フラグが1に設定された場合、管理サーバ20の処理管理部22が必ず再度の集約を実行するので、処理サーバ10から再集約を指示したのと同じ効果になる。次いで、ステップS46では、Reduce処理部14は、a<bのグループについて、キーリストの要素数キー数分のMapデータを作成する。ここで、各Mapデータのキーは、マージされたキーリストに含まれる各キーになる。また、各Mapデータのキーリストには、グループのキーリストをそのまま格納する。また、Mapデータのうち、キーの値が辞書式に先頭になるMapデータX→Y→Zの順、かつ数値の小さい順に先頭となるMapデータについてのみ、イベントリストにグループのイベントリストをそのまま格納する。すなわち、Reduce処理部12は、マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを主キーとするマップデータを特定し、当該特定されたマップデータのイベントリストにのみデータを関連付けるそして、ステップS48では、Reduce処理部14が、Mapデータ群の中間生成データとして、ステップS46で作成されたMapデータを、分散ファイルシステム40上の中間ファイルに出力する。図13は、図10の全処理が終了した直後1回目の集約処理が終了した直後の状態を示す図である。この図13では、一点鎖線で囲まれたMapデータのいずれかが中間ファイルに出力されることになる。なお、この処理は、マージしたキーリストにおいて新たに関連が確定したキーを主キーとするMapデータのグループに対して、マージしたキーリストをコピー配布する処理であるといえる。その後は、図10の全処理を終了し、図5のステップS16に移行する。なお、出力したMapデータは、再度集約が実行された際、Map処理によって中間ファイルからMapデータとして復元され、次のReduce処理でキー値に対応した処理サーバ10に再配布される。従って、2回目以降の集約におけるMap処理S12は、入力データファイルからMapデータを生成する初回集約のMap処理S12と異なり、中間ファイルにシリアライズされたMapデータをオブジェクトとして復元するだけの処理になる。一方、図10のステップS42の判断が否定された場合には、ステップS50に移行する。ステップS50では、Reduce処理部14が、イベントリストにイベントが存在するか否かを判断する。ここでの判断が肯定された場合には、ステップS52に移行する。なお、ステップS52に移行するのは、図12のX=01,02,04のグループのいずれかを処理している場合のみである。ステップS52では、キーリストのうち辞書的に先頭となるキーを主キーとして、単一のMapデータを生成する。具体的には、Mapデータを一つだけ生成し、グループのキーリストのうち、辞書式に先頭となる値をキーとし、キーリストにはグループのキーリストをそのまま格納し、イベントリストにはグループのイベントリストをそのまま格納する。そして、ステップS48に移行すると、Reduce処理部14は、Mapデータ群の中間生成データとして、ステップS52で生成したMapデータを中間ファイルに出力する。なお、ここで複数のMapデータを生成しないのは、キーリストが増えない場合はキー間の新たな関係が判明しておらず、情報が増えないためにすべての集約グループにキーリストを送付しても無駄になるためである。なお、ステップS52にて生成され、ステップS48にて中間ファイルに出力されるMapデータは、図13において一点鎖線で囲まれていないMapデータのいずれかである。その後は、図10の全処理を終了し、図5のステップS16に移行する。これに対し、図10のステップS50の判断が否定された場合、すなわち、イベントリストにイベントが存在しない場合には、その集約グループでは新たなキーの関連付けは生じなかったことになる。この場合、中間生成データとして何も出力することなくすなわち、グループを削除して、図10の全処理を終了し、図5のステップS16に移行する。ここでステップS50の判断が否定された場合に中間生成データとして何も出力しないこととしているのは、キー数が増えない場合、もしそのキー群に関連したイベントが存在するのであれば、そのイベントが処理されているグループにも同内容のキーリストが送られているはずであるので、そのグループでキーリストを保持すれば良いためである。換言すれば、イベントが存在しないグループではキーリストを捨てても情報が失われることはないためである。図5に戻り、各処理サーバ10による処理ステップS12、S14の処理が完了した後は、図5のステップS16に移行する。ステップS16では、キー数増加フラグ管理部24が、キー数増加フラグをチェックし、当該フラグが1か否かの判断をする。ここでの判断が肯定された場合、すなわち、キー数増加カウンタが1の場合、キーの集約が完了していないため、ステップS10に戻り、処理管理部22の指示の下、各処理サーバ10が再度同様のMapReduce処理を実行する。例えば、2回目のステップS12、S14の処理の場合2回目の集約の場合、図14に示すように、図13のMapデータが集約される。なお、図15は、図14に最大入力キー数a及びマージしたキーリストのキー数bを明示した図である。この図15に示すように、2回目の集約処理では、主キーがX=03,05、Y=0101,0102,0103,0104,0105、Z=010101の8グループが、マージしたキーリストのキー数bが最大入力キー数aより大きくなっている。したがって、これらのグループに関しては、ステップS48において、図16,図17で一点鎖線で囲んで示すMapデータが生成され、中間ファイルとして出力される。一方、主キーがX=01,02,04の3グループでは、ステップS42の判断が否定され、ステップS50の判断が肯定される。このため、ステップS52において、図16で一点鎖線で囲まれていない3つのMapデータが生成され、中間ファイルとして出力される。また、その他の主キーのグループについては、中間ファイルとして出力されない削除される。この2回目の集約においても、ステップS42の判断が肯定されることがあるため、キー数増加フラグは1に設定される。したがって、3回目の集約も行われることになるステップS16が肯定される。3回目の集約では、図16、図17のMapデータが、図18に示すように集約される。この場合、図18に示すように、主キーがX=03、Y=0101,0102,0103、Z=010101の5グループが、キーリストの要素数が最大入力キー数より多くなっているステップS42の判断が肯定される。また、主キーがX=01,05の2グループでは、ステップS42の判断が否定され、ステップS50の判断が肯定される。次いで、4回目の集約では、上述したのと同様に、ステップS44,S46、S48、S52が実行される。これにより、図19に示すように、Mapデータが集約される。次いで、5回目の集約では、図19に示すように、ステップS42の判断が肯定されるグループa<bのグループが存在しない。一方、ステップS50の判断が肯定されるグループは、主キーがX=01,05の2グループである。したがって、5回目の集約では、図20に示すように、2つのグループに集約されることになる。この5回目の集約では、上述のようにステップS42が肯定されないため、キー数増加フラグは0である。このため、図5のステップS16の判断が否定される。キー数増加フラグが0の場合、関連のあるキー群の集約が完了したことを意味するので、キー集約のループ処理ステップS10~S16は完了し、図5のステップS18に移行することになる。ステップS18では、Map処理部12が、最終集約処理のMap処理を実行する。具体的には、最後集約処理として、Map処理部12は、ループの最後のReduce処理において中間ファイルに出力したMapデータ図21aを入力とし、最終のMap処理を実行する。このMap処理では、Map処理部12は、中間ファイルのMapデータを入力とし、各Mapデータのキーリストをキーとし、イベントリストを値とした新たなMapデータを作成し、また、元のMapデータを破棄する。なお、Mapデータのキーリストをキーとするとは、キーリストの各キーを羅列して新たなキーを作成することを意味する。すなわち、図21aに示すようなMapデータからは、図21bに示すようなキー主キーで新たなMapデータが生成される。次いで、ステップS20では、Reduce処理部14が、ステップS18のMap処理で作成された新たなMapデータを対象として、最終集約処理のReduce処理を実行する。Reduce処理では、集めたMapデータのイベントリストから全イベントデータを抽出する。これらのイベントデータからイベントの種類やタイムスタンプの情報を抽出し、イベントを時系列に並べれば、各集約グループにつき1つずつのフローインスタンスが完成する。なお、最終集約で関連するイベントを集約するので、ループ内部の集約においては、イベントの移動は必須ではない。しかし、ループの内部でイベントを移動させ、段階的にイベントを集めた方が、イベントの統計処理等をReduce処理の内部で段階的に行わせることなどが可能になり、メリットが大きい。以上の処理により、図5の全処理が終了すると、図21bのように、複数キーのデータを正しく集計することができる。なお、ステップS18、S20の処理は、図20のように、ステップS18以前の処理で全てのイベントデータを正しく集計できるような場合には行わなくてもよい。ただし、実際には、ステップS18、S20の処理を行わないと全てのデータを正しく集計できない可能性もあるので、本実施形態では、ステップS18、S20の処理を常に行うこととしている。以上詳細に説明したように、本実施形態によると、複数のキー種で分類された複数のデータを集約する処理サーバ10が、データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである主キーを関連付けたMapデータを生成して分散ファイルシステム40に記憶し、分散ファイルシステム40を参照して、同一の主キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数最大入力キー数と、取得した全てのキーリストをマージした合計キー数と、を比較し、比較の結果、合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを主キーとし、キーリストとしてマージしたキーリストを関連付けた新たなMapデータを、マージしたキーリストに含まれるキーの数分だけ生成して分散ファイルシステム40に記憶する。これにより、マージしたキーリストを、当該マージしたキーリストに含まれるキー関連することが確定した複数のキーそれぞれを主キーとするMapデータのグループにコピー配布することができるステップS46。このようにすることで、RDB関係データベースを用いなくとも、Mapデータ特にキーリストを参照するのみで、関連するキーを集約することができる。したがって、複数のキー種で分類された複数のデータを集約する際に、性能スケーラビリティ改善効果を得ることが可能となる。また、新たに生成されるMapデータが、各処理サーバにおいてReduce処理されるという処理が繰り返されるので、データ集約の漏れをなくすことができる。また、本実施形態では、同一の主キーに関連付けられたキーリストのキー数が増える場合に、マージしたキーリストに含まれるキーそれぞれを主キーとして新たなMapデータが生成されるので、同時に分散実行される集約処理数を大きくすることができる。これにより、少ない回数のMapReduce処理の繰り返しで、関連するキーを集約することができる。また、本実施形態によると、Mapデータは、データの内容のリストであるイベントリストを含んでおり、取得したキーリストに含まれるキー数の中で最大のキー数最大入力キー数と、取得した全てのキーリストをマージした合計キー数と、を比較した結果、合計キー数の方が大きかった場合に、マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを主キーとするMapデータを特定し、当該特定されたMapデータのイベントリストにのみデータを関連付ける。これにより、関連するキーの集約及びイベントデータの集約を適切に行うことができるので、集約を少ない回数のMapReduce処理の繰り返しで行うことができる。また、本実施形態によると、合計キー数の方が最大入力キー数よりも大きくなかった場合合計キー数と最大入力キー数が一致した場合であって、取得したイベントリストにデータが含まれる場合には、マージしたキーリストのうち辞書式に先頭となるキーを主キーとし、取得したイベントリストをマージしたイベントリスト及びマージしたキーリストが関連付けられた新たなマップデータを生成する。これにより、本実施形態では、データイベントに関連しないMapデータの必要以上の集約処理の発生を抑制することができる。また、本実施形態によると、分散ファイルシステム40に記憶されている全ての主キーに関連付けられたグループのキーリストにおいて、合計キー数の方が最大入力キー数よりも大きくなかった場合合計キー数と最大入力キー数が一致した場合に、分散ファイルシステム40に記憶されているキーリストに基づいて一意の値を作成し、当該値を主キーとするMapデータを生成する。これにより、全グループにおいて合計キー数が最大入力キー数よりも大きくなくなるまでの間に全てのデータを正しく集約できなかった場合でも、一意の値を主キーとしてMapデータを生成することで、正しく集約できなかったデータを正しく集約することができる。ここで、本出願の発明者及び出願人は、特願2011-050745号以下、先願と呼ぶにおいて、本願と同一の課題を解決するための発明について出願している。本実施形態では、同時に分散実行される集約処理数を大きくすることで、上述したように集約の回数を極力減らすことができる。このため、本実施形態では、特に、多数の処理サーバ10から構成される処理システムを、あるデータを対象にした単一の集約処理で占有できる場合、あるいは、複数の集約処理を行う場合でも処理システムの性能に余裕がある場合に、最短の処理時間で処理を終えることが可能である。これに対し、先願では、集約の回数は本実施形態に比べて多少多いものの、1回の集約における処理量は少ないので、ある処理システムにおいて複数のデータを対象にした集約処理を同時に実行する場合で、かつ処理システムの性能に余裕が無い場合に、最高のスループット性能を得ることが可能である。すなわち、本実施形態と先願とは、処理システムの規模や、処理システムに対する利用者の数などの条件に応じて適宜使い分けることができる。なお、上記実施形態では、管理サーバ20を設ける場合について説明したが、これに限らず、管理サーバ20と同様の処理を処理サーバ10のいずれかが行うこととしてもよい。なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVDDigitalVersatileDisc、CD-ROMCompactDiscReadOnlyMemoryなどの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。なお、以上の説明に関して更に以下の付記を開示する。付記1複数のキー種で分類された複数のデータを集約するコンピュータに、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶し、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較し、前記比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する、処理を実行させることを特徴とする処理プログラム。付記2前記マップデータは、前記データの内容のリストであるイベントリストを含み、前記新たなマップデータを生成して記憶する処理では、前記比較の結果、前記合計キー数の方が大きかった場合に、前記マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを集約キーとするマップデータを特定し、当該特定されたマップデータのイベントリストにのみデータを関連付けることを特徴とする付記1に記載の処理プログラム。付記3前記比較する処理における比較の結果、前記合計キー数の方が大きくなかった場合であって、前記取得したイベントリストにデータが含まれる場合には、前記マージしたキーリストのうち辞書式に先頭となるキーを集約キーとし、前記取得したイベントリストをマージしたイベントリスト及び前記マージしたキーリストが関連付けられた新たなマップデータを生成し、前記記憶部に記憶することを特徴とする付記1又は2に記載の処理プログラム。付記4前記比較する処理における比較の結果、前記記憶部に記憶されている全ての集約キーに関連付けられたキーリストにおいて、前記合計キー数の方が大きくなかった場合に、前記記憶部に記憶されているキーリストに基づいて一意の値を作成し、当該値を集約キーとするマップデータを生成する処理、を前記コンピュータに実行させることを特徴とする付記1~3のいずれかに記載の処理プログラム。付記5複数のキー種で分類された複数のデータを集約するコンピュータが、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して記憶部に記憶する工程と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する工程と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する工程と、を実行することを特徴とする処理方法。付記6前記マップデータは、前記データの内容のリストであるイベントリストを含み、前記新たなマップデータを生成して記憶する工程では、前記比較の結果、前記合計キー数の方が大きかった場合に、前記マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを集約キーとするマップデータを特定し、当該特定されたマップデータのイベントリストにのみデータを関連付けることを特徴とする付記5に記載の処理方法。付記7前記比較する工程における比較の結果、前記合計キー数の方が大きくなかった場合であって、前記取得したイベントリストにデータが含まれる場合には、前記マージしたキーリストのうち辞書式に先頭となるキーを集約キーとし、前記取得したイベントリストをマージしたイベントリスト及び前記マージしたキーリストが関連付けられた新たなマップデータを生成し、前記記憶部に記憶する工程を、前記コンピュータが実行することを特徴とする付記5又は6に記載の処理方法。付記8前記比較する処理における比較の結果、前記記憶部に記憶されている全ての集約キーに関連付けられたキーリストにおいて、前記合計キー数の方が大きくなかった場合に、前記記憶部に記憶されているキーリストに基づいて一意の値を作成し、当該値を集約キーとするマップデータを生成する工程、を前記コンピュータが実行することを特徴とする付記5~7のいずれかに記載の処理方法。付記9複数のキー種で分類された複数のデータを集約する処理装置であって、前記複数のデータ及び当該複数のデータから生成されるマップデータを記憶する記憶部と、前記データ毎に関連するキーを集めたリストであるキーリスト、及び当該キーのうちの1つのキーである集約キーを関連付けたマップデータを生成して前記記憶部に記憶する第1生成記憶部と、前記記憶部を参照して、同一の集約キーに関連付けられたマップデータのグループのキーリストを取得し、該取得したキーリストに含まれるキー数の中で最大のキー数と、取得した全てのキーリストをマージした合計キー数と、を比較する比較部と、前記比較する工程における比較の結果、前記合計キー数の方が大きかった場合に、当該マージしたキーリストに含まれるキーそれぞれを集約キーとし、キーリストとして前記マージしたキーリストを関連付けた新たなマップデータを、前記マージしたキーリストに含まれるキーの数分だけ生成して前記記憶部に記憶する第2生成記憶部と、を備える処理装置。付記10前記マップデータは、前記データの内容のリストであるイベントリストを含み、前記第2生成記憶部では、前記比較部による比較の結果、前記合計キー数の方が大きかった場合に、前記マージしたキーリストに含まれるキーのうち辞書式に先頭となるキーを集約キーとするマップデータを特定し、当該特定されたマップデータのイベントリストにのみデータを関連付けることを特徴とする付記9に記載の処理装置。付記11前記比較部による比較の結果、前記合計キー数の方が大きくなかった場合であって、前記取得したイベントリストにデータが含まれる場合に、前記マージしたキーリストのうち辞書式に先頭となるキーを集約キーとし、前記取得したイベントリストをマージしたイベントリスト及び前記マージしたキーリストが関連付けられた新たなマップデータを生成し、前記記憶部に記憶する第3生成記憶部を、備える付記9又は10に記載の処理装置。付記12前記比較部による比較の結果、前記記憶部に記憶されている全ての集約キーに関連付けられたキーリストにおいて、前記合計キー数の方が大きくなかった場合に、前記記憶部に記憶されているキーリストに基づいて一意の値を作成し、当該値を集約キーとするマップデータを生成する生成部を備える付記9~11のいずれかに記載の処理装置。"