(57)【特許請求の範囲】
【請求項１】
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置を有するデータ管理システムであって、
前記データ管理装置は、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手段と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手段と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手段とを有するデータ管理システム。
【請求項２】
前記事前読込対象登録要求手段は、前記第一のデータが前記第一の記憶手段に記憶されていた場合に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する請求項１記載のデータ管理システム。
【請求項３】
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子を含み、
前記事前読込要求手段は、複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手段は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する請求項１又は２記載のデータ管理システム。
【請求項４】
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子と前記複数の操作の順序関係を示す情報とを含み、
前記事前読込要求手段は、順序付けされて記憶されている複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、前記順序付けの順序で該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手段は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として、当該第二の識別子との前記順序関係に基づく前記順序付けによる前記第一の識別子の記憶を要求する請求項３記載のデータ管理システム。
【請求項５】
前記事前読込登録要求手段より前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶が要求された場合に、前記第二の識別子に関する前記事前読み込みの対象として既に記憶されている他の前記データに対する第四の識別子と同じ順序付けにおいて当該第一の識別子を前記第四の識別子と共に記憶する請求項１乃至４いずれか一項記載のデータ管理システム。
【請求項６】
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置が実行するデータ管理方法であって、
前記データ管理装置は、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手順と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手順と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手順とを実行するデータ管理方法。
【請求項７】
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置のそれぞれに、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手順と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手順と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手順とを実行させるためのデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理システム、データ管理方法、及びデータ管理プログラムに関し、特にデータを分散管理するデータ管理システム、データ管理方法、及びデータ管理プログラムに関する。
【背景技術】
【０００２】
ＤＨＴ（Distributed Hash Table）では、データ（コンテンツ）に対応するキー（例えば、データ名等）のハッシュ値が空間に写像され、その空間が複数のノードによって分割管理される。各ノードは、自分が管理を担当する空間（ハッシュ値）に属するデータを、例えば、キーに関連付けて管理する。
【０００３】
ＤＨＴによれば、クライアントは、各ノードに対して問い合わせることなく、目的とするデータに対するキーのハッシュ値によって当該データを管理するノードを特定することができる。その結果、通信量が削減され、データの探索が高速化される。また、ハッシュ値のランダム性により、特定ノードへの負荷の集中を回避することができ、優れたスケーラビリティを確保することができる。また、大容量メモリを搭載可能な高価なサーバではなく、安価なサーバを多数使用してシステムを構築することができる。更に、ＤＨＴは、ランダムなクエリに強いという特性も有る。
【０００４】
ところで、ＤＨＴは多数のノードにデータを割り当てる手法であり、各ノードによるデータの管理形態については規定していない。ＤＨＴの各ノードは、通常、メモリとＨＤＤ（Hard Disk Drive）を組み合わせてデータを格納している。例えば、ノード数や各ノードの搭載メモリ量に比べて管理対象の全データの合計容量が大きければ、一部のデータの格納にはＨＤＤが使用される。
【０００５】
しかし、ＨＤＤは、ランダムアクセスのレイテンシがメモリに比べて大きいという欠点がある。したがって、ＨＤＤは、ランダムアクセスに対する強さを特長とするＤＨＴとは必ずしも相性が良いとはいえない。ＤＨＴの各ノードでＨＤＤが利用されてデータが格納されると、ＨＤＤのレイテンシが表面化し、データへの平均アクセス速度が低下するからである。
【０００６】
従来、一般的なデータの管理手法として、ＨＤＤのレイテンシを隠蔽するために、アクセス頻度の高いデータをメモリ上にキャッシュしておく手法がある。また、アクセス履歴等を利用して、次にアクセスされることが予想されるデータをメモリ上にプリフェッチしておく手法もある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１９１９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記管理手法をＤＨＴに単純に適用して、ＨＤＤのレイテンシを隠蔽するのは困難である。すなわち、ＤＨＴは、基本的に各データに対するアクセス頻度が均一に近いアプリケーションに採用されるため、キャッシュによる効果を得るのは難しい。
【０００９】
また、クライアントからのアクセスは各ノードに分散する。したがって、全体でアクセス順序に強い相関があるアクセスであっても、ノードごとに観察すると極めて弱い相関となってしまう。よって、ノードに閉じたプリフェッチでは、その効果は限定的なものとなってしまう。そこで、ＤＨＴ全体に対するアクセス履歴を各ノードが共有することも考えられるが、当該アクセス履歴の管理のための処理負荷及び当該アクセス履歴へ各ノードがアクセスするための通信負荷等がボトルネックとなり、スケーラビリティが失われてしまう。
【００１０】
本発明は、上記の点に鑑みてなされたものであって、分散管理されるデータへのアクセス性能を適切に向上させることのできるデータ管理システム、データ管理方法、及びデータ管理プログラムの提供を目的とする。
【課題を解決するための手段】
【００１１】
そこで上記課題を解決するため、それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置を有するデータ管理システムであって、前記データ管理装置は、操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手段と、前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手段と、前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手段とを有する。
【発明の効果】
【００１２】
開示された技術によれば、分散管理されるデータへのアクセス性能を適切に向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態におけるデータ管理システムの構成例を示す図である。
【図２】本発明の実施の形態におけるＤＨＴノードのハードウェア構成例を示す図である。
【図３】データ管理システムによる処理概要を説明するための図である。
【図４】データ管理システムによる処理概要を説明するための図である。
【図５】ＤＨＴノードの機能構成例を示す図である。
【図６】クライアントノードの機能構成例を示す図である。
【図７】クライアントノードが実行する処理手順の一例を説明するためのフローチャートである。
【図８】操作履歴記憶部の構成例を示す図である。
【図９】操作要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【図１０】データ記憶部の構成例を示す図である。
【図１１】プリフェッチ要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【図１２】プリフェッチ対象登録要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるデータ管理システムの構成例を示す図である。同図において、データ管理システム１は、ＤＨＴノード１０ａ、１０ｂ、１０ｃ、及び１０ｄ等の複数のＤＨＴノード１０と、一以上のクライアントノード２０とを含む。各ＤＨＴノード１０及びクライアントノード２０は、ＬＡＮ（Local Area Network）又はインターネット等のネットワーク３０（有線又は無線の別は問わない。）を介して通信可能とされている。
【００１５】
ＤＨＴノード１０は、データ管理装置として機能し、複数のＤＨＴノード１０によってＤＨＴ（Distributed Hash Table）を構成するノードである。すなわち、各ＤＨＴノード１０は、一以上のデータを記憶（管理）する。或るデータについて、いずれのＤＨＴノード１０が記憶しているかについては、当該データの識別情報に対するハッシュ演算に基づいて特定される。なお、本実施の形態において、各ＤＨＴノード１０上には、ｋｅｙ−ｖａｌｕｅストアが実装される。ｋｅｙ−ｖａｌｕｅストアは、ｋｅｙ（キー）とｖａｌｕｅ（値）とが組として（関連付けられて）記憶し、キーを与えることによって値を取り出すことができるデータベースである。キーは、データの識別情報に相当する。値は、データの実体に相当する。キーとしては、データ名、ファイル名、データＩＤ等、各データを識別可能な情報を用いることができる。但し、ＤＨＴノード１０上におけるデータの管理形態は、ｋｅｙ−ｖａｌｕｅストアでなくてもよい。例えば、ＲＤＢ（Relational Database）等が用いられてもよい。また、ＤＨＴノード１０が管理するデータの種別は所定のものに限定されない。数値、文字、文字列、文書データ、画像データ、動画データ、音声データ、その他の電子データ等、各種のデータが管理対象となりうる。
【００１６】
クライアントノード２０は、ＤＨＴノード１０に管理されているデータを利用するノードである。
【００１７】
なお、本実施の形態における「ノード」は、基本的に一台の情報処理装置（コンピュータ）に相当する。但し、一台の筐体内に複数のＣＰＵと、ＣＰＵごとの記憶装置とを備える情報処理装置の存在を考慮すれば、ノードと情報処理装置との関係は１対１に限定されない。
【００１８】
図２は、本発明の実施の形態におけるＤＨＴノードのハードウェア構成例を示す図である。図２のＤＨＴノード１０は、それぞれバスＢで相互に接続されているドライブ装置１００と、ＨＤＤ１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５とを有する。
【００１９】
ＤＨＴノード１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介してＨＤＤ１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。ＨＤＤ１０２は、いわゆるＨＤＤ（Hard Disk Drive）であり、インストールされたプログラムを格納すると共に、管理対象のデータを格納する。
【００２０】
メモリ装置１０３は、いわゆるＲＡＭであり、プログラムの起動指示があった場合に、ＨＤＤ１０２からプログラムを読み出して格納する。メモリ装置１０３は、また、プリフェッチの対象とされたデータを格納する。すなわち、本実施の形態では、ＨＤＤ１０２及びメモリ装置１０３を用いた多階層なストレージ構成が用いられる。低階層のＨＤＤ１０２は、第一の記憶手段の一例である。また、高階層のメモリ装置１０３は、低階層よりもアクセス速度が高速な（すなわち、レイテンシ（latency）の小さい）第二の記憶手段の一例である。
【００２１】
ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってＤＨＴノード１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００２２】
なお、ＤＨＴノード１０ａ〜１０ｄのそれぞれのハードウェアを区別する場合、各ハードウェアの参照番号の末尾に、各ＤＨＴノード１０の参照番号の末尾のアルファベットが付与される。例えば、ＤＨＴノード１０ａのＨＤＤ１０２は、ＨＤＤ１０２ａと表記される。
【００２３】
なお、クライアントノード２０についても、図２に示されるハードウェアと同様のハードウェアを有していればよい。
【００２４】
続いて、データ管理システム１による処理概要について説明する。図３及び図４は、データ管理システムによる処理概要を説明するための図である。
【００２５】
同図において、ＤＨＴノード１０ａは、ｋｅｙ６のキーに対してｖａｌｕｅ６の値（データ）を記憶している。ＤＨＴノード１０ｂは、ｋｅｙ５のキーに対してｖａｌｕｅ５の値（データ）を記憶している。なお、データ管理システム１の各ＤＨＴノード１０は、初期状態（例えば、起動直後等）において、全てのデータをＨＤＤ１０２を用いて記憶している。したがって、同図の初期状態（ステップＳ１の実行前）において、ＤＨＴノード１０ａ及び１０ｂは、ｖａｌｕｅ６又はｖａｌｕｅ５のそれぞれのＨＤＤ１０２ａ又はＨＤＤ１０２ｂに記憶している。
【００２６】
一方、クライアントノード２０は、ｋｅｙ５に係るデータを利用した後、ｋｅｙ６に係るデータを利用するノードであるとする。
【００２７】
以上の前提において、本実施の形態のデータ管理システム１では、次のような処理手順が実行される。
【００２８】
まず、クライアントノード２０は、ｋｅｙ５に対する所定のハッシュ関数の演算結果に基づいて、当該データを記憶するノードはＤＨＴノード１０ｂであることを特定する。そこで、クライアントノード２０は、ｋｅｙ５を指定してＤＨＴノード１０ｂに対してデータの操作要求を送信する（Ｓ１）。ここでの操作要求は読み込み要求であるとする。
【００２９】
ＤＨＴノード１０ｂは、当該読み込み要求を受信すると、ｋｅｙ５に対応するデータであるｖａｌｕｅ５をＨＤＤ１０２ｂより読み込み、クライアント２０に返信する（Ｓ２）。
【００３０】
続いて、クライアントノード２０は、ｋｅｙ６に対する所定のハッシュ関数の演算結果に基づいて、当該データを記憶するノードはＤＨＴノード１０ａであることを特定する。そこで、クライアントノード２０は、ｋｅｙ６を指定してＤＨＴノード１０ａに対してデータの読み込み要求を送信する（Ｓ３）。この際、操作対象のデータのキーであるｋｅｙ６に加えて、直前に操作されたデータのキーであるｋｅｙ５をも読み込み要求に指定される。
【００３１】
ＤＨＴノード１０ａは、当該読み込み要求を受信すると、ｋｅｙ６に対応するデータであるｖａｌｕｅ６をＨＤＤ１０２ａより読み込み、クライアント２０に返信する（Ｓ４）。続いて、ＤＨＴノード１０ａは、ｋｅｙ５の操作要求が受信された場合のプリフェッチ（事前読み込み）の対象として、ｋｅｙ６を記憶することの要求（以下、「プリフェッチ対象登録要求」という。）をＤＨＴノード１０ｂに送信する。プリフェッチ対象は、次の操作対象の候補と考えることもできる。なお、ＤＨＴノード１０ａは、ｋｅｙ５に対する所定のハッシュ関数の演算結果に基づいて、ｋｅｙ５に対応するノードはＤＨＴノード１０ｂであることを特定する。
【００３２】
ＤＨＴノード１０ｂは、当該プリフェッチ対象登録要求を受信すると、ｋｅｙ５に関連付けてｋｅｙ６を記憶する（Ｓ６）。すなわち、ｋｅｙ５が操作対象とされたときは、ｋｅｙ６をプリフェッチすべきことがＤＨＴノード１０ｂにおいて記憶される。
【００３３】
その後に再びクライアントノード２０が、ｋｅｙ５、ｋｅｙ６の順でデータを読み込む場合の処理手順が図４に示されている。
【００３４】
図４において、ステップＳ１１及びＳ１２は、図３のステップＳ１及びＳ２と同様である。但し、ステップＳ１２に続いて、ＤＨＴノード１０ｂは、読み込み対象のｋｅｙ５の操作時のプリフェッチ対象として記憶されているｋｅｙ６のプリフェッチ要求をＤＨＴノード１０ａに送信する（Ｓ１３）。なお、ＤＨＴノード１０ｂは、ｋｅｙ６に対する所定のハッシュ関数の演算結果に基づいて、ｋｅｙ６に対応するノードはＤＨＴノード１０ａであることを特定する。
【００３５】
ＤＨＴノード１０ａは、当該プリフェッチ要求を受信すると、ｋｅｙ６に対応するｖａｌｕｅ６をＨＤＤ１０２ａからメモリ装置１０３ａに移動する（Ｓ１４）。すなわち、本実施の形態において、プリフェッチとは、ＨＤＤ１０２からメモリ装置１０３へのデータの移動をいう。移動とは、コピーの後にコピー元が削除される処理をいう。すなわち、移動対象のデータは、移動先（メモリ装置１０３）に記録された後、移動元（例えば、ＨＤＤ１０２）より削除される。同一データの冗長管理を回避するためである。
【００３６】
続くステップＳ１５及びＳ１６では、図３のステップＳ３及びＳ４とほぼ同様の処理手順が実行される。但し、ステップＳ１５における読み込み要求の受信時において、クライアント１０ａでは、ｖａｌｕｅ６はメモリ装置１０３に移動されている。したがって、ステップＳ１５に対するステップＳ１６の応答は、ステップＳ３に対するステップＳ４の応答よりも高速化されることが期待される。
【００３７】
なお、上記では、説明の便宜上、二つのデータのみが操作対象（アクセス対象）とされる例を示した。クライアント２０による操作対象となるデータがより多数に渡る場合、より多くのプリフェッチが行われ、それに応じてデータに対するアクセス性能の向上はより顕著なものとなりうる。
【００３８】
また、上記では、キー（すなわち、データ）ごとに、プリフェッチ対象を一つ記憶する例について説明したが、一つのキーに対して複数のプリフェッチ対象を記憶させてもよい。具体的には、次の操作候補だけでなく、次の次の操作候補や更に次の操作候補等、数回分に渡る将来の操作候補をプリフェッチ対象として多段階に記憶するようにしてもよい。この場合、多段階に記憶されている全てのプリフェッチ対象が並列的にプリフェッチされる。その結果、プリフェッチされているはずのデータがプリフェッチされていない可能性を低減することができる。
【００３９】
すなわち、図４の場合、プリフェッチ要求（Ｓ１３）よりもクライアントノード２０からの操作要求（Ｓ１５）の方が先に到達する可能性がある。プリフェッチ対象が多段階に記憶される場合、更に次に操作対象とされるデータは、プリフェッチされている可能性が高い。したがって、データに対するアクセス性能の更なる向上を期待できる。以下では、プリフェッチ対象が多段階（Ｎ段階）に記憶されることを前提として説明する。プリフェッチ対象を一つに限定する場合は、Ｎ＝１であるケースとして理解すればよい。
【００４０】
図３及び図４において説明した処理手順を実現するため、ＤＨＴノード１０及びクライアントノード２０は、それぞれ次のような機能構成を有する。
【００４１】
図５は、ＤＨＴノードの機能構成例を示す図である。同図において、ＤＨＴノード１０は、操作実行部１１、プリフェッチ要求部１２、プリフェッチ対象登録要求部１３、プリフェッチ実行部１４、プリフェッチ対象登録部１５、ハッシュ演算部１６、及びデータ記憶部１７等を有する。これら各部は、ＤＨＴノード１０にインストールされたプログラムがＣＰＵ１０４に実行させる処理により実現される。
【００４２】
操作実行部１１は、クライアントノード２０からの操作要求に応じ、当該操作要求に指定されたキーに対応するデータに対して、当該操作要求に係る操作を実行する。操作の種別は、読み込み（取得）、書き込み（更新）、及び削除等の一般的なものに限定されない。操作の種別は、管理対象のデータの種別又は特性等に応じて適宜定義すればよい。例えば、データの加工又は変換に関する操作が定義されてもよい。データが数値であれば、加工の内容は四則演算等が一例として挙げられる。
【００４３】
プリフェッチ要求部１２は、図４において説明したプリフェッチ要求の送信処理を実行する。プリフェッチ対象登録要求部１３は、図３において説明したプリフェッチ対象登録要求の送信処理を実行する。プリフェッチ実行部１４は、プリフェッチ要求に応じ、当該要求に指定されているキーに対応するデータについてプリフェッチを実行する。プリフェッチ対象登録部１５は、プリフェッチ対象登録要求に応じ、プリフェッチ対象の登録処理を実行する。ハッシュ演算部１６は、入力されたキーに対して所定のハッシュ関数を適用し、当該ハッシュ関数の演算結果として、当該キーに対応するＤＨＴノード１０の識別情報を出力する。すなわち、ここでいうハッシュ関数とは、キーに対して一つのＤＨＴノード１０が特定できるものである。したがって、当該ハッシュ関数ｈは、以下のように定義される。
【００４４】
ｈ（キー）＝ノードの識別情報
例えば、各ＤＨＴノード１０をＩＰアドレスで識別できる場合、ハッシュ関数ｈは、以下のように具体化される。
【００４５】
ｈ（キー）＝ＩＰアドレス
また、ＤＨＴノード１０上において複数のプロセスがＴＣＰ／ＩＰ用のポートを開設しており、情報処理装置をＤＨＴノード１０として機能させるプロフセスを他のプロセスと区別する必要がある場合は、ハッシュ関数ｈは、以下のように具体化される。
【００４６】
ｈ（キー）＝（ＩＰアドレス、ポート番号）
なお、このようなノードの特定の仕方は一例である。ＤＨＴに関する公知文献等に開示されている他の方法によって各ＤＨＴノード１０が特定されてもよい。
【００４７】
データ記憶部１７は、管理対象のデータをキーと関連付けて記憶する。また、データ記憶部１７は、プリフェッチ対象が登録されたキーについては、プリフェッチ対象のキーをも関連付けて記憶する。なお、データ記憶部１７は、ＨＤＤ１０２及びメモリ装置１０３を用いて実現される。すなわち、プリフェッチされたデータの記憶先はメモリ装置１０３であり、プリフェッチされていないデータの記憶先はＨＤＤ１０２である。
【００４８】
図６は、クライアントノードの機能構成例を示す図である。同図において、クライアントノード２０は、アプリケーション２１、操作要求部２２、ハッシュ演算部２３、及び操作履歴記憶部２４等を有する。これら各部は、クライアントノード２０にインストールされたプログラムが、クライアントノード２０のＣＰＵに実行させる処理により実現される。
【００４９】
アプリケーション２１は、データを利用するプログラムである。アプリケーション２１は、ユーザによって対話的に利用されるアプリケーションプログラムでもよいし、Ｗｅｂアプリケーション２１のように、ネットワークを介して受信される要求に応じてサービスを提供するアプリケーションプログラムでもよい。
【００５０】
操作要求部２２は、アプリケーション２１からのデータの操作要求に応じた処理を実行する。ハッシュ演算部２３は、上記のハッシュ関数ｈを用いて、キーに対応するＤＨＴノード１０を特定する。操作履歴記憶部２４は、操作対象とされたデータのキーの履歴をクライアントノードの記憶装置を用いて記憶する。
【００５１】
以下、クライアントノード２０及びＤＨＴノード１０のそれぞれの処理手順について詳細に説明する。
【００５２】
図７は、クライアントノードが実行する処理手順の一例を説明するためのフローチャートである。
【００５３】
ステップＳ１０１において、操作要求部２２は、アプリケーション２１よりデータの操作要求を受け付ける。当該操作要求には、操作対象のキー（以下、「対象キー」という。）が指定される。続いて、ハッシュ演算部２３は、対象キーに対してハッシュ関数ｈを適用し、対象キーに対応するＤＨＴノード１０（以下、「担当ノード」という。）を特定する（Ｓ１０２）。例えば、担当ノードのＩＰアドレス、又は担当ノードのＩＰアドレス及びポート番号等の担当ノードの識別情報がハッシュ演算部２３によって出力される。
【００５４】
続いて、操作要求部２２は、操作履歴記憶部２４におけるエントリ（操作履歴）の有無を確認する（Ｓ１０３）。
【００５５】
図８は、操作履歴記憶部の構成例を示す図である。同図に示されるように、操作履歴記憶部２４は、ＦＩＦＯ（First-In First-Out）型のリスト構造を有し、過去Ｎ回分の操作において操作対象とされたキーを操作順に記憶する。３つの数値「０４２」、「０４７」、「０３」は、過去３回分の操作において操作対象とされたキーを示す。Ｎの値（すなわち、操作履歴記憶部２４のサイズ）は、一つのキーに関するプリフェッチ対象の記憶範囲に応じて定まる。プリフェッチ対象の記憶範囲を１段階とする場合は、過去１回分（すなわち、直前）の操作に係るキーが記憶されればよい。すなわち、操作履歴記憶部２４は、１つのキーを記憶できればよい。本実施の形態では、プリフェッチ対象の記憶範囲は３段階であるため、過去３回分の操作に係るキーが記憶される。
【００５６】
ステップＳ１０３の判定は、操作履歴記憶部２４に、少なくとも一つのキーが記録されているか否かの判定に相当する。
【００５７】
操作履歴記憶部２４に少なくとも一つのキーが記録されている場合（Ｓ１０３でＹｅｓ）、操作要求部２２は、操作履歴記憶部２４に記録されているキーを全て取得する（Ｓ１０４）。なお、取得されたキーを、以下「履歴キー」という。
【００５８】
続いて、操作要求部２２は、ハッシュ演算部２３より出力された識別情報に基づいて担当ノードに操作要求を送信する（Ｓ１０５）。当該操作要求には、操作種別、対象キー、及び全ての履歴キー等が指定される。履歴キーが複数の場合、その操作順の順序関係を示す情報も指定される。例えば、操作順に応じたリスト構造によって履歴キーが指定される。
【００５９】
続いて、操作要求部２２は、担当ノードからの応答を待機する（Ｓ１０６）。担当ノードからの応答が受信されると（Ｓ１０６でＹｅｓ）、操作要求部２２は、当該応答に含まれている操作結果をアプリケーション２１に出力する（Ｓ１０７）。例えば、操作種別が読み込み（取得）の場合、対象キーに対応するデータが操作結果としてアプリケーション２１に出力される。
【００６０】
続いて、操作要求部２２は、対象キーを操作履歴記憶部２４に記録する（Ｓ１０８）。対象キーの記録に応じ、操作履歴記憶部２４が記憶可能なキーの総数を超える場合は最も古いキーが操作履歴記憶部２４より削除される。
【００６１】
続いて、クライアントノード２０からの操作要求を受信したＤＨＴノード１０が実行する処理手順について説明する。
【００６２】
図９は、操作要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【００６３】
クライアントノード２０からの操作要求が受信されると、操作実行部１１は、操作要求に指定されている対象キーに対応する、データ記憶部１７のレコードが、メモリ装置１０３にロード（プリフェッチ）されているか否かを判定する（Ｓ２０１）。
【００６４】
図１０は、データ記憶部の構成例を示す図である。同図において、データ記憶部１７は、一つのＤＨＴノード１０において管理されるデータごとに、キー、値（すなわち、データ）、及びプリフェッチ対象１〜３等を含むレコードを記憶する。同図では、データが文字列である例が示されている。
【００６５】
プリフェッチ対象Ｎ（Ｎは、１〜３）は、該当するレコードのキーが（厳密には、キーに係るデータが）操作対象とされた場合に、プリフェッチすべきデータのキーを示す。Ｎの値は、プリフェッチ対象に対して付与された順序（順番）である。すなわち、プリフェッチ対象は、順序付けされて記憶される。当該順序は、プリフェッチの順番として用いられる。但し、並列的にプリフェッチが行われてもよい。プリフェッチ対象Ｎは、過去の操作履歴における操作順に基づいて登録される。例えば、キーが０３であるデータの操作後に、０４４→０３→０４４の順で操作が行われたために、０４４、０３、０４４が、１行目のレコード（キーが０３に係るレコード）のプリフェッチ対象Ｎに登録されている。
【００６６】
なお、プリフェッチ対象は、キーに関連付けられていればよく、必ずしもデータと同じテーブルに記憶されていなくてもよい。
【００６７】
また、同図では、一つのテーブルとして表現されているが、データ記憶部１７の各レコードの物理的な記憶先は、必ずしも同じではない。すなわち、一部のレコードはＨＤＤ１０２に記憶され、他のレコードはメモリ装置１０３にロードされて（プリフェッチされて）いるという状態が発生しうる。したがって、ステップＳ２０１では、メモリ装置１０３にプリフェッチされているレコードの中に、対象キーに対応するレコードが有るか否かが判定される。
【００６８】
該当するレコードがメモリ装置１０３にプリフェッチされている場合（Ｓ２０１でＹｅｓ）、操作実行部１１は、当該レコードに含まれているデータに対して、操作要求に指定されている操作種別に係る操作を実行する（Ｓ２０２）。例えば、操作種別が読み込み（取得）であれば、操作実行部１１は、当該データをクライアントノード２０に返信する。
【００６９】
一方、該当するレコードがメモリ装置１０３に無い場合（Ｓ２０１でＮｏ）、操作実行部１１は、対象キーに対応するレコードは、ＨＤＤ１０２に記憶されているか否かを判定する（Ｓ２０３）。該当するレコードがＨＤＤ１０２にも記憶されていない場合（Ｓ２０３でＮｏ）、操作実行部１１は、クライアントノード２０にエラーを返信する（Ｓ２０４）。
【００７０】
該当するレコードがＨＤＤ１０２に記憶されている場合（Ｓ２０３でＹｅｓ）、操作実行部１１は、当該レコードに含まれているデータに対して、操作要求に指定されている操作種別に係る操作を実行する（Ｓ２０５）。なお、ここで操作対象とされたデータに係るレコード（データ記憶部１７のレコード）が、メモリ装置１０３に移動されるようにしてもよい。
【００７１】
続いて、プリフェッチ対象登録要求部１３は、操作要求に履歴キーが指定されているか否かを判定する（Ｓ２０６）。履歴キーが指定されている場合（Ｓ２０６でＹｅｓ）、プリフェッチ対象登録要求部１３は、ハッシュ演算部１６を利用して当該履歴キーに対応するＤＨＴノード１０（履歴ノード）を特定する（Ｓ２０７）。すなわち、ハッシュ演算部１６に対象キーを入力すると、ハッシュ演算部１６より履歴ノードの識別情報（ＩＰアドレス等）が出力される。
【００７２】
続いて、プリフェッチ対象登録要求部１３は、履歴ノードに対し、対象キーをプリフェッチ対象として登録させるためのプリフェッチ対象登録要求を送信する（Ｓ２０８）。なお、当該プリフェッチ対象登録要求には、対象キーの他に操作要求に指定されている全ての履歴キーも指定される。履歴キーが複数の場合、その操作順の順序関係を示す情報も指定される。例えば、操作順に応じたリスト構造によって履歴キーが指定される。また、履歴ノードは、当該担当ノード（すなわち、プリフェッチ対象登録要求の送信元のノード）である可能性もある。
【００７３】
ステップＳ２０７及びＳ２０８は、履歴キーが複数の場合、履歴キーごとに実行される。履歴キーごとの実行は、履歴キーの操作順に応じて直列的に行われても良いし、並列的に行われてよい。
【００７４】
ステップＳ２０３以降より明らかなように、本実施の形態では、操作対象とされたデータがＨＤＤ１０２に記憶されていた場合（すなわち、プリフェッチされていなかった場合）に、プリフェッチ対象登録要求が送信される。しかし、操作対象とされたデータがメモリ装置１０３に記憶されていた場合にプリフェッチ対象登録要求が送信される形態を除外する趣旨ではない。但し、プリフェッチ対象登録要求の送信機会を操作対象とされたデータがＨＤＤ１０２に記憶されていた場合に限定することで、ＤＨＴノード１０間の通信量の増加を抑制することができる。
【００７５】
ステップＳ２０２又はＳ２０８に続いて、プリフェッチ実行部１４は、対象キーに係るレコードにプリフェッチ対象は登録されているか否かを判定する（Ｓ２０９）。当該レコードにプリフェッチ対象が登録されている場合、プリフェッチ実行部１４は、ハッシュ演算部１６を利用してプリフェッチ対象に対応するＤＨＴノード１０（プリフェッチ対象ノード）を特定する（Ｓ２１０）。続いて、プリフェッチ実行部１４は、プリフェッチ対象ノードに対し、プリフェッチ要求を送信する（Ｓ２１１）。当該プリフェッチ要求には、当該プリフェッチ対象ノードに対応するプリフェッチ対象のキーが指定される。対象キー（操作対象のキー）に係るレコードにプリフェッチ対象が複数登録されている場合、ステップＳ２１０及びＳ２１１は、プリフェッチ対象ごとに実行される。プリフェッチ対象ごとの実行は、プリフェッチ対象の操作順に応じて直列的に行われてもよいし、並列的に行われてよい。但し、クライアントノード２０によって次に操作される可能性が高いのは、プリフェッチ対象１である。したがって、プリフェッチ対象２又はプリフェッチ対象３よりも、プリフェッチ対象１に対するプリフェッチ要求が遅くならないのが望ましい。
【００７６】
なお、プリフェッチ対象ノードは、当該担当ノード（すなわち、プリフェッチ対象登録要求の送信元のノード）である可能性もある。
【００７７】
続いて、ステップＳ２１０において送信されるプリフェッチ要求を受信したＤＨＴノード１０が実行する処理手順について説明する。
【００７８】
図１１は、プリフェッチ要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【００７９】
プリフェッチ要求が受信されると、プリフェッチ実行部１４は、プリフェッチ要求に指定されているプリフェッチ対象のキー（以下、「プリフェッチキー」という。）に対応するレコードは既にプリフェッチされているか否かを判定する（Ｓ３０１）。すなわち、該当するレコードがメモリ装置１０３に有るか否かが判定される。
【００８０】
該当するレコードがメモリ装置１０３に有る場合（Ｓ３０１でＹｅｓ）、図１１の処理は終了する。該当するレコードがメモリ装置１０３に無い場合（Ｓ３０１でＮｏ）、プリフェッチ実行部１４は、プリフェッチキーに対応するレコードがＨＤＤ１０２に記憶されているか否かを判定する（Ｓ３０２）。該当するレコードがＨＤＤ１０２にも記憶されていない場合（Ｓ３０２でＮｏ）、プリフェッチ実行部１４は、エラーを返信する（Ｓ３０３）。
【００８１】
該当するレコードがＨＤＤ１０２に記憶されている場合（Ｓ３０２でＹｅｓ）、プリフェッチ実行部１４は、当該レコードをメモリ装置１０３に移動する（Ｓ３０４）。続いて、プリフェッチ実行部１４は、メモリ装置１０３に記憶されているデータ記憶部１７のレコードの総データサイズは、所定の閾値以上であるか否かを判定する（Ｓ３０５）。当該総データサイズが所定の閾値以上である場合（Ｓ３０５）、プリフェッチ実行部１４は、メモリ装置１０３の一つのレコードをＨＤＤ１０２に移動する（Ｓ３０６）。当該一つのレコードは、例えば、最後に操作された時期が最も古いものが選択されればよい。すなわち、ＬＲＵ（Least Recently Used）のアルゴリズムに基づいて当該一つのレコードが選択されればよい。但し、他のキャッシュアルゴリズムが用いられてもよい。
【００８２】
ステップＳ３０５及びＳ３０６は、上記総データサイズが上記所定の閾値未満となるまで繰り返される。
【００８３】
続いて、図９のステップＳ２０８において送信されるプリフェッチ対象登録要求を受信したＤＨＴノード１０が実行する処理手順について説明する。
【００８４】
図１２は、プリフェッチ対象登録要求に応じてＤＨＴノードが実行する処理手順の一例を説明するためのフローチャートである。
【００８５】
プリフェッチ対象登録要求が受信されると、プリフェッチ対象登録部１５は、プリフェッチ対象登録要求に指定されている１以上の履歴キーのうち、当該ＤＨＴノード１０が記憶を担当する履歴キーの有無を判定する（Ｓ４０１）。例えば、データ記憶部１７のキー項目に、いずれかの履歴キーが記録されているか否かが判定される。
【００８６】
当該ＤＨＴノード１０が記憶を担当する履歴キーが一つも無い場合（Ｓ４０１でＮｏ）、プリフェッチ対象登録部１５は、エラーを返信する（Ｓ４０２）。当該ＤＨＴノード１０が記憶を担当する履歴キーが少なくとも一つ有る場合（Ｓ４０１でＹｅｓ）、プリフェッチ対象登録部１５は、当該ＤＨＴノード１０が記憶を担当する履歴キーに係るレコードをメモリ装置１０３より検索する（Ｓ４０３）。該当するレコードが検索されない場合（Ｓ４０４でＮｏ）、プリフェッチ対象登録部１５は、当該履歴キーに係るレコードをＨＤＤ１０２より検索する（Ｓ４０５）。
【００８７】
続いて、プリフェッチ対象登録部１５は、メモリ装置１０３又はＨＤＤ１０２より検索された、履歴キーに対応するレコードのプリフェッチ対象Ｎに、プリフェッチ対象登録要求に指定されている対象キーを記録する（Ｓ４０７）。当該ＤＨＴノード１０が記憶を担当する履歴キーが複数有る場合、ステップＳ４０３〜Ｓ４０７は、履歴キーごとに実行される。
【００８８】
本実施の形態のように、キーごとにプリフェッチ対象を複数（Ｎ個）記憶する場合（図１０参照）、ステップＳ４０７において、対象キーに対してＮの値としていずれを付与するかは、プリフェッチ対象登録要求に指定されている、履歴キーの順序関係を示す情報に基づいて決定される。対象キーに対してＮの値としていずれを付与するかとは、本実施の形態では、対象キーを、プリフェッチ対象１〜３のいずれに登録するかを意味する。
【００８９】
履歴キーの順序関係は、対象キーの直前の過去における操作履歴を示す。すなわち、当該順序関係において先頭は最も古く、末尾は最も新しいことになる。そうすると、当該順序関係において末尾に近ければ近いほど、操作履歴上における対象キーとの距離は近いということになる。したがって、対象キーに付与されるＮの値は、以下の式で求められる。
【００９０】
Ｎ＝Ｓ−「対象とされている履歴キーに関する履歴キーの順序関係における末尾からの距離」＋１
ここで、Ｓは、プリフェッチ対象の段階数であり、本実施の形態では３である。「対象とされている履歴キーに関する履歴キーの順序関係における末尾からの距離」とは、当該順序関係において、当該末尾の順番から、対象とされている履歴キーの順番を減じた値である。
【００９１】
具体的には、プリフェッチ対象登録要求に３つの履歴キーが指定されており、当該ＤＨＴノード１０が担当する履歴キーが３番目である場合、対象キーは、プリフェッチ対象１に記録される。当該ＤＨＴノード１０が担当する履歴キーが２番目である場合、対象キーは、プリフェッチ対象２に記録される。当該ＤＨＴノード１０が担当する履歴キーが１番目である場合、対象キーは、プリフェッチ対象３に記録される。
【００９２】
また、プリフェッチ対象登録要求に１つの履歴キーが指定されている場合、対象キーは、プリフェッチ対象１に記録される。この場合、当該履歴キーについて、末尾からの距離は０であるからである。
【００９３】
なお、対象キーは、プリフェッチ対象Ｎに対して上書きされる。すなわち、これまで当該プリフェッチ対象Ｎに記録されていたキーは削除される。但し、プリフェッチ対象１〜３のそれぞれごとに（すなわち、プリフェッチ対象の各順序付けにおいて）、多重的にキーを記憶可能としてもよい。例えば、一つのレコードにおいて、プリフェッチ対象１〜３のそれぞれごとに、２以上のキーを記憶可能としてもよい。この場合、多重度を超えない限り、既存のプリフェッチ対象は削除されない。多重度を超えた場合、古いキーから削除さればよい。
【００９４】
プリフェッチ対象が多重化される場合、プリフェッチ要求時には、多重度×段階数分のキーに関してプリフェッチ要求が送信される。そうすることにより、データへのアクセス速度の更なる向上を期待することができる。
【００９５】
上述したように、本実施の形態によれば、ＤＨＴノード１０を跨って行われるデータの操作に対しても、プリフェッチを実現することができる。その結果、ＨＤＤ１０２のレイテンシを隠蔽することができ、データに対する平均アクセス速度を向上させることができる。ここで、操作の種別は、読み込み（取得）に限られない。各種操作に関して、ＨＤＤ１０２にアクセスするよりも、メモリ装置１０３にアクセスする方が高速であると考えられるからである。
【００９６】
また、ＤＨＴ全体に対する操作履歴を各ノードが共有する場合に比べて各ＤＨＴノード１０の処理負荷及び通信負荷を抑制することができる。
【００９７】
また、プリフェッチ対象の参照手順はシンプルであるため、クライアントノード２０による次の操作に対して迅速にプリフェッチを実現することができる。
【００９８】
なお、本実施の形態では、操作要求には、直前の数回分の操作に係る履歴キーが指定され、プリフェッチ対象としては、直後の数回分の操作に係るキーが記録される例を示した。しかし、必ずしも、操作要求に指定される履歴キーは、直前の操作に係るものに限定されなくてもよい。例えば、２回前又は２回前以前の操作に係る履歴キーが指定されてもよい。この場合、２回後又は２回後以降の操作において操作対象とされるキーがプリフェッチ対象として記憶される。また、操作要求に指定される複数の履歴キーは、操作履歴において連続的な関係に無くてもよい。例えば、１つ飛びの関係であってもよい。この場合、１つ飛びに操作対象とされるキーがプリフェッチ対象として記憶される。
【００９９】
また、本実施の形態では、クライアントノード２０は、必ずしもキーに基づいてＤＨＴノード１０を特定できる機能を有していなくてもよい。例えば、クライアントノード２０がいずれかのＤＨＴノード１０に各種の要求を送信してもよい。この場合、当該要求を受信したＤＨＴノード１０は、当該要求に指定されたキーの担当が自ノードでなければ、当該キーの担当ノードに当該要求を転送すればよい。又は、クライアントノード２０は、いずれかのＤＨＴノード１０に、キーに対応する担当ノードのＩＰアドレス及びポート番号を問い合わせてもよい。この場合、問い合わせを受けたＤＨＴノード１０は、当該キーの担当ノードのＩＰアドレス及びポート番号を返信すればよい。
【０１００】
更に、クライアントノード２０と各ＤＨＴノード１０との間の通信用のネットワークと、各ＤＨＴノード１０間の通信用のネットワークとを物理的に分離してもよい。そうすることにより、ＤＨＴノード１０を跨ったプリフェッチのためにＤＨＴノード１０間で行われる通信の影響がクライアントノード２０に及ぶのを回避することができる。
【０１０１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０２】
以上の説明に関し、更に以下の項を開示する。
（付記１）
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置を有するデータ管理システムであって、
前記データ管理装置は、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手段と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手段と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手段とを有するデータ管理システム。
（付記２）
前記事前読込対象登録要求手段は、前記第一のデータが前記第一の記憶手段に記憶されていた場合に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記１記載のデータ管理システム。
（付記３）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子を含み、
前記事前読込要求手段は、複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手段は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記１又は２記載のデータ管理システム。
（付記４）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子と前記複数の操作の順序関係を示す情報とを含み、
前記事前読込要求手段は、順序付けされて記憶されている複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、前記順序付けの順序で該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手段は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として、当該第二の識別子との前記順序関係に基づく前記順序付けによる前記第一の識別子の記憶を要求する付記３記載のデータ管理システム。
（付記５）
前記事前読込登録要求手段より前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶が要求された場合に、前記第二の識別子に関する前記事前読み込みの対象として既に記憶されている他の前記データに対する第四の識別子と同じ順序付けにおいて当該第一の識別子を前記第四の識別子と共に記憶する付記１乃至４いずれか一項記載のデータ管理システム。
（付記６）
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置が実行するデータ管理方法であって、
前記データ管理装置は、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手順と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手順と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手順とを実行するデータ管理方法。
（付記７）
前記事前読込対象登録要求手順は、前記第一のデータが前記第一の記憶手段に記憶されていた場合に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記６記載のデータ管理方法。
（付記８）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子を含み、
前記事前読込要求手順は、複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手順は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記６又は７記載のデータ管理方法。
（付記９）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子と前記複数の操作の順序関係を示す情報とを含み、
前記事前読込要求手順は、順序付けされて記憶されている複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、前記順序付けの順序で該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手順は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として、当該第二の識別子との前記順序関係に基づく前記順序付けによる前記第一の識別子の記憶を要求する付記８記載のデータ管理方法。
（付記１０）
前記事前読込登録要求手順により前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶が要求された場合に、前記第二の識別子に関する前記事前読み込みの対象として既に記憶されている他の前記データに対する第四の識別子と同じ前記順序付けにおいて、当該第一の識別子を前記第四の識別子と共に記憶する付記６乃至９いずれか一項記載のデータ管理方法。
（付記１１）
それぞれ第一の記憶手段と該第一の記憶手段よりもアクセス速度が高速な第二の記憶手段とを用いてデータを記憶する複数のデータ管理装置のそれぞれに、
操作対象を示す第一の識別子と、該操作対象より前の操作対象を示す第二の識別子とを含む操作要求の受信に応じ、前記第一の識別子に対応する第一のデータに対して前記操作要求に係る操作を実行する操作実行手順と、
前記第一の識別子に係る操作要求が受信された場合の事前読み込みの対象として当該データ管理装置において記憶されている、第三の識別子に対応する前記データ管理装置に、前記第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求する事前読込要求手順と、
前記第二の識別子に対応する前記データ管理装置に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する事前読込対象登録要求手順とを実行させるためのデータ管理プログラム。
（付記１２）
前記事前読込対象登録要求手順は、前記第一のデータが前記第一の記憶手段に記憶されていた場合に、前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記１１記載のデータ管理プログラム。
（付記１３）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子を含み、
前記事前読込要求手順は、複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手順は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶を要求する付記１１又は１２記載のデータ管理プログラム。
（付記１４）
前記操作要求は、前記操作対象より前の複数の操作対象のそれぞれの前記第二の識別子と前記複数の操作の順序関係を示す情報とを含み、
前記事前読込要求手順は、順序付けされて記憶されている複数の前記第三の識別子のそれぞれに対応する前記各データ管理装置に、前記順序付けの順序で該第三の識別子に対応する前記データの前記第二の記憶手段への記録の実行を要求し、
前記事前読込対象登録要求手順は、それぞれの前記第二の識別子に対応する前記各データ管理装置に、当該第二の識別子に関する前記事前読み込みの対象として、当該第二の識別子との前記順序関係に基づく前記順序付けによる前記第一の識別子の記憶を要求する付記１３記載のデータ管理プログラム。
（付記１５）
前記事前読込登録要求手順により前記第二の識別子に関する前記事前読み込みの対象として前記第一の識別子の記憶が要求された場合に、前記第二の識別子に関する前記事前読み込みの対象として既に記憶されている他の前記データに対する第四の識別子と同じ前記順序付けにおいて、当該第一の識別子を前記第四の識別子と共に記憶する付記１１乃至１４いずれか一項記載のデータ管理プログラム。
【符号の説明】
【０１０３】
１          データ管理システム
１０，１０ａ、１０ｂ、１０ｃ、１０ｄ    ＤＨＴノード
１１          操作実行部
１２          プリフェッチ要求部
１３          プリフェッチ対象登録要求部
１４          プリフェッチ実行部
１５          プリフェッチ対象登録部
１６          ハッシュ演算部
１７          データ記憶部
２０          クライアントノード
２１          アプリケーション
２２          操作要求部
２３          ハッシュ演算部
２４          操作履歴記憶部
３０          ネットワーク
１００        ドライブ装置
１０１        記録媒体
１０２        ＨＤＤ
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
Ｂ            バス
【図１】
0005488225.tif 000002
【図２】
0005488225.tif 000003
【図３】
0005488225.tif 000004
【図４】
0005488225.tif 000005
【図５】
0005488225.tif 000006
【図６】
0005488225.tif 000007
【図７】
0005488225.tif 000008
【図８】
0005488225.tif 000009
【図９】
0005488225.tif 000010
【図１０】
0005488225.tif 000011
【図１１】
0005488225.tif 000012
【図１２】
0005488225.tif 000013