(57)【特許請求の範囲】
【請求項１】
分散データ・ストレージ・システムにおけるデータ回復を向上させる方法であって、
前記分散データ・ストレージ・システム中の複数のサーバの各々を独立して走査するステップと、
前記独立して走査された１つまたは複数のサーバ中のデータ・ストレージ媒体が利用不可能かどうかを判定するステップと、
前記１つまたは複数のデータ・ストレージ媒体が利用不可能なせいで損失のリスクがあるデータを決定するステップと、
前記サーバの各々の中で損失のリスクがあると決定された前記データのうちから、損失に対して非常に脆弱なデータを識別するステップであって、前記識別された損失のリスクがあるデータについて他の前記サーバ中の当該データの複製物があるかを判定することを含む、前記非常に脆弱なデータを識別するステップと、
前記識別された損失のリスクがあるデータについて他の前記サーバ中の当該データの複製物から、前記損失に対して非常に脆弱な前記データの、１つまたは複数の一時複製物を作成するステップとを含む方法。
【請求項２】
損失のリスクがある前記データが、前記１つまたは複数の利用不可能なデータ・ストレージ媒体に記憶されたデータを含む、請求項１に記載の方法。
【請求項３】
少なくとも１つの一時複製物が、外部ストレージ・デバイスまたは固体ストレージ・デバイス上に作成される、請求項１または２に記載の方法。
【請求項４】
損失に対して非常に脆弱な前記データが、所定しきい値未満の数の複製物を有するデータを含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
損失に対して非常に脆弱な前記データが、未来の障害イベント中に前記データが失われる確率を計算することに基づいて決定される、請求項１ないし４のいずれかに記載の方法。
【請求項６】
損失に対して非常に脆弱な前記データが、未来の障害イベントの可能性に相関する１つまたは複数のファクタを考慮することに基づいて決定される、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記１つまたは複数のファクタが、前記データが記憶されているディスクの寿命、前記分散データ・ストレージ・システム中のシステム・コンポーネントの寿命、前記データに対する実行可能な複製物の数、前記データの読取りに関連するエラー率、のうちの少なくとも１つを含む、請求項６に記載の方法。
【請求項８】
前記１つまたは複数のファクタが、データ損失の確率、または前記データが前記データの１つもしくは複数の複製物から回復される可能性、に影響を及ぼす１つまたは複数のイベントを含む、請求項６または７に記載の方法。
【請求項９】
前記データに対する複製物の数が所定しきい値まで復元されたと決定されるのに応答して、作成される前記一時複製物の数が削減される、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
データ損失から回復するために一時複製物が使用される、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
分散データ・ストレージ・システムにおけるデータ回復を向上させるためのシステムであって、
前記分散データ・ストレージ・システム中の複数のサーバの各々を独立して走査するためのロジック・ユニットと、
前記独立して走査されたデータ・ストレージ・システム中の１つまたは複数のサーバ中のデータ・ストレージ媒体が利用不可能かどうかを判定するためのロジック・ユニットと、
前記１つまたは複数のデータ・ストレージ媒体が利用不可能なせいで損失のリスクがあるデータを決定するためのロジック・ユニットと、
前記サーバの各々の中で損失のリスクがあると決定された前記データのうちから、損失に対して非常に脆弱なデータを識別するためのロジック・ユニットとであって、前記識別された損失のリスクがあるデータについて他の前記サーバ中の当該データの複製物があるかを判定することを含む、前記非常に脆弱なデータを識別するためのロジック・ユニットと、
前記識別された損失のリスクがあるデータについて他の前記サーバ中の当該データの複製物から、前記損失に対して非常に脆弱な前記データの、１つまたは複数の一時複製物を作成するためのロジック・ユニットと、を備えるシステム。
【請求項１２】
損失のリスクがある前記データが、前記１つまたは複数の利用不可能なデータ・ストレージ媒体に記憶されたデータを含む、請求項１１に記載のシステム。
【請求項１３】
少なくとも１つの一時複製物が、外部ストレージ・デバイスまたは固体ストレージ・デバイス上に作成される、請求項１１または１２に記載のシステム。
【請求項１４】
損失に対して非常に脆弱な前記データが、所定しきい値未満の数の複製物を有するデータを含む、請求項１１ないし１３のいずれかに記載のシステム。
【請求項１５】
データ・ストレージ・システムにおけるデータ回復を向上させるためのコンピュータ・プログラムであって、
請求項１ないし１０のいずれかに記載の方法を前記分散データ・ストレージ・システムに実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される主題は、一般に、分散ストレージ・システムにおける信頼性を高めることに関し、より詳細には、分散ストレージ・システムにおける補助的な信頼性増大メカニズムのためのシステムおよび方法に関する。
【背景技術】
【０００２】
情報をいくらかのレベルの冗長性と共に記憶して、ハードウェア障害の場合にデータ損失を回避するのは、よく行われることである。この冗長性は、データを複写（もしくは複製）(duplicating (or replicating))することによって、または何らかの冗長性エンコーディング（例えばパリティ・ブロックもしくは消去コード）を追加することによって、導入することができる。冗長性データまたはデータ複製物(data replicas)は、いくつかの領域にわたって記憶されてよく、それにより、領域障害の場合にデータ回復が可能である。
【０００３】
複製物は、異なる複数のディスク、サーバ、ラック、または地理的に離れた場所に記憶されてよく、したがって、単一のディスク、サーバ、ラック、さらにはデータ・センタ全体に障害が発生しても、データ損失が引き起こされないことになる。このように、組み込まれた冗長性は、システムを、同時障害に対して回復力のあるものにする。それにもかかわらず、システムは、一定数の同時障害にしか耐えることができない。例えば、３重複製を伴うストレージ・システムは、２重のディスク障害からは保護されるが、３重のディスク障害からは保護されない。
【０００４】
複製を介して信頼性を提供するために、障害が発生すると、システムは、障害が発生したハードウェアに位置していたデータを、残りの複製物から、所定の冗長性レベルまで復元する。復元中、システムは追加の障害を被りやすく、したがって、復元ができるだけ素早く実施されることが重要である。しかし、復元プロセスに関係するすべてのデータが等しく脆弱であるとは限らない。例えば、より少数の複製物を有するデータは、一般に、より脆弱であると考えることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
より脆弱なデータの回復を動的に優先する回復方式に基づいて、ストレージ・システムの信頼性を高めることが望ましいであろう。このような回復方式を実施することは、通常、容易に可能ではない。というのは、ストレージ・システム中の回復コンポーネントは、ハードウェア中で実装される場合があるか、または、システムの回復メカニズムに対する修正を禁止するライセンス条件に従わなければならない場合があるからである。上記の欠点を克服するシステムおよび方法が必要である。したがって、前述の問題に対処することが、当技術分野で必要とされている。
【課題を解決するための手段】
【０００６】
要約の目的で、本明細書では、いくつかの態様、利点、および新規な特徴について述べている。いずれか１つの特定の実施形態に従ってこのような利点のすべてを達成できるとは限らないことを理解されたい。したがって、開示される主題は、本明細書で教示または示唆される場合のあるすべての利点を達成することなく、１つの利点または１群の利点を達成または最適化するようにして、具体化または実施される場合もある。
【０００７】
第１の態様から見ると、本発明は、データ・ストレージ・システムにおけるデータ回復を向上させる方法を提供する。この方法は、データ・ストレージ・システム中の１つまたは複数のデータ・ストレージ媒体が利用不可能かどうかを判定するステップと、この１つまたは複数のデータ・ストレージ媒体が利用不可能なせいで損失のリスクがあるデータを決定するステップと、損失のリスクがあると決定されたデータのうちから、損失に対して非常に脆弱なデータを識別するステップと、損失に対して非常に脆弱なデータの、１つまたは複数の一時複製物を作成するステップとを含む。
【０００８】
さらに他の態様から見ると、本発明は、データ・ストレージ・システムにおけるデータ回復を向上させるためのシステムを提供する。このシステムは、データ・ストレージ・システム中の１つまたは複数のデータ・ストレージ媒体が利用不可能かどうかを判定するためのロジック・ユニットと、この１つまたは複数のデータ・ストレージ媒体が利用不可能なせいで損失のリスクがあるデータを決定するためのロジック・ユニットと、損失のリスクがあると決定されたデータのうちから、損失に対して非常に脆弱なデータを識別するためのロジック・ユニットと、損失に対して非常に脆弱なデータの、１つまたは複数の一時複製物を作成するためのロジック・ユニットとを備える。
【０００９】
さらに他の態様から見ると、本発明は、データ・ストレージ・システムにおけるデータ回復を向上させるためのコンピュータ・プログラム製品を提供する。このコンピュータ・プログラム製品は、処理回路によって読取り可能なコンピュータ可読ストレージ媒体であって、本発明のステップを実施する方法を実施するために処理回路によって実行される命令を記憶したコンピュータ可読ストレージ媒体、を備える。
【００１０】
さらに他の態様から見ると、本発明は、コンピュータ可読媒体に記憶され、ディジタル・コンピュータの内蔵メモリにロード可能な、コンピュータ・プログラムを提供する。このコンピュータ・プログラムは、このプログラムがコンピュータ上で実行されたときに本発明のステップを実施するためのソフトウェア・コード部分を含む。
【００１１】
１つまたは複数の実施形態によれば、１つまたは複数のロジック・ユニットを備えるシステムが提供される。この１つまたは複数のロジック・ユニットは、上に開示された方法に関連する機能および動作を実施するように構成される。さらに別の実施形態では、コンピュータ可読プログラムを有するコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品が提供される。このコンピュータ可読プログラムは、コンピュータ上で実行されたとき、上に開示された方法に関連する機能および動作をコンピュータに実施させる。
【００１２】
上に開示された実施形態の１つまたは複数、およびそれに加えていくつかの代替形態を、添付の図を参照しながら以下にさらに詳細に提供する。しかし、開示される主題は、開示されるいずれか特定の実施形態に限定されない。
【００１３】
次に、後続の図に示すような好ましい実施形態に関して、本発明について単なる例として述べる。
【図面の簡単な説明】
【００１４】
【図１】１つまたは複数の実施形態による、かつ従来技術による、かつ本発明の好ましい一実施形態が実現され得る、例示的なデータ・ストレージ・システムを示す図である。
【図２】本発明の好ましい一実施形態による、分散ストレージ・システムにおける信頼性を高める例示的な方法の流れ図である。
【図３】開示されるシステムおよび方法が動作できる、かつ従来技術による、かつ本発明の好ましい一実施形態が実現され得る、ハードウェア環境のブロック図である。
【図４】開示されるシステムおよび方法が動作できる、かつ従来技術による、かつ本発明の好ましい一実施形態が実現され得る、ソフトウェア環境のブロック図である。
【発明を実施するための形態】
【００１５】
異なる複数の図で同じ番号によって参照される特徴、要素、および態様は、１つまたは複数の実施形態による、同じ、等価な、または類似の特徴、要素、または態様を表す。
【００１６】
以下では、様々な実施形態に関する完全な記述を提供するために、多くの具体的な詳細を示す。本発明のいくつかの好ましい実施形態は、これらの具体的な詳細なしで、または細部におけるいくらかの差異を伴って、実践することができる。場合によっては、他の態様を曖昧にしないために、いくつかの特徴についてはそれほど詳細には述べない。各要素または特徴に関連する詳細レベルは、ある特徴が他の特徴に勝って新規または重要であると認定するものと解釈されるべきではない。
【００１７】
図１を参照すると、データ・ストレージ・システム１００が提供され、このシステムでは、サーバ１１０を有する第１の場所で、データ１１２がデータ・ストレージ媒体Ａに記憶される。データ回復のための１次手段を提供するために、サーバ１２０を有する場所２で、データ１１２のコピーをストレージ媒体Ｂにわたって複製することができる。このようにして、データ・ストレージ・システム１００中で１次回復システムを提供することができる。１次回復システムに加えて、１次データ回復インフラストラクチャの上の２次メカニズムを、データ・ストレージ・システム１００に対して適所に導入することができる。
【００１８】
２次メカニズムは、補助コンポーネントによって実装されてよく、この補助コンポーネントは、例えば、データ・ストレージ・システム１００の１次データ回復手段を変更することなく、システムの既存のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を使用して、データ・ストレージ・システム１００を監視してデータの追加的な一時複製物を作成する。したがって、損失データを復元または回復するのに使用される１次データ回復インフラストラクチャと共に、２次メカニズムを設けて全体的なデータ回復動作の信頼性を改善することができる。
【００１９】
図２を参照すると、２次メカニズムを実施して、データ・ストレージ・システム中のサーバを独立して走査し、サーバ（または、サーバによって利用されるディスクなどのストレージ媒体）が利用可能かどうかを判定することができる（Ｓ２１０、Ｓ２２０）。例えば、サーバまたはディスクの１つが利用可能でない場合は、利用不可能なサーバまたはディスクに記憶されているものとされるリスク・データ（例えばデータ・オブジェクト）のリストが得られる。このリストを使用して、データ損失につながる可能性のある障害を決定することができる（Ｓ２３０）。いくらかのデータが失われたと判定された場合（Ｓ２４０）は、他のどこかに記憶された、データの一時コピーまたは複製物から、失われたデータを復元することができる（Ｓ２５０）。
【００２０】
本発明の好ましい一実施形態では、リスクにさらされているデータのリストを検査して、リスト中で識別された、リスクにさらされているデータと、以前の障害（例えば、まだ回復プロセスを施されている場合のある障害）に関連する、リスクにさらされているデータについての他のリストとの間に、交点があるかどうかを判定することができる。この検査は、非常に脆弱なデータを決定する（Ｓ２６０）助けとなる。交点がある場合は、非常に脆弱なデータの追加的な一時コピーまたは複製物を作成することができる（Ｓ２７０）。一実装形態では、リスクにさらされているデータをうまく回復することができた場合は、一時複製物は除去されてよい。そうでない場合は、一時複製物は、データ・ストレージ・システムの信頼性の維持または向上のために、かつデータ回復のために、必要なら保持されてよい。
【００２１】
後でさらに詳細を提供するが、ほとんどの状況では、非常に脆弱なデータ（例えば、複数の障害の影響を受けるデータ）のパーティションは、単一の障害の影響を受けるデータと比較して、ごくわずかである。したがって、非常に脆弱なデータの追加的な一時複製物を作成するのに必要な時間もまた、ごくわずかである。データ・オブジェクトの脆弱性は、例えば、特定のデータ・オブジェクトが未来の障害の間に失われ得る確率に基づいて、計算することができる。このような脆弱性は、データ・オブジェクトの残りの複製物の数を決定することによって、または、障害の可能性に相関し得る何らかのプロパティ（例えば、データ・オブジェクトが記憶されたディスクの寿命）を考慮することによって、概算することができる。
【００２２】
本発明の好ましい一実施形態では、データ・ストレージ・システム１００における脆弱性は、何らかのレベルの階層に関連するものとすることができ、この場合、階層は、どのデータが他のデータよりも脆弱であるかを定義することができる。先に述べたように、データ・ストレージ・システム１００中では、非常に脆弱なデータの量は、脆弱なまたは脆弱でないデータの量よりも、かなり少ないであろう。したがって、一実装形態では、非常に脆弱なデータに対する一時複製物が最初に作成されるなら、データ・ストレージ・システム１００の信頼性を、比較的低いコストで著しく改善することができる。
【００２３】
非常に脆弱なデータを複製することに関連するコストが比較的低い理由は、システム中のすべての脆弱なデータまたはすべてのデータを無差別に複製する代替形態を考えることによって、よりよく理解されるであろう。当然、非常に脆弱なデータを一時的に複製することは、要する時間およびリソースが少なくてすむ。例えば、データ・ストレージ・システム１００中の５％のデータのみが非常に脆弱であると見なされる場合は、この５％の一時複製物を作成することは、比較的高速かつ安価であろう。非常に脆弱なデータが複製されれば、その後で、より脆弱でないデータが複製されてよい。
【００２４】
述べたように、どのデータが非常に脆弱化であるかに関する決定は、実装形態に応じて、一定数の障害を被ったデータを履歴情報またはリアルタイム情報に従って検出することによって行うことができる。例えば、障害の数が所定の障害許容度しきい値を超える場合、当該データは非常に脆弱であると見なすことができる。階層手法を使用する場合、本発明の好ましい一実施形態では、異なるデータまたはデータ・セットに対して様々な脆弱性レベルを決定することができ、したがって、非常に脆弱なデータは、最も多数の障害に関連するデータになる。
【００２５】
例示的な一実装形態では、ストレージ・システム全体にわたり最も多数の失われた複製物を有するデータは、非常に脆弱なデータと見なすことができる。本発明の１つまたは複数の好ましい実施形態では、様々なファクタに基づいて脆弱性レベルを計算するために、方式（またはアルゴリズム）を利用することができる。例えば、脆弱性は、データおよび複製物を記憶することに関係するデータ・ストレージ・システム１００のコンポーネント（例えば、ディスク、サーバなど）の障害率、データ・ストレージ・システム１００全体にわたるコンポーネント障害のリアルタイム検出、これらのデータ・ストレージ・コンポーネントもしくは類似のデータ・ストレージ・コンポーネントについて収集された履歴的な障害データ、または、それぞれのデータ・ストレージ・コンポーネントの障害率に関して製造業者から提供された統計、に基づいて計算することができる。
【００２６】
先に述べたように、本発明のいくつかの好ましい実施形態では、非常に脆弱なデータは、システム・コンポーネントの関連の障害率以外のファクタに基づいて決定することができる。例えば、脆弱性は、以下の測定基準の１つまたは複数によって測定することができる。すなわち、システム・コンポーネントの寿命、データに対する実行可能な複製物の数、データの読取りに関連するエラー率、または、データ損失の確率に影響を及ぼすかもしくはデータがその複製物から回復される可能性に影響を及ぼすであろう他の任意のファクタ、である。
【００２７】
非常に脆弱なデータを決定するのに利用されるメカニズムと、データ脆弱性の階層とにかかわらず、非常に脆弱なデータが決定されると、非常に脆弱なデータの、１つまたは複数の複製物が作られて、１つまたは複数のデータ・ストレージ媒体（例えば、テープ、ハード・ドライブ・ディスク、不揮発性メモリ、固体ストレージ・デバイスなど）に記憶されてよい。データ・ストレージ媒体は、直接に、またはアプリケーション・プログラミング・インタフェース（ＡＰＩ）を介して、または他の方法で、データ・ストレージ・システム１００中の既存のデータ回復インフラストラクチャとの関係でアクセス可能とすることができる（ただし別個に位置することが望ましい）。
【００２８】
上記のアプローチに基づいて、損失リスクが最も高い非常に脆弱なデータが、最初にコピーされる。実装形態に応じて、残りの脆弱なデータがそれぞれの損失リスクに従って階層方式でコピーされてよく、したがって、コピーされていない脆弱なデータがそれ以上残っていない状態になるまで、より脆弱なデータが、より脆弱でないデータよりも前にコピーされるようになる。実装形態に応じて、いくらかのデータの脆弱性ステータスが更新されるのに伴い、対応するコピーの数が動的な方式で更新されてよい。例えば、もはやリスクにさらされているかまたは脆弱な状態にあるとは考えられないデータに対するコピーの数は、削減されてよい。
【００２９】
有利なことに、上記の複製物管理方式に基づいて、非常に脆弱であると識別されたデータに関連する損失の可能性を、比較的短時間かつ比較的低コストで、著しく低減することができる。本発明の１つまたは複数の好ましい実施形態では、データのコピー、またはデータの複製物が失われた場合、このコピーまたは複製物を他の複製物から復元することができる。失われたデータ・コピーは、管理エンティティによって生成された要求があった時に回復されてもよく、または、基礎をなすデータ回復インフラストラクチャの中に失われたコピーがあればそれらを復元するためにバックグラウンドで定期的に実行されるメカニズムによって回復されてもよい。
【００３０】
本発明の好ましい一実施形態では、脆弱なデータの複製物を作ることに関連する複製プロセスは、１次データ回復システムの外部にあり、したがって、データの複写コピーは、ストレージ・システムに一体化された部分ではない。上記では、本発明の１つまたは複数の好ましい実施形態により複製方法について論じた。以下では、２つの説明的な例によって、特定の特徴および実装形態を提供する。しかし、以下の特徴が、例示的な性質のものであり、特許請求される主題の範囲をいずれか特定の詳細に限定する意図がないことは、留意に値する。
【００３１】
２ウェイ複製（two-way replication）の例では、データ複製物が、ＲＡＩＤ（Redundant Array of Independent Disks）ＲＡＩＤ５デバイス上に配置される。ＲＡＩＤ５デバイスはローカルとすることができ、２ウェイ複製はグローバルとすることができる（例えばワイド・エリア・ネットワーク（ＷＡＮ）を介して実施される）。この例では、単一ディスクの障害は、ＲＡＩＤ５デバイスの内部メカニズムによって扱われてよい。データは利用可能なままなので、グローバル複製プロセスはこのプロセスに干渉しないものとすることができる。しかし、異なるＲＡＩＤ５デバイス中で別のディスクが障害を起こした場合は、回復プロセスが、独立して、かつ並列で稼働することができる。
【００３２】
上の例では、２つの劣化したＲＡＩＤアレイの交点に記憶されたデータは、システム中の他のデータよりもリスクにさらされている。ＲＡＩＤデバイスの回復プロセスは、極度に長く、またシステム中のディスクのサイズに伴って増大するので、このシナリオは特に関連がある。交点にあるデータに対する安定化複製物を作ることは、各ＲＡＩＤデバイスの回復を完了させるのに必要な時間よりもずっと速く完了させることができる。したがって、安定化コピーを作ることで、データ損失の確率を大きく低減することができる。
【００３３】
３ウェイ複製（three-way replication）の例では、２つのディスクの障害は、データ損失を引き起こすことはないであろうが、障害が発生した両方のディスク上に複製物を有していたデータを危険にさらす可能性がある（すなわち、データは、残った単一の複製物を有し、最後のディスクが障害を起こした場合には失われる可能性がある）。追加の一時的な安定化複製物を作成することでデータが保護されることになり、したがって、回復プロセス中に第３の障害が発生した場合でもデータは失われないことになる。３ウェイ複製を伴う分散システムでは、２つのディスクの交点にあるデータの量は、両方のディスク上のデータの総量よりもはるかに少ない。したがって、ディスク全体の回復のプロセスは非常に時間がかかるであろうが、安定化複製物を作成するための時間は短いはずである。したがって、データが実際に損失のリスクにある時間帯は、最小限である。
【００３４】
Ｏｐｅｎｓｔａｃｋ  Ｓｗｉｆｔは、リスクにさらされている異なるレベルのデータ間を区別せず回復に優先順位を付けないシステムの例である。Ｏｐｅｎｓｔａｃｋは、データを外的に識別することを可能にするインタフェースを有する。上で論じた方式を採用することによって、オープン・ソース・コミュニティにコードを寄付する必要なしにＳＷＩＦＴクラスタの信頼性を高めることができ、それでもなお、現在のオープン・ソース回復メカニズムからの利益を受けることができ、また、共通コード・ベースに追加される場合のあるどのような更新またはバグ修正からの利益も受けることができる。「複製物(replica)」または「複写物(duplicate)」、および「複製(replication)」または「複写(duplication)」は、本明細書では交換可能に使用されており、ターゲット・データの追加コピーを作るプロセスを指すことに留意されたい。
【００３５】
上記の方法を使用すると、非常に脆弱なデータの量は他のすべてのデータに対して相対的に少ないので、非常に脆弱なデータを複製することによって、システムの信頼性の維持における劇的な改善を、比較的低レベルのオーバヘッドを介して達成することができる。さらに、有利なことに、１次データ回復メカニズムはシステム・ハードウェア全体にわたって同種のままであってよく、異種ハードウェアを利用して２次複製層を実装して、必要時にいくらかのデータへのより高速なアクセスをサポートすることができる（例えば、非常に脆弱なデータの一時コピーを、アクセス時間の速い固体デバイスに記憶することができる）。
【００３６】
本明細書における「実施形態」、「一実施形態」、「１つまたは複数の実施形態」などの言及は、記述される特定の要素、特徴、構造、または特性が、開示される主題の少なくとも１つの実施形態に含まれることを意味する。本明細書でそのような言葉が現れる場合、これは、同じ実施形態を指すと特に解釈されるべきではなく、また、そのような言葉が、論じられる特徴または要素に関して相互に排他的な実施形態を指すと解釈されるべきではない。
【００３７】
種々の実施形態で、特許請求される主題は、ハードウェアとソフトウェアの両方の要素の組合せとして実現されてもよく、また別法として、完全にハードウェアの形で、または完全にソフトウェアの形で実現されてもよい。さらに、本明細書で開示されるコンピューティング・システムおよびプログラム・ソフトウェアは、本明細書で企図される結果を達成する方法およびプロセスを実施するために実行されるハードウェア・コンポーネントまたはロジック・コードの点から提示され得る被制御コンピューティング環境を含む場合もある。これらの方法およびプロセスは、汎用コンピューティング・システムまたはマシンによって実施されたとき、汎用マシンを専用マシンに変換する。
【００３８】
図３および４を参照すると、例示的な一実施形態によるコンピュータ・システム環境は、ハードウェア環境１１１０およびソフトウェア環境１１２０で構成されてよい。ハードウェア環境１１１０は、ソフトウェア環境１１２０のコンポーネントのための実行環境を提供する、ロジック・ユニット、回路、または他の機械および機器を備える場合がある。そして、ソフトウェア環境１１２０は、基礎をなす動作設定および構成を含めた、ハードウェア環境１１１０の様々なコンポーネントのための実行命令を提供することができる。
【００３９】
図３を参照すると、本明細書で開示されるアプリケーション・ソフトウェアおよびロジック・コードは、例示的なハードウェア環境１１１０によって表される１つまたは複数のコンピューティング・システムを介して実行される機械可読コードの形で実現されてよい。図示のように、ハードウェア環境１１１０は、システム・バス１１００を介して１つまたは複数のストレージ要素に結合されたプロセッサ１１０１を備えることができる。ストレージ要素は、例えば、ローカル・メモリ１１０２、ストレージ媒体１１０６、キャッシュ・メモリ１１０４、または他の機械使用可能もしくはコンピュータ可読媒体を含み得る。本開示のコンテキスト内では、機械使用可能またはコンピュータ可読ストレージ媒体は、プログラム・コードを収録、記憶、通信、伝搬、または移送するのに利用できる、任意の記録可能な物品を含み得る。
【００４０】
コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁、赤外線、または半導体の、媒体、システム、装置、またはデバイスであってよい。コンピュータ可読ストレージ媒体はまた、限定ではないが、制定法で認められた主題と見なされる範囲で、伝搬媒体中で実現されてもよい。コンピュータ可読ストレージ媒体の例は、適切な場合に、半導体もしくは固体メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、固定磁気ディスク、光ディスク、または搬送波を含み得る。光ディスクの現在の例は、コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク・リード／ライト（ＣＤ−Ｒ／Ｗ）、ディジタル・ビデオ・ディスク（ＤＶＤ）、高精細度ビデオ・ディスク（ＨＤ−ＤＶＤ）、またはＢｌｕ−ｒａｙ（ＴＭ）ディスクを含む。
【００４１】
一実施形態では、プロセッサ１１０１は、実行可能コードをストレージ媒体１１０６からローカル・メモリ１１０２にロードする。キャッシュ・メモリ１１０４は、コードが実行のためにロードされる回数を削減する助けとなる一時ストレージを提供することによって、処理時間を最適化する。１つまたは複数のユーザ・インタフェース・デバイス１１０５（例えば、キーボード、ポインティング・デバイスなど）および表示画面１１０７が、例えば、直接に、または介在するＩ／Ｏコントローラ１１０３を介して、ハードウェア環境１１１０中の他の要素に結合されてよい。ネットワーク・アダプタなどの通信インタフェース・ユニット１１０８が設けられてよく、それにより、ハードウェア環境１１１０は、介在する私設または公衆ネットワーク（例えばインターネット）を介して、ローカルのまたはリモートに位置するコンピューティング・システム、プリンタ、およびストレージ・デバイスと通信することができる。有線またはワイヤレス・モデムおよびイーサネット（Ｒ）・カードは、例示的なタイプのネットワーク・アダプタのうちの少数である。
【００４２】
ハードウェア環境１１１０が、いくつかの実装形態では、上記のコンポーネントのいくつかもしくはすべてを備えない場合もあり、または、補助機能もしくは有用性を提供するための追加コンポーネントを備える場合もあることは、留意に値する。企図される使用および構成に応じて、ハードウェア環境１１１０は、デスクトップまたはラップトップ・コンピュータなどのマシンであってもよく、あるいは、セットトップ・ボックス、パーソナル・ディジタル・アシスタント（ＰＤＡ）、パーソナル・メディア・プレーヤ、モバイル通信ユニット（例えばワイヤレス電話機）、または、情報処理能力もしくはデータ記憶能力を有する他の類似のハードウェア・プラットフォームなどの、組込みシステムに任意選択で組み入れられる、他のコンピューティング・デバイスであってもよい。
【００４３】
いくつかの実施形態では、通信インタフェース１１０８は、プログラム・コードを含めた様々なタイプの情報を表すアナログまたはディジタル・データ・ストリームを搬送するディジタル、電気、電磁、または光学信号を送受信することによって１つまたは複数のコンピューティング・システムと通信する手段を提供するための、データ通信ポートとしての役割を果たす。通信は、ローカルもしくはリモート・ネットワークによって確立されてもよく、または別法として、限定ではないが搬送波を介した伝搬を含めた、無線もしくは他の媒体を介した伝送によって確立されてもよい。
【００４４】
ここで提供される、図示のハードウェア要素上で実行される開示されるソフトウェア要素は、例示的な性質である論理的または機能的関係に従って定義される。しかし、これらの例示的なソフトウェア要素を介して実施されるそれぞれの方法はまた、例えば、構成されプログラムされるプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、およびディジタル信号プロセッサ（ＤＳＰ）を介して、上記のハードウェア要素中でエンコードされてもよいことに留意されたい。
【００４５】
図４を参照すると、ソフトウェア環境１１２０は一般に、１つまたは複数のハードウェア環境１１１０上で実行される、システム・ソフトウェア１１２１とアプリケーション・ソフトウェア１１２２とを含む２つのクラスに分割され得る。一実施形態では、ここで開示される方法およびプロセスは、システム・ソフトウェア１１２１として、アプリケーション・ソフトウェア１１２２として、またはこれらの組合せとして実現されてよい。システム・ソフトウェア１１２１は、オペレーティング・システム（ＯＳ）または情報管理システムなど、どのように機能し情報を処理するかをハードウェア環境１１１０中の１つまたは複数のプロセッサ１１０１（例えばマイクロコントローラ）に命令する制御プログラムを含み得る。アプリケーション・ソフトウェア１１２２は、以下のものに限定されないが、プロセッサ１１０１による読取り、分析、または実行ができる、プログラム・コード、データ構造、ファームウェア、常駐ソフトウェア、マイクロコード、または、他の任意の形の情報もしくはルーチンを含み得る。
【００４６】
言い換えれば、アプリケーション・ソフトウェア１１２２は、マシン、コンピュータ、または任意の命令実行システムによって使用されるかまたはそれに関連して使用されるプログラム・コードを提供する、機械使用可能またはコンピュータ可読ストレージ媒体の形で、コンピュータ・プログラム製品に組み込まれたプログラム・コードとして実現されてよい。さらに、アプリケーション・ソフトウェア１１２２は、ストレージ媒体１１０６からローカル・メモリ１１０２にロードされた後でシステム・ソフトウェア１１２１の最上部で実行される１つまたは複数のコンピュータ・プログラムを含み得る。クライアント−サーバ・アーキテクチャでは、アプリケーション・ソフトウェア１１２２は、クライアント・ソフトウェアおよびサーバ・ソフトウェアを含み得る。例えば、一実施形態では、クライアント・ソフトウェアは、サーバ・ソフトウェアが実行されるサーバ・コンピューティング・システムに対して別個であり分離可能な、クライアント・コンピューティング・システム上で実行されてよい。
【００４７】
ソフトウェア環境１１２０はまた、ローカルまたはリモート・コンピューティング・ネットワークを介して利用可能なデータにアクセスするためのブラウザ・ソフトウェア１１２６を備えることもできる。さらに、ソフトウェア環境１１２０は、ユーザ・コマンドおよびデータを受け取るためのユーザ・インタフェース１１２４（例えばグラフィカル・ユーザ・インタフェース（ＧＵＩ））を備えることもできる。前述のハードウェアおよびソフトウェア・アーキテクチャおよび環境が例のためのものであることは、繰り返すに値する。したがって、１つまたは複数の実施形態は、任意のタイプのシステム・アーキテクチャ、機能的もしくは論理的プラットフォーム、または処理環境を介して実現されてよい。
【００４８】
また、ロジック・コード、プログラム、モジュール、プロセス、方法、および、各方法のそれぞれのプロセスの実施順序は、純粋に例示的であることも理解されたい。実装形態に応じて、プロセス、または基礎をなす任意のサブプロセスおよび方法は、本開示に別段の指示がない限り、任意の順序で、または同時に実施されてよい。さらに、限定を伴う別段の指定がない限り、本開示のコンテキスト内でのロジック・コードの定義は、いずれか特定のプログラミング言語に関係するかまたは限定されることはなく、分散型、非分散型、シングル、またはマルチプロセッシング環境で１つまたは複数のプロセッサ上で実行され得る、１つまたは複数のモジュールを含み得る。
【００４９】
当業者には理解されるであろうが、ソフトウェア実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含み得る。ソフトウェアもしくはハードウェアを含むか、またはソフトウェアとハードウェアの態様を組み合わせた、いくつかのコンポーネントは、本明細書では一般に「回路」、「モジュール」、または「システム」と呼ばれることがある。さらに、開示される主題は、コンピュータ可読プログラム・コードが組み入れられた１つまたは複数のコンピュータ可読ストレージ媒体において具体化されるコンピュータ・プログラム製品として実現されてよい。１つまたは複数のコンピュータ可読ストレージ媒体の任意の組合せを利用することができる。コンピュータ可読ストレージ媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下のものに限定されないが、電子、磁気、光学、電磁、赤外線、もしくは半導体の、システム、装置、もしくはデバイス、またはこれらの任意の適切な組合せとすることができる。
【００５０】
この文書のコンテキストでは、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって使用するかまたはそれに関連して使用するためのプログラムを収録または記憶することのできる、任意の有形媒体であってよい。コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが例えばベースバンド中にまたは搬送波の一部として組み入れられた、伝搬データ信号を含み得る。このような伝搬信号は、以下のものに限定されないが電磁、光学、またはこれらの任意の適切な組合せを含めた、様々な形のうちのいずれかの形をとることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではない任意のコンピュータ可読媒体であって、命令実行システム、装置、またはデバイスによって使用するかまたはそれに関連して使用するためのプログラムを、通信、伝搬、または移送できる、任意のコンピュータ可読媒体とすることができる。
【００５１】
コンピュータ可読ストレージ媒体に組み入れられたプログラム・コードは、以下のものに限定されないがワイヤレス、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適切な組合せを含めた、任意の適切な媒体を使用して送信されてよい。開示される動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つまたは複数のプログラミング言語の任意の組合せで書かれてよい。Ｊａｖａ（Ｒ）およびすべてのＪａｖａ（Ｒ）ベースの商標およびロゴは、Ｏｒａｃｌｅまたはその系列会社あるいはその両方の、商標または登録商標である。
【００５２】
プログラム・コードは、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われてもよい。
【００５３】
いくつかの実施形態は、実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート説明またはブロック図に関して開示される。フローチャート説明またはブロック図の各ブロック、および、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ・プログラム命令によって実現できることは理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図の１つまたは複数のブロック中で指定される機能または行為を実現する手段をもたらすように、汎用コンピュータ、専用マシン、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを生み出すものであってよい。
【００５４】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読ストレージ媒体に記憶された命令が、フローチャートまたはブロック図の１つまたは複数のブロック中で指定される機能または行為を実現する命令を含む製造品を生み出すように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の方式で機能するよう指示するものであってもよい。
【００５５】
コンピュータ・プログラム命令はまた、コンピュータまたは他のプログラム可能装置上で実行される命令が、フローチャートまたはブロック図の１つまたは複数のブロック中で指定される機能または行為を実現するためのプロセスを提供するように、コンピュータまたは機械実装プロセスを生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
【００５６】
図中のフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、またはコードの一部を表すことができ、これは、指定される論理機能を実現するための１つまたは複数の実行可能命令を含む。また、いくつかの代替実装形態では、ブロック中で示される機能は、任意の順序で、または図中で示される順序とは異なる順序で生じる場合があることにも留意されたい。
【００５７】
例えば、関係する機能に応じて、連続して示される２つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明の各ブロック、および、ブロック図またはフローチャート説明の中のブロックの組合せは、指定される機能もしくは行為を実施する専用ハードウェアベースのシステムによって、または、専用ハードウェアとコンピュータ命令との組合せによって、実現できることにも気付くであろう。
【００５８】
特許請求される主題を、１つまたは複数の特徴または実施形態に関してここに提供した。ここに提供した例示的な実施形態の詳細な性質にもかかわらず、一般に意図される範囲を限定または逸脱することなく変形および変更をこれらの実施形態に加えることができることを、当業者なら認識および理解するであろう。ここに提供した実施形態の、これらおよび他の様々な適応および組合せも、請求項およびそれらの均等物一式によって定義されるような開示される主題の範囲内である。
【図１】
0006452712.tif 000002
【図２】
0006452712.tif 000003
【図３】
0006452712.tif 000004
【図４】
0006452712.tif 000005