(57)【要約】【課題】記憶領域の位置に応じて読み出し性能の異なる記憶装置からのデータの読み出し効率を向上させる。【解決手段】  データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、第１格納装置から１以上のセグメントを選択する選択部と、選択されたセグメントに含まれるデータ間の関連性に基づく評価値を算出する算出部と、評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における格納領域の位置に応じた読み出し性能についての情報とに基づいて、格納領域における選択されたセグメントの配置位置を決定する決定部と、を含むデータ配置装置により、上記課題の解決を図る。【選択図】図１
2016126619.tif 000002
【特許請求の範囲】
【請求項１】
データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、該第１格納装置から１以上のセグメントを選択する選択部と、
選択された前記セグメントに含まれる前記データ間の前記関連性に基づく評価値を算出する算出部と、
前記評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における前記格納領域の位置に応じた読み出し性能についての情報とに基づいて、該格納領域における前記選択されたセグメントの配置位置を決定する決定部と、
を備えることを特徴とするデータ配置装置。
【請求項２】
前記算出部は、前記セグメントに含まれる前記データ間の前記関連性が強いほど、前記評価値を高く算出し、
前記決定部は、前記評価値と前記読み出し性能情報とに基づいて、前記評価値が高い前記セグメントほど、前記配置位置を、より読み出し性能の高い位置に決定する
ことを特徴とする請求項１に記載のデータ配置装置。
【請求項３】
前記データ配置装置は、さらに、
決定された前記配置位置に基づいて、前記選択されたセグメントを前記格納領域に書き込む書込部
を備えることを特徴とする請求項１または２に記載のデータ配置装置。
【請求項４】
前記データ配置装置は、さらに、
読み出し要求で指定されたデータを含む前記セグメントの前記配置位置に応じて、前記格納領域から読み出すセグメントの個数を変更し、前記配置位置から連続した格納領域に配置されているセグメントを前記個数分読み出す読出部と、
を備えることを特徴とする請求項１〜３のうちいずれか１項に記載のデータ配置装置。
【請求項５】
前記関連性は、前記データのアクセス履歴から生成されるデータ間の関連性である
ことを特徴とする請求項１〜４のうちいずれか１項に記載のデータ配置装置。
【請求項６】
コンピュータに、
データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、該第１格納装置から１以上のセグメントを選択し、
選択した前記セグメントに含まれる前記データ間の該関連性に基づく評価値を算出し、
前記評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における前記格納領域の位置に応じた読み出し性能についての情報とに基づいて、該格納領域における前記選択したセグメントの配置位置を決定する、
処理を実行させることを特徴とするデータ配置プログラム。
【請求項７】
コンピュータが、
データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、該第１格納装置から１以上のセグメントを選択し、
選択した前記セグメントに含まれる前記データ間の該関連性に基づく評価値を算出し、
前記評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における前記格納領域の位置に応じた読み出し性能についての情報とに基づいて、該格納領域における前記選択したセグメントの配置位置を決定する、
ことを特徴とするデータ配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの配置技術に関する。
【背景技術】
【０００２】
ストレージ装置は、サイズの小さなデータへの不規則なアクセスにおけるスループットが低く、シーケンシャルアクセスのコストに比べて、ランダムアクセスのコストが高い。このスループットを向上させる技術として、キャッシュ技術がある。
【０００３】
キャッシュ技術は、処理速度の速い制御装置が低速の記憶装置からデータをより速く読み出す場合にメモリを使用して処理時間を短縮する技術である。制御装置が低速の記憶装置からデータを読み出した場合、その読み出したデータを一時的にメモリに保持しておくことで、次回からはハードディスクより読み書きが早いメモリからデータを読み出せる。
【０００４】
このようなキャッシュ技術に関して、例えば、least frequently used（ＬＦＵ）方式、least recently used（ＬＲＵ）方式がある。またはキャッシュ技術の１つとして、アクセス履歴に基づき、関連性のあるデータを同一のセグメントに取りまとめ、ディスクへ書き戻すアクティブロケータ（ＡＬ）技術がある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１１４５３８号
【特許文献２】特表２００５−５０２１２１号公報
【特許文献３】特開平１１−８５４１１号公報
【特許文献４】特開２０１１−１７５３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＡＬ技術により生成されるセグメントには、関連性の強いデータが集約されたセグメントと、関連性がそれほど強くないデータが集まったセグメントが存在する。読み出し効率が高いデータとは、関連性の強いデータが集約されたセグメントには、関連するデータ同士が含まれているため、キャッシュに読み出すと、キャッシュヒット率が高くなりやすい（すなわち、読み出し効率が高い）。一方、関連性がそれほど強くないデータが集まったセグメントには、関係のないデータ同士またはあまり関係のないデータ同士が含まれているため、キャッシュに読み出してもキャッシュヒット率が高くなりにくい（すなわち、読み出し効率が低い）。
【０００７】
上記したセグメントの「読み出し効率が高い」または「読み出し効率が低い」という特性は、データアクセスのパターンや、個別のデータの重要度の変更に応じて、変化する。
【０００８】
しかしながら、データ（ＡＬの場合はセグメント）のサイズ・アクセス頻度・特性や、ディスクの特性を考慮せずにデータを書き戻すと、読み出し効率が異なるセグメントが混在して書き戻されてしまう。その結果、次にディスクからまとめて読み出される場合には、無駄なデータも読み出されることになる。
【０００９】
また、ディスクのシーケンシャルｒｅａｄ性能は、ディスクの内周側よりも外周側のデータの読み出し時間が短く、すなわちシーケンシャルｒｅａｄ性能が高い。このように、ディスクのシーケンシャルｒｅａｄ性能は、データの物理的位置（ディスクの内周か外周）によって、例えば１．５倍から最大２倍の性能差がある。したがって、サイズの大きなデータをディスクから読み出す場合、データの物理的位置によって読出し時間が大きく異なる。
【００１０】
しかしながら、データをまとめて読み出すことはデータ単体で読み出すより読み出しコストが大きい。そのため、読み出し効率が低いセグメントが内周に記録されると、外周に記録された場合より、まとめて読み出すときの読出しコストが大きくなってしまう。
【００１１】
本発明は、一側面として、記憶領域の位置に応じて読み出し性能の異なる記憶装置からのデータの読み出し効率を向上させる技術を提供する。
【課題を解決するための手段】
【００１２】
本発明の一側面にかかるデータ配置装置は、選択部、算出部、決定部を含む。選択部は、データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、第１格納装置から１以上のセグメントを選択する。算出部は、選択されたセグメントに含まれるデータ間の関連性に基づく評価値を算出する。決定部は、評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における格納領域の位置に応じた読み出し性能についての情報とに基づいて、格納領域における選択されたセグメントの配置位置を決定する。
【発明の効果】
【００１３】
本発明の一側面によれば、記憶領域の位置に応じて読み出し性能の異なる記憶装置からのデータの読み出し効率を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態におけるデータ配置装置の一例を示す。
【図２】本実施形態における情報処理システムの一例を示す。
【図３】本実施形態における、レコード及びセグメントについて説明するための図である。
【図４】本実施形態におけるサーバの一例を示す。
【図５】本実施形態におけるレコード・セグメント対応テーブルの一例である。
【図６】本実施形態における関連性保管テーブル３４の一例である。
【図７】本実施形態におけるセグメント管理テーブルの一例である。
【図８】本実施形態における空き領域管理テーブルの一例である。
【図９】本実施形態におけるディスク性能保管テーブルの一例である。
【図１０】本実施形態における関連性情報の蓄積について説明するための図である。
【図１１】図１０に対応する関連性保管テーブルの更新例を示す。
【図１２】本実施形態におけるリクエスト到着に応じて実行されるセグメント管理テーブルの更新処理の全体の流れを示すフローチャートの一例である。
【図１３】関連性解析部２３による解析処理（Ｓ４）を説明するための図である。
【図１４】本実施形態におけるセグメントのディスクへの書き戻しフローを示す。
【図１５】本実施形態におけるリクエストが指定するレコードをメモリ３１又はディスク４１から読み出して要求元に送信するまでの処理（Ｓ１）の詳細なフローを示す。
【図１６】本実施形態における読み出し効率に応じたセグメントの配置及びセグメントの読み出し単位について説明するための図である。
【発明を実施するための形態】
【００１５】
図１は、本実施形態におけるデータ配置装置の一例を示す。データ配置装置１は、選択部２、算出部３、決定部４を含む。データ配置装置１の一例として、サーバ１１が挙げられる。
【００１６】
選択部２は、データ間の関連性に応じてグループ化されたデータ群である複数のセグメントが格納された第１格納装置の空き容量に応じて、第１格納装置から１以上のセグメントを選択する。選択部２の一例として、書き戻し実行部２６として機能する制御装置２１が挙げられる。第１格納装置の一例として、メモリ３１が挙げられる。
【００１７】
算出部３は、選択されたセグメントに含まれるデータ間の関連性に基づく評価値を算出する。算出部３の一例として、特性抽出部２７として機能する制御装置２１が挙げられる。第２格納装置の一例として、ディスク４１が挙げられる。
【００１８】
決定部４は、評価値と、格納領域の位置に応じて読み出し性能が異なる第２格納装置における格納領域の位置に応じた読み出し性能についての情報とに基づいて、格納領域における選択されたセグメントの配置位置を決定する。決定部４の一例として、記録場所決定部２９として機能する制御装置２１が挙げられる。格納領域の位置に応じた読み出し性能についての情報の一例としては、ディクス性能保管テーブル３７が挙げられる。
【００１９】
このように構成することにより、記憶領域の位置に応じて読み出し性能の異なる記憶装置からのデータの読み出し効率を向上させることができる。
【００２０】
算出部３は、セグメントに含まれるデータ間の関連性が強いほど、評価値を高く算出する。決定部４は、評価値と読み出し性能情報とに基づいて、評価値が高いセグメントほど、配置位置を、より読み出し性能の高い位置に決定する。
【００２１】
このように構成することにより、アクセスされやすいデータ群を含むセグメントを読み出し性能の高い位置に配置することにより、読み出しコストの増加を抑えることができる。
【００２２】
データ配置装置１１は、さらに、書込部５を含む。書込部５は、決定された配置位置に基づいて、選択された複数のセグメントを格納領域に書き込む。書込部５の一例として、書き戻し実行部２６として機能する制御装置２１が挙げられる。
【００２３】
このように構成することにより、より読み出し効率のよいセグメントが読み出し性能の高い位置に配置することにより、読み出しコストの増加を抑えることができる。
【００２４】
データ配置装置１は、さらに、読出部６を含む。読出部６は、読み出し要求で指定されたデータを含むセグメントの配置位置に応じて、格納領域から読み出すセグメントの個数を変更し、配置位置から連続した格納領域に配置されているセグメントを個数分読み出す。読出部６の一例として、入出力管理部２２として機能する制御装置２１が挙げられる。
【００２５】
このように構成することにより、読み出し効率の高いセグメントほど、読み出し性能が高い位置に配置されているので、より多くのセグメントをまとめて読み出すようにしている。一方、読み出し効率の低いセグメントほど、読み出し性能が低い位置に配置されているが、その分、より少ないセグメントをまとめて読み出す、または１セグメントを読み出すようにしている。これにより、読み出しコストの増加を抑えることができる。
【００２６】
また、上記関連性は、データのアクセス履歴から生成されるデータ間の関連性である。これにより、データのアクセス履歴に基づき形成されるセグメントに含まれるデータの内容や性質に応じて、ディスク上での配置を決定し、読み出しコストの増加を抑えることができる。
【００２７】
図２は、本実施形態における情報処理システムの一例を示す。情報処理システムにおいて、サーバ装置（以下、サーバと称する）１１は、通信ネットワーク（以下、単に、ネットワークと称する）６１を介して、情報処理装置の一例であるクライアント４１と接続されている。クライアント５１は、サーバ１１にデータの読み込みや書込み等のアクセス要求（以下、「リクエスト」と称する）を行う。本実施形態では、１リクエストにより指定されるデータを「レコード」と称する。
【００２８】
サーバ１１は、制御装置２１、メモリ装置（以下、「メモリ」と称する）３１、ストレージ装置（ディスク）４１を含む。制御装置２１は、中央演算処理装置（ＣＰＵ）等のプロセッサである。
【００２９】
ストレージ装置４１は、例えば、ハードディスクドライブ（ＨＤＤ）等のディスク装置である。以下では、ストレージ装置４１をディスク４１と称する。
【００３０】
メモリ３１は、ディスク４１に比して高速にアクセス可能な記憶装置である。メモリ３１としては、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ等がある。
【００３１】
サーバ１１は、上記の構成に加えて、ＢＩＯＳ（Basic Input/Output System）を格納したＲＯＭ、プログラムメモリ等を有する。制御装置２１が実行するプログラムは、ネットワーク６１を介して取得されてもよいし、可搬型メモリやＣＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体がサーバ１１に装着されることにより取得されてもよい。制御装置２１が実行するプログラムには、本実施形態で説明する処理を実行するプログラムも含む。
【００３２】
本実施形態では、制御装置２１は、メモリ３１上のデータをディスク４１に書き戻す際、レコードの内容やレコード処理の内容に起因する特性も考慮し、ディスク４１上の記録場所を決定する。レコードの内容に起因する特性とは、レコードの重要度やアクセス回数等についての特性である。また、レコード処理の内容に起因する特性とは、関連するレコードは同時期にアクセスされて処理されるという経験則に基づいて、アクセス履歴を利用した特性である。レコードの内容やレコード処理の内容に起因する特性は、読み出し単位（セグメント）の読み出し効率に影響を与える。セグメントの詳細については図３で説明する。ディスク上の記録場所は、シーケンシャルｒｅａｄ性能が有意に異なる複数の領域に分割されている。制御装置２１は、その読み出し効率に応じていずれかの領域を指定して１以上のセグメントを書き込む。
【００３３】
制御装置２１は、セグメントをディスク４１に書き戻す際、複数のセグメントをまとめて書き戻す。まとめて書き戻す複数セグメントそれぞれについて優先度を算出し、優先度が高いセグメントからより高性能な領域に割り当てる。
【００３４】
制御装置２１は、データ処理（新規作成、参照、更新（ＡＬによる再配置など）など）が発生する度にデータの特性（筋の良さを示す指標）を抽出し、データごとにその特性情報を保存する。
【００３５】
制御装置２１は、複数のセグメントをディスクに書き戻す際、データ処理時に保存した特性情報基づいて、各セグメントの優先度を算出する。
【００３６】
図３は、本実施形態における、レコード及びセグメントについて説明するための図である。本実施形態では、説明の便宜のため、リクエストで指定されたデータを、レコードとして表す。レコードは、「キー」、「値」を含む。「キー」は、レコード（値）を一意に識別するための情報である。「値」は、「キー」より特定されるレコードの内容（値）である。
【００３７】
ディスク４１には、レコードがセグメント単位で記憶されている。セグメントとは、リクエストで指定されたレコードの履歴に基づいて、関連性が認められるレコードの集合であり、ディスク４１に対する読み書きの最小単位である。セグメントの内容は、後述するように制御装置２１の処理によって更新される。ここで、リクエストは、Ｒｅａｄ要求及びＷｒｉｔｅ要求を含む。
【００３８】
本実施形態では、例えば、セグメントサイズは固定サイズであるとする。また、メモリからディスクへセグメントを書き戻す際に、まとめ書きする単位（セグメント数）が調整される。
【００３９】
レコードは、セグメント単位で、ディスク４１から読み出され、メモリ３１に格納される。すなわち、リクエストで指定されたレコードが属するセグメントに含まれる全レコードが、ディスク４１から読み出され、メモリ３１に格納される。そして、メモリ３１の容量が不足した場合、メモリ３１に保持されたレコードは、セグメント単位で、ディスク４１に書き戻される。
【００４０】
図４は、本実施形態におけるサーバの一例を示す。上述の通り、サーバ１１は、制御装置２１、メモリ３１、ディスク４１を含む。メモリ３１は、ディスク４１から読み出された複数のセグメントをキャッシングして、一時的に格納する領域（以下、「キャッシュ領域」と称する）を含む。キャッシュ領域３２の容量が不足した場合、ＬＲＵ方式や、ＬＦＵ方式等のアルゴリズムを用いて、キャッシュ領域３２からいずれかのセグメントが抽出され、ディスク４１に書き戻される。
【００４１】
メモリ３１は、レコード・セグメント対応テーブル３３、関連性保管テーブル３４、セグメント管理テーブル３５、空き領域管理テーブル３６、ディスク性能保管テーブル３７を保持する。レコード・セグメント対応テーブル３３は、レコードを特定するキーと、そのレコードが属するセグメントとの対応関係を示す情報を格納する。関連性保管テーブル３４は、リクエストで指定されたレコード毎に、前回リクエストで指定されたレコードを順次関係付けて、累積したその関係付けの情報を管理するテーブルである。セグメント管理テーブル３５は、ディスク４１上における、セグメント毎の物理位置及び特性（指標値）を管理するテーブルである。空き領域管理テーブル３６は、ディスク４１上の空き領域を管理するテーブルである。ディスク性能保管テーブル３７は、ディスク４１上の物理位置毎の読み出し性能を管理するテーブルである。
【００４２】
制御装置２１は、本実施形態に係るプログラムを実行することにより、入出力管理部２２、解析要否判断部２３、関連性解析部２４、セグメント配置部２５、書き戻し実行部２６、特性抽出部２７、優先度算出部２８、記録場所決定部２９として機能する。
【００４３】
入出力管理部２２は、クライアント５１等の要求元から入力されたリクエストに応じてメモリ３１を検索し、メモリ３１にリクエストで指定されたレコードがなければさらにディスク４１を検索し、リクエストで指定されたレコードを要求元に送信する。なおリクエストは、クライアント５１が送信するだけでなく、サーバ１１において実行されているプロセスその他の主体がリクエストの発行元となる場合もあり得る。また、入出力装置がサーバ１１に接続されている場合、ユーザが入出力装置に対してリクエストを入力することも想定される。
【００４４】
リクエストが入力されると、入出力管理部２２は、まずメモリ３１からリクエストで指定されたレコードを検索する。リクエストで指定されたレコードがメモリ３１上に存在する場合に、入出力管理部２２は、そのレコードをメモリ３１から読み出して要求元に返信する。
【００４５】
また、入出力管理部２２は、リクエストで指定されたレコードがメモリ３１上に存在しない場合には、ディスク４１からリクエストで指定されたレコードを検索する。入出力管理部２２は、リクエストで指定されたレコードがディスク４１上に存在する場合に、レコード・セグメント対応テーブル３３を用いて、リクエストで指定されたレコードの属するセグメントに含まれる全レコードをディスク４１から読み出す。そして、入出力管理部２２は、その読み出したセグメントに含まれる全レコードのうち、リクエストで指定されたレコードを要求元に返信する。このとき、入出力管理部２２は、その読み出したセグメントに含まれる全レコードをメモリ３１に格納する。
【００４６】
なお、上記では、入出力管理部２２は、ディスク４１から読み出したセグメントに含まれる全レコードをメモリ３１へ格納する処理を、リクエストがあったタイミングで行う場合について説明したが、これに限定されない。例えば、入出力管理部２２は、一定期間のアクセス頻度を取得してアクセス頻度が高いセグメントを優先的にディスク４１から読み出してメモリ３１に格納してもよい。
【００４７】
解析要否判断部２３は、関連性保管テーブル３４を用いて、連続するリクエスト間で指定されたレコードが属するセグメントが同一かどうかを判定することにより、関連性解析部２４に関連性の解析を行わせるか否かを決定する。
【００４８】
関連性解析部２４は、解析要否判断部２３の判定結果に応じて、関連性保管テーブル３４から、今回のリクエストで指定されたレコードの属するセグメントのレコードと、前回のリクエストで指定されたレコードの属するセグメントのレコードとの関連性を解析する。関連性解析部２４は、その解析結果に基づいて、レコードの所属するセグメントの決定を行う。
【００４９】
セグメント配置部２５は、関連性解析部２４の決定に従い、レコード・セグメント対応テーブル３３のセグメントの配置を更新する。
【００５０】
書き戻し実行部２６は、キャッシュ領域３２の容量が不足すると、入出力管理部２２からの指示に基づいて、書き戻し処理を実行する。書き戻し処理を実行する場合、書き戻し実行部２６は、特徴抽出部２７、優先度算出部３６、記録場所決定部２９を呼び出す。特徴抽出部２７、優先度算出部３６、記録場所決定部２９の処理後、書き戻し実行部２６は、書き戻し対象セグメントを、後述する記録場所決定部２９により割り当てられたディスク４１上の領域に書き戻す。
【００５１】
特徴抽出部２７は、レコード・セグメント対応テーブル３３、関連性保管テーブル３４を参照し、セグメントの特性として読み出し効率の高さを示す指標値を算出し、算出した指標値をセグメント管理テーブル３５に格納する。
【００５２】
優先度算出部３６は、算出された指標値に基づいて、セグメント毎に、読み出し効率の高さについての優先度を決定する。
【００５３】
記録場所決定部２９は、空き領域管理テーブル３６とディスク性能保管テーブル３７を参照して、空き領域のディスクの物理位置に応じて、ディスク性能順に空き領域を順番付けする。記録場所決定部２９は、優先度を決めた全セグメントを、優先度の高い順に、よりディスク性能の高い空き領域に割り当てる。
【００５４】
図５は、本実施形態におけるレコード・セグメント対応テーブルの一例である。レコード・セグメント対応テーブル３３には、メモリ３１及びディスク４１に格納された全レコード分のキーと、そのキーに対応するセグメント名とが対応付けられて格納されている。
【００５５】
レコード・セグメント対応テーブル３３は、「キー」、「セグメント」の項目を含む。「キー」は、レコードを特定する情報であり、レコード名に相当する。「セグメント」は、キーにより特定されるレコードが属するセグメントを示す。
【００５６】
図６は、本実施形態における関連性保管テーブル３４の一例である。関連性保管テーブル３４は、キャッシュ領域３２に保持されているレコードを対象としたテーブルである。関連性保管テーブル３４は、今回リクエストで指定されたレコードと、前回リクエストで指定されたレコードを関係付けたテーブルである。
【００５７】
関連性保管テーブル３４は、「キー」、「関連性」の項目を含む。「キー」は、レコードを特定する情報であり、レコード名に相当する。
【００５８】
「関連性」には、今回リクエストで指定されたレコードを示す「キー」Ｋ１の前にリクエストで指定されたレコードの「キー」Ｋ２と、Ｋ１とＫ２との関連性の強さｎと、が順次累積して格納される。図６では、関連性は｛Ｋ２：ｎ｝と表記される。関連性の強さｎは、アクセス回数×重要度で表される。関連性の強さについては後述する。
【００５９】
たとえば、今回リクエストで指定されたレコードが“Ａ”であり、前回リクエストで指定されたレコードが“Ｃ”であり、レコードＡＣ間の関連性の強さが３であるとする。この場合、関連性保管テーブル３４において、キー＝Ａに対応する項目「関連性」に｛Ｃ：３｝が格納される。
【００６０】
図７は、本実施形態におけるセグメント管理テーブルの一例である。セグメント管理テーブル３５は、「セグメント名」、「物理位置」、「指標値」の項目を含む。「セグメント名」は、セグメントを特定する情報である。「物理位置」は、ディスク４１におけるそのセグメントの物理位置を示す。「指標値」は、そのセグメントの読み出し効率の高さを示す値であり、指標値が高いほど読み出し効率が高いことを示す。
【００６１】
図８は、本実施形態における空き領域管理テーブルの一例である。空き領域管理テーブル３６は、「物理位置」、「領域サイズ」の項目を含む。「物理位置」には、ディスク４１において、情報が書き込まれていない領域の開始位置（Logical Block Addressing（LBA））を示す。「領域サイズ」には、その物理位置に対応する空き領域の領域サイズを示す。
【００６２】
図９は、本実施形態におけるディスク性能保管テーブルの一例である。ディスク性能保管テーブル３７は、「物理位置範囲」、「読み出し性能」、「読み出し方」の項目を含む。「物理位置範囲」は、ディスク４１上の物理位置の範囲を示す。「読み出し性能」は、その物理位置範囲の、単位時間当たり読み出し性能を示す。「読み出し方」は、１回のread処理にてまとめて読み出すセグメント数を示す。
【００６３】
図９では、物理位置：０〜２５０の場合、読み出し性能：９０メガバイト（ＭＢ）／secであり、読み出し方は「まとめ読みしない」（すなわち、１セグメントずつ読み出す）と設定されている。物理位置：２５１〜５００の場合、読み出し性能：１００ＭＢ／secであり、読み出し方は「セグメント２個づつまとめ読み」と設定されている。物理位置：５０１〜１０００の場合、読み出し性能：１２０ＭＢ／secであり、読み出し方は「セグメント４個づつまとめ読み」と設定されている。物理位置：１００１〜の場合、読み出し性能：１４０ＭＢ／secであり、読み出し方は「セグメント８個づつまとめ読み」と設定されている。
【００６４】
このように、ディスク性能保管テーブル３７では、物理位置範囲の読み出し性能が高くなるほど、まとめて読み出すセグメント数を増やすように、「物理位置範囲」、「読み出し性能」、「読み出し方」のエントリが設定されている。
【００６５】
次に関連性保管テーブル３４にて管理される関連性情報の蓄積処理について説明する。本実施形態では、同じクライアント５１から続けてアクセスされたレコード間には関連性があり、続けてアクセスされた回数が多いほど、関連性が強いとみなす。
【００６６】
また、本実施形態では、同じクライアントから続けてアクセスされたレコード同士と、違うクライアントからのアクセスだが、偶然に入出力管理部２２に届いた順序が連続していたレコードとを区別し、後者は関連性がないとみなす。
【００６７】
また、本実施形態では、同じクライアントからのリクエストであっても、レコードによって重要度が違う場合があり、リクエストに指定された重要度が大きいほど、関連性が強いとみなす。例えば、Ｗｅｂのアクセスログを蓄積しておき、ユーザごとにＷｅｂサイトをたどった経歴を分析するデータ処理の場合、各Ｗｅｂサイトページがレコードに相当し、重要度が高い。一方、Ｗｅｂサイトに付随する広告データもレコードとなるが、ランダムにＷｅｂサイトに表示される（ランダムに続けてアクセスされる）ため、重要度は低い。
【００６８】
関連性情報の蓄積方法について説明する。同じクライアントからのリクエストには、共通のセッション番号が振られる。各リクエストには、レコードごとの重要度を表す数値を含める。他のレコードと全く関連がないレコードは、重要度０とする。重要度は、リクエストを投入するアプリケーションプログラムまたはユーザによって指定される。入出力管理部２２はリクエストを到着順にチェックし、共通のセッション番号で連続してアクセスされたレコードの後者を、前者の関連性情報として記録する。
【００６９】
図１０は、本実施形態における関連性情報の蓄積について説明するための図である。図１１は、図１０に対応する関連性保管テーブルの更新例を示す。図１０において、クライアントＸ，Ｙにて動作しているアプリケーションプログラムまたはユーザの指示により生成されるリクエストを、“Ｇｅｔ（Ｋ，Ｎ）”で表す。ここで、「Ｋ」は、レコードを特定するキーを示す。「Ｎ」は、そのレコードの重要度を示す数値である。
【００７０】
生成されたリクエストは、クライアントより発行される際に、クライアント毎にセッション番号が付与される。図１０では、クライアントＸより発行されるリクエストを、“Ｇｅｔ（Ｋ，Ｎ，ＳｅＮ）”で表す。ＳｅＮは、クライアント毎に設定されるセッション番号を示す。図１０の例では、クライアントＸより発行されるリクエストにはセッション番号として“Ｘ”が付与されるとする。クライアントＹより発行されるリクエストにはセッション番号として“Ｙ”が付与されるとする。
【００７１】
図１０の例では、クライアントＸ，Ｙが、矢印で示す順序（Ｒｑ１，Ｒｑ２，Ｒｑ３，Ｒｑ４，Ｒｑ５の順）で、入出力管理部２２にリクエストを発行するとする。本実施形態では、各リクエストには、今回のリクエストで指定されたレコードのキーと共に、前回のリクエストで指定されたレコードのキーも付与されているものとするがこれに限定されない。例えば、入出力管理部２２は、メモリ３１やレジスタ等に要求元毎のリクエストの履歴を保存していてもよい。
【００７２】
まず、クライアントＸから、リクエストＲｑ１：Ｇｅｔ（Ａ，１０，Ｘ）が発行される。このとき、重要度には、「１０」が設定されているものとする。図１０では、リクエストＲｑ１の前に発行されたリクエストはない。この場合、入出力管理部２２は、リクエストＲｑ１で指定されたレコード「Ａ」と関連するレコードはないと判定し、図１１（Ａ）に示すように、関連性保管テーブル３４を更新しない。
【００７３】
次に、クライアントＸから、リクエストＲｑ２：Ｇｅｔ（Ｂ，１０，Ｘ）が発行される。このとき、重要度には、「１０」が設定されているものとする。リクエストＲｑ２は、リクエストＲｑ１と同じセッションで、かつ続けてアクセスされている。この場合、入出力管理部２２は、Ｒｑ２で指定されたレコード「Ｂ」とＲｑ１で指定されたレコード「Ａ」とは関連していると判定する。この場合、入出力管理部２２は、図１１（Ｂ）に示すように、関連性保管テーブル３４を更新する。
【００７４】
具体的には、今回のリクエストＲｑ２で指定されたレコードのキーが「Ｂ」であり、前回のリクエストで指定されたレコードが「Ａ」であるので、入出力管理部２２は、関連性保管テーブル３４のキー「Ｂ」に対応する「関連性」に「Ａ」を格納する。また、入出力管理部２２は、レコード「Ｂ」と「Ａ」の関連性を算出し、関連性保管テーブル３４に格納する。レコード「Ｂ」と「Ａ」の関連性は、ＢとＡが続けてアクセスされた（同じセッション内で）回数１×重要度１０＝１０と算出される。
【００７５】
次に、クライアントＹから、リクエストＲｑ３：Ｇｅｔ（Ｃ，５，Ｙ）が発行される。このとき、重要度には、「５」が設定されているものとする。リクエストＲｑ３は、リクエストＲｑ２に続けてアクセスされているが、リクエストＲｑ２とは違うセッションである。この場合、入出力管理部２２は、Ｒｑ３で指定されたレコード「Ｃ」とＲｑ２で指定されたレコード「Ｂ」とは関連していないと判定する。この場合、入出力管理部２２は、図１１（Ｃ）に示すように、関連性保管テーブル３４を更新しない。
【００７６】
次に、クライアントＹから、リクエストＲｑ４：Ｇｅｔ（Ｄ，５，Ｙ）が発行される。このとき、重要度には、「５」が設定されているものとする。リクエストＲｑ４は、リクエストＲｑ３と同じセッションで、かつ続けてアクセスされている。この場合、入出力管理部２２は、Ｒｑ４で指定されたレコード「Ｄ」とＲｑ３で指定されたレコード「Ｃ」とは関連していると判定する。この場合、入出力管理部２２は、図１１（Ｄ）に示すように、関連性保管テーブル３４を更新する。
【００７７】
具体的には、今回のリクエストＲｑ４で指定されたレコードのキーが「Ｄ」であり、前回のリクエストで指定されたレコードが「Ｃ」であるので、入出力管理部２２は、関連性保管テーブル３４のキー「Ｄ」に対応する「関連性」に「Ｃ」を格納する。また、入出力管理部２２は、レコード「Ｄ」と「Ｃ」の関連性を算出し、関連性保管テーブル３４に格納する。レコード「Ｄ」と「Ｃ」の関連性は、ＤとＣが続けてアクセスされた（同じセッション内で）回数１×重要度５＝５と算出される。
【００７８】
次に、クライアントＹから、リクエストＲｑ５：Ｇｅｔ（Ｅ，０，Ｙ）が発行される。このとき、重要度には、「５」が設定されているものとする。リクエストＲｑ５は、リクエストＲｑ４と同じセッションで、かつ続けてアクセスされているが、重要度０のため、入出力管理部２２は、Ｒｑ５で指定されたレコード「Ｅ」は他のどのレコードとも関連していないと判定する。この場合、入出力管理部２２は、図１１（Ｅ）に示すように、関連性保管テーブル３４を更新しない。
【００７９】
図１２は、本実施形態におけるリクエスト到着に応じて実行されるセグメント管理テーブルの更新処理の全体の流れを示すフローチャートの一例である。本フローチャートは、サーバ１１に対してリクエストがなされる度に実行される。
【００８０】
まず、入出力管理部２２が、リクエストが指定するレコードをメモリ３１又はディスク４１から読み出して要求元に送信する（Ｓ１）。このとき、リクエストが指定するレコードがメモリ３１に存在しない場合、入出力管理部２２は、レコード・セグメント対応テーブル３３を用いて、リクエストが指定するレコードが属するセグメントの全レコードをディスク４１から読み出す。そして、入出力管理部２２は、読み出したセグメントの全レコードのうち、リクエストが指定するレコードを要求元に送信する。Ｓ１の処理については、図１５で詳述する。
【００８１】
次に、入出力管理部２２は、今回のリクエストに含まれる前回のリクエストが指定したレコードを参照して関連性保管テーブル３４を更新する（Ｓ２）。Ｓ２の処理は、図１０及び図１１で説明した処理に相当する。
【００８２】
関連性保管テーブル３４が更新されると、解析要否判断部２３は、関連性解析部２４による関連性解析が必要か否かを判定する（Ｓ３）。すなわち、解析要否判断部２３は、レコード・セグメント対応テーブル３３に基づいて、今回のリクエストが指定するレコード（今回レコードＲ１）と前回のリクエストが指定したレコード（前回レコードＲ２）とが異なるセグメントに属するか否かを判断する。今回レコードＲ１と前回レコードＲ２とが同じセグメントに属する場合、すなわち、関連性解析が不要と判断された場合（Ｓ３で「Ｎｏ」）、制御装置２１は本フローチャートの処理を終了する。
【００８３】
今回レコードＲ１と前回レコードＲ２とが異なるセグメントに属する場合、すなわち関連性解析が必要と判断された場合（Ｓ３で「Ｙｅｓ」）、関連性解析部２３は、レコードの関連性を解析する（Ｓ４）。関連性解析部２３は、例えばグラフ分割の手法を用いて、データ間の関連性を解析する。ここでは、関連性解析部２３は、今回レコードＲ１が属するセグメントに含まれる全レコードと、前回レコードＲ２が属するセグメントに含まれる全レコードとの間で、２レコードの組み合わせを求め、その２レコード間の関連性の強度を算出する。ここで、レコード間の関連性の強度とは、図１０、図１１で説明したアクセス回数に重要度を乗じて得られる値である。関連性解析部２３は、さらに、例えばセグメントの規則の範囲内で、２つのセグメントのパターンを求める。関連性解析部２３は、各パターンについて、２セグメントをまたぐ各レコードの組み合わせの関連性の強度の総和を算出する。関連性解析部２３は、その総和に応じて、セグメントのパターンを決定する。Ｓ４の処理については、図１３を用いて詳述する。
【００８４】
次に、セグメント配置部２５は、関連性解析部２３の解析結果に基づいて、レコードとセグメントの対応付けの変更が必要か否か、すなわち、セグメントの再編成をする必要があるかを判断する（Ｓ５）。いずれのレコードの所属先セグメントに変更がない場合、すなわちレコードとセグメントの対応付けの変更が不要と判断された場合（Ｓ５で「Ｎｏ」）、制御装置２１は本フローチャートの処理を終了する。
【００８５】
レコードの所属先セグメントに変更がある場合、すなわちレコードとセグメントの対応付けの変更が必要と判断した場合（Ｓ５で「Ｙｅｓ」）、セグメント配置部２５は、次の処理を行う。すなわち、セグメント配置部２５は、Ｓ５でのセグメントの再構成の結果に基づいて、レコードとセグメントの対応付けを変更する（Ｓ６）。
【００８６】
セグメント配置部２５は、その変更したレコードとセグメントとの対応関係に基づいて、レコード・セグメント対応テーブル３３を更新する（Ｓ７）。たとえば、Ｓ５でのセグメントの再構成の結果、レコードの所属するセグメントが変更された場合、レコード・セグメント対応テーブル３３において、そのレコードの「キー」に対応するセグメント名が更新される。
【００８７】
図１３は、関連性解析部２３による解析処理（Ｓ４）を説明するための図である。図１３（Ａ）に示すように、クライアントＸより今回受け付けたリクエストが、Ｇｅｔ（Ｈ，３，Ｘ）であり、前回受け付けたリクエストが、Ｇｅｔ（Ｇ，３，Ｘ）であるとする。
【００８８】
レコード・セグメント対応テーブル３３に示すように、今回レコードＨと前回レコードＧとは、異なるセグメントに属するから、関連性解析部２３による解析処理が行われる。
【００８９】
レコード・セグメント対応テーブル３３のレコード間の関係は、図１３（Ｂ）のように示される。関連性解析部２３は、今回レコードＨが属するセグメント＃６に含まれる全レコードＨ，Ｉと、前回レコードＧが属するセグメント＃５に含まれる全レコードＦ，Ｇとの間で、２レコードの組み合わせを求め、その２レコード間の関連性の強度を算出する。２つのレコード間で、相互に関連している場合には、関連性解析部２３は、関連性の強度の和をそのレコード間の関連性の強度とする。例えば、レコードＦＧ間のように、レコードＦについてレコードＧが関連し、かつレコードＧについてレコードＦが関連している場合には、レコードＦについてレコードＧの関連性強度＝１とレコードＦについてレコードＧの関連性強度＝３の和４を算出する。
【００９０】
これにより、図１３（Ｃ）に示すように、２つのセグメント間の、２つのレコードの組み合わせにおける、各レコード間の関連性の強度ＣＦＧ＝４、ＣＦＨ＝０、ＣＦＩ＝０、ＣＧＨ＝３、ＣＧＩ＝０、ＣＨＩ＝１が得られる。ここで関連性がないレコード間の関連性の強度Ｃは０で示される。
【００９１】
関連性解析部２３は、例えばセグメント内の最大レコード数（例えば３個）を満たす範囲内で、２つのセグメントに属する全レコード数を分割する全てのセグメントパターンを設定するとする。図１３（Ｂ）の例ではレコードの個数が４個（レコードＦ〜Ｉ）であり、１セグメントに収容可能な最大レコード数が３個であるとする。このとき、セグメントパターンは、３：１で分けた場合には４通り（（ＦＧＨ）（Ｉ）、（ＧＨＩ）（Ｆ）、（ＨＩＦ）（Ｇ）、（ＦＧＩ）（Ｈ））となる。また、２：２で分けた場合には３通り（（ＦＧ）（ＨＩ）、（ＦＨ）（ＧＩ）、（ＦＩ）（ＧＨ）、（ＧＨ）（ＦＩ）、（ＧＩ）（ＦＨ）、（ＨＩ）（ＦＧ））となる。このように、全部で７通りのセグメントパターンが設定される。
【００９２】
次に、関連性解析部２３は、図１３（Ｄ）に示すように、各セグメントパターンを採用した場合に、異なるセグメントに属することになったレコード同士の関連性の強度を全て抽出して合計する。
【００９３】
そして、関連性解析部２３は、異なるセグメントに属することになるレコードの組についての関連性の強度の合計が最も小さいセグメントパターンを選択し、新たなセグメントを決定する（Ｓ１７）。図１３（Ｂ）の場合には、以下のようになる。
（ＦＧＨ）（Ｉ）：ＣＦＩ＋ＣＧＩ＋ＣＨＩ＝１
（ＧＨＩ）（Ｆ）：ＣＦＧ＋ＣＦＨ＋ＣＦＩ＝４
（ＨＩＦ）（Ｇ）：ＣＦＧ＋ＣＧＨ＋ＣＧＩ＝７
（ＦＧＩ）（Ｈ）：ＣＦＨ＋ＣＧＨ＋ＣＨＩ＝３
（ＦＧ）（ＨＩ）：ＣＦＨ＋ＣＦＩ＋ＣＧＨ＋ＣＧＩ＝３
（ＦＨ）（ＧＩ）：ＣＦＧ＋ＣＦＩ＋ＣＧＨ＋ＣＨＩ＝８
（ＦＩ）（ＧＨ）：ＣＦＧ＋ＣＦＨ＋ＣＧＩ＋ＣＨＩ＝５
これより、全セグメントパターンのうち、セグメント（ＦＧＨ）と、セグメント（Ｉ）のセグメントパターンのレコード間の関連性の強度の合計が１となり、最も小さくなる。したがって、関連性解析部２３は、このセグメントパターン（ＦＧＨ）（Ｉ）を新たなセグメントとして決定する。
【００９４】
セグメント配置部２５は、関連性解析部２３による解析結果に応じて、図１３（Ｅ）に示すように、レコードとセグメントの対応付けを変更する（Ｓ６）。さらに、セグメント配置部２５は、その変更したレコードとセグメントとの対応関係に基づいて、レコード・セグメント対応テーブル３３を更新する。
【００９５】
なお、図１３では、強度Ｃを算出する場合、レコード間の関連性の強度（アクセス回数に重要度を乗じて得られる値）を用いたが、このアクセス回数と重要度とによる重み付けた関連性を用いる方法に限定されない。例えば、一方から他方へのレコード間の関連性を一律に１として、上記と同様に計算してもよい。この場合、ＣＦＧ＝２、ＣＦＨ＝０、ＣＦＩ＝０、ＣＧＨ＝１、ＣＧＩ＝０、ＣＨＩ＝１となる。
【００９６】
図１４は、本実施形態におけるセグメントのディスクへの書き戻しフローを示す。入出力管理部２２は、レコード処理の度（定期的でもよい）に、キャッシュ領域３２上のセグメントの合計のサイズをチェックして、キャッシュ領域３２の容量が不足しているか判定する（Ｓ１１）。キャッシュ領域３２の容量が不足した場合とは、例えば、ディスク４１から読み出したセグメントをキャッシュ領域３２へ格納しようとしたときにキャッシュ領域３２の容量が不足した場合や、キャッシュ領域３２に閾値を超えてデータが格納されている場合等である。ここでは、後者の場合を例に説明する。入出力管理部２２は、キャッシュ領域３２上のセグメントの合計のサイズが予め決めた閾値を超えるか否かを判定する。閾値としては、例えば、キャッシュ領域３２の容量の９０％等が予め所定の記憶領域に設定されている。
【００９７】
合計サイズが予め決めた閾値を超えると判定した場合（Ｓ１１で「ＹＥＳ」）、入出力管理部２２は、書き戻し実行部２６にキャッシュ領域３２にあるセグメントのディスク４１への書き戻しを指示する。
【００９８】
書き戻し実行部２６は、キャッシュ領域３２上にあるセグメントから、予め決められた数のセグメントを選ぶか、または合計が予め決められたサイズになるよう複数のセグメントを選び出す（Ｓ１２）。
【００９９】
セグメントの選び方には、ランダム選択方法、ＬＲＵ方法、ＬＦＵ方法がある。ランダム選択方法は、例えば、キャッシュ領域３２上にある複数のセグメントから１以上のセグメントをランダムに選ぶ方法である。ＬＲＵ方法は、アクセス順にセグメントをキューイングしておき、最も長くアクセスされていないセグメントから選ぶ方法である。ＬＦＵ方法は、アクセス頻度順にセグメントをキューイングしておき、最もアクセス頻度の低いセグメントから選ぶ方法である。
【０１００】
なお、選ぶセグメントの数や合計サイズは、どれぐらいのセグメント間で記録場所を調整したいかに依存する。例えば、選ぶセグメントの数を、ディスク４１上の領域の数の５倍の数にすることが考えられる。
【０１０１】
特性抽出部２７は、書き戻し実行部２６から指示があると、選択したセグメント全てに対して、以下のようにセグメント毎の指標値を算出し、セグメント管理テーブル３５に格納する（Ｓ１３）。すなわち、特性抽出部２７は、レコード・セグメント対応テーブル３３及び関連性保管テーブル３４を用いて、選択したセグメント単位で、セグメントに含まれる全レコードの、関連性の強度（＝アクセス回数×重要度）を合計する。
【０１０２】
例えば、図５のレコード・セグメント対応テーブル３３及び図６の関連性保管テーブル３４の場合、セグメント＃１に属するレコードはＡ，Ｃであり、レコードＡの関連性の強度は３であり、レコードＣの関連性の強度は１である。この場合、セグメント＃１の指標値は、３＋１＝４が得られる。
【０１０３】
なお、セグメント毎の指標値はセグメントが変更される度に更新してもよいが、書き戻し処理内でまとめて算出してもよい。
【０１０４】
優先度算出部２８は、Ｓ１３で算出されたセグメントの指標値の大きさに応じて、選択したセグメントのそれぞれの優先度を決める（Ｓ１４）。すなわち、優先度算出部２８は、セグメントの指標値が大きいほど、より高い優先度に設定する。
【０１０５】
記録場所決定部２９は、ディスク４１上の空き領域を確認する（Ｓ１５）。すなわち、記録場所決定部２９は、空き領域管理テーブル３６から、ディスク４１上の空き領域の物理位置を特定する。
【０１０６】
記録場所決定部２９は、ディスク性能保管テーブル３７から、その特定した空き領域に対応する物理位置範囲の読み出し性能を取得する。記録場所決定部２９は、物理位置範囲の読み出し性能の高い順に、空き領域を順番付けする。
【０１０７】
記録場所決定部２９は、優先度を付与したセグメントを、優先度の高い順に、より読み出し性能の高い空き領域に割り当てることを決定する（Ｓ１６）。同一の物理位置範囲に複数のセグメントを割り当てる場合、記録場所決定部２９は、より優先度の高いセグメントを、例えば、より物理位置の番号の小さい領域に割り当てる。
【０１０８】
記録場所決定部２９は、決定した割当内容に基づいて、関係性保管テーブル３４、セグメント管理テーブル３５及び空き領域管理テーブル３６を更新する（Ｓ１７）。具体的には、記録場所決定部２９は、関係性保管テーブル３４から、Ｓ１２で選択したセグメントのエントリを削除する。また、記録場所決定部２９は、セグメント管理テーブル３５に、セグメントが割り当てられた領域に対応するエントリを追加する。さらに、記録場所決定部２９は、空き領域管理テーブル３６から、セグメントが割り当てられた空き領域に対応するエントリを削除する。
【０１０９】
書き戻し実行部２６は、Ｓ１６にて優先度順に決められた記録場所に、セグメントを書き戻す（Ｓ１８）。
【０１１０】
図１５は、本実施形態におけるリクエストが指定するレコードをメモリ３１又はディスク４１から読み出して要求元に送信するまでの処理（Ｓ１）の詳細なフローを示す。図１５のフローは、図１２のＳ１のフローの詳細を示す。
【０１１１】
入出力管理部２２は、クライアント５１からリクエストを受信し、そのリクエストで指定されたレコードのキーを取得する（Ｓ２１）。入出力管理部２２は、その取得したキーに基づいて、リクエストで指定されたレコードがキャッシュ領域３２にあるか否かを判定する（Ｓ２２）。指定されたレコードがキャッシュ領域３２にある場合（Ｓ２２でＹＥＳ）、入出力管理部２２は、キャッシュ領域３２から読み出したそのレコードを要求元に返す（Ｓ２９）。
【０１１２】
指定されたレコードがキャッシュ領域３２にない場合（Ｓ２２でＮＯ）、入出力管理部２２は、レコード・セグメント対応テーブル３３から、指定されたレコードの属するセグメントを特定する（Ｓ２３）。
【０１１３】
入出力管理部２２は、セグメント管理テーブル３５から、特定したセグメントの物理位置を特定する（Ｓ２４）。入出力管理部２２は、ディスク性能保管テーブル３７を用いて、特定した物理位置からのセグメントの読み出し方を特定する（Ｓ２５）。
【０１１４】
入出力管理部２２は、特定した読み出し方を用いて、ディスク４１の、特定した物理位置から、特定したセグメントを読み出す（Ｓ２６）。例えば、ディスク性能保管テーブル３７から特定された読み出し方が「セグメント１０個まとめ読み」である場合、入出力管理部２２は、特定したセグメントの物理位置から、特定されたセグメントを含めて周辺または連続するセグメント１０個をまとめて読み出す。
【０１１５】
なお、読み出し方について、領域ごとにまとめ読みするかしないかだけを予め決めておき、上記セグメントの物理位置が実際に特定された場合に、その物理位置からまとめ読みするかしないかを決めるようにしてもよい。
【０１１６】
また、まとめ読みの単位は、負荷の大きさ（入出力管理部２２が単位時間あたりに受け取るリクエストの数など）に応じて決めても良い。例えば、負荷が大きい時はまとめ読みの単位を大きくし、負荷が小さい時はまとめ読みの単位を小さくするように調整してもよい。
【０１１７】
入出力管理部２２は、読み出したセグメントをキャッシュ領域３２に格納すると共に、そのセグメントに含まれる、指定されたレコードを要求元に返す（Ｓ２７）。入出力管理部２２は、関連性保管テーブル３４に、その読み出したセグメントに対応するエントリを追加する（Ｓ２８）。
【０１１８】
図１６は、本実施形態における読み出し効率に応じたセグメントの配置及びセグメントの読み出し単位について説明するための図である。ディスク４１の外周側ほど、ディクスの読み出し速度が高速で、読み出し性能が高く、読み出し効率の高いセグメントが配置されている。ディスク４１の内周側ほど、ディクスの読み出し速度が低速で、読み出し性能が低く、読み出し効率の低いセグメントが配置されている。
【０１１９】
外周側に配置されたセグメントについては、複数のセグメントがまとめ読みされるものとする。内周側に配置されたセグメントについては、まとめ読みされないものとする。
【０１２０】
例えば、図１６では、外周側に配置されたセグメントについては、１回の読み出し処理により４セグメントがまとめて読み出され、キャッシュに保持される。このとき、レコードＡへのアクセス時、レコードＢ，Ｃ，その他のレコードも一緒にキャッシュに保持される。レコードＡ，Ｂ，Ｃは関連性があるので、キャッシュ上にある間に、レコードＢ，Ｃもアクセスされやすい。したがって、キャッシュヒット率が高くなる。このように、キャッシュに読み出されたレコードは相互に関連しているのでアクセス頻度も高く、無駄読みになりにくい。
【０１２１】
また、内周側に配置されたセグメントについては、１回の読み出し処理により１セグメントが読み出され、キャッシュに保持される。このとき、レコードＰへのアクセス時、レコードＱ，Ｒも一緒にキャッシュに保持される。レコードＰ，Ｑ，Ｒは関連性がないので、キャッシュ上にある間に、レコードＱ，Ｒもアクセスされる確立は低い。すなわち、レコードＱ，Ｒは、無駄読みされたレコードとなる。ところが、無駄読みされるのはこのレコードＱ，Ｒのみであり、無駄読みされるレコード数を抑えることができる。
【０１２２】
本実施形態によれば、データのアクセス履歴に基づいて生成されるセグメントに含まれるレコード間の関連性に応じて、ディスク上でのセグメントの配置を決定し、ディスクに書き戻すことができる。その結果、読み出し効率の高いセグメントはシーケンシャルｒｅａｄ性能の高い領域に記録され、読み出し効率の低いセグメントはシーケンシャルｒｅａｄ性能の低い領域に記録されることになるので、読出しコストの増加を抑えることができる。
【０１２３】
また、ディスクからのセグメントの読み出しの際に、ディスクの記憶領域の読み出し位置のシーケンシャルｒｅａｄ性能に応じて、読み出すセグメント数を制御することができる。すなわち、読み出し位置のシーケンシャルｒｅａｄ性能が高いほど、読み出すセグメント数をより多くする。一方、読み出し位置のシーケンシャルｒｅａｄ性能が低いほど、読み出すセグメント数をより少なくする。これにより、読出しコストの増加を抑えることができる。
【０１２４】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１２５】
１      データ配置装置
２      選択部
３      算出部
４      決定部
５      書込部
６      読出部
１１    サーバ
２１    制御装置
２２    入出力管理部
２３    解析要否判断部
２４    関連性解析部
２５    セグメント配置部
２６    書き戻し実行部
２７    特性抽出部
２８    優先度算出部
２９    記録場所決定部
３１    メモリ
３２    キャッシュ領域
３３    レコード・セグメント対応テーブル
３４    関連性保管テーブル
３５    セグメント管理テーブル
３６    空き領域管理テーブル
３７    ディスク性能保管テーブル
４１    ディスク
５１    クライアント
【図１】
2016126619.tif 000003
【図２】
2016126619.tif 000004
【図３】
2016126619.tif 000005
【図４】
2016126619.tif 000006
【図５】
2016126619.tif 000007
【図６】
2016126619.tif 000008
【図７】
2016126619.tif 000009
【図８】
2016126619.tif 000010
【図９】
2016126619.tif 000011
【図１０】
2016126619.tif 000012
【図１１】
2016126619.tif 000013
【図１２】
2016126619.tif 000014
【図１３】
2016126619.tif 000015
【図１４】
2016126619.tif 000016
【図１５】
2016126619.tif 000017
【図１６】
2016126619.tif 000018