"複数のキー種を用いて分類された複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を実行する処理装置であって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された、前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶する関連付け部と、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、該取得した未使用キーのうちの1つを次の集約キーとして決定し、前記取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する集約部と、を備え、前記集約キーの更新ができなくなるまで、前記関連付け部と前記集約部による処理を繰り返すことを特徴とする処理装置。前記集約部は、前記更新を行う前の前記集約キーを集約キーとし、取得した前記未使用キーのすべてを未使用キーとする、データとしての実体のないデータを新たな処理対象のデータとして生成して前記記憶部に記憶することを特徴とする請求項1に記載の処理装置。前記関連付け部は、前記処理対象のデータに、既に集約に用いた使用済みキーを関連付け、前記集約部は、前記集約キーの更新ができなくなったデータに対応付けて前記記憶部に記憶された集約キーを、前記データに前記使用済みキーとして関連付けられているキーのうち、親子関係の最上位にあるキー種のキーで更新し、当該データに対応付けて前記集約キーの更新を禁止する情報を前記記憶部に記憶し、前記記憶部に格納された前記複数のデータのうち、同一の集約キーに関連付けられ、且つ、前記集約キーの更新を禁止する情報が関連付けられていないデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、前記取得した未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに対応付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに対応付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新することを特徴とする請求項1又は2に記載の処理装置。請求項1~3のいずれか一項に記載の処理装置を複数備え、複数の処理対象のデータを前記複数の処理装置に分散して、当該複数の処理装置において並行処理を実行することを特徴とする分散処理システム。複数のキー種を用いて複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を、コンピュータに実行させる処理プログラムであって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと、未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶し、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、取得した前記未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを、前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを、取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する処理を、前記未使用キーの更新ができなくなるまで、コンピュータに繰り返し実行させることを特徴とする処理プログラム。しかしながら、図34aのように、一連の業務フローを示すキーが複数図34aでは3種存在する場合もあり得る。なお、図34bは、図34aのデータを集約した例を示している。このような場合には、単純にはグルーピングを行うことができない。複数のキー種を用いて関連のあるデータ群を集約する処理以下、複数キー集約処理と呼ぶでは、どのキーの組み合わせが一連のデータ群を示すのかが、データ全体を見ないと完全には確定しないからである。例えば、図34aの場合、伝票番号=001で集約しようとすると、伝票明細詳細テーブルのデータを集約できない。一方、伝票明細詳細番号=001001001で集約する場合、伝票テーブルのデータを集約できない。この場合、処理の進展に応じてキー値の組み合わせの情報を最新化しながら集約処理を進めるような工夫が必要であり、また、最新化する処理が不十分な場合には、データの集約漏れが発生する場合がある。これに対し、キー種間の関連を管理する表をRDB関係データベースRelationalDatabaseなどに作成することも考えられる。しかるに、分散並列処理する各処理マシンが共通に参照更新する箇所があると、分散処理の性能スケーラビリティが劣化するおそれがある。そこで本件は上記の課題に鑑みてなされたものであり、性能スケーラビリティの向上及びデータ集約漏れを防止することが可能な処理装置、分散処理システム、及び処理プログラムを提供することを目的とする。本明細書に記載の処理装置は、複数のキー種を用いて分類された複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を実行する処理装置であって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された、前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶する関連付け部と、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、該取得した未使用キーのうちの1つを次の集約キーとして決定し、前記取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する集約部と、を備え、前記集約キーの更新ができなくなるまで、前記関連付け部と前記集約部による処理を繰り返す処理装置である。本明細書に記載の分散処理システムは、本明細書に記載の処理装置を複数備え、複数の処理対象のデータを前記複数の処理装置に分散して、当該複数の処理装置において並行処理を実行する分散処理システムである。本明細書に記載の処理プログラムは、複数のキー種を用いて複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を、コンピュータに実行させる処理プログラムであって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと、未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶し、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、取得した前記未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを、前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを、取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する処理を、前記未使用キーの更新ができなくなるまで、コンピュータに繰り返し実行させる処理プログラムである。本明細書に記載の処理装置、分散処理システム、及び処理プログラムは、性能スケーラビリティの向上、及びデータ集約漏れを防止することができるという効果を奏する。以下、一実施形態について、図1~図32に基づいて詳細に説明する。図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が実行することにより、図3の各部の機能が実現される。図1に戻り、各処理サーバ10のディスクHDD96は、仮想的に1つのディスクに見える分散ファイルシステム40に組み込まれている。なお、図示の便宜上、図1では、HDD96を各処理サーバ10の外側に出して示している。なお、図1の構成図は、MapReduceのオープンソース実装であるHadoopを用いる場合の一例を示すものであり、管理サーバ20や分散ファイルシステム40は、分散処理システム100内に必ずしも設けなくてもよい。図3には、処理サーバ10の機能ブロック図が示されている。処理サーバ10は、図3に示すように、関連付け部としてのMap処理部12、及び集約部としてのReduce処理部14、としての機能を有する。また、HDD96により、キー一覧リスト16を格納する領域と、データ一覧リスト18を格納する領域とが用意されている。Map処理部12は、分散ファイルシステム40に格納されているデータを用いて、後述するMap処理を実行する。Reduce処理部14は、Map処理部12においてMap処理されたデータを用いて、後述するReduce処理を行う。キー一覧リスト16は、図11bに示すようなリストである。データ一覧リスト18は、図11cに示すようなリストである。次に、MapReduce処理の基本的な処理内容について、図4に基づいて、説明する。MapReduce処理では、分散ファイルシステム40上の処理対象のデータを、キーと値からなるMapデータに分割する処理Map処理と、キーの値に応じてMapデータを纏める処理Reduce処理とを、各処理サーバ10において分散並列的に行う。例えば、各処理サーバ10において分散並列的に行われたMap処理によって、図4の上段に示すようなMapデータが生成されたとする。この場合、各処理サーバ10又は管理サーバ20は、各Mapデータのキーの値に対し、一意なハッシュ値を公知の計算方法により計算し、そのハッシュ値を処理サーバ数図4では3で割った剰余0~2を求める。この場合、予め、各処理サーバ10に関し、対応する剰余値を、図4の下段に示す番号0~2で決めておくことで、各Mapデータを処理する処理サーバ10を決定することができる。なお、同一の値のキーに対しては常に同一のハッシュ値が得られるため、同一のキー値を持ったMapデータ群は1つの処理サーバに集められる。また、ハッシュ値が偏りのない前提であれば、各Mapデータの処理を各サーバに偏りなく分散させることができる。なお、上述したハッシュ値から一意に処理サーバを決定する方法は、最も単純な例である。したがって、例えば、ハッシュ値に加えて、その時点の処理サーバの負荷を考慮に入れるなどして、より高度に処理サーバを決定することとしてもよい。各処理サーバ10Reduce処理部14は、集められたMapデータの集約キー以下、単にキーとも呼ぶの値を参照する。そして、各処理サーバ10Reduce処理部14は、同一のキー値を持ったMapデータMapデータ群を1つのグループとし、そのグループに対してReduce処理を行う図4の下段におけるキー=CCCのグループ参照。なお、管理サーバ20は、各処理サーバ10の状態を把握しているため、各処理サーバ10におけるMap処理やReduce処理が完了したかどうかについても把握している。このため、管理サーバ20は、Reduce処理の結果を受けて、再度各処理サーバ10にMap処理を実行させるなどすることで、MapReduce処理を繰り返し行うことができる。次に、本実施形態の分散処理システム100における、複数キー集約処理の詳細について、説明する。なお、単一のキーでの集約であれば、上述したMapReduceの基本的な処理を行うことで実現できる図33参照。しかし、複数のキーを用いた集約の場合、MapReduce処理を複数回繰り返してデータを集約する必要がある。前述の通り、同じ集約キーキーを持ったMapデータは、同じサーバ同じグループへ集約される。このため、本実施形態では、キー値を変更しながら、複数回のMapReduce処理を繰り返すことで、段階的にデータを集約するアプローチを採用する。なお、キー値を変更した場合には、ハッシュ値も変わるので、キー値変更後のデータは、別の処理サーバで処理される可能性もある。図5は、複数キー集約処理における具体的な処理の流れを示すフローチャートである。図5の複数キー集約処理では、Map処理とReduce処理とが必要回数繰り返される。図5の処理では、まず、ステップS10において、各処理サーバ10のReduce処理部14が、繰り返し制御用のカウンタとして、キー変更カウンタを用意し、これを0に初期化する。なお、キー変更カウンタは、各処理サーバ10が更新することができる。各処理サーバ10では、Reduce処理が終わったことを契機にキー変更カウンタを更新する。次いで、ステップS12では、各処理サーバ10のMap処理部12が、Map処理を実行する。このステップS12では、Map処理部12が、分散ファイルシステム40上に存在する、入力データやReduce処理結果の中間生成データから、キー集約キーと値の組み合わせであるMapデータ群を生成し、分散ファイルシステム40に記憶する。ここで、図5のステップS12を実行するのが1回目初回である場合には、Map処理部12は、入力データ図6aに示すようなデータの各行の主キー値をキー集約キーとする図6b参照。なお、主キー値がどの値であるかは、あらかじめ定義しておくものとする。図6aでは、主キー値は最左列の値である。また、Map処理部12は、図6bに示すように、値に、行全体の情報とキーの管理情報とを設定して、Mapデータを生成する。なお、Map処理は各行独立に実行可能であるため、行数を処理サーバ10の数で分割して、各処理サーバ10で分散して実行するものとする。ここで、Mapデータのキーの管理情報は、図6bに示すように、最初のキーを保存する元キー、未使用のキーを保存する未使用キー、過去に使用したキーを保存する使用済みキー、キー変更の必要が無いことを示す固定フラグなどである。図7は、集約対象のMapデータの一例を示している。図7に示す例では、データは3階層に分類されており、19個のデータ実体が存在する。最上層ではXが主キーとなっており、01~05までのキー値が存在する。2番目の層ではYが主キーとなっており、0101~0105までのキー値が存在する。なお、2番目の層のデータは、関連キーとしてXも有しているため、最上層のデータと関連付けられている。また、最下層の主キーはZであり、010101~010106までのキー値が存在する。なお、最下層のデータ図6aのデータと同一は、関連キーとしてYを有しているため、2番目の層のデータと関連付けられている。図7の例で特徴的なのは、関連の親子関係が複雑である点である。通常、このような構造のデータでは、一般には親と子の数の関係は1対多である。この点、図7の破線よりも右側のデータはそのような関係になっているが、図7の破線よりも左側では必ずしもそのような関係になっていない。例えばZ=010101のデータはY=0101にもY=0102にも関連している。親と子が常に1対多の関係であれば、下層のキーから順にZ→Y→Xと3回集約すればすべてのグループが正しく集約される。しかしながら、図7のようなケースではその方法では集約漏れするデータが生じるおそれがある。ここで、図7の最下層のデータMapデータの生成方法Map処理方法について、図8a~図8cに基づいて説明する。図8aは、最下層のデータのテーブル元データである。図8aの元データは、管理サーバ20又はいずれかの処理サーバ10のMap処理部12によって、図8bに示すように、処理サーバ数図8bでは、処理サーバ数が2であるものとするに分割される。そして、各処理サーバ10では、分割されたうちの1つのテーブルについて、Map処理を行い、図8cに示すように、Mapデータを生成する。このような処理により生成されるMapデータが、図7の最下層の7つのデータとなる。図5に戻り、次のステップS14では、各処理サーバ10のReduce処理部14が、Reduce処理を実行する。このReduce処理では、まず、管理サーバ20が、同一のキー値を持つMapデータ群を1つの処理サーバ10に集約する。そして、Reduce処理部14は、図9、図10のフローチャートに沿った処理を実行する。ここで、各処理サーバ10に対する入力は、図7で示される構造を有するMapデータの集合であり、キー値が同一のデータ群であるものとする。なお、キー値が同一のデータ群を、以下においては、グループと呼ぶ。また、以下の説明では、図9、図10の処理の説明と併せて、図11aに示すMapデータ特に、図11aにおいて集約キーがZ=010101のデータのReduce処理を例にとり、説明する。図9の処理では、まず、ステップS20において、各処理サーバ10のReduce処理部14が、グループのデータ一覧リスト18図11c参照、及びキー一覧リスト16図11b参照を初期化する。次いで、ステップS22では、Reduce処理部14が、グループの集約キーを使用済みキーとしてキー一覧リスト16へ追加する図11bの最下段参照。次いで、ステップS24では、Reduce処理部14が、処理対象のMapデータ例えば、図11aの1番のデータを取得する。次いで、ステップS26では、Reduce処理部14が、Mapデータをグループのデータ一覧リスト18へコピーする図11cの1番のデータ参照。次いで、ステップS28では、Reduce処理部14が、ステップS26でコピーしたMapデータ中の未使用/使用済みキー値をグループのキー一覧リスト16へコピーする。なお、ここでは、図11bのキー一覧リスト16において、未使用キーの欄にY=0101がコピーされるが、使用済みキーは存在していないため、使用済みキーの欄には何もコピーされない。次いで、ステップS30では、Reduce処理部14が、未処理のMapデータが存在するか否かを判断する。ここでの判断が肯定された場合には、ステップS24に戻り、ステップS24~S28の処理を繰り返す。その結果、ステップS30の判断が否定される段階では、図11cのデータ一覧リスト18に、2番のデータがコピーされるとともに、図11bのキー一覧リスト16に、未使用キーとして、Y=0102がコピーされる。このように、Reduce処理部14は、Mapデータ群から、各データを順次取得1つずつ取得して、データ一覧リスト18及びキー一覧リスト16にデータ、未使用キーや使用済みキーをコピーする。なお、キー一覧リスト16における、未使用キーの欄と使用済みキーの欄は排他的ではなく、未使用キーの欄と使用済みキーの欄に同じキーを格納することもできる。一方、未使用キーの欄の中で重複したキー、あるいは使用済みキーの欄の中で重複したキーがある場合には、1つのみ残して重複するキーを削除してもよい。以上のようにして、ステップS30の判断が否定された場合には、図10のステップS32に移行する。図10のステップS32では、Reduce処理部14が、データ一覧リスト18の中に固定フラグが設定されたデータが存在するか否かを判断する。ここでの判断が否定された場合には、ステップS34に移行する。なお、ステップS32の判断が肯定された場合には、ステップS48このステップについては後述に移行する。ここで、図11cの例では、データ一覧リスト18に、固定フラグが設定されたデータは存在していない全てfalseので、ステップS32の判断は肯定されて、ステップS34に移行する。ステップS34に移行した場合、Reduce処理部14は、キー一覧リスト16の中に未使用のキーが存在するか否かを判断する。図11bの例では、キー一覧リスト16に、未使用のキーが存在しているので、ステップS34の判断は肯定され、ステップS36に移行する。ステップS36に移行した場合、Reduce処理部14は、データ一覧リスト18中のどの元キーとも一致しない未使用キーが存在するか否かを判断する。図11bの例では、キー一覧リスト16に、データ一覧リスト18中のどの元キーとも一致しない未使用キーが2つ存在しているので、ここでの判断は肯定され、ステップS38に移行する。ステップS36の判断が肯定され、ステップS38に移行した場合、Reduce処理部14は、実体を持つ全データのキーを、未使用キーの欄から一つ選択したキーに書き換える。また、Reduce処理部14は、選択したキーを除き、グループのキー一覧リスト16の内容を未使用/使用済みキーに格納する。すなわち、ステップS38では、図12に示すように、Reduce処理部14は、データ一覧リスト18に含まれるMapデータの1番のデータのキーと2番のデータのキーをY=0101に書き換える。また、Reduce処理部14は、キー一覧リスト16の未使用キーからY=0101を除いた結果、すなわちY=0102を各データの未使用キーに格納する。また、キー一覧リスト16の使用済みキーであるZ=010101を各データの使用済みキーに格納する。次いで、ステップS40では、Reduce処理部14が、実体を持たないMapデータが存在しない場合、新たに実体を持たないキーのみのMapデータを1つ生成する。例えば、図12において3番のデータとして示すデータを生成する。この場合、書き換える前のキー=集約キーをキーとし、グループの未使用キー一覧の内容図11bを未使用キーの欄に格納する。図12の3番のデータでは、キーとしてグループの集約キーであるZ=010101を設定し、未使用キーにはグループのキー一覧リスト16の未使用キーであるY=0101とY=0102を設定する。なお、使用済みキーの設定は必要なく、固定フラグはfalseとし、データ本体は空とする。次いで、ステップS46では、Reduce処理部14は、キー変更カウンタを1だけインクリメントする。次いで、ステップS50では、Reduce処理部14が、図1に示す分散ファイルシステム40上の、Mapデータ群の中間ファイルへの出力を行い、その後、図5のステップS16に移行する。なお、ステップS50で出力されるMapデータ群は、図12に示すデータである。図13は、1回目の集約により、同階層で同一のキー値を持つデータ群グループが集約された様子を示した図である。なお、図13に示すように、1回目の集約によって、Z=010101以外の2つのキーY=0101、Y=0103のMapデータも集約されている。この図において、データを示す箱矩形枠の左上に示す値Z=010101等が、各集約グループを示しており、その値の下に隣接して配置された箱の一群がグループのデータを示している。また、箱の内部の未使用キーは、図11bにおけるキー一覧リスト16の未使用キーの欄を示している。更に、箱の内部のキーの矢印の左側はその集約における集約キー、右側は未使用キーの中から一つ選択したキーで、次の集約において集約キーとなる値を示している。なお、図13では、図示及び説明の簡単のため、使用済みキーは表示していない。なお、図12のように、Reduce処理の終盤でキー情報のみのMapデータが生成されている図12のデータ3が、これは再集約2回目以降の集約が実施されたときにのみ意味を持つものなので、図13では図示していない。なお、図15において破線で示されている箱が、1回目の集約で生成されたキー情報のみのMapデータである。なお、図10の処理において、キー一覧リスト16の中に未使用のキーが存在していない場合例えば、図13の最上段のデータ等の場合には、ステップS34の判断が否定される。ステップS34の判断が否定された場合には、Reduce処理部14は、キー変更カウンタを0に維持したまま、ステップS50に移行し、Mapデータ群の中間ファイルへの出力を行った後、図5のステップS16に移行する。図5に戻り、次のステップS16に移行すると、管理サーバ20は、Reduce処理のキー変更カウンタの集計値が1以上か否かを判断する。上記例では、いずれかのグループで集約キーの変更が発生しており、図10のステップS46を経ている。したがって、キー変更カウンタの集計値は1以上となるため、ステップS16の判断は肯定され、ステップS10に戻る。そして、ステップS10~S16の処理再度のMapReduce処理を繰り返す。なお、図10の処理において、データ一覧中のどの元キーとも一致しない未使用キーが存在しない場合には、ステップS36の判断が否定される。この場合、キー値の変更が一巡したとみなせるので、それ以上の変更は無意味となる。したがって、この場合には、ステップS42に移行し、Reduce処理部14が、データ一覧リスト18中の全データに対し、固定フラグを設定する。そして、ステップS44において、Reduce処理部14は、データ一覧中の全データのキーを、使用済みキー一覧の中から、辞書式に判定して先頭となるキー値を変更する。なお、これらステップS42、S44の具体的処理については、後述する。その後は、上記と同様、ステップS46、S50を経て、図5のステップS16に移行する。また、図10のステップS32において、データ一覧リスト18の中に固定フラグが設定されたデータが存在していた場合には、ステップS48に移行する。このステップS48では、Reduce処理部14が、データ一覧中の全データに対し、固定フラグを設定することで、その時点の集約キーをそのまま用いて再集約可能な状態にする。そして、ステップS50において、Mapデータ群の中間ファイルへの出力を行った後、図5のステップS16に移行する。次に、2回目の集約処理について説明する。図14a~図14cには、集約キーがY=0101のMapデータを集約する処理を説明するための図リスト16,18が示されている。図14bのデータ一覧リストのうち1、2番目のデータは、図12の1、2番目のデータと同一である。これに対し、3番目のデータは、図13のY=0101のグループを集約した際に生成されたデータ実体のないデータ図15の符号Daで示す破線の箱参照である。また、これら3つのデータからは、キー一覧リスト16として、図14aのようなリストが得られる。これら、図14aのキー一覧リスト及び図14bのデータ一覧リストを用いて図10の処理を行うと、図14cのような3つのデータを得ることができる。このような2回目の集約処理を行った後の状態が、図15に示されている。図15に示すように、2回目の集約処理の結果、集約キーがY=0101のMapデータ以外のMapデータも集約されていることが分かる。以下、同様に集約処理を繰り返すと、3回目の集約処理の結果は、図16のようになる。また、4回目の集約処理の結果は、図17のようになり、5回目の集約処理の結果は、図18のようになり、6回目の集約処理の結果は、図19のようになる。そして、7回目の集約処理の結果、図20のようになる。図20の状態では全グループに未使用キーが存在しなくなるため全処理サーバ10においてステップS34が否定されるため、キー変更カウンタは0のままとなる。この場合、図5のステップS16の判断が否定され、ステップS18に移行する。そして、管理サーバ20は、ステップS18において集約処理を完了する。本実施形態では、上記のようなMapReduce処理を行うことで、図20に示すように、X=04のグループとX=05の2グループとなる。これにより、複数のMapデータを、図7の状態から正確に集約漏れなく2つのグループに集約できたことになる。比較例ここで、比較例従来法を用いて、図7のデータを集約する場合について説明する。なお、以下の処理は、各処理サーバ10が行うものとする。従来法としては、各データは変更可能なキー、不変の関連キーリストデータにおいて定義されているキー、再集約のフラグを兼ねる変更可能な予約関連キーを有することとする。また、上述した実施形態で用いたデータ実体を持たないキー値のみのデータは用いていない。従来法では、実体のないデータを用いないことを理由に、集約処理を全階層同時に行うことはできないため、キー値の種類毎に下層の方から順に集約する必要が生じる。図21には、元データの主キーをキー、関連キーを関連キーリストに格納し、最下層のキーであるZを集約キーとして1回目の集約を行った結果が示されている。なお、図21及びこれ以降の図面では、各データの識別のため、処理には使用しないIDを示している。図21では、Z=010101のグループのみ、複数の関連キーを含んでいる。このように、グループ内に複数の関連キーが存在する場合、そのグループのデータには予約関連キーが設定される。予約関連キーの値は、そのグループの集約キーとなる。従って、Z=010101のグループではZ=010101が予約関連キーとなる。また、1回目の集約が行われたデータ又はグループのキーは、関連キーに変更される。次いで、2回目の集約では、2番目の層のキーであるYでの集約が行われる。その結果が図22に示されている。ここで、図22に示すように、Y=0101とY=0102のグループには、1回目の集約時に予約関連キーを設定したデータが含まれている。このため、次の3回目の集約では、最上層のキーではなく、予約関連キーで集約が行われる。一方、予約関連キーが設定されていないグループについては、2回目と同じキー値で再度集約が行われる。3回目の集約結果が図23に示されている。予約関連キーでの集約を終えたので、次の集約は最上層のキーであるXでの集約となるが、Z=010101とY=0103のグループには複数のXのキー値が含まれるため、各データに予約関連キーが設定される。以下、上記と同様の処理が繰り返されることにより、4回目の集約処理の結果、図24のようになり、5回目の集約処理の結果、図25のようになり、6回目の集約処理の結果、図26のようになる。図26に示すように、6回目の集約処理が完了した段階では、上記実施形態と同様、データを2つのグループに集約することができる。ここで、複数キー集約処理全体の処理量の概算として、処理対象となるグループ数を用いると、初期状態から集約完了までの累計総グループ数は、本実施形態の場合、61グループ図20参照、比較例の場合、66グループ図26参照となる。すなわち、初期状態から集約完了までの累計総グループ数は、本実施形態のほうが少ないことが分かる。また、前の集約時から変動があったグループの累計は、本実施形態が14であり図20参照、比較例が15である図26参照ので、本実施形態のほうが少ないことが分かる。更に、本実施形態の場合、一度集約されたデータ群は、それ以降分断されることが無いのに対し、比較例では図21から図22へ遷移する際のID=013、014のように、一度集約されたデータ群が分断されることがある。このような点から、本実施形態の方が、グループ内での統計処理などを漸次的に計算するのに都合が良いことになる。別例について以下、図7とは異なる例について、図27~図32に基づいて説明する。なお、図28~図32では、Mapデータの近傍に、集約処理に用いるキー一覧リスト16を併記するものとする一点鎖線で示す箱。図27には、図7の例と同様に3階層に分かれているものの、関連がループしており、親子関係が明確ではないデータの一例が示されている。なお、この例では2系統のループがあるが、Z=010101が共通して含まれているため、集約処理の結果、全てのデータが1グループに集約されるのが正しい集約結果である。図27のデータに対して本実施形態の処理を適用し、各処理サーバ10のReduce処理部14が、1回目の集約処理を行った結果が図28矢印の下側のデータである。図28では、Reduce処理部14は、それぞれ元のデータの主キーで集約している。この場合、Z=010101のみ複数のデータが集約される。また、各グループに未使用のキーが存在するため、Reduce処理部14は、キーを未使用のキーのうちの1つに変更し、2回目の集約を行う。図29には、2回目の集約を行った結果矢印の下側のデータが示されている。同様に、Reduce処理部14が3回目の集約を行うと図30の矢印の下側の状態となる。ここで、Z=010101のグループでは、各データの未使用のキーが無くなり、実体の無いデータの未使用キーはグループ内のデータの元キーと一致するものしかなくなる図10のステップS36が否定される。これにより、キー変更が一巡したことがわかるため、固定フラグを設定するとともにステップS42、グループ内の使用済みキーの中から、辞書式に評価して先頭となるキーここでは、X=01を見つけ、次の集約キーとするステップS44。なお、辞書式に評価して先頭を見つける処理は、各キー種の関係から親子関係階層構造の最上位を見つける処理を意味する。同様にして、Reduce処理部14が4回目の集約を行うと、図31の状態となる。ここで、X=01に集約されたグループには、固定フラグが設定されたデータが含まれるステップS32が肯定される。このため、Reduce処理部14は、固定フラグが設定されていなかったデータにも固定フラグを設定するステップS48。また、Y=0102のグループでも、使用可能性のあるキーは元キーと一致するものしかなくなる図10のステップS36が否定されるため、キー変更一巡となる。このため、Reduce処理部14は、次の集約キーをX=01とし、固定フラグを設定するステップS42。この結果、図32に示すように、Reduce処理部14が5回目の集約を行うと、すべてのデータが固定フラグ付きでX=01に集約され、集約が完了する。この場合、前述したように、1グループに正確に集約されることになる。以上のように、図27のようなデータの関係がループする場合であっても、本実施形態では、正確に、データを集約することが可能である。以上詳細に説明したように、本実施形態の処理サーバ10によると、Map処理部12が行う、複数のデータそれぞれが有するキーを、集約に用いる集約キー、集約において未だ用いていない未使用キー、及び既に集約に用いた使用済みキーのいずれかに分類して、Mapデータに関連付けて分散ファイルシステム40に記憶する処理ステップS12と、Reduce処理部14が行う、記憶された複数のデータのうち、同一の集約キーに関連付けられたMapデータを取得するステップS26とともに、取得したMapデータ群に含まれる未使用キーを全て取得しステップS28、取得した未使用キーのうちの1つを次の集約キーとして決定し、取得したデータに関連付けて記憶された集約キーを次の集約キーに更新しステップS38、取得したデータに関連付けて記憶された未使用キーを取得した未使用キーから次の集約キーを除いた残りの未使用キーに更新するステップS40処理を、Reduce処理部14における集約キーの更新ができなくなるまで繰り返す。これにより、RDB関係データベースを用いなくとも、処理対象のデータを参照するのみで、複数のMapデータを集約することができる。これにより、性能スケーラビリティ改善効果を最大限に得ることが可能となる。また、Map処理部12とReduce処理部14とが処理を繰り返し行うことで、データに関連のある範囲のキーがデータ間を伝達していくので、データ集約の漏れをなくすことができる。また、本実施形態では、Reduce処理部14は、複数のMapデータを集約する際に、更新を行う前の集約キーを集約キーとし、集計された取得された未使用キーのすべてを未使用キーとする、データとしての実体のないデータを新たなMapデータとして生成するのでステップS40、親子関係階層関係にある全ての階層の集約処理を同時に行うことが可能となる。これにより、処理時間の短縮を図ることが可能となる。また、本実施形態では、Reduce処理部14は、集約キーを更新できなくなったデータの集約キーを、使用済みキーとしてMapデータに関連付けられているキーのうち、親子関係階層関係の最上位にあるキーで更新するとともに、Mapデータに、集約キーのそれ以上の更新を禁止するフラグ固定フラグを設定するデータに対応付けて固定フラグを記憶するステップS42、S44。これにより、集約キーの更新が一巡したときには、それ以降、集約キーは更新されなくなるので、集約キーの更新が一巡したときに発生し得る、処理の永久ループを防止することが可能となる。また、本実施形態の分散処理システム100は、上記のような処理サーバ10を複数備えているので、複数のMapデータを、複数の処理サーバ10上で分散並行的にMapReduce処理することが可能となる。なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVDDigitalVersatileDisc、CD-ROMCompactDiscReadOnlyMemoryなどの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。なお、以上の説明に関して更に以下の付記を開示する。付記1複数のキー種を用いて分類された複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を実行する処理装置であって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された、前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶する関連付け部と、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、該取得した未使用キーのうちの1つを次の集約キーとして決定し、前記取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する集約部と、を備え、前記集約キーの更新ができなくなるまで、前記関連付け部と前記集約部による処理を繰り返すことを特徴とする処理装置。付記2前記集約部は、前記更新を行う前の前記集約キーを集約キーとし、取得した前記未使用キーのすべてを未使用キーとする、データとしての実体のないデータを新たな処理対象のデータとして生成して前記記憶部に記憶することを特徴とする付記1に記載の処理装置。付記3前記関連付け部は、前記処理対象のデータに、既に集約に用いた使用済みキーを関連付け、前記集約部は、前記集約キーの更新ができなくなったデータに対応付けて前記記憶部に記憶された集約キーを、前記データに前記使用済みキーとして関連付けられているキーのうち、親子関係の最上位にあるキー種のキーで更新し、当該データに対応付けて前記集約キーの更新を禁止する情報を前記記憶部に記憶し、前記記憶部に格納された前記複数のデータのうち、同一の集約キーに関連付けられ、且つ、前記集約キーの更新を禁止する情報が関連付けられていないデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、前記取得した未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに対応付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに対応付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新することを特徴とする付記1又は2に記載の処理装置。付記4付記1~3のいずれかに記載の処理装置を複数備え、複数の処理対象のデータを前記複数の処理装置に分散して、当該複数の処理装置において並行処理を実行することを特徴とする分散処理システム。付記5複数のキー種を用いて複数のデータの中から関連のあるデータを集約してデータ群を生成する処理を、コンピュータに実行させる処理プログラムであって、前記複数のキー種を用いて分類された複数のデータを記憶する記憶部に記憶された前記複数のデータのそれぞれについて、該データが有する前記複数のキー種のキーを、前記集約に用いる集約キーと、未使用キーのいずれかに分類して、各データに関連付けて前記記憶部に記憶し、前記記憶部に記憶された前記複数のデータのうち、同一の集約キーに関連付けられたデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、取得した前記未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに関連付けて前記記憶部に記憶された前記集約キーを、前記次の集約キーに更新し、取得した前記データに関連付けて前記記憶部に記憶された前記未使用キーを、取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する処理を、前記未使用キーの更新ができなくなるまで、コンピュータに繰り返し実行させることを特徴とする処理プログラム。付記6前記集約する処理では、前記更新を行う前の前記集約キーを集約キーとし、取得した前記未使用キーのすべてを未使用キーとする、データとしての実体のないデータを新たな処理対象のデータとして生成して前記記憶部に記憶する処理をコンピュータに実行させることを特徴とする付記5に記載の処理プログラム。付記7前記関連付ける処理では、前記処理対象のデータに、既に集約に用いた使用済みキーを関連付ける処理をコンピュータに実行させ、前記集約する処理では、前記集約キーの更新ができなくなったデータに対応付けて前記記憶部に記憶された集約キーを、前記データに前記使用済みキーとして関連付けられているキーのうち、親子関係の最上位にあるキー種のキーで更新し、当該データに対応付けて前記集約キーの更新を禁止する情報を前記記憶部に記憶し、前記記憶部に格納された前記複数のデータのうち、同一の集約キーに関連付けられ、且つ、前記集約キーの更新を禁止する情報が関連付けられていないデータを取得し、取得した前記データに含まれる未使用キーを全て取得し、前記取得した未使用キーのうちの1つを次の集約キーとして決定し、取得した前記データに対応付けて前記記憶部に記憶された前記集約キーを前記次の集約キーに更新し、取得した前記データに対応付けて前記記憶部に記憶された前記未使用キーを取得した前記未使用キーから前記次の集約キーを除いた残りの未使用キーに更新する処理を、コンピュータに実行させることを特徴とする付記5又は6に記載の処理プログラム。"