(57)【特許請求の範囲】
【請求項１】
ディレクトリ情報を複数のデータ記憶装置間で共有し、複数のデータをそれぞれ複数の世代に亘って記憶するストレージシステムにおける前記データ記憶装置において、
前記データを記憶する記憶手段と、
入力された最新データと、前記記憶手段に記憶されている当該最新データより一世代前のデータとの差分である差分データを生成する差分データ生成手段と、
前記最新データの一世代前のデータを、前記差分データ生成手段で生成された差分データに変更するデータ変更手段と、
前記最新データと、当該最新データのバージョンと、当該最新データより一世代前の差分データが前記記憶手段に記憶されているアドレスとを対応付けたメタデータを生成するメタデータ生成手段と、
前記データに対する、当該データに対応する前記差分データへのアクセス頻度の割合を計測するアクセス頻度計測手段と、
このアクセス頻度計測手段によって計測されたアクセス頻度の割合が所定値以下となった差分データを、前記ストレージシステム内の予め定めた他のデータ記憶装置に送信するデータ移動手段と、
前記メタデータに記述されている前記差分データのアドレスを、前記他のデータ記憶装置が当該他のデータ記憶装置の記憶手段に記憶した前記差分データのアドレスに変更するメタデータ変更手段と、
を備えていることを特徴とするデータ記憶装置。
【請求項２】
前記メタデータで特定される一世代以前の前記差分データに基づいて、前記記憶手段に記憶されている最新バージョンのデータから、指定されたバージョンのデータを生成するデータ生成手段を備えていることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記データ移動手段は、前記記憶手段に記憶されているデータ容量に対する、前記他のデータ記憶装置の記憶手段に記憶されているデータ容量の割合が所定値以下となった段階で、前記アクセス頻度の割合に基づいて、前記差分データを他のデータ記憶装置に送信することを特徴とする請求項１又は請求項２に記載のデータ記憶装置。
【請求項４】
ディレクトリ情報を複数のデータ記憶装置間で共有し、複数のデータをそれぞれ複数の世代に亘って記憶するストレージシステムにおける前記データ記憶装置を制御するコンピュータを、
入力された最新データと、記憶手段に記憶されている当該最新データより一世代前のデータとの差分である差分データを生成する差分データ生成手段、
前記最新データの一世代前のデータを、前記差分データ生成手段で生成された差分データに変更するデータ変更手段、
前記最新データと、当該最新データのバージョンと、当該最新データより一世代前の差分データが前記記憶手段に記憶されているアドレスとを対応付けたメタデータを生成するメタデータ生成手段、
前記データに対する、当該データに対応する前記差分データへのアクセス頻度の割合を計測するアクセス頻度計測手段、
このアクセス頻度計測手段によって計測されたアクセス頻度の割合が所定値以下となった差分データを、前記ストレージシステム内の予め定めた他のデータ記憶装置に送信するデータ移動手段、
前記メタデータに記述されている前記差分データのアドレスを、前記他のデータ記憶装置が当該他のデータ記憶装置の記憶手段に記憶した前記差分データのアドレスに変更するメタデータ変更手段、
前記メタデータで特定される一世代以前の前記差分データに基づいて、前記記憶手段に記憶されている最新バージョンのデータから、指定されたバージョンのデータを生成するデータ生成手段、
として機能させることを特徴とするバージョン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを複数のバージョンに対応付けて記憶し、管理するデータ記憶装置及びバージョン管理プログラムに関する。
【背景技術】
【０００２】
一般に、ソフトウェア（プログラム）、コンテンツ（映像データ等）等のデータを作成する場合、データの追加や変更に伴って新規に作成したデータにバージョン（版数）を対応付けて記憶手段（記憶装置）に記憶し、管理する手法が用いられている。このとき、古いバージョンのデータを再利用したり、参照したりするため、複数のバージョンのデータが記憶手段に記憶されている。この場合、データのバージョンが増えるのに伴って、容量の大きい記憶手段が必要となる。
【０００３】
しかし、通常、データの各バージョン間では、重複するデータが多く、データをそのままバージョン毎に記憶手段に記憶するのは、記憶手段の使用効率が悪く、その分、記憶手段にかかるコストが高くなっている。
そこで、従来は、データ全体を記憶手段に記憶するのは、最新バージョンのデータのみとし、その一つ前の古いバージョンのデータは、最新バージョンのデータからの差分のみとしている。これによって、最新データを作成する度に、その前バージョンのデータは、最新データとの差分データとなり、最新バージョンのデータ以外は、すべて差分データとなる（例えば、特許文献１参照）。
【０００４】
ここで、図１３を参照して、従来の差分データにより複数のバージョンのデータを管理する手法について、その概要を説明する。図１３は、従来の差分データにより複数のバージョンのデータを管理するバージョン管理手法を模式的に示した図である。
図１３に示すように、従来のバージョン管理手法は、データをディレクトリ構造（例えば、Ｂｔｒｅｅ〔Ｂａｌａｎｃｅｄ  Ｔｒｅｅ（バランス木）〕）を有するディレクトリ情報で管理し、各データ（ここではＡ，Ｂ）を記憶手段３０に記憶する。
【０００５】
このとき、旧バージョンについては、一つ新しいバージョンと当該旧バージョンのデータとの差分（差分データ）のみが記憶手段３０に記憶される。ここでは、最新データＡに対して、一世代前の差分データＡ１、さらに、その前の世代の差分データＡ２等が記憶手段３０に記憶されている。また、同様に、最新データＢに対して、一世代前の差分データＢ１が記憶手段３０に記憶されている。
そして、例えば、最新データＡに対する一世代前のデータは、データＡと差分データＡ１とから生成することができる。また、最新データＡに対する二世代前のデータは、データＡと差分データＡ１と差分データＡ２とから生成することができる。
【０００６】
このように、従来のバージョン管理手法は、ディレクトリ情報により管理されている各データのアドレスに基づいて、最新データＡを読み出し、さらに、差分データＡ１等を読み出して合成することで、過去のバージョンのデータを生成する。
これによって、従来のバージョン管理手法は、最新データのみデータ全体をそのまま記憶し、過去のバージョンのデータは、差分データのみとなり、記憶手段３０の容量を抑えることができる。
【特許文献１】特開２０００−２００１８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前記したように、従来のバージョン管理手法は、所望のバージョンのデータを読み出す場合、データ及び差分データのアドレスを、同一のディレクトリ情報の中から探索する必要がある。しかし、データのバージョンが増加するほど、生成される差分データの数が増えるため、最新データ及び差分データともにアドレスを探索する時間が長くなり、ひいては所望のデータの読み出し時間が長くなってしまうという問題がある。
また、一般に、データへのアクセスは、バージョンが古くなるほど急激に少なくなる傾向にある。そこで、古いバージョンのデータの読み出し時間が遅くなっても、新しいバージョンのデータの読み出し時間を遅くしたくないという要望がある。
【０００８】
本発明は、以上のような問題点に鑑みてなされたものであり、バージョンが増加した場合であっても、最新のバージョンのデータを高速に読み出すことが可能なデータ記憶装置及びバージョン管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、前記目的を達成するために創案されたものであり、まず、請求項１に記載のデータ記憶装置は、ディレクトリ情報を複数のデータ記憶装置間で共有し、複数のデータをそれぞれ複数の世代に亘って記憶手段に記憶するストレージシステムにおけるデータ記憶装置において、記憶手段と、データ変更手段と、メタデータ生成手段と、アクセス頻度計測手段と、データ移動手段と、メタデータ変更手段とを備える構成とした。
【００１０】
かかる構成において、データ記憶装置は、記憶手段に複数の世代に亘ってデータを記憶する。このとき、データ記憶装置は、メタデータ生成手段によって、入力された最新データと、当該最新データのバージョンと、当該最新データより一世代前のデータが記憶手段に記憶されているアドレスとを対応付けたメタデータを生成する。なお、このメタデータは、データに付加してデータとともに１つのファイルとすることとしてもよいし、データとは分離して記憶手段に記憶することとしてもよい。ただし、データとメタデータとを分離して記憶する場合は、メタデータと、一世代前のメタデータとを対応付けることとする。
これによって、データ記憶装置は、ディレクトリ情報で管理されたツリー（木）構造の中から、過去のデータを探索する必要がなく、メタデータを参照することで、順次過去のバージョンのデータにアクセスすることが可能となる。
【００１２】
また、データ記憶装置は、差分データ生成手段によって、最新データと、記憶手段に記憶されている当該最新データより一世代前のデータとの差分である差分データを生成する。この差分データは、一世代前のデータに対して、データが追加された場合はその追加分、データが変更された場合はその変更分、データの一部が削除された場合はその削除分を示すデータである。
【００１３】
また、データ記憶装置は、データ変更手段によって、メタデータを参照して、最新データの一世代前のデータを、差分データ生成手段で生成された差分データに変更する。これによって、一世代前のデータが、最新データとの差分だけのデータ（差分データ）に変更される。
これによって、最新バージョンのデータのみが、差分データではない原データとして管理されることになり、それより前のバージョンのデータは、最新バージョンのデータからの差分（差分データ）のみとなる。
また、データ記憶装置は、アクセス頻度計測手段によって、最新バージョンのデータに対する、当該データに対応する過去のバージョンのデータである差分データへのアクセス頻度の割合を計測する。例えば、アクセス頻度計測手段は、最新バージョンのデータへのアクセスの数と、そのデータに対応する過去のデータ（差分データ）へのアクセスの数とをカウントし、最新のバージョンのデータへのアクセスの数を基準とした割合で、差分データへのアクセス頻度の割合を算出する。
このアクセス頻度の割合は、過去のどのバージョン以前のデータのアクセスが減ったかという指標となる。
そして、データ記憶装置は、データ移動手段によって、アクセス頻度の割合が、予め定めた割合以下となった差分データを、ストレージシステム内の予め定めた他のデータ記憶装置に送信する。この予め定めた他のデータ記憶装置は、例えば、ネットワーク上で複数存在する場合は、ＩＰアドレスで連続する等、論理的に隣接するデータ記憶装置とする。
また、データ記憶装置は、メタデータ変更手段によって、当該差分データに対応するメタデータに記述されている前記差分データのアドレスを、他のデータ記憶装置の記憶手段に記憶された差分データのアドレスに変更する。なお、この場合、アドレスは、記憶手段の物理アドレスに、データ記憶装置を特定する情報（例えばＩＰアドレス）を付加したものとする。
これによって、アクセス頻度の割合が一定以下となった差分データは、他のデータ記憶装置に分散されることになる。
【００１４】
また、請求項２に記載のデータ記憶装置は、請求項１に記載のデータ記憶装置において、データ生成手段を備える構成とした。
【００１５】
かかる構成において、データ記憶装置は、データ生成手段によって、メタデータで特定される一世代以前の差分データを用いて、記憶手段に記憶されている最新バージョンのデータに順次古いバージョンのデータを反映させることによって、指定されたバージョンのデータを生成する。
【００１６】
すなわち、データ生成手段は、最新バージョンのデータに対応するメタデータを参照することで、一世代前のデータである差分データを参照することができる。そこで、データ生成手段は、最新バージョンのデータに一世代前の差分データで示されるデータの追加分を削除したり、変更分を元に戻したり、削除分を追加したりすることで、一世代前のデータを生成する。また、二世代前のデータを生成するには、データ生成手段は、一世代前のデータに対応するメタデータを参照することで得られる二世代前の差分データと、生成された一世代前のデータとにより、二世代前のデータを生成する。このように、データ生成手段は、メタデータで特定される差分データに基づいて、順次過去のバージョンのデータを生成することができる。
【００２１】
さらに、請求項３に記載のデータ記憶装置は、請求項１又は請求項２に記載のデータ記憶装置において、前記データ移動手段が、前記記憶手段に記憶されているデータ容量に対する、前記他のデータ記憶装置の記憶手段に記憶されているデータ容量の割合が所定値以下となった段階で、前記アクセス頻度の割合に基づいて、前記差分データを他のデータ記憶装置に送信することを特徴とする。
【００２２】
かかる構成において、データ記憶装置は、データ移動手段によって、記憶手段に記憶されているデータ容量に対して、予め定めた他のデータ記憶装置の記憶手段に記憶されているデータ容量の割合が所定値以下になった場合に、当該データ記憶装置に記憶されているデータを、他のデータ記憶装置に送信する。
これによって、データ容量の差が所定量以上となった場合に、データが分散されることになる。
【００２３】
また、請求項４に記載のバージョン管理プログラムは、ディレクトリ情報を複数のデータ記憶装置間で共有し、複数のデータをそれぞれ複数の世代に亘って記憶するストレージシステムにおける前記データ記憶装置を制御するコンピュータを、差分データ生成手段、データ変更手段、メタデータ生成手段、アクセス頻度計測手段、データ移動手段、メタデータ変更手段、データ生成手段として機能させる構成とした。
【００２４】
かかる構成において、バージョン管理プログラムは、差分データ生成手段によって、最新データと、記憶手段に記憶されている当該最新データより一世代前のデータとの差分である差分データを生成する。そして、バージョン管理プログラムは、データ変更手段によって、最新データの一世代前のデータを、差分データ生成手段で生成された差分データに変更する。そして、バージョン管理プログラムは、メタデータ生成手段によって、入力された最新データと、当該最新データのバージョンと、当該最新データより一世代前のデータが記憶手段に記憶されているアドレスとを対応付けたメタデータを生成する。
【００２５】
そして、バージョン管理プログラムは、アクセス頻度計測手段によって、最新バージョンのデータに対する、当該データに対応する過去のバージョンのデータである差分データへのアクセス頻度の割合を計測する。
そして、バージョン管理プログラムは、データ移動手段によって、アクセス頻度の割合が、予め定めた割合以下となった差分データを、ストレージシステム内の予め定めた他のデータ記憶装置に送信する。
また、バージョン管理プログラムは、メタデータ変更手段によって、当該差分データに対応するメタデータに記述されている前記差分データのアドレスを、他のデータ記憶装置の記憶手段に記憶された差分データのアドレスに変更する。
【００２６】
さらに、バージョン管理プログラムは、データ生成手段によって、メタデータで特定される一世代以前の差分データにより、記憶手段に記憶されている最新バージョンのデータから、指定されたバージョンのデータを生成する。
これによって、差分データで記憶されている過去のバージョンのデータが生成されることになる。
【発明の効果】
【００２８】
請求項１又は請求項４に記載の発明によれば、過去のバージョンの差分データは、一世代後のデータに対応するメタデータに記述されたアドレスによって参照されるため、差分データを、ツリー（木）構造を持つディレクトリ情報で管理する必要がない。これによって、最新バージョンのデータのみがディレクトリ情報としてツリー構造で管理され、ツリー全体で管理するノード数が少なくなるとともに、管理するディレクトリ情報をすべて半導体メモリに記憶して処理することができるため、バージョンが増加した場合であっても、最新バージョンのデータへのアクセス時間を低下させることがない。
また、請求項１又は請求項４に記載の発明によれば、アクセス頻度が低下したデータ（差分データ）を他のデータ記憶装置に移動させるため、データを複数のデータ記憶装置に分散させることができる。このように、データを分散させることで、複数のデータ記憶装置において、蓄積容量を分散させることができる。また、アクセス頻度の低いデータの移動先のデータ記憶装置における記憶手段を、例えば、テープデバイス等の低価格なデバイスとすることで、システム全体を低価格に抑えることができる。
さらに、最新データはディレクトリ管理により高速に検索でき、アクセス頻度の高いバージョンの新しい差分データは、同じデータ記憶装置内で最新データから順次古いバージョンの差分データにポインタで特定できるようにしていることから、アクセス頻度の高いバージョンの新しい差分データを高速で取り出すことができる。
【００２９】
請求項２に記載の発明によれば、最新バージョンのデータから遡って、過去の所望のバージョンのデータを生成することができる。これによって、利用者は、所望のバージョンのデータを要求するだけで、データを取得することができ、個々のデータを読み出して、所望のバージョンのデータを生成する手間を省くことができる。
【００３１】
請求項３に記載の発明によれば、データ記憶装置間でデータ容量の差が大きくなった場合に、データが分散されることになり、容量分散に加え、アクセス負荷を分散させることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
（データ記憶装置の概要）
最初に、図１を参照して、本発明に係るデータ記憶装置におけるバージョン管理手法について、その概要を説明する。図１は、本発明の第１の実施の形態に係るデータ記憶装置で実現されるバージョン管理手法を模式的に示した図である。
図１に示すように、本発明に係るデータ記憶装置１で実現されるバージョン管理手法は、データをディレクトリ構造（例えば、Ｂｔｒｅｅ）を有するディレクトリ情報で管理し、最新のバージョンのデータ（ここではＡ，Ｂ）を記憶手段３０に記憶する。
【００３３】
このとき、旧バージョンのデータは、新バージョンのデータとの差分（差分データ〔ここでは、Ａ１〜Ａ５、Ｂ１〕）のみが記憶手段３０に記憶される。ここで、本手法と従来の手法との違いは、差分データのアドレス（記憶手段３０上のアドレス）が、一世代後のデータ（又は差分データ）からのポインタとして指し示されることである。すなわち、差分データＡ１のアドレスは、一世代後のデータＡに対応付けられた管理情報（メタデータ）にポインタとして記憶される。また、差分データＡ２のアドレスは、一世代後の差分データＡ１に対応付けられた管理情報（メタデータ）にポインタとして記憶される。
【００３４】
このように、古いバージョンの差分データのアドレスを、一世代後のデータ（又は差分データ）からのポインタとして管理することで、差分データのアドレスは、ディレクトリ情報として管理する必要がなくなり、バージョンが増加した場合であっても、最新データのアドレスを探索する時間を短縮することができる。
以下、本手法を実現するためのデータ記憶装置の構成及び動作について順次説明する。
【００３５】
（データ記憶装置の構成）
まず、図２を参照して、本発明の第１の実施の形態に係るデータ記憶装置の構成について説明する。図２は、本発明の第１の実施の形態に係るデータ記憶装置の構成を示すブロック図である。データ記憶装置１は、複数のデータをそれぞれ複数の世代に亘って記憶するものであって、図１で説明したバージョン管理手法を実現するものである。
ここでは、データ記憶装置１は、通信送受信手段１０と、システム管理手段２０と、記憶手段３０とを備えている。
【００３６】
通信送受信手段１０は、ネットワークＮを介して、クライアントコンピュータ（図示せず）等と、データの送受信を行うものである。例えば、通信送受信手段１０は、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）の通信プロトコルによってデータの送受信を行う通信ボードである。
【００３７】
システム管理手段２０は、データ記憶装置１全体の制御を行うものである。例えば、システム管理手段２０は、ＣＰＵ（Central Processing Unit）やメモリ等を備えたコンピュータである。ここでは、システム管理手段２０は、データ格納・削除手段２１と、データ配信手段２２と、データ管理手段２３と、メタデータ書込・読出手段２４と、ディレクトリ情報書込・読出手段２５と、制御情報受信手段２６と、制御情報送信手段２７とを備えている。
【００３８】
データ格納・削除手段２１は、通信送受信手段１０を介して最新データを受信（入力）し記憶手段３０に記憶したり、記憶手段３０に記憶されているデータを削除したりするものである。ここでは、データ格納・削除手段２１は、データ受信手段２１ａと、差分データ生成手段２１ｂと、データ書込手段２１ｃと、データ削除手段２１ｄとを備えている。
【００３９】
データ受信手段２１ａは、通信送受信手段１０を介して最新データを受信するものである。このデータ受信手段２１ａは、データ管理手段２３から通知される最新データの送信元（例えば、クライアントコンピュータ）から、通信送受信手段１０を介して最新データを受信する。このデータ受信手段２１ａで受信された最新データは、差分データ生成手段２１ｂとデータ書込手段２１ｃとに出力される。
【００４０】
差分データ生成手段２１ｂは、データ受信手段２１ａで受信された最新データと、記憶手段３０に記憶されている当該最新データに対する一世代前のデータとの差分をとった差分データを生成するものである。この一世代前のデータは、データ管理手段２３から通知されるアドレスに基づいて、データ読出手段２２ａによって記憶手段３０から読み出される。
なお、この差分データ生成手段２１ｂは、最新データと一世代前のデータとの間で、新規に追加されたデータ、削除されたデータ、及び、変更されたデータのみを抽出することで差分データを生成する。
この差分データ生成手段２１ｂで生成された差分データは、データ書込手段２１ｃに出力される。
なお、後記するディレクトリ管理手段２３ａは、差分データのポインタ（アドレス）をディレクトリ情報から削除する。
【００４１】
データ書込手段２１ｃは、データ受信手段２１ａで受信された最新データと、差分データ生成手段２１ｂで生成された差分データとを、データ管理手段２３から指示される記憶手段３０上の書き込みアドレスに書き込むものである。
【００４２】
データ削除手段２１ｄは、データ管理手段２３からの指示に基づいて、記憶手段３０に記憶されているデータを削除するものである。
このように、データ格納・削除手段２１は、最新バージョンのデータを、記憶手段３０に記憶し、旧バージョンのデータは、順次、最新バージョンのデータからの差分をとった差分データとして記憶手段３０に記憶する。
【００４３】
データ配信手段２２は、通信送受信手段１０を介して、記憶手段３０に記憶されているデータを、そのデータを要求した要求元（例えば、クライアントコンピュータ）に配信するものである。なお、データ配信手段２２は、要求されたデータが最新バージョンでない場合は、最新バージョンのデータを用いて順次古いバージョンのデータを反映させることによって、指示されたバージョンのデータを生成し、配信する。ここでは、データ配信手段２２は、データ読出手段２２ａと、データ生成手段２２ｂと、データ送信手段２２ｃとを備えている。
【００４４】
データ読出手段２２ａは、データ生成手段２２ｂと、差分データ生成手段２１ｂからの要求に基づいて、記憶手段３０から最新データ又は差分データを読み出すものである。
【００４５】
データ生成手段２２ｂは、データの読み出し要求があった場合、データ管理手段２３から指示されるファイル名とバージョンに基づいて、データ読出手段２２ａを介して、最新データ及び差分データを読み出し、指示されたバージョンのデータを生成するものである。
例えば、最新データが、一世代前のデータに、あるデータを追加することで生成されたものである場合、差分データは、その追加されたデータのみとなる。この場合、データ生成手段２２ｂは、最新データから差分データで示されるデータを削除することで、一世代前のデータを生成する。
【００４６】
なお、指示されたバージョンが最新バージョンである場合、データ生成手段２２ｂは、読み出した最新データをそのままデータ送信手段２２ｃに出力する。また、指示されたバージョンが最新バージョンよりも一世代前のバージョンである場合、データ生成手段２２ｂは、読み出した最新データに対する一世代前の差分データを読み出し、一世代前のデータを生成する。また、指示されたバージョンが最新バージョンよりも二世代前のバージョンである場合、データ生成手段２２ｂは、一世代前のデータと、さらに一世代前の差分データとから二世代前のデータを生成する。指示されたバージョンがさらに古い場合は、順次差分データを読み出し、すでに生成されているデータから、所望のバージョンのデータを生成する。このデータ生成手段２２ｂで生成された旧バージョンのデータは、データ送信手段２２ｃに出力される。
【００４７】
データ送信手段２２ｃは、データ生成手段２２ｂから出力される最新バージョンのデータ、又は、旧バージョンのデータを、データ管理手段２３から通知される「データ配信要求」の要求元（例えば、クライアントコンピュータ）に、通信送受信手段１０を介して送信するものである。
このように、データ配信手段２２は、最新バージョンのデータについては、記憶手段３０から読み出した最新データをそのまま要求元に送信し、旧バージョンのデータについては、最新バージョンのデータから順次旧バージョンの差分データからデータを生成し、要求元に送信する。
【００４８】
データ管理手段２３は、制御情報受信手段２６で受信した制御情報に基づいて、データを管理するものである。ここでは、データ管理手段２３は、ディレクトリ管理手段２３ａと、メタデータ生成手段２３ｂと、データ変更手段２３ｃと、データ操作制御手段２３ｄとを備えている。
【００４９】
ディレクトリ管理手段２３ａは、記憶手段３０に記憶される最新データ及びメタデータを、木構造（例えば、Ｂｔｒｅｅ）の階層構造で管理するものである。このディレクトリ管理手段２３ａは、最上位層のルートノードと、中間層のインデックスノードと、最下位層の葉ノードとによって、データを階層化し、ルートノードとインデックスノードは、下位層のノードへのポインタ（アドレス）を含み、データ等の実データを葉ノードとして管理する。この木構造は、記憶手段３０の予め定めた領域にディレクトリ情報として書き込まれる。
【００５０】
すなわち、ディレクトリ管理手段２３ａは、データがデータ記憶装置１に記憶される場合、記憶手段３０のディレクトリ情報に葉ノードとして追加し、データがデータ記憶装置１から配信される場合、記憶手段３０のディレクトリ情報を用いて、データのポインタ（アドレス）を探索する。
なお、ディレクトリ管理手段２３ａは、直接差分データのポインタ（アドレス）を管理していない。この差分データのポインタは、最新データに対応するメタデータに記述されているポインタによって、リンクして管理されている。
【００５１】
メタデータ生成手段２３ｂは、制御情報として最新データの格納要求（「データ格納要求」）を受信した場合に、その最新データのバージョンと、当該最新データのアドレスと、一世代前のデータを特定するメタデータのアドレスとを少なくとも記述したメタデータを生成するものである。このメタデータ生成手段２３ｂで生成されたメタデータは、メタデータ書込・読出手段２４を介して、記憶手段３０に追加記憶される。
【００５２】
ここで、図３を参照（適宜図２参照）して、メタデータの構造について説明する。図３は、メタデータの構造を説明するための図であって、（ａ）はメタデータの構造の一例を示すデータ構造図、（ｂ）はメタデータとデータとの関係を示す図である。
図３（ａ）に示すように、ここでは、メタデータＭには、ファイル識別子ｆｄと、バージョン番号ｖｅｒと、データサイズｓｉｚと、データポインタ（アドレス）ｄｐと、メタデータポインタ（アドレス）ｍｐを記述している。
【００５３】
ファイル識別子ｆｄは、データを識別するための情報であって、ファイル名、数字等データを特定する情報である。
バージョン番号ｖｅｒは、データのバージョンを示す情報であって、例えば、「１．００」、「ｖｅｒ．２」等の英数字の組み合わせによって、データの世代順を特定する情報である。
データサイズｓｉｚは、データの長さを示す情報であって、例えば、バイト長である。
データポインタ（アドレス）ｄｐは、当該データが記憶手段３０に記憶されているアドレスを示す。
メタデータポインタ（アドレス）ｍｐは、当該データの一世代前のデータを特定するメタデータが記憶手段３０に記憶されているアドレスを示す。なお、当該メタデータが最も古いバージョンの場合は、メタデータポインタｍｐの値を“ＮＵＬＬ”とする。
【００５４】
このように、メタデータＭを構成することで、メタデータＭのメタデータポインタｍｐによって、世代を遡ってデータにアクセスすることが可能となる。例えば、図３（ｂ）の例では、メタデータＭ3に記述されているデータポインタｄｐ３によって、最新バージョン（ｖｅｒ．３）のデータＤ3にアクセスが可能となる。そして、メタデータＭ3に記述されているメタデータポインタｍｐ２によって、一世代前（ｖｅｒ．２）のデータ（差分データ）Ｄ2を特定するメタデータＭ2を参照し、そのメタデータＭ2に記述されているデータポインタｄｐ２によって、一世代前（ｖｅｒ．２）のデータ（差分データ）Ｄ2にアクセスが可能となる。同様に、メタデータＭ2に記述されているメタデータポインタｍｐ１によって、一世代前（ｖｅｒ．１）のデータ（差分データ）Ｄ1を特定するメタデータＭ1を参照し、そのメタデータＭ1に記述されているデータポインタｄｐ１によって、一世代前（ｖｅｒ．１）のデータ（差分データ）Ｄ1にアクセスが可能となる。
図２に戻って、データ記憶装置１の構成について説明を続ける。
【００５５】
データ変更手段２３ｃは、記憶手段３０に記憶されている一世代前のデータを、差分データに変更するものである。すなわち、データ変更手段２３ｃは、差分データ生成手段２１ｂが差分データを生成した段階で、一世代前のデータをデータ削除手段２１ｄにより削除し、一世代前のデータを特定するメタデータのデータポインタｄｐ（図３参照）に差分データの記憶先のアドレスを書き込む。これによって、新規に記憶されたデータの一世代前のデータが差分データに変更されたことになる。
【００５６】
データ操作制御手段２３ｄは、制御情報受信手段２６で受信した制御情報に基づいて、データの操作を行うものである。
例えば、データ操作制御手段２３ｄは、制御情報である「データ格納要求」を受信したとき、データ格納・削除手段２１に対して、最新データの送信元と、ディレクトリ管理手段２３ａで管理されているアドレス（記憶先）を通知することで、最新データの格納（記憶）を行う。
また、データ操作制御手段２３ｄは、制御情報である「データ配信要求」を受信したとき、データ配信手段２２に対して、データの送信先（要求元）、バージョン、記憶手段３０に記憶されているアドレス（記憶先）を通知することで、必要に応じてデータを生成し、クライアントコンピュータへ配信する。
【００５７】
メタデータ書込・読出手段２４は、メタデータを記憶手段３０に書き込んだり、記憶手段３０からメタデータを読み出したりするものである。
このメタデータ書込・読出手段２４は、データ管理手段２３のメタデータ生成手段２３ｂで生成されたメタデータを記憶手段３０に書き込み、データ変更手段２３ｃやデータ操作制御手段２３ｄがメタデータを参照するために記憶手段３０からメタデータを読み出す。
【００５８】
ディレクトリ情報書込・読出手段２５は、記憶手段３０に記憶されているディレクトリ情報を書き込んだり、読み出したりするものである。
このディレクトリ情報書込・読出手段２５は、データ管理手段２３のディレクトリ管理手段２３ａからの指示に基づいて、ディレクトリ情報を書き込んだり、読み出したりする。
【００５９】
制御情報受信手段２６は、通信送受信手段１０を介して、クライアントコンピュータ等から、データ以外の情報である制御情報を受信するものである。この制御情報受信手段２６で受信した制御情報は、データ管理手段２３に出力される。
【００６０】
制御情報送信手段２７は、データ管理手段２３から出力される制御情報を、通信送受信手段１０を介して、クライアントコンピュータ等に送信するものである。
ここで、制御情報は、データを格納する（書き込む）旨を示す「データ格納要求」、データを配信する（読み出す）旨を示す「データ配信要求」等、あるいはこれらの指示に対する応答等である。
【００６１】
記憶手段３０は、データ（最新データ）や差分データ、当該データや差分データに対応するメタデータを世代数分記憶するものであって、ハードディスク等の一般的な記憶装置である。
なお、記憶手段３０は、最新バージョンの全データを記憶し、それより古いバージョンのデータは、一世代後のバージョンのデータとの差分データのみを記憶する。
また、記憶手段３０は、ディレクトリ管理手段２３ａが管理するディレクトリ情報を記憶する。
ここでは、データ（最新データ）及び差分データと、メタデータと、ディレクトリ情報とを同一の記憶手段３０に記憶しているが、個々に個別の記憶手段に記憶することとしてもよい。
【００６２】
以上説明したように、データ記憶装置１を構成することで、ディレクトリ管理手段２３ａは、最新のメタデータのみを管理することになり、高速に最新データにアクセスすることができる。そして、データ記憶装置１は、メタデータによって参照可能な差分データを順次参照することで、古いバージョンのデータを生成することができる。
なお、ここでは、データ記憶装置１が古いバージョンのデータを生成する機能を付加した構成としたが、この古いバージョンのデータの生成は、最新データと差分データとを取得したクライアントコンピュータ等で行うこととしてもよい。この場合、データ記憶装置１は、構成からデータ生成手段２２ｂを省略する。
【００６３】
（データ記憶装置の動作）
次に、図４及び図５を参照して、本発明に係るデータ記憶装置１の動作について説明する。図４は、本発明の第１の実施の形態に係るデータ記憶装置における最新データを格納する動作（データ格納動作）を示すフローチャートである。図５は、本発明の第１の実施の形態に係るデータ記憶装置におけるデータを配信する動作（データ配信動作）を示すフローチャートである。
【００６４】
〔データ格納動作〕
最初に、図４を参照（適宜図２参照）して、データ記憶装置１における最新データを格納する動作について説明する。ここでは、クライアントコンピュータ（図示せず）から、ファイル名やバージョンを含んだ「データ格納要求」がデータ記憶装置１に送出され、クライアントコンピュータから、最新データが送信された後の動作について説明する。
【００６５】
まず、データ記憶装置１は、データ受信手段２１ａによって、通信送受信手段１０を介して、最新データを受信する（ステップＳ１）。
そして、データ記憶装置１は、データ読出手段２２ａによって、ディレクトリ管理手段２３ａで管理されている、最新データに対する一世代前のデータを記憶手段３０から読み出す（ステップＳ２）。
さらに、データ記憶装置１は、差分データ生成手段２１ｂによって、ステップＳ１で受信された最新データと、ステップＳ２で読み出された一世代前のデータとの差分をとった差分データを生成する（ステップＳ３）。
【００６６】
そして、データ記憶装置１は、データ変更手段２３ｃからの指示によって、データ書込手段２１ｃが、ステップＳ３で生成された差分データを記憶手段３０に書き込む（ステップＳ４）。
そして、データ記憶装置１は、データ変更手段２３ｃによって、一世代前のデータに対応する記憶手段３０に記憶されているメタデータに、ステップＳ３で生成された差分データのアドレスを記述することで、メタデータを変更する（ステップＳ５）。
【００６７】
さらに、データ記憶装置１は、メタデータ生成手段２３ｂによって、最新データに対応するメタデータを生成する（ステップＳ６）。すなわち、メタデータ生成手段２３ｂが、「データ格納要求」に含まれるファイル名、バージョン及びデータサイズと、最新データが記憶手段３０に記憶されているアドレスと、ステップＳ５で変更されたメタデータが記憶手段３０に記憶されているアドレスとから、最新データに対応するメタデータを生成する。
【００６８】
そして、データ記憶装置１は、メタデータ書込・読出手段２４によって、ステップＳ６で生成されたメタデータを記憶手段３０に書き込む（ステップＳ７）。
さらに、データ記憶装置１は、データ変更手段２３ｃからの指示によって、データ書込手段２１ｃが、ステップＳ１で受信された最新データを記憶手段３０に書き込む（ステップＳ８）。なお、この最新データの記憶手段３０への書き込みは、差分データを生成する前、例えば、ステップＳ１の後で行うこととしてもよい。
【００６９】
さらに、データ記憶装置１は、データ変更手段２３ｃからの指示によって、データ削除手段２１ｄが、一世代前のデータを記憶手段３０から削除する（ステップＳ９）。なお、このとき、ディレクトリ管理手段２３ａによって、記憶手段３０に記憶されているディレクトリ情報から、一世代前のデータの情報が削除される。
そして、データ記憶装置１は、ディレクトリ管理手段２３ａによって、ステップＳ７で記憶手段３０に書き込まれたメタデータのアドレスと、ステップＳ８で記憶手段３０に書き込まれたデータのアドレスとにより、ディレクトリ情報を更新する（ステップＳ１０）。
【００７０】
以上の動作によって、最新データのみが、全データを有し、古いバージョンのデータは差分データのみに変換される。そして、最新データに対応するメタデータが、一世代前のメタデータのアドレスを示すことから、古いバージョンのデータ（差分データ）及びそのメタデータは、ディレクトリ管理手段２３ａが管理するディレクトリ情報には記憶されず、最新データ及びそのメタデータの情報のみが記憶されることになる。これによって、最新データを高速に探索し読み出すことができる。
【００７１】
〔データ配信動作〕
次に、図５を参照（適宜図２参照）して、データ記憶装置１におけるデータを配信する動作について説明する。ここでは、クライアントコンピュータ（図示せず）から、ファイル名やバージョンを含んだ「データ配信要求」がデータ記憶装置１に送出された後の動作について説明する。
【００７２】
まず、データ記憶装置１は、ディレクトリ管理手段２３ａによって、記憶手段３０に記憶されているディレクトリ情報を参照して、指示されたファイル名を有する最新のメタデータを探索する（ステップＳ１１）。このメタデータは、データ配信手段２２に通知される。
そして、データ記憶装置１は、データ配信手段２２のデータ読出手段２２ａによって、記憶手段３０からメタデータに記述されているデータポインタに基づいて、最新データを記憶手段３０から読み出す（ステップＳ１２）。
【００７３】
そして、データ記憶装置１は、データ生成手段２２ｂによって、最新データ又は後記するステップＳ１６で生成されたデータのバージョンが、要求のあったバージョンであるかどうかを判定する（ステップＳ１３）。
【００７４】
ここで、最新データ又はステップＳ１６で生成されたデータのバージョンが、要求のあったバージョン（要求バージョン）でない場合、すなわち、要求のあったバージョンが、最新データ又はステップＳ１６で生成されたデータのバージョンよりも古い場合（ステップＳ１３でＮｏ）、データ記憶装置１は、データ生成手段２２ｂによって、最新データ又は直前に生成されたデータに対応するメタデータに記述されているメタデータポインタを参照して、メタデータ書込・読出手段２４を介して、一世代前のメタデータを記憶手段３０から読み出す（ステップＳ１４）。
そして、データ記憶装置１は、データ生成手段２２ｂによって、一世代前のメタデータに記述されているデータポインタを参照して、データ読出手段２２ａを介して、一世代前の差分データを記憶手段３０から読み出す（ステップＳ１５）。
【００７５】
続けて、データ記憶装置１は、データ生成手段２２ｂによって、最新データ又は直前に生成されたデータとステップＳ１５で読み出された差分データとから、一世代前のデータを生成する（ステップＳ１６）。
そして、データ記憶装置１は、ステップＳ１３に戻って、ステップＳ１６で生成されたデータのバージョンが、要求のあったバージョンであるかどうかを判定する。
【００７６】
一方、最新データ又は生成されたデータのバージョンが、要求のあったバージョンである場合（ステップＳ１３でＹｅｓ）、データ記憶装置１は、データ送信手段２２ｃによって、通信送受信手段１０を介して、要求のあったバージョンのデータを「データ配信要求」の要求元に送信する（ステップＳ１７）。
【００７７】
以上の動作によって、ディレクトリ情報とは別管理されているメタデータに記述されているメタデータポインタを遡ることで、要求のあったバージョンのデータを生成することができる。このとき、最新のバージョンのメタデータのみが、ディレクトリ情報で管理されるため、高速に最新データにアクセスすることができる。
【００７８】
［第２の実施の形態］
（データ記憶装置の構成）
次に、図６を参照して、本発明の第２の実施の形態に係るデータ記憶装置の構成について説明する。図６は、本発明の第２の実施の形態に係るデータ記憶装置の構成を示すブロック図である。データ記憶装置１Ｂは、複数のデータをそれぞれ複数の世代に亘って記憶するものであって、データ記憶装置１（図２参照）と同様、図１で説明したファイルバージョン管理手法を実現するものである。
【００７９】
ここでは、データ記憶装置１Ｂは、データ記憶装置１のデータ格納・削除手段２１にメタデータ付加手段２１ｅを付加し、データ記憶装置１のデータ配信手段２２にメタデータ除去手段２２ｄを付加している。
また、データ記憶装置１Ｂは、データ記憶装置１のメタデータ生成手段２３ｂ及びデータ生成手段２２ｂを、機能を変更したメタデータ生成手段２３Ｂｂ及びデータ生成手段２２Ｂｂとし、データ記憶装置１のメタデータ書込・読出手段２４を削除している。
【００８０】
このデータ記憶装置１Ｂは、データ記憶装置１で説明したメタデータを、データに付加することで、メタデータとデータとを１つのファイルとして扱っていることが、データ記憶装置１と大きく異なっている。
以下、データ記憶装置１と異なる構成について説明する。なお、データ記憶装置１と同一の構成については、同一の符号を付し、説明を省略する。
【００８１】
メタデータ付加手段２１ｅは、データ受信手段２１ａで受信された最新データと、差分データ生成手段２１ｂで生成された差分データとのそれぞれに、メタデータ生成手段２３Ｂｂで生成されたメタデータを付加するものである。
これによって、最新データにメタデータが付加されたメタデータ付データと、差分データにメタデータが付加されたメタデータ付差分データが生成される。このメタデータ付データ及びメタデータ付差分データは記憶手段３０に記憶される。
なお、このとき、ディレクトリ管理手段２３ａは、メタデータ付差分データのポインタ（アドレス）をディレクトリ情報から削除する。
【００８２】
データ生成手段２２Ｂｂは、データの読み出し要求があった場合、データ管理手段２３Ｂから指示されるファイル名とバージョンに基づいて、データ読出手段２２ａを介して、メタデータ付データ及びメタデータ付差分データを読み出し、要求されたバージョンのデータを生成するものである。
すなわち、データ生成手段２２Ｂｂは、メタデータ付データに含まれているデータと、メタデータ付差分データに含まれている差分データとから、指示されたバージョンのデータを生成する。このデータ生成手段２２Ｂｂで生成されたデータは、データ送信手段２２ｃに出力される。
なお、要求されたバージョンが最新バージョンの場合は、最新のメタデータ付データをそのままメタデータ除去手段２２ｄに出力する。
【００８３】
メタデータ除去手段２２ｄは、データ読出手段２２ａで読み出されたメタデータ付データから、メタデータを削除し、データのみを抽出するものである。
このメタデータ除去手段２２ｄで抽出されたデータは、データ送信手段２２ｃに出力される。
【００８４】
メタデータ生成手段２３Ｂｂは、制御情報としてデータの格納要求（「データ格納要求」）を受信した場合に、そのデータのバージョンと、当該データに対応する一世代前の差分データを含んだメタデータ付差分データのアドレスとを少なくとも記述したメタデータを生成するものである。このメタデータ生成手段２３Ｂｂで生成されたメタデータは、データ格納・削除手段２１Ｂのメタデータ付加手段２１ｅに通知される。
【００８５】
ここで、図７を参照（適宜図６参照）して、メタデータ付データの構造について説明する。図７は、メタデータ付データを説明するための図であって、（ａ）はメタデータ付データ（メタデータ付差分データ）の構造の一例を示すデータ構造図、（ｂ）はメタデータ付データとメタデータ付差分データとの関係を示す図である。
図７（ａ）に示すように、ここでは、メタデータ付データＭＤには、ファイル識別子ｆｄと、バージョン番号ｖｅｒと、データサイズｓｉｚと、ポインタ（アドレス）ｐとを記述している。なお、メタデータ付差分データにおけるメタデータは、メタデータ付データＭＤと同一の構造である。
【００８６】
ファイル識別子ｆｄ、バージョン番号ｖｅｒ及びデータサイズｓｉｚは、図３で説明したメタデータＭの内容と同一であるので説明を省略する。
ポインタ（アドレス）ｐは、当該データ又は差分データの一世代前の差分データを含んだメタデータ付差分データが記憶手段３０に記憶されているアドレスを示す。なお、当該メタデータ付データが最も古いバージョンの場合は、ポインタｐの値を“ＮＵＬＬ”とする。
【００８７】
このように、メタデータ付データ（メタデータ付差分データ）ＭＤを構成することで、図７（ｂ）に示すように、メタデータ付データのポインタｐによって、世代を遡ってメタデータ付差分データにアクセスすることが可能となる。例えば、図７（ｂ）の例では、最新バージョン（ｖｅｒ．３）のデータを含むメタデータ付データＭＤ3のメタデータに記述されているポインタｐ２によって、一世代前（ｖｅｒ．２）の差分データを含むメタデータ付差分データＭＤ2にアクセスが可能となる。同様に、メタデータ付差分データＭＤ2のメタデータに記述されているポインタｐ１によって、一世代前（ｖｅｒ．１）の差分データを含むメタデータ付差分データＭＤ1にアクセスが可能となる。
【００８８】
以上説明したように、データ記憶装置１Ｂを構成することで、ディレクトリ管理手段２３ａは、最新データ（メタデータ付データ）のみを管理することになり、高速に最新データにアクセスすることができる。そして、データ記憶装置１Ｂは、メタデータ付データのメタデータによって参照可能なメタデータ付差分データを順次参照することで、古いバージョンのデータを生成することができる。
【００８９】
（データ記憶装置の動作）
次に、図８及び図９を参照して、本発明に係るデータ記憶装置の動作について説明する。図８は、本発明の第２の実施の形態に係るデータ記憶装置におけるデータを格納する動作（データ格納動作）を示すフローチャートである。図９は、本発明の第２の実施の形態に係るデータ記憶装置におけるデータを配信する動作（データ配信動作）を示すフローチャートである。
【００９０】
〔データ格納動作〕
最初に、図８を参照（適宜図６参照）して、データ記憶装置１Ｂにおけるデータを格納する動作について説明する。ここでは、クライアントコンピュータ（図示せず）から、ファイル名やバージョンを含んだ「データ格納要求」がデータ記憶装置１Ｂに要求され、クライアントコンピュータから、データが送信された後の動作について説明する。
【００９１】
まず、データ記憶装置１Ｂは、データ受信手段２１ａによって、通信送受信手段１０を介して、最新データを受信する（ステップＳ２１）。
そして、データ記憶装置１Ｂは、データ読出手段２２ａによって、ディレクトリ管理手段２３ａで管理されている、最新データに対する一世代前のデータを含んだメタデータ付データを記憶手段３０から読み出す（ステップＳ２２）。
【００９２】
さらに、データ記憶装置１Ｂは、差分データ生成手段２１ｂによって、ステップＳ２１で受信された最新データと、ステップＳ２２で読み出された一世代前のメタデータ付データに含まれているデータとの差分をとった差分データを生成し、その差分データを含んだメタデータ付差分データを生成する（ステップＳ２３）。
そして、データ記憶装置１Ｂは、データ変更手段２３ｃからの指示によって、データ書込手段２１ｃが、ステップＳ２３で生成されたメタデータ付差分データを記憶手段３０に書き込む（ステップＳ２４）。
【００９３】
そして、データ記憶装置１Ｂは、メタデータ生成手段２３Ｂｂによって、最新データ用のメタデータを生成する（ステップＳ２５）。すなわち、メタデータ生成手段２３Ｂｂが、「データ格納要求」に含まれるファイル名、バージョン及びデータサイズと、最新のメタデータ付データが記憶手段３０に記憶されているアドレスとから、最新データに対応するメタデータを生成する。
そして、データ記憶装置１Ｂは、メタデータ付加手段２１ｅによって、ステップＳ２１で受信された最新データに、ステップＳ２５で生成されたメタデータを付加し、メタデータ付データを生成する（ステップＳ２６）。
【００９４】
さらに、データ記憶装置１Ｂは、データ書込手段２１ｃによって、ステップＳ２６で生成されたメタデータ付データを記憶手段３０に書き込む（ステップＳ２７）。
そして、データ記憶装置１Ｂは、データ変更手段２３ｃからの指示によって、データ削除手段２１ｄが、一世代前のメタデータ付データを記憶手段３０から削除する（ステップＳ２８）。なお、このとき、ディレクトリ管理手段２３ａによって、ディレクトリ情報から、一世代前のメタデータ付データの情報が削除される。
【００９５】
そして、データ記憶装置１Ｂは、ディレクトリ管理手段２３ａによって、ステップＳ２７で記憶手段３０に書き込まれたメタデータ付データのアドレスにより、ディレクトリ情報を更新する（ステップＳ２９）。
以上の動作によって、データ記憶装置１Ｂは、メタデータに記述されているポインタにより、最新データから、各世代に遡って古いバージョンの差分データが連結される。
【００９６】
〔データ配信動作〕
次に、図９を参照（適宜図６参照）して、データ記憶装置１Ｂにおけるデータを配信する動作について説明する。ここでは、クライアントコンピュータ（図示せず）から、ファイル名やバージョンを含んだ「データ配信要求」がデータ記憶装置１Ｂに送出された後の動作について説明する。
【００９７】
まず、データ記憶装置１Ｂは、ディレクトリ管理手段２３ａによって、記憶手段３０に記憶されているディレクトリ情報を参照して、指示されたファイル名で最新のバージョンを有するメタデータ付データを探索する（ステップＳ３１）。このメタデータ付データのアドレスは、データ配信手段２２に通知される。
そして、データ記憶装置１Ｂは、データ配信手段２２Ｂのデータ読出手段２２ａによって、記憶手段３０から、最新のメタデータ付データを読み出す（ステップＳ３２）。
そして、データ記憶装置１Ｂは、データ生成手段２２Ｂｂによって、最新データ又は後記するステップＳ３５で生成されたデータのバージョンが、要求のあったバージョンであるかどうかを判定する（ステップＳ３３）。
【００９８】
ここで、最新データ又はステップＳ３５で生成されたデータのバージョンが、要求のあったバージョン（要求バージョン）でない場合、すなわち、要求のあったバージョンが、最新データ又はステップＳ３５で生成されたデータのバージョンよりも古い場合（ステップＳ３３でＮｏ）、データ記憶装置１Ｂは、データ生成手段２２Ｂｂによって、最新データ又は直前に読み出されたデータに対応するメタデータに記述されているポインタを参照して、データ読出手段２２ａを介して、一世代前のメタデータ付差分データを記憶手段３０から読み出す（ステップＳ３４）。
【００９９】
続けて、データ記憶装置１Ｂは、データ生成手段２２Ｂｂによって、最新データ又は直前に生成されたデータとステップＳ３５で読み出されたメタデータ付差分データ内の差分データとから、一世代前のデータを生成する（ステップＳ３５）。
そして、データ記憶装置１Ｂは、ステップＳ３３に戻って、ステップＳ３５で生成されたデータのバージョンが、要求のあったバージョンであるかどうかを判定する。
【０１００】
一方、最新データ又は生成されたデータのバージョンが、要求のあったバージョンである場合（ステップＳ３７でＹｅｓ）、データ記憶装置１Ｂは、メタデータ除去手段２２ｄによって、メタデータ付データからメタデータを削除し、データのみを抽出し（ステップＳ３６）、データ送信手段２２ｃによって、通信送受信手段１０を介して、要求のあったバージョンのデータを「データ配信要求」の要求元に送信する（ステップＳ３７）。
以上の動作によって、メタデータに記述されているポインタを遡ることで、要求のあったバージョンのデータを生成することができる。このとき、最新のバージョンのメタデータ付データのみが、ディレクトリ情報で管理されるため、高速に最新データ（メタデータ付データ）にアクセスすることができる。
【０１０１】
以上、第１の実施の形態及び第２の実施の形態により、本発明に係るデータ記憶装置の構成及び動作について説明を行ったが、本発明はこれに限定されるものではない。例えば、第２の実施の形態では、メタデータ付加手段２１ｅやメタデータ除去手段２２ｄを設けてデータのみを送受信するようにしたが、ＭＸＦ（Material eXchange Format）のように、データとメタデータとをラップして１つのファイルとして扱うフォーマットのファイルを書き込む又は読み出す場合は、メタデータの内容を変更する必要はあるが、メタデータ領域そのものを付加したり削除したりする手段を設ける必要はない。また、複数のデータ記憶装置を複数ネットワークにより連結し、各データ記憶装置間で、データや差分データを分散して記憶することとしてもよい。
また、データ記憶装置１、１Ｂにおいて、システム管理手段２０、２０Ｂは、一般的なコンピュータを、前記した各手段として機能させるバージョン管理プログラムによって動作させることとしてもよい。
【０１０２】
以下、本発明に係るデータ記憶装置を、データ、差分データ等を分散して記憶する自律ストレージシステムに適用した実施の形態について説明する。なお、自律ストレージシステムは、本願出願人が開示している「データのバックアップ方法及びバックアップデータ復旧方法、並びに、ネットワーク蓄積装置及びネットワーク蓄積プログラム」（特開２００４−３３４７３９号公報）を利用することができる。
【０１０３】
［第３の実施の形態］
（自律ストレージシステムの概要）
最初に、図１０を参照して、本発明に係るデータ記憶装置を自律ストレージシステムに適用した場合のバージョン管理手法について、その概要を説明する。図１０は、本発明の第３の実施の形態に係る自律ストレージシステムで実現されるバージョン管理手法を模式的に示した図である。
【０１０４】
図１０に示すように、自律ストレージシステム２は、ディレクトリ情報を複数のデータ記憶装置１Ｃで共有管理し、各データ記憶装置１Ｃ間でデータを分散して記憶するものである。
ここでは、自律ストレージシステム２は、最新のバージョンのデータＡ，Ｂをデータ記憶装置１Ｃ1，１Ｃ3の記憶手段３０1，３０3にそれぞれ記憶している。
そして、旧バージョンのデータは、新バージョンのデータとの差分（差分データ〔ここでは、Ａ１〜Ａ５、Ｂ１〕）を各データ記憶装置１Ｃ間で分散して記憶している。ここで、最新データ（例えば、Ａ）に対応する過去の差分データ（例えば、Ａ１〜Ａ５）のアドレスは、それぞれポインタにより指し示される。
【０１０５】
また、ここでは、自律ストレージシステム２は、データ及び差分データを記憶するデータ記憶配置を、データに対するアクセス頻度の割合によって、決定することとしている。例えば、最新データＢに対するアクセスを“１”としたとき、一世代前のデータ（データＢ＋差分データＢ１）へアクセスが所定の割合（移動境界；例えば、“０．７”）を下回った段階で、差分データＢ１を、データＢとは異なるデータ記憶装置１Ｃ（例えば、論理アドレスで隣接するデータ記憶装置１Ｃ4）に移動させる。なお、この移動境界はデータ記憶装置１Ｃ間で段階的に複数設定してもよい。
【０１０６】
これによって、例えば、頻繁にアクセスが行われる差分データ（ここでは、Ａ１，Ａ２）が、最新データＡと同じデータ記憶装置１Ｃ1に記憶され、アクセス頻度の割合が低下した差分データＡ３が他のデータ記憶装置１Ｃ2に記憶されることになる。
このように、アクセス頻度の割合が高い差分データを最新データと同一の記憶手段に記憶させることで、アクセス頻度の高いデータ（及び差分データ）を高速に読み出すことが可能となる。また、アクセス頻度の割合が低い差分データを最新データと分離させることで、各データ記憶装置間で記憶されているデータの容量を分散させることができる。
【０１０７】
（データ記憶装置の構成）
次に、図１１を参照して、自律ストレージシステムを構成する、本発明の第３の実施の形態に係るデータ記憶装置の構成について説明する。図１１は、本発明の第３の実施の形態に係るデータ記憶装置の構成を示すブロック図である。データ記憶装置１Ｃは、複数のデータをそれぞれ複数の世代に亘って記憶するものであって、図１０で説明したバージョン管理手法を実現するものである。
【０１０８】
ここでは、データ記憶装置１Ｃは、図２で説明したデータ記憶装置１のデータ管理手段２３に、アクセス頻度計測手段２３ｅと、データ移動手段２３ｆと、メタデータ変更手段２３ｇとを付加している。他の構成については、図２で説明したデータ記憶装置１と同一であるため、同一の符号を付し、説明を省略する。
【０１０９】
アクセス頻度計測手段２３ｅは、記憶手段３０に記憶されているデータに対する、当該データに対応する差分データへのアクセス頻度の割合を定期的に計測するものである。
すなわち、アクセス頻度計測手段２３ｅは、最新データへの読み出し要求（アクセス）と、古いデータ（差分データ）への読み出し要求（アクセス）の回数とを計測し、最新データに対するアクセスの割合を“１”としたときの、差分データへのアクセス頻度の割合を算出する。このアクセス頻度の割合は、記憶手段３０に記憶しておく。なお、このアクセス頻度の割合は、メタデータに付加して記憶することとしてもよい。
【０１１０】
データ移動手段２３ｆは、アクセス頻度計測手段２３ｅによって計測されたアクセス頻度の割合に基づいて、差分データを、予め定めた他のデータ記憶装置（例えば、ＩＰアドレス等で論理的に隣接するデータ記憶装置）に移動させるものである。
ここでは、データ移動手段２３ｆは、記憶手段３０に記憶されているアクセス頻度の割合が、同じく記憶手段３０に記憶されている移動境界の値以下となった段階で、対応する差分データをデータ配信手段２２に通知し、他のデータ記憶装置に送信する。ここで、移動境界とは、当該データ記憶装置１Ｃに残す差分データのアクセス頻度の割合と、移動を行わせる差分データのアクセス頻度の割合との境界を示すものとする。なお、移動境界は、メタデータに付加して記憶し、データ毎に異なる値とすることとしてもよい。
【０１１１】
このように、アクセス頻度の割合に基づいて移動境界を設定する場合、データ移動手段２３ｆは、新しいバージョンのデータが記憶手段３０に記憶されたときに、データ記憶装置１Ｃにおける当該データに対するアクセス頻度の割合に対して、当該データに対応する差分データを記憶した、予め定めた他のデータ記憶装置（論理的に隣接するデータ記憶装置）における差分データに対するアクセス頻度の割合が予め定めた値を下回る場合に、記憶手段３０に記憶されている差分データを、他のデータ記憶装置に移動させるかどうかを判定する。
【０１１２】
すなわち、データ移動手段２３ｆは、新しいバージョンを記憶したデータの各バージョンにおいて、仮にそのバージョンよりも古い差分データを他のデータ記憶装置に移動した後の当該差分データへのアクセス頻度の割合が、移動境界以下である場合に、その差分データを、他のデータ記憶装置に移動させるものと判定し、移動を実行する。
これによって、データ記憶装置１Ｃは、アクセス負荷を分散させることができる。
【０１１３】
なお、移動境界は、アクセス頻度の割合のみならず、記憶装置３０に記憶されているデータの容量と、予め定めた他のデータ記憶装置（論理的に隣接するデータ記憶装置）に記憶されているデータの容量との比に基づいて設定することとしてもよい。
この場合、データ移動手段２３ｆは、新しいバージョンのデータが記憶手段３０に記憶されたときに、データ記憶装置１Ｃにおけるデータ容量と、他のデータ記憶装置におけるデータ容量との比が、予め定めた値を下回る場合に、記憶手段３０に記憶されている差分データを、他のデータ記憶装置に移動させるかどうかを判定する。
【０１１４】
すなわち、データ移動手段２３ｆは、新しいバージョンを記憶したデータの各バージョンにおいて、仮にそのバージョンよりも古い差分データを他のデータ記憶装置に移動した後の当該差分データへのアクセス頻度の割合が、データ容量の比に応じて設定した移動境界以下である場合に、その差分データを、他のデータ記憶装置に移動させるものと判定し、移動を実行する。
これによって、データ記憶装置１Ｃは、容量分散を行うことができる。
【０１１５】
このデータ移動手段２３ｆは、差分データを移動させる場合、制御情報送信手段２７を介して、差分データを格納する旨の要求である「差分格納要求」を、制御情報として他のデータ記憶装置に送信し、データ配信手段２２に差分データを配信する旨の指示を行うことで、差分データを他のデータ記憶装置に送信する。
なお、データ移動手段２３ｆは、他のデータ記憶装置から、制御情報受信手段２６を介して「差分格納要求」を受信し、差分データを他のデータ記憶装置から受信した場合は、データ格納・削除手段２１に格納要求を通知することで、当該差分データを記憶手段３０に記憶する。また、データ移動手段２３ｆは、差分データが記憶手段３０に記憶されているアドレスを、「差分格納要求」に対する応答として、制御情報送信手段２７を介して、差分データを送信してきたデータ記憶装置に送信する。
【０１１６】
メタデータ変更手段２３ｇは、記憶手段３０に記憶されているメタデータを更新するものである。ここでは、メタデータ変更手段２３ｇは、データ移動手段２３ｆにより差分データが他のデータ記憶装置に送信された後の、他のデータ記憶装置からの「差分格納要求」に対する応答に含まれている、差分データを記憶したアドレスに基づいて、記憶手段３０に記憶されているメタデータのデータポインタｄｐ（図３参照）を変更する。この場合、データポインタｄｐには、アドレスに、差分データを記憶したデータ記憶装置の識別情報（例えば、ＩＰアドレス）を付加した情報を書き込むこととする。
【０１１７】
以上説明したように、データ記憶装置１Ｃを構成することで、アクセス頻度が低下した差分データを他のデータ記憶装置に移動させることで、容量の分散を行うことができる。また、このとき、アクセス頻度の高いバージョンのデータ（差分データ）は、同じデータ記憶装置で管理されるため、データを生成し、配信する時間を低下させることがない。
【０１１８】
［第４の実施の形態］
なお、本発明に係るデータ記憶装置は、図１２に示したデータ記憶装置１Ｄとして構成してもよい。図１２は、本発明の第４の実施の形態に係るデータ記憶装置の構成を示すブロック図である。
データ記憶装置１Ｄは、データ記憶装置１Ｃ（図１１参照）と同様、図１０で説明したバージョン管理手法を実現するものである。
【０１１９】
このデータ記憶装置１Ｄは、データ記憶装置１Ｃ（図１１参照）におけるメタデータを、データに付加することで、１つのファイルとして扱っている。すなわち、データ記憶装置１Ｄは、図６で説明したデータ記憶装置１Ｂに対して、図１１で説明したアクセス頻度計測手段２３ｅを付加し、さらに、データ移動手段２３Ｄｆと、メタデータ変更手段２３Ｄｇとを付加している。
【０１２０】
以下、データ記憶装置１Ｂ及びデータ記憶装置１Ｄと異なる構成であるデータ移動手段２３Ｄｆと、メタデータ変更手段２３Ｄｇとについて説明する。他の構成については、データ記憶装置１Ｂ及びデータ記憶装置１Ｄと同一であるため、同一の符号を付すことで、説明を省略する。
【０１２１】
データ移動手段２３Ｄｆは、アクセス頻度計測手段２３ｅによって計測されたアクセス頻度の割合に基づいて、メタデータ付差分データを、予め定めた他のデータ記憶装置（例えば、ＩＰアドレス等で論理的に隣接するデータ記憶装置）に移動させるものである。すなわち、データ移動手段２３Ｄｆは、図１１で説明したデータ移動手段２３ｆに比べ、移動させるデータを差分データからメタデータ付差分データに変更しただけであり、他の機能は、データ移動手段２３ｆと同じである。
【０１２２】
メタデータ変更手段２３Ｄｇは、記憶手段３０に記憶されているメタデータ付差分データに含まれているメタデータを更新するものである。すなわち、メタデータ変更手段２３Ｄｇは、データ移動手段２３Ｄｆによりメタデータ付差分データが他のデータ記憶装置に送信された後の、他のデータ記憶装置からの「差分格納要求」に対する応答に含まれている、メタデータ付差分データを記憶したアドレスに基づいて、メタデータ付差分データに含まれているメタデータに記述されているポインタｐ（図７参照）を変更する。
このように、データ記憶装置１Ｄを構成することで、データ記憶装置１Ｃ（図１１参照）と同様、アクセス頻度が低下した差分データを他のデータ記憶装置に移動させることで、容量の分散を行うことができるとともに、最新のバージョンのデータに高速にアクセスすることができる。
【図面の簡単な説明】
【０１２３】
【図１】本発明の第１の実施の形態に係るデータ記憶装置で実現されるバージョン管理手法を模式的に示した図である。
【図２】本発明の第１の実施の形態に係るデータ記憶装置の構成を示すブロック図である。
【図３】メタデータの構造を説明するための図であって、（ａ）はメタデータの構造の一例を示すデータ構造図、（ｂ）はメタデータとデータとの関係を示す図である。
【図４】本発明の第１の実施の形態に係るデータ記憶装置におけるデータを格納する動作を示すフローチャートである。
【図５】本発明の第１の実施の形態に係るデータ記憶装置におけるデータを配信する動作を示すフローチャートである。
【図６】本発明の第２の実施の形態に係るデータ記憶装置の構成を示すブロック図である。
【図７】メタデータ付データを説明するための図であって、（ａ）はメタデータ付データ（メタデータ付差分データ）の構造の一例を示すデータ構造図、（ｂ）はメタデータ付データとメタデータ付差分データとの関係を示す図である。
【図８】本発明の第２の実施の形態に係るデータ記憶装置におけるデータを格納する動作を示すフローチャートである。
【図９】本発明の第２の実施の形態に係るデータ記憶装置におけるデータを配信する動作を示すフローチャートである。
【図１０】本発明の第３の実施の形態に係る自律ストレージシステムで実現されるバージョン管理手法を模式的に示した図である。
【図１１】本発明の第３の実施の形態に係るデータ記憶装置の構成を示すブロック図である。
【図１２】本発明の第４の実施の形態に係るデータ記憶装置の構成を示すブロック図である。
【図１３】従来の差分データにより複数のバージョンのデータを管理するバージョン管理手法を模式的に示した図である。
【符号の説明】
【０１２４】
１        データ記憶装置
１０      通信送受信手段
２０      システム管理手段
２１      データ格納・削除手段
２１ａ    データ受信手段
２１ｂ    差分データ生成手段
２１ｃ    データ書込手段
２１ｄ    データ削除手段
２１ｅ    メタデータ付加手段
２２      データ配信手段
２２ａ    データ読出手段
２２ｂ    データ生成手段
２２ｃ    データ送信手段
２２ｄ    メタデータ削除手段
２３      データ管理手段
２３ａ    ディレクトリ管理手段
２３ｂ    メタデータ生成手段
２３ｃ    データ変更手段
２３ｄ    データ操作制御手段
２３ｅ    アクセス頻度計測手段
２３ｆ    データ移動手段
２４ｇ    メタデータ変更手段
２４      メタデータ書込・読出手段
２５      ディレクトリ情報書込・読出手段
２６      制御情報受信手段
２７      制御情報送信手段
３０      記憶手段
【図１】
0004713257.tif 000002
【図２】
0004713257.tif 000003
【図３】
0004713257.tif 000004
【図４】
0004713257.tif 000005
【図５】
0004713257.tif 000006
【図６】
0004713257.tif 000007
【図７】
0004713257.tif 000008
【図８】
0004713257.tif 000009
【図９】
0004713257.tif 000010
【図１０】
0004713257.tif 000011
【図１１】
0004713257.tif 000012
【図１２】
0004713257.tif 000013
【図１３】
0004713257.tif 000014