(57)【要約】【課題】データ配置に関する蓄積情報量および計算量を抑制すること。【解決手段】演算部１ｃは、記憶装置１ｂに記憶されたデータのグループ化に関するグループ化情報を、記憶装置１ｂに記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置１ｂに記憶されたデータに対するアクセスに応じてメモリ１ａに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新する。演算部１ｃは、グループ化情報の更新に応じて、記憶装置１ｂのデータ配置を更新する。演算部１ｃは、グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う。【選択図】図１
2015125597.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
前記グループ化情報の更新では、前記アクセス情報によるデータ間の関連情報に基づき、前記グループ化情報の更新を行う、
処理を実行させることを特徴とするデータ配置制御プログラム。
【請求項２】
前記グループ化情報の更新では、前記メモリに保持されており、属するグループが異なる第１のデータと第２のデータとに関連が検出され、かつ、前記第１のデータが属する第１のグループのサイズと前記第２のデータが属する第２のグループのサイズとの和が閾値を超えない場合に、前記第１および前記第２のグループを、前記第１および前記第２のグループに属するデータを含む第３のグループに更新する、
ことを特徴とする請求項１記載のデータ配置制御プログラム。
【請求項３】
前記和が前記閾値を超える場合に、前記第１または前記第２のグループに属する各データに対するアクセス状況に応じて、前記閾値を増加させる、
ことを特徴とする請求項２記載のデータ配置制御プログラム。
【請求項４】
前記グループ化情報の更新では、第３のデータに対する前記メモリの記憶領域の割当てが解除された際に、前記第３のデータが前記メモリに保持されていた間の前記第３のデータに対するアクセスに応じて、前記第３のデータが属するグループから前記第３のデータを除外する、
ことを特徴とする請求項１乃至３の何れか１項に記載のデータ配置制御プログラム。
【請求項５】
前記第３のデータが、前記メモリに保持されていた間にアクセスされたか否かを判定し、アクセスされていない場合に前記第３のデータが属するグループから前記第３のデータを除外する、
ことを特徴とする請求項４記載のデータ配置制御プログラム。
【請求項６】
前記第３のデータが属するグループにおける他のデータに対するアクセス回数に応じて、前記第３のデータをグループから除外するか否かを決定する、
ことを特徴とする請求項４または５記載のデータ配置制御プログラム。
【請求項７】
コンピュータが、
記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
前記グループ化情報の更新では、前記アクセス情報によるデータ間の関連情報に基づき、前記グループ化情報の更新を行う、
ことを特徴とするデータ配置制御方法。
【請求項８】
データを保持可能なメモリと、
記憶装置に記憶されたデータのグループ化に関するグループ化情報を、前記記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、前記記憶装置に記憶されたデータに対するアクセスに応じて前記メモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、
前記グループ化情報の更新に応じて、前記記憶装置のデータ配置を更新し、
前記グループ化情報の更新では、前記アクセス情報によるデータ間の関連情報に基づき、前記グループ化情報の更新を行う、演算部と、
を有することを特徴とするデータ配置制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ配置制御プログラム、データ配置制御方法およびデータ配置制御装置に関する。
【背景技術】
【０００２】
現在、データを記憶可能な種々の装置が用いられている。データを記憶する装置に求められる要件の１つとして、データに対するアクセスの高速化がある。
例えば、記憶装置に対し、キャッシュと呼ばれる比較的高速にアクセス可能なメモリを設け、未だ要求されていないデータを記憶装置から先読みしてキャッシュに格納する。先読みされたデータに対して要求がされると要求されたデータをキャッシュから読み出して要求元へ送ることで、データ応答の高速化を図る。
【０００３】
例えば、ディスク記憶装置において、ホストからの要求がシーケンシャルリードのとき、要求データをホストへ転送後、ディスク記憶装置上の要求データに続くデータをキャッシュバッファに先読みしておく提案がある。この提案では、リード要求された目的のデータが全てキャッシュバッファに存在した回数（フルヒット回数）と、目的のデータの一部がキャッシュバッファに存在した回数（ハーフヒット回数）とを記録し、比較する。ハーフヒット回数の方が多い場合には、１度の先読みに用いられるキャッシュバッファ内の先読みスペースのサイズが不十分であるとして、先読みスペースのサイズを大きくする。フルヒット回数の方が多い場合には、先読みスペースのサイズが大き過ぎるとして、先読みスペースのサイズを小さくする。
【０００４】
また、キャッシュメモリを複数のキャッシュセグメントに分割し、キャッシュセグメント単位でデータ転送を行うディスク制御装置の提案もある。この提案では、転送データ量の履歴から、キャッシュセグメントの容量を超えるデータ量のデータ転送が所定回数以上要求されている場合、キャッシュメモリの分割数を変更して、キャッシュセグメントの容量を拡張する。
【０００５】
更に、キャッシュメモリから補助記憶装置へデステージングするためにデータをグループ化し、補助記憶装置の読出／書込ヘッドの物理的位置に最も近い未割当のデータ蓄積区域に、グループ化したデータを書き込む提案もある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−２７２６８９号公報
【特許文献２】特開平７−３１９７７１号公報
【特許文献３】特開平６−４４１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
関係性（例えば、連続してアクセスされる可能性が高いなど）をもつデータ同士をグループ化し、記憶装置（例えば、ディスク装置など）上の連続する領域に配置することが考えられる。不連続な領域に配置するよりもデータの先読みを効率的に行えるからである。そこで、関係性に関する情報（例えば、複数のデータに対するアクセス履歴）を利用して、記憶装置上で連続して配置されていないが、関連してアクセスされるデータに対してグループ化を行うことが考えられる。
【０００８】
この場合、関係性に関する情報を多く利用するほどグループ化の精度を向上し得る。しかし、利用する関係性に関する情報の量に応じて計算量が増えることから、記憶装置上でのデータ配置のオーバーヘッドとならないために、ある程度の情報量に抑える必要がある。一方、利用する関係性に関する情報量が少ないと、データ配置のグループ化の精度が低下し、グループ化によるデータアクセスの効率化の度合いが制限される。
【０００９】
１つの側面では、本発明は、データ配置に関する蓄積情報量および計算量を抑制できるデータ配置制御プログラム、データ配置制御方法およびデータ配置制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、データ配置制御プログラムが提供される。このデータ配置制御プログラムは、コンピュータに、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、グループ化情報の更新に応じて、記憶装置のデータ配置を更新し、グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う、処理を実行させる。
【００１１】
また、１つの態様では、データ配置制御方法が提供される。このデータ配置制御方法では、コンピュータが、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新し、グループ化情報の更新に応じて、記憶装置のデータ配置を更新し、グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う。
【００１２】
また、１つの態様では、データ配置制御装置が提供される。このデータ配置制御装置は、メモリと演算部とを有する。メモリはデータを保持可能である。演算部は、記憶装置に記憶されたデータのグループ化に関するグループ化情報を、記憶装置に記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置に記憶されたデータに対するアクセスに応じてメモリに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新する。演算部は、グループ化情報の更新に応じて、記憶装置のデータ配置を更新する。演算部は、グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う。
【発明の効果】
【００１３】
１つの側面では、データ配置に関する蓄積情報量および計算量を抑制できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のデータ配置制御装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態のサーバのハードウェア例を示す図である。
【図４】第２の実施の形態のサーバの機能例を示す図である。
【図５】第２の実施の形態のセグメントの例を示す図である。
【図６】第２の実施の形態の所属テーブルの例を示す図である。
【図７】第２の実施の形態のアクセス管理テーブルの例を示す図である。
【図８】第２の実施の形態のアクセス処理の例を示すフローチャートである。
【図９】第２の実施の形態の統合処理の例を示すフローチャートである。
【図１０】第２の実施の形態のグループ統合の具体例を示す図である。
【図１１】第２の実施の形態の分割処理の例を示すフローチャートである。
【図１２】第２の実施の形態のグループ分割の具体例を示す図である。
【図１３】第２の実施の形態の処理の具体例を示す図である。
【図１４】第２の実施の形態の処理の具体例（続き）を示す図である。
【図１５】セグメントサイズとヒット効率／読出効率との関係の例を示す図である。
【図１６】第３の実施の形態の閾値テーブルの例を示す図である。
【図１７】第３の実施の形態の統合処理の例を示すフローチャートである。
【図１８】第４の実施の形態の検出回数テーブルの例を示す図である。
【図１９】第４の実施の形態の統合処理の例を示すフローチャートである。
【図２０】第５の実施の形態のアクセス回数テーブルの例を示す図である。
【図２１】第５の実施の形態の分割処理の例を示すフローチャートである。
【図２２】第６の実施の形態の統合処理の例を示すフローチャートである。
【図２３】第７の実施の形態の情報処理システムの例を示す図である。
【図２４】第７の実施の形態のセグメント担当テーブルの例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のデータ配置制御装置を示す図である。データ配置制御装置１は、種々のデータを記憶する。データ配置制御装置１は、ネットワークを介して接続された他の装置（図示を省略）からデータに対するアクセス要求を受け付ける。アクセス要求は、データを指定した読み出しの要求である。データ配置制御装置１は、アクセス要求に応じたデータを、要求元の装置に送信する。また、データ配置制御装置１上で動作するソフトウェアがアクセス要求を生成することもある。データ配置制御装置１上で動作するソフトウェアがアクセス要求を生成した場合、データ配置制御装置１は、要求に応じてデータをアクセス要求元のソフトウェアに提供する。
【００１６】
データ配置制御装置１は、メモリ１ａ、記憶装置１ｂおよび演算部１ｃを有する。データ配置制御装置１は、複数のデータに対するアクセスに応じてメモリ１ａに保持された複数のデータをグループ化し、記憶装置１ｂに配置する。メモリ１ａは、ＲＡＭ（Random Access Memory）などの揮発性の記憶装置である。メモリ１ａは、記憶装置１ｂに記憶されたデータを一時的に保持するキャッシュとして用いられる。
【００１７】
記憶装置１ｂは、ＨＤＤ（Hard Disk Drive）などの不揮発性の記憶装置である。記憶装置１ｂは、データ配置制御装置１の外部に設けられていてもよい。例えば、記憶装置１ｂは、データ配置制御装置１とネットワークを介して接続されてもよい。記憶装置１ｂは、他の装置またはデータ配置制御装置１で動作するソフトウェアなどの処理に用いられる複数のデータを記憶する。
【００１８】
演算部１ｃは、例えば、プロセッサを含む。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）でもよいし、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路でもよい。また、複数のプロセッサの集合（マルチプロセッサ）をプロセッサと呼ぶこともできる。プロセッサは、例えば、メモリ１ａに記憶されたプログラムを実行するものでもよい。
【００１９】
演算部１ｃは、記憶装置１ｂに記憶されたデータをグループ化して管理する。具体的には、演算部１ｃは、記憶装置１ｂ上の連続した記憶領域（セグメントと呼ぶ）をグループ毎に設け、グループに属するデータを配置する。演算部１ｃは、グループに属する何れかのデータに対するアクセス要求を受け付けると、セグメントからグループ単位にデータを読み出してメモリ１ａに格納する。例えば、連続してアクセスされ得るデータ同士を同一のセグメントに格納することで、次に読み出すデータのキャッシュヒット率（メモリ１ａから読み出せる確率）を向上し得る。
【００２０】
ここで、記憶装置１ｂに記憶されたデータのグループ化に関するグループ化情報は、メモリ１ａまたは記憶装置１ｂに記憶される。一例として、記憶装置１ｂは、データＸ１，Ｘ２，Ｘ３，Ｙ１，Ｙ２，Ｙ３を記憶している。グループ化情報は、例えばグループに対するデータの次の所属関係を示している。データＸ１，Ｘ２はグループＧ１に属する。データＸ３はグループＧ２に属する。データＹ１，Ｙ２，Ｙ３はグループＧ３に属する。また、データＸ１，Ｘ２はセグメントＳＧ１に配置されている。データＸ３はセグメントＳＧ２に配置されている。データＹ１，Ｙ２，Ｙ３はセグメントＳＧ３に配置されている。
【００２１】
例えば、演算部１ｃはデータＸ１に対するアクセス要求を受け付けると、データＸ１，Ｘ２をセグメントＳＧ１から読み出してメモリ１ａに格納し、データＸ１を要求元に応答する（データＸ２を先読み）。演算部１ｃは、データＸ３に対するアクセスを受け付けると、セグメントＳＧ２からデータＸ３を読み出してメモリ１ａに格納し、データＸ３を要求元に応答する（先読みされたデータなし）。演算部１ｃは、データＹ２に対するアクセスを受け付けると、データＹ１，Ｙ２，Ｙ３をセグメントＳＧ３から読み出してメモリ１ａに格納し、データＹ２を要求元に応答する（データＹ１，Ｙ３を先読み）。演算部１ｃは、メモリ１ａに保持されたメモリ保持データをメモリ保持情報により管理する。メモリ保持情報は、メモリ１ａまたは記憶部１ｂに記憶される。
【００２２】
演算部１ｃは、記憶装置１ｂに記憶されたデータのグループ化に関するグループ化情報を、記憶装置１ｂに記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置１ｂに記憶されたデータに対するアクセスに応じてメモリ１ａに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新する。このとき、演算部１ｃは、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新を行う。
【００２３】
例えば、演算部１ｃは、アクセス情報によりデータＸ１，Ｘ３間の関連情報を取得する。関連情報は、データＸ１，Ｘ３の関連に関する情報である。例えば、演算部１ｃは、関連情報によりデータＸ１，Ｘ３が連続してアクセスされるという関連を検出する。すると、演算部１ｃはグループＧ１，Ｇ２に関するグループ化情報の更新を行う。
【００２４】
具体的には、演算部１ｃはグループＧ１，Ｇ２をグループＧ４に更新する（グループを統合する）ことが考えられる。グループＧ１，Ｇ２に属するデータは互いに関連があり短期間の間にアクセスされる可能性が高いからである。なお、グループのサイズが無制限に大きくならないようグループのサイズ（データ数の和やデータサイズの和など）に閾値を設けることが考えられる。具体的には、統合対象のグループのサイズの和が閾値を超えない場合にグループを統合し、閾値を超える場合にグループを統合しないようにする。
【００２５】
一方、グループを統合した当初は関連があっても、時間の経過により関連が弱まることもある。そこで、演算部１ｃは、グループ内の他のデータとの関連が弱まったと推定されるデータをアクセス情報から検出し、検出したデータをグループから除外してもよい。
【００２６】
例えば、所定の方法（ＬＲＵ（Least Recently Used）など）でグループＧ３に対するメモリ１ａの記憶領域の割当てが解除されるタイミングで、メモリ１ａによる保持中にアクセスされなかったデータをグループＧ３から除外することが考えられる。アクセスがなかったデータは、グループＧ３の他のデータとの関連が弱まったと考えられるからである。例えば、データＹ３にアクセスがなかった場合、演算部１ｃは、グループ化情報において、グループＧ３からデータＹ３を除外する更新を行う。具体的には、データＹ１，Ｙ２が属するグループとデータＹ３が属するグループとを作成する（グループを分割する）。
【００２７】
演算部１ｃは、グループ化情報の更新に応じて、記憶装置１ｂのデータ配置を更新する。例えば、データＸ１，Ｘ２，Ｘ３を１つのグループＧ４に統合したとき、セグメントＳＧ１，ＳＧ２に代えて、データＸ１，Ｘ２，Ｘ３をセグメントＳＧ４に配置する。セグメントＳＧ４は、セグメントＳＧ１，ＳＧ２とは異なる記憶領域でもよい（セグメントＳＧ１，ＳＧ２の領域を再利用可能とする）。
【００２８】
また、演算部１ｃは、データＹ１，Ｙ２を１つのグループ、データＹ３を別のグループとしたとき、セグメントＳＧ３に代えて、データＹ１，Ｙ２をセグメントＳＧ５に配置し、データＹ３をセグメントＳＧ６に配置する。セグメントＳＧ５，ＳＧ６は、セグメントＳＧ３とは異なる記憶領域でもよい（セグメントＳＧ３の領域を再利用可能とする）。
【００２９】
データ配置制御装置１によれば、記憶装置１ｂに記憶されたデータのグループ化に関するグループ化情報が、記憶装置１ｂに記憶されたデータへのアクセスに関するアクセス情報、および、記憶装置１ｂに記憶されたデータに対するアクセスに応じてメモリ１ａに保持されたメモリ保持データに関するメモリ保持情報に基づき、更新される。グループ化情報の更新に応じて、記憶装置１ｂのデータ配置が更新される。グループ化情報の更新では、アクセス情報によるデータ間の関連情報に基づき、グループ化情報の更新が行われる。
【００３０】
これにより、データ配置に関する蓄積情報量および計算量を抑制できる。具体的には、グループ化情報の更新（グループ更新）に用いる情報は、データＸ１，Ｘ２，Ｘ３，Ｙ１，Ｙ２，Ｙ３がメモリ１ａに保持されている間の情報で済む。したがって、データＸ１，Ｘ２，Ｘ３，Ｙ１，Ｙ２，Ｙ３に対する過去のアクセス履歴を全て保持しておかなくてよい。よって、蓄積情報量を抑制できる。また、グループ更新のために処理する情報量を軽減できるので、データ配置に関する計算量を抑制できる。また、上記のようにグループの統合や分割を行うことで、より関連の強いデータ同士を同じグループに所属させることができ、グループ化の精度を高めることができる。
【００３１】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、サーバ１００およびクライアント２００を含む。サーバ１００およびクライアント２００は、ネットワーク１０に接続されている。ネットワーク１０は、ＬＡＮ（Local Area Network）でもよいし、ＷＡＮ（Wide Area Network）やインターネットなどの広域ネットワークでもよい。
【００３２】
サーバ１００は、種々のデータを記憶するサーバコンピュータである。サーバ１００は、クライアント２００からデータに対するアクセス要求を受け付ける。アクセス要求は、データの読み出し要求である。例えば、サーバ１００は、要求されたデータをクライアント２００に応答する。サーバ１００は、サーバ１００上で動作するソフトウェアからデータに対するアクセス要求を受け付けることもある。サーバ１００上で動作するソフトウェアからアクセス要求を受け付けた場合も、サーバ１００は、要求されたデータをアクセス要求元のソフトウェアへ応答することができる。
【００３３】
サーバ１００は、連続してアクセスされる可能性の高いデータを、１つのグループにまとめて管理する。サーバ１００は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求を受けたデータが属するグループ単位に（すなわち、アクセス要求を受けたデータが属するグループに属する全てのデータを）、キャッシュに格納する。これにより、未だアクセス要求を受けていないデータに対するアクセス要求を受け付けたときのキャッシュヒット率の向上を図れる。ここで、サーバ１００は、第１の実施の形態のデータ配置制御装置１の一例である。
【００３４】
クライアント２００は、ユーザによって利用されるクライアントコンピュータである。例えば、クライアント２００は、自身が実行する処理に応じて、所定のデータに対するアクセス要求をサーバ１００に送信する。また、ユーザは、クライアント２００を操作して、データに対するアクセス要求をクライアント２００からサーバ１００へ送信させることもできる。ユーザは、サーバ１００を直接操作して、データに対するアクセス要求をサーバ１００に入力することもできる。
【００３５】
図３は、第２の実施の形態のサーバのハードウェア例を示す図である。サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、通信部１０４、画像信号処理部１０５、入力信号処理部１０６、ディスクドライブ１０７および機器接続部１０８を有する。各ユニットはサーバ１００のバスに接続されている。なお、クライアント２００も、サーバ１００と同様のハードウェアを用いて実現できる。
【００３６】
プロセッサ１０１は、サーバ１００の情報処理を制御する。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組合せであってもよい。
【００３７】
ＲＡＭ１０２は、サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３８】
ＨＤＤ１０３は、サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３９】
通信部１０４は、ネットワーク１０を介して他のコンピュータと通信を行える通信インタフェースである。通信部１０４は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４０】
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４１】
入力信号処理部１０６は、サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４２】
ディスクドライブ１０７は、レーザ光などを利用して、光ディスク１３に記録されたプログラムやデータを読み取る駆動装置である。光ディスク１３として、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを使用できる。ディスクドライブ１０７は、例えば、プロセッサ１０１からの命令に従って、光ディスク１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４３】
機器接続部１０８は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば、機器接続部１０８にはメモリ装置１４やリーダライタ装置１５を接続できる。メモリ装置１４は、機器接続部１０８との通信機能を搭載した記録媒体である。リーダライタ装置１５は、メモリカード１６へのデータの書き込み、またはメモリカード１６からのデータの読み出しを行う装置である。メモリカード１６は、カード型の記録媒体である。機器接続部１０８は、例えば、プロセッサ１０１からの命令に従って、メモリ装置１４またはメモリカード１６から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４４】
図４は、第２の実施の形態のサーバの機能例を示す図である。サーバ１００は、キャッシュ１１０、データ記憶部１２０、管理情報記憶部１３０、アクセス部１４０および制御部１５０を有する。アクセス部１４０および制御部１５０は、プロセッサ１０１によって実行されるプログラムのモジュールであってもよい。
【００４５】
キャッシュ１１０は、ＲＡＭ１０２に確保された記憶領域を用いて実現できる。データ記憶部１２０は、ＨＤＤ１０３に確保された記憶領域を用いて実現できる。管理情報記憶部１３０は、ＲＡＭ１０２またはＨＤＤ１０３に確保された記憶領域を用いて実現できる。ただし、データ記憶部１２０は、サーバ１００とネットワーク１０を介して接続された記憶装置の記憶領域でもよい。データ記憶部１２０はサーバ１００に外付けされた記憶装置の記憶領域でもよい。
【００４６】
キャッシュ１１０は、データ記憶部１２０よりも高速なランダムアクセスが可能である。キャッシュ１１０は、データ記憶部１２０に対するキャッシュとして用いられ、データ記憶部１２０から読み出されたデータを一時的に記憶する。
【００４７】
データ記憶部１２０は、サーバ１００で管理される各種のデータを記憶する。データ記憶部１２０では、１つのグループを連続した記憶領域に格納する。１つのグループに対してシーケンシャルにアクセスできれば、グループ単位の読み出しを高速化できるからである。以下の説明では、データ記憶部１２０における、グループを格納するための１つの連続した記憶領域を「セグメント」と呼ぶことがある。
【００４８】
管理情報記憶部１３０は、アクセス部１４０や制御部１５０の処理に用いられる管理情報を記憶する。具体的には、管理情報記憶部１３０は、各データが何れのグループに所属するかを示す情報や１つのグループに所属させるデータ数の上限を示す閾値（データ数の閾値ということがある）を記憶する。グループのデータ数は、後述するセグメントに格納されるデータ数に相当するので、データ数の閾値をセグメントサイズの閾値ということもできる。また、管理情報記憶部１３０は、キャッシュ１１０に保持されているデータ（メモリ保持データ）を管理するメモリ保持情報を記憶する。更に、管理情報記憶部１３０は、各データに関するアクセス情報を記憶する。アクセス情報は、キャッシュ１１０に保持されているデータのアクセス有無の情報やデータ間の関連を検出するための情報（関連情報）を含む。
【００４９】
アクセス部１４０は、クライアント２００やサーバ１００上のソフトウェア（図示を省略）からデータへのアクセス要求を受け付ける。アクセス部１４０は、アクセス要求されたデータを、要求元（クライアント２００やサーバ１００上のソフトウェア）に応答する。アクセス部１４０は、連続してアクセスされた２つのデータを関連のあるデータとして検出し、制御部１５０に通知する。また、アクセス部１４０は未だアクセス要求されていないデータの先読みを行う。なお、「連続してアクセスされる」とは、同一のアクセス要求元から所定のタイムアウト時間内に２つのデータが連続してアクセスされることを示す。アクセス要求元を区別する単位は、ソフトウェア単位、ソフトウェアのプロセス単位またはクライアントコンピュータ単位など、種々の単位が考えられる。
【００５０】
例えば、アクセス部１４０は、アクセス要求元毎に、直前にアクセス要求のあったデータを、管理情報記憶部１３０に記憶されたアクセス情報に関連情報として記録しておき、連続してアクセスされたデータを検出し得る。なお、クライアント２００が、直前にアクセス要求を行ったデータの識別情報を、今回のアクセス要求に含めてもよい。直前にアクセス要求を行ったデータの識別情報が今回のアクセス要求に含まれる場合、アクセス部１４０は、今回のアクセス要求を参照すれば、クライアント２００により直前にアクセスされたデータを把握し、データ間の関連を検出し得る。すなわち、アクセス部１４０は、クライアント２００などのアクセス要求元からデータ間の関連情報を取得してもよい。
【００５１】
アクセス部１４０は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求されたデータがキャッシュ１１０になければ（キャッシュミス）、アクセス要求されたデータのグループに所属する全データをデータ記憶部１２０から読み出して、キャッシュ１１０に格納する。更に、アクセス部１４０は要求されたデータを要求元に提供する。アクセス部１４０は、あるデータに対するアクセス要求を受け付けたとき、アクセス要求されたデータがキャッシュ１１０にあれば（キャッシュヒット）、アクセス要求されたデータをキャッシュ１１０から読み出して、アクセス要求元に提供する。
【００５２】
また、アクセス部１４０は、キャッシュ１１０に保持されたデータに対するアクセスの有無をデータ毎に管理し、管理情報記憶部１３０に格納する。更に、アクセス部１４０は、データに対するキャッシュ１１０の記憶領域の割当てを、所定の方法（例えば、ＬＲＵ）によりグループ毎に解除する。
【００５３】
制御部１５０は、アクセス部１４０から連続してアクセスされたデータの通知を受け付けると、通知の内容に応じて、管理情報記憶部１３０に記憶された管理情報を更新する。具体的には、制御部１５０は、キャッシュ１１０に格納されたデータのうち、異なるグループに属する２つのデータが連続してアクセスされた旨の通知を、アクセス部１４０から受け付ける。すると、制御部１５０は、両グループに含まれるデータ数の和が、データ数の閾値を超えるか否かを判定する。両グループに含まれるデータ数の和がデータ数の閾値以下の場合、制御部１５０は、両グループに含まれる各データを１つのグループに所属させるようグループ化内容を更新する（グループの統合）。両グループに含まれるデータ数の和がデータ数の閾値よりも大きい場合、グループの統合を行わない。
【００５４】
また、制御部１５０は、何れかのグループに属するデータについて、キャッシュ１１０の記憶領域の割当てが解除されると、解除されたデータのグループ化内容を更新する。具体的には、制御部１５０は、キャッシュ１１０に保持されていた間の、解除されたデータに対するアクセスの有無を判定する。そして、制御部１５０は、キャッシュ１１０に保持されていた間にアクセスのなかったデータを、アクセスのなかったデータが属するグループから除外し、新たに作成したグループに所属させる（グループの分割）。
【００５５】
制御部１５０は、上記のようにグループ化内容を更新すると、データ記憶部１２０に更新結果を反映させる。具体的には、グループの統合を行ったのであれば、統合後のグループに対応するセグメントをデータ記憶部１２０上に作成し、統合前の両グループに属していた各データを、新たなセグメントに格納する（セグメントの統合）。また、グループの分割を行ったのであれば、分割後の各グループに対応するセグメントをデータ記憶部１２０上に作成し、分割前のグループに属していた各データを、分割後の各グループに対応するセグメントに格納する（セグメントの分割）。各データが格納されていた元のセグメントは、再利用可能な領域として管理される。
【００５６】
図５は、第２の実施の形態のセグメントの例を示す図である。データ記憶部１２０はデータＸ，Ｙ，Ａを記憶する。データ記憶部１２０はそれ以外にも複数のデータを記憶している。データＸ，Ｙは、グループＧに属しており、データ記憶部１２０のセグメントＳＧに格納されている。データＡは、グループＧ１１に属しており、データ記憶部１２０のセグメントＳＧ１１に格納されている。
【００５７】
例えば、アクセス部１４０は、データＸに対するアクセス要求をクライアント２００から受け付ける。アクセス要求を受け付けたとき、キャッシュ１１０にデータＸが格納されていなければ、アクセス部１４０は、データ記憶部１２０に存在するセグメントＳＧ上のデータＸ，Ｙを複製して、キャッシュ１１０に格納する。また、アクセス部１４０は、データＸを要求元に応答する。アクセス部１４０は、クライアント２００から今回データＸへのアクセスがあった旨を管理情報記憶部１３０に記録する（関連情報の記録）。
【００５８】
この場合、データＸに対してデータＹが先読みされたことになる。アクセス部１４０は、キャッシュ１１０の連続した記憶領域にデータＸ，Ｙを配置してもよい。キャッシュ１１０上でもデータＸ，Ｙに対してシーケンシャルにアクセスできれば、データＸ，Ｙへの連続したアクセスを高速に行えるからである。
【００５９】
ここで、グループはセグメントと１対１に対応する。例えば、グループＧはセグメントＳＧに対応付けられる（グループＧに属するデータはセグメントＳＧに配置される）。また、グループＧ１１はセグメントＳＧ１１に対応付けられる（グループＧ１１に属するデータはセグメントＳＧ１１に配置される）。
【００６０】
図６は、第２の実施の形態の所属テーブルの例を示す図である。所属テーブル１３１は、データが格納されたセグメントを示す情報である。セグメントはグループと１対１に対応するので、所属テーブル１３１は、グループに対するデータの所属を示す。所属テーブル１３１は、第１の実施の形態のグループ化情報の一例である。所属テーブル１３１は、管理情報記憶部１３０に格納される。所属テーブル１３１は、データおよびセグメントの項目を含む。
【００６１】
データの項目には、データの識別情報が登録される。セグメントの項目には、データが格納されたセグメントの識別情報が登録される。例えば、所属テーブル１３１には、データが“Ａ”、セグメントの識別情報が“ＳＧ１１”という情報が登録される。これは、データＡがセグメントＳＧ１１に格納されていることを示す。また、セグメントＳＧ１１は、グループＧ１１に対応しているので、データＡがグループＧ１１に所属していることを示す。
【００６２】
なお、所属テーブル１３１には、データＢがセグメントＳＧ１２に格納されていること、データＣ，ＤがセグメントＳＧ１３に格納されていること、データＥ，Ｆ，ＧがセグメントＳＧ１４に格納されていることも登録されている。所属テーブル１３１には、他のデータとセグメントとの対応も登録される。
【００６３】
図７は、第２の実施の形態のアクセス管理テーブルの例を示す図である。アクセス管理テーブル１３２は、キャッシュ１１０に保持されたデータにアクセス要求があったか否かを管理するための情報である。アクセス管理テーブル１３２は、管理情報記憶部１３０に格納される。アクセス管理テーブル１３２は、データおよびアクセスフラグの項目を含む。
【００６４】
データの項目には、データの識別情報が登録される。アクセスフラグの項目には、アクセス要求があったことを示す“ｔｒｕｅ”、または、アクセス要求がなかったことを示す“ｆａｌｓｅ”が登録される。例えば、アクセス管理テーブル１３２には、データが“Ａ”、アクセスフラグが“ｔｒｕｅ”という情報が登録される。これは、データＡがキャッシュ１１０に保持されている間に、データＡに対してアクセス要求があったことを示す。
【００６５】
なお、アクセス管理テーブル１３２は、後述するように、グループの分割に用いられる。アクセス管理テーブル１３２には、キャッシュ１１０に保持されているデータの情報が登録されていればよい。したがって、制御部１５０は、あるグループについてグループの分割を行った後は、分割対象となったグループに属する各データのエントリをアクセス管理テーブル１３２から削除する。
【００６６】
図８は、第２の実施の形態のアクセス処理の例を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
（Ｓ１１）アクセス部１４０は、何れかのデータに対するアクセス要求をクライアント２００から受け付ける。
【００６７】
（Ｓ１２）アクセス部１４０は、要求されたデータがキャッシュ１１０に存在するか否かを判定する。存在する場合、アクセス部１４０は、要求されたデータをキャッシュ１１０から取得して、処理をステップＳ１４に進める。存在しない場合、処理をステップＳ１３に進める。なお、アクセス部１４０は、何れのデータがキャッシュ１１０の何れの記憶領域に存在するかを、キャッシュ１１０にデータを格納するたびに、管理情報記憶部１３０のメモリ保持情報に記録する。アクセス部１４０は、メモリ保持情報を参照することでステップＳ１２の判定を行える。
【００６８】
（Ｓ１３）アクセス部１４０は、所属テーブル１３１を参照して、要求されたデータが属するセグメントを特定する。アクセス部１４０は、データ記憶部１２０上の特定したセグメントに含まれる各データを取得する。アクセス部１４０は、取得した各データを複製して、キャッシュ１１０に格納する。アクセス部１４０は、キャッシュ１１０に格納したデータのエントリをアクセス管理テーブル１３２に登録する（アクセスフラグの設定値を“ｆａｌｓｅ”とする）。
【００６９】
（Ｓ１４）アクセス部１４０は、要求されたデータをクライアント２００に応答する。アクセス部１４０は、アクセス管理テーブル１３２を参照して、応答したデータのアクセスフラグに“ｔｒｕｅ”を設定する。ただし、既に“ｔｒｕｅ”が設定されている場合は、何もしなくてよい。
【００７０】
（Ｓ１５）アクセス部１４０は、データ間の関連を検出したか否かを判定する。検出した場合、アクセス部１４０は、関連が検出されたデータを制御部１５０に通知し、処理をステップＳ１６に進める。検出しなかった場合、処理を終了する。具体的には、アクセス部１４０は、所定のタイムアウト時間内に２つのデータが連続してアクセスされた場合、これらのデータについて、「連続してアクセスされた」という関連を検出する。
【００７１】
（Ｓ１６）制御部１５０は、セグメントの統合処理を行う。具体的には、制御部１５０は、データが属するグループの更新および更新後のグループに基づきデータ記憶部１２０上のセグメントの更新を行う。そして、処理を終了する。
【００７２】
図９は、第２の実施の形態の統合処理の例を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。図９に示す処理はステップＳ１６の処理に対応する。
【００７３】
（Ｓ２１）制御部１５０は、今回アクセスされたデータに対して関連が検出されたデータ（関連データという）がキャッシュ１１０に保持されているか否かを判定する。保持されている場合、処理をステップＳ２２に進める。保持されていない場合、処理を終了する。関連データは、今回アクセスされたデータよりも過去にアクセスされたデータである。例えば、関連データに対するアクセス要求と今回のアクセス要求との間に、サーバ１００が多数のアクセス要求を受け付けた場合、関連データに対するキャッシュ１１０の記憶領域の割当てが解除され得る。したがって、本ステップＳ２１の判定を行い、関連データに対するキャッシュ領域の割当てが解除されていないことを確認する。
【００７４】
（Ｓ２２）制御部１５０は、今回アクセスされたデータと関連データとが同じグループに属するか判定する。同じグループに属する場合、処理を終了する。同じグループに属さない場合、処理をステップＳ２３に進める。
【００７５】
（Ｓ２３）制御部１５０は、所属テーブル１３１に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップＳ２４に進める。閾値よりも大きい場合、処理を終了する。
【００７６】
（Ｓ２４）制御部１５０は、所属テーブル１３１を更新する。具体的には、制御部１５０は、今回アクセスされたデータのグループ（セグメント）に属する全てのデータと、関連データのグループ（セグメント）に属する全てのデータとを新たなグループに所属させる（グループの統合）。ステップＳ２４では、制御部１５０は、所属テーブル１３１の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
【００７７】
（Ｓ２５）制御部１５０は、ステップＳ２４の更新結果をセグメントに反映させる。例えば、セグメントＳＧ１１，ＳＧ１２を１つのセグメントにまとめる場合、データＡ，Ｂが属する新たなセグメントをデータ記憶部１２０に作成する（セグメントの統合）。制御部１５０は、新たなセグメントを作成すると、作成したセグメントに識別情報を付与する。また、制御部１５０は、元のセグメントＳＧ１１，ＳＧ１２の領域を解放し、上書き可能として管理する。
【００７８】
なお、制御部１５０は、ステップＳ２４における所属テーブル１３１の更新を複数回行った後にステップＳ２５の処理を実行してもよい。あるいは、ステップＳ２５の処理を所定の時間間隔で定期的に実行することも考えられる。また、ステップＳ２５では、新たに作成したセグメントに対して、統合前のセグメントＳＧ１１，ＳＧ１２の何れかの識別情報を付与してもよい。
【００７９】
図１０は、第２の実施の形態のグループ統合の具体例を示す図である。以下、図１０に示す処理をステップ番号に沿って説明する。ここで、データ数の閾値を“３”とする。更に、以下のステップＳＴ１０１の直前において、データＡはキャッシュ１１０に格納されている。また、それ以外のデータはキャッシュ１１０に格納されていないものとする。ただし、ステップＳＴ１０１の直前で、以下に示すデータＢ，Ｑ，Ｐ，Ｑがキャッシュ１１０に格納されていた場合も同様の手順となる。
【００８０】
（ＳＴ１０１）サーバ１００は、データＢに対するアクセス要求をクライアント２００から受け付ける。すると、サーバ１００は、キャッシュ１１０にデータＢを格納する。また、サーバ１００は、クライアント２００にデータＢを応答する。データＡ，Ｂは、この時点で異なるグループに属している。データＢに対するアクセス要求は、データＡに対するアクセス要求の時点から所定のタイムアウト時間内に発生したものである。よって、サーバ１００は、データＡ，Ｂが関連していることを検出する。
【００８１】
（ＳＴ１０２）サーバ１００は、データＡ，Ｂが属する両グループのデータ数の和“１＋１＝２”がデータ数の閾値“３”以下なので、両グループを統合する。すなわち、データＡ，Ｂそれぞれが属する２つのグループを、データＡ，Ｂが属する１つのグループに更新する。
【００８２】
（ＳＴ１０３）サーバ１００は、データＯに対するアクセス要求をクライアント２００から受け付ける。すると、サーバ１００は、キャッシュ１１０にデータＯを格納する。また、サーバ１００は、クライアント２００にデータＯを応答する。データＡ，Ｂが属するグループとデータＯが属するグループとは異なっている。ただし、データＯへのアクセス要求は、データＢに対するアクセス要求よりも所定のタイムアウト時間が経過した後に発生したものである。よって、サーバ１００は、データＢとデータＯとの関連を検出せずに、別個のグループのままとする。
【００８３】
（ＳＴ１０４）サーバ１００は、データＰに対するアクセス要求をクライアント２００から受け付ける。ここで、データＰ，Ｑはこの時点で同じグループに属しており、同じセグメントに格納されている。すると、サーバ１００は、キャッシュ１１０にデータＰ，Ｑを格納する。データＱが先読みされたことになる。また、データＰに対するアクセス要求は、データＯに対するアクセス要求の時点から所定のタイムアウト時間内に発生したものである。よって、サーバ１００は、データＯ，Ｐが関連していることを検出する。
【００８４】
（ＳＴ１０５）サーバ１００は、データＯが属するグループのデータ数とデータＰ，Ｑが属するグループのデータ数との和“１＋２＝３”がデータ数の閾値“３”以下なので、両グループを統合する。すなわち、データＯが属するグループとデータＰ，Ｑが属するグループとを、データＯ，Ｐ，Ｑが属する１つのグループに更新する。これにより、関連するデータ同士が同一のグループにまとめられる。
【００８５】
図１１は、第２の実施の形態の分割処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
（Ｓ３１）制御部１５０は、何れかのグループに対してキャッシュ１１０の記憶領域（キャッシュ領域）の割当てが解除されたか否かを判定する。何れかのグループに対してキャッシュ領域の割当てが解除された場合、処理をステップＳ３２に進める。何れのグループに対してもキャッシュ領域の割当てが解除されていない場合、処理を終了する。
【００８６】
（Ｓ３２）制御部１５０は、アクセス管理テーブル１３２を参照し、キャッシュ領域の割当てが解除されたグループに属する全データのアクセスフラグを取得する。
（Ｓ３３）制御部１５０は、アクセスフラグが“ｆａｌｓｅ”のデータがあるか否かを判定する。アクセスフラグ“ｆａｌｓｅ”のデータがある場合、処理をステップＳ３４に進める。アクセスフラグ“ｆａｌｓｅ”のデータがない場合、処理を終了する。
【００８７】
（Ｓ３４）制御部１５０は、所属テーブル１３１を更新する。具体的には、制御部１５０は、アクセスフラグ“ｔｒｕｅ”（キャッシュ１１０に格納されていた期間にアクセスあり）のデータと、アクセスフラグ“ｆａｌｓｅ”（同期間にアクセスなし）のデータとを別個のグループ（セグメント）とする（グループの分割）。ステップＳ３４では、制御部１５０は、所属テーブル１３１の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
【００８８】
（Ｓ３５）制御部１５０は、所属テーブル１３１の更新結果をセグメントに反映させる。例えば、データＥ，Ｆ，Ｇを含むセグメントＳＧ１４を、データＥ，Ｆを格納するセグメントと、データＧを格納するセグメントとに分ける場合、これらの新たなセグメントをデータ記憶部１２０に作成する（セグメントの分割）。制御部１５０は、新たにセグメントを作成した場合、新たなセグメントに識別情報を付与する。また、制御部１５０は、元のセグメントＳＧ１４の領域を解放し、上書き可能として管理する。更に、制御部１５０は、データＥ，Ｆ，Ｇのエントリをアクセス管理テーブル１３２から削除する。
【００８９】
なお、制御部１５０は、ステップＳ３４における所属テーブル１３１の更新を複数回行った後にステップＳ３５の処理を実行してもよい。あるいは、ステップＳ３５の処理を所定の時間間隔で定期的に実行することも考えられる。
【００９０】
また、ステップＳ３５におけるセグメントの分割は、例えば、セグメントＳＧ１４からデータＧを除外する処理であるといえる。分割後、データＥ，Ｆが属するセグメントの識別情報を“ＳＧ１４”とし、データＧが属するセグメントの識別情報を新たに付与してもよい。
【００９１】
図１２は、第２の実施の形態のグループ分割の具体例を示す図である。以下、図１２に示す処理をステップ番号に沿って説明する。ここで、ステップＳＴ１１１の直前において、データＯ，Ｐ，Ｑはキャッシュ１１０に格納されており、同じグループに属している。
【００９２】
（ＳＴ１１１）サーバ１００は、データＯ，Ｐ，Ｑがキャッシュ１１０に格納されている間に、データＯ，Ｐに対するアクセスを受け付けている（データＯ，Ｐにはアクセスフラグ“ｔｒｕｅ”が設定されている）。一方、サーバ１００は、データＯ，Ｐ，Ｑがキャッシュ１１０に格納されている間に、データＱに対するアクセスを受け付けていない（データＱにはアクセスフラグ“ｆａｌｓｅ”が設定されている）。サーバ１００は、データＯ，Ｐ，Ｑのグループに対するキャッシュ領域の割当てを解除する。
【００９３】
（ＳＴ１１２）サーバ１００は、アクセス管理テーブル１３２を参照して、データＯ，Ｐ，Ｑのうち、アクセスフラグが“ｔｒｕｅ”であるデータＯ，Ｐを１つのグループとし、アクセスフラグが“ｆａｌｓｅ”であるデータＱを１つのグループとする。
【００９４】
このように、サーバ１００は他のデータとともに先読みされたものの、キャッシュ１１０に格納されている間にアクセスされなかったデータについては、グループから除外する。次に、セグメントの統合および分割の一連の流れを説明する。
【００９５】
図１３は、第２の実施の形態の処理の具体例を示す図である。以下、図１３に示す処理をステップ番号に沿って説明する。以下に示すステップＳＴ１２１の直前において、データＡ，Ｂが、データ記憶部１２０の１つのセグメントに格納されている。また、データＯがデータＡ，Ｂとは別個のセグメントに格納されている。データＰがデータＡ，Ｂ，Ｏとは別個のセグメントに格納されている。ステップＳＴ１２１の直前において、キャッシュ１１０には何れのデータも格納されていないものとする。更に、ここでは一例として、データ数の閾値を“２”、キャッシュ１１０に格納できるデータ数を“３”とする。
【００９６】
（ＳＴ１２１）サーバ１００は、データＡに対するアクセス要求をクライアント２００から受信する。サーバ１００は、データ記憶部１２０からデータＡ，Ｂを読み出してキャッシュ１１０に格納する。サーバ１００は、クライアント２００にデータＡを送信する。
【００９７】
（ＳＴ１２２）サーバ１００は、データＢに対するアクセス要求をクライアント２００から受信する。サーバ１００は、キャッシュ１１０からデータＢを読み出してクライアント２００に送信する。データＡ，Ｂは同じグループに既に属しているので、データＡ，Ｂの関連を検出しても、サーバ１００はグループの統合を行わない。
【００９８】
（ＳＴ１２３）サーバ１００は、データＯに対するアクセス要求をクライアント２００から受信する。サーバ１００は、データ記憶部１２０からデータＯを読み出してキャッシュ１１０に格納する。サーバ１００は、クライアント２００にデータＯを送信する。ここで、サーバ１００は、データＢ，Ｏの関連を検出する。しかし、データＡ，Ｂが属するグループのデータ数とデータＯが属するグループのデータ数との和“２＋１＝３”がグループ当たりのデータ数の閾値“２”を超過するため、サーバ１００はグループの統合を行わない。
【００９９】
図１４は、第２の実施の形態の処理の具体例（続き）を示す図である。以下、図１４に示す処理をステップ番号に沿って説明する。
（ＳＴ１２４）サーバ１００は、データＰに対するアクセス要求をクライアント２００から受信する。サーバ１００は、データ記憶部１２０からデータＰを読み出してキャッシュ１１０に格納する。サーバ１００は、クライアント２００にデータＰを送信する。データＡ，Ｂ，Ｏ，Ｐがキャッシュ１１０に格納されると、キャッシュ１１０に格納できるデータ数の上限“３”を超過する。したがって、サーバ１００は、データＡ，Ｂに対するキャッシュ領域の割当てを解除する。データＡ，Ｂは、ステップＳＴ１２１，ＳＴ１２２でアクセスされている。よって、サーバ１００は、データＡ，Ｂのグループの分割を行わない。また、サーバ１００は、データＯ，Ｐが連続してアクセスされたことを検出し、データＯ，Ｐのグループを統合する。サーバ１００は、データ記憶部１２０のセグメントにもグループの統合を反映させる。
【０１００】
（ＳＴ１２５）サーバ１００は、データＡに対するアクセス要求をクライアント２００から受信する。サーバ１００は、データ記憶部１２０からデータＡ，Ｂを読み出してキャッシュ１１０に格納する。サーバ１００は、クライアント２００にデータＡを送信する。ステップＳＴ１２４と同様の理由（キャッシュ１１０に格納できるデータ数上限の超過）により、サーバ１００は、データＯ，Ｐに対するキャッシュ領域の割当てを解除する。データＯ，Ｐは、ステップＳＴ１２３，ＳＴ１２４でアクセスされている。したがって、サーバ１００は、データＯ，Ｐのグループの分割を行わない。
【０１０１】
（ＳＴ１２６）サーバ１００は、データＯに対するアクセス要求をクライアント２００から受信する。サーバ１００は、データ記憶部１２０からデータＯ，Ｐを読み出してキャッシュ１１０に格納する。サーバ１００は、クライアント２００にデータＯを送信する。ステップＳＴ１２４と同様の理由（キャッシュ１１０に格納できるデータ数上限の超過）により、サーバ１００は、データＡ，Ｂに対するキャッシュ領域の割当てを解除する。データＡは、ステップＳＴ１２５でアクセスされている。一方、データＢはステップＳＴ１２５でキャッシュ１１０に先読みされたものの、先読み後に、アクセスされていない。したがって、サーバ１００は、データＡ，Ｂを異なるグループに所属させるようグループの分割を行う。サーバ１００は、データ記憶部１２０のセグメントにもグループの分割を反映させる。
【０１０２】
このように、サーバ１００は、関連の検出されたデータ同士を同じグループとし、セグメントに対するデータ配置を更新する。また、他のデータとともに先読みしたものの、キャッシュ１１０に格納されている間にアクセスされなかったデータをグループから除外し、セグメントに対するデータ配置を更新する。サーバ１００は、上記のようにして、セグメントの統合と分割とを繰り返し実行する。なお、上記の説明では、セグメントサイズに対してデータ数の閾値を設けるものとしたが、データ数の閾値に代えて、データサイズ（例えば、ビット数やバイト数で表される量）の閾値を用いてもよい。
【０１０３】
図１５は、セグメントサイズとヒット効率／読出効率との関係の例を示す図である。横方向の座標軸はセグメントサイズを示す。縦方向の座標軸はヒット効率および読出効率を示す。セグメントサイズは、１セグメントに格納されるデータ数である。ヒット効率は、アクセス要求のあったデータがキャッシュ１１０に格納されている可能性（キャッシュヒット率）である。ヒット効率が高い程、データに対して高速にアクセスできることになる。読出効率は、データ記憶部１２０からセグメント単位にデータを読み出してキャッシュ１１０に格納する際の読出効率である。データ読出の際のデータ記憶部１２０へのアクセス頻度が小さいほど、読出効率は高くなり、データに対して高速にアクセスできることになる。
【０１０４】
ただし、キャッシュ１１０の記憶容量は限られており、ヒット効率と読出効率とはトレードオフの関係にある。例えば、連続してアクセスされる可能性のより高いデータ同士を、より小さなサイズのセグメントに格納しておくことで、セグメント単位にデータを読み出してキャッシュ１１０に格納したときのヒット効率を向上し得る（ヒット効率の系列Ｄ１）。しかし、セグメントサイズが小さいと、データ記憶部１２０に対するアクセス頻度が向上し、読出効率は低下する傾向となる（読出効率の系列Ｄ２）。
【０１０５】
一方、より大きなサイズのセグメントを設けることで、一度に多くのデータを先読みできるため、読出効率を向上し得る。しかし、セグメントサイズが大きいと、関連性の低いデータ同士が同一のセグメントに配置される可能性が高まり、ヒット効率が低下する傾向にある。
【０１０６】
図１５の関係において、系列Ｄ１，Ｄ２が交差する点に対応するセグメントサイズＺａがヒット効率および読出効率のバランスがとれた最適なセグメントサイズと考えられる。しかし、最適なセグメントサイズは、データに対するアクセスの特性に応じて変化し得る。例えば、ある処理を実行するために比較的少数のデータが頻繁にアクセスされるのであれば、データに対するキャッシュ領域の割当て／割当て解除が行われる頻度が低下するので、読出効率の系列Ｄ２は、図１５の場合よりも上側にシフトすると考えられる。あるいは、ある処理を実行するために比較的多くのデータにアクセスするのであれば、データに対するキャッシュ領域の割当て／割当て解除が行われる頻度も上がり、読出効率の系列Ｄ２は、図１５の場合よりも下側にシフトすると考えられる。
【０１０７】
ここで、例えば、セグメントサイズをあるサイズ（例えば、セグメントサイズＺｂ）に固定することも考えられる。しかし、セグメントサイズが固定されると、上記のようにデータに対するアクセスの特性に応じた最適なセグメントサイズに近づくことが困難になる。そこで、サーバ１００は、セグメントサイズの閾値に達するまで、セグメント毎のセグメントサイズを大きくする。また、他のデータとともに先読みされたものの、キャッシュ１１０に格納された間にアクセスされなかったデータについては、セグメントから除外してセグメントサイズを小さくする。これにより、現在のアクセス状況に応じて各セグメントのセグメントサイズを調整できる。
【０１０８】
更に、グループに属するデータ数（すなわち、セグメントサイズ）に閾値を設けることで、セグメントサイズが無制限に大きくなることを抑えられ、ヒット効率が著しく低下することを抑えられる。
【０１０９】
また、例えば、データ間の関係性を管理するために、各データに対する過去のアクセス履歴を全て保持しておくことも考えられる。グループ化に利用するアクセス履歴の情報量が多い程、統計的に高信頼のグループ化を行えるからである。ところが、全てのアクセス履歴を保存していると、時間経過と共にアクセス履歴の情報量が増大し、メモリの使用量が増大するおそれがある。また、アクセス履歴の情報量が増大するに伴い、データ間の関係性を解析する処理コストが増える。一方、メモリの使用量を節約するために、ある期間のみのアクセス履歴を保存することも考えられる。しかし、この場合、他の期間のアクセス履歴の情報が失われるので、グループ化の精度が低下し得る。
【０１１０】
これに対し、サーバ１００は、セグメントの更新のために、キャッシュ１１０に格納されているデータについて、アクセス状況を管理していればよい。したがって、サーバ１００は、全てのデータについてアクセス履歴を保持しておかなくてよく、蓄積する情報量を抑制できる。また、データ間の関係性が検出されたタイミングで、データ間の関係を更新していくので、全てのアクセス履歴を解析する場合のように一度に大量の情報を処理せずに済む。したがって、データ記憶部１２０におけるデータ配置の変更に伴うサーバ１００の計算量を抑制できる。
【０１１１】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【０１１２】
第２の実施の形態では、セグメントに対するデータ数（または、データサイズ）の閾値として所定の値を与えるものとした。これに対し、第３の実施の形態では、閾値をグループ毎に可変にする機能を提供する。セグメントサイズの調整をより柔軟化できるからである。
【０１１３】
ここで、第３の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第３の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第２の実施の形態の装置や機能と同様である。そこで、第３の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。但し、サーバ１００は、閾値テーブルを更に記憶する。
【０１１４】
図１６は、第３の実施の形態の閾値テーブルの例を示す図である。閾値テーブル１３３は、管理情報記憶部１３０に格納される。閾値テーブル１３３は、セグメントおよび閾値の項目を含む。
【０１１５】
セグメントの項目には、セグメントの識別情報が登録される。閾値の項目には、セグメントのデータ数の閾値が登録される。
例えば、閾値テーブル１３３には、セグメントが“ＳＧ１１”、閾値が“３”という情報が登録される。これは、セグメントＳＧ１１に格納できるデータ数の上限が“３”であることを示す。
【０１１６】
次に、第３の実施の形態のサーバ１００の処理手順を説明する。ここで、第３の実施の形態のアクセス処理の手順は、図８で説明した手順と同様である。
図１７は、第３の実施の形態の統合処理の例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。ここで、図１７の処理は図９の処理の代わりに実行される。図１７の処理では、図９のステップＳ２３に代えて、ステップＳ２３ａ，Ｓ２３ｂ，Ｓ２３ｃ，Ｓ２３ｄを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
【０１１７】
（Ｓ２３ａ）制御部１５０は、所属テーブル１３１および閾値テーブル１３３に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップＳ２４に進める。閾値よりも大きい場合、処理をステップＳ２３ｂに進める。ここで、参照するデータ数の閾値は、閾値テーブル１３３における、今回アクセスされたデータが属するグループに対応する閾値である。
【０１１８】
（Ｓ２３ｂ）制御部１５０は、アクセス管理テーブル１３２を参照し、今回アクセスされたデータのグループに属する各データのアクセスフラグを取得する。
（Ｓ２３ｃ）制御部１５０は、アクセスフラグが“ｆａｌｓｅ”のデータが存在するか否かを判定する。存在する場合、処理を終了する。存在しない場合、処理をステップＳ２３ｄに進める。
【０１１９】
（Ｓ２３ｄ）制御部１５０は、閾値テーブル１３３を参照して、今回アクセスされたグループの閾値を増加させる。具体的には、関連データが属するグループにおけるデータ数を、今回アクセスされたグループの閾値に加算する。そして、処理をステップＳ２４に進める。なお、制御部１５０は、ステップＳ２４の処理により新たなセグメントの識別情報を作成する場合には、作成したセグメントの識別情報と、ステップＳ２３ｄで新たに決めた閾値との対応を閾値テーブル１３３に登録する。
【０１２０】
このように、グループの統合によりデータ数の閾値を超えてしまう場合にも、データ数の閾値を増やすことで、関連があると考えられるデータ同士を同一のグループに所属させることができる。例えば、図１５の例において、セグメントサイズの閾値が、セグメントサイズＺａよりも小さいと、セグメントサイズＺａに近づくのが困難になる。そこで、上記のように閾値を更新可能にすることで、セグメントサイズＺａを実現可能とする。
【０１２１】
また、ステップＳ２３ｃで示したように、今回アクセスされたデータのグループに含まれる全てのデータに対するアクセスフラグが“ｔｒｕｅ”であることを条件とする。これにより、相互に関連性が強いと推定されるデータのみを含むグループに対して閾値を増大させるよう制御できる。他のデータとの関連性が弱いと考えられるデータを含むグループに対しても無制限に閾値の増大を行っていると、ヒット効率の低下を招くおそれがあるからである。
【０１２２】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【０１２３】
第２の実施の形態では、データ間の関連を検出する度にグループの統合を行うか否かを判断するものとした。これに対し、第４の実施の形態では、各データについて複数回の関連が検出されたタイミングで統合を行うことで、グループ化の精度向上を図る。
【０１２４】
ここで、第４の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第４の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第４の実施の形態の装置や機能と同様である。そこで、第４の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。ただし、サーバ１００は、更に、検出回数テーブルを記憶する。
【０１２５】
図１８は、第４の実施の形態の検出回数テーブルの例を示す図である。検出回数テーブル１３４は、管理情報記憶部１３０に格納される。検出回数テーブル１３４は、データおよび検出回数の項目を含む。データの項目には、データ名が登録される。検出回数の項目には、関連データに対して関連が検出された回数が登録される。
【０１２６】
例えば、検出回数テーブル１３４には、データ“Ａ”、検出回数“Ｂ：１、Ｆ：２”という情報が登録される。これは、データＡがデータＢに対して関連があると検出された（データＢ，Ａの順に連続してアクセスされた）回数が１回であることを示す。また、データＡがデータＦに対して関連があると検出された（データＦ，Ａの順に連続してアクセスされた）回数が２回であることを示す。
【０１２７】
検出回数テーブル１３４は、関連の検出された回数を記録した情報であり、関連情報の一例であるといえる。次に、第４の実施の形態のサーバ１００の処理手順を説明する。ここで、第４の実施の形態のアクセス処理の手順は、図８で説明した手順と同様である。
【０１２８】
図１９は、第４の実施の形態の統合処理の例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。ここで、図１９の処理は図９の処理の代わりに実行される。図１９の処理では、図９のステップＳ２３に代えて、ステップＳ２３ｅ，Ｓ２３ｆ，Ｓ２３ｇ，Ｓ２３ｈを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
【０１２９】
（Ｓ２３ｅ）制御部１５０は、所属テーブル１３１に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップＳ２３ｆに進める。閾値よりも大きい場合、処理を終了する。
【０１３０】
（Ｓ２３ｆ）制御部１５０は、検出回数テーブル１３４を参照し、今回アクセスされたデータに対する関連データの検出回数を取得する。
（Ｓ２３ｇ）制御部１５０は、検出回数が所定回数以上であるか否かを判定する。所定回数以上である場合、今回アクセスされたデータに対し、検出回数が所定回数以上であった関連データの検出回数のエントリを削除して、処理をステップＳ２４に進める。所定回数よりも小さい場合、処理をステップＳ２３ｈに進める。判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、３回、５回、１０回などの値を、管理情報記憶部１３０に予め設定できる。
【０１３１】
（Ｓ２３ｈ）制御部１５０は、検出回数テーブル１３４を参照して、今回アクセスされたデータに対して検出された関連データの検出回数に“１”を加算する。制御部１５０は、検出回数テーブル１３４に、今回アクセスされたデータに対し、検出された関連データのエントリがない場合は、検出された関連データのエントリを追加する（検出回数の初期値“１”を設定する）。そして、処理を終了する。
【０１３２】
このように、所定の回数以上の関連ありと検出されたデータの属するグループ同士を統合することで、より関係性が強いと推定されるデータ同士を同一のグループに所属させることができる。これにより、グループ化の精度を向上させることができる。
【０１３３】
［第５の実施の形態］
次に、第５の実施の形態を説明する。前述の第２の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【０１３４】
第２の実施の形態では、グループの分割を行うか否かの判断を、グループに属する各データに対するアクセスの有無に基づいて行うものとした。これに対し、第５の実施の形態では、各データに対するアクセス数に応じてグループの分割を行うことで、グループ化の精度向上を図る。
【０１３５】
ここで、第５の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第５の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第５の実施の形態の装置や機能と同様である。そこで、第５の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。ただし、サーバ１００は、更に、アクセス回数テーブルを記憶する。
【０１３６】
図２０は、第５の実施の形態のアクセス回数テーブルの例を示す図である。アクセス回数テーブル１３５は、各データに対してアクセス要求を受け付けた回数を登録した情報である。アクセス回数テーブル１３５は、アクセス管理テーブル１３２の代わりに用いられる。アクセス回数テーブル１３５は、管理情報記憶部１３０に格納される。アクセス回数テーブル１３５は、データおよびアクセス回数の項目を含む。
【０１３７】
データの項目には、データの識別情報が登録される。アクセス回数の項目には、アクセスされた回数が登録される。アクセス回数テーブル１３５には、データ記憶部１２０に格納されたデータのエントリが予め用意される。例えば、アクセス回数テーブル１３５には、データが“Ａ”、アクセス回数が“３”という情報が登録される。これは、データＡに対するアクセス要求の回数が、前回のアクセス回数のリセット時から現在までに３回あったことを示す。
【０１３８】
次に、第５の実施の形態のサーバ１００の処理手順を説明する。ここで、第５の実施の形態のアクセス処理の手順は、図８で説明した手順と同様である。ただし、ステップＳ１３において、アクセス部１４０は、アクセス管理テーブル１３２に対する処理を行わなくてよい。また、ステップＳ１４において、アクセス部１４０は、アクセスフラグの設定を行う代わりに、アクセス回数テーブル１３５を参照して、応答したデータのアクセス回数に“１”を加算する。
【０１３９】
図２１は、第５の実施の形態の分割処理の例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。ここで、図２１の処理は図１１の処理の代わりに実行される。図２１の処理では、図１１のステップＳ３２，Ｓ３３，Ｓ３４に代えて、ステップＳ３２ａ，Ｓ３３ａ，Ｓ３４ａを実行する点が異なる。そこで、これらのステップを主に説明し、他のステップの説明を省略する。
【０１４０】
（Ｓ３２ａ）制御部１５０は、アクセス回数テーブル１３５を参照し、キャッシュ領域の割当てが解除されたグループに属する各データのアクセス回数を取得する。
（Ｓ３３ａ）制御部１５０は、アクセス回数が所定回数以上のデータがあるか否かを判定する。アクセス回数が所定回数以上のデータがある場合、処理をステップＳ３４ａに進める。アクセス回数が所定回数以上のデータがない場合、処理を終了する。判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、３回、５回、１０回などの値を管理情報記憶部１３０に予め設定できる。
【０１４１】
（Ｓ３４ａ）制御部１５０は、所属テーブル１３１を更新する。具体的には、制御部１５０は、アクセス回数“０”以外（キャッシュ１１０に格納されていた複数の期間に亘りアクセスあり）のデータと、アクセス回数“０”（同期間にアクセスなし）のデータとを別個のグループ（セグメント）とする（グループの分割）。制御部１５０は、グループ分割の対象となったデータについて、アクセス回数テーブル１３５のアクセス回数を“０”にリセットする。
【０１４２】
このように、アクセス回数が所定回数以上のデータがあるか否かに基づいて、グループを分割するかの判断を行う。例えば、所定回数以上アクセスされたデータがあるにも関わらず、同一のグループにアクセス回数が“０”のデータが存在する場合、両データの関連性は特に弱まっていると考えられるからである。グループから除外対象とするデータを絞り込むことで、より関係性が強いと推定されるデータ同士を同一のグループに所属させることができる。これにより、グループ化の精度を向上させることができる。
【０１４３】
［第６の実施の形態］
次に、第６の実施の形態を説明する。前述の第２〜第４の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。第２〜第４の実施の形態で示した機能を組み合わせて、グループの統合を行ってもよい。そこで、第６の実施の形態では、第２〜第４の実施の形態の機能を組み合わせる場合を例示する。
【０１４４】
ここで、第６の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第６の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第２の実施の形態の装置や機能と同様である。そこで、第６の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。ただし、サーバ１００は、図１６で説明した閾値テーブル１３３と、図１８で説明した検出回数テーブル１３４とを記憶する。第６の実施の形態のアクセス処理の手順は、図８の手順と同様である。
【０１４５】
図２２は、第６の実施の形態の統合処理の例を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。ここで、図２２の処理は図９の処理の代わりに実行される。
【０１４６】
（Ｓ４１）制御部１５０は、関連データがキャッシュ１１０に保持されているか否かを判定する。保持されている場合、処理をステップＳ４２に進める。保持されていない場合、処理を終了する。
【０１４７】
（Ｓ４２）制御部１５０は、今回アクセスされたデータと関連データとが同じグループに属するか判定する。同じグループに属する場合、処理を終了する。同じグループに属さない場合、処理をステップＳ４３に進める。
【０１４８】
（Ｓ４３）制御部１５０は、所属テーブル１３１に基づいて、今回アクセスされたデータが属するグループのデータ数と、関連データが属するグループのデータ数との和が、データ数の閾値以下であるか否かを判定する。閾値以下である場合、処理をステップＳ４４に進める。閾値よりも大きい場合、処理をステップＳ４７に進める。
【０１４９】
（Ｓ４４）制御部１５０は、検出回数テーブル１３４を参照し、今回アクセスされたデータに対する関連データの検出回数を取得する。
（Ｓ４５）制御部１５０は、検出回数が所定回数以上であるか否かを判定する。所定回数以上である場合、処理をステップＳ５０に進める。所定回数よりも小さい場合、処理をステップＳ４６に進める。ステップＳ４５の判定に用いる回数は、運用環境に応じて任意に設定可能である。例えば、３回、５回、１０回などの値を管理情報記憶部１３０に予め設定できる。
【０１５０】
（Ｓ４６）制御部１５０は、検出回数テーブル１３４を参照して、今回アクセスされたデータに対して検出された関連データの検出回数に“１”を加算する。制御部１５０は、検出回数テーブル１３４に、今回アクセスされたデータに、検出された関連データのエントリがない場合は、検出された関連データのエントリを追加する（検出回数の初期値“１”を設定する）。そして、処理を終了する。
【０１５１】
（Ｓ４７）制御部１５０は、アクセス管理テーブル１３２を参照し、今回アクセスされたデータのグループに属する各データのアクセスフラグを取得する。
（Ｓ４８）制御部１５０は、アクセスフラグが“ｆａｌｓｅ”のデータが存在するか否かを判定する。存在する場合、処理を終了する。存在しない場合、処理をステップＳ４９に進める。
【０１５２】
（Ｓ４９）制御部１５０は、閾値テーブル１３３を参照して、グループの閾値を増やす。具体的には、関連データが属するグループにおけるデータ数を、今回アクセスされたグループの閾値に加算する。そして、処理をステップＳ５０に進める。
【０１５３】
（Ｓ５０）制御部１５０は、所属テーブル１３１を更新する。具体的には、制御部１５０は、今回アクセスされたデータのグループ（セグメント）に属する全てのデータと、関連データのグループ（セグメント）に属する全てのデータとを新たなグループに所属させる（グループの統合）。ステップＳ５０では、制御部１５０は、所属テーブル１３１の更新を行うのみであり、更新結果のセグメントへの反映を行わない。
【０１５４】
（Ｓ５１）制御部１５０は、ステップＳ５０の更新結果をセグメントに反映させる。例えば、セグメントＳＧ１１，ＳＧ１２を１つのセグメントにまとめる場合、データＡ，Ｂが属する新たなセグメントをデータ記憶部１２０に作成する（セグメントの統合）。制御部１５０は、元のセグメントＳＧ１１，ＳＧ１２の領域を解放し、上書き可能として管理する。
【０１５５】
このように、第２〜第４の実施の形態の機能を組み合わせることもできる。これにより、第２〜第４の実施の形態と同様の効果を得ることができる。なお、更に、第５の実施の形態の機能を追加することも考えられる。第５の実施の形態の機能を追加した場合、制御部１５０は、アクセス管理テーブル１３２に代えて、アクセス回数テーブル１３５を用いることになる。このため、ステップＳ４７では、制御部１５０は、着目するグループに属するデータについて、アクセス回数テーブル１３５からアクセス回数を取得する。ステップＳ４８では、取得したアクセス回数のうち、アクセス回数が“０”のデータがあるか否かを判定する。そしてアクセス回数が“０”のデータがなければ処理をステップＳ４９に進め、アクセス回数が“０”のデータがあれば処理を終了する。このように、第５の実施の形態の機能を追加してもよい。
【０１５６】
［第７の実施の形態］
次に、第７の実施の形態を説明する。第２〜第６の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１５７】
第２〜第６の実施の形態では、データを管理するノードとしてサーバ１００を想定した。一方、複数のノードを設けて、各セグメントを複数のノードで分散して管理することも考えられる。各ノードのデータアクセスに伴う負荷を軽減でき、また、データアクセスの高速化を図れるからである。
【０１５８】
図２３は、第７の実施の形態の情報処理システムの例を示す図である。第７の実施の形態の情報処理システムでは、第７の実施の形態で説明したサーバ１００に加えて、サーバ１００ａ，１００ｂを含む。サーバ１００ａ，１００ｂは、ネットワーク１０に接続されている。サーバ１００ａ，１００ｂは、サーバ１００と同様の機能を備えたサーバコンピュータである。
【０１５９】
サーバ１００，１００ａ，１００ｂは、複数のセグメントを分散管理する。例えば、セグメントＳＧ１をサーバ１００が担当し、セグメントＳＧ２をサーバ１００ａが担当し、セグメントＳＧ３をサーバ１００ｂが担当する。何れかのセグメントのデータに対するアクセス要求を受け付けた場合は、アクセス要求されたセグメントを担当するサーバがアクセス要求に応答する。例えば、サーバ１００ｂがセグメントＳＧ１のデータに対するアクセス要求を受け付けた場合、サーバ１００ｂはサーバ１００にアクセス要求を転送する。サーバ１００は、転送されたアクセス要求を受け付けると、要求されたデータを要求元に送信する。
【０１６０】
ここで、サーバ１００ａ，１００ｂは、サーバ１００と同様のハードウェアを用いて実現できる。また、サーバ１００ａ，１００ｂの機能は、図４で説明したサーバ１００の機能と同様である。ただし、各サーバの制御部は相互に通信して、各サーバで保持される所属テーブルを最新の状態に同期する。また、サーバ１００，１００ａ，１００ｂは、セグメントと担当サーバとの対応関係を保持している。
【０１６１】
図２４は、第７の実施の形態のセグメント担当テーブルの例を示す図である。セグメント担当テーブル１３６は、管理情報記憶部１３０に格納される。サーバ１００ａ，１００ｂもセグメント担当テーブル１３６と同様のテーブルを保持する。セグメント担当テーブル１３６は、セグメントおよび担当サーバの項目を含む。
【０１６２】
セグメントの項目には、セグメントの識別情報が登録される。担当サーバの項目には、セグメントを担当するサーバの識別情報が登録される。例えば、セグメント担当テーブル１３６には、セグメントが“ＳＧ１”、担当サーバが“サーバ１００”という情報が登録される。これは、セグメントＳＧ１をサーバ１００が担当することを示している。
【０１６３】
各サーバは、所属テーブルおよびセグメント担当テーブルを保持し、何れのセグメントを何れのサーバが担当するかを把握できる。例えば、サーバ１００は、所属テーブル１３１およびセグメント担当テーブル１３６に基づいて、何れかのセグメントに属するデータを何れのサーバから取得すればよいかを把握できる。
【０１６４】
例えば、何れのセグメントを何れのサーバが担当するかは、セグメントの識別情報などに基づいて決定することが考えられる。このため、各サーバは、グループの統合や分割に伴って新たなセグメントを作成する場合にも、新たなセグメントに識別情報を付与し、新たなセグメントに格納するデータを何れのサーバに送信すればよいかを把握できる。例えば、各サーバは、新たなセグメントに格納するデータを他のサーバに送信するとともに、新たなセグメントの作成を他のサーバに指示することもできる。また、新たなセグメントの作成に伴い、作成したセグメントと担当サーバとの対応関係が何れかのサーバによりセグメント担当テーブル１３６に登録された場合、各サーバ間でセグメント担当テーブル１３６が同期される。
【０１６５】
ここで、第７の実施の形態でも第２〜第６の実施の形態と同様に、データ間の関連の検出およびセグメントに対するデータの所属の決定を行える。例えば、クライアント２００は、前回アクセスしたデータの識別情報をアクセス要求に含める。各サーバは、アクセス要求から連続してアクセスされたデータを把握し、データ間の関連を検出できる。あるいは、各サーバは、何れのアクセス要求元から何れのデータに対するアクセスを受けたかを互いに通知し合ってもよい。各サーバは、データ間の関連の検出結果に応じて、自身が担当するセグメントと他のサーバが担当するセグメントとを統合する。また、各サーバは、自身が管理するグループへのキャッシュ領域の割当てを解除したときも、第２〜第６の実施の形態と同様にグループおよびセグメントの分割を行える。
【０１６６】
例えば、サーバ１００は、自身が担当するセグメントからサーバ１００ａが担当するセグメントに対してデータの配置を変更する場合は、変更対象のデータをサーバ１００ａに送信する。サーバ１００ａは、サーバ１００から受信したデータをサーバ１００ａが担当するセグメントに格納する。このようにして、サーバ間での各セグメントに対するデータの配置変更を行える。
【０１６７】
なお、第２〜第７の実施の形態の説明では、グループに所属させるデータ数の閾値を設けるものとしたが、データ数の閾値に代えて、データサイズ（例えば、ビット数やバイト数で表される量）の閾値を用いてもよい。
【０１６８】
なお、以上の説明では、主に、キャッシュ１１０としてＲＡＭ１０２を、データ記憶部１２０としてＨＤＤ１０３を想定したが、これら以外の組み合わせも考えられる。例えば、キャッシュ１１０としてＲＡＭ１０２を、データ記憶部１２０としてＳＳＤ、光ディスク１３およびテープ媒体などを用いてもよい。また、キャッシュ１１０としてＳＳＤを、データ記憶部１２０としてＨＤＤ１０３、光ディスク１３およびテープ媒体などを用いてもよい。
【０１６９】
また、第２〜第７の実施の形態では、主にサーバコンピュータを例示したが、データアクセスを制御するプロセッサ、ディスク装置およびキャッシュメモリを備えるストレージ装置に第２〜第７の実施の形態を適用することもできる。
【０１７０】
また、第１の実施の形態の情報処理は、演算部１ｃにプログラムを実行させることで実現できる。また、第２〜第７の実施の形態の情報処理は、各サーバが備えるプロセッサにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体（例えば、光ディスク１３、メモリ装置１４およびメモリカード１６など）に記録できる。
【０１７１】
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１７２】
１  データ配置制御装置
１ａ  メモリ
１ｂ  記憶装置
１ｃ  演算部
Ｇ１，Ｇ２，Ｇ３，Ｇ４  グループ
ＳＧ１，ＳＧ２，ＳＧ３，ＳＧ４，ＳＧ５，ＳＧ６  セグメント
【図１】
2015125597.tif 000003
【図２】
2015125597.tif 000004
【図３】
2015125597.tif 000005
【図４】
2015125597.tif 000006
【図５】
2015125597.tif 000007
【図６】
2015125597.tif 000008
【図７】
2015125597.tif 000009
【図８】
2015125597.tif 000010
【図９】
2015125597.tif 000011
【図１０】
2015125597.tif 000012
【図１１】
2015125597.tif 000013
【図１２】
2015125597.tif 000014
【図１３】
2015125597.tif 000015
【図１４】
2015125597.tif 000016
【図１５】
2015125597.tif 000017
【図１６】
2015125597.tif 000018
【図１７】
2015125597.tif 000019
【図１８】
2015125597.tif 000020
【図１９】
2015125597.tif 000021
【図２０】
2015125597.tif 000022
【図２１】
2015125597.tif 000023
【図２２】
2015125597.tif 000024
【図２３】
2015125597.tif 000025
【図２４】
2015125597.tif 000026