(57)【要約】【課題】クライアントからのアクセス要求に対して高い応答性能を得る。【解決手段】データ処理システムは、クライアントからのアクセスに対応するデータを格納する複数のデータストアサーバ、データベースの各データを読み出し、クライアントからのアクセスに対応するデータとしていずれかのデータストアサーバに格納されるように、複数のデータストアサーバに分散するデータ分散サーバ、および、分散されたデータを格納するデータストアサーバを特定するデータ配置テーブルを有し、クライアントからのアクセスに応答して、データストアサーバを特定するデータ配置テーブルを参照してデータにアクセスするアプリケーションサーバを有する。【選択図】図２
2015172833.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからのアクセスに対応するデータを格納する複数のデータストアサーバ、データベースの各データを読み出し、前記クライアントからのアクセスに対応する前記データとしていずれかの前記データストアサーバに格納されるように、複数の前記データストアサーバに分散するデータ分散サーバ、および、分散された前記データを格納する前記データストアサーバを特定するデータ配置テーブルを有し、前記クライアントからのアクセスに応答して、前記データストアサーバを特定する前記データ配置テーブルを参照して、前記データにアクセスするアプリケーションサーバを有することを特徴とするデータ処理システム。
【請求項２】
前記データストアサーバは、該データストアサーバへの前記アプリケーションサーバからのアクセス頻度を監視し、監視した前記アクセス頻度をアクセス頻度テーブルとして前記データ分散サーバへ送信し、
前記データ分散サーバは、複数の前記データストアサーバから受信した前記アクセス頻度テーブルを集計し、複数の前記データストアサーバの前記アクセス頻度に所定以上のバラツキがあるとき、前記アクセス頻度の高い前記データストアサーバから前記アクセス頻度の低い前記データストアサーバに、前記データを移動することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記データストアサーバは、該データストアサーバが格納している前記データに対応して前記アプリケーションサーバからの前記アクセス頻度を監視し、前記データ分散サーバは、前記アクセス頻度の高い前記データストアサーバの、前記データに対応した前記アクセス頻度が２番目の前記データを前記アクセス頻度の低い前記データストアサーバに移動することを特徴とする請求項２記載のデータ処理システム。
【請求項４】
前記データストアサーバは、該データストアサーバが格納している前記データに対応して前記アプリケーションサーバからの前記アクセス頻度を監視し、前記アクセス頻度と前記データのデータ量を乗じた優先度を前記アクセス頻度テーブルに含み、前記データ分散サーバは、前記優先度の高い前記データストアサーバの、前記優先度が２番目の前記データを前記優先度の低い前記データストアサーバに移動することを特徴とする請求項２記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに係り、特にアクセス要求に対する処理負荷の分散を図るデータ処理システムに関する。
【背景技術】
【０００２】
多くのクライアントからの、アプリケーションサーバを介した、データベースサーバへのアクセス要求に、短時間で応答するために、複数のアプリケーションサーバを設け、クライアントからのアクセス要求を負荷分散装置（ロードバランサー）によって複数のアプリケーションサーバに振り分けるシステムがある。さらに、複数のアプリケーションサーバとデータベースサーバの間にキャッシュサーバ（プロキシ―サーバ）を設け、キャッシュサーバがアクセス要求に対して応答することにより、アクセス要求に対するデータベースサーバの負荷を軽減するシステムがある。
【０００３】
特許文献１に、ＤＮＳシステムを対象に、負荷分散装置が複数のキャッシュサーバに要求を振り分ける技術が開示されている。ＤＮＳシステムの場合、キャッシュサーバで要求にヒットしなければ、キャッシュサーバは、その要求に応えるために、ＤＮＳ権威サーバにアクセスする必要がある。そこで、特許文献１では、要求に対するヒット率が高いキャッシュサーバに優先的に要求を振り分けている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２４２７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、上記したように、多くのクライアントからの、アプリケーションサーバを介した、データベースサーバへのアクセス要求に、短時間で応答するために、複数のアプリケーションサーバを設け、クライアントからのアクセス要求を負荷分散装置（ロードバランサー）によって複数のアプリケーションサーバに振り分け、それらのアプリケーションサーバがデータベースサーバへアクセスする。このようなシステムでは、複数のアプリケーションサーバからデータベースサーバへのアクセスがボトルネックになる。
【０００６】
そこで、複数のアプリケーションサーバとデータベースサーバの間に、アプリケーションサーバからのアクセスに応じてデータベースのデータを格納するキャッシュサーバを設け、データへのアクセスを分散させるシステムがある。アプリケーションサーバから見ると、いずれかのキャッシュサーバにアクセス要求に対応するデータが存在するか、存在するとしてどのキャッシュサーバにアクセス要求に対応するデータが存在するかの情報がないので、ヒット率の問題がアクセス要求に対する応答性能の改善の妨げになる。そこで、アクセス要求に対して高い応答性能のデータ処理システムが望まれる。
【課題を解決するための手段】
【０００７】
開示するデータ処理システムは、クライアントからのアクセスに対応するデータを格納する複数のデータストアサーバ、データベースの各データを読み出し、クライアントからのアクセスに対応するデータとしていずれかのデータストアサーバに格納されるように、複数のデータストアサーバに分散するデータ分散サーバ、および、分散されたデータを格納するデータストアサーバを特定するデータ配置テーブルを有し、クライアントからのアクセスに応答して、データストアサーバを特定するデータ配置テーブルを参照してデータにアクセスするアプリケーションサーバを有する。
【発明の効果】
【０００８】
開示するデータ処理システムによれば、アクセス要求に対して高い応答性能が得られる。
【図面の簡単な説明】
【０００９】
【図１】データ処理システムの概要図である。
【図２】データ処理システムの構成図である。
【図３】データ配置テーブルの一例である。
【図４】アクセス頻度テーブルの一例である。
【図５】アクセス頻度集計テーブルの一例である。
【図６】データ再配置部の処理フローチャートである。
【図７】アクセス頻度集計テーブルの変化を説明する一例である。
【図８】アクセス頻度集計テーブルの変化を説明する他の例である。
【図９】変形例において、アクセス頻度集計テーブルの変化を説明する一例である。
【発明を実施するための形態】
【００１０】
図１は、データ処理システムの概要図である。データ処理システムは、クライアント６０からのアクセスを、複数のアプリケーションサーバ（ＡＰサーバa、ＡＰサーバｂ、ＡＰサーバｃ、以下ＡＰサーバ）１０に分散する（振り分ける）負荷分散装置７０を有する。負荷分散装置７０は、クライアント６０からのアクセスを、たとえばラウンドロビンによりＡＰサーバ１０に分散させる。ＡＰサーバ１０は、アクセスに対応するデータを格納するデータストアサーバ（ＤＳサーバ１、ＤＳサーバ２、ＤＳサーバ３、以下ＤＳサーバ）２０にアクセスし、アクセス要求に対応するデータに対する所定の処理（参照、更新、格納、削除）を実行する。
【００１１】
データ分散サーバ（以下、ＤＤサーバ）３０は、データベース４０に格納されているデータを読み出し、読み出したデータをいずれかのＤＳサーバ２０に格納する。ＤＤサーバ３０は、ＤＳサーバ２０に格納されたデータがＡＰサーバ１０から変更（更新、格納、削除のいずれか）された場合、変更されたデータに関してＡＰサーバ１０とデータベース４０との間でデータ同期を図る。データ同期に関しては既存の技術（たとえば、キャッシュデータの変更部分を、データベース内の該当部分に反映させる技術）を用いるものであり、説明を省略する。データベース４０に格納され、クライアント６０からのアクセスの対象となり得るデータは、いずれかのＤＳサーバ２０に格納され、複数のＤＳサーバ２０に同じデータが格納されないように、ＤＤサーバ３０によってデータの配置が制御される。以上のように、ＤＤサーバ３０は、理解しやすくするためにデータ分散サーバと呼ぶが、前述および後述する処理を実行するデータベースサーバと呼んでもよい。
【００１２】
図１に示すデータ処理システムでは、図中太線矢印で示すように、クライアント６０からのアクセスを負荷分散装置７０がＡＰサーバ１０に分散させても、結果としてアクセスが特定の（１台とは限らない）ＤＳサーバ２０に集中する状況が発生する。一例として、データ処理システムがコンテンツ配信システムであり、人気のあるコンテンツが特定のＤＳサーバ２０に格納されている場合である。他の例として、データ処理システムが証券取引システムであり、注目を集めている銘柄の証券データが特定のＤＳサーバ２０に格納されている場合である。データ処理システムは、ＤＳサーバ２０へのアクセスの集中を検知して、アクセスの集中度合いを少なくするように動作する。
【００１３】
図２は、データ処理システムの構成図である。ただし、図１の概要図から、クライアント６０および負荷分散装置７０の図示を省略している。省略したクライアント６０および負荷分散装置７０は、概要図を参照して説明したように構成され、動作する。
【００１４】
データ処理システムは、ＡＰサーバ１０とＤＳサーバ２０がネットワーク５０を介して接続され、ＤＳサーバ２０とＤＤサーバ３０がネットワーク５２を介して接続される。また、ＡＰサーバ１０、ＤＳサーバ２０およびＤＤサーバ３０は、制御用のネットワーク５５を介して接続される。
【００１５】
ＡＰサーバ１０は、データ配置テーブル１００を参照して、クライアント６０からの負荷分散装置７０を介したアクセス要求に対応するデータがいずれのＤＳサーバ２０にあるかを判別して、ネットワーク５０を介して、判別したＤＳサーバ２０にアクセスする。ただし、アクセス要求に対応する処理が、新規のデータの格納の場合（データ配置テーブル１００に、データを格納するＤＳサーバ２０がない場合）、格納しているデータ量が最も少ないＤＳサーバ２０にアクセスし、新規のデータを格納する。ＤＳサーバ２０に格納された新規のデータは、前述したように、ＤＤサーバ３０によってデータ同期される。すなわち、ＤＳサーバ２０に格納された新規のデータは、ＤＤサーバ３０によってデータベース４０に格納される。
【００１６】
ＤＳサーバ２０は、アクセス監視部２００と、アクセス監視部２００による監視結果を格納するアクセス頻度テーブル２５０を有する。アクセス監視部２００は、ＡＰサーバ１０からのアクセスを監視し、所定時間（たとえば５分）内のアクセス数を、格納しているデータ毎に集計し、アクセス頻度とする。アクセス頻度は、単位時間（たとえば１分）当たりに正規化したアクセス数としてもよい。アクセス頻度テーブル２５０の詳細については後述するが、アクセス頻度テーブル２５０は、アクセス頻度の監視結果としてネットワーク５５を介してＤＤサーバ３０へ送信される。
【００１７】
なお、ＤＳサーバ２０は、ＡＰサーバ１０から新規のデータが格納された場合、または更新若しくは削除された場合のように、アクセス頻度の監視対象の変更または監視対象のデータのデータ量の変更に応じて、アクセス頻度テーブル２５０を変更する。
【００１８】
ＤＤサーバ３０は、データ再配置部３００、ＤＳサーバ２０から受信したアクセス頻度テーブル２５０を纏めたアクセス頻度集計テーブル３５０、およびデータ再配置部３００による、ＤＳサーバ２０へのデータ再配置結果を格納するデータ配置テーブル３７０を有する。ＤＤサーバ３０は、所定時間（たとえば５分）毎にＤＳサーバ２０からネットワーク５５を介してアクセス頻度テーブル２５０を受信する。アクセス頻度テーブル２５０は、ＤＤサーバ３０からのＤＳサーバ２０への送信要求に応じてＤＳサーバ２０から送信されてもよいし、所定時間毎にＤＳサーバ２０から送信されるようにしてもよい。ここでは、後述するように、前者によるものとする。
【００１９】
ＤＤサーバ３０のデータ再配置部３００は、受信したアクセス頻度テーブル２５０を纏めたアクセス頻度集計テーブル３５０を作成し、作成したアクセス頻度集計テーブル３５０を参照して新たなデータ配置テーブル３７０を作成する。各ＤＳサーバ２０へのＡＰサーバ１０からのアクセス頻度に所定以上の集中がなければ（アクセス頻度にバラツキがなければ）、データ再配置部３００は新たなデータ配置テーブル３７０を作成しない。
【００２０】
データ再配置部３００は、新たなデータ配置テーブル３７０を作成した場合、詳細は後述するが、現状のデータ配置テーブル３７０と比較し、ＤＳサーバ２０に新たに配置するデータをデータベース４０から読み出してＤＳサーバ２０にネットワーク５２を介して配置し、新たなデータ配置テーブル３７０を、ＡＰサーバ１０にネットワーク５５を介して送信すると共に、データ配置テーブル１００を新たなデータ配置テーブル３７０の内容に置き換えるように指示する。また、データ再配置部３００は、新たなデータ配置テーブル３７０を、ＤＳサーバ２０にネットワーク５５を介して送信すると共に、アクセス頻度テーブル２５０の新たなデータ配置に係る部分を新たなデータ配置テーブル３７０の内容に基づいて書き換えるように指示する。この後、ＤＳサーバ２０に格納しているデータで、現状の（これまで使用していた）データ配置テーブル３７０にあり、新たなデータ配置テーブル３７０にないデータの削除を、ネットワーク５５を介してＤＳサーバ２０に指示する。このように、ＤＳサーバ２０の間で、データを移動するのではなく、データ再配置部３００によって、データの見掛け上の移動を制御する。これにより、新たなデータがＤＳサーバ２０に格納され、ＡＰサーバ１０が参照するデータ配置テーブル３７０が更新され、その後に削除すべきデータがＤＳサーバ２０から削除されるので、ＡＰサーバ１０によるＤＳサーバ２０へのアクセスに対して、ＤＳサーバ２０にデータが存在しないという状況の発生を避けることができる。
【００２１】
図３は、データ配置テーブル３７０の一例である。図３は、各ＤＳサーバ２０が有するデータ量がほぼ同一（図３では、１５５ＭＢ〜１６０ＭＢ）になるように配置した例である。ＡＰサーバ１０が有するデータ配置テーブル１００は、ＤＤサーバ３０から送信されたデータ配置テーブル３７０と同じであるので、データ配置テーブル３７０を代表させて説明する。また、ＤＤサーバ３０のデータ再配置部３００は、現状と新たなデータ配置テーブル３７０の２面のテーブルを用いるが、前述のようにデータ配置の比較のためであり、現状のデータ配置テーブル３７０を一時的に退避しておくことで比較処理は可能であるので、ここでは一つのデータ配置テーブル３７０として説明する。
【００２２】
データ配置テーブル３７０は、Ｎｏ３７１、ＤＳサーバ名３７２、データ名３７３およびデータ量３７４の項目を有する。Ｎｏ３７１は、図を見易くするためであり、項目として無くてもよい。ＤＳサーバ名３７２は、データベース４０のデータを格納するＤＳサーバ２０の名称であり、ＤＳサーバ２０を識別できれば、名称でなくてもよい。データ名３７３は、ＤＳサーバ２０に格納しているデータの名称である。データ名３７３も、データを識別できれば、データまでのパス名などでもよく、名称でなくてもよい。データ名３７３は、データの、ＤＳサーバ２０の格納アドレス、データベース４０の格納アドレス、クライアント６０にデータアクセスのために開放しているデータ名称などに変換される必要があるが、処理の必要に応じて変換表を用意すればよい。データ量３７４は、データの容量である。
【００２３】
データ量３７４を次に理由により用いる。クライアント６０から見ると、たとえば、データへのアクセス要求の一例としてダウンロード要求を想定すると、ダウンロード要求の送信からダウンロード完了までの時間が応答時間となる。この応答時間には、ダウンロードに要する時間が含まれ、ダウンロードに要する時間は、ダウンロードするデータの容量に依存する（ネットワークの構成、性能、込み具合などにより必ずしも比例しないが、一般にデータ容量が大きければ、クライアント６０がダウンロードに要する時間は長くなる。）。そこで、後述するように、データ再配置部３００は、アクセス頻度を対象にした場合と、本実施形態の変形例として、アクセス頻度×データ容量を対象とした場合に関して、データ配置テーブル３７０を作成する。以下のデータ配置テーブル３７０などのテーブルの説明においては、変形例としてのアクセス頻度×データ容量を対象とした場合も併せて説明する。換言すると、アクセス頻度を対象にした場合には、データ容量に関して関知しなくてよい。データ容量に関して、データの変更（更新、格納、削除のいずれか）の場合は、データ容量（更新データ容量、新規に格納するデータ容量、削除するデータを識別する識別データ容量）がクライアント６０の処理内容に依存するので、これらの場合にはデータ再配置部３００は、データ容量に関知せずにデータ配置テーブル３７０を作成する。
【００２４】
図３のデータ配置テーブル３７０の内容の一例を説明する。図３は、図１に対応し、ＤＳサーバ１にデータ１〜４、ＤＳサーバ２にデータ５〜８、ＤＳサーバ３にデータ９〜１１を格納していることを示す。データ容量３７４に関しては、たとえば、データ１が３０ＭＢ、データ２が５０ＭＢ、データ３が６０ＭＢ、データ４が２０ＭＢを示している。
【００２５】
データ配置テーブル３７０として説明したが、データ配置テーブル１００も同じ構成であり、データベース４０にある、クライアント６０にアクセスを許容するすべてのデータがＤＳサーバ２０のいずれかにあることを示している。したがって、ＡＰサーバ１０は、データ配置テーブル１００を参照することにより、アクセスするデータを格納するＤＳサーバ２０を認識できる。これは、ＤＳサーバ２０をキャッシュサーバに例えると、必ずアクセス対象のデータがヒットすることを意味しているので、キャッシュサーバでヒットしない場合のデータベース４０からの読み出し処理に要する時間を費やさないで済むことになる。これにより、キャッシュサーバを用いた場合のヒット率の問題を解決できる。
【００２６】
図４は、アクセス頻度テーブル２５０の一例である。図４の（Ａ）、（Ｂ）および（Ｃ）は、ＤＳサーバ１、ＤＳサーバ２およびＤＳサーバ３の各々のアクセス頻度テーブル２５０である。アクセス頻度テーブル２５０についても、後述する変形例に係るデータ量に関しても併せて説明する。
【００２７】
図４の（Ａ）に示す、ＤＳサーバ１のアクセス頻度テーブル２５０を代表させて説明する。アクセス頻度テーブル２５０は、Ｎｏ２５１、データ名２５２、アクセス頻度２５３、データ量２５４およびアクセス頻度×データ量２５５の項目を有する。Ｎｏ２５１は、図を見易くするためであり、項目として無くてもよい。データ名２５２は、ＤＳサーバ１に格納しているデータの名称である。データ量２５４は、データの容量である。アクセス頻度×データ量２５５は、アクセス頻度２５３とデータ量２５４との乗算結果であり、所定時間内にアクセスされた総データ量を表す。アクセス頻度×データ量２５５は、各ＤＳサーバ２０が求めずにＤＤサーバ３０が求めてもよいが、ＤＳサーバ２０の台数が多い場合のＤＤサーバ３０の処理負荷を軽減するために、各ＤＳサーバ２０が求める方が望ましい。
【００２８】
データ名２５２およびデータ量２５４は、ＤＤサーバ３０から送信されたデータ配置テーブル３７０を参照して、ＤＳサーバ２０が格納するデータに関してＤＳサーバ２０が設定する。アクセス頻度２５３は、格納しているデータに関するアクセスがある毎にカウントアップする。アクセス頻度テーブル２５０は、所定時間毎にＤＤサーバ３０に送信され、送信毎にアクセス頻度２５３はリセットされる。データ量２５４は、データ配置テーブル３７０の受信に応じて設定されるが、アクセスの種別によりデータ量が変動する場合があるので、その変動に応じて変更される。アクセスの種別が参照の場合は、データ量２５４は変動しない。アクセスの種別が更新の場合、一般にデータの値の書き換えであるのでデータ量２５４は変動しないが、たとえばコンテンツデータのバージョンアップのようにデータ量２５４が変動する場合がある。このような場合は、変動した結果のデータ量２５４とする。アクセスの種別が削除の場合、データ量２５４を０とする（削除対象のＤＳサーバ２０に格納しているデータの実体は、ＤＳサーバ２０が削除してもよいし、ＤＤサーバ３０による、データ量２５４を参照したデータ同期により削除されてもよい）。
【００２９】
以上のように、データ量２５４の変動に伴って、アクセス頻度×データ量２５５に誤差を伴うことがある。たとえば、所定時間の前半と後半（たとえば２分３０秒ずつ）のアクセス回数がいずれも１０回とする。１１回目（後半の最初）のアクセスでデータ量２５４が、前半の５０ＭＢから後半の６０ＭＢに変動したとする。したがって、アクセス頻度×データ量２５５は、正確には、１０×５０ＭＢ＋１０×６０ＭＢ＝１１００ＭＢであるが、アクセス頻度テーブル２５０をＤＤサーバ３０に送信する段階では２０×６０ＭＢ＝１２００ＭＢであり、１００ＭＢの誤差を生じている。しかしながら、今後（アクセス頻度テーブル２５０をＤＤサーバ３０に送信した次の所定時間）のアクセスは、アクセス頻度テーブル２５０をＤＤサーバ３０に送信した段階の容量のデータに対してであり、かつ変形例としてデータ配置の目安にアクセス頻度×データ量２５５を用いるので、発生する誤差を無視する。
【００３０】
図５は、アクセス頻度集計テーブル３５０の一例である。アクセス頻度集計テーブル３５０についても、後述する変形例に係るデータ量に関しても併せて説明する。アクセス頻度集計テーブル３５０は、所定時間毎にＤＤサーバ３０が、ＤＳサーバ２０から収集したアクセス頻度テーブル２５０の内容を集計し、統合したテーブルである。アクセス頻度集計テーブル３５０は、Ｎｏ３５１、ＤＳサーバ名３５２、データ名３５３、アクセス頻度３５４、データ量３５５、優先度（アクセス頻度×データ量）３５６、各ＤＳサーバ２０のアクセス頻度３５７、各ＤＳサーバ２０のアクセス頻度の標準偏差３５８、各ＤＳサーバ２０の優先度（アクセス頻度×データ量）３５９及び各ＤＳサーバ２０の優先度３５９の標準偏差３６０の項目を有する。Ｎｏ３５１は、図を見易くするためであり、項目として無くてもよい。ＤＳサーバ名３５２は、アクセス頻度テーブル２５０を収集したＤＳサーバ２０の名称である。データ名３５３、アクセス頻度３５４、データ量３５５および優先度３５６は、ＤＳサーバ名３５２に対応したアクセス頻度テーブル２５０のデータ名２５２、アクセス頻度２５３、データ量２５４およびアクセス頻度×データ量２５５である。アクセス頻度×データ量を優先度と言い換えていることに格別な意味はない。アクセス頻度３５４、データ量３５５および優先度３５６の※欄は、データ処理システムを構成するＤＳサーバ２０（ＤＳサーバ1、ＤＳサーバ２、ＤＳサーバ３）に関する合計値を示す。アクセス頻度３５７、アクセス頻度の標準偏差３５８、優先度３５９および優先度３５９の標準偏差３６０の※欄については後述する。
【００３１】
アクセス頻度３５７は、各ＤＳサーバ２０のアクセス頻度（各データへのアクセス頻度の合計値）であり、その※欄は、各ＤＳサーバ２０のアクセス頻度の平均である。これは、各ＤＳサーバ２０のアクセス頻度のバラツキ又は偏差を見るためである。図５の例では、ＤＳサーバ１に関して、アクセス頻度３５７は、20＋15＋60＋10＝105、同様に、ＤＳサーバ２に関して、アクセス頻度３５７は60、ＤＳサーバ３に関して、アクセス頻度３５７は15である。したがって、アクセス頻度３５７の平均（※欄）は、（105＋60＋15）/3＝60である。アクセス頻度の標準偏差３５８は、データ処理システムを構成するＤＳサーバ２０へのアクセス頻度３５７の標準偏差であり、その※欄に示す。具体的には、sqrt[｛（105−60）2＋（60−60）2＋（15−60）2｝/3] ≒36.7である。ただし、sqrtは平方根を表す。
【００３２】
優先度３５９および優先度の標準偏差３６０は、ＤＳサーバ名３５２に対応した、それぞれ優先度３５６の合計および優先度３５９の標準偏差（※欄）であり、優先度３５９の※欄は、データ処理システムを構成するＤＳサーバ２０全体としての平均である。アクセス頻度３５７、アクセス頻度の標準偏差３５８、優先度３５９および優先度３５９の標準偏差３６０は、ＤＤサーバ３０のデータ再配置部３００によって求められる。
【００３３】
ＤＳサーバ２０のアクセス監視部２００は、すでに説明したように、ＤＤサーバ３０から送信されたデータ配置テーブル３７０を参照した、ＤＳサーバ２０が格納するデータに関するアクセス頻度テーブル２５０の設定、ＤＳサーバ２０が格納しているデータに関するアクセス要求がある毎のアクセス頻度２５３のカウントアップ、アクセス要求の種別によりデータ量が変動した場合のデータ量２５４の変動、並びに、所定時間間隔毎のアクセス頻度テーブル２５０のＤＤサーバ３０への送信およびアクセス頻度２５３のリセットの処理を実行するもので、フローチャートを用いた説明を省略する。
【００３４】
図６は、データ再配置部３００の処理フローチャートである。データ再配置部３００は、所定時間毎にアクセス頻度テーブル２５０を収集するために、所定時間の周期タイマによって起動される。データ再配置部３００は、ＤＳサーバ２０からアクセス頻度テーブル２５０を収集し、アクセス頻度集計テーブル３５０に格納する（Ｓ３０１）。アクセス頻度テーブル２５０の内容のアクセス頻度集計テーブル３５０への格納については、前述したとおりである。アクセス頻度テーブル２５０の収集は、前述のように所定時間毎に実行するが、ＤＤサーバ３０のデータ再配置部３００からの要求に応じてＤＳサーバ２０がアクセス頻度テーブル２５０を送信する。ＤＳサーバ２０が、自らのタイマを用いて所定時間毎にアクセス頻度テーブル２５０を送信すると、ＤＳサーバ２０ごとの所定時間を計測するタイマ精度が同じであったとしても、所定時間を起算する時刻が必ずしも一致しないので、あるＤＳサーバ２０による送信時刻と他のＤＳサーバ２０による送信時刻との間に最大で所定時間の１／２の時間差を生じる可能性がある。そこで、ＤＳサーバ２０が、ＤＤサーバ３０からの要求をトリガーにして、アクセス頻度テーブル２５０を送信する。このような処理を実行しても、ＤＳサーバ２０の処理時間差などにより送信時刻の時間差が生じるが、時間差は所定時間に比べて無視できる時間であり、所定時間の制御をＤＤサーバ３０に一括できるという長所がある。
【００３５】
データ再配置部３００は、アクセス頻度集計テーブル３５０のＤＳサーバ２０のアクセス頻度３５７およびその平均、アクセス頻度の標準偏差３５８、優先度３５９及び優先度３５９の標準偏差３６０を求める(Ｓ３０２)。これらの求め方については、図５を用いて説明したとおりである。Ｓ３０１及びＳ３０２の処理により、図５に例示したアクセス頻度集計テーブル３５０が作成される。
【００３６】
データ再配置部３００は、アクセス頻度３５７のバラツキが所定以上かを判定し、所定未満の場合は処理を終了する(Ｓ３０３)。アクセス頻度３５７のバラツキを、（アクセス頻度３５７の平均−標準偏差３５８）以下又は（アクセス頻度３５７の平均＋標準偏差３５８）以上のアクセス頻度３５７を有するＤＳサーバ２０の有無で判定する。換言すると、各ＤＳサーバ２０のアクセス頻度３５７が、（アクセス頻度３５７の平均−標準偏差３５８）＜アクセス頻度３５７＜（アクセス頻度３５７の平均＋標準偏差３５８）を満足するならば、バラツキはないと判定する。この判定基準は、データ処理システムに求められる特性によって定めればよい。たとえば、よりバラツキが少ないようにするために、前述の標準偏差３５８の代わりに、標準偏差３５８の1/2や１/3を用いる。
【００３７】
アクセス頻度３５７のバラツキを抑制するためには、アクセス頻度３５７が高い（値が大きい）ＤＳサーバ２０からアクセス頻度３５７が低い（値が小さい）ＤＳサーバ２０へデータを移動すればよい。データの移動は、見掛け上の移動であり、実際には後述の手順で実行する。
【００３８】
そこで、データ再配置部３００は、データの移動元のＤＳサーバ２０を特定する（Ｓ３０４）。アクセス頻度３５７が、（アクセス頻度３５７の平均＋標準偏差３５８）以上のＤＳサーバ２０を移動元として特定する。図５の例では、（アクセス頻度３５７の平均＋標準偏差３５８）＝60＋36.7＝96.7であるので、アクセス頻度３５７が105のＤＳサーバ１が、移動元として特定される。
【００３９】
データ再配置部３００は、データの移動先のＤＳサーバ２０を特定する（Ｓ３０５）。たとえば、アクセス頻度３５７が、（アクセス頻度３５７の平均−標準偏差３５８）以下のＤＳサーバ２０を移動先として特定する。図５の例では、（アクセス頻度３５７の平均−標準偏差３５８）＝60−36.7＝23.3であるので、アクセス頻度３５７が15のＤＳサーバ３が、移動先として特定される。
【００４０】
Ｓ３０４及びＳ３０５の処理に伴い、移動元及び移動先の少なくとも一方のＤＳサーバ２０として複数が特定されることがある。特定された移動元ＤＳサーバ２０が複数の場合、アクセス頻度３５７が最大のＤＳサーバ２０を選択する。特定された移動先ＤＳサーバ２０が複数の場合、アクセス頻度３５７が最小のＤＳサーバ２０を選択する。
【００４１】
データ再配置部３００は、移動元のＤＳサーバ２０のデータの中から移動対象データを特定する(Ｓ３０６)。ここでは、移動元のＤＳサーバ２０のデータの中で、２番目にアクセス頻度が高い（値が大きい）データを移動対象データとして特定する。アクセス頻度が低い（値が小さい）データを移動対象データとして特定しても、アクセス頻度のバラツキ（標準偏差３５８）がデータ処理システム全体として改善されない（改善度合いが少ない）可能性が高いからである。また、アクセス頻度が最も高いデータを移動対象データとして特定すると、移動元のＤＳサーバ２０のアクセス頻度が低下する一方、移動先のＤＳサーバ２０のアクセス頻度が上昇し、極端には、次の移動対象データの特定時には、移動したデータを戻す、いわゆる振動現象が生じる可能性があるからである。そこで、アクセス頻度が最も高いデータとアクセス頻度が２番目に高いデータを異なるＤＳサーバ２０に配置することにより、アクセス頻度のバラツキを少なくする。図５のアクセス頻度集計テーブル３５０の例では、移動元として特定したＤＳサーバ１のデータ１が移動対象データとして特定される。
【００４２】
データ再配置部３００は、移動対象データを移動したものとして、アクセス頻度集計テーブル３５０を作成する(Ｓ３０７)。このとき、Ｓ３０１及びＳ３０２で作成したアクセス頻度集計テーブル３５０をＤＤサーバ３０のメモリの空き領域に退避しておく。新たに作成したアクセス頻度集計テーブル３５０を参照して、アクセス頻度３５７のバラツキを判定し、バラツキが所定以上の場合はＳ３０４に戻る(Ｓ３０８)。この判定は、Ｓ３０３と同様である。なお、Ｓ３０８の判定において、アクセス頻度３５７が最も高いＤＳサーバ２０が有するデータが一つの場合は、Ｓ３０４に戻らない。アクセス頻度３５７のバラツキが所定以上であっても、移動対象とする２番目のデータが存在しないからである。
【００４３】
Ｓ３０７及びＳ３０８の具体例を説明する。図５のアクセス頻度集計テーブル３５０から、ＤＳサーバ１のデータ１をＤＳサーバ３に移動した場合のアクセス頻度集計テーブル３５０を図７に示す。図７と図５とのアクセス頻度の標準偏差３５８を比較すると、36.7から20.4にバラツキが改善されている。しかしながら、ＤＳサーバ１のアクセス頻度３５７は85であり、（アクセス頻度３５７の平均＋標準偏差３５８）＝60＋20.4＝80.4以上であるので、この場合はさらにデータを移動するためにＳ３０４に戻る。図７のアクセス頻度集計テーブル３５０に関して、Ｓ３０４〜Ｓ３０８の処理を実行すると、図示を省略するが、データ２をＤＳサーバ１からＤＳサーバ３へ移動させ、アクセス頻度の標準偏差３５８が8.1のアクセス頻度集計テーブル３５０が得られる。このときのアクセス頻度３５７は、ＤＳサーバ１が70、ＤＳサーバ２が60、ＤＳサーバ３が50であり、相変わらずアクセス頻度３５７のバラツキは標準偏差３５８の8.1を超えているので、再度、Ｓ３０４〜Ｓ３０８の処理を実行し、データ４をＤＳサーバ１からＤＳサーバ３へ移動させ、アクセス頻度集計テーブル３５０を作成する。作成したアクセス頻度集計テーブル３５０を図８に示す。図８のアクセス頻度集計テーブル３５０に示すように、各ＤＳサーバ２０のアクセス頻度３５７が60に平均化され、アクセス頻度の標準偏差３５８が0となり、アクセス頻度３５７のバラツキが無くなる。
【００４４】
データ再配置部３００は、移動対象データをデータベース４０から読み出し、移動先のＤＳサーバに格納する（Ｓ３０９）。移動対象データは、最新のアクセス頻度集計テーブル３５０（図８）と退避したアクセス頻度集計テーブル３５０（図５）を比較することにより判別する。たとえば、図８と図５のアクセス頻度集計テーブル３５０を比較すると、データ１、データ２及びデータ４が移動対象データであり、これらのデータをデータベース４０から読み出し、ネットワーク５２を介して、移動先のＤＳサーバ３に格納する。
【００４５】
データ再配置部３００は、データ配置テーブル３７０を作成し、ネットワーク５５を介してＡＰサーバ１０及びＤＳサーバ２０に送信する（Ｓ３１０）。データ再配置部３００は、最新のアクセス頻度集計テーブル３５０（図８）を参照し、Ｎｏ３５１、ＤＳサーバ名３５２、データ名３５３及びデータ量３５５を、データ配置テーブル３７０の、Ｎｏ３７１、ＤＳサーバ名３７２、データ名３７３及びデータ量３７４に格納することにより、データ配置テーブル３７０を作成する。データ再配置部３００によって送信されたデータ配置テーブル３７０は、ＡＰサーバ１０においては、データ配置テーブル１００としてそのまま用いられ、ＤＳサーバ２０においては、自らのＤＳサーバ２０に関するＮｏ３５１、データ名３５３及びデータ量３５５が、アクセス頻度テーブル２５０のＮｏ２５１、データ名２５２及びデータ量２５４として用いられる。
【００４６】
データ再配置部３００は、前述の見掛け上のデータの移動を終了するために、移動対象データを移動元のＤＳサーバから２０削除する（Ｓ３１１）。
【００４７】
以上のデータ処理システムによれば、ヒット率の問題が発生しないＤＳサーバ２０にデータを格納しておくので、アクセス要求に対して高い応答性能を得ることができる。さらに、各ＤＳサーバ２０に格納されているデータを移動することにより、各ＤＳサーバ２０のアクセス頻度のバラツキを少なくできる。さらに、いずれのＡＰサーバ１０も、データ配置テーブル１００を参照することにより、ヒット率100％でアクセス要求に対してＤＳサーバ２０のデータにアクセスできるので、負荷分散装置７０の負荷分散も、たとえラウンドロビンであっても、高い効率を示すことになる。なお、ＤＤサーバ３０に配置したデータ再配置部３００、アクセス頻度集計テーブル３５０及びデータ配置テーブル３７０は、ＤＳサーバ２０に配置してもよい。
【００４８】
次に、データ処理システムの変形例を説明する。前述の実施形態がＤＳサーバ２０のアクセス頻度のバラツキを少なくするためにデータを移動したのに対して、変形例は、ＤＳサーバ２０の優先度（アクセス頻度×データ量）のバラツキを少なくするためにデータを移動する。優先度（アクセス頻度×データ量）のバラツキを少なくすることが、クライアント６０から見た応答時間の観点から必要であることを既に説明した。
【００４９】
変形例は、データ再配置部３００の処理が異なり、データ再配置部３００は、アクセス頻度集計テーブル３５０のアクセス頻度３５７及びアクセス頻度の標準偏差３５８に代えて、優先度３５９及び優先度の標準偏差３６０を用いる。前述の実施形態のデータ再配置部３００の処理では、説明の都合上、実際には不要な優先度３５９及び優先度３５９の標準偏差３６０をＳ３０２で求めた。
【００５０】
データ再配置部３００のＳ３０３以降の処理は、前述のアクセス頻度３５７及びアクセス頻度の標準偏差３５８を、優先度３５９及び優先度３５９の標準偏差３６０に読み替えることにより理解される。このようにして図５のアクセス頻度集計テーブル３５０から、作成される新たなアクセス頻度集計テーブル３５０を図９に示す。図９のアクセス頻度集計テーブル３５０は、図５のアクセス頻度集計テーブル３５０の優先度３５９が高いＤＳサーバ１から、優先度が２番目のデータ２をＤＳサーバ３に移動させたものである。さらに、アクセス頻度集計テーブル３５０を再作成してゆくと、前述の実施形態と同様に、図８のアクセス頻度集計テーブル３５０に辿りつき、これに基づいてデータ配置テーブル３７０が作成される。ただし、図８のアクセス頻度集計テーブル３５０から明らかなように、優先度３５９の平均＋標準偏差３６０＝2717＋632＝3349を、ＤＳサーバ１の優先度３５９（3600）は超えている。図８のアクセス頻度集計テーブル３５０をデータ配置テーブル３７０の基にするのは、Ｓ３０８の処理で説明したように、もはやＤＳサーバ１に格納されるデータが一つであるからである。
【００５１】
以上の変形例によれば、アクセス要求に対するデータ量を考慮に入れているので、クライアント６０から見た応答時間を改善できる。
【符号の説明】
【００５２】
１０：アプリケーションサーバ（ＡＰサーバ）、２０：データストアサーバ（ＤＳサーバ）、３０：データ分散サーバ（ＤＤサーバ）、４０：データベース、５０、５２、５５：ネットワーク、６０：クライアント、７０：負荷分散装置、１００：データ配置テーブル、２００：アクセス監視部、２５０：アクセス頻度テーブル、３００：データ再配置部、３５０：アクセス頻度集計テーブル、３７０：データ配置テーブル。
【図１】
2015172833.tif 000003
【図２】
2015172833.tif 000004
【図３】
2015172833.tif 000005
【図４】
2015172833.tif 000006
【図５】
2015172833.tif 000007
【図６】
2015172833.tif 000008
【図７】
2015172833.tif 000009
【図８】
2015172833.tif 000010
【図９】
2015172833.tif 000011