(57)【要約】【課題】データ処理におけるメモリ使用量及びＩＯコストを軽減することを可能にすること。【解決手段】実施形態に係るデータ処理装置は、生成部と、格納部とを備える。生成部は、大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する。格納部は、生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する。【選択図】図１
2015005260.tif 000002
【特許請求の範囲】
【請求項１】
大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する生成部と、
生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する格納部と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記格納部は、生成された組から一つの組を選択し、選択した組に含まれるキーを前記組を記憶するメモリから検索し、当該メモリに当該キーが存在する場合には、当該メモリに格納済みのキーに対する値の記憶領域を拡張して選択した組に含まれる値を格納し、当該メモリに当該キーが存在しない場合には、選択した組に含まれるキーと値とを当該メモリに格納する格納処理を、生成された各組について実行し、生成された全ての組について当該格納処理が実行されると、当該メモリに格納された情報を前記記憶部に格納することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
データ処理装置が実行するデータ処理方法であって、
大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する生成ステップと、
生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する格納ステップと
を含むことを特徴とするデータ処理方法。
【請求項４】
大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する生成手順と、
生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する格納手順と
をコンピュータに実行させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理装置、データ処理方法及びデータ処理プログラムに関する。
【背景技術】
【０００２】
従来、大規模なデータを処理するデータ処理が行われている。例えば、大規模なデータを複数の物理マシンで分散して並列処理を行うＭａｐＲｅｄｕｃｅと呼ばれる技術がある。このＭａｐＲｅｄｕｃｅでは、まず、大規模な入力データを複数の物理マシンに分散し、分散された入力データから必要なデータを抽出するＭａｐ処理を各物理マシンで行う。そして、ＭａｐＲｅｄｕｃｅでは、各物理マシンにおいて抽出されたデータを一部の物理マシンに集約して統合するＲｅｄｕｃｅ処理を行うことで、大規模な入力データに対する処理結果を取得する。
【０００３】
上記のようなデータ処理においては、大規模な入力データを扱うこととなるため、各物理マシンにおけるメモリ使用量の軽減や、各物理マシン間におけるＩ／Ｏ（Input／Output）コストの軽減が望まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１１３４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
開示の実施形態は、上記に鑑みてなされたものであって、データ処理におけるメモリ使用量及びＩＯコストを軽減することを可能にするデータ処理装置、データ処理方法及びデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態に係るデータ処理装置は、生成部と、格納部とを備える。生成部は、大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する。格納部は、生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態に係るデータ処理システムの構成例を示す図である。
【図２】図２は、従来の結果出力部によってメモリ及びＨＤＤに格納される解析結果の一例を示す図である。
【図３】図３は、従来の結果出力部における処理の流れを説明するためのフローチャートである。
【図４】図４は、第１の実施形態に係る結果出力部によってメモリに格納される解析結果の一例を示す図である。
【図５】図５は、結果出力部によってＨＤＤに格納される解析結果の一例を示す図である。
【図６】図６は、第１の実施形態に係る結果出力部における処理の流れを説明するためのフローチャートである。
【図７】図７は、図６のステップＳ２００において実行される列指向形式によるメモリ格納処理の流れを説明するためのフローチャートである。
【図８】図８は、データ処理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、実施形態に係るデータ処理装置、データ処理方法及びデータ処理プログラムを説明する。なお、この実施形態によりこの発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１を用いて、第１の実施形態に係るデータ処理システムの構成例について説明する。図１は、第１の実施形態に係るデータ処理システムの構成例を示す図である。第１の実施形態に係るデータ処理システム１は、大規模なデータを処理するデータ処理を行う。図１に示すように、データ処理システム１には、物理マシン１０Ａと、物理マシン１０Ｂと、物理マシン１０Ｃとが含まれる。物理マシン１０Ａ〜１０Ｃは、例えば、ＰＣ（Personal  Computer）やサーバ装置等の情報処理装置である。物理マシン１０Ａ〜１０Ｃは、イーサネット（Ethernet、登録商標）等のネットワークにより接続されている。
【００１０】
図１に示す例では、データ処理システム１は、ＭａｐＲｅｄｕｃｅによって入力データ２を処理する。例えば、データ処理システム１は、後述の入力データ２により指定される処理対象のデータを各物理マシン１０Ａ〜１０Ｃに分散し、分散されたデータから必要なデータを抽出するＭａｐ処理を各物理マシン１０Ａ〜１０Ｃで行わせる。そして、データ処理システム１は、各物理マシン１０Ａ〜１０Ｃにおいて抽出されたデータを物理マシン１０Ｂに集約して、抽出されたデータを統合するＲｅｄｕｃｅ処理を行わせることで、入力データ２の処理結果である出力データ３を生成する。
【００１１】
入力データ２は、例えば、処理対象となるデータのファイルパス（格納場所）と、データに対して実行される解析プログラムと、処理結果の出力先のファイルパスとを含む。例えば、入力データ２は、データ処理システム１の操作者により予め指定される。
【００１２】
具体的には、データ処理の処理対象となるデータは、一つ或いは複数のファイルシステム等、物理マシン１０Ａ〜１０Ｃとは異なる装置に記憶されており、入力データ２には、処理対象となるデータのファイルパスが指定されている。より具体的には、各物理マシン１０Ａ〜１０Ｃに入力される入力データ２には、各物理マシン１０Ａ〜１０Ｃにおいてそれぞれ処理対象となるデータのファイルパスが個別に指定されている。また、解析プログラムとは、各物理マシン１０Ａ〜１０Ｃにおいて処理対象のデータに対して実行される解析プログラムである。この解析プログラムには、例えば、後述の結果出力部１２Ａ〜１２Ｆから出力されるデータを圧縮するか否かを示す情報や、その圧縮方式を示す情報が指定されている。
【００１３】
出力データ３は、入力データ２に対してデータ処理が行われた処理結果である。例えば、出力データ３は、後述の統合処理部１５から出力され、入力データ２において指定された処理結果の出力先のファイルパスに書き込まれる。
【００１４】
以下において、各物理マシン１０Ａ〜１０Ｃにおける処理を説明する。図１に示すように、物理マシン１０Ａは、データ解析部１１Ａ、データ解析部１１Ｂ、結果出力部１２Ａ及び結果出力部１２Ｂを有する。また、物理マシン１０Ｂは、データ解析部１１Ｃ、データ解析部１１Ｄ、結果出力部１２Ｃ、結果出力部１２Ｄ、中間統合処理部１３、中間データ１４及び統合処理部１５を有する。また、物理マシン１０Ｃは、データ解析部１１Ｅ、データ解析部１１Ｆ、結果出力部１２Ｅ及び結果出力部１２Ｆを有する。
【００１５】
データ解析部１１Ａは、Ｍａｐ処理を行う処理部であり、大規模なデータを処理するデータ処理において、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する。例えば、データ解析部１１Ａは、入力データ２を読み込み、ユーザによって指定された解析プログラムを実行することで、処理対象となるデータからキー（Ｋｅｙ）と値（Ｖａｌｕｅ）とのペア（組）を少なくとも一つ抽出する。そして、データ解析部１１Ａは、抽出した一つ又は複数のペアを解析プログラムの解析結果として結果出力部１２Ａに出力する。なお、データ解析部１１Ａ〜１１Ｆは、それぞれ同様の機能を有するので、データ解析部１１Ｂ〜１１Ｆについては説明を省略する。また、データ解析部１１Ａは、生成部の一例である。
【００１６】
結果出力部１２Ａは、例えば、データ解析部１１Ａにより出力された解析結果をＨＤＤ（Hard  Disk  Drive）等の外部記憶装置に格納する。ここで、例えば、入力データ２において、解析結果を圧縮することを示す情報が操作者により指定されている場合には、結果出力部１２Ａは、指定された圧縮方式で解析結果を圧縮した上でＨＤＤに格納する。なお、結果出力部１２Ａ〜１２Ｆは、それぞれ同様の機能を有するので、結果出力部１２Ｂ〜１２Ｆについては説明を省略する。また、外部記憶装置としては、ＨＤＤに限らず、例えば、ＤＶＤ（Digital  Video  Disc）ディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等、コンピュータが読み取り可能な記録媒体であれば良い。また、結果出力部１２Ａは、格納部の一例である。
【００１７】
中間統合処理部１３は、例えば、データ解析部１１Ａ〜１１Ｆによってそれぞれ出力された解析結果を統合する。一例としては、操作者は、データ解析部１１Ａ〜１１Ｆによってそれぞれ出力された解析結果が記憶された各外部記憶装置を、中間統合処理部１３に読み取らせる。そして、中間統合処理部１３は、データ解析部１１Ａ〜１１Ｆによってそれぞれ出力されたキーと値とのペアを結合し、キーの順序でソートを行い、その結果を中間データ１４として書き出す。この中間データ１４は、物理マシン１０Ｂ内部のハードディスクドライブ等の記憶装置に格納される。
【００１８】
統合処理部１５は、Ｒｅｄｕｃｅ処理を行う処理部であり、例えば、中間統合処理部１３によってソートされた中間データ１４を読み取り、入力データ２において操作者により指定されたデータ処理を行い、処理結果を出力データ３として出力する。この出力データ３は、入力データ２において指定された処理結果の出力先のファイルパス、例えば、所定のファイルシステムに書き込まれる。
【００１９】
このように、第１の実施形態に係るデータ処理システム１は、データ処理を行う。これにより、データ処理システム１は、データ解析部１１Ａ〜１１Ｆのプロセスの一部が故障した際に入力データ２を読み直して処理をやり直す場合に生じるＩ／Ｏ（Input／Output）コストを削減する。
【００２０】
なお、第１の実施形態に係るデータ処理システムは、図１に示した例に限定されるものではない。例えば、物理マシン１０の数や、各物理マシン１０が有するデータ解析部１１及び結果出力部１２の数については、操作者の任意の数に変更可能である。
【００２１】
また、図１の例では、物理マシン１０Ｂが中間統合処理部１３及び統合処理部１５を有する場合を例示したが、実施形態はこれに限定されるものではない。例えば、物理マシン１０Ａ又は物理マシン１０Ｃが中間統合処理部１３及び統合処理部１５を有することとしても良い。また、例えば、複数の出力データ３を得る場合には、複数の出力データ３をそれぞれ生成するために、複数の物理マシン１０が中間統合処理部１３及び統合処理部１５をそれぞれ有していても良い。また、これに限らず、物理マシン１０Ａ〜１０Ｃとは異なる装置が、中間統合処理部１３及び統合処理部１５を有していても良い。この場合、当該装置が、物理マシン１０Ａ〜１０Ｃから出力された解析結果を統合し、出力データ３を出力する。
【００２２】
なお、本実施形態では、物理マシン１０Ａ〜１０Ｃそれぞれを区別することなく総称する場合に、「物理マシン１０」と表記する。また、データ解析部１１Ａ〜１１Ｆそれぞれを区別することなく総称する場合に、「データ解析部１１」と表記する。また、結果出力部１２Ａ〜１２Ｆそれぞれを区別することなく総称する場合に、「結果出力部１２」と表記する。また、物理マシン１０は、データ処理装置の一例である。
【００２３】
ところで、従来の結果出力部１２は、必ずしも効率良く解析結果をＨＤＤ（外部記憶装置）に格納していなかった。図２は、従来の結果出力部１２によってメモリ及びＨＤＤに格納される解析結果の一例を示す図である。図２に示す例では、解析結果として、（Ｋｅｙ１，Ｖａｌｕｅ１−１）、（Ｋｅｙ１，Ｖａｌｕｅ１−２）、（Ｋｅｙ２，Ｖａｌｕｅ２−１）、（Ｋｅｙ１，Ｖａｌｕｅ１−３）及び（Ｋｅｙ２，Ｖａｌｕｅ２−２）の５ペアがデータ解析部１１から出力された場合を例示する。
【００２４】
図２に示すように、従来の結果出力部１２は、データ解析部１１によって出力された５ペアのキー及び値を連続値として交互にメモリに格納していた。具体的には、従来の結果出力部１２は、バッファ上のスタック構造のデータとして、上から順に、「Ｋｅｙ１、Ｖａｌｕｅ１−１、Ｋｅｙ１、Ｖａｌｕｅ１−２、Ｋｅｙ２、Ｖａｌｕｅ２−１、Ｋｅｙ１、Ｖａｌｕｅ１−３、Ｋｅｙ２、Ｖａｌｕｅ２−２」を格納していた。ここで、図２に示す例では、Ｋｅｙ１を含むペアが３ペア存在するが、結果出力部１２は、３ペアともそのままメモリに格納するので、メモリには３つのＫｅｙ１が格納されていた。また、Ｋｅｙ２を含むペアが２ペア存在するが、結果出力部１２は、２ペアともそのままメモリに格納するので、メモリには２つのＫｅｙ２が格納されていた。
【００２５】
図３を用いて、従来の結果出力部１２における処理を説明する。図３は、従来の結果出力部１２における処理の流れを説明するためのフローチャートである。図３に示す例では、従来の結果出力部１２は、解析結果のうち１ペアをメモリ上のバッファに格納する（ステップＳ１００）。例えば、従来の結果出力部１２は、データ解析部１１から解析結果を受け付けると、解析結果に含まれる複数のペア（キー、値）のうち、１ペアを自装置（物理マシン１０）のメモリ上のバッファに格納する。このとき、従来の結果出力部１２は、例えば、複数のペアのうち、データ解析部１１によって生成された時刻が早いペアから順に１ペアを選択し、選択した１ペアをバッファに格納する。
【００２６】
続いて、従来の結果出力部１２は、メモリ使用量が閾値を超えたか否かを判定する（ステップＳ１１０）。この閾値は、例えば、操作者によって予め物理マシン１０ごとに設定されたメモリ使用量の上限値である。
【００２７】
メモリ使用量が閾値を超えた場合には（ステップＳ１１０肯定）、従来の結果出力部１２は、圧縮することが指定されているか否かを判定する（ステップＳ１２０）。例えば、従来の結果出力部１２は、入力データ２において解析結果を圧縮することを示す情報が指定されているか否かを判定する。
【００２８】
圧縮することが指定されている場合には（ステップＳ１２０肯定）、従来の結果出力部１２は、入力データ２において指定された圧縮方式でバッファに格納済みのデータを圧縮する（ステップＳ１３０）。そして、従来の結果出力部１２は、バッファに格納されたデータを外部記憶装置に書き出す（ステップＳ１４０）。
【００２９】
そして、従来の結果出力部１２は、ループ終了フラグが立っているか否かを判定する（ステップＳ１５０）。このループ終了フラグは、結果出力部１２がデータ解析部１１から受け付けた解析結果にペアが残っていないことを示すフラグである。ループ終了フラグが立っている場合には（ステップＳ１５０肯定）、従来の結果出力部１２は、処理を終了する。
【００３０】
一方、ループ終了フラグが立っていない場合には（ステップＳ１５０否定）、従来の結果出力部１２は、ステップＳ１００の処理へ移行する。
【００３１】
また、圧縮することが指定されていない場合には（ステップＳ１２０否定）、従来の結果出力部１２は、ステップＳ１４０の処理へ移行する。つまり、従来の結果出力部１２は、バッファに格納されたデータを圧縮せずに、外部記憶装置に書き出す。
【００３２】
また、メモリ使用量が閾値を超えていない場合には（ステップＳ１１０否定）、従来の結果出力部１２は、解析結果が空か否かを判定する（ステップＳ１６０）。そして、解析結果が空でなければ（ステップＳ１６０否定）、従来の結果出力部１２は、ステップＳ１００の処理へ移行する。
【００３３】
一方、解析結果が空であれば（ステップＳ１６０肯定）、従来の結果出力部１２は、ループ終了フラグを立てて（ステップＳ１７０）、ステップＳ１２０の処理へ移行する。そして、従来の結果出力部１２は、上記のステップＳ１００〜ステップＳ１７０までの処理を繰り返し行い、ステップＳ１５０においてループ終了フラグが立っていると判定された場合に（ステップＳ１５０肯定）、処理を終了する。
【００３４】
このように、従来の結果出力部１２は、図２に示すように、解析結果に同じキーが含まれていたとしても、解析結果に含まれる全てのキーをバッファに格納しているため、メモリ使用量を増大させていた。
【００３５】
また、キー同士或いは値同士であれば、データ型（整数型、文字列型等）が同一であるが、キー及び値は、異なるデータ型である場合が多い。従来の結果出力部１２は、図２に示すように、キー及び値を交互に格納するため、キー及び値が異なるデータ型であれば、異なるデータ型のデータが交互に格納されることとなる。この場合、データに対する圧縮が効きにくくなってしまうため、従来の結果出力部１２は、各物理マシン１０間におけるＩ／Ｏコストを増大させていた。
【００３６】
そこで、第１の実施形態に係る結果出力部１２は、以下に説明する処理により、データ処理におけるメモリ使用量及びＩＯコストを軽減することを可能にする。
【００３７】
第１の実施形態に係る結果出力部１２は、データ解析部１１によって生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する。例えば、結果出力部１２は、生成された組から一つの組を選択する。そして、結果出力部１２は、選択した組に含まれるキーをメモリから検索する。そして、結果出力部１２は、検索したキーがメモリに存在する場合には、メモリに格納済みのキーに対する値のリストを拡張して、選択した組に含まれる値を格納する。結果出力部１２は、検索したキーがメモリに存在しない場合には、選択した組に含まれるキーと値とをメモリに格納する。そして、結果出力部１２は、データ解析部１１によって生成された全ての組について上記の処理（メモリ格納処理）が実行されると、メモリに格納された情報をＨＤＤに格納する。
【００３８】
図４は、第１の実施形態に係る結果出力部１２によってメモリに格納される解析結果の一例を示す図である。図４に示す例では、解析結果として、（Ｋｅｙ１，Ｖａｌｕｅ１−１）、（Ｋｅｙ１，Ｖａｌｕｅ１−２）、（Ｋｅｙ２，Ｖａｌｕｅ２−１）、（Ｋｅｙ１，Ｖａｌｕｅ１−３）及び（Ｋｅｙ２，Ｖａｌｕｅ２−２）の５ペアがデータ解析部１１から出力された場合を例示する。
【００３９】
図４に示すように、第１の実施形態に係る結果出力部１２は、メモリに解析結果を格納する場合に、データ解析部１１によって生成された組をＫｅｙごとに分類して格納する。具体的には、結果出力部１２は、図４の左側に示すように、Ｋｅｙ１に対応する値「Ｖａｌｕｅ１−１、Ｖａｌｕｅ１−２、Ｖａｌｕｅ１−３」が、Ｋｅｙ１に対する列指向形式で格納する。また、結果出力部１２は、図４の右側に示すように、Ｋｅｙ２に対応する値「Ｖａｌｕｅ２−１、Ｖａｌｕｅ２−２」が、Ｋｅｙ２に対する列指向形式で格納する。なお、図４は、結果出力部１２が、Ｋｅｙ１に対する値とＫｅｙ２に対する値とを連続値として格納していないことを示す。
【００４０】
図５は、結果出力部１２によってＨＤＤに格納される解析結果の一例を示す図である。図５には、結果出力部１２が、図４に示したメモリの情報をＨＤＤに格納した場合を例示する。
【００４１】
図５に示すように、結果出力部１２は、ＨＤＤに解析結果を格納する場合に、データ解析部１１によって生成された組をＫｅｙごとに分類して格納する。具体的には、結果出力部１２は、ＨＤＤにスタック構造のデータとして、上から順に「Ｋｅｙ１、Ｖａｌｕｅ１−１、Ｖａｌｕｅ１−２、Ｖａｌｕｅ１−３、Ｋｅｙ２、Ｖａｌｕｅ２−１、Ｖａｌｕｅ２−２」を格納する。
【００４２】
このように、第１の実施形態に係る結果出力部１２は、データ解析部１１によって生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けてＨＤＤに格納する。
【００４３】
図６を用いて、第１の実施形態に係る結果出力部１２における処理を説明する。図６は、第１の実施形態に係る結果出力部１２における処理の流れを説明するためのフローチャートである。
【００４４】
図６に示すように、結果出力部１２は、列指向形式によるメモリ格納処理を行う（ステップＳ２００）。ここで、図７を用いて、図６のステップＳ２００において実行される列指向形式によるメモリ格納処理の流れを説明する。図７は、図６のステップＳ２００において実行される列指向形式によるメモリ格納処理の流れを説明するためのフローチャートである。
【００４５】
図７に示すように、結果出力部１２は、データ解析部１１によって出力された解析結果のうち１ペアを選択する（ステップＳ３００）。そして、結果出力部１２は、選択したペアに含まれるキーを、メモリ上のバッファから検索する（ステップＳ３１０）。
【００４６】
ここで、バッファに検索したキーが存在する場合には（ステップＳ３２０肯定）、結果出力部１２は、バッファに格納済みのキーに対する値のリスト（配列）を拡張し、選択したペアに含まれる値を格納する（ステップＳ３３０）。つまり、結果出力部１２は、キーに対応する値の個数が可変長のリストのデータ形式として、選択したペアに含まれる値をバッファに格納する。
【００４７】
一方、バッファに検索したキーが存在しない場合には（ステップＳ３２０否定）、結果出力部１２は、選択したペアに含まれるキーと値とをバッファに新規に格納する（ステップＳ３４０）。
【００４８】
図６の説明に戻る。結果出力部１２は、メモリ格納処理が行われると、ステップＳ２１０の処理へ移行する。これ以降、結果出力部１２は、ステップＳ２００〜ステップＳ２７０の処理を行うことで、外部記憶装置に解析結果を格納する。なお、ステップＳ２１０〜ステップＳ２７０の処理は、ステップＳ１１０〜ステップＳ１７０の処理と同様であるので、説明を省略する。
【００４９】
上述してきたように、第１の実施形態に係る物理マシン１０のデータ解析部１１は、処理対象となるデータに対して関数を適用することで、キーと値との組を少なくとも一つ生成する。そして、物理マシン１０の結果出力部１２は、データ解析部１１によって生成された組のうち、同一のキーに対応する複数の値を当該キーごとに対応付けて記憶部に格納する。このため、第１の実施形態に係る物理マシン１０は、データ処理におけるメモリ使用量及びＩＯコストを軽減することを可能にする。例えば、解析結果に同じキーが含まれていれば、同じキーを重複してメモリに格納しないので、メモリ使用量を軽減することができる。また、物理マシン１０は、メモリ使用量が軽減することで、メモリ使用量が閾値を超える頻度が少なくなるので、ＨＤＤに書き出す頻度を減少させることができ、更には、処理速度を向上させることができる。
【００５０】
また、例えば、第１の実施形態に係る物理マシン１０においては、メモリ内で同じデータ型のデータが連続することとなる。これにより、データに対する圧縮が効き易くなるので、物理マシン間におけるＩ／Ｏ（Input／Output）コストを軽減することができる。
【００５１】
具体的に、キーと値とのデータの大きさの比を１：１と仮定すると、物理マシン１０は、キーが１つであれば、メモリ使用量とＩ／Ｏコストとを最大で５０％程度軽減することができる。また、物理マシン１０においては、メモリ及びＨＤＤ内では同じデータ型の値が並ぶこととなるため、型固有の圧縮方法を適用することができる。また、物理マシン１０は、型固有の圧縮方法を適用しない場合においても、圧縮効率の上昇が見込めるため、処理効率を向上させることができる。更に、物理マシン１０は、ＨＤＤに格納するデータサイズを抑制するので、中間統合処理部１３及び統合処理部１５におけるメモリ使用量やＩ／Ｏコストについても軽減することができる。
【００５２】
（第２の実施形態）
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されて良いものである。そこで、以下では第２の実施形態として本発明に含まれる他の実施形態を説明する。
【００５３】
例えば、上記の実施形態では、結果出力部１２が外部記憶装置に解析結果を格納する場合を説明したが、これに限定されるものではない。例えば、物理マシン１０Ａの結果出力部１２Ａは、外部記憶装置として、物理マシン１０Ｂが有する記憶装置に解析結果を格納しても良い。また、物理マシン１０Ａの結果出力部１２Ａは、外部記憶装置に格納せずに、メモリ上に記憶された解析結果（図６）を物理マシン１０Ｂに送信し、中間統合処理部１３での処理を実行しても良い。
【００５４】
また、上記の実施形態では、処理対象となるデータが、物理マシン１０とは異なるファイルシステムに記憶されている場合を説明したが、これに限定されるものではない。例えば、物理マシン１０自体がファイルシステムとして処理対象となるデータを記憶していても良い。
【００５５】
また、例えば、各装置の分散・統合の具体的形態（例えば、図１の形態）は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、物理マシン１０Ａ〜１０Ｃとは異なる装置が、中間統合処理部１３及び統合処理部１５を有していても良い。更に、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５６】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００５７】
また、上記実施形態において説明した物理マシン１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第１の実施形態に係る物理マシン１０が実行する処理をコンピュータが実行可能な言語で記述したデータ処理プログラムを作成することもできる。この場合、コンピュータがデータ処理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるデータ処理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたデータ処理プログラムをコンピュータに読み込ませて実行することにより上記第１の実施形態と同様の処理を実現してもよい。以下に、図１に示した物理マシン１０と同様の機能を実現するデータ処理プログラムを実行するコンピュータの一例を説明する。
【００５８】
図８は、データ処理プログラムを実行するコンピュータ１０００を示す図である。図８に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００５９】
メモリ１０１０は、図８に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図８に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図８に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。
【００６０】
ここで、図８に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記のデータ処理プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【００６１】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各手順を実行する。
【００６２】
なお、データ処理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、データ処理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６３】
１０      物理マシン
１１      データ解析部
１２      結果出力部
【図１】
2015005260.tif 000003
【図２】
2015005260.tif 000004
【図３】
2015005260.tif 000005
【図４】
2015005260.tif 000006
【図５】
2015005260.tif 000007
【図６】
2015005260.tif 000008
【図７】
2015005260.tif 000009
【図８】
2015005260.tif 000010