図1は、データ処理システムの概要図である。データ処理システムは、クライアント60からのアクセスを、複数のアプリケーションサーバ(APサーバa、APサーバb、APサーバc、以下APサーバ)10に分散する(振り分ける)負荷分散装置70を有する。負荷分散装置70は、クライアント60からのアクセスを、たとえばラウンドロビンによりAPサーバ10に分散させる。APサーバ10は、アクセスに対応するデータを格納するデータストアサーバ(DSサーバ1、DSサーバ2、DSサーバ3、以下DSサーバ)20にアクセスし、アクセス要求に対応するデータに対する所定の処理(参照、更新、格納、削除)を実行する。
データ分散サーバ(以下、DDサーバ)30は、データベース40に格納されているデータを読み出し、読み出したデータをいずれかのDSサーバ20に格納する。DDサーバ30は、DSサーバ20に格納されたデータがAPサーバ10から変更(更新、格納、削除のいずれか)された場合、変更されたデータに関してAPサーバ10とデータベース40との間でデータ同期を図る。データ同期に関しては既存の技術(たとえば、キャッシュデータの変更部分を、データベース内の該当部分に反映させる技術)を用いるものであり、説明を省略する。データベース40に格納され、クライアント60からのアクセスの対象となり得るデータは、いずれかのDSサーバ20に格納され、複数のDSサーバ20に同じデータが格納されないように、DDサーバ30によってデータの配置が制御される。以上のように、DDサーバ30は、理解しやすくするためにデータ分散サーバと呼ぶが、前述および後述する処理を実行するデータベースサーバと呼んでもよい。
図1に示すデータ処理システムでは、図中太線矢印で示すように、クライアント60からのアクセスを負荷分散装置70がAPサーバ10に分散させても、結果としてアクセスが特定の(1台とは限らない)DSサーバ20に集中する状況が発生する。一例として、データ処理システムがコンテンツ配信システムであり、人気のあるコンテンツが特定のDSサーバ20に格納されている場合である。他の例として、データ処理システムが証券取引システムであり、注目を集めている銘柄の証券データが特定のDSサーバ20に格納されている場合である。データ処理システムは、DSサーバ20へのアクセスの集中を検知して、アクセスの集中度合いを少なくするように動作する。
図2は、データ処理システムの構成図である。ただし、図1の概要図から、クライアント60および負荷分散装置70の図示を省略している。省略したクライアント60および負荷分散装置70は、概要図を参照して説明したように構成され、動作する。
データ処理システムは、APサーバ10とDSサーバ20がネットワーク50を介して接続され、DSサーバ20とDDサーバ30がネットワーク52を介して接続される。また、APサーバ10、DSサーバ20およびDDサーバ30は、制御用のネットワーク55を介して接続される。
APサーバ10は、データ配置テーブル100を参照して、クライアント60からの負荷分散装置70を介したアクセス要求に対応するデータがいずれのDSサーバ20にあるかを判別して、ネットワーク50を介して、判別したDSサーバ20にアクセスする。ただし、アクセス要求に対応する処理が、新規のデータの格納の場合(データ配置テーブル100に、データを格納するDSサーバ20がない場合)、格納しているデータ量が最も少ないDSサーバ20にアクセスし、新規のデータを格納する。DSサーバ20に格納された新規のデータは、前述したように、DDサーバ30によってデータ同期される。すなわち、DSサーバ20に格納された新規のデータは、DDサーバ30によってデータベース40に格納される。
DSサーバ20は、アクセス監視部200と、アクセス監視部200による監視結果を格納するアクセス頻度テーブル250を有する。アクセス監視部200は、APサーバ10からのアクセスを監視し、所定時間(たとえば5分)内のアクセス数を、格納しているデータ毎に集計し、アクセス頻度とする。アクセス頻度は、単位時間(たとえば1分)当たりに正規化したアクセス数としてもよい。アクセス頻度テーブル250の詳細については後述するが、アクセス頻度テーブル250は、アクセス頻度の監視結果としてネットワーク55を介してDDサーバ30へ送信される。
なお、DSサーバ20は、APサーバ10から新規のデータが格納された場合、または更新若しくは削除された場合のように、アクセス頻度の監視対象の変更または監視対象のデータのデータ量の変更に応じて、アクセス頻度テーブル250を変更する。
DDサーバ30は、データ再配置部300、DSサーバ20から受信したアクセス頻度テーブル250を纏めたアクセス頻度集計テーブル350、およびデータ再配置部300による、DSサーバ20へのデータ再配置結果を格納するデータ配置テーブル370を有する。DDサーバ30は、所定時間(たとえば5分)毎にDSサーバ20からネットワーク55を介してアクセス頻度テーブル250を受信する。アクセス頻度テーブル250は、DDサーバ30からのDSサーバ20への送信要求に応じてDSサーバ20から送信されてもよいし、所定時間毎にDSサーバ20から送信されるようにしてもよい。ここでは、後述するように、前者によるものとする。
DDサーバ30のデータ再配置部300は、受信したアクセス頻度テーブル250を纏めたアクセス頻度集計テーブル350を作成し、作成したアクセス頻度集計テーブル350を参照して新たなデータ配置テーブル370を作成する。各DSサーバ20へのAPサーバ10からのアクセス頻度に所定以上の集中がなければ(アクセス頻度にバラツキがなければ)、データ再配置部300は新たなデータ配置テーブル370を作成しない。
データ再配置部300は、新たなデータ配置テーブル370を作成した場合、詳細は後述するが、現状のデータ配置テーブル370と比較し、DSサーバ20に新たに配置するデータをデータベース40から読み出してDSサーバ20にネットワーク52を介して配置し、新たなデータ配置テーブル370を、APサーバ10にネットワーク55を介して送信すると共に、データ配置テーブル100を新たなデータ配置テーブル370の内容に置き換えるように指示する。また、データ再配置部300は、新たなデータ配置テーブル370を、DSサーバ20にネットワーク55を介して送信すると共に、アクセス頻度テーブル250の新たなデータ配置に係る部分を新たなデータ配置テーブル370の内容に基づいて書き換えるように指示する。この後、DSサーバ20に格納しているデータで、現状の(これまで使用していた)データ配置テーブル370にあり、新たなデータ配置テーブル370にないデータの削除を、ネットワーク55を介してDSサーバ20に指示する。このように、DSサーバ20の間で、データを移動するのではなく、データ再配置部300によって、データの見掛け上の移動を制御する。これにより、新たなデータがDSサーバ20に格納され、APサーバ10が参照するデータ配置テーブル370が更新され、その後に削除すべきデータがDSサーバ20から削除されるので、APサーバ10によるDSサーバ20へのアクセスに対して、DSサーバ20にデータが存在しないという状況の発生を避けることができる。
図3は、データ配置テーブル370の一例である。図3は、各DSサーバ20が有するデータ量がほぼ同一(図3では、155MB〜160MB)になるように配置した例である。APサーバ10が有するデータ配置テーブル100は、DDサーバ30から送信されたデータ配置テーブル370と同じであるので、データ配置テーブル370を代表させて説明する。また、DDサーバ30のデータ再配置部300は、現状と新たなデータ配置テーブル370の2面のテーブルを用いるが、前述のようにデータ配置の比較のためであり、現状のデータ配置テーブル370を一時的に退避しておくことで比較処理は可能であるので、ここでは一つのデータ配置テーブル370として説明する。
データ配置テーブル370は、No371、DSサーバ名372、データ名373およびデータ量374の項目を有する。No371は、図を見易くするためであり、項目として無くてもよい。DSサーバ名372は、データベース40のデータを格納するDSサーバ20の名称であり、DSサーバ20を識別できれば、名称でなくてもよい。データ名373は、DSサーバ20に格納しているデータの名称である。データ名373も、データを識別できれば、データまでのパス名などでもよく、名称でなくてもよい。データ名373は、データの、DSサーバ20の格納アドレス、データベース40の格納アドレス、クライアント60にデータアクセスのために開放しているデータ名称などに変換される必要があるが、処理の必要に応じて変換表を用意すればよい。データ量374は、データの容量である。
データ量374を次に理由により用いる。クライアント60から見ると、たとえば、データへのアクセス要求の一例としてダウンロード要求を想定すると、ダウンロード要求の送信からダウンロード完了までの時間が応答時間となる。この応答時間には、ダウンロードに要する時間が含まれ、ダウンロードに要する時間は、ダウンロードするデータの容量に依存する(ネットワークの構成、性能、込み具合などにより必ずしも比例しないが、一般にデータ容量が大きければ、クライアント60がダウンロードに要する時間は長くなる。)。そこで、後述するように、データ再配置部300は、アクセス頻度を対象にした場合と、本実施形態の変形例として、アクセス頻度×データ容量を対象とした場合に関して、データ配置テーブル370を作成する。以下のデータ配置テーブル370などのテーブルの説明においては、変形例としてのアクセス頻度×データ容量を対象とした場合も併せて説明する。換言すると、アクセス頻度を対象にした場合には、データ容量に関して関知しなくてよい。データ容量に関して、データの変更(更新、格納、削除のいずれか)の場合は、データ容量(更新データ容量、新規に格納するデータ容量、削除するデータを識別する識別データ容量)がクライアント60の処理内容に依存するので、これらの場合にはデータ再配置部300は、データ容量に関知せずにデータ配置テーブル370を作成する。
図3のデータ配置テーブル370の内容の一例を説明する。図3は、図1に対応し、DSサーバ1にデータ1〜4、DSサーバ2にデータ5〜8、DSサーバ3にデータ9〜11を格納していることを示す。データ容量374に関しては、たとえば、データ1が30MB、データ2が50MB、データ3が60MB、データ4が20MBを示している。
データ配置テーブル370として説明したが、データ配置テーブル100も同じ構成であり、データベース40にある、クライアント60にアクセスを許容するすべてのデータがDSサーバ20のいずれかにあることを示している。したがって、APサーバ10は、データ配置テーブル100を参照することにより、アクセスするデータを格納するDSサーバ20を認識できる。これは、DSサーバ20をキャッシュサーバに例えると、必ずアクセス対象のデータがヒットすることを意味しているので、キャッシュサーバでヒットしない場合のデータベース40からの読み出し処理に要する時間を費やさないで済むことになる。これにより、キャッシュサーバを用いた場合のヒット率の問題を解決できる。
図4は、アクセス頻度テーブル250の一例である。図4の(A)、(B)および(C)は、DSサーバ1、DSサーバ2およびDSサーバ3の各々のアクセス頻度テーブル250である。アクセス頻度テーブル250についても、後述する変形例に係るデータ量に関しても併せて説明する。
図4の(A)に示す、DSサーバ1のアクセス頻度テーブル250を代表させて説明する。アクセス頻度テーブル250は、No251、データ名252、アクセス頻度253、データ量254およびアクセス頻度×データ量255の項目を有する。No251は、図を見易くするためであり、項目として無くてもよい。データ名252は、DSサーバ1に格納しているデータの名称である。データ量254は、データの容量である。アクセス頻度×データ量255は、アクセス頻度253とデータ量254との乗算結果であり、所定時間内にアクセスされた総データ量を表す。アクセス頻度×データ量255は、各DSサーバ20が求めずにDDサーバ30が求めてもよいが、DSサーバ20の台数が多い場合のDDサーバ30の処理負荷を軽減するために、各DSサーバ20が求める方が望ましい。
データ名252およびデータ量254は、DDサーバ30から送信されたデータ配置テーブル370を参照して、DSサーバ20が格納するデータに関してDSサーバ20が設定する。アクセス頻度253は、格納しているデータに関するアクセスがある毎にカウントアップする。アクセス頻度テーブル250は、所定時間毎にDDサーバ30に送信され、送信毎にアクセス頻度253はリセットされる。データ量254は、データ配置テーブル370の受信に応じて設定されるが、アクセスの種別によりデータ量が変動する場合があるので、その変動に応じて変更される。アクセスの種別が参照の場合は、データ量254は変動しない。アクセスの種別が更新の場合、一般にデータの値の書き換えであるのでデータ量254は変動しないが、たとえばコンテンツデータのバージョンアップのようにデータ量254が変動する場合がある。このような場合は、変動した結果のデータ量254とする。アクセスの種別が削除の場合、データ量254を0とする(削除対象のDSサーバ20に格納しているデータの実体は、DSサーバ20が削除してもよいし、DDサーバ30による、データ量254を参照したデータ同期により削除されてもよい)。
以上のように、データ量254の変動に伴って、アクセス頻度×データ量255に誤差を伴うことがある。たとえば、所定時間の前半と後半(たとえば2分30秒ずつ)のアクセス回数がいずれも10回とする。11回目(後半の最初)のアクセスでデータ量254が、前半の50MBから後半の60MBに変動したとする。したがって、アクセス頻度×データ量255は、正確には、10×50MB+10×60MB=1100MBであるが、アクセス頻度テーブル250をDDサーバ30に送信する段階では20×60MB=1200MBであり、100MBの誤差を生じている。しかしながら、今後(アクセス頻度テーブル250をDDサーバ30に送信した次の所定時間)のアクセスは、アクセス頻度テーブル250をDDサーバ30に送信した段階の容量のデータに対してであり、かつ変形例としてデータ配置の目安にアクセス頻度×データ量255を用いるので、発生する誤差を無視する。
図5は、アクセス頻度集計テーブル350の一例である。アクセス頻度集計テーブル350についても、後述する変形例に係るデータ量に関しても併せて説明する。アクセス頻度集計テーブル350は、所定時間毎にDDサーバ30が、DSサーバ20から収集したアクセス頻度テーブル250の内容を集計し、統合したテーブルである。アクセス頻度集計テーブル350は、No351、DSサーバ名352、データ名353、アクセス頻度354、データ量355、優先度(アクセス頻度×データ量)356、各DSサーバ20のアクセス頻度357、各DSサーバ20のアクセス頻度の標準偏差358、各DSサーバ20の優先度(アクセス頻度×データ量)359及び各DSサーバ20の優先度359の標準偏差360の項目を有する。No351は、図を見易くするためであり、項目として無くてもよい。DSサーバ名352は、アクセス頻度テーブル250を収集したDSサーバ20の名称である。データ名353、アクセス頻度354、データ量355および優先度356は、DSサーバ名352に対応したアクセス頻度テーブル250のデータ名252、アクセス頻度253、データ量254およびアクセス頻度×データ量255である。アクセス頻度×データ量を優先度と言い換えていることに格別な意味はない。アクセス頻度354、データ量355および優先度356の※欄は、データ処理システムを構成するDSサーバ20(DSサーバ1、DSサーバ2、DSサーバ3)に関する合計値を示す。アクセス頻度357、アクセス頻度の標準偏差358、優先度359および優先度359の標準偏差360の※欄については後述する。
アクセス頻度357は、各DSサーバ20のアクセス頻度(各データへのアクセス頻度の合計値)であり、その※欄は、各DSサーバ20のアクセス頻度の平均である。これは、各DSサーバ20のアクセス頻度のバラツキ又は偏差を見るためである。図5の例では、DSサーバ1に関して、アクセス頻度357は、20+15+60+10=105、同様に、DSサーバ2に関して、アクセス頻度357は60、DSサーバ3に関して、アクセス頻度357は15である。したがって、アクセス頻度357の平均(※欄)は、(105+60+15)/3=60である。アクセス頻度の標準偏差358は、データ処理システムを構成するDSサーバ20へのアクセス頻度357の標準偏差であり、その※欄に示す。具体的には、sqrt[{(105−60)2+(60−60)2+(15−60)2}/3] ≒36.7である。ただし、sqrtは平方根を表す。
優先度359および優先度の標準偏差360は、DSサーバ名352に対応した、それぞれ優先度356の合計および優先度359の標準偏差(※欄)であり、優先度359の※欄は、データ処理システムを構成するDSサーバ20全体としての平均である。アクセス頻度357、アクセス頻度の標準偏差358、優先度359および優先度359の標準偏差360は、DDサーバ30のデータ再配置部300によって求められる。
DSサーバ20のアクセス監視部200は、すでに説明したように、DDサーバ30から送信されたデータ配置テーブル370を参照した、DSサーバ20が格納するデータに関するアクセス頻度テーブル250の設定、DSサーバ20が格納しているデータに関するアクセス要求がある毎のアクセス頻度253のカウントアップ、アクセス要求の種別によりデータ量が変動した場合のデータ量254の変動、並びに、所定時間間隔毎のアクセス頻度テーブル250のDDサーバ30への送信およびアクセス頻度253のリセットの処理を実行するもので、フローチャートを用いた説明を省略する。
図6は、データ再配置部300の処理フローチャートである。データ再配置部300は、所定時間毎にアクセス頻度テーブル250を収集するために、所定時間の周期タイマによって起動される。データ再配置部300は、DSサーバ20からアクセス頻度テーブル250を収集し、アクセス頻度集計テーブル350に格納する(S301)。アクセス頻度テーブル250の内容のアクセス頻度集計テーブル350への格納については、前述したとおりである。アクセス頻度テーブル250の収集は、前述のように所定時間毎に実行するが、DDサーバ30のデータ再配置部300からの要求に応じてDSサーバ20がアクセス頻度テーブル250を送信する。DSサーバ20が、自らのタイマを用いて所定時間毎にアクセス頻度テーブル250を送信すると、DSサーバ20ごとの所定時間を計測するタイマ精度が同じであったとしても、所定時間を起算する時刻が必ずしも一致しないので、あるDSサーバ20による送信時刻と他のDSサーバ20による送信時刻との間に最大で所定時間の1/2の時間差を生じる可能性がある。そこで、DSサーバ20が、DDサーバ30からの要求をトリガーにして、アクセス頻度テーブル250を送信する。このような処理を実行しても、DSサーバ20の処理時間差などにより送信時刻の時間差が生じるが、時間差は所定時間に比べて無視できる時間であり、所定時間の制御をDDサーバ30に一括できるという長所がある。
データ再配置部300は、アクセス頻度集計テーブル350のDSサーバ20のアクセス頻度357およびその平均、アクセス頻度の標準偏差358、優先度359及び優先度359の標準偏差360を求める(S302)。これらの求め方については、図5を用いて説明したとおりである。S301及びS302の処理により、図5に例示したアクセス頻度集計テーブル350が作成される。
データ再配置部300は、アクセス頻度357のバラツキが所定以上かを判定し、所定未満の場合は処理を終了する(S303)。アクセス頻度357のバラツキを、(アクセス頻度357の平均−標準偏差358)以下又は(アクセス頻度357の平均+標準偏差358)以上のアクセス頻度357を有するDSサーバ20の有無で判定する。換言すると、各DSサーバ20のアクセス頻度357が、(アクセス頻度357の平均−標準偏差358)<アクセス頻度357<(アクセス頻度357の平均+標準偏差358)を満足するならば、バラツキはないと判定する。この判定基準は、データ処理システムに求められる特性によって定めればよい。たとえば、よりバラツキが少ないようにするために、前述の標準偏差358の代わりに、標準偏差358の1/2や1/3を用いる。
アクセス頻度357のバラツキを抑制するためには、アクセス頻度357が高い(値が大きい)DSサーバ20からアクセス頻度357が低い(値が小さい)DSサーバ20へデータを移動すればよい。データの移動は、見掛け上の移動であり、実際には後述の手順で実行する。
そこで、データ再配置部300は、データの移動元のDSサーバ20を特定する(S304)。アクセス頻度357が、(アクセス頻度357の平均+標準偏差358)以上のDSサーバ20を移動元として特定する。図5の例では、(アクセス頻度357の平均+標準偏差358)=60+36.7=96.7であるので、アクセス頻度357が105のDSサーバ1が、移動元として特定される。
データ再配置部300は、データの移動先のDSサーバ20を特定する(S305)。たとえば、アクセス頻度357が、(アクセス頻度357の平均−標準偏差358)以下のDSサーバ20を移動先として特定する。図5の例では、(アクセス頻度357の平均−標準偏差358)=60−36.7=23.3であるので、アクセス頻度357が15のDSサーバ3が、移動先として特定される。
S304及びS305の処理に伴い、移動元及び移動先の少なくとも一方のDSサーバ20として複数が特定されることがある。特定された移動元DSサーバ20が複数の場合、アクセス頻度357が最大のDSサーバ20を選択する。特定された移動先DSサーバ20が複数の場合、アクセス頻度357が最小のDSサーバ20を選択する。
データ再配置部300は、移動元のDSサーバ20のデータの中から移動対象データを特定する(S306)。ここでは、移動元のDSサーバ20のデータの中で、2番目にアクセス頻度が高い(値が大きい)データを移動対象データとして特定する。アクセス頻度が低い(値が小さい)データを移動対象データとして特定しても、アクセス頻度のバラツキ(標準偏差358)がデータ処理システム全体として改善されない(改善度合いが少ない)可能性が高いからである。また、アクセス頻度が最も高いデータを移動対象データとして特定すると、移動元のDSサーバ20のアクセス頻度が低下する一方、移動先のDSサーバ20のアクセス頻度が上昇し、極端には、次の移動対象データの特定時には、移動したデータを戻す、いわゆる振動現象が生じる可能性があるからである。そこで、アクセス頻度が最も高いデータとアクセス頻度が2番目に高いデータを異なるDSサーバ20に配置することにより、アクセス頻度のバラツキを少なくする。図5のアクセス頻度集計テーブル350の例では、移動元として特定したDSサーバ1のデータ1が移動対象データとして特定される。
データ再配置部300は、移動対象データを移動したものとして、アクセス頻度集計テーブル350を作成する(S307)。このとき、S301及びS302で作成したアクセス頻度集計テーブル350をDDサーバ30のメモリの空き領域に退避しておく。新たに作成したアクセス頻度集計テーブル350を参照して、アクセス頻度357のバラツキを判定し、バラツキが所定以上の場合はS304に戻る(S308)。この判定は、S303と同様である。なお、S308の判定において、アクセス頻度357が最も高いDSサーバ20が有するデータが一つの場合は、S304に戻らない。アクセス頻度357のバラツキが所定以上であっても、移動対象とする2番目のデータが存在しないからである。
S307及びS308の具体例を説明する。図5のアクセス頻度集計テーブル350から、DSサーバ1のデータ1をDSサーバ3に移動した場合のアクセス頻度集計テーブル350を図7に示す。図7と図5とのアクセス頻度の標準偏差358を比較すると、36.7から20.4にバラツキが改善されている。しかしながら、DSサーバ1のアクセス頻度357は85であり、(アクセス頻度357の平均+標準偏差358)=60+20.4=80.4以上であるので、この場合はさらにデータを移動するためにS304に戻る。図7のアクセス頻度集計テーブル350に関して、S304〜S308の処理を実行すると、図示を省略するが、データ2をDSサーバ1からDSサーバ3へ移動させ、アクセス頻度の標準偏差358が8.1のアクセス頻度集計テーブル350が得られる。このときのアクセス頻度357は、DSサーバ1が70、DSサーバ2が60、DSサーバ3が50であり、相変わらずアクセス頻度357のバラツキは標準偏差358の8.1を超えているので、再度、S304〜S308の処理を実行し、データ4をDSサーバ1からDSサーバ3へ移動させ、アクセス頻度集計テーブル350を作成する。作成したアクセス頻度集計テーブル350を図8に示す。図8のアクセス頻度集計テーブル350に示すように、各DSサーバ20のアクセス頻度357が60に平均化され、アクセス頻度の標準偏差358が0となり、アクセス頻度357のバラツキが無くなる。
データ再配置部300は、移動対象データをデータベース40から読み出し、移動先のDSサーバに格納する(S309)。移動対象データは、最新のアクセス頻度集計テーブル350(図8)と退避したアクセス頻度集計テーブル350(図5)を比較することにより判別する。たとえば、図8と図5のアクセス頻度集計テーブル350を比較すると、データ1、データ2及びデータ4が移動対象データであり、これらのデータをデータベース40から読み出し、ネットワーク52を介して、移動先のDSサーバ3に格納する。
データ再配置部300は、データ配置テーブル370を作成し、ネットワーク55を介してAPサーバ10及びDSサーバ20に送信する(S310)。データ再配置部300は、最新のアクセス頻度集計テーブル350(図8)を参照し、No351、DSサーバ名352、データ名353及びデータ量355を、データ配置テーブル370の、No371、DSサーバ名372、データ名373及びデータ量374に格納することにより、データ配置テーブル370を作成する。データ再配置部300によって送信されたデータ配置テーブル370は、APサーバ10においては、データ配置テーブル100としてそのまま用いられ、DSサーバ20においては、自らのDSサーバ20に関するNo351、データ名353及びデータ量355が、アクセス頻度テーブル250のNo251、データ名252及びデータ量254として用いられる。
データ再配置部300は、前述の見掛け上のデータの移動を終了するために、移動対象データを移動元のDSサーバから20削除する(S311)。
以上のデータ処理システムによれば、ヒット率の問題が発生しないDSサーバ20にデータを格納しておくので、アクセス要求に対して高い応答性能を得ることができる。さらに、各DSサーバ20に格納されているデータを移動することにより、各DSサーバ20のアクセス頻度のバラツキを少なくできる。さらに、いずれのAPサーバ10も、データ配置テーブル100を参照することにより、ヒット率100%でアクセス要求に対してDSサーバ20のデータにアクセスできるので、負荷分散装置70の負荷分散も、たとえラウンドロビンであっても、高い効率を示すことになる。なお、DDサーバ30に配置したデータ再配置部300、アクセス頻度集計テーブル350及びデータ配置テーブル370は、DSサーバ20に配置してもよい。
次に、データ処理システムの変形例を説明する。前述の実施形態がDSサーバ20のアクセス頻度のバラツキを少なくするためにデータを移動したのに対して、変形例は、DSサーバ20の優先度(アクセス頻度×データ量)のバラツキを少なくするためにデータを移動する。優先度(アクセス頻度×データ量)のバラツキを少なくすることが、クライアント60から見た応答時間の観点から必要であることを既に説明した。
変形例は、データ再配置部300の処理が異なり、データ再配置部300は、アクセス頻度集計テーブル350のアクセス頻度357及びアクセス頻度の標準偏差358に代えて、優先度359及び優先度の標準偏差360を用いる。前述の実施形態のデータ再配置部300の処理では、説明の都合上、実際には不要な優先度359及び優先度359の標準偏差360をS302で求めた。
データ再配置部300のS303以降の処理は、前述のアクセス頻度357及びアクセス頻度の標準偏差358を、優先度359及び優先度359の標準偏差360に読み替えることにより理解される。このようにして図5のアクセス頻度集計テーブル350から、作成される新たなアクセス頻度集計テーブル350を図9に示す。図9のアクセス頻度集計テーブル350は、図5のアクセス頻度集計テーブル350の優先度359が高いDSサーバ1から、優先度が2番目のデータ2をDSサーバ3に移動させたものである。さらに、アクセス頻度集計テーブル350を再作成してゆくと、前述の実施形態と同様に、図8のアクセス頻度集計テーブル350に辿りつき、これに基づいてデータ配置テーブル370が作成される。ただし、図8のアクセス頻度集計テーブル350から明らかなように、優先度359の平均+標準偏差360=2717+632=3349を、DSサーバ1の優先度359(3600)は超えている。図8のアクセス頻度集計テーブル350をデータ配置テーブル370の基にするのは、S308の処理で説明したように、もはやDSサーバ1に格納されるデータが一つであるからである。
以上の変形例によれば、アクセス要求に対するデータ量を考慮に入れているので、クライアント60から見た応答時間を改善できる。