(57)【要約】  この方法は、基本バージョン（１２）を有するデータエンティティへのアクセス、及び導出バージョン（１６）の作成を提供する。この方法は、基本バージョン（１２）に対して１以上のオペレーション（１４）を実行し（Ｓ２２）、格納し（Ｓ２４）、受け付ける（Ｓ２６）ことによって、導出バージョン（１６）を作成するための作成手順（Ｓ２）を含む。この方法は、基本バージョン（１２）、及び受け付けられた１以上のオペレーション（１４）に基づいて、導出バージョン（１６）を再構築する（Ｓ４２）ことによって、基本バージョン（１２）、及び受け付けられた１以上のオペレーション（１４）の第２のアドレスにマッピングされる第１のアドレスを介して導出バ―ジョン（１６）にアクセスを提供するための提供手順（Ｓ４）を更に含む。【選択図】  図１
2011501839.tif 000002
【特許請求の範囲】
【請求項１】
基本バージョン（１２）を有するデータエンティティへのアクセスを提供し、
前記データエンティティの導出バージョン（１６）の作成を可能にする
ための方法であって、
前記基本バージョン（１２）に対して１以上のオペレーション（１４）を実行し（Ｓ２２）、
前記１以上のオペレーション（１４）を格納し（Ｓ２４）、
前記１以上のオペレーション（１４）を受け付けて（Ｓ２６）、導出バージョン（１６）を作成する
ことによって前記データエンティティの導出バージョン（１６）を作成するための作成手順（Ｓ２）と、
前記基本バージョン（１２）、及び、前記受け付けられた１以上のオペレーション（１４）に等しいか又は結果が等価の１以上のオペレーション（１４）に基づいて、前記導出バージョン（１６）を再構築する（Ｓ４２）ことによって、
前記基本バージョン（１２）、及び、前記受け付けられた１以上のオペレーション（１４）に等しいか又は結果が等価の１以上のオペレーション（１４）の第２のアドレスにマッピングされた第１のアドレスを介して前記導出バージョン（１６）へのアクセスを提供するための提供手順（Ｓ４）と、
を含む方法。
【請求項２】
前記データエンティティが１以上のデータを含む請求項１に記載の方法。
【請求項３】
前記作成手順（Ｓ２）において、前記１以上のオペレーション（１４）が１以上の記憶装置（８ａ、８ａｂ、８ａｘ、８ａｙ）に格納される、請求項１又は２に記載の方法。
【請求項４】
前記１以上の記憶装置（８ａ、８ａｂ、８ａｘ、８ａｙ）のそれぞれがブロックごとにアドレス指定可能である、請求項３に記載の方法。
【請求項５】
複数の導出バージョン（１６）がそれぞれ、前記基本バージョン（１２）に対して１以上のオペレーション（１４）を実行すること（Ｓ２２）によって作成される（Ｓ２）、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記複数の導出バージョン（１６）のうちの少なくとも１つが、
前記基本バージョン（１２）に対して１以上のオペレーション（１４）を実行し（Ｓ２２）、
前記データエンティティの別のバージョン（１８）に対して１以上のオペレーション（１４）を実行し、
前記基本バージョン（１２）に対して実行される前記１以上のオペレーション（１４）及び前記別のバージョン（１８）に対する前記１以上のオペレーション（１４）をマージすることによって
作成される（Ｓ２）、請求項５に記載の方法。
【請求項７】
前記１以上のオペレーション（１４）を受け付けて、前記導出バージョン（１６）を作成する前記ステップ（Ｓ２６）が、原子的性質を有する、すなわち、
前記１以上のオペレーション（１４）がすべて受け付けられるか、又は
前記１以上のオペレーション（１４）が受け付けられず、前記データエンティティが前記１以上のオペレーション（１４）以前の状態で保持される、
請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記基本バージョン（１２）に対して前記１以上のオペレーション（１４）のそれぞれを実行する前記ステップ（Ｓ２２）が、原子的性質を有する、すなわち、
オペレーション（１４）が受け付けられるか、又は
前記オペレーション（１４）が受け付けられず、前記オペレーションの前の状態が保持される、
請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記導出バージョン（１６）が、
前記データエンティティの状態に関するデータと、
前記導出バージョン（１６）へのアクセスを提供し（Ｓ４）、前記導出バージョン（１６）を再構築する（Ｓ４２）ための前記第２のアドレスとの前記第１のアドレスのマッピングに関するメタデータ（２４）と、
を含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
導出バージョン（１６）に対して１以上のオペレーション（１４）を実行し（Ｓ６２）、
前記１以上のオペレーション（１４）を格納し（Ｓ６４）、
前記１以上のオペレーション（１４）を受け付けて（Ｓ６６）、更なる導出バージョン（２０）を作成する
ことによって前記データエンティティの前記更なる導出バージョン（２０）を作成するための更なる作成手順（Ｓ６）
を更に含み、前記提供手順（Ｓ８）が前記更なる導出バージョン（２０）へのアクセスを更に提供するためのものである
請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
複数の更なる導出バージョン（２０）が、前記導出バージョン（１６）に対して１以上のオペレーション（１４）を実行する（Ｓ６２）ことによってそれぞれ作成される、請求項１０に記載の方法。
【請求項１２】
前記複数の更なる導出バージョン（２０）のうちの少なくとも１つが、
前記導出バージョン（１６）に対して１以上のオペレーション（１４）を実行し（Ｓ６２）、
前記データエンティティの別のバージョン（１８）に対して１以上のオペレーション（１４）を実行し、
前記導出バージョン（１６）に対して実行される（Ｓ６２）前記１以上のオペレーション（１４）、及び前記別のバージョン（１８）に対して実行される前記１以上のオペレーション（１４）をマージすることによって
作成される（Ｓ６）、請求項１１に記載の方法。
【請求項１３】
前記データエンティティの前記導出バージョン（１６）に対して前記更なる１以上のオペレーション（１４）のそれぞれを実行する前記ステップ（Ｓ６２）が、原子的性質を有する、すなわち、
オペレーション（１４）が受け付けられるか、又は
前記オペレーション（１４）が受け付けられず、前記オペレーション（１４）の前の前記データエンティティが保持される、
請求項１０〜１２のいずれか一項に記載の方法。
【請求項１４】
前記更なる導出バージョン（２０）が、
前記データエンティティの状態に関するデータと、
前記更なる導出バージョン（２０）へのアクセスを提供し（Ｓ８）、前記更なる導出バージョン（２０）を再構築する（Ｓ８２）ための前記第２のアドレスとの前記第１のアドレスのマッピングに関するメタデータ（２４）と、
を含む、請求項１０〜１３のいずれか一項に記載の方法。
【請求項１５】
前記データ及び前記メタデータ（２４）が異なる場所に物理的に格納される、請求項９又は１４に記載の方法。
【請求項１６】
基本バージョン（１２）を有するデータエンティティへのアクセスを提供し、
前記データエンティティの導出バージョン（１６）の作成を可能にする
ように構成された装置（３０）であって、
前記基本バージョン（１２）に対して１以上のオペレーション（１４）を実行し（Ｓ２２）、
前記１以上のオペレーション（１４）を格納し（Ｓ２４）、
前記１以上のオペレーション（１４）を受け付けて（Ｓ２６）、導出バージョン（１６）を作成する
ことによって前記データエンティティの前記導出バージョン（１６）を作成するように構成された作成ユニット（３２）と、
前記基本バージョン（１２）、及び、前記受け付けられた１以上のオペレーション（１４）に等しいか又は結果が等価の１以上のオペレーション（１４）に基づいて、前記導出バージョン（１６）を再構築する（Ｓ４２）ことによって、
前記基本バージョン（１２）、及び、前記受け付けられた１以上のオペレーション（１４）に等しいか又は結果が等価の１以上のオペレーション（１４）の第２のアドレスにマッピングされた第１のアドレスを介して前記導出バージョン（１６）へのアクセスを提供する（Ｓ４）ように構成された提供ユニット（Ｓ４）と、
を備える装置。
【請求項１７】
前記データエンティティが１以上のデータを含む、請求項１６に記載の装置（３０）。
【請求項１８】
前記作成ユニット（３２）が、１以上の記憶装置（８ａ、８ａｂ、８ａｘ、８ａｙ）に前記１以上のオペレーション（１４）を格納することによって、前記導出バージョン（１６）を作成する（Ｓ２）ように更に構成される、請求項１６又は１７に記載の装置（３０）。
【請求項１９】
前記１以上の記憶装置（８ａ、８ａｂ、８ａｘ、８ａｙ）のそれぞれがブロックごとにアドレス指定可能である、請求項１８に記載の装置（３０）。
【請求項２０】
前記作成ユニット（３２）が、前記基本バージョン（１２）に対して１以上の動作（１４）を実行する（Ｓ２２）ことによって複数の導出バージョン（１６）をそれぞれ作成する（Ｓ２）ように更に構成される請求項１６〜１９のいずれか一項に記載の装置（３０）。
【請求項２１】
前記作成ユニット（３２）が、
前記基本バージョン（１２）に対して１以上のオペレーション（１４）を実行し（Ｓ２２）、
前記データエンティティの別のバージョン（１８）に対して１以上のオペレーション（１４）を実行し、
前記基本バージョン（１２）に対して実行される（Ｓ２２）前記１以上のオペレーション（１４）、及び前記別のバージョン（１８）に対して実行される前記１以上のオペレーション（１４）をマージすることによって、
前記複数の導出バージョン（１６）のうちの少なくとも１つを作成する（Ｓ２）ように更に構成されている、請求項２０に記載の装置（３０）。
【請求項２２】
前記１以上のオペレーション（１４）を受け付けて、前記導出バージョン（１６）を作成する前記ステップ（Ｓ２６）が、原子的性質を有する、すなわち、
前記１以上のオペレーション（１４）がすべて受け付けられるか、又は
前記１以上のオペレーション（１４）が受け付けられず、前記データエンティティが前記１以上のオペレーション（１４）以前の状態で保持される、
請求項１６〜２１のいずれか一項に記載の装置（３０）。
【請求項２３】
前記基本バージョン（１２）に対して前記１以上のオペレーション（１４）のそれぞれを実行する前記ステップ（Ｓ２２）が、原子的性質を有する、すなわち、
オペレーション（１４）が受け付けられるか、又は
前記オペレーション（１４）が受け付けられず、前記オペレーションの前の前記データエンティティが保持される、
請求項１６〜２２のいずれか一項に記載の装置（３０）。
【請求項２４】
前記導出バージョン（１６）が、
前記データエンティティの状態に関するデータと、
前記導出バージョン（１６）へのアクセスを提供し（Ｓ４）、前記導出バージョン（１６）を再構築する（Ｓ４２）ための前記第２のアドレスとの前記第１のアドレスのマッピングに関するメタデータ（２４）と
を含む、請求項１６〜２３のいずれか一項に記載の装置（３０）。
【請求項２５】
導出バージョン（１６）に対して１以上のオペレーション（１４）を実行し（Ｓ６２）、
前記１以上のオペレーション（１４）を格納し（Ｓ６４）、
前記１以上のオペレーション（１４）を受け付けて（Ｓ６６）、更なる導出バージョン（２０）を作成する
ことによって前記データエンティティの更なる導出バージョン（２０）を作成する（Ｓ６）ように構成された更なる作成ユニット（３６）
を更に備え、
前記提供ユニット（３４）が前記更なる導出バージョン（２０）へのアクセスを更に提供する（Ｓ８）ためのものである、
請求項１６〜２４のいずれか一項に記載の装置（３０）。
【請求項２６】
前記更なる作成ユニット（３６）が、前記導出バージョン（１６）に対して１以上のオペレーション（１４）を実行する（Ｓ６２）ことによって前記複数の更なる導出バージョン（２０）がそれぞれ作成される（Ｓ６）ように更に構成される、請求項２５に記載の装置（３０）。
【請求項２７】
前記複数の更なる導出バージョン（２０）の少なくとも１つが、
前記導出バージョン（１６）に対して１以上のオペレーション（１４）を実行し（Ｓ６２）、
前記データエンティティの別のバージョン（２０）に対して１以上のオペレーション（１４）を実行し、
前記導出バージョン（１６）に対して実行される（Ｓ６２）前記１以上のオペレーション（１４）、及び前記別のバージョン（２０）に対して実行される前記１以上のオペレーション（１４）をマージすることによって
作成されるように、前記更なる作成ユニット（３６）が更に構成される、請求項２６に記載の装置（３０）。
【請求項２８】
前記データエンティティの前記導出バージョン（１６）に対して前記更なる１以上のオペレーション（１４）のそれぞれを実行する前記ステップ（Ｓ６２）が、原子的性質を有する、すなわち、
オペレーション（１４）が受け付けられるか、又は
前記オペレーション（１４）が受け付けられず、前記オペレーション（１４）の前の前記データエンティティが保持される、
請求項２５〜２７のいずれか一項に記載の装置（３０）。
【請求項２９】
前記更なる導出バージョン（１６）が、
前記データエンティティの状態に関するデータと、
前記導出バージョン（２０）へのアクセスを提供し（Ｓ８）、前記導出バージョン（２０）を再構築する（Ｓ８２）ための前記第２のアドレスとの前記第１のアドレスのマッピングに関するメタデータ（２４）と、
を含む、請求項２５〜２８のいずれか一項に記載の装置（３０）。
【請求項３０】
前記データ及び前記メタデータ（２４）が異なる場所に物理的に格納される、請求項２４又は２９に記載の装置（３０）。
【請求項３１】
コンピュータで実行されると、前記コンピュータに、請求項１〜１５による前記方法のいずれか１つを実行させるように構成されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データエンティティへのアクセスを提供し、データエンティティの導出バージョンの作成を可能にする方法、及び当該方法を実行するためのコンピュータプログラムに関するものである。また、本発明は、データエンティティへのアクセスを提供し、データエンティティの導出バージョンの作成を可能にするよう構成された装置に関するものである。
【背景】
【０００２】
コンピュータ技術では、仮想化は、コンピュータリソースの抽象化を指す。仮想化は、幾つかの形をとることができる。一形態では、仮想化は、複数のコンピュータリソースが何人かのユーザ又は幾つかのコンピュータシステムによって単一のコンピュータリソース、例えば単一の物理的なコンピュータリソースとして認識されるように、ユーザ又はコンピュータシステムに複数のコンピュータリソース、例えば、複数の物理的なコンピュータリソースを提示することにある。別の形態では、仮想化は、単一のコンピュータリソースが何人かのユーザ又は幾つかのコンピュータシステムによって複数のコンピュータリソース、例えば複数の物理的なリソースとして認識されるように、ユーザ又はコンピュータシステムに単一のコンピュータリソース、例えば、物理的なコンピュータリソースを提示することにある。更に別の形態では、仮想化は、１つのコンピュータリソースが何人かのユーザ又は幾つかのコンピュータシステムによってその実際の特性と異なる特性を有するものとして認識されるように、ユーザ又はコンピュータシステムにコンピュータリソースを提示することにある。
【０００３】
コンピュータ技術における仮想化の目的は、それだけには限定されないが、何人かのユーザ又は幾つかのコンピュータシステムによるシステム又はリソースへのアクセスを容易にするために、複雑なコンピュータシステム又はリソースを単一のシステム又はリソースとして何人かのユーザ又は幾つかのコンピュータシステムに提示すること、プライバシー及びセキュリティのために、大きいコンピュータシステム又はリソースを一連の小さい分離したシステム及びリソースとして何人かのユーザ又は幾つかのコンピュータシステムに提示すること、及び、システム又はリソースとのインターフェイスを容易にするために、第１の外部インターフェイスを提供するコンピュータシステム又はリソースを、第１のインターフェイスとは異なる第２の外部インターフェイスを提供するシステム又はリソースとして提示することを含む。
【０００４】
この場合には、ユーザ又はコンピュータシステムに提示するアクションは、１以上の物理的なコンピュータリソースとユーザ又はコンピュータシステムとの間のインターフェイスを、当該１以上の物理的なコンピュータリソースの、それらの個数を含む幾つかの物理的な特性又は特徴を隠蔽するように、又は変更したと見せるようにして、動作させることを意味する。
【０００５】
コンピュータリソースは、例えばサーバコンピュータ若しくはデータ記憶装置などのハードウェアデバイス、又は、オペレーティングシステム、コンピュータ上で稼働するように構成されたアプリケーション、若しくはミドルウェアアプリケーションといったソフトウェアデバイスであってもよい。
【０００６】
コンピュータのような単一の物理的なコンピュータリソースの仮想化を実施し、動作させるための１つの方法は、単一の物理的なコンピュータリソース上で仮想化制御プログラムを実行することである。仮想化制御プログラムは、ここでは、ホストソフトウェアと呼ぶ。ホストソフトウェアは、単一の物理的なコンピュータリソースにおいて、ゲストソフトウェアのための完全なシミュレーションされたコンピュータ環境を作る。ゲストソフトウェアは、例えば、完全なオペレーティングシステムであってもよく、当該ゲストソフトウェアにアクセスするユーザがハードウェアプラットフォーム上で稼働しているのは当該ゲストソフトウェアのみであると認識するように、ハードウェアプラットフォーム上で稼働している完全なスタンドアロンコンピュータ環境であるかのように稼働する。
【０００７】
従来のソフトウェアアプリケーションに比べて、ゲストソフトウェアとして動作するソフトウェアアプリケーションは、ホストソフトウェア上でゲストソフトウェアとして稼働することができるように変更することができてもよく、又はできなくてもよい。ホスト及びゲストソフトウェアアプリケーションが稼働するハードウェアは、仮想化を可能にするように変更することもできる。
【０００８】
例えばオペレーティングシステムの仮想化など、プラットフォームの仮想化は、一般に、単一の物理的なコンピュータリソースのメモリディスクを分割することによって実行される。すなわち、ホストソフトウェアは、各ゲストソフトウェアのインスタンスがリソースのメモリの予約済みの部分を有するように、単一の物理的なコンピュータリソースのメモリディスクを分割する。
【０００９】
ハードウェアディスクといったメモリディスクを分割することにより、メモリディスク上で同じ元のデータエンティティの「イメージ」が形成され得る。言い換えれば、同じ元のデータエンティティの幾つかのコピーが、メモリディスクの異なる別々のパーティション上にコピーされる。これは、ホストソフトウェア上で複数のゲストソフトウェアアプリケーションを使用することによってもたらされる。
【００１０】
仮想化をサポートするためのメモリディスクのこうしたパーティションには欠点がある。各ゲストソフトウェアインスタンスに関するデータを保存するのに必要なメモリスペースは、膨大である。したがって、サポートしているハードウェアシステム上のキャッシュ管理が、最適化されない。これは、ホストコンピュータのキャッシュが、所与の瞬間に複数のイメージへのアクセスを管理し得るからである。例えば、ユーザがゲストソフトウェアアプリケーションの幾つかのインスタンスを作成する機会を有する場合に、イメージの数が増えると、問題が激化する。
【００１１】
したがって、上述した問題を解決する、又は部分的に解決するコンピュータリソースの仮想化のための方法を提供することが望ましい。
【概要】
【００１２】
このような方法は、請求項１によって提供される。好適な実施形態は、従属クレームに記載されている。
【００１３】
本発明の方法は、基本バージョンを有するデータエンティティへのアクセスを提供し、例えば、データエンティティの導出バージョンのユーザ又はコンピュータシステムによる作成を可能にする。この方法は、基本バージョンに対して１以上のオペレーションを実行し、１以上のオペレーションを格納し、１以上のオペレーションを受け付けて、導出バージョンを作成することによって、データエンティティの導出バージョンを作成するための作成手順を含む。この方法は、基本バージョンに基づく導出バージョン、及び、受け付けられた１以上のオペレーションに等しいか又は結果が等価の１以上のオペレーションを再構築することによって、基本バージョンの、及び、受け付けられた１以上のオペレーションに等しいか又は結果が等価の１以上のオペレーションの第２のアドレスにマッピングされた第１のアドレスを介して導出バージョンへのアクセスを提供するための提供手順を更に含む。
【００１４】
本発明の意味において、データエンティティは、コンピュータ可読媒体に格納され、そこでアクセスすることができる１組のデータである。データエンティティは、例えば、コンピュータファイル、コンピュータプログラム、ソフトウェアアプリケーション又はソフトウェアアプリケーションの一部分、オペレーティングシステム又はファイル、及びオペレーティングシステムを設定し、又はコンピュータプラットフォームを動作させることができる設定データを表してもよい。
【００１５】
バージョンは、データエンティティの状態、例えば、データエンティティの完全なブロックレベルの状態である。所与の状態のデータエンティティは、メモリデバイスの完全なメモリスペース、又はメモリデバイスの一部又は一区分のみを占有し得る。所与の状態のデータエンティティは、メモリデバイスの完全なメモリスペース、又はメモリデバイスの一部又は一区分のみを占有するデータエンティティの変更バージョンであってもよい。したがって、本発明におけるバージョンは、特定の状態を有するデータエンティティとしてユーザ又はコンピュータシステムに透過的に提示することができる論理的な構成もカバーする。論理的な構成としてのバージョンのこの意味では、バージョンを構成する状態の実際のデータエンティティは、実際には、如何なるメモリデバイスにも存在しておらず、１以上の場所で使用可能なデータから、及び場合によっては、そのバージョンに対応するデータエンティティの状態をどのように再構築するかを示すメタデータから再構築することができる。
【００１６】
データエンティティの基本バージョンは、実際にコンピュータ可読媒体に格納されるか、又は複数のコンピュータ可読媒体に分散されて格納されるデータエンティティのバージョンである。データエンティティの、又はデータエンティティのイメージの１以上の基本バージョンは、ハードウェアデバイスに格納することができる。基本バージョンは、一部の実施形態では、参照プログラムとして見ることができる。
【００１７】
基本バージョンは、空とすることができる。これは、メモリ装置が初めて使用される場合に、このメモリ装置にまだ何も書かれていないときに起こり得る。このような基本バージョンはあるサイズを有するが、基本バージョンは、例えばゼロを戻すだけという意味で、如何なるデータも含んでいない。このようなメモリ装置は、ＵＮＩＸのようなオペレーティングシステムにおける「／ｄｅｖ／ｚｅｒｏ」の特別なファイルに類似し得る。
【００１８】
データエンティティに対するオペレーションは、その内容の状態を変更し、又は特定の状態のデータエンティティがどのように参照されるかを変更する。即ち、データエンティティに対するオペレーションは、データエンティティの内容に対する変更であると定義され、したがって、内容の状態、又はバージョニング情報がどのようにして特定の状態のデータエンティティを参照するように使用されていたかに対する変更、又はその組み合わせを変更する。したがって、オペレーションは、データエンティティへの変更のない新しいバージョンの作成にあってもよい。オペレーションは、データエンティティのデータを変更する１つのステップにあってもよく、このステップは、導出バージョンをもたらし、又は導出バージョンをもたらす複数の変更の中の１つのステップであってもよい。
【００１９】
オペレーションは、ユーザによって開始することができ、したがって、ユーザは、そのオペレーションを知っている。代わりに、オペレーションは、ユーザに見えなくてもよい。例えば、仮想化された環境においてデータエンティティの新しいイメージをインスタンス化するとき、又はかかるイメージを使用するときに、オペレーティングシステムの状態の変更に対応するオペレーションは、オペレーションの自動的な記録についてユーザに知らせることなく、適切に設定されたコンピュータ手段によって自動的に記録することができる。
【００２０】
導出バージョンは、基本バージョンから１以上のオペレーションによって導き出されたデータエンティティのバージョンである。導出バージョンは、コンピュータ可読媒体に物理的に格納したり、複数のコンピュータ可読媒体に分散して格納したりする必要はない。導出バージョンの作成は、基本バージョンに対して１以上のオペレーションを実行し、それらを格納し、受け付けることによって行われる。したがって、導出バージョンは、基本バージョン及びこの基本バージョンに対する１以上のオペレーションから作り出された合成バージョンとして見ることができる。導出バージョンは、ユーザ固有のバージョンを形成するために、ユーザによって、又は例えばコンピュータ手段によって自動的に作ることができる。
【００２１】
本発明による方法は、導出バージョンへの透過的なアクセスを提供する利点を提供する。すなわち、導出バージョンに対応する状態のデータエンティティが実際にはそういうものとしてメモリに物理的に存在しない場合でさえ、導出バージョンは、一般に、導出バージョンにアクセスするユーザ又はコンピュータシステムによって、基本バージョンであるものと認識される。アクセスされたデータエンティティの外観、機能、及び挙動は、したがって、導出バージョンに対応する状態のデータエンティティのメモリにおける非物理的存在が一般に導出バージョンにアクセスするユーザ又はコンピュータシステムによって認識されないようなものである。
【００２２】
透過性は、導出バージョンを特定する第１のアドレスによって、及び、基本バージョンを特定する第２のアドレスであって、受け付けられた１以上のオペレーションに等しいか又は結果が等価の１以上のオペレーションへの該第２のアドレスと第１のアドレスとのマッピングによって、提供される。
【００２３】
第１のアドレスは、例えば、第２のアドレスの１以上のマッピングテーブルにおける位置（複数可）を特定する。第１のアドレスと第２のアドレスとの間のマッピング又は対応は、適した構造を有する任意のデータ格納手段に格納することができる。マッピングは、仮想化の２つ以上のレベルが存在する場合に、第３のアドレス又はそれ以上のアドレスを介して実行することができる。
【００２４】
第２のアドレスは、データエンティティの基本バージョン、及び導出バージョンの作成につながった受け付けられた１以上のオペレーションに等しいか又は結果が等価の１以上のオペレーションの、例えば物理的なメモリ位置といった位置を特定する。
【００２５】
本発明による方法の一実施形態では、提供手順は、基本バージョンの、及び受け付けられた１以上のオペレーション、即ち受け付けられた１以上のオペレーションに等しい１以上のオペレーションの第２のアドレスにマッピングされた第１のアドレスを介した導出バージョンへのアクセスを提供する。したがって、１以上のオペレーションは、導出バージョンの再構築を可能にするよう簡易に格納することができる。
【００２６】
本発明による方法の別の一実施形態では、提供手順は、基本バージョンの、及び受け付けられた１以上のオペレーションに等価の１以上のオペレーションの第２のアドレスにマッピングされた第１のアドレスを介した導出バージョンへのアクセスを提供する。次いで、アクセスの提供は、基本バージョン、及び受け付けられた１以上のオペレーションに等価の１以上のオペレーションに基づいて導出バージョンを再構築することによって達成される。等価は、この場合には、結果が等価であることを意味する。受け付けられた１以上のオペレーションに等価の１以上のオペレーションは、受け付けられた１以上のオペレーションを分析し、可能な場合は、再配列し、マージし、削除することによって、受け付けられた１以上のオペレーションに基づいて生成される。例えば、データエンティティの部分への変更であるオペレーションに次ぐデータエンティティの部分の削除であるオペレーションは、データエンティティの部分の削除だけに等しいことを当業者であれば理解するであろう。
【００２７】
この実施形態は、受け付けられた一連のオペレーションの全てをメモリに維持する必要がないので、オペレーションを格納するためのメモリスペースを節約することができる。代わりに、結果が等価のオペレーションを保持するだけとすることができる。
【００２８】
受け付けられた１以上のオペレーションに等価の１以上のオペレーションは、任意のソフトウェア構成要素によっていつでも生成することができる。受け付けられた１以上のオペレーションに等価の１以上のオペレーションを生成することは、例えば、１以上のオペレーションを受け付けるステップ中に実行することができる。
【００２９】
本発明による方法は、導出バージョンを格納するために必要なメモリスペースを低減する利点を更に提供する。データエンティティの導出バージョンの完了状態を格納する代わりに、基本バージョン及び導出バージョンにつながるオペレーションのみが格納される。
【００３０】
一実施形態では、所与のデータエンティティの１つの基本バージョンのみが、例えば１以上のデータストレージユニットを含むコンピュータシステムに格納される。導出バージョンは、基本バージョンから作成される。導出バージョンの作成に対応する受け付けられた１以上のオペレーションに等しいか又は結果が等価の１以上のオペレーションもコンピュータシステムに格納される。これらのオペレーションは、中央サーバ、専用サーバ、又はクライアント端末に格納することができる。オペレーションが中央サーバ、又は同じ基本バージョンからそれぞれ作成された複数の導出バージョンに共通の専用サーバに格納されている場合には、基本バージョン及び導出バージョンに必要な合計メモリスペースの導出バージョンの数に対する比は、一般に、導出バージョンの数が増えると低減する。これは、多くの用途において、例えば、ユーザによって使用するようにそれぞれ構成されたデータエンティティのバージョンは、互いにわずかに異なるだけであるからである。
【００３１】
この利点は、特に、データエンティティに関連付けられている設定及びシステムファイルが、一度、即ち、データエンティティに関連付けられているプログラムが開始し、次いでこれらのファイルがそれ以上変更されない場合に、使用されるケースにおいて明らかである。
【００３２】
また、本発明による方法で、キャッシュも効率的に使用することができる。実際に、オペレーションと並行して導出バージョンを再構築するためにアクセスされる基本バージョンの一部分のキャッシングは、すべての導出されたバージョンについて一意であり、したがって、データの冗長性が低減する。
【００３３】
さらに、本発明による方法は、例えば、ソフトウェアアプリケーション又はオペレーティングシステムをテストするために、テスト又はデバッグ環境によく適合するという利点を提供する。これらの環境において、本発明による方法は、ソフトウェアアプリケーション又はオペレーティングシステムの特定のリリースにおけるアクションの特定のテストシナリオ又は特定のテストシーケンスの結果にそれぞれ対応するデータエンティティの多くの導出バージョンを格納するために使用することができる。特定のリリースは、基本バージョンである。オペレーションは、特定のリリースをテストするための入力アクションのシーケンスによってもたらされる。リリース及びオペレーションを格納するのに必要なメモリスペースは、低減され、さらに、オペレーティングシステム又はソフトウェアの状態は、すぐに回復することができ、データエンティティの状態の発展の再生を分析することができる。
【００３４】
データエンティティの異なるバージョンは、それらを作成するためになされたオペレーションを比較することによって、すぐに比較することもできる。格納されたデータの状態に関して、データエンティティに関連するアクションの２つのシーケンスの効果の比較を行うこともできる。比較は、より易しくなる。というのは、基本バージョンからの基礎を成す完全なデータではなく、オペレーションを比較するだけでよいからである。
【００３５】
一実施形態において、基本バージョン及びオペレーションからのデータエンティティの導出バージョンの再構築は、導出バージョンがデータエンティティを処理する実際の従来の方法に忠実に対応する状態でテストすることができるように、サーバ又はサーバの特定のセクションにおける導出バージョンに対応する完全なブロックレベル状態の一時的な格納をもたらす。しかし、テストがいったん終了すると、完全な状態をそこに保持する必要はない。サーバ又は導出バージョンの再構築に専用のサーバの特定のセクションは、導出バージョンの状態から異なる導出バージョンの状態にすぐに切り替えることができる。
【００３６】
再構築ユニット、モジュール、又はプログラムなどの再構築手段は、それがデータエンティティを処理する実際の従来の方法に忠実に対応する状態で処理することができるよう、データエンティティの状態を構築するために提供することができる。
【００３７】
本発明による方法によって、コンピュータシステムのメモリ容量の限界にすぐに達することなく、データエンティティの幾つかの並列の導出バージョンを容易に、及び効率的に保持することができる。これらの導出バージョンを容易に処理し、テストし、綿密に調べ、更に変更し、比較することができる。あるバージョンから別のバージョンへの切り替えを行うと同時に、それらの間の再生及び比較を行うことができる。
【００３８】
本発明による方法は、悪意のあるアプリケーションの脅威に適切に及び効率的に臨むために、悪意のあるアプリケーションを開始することができる環境によく適合しているという利点も提供する。悪意のあるアプリケーション又はウイルスがコンピュータシステムにあると判定されると、この方法は、悪意のあるアプリケーションがいつコンピュータシステムに追加されたか、及びいつ拡張を開始したか、又は動作したかを、システムになされるオペレーションを検査することによって、検査することができる。これにより、悪意のあるソフトウェアアプリケーションの挿入元を探し出す機会が与えられ、それとより良く闘えるようになる。特定のＷｅｂサイトがアクセスされたとき、又はアプリケーションが最初に開始されたとき、悪意のあるアプリケーションがシステムに追加されたことが、データエンティティになされたオペレーションを分析することによって決定された場合、対応策は、特定のＷｅｂサイト又はダウンロードされたアプリケーションのブロックを含むことができる。
【００３９】
本発明による方法により、データエンティティになされたオペレーションの記録を含む改訂制御システムを提供することもできる。
【００４０】
一実施形態においては、意図された仮想化を処理するために、仮想化ソフトウェア構成要素、アプリケーション、又は制御プログラムなどのコンピュータプログラムが提供され、実行される。
【００４１】
本発明による方法の一実施形態においては、複数の導出バージョンのうちの少なくとも１つは、基本バージョンに対して１以上のオペレーションを実行し、データエンティティの別のバージョンに対して１以上のオペレーションを実行し、基本バージョンに対して実行された１以上のオペレーションと他のバージョンに対する１以上のオペレーションをマージすることによって作成される。他のバージョンは、例えば、同じエンティティの導出バージョンである。マージによって、基本バージョン及び別のバージョンの双方から来る合成導出バージョンを取得することができる。テスト環境の場合には、この実施形態は、２つのテストシーケンスを結合し、データエンティティを、単一のテストシーケンスがもたらすことのない状態にすることができる。
【００４２】
マージプロセスは、基本バージョンになされたすべてのオペレーションを結合することによって行うことができる。衝突がマージ中に起こる場合には、あるタイプのオペレーションに別のタイプよりも高い優先度を割り当てる、バージョンのうちの１つに対してなされたオペレーションに優先度を割り当てる、ユーザ又はオペレータに、各衝突に関して何を行うかを選択するよう促す、どのユーザ又はコンピュータ構成要素がオペレーションを行ったか、日付などに基づいて衝突を解決するなど、異なる手順が適用され得ることを当業者であれば理解されよう。
【００４３】
本発明による方法の一実施形態において、導出バージョンを作成するために１以上のオペレーションを受け付けるステップは、原子的性質を有する。即ち、１以上のオペレーションがすべて受け付けられるか、又は１以上のオペレーションは受け付けられず、導出バージョンが１以上のオペレーション以前の状態で保持される。
【００４４】
この実施形態において、１以上のオペレーションを受け付けることは、原子的プロセスを形成する１以上のステップを含む。原子的プロセスには、可能な結果が２つしかない。すなわち、成功又は失敗である。オペレーションのうちの一以上を受け付けて、新しい導出バージョンを生成することが失敗した場合、データエンティティの状態は、すべてのオペレーション以前の状態に復元される。その場合、導出バージョンは、受け付けステップの部分的な成功に基づいて作成されない。受け付けプロセスの成功の場合、導出バージョンに至る中間のオペレーションは、保持されてもされなくてもよい。中間オペレーションを保持しないことは、メモリスペースを節約し、中間オペレーションを保持することは、導出バージョンに至った変更を追跡することを可能とする。
【００４５】
導出バージョンを作成するために１以上のオペレーションを受け付けるステップの原子的性質又は原子性は、存在理由を有しており、オペレーション（例えば変更）のそれぞれが個々に原子的プロセスを介して作成されたかもしれない場合でさえ、利点を提供する。言い換えれば、そのオペレーションレベルにおける原子性、すなわち、各個々のオペレーションの原子性は、そのバージョンレベルの原子性、すなわちバージョニングの原子性からその利点を奪わない。その理由は、あるバージョンの作成は、オペレーションを構成するデータより多くのデータを作成するからである。バージョンの作成は、バージョンを形成し、それをあるバージョンとラベル付けし、バージョンを再構築するのに必要なデータがどこに格納されているかを示し、１以上のオペレーションを受け付けるステップがそれらを処理する（例えば、一連のオペレーションの最終結果に影響を与えないオペレーションを取り除くため）ことを伴う場合、処理の結果を示すためのメタデータを作成する。
【００４６】
バージョンレベルの原子性は、バージョニングプロセスにおける整合性の保証を提供し、変更レベルでの原子性に基づいているが、それを超えて高い信頼性を提供する。
【００４７】
本発明による方法の一実施形態においては、基本バージョンに対する１以上のオペレーションのそれぞれを実行するステップは、原子的性質を有する。すなわち、オペレーションが受け付けられるか、又は、オペレーションは受け付けられず、そのオペレーションの前の状態が保持され、そのオペレーションが破棄される。
【００４８】
本発明による方法の一実施形態においてでは、この方法は、導出バージョンに対して１以上のオペレーションを実行し、１以上のオペレーションを格納し、１以上のオペレーションを受け付けて、更なる導出バージョン（ｆｕｒｔｈｅｒ  ｄｅｒｉｖｅｄ  ｖｅｒｓｉｏｎ）を作成することによって、データエンティティの更なる導出バージョンを作成するための更なる作成手順を更に含む。この実施形態では、提供手順は、更なる導出バージョンへのアクセスを更に提供するためのものである。この実施形態によって、導出バージョン及びこの導出バージョンに対するオペレーションから作り出された合成バージョンである更なる導出バージョンの作成が可能になる。
【００４９】
本発明による方法の一実施形態において、完全な再帰が可能である。導出バージョンから、又は別の更なる導出バージョンから更なる導出バージョンを作成することができる。したがって、再構築も再帰的プロセスである。その意味で、本発明による方法の一実施形態は、データエンティティの基本バージョンになされるオペレーションを表すツリー又は階層構造を制御するための方法である。
【００５０】
これらの実施形態は、導出バージョン及び更なる導出バージョンのツリー構造又は階層構造を基本バージョンから作成することができるという利点を有する。導出バージョン又は更なる導出バージョンへのアクセスは、各バージョンの全状態をメモリに保持することが必要ないという事実にもかかわらず、ユーザが導出バージョン及び更なる導出バージョンを従来のデータエンティティとして認識するという点で透過である。ツリー又は階層構造自体は、導出バージョン及び更なる導出バージョン、及びそれらにリンクする論理的なオペレーションを再構築することができる記録されたオペレーションの存在以外には、メモリに物理的に存在する必要はない。
【００５１】
導出バージョン及び更なる導出バージョンのツリー構造又は階層構造を作成可能とすることによって、導出バージョンを格納するために必要なメモリスペースが更に低減する。実際に、２つの計画された導出バージョンが、基本バージョン、導出バージョン、又は更なる導出バージョンであり得るバージョンに対して行われる同じ最初のオペレーションを共有している場合には、２つの計画された導出バージョンはいずれも、共通の中間導出バージョンから作成することができる。これによって、バージョンを格納するために必要なメモリスペースが低減する。
【００５２】
この実施形態は、テストシナリオ及び結果として得られたバージョンを、ツリー又は階層構造にまとめることができ、したがって、必要なメモリスペースを増加させることなく、使用可能なテストされたアクション及びテストされた結果の状態のシーケンスを増加させるという点で、テスト又はデバッグ環境によく適合している。
【００５３】
導出バージョン、すなわち、任意の中間バージョンなしに基本バージョンから導出されたバージョン、及び更なる導出バージョン、すなわち、少なくとも中間導出バージョンを介して基本バージョンから導出されたバージョンは、同じソフトウェア構造を有することができ、コンピュータ実装の観点から、及びユーザ対話の観点から、同じように取り扱うことができる。本発明による方法の異なる実施形態を明確な方法で説明するために、ここでは区別することがある。
【００５４】
一実施形態は、完全な再帰を提供する。この実施形態では、導出バージョン及び更なる導出バージョンは、導出のレベルの数に関して、制限がない。別の実施形態は、制限された再帰を提供する。この実施形態では、導出バージョン及び更なる導出バージョンは、導出のレベルの数に関して、制限がある。更に別の実施形態は、再帰を提供しない。この実施形態において、基本バージョンから導出する導出バージョンのみが提供される。
【００５５】
完全な又は部分的な再帰を提供する実施形態においては、より一般的な意味を有する「導出バージョン」という表現が、「導出バージョン」（上記で定義されたような狭い意味を有する）、及び「更なる導出バージョン」（上記で定義）の双方をカバーするために使用されていることがある。その場合、「導出バージョン」（狭い意味を有する）は、したがって、例えば「第１の導出バージョン」又は「第１レベルの導出バージョン」と称していることがある。したがって、当業者であれば、これらの問題の観点から本発明を理解されよう。
【００５６】
本発明による方法の一実施形態においては、導出バージョン又は更なる導出バージョンは、データエンティティの状態に関するデータ、及び、導出バージョンへのアクセスを提供し、それを再構築するための第２のアドレスとの第１のアドレスのマッピングに関するメタデータを含む。この実施形態において、バージョンは、実際のデータ及びバージョンの再構築を可能にする機能をもつメタデータから作り出された論理的な構成として見ることができる。例えば、メタデータは、どのブロックがバージョンを作り出すか、及びバージョンのブロックごとに、基本バージョンと比較したブロックの状態を示す。メタデータは、例えば、「メモリブロックに変更なし、ただし、ブロック２５が２つの連続する変更によって変更され、これら２つの連続する変更が・・・、メモリブロック６５が１つの変更によって変更され、この変更が・・・など」を意味するように変換することができる。オペレーションは、データエンティティの導出状態を再構築するためのブロックレベルの差分情報とすることができる。
【００５７】
本発明による方法の一実施形態においては、データエンティティがブロックデバイスに格納され、この方法は、ブロックデバイスに格納されたデータエンティティ及びデータエンティティのバージョンを管理するように構成される。ブロックデバイスは、データが動かされる、すなわち、ブロックの形態で書かれ、読み出されるメモリストレージユニットである。ブロックデバイスの例は、ハードディスク及びＣＤ−ＲＯＭドライブなどアドレス指定可能なデバイスとすることができる。
【００５８】
データエンティティがブロックデバイスに格納されると、バージョンは、メモリブロックレベルのデータエンティティの状態として見ることができる。基本バージョンは、そのブロックデバイスに、又は基本バージョンが幾つかのブロックデバイスにわたって分散される場合は複数のブロックデバイスに最初に格納されたバージョンである。データエンティティの導出バージョンは、基本バージョン、及びデータエンティティになされた変更であり得るオペレーションに基づいて再構築することができ、この場合、各変更は、ブロックレベルでの変更に対応する。任意の数のブロックレベルの変更の後、例えば、受け付けのステップが原子的プロセスである場合、コミットアクションを介して変更が受け付けられ、導出バージョンが受け付けられる。ブロックの読み取り、書き込み、更新、削除、又は追加アクションの原子的特徴は、ハードウェアベースであり、ブロックデバイス製造業者によって保証することができる。
【００５９】
元の基本バージョンの入出力（Ｉ／Ｏ）メモリブロックレベルのオペレーション（例えば変更）を実際に実行する代わりに、ブロックレベルのオペレーションは、基本バージョンが影響を受けないように格納される。ブロックレベルのオペレーションを格納するために、データエンティティになされた変更を傍受するための手順を提供することができる。かかる手順は、専用ソフトウェア構成要素によって動作させることができ、ユーザ又はクライアントコンピュータシステムとの対話中に時間に応じてどのブロックが変更されるかをデータエンティティの一時的なイメージにおいて検出することにあり得る。データエンティティになされた変更を傍受するために提供された手順は、サンドボックスの様に制御されるゾーンを使用するソフトウェアベースの仮想化手順とすることができる。
【００６０】
また、本発明は、装置に関する。好適な実施形態は、従属クレームに記載されている。
【００６１】
本発明の装置は、基本バージョンを有するデータエンティティへのアクセスを提供する、及びデータエンティティの導出バージョンの作成を可能にするように構成される。この装置は、基本バージョンに対して１以上のオペレーションを実行し、１以上のオペレーションを格納し、１以上のオペレーションを受け付けて、導出バージョンを作成することによって、データエンティティの導出バージョンを作成するように構成された作成ユニットを備える。この装置は、基本バージョンに基づく導出バージョン、及び受け付けられた１以上のオペレーションに等しい、又は結果が等価の受け付けられた１以上のオペレーションを再構築することによって、基本バージョンの、及び受け付けられた１以上のオペレーションに等しい、又は結果が等価の１以上のオペレーションの第２のアドレスにマッピングされた第１のアドレスを介して導出バージョンへのアクセスを提供するように構成された提供ユニットを更に備える。
【００６２】
本発明の一実施形態による方法及び装置は、したがって、バージョン間で、すなわち、基本バージョンから導出バージョン、又は導出バージョンから更なる導出バージョンに、バージョンのメモリスペースが変わり得る。この実施形態において、ユーザ又はコンピュータシステムは、ある量のメモリスペースがこのユーザ又はコンピュータシステムによって使用可能である、又は確保されていると認識している場合があるが、これは、実際にはそうではない。
【００６３】
次に、本発明の実施形態を、添付の図面と共に説明する。
【図面の簡単な説明】
【００６４】
【図１】本発明による方法の一実施形態のフロー図である。
【図２ａ】本発明による方法の実施形態のネットワーク構成を概略的に示す図である。
【図２ｂ】本発明による方法の実施形態のネットワーク構成を概略的に示す図である。
【図３】本発明による方法の実施形態のネットワーク構成を概略的に示す図である。
【図４】本発明の様々な実施形態におけるデータエンティティのバージョン間の論理的な関係の略図である。
【図５】本発明の様々な実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図６ａ】本発明の様々な実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図６ｂ】本発明の様々な実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図７】本発明の様々な実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図８】本発明による方法の別の実施形態のフロー図である。
【図９】本発明の他の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図１０】本発明の他の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図１１ａ】本発明の他の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図１１ｂ】本発明の他の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す図である。
【図１２】本発明による方法の別の実施形態のネットワーク構成を概略的に示す図である。
【図１３ａ】本発明による装置の実施形態を概略的に示す図である。
【図１３ｂ】本発明による装置の実施形態を概略的に示す図である。
【図１４】本発明による方法及び装置の一実施形態を概略的に示す図である。
【図１５】図１４に関連して説明したログファイルの一実施形態の構造を概略的に示す図である。
【詳細な説明】
【００６５】
以下、本発明を、特定の実施形態と共に説明する。これらの特定の実施形態は、当業者によりよい理解を提供する役割を果たすが、決して添付の特許請求の範囲によって定義される本発明の範囲を制限するためのものではないことに留意されたい。特に、説明を通じて個別に説明されている実施形態は、相互に排他的ではない限り、組み合わせて更に実施形態を形成することができる。
【００６６】
図１は、本発明による方法の一実施形態のフロー図を示す。作成手順Ｓ２は、ユーザ又はコンピュータシステムにデータエンティティの導出バージョン１６を作成させるために提供される。ユーザは、導出バージョン１６を自発的に作成することができ、この目的を達成するために、ユーザインターフェイスが提供されてもよい。また、ユーザがデータエンティティの基本バージョン１２を変更するとすぐに、作成手順Ｓ２をコンピュータ手段によって動作させてもよい。したがって、作成手順Ｓ２は、ソフトウェア構成要素などのコンピュータ手段によって、自動的に動作させることができる。作成手順Ｓ２は、いずれにせよ、コンピュータで実施される作成手順である。
【００６７】
作成手順Ｓ２は、Ｓ２２でデータエンティティの基本バージョン１２に対して１以上のオペレーション１４を実行することによって行われる。オペレーション１４は、データエンティティを使用するソフトウェアアプリケーションとユーザとの対話中いつでも発生し得る。データエンティティは、１組の設定ファイル、レジストリエントリ若しくはライブラリ、又はドキュメントファイルとすることができる。オペレーション１４は、ソフトウェアアプリケーションをサポートするデータに対する情報の変更、更新、削除、又は追加のための必要性が生じると、ソフトウェアプログラムの実行中に行われてもよい。この場合には、データはデータエンティティである。
【００６８】
１以上のオペレーション１４がＳ２２で実行されると、これらのオペレーション１４は、後に取り出すために、Ｓ２４で格納される。Ｓ２４での１以上のオペレーション１４の格納は、各オペレーション１４が実行された後、又は１以上のアクセスされる記憶装置と行われる入出力交換を監視しているソフトウェア構成要素によってこのオペレーション１４が行われるときに、行うことができる。
【００６９】
作成手順Ｓ２は、Ｓ２６で１以上のオペレーション１４を受け付けて、導出バージョン１６を作成することも含む。Ｓ２６でのオペレーション１４の受け付けは、原子的プロセスを形成し得る。Ｓ２６の受け付けのプロセスが実行されると、オペレーション１４をマージするか、又は一連のオペレーション１４の受け付けの全体的な結果に如何なる影響も与えないオペレーション１４を削除することによって、オペレーションの数を低減するために、例えば変更など、オペレーション１４の内容を分析することができる。少なくとも２つの変更を含む複数のオペレーション１４は、場合によっては、その内容が基本バージョン１２の内容と同じである導出バージョン１６、又はその内容が導出バージョン１６の内容と同じである更なる導出バージョン２０に全体的につながる場合がある。これは、少なくとも２つの変更が互いに相殺する場合に起こる。その場合、少なくとも２つの変更を含む複数のオペレーション１４は、データ自体に任意の変更を加えることなく、新しいバージョンを作成するオペレーションと等価である。
【００７０】
また、図１に示す本発明の実施形態は、第１のアドレスを介して導出バージョン１６へのアクセスを提供するための提供手順Ｓ４も含む。第１のアドレスは、基本バージョン１２、及び基本バージョン１２に基づいてＳ４２で導出バージョン１６の再構築を可能にするオペレーション１４の第２のアドレスにマッピングされている。
【００７１】
非限定的な例として、データエンティティは、オペレーティングシステムを構成する全てのデータによって構成されていてもよい。この特定の場合には、サーバ１０に、オペレーティングシステムの基本バージョン１２を提供することができる。仮想化プロセス中、１人のユーザのために、オペレーティングシステムが開始されると、サーバのプロセッサ及びＲＡＭにおいて対応するプログラムが実行され、サーバメモリ１０に格納されるデータに加えられる変更であるすべてのオペレーション１４が傍受され、記録される。同様に、プロセッサ及びＲＡＭにおいて実行されるオペレーティングシステムがメモリの特定のブロックにデータを要求すると、ソフトウェア構成要素が、Ｉ／Ｏ要求を傍受し、Ｉ／Ｏ要求を傍受する機能を有するソフトウェア構成要素は、特定の要求されたブロックが変更されたことを検出した場合に、記録された変更１４に基づいて、変更された情報を戻す。
【００７２】
これによって、１つのサーバにおいて複数のオペレーティングシステムを実行するのに必要なメモリの相当な低減が可能になる。
【００７３】
図２ａは、本発明による方法の一実施形態のネットワーク構成を概略的に示す。基本バージョン１２は、データストレージユニット１０に格納されている。この例示の実施形態においては、２人のユーザが２つのクライアント端末４ａ、４ｂにアクセスし、それぞれ、データエンティティにアクセスし、データエンティティを変更して、基本バージョン１２に基づいてユーザ固有の導出バージョン１６を作成する。任意の数のクライアントを提供することができる。
【００７４】
クライアント端末４ａ、４ｂと基本バージョン１２がストレージユニット１０に格納されているデータエンティティとの間の対話は、透過的である。このことは、各クライアント端末４ａ、４ｂが、ストレージユニット１０に格納された状態のデータエンティティにアクセスしていると認識するが、実際には、クライアント端末４ａ、４ｂの間で基本バージョン１２が共有されており、ユーザ固有の導出バージョンＭａ、Ｍｂ１４を使用して、導出バージョン１６を再構築することを意味する。オペレーションＭａ１４及びＭｂ１４は、ストレージユニット８ａ、８ｂにそれぞれ格納される。クライアント端末４ａ、４ｂとデータエンティティとの間の対話、すなわち、基本バージョン１２とオペレーションＭａ、Ｍｂ１４との対話は、ネットワーク６を介して行われる。
【００７５】
ネットワーク６は、ＦｉｂｒａＣｈａｎｎｅｌ−ｐｒｏｔｏｃｏｌ、ｉＳＣＳＩ、ＲＤＭＡ、又はＦｉｂｒｅＣｈａｎｎｅｌ  Ｈａｒｄｗａｒｅなどの任意のプロトコルに基づく、例えばストレージエリアネットワーク（ＳＡＮ）又はローカルエリアネットワーク（ＬＡＮ）など、任意の種類のネットワークとすることができる。
【００７６】
別の実施形態においては、データストレージユニット８ａ及び／又は８ｂは、データストレージユニット１０と同じであってもよい。更に別の実施形態においては、データストレージユニット８ａ及び／又は８ｂは、クライアント端末４ａ及び／又は４ｂ内にそれぞれ統合することができる。
【００７７】
図２ｂは、本発明による方法の別の実施形態のネットワーク構成を概略的に示す。
【００７８】
この実施形態においては、サーバコンピュータ１１が含まれ、本発明による方法の実行を担当するソフトウェアプログラム、ユニット、又は構成要素を保持する。ソフトウェアプログラム、ユニット、又は構成要素は、例えば、オペレーションを傍受することによって、基本バージョン１２に基づいてＳ２２で実行されるオペレーション１４を特定することを担当する。ソフトウェアプログラム、ユニット、又は構成要素は、更に、それらのオペレーション１４を格納することを担当する。また、ソフトウェアプログラム、ユニット、又は構成要素は、導出バージョン１６を作成するためにオペレーションが受け付けられると、マッピング情報を更新し、オプションとして、オペレーション１４を処理し、マージすることも担当する。最後に、ソフトウェアプログラム、ユニット、又は構成要素は、再構築によって導出バージョンへのアクセスを提供することを担当する。
【００７９】
サーバ１１上で動作しているソフトウェアプログラム、ユニット、又は構成要素は、システムの透過機能を実施する、すなわち、サーバ１１とデータストレージユニット１０、８ａ、８ｂとの間の入出力交換を処理して、それらをクライアント端末４ａ、４ｂに関して透過にするための仮想化コア構成要素として見ることができる。このために、ソフトウェアプログラム、ユニット、又は構成要素は、基本バージョン１２、オペレーション１４、及び基本バージョン１２及びオペレーション１４を一致させるためのマッピング情報（メタデータ）を介してメモリに格納された対応するデータが存在する間、導出バージョン１６に対応するプログラムを実行するための一時的な実行スペースを有することができる。
【００８０】
図２ａ及び図２ｂに示される実施形態においては、方法は、ネットワーク６を介してクライアント−サーバシナリオで実行される。あるいは、この方法は、単一のコンピュータ内で実行され得る。
【００８１】
図３は、本発明による方法の別の実施形態のネットワーク構成を概略的に示す。この実施形態において、基本バージョン１２ｘ、１２ｙは、それぞれ２つのストレージユニット１０ｘ、１０ｙに格納されている２つの部分、パート１及びパート２を含む。データエンティティと対話する第１のクライアント端末４ａは、基本バージョン１２の２つのパート１２ｘ、１２ｙを使用し、基本バージョン１２ｘ、１２ｙになされるそれぞれのオペレーションＭａ１４ｘ、１４ｙは、それぞれ２つのストレージユニット８ａｘ、８ａｙに格納される。
【００８２】
これに対して、クライアント端末４ｂは、すべてのそのオペレーションＭｂ１４を１つのストレージユニット８ｂに格納する。
【００８３】
図３のネットワーク構成は、基本バージョン１２及びオペレーション１４を単一のストレージユニットに格納する必要がないことを示す。基本バージョン１２に対応するデータを格納するために使用される複数のストレージユニット１０、及びオペレーション１４を格納するための複数のストレージユニット８があってもよい。
【００８４】
一実施形態においては、図２ｂに示すサーバ１１上で動作しているソフトウェアプログラム、ユニット、又は構成要素は、データストレージユニット１０ｘ、１０ｙ、８ａｘ、８ａｙ、及び／又は８ｂに格納される情報へのアクセス及び情報の制御を透過的に管理するために使用される。言い換えれば、ソフトウェアプログラム、ユニット、又は構成要素は、データエンティティの分散データ及びバージョンへの透過的なアクセス及びその制御を管理するために、仮想化構成要素であると見ることができる。
【００８５】
図４は、本発明の一実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す。基本バージョンＢＶ１２が表されている。３つの導出バージョン１６、ＤＶａ、ＤＶｂ、・・・、ＤＶ．．をそれぞれ作成するために、この基本バージョンＢＶ１２から、オペレーション１４の３つのシーケンス、シーケンスＭａ１、Ｍａ２、・・・、Ｍａｎ、シーケンスＭｂ１、Ｍｂ２、・・・、Ｍｂｎ、及びシーケンスＭ．．１、Ｍ．．２、・・・、Ｍ．．ｎが実行される。オペレーション１４の３つのシーケンスは、それぞれ一意の基本バージョン１２から開始する。
【００８６】
図５は、本発明の別の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す。この実施形態は、１つのオペレーション１４がオペレーション１４の複数のシーケンス又は分岐をもたらすという点で、図４の実施形態とは異なる。したがって、基本バージョンＢＶ１２から、複数の導出バージョンＤＶａ１、ＤＶａ２，・・・，ＤＶａｎ１６が一連のオペレーション１４から作成され、この場合、１つの動作Ｍａ１１４は、複数の導出バージョンＤＶａ１、ＤＶａ２，・・・，ＤＶａｎ１６のそれぞれにつながる共通の第１の変更１４である。
【００８７】
図６ａは、基本バージョンＢＶ１２、及び異なるバージョン（ｆｏｒｅｉｇｎ  ｖｅｒｓｉｏｎ）ＦＶ１８と呼ばれる別のバージョンから導出バージョンＤＶａ１６に至るオペレーション１４の論理的な構成を概略的に示す。オペレーションＭａ１’、Ｍａ２’，・・・，Ｍａｎ’１４とオペレーションＭａ１、Ｍａ２，・・・，Ｍａｎ１４との間でマージが行われる。
【００８８】
本発明の方法の別の実施形態におけるデータエンティティのバージョン間の関係を概略的に示す別の図である図６ｂに示すように、マージ後、オペレーションを受け付けて、導出バージョンＤＶａ１６を作成する前に、更にオペレーションＭａ．．１６を行うことができる。
【００８９】
図７は、本発明の別の実施形態におけるデータエンティティのバージョン１２、１４、１６間の論理的な関係を概略的に示す別の図である。この場合、１つの導出バージョンＤＶａ１６は、基本バージョンＢＶ１２になされるオペレーション１４に基づいて作成される。オペレーション１４の最初のシーケンスは、第１のオペレーションＭａ１１４が行われた後、オペレーション１４の２つの分岐又はサブシーケンス、すなわちオペレーションの分岐Ｍａ２、・・・、Ｍａｎ１４及びオペレーションの分岐Ｍａ２’、・・・、Ｍａｎ’１４に分割される。マージは、導出バージョンＤＶａ１６を作成するために、オペレーション１４のこれら２つの分岐間で行われる。
【００９０】
図８は、本発明による方法の別の実施形態のフロー図を示し、導出バージョン１６に基づいて更なる導出バージョン２０を作成するための更なる作成手順Ｓ６が提供される。この実施形態は、別の更なる導出バージョン２０から更なる導出バージョン２０を作成するように構成することができる。これは、導出バージョン１６、２０の再帰ベースの作成を提供する。一般に、バージョン１２、１６、２０は、先行バージョン（ａｎｔｅｃｅｄｅｎｔ  ｖｅｒｓｉｏｎ）を有していないか（バージョンは、このとき、基本バージョンであると言われる）、１つの先行バージョンを有するか、又は複数の先行バージョンを有する場合がある。
【００９１】
バージョン１２、１６、２０が複数の先行バージョンを有する場合には、これらの先行バージョンは、連続するバージョン（１つのバージョンが１つのバージョンにつながる）、バージョンのマージ（複数のバージョンがある時点で１つのバージョンにつながる）、又はバージョンの分割（１つのバージョンがある時点で複数のバージョンにつながる）、及びバージョンのマージ及び分割（複数のバージョンがある時点で複数のバージョンにつながる）を含み得る。各導出バージョン１６又は更なる導出バージョン２０は、子バージョンとして見ることができる別の更なる導出バージョン２０の基礎として働くことができる。
【００９２】
データエンティティの更なる導出バージョン２０を作成するための更なる作成手順Ｓ６は、Ｓ６２で導出バージョン１６に対して１以上の更なるオペレーション１４を実行することによって行われる。次いで、１以上の更なるオペレーション１４がＳ６４で格納される。最後に、手順Ｓ６は、Ｓ６６で１以上の更なるオペレーション１４を受け付けて、更なる導出バージョン２０を作成することを含む。
【００９３】
更なる導出バージョン２０へのアクセスを提供するための提供手順Ｓ８は、図１に示し提供手順Ｓ４に類似している。同様に、再構築ステップＳ８２は、図１に関連して示した再構築ステップＳ４２に類似している。しかし、基本バージョン１２からの再構築ステップＳ８２は、更に、先行バージョン１６，２０、すなわち、基本バージョン１２と更なる導出バージョン２０との間の中間であるバージョン１６、２０を使用して、更なる基本バージョン２０を再構築することを含む。
【００９４】
その点で、本発明による方法は、データエンティティの複数のバージョン１２、１６、２０を管理するための改訂制御システムを提供することができる。こうした改訂制御システムは、有用であり、技術開発、ソフトウェア開発、業務用及び法律文書のバージョニングの技術管理などの技術分野において適用可能である。
【００９５】
図９は、本発明の別の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示しており、ここでは、まず、基本バージョンＢＶ１２から導出バージョンＤＶａ、ＤＶｂ、・・・、ＤＶ．．１６を作成するために、一連のオペレーション１４が実行され、次いで、導出バージョンＤＶａ、ＤＶｂ、・・・、ＤＶ．．１６から更なる導出バージョンＤＶａ’、ＤＶｂ’、・・・、ＤＶ．．’２０を作成するために、他のオペレーションＭａ１、Ｍｂ１、・・・、Ｍ．．ｌ１４が実行される。
【００９６】
図１０は、更に別の実施形態を示しており、ここでは、一連の更なる導出バージョンＤＶａ’２０は、最終的に、それぞれ１つの更なる導出バージョン２０につながるオペレーションの一連の分岐Ｍａｌ、・・・、Ｍａｌ’、・・・、Ｍａｌ’’１４を実行することによって、１つの導出バージョンＤＶａ１６から作成される。
【００９７】
図１１ａは、本発明の別の実施形態におけるデータエンティティのバージョン間の論理的な関係を概略的に示す別の図を示しており、ここでは、更なる導出バージョンＤＶａ’２０は、基本バージョンＢＶ１２に対して実行され、導出バージョンＤＶａ１６につながるオペレーション１４から、前記導出バージョンＤＶａ１６に対して実行されるオペレーション１４から、及び別のバージョン、すなわち異なるバージョンＦＶ１８に対して実行されるオペレーション１４から作成される。オペレーション１４は、更なる導出バージョンＤＶａ’２０を作成するために図示のようにマージされる。
【００９８】
図１１ｂは、バージョン１２、１６、２０、及びオペレーション１４のわずかに異なる構成を示す。導出バージョンＤＶａ１６は、基本バージョンＢＶ１２になされるオペレーション１４から作成される。次いで、この導出バージョンＤＶａ１６から、オペレーションＭａ２、Ｍａ２’１４の２つの分岐が行われ、格納され、マージされ、受け付けられて、更なる導出バージョンＤＶａ’２０が作成される。
【００９９】
図１２は、本発明による方法の別の実施形態のネットワーク構成を概略的に示す図である。この実施形態では、クライアント端末４ｂが導出バージョン１６を再構築できるようにするために、メタデータｍＤ２４がストレージユニット２２に格納される。導出バージョン１６は、論理的な構成であり、当該構成は、データエンティティ、すなわち基本バージョン１２及びオペレーションＭｂ１４の状態に関するデータ、及び導出バージョン１６又は更なる導出バージョン２０へのアクセスをＳ４、Ｓ８で提供し、導出バージョン１６又は更なる導出バージョン２０をＳ４２、Ｓ８２で再構築するための第２のアドレスと第１のアドレスとのマッピングに関するメタデータｍＤ２４を含む。
【０１００】
メタデータｍＤ２４は、クライアント端末４ｂに直接リンクされているものとして図１２に示されている。これは、１つのオプションにすぎない。他のオプションは、メタデータｍＤ２４を使用したマッピングに基づく導出バージョン１６、２０の再構築を担当するソフトウェア構成要素を介して（例えば、図２ｂに示されるように、サーバ１１に格納される）メタデータｍＤ２４へのアクセスを提供する他の方法を含む。マッピング情報、すなわち、メタデータｍＤ２４は、例えば、オペレーション１４と同じデータストレージユニット８ａ、８ｂ、又は基本バージョン１２と同じデータストレージユニット１２に格納することができる。
【０１０１】
各導出バージョン１６、２０は、メタデータ２４、及びバージョン自体及びすべてのその先行バージョンのデータに基づいて再帰的に構築されるものとして見ることができる。
【０１０２】
図１３ａ及び図１３ｂは、本発明による装置の実施形態を概略的に示す図である。基本バージョンＢＶ１２を有するデータエンティティへのアクセスを提供し、データエンティティの導出バージョン１６の作成を可能にするように構成された装置３０は、基本バージョン１２に対して１以上のオペレーション１４を実行し、１以上のオペレーション１４を格納し、１以上のオペレーション１４を受け付けて、導出バージョン１６を作成することによって、データエンティティの導出バージョン１６を作成するように構成された作成ユニット３２を含む。装置３０は、基本バージョン１２、及び受け付けられた１以上のオペレーション１４に等しい、又は結果が等価の１以上のオペレーションの第２のアドレスにマッピングされた第１のアドレスを介して、導出バージョン１６へのアクセスを提供するように構成された提供ユニット３４も備える。導出バージョン１６へのアクセスを提供するステップは、基本バージョン１２、及び受け付けられた１以上のオペレーション１４に等しい、又は結果が等価の１以上のオペレーションに基づいて導出バージョン１６を再構築することによって実行される。
【０１０３】
図１３ｂに示す装置においては、導出バージョン１６から更なる導出バージョン２０を作成するために、又はより一般的には、別の更なる導出バージョン２０から更なる導出バージョン２０を作成するために、更なる作成ユニット３６が更に提供される。
【０１０４】
「ユニット」という用語が本明細書で使用される場合（例えば、「作成ユニット」、「提供ユニット」、「更なる作成ユニット」など）、ユニットの構成要素をどのように分散することができるか、及びユニットをどのように集めることができるかに関する制限はない。すなわち、ユニットの構成要素は、意図された機能をもたらすために、異なるソフトウェア又はハードウェア構成要素又はデバイスに分散することができる。複数の別個のユニットを、意図した機能を提供するために集めることもできる。
【０１０５】
図１４は、本発明による方法及び装置の一実施形態を示す。
【０１０６】
ストレージユニット８ａには、２つの一連のバージョンＶ１ａ、Ｖ１ｂ、Ｖ１ｃ、及びＶ２ａ、Ｖ２ｂが、格納され、制御される。一連のバージョンはそれぞれ、ログファイルを構成し、オペレーション１４（図示せず）及びメタデータ２４（図示せず）を含む。ストレージユニット８ａの一部分８ａ−１において、一連の３つのバージョン、Ｖ１ａ、Ｖ１ｂ、Ｖ１ｃが格納される。ストレージユニット８ａの別の部分８ａ−２には、一連の２つのバージョンＶ２ａ、Ｖ２ｂが格納される。これらのバージョンＶ１ａ、Ｖ１ｂ、Ｖ１ｃ、Ｖ２ａ、Ｖ２ｂは、制御ユニット３ａによって制御される。
【０１０７】
別のストレージユニット８には、１つの一連のバージョンＶ３ａ、Ｖ３ｂ、Ｖ３ｃが格納され、制御される。この一連のバージョンも、ログファイルを構成し、オペレーション１４（図示せず）及びメタデータ２４（図示せず）を含む。一連のバージョンＶ３ａ、Ｖ３ｂ、Ｖ３ｃは、より具体的には、ストレージユニット８の部分８−１に格納される。これらのバージョンＶ３ａ、Ｖ３ｂ、Ｖ３ｃは、制御ユニット３によって制御される。
【０１０８】
制御ユニット３ａ、３は、バージョンへのアクセス、すなわち、バージョンの内容へのアクセスを制御し、それらを管理する。バージョンを管理することは、バージョンの作成を制御することを含む。
【０１０９】
クライアント端末４ａ、４ｂはそれぞれ、制御ユニット３ａ、３によって制御されるバージョンにアクセスし、これらの制御ユニット３ａ、３と対話するための対話構成要素５ａ、５ｂを備える。クライアント端末４ａ、４ｂは、対話構成要素５ａ、５ｂを介してバージョンにアクセスする。クライアント端末４ａ、４ｂと制御ユニット３ａ、３との間の対話は、コンピュータネットワーク６（図４には示されていないが、他の図２、２ｂ、３、及び１２に図示）を介して達成することができ、又は、ストレージユニット８ａ、８ｂ及びクライアント端末４ａ、４ｂが単一コンピュータに格納されるハードウェア構成要素、又は単一コンピュータで実行されるソフトウェア構成要素である場合、単一コンピュータ内で達成することができる。
【０１１０】
各一連のバージョンは、ログファイルを構成し、ログファイルの機能は、オペレーション１４及びバージョン１６、２０を構成するメタデータ２４を格納することである。
【０１１１】
この実施形態において、ブロックは、ログファイルに格納される。ブロックを使用して、バージョンを作成するよう、オペレーションの原子的特徴及びオペレーションの受け付けを保証する。
【０１１２】
図１５は、図１４に関して説明したログファイルの一実施形態の構成を示す。ログファイル内のデータの異なるクラスが示されている。
【０１１３】
スーパーブロック２０２−１、２０２−２がログファイルに格納される。オペレーション４を受け付けて、導出バージョン１６又は更なる導出バージョン２０を作成することにある原子的プロセスの完了後、スーパーブロックの少なくとも１つが更新される。
【０１１４】
参照２０３−１、２０３−２により特定される別のデータの組は、ログファイルに格納される。これらのデータ２０３−１、２０３−２は、バージョンのメタデータ２４を含み、バージョンを再構築するための情報を取得することを可能にする。これらのデータ２０３−１、２０３−２は、マッピング関数、すなわち、第１のアドレスをマッピングする関数、バージョンの識別情報、及び第２のアドレス、すなわち、基本バージョン１２及びオペレーション１４の位置の識別情報、及び／又はバージョンに対応する実際の状態を再構築するために必要な先行バージョン１６、２０を符号化する。一実施形態において、これらのデータ片２０３−１、２０３−２は、ブロックレベルのマッピング関数を構成する。
【０１１５】
さらに、データ２０４−１、・・・、２０４−Ｎは、バージョン１２、１６、２０になされる変更であり得る実際のオペレーション１４を表すログファイルエントリに含めることができる。
【０１１６】
構成に応じて、ログファイルエントリに含まれるデータの一部は、上述したように、含まれていても含まれていなくてもよく、又は部分的に含まれているだけでもよい。実際のオペレーション１４は、例えば、別の場所に格納されてもよい。ログファイルエントリは、単一の場所に格納する必要はなく、代わりに、幾つかのデータストレージユニットに格納されてもよい。
【０１１７】
本発明は、オブジェクトベースの記憶装置に適用することもできる。ブロックデバイスに比べて、オブジェクトベースの記憶装置は、抽象レベルを上げる。論理的な配列においてそれらのインデックスによってアドレス指定されるブロックの論理的な配列の抽象化を提示する代わりに、オブジェクトストアは、オブジェクトの集まり、すなわち意味的に重要なデータエンティティの集まりとして表される。
【０１１８】
本発明を詳細な例に基づいて説明してきたが、これら詳細な例は、当業者により良い理解を提供するためのものにすぎず、本発明の範囲を制限するためのものではない。本発明の範囲は、むしろ、添付の特許請求の範囲によって定義される。
【図１】
2011501839.tif 000003
【図２ａ】
2011501839.tif 000004
【図２ｂ】
2011501839.tif 000005
【図３】
2011501839.tif 000006
【図４】
2011501839.tif 000007
【図５】
2011501839.tif 000008
【図６ａ】
2011501839.tif 000009
【図６ｂ】
2011501839.tif 000010
【図７】
2011501839.tif 000011
【図８】
2011501839.tif 000012
【図９】
2011501839.tif 000013
【図１０】
2011501839.tif 000014
【図１１ａ】
2011501839.tif 000015
【図１１ｂ】
2011501839.tif 000016
【図１２】
2011501839.tif 000017
【図１３ａ】
2011501839.tif 000018
【図１３ｂ】
2011501839.tif 000019
【図１４】
2011501839.tif 000020
【図１５】
2011501839.tif 000021
【国際調査報告】
2011501839.tif 000022
2011501839.tif 000023