(57)【要約】【課題】同じキーを有するレコードを異なるファイルに分散させることなく、各ファイルのデータサイズの平坦化を行うことを可能とする情報処理プログラム、情報処理装置及び情報処理方法を提供する。【解決手段】データを複数のレコードに分割し、分割した複数のレコードのそれぞれに含まれるキーに基づいて、複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、レコード群のそれぞれに対応するキーの数がファイル数を超えた場合、ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、特定したファイルのファイルサイズが、ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定したファイルに、分類されたレコードであって、同一のキーを含むレコードがファイルに出力済でないレコードを出力する。【選択図】図１１
2020107010.tif 000002
【特許請求の範囲】
【請求項１】
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
請求項１において、
前記ファイルに出力済でないレコードを出力する処理では、特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下でない場合、前記特定する処理及び前記ファイルに出力済でないレコードを出力する処理を再度行う、
ことを特徴とする情報処理プログラム。
【請求項３】
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項４】
請求項３において、
前記外部に出力する処理では、
前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きさに基づいて決定し、
決定した前記出力順に基づいて、前記ファイル数に対応するファイルのそれぞれを出力する、
ことを特徴とする情報処理プログラム。
【請求項５】
請求項４において、
前記決定する処理では、前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きい順に決定する、
ことを特徴とする情報処理プログラム。
【請求項６】
請求項５において、
前記外部は、所定数の並列処理を行う外部プログラムである、
ことを特徴とする情報処理プログラム。
【請求項７】
請求項６において、
前記ファイル数は、前記所定数の整数倍の数である、
ことを特徴とする情報処理プログラム。
【請求項８】
データの入力を受け付けた際に、該データを複数のレコードに分割するデータ分割部と、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類するレコード分類部と、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力するレコード出力部と、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定するファイル特定部と、を有し、
前記レコード出力部は、特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
ことを特徴とする情報処理装置。
【請求項９】
データの入力を受け付けた際に、該データを複数のレコードに分割するデータ分割部と、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類するレコード分類部と、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力するレコード出力部と、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定するファイル特定部と、を有し、
前記レコード出力部は、特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、さらに、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力するファイル出力部を有する、
ことを特徴とする情報処理装置。
【請求項１０】
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
ことを特徴とする情報処理方法。
【請求項１１】
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力する、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
例えば、利用者にサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、利用者が所有するデータ（以下、処理対象データとも呼ぶ）を並列処理に適した形に加工する情報処理システムを構築して稼働させる。
【０００３】
具体的に、このような情報処理システムでは、例えば、分割された後のデータが含まれるファイル（以下、単にファイルとも呼ぶ）のファイルサイズが平坦になるように、処理対象データに含まれる複数のレコードを並列処理の多重度に応じた数に分割する処理を行う。これにより、情報処理システムは、処理対象データに対して行われる処理（並列処理）の所要時間を短縮することが可能になる（例えば、特許文献１から４参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１１８６６９号公報
【特許文献２】特開２０１３−１５６９６０号公報
【特許文献３】国際公開第２０１６／１７８３１２号
【特許文献４】特開２０１８−０３６８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のような方法によって処理対象データの分割を行う場合、情報処理システムは、同じキーを有する複数のレコードを異なるファイルに振り分ける可能性がある。そのため、例えば、処理対象データの分割後、同じキーを有するレコードごとに処理を行う必要がある場合、事業者は、処理対象データに対して行われる処理の所要時間を短縮することができない場合がある。
【０００６】
そこで、一つの側面では、本発明は、同じキーを有するレコードを異なるファイルに分散させることなく、各ファイルのデータサイズの平坦化を行うことを可能とする情報処理プログラム、情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施の形態の一態様では、データの入力を受け付けた際に、該データを複数のレコードに分割し、分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、処理をコンピュータに実行させる。
【発明の効果】
【０００８】
一つの側面によれば、同じキーを有するレコードを異なるファイルに分散させることなく、各ファイルのデータサイズの平坦化を行うことを可能とする。
【図面の簡単な説明】
【０００９】
【図１】図１は、情報処理システム１０の構成について説明する図である。
【図２】図２は、情報処理装置１のハードウエア構成を説明する図である。
【図３】図３は、情報処理装置１の機能のブロック図である。
【図４】図４は、第１の実施の形態におけるファイル出力処理の概略を説明するフローチャート図である。
【図５】図５は、第１の実施の形態におけるファイル出力処理の概略を説明するフローチャート図である。
【図６】図６は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図７】図７は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図８】図８は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図９】図９は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図１０】図１０は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図１１】図１１は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【図１２】図１２は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１３】図１３は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１５】図１５は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１６】図１６は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１７】図１７は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。
【図１８】図１８は、Ｓ２２の処理で分割したレコードの具体例を説明する図である。
【図１９】図１９は、Ｓ４３の処理でファイルに出力したレコードの具体例を説明する図である。
【図２０】図２０は、Ｓ４３の処理でファイルに出力したレコードの具体例を説明する図である。
【図２１】図２１は、Ｓ３２の処理でファイルに出力したレコードの具体例を説明する図である。
【図２２】図２２は、Ｓ４５の処理が行われる前のレコードの具体例を説明する図である。
【図２３】図２３は、Ｓ４５の処理でファイルに出力したレコードの具体例を説明する図である。
【発明を実施するための形態】
【００１０】
［情報処理システムの構成］
初めに、情報処理システム１０の構成について説明を行う。図１は、情報処理システム１０の構成について説明する図である。
【００１１】
図１に示す情報処理システム１０は、情報処理装置１と、情報処理装置２と、操作端末３とを有する。操作端末３は、ネットワーク（図示しない）を介することによって情報処理装置１とアクセスが可能である。
【００１２】
操作端末３は、例えば、１台以上のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）であり、事業者が情報処理装置１に対して各種操作を行う端末である。
【００１３】
情報処理装置２は、例えば、１台以上の物理マシンであり、利用者によって構築された情報処理システム（以下、外部システムとも呼ぶ）が稼働する装置である。具体的に、情報処理装置２では、例えば、利用者によって予め用意された処理対象データに対して所定の処理を行うシステムが稼働する。なお、以下、情報処理装置２（外部システム）において所定数の多重度による並列処理が行われるものとして説明を行う。
【００１４】
情報処理装置１は、例えば、１台以上の物理マシンであり、情報処理装置２において処理が行われる処理対象データを並列処理に適した形に加工する。具体的に、情報処理装置１は、例えば、処理対象データに含まれる複数のレコードを並列処理の多重度に応じた数に分割する。そして、情報処理装置１は、処理対象データを分割することによって生成した複数のファイルを情報処理装置２に送信する。
【００１５】
これにより、情報処理装置１は、情報処理装置２において行われる処理（並列処理）の所要時間を短縮することが可能になる。
【００１６】
しかしながら、例えば、各ファイルのファイルサイズが平坦になるように処理対象データの分割を行う場合、情報処理装置１は、同じキーを有する複数のレコードを異なるファイルに振り分ける可能性がある。そのため、例えば、処理対象データの分割後、同じキーを有するレコードごとに処理を行う必要がある場合、情報処理装置１は、情報処理装置２において行われる処理の所要時間を短縮することができない場合がある。
【００１７】
そこで、本実施の形態における情報処理装置１は、処理対象データの入力を受け付けた際に、その処理対象データを複数のレコードに分割する。そして、情報処理装置１は、分割した複数のレコードのそれぞれに含まれるキーに基づいて、複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類する。
【００１８】
続いて、レコードが分類されたレコード群のそれぞれに対応するキーの数が、予め設定されたファイル数（以下、単にファイル数とも呼ぶ）を超えていない場合、情報処理装置１は、分類されたレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイルに出力する。
【００１９】
一方、レコードが分類されたレコード群のそれぞれに対応するキーの数が、予め設定されたファイル数を超えた場合、情報処理装置１は、分類されたレコードであって、同一のキーを含むレコードがファイルに出力済であるレコードを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイルに出力する。
【００２０】
また、情報処理装置１は、この場合、ファイル数に対応するファイル（以下、全ファイルとも呼ぶ）の中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定する。そして、情報処理装置１は、特定したファイルのファイルサイズが全ファイルのファイルサイズの平均サイズ以下である場合、特定したファイルに、分類されたレコードであって、同一のキーを含むレコードがファイルに出力済でないレコードを出力する。
【００２１】
すなわち、情報処理装置１は、全ファイルからランダムに選択したファイルの中で、現時点のファイルサイズが最小であるファイルを、新たなキーを有するレコードを出力するファイルの候補として特定する。そして、情報処理装置１は、特定したファイルのファイルサイズが全ファイルの平均サイズ以下である場合、ランダムに選択したファイルのファイルサイズが全ファイルの中で偏っているものではないと判定し、特定したファイルに、新たなキーを有するレコードを出力する。
【００２２】
これにより、情報処理装置１は、同じキーを有する各レコードを異なるファイルに分散させることなく、各ファイルのデータサイズの平坦化を行うことを可能とする。そのため、情報処理装置２は、同じキーを有するレコードごとに処理を行う必要がある場合であっても、処理対象データに対する処理の所要時間を短縮させることが可能になる。
【００２３】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図２は、情報処理装置１のハードウエア構成を説明する図である。
【００２４】
情報処理装置１は、図２に示すように、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００２５】
記憶媒体１０４は、例えば、処理対象データに含まれる複数のレコードを各ファイルに出力する処理（以下、ファイル出力処理とも呼ぶ）を行うためのプログラム１１０を記憶するプログラム格納領域（図示しない）を有する。また、記憶媒体１０４は、例えば、ファイル出力処理を行う際に用いられる情報を記憶する記憶部１３０（以下、情報格納領域１３０とも呼ぶ）を有する。なお、記憶媒体１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｋｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってよい。
【００２６】
ＣＰＵ１０１は、記憶媒体１０４からメモリ１０２にロードされたプログラム１１０を実行してファイル出力処理を行う。
【００２７】
外部インターフェース１０３は、例えば、情報処理装置２や操作端末３と通信を行う。
【００２８】
［情報処理システムの機能］
次に、情報処理システム１０の機能について説明を行う。図３は、情報処理装置１の機能のブロック図である。
【００２９】
情報処理装置１は、図３に示すように、例えば、ＣＰＵ１０１やメモリ１０２等のハードウエアとプログラム１１０とが有機的に協働することにより、データ受付部１１１と、データ分割部１１２と、レコード分類部１１３と、キー判定部１１４と、レコード出力部１１５と、平均算出部１１６と、ファイル特定部１１７と、ファイル出力部１１８とを含む各種機能を実現する。
【００３０】
また、情報処理装置１は、例えば、図３に示すように、処理対象データに含まれる複数のレコード（分割後のレコード）を含む複数のファイル１３１と、事業者や利用者によって予め設定されたファイル数を示す情報であるファイル数情報１３２とを情報格納領域１３０に記憶する。以下、ファイル数情報１３２が予め情報格納領域１３０に記憶されているものとして説明を行う。
【００３１】
データ受付部１１１は、処理対象データの入力を受け付ける。具体的に、データ受付部１１１は、例えば、事業者が操作端末３を介して入力した処理対象データの入力を受け付ける。
【００３２】
データ分割部１１２は、データ受付部１１１が処理対象データの入力を受け付けた場合に、そのデータを複数のレコードに分割する。具体的に、データ分割部１１２は、データ受付部１１１が入力を受け付けた処理対象データをレコードごとに分割する。
【００３３】
レコード分類部１１３は、データ分割部１１２が分割した複数のレコードのそれぞれに含まれるキーに基づいて、複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類する。
【００３４】
キー判定部１１４は、レコード分類部１１３によってレコードが分類されたレコード群のそれぞれに対応するキーの数が、情報格納領域１３０に記憶されたファイル数情報１３２に対応する数を超えているか否かを判定する。
【００３５】
レコード出力部１１５は、レコード分類部１１３によってレコードが分類されたレコード群のそれぞれに対応するキーの数が、ファイル数情報１３２に対応する数を超えていないとキー判定部１１４が判定した場合、レコード分類部１１３によって分類されたレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する。
【００３６】
また、レコード出力部１１５は、レコード分類部１１３によってレコードが分類されたレコード群のそれぞれに対応するキーの数が、ファイル数情報１３２に対応する数を超えたとキー判定部１１４が判定した場合、レコード分類部１１３によって分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済であるレコードを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する。
【００３７】
平均算出部１１６は、レコード分類部１１３によってレコードが分類されたレコード群のそれぞれに対応するキーの数が、ファイル数情報１３２に対応する数を超えたとキー判定部１１４が判定した場合、ファイル数情報１３２に対応する数のファイル１３１のファイルサイズの平均（以下、平均サイズとも呼ぶ）を算出する。
【００３８】
ファイル特定部１１７は、レコード分類部１１３によってレコードが分類されたレコード群のそれぞれに対応するキーの数が、ファイル数情報１３２に対応する数を超えたとキー判定部１１４が判定した場合、ファイル数情報１３２に対応する数のファイル１３１の中からランダムに抽出された複数のファイル１３１の中で、最小のファイルサイズであるファイル１３１を特定する。
【００３９】
そして、レコード出力部１１５は、ファイル特定部１１７が特定したファイル１３１のファイルサイズが、平均算出部１１６が算出した平均サイズ以下である場合、ファイル特定部１１７が特定したファイル１３１に、レコード分類部１１３によって分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済でないレコードを出力する。
【００４０】
ファイル出力部１１８は、各ファイル１３１を情報処理装置２に送信（出力）する。具体的に、ファイル出力部１１８は、例えば、ファイルサイズが大きいファイル１３１から順に、各ファイル１３１を情報処理装置２に送信する。
【００４１】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図４及び図５は、第１の実施の形態におけるファイル出力処理の概略を説明するフローチャート図である。また、図６から図１１は、第１の実施の形態におけるファイル出力処理の概略を説明する図である。
【００４２】
情報処理装置１は、図４に示すように、処理対象データの入力を受け付けるまで待機する（Ｓ１のＮＯ）。具体的に、データ受付部１１１は、例えば、事業者が操作端末３を介して処理対象データを入力するまで待機する。
【００４３】
そして、処理対象データの入力を受け付けた場合（Ｓ１のＹＥＳ）、情報処理装置１は、Ｓ１の処理で入力を受け付けたデータを複数のレコードに分割する（Ｓ２）。
【００４４】
続いて、情報処理装置１は、Ｓ２の処理で分割した複数のレコードのそれぞれに含まれるキーに基づいて、複数のレコードに含まれるレコードを、各レコードに含まれるキーに対応するレコード群に順次分類する（Ｓ３）。
【００４５】
その後、情報処理装置１は、Ｓ３の処理でレコードが分類されたレコード群のそれぞれに対応するキーの数が、予め設定されたファイル数を超えているか否かを判定する（Ｓ４）。具体的に、情報処理装置１は、情報格納領域１３０に記憶されたファイル数情報１３２を参照し、Ｓ３の処理でレコードが分類されたレコード群のそれぞれに対応するキーの数が、ファイル数情報１３２に対応する数を超えているか否かの判定を行う。
【００４６】
その結果、Ｓ３の処理でレコードが分類されたレコード群のそれぞれに対応するキーの数が、予め設定されたファイル数を超えていないと判定した場合（Ｓ５のＮＯ）、情報処理装置１は、Ｓ３の処理で分類されたレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する（Ｓ６）。
【００４７】
一方、Ｓ３の処理でレコードが分類されたレコード群のそれぞれに対応するキーの数が、予め設定されたファイル数を超えていると判定した場合（Ｓ６のＮＯ）、情報処理装置１は、図５に示すように、Ｓ３の処理で分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済であるレコードを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する（Ｓ１１）。
【００４８】
そして、情報処理装置１は、この場合、ランダムに抽出された複数のファイル１３１の中で、最小のファイルサイズであるファイル１３１を特定する（Ｓ１２）。
【００４９】
その後、情報処理装置１は、Ｓ１２の処理で特定したファイル１３１のファイルサイズが、予め設定されたファイル数に対応するファイル１３１のファイルサイズの平均サイズ以下であるか否かを判定する（Ｓ１３）。
【００５０】
その結果、Ｓ１２の処理で特定したファイル１３１のファイルサイズが、予め設定されたファイル数に対応するファイル１３１のファイルサイズの平均サイズ以下であると判定した場合（Ｓ１４のＹＥＳ）、情報処理装置１は、Ｓ１２の処理で特定したファイル１３１に、Ｓ３の処理で分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済でないレコードを出力する（Ｓ１５）。
【００５１】
一方、Ｓ１２の処理で特定したファイル１３１のファイルサイズが、予め設定されたファイル数に対応するファイル１３１のファイルサイズの平均サイズ以下でないと判定した場合（Ｓ１４のＮＯ）、情報処理装置１は、例えば、Ｓ１２以降の処理を再度行う。
【００５２】
すなわち、情報処理装置１は、この場合、例えば、Ｓ３の処理で分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済でないレコードの出力先のファイル１３１の特定をさらに行う。
【００５３】
これにより、情報処理装置１は、同じキーを有する各レコードを異なるファイル１３１に分散させることなく、各ファイル１３１のデータサイズの平坦化を行うことを可能とする。そのため、情報処理装置２は、同じキーを有するレコードごとに処理を行う必要がある場合であっても、処理対象データに対する処理の所要時間を短縮させることが可能になる。以下、第１の実施の形態におけるファイル出力処理の概略の具体例について説明を行う。
【００５４】
［ファイル出力処理の概略の具体例］
図６から図１１は、ファイル出力処理の概略の具体例を説明する図である。以下、ファイル数情報１３２が示す数が５であるものとして説明を行う。また、以下、情報処理装置２（外部システム）における並列処理の多重度が３であるものとして説明を行う。
【００５５】
図６に示す例において、処理対象データには、それぞれ主キーがＤであるレコード（以下、単にレコードＤとも表記する）と、主キーがＥであるレコード（以下、単にレコードＥとも表記する）、主キーがＡであるレコード（以下、単にレコードＡとも表記する）、主キーがＨであるレコード（以下、単にレコードＨとも表記する）、主キーがＤであるレコード、主キーがＧであるレコード（以下、単にレコードＧとも表記する）、主キーがＡであるレコード、主キーがＤであるレコード、主キーがＨであるレコード、及び、主キーがＣであるレコード（以下、単にレコードＣとも表記する）が順に含まれている。
【００５６】
具体的に、情報処理装置１は、この場合、図６に示すように、処理対象データ（「処理対象データ」の枠内のデータ）をレコードごとに分割する。
【００５７】
続いて、情報処理装置１は、例えば、分割したレコード（「分割後レコード」の枠内のデータ）の分類を行う。ここで、図６に示す例では、レコードを含むファイル１３１がまた存在していない。そのため、情報処理装置１は、例えば、図７に示すように、レコードＤを出力する新たなファイル１３１ａを生成し、「分割後レコード」の枠内における１行目のレコードであるレコードＤを出力する。続いて、情報処理装置１は、例えば、図８に示すように、レコードＥを出力する新たなファイル１３１ｂを生成し、「分割後レコード」の枠内における２行目のレコードであるレコードＥを出力する。
【００５８】
その後、情報処理装置１は、例えば、図９に示すように、レコードＡ、レコードＨ及びレコードＧを出力するファイル１３１ｃ、１３１ｄ及び１３１ｅをそれぞれ生成し、「分割後レコード」の枠内における５行目及び８行目のレコードであるレコードＤをファイル１３１ａに出力し、３行目及び７行目のレコードであるレコードＡをファイル１３１ｃに出力し、４行目及び９行目のレコードであるレコードＨをファイル１３１ｄに出力し、６行目のレコードであるレコードＧをファイル１３１ｅに出力する。
【００５９】
ここで、「分割後レコード」の枠内における１０行目のレコードは、出力先のファイル１３１がまだ生成されていないレコードＣである。しかしながら、ファイル数情報１３２が示す数が５であるため、情報処理装置１は、新たなファイル１３１をこれ以上生成することができない。
【００６０】
そこで、情報処理装置１は、例えば、生成済のファイル１３１（ファイル１３１ａからファイル１３１ｅ）の中から、ランダムにファイル１３１ｂとファイル１３１ｃとを選択する。そして、情報処理装置１は、例えば、選択したファイル１３１ｂ及びファイル１３１ｃのうち、ファイルサイズが最小であるファイル１３１ｂを特定する。その後、情報処理装置１は、特定したファイル１３１ｂのファイルサイズが全ファイル１３１のファイルサイズの平均よりも小さいと判定した場合、例えば、図１０に示すように、「分割後レコード」の枠内における１０行目のレコードであるレコードＣを、特定したファイル１３１ｂに出力する。
【００６１】
すなわち、情報処理装置１は、この場合、他のキーを有するレコードが既に出力されているファイル１３１のうち、ファイルサイズが他のファイル１３１よりも相対的に小さいと判定できるファイル１３１ｂを特定する。そして、情報処理装置１は、特定したファイル１３１ｂに対してレコードＣ（新たなキーを有するレコード）を出力する。
【００６２】
その後、情報処理装置１は、例えば、図１１に示すように、ファイルサイズが大きいファイル１３１から順に、外部システムのアプリケーション（１）から（３）に出力する。そして、アプリケーション（１）から（３）は、例えば、ファイル１３１ａに含まれるレコード、ファイル１３１ｃに含まれるレコード及びファイル１３１ｄに含まれるレコードに対する処理をそれぞれ開始する。
【００６３】
これにより、情報処理装置２（外部システム）は、ファイルサイズの大きいファイル１３１から順に処理を開始することが可能になる。そのため、情報処理装置２は、処理対象データに対する処理の所要時間をより短縮させることが可能になる。
【００６４】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１２から図１７は、第１の実施の形態におけるファイル出力処理の詳細を説明するフローチャート図である。また、図１８から図２３は、第１の実施の形態におけるファイル出力処理の詳細を説明する図である。
【００６５】
情報処理装置１のデータ受付部１１１は、図１２に示すように、処理対象データの入力を受け付けるまで待機する（Ｓ２１のＮＯ）。
【００６６】
そして、処理対象データの入力を受け付けた場合（Ｓ２１のＹＥＳ）、情報処理装置１のデータ分割部１１２は、Ｓ２１の処理で入力を受け付けたデータを複数のレコードに分割する（Ｓ２２）。以下、Ｓ２２の処理で分割したレコードの具体例について説明を行う。
【００６７】
［Ｓ２２の処理で分割したレコードの具体例］
図１８は、Ｓ２２の処理で分割したレコードの具体例を説明する図である。
【００６８】
図１８に示すレコードは、各レコードを識別する「項番」と、各社員の社員番号が記憶される「社員番号」と、各社員が属する部門の部門コードが記憶される「部門コード」と、各社員の氏名が記憶される「氏名」とを項目として有する。また、図１８に示すレコードは、各社員の性別が記憶される「性別」と、各社員の年齢が記憶される「年齢」と、各社員の役職が記憶される「役職」とを項目として有する。なお、以下、図１８に示すレコードに含まれる項目のうち、「部門コード」に記憶された情報が主キーであるものとして説明を行う。
【００６９】
具体的に、図１８に示すレコードにおいて、「項番」が「１」である情報には、「社員番号」として「１０４５６」が記憶され、「部門コード」として「Ｄ部門」が記憶され、「氏名」として「山田一郎」が記憶されている。また、「項番」が「１」である情報には、「性別」として「男」が記憶され、「年齢」として「４１（歳）」が記憶され、「役職」として「課長」が記憶されている。
【００７０】
また、図１８に示すレコードにおいて、「項番」が「２」である情報には、「社員番号」として「０８４５１」が記憶され、「部門コード」として「Ｅ部門」が記憶され、「氏名」として「鈴木二郎」が記憶されている。また、「項番」が「２」である情報には、「性別」として「男」が記憶され、「年齢」として「５２（歳）」が記憶され、「役職」として「部長」が記憶されている。
【００７１】
さらに、図１８に示すレコードにおいて、「項番」が「３」である情報には、「社員番号」として「１３４０５」が記憶され、「部門コード」として「Ａ工場」が記憶され、「氏名」として「木村花子」が記憶されている。また、「項番」が「３」である情報には、「性別」として「女」が記憶され、「年齢」として「３６（歳）」が記憶され、「役職」として「なし」が記憶されている。図１８に含まれる他の情報についての説明は省略する。
【００７２】
なお、以下、「部門コード」に「Ｄ部門」が記憶されたレコード、「Ｅ部門」が記憶されたレコード、「Ａ工場」が記憶されたレコード、「Ｈ工場」が記憶されたレコード、「Ｇ部門」が記憶されたレコード及び「Ｃ部門」が記憶されたレコードのそれぞれは、図１１等で説明したレコードＤ、レコードＥ、レコードＡ、レコードＨ、レコードＧ及びレコードＣにそれぞれ対応するものとして説明を行う。そのため、以下、各レコードをそれぞれレコードＤ、レコードＥ、レコードＡ、レコードＨ、レコードＧ及びレコードＣと表記する。
【００７３】
図１２に戻り、情報処理装置１のレコード分類部１１３は、Ｓ２２の処理で分割したレコードを１つ取得する（Ｓ２３）。具体的に、レコード分類部１１３は、図１８で説明したレコードのうち、「項番」が「１」であるレコードを取得する。
【００７４】
そして、レコード分類部１１３は、Ｓ２３の処理で取得したレコードを、そのレコードに含まれるキーに対応するレコード群に分類する（Ｓ２４）。
【００７５】
その後、情報処理装置１のキー判定部１１４は、Ｓ２４の処理で分類したレコード群に含まれるレコードがファイル１３１に出力済であるか否かを判定する（Ｓ２５）。
【００７６】
その結果、図１３に示すように、Ｓ２４の処理で分類したレコード群に含まれるレコードがファイル１３１に出力済であると判定した場合（Ｓ３１のＹＥＳ）、情報処理装置１のレコード出力部１１５は、Ｓ２３の処理で取得したレコードを、そのレコードに含まれるキーに対応するレコード群に対応するファイル１３１に出力する（Ｓ３２）。
【００７７】
具体的に、例えば、Ｓ２３の処理で取得したレコードがレコードＤである場合であって、レコードＤに対応するファイル１３１ａが生成済である場合、レコード出力部１１５は、Ｓ２３の処理で取得したレコードをそのままファイル１３１ａに出力する。
【００７８】
続いて、Ｓ２４の処理で分類したレコード群に含まれるレコードがファイル１３１に出力済でないと判定した場合（Ｓ３１のＮＯ）、情報処理装置１のファイル特定部１１７は、図１４に示すように、Ｓ２４の処理でレコードを分類したレコード群のそれぞれに対応するキーの数が、情報格納領域１３０に記憶されたファイル数情報１３２に対応する数を超えているか否かを判定する（Ｓ４１）。
【００７９】
その結果、キーの数がファイル数情報１３２に対応する数を超えていないと判定した場合（Ｓ４２のＮＯ）、レコード出力部１１５は、Ｓ２３の処理で出力したレコードを、新たなファイル１３１に出力する（Ｓ４３）。
【００８０】
具体的に、例えば、Ｓ２３の処理で取得したレコードがレコードＤである場合であって、レコードＤに対応するファイル１３１ａが生成済でない場合、レコード出力部１１５は、レコードＤに対応するファイル１３１ａを情報格納領域１３０に新たに生成する。そして、レコード出力部１１５は、Ｓ２３の処理で取得したレコードをファイル１３１ａに出力する。以下、Ｓ３２及びＳ４３の処理のさらなる具体例について説明を行う。
【００８１】
［Ｓ３２及びＳ４３の処理でファイルに出力したレコードの具体例］
図１９及び図２０は、Ｓ４３の処理でファイルに出力したレコードの具体例を説明する図である。また、図２１は、Ｓ３２の処理でファイルに出力したレコードの具体例を説明する図である。
【００８２】
具体的に、例えば、図１８で説明したレコードのうち、「項番」が「１」であるレコード（レコードＤ）がＳ２３の処理において取得された場合、レコード出力部１１５は、「項番」が「１」であるレコードを、新たに生成したファイル１３１ａに出力する（Ｓ４３）。そして、この場合、ファイル１３１ａには、図１９に示すように、「項番」が「１」であるレコードのみが含まれる状態になる。
【００８３】
次に、例えば、図１８で説明したレコードのうち、「項番」が「２」であるレコード（レコードＥ）がＳ２３の処理において取得された場合、レコード出力部１１５は、「項番」が「２」であるレコードを、新たに生成したファイル１３１ｂに出力する（Ｓ４３）。そして、この場合、ファイル１３１には、図２０（Ｂ）に示すように、「項番」が「２」であるレコードのみが含まれる状態になる。なお、この場合、ファイル１３１ａには、図２０（Ａ）に示すように、「項番」が「１」であるレコードのみが引き続き含まれている。
【００８４】
その後、例えば、図１８で説明したレコードのうち、「項番」が「５」であるレコード（レコードＤ）がＳ２３の処理において取得された場合、レコード出力部１１５は、「項番」が「５」であるレコードを、既に生成されているファイル１３１ａに出力する。そして、この場合、ファイル１３１ａには、図２１（Ａ）に示すように、「項番」が「１」であるレコードと「項番」が「５」であるレコードとが含まれる状態になる。なお、この場合、ファイル１３１ｂには、図２１（Ｂ）に示すように、「項番」が「２」であるレコードのみが含まれており、ファイル１３１ｃには、図２０（Ｃ）に示すように、「項番」が「３」であるレコードのみが含まれており、ファイル１３１ｄには、図２０（Ｄ）に示すように、「項番」が「４」であるレコードのみが含まれている。
【００８５】
図１４に戻り、キーの数がファイル数情報１３２に対応する数を超えていると判定した場合（Ｓ４２のＹＥＳ）、情報処理装置１は、平坦化処理を行う（Ｓ４４）。
【００８６】
すなわち、Ｓ２４の処理でレコードを分類したレコード群に対応するファイル１３１がまだ生成されていない場合であって、Ｓ２４の処理でレコードを分類したレコード群のそれぞれに対応するキーの数が既に上限に達している場合、情報処理装置１は、Ｓ２４の処理で分類したレコードを出力するための新たなファイル１３１を生成することができない。
【００８７】
そこで、情報処理装置１は、この場合、情報処理装置２（外部システム）における処理の平坦化を図りながらレコードの出力を行うことができるファイル１３１を、Ｓ２４の処理で分類したレコードの出力先のファイル１３１として特定する平坦化処理を行う。以下、平坦化処理について説明を行う。
【００８８】
［平坦化処理］
図１５から図１７は、平坦化処理を説明するフローチャート図である。
【００８９】
情報処理装置１の平均算出部１１６は、図１５に示すように、情報格納領域１３０に記憶されたファイル１３１（生成済の全ファイル１３１）のファイルサイズの平均サイズを算出する（Ｓ５１）。
【００９０】
そして、ファイル特定部１１７は、例えば、後述するＳ５４以降の処理が実行された回数を示すカウンタ（図示しない）と、Ｓ２４の処理で分類したレコードの出力先のファイル１３１を示す情報（図示しない）とを初期化する（Ｓ５２）。
【００９１】
続いて、ファイル特定部１１７は、情報格納領域１３０に記憶されたファイル１３１のうちの１つをランダムに選択する（Ｓ５３）。
【００９２】
そして、ファイル特定部１１７は、Ｓ５６の処理等を全ファイル１３１について実行したか否かを判定する（Ｓ５４）。
【００９３】
その結果、全ファイル１３１について実行していないと判定した場合（Ｓ５５のＮＯ）、ファイル特定部１１７は、Ｓ５３の処理または後述するＳ６６の処理で最後に選択したファイル１３１の現在のファイルサイズが、Ｓ５３の処理またはＳ６６の処理で選択済のファイル１３１のファイルサイズの中で最小であるか否かを判定する（Ｓ５６）。
【００９４】
そして、図１６に示すように、最後に選択したファイル１３１の現在のファイルサイズが最小であると判定した場合（Ｓ６１のＹＥＳ）、ファイル特定部１１７は、Ｓ５３の処理またはＳ６６の処理で最後に選択したファイル１３１を、Ｓ２４の処理で分類したレコードの出力先のファイル１３１として選択する（Ｓ６３）。
【００９５】
一方、最後に選択したファイル１３１の現在のファイルサイズが最小でないと判定した場合（Ｓ６１のＮＯ）、ファイル特定部１１７は、Ｓ６２の処理を行わない。
【００９６】
その後、ファイル特定部１１７は、カウンタに１を追加する（Ｓ６３）。そして、ファイル特定部１１７は、カウンタが示す数が予め定められたループ回数に到達したか否かを判定する（Ｓ６４）。
【００９７】
その結果、カウンタが示す数がループ回数に到達していない場合（Ｓ６５のＮＯ）、ファイル特定部１１７は、例えば、Ｓ５３の処理またはＳ６６の処理で最後に選択したファイル１３１の次のファイル１３１を選択する（Ｓ６６）。
【００９８】
具体的に、ファイル特定部１１７は、例えば、生成順序がＳ５３の処理またはＳ６６の処理で最後に選択したファイル１３１の次であったファイル１３１の選択を行う。なお、ファイル特定部１１７は、例えば、Ｓ５３の処理またはＳ６６の処理において生成順序が最後であるファイル１３１の選択を行っていた場合、ここでは、生成順序が最初であるファイル１３１の選択を行うものであってよい。
【００９９】
そして、情報処理装置１は、Ｓ６６の処理の後、Ｓ５４以降の処理を再度行う。
【０１００】
一方、カウンタが示す数がループ回数に到達している場合（Ｓ６５のＹＥＳ）、ファイル特定部１１７は、図１７に示すように、Ｓ６２の処理で選択した出力先のファイル１３１のファイルサイズが、Ｓ５１の処理で算出した平均サイズ以下であるか否かを判定する（Ｓ７１）。
【０１０１】
その結果、Ｓ６２の処理で選択した出力先のファイル１３１のファイルサイズが、Ｓ５１の処理で算出した平均サイズ以下であると判定した場合（Ｓ７２のＹＥＳ）、情報処理装置１は、平坦化処理を終了する。
【０１０２】
これにより、情報処理装置１は、情報処理装置２（外部システム）における処理の平坦化を図りながらレコードの出力を行うことができるファイル１３１を、Ｓ２４の処理で分類したレコードの出力先のファイル１３１として特定することが可能になる。
【０１０３】
一方、Ｓ６２の処理で選択した出力先のファイル１３１のファイルサイズが、Ｓ５１の処理で算出した平均サイズ以下でないと判定した場合（Ｓ７２のＮＯ）、情報処理装置１は、Ｓ６６以降の処理を再度行う。
【０１０４】
すなわち、Ｓ６２の処理で選択したファイル１３１のファイルサイズが全ファイル１３１の平均サイズ以下でない場合とは、Ｓ５３の処理やＳ６６の処理において選択したファイル１３１のファイルサイズが全ファイル１３１の中で偏っていた場合である。そのため、情報処理装置１は、この場合、Ｓ６６以降の処理を再度行い、Ｓ２４の処理で分類したレコードの出力先のファイル１３１の選択をさらに行う。
【０１０５】
そして、Ｓ５５の処理において、全ファイル１３１について実行していると判定した場合（Ｓ５５のＹＥＳ）、情報処理装置１は、平坦化処理を終了する。
【０１０６】
図１４に戻り、レコード出力部１１５は、Ｓ２４の処理で分類したレコードを、Ｓ４４の処理で選択した出力先のファイル１３１（Ｓ６２の処理で最後に選択した出力先のファイル１３１）に出力する（Ｓ４５）。以下、Ｓ４５の処理の具体例について説明を行う。
【０１０７】
［Ｓ４５の処理でファイルに出力したレコードの具体例］
図２２は、Ｓ４５の処理が行われる前のレコードの具体例を説明する図である。また、図２３は、Ｓ４５の処理でファイルに出力したレコードの具体例を説明する図である。
【０１０８】
具体的に、図２２に示す例において、ファイル１３１ａには、図２２（Ａ）に示すように、図１８で説明したレコードのうち、「項番」が「１」であるレコードと「項番」が「５」であるレコードと「項番」が「８」であるレコードとが含まれており、ファイル１３１ｂには、図２２（Ｂ）に示すように、図１８で説明したレコードのうち、「項番」が「２」であるレコードが含まれている。また、図２２に示す例において、ファイル１３１ｃには、図２２（Ｃ）に示すように、図１８で説明したレコードのうち、「項番」が「３」であるレコードと「項番」が「７」であるレコードとが含まれており、ファイル１３１ｄには、図２２（Ｄ）に示すように、図１８で説明したレコードのうち、「項番」が「４」であるレコードと「項番」が「９」であるレコードとが含まれている。さらに、図２２に示す例において、ファイル１３１ｅには、図２２（Ｅ）に示すように、図１８で説明したレコードのうち、「項番」が「６」であるレコードが含まれている。
【０１０９】
すなわち、図２２に示す例は、ファイル１３１ａからファイル１３１ｅまでのそれぞれ（ファイル数情報１３２に対応する数のファイル１３１のそれぞれ）が既に生成済であり、各ファイル１３１のそれぞれにレコードが出力されている状態を示している。
【０１１０】
そして、図２２に示す状態において、図１８で説明したレコードのうち、「項番」が「１０」であるレコード（レコードＣ）がＳ２３の処理において取得された場合、ファイル１３１ｂには、図２３に示すように、「項番」が「２」であるレコード（レコードＥ）だけでなく、「項番」が「１０」であるレコード（レコードＣ）が含まれる状態になる。
【０１１１】
図１３に戻り、レコード出力部１１５は、Ｓ４５の処理の後、Ｓ２２の処理で分割したレコードの全てがＳ２３の処理において取得済であるか否かを判定する（Ｓ３３）。すなわち、レコード出力部１１５は、Ｓ２２の処理で分割したレコードの全てがいずれかのファイル１３１に出力済であるか否かを判定する。なお、レコード出力部１１５は、Ｓ３２の処理またはＳ４３の処理が行われた場合についても同様に、Ｓ３３の処理を行う。
【０１１２】
その結果、Ｓ２２の処理で分割したレコードの全てがＳ２３の処理において取得済でないと判定した場合（Ｓ３４のＮＯ）、情報処理装置１は、Ｓ２３以降の処理を再度実行する。
【０１１３】
一方、Ｓ２２の処理で分割したレコードの全てがＳ２３の処理において取得済であると判定した場合（Ｓ３４のＹＥＳ）、ファイル出力部１１８は、情報格納領域に記憶されたファイル１３１を、ファイルサイズが大きいファイル１３１から順に、情報処理装置２（外部システム）に対して出力する。
【０１１４】
これにより、情報処理装置２（外部システム）は、ファイルサイズの大きいファイル１３１から順に処理を開始することが可能になる。そのため、情報処理装置２は、処理対象データに対する処理の所要時間を短縮させることが可能になる。
【０１１５】
このように、本実施の形態における情報処理装置１は、処理対象データの入力を受け付けた際に、その処理対象データを複数のレコードに分割する。そして、情報処理装置１は、分割した複数のレコードのそれぞれに含まれるキーに基づいて、複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類する。
【０１１６】
続いて、レコードが分類されたレコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、情報処理装置１は、分類されたレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する。
【０１１７】
一方、レコードが分類されたレコード群のそれぞれに対応するキーの数がファイル数を超えた場合、情報処理装置１は、分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済であるレコードを、各レコードに含まれるキーに対応するレコード群ごとにそれぞれ異なるファイル１３１に出力する。
【０１１８】
また、レコードが分類されたレコード群のそれぞれに対応するキーの数がファイル数を超えた場合、情報処理装置１は、全ファイル１３１の中からランダムに抽出された複数のファイル１３１の中で、最小のファイルサイズであるファイル１３１を特定する。そして、情報処理装置１は、特定したファイル１３１のファイルサイズが全ファイル１３１のファイルサイズの平均サイズ以下である場合、特定したファイル１３１に、分類されたレコードであって、同一のキーを含むレコードがファイル１３１に出力済でないレコードを出力する。
【０１１９】
すなわち、情報処理装置１は、全ファイル１３１からランダムに選択したファイル１３１の中で、現時点のファイルサイズが最小であるファイル１３１を、新たなキーを有するレコードを出力するファイル１３１の候補として特定する。そして、情報処理装置１は、特定したファイル１３１のファイルサイズが全ファイル１３１の平均サイズ以下である場合、ランダムに選択したファイル１３１のファイルサイズが全ファイル１３１の中で偏っているものではないと判定し、特定したファイル１３１に、新たなキーを有するレコードを出力する。
【０１２０】
これにより、情報処理装置１は、同じキーを有する各レコードを異なるファイル１３１に分散させることなく、各ファイル１３１のデータサイズの平坦化を行うことを可能とする。そのため、情報処理装置２は、処理対象データに対する処理の所要時間を短縮させることが可能になる。
【０１２１】
なお、ファイル数情報１３２が示す数は、情報処理装置２における並列処理の多重度に応じた数の整数倍であることが好ましい。
【０１２２】
これにより、情報処理装置２は、並列処理間における処理の実行終了時間の差を小さくすることが可能になる。そのため、情報処理装置２は、処理対象データに対する処理の所要時間をより短縮させることが可能になる。
【０１２３】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１２４】
（付記１）
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【０１２５】
（付記２）
付記１において、
前記ファイルに出力済でないレコードを出力する処理では、特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下でない場合、前記特定する処理及び前記ファイルに出力済でないレコードを出力する処理を再度行う、
ことを特徴とする情報処理プログラム。
【０１２６】
（付記３）
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【０１２７】
（付記４）
付記３において、
前記外部に出力する処理では、
前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きさに基づいて決定し、
決定した前記出力順に基づいて、前記ファイル数に対応するファイルのそれぞれを出力する、
ことを特徴とする情報処理プログラム。
【０１２８】
（付記５）
付記４において、
前記決定する処理では、前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きい順に決定する、
ことを特徴とする情報処理プログラム。
【０１２９】
（付記６）
付記５において、
前記外部は、所定数の並列処理を行う外部プログラムである、
ことを特徴とする情報処理プログラム。
【０１３０】
（付記７）
付記６において、
前記ファイル数は、前記所定数の整数倍の数である、
ことを特徴とする情報処理プログラム。
【０１３１】
（付記８）
データの入力を受け付けた際に、該データを複数のレコードに分割するデータ分割部と、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類するレコード分類部と、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力するレコード出力部と、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定するファイル特定部と、を有し、
前記レコード出力部は、特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
ことを特徴とする情報処理装置。
【０１３２】
（付記９）
データの入力を受け付けた際に、該データを複数のレコードに分割するデータ分割部と、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類するレコード分類部と、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力するレコード出力部と、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定するファイル特定部と、を有し、
前記レコード出力部は、特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、さらに、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力するファイル出力部を有する、
ことを特徴とする情報処理装置。
【０１３３】
（付記１０）
付記９において、
前記ファイル出力部は、
前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きさに基づいて決定し、
決定した前記出力順に基づいて、前記ファイル数に対応するファイルのそれぞれを出力する、
ことを特徴とする情報処理装置。
【０１３４】
（付記１１）
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、前記ファイル数に対応するファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードであって、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力する、
ことを特徴とする情報処理方法。
【０１３５】
（付記１２）
データの入力を受け付けた際に、該データを複数のレコードに分割し、
分割した前記複数のレコードのそれぞれに含まれるキーに基づいて、前記複数のレコードに含まれるレコードのそれぞれを、各レコードに含まれるキーに対応するレコード群に順次分類し、
前記レコード群のそれぞれに対応するキーの数が予め設定されたファイル数を超えていない場合、分類された前記レコードのそれぞれを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記レコード群のそれぞれに対応するキーの数が前記ファイル数を超えた場合、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済であるレコードを、各レコードに含まれるキーに対応する前記レコード群ごとにそれぞれ異なるファイルに出力し、
前記ファイル数に対応するファイルの中からランダムに抽出された複数のファイルの中で、最小のファイルサイズであるファイルを特定し、
特定した前記ファイルのファイルサイズが、レコードが分類された前記ファイルのファイルサイズの平均サイズ以下である場合、特定した前記ファイルに、分類された前記レコードのうち、同一のキーを含むレコードが前記ファイルに出力済でないレコードを出力し、
前記複数のレコードの全てが前記ファイル数に対応するファイルに出力された場合、前記ファイル数に対応するファイルを外部に出力する、
ことを特徴とする情報処理方法。
【０１３６】
（付記１３）
付記１２において、
前記外部に出力する処理では、
前記ファイル数に対応するファイルの出力順を、各ファイルのファイルサイズの大きさに基づいて決定し、
決定した前記出力順に基づいて、前記ファイル数に対応するファイルのそれぞれを出力する、
ことを特徴とする情報処理方法。
【符号の説明】
【０１３７】
１：情報処理装置            ２：情報処理システム
３：操作端末                １０：情報処理システム
【図１】
2020107010.tif 000003
【図２】
2020107010.tif 000004
【図３】
2020107010.tif 000005
【図４】
2020107010.tif 000006
【図５】
2020107010.tif 000007
【図６】
2020107010.tif 000008
【図７】
2020107010.tif 000009
【図８】
2020107010.tif 000010
【図９】
2020107010.tif 000011
【図１０】
2020107010.tif 000012
【図１１】
2020107010.tif 000013
【図１２】
2020107010.tif 000014
【図１３】
2020107010.tif 000015
【図１４】
2020107010.tif 000016
【図１５】
2020107010.tif 000017
【図１６】
2020107010.tif 000018
【図１７】
2020107010.tif 000019
【図１８】
2020107010.tif 000020
【図１９】
2020107010.tif 000021
【図２０】
2020107010.tif 000022
【図２１】
2020107010.tif 000023
【図２２】
2020107010.tif 000024
【図２３】
2020107010.tif 000025