(57)【要約】  記憶装置に記憶されたデータへのアクセス処理のスループットを向上させる。アクセス制御プログラムは、記憶装置に記憶された第１のデータへの第１のアクセス命令を受信する処理をコンピュータに実行させる。また、アクセス制御プログラムは、第１のアクセス命令に応じて、第１のデータが記憶された第１の記憶領域から第１のデータを読み出す処理をコンピュータに実行させる。さらに、アクセス制御プログラムは、第１のデータを読み出すとともに、第１の記憶領域と物理的に隣接し、かつ、空領域ではない第２の記憶領域から第２のデータを読み出す処理をコンピュータに実行させる。また、アクセス制御プログラムは、第１の記憶領域と第２の記憶領域とから、第１のデータと第２のデータとを削除する処理をコンピュータに実行させる。
2014147840.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶された第１のデータへの第１のアクセス命令を受信し、
前記第１のアクセス命令に応じて、前記第１のデータが記憶された第１の記憶領域から前記第１のデータを読み出すとともに、前記第１の記憶領域と物理的に隣接し、かつ、空領域ではない第２の記憶領域から第２のデータを読み出し、
前記第１の記憶領域と前記第２の記憶領域とから、前記第１のデータと前記第２のデータとを削除する
処理をコンピュータに実行させることを特徴とするアクセス制御プログラム。
【請求項２】
前記記憶装置に第３のデータを書き込む第２のアクセス命令と、前記第３のデータとを受信し、
前記第２のアクセス命令に応じて、前記記憶装置が備えるデータが書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書込みする
処理をコンピュータに実行させることを特徴とする請求項１に記載のアクセス制御プログラム。
【請求項３】
記憶装置に記憶された１以上のデータを有する第１のデータ群への第３のアクセス命令を受信し、
前記第３のアクセス命令に応じて、前記第１のデータ群が記憶された第１の記憶領域を含む、物理的に連続するｎ（ｎは自然数）個の記憶領域から、それぞれが１以上のデータを有するｎ個のデータ群を読み出し、
前記読み出したｎ個のデータ群を削除する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項４】
１以上のデータを有するｍ（ｍは自然数）個のデータ群を、前記記憶装置に書き込む第４のアクセス命令とｍ個のデータ群とを受信し、
前記第４のアクセス命令に応じて、前記記憶装置が備える１以上のデータを有する複数のデータ群が書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のデータ群が記憶されていない空領域に、前記ｍ個のデータ群をそれぞれ書込みする
処理をコンピュータに実行させることを特徴とする請求項３に記載のアクセス制御プログラム。
【請求項５】
前記データ群を読み出す処理において、前記ｎ個の記憶領域の中に空領域があるとき、前記ｎ個のデータ群に代えて、前記ｎ個の記憶領域のうち、前記第１の記憶領域を含む、物理的に連続する前記データ群が記憶された記憶領域から１以上のデータ群を読み出し、
前記読み出した１以上のデータ群を削除する
処理をコンピュータに実行させることを特徴とする請求項３または４に記載のアクセス制御プログラム。
【請求項６】
前記アクセス命令を受信する処理において、複数のアクセス命令を受信し、
前記受信した複数のアクセス命令を保持し、
前記保持しているアクセス命令の数が多くなると、前記データ群を読み出す処理において、読み出す前記ｎ個のデータ群の数を多くし、
前記保持しているアクセス命令の数が少なくなると、前記データ群を読み出す処理において、前記読み出すｎ個のデータ群の数を少なくする、
処理をコンピュータに実行させることを特徴とする請求項３〜５のいずれか一つに記載のアクセス制御プログラム。
【請求項７】
前記読み出すｎ個のデータ群の数を、前記保持しているアクセス命令の数が所定の閾値以上となるとＫ（Ｋ＞１）倍し、前記保持しているアクセス命令の数が所定の閾値未満となるとＬ（Ｌ＜１）倍する
処理をコンピュータに実行させることを特徴とする請求項６に記載のアクセス制御プログラム。
【請求項８】
前記読み出すｎ個のデータ群の数を増減させる処理を、前記データ群を読み出す処理を実行するごとに行なう
処理をコンピュータに実行させることを特徴とする請求項６または７に記載のアクセス制御プログラム。
【請求項９】
情報を記憶するディスクと、
ディスクに記憶された第１のデータへの第１のアクセス命令を受信し、
前記第１のアクセス命令に応じて、前記第１のデータが記憶された第１の記憶領域から前記第１のデータを読み出すとともに、前記第１の記憶領域と物理的に隣接し、かつ、空領域ではない第２の記憶領域から第２のデータを読み出し、
前記第１の記憶領域と前記第２の記憶領域とから、前記第１のデータと前記第２のデータとを削除する命令実行部と、
を備えることを特徴とするディスク装置。
【請求項１０】
前記命令実行部は、さらに、
前記ディスクに第３のデータを書き込む第２のアクセス命令と、前記第３のデータとを受信し、
前記第２のアクセス命令に応じて、前記ディスクが備えるデータが書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書込みする
ことを特徴とする請求項９に記載のディスク装置。
【請求項１１】
コンピュータにより実行される情報処理方法であって、
前記コンピュータは、
記憶装置に記憶された第１のデータへの第１のアクセス命令を受信し、
前記第１のアクセス命令に応じて、前記第１のデータが記憶された第１の記憶領域から前記第１のデータを読み出すとともに、前記第１の記憶領域と物理的に隣接し、かつ、空領域でない第２の記憶領域から第２のデータを読み出し、
前記第１の記憶領域と前記第２の記憶領域とから、前記第１のデータと前記第２のデータとを削除する
ことを実行するアクセス制御方法。
【請求項１２】
前記コンピュータは、さらに
前記記憶装置に第３のデータを書き込む第２のアクセス命令と、前記第３のデータとを受信し、
前記第２のアクセス命令に応じて、前記記憶装置が備えるデータが書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書込みする
ことを特徴とする請求項１１に記載のアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶装置に記憶されたデータにアクセスする技術に関する。
【背景技術】
【０００２】
近年、ビジネスの高速化に伴い、次々と流れてくる大量のデータをリアルタイムに処理することが求められている。これに伴い、ストリームデータ処理が注目されている。【０００３】
ストリームデータ処理は、例えば、サーバ装置などで行なわれる。そして、ストリームデータ処理では、サーバが有するメモリに流れてくるデータが書き込まれたとき、リアルタイムにデータの分析処理が実行される。【０００４】
ストリームデータ処理では、大量のデータが流れてきたとき、サーバが有するメモリ上に分析処理するデータを記憶する記憶領域が不足することがある。すると、サーバは、例えば、メモリ上に保持されているデータの中で、最も長い間使用されていないデータを、サーバが有するディスク上に書き込む処理をする。そして、サーバは、ディスクに書き込んだデータをメモリ上から削除することにより、メモリ上に分析処理に用いるデータを保持するためのキャッシュ領域を確保する。また、サーバは、一旦ディスクに書き込んだデータを分析処理で使用するとき、ディスク上のデータをメモリに読み出して分析処理をする。【０００５】
上記のようなストリームデータ処理では、例えば、流れてくるデータが多くなると、ディスクへのデータの書き込みや読み出しなどをするアクセス命令を大量に処理することになる。すると、ストリームデータ処理では、ディスクへのデータの書き込みや読み出しというアクセス処理に多くの時間がかかるようになる。その結果、ストリームデータ処理では、分析処理のスループットが低下する。したがって、ストリームデータ処理では、分析処理のスループットを向上するために、ディスク上のデータへアクセスする回数を少なくすることが求められる。【０００６】
このため、ストリームデータ処理において、サーバは、例えば、ディスクに記憶するデータを、それぞれデータを識別するキーに関連付け、Ｂ木などの論理構成を用いてデータが所定の順番に並ぶようにマッピングする。サーバは、マッピングの結果に応じて、ディスクの記憶領域にデータを所定の順番に並べて記憶する。そして、サーバは、ディスクから複数のデータを読み出すとき、キーの範囲を指定することにより、一度のアクセスで複数のデータをディスクから読み出す。これにより、ストリーム処理において、サーバは、ディスクへのアクセス回数を少なくすることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−３２２２１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述したアクセス制御技術では、キーの順番にしたがって、物理的に連続した記憶領域にデータを並べて記憶する。このため、サーバでは、データの並びを維持するために、追加するデータや、更新したことによりデータサイズが増加したデータをディスクに書き込むとき、書き込むデータの記憶領域を所定の位置に確保するため、他のデータの再配置処理が実行される。したがって、他のデータの再配置処理に時間がかかるため、アクセス処理のスループットが低下する。【０００９】
また、前述したアクセス制御技術では、複数のデータの読み出し処理において、読み出す各データがディスク上で物理的に連続して並んでいないとき、各データを読み出すために、各データが記憶されている記憶領域にランダムアクセスが実行される。このため、ディスクからデータを読み込むためにヘッダを移動させるシーク処理の回数が増えるため、アクセス処理のスループットが低下する。【００１０】
さらに、前述したアクセス制御技術では、データを書き込むとき、まず書き込み先の記憶領域に記憶されているデータを読み出す処理を実行し、データが存在するか否かを確認する。これにより、サーバでは、データが存在するとき、書き込むデータが更新するデータであると判定し、データが存在しないとき、書き込むデータが追加するデータであると判定する。このため、データを書き込むときにも読み出し処理を実行するので、アクセス処理のスループットが低下する。なお、サーバでは、データを書き込むときの読み出す処理をなくすために、各データの存在を管理する管理情報を参照する構成をとることもできるが、この場合、大量データの管理情報を記憶するのでメモリを消費する。【００１１】
以上のように、前述したアクセス制御技術は、データの物理配置管理やデータへのアクセス方式が非効率であり、アクセス処理のスループットが低下するという問題がある。【００１２】
本発明は、一側面として、記憶装置に記憶されたデータへのアクセス処理のスループットを向上させる技術を提供する。
【課題を解決するための手段】
【００１３】
アクセス制御プログラムは、記憶装置に記憶された第１のデータへの第１のアクセス命令を受信する処理をコンピュータに実行させる。また、アクセス制御プログラムは、第１のアクセス命令に応じて、第１のデータが記憶された第１の記憶領域から第１のデータを読み出す処理をコンピュータに実行させる。さらに、アクセス制御プログラムは、第１のデータを読み出すとともに、第１の記憶領域と物理的に隣接し、かつ、空領域ではない第２の記憶領域から第２のデータを読み出す処理をコンピュータに実行させる。また、アクセス制御プログラムは、第１の記憶領域と第２の記憶領域とから、第１のデータと第２のデータとを削除する処理をコンピュータに実行させる。
【発明の効果】
【００１４】
１実施態様によれば、記憶装置に記憶されたデータへのアクセス処理のスループットを向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】ディスク装置の一実施例を示す機能ブロック図である。
【図２】ストリームデータ処理システムの一実施例を示すシステム構成図である。
【図３】メッセージのデータ例を示す図である。
【図４】サーバ装置の一実施例を示す機能ブロック図である。
【図５】ストリームデータ処理を示すシーケンス図である。
【図６】ストリームデータ処理を示すシーケンス図である。
【図７】ストリームデータ処理を示すシーケンス図である。
【図８】ストリームデータ処理を示すシーケンス図である。
【図９】セグメント管理テーブルのデータ例を示す図である。
【図１０】アドレス管理テーブルのデータ例を示す図である。
【図１１】セグメント数を判定する処理を示すフローチャートである。
【図１２】セグメント数を判定する処理を示すフローチャートである。
【図１３】セグメントの読み出し処理を示すフローチャートである。
【図１４】低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【図１５】低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【図１６】低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【図１７】高速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
【図１８】低速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
【図１９】低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【図２０】低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【図２１】コンピュータ装置の一実施例を示すブロック図である。
【発明を実施するための形態】
【００１６】
［実施形態］
実施形態のディスク装置について説明する。
図１は、ディスク装置の一実施例を示す機能ブロック図である。
【００１７】
図１を参照して、ディスク装置について説明する。
ディスク装置１は、命令保持部２と、頻度判定部３と、命令実行部４と、ディスク５とを備える。ディスク装置１は、例えば、後述するサーバ装置３０などのコンピュータ装置である。
【００１８】
命令保持部２は、ディスク装置１が受信したディスク５に記憶されているデータの読み出しや、ディスク５へのデータの書き込みを要求するアクセス命令を保持する。命令保持部２は、例えば、後述する命令保持部６２である。
【００１９】
頻度判定部３は、ディスク５からデータ群を読み出す処理において、命令保持部２が保持しているアクセス命令の数が多くなると、一度に読み出すデータ群の数を多くする。また、頻度判定部３は、ディスク５からデータ群を読み出す処理において、命令保持部２が保持しているアクセス命令の数が少なくなると、一度に読み出すデータ群の数を少なくする。
【００２０】
また、頻度判定部３は、一度に読み出すデータ群の数を、命令保持部６２が保持しているアクセス命令の数が所定の閾値以上となるとＫ（Ｋ＞１）倍する。さらに、頻度判定部３は、一度に読み出すデータ群の数を、命令保持部６２が保持しているアクセス命令の数が所定の閾値未満となるとＬ（Ｌ＜１）倍する。頻度判定部３は、例えば、後述する判定部６３である。なお、ＫとＬとは、例えば、Ｋ＝１／Ｌであっても良い。頻度判定部３は、一度に読み出すデータ群にＫまたはＬを乗算した値の端数を切り捨てた整数値を、一度に読み出すデータ群の数として設定しても良い。頻度判定部３は、ｎ個のデータ群の数を増減させる処理を、データ群を読み出す処理を実行するごとに行なっても良い。
【００２１】
命令実行部４は、記憶装置に記憶された１以上のデータを有する第１のデータ群への第３のアクセス命令を受信する。また、命令実行部４は、第３のアクセス命令に応じて、第１のデータ群が記憶された第１の記憶領域を含む、物理的に連続するｎ（ｎは自然数）個の記憶領域から、それぞれが１以上のデータを有するｎ個のデータ群を読み出す。そして、命令実行部４は、読み出したｎ個のデータ群を削除する。命令実行部４は、例えば、後述する命令実行部６１である。記憶装置とは、例えば、ディスク５、および後述する低速記憶媒体７０である。
【００２２】
命令実行部４は、１以上のデータを有するｍ（ｍは自然数）個のデータ群を、記憶装置に書き込む第４のアクセス命令とｍ個のデータ群とを受信する。さらに、命令実行部４は、第４のアクセス命令に応じて、記憶装置が備える１以上のデータを有する複数のデータ群が書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のデータ群が記憶されていない空領域に、ｍ個のデータ群をそれぞれ書込みする。
【００２３】
命令実行部４は、データ群を読み出す処理において、ｎ個の記憶領域の中に空領域があるとき、ｎ個のデータ群に代えて、ｎ個の記憶領域のうち、第１の記憶領域を含む、物理的に連続するデータ群が記憶された記憶領域から１以上のデータ群を読み出す。また、命令実行部４は、読み出した１以上のデータ群を削除する。
【００２４】
命令実行部４は、連続して流れてくる複数のアクセス命令を受信すると、受信したアクセス命令を命令保持部２に記憶する。
【００２５】
ディスク５は、例えば、後述する低速記憶媒体７０である。
実施形態のストリームデータ処理システムについて説明する。
【００２６】
図２は、ストリームデータ処理システムの一実施例を示すシステム構成図である。図３は、メッセージのデータ例を示す図である。
【００２７】
ストリームデータ処理システム８０は、クライアント１０と、ネットワーク２０と、サーバ装置３０とを備える。
【００２８】
クライアント１０は、例えば、後述するコンピュータ装置であり、ネットワーク２０を介してサーバ装置３０と接続されている。そして、クライアント１０は、例えば、図３に示すキーと、処理内容と、パラメータとを含むメッセージ１００をサーバ装置３０に送信する。これにより、クライアント１０は、サーバ装置３０に分析処理を要求する。なお、メッセージ１００では、３つの処理に関するキーと、処理内容と、パラメータとを有しているが、これに限らず、処理ごとに別々のメッセージを用いても良い。
【００２９】
図３を参照して、メッセージ１００について説明する。
メッセージ１００は、例えば、指定するデータを識別するキーと、指定したデータに対して行なう処理の内容と、処理に使用するパラメータとを含む。メッセージ１００は、指定されたキーに対応するデータを読み出し、データに含まれるパラメータに対して所定の処理をサーバ装置３０に実行させるとき、サーバ装置３０に対してクライアント１０から送信される要求メッセージである。
【００３０】
図３を参照して、メッセージ１００について説明する。ただし、メッセージ１００は、以下の一例に限らず、クライアント１０が要求する処理内容を示し、その処理をサーバ装置３０に実行させるための情報を含むものであれば良い。
【００３１】
メッセージ１００の１行目の“キー＝Ａ、処理内容＝ｉｎｃ、パラメータ＝１０”は、サーバ装置３０に、キー＝Ａに対応するデータのパラメータに対し、パラメータ＝１０を加算（処理内容＝ｉｎｃ）させる要求を示している。メッセージ１００の２行目の“キー＝Ｂ、処理内容＝ｄｅｃ、パラメータ＝５”は、サーバ装置３０に、キー＝Ｂに対応するデータのパラメータに対し、パラメータ＝５を減算（処理内容＝ｄｅｃ）する要求を示している。メッセージ１００の３行目の“キー＝Ｃ、処理内容＝ｍｕｌｔｉ、パラメータ＝２”は、サーバ装置３０に、キー＝Ｃに対応するデータのパラメータに対し、パラメータ＝２を乗算（処理内容＝ｍｕｌｔｉ）する要求を示している。
【００３２】
図２を参照して説明する。
ネットワーク２０は、クライアント１０とサーバ装置３０とに情報の通信経路を提供する。ネットワーク２０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線通信、またはインターネットなどである。
【００３３】
図２と図４とを参照して説明する。図４は、サーバ装置の一実施例を示す機能ブロック図である。
【００３４】
サーバ装置３０は、スケジューラ４０と、高速記憶媒体５０と、ストレージミドルウェア６０（アクセス制御プログラム）と、低速記憶媒体７０とを備える。
【００３５】
スケジューラ４０は、図４に示すように、イベント処理部４１と、命令処理部４２と、セグメント管理部４３との機能を有する。また、スケジューラ４０は、セグメント管理テーブル３００を備える。なお、セグメント管理テーブル３００は、例えば、サーバ装置３０が有する低速記憶媒体７０の一部の記憶領域に記憶され、スケジューラ４０の起動時に高速記憶媒体５０の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
【００３６】
ストレージミドルウェア６０は、図４に示すように、命令実行部６１と、命令保持部６２と、判定部６３との機能を有する。また、ストレージミドルウェア６０は、アドレス管理テーブル４００を備える。なお、アドレス管理テーブル４００は、例えば、サーバ装置３０が有する低速記憶媒体７０の一部の記憶領域に記憶され、ストレージミドルウェア６０の起動時に高速記憶媒体５０の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
【００３７】
高速記憶媒体５０は、小容量で高速な記憶媒体である。高速記憶媒体５０は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリである。
【００３８】
低速記憶媒体７０は、大容量で低速な記憶媒体である。低速記憶媒体７０は、記憶領域を一定のサイズを持つ複数の領域に区分して、同一の区分に１以上のデータを記憶する。低速記憶媒体７０の記憶領域における一定のサイズを持つ区分をブロックという。また、同一のブロックに記憶される１以上のデータを有するデータ群のことをセグメントと言う。なお、セグメントに含まれる１以上のデータは、命令処理部４２で実行される分析処理が効率よく行われるように、それぞれが関連するデータであっても良い。低速記憶媒体７０は、例えば、ハードディスクである。
【００３９】
図５〜図８を参照して、サーバ装置３０が有する各機能で行なう処理の詳細を説明する。また、以下の説明において、一例として、サーバ装置３０がメッセージ１００を受信したものとして説明する。
【００４０】
イベント処理部４１は、サーバ装置３０がクライアント１０から受信したメッセージ１００を取得する（Ｓ１００）。
【００４１】
そして、イベント処理部４１は、取得したメッセージ１００を用いてアクセス命令２００を生成する（Ｓ１０１）。
【００４２】
図３を参照して、アクセス命令２００について説明する。
アクセス命令２００とは、命令処理部４２にメッセージ１００に含まれる分析処理の要求を通知するための情報である。イベント処理部４１は、例えば、図３に示すメッセージ１００を受信すると、メッセージ１００からキーと、処理内容と、パラメータとを抽出する。そして、イベント処理部４１は、抽出したキーごとに、対応する処理内容と、処理に用いるパラメータとを関連付けてアクセス命令２００を生成する。
【００４３】
イベント処理部４１は、例えば、図３に示すメッセージ１００を取得したとき、キーＡ〜Ｃにそれぞれ対応したアクセス命令２０１〜２０３を生成する。アクセス命令２０１は、メッセージ１００の１行目に記載の要求を命令処理部４２に通知するための情報である。アクセス命令２０２は、メッセージ１００の２行目に記載の要求を命令処理部４２に通知するための情報である。アクセス命令２０３は、メッセージ１００の３行目に記載の要求を命令処理部４２に通知するための情報である。
【００４４】
以下の説明では、一例として、アクセス命令２０１に関する処理を説明する。アクセス命令２０２、２０３の処理は、アクセス命令２０１の処理手順において、使用するキーと、処理内容と、パラメータとを、それぞれアクセス命令２０２、２０３に含まれる値に変更した処理である。
【００４５】
図５を参照して説明する。
イベント処理部４１は、Ｓ１０１で生成したアクセス命令２０１を命令処理部４２に通知する（Ｓ１０２）。
【００４６】
命令処理部４２は、アクセス命令２０１が通知されると、アクセス命令２０１に含まれるキーＡを取得する（Ｓ１０３）。なお、命令処理部４２は、キーＡに対応するデータが高速記憶媒体５０に記憶されているとき、高速記憶媒体５０からキーＡに対応するデータを読み出し、読み出したデータが有するパラメータに対し、パラメータ＝１０を加算する分析処理をしても良い。以下の説明では、高速記憶媒体５０にキーＡに対応するデータがないものとして説明する。
【００４７】
そして、命令処理部４２は、取得したキーＡをセグメント管理部４３に通知する（Ｓ１０４）。
【００４８】
セグメント管理部４３は、キーＡが通知されると、セグメント管理テーブル３００を参照して、キーＡに対応するセグメントを識別するセグメントＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）を取得する（Ｓ１０５）。
【００４９】
セグメント管理部４３は、取得したセグメントＩＤを命令処理部４２に通知する（Ｓ１０６）。なお、命令処理部４２は、通知されたセグメントＩＤに対応するセグメントが高速記憶媒体５０に記憶されているとき、高速記憶媒体５０にキーＡに対応するデータがあると判定しても良い。キーＡに対応するデータがないものとして説明しているので、高速記憶媒体５０には、セグメントＩＤに対応するセグメントが記憶されていない。
【００５０】
ここで、図９を参照して、セグメント管理テーブル３００について説明する。
図９は、セグメント管理テーブルのデータ例を示す図である。
【００５１】
セグメント管理テーブル３００は、図９に示すように、キーと、セグメントＩＤとを関連付けて格納したテーブルである。すなわち、セグメント管理テーブル３００は、キーに対応するデータが、どのセグメントに属しているかを示すテーブルである。よって、図９を参照するとＳ１０５では、キーＡに対応するセグメントＩＤ＝ｓｅｇ０を取得することになる。なお、図９のセグメント管理テーブル３００は、例えば、キーＡと、キーＣとに対応する各データがｓｅｇ０に対応する同一のセグメントに属していることを示している。また、セグメント管理テーブル３００は、例えば、分析処理において続けてアクセスされる可能性が高いデータが同じセグメントに属するように設定されても良い。セグメント管理テーブル３００は、予め与えられたものを用いても良いし、分析処理におけるアクセス状況を反映して更新されるテーブルを用いても良い。分析処理におけるアクセス状況を反映して更新するとは、例えば、分析処理において続けてアクセスされる可能性が高いデータを検索し、検索したデータ群を同じセグメントに属するように設定するなどの処理である。
【００５２】
図６を参照して説明する。
命令処理部４２は、Ｓ１０５において、セグメント管理部４３で取得されたセグメントＩＤ＝ｓｅｇ０が通知されると、高速記憶媒体５０の記憶領域に、所定のサイズ（容量）の記憶領域を確保する（Ｓ２０１）。以下の説明において、所定のサイズの記憶領域は、キャッシング領域という。なお、キャッシング領域のサイズは、予め決められたサイズでも良いし、ストリームデータ処理の処理状況に応じてサイズを変更しても良い。一例として、キャッシング領域のサイズには、例えば、サーバ装置３０が備える高速記憶媒体５０の容量が大きいほど、大きいサイズが設定されても良い。キャッシング領域のサイズには、例えば、サーバ装置３０で実行される分析処理の処理能力が高く高速に処理が実行されるほど、大きいサイズが設定されても良い。
【００５３】
そして、命令処理部４２は、アクセス命令２０１を命令実行部６１に通知する（Ｓ２０２）。このとき、命令処理部４２は、アクセス命令２０１とともに、ディスクに記憶されたデータ群を読み出す要求と、セグメント管理部４３で取得されたセグメントＩＤとを一緒に通知しても良い。以下の説明では、命令処理部４２が、アクセス命令２０１と、ディスクに記憶されたデータ群を読み出す要求と、セグメント管理部４３で取得されたセグメントＩＤとを一緒に命令実行部６１に通知したものとして説明する。また、説明の簡単化のため、命令処理部４２から通知されるアクセス命令２０１には、データ群の読み出し要求とセグメントＩＤとを含むものとして説明する。なお、アクセス命令２０１は、これに限らず、命令実行部６１に分析処理で用いるセグメントを読み出させ、読み出したセグメントを命令処理部４２に通知させるための要求であれば良い。
【００５４】
命令実行部６１は、アクセス命令２０１が通知されると、アクセス命令２０１を命令保持部６２に通知する（Ｓ２０３）。
【００５５】
命令保持部６２は、アクセス命令２０１が通知されると、通知されたアクセス命令２０１を保持する（Ｓ２０４）。命令保持部６２は、例えば、キューであり、データストリーム処理において、次々と通知される１以上のアクセス命令２００をバッファリングする。
【００５６】
図７を参照して説明する。
命令実行部６１は、ストリームデータ処理が実行され、命令保持部６２に最初のアクセス命令２００を通知したあと、アクセス命令２００を命令保持部６２に要求する（Ｓ３０１）。命令実行部６１は、アクセス命令２００が要求する低速記憶媒体７０へのデータの書き込み、または読み出しが終わるごとに、次のアクセス命令２００を命令保持部６２に要求しても良い。
【００５７】
命令保持部６２は、アクセス命令２００の要求が通知されると、例えば、保持している中で最初に保持したアクセス命令２００を取り出す（Ｓ３０２）。以下の説明では、命令保持部６２がアクセス命令２０１を取り出したときを一例として説明する。
【００５８】
そして、命令保持部６２は、取り出したアクセス命令２０１を命令実行部６１に通知する（Ｓ３０３）。
【００５９】
命令実行部６１は、アクセス命令２０１が通知されると、アクセス命令２０１が読み出しを要求するセグメントのセグメントＩＤに対応する論理ブロックアドレスを、アドレス管理テーブル４００から取得する（Ｓ３０４）。なお、論理ブロックアドレスは、ＬＢＡやＣＨＳなどにより指定しても良い。ＬＢＡは、Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇの略であり、低速記憶媒体７０の全てのブロックに通し番号を振り、通し番号によりブロックを指定する方式である。また、ＣＨＳは、Ｃｙｌｉｎｄｅｒ  Ｈｅａｄ  Ｓｅｃｔｏｒの略であり、３つの値によりデータの場所を指定する方式である。以下の説明において、論理ブロックアドレスのことを、論理アドレスともいう。
【００６０】
ここで、図１０を参照して、アドレス管理テーブル４００について説明する。
図１０は、アドレス管理テーブルのデータ例を示す図である。なお、図１０においては、論理アドレスが、ＬＢＡを用いているので、論理アドレスが連続した領域は、物理的にも連続している。
【００６１】
アドレス管理テーブル４００は、図１０に示すように、セグメントＩＤと論理アドレスとを関連付けて格納したテーブルである。すなわち、アドレス管理テーブル４００は、セグメントＩＤに対応するセグメントが、低速記憶媒体７０のどのブロックに記憶されているかを示すテーブルである。なお、図１０に示すアドレス管理テーブル４００は、例えば、ｓｅｇ０、ｓｅｇ３、ｓｅｇ２６のセグメントＩＤに対応するセグメントが、順番に論理アドレス♯２８〜♯３０に対応するブロックに記憶されていることを示している。また、アドレス管理テーブル４００に、指定されていない論理アドレスに対応するブロックは、セグメントが記憶されていない空領域である。そして、アドレス管理テーブル４００は、低速記憶媒体７０にセグメントが書き込みや読み出しされるごとに、命令実行部６１により更新されても良い。これにより、アドレス管理テーブル４００は、低速記憶媒体７０へのセグメントの記憶状態をリアルタイムに反映することができる。
【００６２】
図７を参照して説明する。
次に、命令実行部６１は、判定部６３に、アクセス命令２０１で指定されたセグメントＩＤに対応するセグメントを読み出すとき、いくつのセグメントをまとめて読み出すかの判定を要求する（Ｓ３０５）。命令実行部６１は、アクセス命令２０１で指定されたセグメントＩＤに対応するセグメントを読み出す処理（以下、読み出し処理ともいう。）を実行するごとに、いくつのセグメントをまとめて読み出すかの判定を要求しても良い。以下の説明では、まとめて読み出すセグメント数のことを、アクセスするセグメント数ともいう。
【００６３】
判定部６３は、セグメント数の判定要求が通知されると、アクセスするセグメント数を判定する（Ｓ３０６）。
【００６４】
ここで、図１１、図１２を参照して、判定部６３によるアクセスするセグメント数を判定する処理について説明する。
【００６５】
図１１、図１２は、セグメント数を判定する処理を示すフローチャートである。
【００６６】
判定部６３は、命令実行部６１からセグメント数の判定要求が通知されたか否かを判定する。判定部６３は、セグメント数の判定要求が通知されるまで待機する（Ｓ５０１にてＮｏ）。
【００６７】
判定部６３は、セグメント数の判定要求が通知されると（Ｓ５０１にてＹｅｓ）、設定値を取得する（Ｓ５０２）。設定値とは、例えば、前回のセグメント数の判定処理において、決定したセグメント数であって、判定部６３に保持される値でも良い。また、設定値の初期値は、特に限定しないが１でも良い。なお、設定値は、例えば、サーバ装置３０が有する低速記憶媒体７０の一部の記憶領域に記憶され、ストレージミドルウェア６０の起動時に高速記憶媒体５０の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
【００６８】
さらに、判定部６３は、命令保持部６２に保持されているアクセス命令２００の数（キュー長）を取得する（Ｓ５０３）。保持されているアクセス命令２００の数は、例えば、命令保持部６２に入出力されるアクセス命令２００の数をカウントするカウンタ回路でカウントしても良い。この場合、判定部６３は、カウンタ回路のカウント値を読み取ることにより、アクセス命令２００の数を取得しても良い。判定部６３によるアクセス命令２００の数の取得方法は、特に限定されない。判定部６３は、例えば、命令処理部４２と命令実行部６１とがクレジット方式でアクセス命令２００のやり取りを行なっているとき、命令実行部６１が保持する受信クレジットの残数から命令保持部６２に保持されているアクセス命令２００の数を取得しても良い。
【００６９】
図１２を参照して説明する。
判定部６３は、命令保持部６２に保持されているアクセス命令２００の数が、保持閾値以上であるか否かを判定する（Ｓ５０４）。保持閾値は、判定部６３に設定されたアクセス命令２００の数である。
【００７０】
Ｓ５０４において、判定部６３は、命令保持部６２に保持されているアクセス命令２００の数が保持閾値以上のとき（Ｓ５０４にてＹｅｓ）、設定値を２倍にし、命令実行部６１に通知するセグメント数として決定する（Ｓ５０５）。命令保持部６２に保持されるアクセス命令２００の数が多くなるということは、アクセス命令２００の処理頻度（個／秒）よりも、アクセス命令２００が通知される頻度（個／秒）が高くなっていることを示す。すなわち、命令保持部６２に保持されるアクセス命令２００の数が多くなるということは、アクセス命令２００が命令保持部６２に蓄積されていくことを示している。よって、判定部６３は、アクセス命令２００の数が保持閾値以上となったとき、一度のアクセス命令２００の処理で読み出すセグメントの数を多くする。これにより、命令実行部６１は、アクセス命令２００が通知される頻度に応じて、一度のアクセス命令２００の処理で複数のセグメントを一緒に読み出し、読み出し処理の回数を抑制する。したがって、サーバ装置３０では、読み出し処理による低速記憶媒体７０へのアクセス回数が少なくなるので、アクセス処理のスループットが向上する。なお、命令実行部６１に通知するセグメント数は、増加すればよく、増加率を２倍に限定するものではない。
【００７１】
そして、判定部６３は、Ｓ５０５で決定したセグメント数を命令実行部６１に通知する（Ｓ５０６）。
【００７２】
また、判定部６３は、決定したセグメント数を新たな設定値として保持する（Ｓ５０７）。そして、判定部６３は、セグメント数の判定処理を終了する。判定部６３は、決定したセグメント数を、新たな設定値とすることにより、次のセグメント数の判定処理をするとき、前回のセグメント数を設定値としてセグメント数を増減させる。したがって、判定部６３は、命令保持部６２に保持されているアクセス命令２００の数が増え続けないように、セグメント数を調整することができる。すなわち、判定部６３は、アクセス命令２００の処理頻度がアクセス命令２００が通知される頻度を下回らないように、一度の読み出し処理で読み出すセグメント数を調整している。
【００７３】
Ｓ５０４において、判定部６３は、命令保持部６２に保持されているアクセス命令２００の数が保持閾値未満のとき（Ｓ５０４にてＮｏ）、設定値が１であるか否かを判定する（Ｓ５０８）。
【００７４】
判定部６３は、設定値が１のとき、セグメント数を１とする（Ｓ５０９）。そして、判定部６３は、Ｓ５０６、Ｓ５０７の処理を実行して、セグメント数の判定処理を終了する。
【００７５】
Ｓ５０８において、判定部６３は、設定値が１でないとき（Ｓ５０８にてＮｏ）、セグメント数を設定値の１／２倍にする（Ｓ５１０）。そして、判定部６３は、Ｓ５０６、Ｓ５０７の処理を実行して、セグメント数の判定処理を終了する。なお、命令実行部６１に通知するセグメント数は、減少すればよく、減少率を１／２倍に限定するものではない。
【００７６】
以上のように、判定部６３は、命令保持部６２が保持するアクセス命令２００の数が保持閾値以上になると、一度に読み出すセグメントの数をＫ（Ｋ＞１）倍する。さらに、判定部６３は、命令保持部６２が保持しているアクセス命令２００の数が保持閾値未満になると、一度に読み出すセグメントの数をＬ（Ｌ＜１）倍する。また、判定部６３は、一度に読み出すセグメント数を求めるとき、前回一度に読み出したｎ（ｎは自然数）個のセグメント数を基（設定値）に算出する。これにより、判定部６３は、アクセス命令２００の処理頻度がアクセス命令２００が通知される頻度を下回らないように、セグメント数を調整することができる。
【００７７】
図７を参照して説明する。
判定部６３は、Ｓ３０６で決定されたセグメント数を、命令実行部６１に通知する（Ｓ３０７）。
【００７８】
図８を参照して説明する。
命令実行部６１は、Ｓ３０７において、判定部６３から一度に読み出すセグメント数が通知されると、低速記憶媒体７０を参照し、Ｓ３０４で取得した論理アドレスに対応するブロックを検索する。そして、命令実行部６１は、論理アドレスに対応するブロックを含む、物理的に連続するブロックから、Ｓ３０７で通知されたセグメント数のセグメントを読み出す（Ｓ４０１）。なお、命令実行部６１は、例えば、Ｓ３０６で決定されたセグメント数が１のとき、Ｓ３０４で取得した論理アドレスに対応するブロックからセグメントを読み出す。
【００７９】
ここで、図１３を参照して、命令保持部６２によるセグメントの読み出し処理を説明する。
図１３は、セグメントの読み出し処理を示すフローチャートである。
【００８０】
命令実行部６１は、論理アドレスと一度に読み出すセグメント数とを取得したか否かを判定する（Ｓ６０１）。命令実行部６１は、論理アドレスと一度に読み出すセグメント数とが通知されるまで待機する（Ｓ６０１にてＮｏ）。なお、論理アドレスとは、例えば、図７のＳ３０４で取得した論理アドレスである。また、一度に読み出すセグメント数とは、図７のＳ３０６で決定したセグメント数である。以下の説明において、一度に読み出すセグメント数は、ｎ個であるものとして説明する。
【００８１】
命令実行部６１は、論理アドレスと一度に読み出すセグメント数とが通知されると（Ｓ６０１にてＹｅｓ）、低速記憶媒体７０を参照し、論理アドレスに対応するブロックを検索する。そして、命令実行部６１は、検索されたブロックを含む、物理的に連続するｎ個のブロックを抽出する（Ｓ６０２）。ここで、物理的に連続するｎ個のブロックとは、論理アドレスがＬＢＡを用いて付与されている場合、論理アドレスが連続するブロックのこととなる。物理的に連続するｎ個のブロックとは、例えば、論理アドレス＃４０とセグメント数＝４が命令実行部６１に通知されとき、通知された論理アドレス＃４０を基準として、後続の論理アドレスを選択し、＃４０〜＃４３としても良い。また、物理的に連続するｎ個のブロックとは、例えば、論理アドレス＃４０とセグメント数＝４が命令実行部６１に通知されとき、通知された論理アドレス＃４０を含む、＃３８〜＃４１としても良い。すなわち、物理的に連続するｎ個のブロックは、命令実行部６１に通知された論理アドレスに対応するブロックを含み、低速記憶媒体７０上で物理的に連続したブロックであれば、適宜選択した方法で抽出しても良い。
【００８２】
そして、命令実行部６１は、抽出したｎ個のブロックの中に空領域があるか否かを判定する（Ｓ６０３）。
【００８３】
命令実行部６１は、抽出したｎ個のブロックの中に空領域があると判定したとき（Ｓ６０３にてＹｅｓ）、論理アドレスに対応するブロックを含む、空領域までの連続する１以上のセグメントを読み出す（Ｓ６０４）。
【００８４】
命令実行部６１は、読み出した１以上のセグメントを命令処理部４２に通知する（Ｓ６０５）。そして、命令実行部６１は、セグメントの読み出し処理を終了する。
【００８５】
Ｓ６０３において、命令実行部６１は、抽出したｎ個のブロックの中に空領域がないと判定したとき（Ｓ６０３にてＮｏ）、論理アドレスに対応するブロックを含む連続するｎ個のブロックからセグメントを読み出す（Ｓ６０６）。そして、命令実行部６１は、Ｓ６０５の処理を実行し、セグメントの読み出し処理を終了する。
【００８６】
ここで、図１４〜図１６を参照して、セグメントの読み出し処理についてさらに説明する。
図１４〜図１６は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。
【００８７】
以下の説明では、一例として、命令実行部６１が通知された論理アドレスを基準として、通知されたセグメント数に対応する後続の論理アドレスを選択し、対応するブロックからそれぞれセグメントを読み出す処理について説明する。
【００８８】
図１４〜図１６の矩形は、それぞれ、低速記憶媒体７０のブロックを示す。また、番号が振られているブロックは、セグメントが記憶されていることを示す。番号が振られていないブロックは、セグメントが記憶されていないことを示す。番号は、それぞれのブロックの論理アドレスを示す。
【００８９】
図１４に示す低速記憶媒体７０には、♯２２〜♯３４、♯３６〜♯４４、♯４６、♯４７、♯５０〜♯６５のブロックにセグメントが記憶されている。
【００９０】
命令実行部６１は、論理アドレス＝♯４０と、セグメント数＝４とが通知されると、図１５の低速記憶媒体７０に示すように、論理アドレス＝＃４０を基準として、♯４０〜♯４３の物理的に連続するブロックからセグメントを読み出す。すなわち、命令実行部６１に論理アドレス＝♯４０と、セグメント数＝４とが通知されると、低速記憶媒体７０の記憶状態が、図１４に示す状態から図１５に示す状態に変化する。このとき、命令実行部６１は、アドレス管理テーブル４００を参照することにより、物理的に連続するブロックからセグメントを読み出しても良い。
【００９１】
また、命令実行部６１は、論理アドレス＝♯４２と、セグメント数＝４とが通知されたとき、図１６の低速記憶媒体７０に示すように、論理アドレス＝＃４２を基準として、♯４２〜♯４４の物理的に連続するブロックからセグメントを読み出す。すなわち、命令実行部６１に論理アドレス＝♯４２と、セグメント数＝４とが通知されると、低速記憶媒体７０の記憶状態が、図１４に示す状態から図１６に示す状態に変化する。命令実行部６１は、一度に読み出すセグメント数として４つが指定されたが、低速記憶媒体７０の♯４５に対応するブロックが空領域であるため、４つ目のセグメントが格納されている♯４６からセグメントを読み出さない。これにより、命令実行部６１は、例えば、低速記憶媒体７０がディスクであるとき、読み出し処理において、シーク処理の回数を少なくする。このとき、命令実行部６１は、アドレス管理テーブル４００を参照することにより、空領域の有無を確認し、物理的に連続するブロックからセグメントを読み出しても良い。
【００９２】
なお、命令実行部６１は、論理アドレス＝♯４２と、セグメント数＝４とが通知されたとき、図１５の低速記憶媒体７０に示すように、論理アドレス＝＃４２を含む、♯４０〜♯４３の物理的に連続するブロックからセグメントを読み出しても良い。すなわち、命令実行部６１は、論理アドレス＝♯４２と、セグメント数＝４とが通知されると、低速記憶媒体７０の記憶状態を、図１４に示す状態から図１５に示す状態に変化させても良い。このように、命令実行部６１は、通知された論理アドレスのブロックを基準として、通知されたセグメント数に対応する後続のブロックを選択する。そして、命令実行部６１は、選択したブロックに空領域があるとき、選択するブロックを変更し、基準のブロックを含む物理的に連続するブロックからセグメントを読み出しても良い。このとき、命令実行部６１は、アドレス管理テーブル４００を参照することにより、空領域の有無を確認し、物理的に連続するブロックからセグメントを読み出しても良い。
【００９３】
以上のように、命令実行部６１は、適宜選択した手法により、通知された論理アドレスに対応するブロックを含む、物理的に連続するセグメントが記憶されたブロックから、１以上のセグメントを読み出せば良い。
【００９４】
また、命令実行部６１は、アクセス命令２００で要求されたストレージ上のセグメントを読み出すとき、例えば、ｐｏｐｉｔｅｍｓ＿ｂｕｌｋ（ｋ、Ｎ）という入出力命令を、低速記憶媒体７０の図示しない入出力コントローラ（以下、ディスクコントローラという。）に通知する。ｐｏｐｉｔｅｍｓ＿ｂｕｌｋ（ｋ、Ｎ）のｋは、例えば、Ｓ３０４で命令実行部６１が取得した読み出しするブロックの論理アドレスである。ｐｏｐｉｔｅｍｓ＿ｂｕｌｋ（ｋ、Ｎ）のＮは、例えば、判定部６３で決定された一度に読み出しするセグメント数である。また、ｐｏｐｉｔｅｍｓ＿ｂｕｌｋ（ｋ、Ｎ）は、セグメントを読み出したブロックから、読み出したセグメントを削除する処理の要求も含む。
【００９５】
一例として、命令実行部６１は、論理アドレス＝♯４０と一度に読み出すセグメント数＝４とを取得したとき、ｐｏｐｉｔｅｍｓ＿ｂｕｌｋ（♯４０、４）という入出力命令をディスクコントローラに通知する。そして、ディスクコントローラは、論理アドレス＝＃４０に対応するブロックを含む、物理的に連続するセグメントが記憶されたブロックから、４つのブロックのセグメントを読み出し、読み出したセグメントを命令実行部６１に送信する。その後、ディスクコントローラは、セグメントを読み出した４つのブロックから、記憶されたセグメントを削除する。
【００９６】
また、命令実行部６１は、一度に読み出しをするセグメント数が、１のとき、ｐｏｐｉｔｅｍ（ｋ）という入出力命令を用いても良い。このとき、ｐｏｐｉｔｅｍ（ｋ）のｋは、読み出しするブロックの論理アドレスである。
【００９７】
一例として、命令実行部６１は、論理アドレス＝♯４０と一度に読み出すセグメント数＝１を取得したとき、ｐｏｐｉｔｅｍ（♯４０）という入出力命令をディスクコントローラに通知する。そして、ディスクコントローラは、論理アドレス＝＃４０に対応するブロックに記憶されたセグメントを読み出し、読み出したセグメントを命令実行部６１に送信する。
【００９８】
図８を参照して説明する。
命令実行部６１は、Ｓ４０１で読み出した１以上のセグメントを、命令処理部４２に通知する（Ｓ４０２）。
【００９９】
そして、命令実行部６１は、Ｓ４０１で読み出した１以上のセグメントを低速記憶媒体７０から削除する（Ｓ４０３）。
【０１００】
命令処理部４２は、１以上のセグメントが通知されると、通知された１以上のセグメントを高速記憶媒体５０に書き込み、通知された１以上のセグメントを高速記憶媒体５０に記憶させる（Ｓ４０４）。
【０１０１】
ここで、図１７を参照して、命令処理部４２が高速記憶媒体５０に１以上のセグメントの書き込みをする処理について説明する。
図１７は、高速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
【０１０２】
命令処理部４２は、図８のＳ４０１で命令実行部６１が読み出した１以上のセグメントを受信したか否かを判定する（Ｓ７０１）。すなわち、命令処理部４２は、命令実行部６１から書き込むセグメントが通知されたか否かを判定する。
【０１０３】
命令処理部４２は、書き込む１以上のセグメントを受信するまで待機する（Ｓ７０１にてＮｏ）。
【０１０４】
命令処理部４２は、書き込む１以上のセグメントを受信すると（Ｓ７０１にてＹｅｓ）、受信した１以上のセグメントの合計サイズが図６のＳ２０１で確保したキャッシング領域のサイズよりも大きいか否かを判定する（Ｓ７０２）。
【０１０５】
命令処理部４２は、Ｓ７０１で受信した１以上のセグメントの合計サイズが図６のＳ２０１で確保したキャッシング領域のサイズよりも大きいとき（Ｓ７０２にてＹｅｓ）、高速記憶媒体５０に記憶されているセグメントを低速記憶媒体７０に書き戻す処理をする。
【０１０６】
命令処理部４２は、低速記憶媒体７０に書き込むセグメントを選択する（Ｓ７０３）。このとき、命令処理部４２は、選択したセグメントの合計サイズと、キャッシング領域のサイズとの合計が、Ｓ７０１で受信した高速記憶媒体５０に書き込むセグメントの合計サイズ以上になるように、１以上のセグメントを選択する。
【０１０７】
Ｓ７０３において、命令処理部４２は、低速記憶媒体７０に記憶されているセグメントの中で、最も不要なセグメントを選択しても良い。最も不要なセグメントとは、例えば、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）を用いて、分析処理で最近最も使用されなかったセグメントを選択しても良い。なお、最も不要なセグメントとは、ＬＲＵに限定されるものではなく、ＬＦＵ（Ｌｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ）などの他のアルゴリズムを用いて選択しても良い。ＬＦＵとは、各セグメントの使用頻度を示す。ＬＦＵを用いる場合には、最も使用頻度の低いセグメントを最も不要なセグメントとしても良い。また、命令処理部４２は、高速記憶媒体５０に記憶されている複数のセグメントを、低速記憶媒体７０に書き込むとき、命令処理部４２は、最も不要なセグメントから順に、低速記憶媒体７０に書き込む複数のセグメントを選択しても良い。
【０１０８】
Ｓ７０３で低速記憶媒体７０に書き込む１以上のセグメントを選択すると、命令処理部４２は、例えば、低速記憶媒体７０にセグメントを書き込むアクセス命令と、選択した１以上のセグメントとを、命令実行部に通知する（Ｓ７０４）。セグメントを書き込むアクセス命令は、書き込み命令ともいう。
【０１０９】
そして、命令処理部４２は、Ｓ７０４において、低速記憶媒体７０に書き込んだ１以上のセグメントを高速記憶媒体５０の記憶領域から削除する（Ｓ７０５）。すなわち、命令処理部４２は、高速記憶媒体５０に書き込む１以上のセグメントの合計サイズが、確保したキャッシング領域よりも大きいとき、低速記憶媒体７０に１以上のセグメントを書き戻す。これにより、命令処理部４２は、高速記憶媒体５０に書き込む１以上のセグメントの合計サイズ以上のサイズのキャッシング領域を確保する。
【０１１０】
そして、命令処理部４２は、Ｓ７０５で大きくした高速記憶媒体５０のキャッシング領域に、Ｓ７０１で受信した１以上のセグメントを書き込む処理をする（Ｓ７０６）。そして、命令処理部４２は、高速記憶媒体５０に１以上のセグメントの書き込みをする処理を終了する。
【０１１１】
Ｓ７０２において、Ｓ７０１で受信した１以上のセグメントの合計サイズが図６のＳ２０１で確保したキャッシング領域のサイズ以下のとき（Ｓ７０２にてＮｏ）、命令処理部４２は、Ｓ７０６の処理をする。そして、命令処理部４２は、高速記憶媒体５０に１以上のセグメントの書き込みをする処理を終了する。
【０１１２】
以上により、命令処理部４２は、命令実行部６１から通知された１以上のセグメントを高速記憶媒体５０に書き込む処理をする。
【０１１３】
ここで、図１８を参照して、図１７のＳ７０４で命令処理部４２から命令実行部６１に通知された書き込み命令を受信したとき、命令実行部６１が実行する低速記憶媒体７０へのセグメントの書き込み処理の内容を説明する。
【０１１４】
図１８は、低速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
命令実行部６１は、図１７のＳ７０４の処理が実行され、命令処理部４２から１以上のセグメントと、書き込み命令とを受信したか否かを判定する（Ｓ８０１）。
【０１１５】
命令実行部６１は、１以上のセグメントと、書き込み命令とを受信するまで待機する（Ｓ８０１にてＮｏ）。
【０１１６】
命令実行部６１は、１以上のセグメントと、書き込み命令とを受信すると、低速記憶媒体７０のセグメントが記憶されているブロックの論理アドレスの中で、物理的に一番後ろの論理アドレスを抽出する（Ｓ８０２）。命令実行部６１は、例えば、図１０に示すアドレス管理テーブル４００を参照し、セグメントＩＤに関連付けられている中で、一番後ろの論理アドレスを検索し、検索した論理アドレスを物理的に一番後ろの論理アドレスとして抽出しても良い。
【０１１７】
そして、命令実行部６１は、Ｓ８０２で抽出した論理アドレスに対応するブロックの後ろに、物理的に連続するブロックに書き込む１以上のセグメントを書き込む（Ｓ８０３）。
【０１１８】
以上のように、命令実行部６１は、低速記憶媒体７０に１以上のセグメントを書き込むとき、アドレス管理テーブル４００を参照して、物理的に一番後ろに位置するブロックから物理的に連続するブロックに１以上のセグメントを書き込む。
【０１１９】
ここで、図１９を参照して、低速記憶媒体７０へのセグメントの書き込み処理についてさらに説明する。図１９は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。以下の説明では、書き込み処理をする前の低速記憶媒体７０の書き込み領域には、図１４に示すように、♯２２〜♯３４、♯３６〜♯４４、♯４６、♯４７、♯５０〜♯６５にセグメントが記憶されているものとして説明する。図１９は、命令処理部４２から通知された３つのセグメントを書き込んだ後の低速記憶媒体７０のブロックに記憶されているセグメントを示す図である。
【０１２０】
命令実行部６１は、命令処理部４２から３つのセグメントと、書き込み命令が通知されると、セグメントが記憶されているブロックの中で、一番後ろの論理アドレスに対応するブロックを抽出する。すなわち、命令実行部６１は、１以上のセグメントが書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域を抽出する。このとき、命令実行部６１は、アドレス管理テーブル４００を参照し、物理的に一番後ろに位置するブロックを抽出しても良い。命令実行部６１は、例えば、３つのセグメントと、書き込み命令が通知されたとき、図１４の低速記憶媒体７０の記憶状態であれば、物理的に一番後ろに位置する論理アドレス＝＃６５のブロックを抽出する。
【０１２１】
そして、命令実行部６１は、一番後ろの論理アドレスに対応するブロックと物理的に連続するブロックに、命令処理部４２から通知された１以上のセグメントを書き込む。命令実行部６１は、例えば、３つのセグメントと、書き込み命令が通知されたとき、図１９の低速記憶媒体７０に示すように、♯６６〜♯６８にセグメントを書き込む。すなわち、命令実行部６１は、３つのセグメントと書き込み命令とが通知されると、低速記憶媒体７０の記憶状態を、図１４に示す状態から図１９に示す状態に変化させる。
【０１２２】
なお、命令実行部６１は、低速記憶媒体７０にセグメントが書き込まれていないとき、例えば、予め設定された論理アドレスに対応するブロックと、物理的に連続するブロックにそれぞれ通知された１以上のセグメントを書き込んでも良い。
【０１２３】
図２０は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。
命令実行部６１は、図２０に示すように、低速記憶媒体７０の最後の論理アドレス＝＃９５に対応するブロックにセグメントが記憶されているとき、最初の論理アドレス＝♯０が最後の論理アドレス＝♯９５の後の論理アドレスであると判定しても良い。そして、命令実行部６１は、低速記憶媒体７０が図２０に示す状態であるとき、セグメントが記憶されているブロックの中で一番後ろの論理アドレスに対応するブロックとして、＃１３を抽出する。そして、命令実行部６１は、♯１３と物理的に連続するブロックに、命令処理部４２から通知された１以上のセグメントを書き込む。
【０１２４】
命令処理部４２は、１以上のセグメントを低速記憶媒体７０に書き込むとき、例えば、ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）という入出力命令を用いる。ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）のｋ１〜ｋＮは、セグメントＩＤである。ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）のｖ１〜ｖＮは、セグメントである。
【０１２５】
命令処理部４２は、例えば、１以上のセグメントを低速記憶媒体７０に書き込むとき、１以上の書き込むセグメントのＩＤであるｋ１〜ｋＮに対応する論理アドレスを、アドレス管理テーブル４００から取得する。また、命令処理部４２は、例えば、セグメントＩＤｋ１〜ｋＮに対応するｖ１〜ｖＮのセグメントを高速記憶媒体５０から読み出す。そして、命令処理部４２は、例えば、ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）を命令実行部６１に通知する。
【０１２６】
また、命令実行部６１は、例えば、ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）が通知されると、アドレス管理テーブル４００を参照し、物理的に一番後ろに位置するブロックを抽出する。そして、命令実行部６１は、例えば、ｐｕｓｈｉｔｅｍｓ＿ｂｕｌｋ（［ｋ１，ｖ１］，  ［ｋ２，ｖ２］，・・・，［ｋＮ，ｖＮ］）と、物理的に一番後ろに位置するブロックの論理アドレスとをディスクコントローラに通知する。これにより、命令実行部６１は、ディスクコントローラに、低速記憶媒体７０上の物理的に一番後ろに位置するブロックから物理的に連続するセグメントが記憶されていない空領域に、１以上のセグメントをそれぞれ書込みさせる。
【０１２７】
図８を参照して説明する。
命令処理部４２は、Ｓ４０２で通知された１以上のセグメントを、Ｓ４０４で高速記憶媒体５０に記憶させると、高速記憶媒体５０に記憶されたセグメントを用いてアクセス命令２０１の処理をする（Ｓ４０５）。
【０１２８】
そして、命令処理部４２は、アクセス命令２０１の処理により得られた分析結果を、イベント処理部４１とネットワーク２０とを介してクライアント１０に通知する（Ｓ４０６）。なお、命令処理部４２は、例えば、複数のアクセス命令２００（アクセス命令２０１〜２０３など）の処理の終了によって分析結果が得られる場合、アクセス命令２０１の処理結果を高速記憶媒体５０に一次記憶しても良い。そして、命令処理部４２は、関連する複数のアクセス命令２００の処理が全て終了したとき、分析結果をクライアント１０に通知しても良い。
【０１２９】
図２１は、コンピュータ装置の一実施例を示すブロック図である。
クライアント１０と、サーバ装置３０とは、例えば、図２１に示すコンピュータ装置である。
【０１３０】
図２１を参照して、クライアント１０と、サーバ装置３０との構成について説明する。
図２１において、コンピュータ装置は、制御回路５０１と、記憶装置５０２と、読書装置５０３と、記録媒体５０４と、通信インターフェイス５０５（通信Ｉ／Ｆ）と、入出力インターフェイス５０６（入出力Ｉ／Ｆ）と、ネットワーク５０７とを備えている。また、各構成要素は、バス５０８により接続されている。
【０１３１】
制御回路５０１は、コンピュータ装置全体の制御をする。そして、制御回路５０１は、例えば、ＣＰＵ、マルチコアＣＰＵ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）およびＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などである。
【０１３２】
コンピュータ装置５００がサーバ装置３０であるとき、制御回路５０１は、例えば、図４において、イベント処理部４１と、命令処理部４２と、セグメント管理部４３として機能する。さらに、コンピュータ装置５００がサーバ装置３０であるとき、制御回路５０１は、例えば、図４において、命令実行部６１と、命令保持部６２と、判定部６３として機能する。なお、セグメント管理テーブル３００と、アドレス管理テーブル４００とは、例えば、ＣＰＵ、ＦＰＧＡ、およびＰＬＤのキャッシュに記憶されても良い。
【０１３３】
記憶装置５０２は、各種データを記憶する。そして、記憶装置５０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリや、ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）などで構成される。
【０１３４】
コンピュータ装置５００がサーバ装置３０であるとき、記憶装置５０２は、例えば、図４において、高速記憶媒体５０（メモリなど）や低速記憶媒体７０（ＨＤなど）として機能する。
【０１３５】
また、ＲＯＭは、ブートプログラムなどのプログラムを記憶している。ＲＡＭは、制御回路５０１のワークエリアとして使用される。ＨＤは、ＯＳ、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
【０１３６】
コンピュータ装置５００がサーバ装置３０であるとき、記憶装置５０２は、例えば、制御回路５０１を、イベント処理部４１と、命令処理部４２と、セグメント管理部４３として機能させるスケジューラ４０を記憶する。また、コンピュータ装置５００がサーバ装置３０であるとき、記憶装置５０２は、例えば、制御回路５０１を、命令実行部６１と、命令保持部６２と、判定部６３として機能させるストレージミドルウェア６０を記憶する。なお、セグメント管理テーブル３００は、スケジューラ４０に含まれていても良いし、記憶装置５０２にスケジューラ４０と関連付けされて記憶されても良い。セグメント管理テーブル３００は、記憶装置５０２にスケジューラ４０と関連付けされて記憶される場合、スケジューラ４０の起動時にＲＡＭなどに読み出されることにより、アクセス処理で使用されても良い。また、アドレス管理テーブル４００は、ストレージミドルウェア６０に含まれていても良いし、記憶装置５０２にストレージミドルウェア６０と関連付けされて記憶されても良い。アドレス管理テーブル４００は、記憶装置５０２にストレージミドルウェア６０と関連付けされて記憶される場合、ストレージミドルウェア６０の起動時にＲＡＭなどに読み出されることにより、アクセス処理で使用されても良い。
【０１３７】
そして、アクセス制御をするとき、サーバ装置３０は、記憶装置５０２に記憶されたスケジューラ４０と、ストレージミドルウェア６０とをＲＡＭに読み出す。これにより、ＲＡＭに読み出されたスケジューラ４０とストレージミドルウェア６０とを制御回路５０１で実行することにより、サーバ装置３０は、アクセス制御処理を実行する。
【０１３８】
なお、スケジューラ４０とストレージミドルウェア６０は、制御回路５０１が通信インターフェイス５０５を介してアクセス可能であれば、ネットワーク５０７上のサーバが有する記憶装置に記憶されていても良い。
【０１３９】
読書装置５０３は、制御回路５０１に制御され、着脱可能な記録媒体５０４のデータのリード／ライトを行なう。そして、読書装置５０３は、例えば、ＦＤＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｄｒｉｖｅ）、ＤＶＤＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＢＤＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｋ  Ｄｒｉｖｅ：登録商標）およびＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などである。また、読書装置５０３は、記録媒体５０４に記録されたスケジューラ４０やストレージミドルウェア６０を読み出し、記憶装置５０２に記憶しても良い。
【０１４０】
記録媒体５０４は、各種データを保存する。
コンピュータ装置５００がサーバ装置３０であるとき、記録媒体５０４は、例えば、スケジューラ４０とストレージミドルウェア６０とを記憶する。さらに、記録媒体５０４は、セグメント管理テーブル３００とアドレス管理テーブル４００とを記憶しても良い。
【０１４１】
そして、記録媒体５０４は、読書装置５０３を介してバス５０８に接続され、制御回路５０１が読書装置５０３を制御することにより、データのリード／ライトが行なわれる。また、記録媒体５０４は、例えば、ＦＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｋ：登録商標）、およびフラッシュメモリなどである。
【０１４２】
通信インターフェイス５０５は、ネットワーク５０７を介してコンピュータ装置と他の装置とを通信可能に接続する。
【０１４３】
コンピュータ装置５００がサーバ装置３０であるとき、通信インターフェイス５０５は、クライアント１０との情報の送受信に用いられる。
【０１４４】
入出力インターフェイス５０６は、例えば、キーボード、マウス、およびタッチパネルなどと接続され、接続された装置から各種情報を示す信号が入力されると、バス５０８を介して入力された信号を制御回路５０１に出力する。また、入出力インターフェイス５０６は、制御回路５０１から出力された各種情報を示す信号がバス５０８を介して入力されると、接続された各種装置にその信号を出力する。
【０１４５】
ネットワーク５０７は、例えば、ＬＡＮ、無線通信、またはインターネットなどであり、コンピュータ装置と他の装置を通信接続する。ネットワーク５０７は、例えば、図２のネットワーク２０である。
【０１４６】
以上のように、実施形態のストレージミドルウェア６０は、低速記憶媒体７０からセグメントを読み出すとき、読み出し命令で指定されたセグメントを含む１以上のセグメントを一度に読み出す処理をサーバ装置３０に実行させる。これにより、ストレージミドルウェア６０は、低速記憶媒体７０からのセグメントの読み出し回数を少なくし、アクセス処理のスループットを向上させることができる。
【０１４７】
また、実施形態のストレージミドルウェア６０は、１以上のセグメントを一度に読み出すとき、低速記憶媒体７０上の物理的に連続しているブロックからセグメントを読み出す処理をサーバ装置３０に実行させる。これにより、ストレージミドルウェア６０は、低速記憶媒体７０からのデータ読み出し時のシーク処理の回数を少なくし、アクセス処理のスループットを向上させることができる。
【０１４８】
また、実施形態のストレージミドルウェア６０は、低速記憶媒体７０にセグメントを書き込むとき、アドレス管理テーブル４００を参照する処理をサーバ装置３０に実行させる。そして、実施形態のストレージミドルウェア６０は、物理的に一番後ろに位置するブロックから物理的に連続するブロックに１以上のセグメントを書き込む処理をサーバ装置３０に実行させる。これにより、ストレージミドルウェア６０は、低速記憶媒体７０へのセグメントの書き込み時に、書き込む１以上のセグメントが追加するセグメントであるか、更新するセグメントであるかの判定をなくす。よって、ストレージミドルウェア６０は、アクセス処理のスループットを向上させることができる。
【０１４９】
また、ストレージミドルウェア６０は、上記のように、物理的に連続するブロックに１以上のセグメントを連続して書き込むので、低速記憶媒体７０へのセグメント書き込み時のランダムアクセスをなくす。よって、ストレージミドルウェア６０は、アクセス処理におけるシーク処理の回数を少なくし、アクセス処理のスループットを向上させることができる。
【０１５０】
また、実施形態のストレージミドルウェア６０は、低速記憶媒体７０からセグメントを読み出すとき、読み出したセグメントを削除する処理をサーバ装置３０に実行させる。これにより、ストレージミドルウェア６０は、書き込む処理のとき、書き込むセグメントを全て追加するセグメントにする。よって、サーバ装置３０は、書き込む処理のとき、書き込むセグメントが追加するセグメントであるか、更新するセグメントであるかの判定をしない。したがって、ストレージミドルウェア６０は、セグメントの存在を管理する管理情報を不要にする。すなわち、ストレージミドルウェア６０は、アクセス処理に大量データの管理情報を用いないので、メモリの消費を抑制することができる。
【０１５１】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１５２】
１  ディスク装置
２  命令保持部
３  頻度判定部
４  命令実行部
５  ディスク
１０  クライアント
２０  ネットワーク
３０  サーバ装置
４０  スケジューラ
４１  イベント処理部
４２  命令処理部
４３  セグメント管理部
５０  高速記憶媒体
６０  ストレージミドルウェア
６１  命令実行部
６２  命令保持部
６３  判定部
７０  低速記憶媒体
８０  ストリームデータ処理システム
２００  アクセス命令
３００  セグメント管理テーブル
４００  アドレス管理テーブル
５００  コンピュータ装置
５０１  制御回路
５０２  記憶装置
５０３  読書装置
５０４  記録媒体
５０５  通信インターフェイス
５０６  入出力インターフェイス
５０７  ネットワーク
５０８  バス
【図１】
2014147840.tif 000003
【図２】
2014147840.tif 000004
【図３】
2014147840.tif 000005
【図４】
2014147840.tif 000006
【図５】
2014147840.tif 000007
【図６】
2014147840.tif 000008
【図７】
2014147840.tif 000009
【図８】
2014147840.tif 000010
【図９】
2014147840.tif 000011
【図１０】
2014147840.tif 000012
【図１１】
2014147840.tif 000013
【図１２】
2014147840.tif 000014
【図１３】
2014147840.tif 000015
【図１４】
2014147840.tif 000016
【図１５】
2014147840.tif 000017
【図１６】
2014147840.tif 000018
【図１７】
2014147840.tif 000019
【図１８】
2014147840.tif 000020
【図１９】
2014147840.tif 000021
【図２０】
2014147840.tif 000022
【図２１】
2014147840.tif 000023
【手続補正書】
【提出日】平成27年10月1日(2015.10.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、記憶装置の第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記記憶装置から前記第１のデータおよび前記第２のデータを削除し、
前記記憶装置に第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
処理をコンピュータに実行させることを特徴とするアクセス制御プログラム。
【請求項２】
第１のデータ群へのアクセスを指示する第１のアクセス命令に応じて、記憶装置内の第１の記憶領域を含む、物理的に連続するｎ（ｎは自然数）個の記憶領域から、それぞれが１以上のデータを有するｎ個のデータ群を読み出し、前記記憶装置から前記読み出したｎ個のデータ群を削除し、
１以上のデータを有するｍ（ｍは自然数）個のデータ群を前記記憶装置に書き込むことを指示する第４のアクセス命令に応じて、前記記憶装置内で１以上のデータを有する複数のデータ群が書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のデータ群が記憶されていない空領域に、前記ｍ個のデータ群をそれぞれ書き込む
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項３】
前記データ群を読み出す処理において、前記ｎ個の記憶領域の中に空領域があるとき、前記ｎ個のデータ群に代えて、前記ｎ個の記憶領域のうち、前記第１の記憶領域を含む、物理的に連続する前記データ群が記憶された記憶領域から１以上のデータ群を読み出し、
前記読み出した１以上のデータ群を削除する
処理をコンピュータに実行させることを特徴とする請求項２に記載のアクセス制御プログラム。
【請求項４】
前記アクセス命令を受信する処理において、複数のアクセス命令を受信し、
前記受信した複数のアクセス命令を保持し、
前記保持しているアクセス命令の数が多くなると、前記データ群を読み出す処理において、読み出す前記ｎ個のデータ群の数を多くし、
前記保持しているアクセス命令の数が少なくなると、前記データ群を読み出す処理において、前記読み出すｎ個のデータ群の数を少なくする、
処理をコンピュータに実行させることを特徴とする請求項２または３に記載のアクセス制御プログラム。
【請求項５】
情報を記憶するディスクと、
与えられた命令を実行する命令実行部と、を備え、
前記命令実行部は、
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、前記ディスクの第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記ディスクから前記第１のデータおよび前記第２のデータを削除し、
前記ディスクに第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記ディスク内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
ことを特徴とするディスク装置。
【請求項６】
コンピュータにより実行される情報処理方法であって、
前記コンピュータは、
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、記憶装置の第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記記憶装置から前記第１のデータおよび前記第２のデータを削除し、
前記記憶装置に第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
ことを実行するアクセス制御方法。
【手続補正書】
【提出日】平成28年7月21日(2016.7.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、記憶装置の第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記記憶装置から前記第１のデータおよび前記第２のデータを削除し、
前記記憶装置に第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
処理をコンピュータに実行させることを特徴とするアクセス制御プログラム。
【請求項２】
第１のデータ群へのアクセスを指示する第１のアクセス命令に応じて、記憶装置内の第１の記憶領域を含む、物理的に連続するｎ（ｎは自然数）個の記憶領域から、それぞれが１以上のデータを有するｎ個のデータ群を読み出し、前記記憶装置から前記読み出したｎ個のデータ群を削除し、
１以上のデータを有するｍ（ｍは自然数）個のデータ群を前記記憶装置に書き込むことを指示する第２のアクセス命令に応じて、前記記憶装置内で１以上のデータを有する複数のデータ群が書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のデータ群が記憶されていない空領域に、前記ｍ個のデータ群をそれぞれ書き込む
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項３】
前記データ群を読み出す処理において、前記ｎ個の記憶領域の中に空領域があるとき、前記ｎ個のデータ群に代えて、前記ｎ個の記憶領域のうち、前記第１の記憶領域を含む、物理的に連続する前記データ群が記憶された記憶領域から１以上のデータ群を読み出し、
前記読み出した１以上のデータ群を削除する
処理をコンピュータに実行させることを特徴とする請求項２に記載のアクセス制御プログラム。
【請求項４】
受信した複数のアクセス命令を保持し、
前記保持しているアクセス命令の数が多くなると、前記データ群を読み出す処理において、読み出す前記ｎ個のデータ群の数を多くし、
前記保持しているアクセス命令の数が少なくなると、前記データ群を読み出す処理において、前記読み出すｎ個のデータ群の数を少なくする、
処理をコンピュータに実行させることを特徴とする請求項２または３に記載のアクセス制御プログラム。
【請求項５】
情報を記憶するディスクと、
与えられた命令を実行する命令実行部と、を備え、
前記命令実行部は、
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、前記ディスクの第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記ディスクから前記第１のデータおよび前記第２のデータを削除し、
前記ディスクに第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記ディスク内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
ことを特徴とするディスク装置。
【請求項６】
コンピュータにより実行される情報処理方法であって、
前記コンピュータは、
第１のデータへのアクセスを指示する第１のアクセス命令に応じて、記憶装置の第１の記憶領域から前記第１のデータを読み出し、前記第１の記憶領域と物理的に隣接し、かつ空領域ではない第２の記憶領域から第２のデータを読み出し、前記記憶装置から前記第１のデータおよび前記第２のデータを削除し、
前記記憶装置に第３のデータを書き込むことを指示する第２のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第３の記憶領域に、前記第３のデータを書き込む
ことを実行するアクセス制御方法。
【請求項７】
前記第１のアクセス命令がｎ個の記憶領域ブロックからデータを読み出すことを指定するときには、前記第２のデータを読み出す処理において、
前記第１の記憶領域の後続側に物理的に隣接するｎ−１個の物理的に連続する記憶領域ブロックが空領域を含まないときには、前記ｎ−１個の物理的に連続する記憶領域ブロックから前記第２のデータを読み出し、
前記第１の記憶領域の後続側に物理的に隣接するｍ（ｍは、ｎ−１よりも小さい）個の物理的に連続する記憶領域ブロックが空領域を含まず、且つ、前記第１の記憶領域の後続側におけるｍ＋１番目の記憶領域ブロックが空領域であれば、前記ｍ個の物理的に連続する記憶領域ブロックから前記第２のデータを読み出す
ことを特徴とする請求項１に記載のアクセス制御プログラム。
【請求項８】
前記第１のアクセス命令がｎ個の記憶領域ブロックからデータを読み出すことを指定するときには、前記第１のデータおよび前記第２のデータを読み出す処理において、
前記第１の記憶領域の後続側に物理的に隣接するｎ−１個の物理的に連続する記憶領域ブロックが空領域を含まないときには、前記第１の記憶領域から前記第１のデータを読み出すとともに、前記ｎ−１個の物理的に連続する記憶領域ブロックから前記第２のデータを読み出し、
前記第１の記憶領域の後続側に物理的に隣接するｎ−１個の物理的に連続する記憶領域ブロックが空領域を含むときには、前記第１の記憶領域および前記第１の記憶領域の前方側に物理的に隣接する少なくとも１個の記憶領域ブロックを含む、物理的に連続する空領域でないｎ個の記憶領域ブロックから前記第１のデータおよび前記第２のデータを読み出す
ことを特徴とする請求項１に記載のアクセス制御プログラム。
【国際調査報告】
2014147840.tif 000024
2014147840.tif 000025
2014147840.tif 000026
2014147840.tif 000027