(57)【特許請求の範囲】
【請求項１】
データベースに分割または統合して格納されるデータに対してデータ処理する複数のデータ分割制御装置を含むデータ分割制御システムにおけるデータ分割制御装置であって、
前記データベースが記憶される記憶部と、
前記データ処理の要求を、端末または他のデータ分割制御装置から受信した場合、前記データ分割制御システム内に分散して格納されたデータのロックに掛かる時間を示すロック時間と、前記データ処理に掛かる時間を示すデータ処理時間とを計測し、所定期間内の計測値を集計する処理時間計測部と、
前記集計したロック時間およびデータ処理時間に基づいて、当該データ処理の対象となったデータに対して分割するか否かまたは統合するか否かを判定する分割統合処理部と
を備え、
前記分割統合処理部は、前記集計したロック時間と前記集計したデータ処理時間との合計値および前記集計したロック時間を前記合計値で除算した比に基づいて、前記データ処理の対象となったデータに対して分割するか否かまたは統合するか否かを判定し、
今回の所定期間内の前記合計値が前回の所定期間内の前記合計値より小さく、かつ前記比が第１の閾値より小さい場合、前記データを分割すると判定する
ことを特徴とするデータ分割制御装置。
【請求項２】
前記分割統合処理部は、分割されているデータの双方が、今回の所定期間内の前記合計値が前回の所定期間内の前記合計値より大きく、かつ前記比が前記第１の閾値よりも大きな第２の閾値より大きい場合、当該分割されているデータ同士を統合すると判定する
ことを特徴とする請求項１に記載のデータ分割制御装置。
【請求項３】
前記集計したロック時間および前記集計したデータ処理時間それぞれは、前記所定期間内の計測値の平均値である
ことを特徴とする請求項１または請求項２に記載のデータ分割制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースにデータを分割または統合して格納する技術に関する。
【背景技術】
【０００２】
ネットワーク上に分散して配置される複数のサーバを論理的に連結させて、あたかも１台のサーバのように見せる技術を用いたクラスタシステムが知られている。このクラスタシステムは、データに関しては分散データベースとして各サーバにデータを分割して配置させ、スケーラビリティを向上させることができる。
【０００３】
例えば、１つの非常に大きなデータをそのまま１台のサーバに格納する場合、当該サーバのメモリを圧迫してしまう状態が発生する。これを回避するため、非特許文献１に記載の分散データベースＢｉｇＴａｂｌｅが基盤とする分散ファイルシステムのＧＦＳ（Global File System）においては、１つの大きなデータを、適当な固定サイズのＣｈｕｎｋに分割し、複数のサーバに格納する方法が採られている。この方法では、固定サイズのＣｈｕｎｋが分散して各サーバに格納されるため、１台当りのサーバのメモリへの圧迫の度合いは小さくなる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】F Chang, et al.，“Bigtable: a distributed storage system for structured data”，OSDI ‘06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
【発明の概要】
【発明が解決しようとする課題】
【０００５】
基本的に、分散データベースに格納されているデータに対するデータ処理は、分散ロック等によってロック処理が行われた後に実行されることで、トランザクション性を維持している。したがって、分割されたデータ全体に係わる更新等の処理を実行する場合、当該データ全体は、分散ロック等によってロックされることになる。
【０００６】
非特許文献１に記載の固定サイズのＣｈｕｎｋを用いる方法では、そのサイズを小さくし過ぎると、非常に多くのサーバに分散してデータが配置されることになる。データが非常に多くのサーバに分散配置された場合、分散ロックに掛かる時間が肥大化し、分割数が少ない場合よりも、かえってトランザクション処理に掛かる時間が大きくなるという虞がある。なお、トランザクション処理に掛かる時間とは、分散ロックに掛かる時間とデータ処理に係る時間との合計である。
【０００７】
そこで、本発明は、トランザクション処理に掛かる時間を低減するように、データの分割の仕方を自動的に決める技術を提供することを課題とする。
【課題を解決するための手段】
【０００８】
本発明のデータ分割制御装置は、データベースに分割または統合して格納されるデータに対してデータ処理する複数のデータ分割制御装置を含むデータ分割制御システムにおけるデータ分割制御装置であって、前記データベースが記憶される記憶部と、前記データ処理の要求を、端末または他のデータ分割制御装置から受信した場合、前記データ分割制御システム内に分散して格納されたデータのロックに掛かる時間を示すロック時間と、前記データ処理に掛かる時間を示すデータ処理時間とを計測し、所定期間内の計測値を集計する処理時間計測部と、前記集計したロック時間およびデータ処理時間に基づいて、当該データ処理の対象となったデータに対して分割するか否かまたは統合するか否かを判定する分割統合処理部とを備え、前記分割統合処理部は、前記集計したロック時間と前記集計したデータ処理時間との合計値および前記集計したロック時間を前記合計値で除算した比に基づいて、前記データ処理の対象となったデータに対して分割するか否かまたは統合するか否かを判定し、今回の所定期間内の前記合計値が前回の所定期間内の前記合計値より小さく、かつ前記比が第１の閾値より小さい場合、前記データを分割すると判定することを特徴とする。
【０００９】
このような構成によれば、データ分割制御装置は、所定期間内で集計したロック時間およびデータ処理時間に基づいて、データ処理の対象となったデータに対して分割するか否かまたは統合するか否かを判定することができる。なお、データの分割数が増加するに従って、ロック時間は増加し、データ処理時間は減少する。つまり、データの分割数に対して、ロック時間とデータ処理時間とはトレードオフの関係にある。したがって、データ分割制御装置は、所定期間内で集計したロック時間およびデータ処理時間に基づいて、トランザクション処理に掛かる時間を低減するように、データの分割の仕方を自動的に決めることができる。
【００１２】
また、前記分割統合処理部は、分割されているデータの双方が、今回の所定期間内の前記合計値が前回の所定期間内の前記合計値より大きく、かつ前記比が前記第１の閾値よりも大きな第２の閾値より大きい場合、当該分割されているデータ同士を統合すると判定することを特徴とする。
【００１３】
このような構成によれば、データ分割制御装置の分割統合処理部は、今回の所定期間内の合計値と前回の所定期間内の合計値との大小関係、および集計したロック時間を前記合計値で除算した比と所定の閾値との大小関係を比較することによって、データの分割または統合を判定する。したがって、データ分割制御装置は、トランザクション処理に掛かる時間を低減するように、データの分割の仕方を自動的に決めることができる。
【００１４】
また、前記集計したロック時間および前記集計したデータ処理時間それぞれは、前記所定期間内の計測値の平均値であることを特徴とする。
【００１５】
このような構成によれば、データ分割制御装置は、計測値の平均値を用いて、手動でなく、データの分割の仕方を自動的に決めることができる。
【発明の効果】
【００１６】
本発明によれば、トランザクション処理に掛かる時間を低減するように、データの分割の仕方を自動的に決めることができる。
【図面の簡単な説明】
【００１７】
【図１】データ分割制御装置を含むデータ分割制御システムの構成例を示す図である。
【図２】記憶部に記憶される情報の一例を示す図であり、（ａ）は分割情報の一例を表し、（ｂ）は処理時間情報を表す。
【図３】データ分割制御システムの処理フロー例を示す図である。
【図４】分割したデータをさらに分割する場合の処理フロー例を示す図である。
【図５】分割したデータを統合する場合の処理フロー例を示す図である。
【図６】ロック時間およびデータ処理時間とデータの分割数との関係を示す図である。
【発明を実施するための形態】
【００１８】
本発明を実施するための形態（以降、「本実施形態」と称す。）について、適宜図面を参照しながら詳細に説明する。
【００１９】
（データ分割制御装置）
はじめに、データ分割制御装置１を含むデータ分割制御システム１００の構成例について、図１を用いて説明する。
データ分割制御システム１００は、図１に示すように、データ分割制御装置１，１ａ，１ｂ，１ｃをクラスタ構成として備えている。なお、図１中に示すデータ分割制御装置１ａ，１ｂ，１ｃの機能は、データ分割制御装置１の機能と同様である。また、図１では、データ分割制御装置１，１ａ，１ｂ，１ｃを４台記載しているが、４台に限られることはない。データ分割制御装置１，１ａ，１ｂ，１ｃは、ネットワーク２ａを介して通信可能に接続されている。また、ユーザの操作する端末３は、ネットワーク２ｂを介して、データ分割制御システム１００にデータ処理（例えば、格納、参照、更新）等の要求を送信し、データ分割制御システム１００から要求に対応する応答情報（例えば、データ処理結果）を受信する。
【００２０】
（データ分割制御装置）
次に、データ分割制御装置１の機能例について、図１を用いて説明する。
データ分割制御装置１は、処理部１１、記憶部１２および通信部１３を備える。処理部１１は、図示しないＣＰＵ（Central Processing Unit）およびメインメモリによって構成され、記憶部１２に記憶されているアプリケーションプログラムをメインメモリに展開して、リクエスト処理部１１１、処理時間計測部１１２、分割統合処理部１１３およびデータ管理部１１４を具現化している。
【００２１】
リクエスト処理部１１１は、端末３からデータ処理等の要求を受信し、記憶部１２に格納されているデータベースのデータを処理し、その要求に対応する応答情報を、端末３に送信する機能を有する。また、リクエスト処理部１１１は、受信した要求の対象となるデータを格納しているいずれかのデータ分割制御装置１ａ，１ｂ，１ｃに、その要求を転送する機能を有する。なお、受信した要求の対象となるデータを格納するデータ分割制御装置１，１ａ，１ｂ，１ｃは、例えば、Consistent Hashing等の分散アルゴリズムを用いて決めることができる。また、リクエスト処理部１１１は、データ分割制御システム１００内に分散して格納されたデータの可用性とシステムとしての一貫性を保つための分散ロックを実行する機能を有する。
【００２２】
処理時間計測部１１２は、データ処理時に、分散ロックに掛かる時間（以降、ロック時間と称す。）と、データ処理に掛かる時間（以降、データ処理時間と称す。）とを計測して記録し、所定の周期（一定周期の場合を含む）で統計的に集計して、集計したロック時間およびデータ処理時間を算出する機能を有する。このとき、所定の周期内で集計された回数Ｎも算出される。なお、集計したロック時間およびデータ処理時間それぞれは、一例として、所定の周期（所定期間）内の計測値の平均値である。
【００２３】
分割統合処理部１１３は、処理時間計測部１１２によって集計されたロック時間およびデータ処理時間に基づいて、データに対して分割するか否かまたは統合するか否かを判定し、分割または統合の処理を実行する機能を有する。なお、分割統合処理部１１３の処理の詳細については後記する。
【００２４】
データ管理部１１４は、分割統合処理部１１３の分割または統合の処理に応じて、記憶部１２に記憶されている不図示のデータベースのデータの管理（登録、読み出し、更新、削除等）を実行する機能を有する。データ管理部１１４は、不図示のデータベースのデータを、キーと、それに紐付く先頭アドレス、カラム、タグ等の情報によって管理する。
【００２５】
記憶部１２は、ハードディスク等の記憶装置であり、分割情報１２１、処理時間情報１２２および不図示のデータベースのデータが記憶される。
分割情報１２１には、キー（データの識別情報）と、当該データが分割後の情報である場合には、分割後のデータの格納場所と、分割後のデータの先頭が元データの何（Ｂｙｔｅ）目に位置しているかに関する先頭アドレス（先頭情報）と、が記憶される。分割情報１２１の詳細については後記する。
処理時間情報１２２には、処理時間計測部１１２によって計測されたロック時間およびデータ処理時間が記録（記憶）される。
【００２６】
ここで、分割情報１２１の一例を図２（ａ）に示す。
図２（ａ）では、キーａが付されたデータの分割状態を木構造で表している。キーａを根ノードとして、キーａ０，ａ１は兄弟ノードである。また、キーａ１０，ａ１１は、キーａ１を親ノードとする兄弟ノードである。
【００２７】
キーａ０は、キーａと同じデータ分割制御装置１の記憶部１２に記憶される。また、キーａ１は、格納場所がデータ分割制御装置１ｂであり、先頭アドレスがキーａのデータのｓ（Ｂｙｔｅ）目からの情報であることが付されている。キーａ１０は、キーａ１と同じデータ分割制御装置１ｂの記憶部１２に記憶される。そして、キーａ１１は、格納場所がデータ分割制御装置１ｃであり、先頭アドレスがキーａのｔ（Ｂｙｔｅ）目からの情報であることが付されている。したがって、データ分割制御装置１は、分割情報１２１を参照して、キーに基づいて、分割されたデータに係る情報を取得することができる。
【００２８】
次に、処理時間情報１２２の一例を、図２（ｂ）に示す。
図２（ｂ）に示すように、処理時間情報１２２は、キーごとに、Ｎｏ．、計測されたロック時間およびデータ処理時間の記録を記憶している。ここで、Ｎｏ．は、処理時間計測部１１２によって付される管理番号を表す。処理時間計測部１１２は、所定の周期で処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を取得して、統計的な算出処理を実行し、その算出処理の実行後には、算出処理に用いた記録を削除する。
【００２９】
（データ分割制御システムの処理フロー）
次に、データ分割制御システム１００の処理フロー例について、図３を用いて説明する（適宜、図１、図２（ａ）（ｂ）参照）。
図３は、データ分割制御装置１が、データ分割制御装置１ａを介してデータ処理の要求を受信したり、端末３からデータ処理の要求を受信したりして、ロック時間およびデータ処理時間を計測し、計測したロック時間およびデータ処理時間に対して統計的な算出処理を実行し、データの分割判定を行って、分割処理を実行するまでの処理フロー例を表している。なお、データ分割制御装置１がキーａのデータを格納しているものとする。
【００３０】
ステップＳ３０１では、データ分割制御装置１ａのリクエスト処理部１１１は、端末３等からキーａのデータに対するデータ処理の要求を受信する。
ステップＳ３０２では、データ分割制御装置１ａのリクエスト処理部１１１は、クラスタ構成機能によってキーａに対する要求を解析し、当該要求の対象となるキーａのデータを格納しているデータ分割制御装置１に当該要求を転送する。
【００３１】
ステップＳ３０３では、データ分割制御装置１のリクエスト処理部１１１は、要求を受信し、分散ロックの処理および受信した要求に対応するデータ処理を実行する。
ステップＳ３０４では、データ分割制御装置１の処理時間計測部１１２は、ロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１の記憶部１２の処理時間情報１２２に記録（記憶）する。
【００３２】
ステップＳ３０５では、データ分割制御装置１のリクエスト処理部１１１は、データ処理結果を示す応答情報を、要求を送信してきた端末３に送信する（図３では「端末へ応答送信」と記載）。
ステップＳ３０５とステップＳ３０７との間の二重波線は、時間経過の省略を表している。
【００３３】
ステップＳ３０７では、データ分割制御装置１のリクエスト処理部１１１は、端末３からキーａのデータに対するデータ処理の要求を受信する。
ステップＳ３０８では、データ分割制御装置１のリクエスト処理部１１１は、要求を受信し、分散ロックの処理および受信した要求に対応するデータ処理を実行する。
【００３４】
ステップＳ３０９では、データ分割制御装置１の処理時間計測部１１２は、ロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１の記憶部１２の処理時間情報１２２に記録（記憶）する。
ステップＳ３１０では、データ分割制御装置１のリクエスト処理部１１１は、データ処理結果を示す応答情報を、要求を送信してきた端末３に送信する。
【００３５】
ステップＳ３１１では、データ分割制御装置１の処理時間計測部１１２は、処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を取得し、ロック時間およびデータ処理時間を集計する。具体的には、データ分割制御装置１の処理時間計測部１１２は、統計的な算出処理により、キーａのデータに係るロック時間およびデータ処理時間それぞれの平均時間を算出する。
【００３６】
ステップＳ３１２では、データ分割制御装置１の分割統合処理部１１３は、処理時間計測部１１２によって統計的に算出されたロック時間およびデータ処理時間（集計されたロック時間および集計されたデータ処理時間）に基づいて、分割判定を実行する。分割判定とは、分割するか否かの判定を行うことである。
具体的には、ロック時間の平均時間をＴＬ、データ処理時間の平均時間をＴＤとすると、分割統合処理部１１３は、まず、トランザクション処理の平均総処理時間（合計値）Ｔ＝ＴＬ＋ＴＤを演算し、その演算値をキーａに紐付けて記憶する。次に、分割統合処理部１１３は、今回の所定期間の平均総処理時間Ｔが前回の所定期間の平均総処理時間Ｔｐより小さく、かつＴＬを（ＴＬ＋ＴＤ）で除算した比ＴＬ／（ＴＬ＋ＴＤ）が予め設定された分割閾値（第１の閾値）Ｋよりも小さい場合、キーａのデータを分割すると判定する。
【００３７】
ここで、集計されたロック時間と集計されたデータ処理時間とを用いて、分割判定を行う理由について、図６を用いて説明する。
図６に示すように、一般的に、ロック時間は、データの分割数が増加するに従って大きくなる。また、データ処理時間は、データの分割数が増加するに従って並列処理の割合が増加するので減少し、分割数が大きくなり過ぎると、データサイズがデータ処理単位より小さくなるため減少しなくなる。そこで、データの分割数に対して、データ処理時間とロック時間とがトレードオフの関係にあるので、平均総処理時間Ｔの変化およびＴＬ／（ＴＬ＋ＴＤ）の変化をデータの分割および統合の判定に用いることにする。
【００３８】
図３に戻って、ステップＳ３１３では、データ分割制御装置１の分割統合処理部１１３は、キーａのデータを分割すると判定した場合、キーａのデータをキーａ０のデータおよびキーａ１のデータに分割する分割処理を実行する。
ステップＳ３１４では、データ分割制御装置１の分割統合処理部１１３は、ステップＳ３１３において分割したキーａ１のデータを、クラスタ構成のデータ分割制御装置１ｂに送信する。なお、キーａ０のデータは、そのままデータ分割制御装置１に格納される。
【００３９】
ステップＳ３１５では、データ分割制御装置１の分割統合処理部１１３は、キーａ０について分割情報１２１を更新する。また、データ分割制御装置１の分割統合処理部１１３は、キーａ１に対して、格納場所および先頭アドレスを付与して、分割情報１２１を更新する。
【００４０】
（データをさらに分割する場合の処理フロー）
次に、本実施形態のデータ分割制御システム１００において、分割したキーａ１のデータをさらに分割する場合の処理フロー例について、図４を用いて説明する（適宜、図１、図２（ａ）（ｂ）参照）。
まず、図４に示すデータ分割制御システム１００におけるデータの所在状況について説明する。図２（ａ）の分割情報１２１に示されているように、データ分割制御装置１にはキーａ０のデータが格納され、データ分割制御装置１ｂには、キーａ１のデータが格納されているものとする。
【００４１】
ステップＳ４０１では、データ分割制御装置１のリクエスト処理部１１１は、キーａのデータに対するデータ処理の要求を受信したとき、データ分割制御装置１の分割情報１２１を参照して、キーａ１のデータの格納場所を取得し、キーａ１のデータを格納しているデータ分割制御装置１ｂに、キーａ１のデータに対するデータ処理の要求を送信する。そして、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１のデータに対するデータ処理の要求を受信する。
【００４２】
ステップＳ４０２では、データ分割制御装置１のリクエスト処理部１１１は、キーａ０のデータに対する分散ロックの処理およびデータ処理を実行する。
ステップＳ４０３では、データ分割制御装置１の処理時間計測部１１２は、キーａ０のデータに係るロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１の記憶部１２の処理時間情報１２２に記録（記憶）する。
【００４３】
ステップＳ４０４では、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１のデータに対する分散ロックの処理およびデータ処理を実行する。
ステップＳ４０５では、データ分割制御装置１ｂの処理時間計測部１１２は、キーａ１のデータに係るロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１ｂの記憶部１２の処理時間情報１２２に記録（記憶）する。
【００４４】
ステップＳ４０６では、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１に対する処理データをデータ分割制御装置１に送信する。そして、データ分割制御装置１のリクエスト処理部１１１は、キーａ１に対する処理データを受信する。
ステップＳ４０６とステップＳ４０７との期間には、ステップＳ４０１〜Ｓ４０６の処理が繰り返し実行されるものとする。
【００４５】
ステップＳ４０７では、データ分割制御装置１の処理時間計測部１１２は、データ分割制御装置１の処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を取得し、キーａ０のデータに係るロック時間およびデータ処理時間を集計する。具体的には、データ分割制御装置１の処理時間計測部１１２は、統計的な算出処理により、キーａ０のデータに係るロック時間およびデータ処理時間それぞれの平均時間を算出する。
【００４６】
ステップＳ４０８では、データ分割制御装置１の処理時間計測部１１２は、集計結果をデータ分割制御装置１の分割統合処理部１１３に送信する。集計結果とは、ステップＳ４０７において算出されたキーａ０のデータに係るロック時間およびデータ処理時間それぞれの平均時間である。
【００４７】
ステップＳ４０９では、データ分割制御装置１ｂの処理時間計測部１１２は、データ分割制御装置１ｂの処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を取得し、キーａ１のデータに係るロック時間およびデータ処理時間を集計する。具体的には、データ分割制御装置１ｂの処理時間計測部１１２は、統計的な算出処理により、キーａ１のデータに係るロック時間およびデータ処理時間それぞれの平均時間を算出する。
【００４８】
ステップＳ４１０では、データ分割制御装置１ｂの処理時間計測部１１２は、集計結果をデータ分割制御装置１の分割統合処理部１１３に送信する。集計結果とは、ステップＳ４０９において算出されたキーａ１のデータに係るロック時間およびデータ処理時間それぞれの平均時間である。
【００４９】
ステップＳ４１１では、データ分割制御装置１の分割統合処理部１１３は、受信したキーａ１のデータに係るロック時間およびデータ処理時間に基づいて分割判定を実行する。
具体的には、キーａ１のデータに係るロック時間の平均時間をＴＬ（ａ１）とし、キーａ１のデータに係るデータ処理時間の平均時間をＴＤ（ａ１）とすると、データ分割制御装置１の分割統合処理部１１３は、まず、トランザクション処理の平均総処理時間（合計値）Ｔ（ａ１）＝ＴＬ（ａ１）＋ＴＤ（ａ１）を演算し、その演算値をキーａ１に紐付けて記憶する。次に、分割統合処理部１１３は、今回の所定期間の平均総処理時間Ｔ（ａ１）が前回の所定期間の平均総処理時間Ｔｐ（ａ１）より小さく、かつＴＬ（ａ１）を（ＴＬ（ａ１）＋ＴＤ（ａ１））で除算した比ＴＬ（ａ１）／（ＴＬ（ａ１）＋ＴＤ（ａ１））が予め設定された分割閾値（第１の閾値）Ｋよりも小さいか否かを判定する。そして、データ分割制御装置１の分割統合処理部１１３は、比ＴＬ（ａ１）／（ＴＬ（ａ１）＋ＴＤ（ａ１））が分割閾値Ｋより小さい場合、キーａ１のデータを分割すると判定する。ここで、分割閾値Ｋは、分割が進みすぎることを防止するために設定される値である。
分割すると判定する条件を下記に示す。
Ｔ（ａ１）＜Ｔｐ（ａ１）  かつＴＬ（ａ１）／（ＴＬ（ａ１）＋ＴＤ（ａ１））＜Ｋ
【００５０】
ステップＳ４１２では、データ分割制御装置１の分割統合処理部１１３は、キーａ１のデータを分割すると判定した場合、データ分割制御装置１ｂに対して、キーａ１のデータの分割指示を示す分割指示情報を送信する。分割指示情報には、分割後のキーａ１１のデータの格納場所および先頭アドレスが含まれている。
ステップＳ４１３では、データ分割制御装置１の分割統合処理部１１３は、キーａ１１に対して、格納場所および先頭アドレスを付与して、データ分割制御装置１の記憶部１２の分割情報１２１を更新する。
【００５１】
ステップＳ４１４では、データ分割制御装置１ｂの分割統合処理部１１３は、受信した分割指示情報に基づいて、キーａ１のデータをキーａ１０のデータおよびキーａ１１のデータに分割する分割処理を実行する。
ステップＳ４１５では、データ分割制御装置１ｂの分割統合処理部１１３は、分割したキーａ１１のデータを、クラスタ構成のデータ分割制御装置１ｃに送信する。なお、キーａ１０のデータは、そのままデータ分割制御装置１ｂに格納される。
【００５２】
（データを統合する場合の処理フロー）
次に、本実施形態のデータ分割制御システム１００において、分割したデータを統合する場合の処理フロー例について、図５を用いて説明する（適宜、図１、図２（ａ）（ｂ）参照）。
まず、図５に示すデータ分割制御システム１００におけるデータの所在状況について説明する。図２（ａ）の分割情報１２１に示されるように、データ分割制御装置１にはキーａ０のデータが格納され、データ分割制御装置１ｂにはキーａ１０のデータが格納され、データ分割制御装置１ｃにはキーａ１１のデータが格納されているものとする。そして、図５では、キーａ１０のデータとキーａ１１のデータとを統合する処理について説明する。
【００５３】
ステップＳ５０１では、データ分割制御装置１のリクエスト処理部１１１は、キーａのデータに対するデータ処理の要求を受信したとき、データ分割制御装置１の分割情報１２１を参照して、キーａ１０，ａ１１のデータの格納場所を取得し、キーａ１０のデータを格納しているデータ分割制御装置１ｂにキーａ１０のデータに対するデータ処理の要求を送信し、キーａ１１のデータを格納しているデータ分割制御装置１ｃにキーａ１１のデータに対するデータ処理の要求を送信する。そして、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１０のデータに対するデータ処理の要求を受信する。また、データ分割制御装置１ｃのリクエスト処理部１１１は、キーａ１１のデータに対するデータ処理の要求を受信する。
ステップＳ５０２では、データ分割制御装置１のリクエスト処理部１１１は、キーａ０のデータに対する分散ロックの処理およびデータ処理を実行する。
【００５４】
ステップＳ５０３では、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１０のデータに対する分散ロックの処理およびデータ処理を実行する。
ステップＳ５０４では、データ分割制御装置１ｂの処理時間計測部１１２は、キーａ１０のデータに係るロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１ｂの記憶部１２の処理時間情報１２２に記録（記憶）する。
【００５５】
ステップＳ５０５では、データ分割制御装置１ｃのリクエスト処理部１１１は、キーａ１１のデータに対する分散ロックの処理およびデータ処理を実行する。
ステップＳ５０６では、データ分割制御装置１ｃの処理時間計測部１１２は、キーａ１１のデータに係るロック時間とデータ処理時間とを計測し、計測したロック時間およびデータ処理時間をデータ分割制御装置１ｃの記憶部１２の処理時間情報１２２に記録（記憶）する。
【００５６】
ステップＳ５０７では、データ分割制御装置１ｂのリクエスト処理部１１１は、キーａ１０に対する処理データをデータ分割制御装置１に送信する。また、データ分割制御装置１ｃのリクエスト処理部１１１は、キーａ１１に対する処理データをデータ分割制御装置１に送信する。そして、データ分割制御装置１のリクエスト処理部１１１は、キーａ１０，ａ１１に対する処理データを受信する。
【００５７】
ステップＳ５０７とステップＳ５０８との期間には、ステップＳ５０１〜Ｓ５０７の処理が繰り返し実行されるものとする。
そして、ステップＳ５０８では、データ分割制御装置１ｂの処理時間計測部１１２は、データ分割制御装置１ｂの処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を取得し、キーａ１０のデータに係るロック時間およびデータ処理時間を集計する。具体的には、データ分割制御装置１ｂの処理時間計測部１１２は、統計的な算出処理により、キーａ１０のデータに係るロック時間およびデータ処理時間それぞれの平均時間を算出する。
【００５８】
ステップＳ５０９では、データ分割制御装置１ｃの処理時間計測部１１２は、データ分割制御装置１ｃの処理時間情報１２２を参照して、記録されたロック時間およびデータ処理時間を読み出して、キーａ１１のデータに係るロック時間およびデータ処理時間を集計する。具体的には、データ分割制御装置１ｃの処理時間計測部１１２は、統計的な算出処理により、キーａ１１のデータに係るロック時間およびデータ処理時間それぞれの平均時間を算出する。
【００５９】
ステップＳ５１０では、データ分割制御装置１ｂおよびデータ分割制御装置１ｃの処理時間計測部１１２それぞれは、集計結果をデータ分割制御装置１に送信する。集計結果とは、ステップＳ５０８において算出したキーａ１０のデータに係るロック時間およびデータ処理時間それぞれの平均時間、および、ステップＳ５０９において算出したキーａ１０のデータに係るロック時間およびデータ処理時間それぞれの平均時間である。
【００６０】
ステップＳ５１１では、データ分割制御装置１の分割統合処理部１１３は、受信したキーａ１０，ａ１１のデータに係るロック時間およびデータ処理時間に基づいて統合判定を実行する。
具体的には、キーａ１０のデータに係るロック時間の平均時間をＴＬ（ａ１０）とし、キーａ１０のデータに係るデータ処理時間の平均時間をＴＤ（ａ１０）とすると、データ分割制御装置１の分割統合処理部１１３は、まず、トランザクション処理の平均総処理時間（合計値）Ｔ（ａ１０）＝ＴＬ（ａ１０）＋ＴＤ（ａ１０）を演算し、その演算値をキーａ１０に紐付けて記憶する。次に、分割統合処理部１１３は、今回の所定期間の平均総処理時間Ｔ（ａ１０）が前回の所定期間の平均総処理時間Ｔｐ（ａ１０）より大きく、かつＴＬ（ａ１０）を（ＴＬ（ａ１０）＋ＴＤ（ａ１０））で除算した比ＴＬ（ａ１０）／（ＴＬ（ａ１０）＋ＴＤ（ａ１０））が予め設定された統合閾値（第２の閾値）Ｃよりも大きいか否かを判定する。ここで、統合閾値Ｃは、統合が進みすぎることを防止するために設定される値である。また、キーａ１１のデータに係るロック時間の平均時間をＴＬ（ａ１１）とし、キーａ１１のデータに係るデータ処理時間の平均時間をＴＤ（ａ１１）とすると、データ分割制御装置１の分割統合処理部１１３は、まず、トランザクション処理の平均総処理時間（合計値）Ｔ（ａ１１）＝ＴＬ（ａ１１）＋ＴＤ（ａ１１）を演算し、その演算値をキーａ１１に紐付けて記憶する。次に、分割統合処理部１１３は、今回の所定期間の平均総処理時間Ｔ（ａ１１）が前回の所定期間の平均総処理時間Ｔｐ（ａ１１）より大きく、かつＴＬ（ａ１１）を（ＴＬ（ａ１１）＋ＴＤ（ａ１１））で除算した比ＴＬ（ａ１１）／（ＴＬ（ａ１１）＋ＴＤ（ａ１１））が予め設定された統合閾値（第２の閾値）Ｃよりも大きいか否かを判定する。そして、データ分割制御装置１の分割統合処理部１１３は、今回の所定期間の平均総処理時間Ｔ（ａ１０）が前回の所定期間の平均総処理時間Ｔｐ（ａ１０）より大きく、かつＴＬ（ａ１０）／（ＴＬ（ａ１０）＋ＴＤ（ａ１０））が統合閾値Ｃより大きく、さらに、今回の所定期間の平均総処理時間Ｔ（ａ１１）が前回の所定期間の平均総処理時間Ｔｐ（ａ１１）より大きく、かつＴＬ（ａ１１）／（ＴＬ（ａ１１）＋ＴＤ（ａ１１））が統合閾値Ｃより大きい場合、キーａ１０のデータにキーａ１１のデータを統合すると判定する。なお、図２（ａ）に示すように、キーａ１０とキーａ１１とは兄弟ノードとなる葉であるので統合すると判定される。しかし、一方のデータが葉ではなく、節である場合には、統合しないと判定される。このとき、統合後のキーａ１の平均総処理時間Ｔ（ａ１）は、（Ｔ（ａ１０）Ｎ（ａ１０）＋Ｔ（ａ１１）Ｎ（ａ１１））／（Ｎ（ａ１０）＋Ｎ（ａ１１））を算出して求められ、その算出値がキーａ１に紐付けて記憶される。
統合すると判定する条件を下記に示す。
Ｔ（ａ１０）＞Ｔｐ（ａ１０）  かつ
ＴＬ（ａ１０）／（ＴＬ（ａ１０）＋ＴＤ（ａ１０））＞Ｃ  かつ
Ｔ（ａ１１）＞Ｔｐ（ａ１１）  かつ
ＴＬ（ａ１１）／（ＴＬ（ａ１１）＋ＴＤ（ａ１１））＞Ｃ
【００６１】
ステップＳ５１２では、データ分割制御装置１の分割統合処理部１１３は、キーａ１０のデータにキーａ１１のデータを統合すると判定した場合、データ分割制御装置１ｂおよびデータ分割制御装置１ｃに対して、キーａ１０のデータにキーａ１１のデータを統合する指示を示す統合指示情報を送信する。
ステップＳ５１３では、データ分割制御装置１の分割統合処理部１１３は、キーａ１０とキーａ１１とを統合したキーａ１に対して、格納場所および先頭アドレスを付与して、データ分割制御装置１の記憶部１２の分割情報１２１を更新する。
【００６２】
ステップＳ５１４では、データ分割制御装置１ｂの分割統合処理部１１３は、受信した統合指示情報に基づいて、キーａ１０のデータにキーａ１１のデータを統合する統合処理を実行する。なお、図５には示していないが、データ分割制御装置１ｃの分割統合処理部１１３は、キーａ１１のデータを削除する。
【００６３】
なお、分割閾値Ｋと統合閾値Ｃとは、分割と統合とが連続して交互に発生し振動してしまうことを防ぐため、統合閾値Ｃは分割閾値Ｋより大きく離れた値に設定されることが好ましい。
【００６４】
また、例えば、キーａが図２（ａ）に示すように、キーａ０，ａ１０，ａ１１に分割され、それぞれ異なるデータ分割制御装置１，１ａ，１ｂ，１ｃに格納されているものとする。この時、本実施形態では、データ分割制御装置１がキーａのデータを参照するデータ処理の要求を受信した場合、キーａ１０，ａ１１のデータを取得する処理が増加する。しかし、キーａのデータのサイズが非常に大きかった場合、キーａ１０，ａ１１のデータを取得する処理に伴う遅延は、キーａのデータ全体を参照する処理に伴う遅延に比べて無視できる程度である。
【００６５】
以上、本実施形態のデータ分割制御装置１は、データ処理を実行した場合、分散ロックに掛かる時間（ロック時間）と、データ処理に掛かる時間（データ処理時間）とを計測し、所定期間内の計測値を集計する処理時間計測部１１２と、集計したロック時間およびデータ処理時間に基づいて、当該データ処理の対象となったデータを分割する、統合するまたは何もしないと判定する分割統合処理部１１３とを備える。具体的には、分割統合処理部１１３は、今回の所定期間内の集計したロック時間と集計したデータ処理時間との合計値が前回の所定期間内の前記合計値より小さく、かつ集計したロック時間を前記今回の所定期間内の合計値で除算した比が第１の閾値より小さい場合、そのデータを分割すると判定する。また、分割統合処理部１１３は、分割されているデータの双方が、今回の所定期間内の集計したロック時間と集計したデータ処理時間との合計値が前回の所定期間内の前記合計値より大きく、かつ集計したロック時間を前記今回の所定期間内の合計値で除算した比が統合閾値Ｃより大きい場合、当該データ同士を統合すると判定する。このことによって、データ分割制御装置１は、トランザクション処理に掛かる時間を低減するように、データの分割の仕方を自動的に決めることができる。
【００６６】
また、ロック時間は、データの分割のされ方、分割されたデータの格納場所の散らばり方の双方またはいずれか一方、およびデータのどの部分を同時に用いるか、に依存する。データの更新処理においては、部分データを更新する場合があり、本来は、「同時に更新される部分」が１つのデータとなることが好ましい。同時に更新される部分データは、分散ロック等によって必ず排他処理を掛けられるので、各部分データごとに排他処理の時間を計測しておくことで、この部分データが他のデータと同時に処理される確率が高いことから把握できる。このようにして、データ分割制御装置１は、運用中に分割されたデータのロック時間を取得しているので、データを同時に更新処理に用いていることを動的に把握可能である。さらに、データ分割制御装置１は、同時に処理に用いる部分が変更された場合であっても、収集結果に基づいて自動的に追従できる。したがって、データ分割制御システム１００は、手動でデータをどのように分割するかを設定する手間を省くことができる。
【００６７】
なお、本実施形態では、ロック処理の時間およびデータ処理時間を所定の周期で集計するように説明した。この集計処理は、所定の周期（一定周期を含む）で実行されなくとも構わない。例えば、集計処理は、データ処理要求に対して同期、非同期のいずれかで実行されても構わない。また、集計処理は、例えば、データ分割制御装置１の内部アラーム（例えば、メモリ等リソースの使用率が一定以上になった場合等）や、外部からの指示に基づいて実行されても構わない。
【００６８】
また、本実施形態では、分割統合は、図２（ａ）の分割情報１２１に示したように、２分木で実行した場合について説明したが、多分木で実行されても構わない。また、分割するときのサイズは、均等でなくても構わない。
【符号の説明】
【００６９】
１，１ａ，１ｂ，１ｃ  データ分割制御装置
３  端末
１１  処理部
１２  記憶部
１３  通信部
１００  データ分割制御システム
１１１  リクエスト処理部
１１２  処理時間計測部
１１３  分割統合処理部
１１４  データ管理部
１２１  分割情報
１２２  処理時間情報
Ｃ  統合閾値（第２の閾値）
Ｋ  分割閾値（第１の閾値）
Ｔ、Ｔｐ  平均総処理時間（合計値）
ＴＬ  ロック時間
ＴＤ  データ処理時間
【図１】
0005997668.tif 000002
【図２】
0005997668.tif 000003
【図３】
0005997668.tif 000004
【図４】
0005997668.tif 000005
【図５】
0005997668.tif 000006
【図６】
0005997668.tif 000007