(57)【要約】【課題】  一度に取得される可能性の高いデータを一つのデータベースシステムに配置できる。【解決手段】    複数のデータベースシステムで管理されるデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行するサーバ装置において、クライアント装置から受け取る複数のデータベースシステムに対する処理の要求に設定される当該処理を実行すべきデータ群に実行すべき条件を解析し、該解析された条件に対応するデータの所在を特定する情報をいずれかのデータシステムから取得する。そして、取得した前記特定する情報に基づいて、各データシステムのデータ群に対してデータ処理操作を実行する。【選択図】  図１０
2015121924.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースシステムで管理されるデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行する第１のサーバ装置と、各データベースシステムのデータ群を操作する第２のサーバ装置とを含むデータ管理システムであって、
前記第１のサーバ装置は、
前記クライアント装置から受け取る複数のデータベースシステムに対する処理の要求に設定される条件を解析する第１の解析手段と、
前記第１の解析手段により解析された条件に対応するデータの所在を特定する情報をいずれかのデータベースシステムから取得する取得手段と、
前記取得手段が取得した前記特定する情報に基づいて、各データベースシステムのデータ群に対してデータ処理操作を実行する実行手段と、を備え、
いずれかのデータベースシステムは、
前記第１の解析手段が解析した条件履歴を前記第１のサーバ装置から取得して記憶装置を用いて管理する第１の管理手段と、
前記第１の解析手段により解析された条件に対応するデータの所在を特定する情報を前記記憶装置で管理する第２の管理手段と、を備え、
前記第２のサーバ装置は、
いずれかのデータベースシステムが管理する前記条件履歴を取得して各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されているかどうかについて前記所在を特定する情報を用いて解析する第２の解析手段と、
各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されている場合、前記第２の解析手段による解析結果に基づいて前記所在を特定する情報を更新する更新手段と、
前記更新手段により更新された前記所在を特定する情報を用いて、各条件に対応して同時に操作すべきデータ群がいずれかのデータベースシステムに配置されるように再配置処理を行う再配置手段と、を備えることを特徴とするデータ管理システム。
【請求項２】
前記第２の解析手段は、
いずれかのデータベースシステムから取得する前記所在を特定する情報を用いて各条件で同時に操作される各データの相関係数を求める演算手段と、
前記演算手段が演算した相関係数の値から各データをグループ化するグルーピング手段と、
特定のグループから選択されるデータに関連づけられるグループを１つのグループに統合する統合手段と、を備えることを特徴とする請求項１記載のデータ管理システム。
【請求項３】
前記第２のサーバ装置は、
前記再配置手段により再配置されたデータ群がいずれかのデータベースシステムに偏って配置されているかどうかを判断する第１の判断手段と、
前記データ群がいずれかのデータベースシステムに偏って配置されていると判断した場合、グループ化されたデータ群に共通する条件が存在するかどうかを判断する第２の判断手段と、
グループ化されたデータ群に共通する条件が存在すると判断した場合、前記条件履歴から削除する削除手段と、
を備えることを特徴とする請求項１記載のデータ管理システム。
【請求項４】
複数のデータベースシステムで管理されるデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行するサーバ装置であって、
前記クライアント装置から受け取る複数のデータベースシステムに対する処理の要求に設定される条件を解析する第１の解析手段と、
前記第１の解析手段により解析された条件に対応するデータの所在を特定する情報をいずれかのデータベースシステムから取得する取得手段と、
前記取得手段が取得した前記特定する情報に基づいて、各データベースシステムのデータ群に対してデータ処理操作を実行する実行手段と、を備えることを特徴とするサーバ装置。
【請求項５】
所定のデータ群を記憶して管理する複数のデータベースシステムのデータ群を操作するサーバ装置であって、
いずれかのデータベースシステムが管理する条件履歴情報を取得して各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されているかどうかについて所在を特定する情報を用いて解析する第２の解析手段と、
各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されている場合、前記第２の解析手段による解析結果に基づいて前記所在を特定する情報を更新する更新手段と、
前記更新手段により更新された前記所在を特定する情報を用いて、各条件に対応して同時に操作すべきデータ群がいずれかのデータベースに配置されるように再配置処理を行う再配置手段と、を備えることを特徴とするサーバ装置。
【請求項６】
複数のデータベースシステムで管理されるデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行するサーバ装置の制御方法であって、
前記クライアント装置から受け取る複数のデータベースシステムに対する処理の要求に設定される条件を解析する第１の解析工程と、
前記第１の解析工程により解析された条件に対応するデータの所在を特定する情報をいずれかのデータベースシステムから取得する取得工程と、
前記取得工程が取得した前記特定する情報に基づいて、各データベースシステムのデータ群に対してデータ処理操作を実行する実行工程と、を備えることを特徴とするサーバ装置の制御方法。
【請求項７】
所定のデータ群を記憶して管理する複数のデータベースシステムのデータ群を操作するサーバ装置の制御方法であって、
いずれかのデータベースシステムが管理する条件履歴情報を取得して各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されているかどうかについて所在を特定する情報を用いて解析する第２の解析工程と、
各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されている場合、前記第２の解析工程による解析結果に基づいて前記所在を特定する情報を更新する更新工程と、
前記更新工程により更新された前記所在を特定する情報を用いて、各条件に対応して同時に操作すべきデータ群がいずれかのデータベースシステムに配置されるように再配置処理を行う再配置工程と、を備えることを特徴とするサーバ装置の制御方法。
【請求項８】
請求項４または５に記載の各手段としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理システム、サーバ装置、サーバ装置の制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
大量のデータを扱うようなデータ管理システムにおいては、一つのデータベースシステムにてそれらのデータを扱うのではなく、複数のデータベースシステムに、データを分散させ、管理することが多い。このような情報処理システムを分散データベースシステムと呼ぶ。このような分散データベースシステムを用いることで、処理の一極集中を防ぐことが可能となり、各データベースシステムの処理負荷の軽減につながる効果がある。
【０００３】
一般的に、分散データベースシステムにおいては、どのようにデータを分散させるかが、パフォーマンス向上の重要なファクターとなる。特許文献１では、データのアクセス回数、およびそのデータベースシステムが保持するリソース（例えば、主記憶量など）を考慮し、各データベースシステムの処理負荷が均等になるようにデータを分散させるシステムを考案している。
例えば、リソースが多いデータベースシステムに対しては、リソースが少ないデータベースシステムよりも、多くのデータを配置する。このように分散させることで、処理負荷が均等となり、局所的なパフォーマンスの劣化を防ぐことが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２５９４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、データベースシステムから得られるデータに対して、何らかの処理（ソートや集計等）を実施する場合には、データベースシステム自身にそれらの処理を実施させるほうが、パフォーマンス向上につながるとされている。
例えば、集計処理を実施するような場合に、処理対象のデータが、複数のデータベースシステムに分散されているとする。この場合、アプリケーションが、複数のデータベースに接続し、データを取得し、さらにアプリケーション自身が、それらのデータの集計を行う必要が発生する。
これにより情報処理システムにおいては、大きなパフォーマンスの劣化につながる。このことから、分散データベースシステムにおいて、パフォーマンス向上を実現するためには、一度のリクエストで同時に処理されるデータは、単一のデータベースシステムに保持しておくことが必要となる。
【０００６】
特許文献１に記載の分散方法では、アクセス数と、データベースシステムのリソースのみが考慮されているため、一度の処理で同時に取得されるデータが、複数のデータベースシステムに分散して保持され、パフォーマンスが劣化する可能性がある。しかしながら、一度の処理で同時に取得されるデータは、リクエストを発行するクライアントによって大きく異なるため、一度に取得されるデータを、一つのデータベースシステムにまとめることは非常に難しい場合があった。
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、一度に取得される可能性の高いデータを一つのデータベースシステムに配置できる仕組みを提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成する本発明のデータ管理システムは以下に示す構成を備える。
複数のデータベースシステムで管理されるデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行する第１のサーバ装置と、各データベースシステムのデータ群を操作する第２のサーバ装置とを含むデータ管理システムであって、前記第１のサーバ装置は、前記クライアント装置から受け取る複数のデータベースシステムに対する処理の要求に設定される条件を解析する第１の解析手段と、前記第１の解析手段により解析された条件に対応するデータの所在を特定する情報をいずれかのデータシステムから取得する取得手段と、前記取得手段が取得した前記特定する情報に基づいて、各データベースシステムのデータ群に対してデータ処理操作を実行する実行手段と、を備え、いずれかのデータベースシステムは、前記第１の解析手段が解析した条件履歴を前記第１のサーバ装置から取得して記憶装置を用いて管理する第１の管理手段と、前記第１の解析手段により解析された条件に対応するデータの所在を特定する情報を前記記憶装置で管理する第２の管理手段と、を備え、前記第２のサーバ装置は、いずれかのデータベースシステムが管理する前記条件履歴を取得して各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されているかどうかについて前記所在を特定する情報を用いて解析する第２の解析手段と、各条件に対応して同時に処理されるべき複数のデータが各データベースシステムに分散して配置されている場合、前記第２の解析手段による解析結果に基づいて前記所在を特定する情報を更新する更新手段と、前記更新手段により更新された前記所在を特定する情報を用いて、各条件に対応して同時に操作すべきデータ群がいずれかのデータベースシステムに配置されるように再配置処理を行う再配置手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、一度に取得される可能性の高いデータを一つのデータベースシステムに配置できる。
【図面の簡単な説明】
【０００９】
【図１】データ管理システムの一例を示す図である。
【図２】データ管理システムの各機能を説明するブロック図である。
【図３】データ使用頻度解析部による処理結果例を示す図である。
【図４】データグルーピング処理部よる相関係数算出結果例を示す図である。
【図５】グルーピング、統合、再統合処理結果例を示す図である。
【図６】決定木の結果例を示す図である。
【図７】クエリ履歴テーブルのスキーマ例を示す図である。
【図８】接続情報管理テーブルのスキーマ例を示す図である。
【図９】サーバ装置の制御方法を説明するフローチャートである。
【図１０】サーバ装置の制御方法を説明するフローチャートである。
【図１１】グルーピング処理結果における出た数の偏り例を示す図である。
【図１２】サーバ装置の制御方法を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
図１は、本実施形態を示すデータ管理システムの一例を示す図である。本例は、データベースシステムとＷＥＢサーバとを接続し、クライアント装置（クライアントＰＣ（以下、単にクライアントと呼ぶ））がクラウドコンピュータシステム環境下で情報を処理するシステム例である。なお、本実施形態にシステムは、複数のデータベースシステムで管理される所定のデータ群に対する処理の要求をクライアント装置から受け取り、複数のデータベースシステムにデータ処理を実行する第１のサーバ装置と、各データベースシステムのデータ群を操作する第２のサーバ装置とを含むデータ管理システムを例とする。ここで、データベースシステムは、後述するようにデータ群を記憶して管理するためのハードウエアとソフトウエアとを備える情報処理装置、あるいはサーバ装置として構築することが可能である。また、本実施形態に示す複数のサーバ装置とを識別するため、以下の説明ではデータベースシステムとしてデータ管理処理を説明する。
【００１１】
図１において、クライアント１、ＷＥＢサーバ２、Ｂａｔｃｈサーバ３、およびデータベースシステム４、５は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ、やネットワーク部等から構成される一般的な計算機である。クライアント１は、ブラウザや専用のアプリケーションを用いて、ネットワーク６を介してクＷＥＢサーバ２に接続される。ＷＥＢサーバ２は、ＨＴＴＰ等のプロトコルに準拠したＷＥＢサービスがホストされている。このＷＥＢサービスでは、クライアント１からのデータ取得に関するクエリ（例えば、項目Ａの値が１０よりも大きいデータを取得）を受付け、データベースシステム４，５から取得し、クライアント１に返却することが可能である。
【００１２】
図２は、図１に示したデータ管理システムの各機能を説明するブロック図である。以下、ＷＥＢサーバ２、Ｂａｔｃｈサーバ３の各処理部の機能を説明する。
まず、クＷＥＢサーバ２の各処理部の機能について説明する。
図２において、リクエスト受信部２１は、クライアント１からのリクエストを受け付ける。リクエスト受信部２１は、クライアント１より発行されたリクエストに含まれるクエリの構文解析を行うために、クエリ記録部２２にクエリを渡す。ここでいうリクエストとは、データ群に対して設定される削除、更新、作成といった、処理依頼である。また、クエリとは、例えば、「ある項目Ａの値が１０よりも大きい」といった処理対象のデータを限定するための条件を意味する。例えば、リクエストが削除で、クエリが前述のとおりのものであるとした場合、項目Ａの値が、「１０」よりも大きいデータだけが、データベースシステム４、５より削除されるという処理が実行される。
クエリ記録部２２は、クエリを構文解析し、その結果を後述するデータベースシステム４のクエリ履歴テーブル４１に記録する。接続情報取得部２３は、クエリ記録部２２からクエリの解析結果を受け取り、該クエリに該当するデータがデータベースシステム４、５のどこに格納されているかを示す所在を特定する情報を、後述する接続情報管理テーブル４２から取得する。データ操作部２４は、接続情報取得部２３より受け取った接続情報を元に、データベースシステム４、５に接続し、リクエスト、およびクエリに従ってデータ処理操作を実行し、処理結果を、レスポンス送信部２５に渡す。レスポンス送信部２５は、処理結果をクライアント１に返却する。
【００１３】
続いて、Ｂａｔｃｈサーバ３の各処理部の機能について説明する。
Ｂａｔｃｈサーバ３は、最適なデータ配置を実現するための各種処理を実施する為のサーバである。本実施形態においては、ＷＥＢサーバ２とＢａｔｃｈサーバ３が別のサーバとして表現されているが、これらは同一のサーバ内で動作していても問題ない。
【００１４】
まず、クエリ履歴取得部３１は、クエリ記録部２２が、クエリ履歴テーブル４１に記録したクエリの履歴情報（条件履歴情報）を取得する。また、データ使用頻度解析部３２は、クエリ履歴取得部３１から渡された履歴の内容に基づき、各クエリに該当する現在のデータベースに存在するデータを求める。この結果、図３に示すような、各クエリ（ｑ１（クエリ３１１）〜ｑ６（クエリ３１６））に対して、いずれのデータ（ｄ１（データ３０１）〜ｄ６（データ３０６））が該当するかのマップが求められる。
例えば、図３においては、クエリｑ１（クエリ３１１）に該当するデータは、データｄ１（データ３０１）、およびｄ３（データ３０３）ということを意味する。
【００１５】
次に、データグルーピング処理部３３は、どのデータとどのデータが、１度のリクエストで処理される傾向が高いかを求める。具体的には、一般的なデータ解析手法である協調フィルタリング等の手法を用いて、図４に示すようなデータ間の相関係数を求める。
図４においては、例えば、データｄ１（データ４０１）と、データｄ２（データ４１２）の相関係数は０．１であり、データｄ１（データ４０１）と、データｄ３（データ４１３）の相関係数は０．８であることを表している。相関係数が高い方が、よりそれらのデータに関係があるということを表す。
この相関係数を元に、同時に処理されやすいデータが同一のデータベースシステムに配置されるようにグルーピング処理を行う。グルーピングの処理結果例を図５の（ａ）に示す。この例では、相関係数が０．７以上のものをグルーピングしている。図４の例では、データｄ１（データ４０１）との相関係数が０．７以上のものはデータｄ３（データ４１３）であるため、それらをグループ１（グループ５０１）にグルーピングする。グルーピング処理を行うことで、図５の（ａ）に示すグループ化したグルーピング結果が得られる。
【００１６】
データ統合処理部３４は、データグルーピング処理部３３が作成したグループの統合処理を実施する。この処理では、同じデータを含む各グループを統合する。図５（ａ）の例では、データｄ３（データ５０１２）、（データ５０２２）は、グループ１（グループ５０１）、およびグループ２（５０２）の双方にグルーピングされている。そこで、このグループ１（グループ５０１）と、グループ２（グループ５０２）を統合する。この処理を行うことで、図５の（ｂ）に示すようなグループが作成される。
【００１７】
データ再統合処理部３５は、データ統合処理部３４が統合したグループを、データ数に応じて、更に統合する。具体的には、データ再統合処理部３５は、事前に本システムに入力されていた分割数Ｎのグループ数となるように、データ統合処理部３４が作成したグループを統合する。また、この時、Ｎ個のグループに含まれるデータ数が等しくなるように、データ数を考慮しながら、グループの統合を行う。例えば、Ｎを「２」とした時には、最終的に図５の（ｃ）に示すようなグループが作成される。なお、Ｎの値は、例えば、データ量や、処理負荷などから、求めることを想定している。
【００１８】
接続情報解析部３６は、各データが、再統合処理で求められたグループに分配されるような条件（例えば、項目Ａの値が「１０」より大きいものは、グループ１（グループ５２１）、１０以下のものは、グループ２（グループ５２２）といった条件）を求める。
具体的には、接続情報解析部３６は、データ解析手法の一つである決定木等のアルゴリズムを用いて、各データが、再統合処理後のグループに分配される条件を求める。この時、この処理で求められる決定木の例を図６に示す。
図６に示される項目６０１〜６０５は、図２に示すデータテーブル４３，５１の項目に対応する。例えば、項目６０１のＴｉｍｅＳｔａｍｐの値が、２０１２／７／１以上（条件６１１）で、Ｔｏｔａｌ（ｓｍａｌｌ）（条件６０５）の値が、「５０」以上（条件６１２）のものは、グループ１に分配される、ということを表す。
本実施形態においては、条件を求めるアルゴリズムとして、決定木を用いたが、ほかのアルゴリズムを用いて、条件を求めても問題ない。接続情報解析部３６は、データを分配する条件を求めた後に、後述する接続情報管理テーブル４２に条件を登録する。
図２において、データ再配置処理部３７は、接続情報解析部３６が求めた条件通りに、データベースシステム４，５のデータを、再配置する。
【００１９】
最後に、データベースシステム４、５について説明する。
図２において、データベースシステム４は、クエリ履歴テーブル４１、接続情報管理テーブル４２、および一つ以上のデータテーブル４３から構成される。また、データベースシステム５は、一つ以上のデータテーブル５１から構成される。それぞれのテーブルについて、以下に説明する。
【００２０】
クエリ履歴テーブル４１は、図７に示すように、各クエリに一意に振られたクエリＩＤ７０１毎に、データテーブル４３、５１の項目７１１〜７１８に対して、どのようなクエリがなされたかを管理するためのテーブルである。例えば、クエリＩＤｑ６（クエリ７０７）では、項目７１１がＴｅｎａｎｔＩＤ７１１で、Ｔ１と等しく、ｔｏｔａｌ１の値が「２００」よりも大きいクエリであることを示す。テーブル中に記載されている「Ｅｑ」、「Ｇｔ」、「Ｌｔ」は、それぞれ「等しい」、「より大きい」、「未満」を意味する演算子である。演算子の種類は、これらだけに限定されたものではなく、どのような演算子であっても構わない。
【００２１】
次に、図８を用いて、接続情報管理テーブル４２の説明をする。
まず図８の（ａ）には、本システムによりデータの再配置が行われる前の、接続情報管理テーブル４２を示す。
接続情報管理テーブル４２は、クライアント１から発行されたリクエストに含まれるクエリを元に、そのクエリに該当するデータがどのデータベースシステムに保持されているかを判別するためのデータが保持されるテーブルである。
接続情報管理テーブル４２は、データテーブル４３の項目と同数のカラム８０１〜８０８、および、データベースシステムへの接続情報を示すカラム８０９から構成される。本発明を実施する前には、図８の（ａ）に示すように、本テーブルには１行だけのデータが登録されており、また、全ての項目の値が「＊」となっている。「＊」は「条件を問わない」を意味する。例えば、クライアント１から発行されるクエリにおいて、ＴｅｎａｎｔＩＤに対する条件が記載されていたとしても、それらは考慮されず、接続情報８１１を用いて、データベースシステムを選択する、ということを意味する。
【００２２】
次に、図８の（ｂ）を用いて、本発明を実施し、データの再配置を行った後の、接続情報管理テーブルの例を示す。
上述の通り、接続情報解析部３６が求めた決定木から求められる条件が、本テーブルには登録される。例えば、条件８１２では、図６中の条件６１１、および６１２を表している。例えば、クライアント１から、ＴｉｍｅＳｔａｍｐが２０１２／８／１より大きく、Ｔｏｔａｌ（ｓｍａｌｌ）の値が１００以上のデータ取得に関するデータリクエストが来た場合には、接続情報取得部２３は、図８の（ｂ）のデータ８１２を取得する。
【００２３】
最後に、データテーブル４３の説明をする。
データテーブル４３は、クエリ履歴テーブル４１や、接続情報管理テーブル４２といった管理用の情報が格納されるテーブルではなく、実際のデータを扱う為のテーブルである。分散データベースシステムの場合、図２に示すように、このテーブルのみが複数のデータベースシステムに、存在することになる。ユーザは、このテーブルのカラム（項目）毎に、前述したようなクエリを指定することが可能となる。
【００２４】
図９、図１０を用いて、本実施形態におけるＷＥＢサーバ２でのクライアント１からのリクエスト処理、およびＢａｔｃｈサーバ３での、データ再配置処理の処理フローについて説明する。
【００２５】
〔ＷＥＢサーバ２の処理〕
図９は、本実施形態を示すサーバ装置の制御方法を説明するフローチャートである。本例は、クライアント１からのリクエスト処理に関する処理例である。なお、各ステップは、ＷＥＢサーバ２のＣＰＵが記憶装置に記憶された制御プログラム（図２に示したモジュール）を実行することで実現される。以下、制御主体を図２に示したモジュールとして説明する。
Ｓ９０１では、リクエスト受信部２１は、クライアント１からのリクエストを受け付け、リクエスト内容を、クエリ記録部２２に渡す。Ｓ９０２では、クエリ記録部２２は、渡されたリクエストにクエリが含まれるか否かを判断する。クエリが含まれていると、クエリ記録部２２が判断した場合には、Ｓ９０３に遷移し、含まれていないと、クエリ記録部２２が判断した場合には、Ｓ９０５に遷移する。
Ｓ９０３では、クエリ記録部２２は、渡されたクエリに対して構文解析し、各データ項目に対して、どのような条件や、どのような演算子が用いられているかを求める。Ｓ９０４では、クエリ記録部２２は、クエリ履歴テーブル４１に、解析結果を記録する。
【００２６】
Ｓ９０５では、接続情報取得部２３は、接続情報管理テーブル４２より接続情報を取得し、Ｓ９０３で構文解析されたクエリの条件を元に、該クエリに該当するデータがどのデータベースシステムに保持されているかを判別する。そして、得られたデータベースシステムへの接続情報を、データ操作部２４に渡す。
【００２７】
Ｓ９０６では、データ操作部２４は、渡された接続情報を元に、データベースシステムに接続し、リクエスト、クエリに応じた処理を実行する。その処理結果をレスポンス送信部２５に渡す。Ｓ９０７では、レスポンス送信部２５は、処理結果を、クライアント１に返却する。
【００２８】
以上、Ｓ９０１〜Ｓ９０７までの処理を行うことで、クライアントから発行されたリクエスト、およびクエリに応じた処理を実行した上で、そのクエリの内容を、クエリ履歴テーブル４１に記録することが可能となる。
【００２９】
〔Ｂａｔｃｈサーバ３の処理〕
図１０は、本実施形態を示すサーバ装置の制御方法を説明するフローチャートである。本例は、Ｂａｔｃｈサーバ３がデータ再配置を実行するときのいずれかのグループに関連づけるグループ統合処理例である。なお、各ステップは、Ｂａｔｃｈサーバ３のＣＰＵが記憶装置に記憶された制御プログラム（図２に示したモジュール）を実行することで実現される。以下、制御主体を図２に示したモジュールとして説明する。また、本フローが実施される前に、本データ管理システムに対して、分割数Ｎ、および相関係数のしきい値が入力されているものとする。
Ｓ１００１では、クエリ履歴取得部３１は、クエリ履歴テーブル４１からクエリ履歴群を取得する。
Ｓ１００２では、データ使用頻度解析部３２は、Ｓ１００１で取得した履歴群から一つのクエリを取得し、該クエリに該当するデータを求める。
【００３０】
Ｓ１００３では、データ使用頻度解析部３２は、Ｓ１００１で取得したクエリ履歴群の全てに対してＳ１００２の処理を実行したか否かを確認し、全てに対して処理をしている場合には、Ｓ１００４に遷移し、処理をしていない場合には、Ｓ１００２に遷移する。
【００３１】
Ｓ１００４では、データグルーピング処理部は、Ｓ１００２、およびＳ１００３の処理結果に対して、協調フィルタリングなどのアルゴリズムを用いて、各データの相関係数を求める。この処理を実行することで、図４に示すような、データ間の相関係数が格納されたマップを得ることが可能となる。
【００３２】
Ｓ１００５では、データグルーピング処理部は、Ｓ１００４で得られたマップから、任意の１データを選択し、そのデータとの相関係数が、予め定められたしきい値以上のデータを検出し、そのデータをグルーピングする。
【００３３】
Ｓ１００６では、グルーピング処理部は、Ｓ１００５の処理を、Ｓ１００４で求められたマップに含まれる全てのデータに対して実施したか否かを判断する。すべてのデータに対して実施した場合には、Ｓ１００７に遷移し、実施していない場合には、Ｓ１００５に遷移する。Ｓ１００５〜Ｓ１００６までの処理を実施することで、図５の（ａ）に示すようなグルーピング結果が完成する。
Ｓ１００７では、データ統合処理部３４は、データグルーピング処理部３３が求めたグループの中から任意の１つグループを選択する。Ｓ１００８では、データ統合処理部３４は、Ｓ１００７で選択したグループの中から任意の１データを選択する。
【００３４】
Ｓ１００９では、データ統合処理部３４は、Ｓ１００８で選択したデータを含むグループが、Ｓ１００７で選択したグループ以外に存在するか否かを検索する。ここで、存在するとデータ統合処理部３４が判断した場合には、Ｓ１０１０に遷移し、存在しないとデータ統合処理部３４が判断した場合には、Ｓ１０１１に遷移する。
Ｓ１０１０では、データ統合処理部３４は、Ｓ１００９で検出したグループと、Ｓ１００７で選択したグループを統合する。
【００３５】
Ｓ１０１１では、データ統合処理部３４は、Ｓ１００７で選択したグループに存在する全データに対して、Ｓ１００８〜Ｓ１０１０の処理を実施したか否かを確認する。実施した場合には、Ｓ１０１２に遷移し、実施していない場合には、Ｓ１００８に遷移する。
【００３６】
Ｓ１０１２では、データ統合処理部３４は、データグルーピング処理部３３が求めた全グループに対して、Ｓ１００７〜Ｓ１０１１の処理を実施したか否かを確認する。実施した場合には、Ｓ１０１３に遷移し、実施していない場合には、Ｓ１００７に遷移する。Ｓ１００７〜Ｓ１０１２までの処理を実施することで、図５の（ｂ）に示すようなグルーピング結果が完成する。
Ｓ１０１３では、データ再統合処理部３５は、データ統合処理部３４が求めた全グループの中から、含まれるデータ数が多いグループから順にＮ個のグループを選択する。
【００３７】
Ｓ１０１４では、データ再統合処理部３５は、データ統合処理部３４が求めた全グループに含まれ、かつ、Ｓ１０１３で選択したグループではないグループの中から、最もデータ数が多いグループを選択する。
Ｓ１０１５では、データ再統合処理部３５は、Ｓ１０１３で選択したＮ個のグループに含まれるデータ数を比較する。Ｓ１０１６では、データ再統合処理部３５は、Ｓ１０１５で比較した結果から、最もデータ数が少ないグループを選択し、そのグループとＳ１０１４で求めたグループを統合する。
【００３８】
Ｓ１０１７では、データ再統合処理部３５は、データ統合処理部３４が求めた全グループに対して、Ｓ１０１４〜Ｓ１０１６の処理を行ったか否かを判断する。処理を実施しているとデータ再統合処理部３５が判断した場合には、Ｓ１０１８に遷移し、実施していないとデータ再統合処理部３５が判断した場合には、Ｓ１０１４に遷移する。Ｓ１０１３〜Ｓ１０１７の処理を行うことで、図５の（ｃ）に示すようなグルーピング結果が完成する。
【００３９】
Ｓ１０１８では、接続情報解析部３６は、Ｓ１０１３〜Ｓ１０１７の処理で求められた再統合後のグループに含まれるデータが、それぞれ再統合後のグループに分類されるような決定木を求める。この処理を行うことで、図６に示すような決定木が完成する。
【００４０】
Ｓ１０１９では、接続情報解析部３６は、Ｓ１０１８で得られた決定木を元に、接続情報管理テーブル４２を更新する。これにより、図８の（ｂ）に示すような接続情報管理テーブルが完成する。Ｓ１０２０では、データ再配置処理部３７は、Ｓ１０１９で得られた接続情報管理テーブルを元に、データをデータベースシステム４、５に再配置する。
以上、Ｓ１００１〜Ｓ１０２０までの処理を実施することで、同時に使用される傾向の高いデータがひとつのデータベースシステムにまとまるようなデータの配置を実現することが可能となる。
〔第２実施形態〕
本発明に係る第２実施形態について説明する。以下構成に関しては第１実施形態と異なる点についてのみ説明する。
【００４１】
第１実施形態において、データグルーピング処理部３３が、グルーピング処理を行った場合に、例えば、図１１の（ａ）に示すように、各グループに含まれるデータ数に大きな偏りが発生する場合がある。この時、統合処理、および再統合処理（分割数は２とする）を順に実施すると、図１１の（ｂ）に示すように、最終的に作成されるグループに含まれるデータ数にも大きな偏りが発生する。
【００４２】
上記の説明の具体的な例を、以下に述べる。例えば、クライアント１が操作可能なデータが、そのクライアント１が属する組織（テナント）に紐づくデータのみとされるような制限をもつシステムに対して、本発明の実施例１が適用された場合を想定する。ここで、この「自分が属するテナントのデータのみ操作可能」という制限を実現するためには、リクエスト受信部２１が、「ｔｅｎａｎｔＩＤ ｅｑ  'ＸＸＸ'」といったクエリ文字列を、自動的に付与することが考えられる。このＸＸＸはクライアント１が属するテナントを示すＩＤ（テナントＩＤ）とし、このＩＤはリクエスト受信部２１が、クライアント１の認証情報を元に求めて、クエリに付与する。このように、テナントＩＤをシステム側で自動、かつ強制的に付与することで、クライアント１が操作するテナントのデータを自身が属するテナントに限定することが可能となる。
【００４３】
このようなクエリを、リクエスト受信部２１が付与した場合、クエリ履歴テーブル４１には、必ず「ｔｅｎａｎｔＩＤ」に関する条件が記録される。このように、「ｔｅｎａｎｔＩＤ」が必ず記録されたクエリ履歴テーブル４１を元に、グルーピング処理を行った場合、テナントＩＤが等しいデータがグルーピングされやすくなる。この時、テナント毎に保持されるデータ数が大きく異なる場合、前期グルーピングの結果、作成される各グループに含まれるデータ数にも大きく差が生まれる。
【００４４】
一般的に、検索や削除等の処理のパフォーマンスに影響を大きく与えるファクターの一つとして、そのデータベースシステムに保持されているデータの総数があげられる。総数が多ければ多いほど、検索や削除にかかる時間は増加する。そのため、複数のデータベースシステム間で、それぞれのデータベースシステムが保持するデータ数に偏りがある場合、操作対象のデータベースシステムの違いによって、著しくパフォーマンスが劣化することになる。これは、ユーザーエクスペリエンスの低下につながる。一般的には、どういった状況においても、同等のパフォーマンスを持って、ユーザにシステムを提供することが重要とされる。これらの理由から、分散データベースシステムにおいて、各データベースシステムに保持されるデータ数が偏りなく、均等に配置されていることが重要となる。
【００４５】
そこで、第２実施形態においては、同時に使用される傾向の高いデータ同士を、一つのデータベースシステムにまとめつつも、各データベースシステムが保持するデータ数の差を是正することを目的とする。
上記の具体例の場合、グルーピング処理結果の各グループに含まれるデータ数を比較し、著しくデータ数に著しい差がある場合には、そのグループに含まれるデータに共通する条件、上記例の場合だとテナントＩＤ、を削除し、再度グルーピング処理を行う。このようにすることで、リクエストに必ず付与される条件が存在しており、それが原因となり、データ数に差が発生するような場合にも、そのデータ数の差を是正した再配置処理が可能となる。
【００４６】
〔Ｂａｔｃｈサーバ３の処理〕
図１２は、本実施形態を示すサーバ装置の制御方法を説明するフローチャートである。本例は、Ｂａｔｃｈサーバ３がデータ再配置を実行するときの処理例である。なお、各ステップは、Ｂａｔｃｈサーバ３のＣＰＵが記憶装置に記憶された制御プログラム（図２に示したモジュール）を実行することで実現される。以下、制御主体を図２に示したモジュールとして説明する。また、本フローが実施される前に、本データ管理システムに対して、しきい値αが何らかの手段で入力されているものとする。
【００４７】
本実施例における、データ数の偏りの是正処理は、図１２のＳ１２０１〜Ｓ１２０５までの処理で実現される。これらの処理は、図１０で示したＳ１００６と、Ｓ１００７の間にて、データグルーピング処理部３３によって実施される。Ｓ１００１〜Ｓ１００６、およびＳ１００７〜Ｓ１０２０の処理は、前述したものと違いはないため、説明を割愛する。
Ｓ１２０１では、データグルーピング処理部３３は、全データベースシステム内に存在するデータ数を算出する。この全データ数をＡという変数で定義する。Ｓ１２０２では、データグルーピング処理部３３は、均等にデータがＮ個のデータベースシステムに分散した時のデータ数Ａ／Ｎを求める。
【００４８】
Ｓ１２０３では、データグルーピング処理部３３は、Ｓ１２０２で求めたＡ／Ｎにしきい値αをかけた値以上のデータ数を持つグループが、Ｓ１００５〜Ｓ１００６で得られるグループに存在するかを求める。この処理の目的は、均等にデータが分散された状態（各グループにＡ／Ｎ個ずつデータが存在する）から、大幅に外れたデータ数を持つグループが存在するか否か求めることである。大幅に外れたデータ数を持つグループが存在するとデータグルーピング処理部３３が判断した場合には、Ｓ１２０４に遷移し、しないとデータグルーピング処理部３３が判断した場合には、Ｓ１００７に遷移する。
【００４９】
Ｓ１２０４では、データグルーピング処理部３３は、Ｓ１２０３で求められたグループに含まれる全データに共通して発行されているクエリが存在するか否かを、Ｓ１００１で取得したクエリ履歴群より求める。共通する条件があるとデータグルーピング処理部３３が判断した場合には、データグルーピング処理部３３は、Ｓ１２０５に遷移し、存在しないとデータグルーピング処理部３３が判断した場合には、Ｓ１００７に遷移する。
Ｓ１２０５では、データグルーピング処理部３３は、Ｓ１２０４で求めた条件を、Ｓ１００１で取得したクエリ履歴群から削除し、Ｓ１００２に遷移する。
以上、Ｓ１２０１〜Ｓ１２０５の処理を実施することで、データ数の偏りを是正することが可能となる。
【００５０】
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をパソコン（コンピュータ）等の処理装置（ＣＰＵ、プロセッサ）にて実行することでも実現できる。
【００５１】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。
【符号の説明】
【００５２】
１０１ コンピュータ
１０５ プリントデバイス
３０２ 印刷管理装置
３０４ 機器情報管理装置
【図１】
2015121924.tif 000003
【図２】
2015121924.tif 000004
【図３】
2015121924.tif 000005
【図４】
2015121924.tif 000006
【図５】
2015121924.tif 000007
【図６】
2015121924.tif 000008
【図７】
2015121924.tif 000009
【図８】
2015121924.tif 000010
【図９】
2015121924.tif 000011
【図１０】
2015121924.tif 000012
【図１１】
2015121924.tif 000013
【図１２】
2015121924.tif 000014