(57)【特許請求の範囲】
【請求項１】
コンピュータに、
記憶装置に記憶された複数の単位データに対するアクセスのパターンに基づいて生成される、前記記憶装置上における前記複数の単位データの一部の配置を変更する複数の再配置処理候補それぞれに対して、評価値を算出し、
配置変更の影響を受ける単位データの範囲の大きさが異なる複数の影響範囲レベルの中から、算出した前記複数の再配置処理候補の評価値と前記複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて、一の影響範囲レベルを選択し、
選択した前記一の影響範囲レベルが示す範囲の大きさに基づいて、前記複数の再配置処理候補の中から実行する１または２以上の再配置処理を決定し、
前記１または２以上の再配置処理を実行した後の前記複数の単位データに対するアクセス状況に基づいて、選択した前記一の影響範囲レベルに対応付けられた係数を更新する、
処理を実行させるデータ配置プログラム。
【請求項２】
実行する前記１または２以上の再配置処理は、一の再配置処理の影響を受ける範囲が他の再配置処理の影響を受ける範囲と重複しないように決定する、
請求項１記載のデータ配置プログラム。
【請求項３】
前記一の影響範囲レベルの選択では、前記複数の影響範囲レベルそれぞれについて、前記複数の再配置処理候補のうち影響を受ける範囲が重複しない１または２以上の再配置処理候補の評価値と当該影響範囲レベルに対応付けられた係数とから指標値を算出し、前記複数の影響範囲レベルの指標値に基づいて前記一の影響範囲レベルを選択する、
請求項１または２記載のデータ配置プログラム。
【請求項４】
前記複数の影響範囲レベルは、一の単位データに対する配置変更の影響を受ける範囲に、当該一の単位データと関連してアクセスされる他の単位データが含まれない第１の影響範囲レベルと、前記他の単位データが含まれる第２の影響範囲レベルとを含む、
請求項１乃至３の何れか一項に記載のデータ配置プログラム。
【請求項５】
前記係数は、実行した前記１または２以上の再配置処理の評価値と前記複数の単位データに対するアクセス状況とに基づいて更新する、
請求項１乃至４の何れか一項に記載のデータ配置プログラム。
【請求項６】
複数の単位データを記憶する記憶部と、
前記複数の単位データに対するアクセスのパターンに基づいて生成される、前記記憶部上における前記複数の単位データの一部の配置を変更する複数の再配置処理候補それぞれに対して評価値を算出し、配置変更の影響を受ける単位データの範囲の大きさが異なる複数の影響範囲レベルの中から、算出した前記複数の再配置処理候補の評価値と前記複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて一の影響範囲レベルを選択し、選択した前記一の影響範囲レベルが示す範囲の大きさに基づいて、前記複数の再配置処理候補の中から実行する１または２以上の再配置処理を決定し、前記１または２以上の再配置処理を実行した後の前記複数の単位データに対するアクセス状況に基づいて、選択した前記一の影響範囲レベルに対応付けられた係数を更新する制御部と、
を有するデータ配置装置。
【請求項７】
コンピュータが実行するデータ配置方法であって、
記憶装置に記憶された複数の単位データに対するアクセスのパターンに基づいて生成される、前記記憶装置上における前記複数の単位データの一部の配置を変更する複数の再配置処理候補それぞれに対して、評価値を算出し、
配置変更の影響を受ける単位データの範囲の大きさが異なる複数の影響範囲レベルの中から、算出した前記複数の再配置処理候補の評価値と前記複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて、一の影響範囲レベルを選択し、
選択した前記一の影響範囲レベルが示す範囲の大きさに基づいて、前記複数の再配置処理候補の中から実行する１または２以上の再配置処理を決定し、
前記１または２以上の再配置処理を実行した後の前記複数の単位データに対するアクセス状況に基づいて、選択した前記一の影響範囲レベルに対応付けられた係数を更新する、
データ配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ配置プログラム、データ配置装置およびデータ配置方法に関する。
【背景技術】
【０００２】
コンピュータが大量のデータを扱う場合、データを記憶する不揮発性の記憶装置として、ＨＤＤ（Hard Disk Drive）などの低速かつ大容量の記憶装置が使用されることが多い。しかし、アクセス要求が発行される毎に低速の記憶装置にアクセスしていると、データアクセスがボトルネックとなってコンピュータの処理性能が低下するおそれがあるという問題がある。そこで、１つの方法として、ＲＡＭ（Random Access Memory）などのランダムアクセスが高速なメモリを、キャッシュメモリとして使用することが考えられる。
【０００３】
例えば、複数の単位データを「セグメント」にグループ化してＨＤＤに格納しておき、セグメント毎にまとめてＨＤＤからＲＡＭにキャッシュするデータ管理装置が提案されている。このデータ管理装置は、ある単位データを指定した読み出し要求を受け付けると、指定された単位データを含むセグメント全体をＨＤＤからＲＡＭにロードする。ＲＡＭにロードした（キャッシュした）単位データは、すぐには破棄せずに残しておく。その後、データ管理装置は、キャッシュ中の単位データを指定した読み出し要求を受け付けると、指定された単位データをＨＤＤから読み出す代わりにＲＡＭから取得して提供する。
【０００４】
また、データ管理装置は、読み出し要求の履歴を記録しておき、連続して読み出される可能性が高いという単位データ間の関連性を分析する。データ管理装置は、連続して読み出される可能性が高い単位データが同じセグメントに属するように、ＨＤＤ上の単位データの配置を変更する。これにより、指定された単位データがＲＡＭにキャッシュされている可能性を高めてＨＤＤへのアクセスを減らし、アクセス性能を向上できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１１４５３８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、記憶装置上において一部の単位データの配置を変更する再配置処理の候補が、短時間で複数生成されることがある。複数の再配置処理の候補が生成された場合、それら再配置処理を逐次的に評価して実行の可否を判断することが考えられる。
【０００７】
例えば、単位データ＃１を単位データ＃２の近くに移動する再配置処理＃１と、単位データ＃２を単位データ＃３の近くに移動する再配置処理＃２とが、候補として生成されたとする。前者は単位データ＃１と単位データ＃２とが連続的にアクセスされたときに生成されることがあり、後者は単位データ＃２と単位データ＃３とが連続的にアクセスされたときに生成されることがある。この場合、現在の単位データの配置に基づいて再配置処理＃１が評価され、評価が高ければ（単位データ＃１を移動することでアクセスを効率化できると判断されれば）再配置処理＃１が実行される。次に、再配置処理＃１を実行した後の配置に基づいて再配置処理＃２が評価される。このとき、単位データ＃２が単位データ＃１から離れてしまうデメリットも考慮して、再配置処理＃２が評価されることになる。
【０００８】
一方で、複数の再配置処理を逐次的に評価し実行可否を判断する方法では、全ての再配置処理を検討し終えるまでに長時間を要する可能性がある。そこで、複数の再配置処理の評価および実行を並行して行うことも考えられる。しかし、複数の再配置処理を並行して評価する場合、再配置処理の間の干渉が問題となる。
【０００９】
例えば、現在の単位データの配置に基づいて上記の再配置処理＃１，＃２を個別に評価すると、再配置処理＃１，＃２の評価は共に高くなる可能性がある。しかしながら、再配置処理＃１，＃２を両方とも実行すると、単位データ＃２が単位データ＃１から離れてしまうため再配置処理＃１の期待した効果が得られず、最終的な単位データの配置に対する評価は低くなってしまう可能性がある。これは、再配置処理＃１が再配置処理＃２から干渉を受けたと言うこともできる。すなわち、再配置処理の評価値には加法性が成立するとは限らず、個別の評価値の高い再配置処理を組み合わせればよいわけではない。
【００１０】
これに対しては、複数の再配置処理の間の全ての組み合わせについて、実行後の単位データの配置を算出して直接的に評価し、最適な再配置処理の組み合わせを求める方法が考えられる。しかし、この場合には、再配置処理がＮ個生成されたとき、最大で２のＮ乗通り（べき乗通り）の組み合わせを評価することになるため、計算量が膨大になってしまう可能性がある。また、複数の再配置処理のうち、明らかに干渉しない少数の再配置処理に限定して実行する方法も考えられる。しかし、この場合には、同時に選択できる再配置処理が少なくなり、データ配置の最適化の精度が低下する可能性がある。
【００１１】
１つの側面では、本発明は、実行する再配置処理の組み合わせを効率的に決定するデータ配置プログラム、データ配置装置およびデータ配置方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
１つの態様では、コンピュータに以下の処理を実行させるデータ配置プログラムが提供される。記憶装置に記憶された複数の単位データに対するアクセスのパターンに基づいて生成される、記憶装置上における複数の単位データの一部の配置を変更する複数の再配置処理候補それぞれに対して、評価値を算出する。配置変更の影響を受ける単位データの範囲の大きさが異なる複数の影響範囲レベルの中から、算出した複数の再配置処理候補の評価値と複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて、一の影響範囲レベルを選択する。選択した一の影響範囲レベルが示す範囲の大きさに基づいて、複数の再配置処理候補の中から実行する１または２以上の再配置処理を決定する。１または２以上の再配置処理を実行した後の複数の単位データに対するアクセス状況に基づいて、選択した一の影響範囲レベルに対応付けられた係数を更新する。
【００１３】
また、１つの態様では、記憶部と制御部とを有するデータ配置装置が提供される。
また、１つの態様では、コンピュータが実行するデータ配置方法が提供される。
【発明の効果】
【００１４】
１つの側面では、実行する再配置処理の組み合わせを効率的に決定できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態のデータ配置装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】サーバ装置のハードウェア例を示すブロック図である。
【図４】キャッシュメモリへのページのロード例を示す図である。
【図５】データ更新があったページのライトバック例を示す図である。
【図６】データ再配置があったページのライトバック例を示す図である。
【図７】データ再配置に応じたディスクコストの変化例を示すグラフである。
【図８】複数のデータ再配置の間の干渉例を示す図である。
【図９】データ再配置の影響範囲の例を示す図である。
【図１０】グラフを用いたデータ再配置案の選択例を示す図である。
【図１１】サーバ装置の機能例を示すブロック図である。
【図１２】検索テーブルと逆検索テーブルの例を示す図である。
【図１３】関連性情報キューと関連性集計テーブルの例を示す図である。
【図１４】重複判定テーブルとパラメータテーブルの例を示す図である。
【図１５】履歴テーブルと干渉レートテーブルの例を示す図である。
【図１６】アクセス実行の手順例を示すフローチャートである。
【図１７】データ再配置の手順例を示すフローチャートである。
【図１８】重心法によるデータ再配置案の生成例を示す図である。
【図１９】座標テーブルの例を示す図である。
【図２０】第１の再配置案生成の手順例を示すフローチャートである。
【図２１】ユニオンスプリット法によるデータ再配置案の生成例を示す図である。
【図２２】第２の再配置案生成の手順例を示すフローチャートである。
【図２３】データ再配置前後のカット数の変化例を示す図である。
【図２４】再配置案選択の手順例を示すフローチャートである。
【図２５】他の情報処理システムの例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
まず、第１の実施の形態を説明する。
【００１７】
図１は、第１の実施の形態のデータ配置装置を示す図である。
第１の実施の形態のデータ配置装置１０は、記憶部１１および制御部１２を有する。
記憶部１１は、ランダムアクセスが比較的低速な記憶装置である。記憶部１１としては、例えば、ＨＤＤ、テープ、書き換え可能なディスク媒体、不揮発性の半導体メモリなどを用いることができる。データ配置装置１０は、記憶部１１に対するキャッシュメモリとして、ランダムアクセスが比較的高速な記憶装置を用いるようにしてもよい。キャッシュメモリとしては、例えば、ＲＡＭやフラッシュメモリなどを用いることができる。なお、記憶部１１に相当する記憶装置を、データ配置装置１０の外部に接続してもよい。
【００１８】
制御部１２は、記憶部１１へのアクセス性能が向上するように、記憶部１１上のデータ配置を制御する。制御部１２は、例えば、プロセッサを用いて実現できる。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）であってもよい。また、プロセッサは、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、例えば、ＲＡＭなどのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼ぶこともある。
【００１９】
記憶部１１は、単位データｕ１，ｕ２，ｕ３を含む複数の単位データを記憶する。単位データｕ１と単位データｕ３とは関連している。例えば、単位データｕ１，ｕ３は過去に連続してアクセスされている。また、単位データｕ２と単位データｕ３とは関連している。例えば、単位データｕ２，ｕ３は過去に連続してアクセスされている。関連する単位データは、記憶部１１内の近い領域に記憶されている方がアクセス効率が高い。
【００２０】
制御部１２は、記憶部１１に記憶された単位データに対するアクセスのパターンに基づいて、再配置処理１３，１４を含む複数の再配置処理を、実行する再配置処理の候補として生成する。各再配置処理は、記憶部１１上において一部の単位データの配置を変更することを示す。例えば、制御部１２は、単位データに対するアクセス履歴を記録し、連続してアクセスされることが多い単位データの組ほど記憶部１１内の近い領域に記憶されるように再配置処理を生成する。再配置処理１３は、単位データｕ１を移動することを含む。再配置処理１４は、単位データｕ２を移動することを含む。なお、１つの再配置処理が、２以上の単位データを移動することを含んでいてもよい。
【００２１】
制御部１２は、生成した再配置処理それぞれに対して、所定の評価関数を用いて評価値を算出する。評価値は、１または２以上の単位データの移動によってアクセス性能が改善される程度を示す。例えば、評価値として、読み込みコストの削減量の予測値から配置変更に要する書き込みコストを差し引いた値を用いる。評価値の算出には、例えば、関連する単位データが連続してアクセスされる頻度や、記憶部１１の読み出し速度および書き込み速度などのパラメータを用いる。再配置処理１３に対しては、評価値１３ａ（評価値ｅ１）が算出される。再配置処理１４に対しては、評価値１４ａ（評価値ｅ２）が算出される。評価値１３ａは評価値１４ａより高い（ｅ１＞ｅ２である）とする。
【００２２】
制御部１２は、影響範囲レベル１５，１６を含む複数の影響範囲レベルの中から、想定する影響範囲レベルを１つ選択する。影響範囲レベルは、再配置処理の影響を受ける単位データの範囲の大きさを示す。例えば、影響範囲レベル１５は、ある再配置処理によって配置変更される単位データのみが、アクセス性能に関して当該再配置処理の影響を受けると仮定する。また、影響範囲レベル１６は、配置変更される単位データに加えて、その単位データと関連する他の単位データも、再配置処理の影響を受けると仮定する。
【００２３】
影響範囲レベルを選択するにあたり、制御部１２は、算出した各再配置処理の評価値と、各影響範囲レベルに対して予め対応付けられた係数とを使用する。影響範囲レベル１５に対しては、係数１５ａ（係数α１）が対応付けられている。影響範囲レベル１６に対しては、係数１６ａ（係数α２）が対応付けられている。係数は、想定する影響範囲が重ならない複数の再配置処理の間で生じる想定外の干渉の程度を示す。想定する影響範囲が狭い影響範囲レベルほど、実際には複数の再配置処理の間で大きい干渉が生じる。干渉が大きいほど、再配置処理の効果が小さくなるため、係数が小さく設定される。すなわち、係数１５ａは係数１６ａよりも小さい（α１＜α２である）。
【００２４】
例えば、制御部１２は、影響範囲レベル１５について、影響範囲が重複しないように再配置処理を選択する。影響範囲レベル１５のもとでは、再配置処理１３の影響範囲は単位データｕ１のみ含み、再配置処理１４の影響範囲は単位データｕ２のみ含む。そこで、制御部１２は、再配置処理１３，１４を選択する。そして、制御部１２は、選択した再配置処理１３，１４に対応する評価値１３ａ，１４ａと影響範囲レベル１５に対応付けられた係数１５ａを用いて、影響範囲レベル１５に対する指標値＃１を算出する。例えば、制御部１２は、指標値＃１＝（ｅ１＋ｅ２）×α１と算出する。
【００２５】
同様に、制御部１２は、影響範囲レベル１６について、影響範囲が重複しないように再配置処理を選択する。影響範囲レベル１６のもとでは、再配置処理１３の影響範囲は単位データｕ１，ｕ３を含み、再配置処理１４の影響範囲は単位データｕ２，ｕ３を含む。再配置処理１３，１４の影響範囲は重複するため、再配置処理１３，１４の両方は選択されない。ここでは、制御部１２は、評価値の高い再配置処理１３を選択する。そして、制御部１２は、選択した再配置処理１３に対応する評価値１３ａと影響範囲レベル１６に対応付けられた係数１６ａを用いて、影響範囲レベル１６に対する指標値＃２を算出する。例えば、制御部１２は、指標値＃２＝ｅ１×α２と算出する。
【００２６】
そして、制御部１２は、例えば、影響範囲レベル１５の指標値＃１と影響範囲レベル１６の指標値＃２を比較し、指標値の大きい影響範囲レベルを選択する。これは、干渉が大きくても多数の再配置処理を実行した方がよいか、干渉を避けるように再配置処理を絞って実行する方がよいかを判定していることを意味する。制御部１２は、選択した影響範囲レベルに基づいて、生成された再配置処理の候補のうち実行する再配置処理を決定する。例えば、指標値＃１＞指標値＃２の場合、制御部１２は、影響範囲レベル１５に従って選択された再配置処理１３，１４を実行すると決定する。また、指標値＃１＜指標値＃２の場合、制御部１２は、影響範囲レベル１６に従って選択された再配置処理１３を実行すると決定する。なお、図１の例では影響範囲レベル１５，１６の何れか一方を選択しているが、３以上の影響範囲レベルの中から１つを選択するようにしてもよい。
【００２７】
制御部１２は、決定した再配置処理を実行する。その後、制御部１２は、単位データに対するアクセスの状況を監視し、選択した影響範囲レベルに対応付けられた係数をアクセス状況に基づいて更新する。これは、実行した再配置処理の期待する通りのアクセス改善効果が得られているか事後的に確認し、得られていない場合には干渉によるアクセス改善効果の低下の程度を係数に反映させることを意味する。制御部１２は、上記で影響範囲レベル１５を選択した場合は係数１５ａを更新し、影響範囲レベル１６を選択した場合は係数１６ａを更新する。例えば、制御部１２は、アクセスする単位データがキャッシュメモリにロードされていない回数（キャッシュミス回数）をカウントし、実行した再配置処理の評価値の合計とキャッシュミス回数との比に応じて係数を更新する。
【００２８】
第１の実施の形態のデータ配置装置１０によれば、複数の再配置処理それぞれに対して評価値が算出され、各再配置処理の評価値と複数の影響範囲レベルそれぞれに対応付けられた係数とに基づいて一の影響範囲レベルが選択される。そして、選択した影響範囲レベルに従って実行する再配置処理が決定される。また、再配置処理を実行した後の単位データに対するアクセス状況に基づいて、選択した影響範囲レベルの係数が更新される。
【００２９】
これにより、複数の再配置処理を並行して評価し、その中から選択した２以上の再配置処理を任意の順序で実行することができる。よって、複数の再配置処理を逐次評価して実行可否を判断する場合と比べて、生成された全ての再配置処理を検討し終えるまでの時間を短縮することができる。また、評価値は再配置処理それぞれについて算出すればよく、２以上の再配置処理の組み合わせに対して算出しなくてもよい。よって、膨大な数の組み合わせを計算しなくてよく、データ配置装置１０の計算負荷を低減できる。
【００３０】
また、実行する再配置案を決定するにあたり、想定する影響範囲の大きさが異なる複数の影響範囲レベルが検討される。よって、２以上の再配置処理の組み合わせを直接的に評価しなくても再配置処理の間の干渉を考慮することができると共に、実行する再配置処理の数を適切な数に調整することができる。すなわち、実行する再配置処理が少な過ぎてアクセス性能が十分に改善されない可能性や、実行する再配置処理が多すぎるために再配置処理の間の干渉によって期待する効果が得られなくなる可能性を低減できる。また、再配置処理を実行した後は、アクセス性能が監視されて、予想される干渉の程度を示す係数が更新される。よって、次に再配置処理を決定するときの精度を向上させることができる。以上により、実行する再配置処理の組み合わせを効率的に決定することができる。
【００３１】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムを示す図である。
【００３２】
第２の実施の形態の情報処理システムは、クライアント装置２１，２２およびサーバ装置１００を有する。クライアント装置２１，２２およびサーバ装置１００は、ネットワーク２０に接続されている。ネットワーク２０は、ＬＡＮ（Local Area Network）を含んでもよく、インターネットなどの広域ネットワークを含んでもよい。
【００３３】
クライアント装置２１，２２は、ユーザが操作する端末装置としてのクライアントコンピュータである。クライアント装置２１，２２は、サーバ装置１００によって管理されるデータを利用して情報処理を行う。このとき、クライアント装置２１，２２は、ネットワーク２０を介してサーバ装置１００にアクセス要求を送信する。アクセス要求は、データを取得するときに発行される読み出し要求（リード要求）であることもあるし、データを更新するときに発行される書き込み要求（ライト要求）であることもある。
【００３４】
サーバ装置１００は、不揮発性の記憶装置に記憶したデータを管理するサーバコンピュータである。サーバ装置１００は、例えば、ＤＢＭＳ（Database Management System）を実行している。サーバ装置１００は、クライアント装置２１，２２からアクセス要求を受信すると、アクセス要求で指定されたデータに対するアクセスを実行し、実行結果をアクセス要求の送信元へ返信する。リード要求を受信した場合、サーバ装置１００は、指定されたデータを読み出し、読み出したデータを送信する。ライト要求を受信した場合、サーバ装置１００は、指定されたデータを更新し、更新の成否を通知する。
【００３５】
データへのアクセスを高速化するため、サーバ装置１００は、低速・大容量の不揮発性の記憶装置に加えて、高速・小容量のキャッシュメモリを使用する。第２の実施の形態では、前者としてＨＤＤを使用し、後者としてＲＡＭを使用することとする。ただし、前者としてＳＳＤ（Solid State Drive）・フラッシュメモリ・光ディスク・光磁気ディスク・テープを使用することもでき、後者としてフラッシュメモリを使用することもできる。
【００３６】
サーバ装置１００は、データを指定したアクセス要求を受信すると、指定されたデータを含むデータ集合をＨＤＤからＲＡＭにロードする。ＲＡＭにロードしたデータは、アクセス実行後もすぐには消去せずに残しておく。その後、ＲＡＭにロード済みのデータ（キャッシュ中のデータ）を指定したアクセス要求を受信すると、サーバ装置１００は、ＨＤＤからＲＡＭへのロードを省略してアクセスを実行することができる。なお、サーバ装置１００は、第１の実施の形態のデータ配置装置１０の一例である。
【００３７】
図３は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。上記のユニットは、サーバ装置１００内においてそれぞれバス１０８に接続されている。なお、ＣＰＵ１０１は、第１の実施の形態の制御部１２の一例である。ＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００３８】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、サーバ装置１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３９】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４０】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、ＨＤＤ１０３上のデータの配置を制御するデータ配置プログラムが含まれる。なお、サーバ装置１００は、フラッシュメモリやＳＳＤなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４１】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、サーバ装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４２】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４３】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４４】
通信インタフェース１０７は、ネットワーク２０に接続され、ネットワーク２０を介してクライアント装置２１，２２と通信を行う。通信インタフェース１０７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
【００４５】
なお、サーバ装置１００は、媒体リーダ１０６を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ１１１や入力デバイス１１２が、サーバ装置１００の筐体と一体に形成されていてもよい。クライアント装置２１，２２も、サーバ装置１００と同様のハードウェアを用いて実現することができる。
【００４６】
次に、データのキャッシュおよびＨＤＤ１０３上でのデータの配置について説明する。
図４は、キャッシュメモリへのページのロード例を示す図である。
サーバ装置１００は、ＨＤＤ１０３の記憶領域を複数のページに分割し、ページ単位でＨＤＤ１０３からのデータの読み出しやＨＤＤ１０３へのデータの書き込みを行う。１つのページは、１つの連続した物理的な記憶領域を示す。ページをセグメントと呼ぶこともある。ページの大きさは、複数のページの間で同じであってもよいし異なってもよい。１つのページには、複数単位のデータを収容することができる。サーバ装置１００が関係データベース管理システム（ＲＤＢＭＳ：Relational Database Management System）を実行している場合、１単位のデータは、例えば、テーブル内の１つのタプルに相当する。各単位データは、例えば、主キーまたは主キー以外の連番によって識別できる。
【００４７】
一例として、ＨＤＤ１０３は、ページ３１（ページＰ）、ページ３２（ページＱ）、ページ３３（ページＲ）およびページ３４（ページＳ）を含む。ページ３１は、単位データとしてデータａ，ｂ，ｃを含む。同様に、ページ３２はデータｄ，ｅ，ｆを含み、ページ３３はデータｇ，ｈ，ｉを含み、ページ３４はデータｊ，ｋ，ｌを含む。ＨＤＤ１０３からのデータの読み出しやＨＤＤ１０３へのデータの書き込みは、ページ単位で行われる。よって、以下では、あるページに属する全ての単位データを読み出す／書き込むことを、単にページのデータを読み出す／書き込むと言うことがある。なお、１つのページに収容できる単位データの数には上限が設けられているものとする。
【００４８】
ここで、サーバ装置１００は、アクセス要求を受信すると、受信したアクセス要求が指定する単位データを含むページを検索し、検索したページのデータをＨＤＤ１０３からＲＡＭ１０２にロードする。そして、サーバ装置１００は、ＲＡＭ１０２上のデータに対して、アクセス要求が示すアクセスを実行する。サーバ装置１００は、リード要求に対しては、ＲＡＭ１０２にロードされた単位データを提供し、ライト要求に対しては、ＲＡＭ１０２にロードされた単位データを更新する。ＲＡＭ１０２にロードされたデータは、すぐには破棄されずにＨＤＤ１０３のキャッシュとして利用される。後に受信したアクセス要求がキャッシュ中のページに含まれる単位データを指定している場合、サーバ装置１００は、ＨＤＤ１０３からの読み出しを省略してＲＡＭ１０２上のデータを利用できる。
【００４９】
一例として、サーバ装置１００が、データａ，データｅ，データｂ，データｆ，データｇを指定したアクセス要求を順に受信したとする。まず、サーバ装置１００は、データａを指定したアクセス要求に対して、データａの属するページ３１のデータ（データａ，ｂ，ｃを含むページ３１全体）をＲＡＭ１０２にロードする。次に、サーバ装置１００は、データｅを指定したアクセス要求に対して、データｅの属するページ３２のデータ（データｄ，ｅ，ｆを含むページ３２全体）をＲＡＭ１０２にロードする。
【００５０】
次に、サーバ装置１００は、データｂを指定したアクセス要求に対して、データｂの属するページ３１がキャッシュ中であるため、ＨＤＤ１０３へのアクセスを省略し、ＲＡＭ１０２に存在するデータｂを利用する。次に、サーバ装置１００は、データｆを指定したアクセス要求に対して、データｆの属するページ３２がキャッシュ中であるため、ＨＤＤ１０３からの読み出しを省略し、ＲＡＭ１０２に存在するデータｆを利用する。次に、サーバ装置１００は、データｇを指定したアクセス要求に対して、データｇの属するページ３３のデータ（データｇ，ｈ，ｉを含むページ３３全体）をＲＡＭ１０２にロードする。
【００５１】
図５は、データ更新があったページのライトバック例を示す図である。
キャッシュメモリとして利用できるＲＡＭ１０２の記憶領域（キャッシュ領域）は、データが格納されているＨＤＤ１０３の記憶領域と比べて小さい。よって、ＲＡＭ１０２のキャッシュ領域が不足すると、ＲＡＭ１０２から何れかのページのデータを追い出すことになる。例えば、ページ３４のデータをＲＡＭ１０２にロードしようとしたとき、ページ３１〜３３がキャッシュ中であり、キャッシュ領域が不足していたとする。この場合、サーバ装置１００は、ページ３１〜３３のうちの少なくとも１つのデータをＲＡＭ１０２から追い出して、キャッシュ領域に空きを作ることになる可能性がある。
【００５２】
このとき、サーバ装置１００は、更新された単位データを含まないページについては、そのページのデータをＲＡＭ１０２上で破棄すればよく、ＨＤＤ１０３に書き戻さなくてよい。一方、サーバ装置１００は、更新された単位データを含むページについては、そのページのデータをＨＤＤ１０３に書き戻すことになる（ライトバック）。
【００５３】
例えば、データａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉのうちデータｅのみが、アクセス要求に応じて更新されたとする。データｅの更新は、ＨＤＤ１０３への書き込みを減らすため、すぐにはＨＤＤ１０３に反映されない。この場合、ページ３１のデータをＲＡＭ１０２から追い出すときは、単にページ３１のデータを破棄すればよい。ＲＡＭ１０２上でのデータの破棄は、明示的な消去処理を行わずに、そのデータが記憶されていた記憶領域に他のデータを上書きすることによっても実現できる。同様に、ページ３３のデータをＲＡＭ１０２から追い出すときは、単にページ３３のデータを破棄すればよい。
【００５４】
一方、ページ３２のデータをＲＡＭ１０２から追い出すときは、サーバ装置１００は、データｅの更新をＨＤＤ１０３に反映させるため、ページ３２のデータ（データｄ，ｅ，ｆを含むページ３２全体）をＨＤＤ１０３に書き戻す。ただし、ＲＡＭ１０２上でのデータ更新をＨＤＤ１０３に反映させるタイミングは、キャッシュ中のデータをＲＡＭ１０２から追い出すときに限定しなくてもよい。例えば、サーバ装置１００は、定期的に、更新された単位データを含むページを確認してライトバックを行うようにしてもよい。
【００５５】
ところで、あるページのデータがＲＡＭ１０２にキャッシュされていると、そのページに属する単位データを指定したアクセス要求に対しては、ＨＤＤ１０３からの読み出しを省略することができる。小容量のキャッシュ領域を活用してデータアクセスの性能を向上させるためには、連続してアクセスされる可能性の高い単位データを同じページに配置することが好ましい。そこで、サーバ装置１００は、単位データの間のアクセス順序の履歴を記録しておき、履歴に基づいてＨＤＤ１０３上のデータ配置（何れの単位データを何れのページに配置するか）を動的に変更することとする。
【００５６】
図６は、データ再配置があったページのライトバック例を示す図である。
一例として、サーバ装置１００がクライアント装置２１から、データｅを指定したアクセス要求を受信し、その直後にデータｇを指定したアクセス要求を受信したとする。しかし、現在はデータｅはページ３２に属しており、データｇはページ３３に属している。このため、データｇを指定したアクセス要求を受信した時点で、ページ３３のデータがキャッシュされておらず（キャッシュミスが発生し）、ＨＤＤ１０３からの読み出しが発生する可能性がある。今後もデータｅ，データｇという順番のアクセスが出現する可能性が高い場合、データｅとデータｇは同じページに属していることが好ましい。
【００５７】
そこで、サーバ装置１００は、データｅの属するページ３２とデータｇの属するページ３３の間で、データｅ，ｇが同じページに属するように再配置を行うことが考えられる。例えば、サーバ装置１００は、データｆとデータｇを入れ替える。ページ３２にはデータｄ，ｅ，ｇが含まれ、ページ３３にはデータｆ，ｈ，ｉが含まれることになる。これにより、データｅ，データｇという順番のアクセスが今後出現した場合、データｅのアクセスの時点で、データｇを含むページ３２のデータがＲＡＭ１０２にキャッシュされ、データｇのアクセスの時点ではＨＤＤ１０３からの読み出しは原則として発生しない。
【００５８】
ページ間のデータ再配置は、再配置の対象となる２つのページのデータがＲＡＭ１０２にキャッシュされている間に行われる。ＲＡＭ１０２上で行われたデータ再配置は、後でＨＤＤ１０３に反映される。例えば、ページ３２，３３のデータ再配置が行われると、キャッシュされたページ３２，３３のデータとＨＤＤ１０３に記憶されたページ３２，３３のデータとは一致しない。よって、サーバ装置１００は、ページ３２，３３のデータをＲＡＭ１０２からＨＤＤ１０３に書き戻すことになる。再配置されたページのデータのライトバックは、前述の更新されたデータのライトバックの場合と同様に、そのページのデータをＲＡＭ１０２から追い出すときに行うことができる。ただし、定期的に、データ再配置が行われたページを確認してライトバックを行うようにしてもよい。
【００５９】
ここで、図５に示したデータ更新と図６に示したデータ再配置の両方を考慮して、ＲＡＭ１０２にキャッシュされたデータをＨＤＤ１０３に書き戻すコストについて検討する。ページ３１，３２，３３のデータがＲＡＭ１０２にキャッシュされ、その後、ページ３１，３２，３３のデータが全てＲＡＭ１０２から追い出されるとする。キャッシュ中、ページ３１，３２，３３に含まれる単位データのうち、データｅのみが更新されたとする。
【００６０】
ページ３２，３３の間でデータ再配置を行わない場合、図５に示したように、ページ３１，３２，３３のうち、更新されたデータｅを含むページ３２の全体をＨＤＤ１０３に書き戻すことになる。これに対し、ページ３２，３３の間でデータ再配置を行うと、ページ３１，３２，３３のうちページ３２，３３の全体をＨＤＤ１０３に書き戻すことになる。ページ３２のライトバックはデータ再配置の有無に関係なく発生する一方、ページ３３のライトバックはデータ再配置を行う場合のみ発生する。すなわち、この例では、データ再配置を行うと、ページ１つ分だけＨＤＤ１０３へのデータの書き込みが増加する。増加するデータの書き込みは、データ再配置のコストとして認識することができる。
【００６１】
一方で、ある特定の単位データと他の特定の単位データとが連続してアクセスされる可能性が高いという性質（ローカリティ）は、永続するとは限らず変化し得る。例えば、データｅ，ｇが連続してアクセスされる可能性が高いことに応じて上記のデータ再配置を行った後、ローカリティが変化して、データｄ，ｆが連続してアクセスされる可能性が高くなったとする。すると、サーバ装置１００は、現在データｄとデータｆが異なるページに属しているため、更にページ３２，３３の間でデータ再配置を行うことになる。このように、ローカリティが変化する可能性を考慮すると、データ再配置を行うことで得られるアクセス性能の向上というメリットは、有限の値として評価される。よって、１回のデータ再配置の効果は、そのメリットからそのコストを差し引いた量として評価できる。
【００６２】
図７は、データ再配置に応じたディスクコストの変化例を示すグラフである。
ここでは、ＨＤＤ１０３からＲＡＭ１０２に読み出すデータ量と、ＲＡＭ１０２からＨＤＤ１０３へ書き戻すデータ量とを合わせた、ディスクアクセス量を考える。
【００６３】
グラフ４１に示すように、サーバ装置１００がデータ再配置を全く行わない場合、ランダムにキャッシュミスが発生し、ＨＤＤ１０３からのデータの読み出しが平均的に行われる。一方、データ再配置を行わないため、ＨＤＤ１０３へのデータの書き込みは増加しない。よって、データ再配置なしの場合のディスクコストは一定のレベルに安定する。
【００６４】
これに対し、グラフ４１に示すように、サーバ装置１００がデータ再配置を行う場合、データ再配置によってＨＤＤ１０３へのデータの書き込みが一時的に増加する。一方、データ再配置がＨＤＤ１０３に反映されると、その後はキャッシュミスが減少し、ＨＤＤ１０３からのデータの読み出しが抑制される。よって、データ再配置ありの場合のディスクアクセス量は、一時的に増加した後に大きく減少する。その後、ローカリティが変化すると、データ再配置の効果が徐々に消えてしまい、ディスクアクセス量は再配置なしの場合と同じレベルまで戻る。変化後のローカリティに応じてサーバ装置１００がデータ再配置を行うと、再びディスクアクセス量は一時的に増加した後に大きく減少する。
【００６５】
適切にデータ再配置が行われると、再配置ありの場合のディスクアクセス量の積分値を、再配置なしの場合のディスクアクセス量の積分値よりも小さくすることができる。すなわち、サーバ装置１００が積極的にデータ再配置を行うことで、ディスクアクセス量が低減し、データアクセスの性能が向上することが期待できる。
【００６６】
次に、複数のデータ再配置案の取り扱いについて説明する。サーバ装置１００を運用してクライアント装置２１，２２からデータアクセスが行われていると、サーバ装置１００は、連続してアクセスされる単位データの組を順次検出することになる。その結果、２つのページの間で単位データを移動するデータ再配置案が順次生成される。
【００６７】
複数のデータ再配置案が生成された場合に、サーバ装置１００は、それらのデータ再配置案を逐次的に処理することも考えられる。すなわち、逐次的な方法によれば、サーバ装置１００は、現在のＨＤＤ１０３上のデータ配置状況を前提として１つ目のデータ再配置案を評価し、その実行可否を判断する。実行可と判断した場合、サーバ装置１００は、１つ目のデータ再配置案に従ってページ間で単位データを移動する。その次に、サーバ装置１００は、１つ目のデータ再配置を反映した最新のデータ配置状況を前提として、２つ目のデータ再配置案を評価し、その実行可否を判断する。このように、サーバ装置１００は、複数のデータ再配置案を逐次的に評価し実行することもできる。
【００６８】
一方で、サーバ装置１００は、複数のデータ再配置案を並行して評価し実行することが考えられる。すなわち、並行的な方法によれば、サーバ装置１００は、現在のＨＤＤ１０３上のデータ配置状況を前提として複数のデータ再配置案それぞれを評価し、生成した複数のデータ再配置案の中から実行する１または２以上のデータ再配置案を選択する。サーバ装置１００は、選択したデータ再配置案を任意の順序で実行すればよい。しかし、並行的な方法では、以下に説明するように複数のデータ再配置の間で干渉が発生することがあり、干渉をどのように考慮すればよいかが問題となる。
【００６９】
図８は、複数のデータ再配置の間の干渉例を示す図である。
前述のように、ページ３１にデータａが配置され、ページ３２にデータｄが配置され、ページ３３にデータｈが配置されている。ここでは、データａとデータｄが連続してアクセスされたことを受けて、データａをページ３１からページ３２に移動するデータ再配置案（データ再配置案＃１）が生成されたとする。また、データ再配置案＃１とは別に、データｄとデータｈが連続してアクセスされたことを受けて、データｄをページ３２からページ３３に移動するデータ再配置案（データ再配置案＃２）が生成されたとする。
【００７０】
データ再配置案＃１について、メリットが「２０」、コストが「３」であるとする。この場合、データ再配置案＃１の評価値は２０−３＝１７であり、データ再配置案＃１だけを見れば実行可と判断される。また、データ再配置案＃２について、メリットが「５」、コストが「３」であるとする。この場合、データ再配置案＃２の評価値は５−３＝２であり、データ再配置案＃２だけを見れば実行可と判断される。
【００７１】
しかし、上記のデータ再配置案＃１，＃２を両方とも実行すると、ページ３２にデータａが配置され、ページ３３にデータｄ，ｈが配置されることになる。データ再配置案＃１を実行したにもかかわらず、データａとデータｄが異なるページに分かれてしまうため、データ再配置案＃１のメリット「２０」が得られない。よって、データ再配置案＃１，＃２の組み合わせに対する実質的な評価値は、５−（３＋３）＝−１になってしまう。この例の場合、データ再配置案＃１のみを実行したときに全体の評価が最大になる。
【００７２】
このように、データ再配置案の評価値には「加法性」が成立しない。データ再配置案を個別に評価して評価値の高いデータ再配置案を選択実行しても、複数のデータ再配置案の間の「干渉」によって、個々の評価値が示すようなアクセス性能改善の効果が得られないことがある。すなわち、実行するデータ再配置案の評価値の合計とアクセス性能改善の効果とが、乖離してしまうことがある。干渉の程度は、単位データの配置状況などに応じて異なるため、個々のデータ再配置案の評価値のみから予測することは難しい。
【００７３】
これに対し、複数のデータ再配置案を組み合わせた場合の最終的なデータ配置を特定し、その組み合わせに対する評価値を直接的に算出する方法も考えられる。しかしながら、この方法ではＮ個（Ｎは自然数）のデータ再配置案に対して最大で２のＮ乗通りの組み合わせを評価することになり、サーバ装置１００の負荷が著しく大きくなってしまう。そこで、第２の実施の形態のサーバ装置１００は、以下に説明するように、複数のデータ再配置案の間で発生し得る干渉を考慮しつつ、アクセス性能改善の効果が高いデータ再配置案の組み合わせを効率的に探索できるようにする。
【００７４】
図９は、データ再配置の影響範囲の例を示す図である。
サーバ装置１００は、データ再配置案の組み合わせを探索するにあたり、影響範囲の大きさを仮定した影響範囲レベルを使用する。サーバ装置１００は、各データ再配置案が影響を及ぼす単位データの範囲を具体的には計算せず、影響範囲レベルが示す範囲の単位データにのみ影響を及ぼしているという仮定をおく。
【００７５】
この仮定のもとでは、あるデータ再配置案の影響範囲と他のデータ再配置案の影響範囲が重なる場合（両方の影響範囲に含まれる単位データが存在する場合）、サーバ装置１００は、干渉が生じるリスクが大きいと判断して２つのデータ再配置案の少なくとも一方を採用しない。何れのデータ再配置案を採用するかは、個々のデータ再配置案に対して算出した評価値に基づいて判断すればよい。一方、あるデータ再配置案の影響範囲と他のデータ再配置案の影響範囲が重ならない場合、サーバ装置１００は、干渉が生じるリスクが小さいと判断し両方のデータ再配置案を採用することができる。
【００７６】
ただし、影響範囲レベルは影響範囲の大きさを仮定したものであり、実際には影響範囲が重ならないように選択したデータ再配置案の間でも干渉が生じることがある。そこで、サーバ装置１００は、「干渉レート」と呼ばれる係数を使用する。サーバ装置１００は、採用するデータ再配置案の評価値の合計に干渉レートをかけた値を、それらデータ再配置案の組み合わせに対する効果を示す指標値として使用する。
【００７７】
干渉レートは、影響範囲が重ならないデータ再配置案の間で干渉が生じる程度を示すパラメータであり、採用した影響範囲レベルやサーバ装置１００の運用環境に依存する。影響範囲レベルが示す影響範囲が狭いほど、干渉が生じやすく評価値通りの効果が得られにくいため、干渉レートが小さくなる。影響範囲レベルが示す影響範囲が広いほど、干渉が生じにくく評価値通りの効果が得られやすいため、干渉レートが大きくなる。後述するように、干渉レートは、単位データのアクセス状況に応じて更新される。
【００７８】
ここで、サーバ装置１００は、１つの影響範囲レベルのみを仮定してデータ再配置案の組み合わせを探索するのではなく、複数の影響範囲レベルそれぞれを仮定してデータ再配置案の組み合わせの探索を試みる。異なる影響範囲レベルに従って生成された２以上の組み合わせは、上記の干渉レートを適用した指標値を用いて比較することができる。これにより、サーバ装置１００は、干渉が生じても多数のデータ再配置案を選択して実行した方が有利か、干渉を避けるように少数のデータ再配置案に限定して実行した方が有利かを判定することになる。多数のデータ再配置案を選択する方法と少数のデータ再配置案に限定する方法の何れが有利かは、干渉レートに依存する。
【００７９】
第２の実施の形態では、次の３つの影響範囲レベルを考える。（Ａ）移動する単位データのみが影響範囲に含まれる「再配置データレベル」。（Ｂ）移動する単位データに加えて、移動する単位データと直接関連しておりかつ同じページに属する他の単位データも影響範囲に含まれる「直接関連データレベル」。（Ｃ）移動する単位データと同じページに属する全ての単位データが影響範囲に含まれる「ページレベル」。ある単位データと他の単位データの「関連」は、その２つの単位データが連続してアクセスされたことを示す。
【００８０】
ここでは、図９に示すようなページ３５，３６を用いて、３つの影響範囲レベルの具体例を説明する。ページ３５（ページＴ）は、データａ１，ｂ１，ｃ１，ｄ１，ｅ１，ｆ１，ｇ１，ｈ１，ｉ１の９個の単位データを含む。ページ３６（ページＵ）は、データｊ１，ｋ１，ｌ１，ｍ１，ｎ１，ｏ１，ｐ１，ｑ１，ｒ１の９個の単位データを含む。
【００８１】
データａ１はデータｃ１と関連する。データｂ１はデータｄ１と関連する。データｃ１はデータａ１，ｄ１，ｅ１，ｇ１と関連する。データｄ１はデータｂ１，ｃ１と関連する。データｅ１はデータｃ１と関連する。データｆ１はデータｇ１，ｈ１，ｉ１と関連する。データｈ１はデータｆ１，ｌ１と関連する。データｉ１はデータｆ１，ｋ１，ｍ１と関連する。データｊ１はデータｍ１と関連する。データｋ１はデータｉ１，ｎ１と関連する。データｌ１はデータｈ１と関連する。データｍ１はデータｉ１，ｊ１，ｏ１と関連する。データｎ１はデータｋ１と関連する。データｏ１はデータｍ１，ｐ１，ｑ１，ｒ１と関連する。データｐ１はデータｏ１と関連する。データｑ１はデータｏ１と関連する。データｒ１はデータｏ１と関連する。上記以外に単位データ間の関連性は存在しない。
【００８２】
そして、ページ３５，３６を対象とする１つのデータ再配置案であって、データｄ１，ｈ１，ｉ１，ｍ１を移動するデータ再配置案が生成されたとする。影響範囲レベルとして「再配置データレベル」を採用すると、このデータ再配置案の影響範囲には、移動するデータｄ１，ｈ１，ｉ１，ｍ１が含まれ、他の単位データは含まれない。
【００８３】
影響範囲レベルとして「直接関連データレベル」を採用すると、このデータ再配置案の影響範囲には、移動するデータｄ１，ｈ１，ｉ１，ｍ１が含まれる。また、影響範囲には、データｄ１と関連するデータｂ１，ｃ１、データｈ１およびデータｉ１と関連するデータｆ１、データｍ１と関連するデータｊ１，ｏ１が含まれる。ただし、データｋ１はデータｉ１と関連し、データｌ１はデータｈ１と関連するものの、データｈ１，ｉ１とページが異なるため、データｋ１，ｌ１は影響範囲に含まれない。影響範囲レベルとして「ページレベル」を採用すると、このデータ再配置案の影響範囲には、ページ３５に属する全ての単位データとページ３６に属する全ての単位データが含まれる。
【００８４】
このデータ再配置案と組み合わせることができる他のデータ再配置案は、上記の影響範囲と重複しない（上記の単位データを含まない）影響範囲をもつデータ再配置案である。サーバ装置１００は、グラフ上で独立集合問題を解くことで、複数のデータ再配置案の中から影響範囲が重複しない１または２以上のデータ再配置案を検出できる。
【００８５】
図１０は、グラフを用いたデータ再配置案の選択例を示す図である。
サーバ装置１００は、１つの影響範囲レベルを選択すると、選択した影響範囲レベルに従って、複数のデータ再配置案それぞれの影響範囲に含まれる単位データを特定する。サーバ装置１００は、２以上のデータ再配置案の影響範囲に含まれる単位データを検索することで、影響範囲が重複するデータ再配置案を検出する。そして、サーバ装置１００は、データ再配置案をノードで表し、影響範囲の重複をリンクで表した重複グラフを生成する。重複グラフでは、影響範囲が重複する２つのデータ再配置案に対応する２つのノードの間にはリンクが設定される。また、重複グラフでは、影響範囲が重複しない２つのデータ再配置案に対応する２つのノードの間にはリンクが設定されない。
【００８６】
一例として、サーバ装置１００は、重複グラフ４２を生成する。重複グラフ４２は、データ再配置案Ｘ１，Ｘ２，Ｘ３，Ｘ４，Ｘ５，Ｘ６を表すノードを含む。データ再配置案Ｘ１，Ｘ２の影響範囲が重複している。データ再配置案Ｘ１，Ｘ３の影響範囲が重複している。データ再配置案Ｘ２，Ｘ３の影響範囲が重複している。データ再配置案Ｘ２，Ｘ４の影響範囲が重複している。データ再配置案Ｘ３，Ｘ４の影響範囲が重複している。データ再配置案Ｘ４，Ｘ５の影響範囲が重複している。データ再配置案Ｘ５，Ｘ６の影響範囲が重複している。上記以外のデータ再配置案の組については、影響範囲が重複していない。よって、重複グラフ４２は、これらの重複を示す７つのリンクを含む。
【００８７】
サーバ装置１００は、生成した重複グラフを用いて、影響範囲が重複しないデータ再配置案の組み合わせを探索する。影響範囲が重複しないデータ再配置案の組み合わせは、重複グラフ上では、互いに隣接しない（リンクで接続されていない）ノードの集合として表現される。最初に、サーバ装置１００は、隣接しないノードの集合をランダムに選択することで、データ再配置案の組み合わせの初期解を生成する。例えば、サーバ装置１００は、データ再配置案Ｘ２，Ｘ６の組み合わせを初期解として生成する。
【００８８】
そして、サーバ装置１００は、生成した初期解から始めて、局所探索法を用いて近傍解を探索していく。近傍解は、現在の解から何れかのデータ再配置案を除外し、その代わりに、現在の解に含まれない１または２以上のデータ再配置案を採用することで生成される。ただし、近傍解は、影響範囲が重複しないという制約条件を満たすものとする。
【００８９】
近傍解における評価値の合計が現在の解よりも大きい場合、サーバ装置１００は、その近傍解を好ましい解として採用し、採用した好ましい解を基準にして更に近傍解を探索する。例えば、サーバ装置１００は、データ再配置案Ｘ２を除外し、その代わりにデータ再配置案Ｘ１，Ｘ４を採用する。これにより、データ再配置案Ｘ１，Ｘ４，Ｘ６を組み合わせた近傍解が生成される。データ再配置案Ｘ１，Ｘ４，Ｘ６の評価値の合計がデータ再配置案Ｘ２，Ｘ６の評価値の合計よりも大きい場合、サーバ装置１００は、初期解に代えて上記の近傍解を好ましい解として採用する。サーバ装置１００は、所定の停止条件（例えば、探索回数の条件や評価値の条件など）を満たすまで上記の処理を繰り返すことで、最適解または最適解に近い準最適解を発見することができる。
【００９０】
次に、サーバ装置１００のデータ再配置機能について説明する。
図１１は、サーバ装置の機能例を示すブロック図である。
サーバ装置１００は、データ記憶部１２１、キャッシュ部１２２、制御情報記憶部１２３、アクセス実行部１３１、再配置制御部１３３および干渉レート更新部１３６を有する。データ記憶部１２１は、ＨＤＤ１０３に確保した記憶領域として実現できる。キャッシュ部１２２および制御情報記憶部１２３は、ＲＡＭ１０２に確保した記憶領域として実現できる。アクセス実行部１３１、再配置制御部１３３および干渉レート更新部１３６は、例えば、ＣＰＵ１０１が実行するプログラムのモジュールとして実装することができる。
【００９１】
データ記憶部１２１は、連続した物理的な記憶領域として、それぞれ１または２以上の単位データを記憶することができる複数のページを含む。単位データは、識別情報によって識別されアクセス要求に応じてアクセスされるデータの単位であり、例えば、テーブルの１つのタプルに相当する。データ記憶部１２１からのデータの読み出しやデータ記憶部１２１へのデータの書き込みは、アクセス実行部１３１によってページ単位で行われる。
【００９２】
キャッシュ部１２２は、データ記憶部１２１に対するキャッシュメモリである。キャッシュ部１２２の記憶容量は、データ記憶部１２１より小さい一方、キャッシュ部１２２のアクセス速度（特に、ランダムアクセス速度）は、データ記憶部１２１より速い。キャッシュ部１２２には、データ記憶部１２１に含まれる複数のページのうちの一部のページのデータが、ページ単位でロードされる。アクセス要求に応じたデータ更新やデータ再配置は、キャッシュ部１２２にロードされたデータに対して行われ、キャッシュ部１２２からそのデータが追い出されるときにデータ記憶部１２１に反映される。
【００９３】
制御情報記憶部１２３は、データアクセス、キャッシュ管理およびデータ再配置の制御に用いられる制御情報を記憶する。制御情報には、ページと単位データの対応関係を示す検索情報や、連続してアクセスされた単位データの組を示す履歴情報が含まれる。また、制御情報には、データ再配置のメリットやコストの算出に用いるパラメータを示すパラメータ情報や、影響範囲レベル毎の干渉レートが含まれる。制御情報の詳細は後述する。
【００９４】
アクセス実行部１３１は、アクセス要求を受信し、受信したアクセス要求に応じて、キャッシュ部１２２にキャッシュされたデータに対するアクセスを実行する。リード要求を受信した場合、アクセス実行部１３１は、リード要求で指定された単位データをキャッシュ部１２２から取得し、取得した単位データを返信する。ライト要求を受信した場合、アクセス実行部１３１は、ライト要求に含まれるデータを用いてキャッシュ部１２２上の単位データを更新し、更新の成否を返信する。また、アクセス実行部１３１は、受信したアクセス要求に応じて、制御情報記憶部１２３に記憶された履歴情報などを更新する。
【００９５】
アクセス実行部１３１は、キャッシュ制御部１３２を有する。キャッシュ制御部１３２は、データ記憶部１２１からキャッシュ部１２２へのデータのロードを制御する。キャッシュ制御部１３２は、未キャッシュの単位データを指定したアクセス要求を受信すると、当該単位データを含むページのデータ全体をデータ記憶部１２１からキャッシュ部１２２にロードする。データをロードするにあたり、キャッシュ部１２２の空き領域が不足している場合、キャッシュ制御部１３２は、キャッシュ中の何れかのページのデータをキャッシュ部１２２から追い出す。追い出すページのデータに対してキャッシュ部１２２上で更新または再配置が行われていた場合、キャッシュ制御部１３２は、追い出すページのデータ全体をキャッシュ部１２２からデータ記憶部１２１に書き戻す。
【００９６】
再配置制御部１３３は、制御情報記憶部１２３に記憶された履歴情報を分析し、キャッシュ中のページのデータに対してキャッシュ部１２２上で再配置を実行する。再配置制御部１３３は、再配置案生成部１３４および再配置案選択部１３５を有する。
【００９７】
再配置案生成部１３４は、所定の開始条件が満たされると、ページと単位データの現在の対応関係、および、最近連続してアクセスされた単位データの組に基づいて、再配置案を生成する。開始条件は、例えば、データ再配置を前回検討してからの経過時間や履歴情報の蓄積量などを基準として予め決められる。データ再配置案は、例えば、再配置対象の２つのページの識別情報と、当該２つのページの間で移動する単位データの識別情報とを用いて表現される。再配置案生成部１３４は、連続してアクセスされた単位データができる限り同じページに属するように、ページ間での単位データの移動を検討する。
【００９８】
再配置案選択部１３５は、制御情報記憶部１２３に記憶されたパラメータ情報を用いて、再配置案生成部１３４が生成したデータ再配置案を採用するメリットとコストを定量的に評価し、データ再配置案毎の評価値を算出する。メリットは、連続してアクセスされた単位データが異なるページに分断されている状況の改善度や、ある単位データの組が今後連続してアクセスされる回数の期待値、ＨＤＤ１０３の読み出し速度などを考慮して算出される。コストは、データ記憶部１２１に書き戻すページの増加量や、ＨＤＤ１０３の書き込み速度などを考慮して算出される。メリットとコストの詳細は後述する。再配置案選択部１３５は、評価値に基づいて、再配置案生成部１３４が生成した複数のデータ再配置案の中から、実行する１または２以上のデータ再配置案を選択する。
【００９９】
干渉レート更新部１３６は、再配置制御部１３３がデータ再配置を実行してから一定時間、データアクセスの性能を監視する。データアクセスの性能を示す指標として、例えば、要求された単位データがキャッシュ部１２２にロードされていないキャッシュミスの回数を用いることができる。そして、干渉レート更新部１３６は、データ再配置から一定時間が経過すると、データ再配置後の性能が反映されるように、制御情報記憶部１２３に記憶された干渉レートを更新する。例えば、干渉レート更新部１３６は、実行されたデータ再配置の評価値とキャッシュミス回数の比を用いて干渉レートを更新する。次回のデータ再配置案の検討において、更新された干渉レートを用いて評価値を補正することで、データ再配置後のアクセス性能の良否をより高い精度で判定できる。
【０１００】
図１２は、検索テーブルと逆検索テーブルの例を示す図である。
検索テーブル１４１は、制御情報記憶部１２３に記憶されている。検索テーブル１４１は、データＩＤおよびページＩＤの項目を有する。データＩＤは、単位データを識別する識別情報である。データＩＤとして、テーブルの主キーを用いてもよいし、ＤＢＭＳによって自動的に付与される連番を用いてもよい。ページＩＤは、ページを識別する識別情報である。ページＩＤとして、ＨＤＤ１０３のアドレスを用いてもよい。
【０１０１】
検索テーブル１４１では、１つのデータＩＤに対して１つのページＩＤが対応付けられる。これは、そのデータＩＤをもつ単位データがそのページＩＤをもつページに属していることを示している。検索テーブル１４１を用いることで、ある単位データのデータＩＤから、その単位データが属するページのページＩＤを検索できる。
【０１０２】
逆検索テーブル１４２は、制御情報記憶部１２３に記憶されている。逆検索テーブル１４２は、ページＩＤ、データＩＤ、更新フラグおよび再配置フラグの項目を有する。更新フラグは、あるページに属する単位データの中に、キャッシュ部１２２上で更新された単位データが存在するか否かを示す。更新フラグ＝１は、更新された単位データがあり、その更新がデータ記憶部１２１に未反映であることを示す。更新フラグ＝０は、更新された単位データがないことを示す。再配置フラグは、あるページに対してキャッシュ部１２２上でデータ再配置が実行されたか否かを示す。再配置フラグ＝１は、データ再配置が行われており、そのデータ再配置がデータ記憶部１２１に未反映であることを示す。再配置フラグ＝０は、データ再配置が行われていないことを示す。
【０１０３】
逆検索テーブル１４２では、１つのページＩＤに対して、０または１以上のデータＩＤと１つの更新フラグと１つの再配置フラグとが対応付けられる。逆検索テーブル１４２を用いることで、あるページのページＩＤから、そのページに属する全ての単位データのデータＩＤを検索できる。また、逆検索テーブル１４２を用いることで、あるページのページＩＤから、そのページに対応する更新フラグと再配置フラグを検索できる。
【０１０４】
なお、キャッシュ部１２２上でのデータ再配置については、ＲＡＭ１０２上で単位データを移動してその単位データの格納位置を変更してもよい。また、キャッシュ部１２２上でのデータ再配置については、ＲＡＭ１０２上の単位データの格納位置は変更せずに、検索テーブル１４１および逆検索テーブル１４２の更新のみ行うようにしてもよい。
【０１０５】
図１３は、関連性情報キューと関連性集計テーブルの例を示す図である。
関連性情報キュー１４３は、制御情報記憶部１２３上に形成されている。関連性情報キュー１４３は、先入れ先出し（ＦＩＦＯ：First In First Out）のリスト構造をもつ。関連性情報キュー１４３には、アクセス要求が到着する毎に関連性情報が追加される。
【０１０６】
関連性情報は、クライアントＩＤ、データＩＤおよび前データＩＤを含む。クライアントＩＤは、アクセス要求を送信したクライアント装置を識別する識別情報である。クライアントＩＤとして、クライアント装置２１，２２の通信アドレス（例えば、ＩＰ（Internet Protocol）アドレス）を用いてもよい。関連性情報に含まれるデータＩＤは、アクセス要求で指定された単位データのデータＩＤである。前データＩＤは、同じクライアント装置が前回送信したアクセス要求で指定された単位データのデータＩＤである。
【０１０７】
関連性情報は、前データＩＤが示す単位データの直後にデータＩＤが示す単位データがアクセスされたという、単位データ間の「関連性」を示している。１つ前にアクセスされた単位データは、例えば、今回のアクセスと同じクライアント装置についての直近の関連性情報を関連性情報キュー１４３から検索することで特定することができる。ただし、クライアント装置２１，２２が、１つ前にアクセスした単位データのデータＩＤを、前データＩＤとしてアクセス要求に付加するようにしてもよい。データＩＤが示す単位データと前データＩＤが示す単位データの組を「関連データ対」と言うことがある。
【０１０８】
関連性情報キュー１４３に登録された関連性情報は、再配置案生成部１３４が再配置案を生成するときに、登録順に従って１つずつ抽出される。再配置案生成部１３４によって利用された関連性情報は、関連性情報キュー１４３から消去される。また、あるページのデータがキャッシュ部１２２から追い出されると、そのページに属する単位データに関する関連性情報は関連性情報キュー１４３から消去される。すなわち、関連性情報キュー１４３には、キャッシュ部１２２にキャッシュされているページについての関連性情報であって、データ再配置の検討にまだ利用されていないものが蓄積される。
【０１０９】
関連性集計テーブル１４４は、制御情報記憶部１２３に記憶されている。関連性集計テーブル１４４は、データＩＤおよび重みの項目を有する。重みの項目には、データＩＤの項目が示す単位データの直前にアクセスされた単位データを示す識別情報と、そのアクセス順序の出現回数とが登録される。例えば、データｂに対して｛ａ：２，ｃ：２｝という重み情報が登録される。これは、データａの直後にデータｂがアクセスされたことが２回あり、データｃの直後にデータｂがアクセスされたことが２回あることを示す。
【０１１０】
関連性集計テーブル１４４は、関連性情報キュー１４３に関連性情報が追加される毎、すなわち、アクセス要求が到着する毎に、追加された関連性情報に従って更新される。関連性集計テーブル１４４を用いることで、ある単位データのデータＩＤから、その直前にアクセスされた単位データのデータＩＤと、その関連データ対の出現回数を検索できる。あるページのデータがキャッシュ部１２２から追い出されると、追い出されたページに属する単位データに関する重み情報は関連性集計テーブル１４４から消去される。すなわち、関連性集計テーブル１４４には、ページがキャッシュ部１２２にキャッシュされている一期間内に出現した、そのページに関する関連データ対の出現回数が集計される。
【０１１１】
図１４は、重複判定テーブルとパラメータテーブルの例を示す図である。
重複判定テーブル１４５は、制御情報記憶部１２３に記憶されている。重複判定テーブル１４５は、影響範囲の重複するデータ再配置案を検出するときに再配置案選択部１３５によって使用される。重複判定テーブル１４５は、データＩＤおよび影響フラグの項目を有する。影響フラグは、データＩＤの項目が示す単位データが、データ再配置案の影響範囲に含まれているか否かを示す。影響フラグ＝１は、単位データが少なくとも１つのデータ再配置案の影響範囲に含まれていることを示す。影響フラグ＝０は、単位データが何れのデータ再配置案の影響範囲にも含まれていないことを示す。
【０１１２】
例えば、再配置案選択部１３５は、再配置案生成部１３４が生成したデータ再配置案を順に選択していく。再配置案選択部１３５は、選択したデータ再配置案の影響範囲に含まれる単位データを特定し、その単位データの影響フラグを「１」に書き換える。このとき、再配置案選択部１３５は、書き換え前の影響フラグが既に「１」であるか否か判定する。書き換え前の影響フラグが「１」であれば、影響範囲が重複していると判定できる。
【０１１３】
パラメータテーブル１４６は、制御情報記憶部１２３に記憶されている。パラメータテーブル１４６には、再配置案選択部１３５がデータ再配置のメリットとコストを算出するときに用いるパラメータの名称と値が登録される。パラメータの値の少なくとも一部は、ユーザによって設定されてもよい。また、パラメータの値の少なくとも一部は、ＨＤＤ１０３やＲＡＭ１０２のアクセスを監視することでサーバ装置１００が算出してもよい。
【０１１４】
パラメータ名には、書き込み速度、読み出し速度および再出現率が含まれる。書き込み速度は、１ページのデータをＲＡＭ１０２からＨＤＤ１０３に書き戻すのに要する時間を示す。読み出し速度は、１ページのデータをＨＤＤ１０３からＲＡＭ１０２にロードするのに要する時間を示す。書き込み速度および読み出し速度それぞれの単位は、例えば、ミリ秒毎ページである。書き込み速度および読み出し速度は、ユーザがＨＤＤ１０３の物理性能とページサイズの期待値から推定しておき、予めパラメータテーブル１４６に登録しておいてもよい。また、ユーザが書き込み速度および読み出し速度を実測し、実測値の平均を予めパラメータテーブル１４６に登録しておいてもよい。また、サーバ装置１００がＨＤＤ１０３の書き込み速度および読み出し速度を監視し、パラメータテーブル１４６に登録された書き込み速度および読み出し速度の値を継続的に更新してもよい。
【０１１５】
再出現率は、ある単位データの組が連続でアクセスされてから一定時間内に、同じ単位データの組が連続してアクセスされる確率である。すなわち、再出現率は、ある関連データ対が出現してから一定時間内に、同じ関連データ対が再び出現する確率である。パラメータテーブル１４６には、全ての単位データの組についての再出現率の平均値が登録されてもよいし、単位データの組毎に個別に再出現率が登録されてもよい。また、再出現率は、ユーザが実測して予めパラメータテーブル１４６に登録しておいてもよいし、サーバ装置１００が関連性情報に基づいて継続的に更新してもよい。
【０１１６】
図１５は、履歴テーブルと干渉レートテーブルの例を示す図である。
履歴テーブル１４７は、制御情報記憶部１２３に記憶されている。履歴テーブル１４７は、データ再配置を実行するときに再配置制御部１３３によって更新され、その後にキャッシュ制御部１３２によって参照される。履歴テーブル１４７は、データＩＤおよび再配置フラグの項目を有する。再配置フラグは、直近のデータ再配置において、データＩＤの項目が示す単位データが移動したか否かを示す。再配置フラグ＝１は単位データが移動したことを示し、再配置フラグ＝０は単位データが移動しなかったことを示す。
【０１１７】
干渉レートテーブル１４８は、制御情報記憶部１２３に記憶されている。干渉レートテーブル１４８は、再配置案選択部１３５によって参照される。また、干渉レートテーブル１４８は、キャッシュ制御部１３２、再配置案選択部１３５および干渉レート更新部１３６によって更新される。干渉レートテーブル１４８は、影響範囲レベル、干渉レート、合計評価値およびキャッシュミス回数の項目を有する。
【０１１８】
影響範囲レベルの項目には、影響範囲レベルの名称が登録される。例えば、図９に示したように、「再配置データ」、「直接関連データ」および「ページ」の３つの影響範囲レベルの名称が登録される。干渉レートの項目には、各影響範囲レベルに対応付けられた干渉レートが登録される。干渉レートの初期値は「１」である。合計評価値の項目には、影響範囲レベル毎に、その影響範囲レベルに従って選択されたデータ再配置案の組み合わせに対する合計評価値が登録される。この合計評価値は、干渉レートを用いて補正する前の値である。キャッシュミス回数の項目には、データ再配置が行われてから一定時間以内に、移動した単位データに対して発生したキャッシュミスの回数が登録される。
【０１１９】
再配置案選択部１３５は、実行するデータ再配置案の組み合わせを決定すると、その組み合わせの選択に用いた影響範囲レベルと対応付けて、実行するデータ再配置案の評価値の合計を干渉レートテーブル１４８に登録する。キャッシュ制御部１３２は、データ再配置が実行されてから一定時間、キャッシュミスを監視する。キャッシュミスが発生し、かつ、要求された単位データの再配置フラグが「１」である場合、キャッシュ制御部１３２は、干渉レートテーブル１４８のキャッシュミス回数をカウントアップする。更新するキャッシュミス回数は、直近に使用された影響範囲レベルに対応するものである。
【０１２０】
干渉レート更新部１３６は、データ再配置が実行されてから一定時間経過すると、干渉レートテーブル１４８の合計評価値とキャッシュミス回数に基づいて、干渉レートを更新する。更新する干渉レートは、直近に使用された影響範囲レベルに対応するものである。例えば、干渉レート更新部１３６は、合計評価値とキャッシュミス回数の比（合計評価値÷キャッシュミス回数）を、新たな干渉レートとする。更新された干渉レートは、再配置案選択部１３５が次にデータ再配置を検討するときに参照される。
【０１２１】
次に、サーバ装置１００が実行する処理の手順について説明する。
図１６は、アクセス実行の手順例を示すフローチャートである。
（Ｓ１０）アクセス実行部１３１は、クライアント装置２１，２２の何れかから、ネットワーク２０を介してアクセス要求を受信する。アクセス要求は、ある単位データを読み出すリード要求またはある単位データを更新するライト要求などである。
【０１２２】
（Ｓ１１）アクセス実行部１３１は、制御情報記憶部１２３に記憶された検索テーブル１４１を参照して、アクセス要求で指定された単位データを含むページＰ１を検索する。
（Ｓ１２）キャッシュ制御部１３２は、検索されたページＰ１がキャッシュ中であるか、すなわち、ページＰ１のデータがキャッシュ部１２２に記憶されているか判断する。検索されたページＰ１がキャッシュ中である場合はステップＳ２０に処理が進み、ページＰ１が未キャッシュである場合はステップＳ１３に処理が進む。
【０１２３】
なお、各ページがキャッシュ中であるか判断するため、キャッシュ制御部１３２は、キャッシュ中のページを示すリストまたは未キャッシュのページを示すリストを保持していてもよい。また、逆検索テーブル１４２にはキャッシュ中のページに関する情報のみ登録するようにし、キャッシュ制御部１３２は、所望のページの情報が逆検索テーブル１４２に存在するか確認することで当該ページがキャッシュ中か否かを判断してもよい。また、各ページがキャッシュ中か否かを示すフラグを逆検索テーブル１４２に追加してもよい。
【０１２４】
（Ｓ１３）キャッシュ制御部１３２は、キャッシュ部１２２のキャッシュ領域に、ページＰ１のデータを格納するだけの空きが存在するか判断する。キャッシュ領域に空きが存在するか否かは、キャッシュ中のページの数が所定の上限に達しているか否かによって判断してもよい。キャッシュ領域に空きが存在する場合はステップＳ１８に処理が進み、キャッシュ領域が不足している場合はステップＳ１４に処理が進む。
【０１２５】
（Ｓ１４）キャッシュ制御部１３２は、キャッシュ中の複数のページのうちキャッシュ部１２２から追い出すページＰ２を選択する。ページＰ２を選択するアルゴリズム（キャッシュアルゴリズムや置換アルゴリズムと呼ぶことがある）としては、様々なものが考えられる。例えば、ＬＲＵ（Least Recently Used）、ＬＦＵ（Least Frequency Used）、ＦＩＦＯなどを用いることができる。キャッシュ制御部１３２は、使用するアルゴリズムに応じた情報（例えば、ページのアクセス回数）を保持してもよい。
【０１２６】
（Ｓ１５）キャッシュ制御部１３２は、逆検索テーブル１４２から、ステップＳ１４で選択したページＰ２に対応する更新フラグと再配置フラグを取得する。そして、キャッシュ制御部１３２は、更新フラグ＝１または再配置フラグ＝１であるか、すなわち、ページＰ２に含まれる単位データが更新されたかまたはページＰ２に対してデータ再配置が行われたか判断する。更新フラグ＝１または再配置フラグ＝１である場合、ステップＳ１６に処理が進む。それ以外の場合、ステップＳ１７に処理が進む。
【０１２７】
（Ｓ１６）キャッシュ制御部１３２は、キャッシュ部１２２に記憶されたページＰ２のデータ全体をデータ記憶部１２１に書き戻す。すなわち、ＲＡＭ１０２にキャッシュされたページＰ２のデータがＨＤＤ１０３に書き戻される。
【０１２８】
（Ｓ１７）キャッシュ制御部１３２は、逆検索テーブル１４２に登録されたページＰ２に対応する更新フラグおよび再配置フラグを「０」にクリアする。また、キャッシュ制御部１３２は、ページＰ２に含まれる単位データを逆検索テーブル１４２から検索し、検索した単位データについての関連性情報および関連性集計情報を関連性情報キュー１４３および関連性集計テーブル１４４から消去する。なお、キャッシュ制御部１３２は、キャッシュ部１２２上のページＰ２のデータを破棄する。そのとき、キャッシュ制御部１３２は、キャッシュ部１２２から明示的にページＰ２のデータを消去してもよいし、ページＰ２のデータを消去せずにページＰ２に割り当てられていた記憶領域を上書き可能に設定するようにしてもよい。
【０１２９】
（Ｓ１８）キャッシュ制御部１３２は、ステップＳ１１で検索されたページＰ１のデータ全体を、データ記憶部１２１からＲＡＭ１０２上のキャッシュ部１２２に読み出す。
（Ｓ１９）キャッシュ制御部１３２は、履歴テーブル１４７から、アクセス要求で指定された単位データに対応する再配置フラグを取得する。そして、キャッシュ制御部１３２は、再配置フラグ＝１であるか、すなわち、指定された単位データが前回のデータ再配置で移動したものであるか判断する。再配置フラグ＝１である場合、キャッシュ制御部１３２は、干渉レートテーブル１４８から前回のデータ再配置で採用された影響範囲レベルに対応するキャッシュミス回数をインクリメントすることで更新する。
【０１３０】
（Ｓ２０）アクセス実行部１３１は、キャッシュ部１２２に記憶されたデータに対して、受信したアクセス要求に応じたアクセスを実行し、アクセス要求を送信したクライアント装置に対して応答する。アクセス要求がリード要求である場合、アクセス実行部１３１は、アクセス要求で指定された単位データをキャッシュ部１２２から抽出して、アクセス要求を送信したクライアント装置に送信する。アクセス要求がライト要求である場合、アクセス実行部１３１は、アクセス要求で指定された単位データをキャッシュ部１２２上で更新し、アクセス要求を送信したクライアント装置に更新の成否を通知する。また、アクセス要求がライト要求である場合、アクセス実行部１３１は、逆検索テーブル１４２に登録されたページＰ１の更新フラグを「１」に書き換える。
【０１３１】
（Ｓ２１）アクセス実行部１３１は、受信したアクセス要求に応じて関連性情報を生成し、制御情報記憶部１２３に形成された関連性情報キュー１４３に保存する。関連性情報には、アクセス要求を送信したクライアント装置の識別情報と、アクセス要求で指定された単位データの識別情報が含まれる。また、関連性情報には、同じクライアント装置からの要求によって前回アクセスされた単位データの識別情報が含まれる。前回アクセスされた単位データは、例えば、そのクライアント装置についての直近の関連性情報を関連性情報キュー１４３から検索することで特定できる。また、前回アクセスされた単位データの識別情報がアクセス要求に付加されている場合、その識別情報を利用できる。
【０１３２】
また、アクセス実行部１３１は、関連性情報を用いて関連性集計テーブル１４４の関連性集計情報を更新する。アクセス実行部１３１は、関連性集計テーブル１４４において、今回アクセスされた単位データに対応する前回アクセスされた単位データの重みを１だけ加算する。
【０１３３】
図１７は、データ再配置の手順例を示すフローチャートである。
（Ｓ３０）再配置案生成部１３４は、以下のステップＳ３２〜Ｓ４０に示すデータ再配置の検討を前回行ってから所定時間以上経過したか判断する。前回のデータ再配置の検討から所定時間以上経過した場合、ステップＳ３２に処理が進み、データ再配置の検討が開始される。所定時間経過していない場合、ステップＳ３１に処理が進む。
【０１３４】
（Ｓ３１）再配置案生成部１３４は、関連性情報キュー１４３に蓄積された関連性情報の量（関連性情報が示す関連データ対の量と言うこともできる）が所定の閾値以上であるか判断する。条件を満たす場合、ステップＳ３２に処理が進み、データ再配置の検討が開始される。条件を満たさない場合、データ再配置の検討は開始されない。
【０１３５】
なお、図１７では、データ再配置の検討を開始する開始条件として、ステップＳ３０，Ｓ３１の２つの条件を用いることとした。ただし、ステップＳ３０，Ｓ３１の何れか一方のみを開始条件として用いてもよい。また、ステップＳ３０，Ｓ３１に代えて、または、ステップＳ３０，Ｓ３１と合わせて、他の開始条件を用いてもよい。例えば、関連性情報が示す関連データ対のうちページをまたがる関連データ対をカウントし、ページをまたがる関連データ対の数と所定の閾値とを比較するようにしてもよい。
【０１３６】
（Ｓ３２）再配置案生成部１３４は、関連性情報キュー１４３から１つの関連データ対を抽出する。抽出する関連データ対は、例えば、関連性情報キュー１４３に記憶されているもののうち最も古いものとする。抽出した関連データ対は、関連性情報キュー１４３から削除される。以下では、関連データ対が示す今回アクセスされた単位データをｍ、前回アクセスされた単位データをｎと表記することがある。
【０１３７】
そして、再配置案生成部１３４は、単位データｍが属するページＭと単位データｎが属するページＮとの間のデータ再配置案を１つ生成する。データ再配置案は、ページＭ，ＮのページＩＤと、一方のページから他方のページに移動する単位データのデータＩＤとを用いて表現できる。データ再配置案の生成の詳細は後述する。
【０１３８】
（Ｓ３３）再配置案選択部１３５は、ステップＳ３２で生成されたデータ再配置案それぞれについて、そのコストとメリットを算出する。
コストは、ライトバックするページの増加量×書き込み速度、として算出できる。ライトバックするページの増加量は、図５，６で説明したように、キャッシュ部１２２上でのページＭ，Ｎの更新状況に基づいて算出することができ、「０」，「１」，「２」の何れかの値をとる。再配置案選択部１３５は、逆検索テーブル１４２に登録されたページＭ，Ｎの更新フラグを確認して、ページＭ，Ｎのうち更新フラグ＝１であるページの数（更新されたページの数）を算出する。データ再配置によって増加するライトバックのページ数は、「２」−更新されたページの数である。書き込み速度は、制御情報記憶部１２３に記憶されたパラメータテーブル１４６から検索できる。
【０１３９】
メリットは、ページＭ，Ｎの間のカット数の減少量×再出現率×読み出し速度、として算出できる。ページＭ，Ｎの間のカット数は、制御情報記憶部１２３に記憶された関連性集計テーブル１４４に登録されている関連データ対のうち、ページＭ，Ｎをまたがる関連データ対の重みの合計である。すなわち、ページＭ，Ｎの間のカット数は、ページＭ，Ｎの両方が今回キャッシュされている期間内に出現した関連データ対のうち、ページＭ，Ｎをまたがる関連データ対の出現回数を示す。再配置案選択部１３５は、関連性集計テーブル１４４を参照して、現在の配置状況におけるカット数とデータ再配置の実行後の配置状況におけるカット数とを算出し、前者から後者を引いたカット数の減少量を算出する。
【０１４０】
ページＭ，Ｎにまたがっていた関連データ対の中には、データ再配置によってページＭ，Ｎの何れか一方の中に収まり、アクセス性能が向上するものがあり得る。逆に、ページＭ，Ｎの何れか一方の中に収まっていた関連データ対の中には、データ再配置によってページＭ，Ｎにまたがるようになり、アクセス性能が低下するものがあり得る。カット数の減少量は、一部の関連データ対についてのアクセス性能の向上と一部の関連データ対についてのアクセス性能の低下とを反映したものであり、データ再配置を行うことによる単位データの配置状況の全体的な改善度を表した指標であると言うことができる。
【０１４１】
再出現率は、ページＭ，Ｎに属する単位データの間の関連データ対が今後一定時間の間に再度出現する確率を表し、パラメータテーブル１４６から検索できる。読み出し速度は、パラメータテーブル１４６から検索できる。そして、再配置案選択部１３５は、データ再配置案それぞれについて、メリットからコストを引いた評価値を算出する。
【０１４２】
（Ｓ３４）再配置案選択部１３５は、制御情報記憶部１２３に記憶された干渉レートテーブル１４８から、影響範囲レベルを１つ選択する。影響範囲レベルとしては、再配置データレベルと直接関連データレベルとページレベルの３つがある。
【０１４３】
（Ｓ３５）再配置案選択部１３５は、ステップＳ３４で選択した影響範囲レベルに従って、ステップＳ３２で生成されたデータ再配置案それぞれの影響範囲に含まれる単位データを特定する。再配置データレベルを選択した場合、再配置案選択部１３５は、データ再配置案が示す移動対象の単位データのみを影響範囲に含める。直接関連データレベルを選択した場合、再配置案選択部１３５は、移動対象の単位データと直接関連する単位データを関連性集計テーブル１４４から検索し、影響範囲に含める。ページレベルを選択した場合、再配置案選択部１３５は、移動対象の単位データと同じページに属する単位データを逆検索テーブル１４２から検索し、影響範囲に含める。
【０１４４】
各データ再配置案の影響範囲が特定されると、再配置案選択部１３５は、制御情報記憶部１２３に記憶された重複判定テーブル１４５を用いて、影響範囲が重複する（同じ単位データが影響範囲に含まれる）データ再配置案の組を検出する。そして、再配置案選択部１３５は、データ再配置案に対応するノードを含む重複グラフを生成する。重複グラフでは、影響範囲が重複するデータ再配置案の組に対応するノード組がリンクで接続される。
【０１４５】
（Ｓ３６）再配置案選択部１３５は、ステップＳ３５で生成した重複グラフを用いて、ステップＳ３２で生成されたデータ再配置案の中から影響範囲が重複しないデータ再配置案の集合を探索する。この集合には、１または２以上のデータ再配置案が含まれる。影響範囲が重複しないことは、隣接する（リンクで接続された）ノードに対応するデータ再配置案の組が選択されていないことに対応する。データ再配置案の選択の詳細は後述する。
【０１４６】
（Ｓ３７）再配置案選択部１３５は、ステップＳ３３で算出した評価値のうち、ステップＳ３６で選択したデータ再配置案の評価値を合計する。また、再配置案選択部１３５は、干渉レートテーブル１４８から、ステップＳ３４で選択した影響範囲レベルに対応する干渉レートを検索する。そして、再配置案選択部１３５は、合計評価値に干渉レートをかけることで、合計評価値を補正する。合計評価値の補正は、選択したデータ再配置案の間で発生する干渉の程度を推定し、干渉を合計評価値に反映させることを示す。
【０１４７】
（Ｓ３８）再配置案選択部１３５は、ステップＳ３４で全ての影響範囲レベルを選択したか判断する。全ての影響範囲レベルを選択した場合はステップＳ３９に処理が進み、未選択の影響範囲レベルがある場合はステップＳ３４に処理が進む。
【０１４８】
（Ｓ３９）再配置案選択部１３５は、干渉レートテーブル１４８に登録された複数の影響範囲レベルのうち、ステップＳ３７で算出した合計評価値の補正値が最良のもの（値が大きいほど良い指標である場合は、合計評価値が補正値が最大のもの）を採用する。そして、再配置案選択部１３５は、採用した影響範囲レベルに従ってステップＳ３６で選択したデータ再配置案を、実行するデータ再配置案に決定する。また、再配置案選択部１３５は、実行するデータ再配置案の合計評価値（補正前のもの）を、採用した影響範囲レベルと対応付けて干渉レートテーブル１４８に登録する。再配置制御部１３３は、決定されたデータ再配置案に従って、ページの間で単位データを移動する。このとき、再配置制御部１３３は、決定した２以上のデータ再配置案を任意の順序で実行してよい。
【０１４９】
（Ｓ４０）干渉レート更新部１３６は、再配置制御部１３３がデータ再配置を行ってから所定時間が経過するのを待つ。所定時間が経過すると、干渉レート更新部１３６は、干渉レートテーブル１４８から、ステップＳ３９で採用された影響範囲レベルに対応する合計評価値とキャッシュミス回数を検索する。そして、干渉レート更新部１３６は、採用された影響範囲レベルに対応する干渉レートを、合計評価値÷キャッシュミス回数に更新する。干渉レートは、キャッシュミス回数が多いほど小さい値になる。これは、アクセス性能が結果的に向上しなかった場合には、データ再配置案の間の干渉によって期待した効果が得られなかったと判断し、以降は合計評価値を小さな値に補正することを示す。
【０１５０】
次に、ステップＳ３２で行われるデータ再配置案の生成について説明する。以下では、データ再配置案の生成方法の例として重心法とユニオンスプリット法を挙げる。
図１８は、重心法によるデータ再配置案の生成例を示す図である。
【０１５１】
重心法では、単位データの間の関連性の強さ（連続してアクセスされる可能性の高さ）を、Ｎ次元空間（Ｎは２以上の整数）上の距離として表現し、Ｎ次元空間上で単位データをグルーピングする。ここでは、一例として２次元空間を用いる。グラフ４３は、関連性情報キュー１４３から抽出した関連データ対を適用する前の関連性を表す。グラフ４４は、抽出した関連データ対を適用した後の単位データの間の関連性を表す。
【０１５２】
重心法では、ページおよび単位データそれぞれに対して座標を付与する。ページの座標は、互いに十分に離れるように予め付与しておく。単位データの座標の初期値は、その単位データが属するページの座標の近傍になるように付与しておく。グラフ４３では、ページＱ，Ｒ（ページ３２，３３）および単位データｅ，ｆ，ｇ，ｈが配置されている。
【０１５３】
初期状態では、所定のグルーピング方法を用いると、単位データｅ，ｆはページ３２と同じグループに振り分けられ、単位データｇ，ｈはページ３３と同じグループに振り分けられるようにしておく。グルーピング方法としては、例えば、各ページが順に、グループが決定していない単位データのうちそのページから座標が最も近い単位データを自グループに取り込むという方法が考えられる。グラフ４３の場合、１巡目でページＱが単位データｆを選択し、ページＲが単位データｇを選択する。２巡目でページＱが単位データｅを選択し、ページＲが単位データｈを選択する。これにより、単位データｅ，ｆはページＱに属し、単位データｇ，ｈはページＲに属するというグルーピングを行うことができる。
【０１５４】
ここで、再配置案生成部１３４が関連性情報キュー１４３から関連データ対を抽出すると、その関連データ対に応じて単位データの座標を変更する。具体的には、一方の単位データの座標を、他方の単位データが属するページの座標に近付ける。単位データｆの直後に単位データｇがアクセスされた場合、グラフ４３では、単位データｆの座標がページＲの座標に近付き、単位データｇの座標がページＱの座標に近付く。これは、単位データｆとページＲの関連性が現在よりも強くなり、単位データｇとページＱの関連性が現在よりも強くなったことを表す。座標の移動量は、一定量としてもよい。また、座標の移動量は、単位データの座標と近付く先のページの座標との間の距離（例えば、単位データｆの座標とページＲの座標の距離）に対する一定割合（例えば、１０％）としてもよい。
【０１５５】
２次元空間上で単位データの座標が変更されると、上記のグルーピング方法を用いて単位データのグループが再計算される。例えば、グラフ４４の場合、１巡目でページＱが単位データｆを選択し、ページＲが単位データｈを選択する。２巡目でページＱが単位データｇを選択し、ページＲが単位データｅを選択する。これにより、単位データｆ，ｇはページＱのグループに振り分けられ、単位データｅ，ｈはページＲのグループに振り分けられることになる。これは、単位データｅがページＱからページＲに移動し、単位データｇがページＲからページＱに移動するというデータ再配置案を表す。
【０１５６】
図１９は、座標テーブルの例を示す図である。
データ再配置案の生成に重心法を用いる場合、座標テーブル１４９が制御情報記憶部１２３に記憶される。座標テーブル１４９は、ノードＩＤおよび座標の項目を有する。ノードＩＤは、Ｎ次元空間上に配置するノードの識別情報である。ノードＩＤとして、ページについてはページＩＤを用い、単位データについてはデータＩＤを用いる。ノードＩＤに対して、Ｎ次元空間上の現在の座標が対応付けられる。単位データに対応する座標は、上記のように再配置案生成部１３４によって更新され得る。あるページがキャッシュ部１２２から追い出されても、そのページの情報を座標テーブル１４９から消去しなくてよい。
【０１５７】
図２０は、第１の再配置案生成の手順例を示すフローチャートである。
第１の再配置案生成は、上記のステップＳ３２で実行される。
（Ｓ５０）再配置案生成部１３４は、制御情報記憶部１２３に記憶された検索テーブル１４１から単位データｍを含むページＭと単位データｎを含むページＮを検索する。
【０１５８】
（Ｓ５１）再配置案生成部１３４は、制御情報記憶部１２３に記憶された座標テーブル１４９から、単位データｍ，ｎおよびページＭ，Ｎに対応する座標を検索する。
（Ｓ５２）再配置案生成部１３４は、単位データｍの座標をページＮの座標に向かって近付ける。例えば、再配置案生成部１３４は、座標テーブル１４９で、単位データｍの座標を、単位データｍの座標とページＮの座標の距離が１０％縮まるように変更する。また、再配置案生成部１３４は、単位データｎの座標をページＭの座標に向かって近付ける。例えば、再配置案生成部１３４は、座標テーブル１４９で、単位データｎの座標を、単位データｎの座標とページＭの座標の距離が１０％縮まるように変更する。
【０１５９】
（Ｓ５３）再配置案生成部１３４は、制御情報記憶部１２３に記憶された逆検索テーブル１４２から、ページＭ，Ｎに含まれる全ての単位データを検索する。再配置案生成部１３４は、座標テーブル１４９から、検索した単位データそれぞれの座標を検索する。
【０１６０】
（Ｓ５４）再配置案生成部１３４は、ステップＳ５３で検索された単位データを、それら単位データの座標とページＭ，Ｎの座標を用いてグルーピングする。グルーピングでは、ページＭ，Ｎの座標と単位データそれぞれの座標との間の距離が考慮される。ページＭとの距離が近い単位データはページＭに配置されることが好ましく、ページＮとの距離が近い単位データはページＮに配置されることが好ましい。例えば、ページＭ，Ｎが交互に、未選択の単位データのうち距離が最も近い単位データを１つずつ選択していく。
【０１６１】
（Ｓ５５）再配置案生成部１３４は、現在のページＭ，Ｎのデータ配置とステップＳ５４で求めたページＭ，Ｎのデータ配置とを比較し、ページＭ，Ｎの間で移動する単位データを特定する。これにより、ページＭ，Ｎの間のデータ再配置案が生成される。
【０１６２】
図２１は、ユニオンスプリット法によるデータ再配置案の生成例を示す図である。
ユニオンスプリット法では、再配置案生成部１３４が関連性情報キュー１４３から関連データ対を抽出すると、関連データ対が示す２つのページが統合される。ページの統合では、一方のページに属する全ての単位データを、他方のページに移動させる。統合後の一方のページは、単位データを含まない空のページとなる。
【０１６３】
ただし、統合後の他方のページに含まれる単位データの量が上限を超えてしまうことがある。その場合、単位データそれぞれのアクセス状況に応じて、統合後の他方のページを分割する。ページの分割では、他方のページに集められた単位データを、キャッシュ部１２２に今回キャッシュされている間にアクセスされたものとアクセスされなかったものとにグルーピングする。そして、何れか一方のグループの単位データを移動させる。
【０１６４】
例えば、単位データｄ，ｅ，ｆを含むページ３２（ページＱ）と、単位データｇ，ｈ，ｉを含むページ３３（ページＲ）がキャッシュ部１２２にキャッシュされているとする。また、今回のキャッシュ中、単位データｅの直後に単位データｆがアクセスされ、単位データｆの直後に単位データｇがアクセスされたとする。すると、ページＱとページＲが統合される。例えば、ページＲに含まれる単位データｇ，ｈ，ｉがページＱに移動する。その結果、ページＱは単位データｄ，ｅ，ｆ，ｇ，ｈ，ｉを含み、ページＲは空となる。
【０１６５】
しかし、このように移動するとページＱに含まれる単位データの量が所定の上限を超えてしまう場合、単位データｄ，ｅ，ｆ，ｇ，ｈ，ｉが、キャッシュ中にアクセスされた単位データｅ，ｆ，ｇとアクセスされなかった単位データｄ，ｈ，ｉとに分けられる。そして、ページＱが分割される。例えば、キャッシュ中にアクセスされなかった単位データｄ，ｈ，ｉがページＱからページＲに移動する。その結果、ページＱは単位データｅ，ｆ，ｇを含み、ページＲは単位データｄ，ｈ，ｉを含むこととなる。
【０１６６】
図２２は、第２の再配置案生成の手順例を示すフローチャートである。
第２の再配置案生成は、上記のステップＳ３２で実行される。
（Ｓ６０）再配置案生成部１３４は、制御情報記憶部１２３に記憶された検索テーブル１４１から単位データｍを含むページＭと単位データｎを含むページＮを検索する。
【０１６７】
（Ｓ６１）再配置案生成部１３４は、制御情報記憶部１２３に記憶された逆検索テーブル１４２から、ページＭ，Ｎに含まれる全ての単位データを検索する。
（Ｓ６２）再配置案生成部１３４は、ページＭとページＮを統合するデータ再配置案を生成する。すなわち、再配置案生成部１３４は、ページＮの全ての単位データをページＭに移動するデータ再配置案を生成する。このデータ再配置案ではページＮは空となる。
【０１６８】
（Ｓ６３）再配置案生成部１３４は、ステップＳ６２で生成したデータ再配置案を採用した場合に、ページＭのデータ量（例えば、単位データの個数）が所定の上限を超えるか判断する。ページＭのデータ量が上限を超える場合、ステップＳ６４に処理が進む。ページＭのデータ量が上限以下である場合、ステップＳ６６に処理が進む。
【０１６９】
（Ｓ６４）再配置案生成部１３４は、ページＭに集められた単位データそれぞれが、キャッシュ部１２２に今回キャッシュされている間にアクセスされたか判定する。各単位データのアクセスの有無は、例えば、制御情報記憶部１２３に記憶された関連性集計テーブル１４４に、その単位データに関する情報が登録されているか否かで判定できる。
【０１７０】
（Ｓ６５）再配置案生成部１３４は、ステップＳ６４で判定したアクセスの有無に応じてページＭを分割するように、ステップＳ６２で生成したデータ再配置案を修正する。具体的には、再配置案生成部１３４は、ページＭに集められた単位データのうち、アクセスされなかった単位データがページＮに移動するようにデータ再配置案を修正する。
【０１７１】
（Ｓ６６）再配置案生成部１３４は、ステップＳ６２で生成したデータ再配置案またはステップＳ６５で修正したデータ再配置案に基づいて、移動する単位データを特定する。これにより、ページＭ，Ｎのデータ再配置案が確定される。
【０１７２】
なお、再配置案生成部１３４は、重心法およびユニオンスプリット法を含む複数のデータ再配置案の生成方法のうち、何れか１つを使用すればよい。使用する生成方法は、例えば、ユーザが予め再配置案生成部１３４に設定しておく。重心法は、関連データ対の出現回数の増加に応じて徐々にデータ配置を変更していくことが可能な方法であり、データ配置の長期的な最適化に適している。ユニオンスプリット法は、新たな関連データ対の出現に反応して、データ配置を迅速に修正できるという利点がある。
【０１７３】
次に、上記のステップＳ３３で算出するカット数の減少量について補足する。
図２３は、データ再配置前後のカット数の変化例を示す図である。
ここでは、ページ３２（ページＱ）に単位データｄ，ｅ，ｆが含まれ、ページ３３（ページＲ）に単位データｇ，ｈ，ｉが含まれているとする。また、単位データｄと単位データｇ、単位データｅと単位データｆ、単位データｅと単位データｇ、単位データｈと単位データｉが、連続してアクセスされたとする。また、単位データｆをページＲに移動し、単位データｇをページＱに移動するというデータ再配置案が生成されたとする。
【０１７４】
データ再配置前は、単位データｄ，ｇの関連データ対および単位データｅ，ｇの関連データ対が、ページＱ，Ｒをまたがっている。よって、データ再配置前のカット数は「２」である。一方、生成されたデータ再配置案によれば、データ再配置後は単位データｄ，ｇの関連データ対および単位データｅ，ｇの関連データ対がページＱ，Ｒをまたがっておらず、単位データｅ，ｆの関連データ対がページＱ，Ｒをまたがっている。よって、データ再配置後のカット数は「１」であり、カット数の減少量（ΔＣｕｔ）が「１」と算出される。ΔＣｕｔは、生成されたデータ再配置案の良否を反映していると言うことができる。
【０１７５】
次に、上記のステップＳ３６で行われるデータ再配置案の選択について説明する。
図２４は、再配置案選択の手順例を示すフローチャートである。
（Ｓ７０）再配置案選択部１３５は、空の集合Ｚを定義する。
【０１７６】
（Ｓ７１）再配置案選択部１３５は、前述のステップＳ３２で生成されたデータ再配置案の中から、１つのデータ再配置案（データ再配置案Ｘ１）を選択する。これは、ステップＳ３５で生成された重複グラフの中から、１つのノードを選択することに対応する。
【０１７７】
（Ｓ７２）再配置案選択部１３５は、ステップＳ７１で選択したデータ再配置案Ｘ１の影響範囲が、集合Ｚに属する何れかのデータ再配置案の影響範囲と重複するか判断する。重複の有無は、例えば、重複グラフ上においてデータ再配置案Ｘ１に対応するノードと集合Ｚに属するデータ再配置案に対応するノードとが、リンクで接続されているか否かによって判断できる。影響範囲が重複している場合はステップＳ７４に処理が進み、影響範囲が重複していない場合はステップＳ７３に処理が進む。
【０１７８】
（Ｓ７３）再配置案選択部１３５は、集合Ｚにデータ再配置案Ｘ１を追加する。
（Ｓ７４）再配置案選択部１３５は、生成された全てのデータ再配置案がステップＳ７１において選択されたか判断する。全てのデータ再配置案が選択された場合はステップＳ７５に処理が進み、未選択のデータ再配置案がある場合はステップＳ７１に処理が進む。
【０１７９】
（Ｓ７５）再配置案選択部１３５は、現時点で集合Ｚに属しているデータ再配置案の評価値を合計し、合計評価値（補正前のもの）を算出する。
（Ｓ７６）再配置案選択部１３５は、集合Ｚに属するデータ再配置案の中から、１つのデータ再配置案（データ再配置案Ｘ２）を選択する。
【０１８０】
（Ｓ７７）再配置案選択部１３５は、集合Ｚに属さないデータ再配置案の中から、データ再配置案Ｘ２以外の集合Ｚに属する何れのデータ再配置案とも影響範囲が重複しない１または２以上の他のデータ再配置案を検索する。そして、再配置案選択部１３５は、データ再配置案Ｘ２と検索した他のデータ再配置案とを交換した近傍解を生成する。
【０１８１】
（Ｓ７８）再配置案選択部１３５は、ステップＳ７５と同様にして、ステップＳ７７で生成した近傍解の合計評価値を算出する。そして、再配置案選択部１３５は、近傍解の合計評価値が、現在の集合Ｚの合計評価値よりも改善しているか（値が大きいほど良い指標の場合は、前者が後者より大きいか）判断する。合計評価値が改善している場合はステップＳ７９に処理が進み、それ以外の場合はステップＳ８０に処理が進む。
【０１８２】
（Ｓ７９）再配置案選択部１３５は、集合ＺをステップＳ７７で生成した近傍解へと更新する。すなわち、再配置案選択部１３５は、集合Ｚからデータ再配置案Ｘ２を削除し、ステップＳ７７で検索した他のデータ再配置案を集合Ｚに追加する。
【０１８３】
（Ｓ８０）再配置案選択部１３５は、現時点の集合Ｚが示すデータ再配置案の組み合わせを基準として、十分に近傍解を探索したか（探索の停止条件を満たしたか）判断する。探索の停止条件としては、例えば、集合Ｚを更新せずに全ての考え得る近傍解を探索したことや、集合Ｚを更新せずに探索した近傍解の数が所定の上限に達したことなどが考えられる。探索の停止条件を満たした場合、現時点の集合Ｚに属するデータ再配置案が、実行するデータ再配置案に決定される。それ以外の場合、ステップＳ７６に処理が進む。
【０１８４】
次に、第２の実施の形態の情報処理システムの構成の変形例について説明する。上記では、サーバ装置１００が集中的にデータを管理することとした。これに対し、複数のサーバ装置が分散してデータを管理することも可能である。
【０１８５】
図２５は、他の情報処理システムの例を示す図である。
変形例に係る情報処理システムは、クライアント装置２１ａ，２２ａおよびサーバ装置１００ａ，１００ｂ，１００ｃを有する。クライアント装置２１ａ，２２ａおよびサーバ装置１００ａ，１００ｂ，１００ｃは、ネットワーク２０に接続されている。
【０１８６】
サーバ装置１００ａ，１００ｂ，１００ｃは、複数のページのデータを分散して記憶する。例えば、サーバ装置１００ａがページ３１のデータを記憶し、サーバ装置１００ｂがページ３２のデータを記憶し、サーバ装置１００ｃがページ３３のデータを記憶する。
【０１８７】
クライアント装置２１ａ，２２ａは、アクセスしたい単位データを記憶するサーバ装置を知っている場合、当該サーバ装置に対してアクセス要求を送信する。一方、クライアント装置２１ａ，２２ａは、アクセスしたい単位データを記憶するサーバ装置を知らない場合、サーバ装置１００ａ，１００ｂ，１００ｃの全てにアクセス要求を送信するようにしてもよいし、任意の１つのサーバ装置に対してアクセス要求を送信してもよい。前者の場合、アクセス要求で指定された単位データをもつサーバ装置のみ、アクセス要求の送信元に応答すればよい。後者の場合、アクセス要求を受信したサーバ装置は、アクセス要求で指定された単位データをもつサーバ装置にアクセス要求を転送する。サーバ装置１００ａ，１００ｂ，１００ｃは、ページとサーバ装置との対応関係の情報を保持している。
【０１８８】
アクセスの連続性を検出するため、サーバ装置１００ａ，１００ｂ，１００ｃは、受信したアクセス要求が指定する単位データのデータＩＤを相互に通知し合う。または、クライアント装置２１ａ，２２ａが、前回アクセスした単位データのデータＩＤをアクセス要求に付加する。これにより、サーバ装置１００ａ，１００ｂ，１００ｃそれぞれは、自装置に記憶された単位データについての関連性情報を収集できる。サーバ装置１００ａ，１００ｂ，１００ｃそれぞれは、収集した関連性情報を用いて、自装置が管理するページに関する再配置案を生成しデータ再配置を実行すればよい。データ再配置の相手ページが他のサーバ装置に存在する場合、サーバ装置間で単位データが移動される。
【０１８９】
第２の実施の形態の情報処理システムによれば、複数のデータ再配置案それぞれに対して評価値が算出される。複数の影響範囲レベルそれぞれについて、各データ再配置案の影響範囲を仮定して、合計評価値が最良となるデータ再配置案の組み合わせが算出される。そして、合計評価値が干渉レートにより補正されて複数の影響範囲レベルの間で比較され、一の影響範囲レベルが選択され、実行するデータ再配置案の組み合わせが決定する。また、データ再配置後のデータアクセス状況が監視され、干渉レートが更新される。
【０１９０】
これにより、複数のデータ再配置案を並行して評価し、採用した２以上のデータ再配置案を任意の順序で実行することができる。よって、複数のデータ再配置案を逐次評価して実行可否を判断する場合と比べて、生成された全てのデータ再配置案を検討し終えるまでの時間を短縮することができる。また、評価値はデータ再配置案それぞれについて算出すればよく、２以上のデータ再配置案の組み合わせに対して算出しなくてもよい。よって、膨大な数の組み合わせを計算しなくてよく、サーバ装置１００の計算負荷を低減できる。
【０１９１】
また、採用するデータ再配置案を決定するにあたり、想定する影響範囲の大きさが異なる複数の影響範囲レベルが検討される。よって、２以上のデータ再配置案の組み合わせを直接的に評価しなくてもデータ再配置案の間の干渉を考慮されると共に、採用するデータ再配置案の数を適切な数に調整することができる。すなわち、採用するデータ再配置案が少な過ぎてアクセス性能が十分に改善されないリスクや、採用するデータ再配置案が多すぎるために干渉が大きくなり期待する効果が得られなくなるリスクを低減できる。また、データ再配置を行った後は、アクセス性能が監視されて、予想される干渉の程度を示す干渉レートが更新される。よって、次にデータ再配置案を検討するときの精度を向上させることができる。以上により、データ再配置案の組み合わせを効率的に決定できる。
【０１９２】
なお、前述のように、第１の実施の形態の情報処理は、コンピュータにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、クライアント装置２１，２２（または、クライアント装置２１ａ，２２ａ）やサーバ装置１００（または、サーバ装置１００ａ，１００ｂ，１００ｃ）にプログラムを実行させることで実現できる。
【０１９３】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１１３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムをコピーして実行してもよい。
【符号の説明】
【０１９４】
１０  データ配置装置
１１  記憶部
１２  制御部
１３，１４  再配置処理
１３ａ，１４ａ  評価値
１５，１６  影響範囲レベル
１５ａ，１６ａ  係数
【図１】
0006402647.tif 000002
【図２】
0006402647.tif 000003
【図３】
0006402647.tif 000004
【図４】
0006402647.tif 000005
【図５】
0006402647.tif 000006
【図６】
0006402647.tif 000007
【図７】
0006402647.tif 000008
【図８】
0006402647.tif 000009
【図９】
0006402647.tif 000010
【図１０】
0006402647.tif 000011
【図１１】
0006402647.tif 000012
【図１２】
0006402647.tif 000013
【図１３】
0006402647.tif 000014
【図１４】
0006402647.tif 000015
【図１５】
0006402647.tif 000016
【図１６】
0006402647.tif 000017
【図１７】
0006402647.tif 000018
【図１８】
0006402647.tif 000019
【図１９】
0006402647.tif 000020
【図２０】
0006402647.tif 000021
【図２１】
0006402647.tif 000022
【図２２】
0006402647.tif 000023
【図２３】
0006402647.tif 000024
【図２４】
0006402647.tif 000025
【図２５】
0006402647.tif 000026