(57)【特許請求の範囲】
【請求項１】
コンピュータに、
データベースに格納された複数のデータそれぞれに対して複数の処理要求の処理を実行し、前記複数のデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ算出し、
前記複数のデータに含まれる１つのデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ配列した処理時間ベクトルを、データ毎に設定した中間テーブルを生成し、前記中間テーブルの前記データ毎に設定された前記処理時間ベクトルを基にして、前記複数のデータに含まれる各データの類似度をそれぞれ算出し、前記類似度を基にして、前記複数のデータを複数のデータベースに配置する
ことを実行させることを特徴とするデータ配置プログラム。
【請求項２】
前記複数のデータを複数のデータベースに配置する処理は、前記中間テーブルを基にして、前記複数のデータにそれぞれ設定された処理時間ベクトルが部分的に類似するデータの集合を同一のクラスタに分類するクラスタリングを実行し、同一のクラスタに含まれるデータを、それぞれ異なるデータベースに分散させることを特徴とする請求項１に記載のデータ配置プログラム。
【請求項３】
前記中間テーブルは、前記データベースに格納された複数のデータそれぞれに対して実行された前記複数の処理要求の数に対応する次元を有しており、
前記処理時間ベクトル間の類似度の値が類似するもの同士を統合することで、前記次元を削減する処理を更に実行することを特徴とする請求項１に記載のデータ配置プログラム。
【請求項４】
コンピュータが実行するデータ配置方法であって、
データベースに格納された複数のデータそれぞれに対して複数の処理要求の処理を実行し、前記複数のデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ算出し、
前記複数のデータに含まれる１つのデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ配列した処理時間ベクトルを、データ毎に設定した中間テーブルを生成し、前記中間テーブルの前記データ毎に設定された前記処理時間ベクトルを基にして、前記複数のデータに含まれる各データの類似度をそれぞれ算出し、前記類似度を基にして、前記複数のデータを複数のデータベースに配置する
処理を実行することを特徴とするデータ配置方法。
【請求項５】
データベースに格納された複数のデータそれぞれに対して複数の処理要求の処理を実行し、前記複数のデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ算出し、前記複数のデータに含まれる１つのデータに対して前記複数の処理要求の処理を行った場合の処理時間をそれぞれ配列した処理時間ベクトルを、データ毎に設定した中間テーブルを生成し、前記中間テーブルの前記データ毎に設定された前記処理時間ベクトルを基にして、前記複数のデータに含まれる各データの類似度をそれぞれ算出する算出部と
前記類似度を基にして、前記複数のデータを複数のデータベースに配置する配置部と、
を有することを特徴とするデータ配置装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ配置プログラム等に関する。
【背景技術】
【０００２】
画像や音声、センサーデータ等の非構造データを用いた照合処理や類似性の計算は時間がかかるものが多い。このため、複数の計算資源にレコードデータを割り振り、処理を分散させることで、照合処理を効率化する従来技術がある。
【０００３】
図１９は、従来技術の一例を説明するための図である。例えば、あるクエリを用いて、レコードデータを照合する場合に、処理時間がクエリに依存せず、レコードデータのみに依存する場合がある。例えば、音楽ファイルの中である周波数成分が何秒であるかをカウントする場合には、処理時間は音楽の長さに依存する。このような場合には、混合整数計画問題を解き、処理がほぼ均等になるように、レコードデータを各計算資源に配布すればよい。
【０００４】
図１９に示す例では、レコードデータ１０ａ〜１０ｊが存在し、各レコードデータの長さをレコードデータの処理に要する処理時間とする。例えば、レコードデータ１０ａ，１０ｂ，１０ｊを第１サーバに配布し、レコードデータ１０ｃ，１０ｅ，１０ｄ，１０ｇを第２サーバに配布し、レコードデータ１０ｉ，１０ｆ，１０ｈを第３サーバに配布する。このように、レコードデータ１０ａ〜１０ｊを配布することで、各処理時間を均等にすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１９６２１２号公報
【特許文献２】特開２００７−３２３３１９号公報
【特許文献３】特表２００９−５０９２１５号公報
【特許文献４】特開２０１１−１０３０８２号公報
【特許文献５】特開２００１−１３４５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、クエリデータの実行に要する時間を短縮することができないという問題がある。
【０００７】
処理時間がレコードデータのみに依存せず、クエリデータとレコードデータとのデータ対により、処理時間が変動する場合がある。例えば、クエリデータとレコードデータとが似ている場合には、かかるレコードデータを処理する処理時間が長くなる。このため、クエリデータに類似する複数のレコードデータがある計算資源に集中して配置されると、ある計算資源の処理時間が長くなる。
【０００８】
１つの側面では、本発明は、クエリデータの実行に要する時間を短縮することができるデータ配置プログラム、データ配置方法およびデータ配置装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、コンピュータに下記の処理を実行させる。コンピュータは、データベースに格納されたデータに対して処理要求を実行し、処理要求とデータとの組み合わせにおける処理の類似度を算出する。コンピュータは、類似度が分散するようにデータを分割し
分割された前記データに対して受け付けた処理要求を処理する。
【発明の効果】
【００１０】
本発明の１実施態様によれば、クエリデータの実行に要する時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例に係るデータ配置装置の処理を説明するための図（１）である。
【図２】図２は、本実施例に係るデータ配置装置の処理を説明するための図（２）である。
【図３】図３は、本実施例に係るデータ配置装置の処理を説明するための図（３）である。
【図４】図４は、本実施例に係るデータ配置装置の処理を説明するための図（４）である。
【図５】図５は、中間テーブルのデータ構造の一例を示す図である。
【図６】図６は、本実施例に係るデータ配置装置の構成を示す機能ブロック図である。
【図７】図７は、レコードデータテーブルのデータ構造の一例を示す図である。
【図８】図８は、類似度行列データのデータ構造の一例を示す図である。
【図９】図９は、配置先情報のデータ構造の一例を示す図である。
【図１０】図１０は、ＣＬＩＱＵＥのアルゴリズムを模式的に説明するための図である。
【図１１】図１１は、ＤＢＳＣＡＮのアルゴリズムを概念的に説明するフローチャートである。
【図１２Ａ】図１２Ａは、density-connectedの定義を説明するための図（１）である。
【図１２Ｂ】図１２Ｂは、density-connectedの定義を説明するための図（２）である。
【図１３】図１３は、density-reachableの定義を説明するための図である。
【図１４】図１４は、directly  density-reachableの定義を説明するための図である。
【図１５】図１５は、安定マッチングと不安定マッチングとを説明するための図である。
【図１６】図１６は、ゲールシャプレイのアルゴリズムの処理手順の一例を示す図である。
【図１７】図１７は、本実施例に係るデータ処理装置の処理手順を示すフローチャートである。
【図１８】図１８は、データ配置プログラムを実行するコンピュータの一例を示す図である。
【図１９】図１９は、従来技術の一例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するデータ配置プログラム、データ配置方法およびデータ配置装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
本実施例に係るデータ配置装置の処理の一例について説明する。図１〜図４は、本実施例に係るデータ配置装置の処理を説明するための図である。
【００１４】
図１について説明する。例えば、データ配置装置は、記憶部１１０とＮ個の計算資源Ｓ１〜ＳＮを有する。記憶部１１０は、レコードデータテーブル１１０ａを格納し、レコードデータテーブル１１０ａは、Ｍ個のレコードデータｒ１〜ｒＭを格納する。データ配置装置は、従来手法を用いて、レコードデータｒ１〜ｒＭを計算資源Ｓ１〜ＳＮに分散配置する。例えば、データ配置装置は、各計算資源Ｓ１〜ＳＮに格納されるレコードデータの数がほぼ均等になるように、各レコードデータｒ１〜ｒＭをランダムに、計算資源Ｓ１〜ＳＮに割り振る。
【００１５】
図２について説明する。データ配置装置は、クエリデータを受け付けると、クエリデータを用いて、各計算資源Ｓ１〜ＳＭに格納されたレコードデータと検索・照合処理を行う。データ配置装置は、クエリデータを用いた、各レコードデータに対する処理の処理時間を計測し、計測した結果を中間テーブルに登録する。データ配置装置は、クエリデータを受け取る度に、上記処理を繰り返し実行する。
【００１６】
図５は、中間テーブルのデータ構造の一例を示す図である。中間テーブル１１０ｂは、クエリデータと、レコードデータと、処理に要した処理時間とを対応付けるテーブルである。例えば、図５に示すレコードデータｒ１に対応する行では、クエリデータｑ１〜ｑＱを用いた場合の処理時間をそれぞれ示す。例えば、クエリデータｑ１を用いて、レコードデータｒ１を処理した場合の処理時間は「５秒」となる。一般的に、クエリデータとレコードデータとが類似していれば処理時間が長くなる。このため、中間テーブル１１０ｂに示す処理時間は、クエリデータとレコードデータとの類似度を示す指標ともいえる。
【００１７】
以下の説明では、レコードデータの各クエリデータによる処理時間の組を、適宜、処理時間ベクトルと表記する。例えば、レコードデータｒ１の処理時間ベクトルは、（５、８、１０、・・・、５）となる。例えば、全てのクエリデータｑ１〜ｑＱに対する処理時間を含むレコードデータは、全空間に存在するレコードデータとなる。
【００１８】
図５において、レコードデータｒ３の処理時間ベクトルと、レコードデータｒ４の処理時間ベクトルとは、全体のパターンが類似している。これに対して、レコードデータｒ１の処理時間ベクトルと、レコードデータｒ２の処理時間ベクトルとは、クエリデータｑ２，ｑ３に対するパターンが部分的に類似しているが、それ以外の類似性は低いため、全体のパターンが類似しているとはいえない。
【００１９】
データ配置装置は、部分空間クラスタリングまたは射影クラスタリングを使って、処理時間ベクトルのパターンが部分的に類似するレコードデータを検索する。例えば、処理時間ベクトルのパターンが部分的に類似するレコードデータは、図５に示す例では、レコードデータｒ１およびレコードデータｒ２となる。
【００２０】
図３について説明する。データ配置装置は、全空間Ａに存在するレコードデータｒ１〜ｒＭを、軸に平行な低次元部分空間に射影したときにクラスタを作るレコードデータの集合を探し出す。例えば、データ配置装置が、クエリデータｑ２とクエリｑ３との平面に、全空間Ａに存在するレコードデータｒ１〜ｒＭを射影した場合、レコードデータｒ１、ｒ２、ｒ１０、ｒ２０、ｒ３０、ｒ４０からなるクラスタＣ１が生成されたものとする。この場合には、データ配置装置は、レコードデータｒ１、ｒ２、ｒ１０、ｒ２０、ｒ３０、ｒ４０が、処理時間ベクトルが部分的に類似しているレコードデータの集合であると判定する。
【００２１】
図４について説明する。データ配置装置は、同じクラスタに属するレコードデータについては、レコードデータ間の距離に基づいて、類似度を計算する。一方、違うクラスタに属しているレコードデータについては、類似度をマイナス∞とする。例えば、図４に示す例では、クラスタＣ１にレコードデータｒ１、ｒ２、ｒ１０が含まれ、クラスタＣ２にレコードデータｒ４、ｒ５、ｒ６、ｒ１１、ｒ１２が含まれる。
【００２２】
データ配置装置は、レコードデータｒ１について、同じクラスタに属するレコードデータｒ２、ｒ１０については、距離に基づき、類似度を算出する。データ配置装置は、レコードデータｒ１について、異なるクラスタに属するレコードデータについては、類似度を−∞とする。データ配置装置は、他のレコードデータについても、同様の処理を実行することで、各レコードデータの類似度を算出することで、類似度行列データを生成する。類似度行列データは、各レコードデータ間の類似度を定義するデータである。
【００２３】
データ配置装置は、類似度行列データを基にして、類似度の大きい各レコードデータが、同一の計算資源に配置されないように、安定マッチングを行い、レコードデータｒ１〜ｒＭを、計算資源Ｓ１〜ＳＮに配置する。
【００２４】
次に、本実施例に係るデータ配置装置の構成の一例について説明する。図６は、本実施例に係るデータ配置装置の構成を示す機能ブロック図である。図６に示すように、このデータ配置装置１００は、計算資源Ｓ１〜ＳＮ、記憶部１１０、入力部１２０、照合処理要求部１３０、処理時間パターン判定部１４０、マッチング処理部１５０、配置処理部１６０を有する。このうち、処理時間パターン判定部１４０は、算出部に対応する。マッチング処理部１５０および配置処理部１６０は、配置部に対応する。
【００２５】
計算資源Ｓ１は、計算資源Ｓ１に配置された複数のレコードデータと、照合処理要求部１３０から取得するクエリデータとを照合し、クエリデータに対応するレコードデータを検索する処理を実行する装置である。計算資源Ｓ１は、検索結果を外部装置に出力する。また、計算資源Ｓ１は、照合処理要求部１３０からクエリデータを取得する度に、上記処理を繰り返し実行する。また、計算資源Ｓ１は、クエリデータと、レコードデータとの組について、照合に要した処理時間を計測し、クエリデータとレコードデータとの組毎に、処理時間のデータを、処理時間パターン判定部１４０に通知する。計算資源Ｓ２〜ＳＮに関する処理の説明は、計算資源Ｓ１に関する説明と同様である。例えば、データ配置装置は、Ｎ個の計算資源Ｓ１〜ＳＮを有する。
【００２６】
記憶部１１０は、レコードデータテーブル１１０ａ、中間テーブル１１０ｂ、類似度行列データ１１０ｃ、配置先情報１１０ｄを有する。記憶部１１０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００２７】
レコードデータテーブル１１０ａは、各計算資源Ｓ１〜ＳＮに配置するレコードデータを有するテーブルである。図７は、レコードデータテーブルのデータ構造の一例を示す図である。図７に示すように、このレコードデータテーブル１１０ａは、データ識別子とレコードデータとを対応付ける。データ識別子は、レコードデータを一意に識別する情報である。レコードデータは、各計算資源Ｓ１〜ＳＮに配置されるデータである。例えば、データ識別子「００１」に対応するレコードデータは「２．０，４．１，６．４」となる。ここでは、データ識別子と、レコードデータの組とを対応付ける例を示したが、単一のデータ識別子に、単一のレコードデータを対応付けてもよい。
【００２８】
また、レコードデータテーブル１１０ａは、レコードデータと、クラスタ識別子とを更に対応付けてもよい。クラスタ識別子は、レコードデータが属するクラスタを一意に識別する情報である。レコードデータに対応するクラスタ識別子は、後述する処理時間パターン判定部１４０によって設定される。ここでは図示を省略するが、レコードデータテーブル１１０ａは、更に、クラスタ識別子に対応付けて、クラスタの次元数やクラスタの密度を対応付けて保持してもよい。
【００２９】
中間テーブル１１０ｂは、クエリデータと、レコードデータと、クエリデータによってレコードデータを照合する場合の処理に要した処理時間とを対応付けるテーブルである。中間テーブル１１０ｂのデータ構造は、図５に示した中間テーブル１１０ｂに対応する。
【００３０】
類似度行列データ１１０ｃは、各レコードデータの類似度を示すデータである。図８は、類似度行列データのデータ構造の一例を示す図である。図８に示す例では、各データ識別子の組と、各データ識別子の組に対する類似度とを対応付ける。例えば、図８の類似度行列データ１１０ｃの１行目では、データ識別子「００１」のレコードデータと、他のレコードデータとの類似度が登録されている。例えば、データ識別子「００１」のレコードデータと、データ識別子「００２」との類似度が「１０」となっている。
【００３１】
配置先情報１１０ｄは、データの配置先を示す情報である。図９は、配置先情報のデータ構造の一例を示す図である。図９に示すように、この配置先情報１１０ｄは、データ識別子と、配置先とを対応付ける。データ識別子は、図７等で説明したデータ識別子に対応する。配置先は、データを配置する計算資源を一意に識別する情報である。例えば、図９において、データ識別子「００１」に対応するデータの配置先が「計算資源Ｓ１」となっている。
【００３２】
図６の説明に戻る。入力部１２０は、各種の情報を照合処理要求部１３０およびマッチング処理部１５０に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル等に対応する。例えば、利用者は、入力部１２０を操作して、照合処理要求部１３０にクエリデータを入力することで、照合要求を行う。また、利用者は、入力部１２０を操作して、マッチング処理部１５０に、データ配列決定要求を入力する。
【００３３】
照合処理要求部１３０は、入力部１２０からクエリデータを取得した場合に、各計算資源Ｓ１〜ＳＮに対してクエリデータを出力し、照合処理要求を行う処理部である。
【００３４】
処理時間パターン判定部１４０は、各計算資源Ｓ１〜ＳＮから、クエリデータとレコードデータとの組と、処理時間の情報を取得し、取得した情報を基にして、中間テーブル１１０ｂを生成する。また、処理時間パターン判定部１４０は、中間テーブル１１０ｂを基にして、各処理時間ベクトルを部分空間クラスタリングすることで、処理時間のパターンが部分的に類似する処理時間ベクトル毎に、処理時間ベクトルを分類する。処理時間パターン判定部１４０は、同一のクラスタに分類された処理時間ベクトルのレコードデータについては、レコードデータ間の距離を類似度として算出する。また、処理時間パターン判定部１４０は、違うクラスタに属するレコードデータ間の類似度を−∞とする。処理時間パターン判定部１４０は、上記処理を実行することで、類似度行列データ１１０ｃを生成する。
【００３５】
続いて、処理時間パターン判定部１４０の処理を具体的に説明する。処理時間パターン判定部１４０は、中間テーブル１１０ｂに対して、前処理を行い、前処理を行った中間テーブル１１０ｂに対して部分空間クラスタリングを実行する。
【００３６】
処理時間パターン判定部１４０が実行する前処理について説明する。前提条件として、計算資源の数をＮ、クエリデータの数をＱ、レコードデータの数をＭとする。ｉ番目のレコードデータｒｉのｊ番目のクエリデータｑｊに対する処理時間をＴｉｊとする。処理時間行列ＰをＭ×Ｑ行列とし、処理時間行列Ｐの各（ｉ，ｊ）要素をＴｉｊとする。処理時間行列Ｐの各値は、中間テーブル１１０ｂの各値に対応する。処理時間行列Ｐのｊ番目の列ベクトルを、ｊ番目の属性の「特徴ベクトル」とする。
【００３７】
処理時間パターン判定部１４０は、ｋ−ｍｅａｎｓまたはｘ−ｍｅａｎｓ等のクラスタリング手法を用いて、類似する特徴ベクトルを統合する。例えば、処理時間パターン判定部１４０は、処理時間行列Ｐに含まれるＱ個の特徴ベクトルをクラスタリングし、Ｑ’個のクラスタに、Ｑ個の特徴ベクトルを分類する。処理時間パターン判定部１４０は、同一のクラスタに分類された特徴ベクトルを算術平均することで、特徴ベクトルを統合する。係る前処理を、処理時間パターン判定部１４０が実行することで、Ｍ×Ｑ行列の処理時間行列Ｐは、Ｍ×Ｑ’行列の処理時間行列Ｐ’となる。
【００３８】
例えば、処理時間パターン判定部１４０は、処理時間行列Ｐ’のｊ番目の列ベクトルを、ｊ番目のクラスタに属するベクトルの算術平均とする。また、処理時間パターン判定部１４０は、Ｑ’次元ベクトルである重み行列Ｗのｊ番目の成分を、ｊ番目のクラスタに属するベクトルの数の平方根とする。処理時間パターン判定部１４０は、処理時間行列Ｐ’のｉ番目の行ベクトルを、レコードデータｒｉの処理時間ベクトルとする。
【００３９】
ここで、処理時間パターン判定部１４０が、前処理を行う理由について説明する。クラスタリングを行う処理時間パターン空間は、次元数が大きくなりやすい。計算量の観点から、属性数が少ない方がよい。このため、処理時間パターン判定部１４０は、類似する属性を一つにまとめてしまうことで、処理時間パターン空間の次元を削除する。
【００４０】
なお、類似する属性を一つにまとめ、処理時間パターン空間の次元を削除すると、削除された後の空間での各レコードデータの距離は、元の空間での距離と異なる。例えば、ｘ、ｙ、ｚの３次元空間でｘ、ｙが類似する属性である場合には、全てのレコードデータが、ｘ＝ｙ平面上に載ってしまうため、ｘ、ｙをまとめてｗという属性にする。ｘ、ｙ、ｚの３次元空間の２点間のユークリッド距離は、ｚ、ｗ空間でのユークリッド距離と異なる。このとき、ｗ方向に重み２１／２を付け、ｚ方向に重み１を付けたユークリッド距離を用いることで、元の三次元空間での距離を近似することが出来る。例えば、ベクトルｖ１と、ベクトルｖ２との重み付きのユークリッド距離（weightedEuclid）は、式（１）で表すことができる。
【００４１】
【数１】
0006561504.tif 000002
【００４２】
例えば、上記のように、ｗ方向に重み２１／２を付け、ｚ方向に重み１を付けたユークリッド距離は、式（２）によって表すことが出来る。
【００４３】
【数２】
0006561504.tif 000003
【００４４】
処理時間パターン判定部１４０は、前処理を実行することにより、処理時間行列Ｐを処理時間行列Ｐ’に変換した後に、部分的に類似する処理時間ベクトルを同一のクラスタに分類するクラスタリングを実行する。例えば、処理時間パターン判定部１４０は、Ｑ’次元空間中に処理時間ベクトルを配置し、重み付き距離を使い、部分空間クラスタリング（subspace  clustering）手法または射影クラスタリング（projected  clustering）手法を用いて、クラスタリングを行う。出来上がるクラスタの集合をＣ＝｛ｃ１、ｃ２、・・・、ｃＦ｝とする。
【００４５】
処理時間パターン判定部１４０が実行する部分空間クラスタリングの一例について説明する。部分空間クラスタリングは、複数ある手法の総称であり、特に高次元空間におけるクラスタリングを空間の軸に平行な部分空間に射影したときにクラスタを作るものを探し出す手法のうち、次元の低い空間からボトムアップで探す各方法を指す。部分空間クラスタリングの代表的なアルゴリズムはＣＬＩＱＵＥである。例えば、処理時間パターン判定部１４０は、このＣＬＩＱＵＥに基づいて、各レコードデータに対応する処理時間ベクトルを、各クラスタに分類しても良い。例えば、ＣＬＩＱＵＥの処理は、文献（R.  AGRAWAL  et  al.  “Automatic  Subspace  Clustering  of  High  Dimensional  Data”,  1998.）に基づく。
【００４６】
図１０は、ＣＬＩＱＵＥのアルゴリズムを模式的に説明するための図である。図１０において、処理時間パターン判定部１４０は、１次元空間を複数の区間に区切り、各区間に含まれるデータ数をカウントする。例えば、横軸は、あるクエリデータｑＡに対する処理時間を複数の区間に区切ったものであり、縦軸は、あるクエリデータｑＢに対する処理時間を複数の区間に区切ったものである。図１０に示す例では、区間に含まれるデータ数が閾値を超えたものを、例えば、区間Ａ１、Ａ２、Ａ３、Ｂ１、Ｂ２とする。
【００４７】
処理時間パターン判定部１４０は、１次元空間の各区間に含まれるデータ数が、２次元空間に持ち上げられたときに、どのような２次元空間になるのか、改めて２次元空間に属するデータ数をカウントして、データ数が閾値を超えるか否かを判定する。例えば、図１０に示す例では、２次元空間Ｈ１〜Ｈ６にデータが含まれているが、２次元空間Ｈ１、Ｈ２、Ｈ３、Ｈ６において、データ数が閾値を超え、２次元空間Ｈ４、Ｈ５において、データ数が閾値未満となるため、２次元空間上では、２次元空間Ｈ１、Ｈ２、Ｈ３、Ｈ６が密となる。
【００４８】
処理時間パターン判定部１４０は、上記の処理を、３次元、４次元と続けることにより、所定の高次元で密となる区間を特定し、この密となる区間に属するレコードデータを、同一のクラスタに分類する。
【００４９】
続いて、処理時間パターン判定部１４０が実行する射影クラスタリングの一例について説明する。射影クラスタリングは、複数ある手法の総称であり、特に高次元空間におけるクラスタリングを空間の軸に平行な部分空間に射影した時にクラスタを作るものを探し出す手法のうち、次元の大きい空間からトップダウンで探す各方法を指す。射影クラスタリングの代表的なアルゴリズムは、ＰｒｅＤｅＣｏｎである。例えば、処理時間パターン判定部１４０は、このＰｒｅＤｅＣｏｎに基づいて、各レコードデータに対応するレコードデータを、各クラスタに分類しても良い。
【００５０】
ＰｒｅＤｅＣｏｎは、ＤＢＳＣＡＮを基にしたアルゴリズムである。図１１は、ＤＢＳＣＡＮのアルゴリズムを概念的に説明するフローチャートである。図１１では一例として、処理の主体を、処理時間パターン判定部１４０として説明を行う。図１１に示すように、処理時間パターン判定部１４０は、距離の閾値ｅｐｓと密度の閾値ＭｉｎＰｔｓの入力を受け付ける（ステップＳ１１）。
【００５１】
処理時間パターン判定部１４０は、データ集合Ｄから未選択の点ｐを選択する（ステップＳ１２）。例えば、ステップＳ１２において、データ集合Ｄは、処理時間行列Ｐ’に含まれる処理時間ベクトルの集合を示す。点ｐは、処理時間ベクトルに対応する点である。
【００５２】
処理時間パターン判定部１４０は、選択した点ｐの半径ｅｐｓの球内に含まれる他の点の数を計数し、球内に含まれる点の数が閾値ＭｉｎＰｔｓ以上か否かを判定する（ステップＳ１３）。処理時間パターン判定部１４０は、球内に含まれる点の数が閾値ＭｉｎＰｔｓ未満である場合には（ステップＳ１３，Ｎｏ）、選択した点ｐをノイズと判定し（ステップＳ１４）、ステップＳ１２に移行する。
【００５３】
一方、処理時間パターン判定部１４０は、球内に含まれる点の数が閾値ＭｉｎＰｔｓ以上である場合には（ステップＳ１３，Ｙｅｓ）、選択した点との関係が、density-connectedとなる点を全て探し出す（ステップＳ１５）。処理時間パターン判定部１４０は、ステップＳ１５に示したdensity-connectedの関係となる各点を、同一のクラスタに含まれる点として判定する。
【００５４】
処理時間パターン判定部１４０は、全ての点ｐを選択したか否かを判定する（ステップＳ１６）。処理時間パターン判定部１４０は、全ての点ｐを選択していない場合には（ステップＳ１６，Ｎｏ）、ステップＳ１２に移行する。一方、処理時間パターン判定部１４０は、全ての点ｐを選択した場合には（ステップＳ１６，Ｙｅｓ）、ＤＢＳＣＡＮを終了する。
【００５５】
ここで、図１１のステップＳ１５で示したdensity-connectedの定義について説明する。図１２Ａおよび図１２Ｂは、density-connectedの定義を説明するための図である。例えば、図１２Ａについて、点ｑと点ｐとがdensity-connectedとは、点ｐと点ｑでない点ｒがあって、点ｒから点ｐおよび点ｒから点ｑが、density-reachableであることである。density-connectedは、対称な関係である。
【００５６】
なお、density-connectedは推移律を満たさない。図１２Ｂにおいて、点ｐ１と点ｐ３および点ｐ５は、density-connectedである場合において、点ｐ１と点ｐ５は、density-connectedではない。
【００５７】
density-reachableの定義について説明する。図１３は、density-reachableの定義を説明するための図である。点ｑが点ｐからdensity-reachableとは、directly  density-reachableな点列（ｐ、ｐ１、・・・、ｐｎ、ｑ）があることである。density-reachablityは、対称ではない。
【００５８】
directly  density-reachableの定義について説明する。図１４は、directly  density-reachableの定義を説明するための図である。点ｑが点ｐからdirectly  density-reachableとは、与えられた距離の閾値εの球内部のデータ数がＮを超えていることをいい、例えば、式（３）で表すことが出来る。directly  density-reachableは対称な関係ではない。例えば点ｐのまわりにはＮより多くの点があるが、点ｑのまわりにはＮより少ない点しかない場合には、点ｐから点ｑは到達可能であるが、点ｑから点ｐは到達可能ではない。
【００５９】
【数３】
0006561504.tif 000004
【００６０】
処理時間パターン判定部１４０は、上述した部分空間クラスタリング手法または射影クラスタリング手法を用いて、クラスタリングを行うことで、部分的に類似する処理時間ベクトルを同一のクラスタに分類する。これにより、各レコードデータは、クラスタに属するか属さないかが決まる。ここで、レコードデータｒｉに属するクラスタの集合をＣ＿ｉとする。Ｃ＿ｉの要素は一つとは限らず、複数の場合も、空の場合も、Ｆ個の場合もある。また、各クラスタの属する部分空間の次元は、クラスタ毎に異なる。
【００６１】
処理時間パターン判定部１４０は、レコードデータ毎に、レコードデータが属するクラスタのクラスタ識別情報を、レコードデータテーブル１１０ａに設定する。
【００６２】
処理時間パターン判定部１４０は、各レコードデータをクラスタリングした後に、各レコードデータの類似度を算出し、類似度行列データ１１０ｃを生成する。例えば、処理時間パターン判定部１４０は、レコードデータｒｉとｒｊとの類似度ｄ＿ｉｊをクラスタ集合の共通集合、Ｃ＿ｉｊ：＝Ｃ＿ｉ∩Ｃ＿ｊ、に従って定める。つまり、同一クラスタ内に入ったレコードデータは、ある種のクエリデータに対して同じような処理パターンを示すので、かかるレコードデータは別の計算資源に配置されるべきである。逆に同一クラスタを持たないデータ対の配置は余り気にしなくても良い。Ｒ列Ｒ行の類似度行列Ｄについて、（ｉ，ｊ）成分がｄ＿ｉｊであるものとする。
【００６３】
処理時間パターン判定部１４０が、レコードデータｒｉとｒｊとの類似度ｄ＿ｉｊをクラスタ集合の共通集合に従って定める処理の一例について説明する。同一のクラスタに属する各レコードデータは類似しており、異なるクラスタに属するレコードデータ同士は類似していないという考えに基づき類似度を算出する。
【００６４】
類似度を算出する一番簡単な方法は、レコードデータｒ１とレコードデータｒ２とが属するクラスタが１つのとき、各クラスタが属する部分空間で距離を測り、マイナスをとればよい。レコードデータｒ１とレコードデータｒ２とが属するクラスタが１つより多いとき、簡単には、各クラスタから算出される類似度の平均をとればよいが、クラスタの属する部分空間の次元は、クラスタ毎に異なるので、単純な平均は好ましくない。さらに、大きい次元のクラスタを共通にもつレコードデータほど似ていると判断するのが自然である。このため、処理時間パターン判定部１４０は、クラスタに属する部分空間の次元が大きいほど類似度が大きくなるように類似度を算出してもよい。
【００６５】
例えば、Ｑ次元のベクトル空間ＲＱでのレコードデータｒ１とｒ２の距離を、式（４）で定義する。
【００６６】
【数４】
0006561504.tif 000005
【００６７】
多くの場合には、レコードデータｒ１とｒ２の距離は、重み付きユークリッド距離または重み付きＬｐ距離に対応する。Ｃ＿ｉの属する部分空間をＲＣｉと定義し、ＲＱからＲＣｉへの標準的な射影をπＣｉとする。そうすると、Ｃ＿ｉに属するレコードデータｒ１とレコードデータｒ２とのＲＣｉにおける距離を、式（５）と定義する。また、レコードデータｒの属するクラスタの集合を、式（６）とする。
【００６８】
【数５】
0006561504.tif 000006
【００６９】
【数６】
0006561504.tif 000007
【００７０】
処理時間パターン判定部１４０は、レコードデータｒ１とレコードデータｒ２との属するクラスタの集合の共通部分が空でないとき、レコードデータｒ１とレコードデータｒ２の類似度を式（７）によって算出する。処理時間パターン判定部１４０は、共通部分が空のとき、レコードデータｒ１とｒ２の類似度をマイナス無限大とする。
【００７１】
【数７】
0006561504.tif 000008
【００７２】
処理時間パターン判定部１４０は、各レコードデータの組について、上記処理を繰り返し実行することで、類似度行列データ１１０ｃを生成する。
【００７３】
マッチング処理部１５０は、類似度行列データ１１０ｃを基にして、各レコードデータを配置する計算資源を判定し、判定した結果に基づいて、配置先情報１１０ｄを生成する処理部である。
【００７４】
マッチング処理部１５０の処理を具体的に説明する。まず、マッチング処理部１５０は、レコードデータテーブル１１０ａを参照し、クラスタに属するレコードデータの数が、Ｎ個以上となるクラスタをランダムに選択する。Ｎは、計算資源Ｓ１〜ＳＮの数に対応する。マッチング処理部１５０は、選択したクラスタからＮ個のレコードデータを非復元抽出で選択する。以下の説明において、クラスタから選択したレコードデータを候補データと表記する。各候補データをｖ１、ｖ２、・・・、ｖＮとし、各計算資源をＳ１、Ｓ２、・・・、ＳＮとする。マッチング処理部１５０は、初回は、各計算資源Ｓ１〜ＳＮにレコードデータが配置されていないため、各候補データの配置先をランダムに決定し、配置先情報１１０ｄを更新する。
【００７５】
マッチング処理部１５０は、２回目以降において、候補データｖｉと、計算資源Ｓｊに配置済みのレコードデータとを比較して、候補データｖｉと計算資源Ｓｊとの類似度を算出する。マッチング処理部１５０は、配置先情報１１０ｄを基にして、計算資源Ｓｊに配置されたレコードデータを特定する。
【００７６】
マッチング処理部１５０は、類似度行列データ１１０ｃを基にして、候補データｖｉと、計算資源Ｓｊに配置済みのレコードデータとの類似度を特定する。マッチング処理部１５０は、計算資源Ｓｊに複数のレコードデータが配置されている場合には、候補データｖｉと、計算資源Ｓｊに配置されたレコードデータとの各類似度のうち、最大値となる類似度を、候補データｖｉと計算資源Ｓｊとの類似度ｋｉｊとして特定する。
【００７７】
マッチング処理部１５０は、他の候補データについても上記処理を繰り返し実行することで、候補データと計算資源との類似度ｋｉｊを（ｉ，ｊ）要素に持つＮ×Ｎ行列Ｅを作成する。マッチング処理部１５０は、行列Ｅを基にして、候補データｖｉの希望リストＬｖｉを作成する。この希望リストＬｖｉは、候補データｖｉとの類似度が大きい計算資源Ｓｊほど、マッチング対象の優先度が低くなるリストである。
【００７８】
例えば、マッチング処理部１５０は、行列Ｅのｉ行目を昇順にソートし、候補データｖｉに対する計算資源Ｓｊの順位を決定し、決定した順位を、候補データｖｉの希望リストＬｖｉとする。マッチング処理部１５０は、希望リストＬｖｉを作成する場合に、ｊ！＝ｊ’で、ｋｉｊ＝ｋｉｊ’となる時があるが、ソートの際にどちらが上に来てもよいものとする。
【００７９】
マッチング処理部１５０は、行列Ｅを基にして、計算資源Ｓｊの希望リストＬＳｊを作成する。この希望リストＬＳｊは、計算資源Ｓｊとの類似度が大きい候補データｖｉほど、マッチング対象の優先度が低くなるリストである。
【００８０】
例えば、マッチング処理部１５０は、行列Ｅのｊ列目を昇順にソートし、計算資源Ｓｊに対する候補データｖｉの順位を決定し、決定した順位を、計算資源Ｓｊの希望リストＬＳｉとする。
【００８１】
マッチング処理部１５０は、各候補データの希望リストＬｖ１〜ＬｖＮと、計算資源の希望リストＬＳ１〜ＬＳＮを作成した後に、拡張ＧＳアルゴリズムに基づいて、安定マッチングを求め、各候補データの配置先となる計算資源を判定する。拡張ＧＳアルゴリズムに関する説明は後述する。マッチング処理部１５０は、判定結果を、配置先情報１１０ｄに登録する。
【００８２】
マッチング処理部１５０は、レコードデータの数がＮ以上となるクラスタが存在する間は、レコードデータの数がＮ以上となるクラスタをランダムに選び、上記処理を繰り返し実行する。例えば、マッチング処理部１５０は、既に配置先が決定したレコードデータにフラグを立て、配置先の決定したレコードデータと決定していないレコードデータとを区別してもよい。
【００８３】
マッチング処理部１５０は、レコードデータの数がＮ以上となるクラスタが存在しない場合には、係るクラスタのレコードデータまたはノイズと判定したレコードデータを集める。マッチング処理部１５０は、集めたレコードデータから、Ｎ個のレコードデータを非復元抽出で選択し、上記処理を繰り返し実行する。
【００８４】
マッチング処理部１５０は、上記処理おいてクラスタを選択する場合に、レコードデータの数が多いクラスタを優先的に選択し、レコードデータの配置先を判定してもよい。レコードデータの数が多いクラスタほど、全体の処理時間ばらつき平準化に占める影響が多いため、レコードデータの数が多いクラスタを優先的に選択した方がよい。
【００８５】
更に、マッチング処理部１５０は、クラスタを選択する場合に、クラスタの属する部分空間の次元数に基づいて、クラスタを選択してもよい。例えば、マッチング処理部１５０は、クラスタの属する部分空間の次元数が大きいクラスタを優先して選択する。クラスタの属する次元数が大きいほど、多くのクエリデータに対して同じような処理の時間がかかる。このため、次元数が大きいクラスタほど、全体の処理時間ばらつき平準化に占める影響が多いため、次元数の大きいクラスタを優先的に選択した方がよい。
【００８６】
例えば、マッチング処理部１５０が、クラスタを選択する優先順位を次に示すものとする。すなわち、「クラスタの属する部分空間の次元数＞クラスタの密度＞クラスタに属するレコードデータの数」とする。なお、係る優先順位で優劣のつかない複数のクラスタが存在する場合には、マッチング処理部１５０は、ランダムにクラスタを選択する。
【００８７】
次に、マッチング処理部１５０が利用する安定マッチング問題（Stable  marriage  problem,  Stable  matching  problem）の一例について説明する。安定マッチング問題は、男Ｎ人と女Ｎ人がいて、各男は女の希望リストを持ち、各女は男の希望リストを持っている場合に、男女の間の安定なペア達を作る問題である。ここで、男女間のマッチングが与えられた場合に、現在のペアを組んでいる相手よりも互いに好ましい相手がいる場合、彼らは駆け落ちをしてしまう。そのようなペアをブロッキングペアと呼ぶ。このブロッキングペアの存在するマッチングを不安定マッチングと呼び、ブロッキングペアの存在しないマッチングを安定マッチングと呼ぶ。
【００８８】
図１５は、安定マッチングと不安定マッチングとを説明するための図である。図１５では、男４人と女４人の場合の安定マッチングと不安定マッチングとを示す。４人の男をそれぞれ１，２，３，４とし、４人の女をそれぞれａ，ｂ，ｃ，ｄとする。男１，２，３，４は、女ａ，ｂ，ｃ，ｄに対する希望リストを持つ。例えば、男２の希望は、ｃ，ｂ，ａ，ｄの順となる。例えば、女ｂの希望は、２，１，４，３となる。
【００８９】
グループ２０ａでは、ペアはそれぞれ（１，ａ）、（２，ｃ）、（３，ｂ）、（４、ｄ）となる。グループ２０ａには、ブロッキングペアが存在しないので、グループ２０ａの各ペアは、安定なマッチングと言える。
【００９０】
これに対して、グループ２０ｂでは、ペアはそれぞれ（１，ａ）、（２，ｃ）、（３，ｄ）、（４，ｂ）となる。グループ２０ｂには、ブロッキングペア（４，ｄ）が存在する。男４は女ｂより女ｄが好ましく、女ｄは男３より男４が好ましいためである。このため、グループ２０ｂの各ペアは、不安定なマッチングと言える。
【００９１】
次に、図１５のグループ２０ａに示した安定マッチングを得るためのゲール−シャプレイ（Gale-Shapley）のアルゴリズムについて説明する。図１６は、ゲール−シャプレイのアルゴリズムの処理手順の一例を示す図である。図１６の処理を実行することで、安定マッチングを得ることができる。以下の説明では、ゲール−シャプレイのアルゴリズムを適宜、ＧＳと表記する。
【００９２】
図１６に示すように、ＧＳは、ｎ人の男性とｎ人の女性、および、各人の異性全員に対する希望リストを取得する（ステップＳ２０）。ＧＳは、独身の男性ｈが存在するか否かを判定する（ステップＳ２１）。独身の男性ｈが存在しない場合には（ステップＳ２１，Ｎｏ）、現在婚約しているペアの集合を安定マッチングとして出力する（ステップＳ２２）。
【００９３】
一方、ＧＳは、独身の男性ｈが存在する場合には（ステップＳ２１，Ｙｅｓ）、男性ｈがまだプロポーズしていない女性のなかで、希望リストの最高位の女性ｄにプロポーズさせる（ステップＳ２３）。ＧＳは、プロポーズされた女性ｄが独身であるか否かを判定する（ステップＳ２４）。
【００９４】
ＧＳは、女性ｄが独身である場合には（ステップＳ２４，Ｙｅｓ）、女性ｄと男性ｈとを婚約させ（ステップＳ２５）、ステップＳ２１に移行する。一方、ＧＳは、女性ｄが独身でない場合には（ステップＳ２４，Ｎｏ）、ステップＳ２６に移行する。
【００９５】
ステップＳ２６において、女性ｄの希望リストにおいて、希望順位が男性ｈ’の順位が男性ｈの順位よりも上位のとき、女性ｄは男性ｈからのプロポーズを断る。希望順位が男性ｈの順位が男性ｈ’の順位よりも上位のとき、女性は男性ｈ’との婚約を解消し、男性ｈと婚約する。ＧＳは、ステップＳ２６の処理を終了した後に、ステップＳ２１に移行する。
【００９６】
次に、ゲール−シャプレイのアルゴリズムを拡張した拡張ゲール−シャプレイについて説明する。以下の説明では、拡張ゲール−シャプレイを拡張ＧＳと表記する。拡張ＧＳは、アルゴリズムの途中で安定マッチングに至らないペア候補を希望リストから削除する。具体的に、拡張ＧＳでは、男性ｈと女性ｄとを婚約させた場合に、女性ｄの希望リストから、男性ｈよりも優先順位の低い男性を削除する点でＧＳと相違する。このような処理を追加することで、ＧＳよりも効率的に安定マッチングを実行することができる。
【００９７】
マッチング処理部１５０は、上述した拡張ＧＳアルゴリズムを用いて、候補データと計算資源との安定マッチングを求める。マッチング処理部１５０は、安定マッチングを求める場合に、候補データ側から計算資源側にプロポーズさせてもよいし、計算資源側から候補データ側にプロポーズさせてもよい。
【００９８】
配置処理部１６０は、配置先情報１１０ｄを基にして、レコードデータテーブル１１０ａからレコードデータを抽出し、抽出したレコードデータを、計算資源Ｓ１〜ＳＮに配置する処理部である。なお、配置処理部１６０は、初期処理においては、レコードデータテーブル１１０ａに登録されたレコードデータをランダムに、計算資源Ｓ１〜ＳＮに配置する。配置処理部１６０によってランダムに配置されたレコードデータに対して、照合処理が実行され、上述した中間テーブル１１０ｂが生成される。
【００９９】
次に、本実施例に係るデータ配置装置１００の処理手順について説明する。図１７は、本実施例に係るデータ処理装置の処理手順を示すフローチャートである。図１７に示すように、データ配置装置１００の配置処理部１６０は、レコードデータテーブル１１０ａに登録されたレコードデータをランダムに複数の計算資源Ｓ１〜ＳＮに配置する（ステップＳ１０１）。
【０１００】
データ配置装置１００の計算資源Ｓ１〜ＳＮは、Ｑ個のクエリデータに対し、全てのレコードデータの処理時間を計測し、処理時間パターン判定部１４０に、処理時間を通知する（ステップＳ１０２）。データ配置装置１００の処理時間パターン判定部１４０は、中間テーブル１１０ｂを生成する（ステップＳ１０３）。
【０１０１】
処理時間パターン判定部１４０は、処理時間パターン空間で、部分空間クラスタリングを実行する（ステップＳ１０４）。ステップＳ１０４において、処理時間パターン判定部１４０は、部分空間クラスタリングの代わりに、射影クラスタリングを実行してもよい。処理時間パターン判定部１４０は、部分空間クラスタリング結果に基づいて、レコードデータ間の類似度を算出し、類似度行列データ１１０ｃを生成する（ステップＳ１０５）。
【０１０２】
マッチング処理部１５０は、未選択のクラスタを選択し、選択したクラスタに属するＮ個のレコードデータを取り出す（ステップＳ１０６）。ステップＳ１０６において取り出したレコードデータは、候補データに対応する。マッチング処理部１５０は、取り出したレコードデータに対して、拡張ゲール−シャルプレイアルゴリズムを用いて、Ｎ個のレコードデータと、Ｎ個の計算資源との安定マッチングを実行し、マッチング結果を配置先情報１１０ｄに登録する（ステップＳ１０７）。
【０１０３】
マッチング処理部１５０は、全てのクラスタを選択したか否かを判定する（ステップＳ１０８）。マッチング処理部１５０は、全てのクラスタを選択していない場合には（ステップＳ１０８，Ｎｏ）、ステップＳ１０６に移行する。一方、マッチング処理部１５０は、全てのクラスタを選択した場合には（ステップＳ１０８，Ｙｅｓ）、ステップＳ１０９に移行する。
【０１０４】
データ配置装置１００の配置処理部１６０は、配置先情報１１０ｄに基づいて、レコードデータを計算資源に配置する（ステップＳ１０９）。
【０１０５】
次に、本実施例に係るデータ配置装置１００の効果について説明する。データ配置装置１００は、計算資源Ｓ１〜ＳＮに分割されて格納されたそれぞれのレコードデータに対するクエリデータと、クエリデータで処理されたレコードデータとの処理時間を算出する。そして、データ配置装置１００は、処理時間が分散するように、レコードデータを各計算資源Ｓ１〜ＳＮに配置し、クエリデータを処理する。これによって、同一の類似度を有するレコードデータがある計算資源に集中することを防ぐと共に、クエリデータの実行に要する時間を短縮することができる。
【０１０６】
データ配置装置１００は、計算資源Ｓ１〜ＳＮに分割されて格納されたそれぞれのレコードデータに対するクエリデータと、クエリデータで処理されたレコードデータとの処理時間を算出し、中間テーブル１１０ｂを生成する。データ配置装置１００は、中間テーブル１１０ｂを用いることで、処理時間が部分的に類似するレコードデータを同一の計算資源に配置することを抑止することができる。なお、クエリデータとレコードデータとが類似していれば処理時間が長くなるため、中間テーブル１１０ｂに示す処理時間は、クエリデータとレコードデータとの類似度を示す指標ともいえる。
【０１０７】
データ配置装置１００は、中間テーブル１１０ｂを基にして、各処理要求に対する処理時間の値が部分的に類似するレコードデータの集合を同一のクラスタに分類するクラスタリングを実行し、同一のクラスタに含まれるデータを、それぞれ異なるデータベースに分散させる。これにより、処理時間が部分的に類似するレコードデータを同一の計算資源に配置することを抑止することができる。
【０１０８】
データ配置装置１００は、中間テーブル１１０ｂについて、複数の列データ間の類似度の値が類似するもの同士を統合することで、次元を削減する。これによって、計算負荷を軽減することができる。
【０１０９】
次に、上記実施例に示したデータ配置装置１００と同様の機能を実現するデータ配置プログラムを実行するコンピュータの一例について説明する。図１８は、データ配置プログラムを実行するコンピュータの一例を示す図である。
【０１１０】
図１８に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１１１】
ハードディスク装置２０７は、マッチング処理プログラム２０７ａ、処理時間パターン判定プログラム２０７ｂ、配置処理プログラム２０７ｃを有する。ＣＰＵ２０１は、マッチング処理プログラム２０７ａ、処理時間パターン判定プログラム２０７ｂ、配置処理プログラム２０７ｃを読み出して、ＲＡＭ２０６に展開する。
【０１１２】
マッチング処理プログラム２０７ａは、マッチング処理プロセス２０６ａとして機能する。処理時間パターン判定プログラム２０７ｂは、処理時間パターン判定プロセス２０６ｂとして機能する。マッチング処理プロセス２０６ａの処理は、マッチング処理部１５０に対応する。処理時間パターン判定プロセス２０６ｂは、処理時間パターン判定部１４０に対応する。配置処理プロセス２０６ｃは、配置処理部１６０に対応する。
【０１１３】
なお、マッチング処理プログラム２０７ａ、処理時間パターン判定プログラム２０７ｂ、配置処理プログラム２０７ｃについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ〜２０７ｃを読み出して実行するようにしてもよい。
【０１１４】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１５】
（付記１）コンピュータに、
データベースに格納されたデータに対して処理要求を実行し、前記処理要求と前記データとの組み合わせにおける処理の類似度を算出し、
前記類似度が分散するようにデータを分割し
分割された前記データに対して受け付けた処理要求を処理する
ことを実行させることを特徴とするデータ配置プログラム。
【０１１６】
（付記２）前記類似度を算出する処理は、複数種類の前記処理要求毎に、前記処理要求と前記処理要求で処理された前記データとの類似度を算出することで中間テーブルを生成し、前記処理要求を処理する処理は、前記中間テーブルを基にして、前記類似度が分散するようにデータを分割して前記処理要求を処理することを特徴とする付記１に記載のデータ配置プログラム。
【０１１７】
（付記３）前記処理要求を処理する処理は、前記中間テーブルを基にして、各処理要求に対する類似度の値が部分的に類似する前記データの集合を同一のクラスタに分類するクラスタリングを実行し、同一のクラスタに含まれるデータを、それぞれ異なるデータベースに分散させることを特徴とする付記２に記載のデータ配置プログラム。
【０１１８】
（付記４）前記中間テーブルは、前記処理要求の数に対応する次元を有しており、前記処理要求を処理する処理は、複数のデータ間の類似度の値が類似するもの同士を統合することで、前記次元を削減することを特徴とする付記２または３に記載のデータ配置プログラム。
【０１１９】
（付記５）コンピュータが実行するデータ配置方法であって、
データベースに格納されたデータに対して処理要求を実行し、前記処理要求と前記データとの組み合わせにおける処理の類似度を算出し、
前記類似度が分散するようにデータを分割し
分割された前記データに対して受け付けた処理要求を処理する
ことを特徴とするデータ配置方法。
【０１２０】
（付記６）前記類似度を算出する処理は、複数種類の前記処理要求毎に、前記処理要求と前記処理要求で処理された前記データとの類似度を算出することで中間テーブルを生成し、前記処理要求を処理する処理は、前記中間テーブルを基にして、前記類似度が分散するようにデータを分割して前記処理要求を処理することを特徴とする付記５に記載のデータ配置方法。
【０１２１】
（付記７）前記処理要求を処理する処理は、前記中間テーブルを基にして、各処理要求に対する類似度の値が部分的に類似する前記データの集合を同一のクラスタに分類するクラスタリングを実行し、同一のクラスタに含まれるデータを、それぞれ異なるデータベースに分散させることを特徴とする付記６に記載のデータ配置方法。
【０１２２】
（付記８）前記中間テーブルは、前記処理要求の数に対応する次元を有しており、前記処理要求を処理する処理は、複数のデータ間の類似度の値が類似するもの同士を統合することで、前記次元を削減することを特徴とする付記６または７に記載のデータ配置方法。
【０１２３】
（付記９）データベースに格納されたデータに対して処理要求を実行し、前記処理要求と前記データとの組み合わせにおける処理の類似度を算出する算出部と、
前記類似度が分散するようにデータを分割し、分割された前記データに対して受け付けた処理要求を処理する配置部と、
を有することを特徴とするデータ配置装置。
【０１２４】
（付記１０）前記算出部は、複数種類の前記処理要求毎に、前記処理要求と前記処理要求で処理された前記データとの類似度を算出することで中間テーブルを生成し、前記配置部は、前記中間テーブルを基にして、前記類似度が分散するようにデータを分割してデータベースに配置することを特徴とする付記９に記載のデータ配置装置。
【０１２５】
（付記１１）前記配置部は、前記中間テーブルを基にして、各処理要求に対する類似度の値が部分的に類似する前記データの集合を同一のクラスタに分類するクラスタリングを実行し、同一のクラスタに含まれるデータを、それぞれ異なるデータベースに分散させることを特徴とする付記１０に記載のデータ配置装置。
【０１２６】
（付記１２）前記中間テーブルは、前記処理要求の数に対応する次元を有しており、前記配置部は、複数のデータ間の類似度の値が類似するもの同士を統合することで、前記次元を削減することを特徴とする付記１０または１１に記載のデータ配置装置。
【符号の説明】
【０１２７】
１００  データ配置装置
１１０  記憶部
１２０  入力部
１３０  照合処理要求部
１４０  処理時間パターン判定部
１５０  マッチング処理部
１６０  配置処理部
【図１】
0006561504.tif 000009
【図２】
0006561504.tif 000010
【図３】
0006561504.tif 000011
【図４】
0006561504.tif 000012
【図５】
0006561504.tif 000013
【図６】
0006561504.tif 000014
【図７】
0006561504.tif 000015
【図８】
0006561504.tif 000016
【図９】
0006561504.tif 000017
【図１０】
0006561504.tif 000018
【図１１】
0006561504.tif 000019
【図１２Ａ】
0006561504.tif 000020
【図１２Ｂ】
0006561504.tif 000021
【図１３】
0006561504.tif 000022
【図１４】
0006561504.tif 000023
【図１５】
0006561504.tif 000024
【図１６】
0006561504.tif 000025
【図１７】
0006561504.tif 000026
【図１８】
0006561504.tif 000027
【図１９】
0006561504.tif 000028