(57)【要約】【課題】グループ化の精度を向上すること。【解決手段】演算部１ｃは、グループＧ１に属するデータＸ１とグループＧ２に属するデータＹ１との間に関係性が検出されると、グループＧ２の座標を用いてデータＸ１の座標を更新し、グループＧ１の座標を用いてデータＹ１の座標を更新する。演算部１ｃは、グループＧ１，Ｇ２に属するデータＸ１，Ｘ２，Ｘ３，Ｘ４の座標と、グループＧ１，Ｇ２の座標とに基づいて、グループＧ１，Ｇ２それぞれに所属させるデータを決定する。【選択図】図１
2015075776.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを複数のグループに分けて管理するデータ管理プログラムであって、
コンピュータに、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、
処理を実行させるデータ管理プログラム。
【請求項２】
前記更新では、前記第１のデータの座標と前記第２のグループの座標との距離および前記第２のデータの座標と前記第１のグループの座標との距離が小さくなるように前記第１および前記第２のデータの座標を更新する、請求項１記載のデータ管理プログラム。
【請求項３】
前記決定では、前記第１のグループに所属させる各データの座標と前記第１のグループの座標との距離の第１の和、および、前記第２のグループに所属させる各データの座標と前記第２のグループの座標との距離の第２の和の合計が最小になるように、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、請求項２記載のデータ管理プログラム。
【請求項４】
前記決定では、前記第１のグループの座標および前記第２のグループの座標の間を結ぶベクトルと前記第１のグループに属するデータの位置ベクトルとの内積を前記第１のグループに属するデータ毎に算出し、前記ベクトルと前記第２のグループに属するデータの位置ベクトルとの内積を前記第２のグループに属するデータ毎に算出し、算出した内積に基づいて前記第１および前記第２のグループそれぞれに所属させるデータを決定する、請求項２記載のデータ管理プログラム。
【請求項５】
前記第１のデータと前記第１のグループに属する第３のデータとの間に関係性が検出されると、前記第１のグループの座標を用いて前記第１および前記第３のデータの座標を更新する、請求項１乃至４の何れか１項に記載のデータ管理プログラム。
【請求項６】
グループの座標は、当該グループに属するデータを格納する記憶装置上の何れかの記憶領域にも対応付けられており、各データが何れのグループに所属するかに応じて、各データを格納する記憶装置上の記憶領域を決定する、請求項１乃至５の何れか１項に記載のデータ管理プログラム。
【請求項７】
何れかのデータに対するアクセス要求を受け付け、前記記憶装置に対するキャッシュに当該データが格納されていないとき、当該データが属するグループに所属する全てのデータを前記記憶装置から取得し、前記キャッシュに格納する、請求項６記載のデータ管理プログラム。
【請求項８】
前記関係性は、前記第１および前記第２のデータが連続してアクセスされたことである、請求項１乃至７の何れか１項に記載のデータ管理プログラム。
【請求項９】
複数のデータを複数のグループに分けて管理するデータ管理装置であって、
各データに対応する座標および各グループに対応する座標の情報を記憶する記憶部と、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、前記記憶部を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、演算部と、
を有するデータ管理装置。
【請求項１０】
複数のデータを複数のグループに分けて管理するデータ管理方法であって、コンピュータが、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ管理プログラム、データ管理装置およびデータ管理方法に関する。
【背景技術】
【０００２】
現在、データを記憶可能な種々の装置が用いられている。当該装置ではデータに対するアクセスの高速化が図られることがある。例えば、記憶装置に対し、キャッシュと呼ばれる比較的高速にアクセス可能なメモリを設けることがある。例えば、未だ要求されていないデータを記憶装置から先読みしてキャッシュに格納する。そのデータが要求されるとキャッシュから当該データを読み出して要求元へ送ることで、データ応答の高速化を図る。
【０００３】
ところで、情報処理システムでは、データ間の関係に応じた処理を行うことがある。例えば、文書に含まれる文書データ（テキストや図表など）毎にディスプレイ上の表示位置を決定するとき、参照関係をもつ文書データ同士を近傍に配置する提案がある。また、複数の文書の各々に含まれるキーワードを解析することにより、各文書が表す単語ベクトルに基づいて、同じ話題に属する文書の組を抽出する方法も提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０８−９５９６２号公報
【特許文献２】特開２００９−３８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
関係性をもつデータ同士をグループ化しておき、グループ単位に先読みを行うことが考えられる。例えば、連続してアクセスされる可能性が高い複数のデータを同一グループとし、何れかのデータがアクセスされたときに、当該データの属するグループの先読みを行う。以降に要求されるデータが先読み済である可能性（ヒット率）を高められるからである。しかし、この場合、データ間の関係性をどのようにして管理するかが問題となる。
【０００６】
例えば、各データに対する過去のアクセス履歴から、連続してアクセスされた頻度がより高いデータ同士を同一グループに割当てることが考えられる。当該データ同士は今後も連続してアクセスされる可能性が高いと推定できるからである。この場合、利用するアクセス履歴の情報量が多い程、統計的に高信頼のグループ化を行える。ところが、全てのアクセス履歴を保存していると、時間経過と共にアクセス履歴の情報量が増大し、メモリの使用量が増大するおそれがある。一方、ある期間のみのアクセス履歴しか保存していないと、他の期間のアクセス履歴の情報が失われるので、グループ化の精度が低下し得る。
【０００７】
１つの側面では、本発明は、グループ化の精度を向上できるデータ管理プログラム、データ管理装置およびデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、コンピュータによって実行されるデータ管理プログラムであって、複数のデータを複数のグループに分けて管理するデータ管理プログラムが提供される。このデータ管理プログラムは、コンピュータに、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する、処理を実行させる。
【０００９】
また、１つの態様では、複数のデータを複数のグループに分けて管理するデータ管理装置が提供される。このデータ管理装置は、記憶部と演算部とを有する。記憶部は、各データに対応する座標および各グループに対応する座標の情報を記憶する。演算部は、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、記憶部を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する。
【００１０】
また、１つの態様では、データ管理方法が提供される。このデータ管理方法では、複数のデータを複数のグループに分けて管理するコンピュータが、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する。
【発明の効果】
【００１１】
１つの側面では、グループ化の精度を向上できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のデータ管理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態のサーバのハードウェア例を示す図である。
【図４】第２の実施の形態のサーバの機能例を示す図である。
【図５】第２の実施の形態のセグメントの例を示す図である。
【図６】第２の実施の形態のセグメント管理テーブルの例を示す図である。
【図７】第２の実施の形態のデータ管理テーブルの例を示す図である。
【図８】第２の実施の形態の所属テーブルの例を示す図である。
【図９】第２の実施の形態のグループの例を示す図である。
【図１０】第２の実施の形態のアクセス処理の例を示すフローチャートである。
【図１１】第２の実施の形態の関係性更新の例を示すフローチャートである。
【図１２】第２の実施の形態のデータとセグメントの距離の例を示す図である。
【図１３】第２の実施の形態の距離の合計の計算例を示す図である。
【図１４】第２の実施の形態の更新後のグループの例を示す図である。
【図１５】第２の実施の形態のセグメントの更新例を示すフローチャートである。
【図１６】第２の実施の形態のデータとセグメントの距離の他の例を示す図である。
【図１７】第２の実施の形態の座標系の他の例を示す図である。
【図１８】アクセス履歴の例を示す図である。
【図１９】アクセス履歴によるグループ化の例を示す図である。
【図２０】第３の実施の形態の関係性更新の例を示すフローチャートである。
【図２１】第３の実施の形態の内積の例を示す図である。
【図２２】第３の実施の形態の内積のソート結果の例を示す図である。
【図２３】第４の実施の形態のデータ管理テーブルの例を示す図である。
【図２４】第４の実施の形態の関係性更新の例を示すフローチャートである。
【図２５】第４の実施の形態の更新直後の管理情報の例を示す図である。
【図２６】第４の実施の形態の更新後のグループの例を示す図である。
【図２７】第５の実施の形態の情報処理システムの例を示す図である。
【図２８】第５の実施の形態のセグメント担当テーブルの例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のデータ管理装置を示す図である。データ管理装置１は、種々のデータを記憶する。データ管理装置１は、ネットワークを介して接続された他の装置（図示を省略）からデータに対するアクセス要求を受け付ける。アクセス要求は、例えばデータの読み出しの要求である。データ管理装置１は、アクセス要求に応じたデータを要求元の装置に提供する。
【００１４】
データ管理装置１上で動作するソフトウェアがアクセス要求を生成することもある。その場合、データ管理装置１は、要求に応じてデータを当該ソフトウェアに提供する。データ管理装置１は、コンピュータでもよいし、データを記憶するストレージ装置でもよい。データ管理装置１は、記憶部１ａ，１ｂおよび演算部１ｃを有する。
【００１５】
記憶部１ａ，１ｂは、データを記憶する。記憶部１ａは、記憶部１ｂよりもランダムアクセスを高速に行える。記憶部１ａは、記憶部１ｂに記憶されたデータを一時的に保持するキャッシュとして用いられる。例えば、記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性の記憶媒体でもよいし、ＳＳＤ（Solid State Drive）などの不揮発性の記憶媒体でもよい。例えば、記憶部１ｂは不揮発性の記憶媒体である。例えば、記憶部１ａをＲＡＭとすれば、記憶部１ｂをＨＤＤ（Hard Disk Drive）、ＳＳＤ、光ディスクまたは磁気テープなどとすることが考えられる。また、記憶部１ａをＳＳＤとすれば、記憶部１ｂをＨＤＤ、光ディスクまたは磁気テープなどとすることが考えられる。
【００１６】
演算部１ｃは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｃは、プログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１７】
演算部１ｃは、データに対するアクセス要求を受け付ける。演算部１ｃは、要求されたデータが記憶部１ａに格納されている場合（キャッシュヒット）、記憶部１ａにアクセスする。演算部１ｃは、要求されたデータが記憶部１ａに格納されていない場合（キャッシュミス）、記憶部１ｂにアクセスする。キャッシュヒットの場合、キャッシュミスの場合よりも高速に、要求されたデータの読み出しを行える。よって、キャッシュヒット率を向上させれば、データに対するアクセスの高速化を図れる。
【００１８】
演算部１ｃは、記憶部１ｂに記憶された複数のデータを複数のグループに分けて管理する。関係性のあるデータ同士をグループ化し、グループ単位に先読みを行うことで、キャッシュヒット率の向上を図れるからである。データ間に「関係性がある」とは、あるデータがアクセスされたときに、他のデータが将来（例えば、未来の所定期間内に）アクセスされる可能性があることを示す。例えば、連続してアクセスされる可能性のあるデータ同士を関係性があるとしてもよい。
【００１９】
演算部１ｃは、データ間の関係性を、各データおよび各グループに付与された座標（例えば、２次元や３次元）を用いて管理する。座標を、所定次元における各データおよび各グループの位置を示す情報ということもできる。例えば、記憶部１ｂはデータＸ１，Ｘ２，Ｙ１，Ｙ２を記憶する。データＸ１，Ｘ２の組をグループＧ１とする。データＹ１，Ｙ２の組をグループＧ２とする。ここで、グループ毎のデータ数を２としている（ただし、他のデータ数としてもよい）。図１ではｘ軸およびｙ軸が直交する２次元の座標系を例示している。領域Ｒ１は、このときのグループＧ１に所属するデータＸ１，Ｘ２を囲った領域である。領域Ｒ２はグループＧ２に所属するデータＹ１，Ｙ２を囲った領域である。
【００２０】
記憶部１ａは、データＸ１，Ｘ２，Ｙ１，Ｙ２それぞれに対応付けられた座標の情報を記憶する。記憶部１ａはグループＧ１，Ｇ２それぞれに対応付けられた座標の情報を記憶する。グループＧ１，Ｇ２の座標の情報は記憶部１ａに予め格納される。グループＧ１，Ｇ２の座標を所定の規則により与えてもよい。例えば、２次元座標上において、所定間隔の格子点として、Z-orderingなどの順序に従って、各グループに順番に座標を与えることが考えられる。データＸ１，Ｘ２，Ｙ１，Ｙ２の座標には所定の初期値が予め与えられる。各グループの座標は固定であるのに対し、各データの座標はデータへのアクセスに伴って更新され得る。
【００２１】
演算部１ｃは、グループＧ１に属するデータＸ１とグループＧ２に属するデータＹ１との間の関係性を検出する（ステップＳ１）。例えば、演算部１ｃは、データＸ１の次にデータＹ１に対するアクセス要求を受け付けたとき、データＸ１，Ｙ１の間に、連続的にアクセスされるという関係性を検出することが考えられる。
【００２２】
すると、演算部１ｃは記憶部１ａを参照し、グループＧ２の座標を用いてデータＸ１の座標を更新する。また、グループＧ１の座標を用いてデータＹ１の座標を更新する（ステップＳ２）。具体的には、データＸ１がグループＧ２の座標に近づくようにデータＸ１の座標を更新する。また、データＹ１がグループＧ１の座標に近づくようにデータＹ１の座標を更新する。
【００２３】
ここで、データの座標とグループの座標との距離は、データと当該グループに属する他のデータとの関係の強さを示していると考えられる。例えば、データＸ１の座標がグループＧ２の座標に近づくことは、データＸ１とグループＧ２に属するデータＹ１との関係が強まった（例えば、連続してアクセスされる可能性が高まった）ことを意味する。同様に、データＹ１の座標がグループＧ１の座標に近づくことは、データＹ１とグループＧ１に属するデータＸ１との関係が強まったことを意味する。すなわち、この場合、データＸ１，Ｙ１の関係が相互に強まったことになる。
【００２４】
演算部１ｃは、グループＧ１，Ｇ２に属するデータＸ１，Ｘ２，Ｙ１，Ｙ２それぞれの座標と、グループＧ１，Ｇ２それぞれの座標とに基づいて、グループＧ１，Ｇ２それぞれに所属させるデータを決定する（ステップＳ３）。
【００２５】
例えば、演算部１ｃは、データＸ１，Ｘ２，Ｙ１，Ｙ２の座標とグループＧ１，Ｇ２の座標との座標間の距離を用いて、グループＧ１，Ｇ２それぞれに所属させるデータを決定する。ここで、距離ｄ１はデータＸ１の座標とグループＧ１の座標との距離である。距離ｄ２はデータＸ２の座標とグループＧ１の座標との距離である。距離ｄ３はデータＹ１の座標とグループＧ１の座標との距離である。距離ｄ４はデータＹ２の座標とグループＧ１の座標との距離である。距離ｄ５はデータＸ１の座標とグループＧ２の座標との距離である。距離ｄ６はデータＸ２の座標とグループＧ２の座標との距離である。距離ｄ７はデータＹ１の座標とグループＧ２の座標との距離である。距離ｄ８はデータＹ２の座標とグループＧ２の座標との距離である。
【００２６】
例えば、演算部１ｃは、グループＧ１に所属させる各データの座標とグループＧ１の座標との距離の和ＤＳ１と、グループＧ２に所属させる各データの座標とグループＧ２の座標との距離の和ＤＳ２との合計ＤＳ＝ＤＳ１＋ＤＳ２が最小になるようにグループ分けを行う。同一グループの座標に対する距離が小さいデータの組み合わせ程、関係が強い（例えば、連続してアクセスされる可能性が高い）と考えられるからである。
【００２７】
距離ｄ１〜ｄ８の例でいえば、合計ＤＳの候補（グループ化の方法の候補）は６通りある。その中で、ＤＳ１＝ｄ１＋ｄ３、ＤＳ２＝ｄ６＋ｄ８のときが最小である。よって、演算部１ｃはデータＸ１，Ｙ１をグループＧ１に所属させ、データＸ２，Ｙ２をグループＧ２に所属させると決定する（ステップＳ４）。例えば、演算部１ｃは、グループＧ１，Ｇ２をラウンドロビンで選び、選択したグループの座標に最も距離が近いデータから当該グループに所属させると決定してもよい。領域Ｒ１ａは、決定後のグループＧ１に所属するデータＸ１，Ｙ１を囲った領域である。領域Ｒ２ａは、決定後のグループＧ２に所属するデータＸ２，Ｙ２を囲った領域である。
【００２８】
あるいは、演算部１ｃは、データＸ１，Ｘ２，Ｙ１，Ｙ２の座標で示される各ベクトル（位置ベクトル）とグループＧ１，Ｇ２の座標で示されるベクトルの内積を用いて、グループＧ１，Ｇ２それぞれに所属させるデータを決定してもよい。例えば、演算部１ｃはグループＧ１の座標からグループＧ２の座標へのベクトルと、データの座標で示されるベクトルとの内積をデータ毎に計算する。各内積を比較することで、各データの座標が相対的にどちらのグループの座標に近いかを簡便に把握できる。この場合、内積を昇順にソートして、相対的に内積の小さい２つのデータをグループＧ１に、相対的に内積の大きい２つのデータをグループＧ２に所属させる。このようにして、データＸ１，Ｙ１をグループＧ１に所属させ、データＸ２，Ｙ２をグループＧ２に所属させると決定することもできる。この場合、距離ｄ１〜ｄ８を直接用いて計算するよりも、演算コストを削減し得る。
【００２９】
以後、演算部１ｃは、更新後のグループＧ１，Ｇ２単位に記憶部１ｂから記憶部１ａへの先読みを行える。例えば、その後、グループＧ１に属するデータＸ１に対するアクセスがあったとき、既にデータＸ１の記憶領域が記憶部１ａから解放されていることもある。この場合、演算部１ｃは、記憶部１ｂからグループＧ１に属するデータＸ１，Ｙ１を取得して、記憶部１ａに配置する。例えば、連続してアクセスされたことを関係性として検出してグループＧ１の所属を決定したのであれば、次にデータＹ１がアクセスされる可能性が高く、次のアクセスに対するキャッシュヒット率を向上できる。
【００３０】
データ管理装置１によれば、演算部１ｃにより、グループＧ１に属するデータＸ１とグループＧ２に属するデータＹ１との間に関係性が検出される。演算部１ｃにより、グループＧ２の座標を用いてデータＸ１の座標が更新され、グループＧ１の座標を用いてデータＹ１の座標が更新される。演算部１ｃにより、グループＧ１，Ｇ２に属するデータＸ１，Ｘ２，Ｙ１，Ｙ２の座標と、グループＧ１，Ｇ２の座標とに基づいて、グループＧ１，Ｇ２それぞれに所属させるデータが決定される。
【００３１】
これにより、グループ化の精度を向上できる。ここで、例えば、グループ化を行うタイミングで、各データに対する過去のアクセス履歴を参照して、連続してアクセスされた頻度がより高いデータ同士を同一グループに割当てることも考えられる。この場合、グループ化に利用するアクセス履歴の情報量が多い程、統計的に高信頼のグループ化を行える。ところが、全てのアクセス履歴を保存していると、時間経過と共にアクセス履歴の情報量が増大し、メモリの使用量が増大するおそれがある。一方、メモリの使用量を節約するために、ある期間のみのアクセス履歴を保存することも考えられる。しかし、この場合、他の期間のアクセス履歴の情報が失われるので、グループ化の精度が低下し得る。
【００３２】
そこで、データ管理装置１は、データ間の関係性を、各データの座標を用いて管理する。そして、データ管理装置１は、データ間の関係性が検出されるたびに、関係性が検出された各データの座標を更新することで、当該データ間の相互の関係が強まったことを記録する。このため、データ管理装置１は、全てのデータについてのアクセス履歴を保持しておかなくてよい。ある時点におけるデータ毎の座標は、その時点よりも過去のアクセス履歴が反映された情報だからである。
【００３３】
この場合、データ管理装置１は、各データに対する座標を記録するためのメモリ領域を確保しておけばよい。よって、アクセス履歴を全て記憶しておくよりも、メモリ（例えば、記憶部１ａ）の使用量の増大を抑制できる。また、データ毎の座標に過去のアクセス履歴を全て反映させることができるので、ある期間のみのアクセス履歴を保存する場合に比べて、グループ化の精度を向上し得る。
【００３４】
また、データ間の関係性が検出されたタイミングで、当該データ間の関係を更新していくので、全てのアクセス履歴を解析する場合のように一度に大量の情報を処理せずに済む。このため、データ間の関係性を解析するためにデータ管理装置１の負荷が高まることを抑制できる。このように、各データの座標によりデータ間の関係性を管理することで、データ間の関係性を効率的に管理できる。
【００３５】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、サーバ１００およびクライアント２００を含む。サーバ１００およびクライアント２００は、ネットワーク１０に接続されている。ネットワーク１０は、ＬＡＮ（Local Area Network）でもよいし、ＷＡＮ（Wide Area Network）やインターネットなどの広域ネットワークでもよい。
【００３６】
サーバ１００は、種々のデータを記憶するサーバコンピュータである。サーバ１００は、クライアント２００からデータに対するアクセス要求を受け付ける。アクセス要求は、データの読み出しの要求である。例えば、サーバ１００は、要求されたデータをクライアント２００に応答する。サーバ１００は、サーバ１００上で動作するソフトウェアからデータに対するアクセス要求を受け付けることもある。その場合、サーバ１００は、要求されたデータを当該ソフトウェアへ応答することができる。
【００３７】
サーバ１００は、連続してアクセスされる可能性の高いデータを、１つのグループにまとめて管理する。サーバ１００は、あるデータに対するアクセス要求を受け付けたとき、当該データが属するグループ単位に（すなわち、当該グループに属する全てのデータを）、キャッシュに格納する。これにより、未だアクセス要求を受けていないデータに対するアクセス要求を受け付けたときのキャッシュヒット率の向上を図る。ここで、サーバ１００は、第１の実施の形態のデータ管理装置１の一例である。
【００３８】
クライアント２００は、ユーザによって利用されるクライアントコンピュータである。例えば、クライアント２００は、自身が実行する処理に応じて、所定のデータに対するアクセス要求をサーバ１００に送信する。また、ユーザは、クライアント２００を操作して、データに対するアクセス要求をクライアント２００からサーバ１００へ送信させることもできる。ユーザは、サーバ１００を直接操作して、データに対するアクセス要求をサーバ１００に入力することもできる。
【００３９】
図３は、第２の実施の形態のサーバのハードウェア例を示す図である。サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、通信部１０４、画像信号処理部１０５、入力信号処理部１０６、ディスクドライブ１０７および機器接続部１０８を有する。各ユニットはサーバ１００のバスに接続されている。なお、クライアント２００も、サーバ１００と同様のハードウェアを用いて実現できる。
【００４０】
プロセッサ１０１は、サーバ１００の情報処理を制御する。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組合せであってもよい。
【００４１】
ＲＡＭ１０２は、サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４２】
ＨＤＤ１０３は、サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。サーバ１００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４３】
通信部１０４は、ネットワーク１０を介して他のコンピュータと通信を行える通信インタフェースである。通信部１０４は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４４】
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４５】
入力信号処理部１０６は、サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４６】
ディスクドライブ１０７は、レーザ光などを利用して、光ディスク１３に記録されたプログラムやデータを読み取る駆動装置である。光ディスク１３として、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを使用できる。ディスクドライブ１０７は、例えば、プロセッサ１０１からの命令に従って、光ディスク１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４７】
機器接続部１０８は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば、機器接続部１０８にはメモリ装置１４やリーダライタ装置１５を接続できる。メモリ装置１４は、機器接続部１０８との通信機能を搭載した記録媒体である。リーダライタ装置１５は、メモリカード１６へのデータの書き込み、またはメモリカード１６からのデータの読み出しを行う装置である。メモリカード１６は、カード型の記録媒体である。機器接続部１０８は、例えば、プロセッサ１０１からの命令に従って、メモリ装置１４またはメモリカード１６から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４８】
図４は、第２の実施の形態のサーバの機能例を示す図である。サーバ１００は、キャッシュ１１０、データ記憶部１２０、管理情報記憶部１３０、アクセス部１４０および制御部１５０を有する。アクセス部１４０および制御部１５０は、プロセッサ１０１によって実行されるプログラムのモジュールであってもよい。
【００４９】
キャッシュ１１０は、ＲＡＭ１０２に確保された記憶領域を用いて実現できる。データ記憶部１２０は、ＨＤＤ１０３に確保された記憶領域を用いて実現できる。管理情報記憶部１３０は、ＲＡＭ１０２またはＨＤＤ１０３に確保された記憶領域を用いて実現できる。キャッシュ１１０は、第１の実施の形態の記憶部１ａの一例である。データ記憶部１２０は、第１の実施の形態の記憶部１ｂの一例である。ただし、データ記憶部１２０は、サーバ１００とネットワーク１０を介して接続された記憶装置の記憶領域でもよい。データ記憶部１２０はサーバ１００に外付けされた記憶装置の記憶領域でもよい。
【００５０】
キャッシュ１１０は、データ記憶部１２０よりも高速なランダムアクセスが可能である。キャッシュ１１０は、データ記憶部１２０に対するキャッシュとして用いられ、データ記憶部１２０から読み出されたデータを一時的に記憶する。
【００５１】
データ記憶部１２０は、サーバ１００で管理される各種のデータを記憶する。データ記憶部１２０では、１つのグループを連続した記憶領域に格納する。１つのグループに対してシーケンシャルにアクセスできれば、グループ単位の読み出しを高速化できるからである。以下の説明では、データ記憶部１２０における、グループを格納するための連続した記憶領域をセグメントと呼ぶことがある。
【００５２】
管理情報記憶部１３０は、サーバ１００で管理されるデータ毎の管理情報を記憶する。管理情報は、データ間の関係性や各データが何れのグループに属するかを示す情報を含む。ここで、データ間の関係性は、各データに付与された座標によって表される。第２の実施の形態では一例として２次元の座標系を想定する。ただし、１次元または３次元以上の座標系を用いることを妨げるものではない。
【００５３】
アクセス部１４０は、クライアント２００やサーバ１００上のソフトウェア（図示を省略）からデータへのアクセス要求を受け付ける。アクセス部１４０は、アクセス要求されたデータを、要求元（クライアント２００やサーバ１００上のソフトウェア）に応答する。このとき、アクセス部１４０は、連続してアクセスされたデータを制御部１５０に通知する。また、アクセス部１４０は未だアクセス要求されていないデータの先読みを行う。
【００５４】
例えば、アクセス部１４０は、あるデータに対するアクセス要求を受け付けたとき、当該データがキャッシュ１１０になければ（キャッシュミス）、当該データのグループに属する全てのデータをデータ記憶部１２０から取得して、キャッシュ１１０に格納する。更に、アクセス部１４０は要求されたデータを要求元に提供する。アクセス部１４０は、あるデータに対するアクセス要求を受け付けたとき、当該データがキャッシュ１１０にあれば（キャッシュヒット）、キャッシュ１１０から当該データを読み出して、要求元に提供する。アクセス部１４０は、管理情報記憶部１３０に記憶された管理情報を参照することで、データとグループとの対応関係を把握する。
【００５５】
制御部１５０は、アクセス部１４０から連続してアクセスされたデータの通知を受け付けると、当該通知に応じて、管理情報記憶部１３０に記憶された管理情報を更新する。具体的には、制御部１５０は連続してアクセスされたデータ間の関係を強めるように、各データの座標を更新する。制御部１５０は、更新後のデータの座標に基づいて、各グループに所属させるデータを決定する。アクセス部１４０が各データに対する連続アクセスを受け付けるたびに、制御部１５０は各データの座標を更新する。こうして、連続してアクセスされるデータが検出されるたびに、データ間の関係性が更新されていくことになる。
【００５６】
制御部１５０は、決定したグループに従って、データ記憶部１２０におけるセグメント内のデータ配置を変更する。具体的には、制御部１５０は、何れかのグループのキャッシュ１１０上の記憶領域（例えば、ページ）が解放されるタイミングで、当該グループに変更があれば、当該グループに対応するセグメント内のデータ配置を変更する。ただし、グループ内のデータの所属が変更されるたびにセグメント内のデータ配置を変更することを妨げるものではない。
【００５７】
図５は、第２の実施の形態のセグメントの例を示す図である。データ記憶部１２０は、データＡ，Ｂ，Ｃ，Ｄ，・・・を記憶する。また、データ記憶部１２０は、セグメントＳＧ１，ＳＧ２，・・・を有する。第２の実施の形態では、セグメント当たりに格納できるデータの数（セグメントサイズ）を２とする。この場合、１つのグループに属するデータの個数も２である。ただし、セグメントサイズを３以上としてもよい（セグメントサイズとグループ当たりのデータ数とは一致する）。
【００５８】
データＡ，ＢはグループＧ１１に属する。データＡ，Ｂ（グループＧ１１）は、セグメントＳＧ１に格納されている。データＣ，ＤはグループＧ１２に属する。データＣ，Ｄ（グループＧ１２）は、セグメントＳＧ２に格納されている。
【００５９】
例えば、アクセス部１４０は、データＡに対するアクセス要求を受け付ける。当該アクセス要求を受け付ける直前のタイミングにおいて、キャッシュ１１０にデータＡが格納されていなければ、アクセス部１４０は、データ記憶部１２０に存在するセグメントＳＧ１上のデータＡ，Ｂを複製して、キャッシュ１１０に格納する。また、アクセス部１４０は、データＡを要求元に応答する。この場合、データＡに対してデータＢが先読みされたことになる。アクセス部１４０は、キャッシュ１１０の連続した記憶領域にデータＡ，Ｂを配置してもよい。キャッシュ１１０上でもデータＡ，Ｂに対してシーケンシャルにアクセスできれば、データＡ，Ｂと連続したアクセスを高速に行えるからである。
【００６０】
ここで、第２の実施の形態では、グループはセグメントと１対１に対応する。例えば、グループＧ１１はセグメントＳＧ１に対応付けられる（グループＧ１１はセグメントＳＧ１に配置される）。また、グループＧ１２はセグメントＳＧ２に対応付けられる（グループＧ１２はセグメントＳＧ２に配置される）。
【００６１】
図６は、第２の実施の形態のセグメント管理テーブルの例を示す図である。セグメント管理テーブル１３１は、各セグメントに対応付けられた座標を登録した情報である。セグメントとグループとは１対１に対応付けられるから、セグメントに対応付けられた座標を、グループに対応付けられた座標ということもできる。セグメント管理テーブル１３１には、管理情報記憶部１３０に格納される。セグメント管理テーブル１３１は、セグメント、座標およびデータ所属変更の項目を含む。
【００６２】
セグメントの項目には、セグメントの識別情報が登録される。座標の項目には、当該セグメント（あるいは、グループ）に対応付けられた座標が登録される。データ所属変更の項目には、セグメント内のデータの所属に変更があるか否かを示す情報が登録される。
【００６３】
例えば、セグメント管理テーブル１３１には、セグメントが“ＳＧ１”、座標が“（１，６）”、データ所属変更が“なし”という情報が登録される。これは、セグメントＳＧ１（あるいは、グループＧ１１）に対応付けられた２次元座標が“（１，６）”であることを示す。また、現時点において、セグメントＳＧ１にデータの所属の変更がないことを示す（データの所属の変更がある場合は、データ所属変更の項目に“あり”が設定される）。また、セグメントＳＧ２の座標は、“（５，２）”である。
【００６４】
各セグメントに対応する座標は、ユーザによりサーバ１００に予め与えられる。例えば、２次元座標上に所定の規則で（例えば、２次元座標上において所定間隔の格子点として、Z-orderingの順序に従って）、各セグメントに対応する座標を付与してもよい。ここで、Z-orderingとは、座標上の格子点を“Ｚ”の文字の書き順に沿って選択していく手法である。格子（各セグメントに対応する座標の頂点の並び）は矩形格子、斜方格子、正三角格子などの何れかとすることが考えられる。また、Z-ordering以外の順序で、各セグメントの座標を付与してもよい。あるいは、各セグメントに対応する座標を、２次元座標上にランダムに与えてもよい。
【００６５】
図７は、第２の実施の形態のデータ管理テーブルの例を示す図である。データ管理テーブル１３２は、各データに対応付けられた座標を登録した情報である。データ管理テーブル１３２は、管理情報記憶部１３０に格納される。データ管理テーブル１３２は、データおよび座標の項目を含む。
【００６６】
データの項目には、データの識別情報が登録される。座標の項目には、当該データに対応付けられた座標が登録される。例えば、データ管理テーブル１３２には、データが“Ａ”、座標が“（３，６）”という情報が登録される。これは、データＡに対応付けられた２次元座標が“（３，６）”であることを示す。
【００６７】
また、データＢの座標は“（６，３）”である。データＣの座標は“（４，３）”である。データＤの座標は“（４，１）”である。
なお、データ管理テーブル１３２に登録される各データの座標の初期値は任意に与えることができる。例えば、データの座標の初期値を規則的に与えてもよいし、ランダムに与えてもよい。
【００６８】
図８は、第２の実施の形態の所属テーブルの例を示す図である。所属テーブル１３３は、データとセグメント（あるいは、グループ）との対応関係を登録した情報である。所属テーブル１３３は、管理情報記憶部１３０に格納される。所属テーブル１３３は、データおよびセグメントの項目を含む。
【００６９】
データの項目には、データの識別情報が登録される。セグメントの項目には、当該データが所属するセグメントが登録される。なお、前述のようにセグメントとグループとは１対１に対応付けられるから、当該セグメントは、当該データが所属するグループを示しているということができる。
【００７０】
例えば、所属テーブル１３３には、データが“Ａ”、セグメントが“ＳＧ１”という情報が登録される。これは、データＡがセグメントＳＧ１に所属している（あるいは、グループＧ１１に所属している）ことを示す。
【００７１】
図９は、第２の実施の形態のグループの例を示す図である。座標系Ｆ１は、直交するＸ軸およびＹ軸により２次元座標系を表している。座標系Ｆ１では、セグメントＳＧ１，ＳＧ２およびデータＡ，Ｂ，Ｃ，Ｄを、セグメント管理テーブル１３１およびデータ管理テーブル１３２で例示した座標により表している。
【００７２】
領域Ｒ１１は、セグメントＳＧ１に属するデータＡ，Ｂを囲った領域である。領域Ｒ１１を、グループＧ１１に対応する領域ということもできる。領域Ｒ１２は、セグメントＳＧ２に属するデータＣ，Ｄを囲った領域である。領域Ｒ１２を、グループＧ１２に対応する領域ということもできる。
【００７３】
図１０は、第２の実施の形態のアクセス処理の例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
（Ｓ１１）アクセス部１４０は、何れかのデータに対するアクセス要求をクライアント２００から受け付ける。
【００７４】
（Ｓ１２）アクセス部１４０は、要求されたデータがキャッシュ１１０に存在するか否かを判定する。存在する場合、アクセス部１４０は、要求されたデータをキャッシュ１１０から取得して、処理をステップＳ１４に進める。存在しない場合、処理をステップＳ１３に進める。なお、何れのデータがキャッシュ１１０の何れの記憶領域に存在するかは、キャッシュ１１０にデータが格納されるたびに、アクセス部１４０により記録される。例えば、アクセス部１４０は何れのデータがキャッシュ１１０に存在するかを記録した情報をキャッシュ１１０や管理情報記憶部１３０に格納する。アクセス部１４０は当該情報を参照することでステップＳ１２の判定を行える。
【００７５】
（Ｓ１３）アクセス部１４０は、所属テーブル１３３を参照して、要求されたデータが属するセグメントを特定する。アクセス部１４０は、データ記憶部１２０上の特定したセグメントを参照して、当該セグメントに含まれる各データを取得する。アクセス部１４０は、取得した各データを複製して、キャッシュ１１０に格納する。
【００７６】
（Ｓ１４）アクセス部１４０は、要求されたデータをクライアント２００に応答する。
（Ｓ１５）アクセス部１４０は、データ間の関係性を検出したか否かを判定する。検出した場合、処理をステップＳ１６に進める。検出していない場合、処理を終了する。具体的には、アクセス部１４０は、２つのデータが連続してアクセスされた場合、これらのデータについて、「連続してアクセスされた」という関係性を検出する。
【００７７】
（Ｓ１６）アクセス部１４０は、「連続してアクセスされた」という関係性が検出された各データを制御部１５０に通知する。制御部１５０は、データ間の関係性を更新する。制御部１５０は、データ間の更新された関係性に基づいて、各セグメントに所属させるデータを決定する。制御部１５０は各セグメントに所属させるデータを決定するに留め、データ記憶部１２０上でセグメントを実際に更新することまでは行わない。
【００７８】
なお、ステップＳ１５において、アクセス部１４０は、データ間の関係性を検出するための条件を追加してもよい。例えば、アクセス部１４０は、同一のクライアント２００または同一のユーザにより２つのデータが連続してアクセスされた場合に、これらのデータについて関係性を検出してもよい。例えば、クライアント２００は、クライアント２００の識別情報やユーザの識別情報をアクセス要求に含める。そうすれば、アクセス部１４０は、アクセス要求に含まれる情報に基づいて、同一クライアントまたは同一ユーザによるものか否かを把握できる。
【００７９】
また、アクセス部１４０は、最初のアクセスと次のアクセスが所定時間内に行われた場合に連続アクセスと判断し、最初のアクセスと次のアクセスとの間の時間間隔が所定時間を経過している場合は連続アクセスでないと判断することも考えられる。
【００８０】
更に、クライアント２００は前回アクセスしたデータをアクセス要求に含めてもよい。例えば、クライアント２００は、前回データＡにアクセスし、今回データＣにアクセスする場合、今回のアクセス要求に前回アクセスしたデータＡの識別情報を含めてもよい。その場合、ステップＳ１４において、アクセス部１４０は、アクセス要求から連続してアクセスされた２つのデータを検出できる。
【００８１】
図１１は、第２の実施の形態の関係性更新の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。図１１に示す処理は図１０のステップＳ１６に相当する。
【００８２】
（Ｓ２１）制御部１５０は、関係性が検出された２つのデータの識別情報をアクセス部１４０から取得する。制御部１５０は、データ管理テーブル１３２を参照して、当該２つのデータの座標を取得する。また、制御部１５０は、セグメント管理テーブル１３１を参照して、当該２つのデータが所属するセグメント（解析対象セグメントということがある）の座標を取得する。ここで、一方のデータの座標で示されるベクトルをベクトルｐi、そのデータが所属するセグメントの座標で示されるベクトルをベクトルｑiとする。他方のデータの座標で示されるベクトルをベクトルｐj、そのデータが所属するセグメントの座標で示されるベクトルをベクトルｑjとする。ここで、添え字ｉ，ｊは、データおよびセグメントを識別するための符号である。
【００８３】
（Ｓ２２）制御部１５０は、式（１）、（２）を用いて、ベクトルｐi，ｐjを更新する。
【００８４】
【数１】
2015075776.tif 000003
【００８５】
【数２】
2015075776.tif 000004
【００８６】
ここで、添え字ｍ，ｎは０以上の整数であり、各ベクトルが更新された回数を示す。ｍ＝ｎ＝０の場合は初期値である（初期値は予め与えられる）。また、重み付け定数αは、０＜α＜１の実数である。重み付け定数αは、環境に応じて任意の値とすることができる。例えば、各データの既存の関係性を重視するならば、α＝０．９程度が好ましい。制御部１５０は、更新結果をデータ管理テーブル１３２に登録する。
【００８７】
（Ｓ２３）制御部１５０は、データ管理テーブル１３２および所属テーブル１３３を参照して、解析対象セグメントに属する全てのデータ（解析対象データということがある）の座標を取得する。
【００８８】
（Ｓ２４）制御部１５０は、各解析対象データの座標と各解析対象セグメントの座標との距離に基づいて、各解析対象データのグループ分け（セグメントに対するデータの所属の決定）を行う。具体的には、制御部１５０は、距離の合計ＤＳ＝ＤＳ１＋ＤＳ２が最小になるようにセグメントに対するデータの所属を決定する。ここで、ＤＳ１は、一方のセグメントに所属させる各データの座標と当該一方のセグメントの座標との距離の和である。ＤＳ２は、他方のセグメントに所属させる各データの座標と当該他方のセグメントの座標との距離の和である。
【００８９】
（Ｓ２５）制御部１５０は、ステップＳ２４のグループ分けの結果に応じて、所属テーブル１３３を更新する。なお、ステップＳ２３において、何れのセグメントについてもデータの所属に変更がなければ、制御部１５０はステップＳ２５，Ｓ２６をスキップする。
【００９０】
（Ｓ２６）制御部１５０は、所属するデータが変更されたセグメントについて、セグメント管理テーブル１３１にデータ所属変更がある旨を登録する。
なお、ステップＳ２１，Ｓ２２では、２つのデータが異なるセグメントに属する場合を想定したが、２つのデータが同一のセグメントに属することもある。その場合、上記の式（１）、（２）に代えて、下記の式（３）、（４）を用いることで、各データの座標を更新することができる。
【００９１】
【数３】
2015075776.tif 000005
【００９２】
【数４】
2015075776.tif 000006
【００９３】
これにより、関係性の検出された２つのデータの座標と、２つのデータが所属する同一セグメントの座標とが近づくことになる。これは、当該同一セグメントに属する２つのデータの関係性が強まったことを意味する。なお、関係性が検出された２つのデータが同一のセグメントに属している場合、制御部１５０は、ステップＳ２３〜Ｓ２６をスキップする。次に、上記ステップＳ２４の処理を具体的に説明する。
【００９４】
図１２は、第２の実施の形態のデータとセグメントの距離の例を示す図である。図１２では、データＡ，Ｃの関係性が検出され、ステップＳ２２によりデータＡ，Ｃの座標が更新された後の状態を示している。データ管理テーブル１３２ａは、データ管理テーブル１３２に対して、データＡ，Ｃの座標が更新された状態を示している。座標系Ｆ２は、データ管理テーブル１３２ａで示される各データの座標を図示したものである。
【００９５】
座標系Ｆ２において、距離ｄA1は、データＡの座標とセグメントＳＧ１の座標との距離である。距離ｄA2は、データＡの座標とセグメントＳＧ２の座標との距離である。距離ｄB1は、データＢの座標とセグメントＳＧ１の座標との距離である。距離ｄB2は、データＢの座標とセグメントＳＧ２の座標との距離である。距離ｄC1は、データＣの座標とセグメントＳＧ１の座標との距離である。距離ｄC2は、データＣの座標とセグメントＳＧ２の座標との距離である。ｄD1は、データＤの座標とセグメントＳＧ１の座標との距離である。ｄD2は、データＤの座標とセグメントＳＧ２の座標との距離である。
【００９６】
ここで、各距離の値は、例えば次の通りである。ｄA1＝２．２３。ｄA2＝４．０２。ｄB1＝５．８３。ｄB2＝１．４１。ｄC1＝３．７４。ｄC2＝１．９１。ｄD1＝５．８３。ｄD2＝１．４１。
【００９７】
図１３は、第２の実施の形態の距離の合計の計算例を示す図である。図１２の例の場合、データＡ，Ｂ，Ｃ，Ｄのグループ分けの候補は次の６つである。テーブル１３４は、その候補を例示している。テーブル１３４は、制御部１５０による下記の計算のために管理情報記憶部１３０に格納されてもよい。
【００９８】
（１）セグメントＳＧ１にデータＡ，Ｂを所属させ、セグメントＳＧ２にデータＣ，Ｄを所属させる。この場合、ＤＳ１＝ｄA1＋ｄB1＝８．０６である。ＤＳ２＝ｄC2＋ｄD2＝３．３２である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝１１（有効数字を２桁とする。以下同様）である。
【００９９】
（２）セグメントＳＧ１にデータＡ，Ｃを所属させ、セグメントＳＧ２にデータＢ，Ｄを所属させる。この場合、ＤＳ１＝ｄA1＋ｄC1＝５．９７である。ＤＳ２＝ｄB2＋ｄD2＝２．８２である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝８．８である。
【０１００】
（３）セグメントＳＧ１にデータＡ，Ｄを所属させ、セグメントＳＧ２にデータＢ，Ｃを所属させる。この場合、ＤＳ１＝ｄA1＋ｄD1＝８．０６である。ＤＳ２＝ｄB2＋ｄC2＝３．３２である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝１１である。
【０１０１】
（４）セグメントＳＧ１にデータＢ，Ｃを所属させ、セグメントＳＧ２にデータＡ，Ｄを所属させる。この場合、ＤＳ１＝ｄB1＋ｄC1＝９．５７である。ＤＳ２＝ｄA2＋ｄD2＝５．４３である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝１５である。
【０１０２】
（５）セグメントＳＧ１にデータＢ，Ｄを所属させ、セグメントＳＧ２にデータＡ，Ｃを所属させる。この場合、ＤＳ１＝ｄB1＋ｄD1＝１１．６６である。ＤＳ２＝ｄA2＋ｄC2＝５．９３である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝１８である。
【０１０３】
（６）セグメントＳＧ１にデータＣ，Ｄを所属させ、セグメントＳＧ２にデータＡ，Ｂを所属させる。この場合、ＤＳ１＝ｄC1＋ｄD1＝９．５７である。ＤＳ２＝ｄA2＋ｄB2＝５．４３である。よって、ＤＳ＝ＤＳ１＋ＤＳ２＝１５である。
【０１０４】
制御部１５０は、これらの候補のうち、ＤＳが最小になる候補を選択する。上記（１）〜（６）のうち、ＤＳが最小になるのは（２）のパターンである。よって、制御部１５０は、セグメントＳＧ１にデータＡ，Ｃを所属させ、セグメントＳＧ２にデータＢ，Ｄを所属させると決定する。制御部１５０は、この結果により、所属テーブル１３３を更新する。所属テーブル１３３ａは、更新後の登録内容を示している。
【０１０５】
例えば、上記のようなグループ分けを簡便に行うために、制御部１５０は、セグメントＳＧ１，ＳＧ２をラウンドロビンで選び、選択したセグメントの座標に最も距離が近いデータから当該セグメントに所属させると決定してもよい。例えば、セグメントＳＧ１を選択した場合、セグメントＳＧ１の座標に最も近いのはデータＡ，Ｃの座標である。したがって、制御部１５０は、データＡ，ＣをセグメントＳＧ１に所属させると決定する。また、制御部１５０は、残りのデータＢ，ＤをセグメントＳＧ２に所属させると決定する。
【０１０６】
図１４は、第２の実施の形態の更新後のグループの例を示す図である。座標系Ｆ３は、所属テーブル１３３ａで示されるようにグループ分けした状態を示している。領域Ｒ１１ａは、セグメントＳＧ１に所属させるデータＡ，Ｃを囲った領域である。領域Ｒ１１ａをグループＧ１１に対応する領域ということもできる。領域Ｒ１２ａは、セグメントＳＧ２に所属させるデータＢ，Ｄを囲った領域である。領域Ｒ１２ａをグループＧ１２に対応する領域ということもできる。
【０１０７】
ここで、キャッシュ１１０に配置されたデータは、頻繁にアクセスされる可能性が高く、キャッシュ１１０上に存在している限り、データ間の関係性が更新されていく可能性が高い。このため、各セグメントのデータの所属が決定されるたびに、データ記憶部１２０内のセグメントを更新しても、各セグメントのデータの所属が再決定される（変更される）可能性が高い。しかも、各セグメントのデータの所属が決定されるたびに、セグメントを更新していると、セグメントの更新が頻繁に発生することになり、当該更新によるサーバ１００の負荷が高まる可能性もある。
【０１０８】
そこで、制御部１５０は、あるセグメントに対応する記憶領域がキャッシュ１１０から解放されるタイミングで、データ記憶部１２０上の当該セグメントの更新を行う。具体的には次の手順である。
【０１０９】
図１５は、第２の実施の形態のセグメントの更新例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
（Ｓ３１）制御部１５０は、キャッシュ１１０から何れかの記憶領域を解放するか否かを判定する。何れかの記憶領域を解放する場合、処理をステップＳ３２に進める。何れの記憶領域も解放しない場合、処理を終了する。例えば、制御部１５０は、キャッシュ１１０の容量が不足した場合に、最も過去にアクセスされた記憶領域を解放することで、当該記憶領域を再利用可能とする（ＬＲＵ：Least Recently Used）。
【０１１０】
（Ｓ３２）制御部１５０は、セグメント管理テーブル１３１を参照して、解放対象の記憶領域に格納したセグメントについて、データ所属変更があるか否かを判定する。当該セグメントについてデータ所属変更がある場合、処理をステップＳ３３に進める。当該セグメントについてデータ所属変更がない場合、処理をステップＳ３４に進める。なお、キャッシュ１１０の各記憶領域に格納したセグメントの情報は、図１０のステップＳ１２で説明したように、アクセス部１４０により記録され、管理情報記憶部１３０に格納されている。
【０１１１】
（Ｓ３３）制御部１５０は、解放対象の記憶領域に格納したセグメントを、データの所属を変更した状態でデータ記憶部１２０上に再作成することで、当該セグメントを更新する。例えば、セグメントＳＧ１内のデータ配置をデータＡ，ＢからデータＡ，Ｃとする場合、データ記憶部１２０上で、データＡ，Ｃを配置したセグメントを作成し、これをセグメントＳＧ１とする。制御部１５０は、データ記憶部１２０上の元のセグメントＳＧ１（データＡ，Ｂを配置した旧セグメント）の領域を解放し、上書き可能として管理する。更に、制御部１５０は、再作成したセグメントから追い出されたデータ（上記の例ではデータＢ）を所属させるセグメントもデータ記憶部１２０上に再作成する。例えば、データＢをセグメントＳＧ２に所属させるならセグメントＳＧ２も再作成する。
【０１１２】
（Ｓ３４）制御部１５０は、解放対象の記憶領域をキャッシュ１１０から解放する。これにより、当該記憶領域は再利用可能となる。
このように、制御部１５０は、キャッシュ１１０から何れかの記憶領域がＬＲＵで解放される際に、当該記憶領域に格納したセグメントに対するデータの所属変更を、データ記憶部１２０に反映する。キャッシュ１１０上で所定期間アクセスされなくなったグループに対して、データ記憶部１２０上でのセグメントの更新を行えば、データ記憶部１２０上でのセグメントの更新頻度を低減できる。よって、セグメントの更新に伴うサーバ１００の負荷を軽減できる。
【０１１３】
なお、１度アクセスされたデータは当分の間アクセスされない前提で、解放する記憶領域をＭＲＵ（Most Recently Used）により決定することも考えられる。その場合にも、上記と同様の手順を用いて、データ記憶部１２０上でのセグメントの更新を行える。
【０１１４】
図１６は、第２の実施の形態のデータとセグメントの距離の他の例を示す図である。図１５までの例では、関係性が検出された各データが属するセグメント（解析対象セグメント）について、データの所属を決定するものとした。一方、解析対象セグメントの対象を拡張することも考えられる。例えば、セグメントＳＧ１，ＳＧ２に所属するデータＡ，Ｃの関係性が検出された場合に、セグメントＳＧ１またはセグメントＳＧ２から最も近傍にあるセグメントＳＧ３を解析対象セグメントに含めてもよい。その場合にも、図１１におけるステップＳ２３〜Ｓ２６の手順を適用することで、各解析対象セグメントのデータの所属を決定できる。
【０１１５】
具体的には、座標系Ｆ４には、セグメントＳＧ１，ＳＧ２，ＳＧ３が図示されている。セグメントＳＧ３にはデータＥ，Ｆが属している。この場合、図１２で例示した距離に加え、距離ｄA3，ｄB3，ｄC3，ｄD3，ｄE1，ｄE2，ｄE3，ｄF1，ｄF2，ｄF3を考えることができる。距離ｄA3は、データＡの座標とセグメントＳＧ３の座標との距離である。距離ｄB3は、データＢの座標とセグメントＳＧ３の座標との距離である。距離ｄC3は、データＣの座標とセグメントＳＧ３の座標との距離である。距離ｄD3は、データＤの座標とセグメントＳＧ３の座標との距離である。
【０１１６】
距離ｄE1は、データＥの座標とセグメントＳＧ１の座標との距離である。距離ｄE2は、データＥの座標とセグメントＳＧ２の座標との距離である。距離ｄE3は、データＥの座標とセグメントＳＧ３の座標との距離である。距離ｄF1は、データＦの座標とセグメントＳＧ１の座標との距離である。距離ｄF2は、データＦの座標とセグメントＳＧ２の座標との距離である。距離ｄF3は、データＦの座標とセグメントＳＧ３の座標との距離である。
【０１１７】
図１１のステップＳ２４の考え方を適用すれば、上記の各距離（図１２で例示した距離も含む）に基づいて、データＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆのグループ分けを行う。具体的には、制御部１５０は、距離の合計ＤＳ＝ＤＳ１＋ＤＳ２＋ＤＳ３が最小になるようにセグメントＳＧ１，ＳＧ２，ＳＧ３に対するデータの所属を決定する。例えば、ＤＳ１は、セグメントＳＧ１に所属させる各データの座標とセグメントＳＧ１の座標との距離の和である。ＤＳ２は、セグメントＳＧ２に所属させる各データの座標とセグメントＳＧ２の座標との距離の和である。ＤＳ３は、セグメントＳＧ３に所属させる各データの座標とセグメントＳＧ３の座標との距離の和である。
【０１１８】
このように、解析対象セグメントの数を３以上に拡張することができる。例えば、図１６の例に加えて解析対象セグメントの数を更に１つ追加するなら、距離の合計ＤＳをＤＳ＝ＤＳ１＋ＤＳ２＋ＤＳ３＋ＤＳ４と表せる。解析対象セグメントの数がＮ個（Ｎは２以上の整数）なら、距離の合計ＤＳ＝ＤＳ１＋・・・＋ＤＳＮとなる（ＤＳＮは、セグメントＳＧＮに所属させる各データの座標とセグメントＳＧＮの座標との距離の和である）。このように、関係性が検出された各データが属するセグメント以外のセグメントの座標も考慮して、各セグメントに所属させるデータを決定してもよい。
【０１１９】
この場合にも、前述のように、制御部１５０は、セグメントＳＧ１，・・・，ＳＧＮをラウンドロビンで選び、選択したセグメントの座標に最も距離が近いデータから当該セグメントに所属させると決定してもよい。
【０１２０】
図１７は、第２の実施の形態の座標系の他の例を示す図である。座標系Ｆ５は、Ｘ軸、Ｙ軸、Ｚ軸が直交する３次元の座標系である。このように、セグメントＳＧ１，ＳＧ２の座標およびデータＡ，Ｂ，Ｃ，Ｄの座標を、３次元で与えてもよい。また、各データの座標と各セグメントの座標との間の距離（座標間を結ぶベクトルの絶対値）を考えることができれば、１次元でもよいし、４次元以上でもよい。
【０１２１】
以上のようにして、サーバ１００は、ＲＡＭ１０２の使用量の増大を抑えながらグループ化の精度を向上できる。
ここで、例えば、グループ化を行う所定のタイミングで、各データに対する過去のアクセス履歴を参照して、連続してアクセスされた頻度がより高いデータ同士を同一グループに割当てることも考えられる。
【０１２２】
この場合、グループ化に利用するアクセス履歴の情報量が多い程、統計的に高信頼のグループ化を行える。ところが、全てのアクセス履歴を保存していると、時間経過と共にアクセス履歴の情報量が増大し、ＲＡＭ１０２の使用量が増大するおそれがある。一方、ＲＡＭ１０２の使用量を節約するために、ある期間のみのアクセス履歴を保存することも考えられる。しかし、この場合、他の期間のアクセス履歴の情報が失われるので、グループ化の精度が低下し得る。具体的には次の通りである。
【０１２３】
図１８は、アクセス履歴の例を示す図である。アクセス履歴３０は、比較的長期間のデータＡ，Ｂ，Ｃ，Ｄに対して受け付けたアクセス要求の履歴を例示している。また、アクセス履歴３１は、アクセス履歴３０のうちの一部の期間について、データＡ，Ｂ，Ｃ，Ｄに対して受け付けたアクセス要求の履歴を例示している。
【０１２４】
図１９は、アクセス履歴によるグループ化の例を示す図である。図１９（Ａ）は、アクセス履歴３０に基づいてグループ化を行った場合の例である。図１９（Ａ）の例は、アクセス履歴３１に基づいてグループ化を行う場合に対して、（時間的に）大局的なグループ化を行った場合といえる。
【０１２５】
アクセス履歴３０の例によれば、データＡ，ＢおよびデータＢ，Ａの順にアクセスが行われた回数は４である。データＡ，ＣおよびデータＣ，Ａの順にアクセスが行われた回数は５である。データＡ，ＤおよびデータＤ，Ａの順にアクセスが行われた回数は０である。データＢ，ＣおよびデータＣ，Ｂの順にアクセスが行われた回数は０である。データＢ，ＤおよびデータＤ，Ｂの順にアクセスが行われた回数は７である。データＣ，ＤおよびデータＤ，Ｃの順にアクセスが行われた回数は３である。セグメントサイズを２とするなら、連続してアクセスされた頻度が相対的に高いデータＡ，Ｃを第１のグループ、データＢ，Ｄを第２のグループとグループ分けできる。
【０１２６】
一方、図１９（Ｂ）は、アクセス履歴３１に基づいてグループ化を行った場合の例である。図１９（Ｂ）の例は、アクセス履歴３０に基づいてグループ化を行う場合に対して、（時間的に）局所的なグループ化を行った場合といえる。
【０１２７】
アクセス履歴３１の例によれば、データＡ，ＢおよびデータＢ，Ａの順にアクセスが行われた回数は２である。データＡ，ＣおよびデータＣ，Ａの順にアクセスが行われた回数は０である。データＡ，ＤおよびデータＤ，Ａの順にアクセスが行われた回数は０である。データＢ，ＣおよびデータＣ，Ｂの順にアクセスが行われた回数は０である。データＢ，ＤおよびデータＤ，Ｂの順にアクセスが行われた回数は１である。データＣ，ＤおよびデータＤ，Ｃの順にアクセスが行われた回数は２である。セグメントサイズを２とするなら、連続してアクセスされた頻度が相対的に高いデータＡ，Ｂを第１のグループ、データＣ，Ｄを第２のグループとグループ分けできる。
【０１２８】
このように、アクセス履歴３０，３１の何れを用いるかによって、グループ分けの結果が異なる可能性がある。アクセス履歴３０を用いる場合、アクセス履歴３１よりも多くの情報を利用できるから、グループ内のデータが連続してアクセスされる可能性が高いことに対し、統計的に信頼性の高いグループを作成できる。その反面、アクセス履歴３０を全て保持するためにＲＡＭ１０２の容量を比較的多く使用する。その使用量は時間経過とともに増大する。
【０１２９】
他方、アクセス履歴３１に限定して記憶しておけば、アクセス履歴３０よりもＲＡＭ１０２の使用量を低減できる。しかし、アクセス履歴３１以外の期間のアクセス履歴の情報は失われる。このため、アクセス履歴３０を用いる場合よりもグループ化の精度は低下する（グループ内のデータが連続してアクセスされる可能性が高いことに対する統計的な信頼性が低下する）。例えば、図１９のように、大局的にはデータＡ，Ｃが連続してアクセスされた頻度が比較的高く、かつ、データＢ，Ｄが連続してアクセスされた頻度が比較的高いにも関わらず、データＡ，Ｂの組、および、データＣ，Ｄの組でグループ化されてしまうことがある。
【０１３０】
そこで、サーバ１００は、データ間の関係性を各データの座標を用いて管理する。そして、データ間の関係性が検出されるたびに、当該データ同士の座標を更新することで、当該データ間の相互の関係が強まったことを記録する。このため、サーバ１００は、全てのデータについてのアクセス履歴を保持しておかなくてよい。ある時点におけるデータ毎の座標は、その時点よりも過去のアクセス履歴が反映された情報だからである。
【０１３１】
この場合、サーバ１００は、各データに対する座標を記録するための領域をＲＡＭ１０２上に確保しておけばよい。よって、アクセス履歴を全て記憶しておくよりも、ＲＡＭ１０２の使用量の増大を抑制できる。また、データ毎の座標に過去のアクセス履歴（例えば、アクセス履歴３０）を全て反映させることができるので、ある期間のみのアクセス履歴（例えば、アクセス履歴３１）を保存する場合に比べて、グループ化の精度を向上し得る。
【０１３２】
また、データ間の関係性が検出されたタイミングで、当該データ間の関係を更新していくので、全てのアクセス履歴を解析する場合のように一度に大量の情報を処理せずに済む。このため、データ間の関係性を解析するためにサーバ１００の負荷が高まることを抑制できる。このように、各データの座標によりデータ間の関係性を管理することで、データ間の関係性を効率的に管理できる。
【０１３３】
なお、セグメントサイズとして２を想定したが、３以上としてもよい。例えば、セグメントサイズをｋ（ｋは３以上の整数）個とし、２ｋ個のデータをセグメントＳＧ１，ＳＧ２に分ける場合を考える。この場合、ＤＳ１はｋ個のデータの座標とセグメントＳＧ１の座標とによって求められるｋ個の距離の和になる。また、ＤＳ２も他のｋ個のデータの座標とセグメントＳＧ２の座標とによって求められるｋ個の距離の和になる。その中で最小のＤＳ＝ＤＳ１＋ＤＳ２を選択すればよい。このように、セグメントサイズが３以上の場合にも第２の実施の形態の方法を適用できる。
【０１３４】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【０１３５】
第２の実施の形態では、各データと各セグメントとの距離を用いて、各セグメントに所属させるデータを決定する例を示した。一方、ベクトルの内積を利用して、各セグメントに所属させるデータを決定してもよい。第３の実施の形態では、その機能を提供する。
【０１３６】
ここで、第３の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第３の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第２の実施の形態の装置や機能と同様である。そこで、第３の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。
【０１３７】
ここで、第３の実施の形態のアクセス処理の手順は、図１０の手順と同様である。また、第３の実施の形態のセグメント更新の手順は、図１５の手順と同様である。一方、第３の実施の形態では、関係性更新の手順が図１１の手順と一部異なる。
【０１３８】
図２０は、第３の実施の形態の関係性更新の例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。第３の実施の形態では、図１１のステップＳ２４に代えて、ステップＳ２４ａ，Ｓ２４ｂを実行する点が異なる。そこで、ステップＳ２４ａ，Ｓ２４ｂを説明し、他のステップの説明を省略する。
【０１３９】
（Ｓ２４ａ）制御部１５０は、解析対象データの座標で示されるベクトル（解析対象データの位置ベクトル）と、解析対象セグメントの座標間を結ぶベクトルとの内積を、解析対象データ毎に計算する。位置ベクトルは原点に対する各データの座標位置を示すベクトルである。
【０１４０】
（Ｓ２４ｂ）制御部１５０は、ステップＳ２４ａで求めた各内積をソートし、内積の大きさの順に各データをグループ化する。
図２１は、第３の実施の形態の内積の例を示す図である。座標系Ｆ６では、ベクトルＶ，Ｖ１，Ｖ２，Ｖ３，Ｖ４を例示している。ベクトルＶは、セグメントＳＧ１の座標を始点、セグメントＳＧ２の座標を終点とするベクトルである。
【０１４１】
ベクトルＶ１は、データＡの座標で示されるベクトル（データＡの位置ベクトル）である。ベクトルＶ２は、データＢの座標で示されるベクトル（データＢの位置ベクトル）である。ベクトルＶ３は、データＣの座標で示されるベクトル（データＣの位置ベクトル）である。ベクトルＶ４は、データＤの座標で示されるベクトル（データＤの位置ベクトル）である。
【０１４２】
例えば、ベクトルＶとベクトルＶ１との内積は−９．６である。ベクトルＶとベクトルＶ２との内積は１２である。ベクトルＶとベクトルＶ３との内積は１．２である。ベクトルＶとベクトルＶ４との内積は１２である。内積の大きさにより、データＡ，Ｂ，Ｃ，Ｄの座標が、セグメントＳＧ１，ＳＧ２のどちらの座標に近いかを相対的に評価できる。
【０１４３】
図２２は、第３の実施の形態の内積のソート結果の例を示す図である。図２２では、ベクトルＶに対するベクトルＶ１，Ｖ２，Ｖ３，Ｖ４それぞれの内積および各内積に対応するデータを昇順に並べている（図２２では、紙面の上から順に並べている）。具体的には、データＡ，Ｃ，Ｂ，Ｄの順となる（ただし、データＢ，Ｄの内積の値は同じなので、データＢ，Ｄの順序は入れ替わってもよい）。
【０１４４】
ベクトルＶは、セグメントＳＧ１の座標を始点、セグメントＳＧ２の座標を終点としたベクトルである。このため、ベクトルＶとデータのベクトルとの内積が小さい程、データの座標はセグメントＳＧ２の座標よりもセグメントＳＧ１の座標に近い。したがって、この場合、制御部１５０は、データＡ，ＣをセグメントＳＧ１に所属させると決定する。また、データＢ，ＤをセグメントＳＧ２に所属させると決定する。その結果、制御部１５０は、所属テーブル１３３を所属テーブル１３３ａのように更新する。
【０１４５】
このように、各データのベクトルとセグメント間のベクトルとの内積を用いて、セグメントに所属させるデータを決定してもよい。この場合、図１３のテーブル１３４で示したように、距離の合計ＤＳの候補を全て求めるよりも、演算コストを軽減し得る。この内積を用いる方法は、２つのセグメント間でデータの所属を決定する際に特に有用である。
【０１４６】
なお、セグメントサイズとして２を想定したが、３以上としてもよい。例えば、セグメントサイズをｋ（ｋは３以上の整数）個とし、２ｋ個のデータをセグメントＳＧ１，ＳＧ２に分ける場合を考える。
【０１４７】
この場合、制御部１５０は、２ｋ個のデータの座標で示される２ｋ個のベクトルと、セグメントＳＧ１の座標からセグメントＳＧ２の座標へ向けたベクトルとの２ｋ個の内積を求める。そして、相対的に内積の小さいｋ個のデータをセグメントＳＧ１に所属させる。また、相対的に内積の大きいｋ個のデータをセグメントＳＧ２に所属させる。このように、セグメントサイズが３以上の場合にも第３の実施の形態の方法を適用できる。
【０１４８】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２，３の実施の形態との相違する事項を主に説明し、共通する事項の説明を省略する。
【０１４９】
第２，第３の実施の形態では、データ間に関係性が検出されるたびに関係性が検出された各データの座標を更新するものとした。一方、関係性の検出が複数回行われるたびに、関係性の検出された各データの座標を更新してもよい。第４の実施の形態では、この機能を提供する。
【０１５０】
ここで、第４の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第４の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第４の実施の形態の装置や機能と同様である。そこで、第４の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。ただし、第４の実施の形態では、データ管理テーブル１３２に代えて、データ管理テーブル１３２ｂを用いる点が、第２の実施の形態と異なる。
【０１５１】
図２３は、第４の実施の形態のデータ管理テーブルの例を示す図である。データ管理テーブル１３２ｂは、管理情報記憶部１３０に格納される。データ管理テーブル１３２ｂは、データ、座標および関係性の項目を含む。
【０１５２】
データの項目には、データの識別情報が登録される。座標の項目には、当該データに対応付けられた座標が登録される。関係性の項目には、当該データに対して関係性が検出された他のデータの識別情報が登録される。
【０１５３】
例えば、データ管理テーブル１３２ｂには、データが“Ａ”、座標が“（３，６）”、関係性が“Ｃ”という情報が登録される。これは、データＡに対応付けられた２次元座標が“（３，６）”であることを示す。また、データＡ，Ｃは連続してアクセスされたことを示す。
【０１５４】
次に、第４の実施の形態の処理手順を説明する。第４の実施の形態では、アクセス処理の手順が図１０の手順と一部異なる。
図２４は、第４の実施の形態の関係性更新の例を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。第４の実施の形態では、図１０のステップＳ１５に代えて、ステップＳ１５ａ，Ｓ１５ｂを実行する点が異なる。そこで、ステップＳ１５ａ，Ｓ１５ｂを説明し、他のステップの説明を省略する。
【０１５５】
（Ｓ１５ａ）アクセス部１４０は、データ間の関係性を検出したか否かを判定する。検出した場合、アクセス部１４０は、データ管理テーブル１３２ｂに検出したデータ間の関係性を記録し、処理をステップＳ１５ｂに進める。検出していない場合、処理を終了する。ここで、ステップＳ１５で説明したように、アクセス部１４０は、２つのデータが連続してアクセスされた場合に、これらのデータについて、「連続してアクセスされた」という関係性を検出する。例えば、データＡ，Ｃが連続してアクセスされたなら、データ管理テーブル１３２ｂのデータＡのエントリ（関係性の項目）にデータＣを記録し、データＣのエントリ（関係性の項目）にデータＡを記録する。
【０１５６】
（Ｓ１５ｂ）アクセス部１４０は、前回データの所属を決定してから関係性の検出を所定回数（例えば、２回または５回など）行ったか否かを判定する。所定回数行った場合、処理をステップＳ１６に進める。所定回数行っていない場合、処理を終了する。
【０１５７】
このように、アクセス部１４０は、データ管理テーブル１３２ｂにデータ間の関係性を記録してもよい。この場合、ステップＳ１６において（あるいは、図１１の関係性更新の処理において）、制御部１５０はデータ管理テーブル１３２ｂを参照し、関係性の項目に他のデータが記録された全てのデータについて、検出された関係性に応じて座標を更新する。そして、更新後の座標に基づいてセグメントの所属を決定する。制御部１５０は、セグメントの所属を決定したデータについては、データ管理テーブル１３２ｂの関係性の項目をクリアする。
【０１５８】
なお、ステップＳ１５ｂでは、データ間の関係性を所定回数検出したか否かを判定するものとしたが、前回データの所属を決定してから所定時間が経過したか否かを判定してもよい。その場合、所定時間が経過していれば、処理をステップＳ１６に進める。所定時間が経過していなければ、処理を終了する。
【０１５９】
図２５は、第４の実施の形態の更新直後の管理情報の例を示す図である。図２５（Ａ）はデータ管理テーブル１３２ｃを例示している。例えば、ステップＳ１５ｂの所定回数を２回とし、データＡ，Ｃの関係性およびデータＢ，Ｄの関係性（２つの関係性）が検出されたタイミングで、制御部１５０は、これらの各データの座標を更新する。座標を更新する直前では、データＡ，ＢはセグメントＳＧ１に属している。また、データＣ，ＤはセグメントＳＧ２に属している。
【０１６０】
したがって、制御部１５０は式（１）、（２）を用いて、データＡの座標をセグメントＳＧ２の座標を用いて更新する（データＣがセグメントＳＧ２に属するため）。また、データＣの座標をセグメントＳＧ１の座標を用いて更新する（データＡがセグメントＳＧ１に属するため）。
【０１６１】
同様に、制御部１５０は式（１）、（２）を用いて、データＢの座標をセグメントＳＧ２の座標を用いて更新する（データＤがセグメントＳＧ２に属するため）。また、データＤの座標をセグメントＳＧ１の座標を用いて更新する（データＢがセグメントＳＧ１に属するため）。なお、データ管理テーブル１３２ｃでは、各データの関係性の項目の設定はクリアされている（ハイフン“−”と表記している）。
【０１６２】
ここで、データ管理テーブル１３２ｃでは、α＝０．９とした場合のデータＡ，Ｂ，Ｃ，Ｄの更新後の座標を図示している。その結果、制御部１５０は、データＡ，ＣをセグメントＳＧ１に所属させ、データＢ，ＤをセグメントＳＧ２に所属させると決定する。図２５（Ｂ）は更新後の所属テーブル１３３ｂを示している。
【０１６３】
図２６は、第４の実施の形態の更新後のグループの例を示す図である。座標系Ｆ７では、図２５で示したデータＡ，Ｂ，Ｃ，Ｄの座標更新を図示している。制御部１５０は、当該座標更新の結果、データ管理テーブル１３２ｃを得る。
【０１６４】
座標系Ｆ８は、所属テーブル１３３ｂで示されるようにグループ分けした状態を示している。領域Ｒ１１ｂは、セグメントＳＧ１に所属させるデータＡ，Ｃを囲った領域である。領域Ｒ１１ｂをグループＧ１１に対応する領域ということもできる。領域Ｒ１２ｂは、セグメントＳＧ２に所属させるデータＢ，Ｄを囲った領域である。領域Ｒ１２ｂをグループＧ１２に対応する領域ということもできる。
【０１６５】
このように、サーバ１００は、データ間の関係性の検出内容を記録しておき、複数回の検出を行った後に、一括して、関係性の検出されたデータの座標を更新してもよい。この場合も第２の実施の形態と同様に、サーバ１００はＲＡＭ１０２の使用量の増大を抑えながら、グループ化の精度を向上できる。
【０１６６】
［第５の実施の形態］
次に、第５の実施の形態を説明する。第２〜第４の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１６７】
第２〜第４の実施の形態では、データを管理するノードとしてサーバ１００を想定した。一方、複数のノードを設けて、各セグメントを複数のノードで分散して管理することも考えられる。各ノードのデータアクセスに伴う負荷を軽減でき、また、データアクセスの高速化を図れるからである。
【０１６８】
図２７は、第５の実施の形態の情報処理システムの例を示す図である。第５の実施の形態の情報処理システムでは、第２の実施の形態で説明したサーバ１００に加えて、サーバ１００ａ，１００ｂを含む。サーバ１００ａ，１００ｂは、ネットワーク１０に接続されている。サーバ１００ａ，１００ｂは、サーバ１００と同様の機能を備えたサーバコンピュータである。
【０１６９】
サーバ１００，１００ａ，１００ｂは、複数のセグメントを分散管理する。例えば、セグメントＳＧ１をサーバ１００が担当し、セグメントＳＧ２をサーバ１００ａが担当し、セグメントＳＧ３をサーバ１００ｂが担当する。何れかのセグメントのデータに対するアクセス要求を受け付けた場合は、当該セグメントを担当するサーバが当該アクセス要求に応答する。例えば、サーバ１００ｂがセグメントＳＧ１のデータに対するアクセス要求を受け付けた場合、サーバ１００ｂはサーバ１００に当該アクセス要求を転送する。サーバ１００は、当該アクセス要求を受け付けると、要求されたデータを要求元に送信する。
【０１７０】
ここで、サーバ１００ａ，１００ｂは、サーバ１００と同様のハードウェアを用いて実現できる。また、サーバ１００ａ，１００ｂの機能は、図４で説明したサーバ１００の機能と同様である。ただし、各サーバの制御部は相互に通信して、各サーバで保持されるデータ管理テーブルおよび所属テーブルを最新の状態に同期する。また、サーバ１００，１００ａ，１００ｂは、セグメントと担当サーバとの対応関係を保持している。
【０１７１】
図２８は、第５の実施の形態のセグメント担当テーブルの例を示す図である。セグメント担当テーブル１３５は、管理情報記憶部１３０に格納される。サーバ１００ａ，１００ｂもセグメント担当テーブル１３５と同様のテーブルを保持する。セグメント担当テーブル１３５は、セグメントおよび担当サーバの項目を含む。
【０１７２】
セグメントの項目には、セグメントの識別情報が登録される。担当サーバの項目には、当該セグメントを担当するサーバの識別情報が登録される。例えば、セグメント担当テーブル１３５には、セグメントが“ＳＧ１”、担当サーバが“サーバ１００”という情報が登録される。これは、セグメントＳＧ１をサーバ１００が担当することを示している。
【０１７３】
このように、各サーバは、何れのセグメントを何れのサーバが担当するかを把握している。このため、データの座標を変更することで、セグメントに対するデータの所属が変更になった場合にも、各サーバは、何れのサーバに当該データを送信すればよいかを把握できる。
【０１７４】
ここで、第５の実施の形態でも第２〜第４の実施の形態と同様に、データ間の関係性の検出、各データの座標の更新およびセグメントに対するデータの所属の決定を行える。ただし、データ間の関係性を検出するために、各サーバは、今回何れのデータに対するアクセス要求に応答したかを互いに通知し合う。あるいは、アクセス要求に前回アクセスされたデータが含まれていれば、アクセス要求から連続してアクセスされたデータを把握できるので、サーバ相互で当該通知を行わなくてもよい。
【０１７５】
また、関係性が検出された各データの座標の更新やセグメントに対するデータの所属の決定は、何れかのサーバで行われればよい。例えば、最後にアクセス要求に応答したサーバが、データ間の関係性の検出の有無に応じて、各データの座標の更新やセグメントに対するデータの所属の決定を行うことが考えられる。
【０１７６】
そして、何れかのサーバで、データの所属が変更されたセグメントがメモリ落ちする（対応するキャッシュ領域が解放される）際に、各サーバは、セグメント担当テーブルに基づいて、サーバ間で配置転換するデータの送受信を行う。こうして、各サーバはセグメントの内容を更新する。第５の実施の形態の場合にも、アクセス履歴を全て保持しておかなくてもよいので、サーバ１００，１００ａ，１００ｂはＲＡＭの使用量の増大を抑えられる。また、各データの座標に過去のアクセス履歴を反映させることができるので、当該座標を用いることでグループ化の精度を向上できる。
【０１７７】
なお、以上の説明では、主に、キャッシュ１１０としてＲＡＭ１０２を、データ記憶部１２０としてＨＤＤ１０３を想定したが、これら以外の組み合わせも考えられる。例えば、キャッシュ１１０としてＲＡＭ１０２を、データ記憶部１２０としてＳＳＤ、光ディスク１３およびテープ媒体などを用いてもよい。また、キャッシュ１１０としてＳＳＤを、データ記憶部１２０としてＨＤＤ１０３、光ディスク１３およびテープ媒体などを用いてもよい。
【０１７８】
また、第２〜第５の実施の形態では、主にサーバコンピュータを例示したが、データアクセスを制御するプロセッサ、ディスク装置およびキャッシュメモリを備えるストレージ装置に第２〜第５の実施の形態を適用することもできる。例えば、ストレージ装置にも、図４で例示したサーバ１００と同様の機能を設けることができる。
【０１７９】
また、第１の実施の形態の情報処理は、演算部１ｃにプログラムを実行させることで実現できる。また、第２〜第５の実施の形態の情報処理は、各サーバが備えるプロセッサにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体（例えば、光ディスク１３、メモリ装置１４およびメモリカード１６など）に記録できる。
【０１８０】
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１８１】
１  データ管理装置
１ａ，１ｂ  記憶部
１ｃ  演算部
ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６，ｄ７，ｄ８  距離
Ｇ１，Ｇ２  グループ
Ｒ１，Ｒ２，Ｒ１ａ，Ｒ２ａ  領域
Ｘ１，Ｘ２，Ｙ１，Ｙ２  データ
【図１】
2015075776.tif 000007
【図２】
2015075776.tif 000008
【図３】
2015075776.tif 000009
【図４】
2015075776.tif 000010
【図５】
2015075776.tif 000011
【図６】
2015075776.tif 000012
【図７】
2015075776.tif 000013
【図８】
2015075776.tif 000014
【図９】
2015075776.tif 000015
【図１０】
2015075776.tif 000016
【図１１】
2015075776.tif 000017
【図１２】
2015075776.tif 000018
【図１３】
2015075776.tif 000019
【図１４】
2015075776.tif 000020
【図１５】
2015075776.tif 000021
【図１６】
2015075776.tif 000022
【図１７】
2015075776.tif 000023
【図１８】
2015075776.tif 000024
【図１９】
2015075776.tif 000025
【図２０】
2015075776.tif 000026
【図２１】
2015075776.tif 000027
【図２２】
2015075776.tif 000028
【図２３】
2015075776.tif 000029
【図２４】
2015075776.tif 000030
【図２５】
2015075776.tif 000031
【図２６】
2015075776.tif 000032
【図２７】
2015075776.tif 000033
【図２８】
2015075776.tif 000034
【手続補正書】
【提出日】平成26年10月10日(2014.10.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
１つの態様では、コンピュータによって実行されるデータ管理プログラムであって、複数のデータを複数のグループに分け、複数のデータおよび複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するデータ管理プログラムが提供される。このデータ管理プログラムは、コンピュータに、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する、処理を実行させる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
また、１つの態様では、複数のデータを複数のグループに分け、複数のデータおよび複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するデータ管理装置が提供される。このデータ管理装置は、記憶部と演算部とを有する。記憶部は、各データに対応する座標および各グループに対応する座標の情報を記憶する。演算部は、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、記憶部を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、１つの態様では、データ管理方法が提供される。このデータ管理方法では、複数のデータを複数のグループに分け、複数のデータおよび複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するコンピュータが、第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、第２のグループの座標を用いて第１のデータの座標を更新し、第１のグループの座標を用いて第２のデータの座標を更新し、第１および第２のグループに属する各データの座標と、第１および第２のグループの座標とに基づいて、第１および第２のグループそれぞれに所属させるデータを決定する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１５０
【補正方法】変更
【補正の内容】
【０１５０】
ここで、第４の実施の形態の情報処理システムは、図２で示した第２の実施の形態の情報処理システムと同様である。また、第４の実施の形態の情報処理システムに含まれる装置や機能は、図３，４で示した第２の実施の形態の装置や機能と同様である。そこで、第４の実施の形態では、第２の実施の形態と同じ符号、名称を用いる。ただし、第４の実施の形態では、データ管理テーブル１３２に代えて、データ管理テーブル１３２ｂを用いる点が、第２の実施の形態と異なる。
【手続補正５】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータを複数のグループに分け、前記複数のデータおよび前記複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するデータ管理プログラムであって、
コンピュータに、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、
処理を実行させるデータ管理プログラム。
【請求項２】
前記更新では、前記第１のデータの座標と前記第２のグループの座標との距離および前記第２のデータの座標と前記第１のグループの座標との距離が小さくなるように前記第１および前記第２のデータの座標を更新する、請求項１記載のデータ管理プログラム。
【請求項３】
前記決定では、前記第１のグループに所属させる各データの座標と前記第１のグループの座標との距離の第１の和、および、前記第２のグループに所属させる各データの座標と前記第２のグループの座標との距離の第２の和の合計が最小になるように、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、請求項２記載のデータ管理プログラム。
【請求項４】
前記決定では、前記第１のグループの座標および前記第２のグループの座標の間を結ぶベクトルと前記第１のグループに属するデータの位置ベクトルとの内積を前記第１のグループに属するデータ毎に算出し、前記ベクトルと前記第２のグループに属するデータの位置ベクトルとの内積を前記第２のグループに属するデータ毎に算出し、算出した内積に基づいて前記第１および前記第２のグループそれぞれに所属させるデータを決定する、請求項２記載のデータ管理プログラム。
【請求項５】
前記第１のデータと前記第１のグループに属する第３のデータとの間に関係性が検出されると、前記第１のグループの座標を用いて前記第１および前記第３のデータの座標を更新する、請求項１乃至４の何れか１項に記載のデータ管理プログラム。
【請求項６】
グループの座標は、当該グループに属するデータを格納する記憶装置上の何れかの記憶領域にも対応付けられており、各データが何れのグループに所属するかに応じて、各データを格納する記憶装置上の記憶領域を決定する、請求項１乃至５の何れか１項に記載のデータ管理プログラム。
【請求項７】
何れかのデータに対するアクセス要求を受け付け、前記記憶装置に対するキャッシュに当該データが格納されていないとき、当該データが属するグループに所属する全てのデータを前記記憶装置から取得し、前記キャッシュに格納する、請求項６記載のデータ管理プログラム。
【請求項８】
前記関係性は、前記第１および前記第２のデータが連続してアクセスされたことである、請求項１乃至７の何れか１項に記載のデータ管理プログラム。
【請求項９】
複数のデータを複数のグループに分け、前記複数のデータおよび前記複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するデータ管理装置であって、
各データに対応する座標および各グループに対応する座標の情報を記憶する記憶部と、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、前記記憶部を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、演算部と、
を有するデータ管理装置。
【請求項１０】
複数のデータを複数のグループに分け、前記複数のデータおよび前記複数のグループそれぞれに、他のデータあるいは他のグループとの関係を反映した座標を付与して管理するデータ管理方法であって、コンピュータが、
第１のグループに属する第１のデータと第２のグループに属する第２のデータとの間に関係性が検出されると、各データに対応する座標および各グループに対応する座標の情報を参照して、前記第２のグループの座標を用いて前記第１のデータの座標を更新し、前記第１のグループの座標を用いて前記第２のデータの座標を更新し、
前記第１および前記第２のグループに属する各データの座標と、前記第１および前記第２のグループの座標とに基づいて、前記第１および前記第２のグループそれぞれに所属させるデータを決定する、
データ管理方法。