(57)【特許請求の範囲】
【請求項１】
データセンターに対する変更がないか前記データセンターを監視することであって、
前記データセンターが、ネットワークを介して相互に通信する複数のエンティティを含み、
前記複数のエンティティが、少なくとも第１のエンティティ及び第２のエンティティを含み、
前記データセンターに対する前記変更は、実行されている１つ又は複数の動作によって引き起こされ、
前記１つ又は複数の動作は、
前記データセンターに別のエンティティを追加する追加動作、
前記複数のエンティティのうちのエンティティを前記データセンターから削除する削除動作、又は
前記複数のエンティティのうちの前記エンティティを前記データセンターにマイグレーションするマイグレーション動作、の少なくとも１つを含み、
前記複数のエンティティの各エンティティは、属性グラフの複数のノードのうちの対応するノードにより表され、
前記第１のエンティティは、前記複数のノードのうちの第１のノードにより表され、
前記第２のエンティティは、前記複数のノードのうちの第２のノードにより表される、監視することと、
前記変更を検出することであって、
前記変更が情報と関連付けられる、検出することと、
前記データセンターに対する前記変更を検出することに応答して、第１の伝播ルールを決定することであって、
前記第１の伝播ルールが少なくとも第１の条件を含む、決定することと、
前記情報を前記第１のノードから前記第２のノードに伝播することであって、
前記情報を伝播することが、前記第２のノードに関して、前記第１の伝播ルールの前記第１の条件を評価することを含む、伝播することと、を含む、方法。
【請求項２】
前記変更が、前記第１のエンティティを更新する更新動作である、請求項１に記載の方法。
【請求項３】
前記変更が、第１のオブジェクトの伝播メタデータに対する更新であって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記開始エンティティに直接接続されている１つ又は複数のノードの識別、の少なくとも１つを含む、請求項１に記載の方法。
【請求項４】
前記変更が、前記複数のエンティティのいずれかの間の新しい関係の作成である、請求項１に記載の方法。
【請求項５】
前記変更が、前記複数のエンティティのいずれかの間の関係の削除である、請求項１に記載の方法。
【請求項６】
前記複数のノードのうちの適格な兄弟ノードを決定することであって、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定すること、を更に含む、請求項１に記載の方法。
【請求項７】
伝播メタデータを前記第１のノードを表す第１のオブジェクトに追加することであって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記開始エンティティに直接接続されている１つ又は複数のノードの識別、の少なくとも１つを含む、追加すること、を更に含む、請求項１に記載の方法。
【請求項８】
前記複数のノードのうちの適格な兄弟ノードを決定することであって、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトの前記伝播メタデータを更新することと、を更に含む、請求項３に記載の方法。
【請求項９】
適格な兄弟ノードを決定することであって、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトから伝播メタデータを消去することであって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記適格な兄弟ノードの識別、の少なくとも１つを含む、消去することと、を更に含む、請求項５に記載の方法。
【請求項１０】
マイクロプロセッサと、
前記マイクロプロセッサによって実行可能なコンピュータ命令を含む非一過性コンピュータ可読記憶媒体であって、前記コンピュータ命令が、
データセンターに対する変更がないか前記データセンターを監視することであって、
前記データセンターが、ネットワークを介して相互に通信する複数のエンティティを含み、
前記複数のエンティティが、少なくとも第１のエンティティ及び第２のエンティティを含み、
前記データセンターに対する前記変更は、実行されている１つ又は複数の動作によって引き起こされ、
前記１つ又は複数の動作は、
前記データセンターに別のエンティティを追加する追加動作、
前記複数のエンティティのうちのエンティティを前記データセンターから削除する削除動作、又は
前記複数のエンティティのうちの前記エンティティを前記データセンターにマイグレーションするマイグレーション動作、の少なくとも１つを含み、
前記複数のエンティティの各エンティティは、属性グラフの複数のノードのうちの対応するノードにより表され、
前記第１のエンティティは、前記複数のノードのうちの第１のノードにより表され、
前記第２のエンティティは、前記複数のノードのうちの第２のノードにより表される、監視することと、
前記変更を検出することであって、
前記変更が情報と関連付けられる、検出することと、
前記データセンターに対する前記変更を検出することに応答して、第１の伝播ルールを決定することであって、
前記第１の伝播ルールが少なくとも第１の条件を含む、決定することと、
前記情報を前記第１のノードから前記第２のノードに伝播することであって、
前記情報を伝播することが、前記第２のノードに関して、前記第１の伝播ルールの前記第１の条件を評価することを含む、伝播することと、
を含む方法を実行するように構成されている、非一過性コンピュータ可読記憶媒体と、
を含む、コンピュータシステム。
【請求項１１】
前記変更が、前記第１のエンティティを更新する更新動作である、請求項１０に記載のコンピュータシステム。
【請求項１２】
前記変更が、第１のオブジェクトの伝播メタデータに対する更新であって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記開始エンティティに直接接続されている１つ又は複数のノードの識別、の少なくとも１つを含む、請求項１０に記載のコンピュータシステム。
【請求項１３】
前記変更が、前記複数のエンティティのいずれかの間の新しい関係の作成である、請求項１０に記載のコンピュータシステム。
【請求項１４】
前記変更が、前記複数のエンティティのいずれかの間の関係の削除である、請求項１０に記載のコンピュータシステム。
【請求項１５】
伝播メタデータを前記第１のノードを表す第１のオブジェクトに追加することであって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記開始エンティティに直接接続されている１つ又は複数のノードの識別、の少なくとも１つを含む、追加すること、を更に含む、請求項１０に記載のコンピュータシステム。
【請求項１６】
前記複数のノードのうちの適格な兄弟ノードを決定することであって、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトの伝播メタデータを更新することと、を更に含む、請求項１３に記載のコンピュータシステム。
【請求項１７】
適格な兄弟ノードを決定することであって、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトから伝播メタデータを消去することであって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記適格な兄弟ノードの識別、の少なくとも１つを含む、消去することと、を更に含む、請求項１４に記載のコンピュータシステム。
【請求項１８】
非一過性コンピュータ可読記憶媒体上に記憶された複数の命令を含むコンピュータプログラム製品であって、前記命令が、
データセンターに対する変更がないか前記データセンターを監視することであって、
前記データセンターが、ネットワークを介して相互に通信する複数のエンティティを含み、
前記複数のエンティティが、少なくとも第１のエンティティ及び第２のエンティティを含み、
前記データセンターに対する前記変更は、実行されている１つ又は複数の動作によって引き起こされ、
前記１つ又は複数の動作は、
前記データセンターに別のエンティティを追加する追加動作、
前記複数のエンティティのうちのエンティティを前記データセンターから削除する削除動作、又は
前記複数のエンティティのうちの前記エンティティを前記データセンターにマイグレーションするマイグレーション動作、の少なくとも１つを含み、
前記複数のエンティティの各エンティティは、属性グラフの複数のノードのうちの対応するノードにより表され、
前記第１のエンティティは、前記複数のノードのうちの第１のノードにより表され、
前記第２のエンティティは、前記複数のノードのうちの第２のノードにより表される、監視することと、
前記変更を検出することであって、
前記変更が情報と関連付けられる、検出することと、
前記データセンターに対する前記変更を検出することに応答して、第１の伝播ルールを決定することであって、
前記第１の伝播ルールが少なくとも第１の条件を含む、決定することと、
前記情報を前記第１のノードから前記第２のノードに伝播することであって、
前記情報を伝播することが、前記第２のノードに関して、前記第１の伝播ルールの前記第１の条件を評価することを含む、伝播することと、
を含む方法を実行するように構成されている、非一過性コンピュータ可読記憶媒体と、を含む、コンピュータプログラム製品。
【請求項１９】
前記方法が、
前記複数のノードのうちの適格な兄弟ノードを決定することであって、
前記適格な兄弟ノードを決定することが、前記変更が前記複数のエンティティのいずれかの間の新しい関係を作成する作成動作であると決定することに応答して実行され、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトの伝播メタデータを更新することと、を更に含む、請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記方法が、
前記複数のノードのうちの適格な兄弟ノードを決定することであって、
前記適格な兄弟ノードを決定することが、前記変更が前記複数のエンティティのいずれかの間の関係の削除であると決定することに応答して実行され、
兄弟ノードは、別のノードに直接接続されているノードであり、
前記適格な兄弟ノードは、伝播の方向の基準を満たし、スキップ条件の基準に関連付けられていない兄弟ノードであり、
前記第１の伝播ルールは、前記伝播の方向の基準及び前記スキップ条件の基準を含む、決定することと、
前記適格な兄弟ノードを表すオブジェクトから伝播メタデータを消去することであって、
前記伝播メタデータは、
前記第１の伝播ルールの識別、
開始エンティティの識別、及び
前記適格な兄弟ノードの識別、の少なくとも１つを含む、消去することと、を更に含む、請求項１８に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｔｏ  Ｐｒｏｐａｇａｔｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａｃｒｏｓｓ  ａ  Ｃｏｎｎｅｃｔｅｄ  Ｓｅｔ  ｏｆ  Ｅｎｔｉｔｉｅｓ  Ｉｒｒｅｓｐｅｃｔｉｖｅ  ｏｆ  ｔｈｅ  Ｓｐｅｃｉｆｉｃ  Ｅｎｔｉｔｙ  Ｔｙｐｅ」と題され、Ｔｕｓｈａｒ  Ｂａｎｄｏｐａｄｈｙａｙ  ａｎｄ  Ｂｈａｒａｔ  Ｄｉｇｈｅを発明者として有する、２０１７年１２月１７日に出願された米国特許仮出願第６２／５９９，７８３号に対する米国特許法第１１９条（ｅ）の下での利益を主張するものである。本出願はまた、「Ｒｅｓｉｌｉｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｍｅｎｔ  Ａｃｒｏｓｓ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｓｙｓｔｅｍｓ」と題され、Ｔｕｓｈａｒ  Ｂａｎｄｏｐａｄｈｙａｙ，Ｎａｒｅｓｈ  Ｍｏｏｒｔｈｙ，Ｂｈａｒａｔ  Ｄｉｇｈｅ，Ｍｅｅｎａｌ  Ｂｉｎｗａｄｅ，Ｓｗａｎａｎｄ  Ｖａｉｄｙａ，Ｓｈｒｉｋａｎｔ  Ｇｈａｒｅ，Ａｎｋｉｔ  Ｊａｉｎ，Ａｎｉｓｈ  Ｖａｉｄｙａ，Ｒｏｈａｎ  Ｋｕｍａｒ  Ｋａｙａｎ，Ｋｕｓｈａｌ  Ｓｈａｈ，Ｄｅｖｄａｓ  Ｋｕｍｋａｒ，Ｓｏｕｍｙａ  Ｓａｋｈａ  Ｔｒｉｐａｔｈｙ，Ｓｕｎｉｌ  Ｈａｓｂｅ，Ａｄｉｔｙａ  Ｄｅｓｈｐａｎｄｅ，Ｄｈｉｒａｊ  Ｍａｈｅｓｈｗａｒｉ，Ａｎｕｊ  Ｇｕｐｔａ，Ｖｉｓｈｗａｎａｔｈ  Ｋｉｔｅｋａｒ，ａｎｄ  Ｐｏｏｊａ  Ｓｉｎｇｈを発明者として有する、２０１７年２月５日に出願された米国特許仮出願第６２／４５４，８７１号に対する米国特許法第１１９条（ｅ）の下での利益を主張するものである。上記の出願は、あたかも本明細書に完全に記載されているかのように、それらの全体が全ての目的のために、本明細書に参照により組み込まれる。
【背景技術】
【０００２】
努力の分野
本開示は、コンピュータ技術に関し、より具体的には、データセンター又は類似のコンピューティング環境全体にわたって情報を自動的に伝播及び／又は無効化することに関する。
技術の現状
【０００３】
データセンターは、他の潜在的な特徴及び機能の中でも、ハードウェアデバイス、ソフトウェア構成要素、アプリケーションインスタンス、及びビジネスアプリケーションを含むエンティティの集合を含むことができる。このようなエンティティ間には、相互依存性が存在する。このような相互依存性は、直接的な相互依存性又は間接的な相互依存性であり得る。このようなエンティティ間の関係は動的であり得る。したがって、これらのエンティティに対するいかなる更新、修正、追加、削除、又は他の変更（総称的に、「変更」及びその同語源のもの）も、データセンター内の他のエンティティ、特にこれに限定されないが変更されるエンティティに直接関係するエンティティ、の挙動及び要件に影響を及ぼし得る。このような機能を使用することによって生じる問題の１つは、汎用的な、したがってデータセンター又はネットワーク内の種々のタイプのエンティティから独立した（ただしそれらによって依然として使用可能である）様式で、このようなエンティティ間で情報を効率的に伝播する方法の必要性である。
【発明の概要】
【０００４】
本開示は、概して、データセンター又は他のネットワーク環境全体にわたって情報を伝播することを提供する方法、コンピュータプログラム製品、コンピュータシステムなどを含む。一実施形態では、本明細書に開示される機能は、伝播ルールを決定することと、次いでそれらのルールを記憶すること、及び／又はそれらのルールをデータセンター又は他のネットワーク環境全体にわたって伝播することを含む。伝播ルールは、本明細書に記載されるシステムなどのシステム全体にわたる情報の伝播を管理する種々の条件又は他の変数を定義する。一実施形態では、これらの伝播ルールは、少なくとも以下の５つの因子を含み得る：（１）開始条件、（２）伝播の方向、（３）スキップ条件、（４）反転条件、及び（５）終了条件。種々の実施形態では、これらの因子のうちの１つ以上を除外することができ、１つ以上の追加の因子を追加することができる。伝播ルールが決定されると、それらのルールは、（例えば、例えば管理サーバ内に見出され得るような効率的なキャッシュ内などに）記憶されてもよく、及び／又はシステム全体にわたって伝播するかのいずれかでもよい。
【０００５】
伝播ルールの作成及び記憶に続いて、それらのルールを使用して、本明細書に記載されるような種々の他の機能を実行することができる。例えば、特定の実施形態では、本明細書に記載される機能を使用して、エンティティへの更新を処理することができる。特定の実施形態では、本明細書に記載される機能を使用して、伝播メタデータへの更新を処理することができる。特定の実施形態では、本明細書に記載される機能を使用して、新しい関係の作成を処理することができる。特定の実施形態では、本明細書に記載される機能を使用して、オブジェクト及び／又は関係の削除を処理することができる。本明細書に記載される機能の全ては、例えば、データセンター又は他のシステム若しくはネットワークへの追加又は変更を検出した際などに、自動的に実行することができる。前述の機能は、以下でより詳細に論じる。
【０００６】
前述の事項は要約であり、したがって、必要に応じて、簡略化、一般化、及び詳細の省略を含むため、当業者は、この要約が例示的なものに過ぎず、いかなる方法でも限定することを意図するものではないことを理解するであろう。特許請求の範囲によってのみ規定されるような、本開示の他の態様、本発明の機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。
【図面の簡単な説明】
【０００７】
添付図面を参照することによって、本開示の実施形態はより良く理解され得、その多数の目的、特徴、及び利点が当業者に明らかになる。
【０００８】
【図１Ａ】本開示の一実施形態による、管理機能を含むコンピューティング環境の一例を例示するブロック図である。
【０００９】
【図１Ｂ】本開示の一実施形態による、属性グラフの更なる詳細を提供するブロック図である。
【００１０】
【図２】本開示の一実施形態による、本明細書に記載されるシステム及び方法によって実行され得る種々のアクションの概要を描写するフロー図である。
【００１１】
【図３】本開示の一実施形態による、１つ以上のエンティティに対する更新を受信又は検出した際に実行され得る種々のアクションを描写するフロー図である。
【００１２】
【図４】本開示の一実施形態による、オブジェクト上の伝播メタデータに対する更新及び／又は追加を受信又は検出した際に実行され得る種々のアクションを描写するフロー図である。
【００１３】
【図５】本開示の一実施形態による、１つ以上のノード、オブジェクト、又は関係を作成した際に実行され得る種々のアクションを描写するフロー図である。
【００１４】
【図６】本開示の一実施形態による、１つ以上のノード、オブジェクト、又は関係を削除又は除去した際に実行され得る種々のアクションを描写するフロー図である。
【００１５】
【図７】本開示の一実施形態による、本開示の特定の特徴がどのように実装され得るかを例示する、コンピューティングデバイスのブロック図である。
【００１６】
【図８】本開示の一実施形態による、種々のコンピューティングデバイスがどのようにネットワークを介して通信し得るかを例示する、ネットワーク化されたシステムのブロック図である。
【００１７】
本開示の実施形態は、種々の修正形及び代替形式が可能であるが、特定の実施形態が、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、実施形態を開示された特定の形式に限定することを意図しないことを理解されたい。そうではなく、本開示は、添付の特許請求の範囲によって規定されるような本開示の趣旨及び範囲内にある全ての修正形、等価物、及び代替形態を包含することを意図する。
【発明を実施するための形態】
【００１８】
上述のように、データセンターは、他の潜在的な特徴及び機能の中でも、ハードウェアデバイス、ソフトウェア構成要素、アプリケーションインスタンス、及びビジネスアプリケーションを含むエンティティとして見ることができる。このようなエンティティ間には、相互依存性が存在する。このような相互依存性は、直接的な相互依存性又は間接的な相互依存性であり得る。これらの相互依存性は、エンティティ及びそれらの間の関係の複雑なグラフ（本明細書では「属性グラフ」と称される）として可視化することができる。このようなエンティティ間の関係は動的である。したがって、これらのエンティティに対するいかなる更新、修正、追加、削除、又は他の変更（総称的に、「変更」及びその同語源のもの）も、データセンター内の他のエンティティ、特にこれに限定されないが変更されるエンティティに直接関係するエンティティ、の挙動及び要件に影響を及ぼし得る。このような機能を使用することによって生じる問題の１つは、汎用的な、したがってデータセンター又はネットワーク内の種々のタイプのエンティティから独立した（ただしそれらによって依然として）様式で、このようなエンティティ間で情報を効率的に伝播する方法の必要性である。
【００１９】
本明細書に開示されるシステム及び方法は、データセンター及び同様のシステムに対する種々の利益及び改善を提供する。例えば、本開示は、新しいエンティティがシステムに導入されるときに、エンティティの動的な修正を可能にする。更に、本明細書に開示される方法で情報を伝播することは、ソースエンティティとターゲットエンティティとの間の経路（又はそれに接続されたデバイス）のいかなる変更にも依存しない。更に、ソースエンティティからターゲットエンティティへの伝播は、１つ以上の新たなエンティティの追加が、ソースエンティティとターゲットエンティティとの間の新しい経路をもたらすときに自動的に発生するように構成することができる。別の例として、本明細書で提供される開示は、その情報を、影響を受けるエンティティに自動的に伝播することによって、エンティティに対する変更の効率的な評価を可能にする。
【００２０】
本明細書に記載される機能は、少なくとも部分的に、伝播ルールの使用によって達成される。伝播ルールは、以下でより詳細に説明し論じる図１Ｂに示される経路などの、ソースエンティティからターゲットエンティティへの１つ以上の伝播経路に関する情報を提供する。一実施形態では、システムは、ソースエンティティとターゲットエンティティとの間の経路を定義する伝播ルールセットをロードすることができる。一実施形態では、このような情報はルックアップテーブル内に記憶され得る。このようなルールは、エンティティ及び関係への更新を評価するために、並びにそのような情報が伝播されるべき経路が存在するかどうかをチェックするために、システム（又はその構成要素）によって使用することができる。評価されるべき複数の経路が存在する種々の実施形態では、システムは、各経路が完全にかつ適切に評価され得るまで、一時的キュー内に種々の経路を記憶することができる。
【００２１】
図１Ａは、コンピューティング環境１００のブロック図である。本明細書での論述目的のために１つの例示的な実施形態が提供されているが、代替的な実施形態は、異なる数の物理マシン、異なる数の物理マシンごとの仮想マシンを実装することができ、同じシステムは、同じ環境内の他の物理マシンとは異なる数の仮想マシンをそれぞれ実装する１つ以上の物理マシンを含むことができる。
【００２２】
示すように、コンピューティング環境１００は、いくつかの物理マシン１１０（１）〜１１０（ｎ）（コンピューティングシステム）を含む。物理マシン１１０は、コンピューティングデバイス又はコンピューティングデバイスの一部であり、パーソナルコンピュータ、ラップトップコンピュータ、サーバ、携帯情報端末、携帯電話などの任意の種類のコンピューティングデバイスであり得る。いくつかの実施形態では、そのような物理マシンは、メモリ及びプロセッササイクルなどの物理コンピューティングリソースが必要に応じて及び／又は契約に応じて割り当てられるクラウドコンピューティング環境に含まれる。物理マシン１１０のリソースは、物理マシン上に実装された仮想マシンによって共有される。物理マシン１１０はそれぞれ、メモリ１１２を含む。メモリ１１２は、一実施形態では、ランダムアクセスメモリ（random access memory、ＲＡＭ）である。メモリ１１２は、いくつかのページに編成される。ページは、一般に、メモリの固定サイズ部分、例えばメモリの４キロバイト（kilobyte、Ｋｂ）部分である。物理マシン１１０は、ネットワーク１４０によって管理サーバ１２０及びいくつかの記憶デバイス１５０（１）〜１５０（４）に連結されている。ネットワーク１４０としては、他のそのような構造体及びシステムの中でも、インターネットなどのＷＡＮ（広域ネットワーク、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、１つ以上のＬＡＮ（ローカルエリアネットワーク、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、及び／又は１つ以上のＳＡＮ（ストレージエリアネットワーク、Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を挙げることができる。
【００２３】
本開示全体にわたって使用されるように、文字ｎ及びｉは、可変数のデバイス又は構成要素を示すために使用される。文字ｎ及びｉは、これらの異なるデバイス及び構成要素のそれぞれの可変数のインスタンスを記述するのに使用されるが、文字ｎ及びｉの繰り返し使用は、必ずしも、各デバイス及び構成要素が、本明細書で論じられる例示的なシステムにおいて、又は本発明のいかなる他の実施形態においても、実装された同じ数のｎ又はｉインスタンスを有することを必ずしも示すものではない。むしろ、これらの変数識別子は、一連の関係又は類似する要素（例えば、物理マシン）の最終要素（例えば、物理マシン１１０（ｎ））をより単純に指定するために使用される。そのような変数識別子の繰り返し使用は、そのような一連の要素のサイズ間の相関関係を暗示することを意図するものではないが、そのような相関関係が存在してもよい。
【００２４】
各物理マシン１１０は、いくつかの仮想マシン１１５（１）〜１１５（ｉ）をホストする。仮想マシン１１５は、例えば、組織に関連付けられたユーザにコンピューティングリソースを提供するために使用することができる。ユーザ、例えばある組織の情報技術（information technology、ＩＴ）専門家が追加のリソースを要求する場合、クラウドベンダーの管理者（例えば、ＩＴ専門家）は、追加のリソースの要求を満たすために１つ以上の追加の仮想マシンをプロビジョニングすることができる。
【００２５】
管理サーバ１２０は、例えば、パーソナルコンピュータ、ラップトップコンピュータ、サーバ、携帯情報端末、携帯電話などのコンピューティングデバイス又はコンピューティングデバイスの一部であってもよい。管理サーバ１２０は、新たな又はマイグレーションされた仮想マシンをホストするためのターゲット物理マシンを選択することができる。管理サーバ１２０は、プロビジョニングモジュール１２１及びプロビジョニングデータ１２２を含む。管理サーバ１２０は、以下で図１Ｂに関連してより詳細に論じられる属性グラフ１３０などの属性グラフを作成、更新、及び維持するために使用することができる。管理サーバ１２０はまた、このような機能を属性グラフ１３０上で実行するために使用することができる多数の構成要素を含む。
【００２６】
一実施形態では、プロビジョニングモジュール１２１を用いて、コンピューティングリソースの要求においてユーザによって指定された要件を検出することができる。プロビジョニングデータ１２２を使用してその機能を実行するプロビジョニングモジュール１２１は、要求に応答して仮想マシンを自動的に作成又は配置し、仮想マシンを物理マシン１１０のうちの１つ上にプロビジョニングさせることができる。見られるように、プロビジョニングモジュール１２１（及びそれに関連付けられたプロビジョニングデータ１２２）、並びに属性グラフ作成モジュール１２５及び属性グラフ分析モジュール１２６（及び関連付けられた属性グラフデータ１２７）は、管理サーバ１２０によってサポートされるモジュールに数えられる（これらのモジュールは、図１Ａでは、例として、管理モジュール１２９として描写されている）。属性グラフ作成モジュール１２５及び属性グラフ分析モジュール１２６などのシステムの動作を、以下で説明する。
【００２７】
管理者（又は自動化されたプロセス）はまた、１つ以上の仮想マシンを第１の物理マシンから代替の物理マシンに移動させることもできる。例えば、管理者（又は自動化されたプロセス）は、物理マシンで障害が発生しつつある、障害が発生した、若しくは過負荷状態にあること、又は１つ以上の仮想マシンを現在ホストしている物理マシンとは異なる物理マシン上で追加のリソースが利用可能であることを検出したことに応答して、１つ以上の仮想マシンを異なる（ターゲット）物理マシンに移動（マイグレーション）することができる。一実施形態では、プロビジョニングモジュール１２１は、物理マシンで障害が発生しつつある、障害が発生した、若しくは過負荷状態にあること、又は１つ以上の仮想マシンを現在ホストしている物理マシンとは異なる物理マシン上で追加のリソースが利用可能であることを検出するなど、仮想マシンがマイグレーションされるべきであることを示す状態を自動的に検出することができる。プロビジョニングモジュール１２１は、オーケストレーションサービスを提供することの一環として、そのような条件を検出したことに応じて、１つ以上の仮想マシンを自動的にマイグレーションさせることができる。
【００２８】
プロビジョニングモジュール１２１は、新しい仮想マシン（又はある物理マシンから別の物理マシンにマイグレーションされる仮想マシン）がターゲット物理マシンのリソース（例えばメモリ）をより効果的に利用することになる（例えば、ターゲット物理マシンによってホストされているか又はホストされることになる１つ以上の仮想マシンとより多くの数のメモリページを共有することによって）可能性に基づいて、ターゲット物理マシンを選択することができる。更に、そのような動作は、管理サーバ１２０の管理のために提示されるグラフィカルユーザインターフェース（graphical user interface、ＧＵＩ）を使用して、直感的かつ効率的な様式で実行することができる。
【００２９】
プロビジョニングモジュール１２１は、プロビジョニングデータ１２２を使用してプロビジョニングに関する情報を収集及び維持し、利用可能なリソースの適切な（又は少なくとも許容可能な）使用を行うために１つ以上の仮想マシン、それらに関連付けられた記憶構成要素（仮想マシンディスク（virtual machine disk、ＶＭＤＫ））、関連付けられた機能などをプロビジョニングする様式を決定することができる。これは、例えば、所与のＶＭを受け入れる決定であってもよい（例えば、どの物理マシンが所与の仮想マシンと最大数の共有メモリページを共有する可能性が高いかを示し、その情報をプロビジョニングデータ１２２内に記憶する）。プロビジョニングモジュール１２１は、プロビジョニングデータ１２２を分析して、どの物理マシンが仮想マシンをホストするかを選択することができる。プロビジョニングモジュール１２１は、種々のソースから種々の形式でプロビジョニングデータ１２２を収集することができる。プロビジョニングモジュール１２１はまた、各物理マシンのメモリに維持されているデータを追跡することができる。一実施形態では、各物理マシンは、物理マシンのメモリに記憶されたページに関する情報をプロビジョニングモジュール１２１に定期的に送信する。あるいは、当該の物理マシンは、他の可能性の中でも、新しいページをメモリに追加することに応答して、新しい仮想マシンが物理マシン上にプロビジョニングされたことに応答して、及び／又はエントリのリストを求めるプロビジョニングモジュール１２１による要求に応答して、このような情報のリストを送信することができる。一実施形態では、各エントリは、アドレス、例えばページのアドレスを含む。一実施形態では、そのような情報は、物理マシンによってホストされる仮想マシンによって使用されるオペレーティングシステム又はアプリケーションなどの、物理マシンによってホストされる１つ以上の仮想マシンの特性を識別するタグを含むことができる。
【００３０】
仮想マシンが物理マシン上で実行されており、別の物理マシンにマイグレーションされる実施形態では、プロビジョニングモジュール１２１は、仮想マシンが実行されている物理マシンからのリソース情報（例えば、メモリ情報）を使用して、複数の利用可能な物理マシン（ターゲット物理マシン）のうちのどれに仮想マシンをマイグレーションさせるべきかを決定することができる。本例を使用して、プロビジョニングモジュール１２１は、所与の仮想マシンがマイグレーションされ得る１つ以上の候補を識別するために、仮想マシンに関する情報（仮想マシンをホストする物理マシンから受信したもの）と、ターゲット物理マシンのそれぞれの情報とを比較することができる。
【００３１】
新しい仮想マシンがプロビジョニングされるときなど、仮想マシンが物理マシン上で既に実行されていない場合、管理サーバ１２０は、プロビジョニングされる仮想マシンが必要とするコンピューティングリソースを決定することを含む、仮想マシンをプロビジョニングする動作を実行することができる。一実施形態では、プロビジョニングモジュール１２１は、物理マシンから受信する代わりに、及び／又はそれに加えて、記憶デバイス１５０のうちの１つなどの記憶デバイスから仮想マシン情報を受信する。記憶デバイス１５０は、記憶デバイスが電源オフされた後であっても、そのような記憶デバイス上に記憶されたデータが記憶されたままになるように、永続的データ記憶を提供する。そのような記憶デバイスは、例えば、ハードディスク、コンパクトディスク（compact disc、ＣＤ）、デジタル多用途ディスク（digital versatile disc、ＤＶＤ）、若しくは他の大量記憶デバイス、又はそのような記憶デバイスのアレイを含む記憶システム（例えば、独立ディスクの冗長アレイ（redundant array of independent disks、ＲＡＩＤ）システム若しくは光学記憶ジュークボックス）であってもよい。そのような記憶デバイスはまた、そのような物理記憶デバイス及び／又は記憶システム上に実装される仮想又は論理記憶デバイスであってもよい。例えば、そのような記憶デバイスは、ＲＡＩＤ記憶システム上に実装される論理ボリュームであり得る。加えて、そのような記憶デバイスは、１つ以上の記憶デバイスを含むことができる。記憶デバイスはまた、ソリッドステート媒体（例えば、フラッシュドライブ）、光学媒体（例えば、ＣＤ及びＤＶＤ）、並びに磁気媒体（例えば、ハードディスク又は磁気テープ）を含む１つ以上のタイプの記憶媒体を含むことができる。いくつかの実施形態では、そのような記憶デバイスは、クラウドストレージを使用して実装することができ、クラウドストレージでは、記憶デバイスは、必要に応じて及び／又は契約に応じて物理記憶デバイス（複数可）が割り当てられる論理記憶デバイスである。
【００３２】
いくつかの仮想マシン（例えば、ＶＭ１５６（１）〜（３）、１６６（１）〜（３）、及び１７６（１）（３））は、１つ以上のＶＭＤＫ（例えば、記憶デバイス１５０（４）に記憶されたＶＭＤＫ１８０（１）〜（ｎ））と同様に、記憶デバイス１５０のうちの１つ以上（例えば、記憶デバイス１５０（１）〜（３））に記憶することができる。プロビジョニングモジュール１２１は、これらの仮想マシンのうちの１つ以上に関する情報を取得し、当該の仮想マシン（複数可）をプロビジョニングすることができる。プロビジョニングモジュール１２１はまた、当該の仮想マシン（複数可）を記憶するために、仮想マシン１１５のうちの１つ以上に関する情報を取得することができる。図１Ａに描写するように、記憶デバイス１５０（１）は、重複排除モジュール１５４を含むファイルシステム１５２を実装する。ファイルシステム１５２は、仮想マシン１５６を含む、内部に記憶されたデータの重複排除をサポートする。この例では、仮想マシン１５６（１）〜１５６（３）が重複排除される。すなわち、各仮想マシン１５６は、一組のデータから形成される。特定の実施形態では、仮想マシン１５６は、仮想マシン１５６の別のデータと同一のデータを含む。この状況は、２つ以上の仮想マシン１５６が同一のアプリケーション及び／又はオペレーティングシステムを含む場合に起こり得る。複数の仮想マシン１５６が同一のデータを含む場合、記憶デバイス１５０（１）は、同一のデータの単一のコピーのみを記憶する。したがって、重複排除データ１５８は、仮想マシン１５６を構成するデータのどの部分が仮想マシン間で共有されているか、例えば、２つ以上の仮想マシン１５６間で同一であるかを識別する情報を含む。プロビジョニングモジュール１２１は、重複排除データ１５８を使用して、仮想マシン１５６のうちの１つをホストするための物理マシンを選択することができる。
【００３３】
そのような記憶デバイスはまた、記憶された仮想マシンの指紋を計算し、このようにして生成された指紋を指紋データとして記憶デバイス１５０のうちの１つ以上に記憶することができる１つ以上の指紋モジュールを含むことができる。仮想マシンの指紋を計算することは、仮想マシンイメージ及び仮想マシンに関係するデータをチャンクに分割することと、各チャンクの指紋を計算することと、を伴う。チャンクは、データの固定又は可変長の部分である。指紋モジュール１６２は、各チャンクの署名又は指紋を生成するために種々の機能を利用することができる。そのような機能としては、例えば、セキュアハッシュアルゴリズム（Secure Hash Algorithm、ＳＨＡ）、メッセージダイジェストアルゴリズム５（Message-Digest Algorithm5、ＭＤ５）、ラビンハッシュ、巡回冗長検査（Cyclic Redundancy Check、ＣＲＣ）などのうちの１つ以上を挙げることができる。例えば、署名は、特定のチャンクを処理し、それに応答してハッシュ（例えば、ＳＩＳレベル署名）を計算するＳＨＡ−１などのハッシュ関数によって生成されるハッシュであってもよい。
【００３４】
そのようなシナリオでは、プロビジョニングモジュール１２１は、得られた指紋データにどのような指紋が記憶されているかに関する情報を記憶デバイス１５０から受信する。記憶デバイス１５０のうちの１つ以上は、新しい指紋の追加に応答して（例えば、新しい仮想マシンが記憶デバイス１５０のうちの１つに記憶される場合）、及び／又はプロビジョニングモジュール１２１による要求に応答して、指紋に関する情報をプロビジョニングモジュール１２１に定期的に送信することができる。そのような要求は、指紋データがプロビジョニングモジュール１２１に送信されるべき１つ以上の仮想マシンを指定することができる。
【００３５】
コンピューティング環境１００などの環境では、本明細書に記載されるものなどの方法及びシステムは、上述のように、管理モジュール１２０を構成する管理モジュールのうちの１つ以上によって提供されるオーケストレーション機能をサポートするために、属性グラフ作成モジュール１２５及び属性グラフ分析モジュール１２６、並びに作成／分析された属性グラフデータ（例えば、属性グラフデータ１２７）を含む。本開示に照らして理解されるように、属性グラフ作成モジュール１２５は、属性グラフデータ１２７などの属性グラフデータの作成を容易にする機能を提供する。属性グラフ分析モジュール１２６は、そのような属性グラフデータの分析を容易にする機能を提供し、並びに１つ以上のオーケストレーションシステムによる使用に適した形式の情報を生成する。
【００３６】
図１Ｂは、属性グラフ１３０などの例示的な属性グラフの更なる詳細を提供するブロック図である。本明細書での論述目的のために１つの例示的な実施形態が提供されているが、代替的な実施形態は、異なる数の物理マシン、異なる数の物理マシンごとの仮想マシンを実装することができ、同じシステムは、同じ環境内の他の物理マシンとは異なる数の仮想マシンをそれぞれ実装する１つ以上の物理マシンを含むことができる。
【００３７】
示すように、属性グラフ１３０は、ソースノード１３１、整合性グループ１３２、及びディスク１３３を含む。これらのエンティティ間、及び図１Ｂの他のエンティティ間の矢印は、これらのノード間の一般的な「内」方向の流れを示し、これについては以下でより詳細に論じる。属性グラフ１３０はまた、種々のノード１３４（１）〜１３４（ｎ）を含む。これらのノードは、本明細書の他の箇所に記載されるタイプのコンピューティングデバイスなどの、任意のタイプのコンピューティングデバイスであり得る。本明細書の他の箇所に記載される機能の１つの重要な特徴は、これらの方法が、ディスク１３３とデータベース１３５との間にあるノード１３４などの特定のエンティティに依存しないことである。したがって、本明細書に記載される伝播ルールは、ノード１３４のタイプに使用することができる。最後に、属性グラフ１２０はまた、この例示的な属性グラフが完結するターゲットノード１３６を示す。
【００３８】
図２は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法２００のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法２００を、図１Ａ及び図１Ｂに関連して説明した要素などの要素を参照して説明する。一実施形態では、方法２００は、例えば管理サーバ１２０などの管理サーバによって実行される。更に、方法２００の論述は、図１Ｂ及び属性グラフ１３０と併せて読むと、最も良く理解されるであろう。
【００３９】
方法２００は、本開示の個々の、しかし関係する部分である種々の動作を実施するために実行することができる動作の概要を提供する。図２００は、線形様式で発生する方法２００の種々の動作を描写するが、このような線形機能は、実務では必ずしも必要とされない。むしろ、個々のステップは、動作が必ずこの順序で実行されなければならないという基礎要件のためではなく、本明細書における論理的論述を容易にするために、このように示されている。
【００４０】
前述の事項を条件として、方法２００は、一般に、システムが伝播ルールを決定する２１０で始まる。伝播ルールは、本明細書に記載されるシステムなどのシステム全体にわたる情報の伝播を管理する種々の条件又は他の変数を定義する。一実施形態では、これらの伝播ルールは、少なくとも以下の５つの因子を含み得る：（１）開始条件、（２）伝播の方向、（３）スキップ条件、（４）反転条件、及び（５）終了条件。本明細書の他の箇所でより詳細に記載されるように、これらの因子は、新しい、修正された、又は削除された情報をそのシステム全体にわたっていつ、どのように伝播するかを決定するために、システムによって使用ことができる。
【００４１】
「開始条件」は、伝播をトリガすることができる値又は条件である。開始条件は、２つ以上のパラメータをとることができる。例えば、一実施形態では、開始条件は文字列値及びブール値をとる。この実施形態では、文字列値は、ルールが適用する情報のタイプを指定することができる「タイプ」属性である。例えば、いくつかの潜在的なタイプは、「バックアップ＿ポリシー」、「ファイル」、及び「整合性グループ」である。（明確にすると、本明細書に列挙される潜在的なタイプは、単なる例である。更に、略称などの他の名前付け慣行を使用することができる。）一実施形態では、ブール値は、所与のノード又は他のエンティティが複製されたかどうかを示すために使用され得る「複製」属性とすることができる。他の実施形態では、他の値が可能である。更に、本明細書の論述を容易にするために特定の例が提供されているが、開始条件の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。同じことは、本明細書で論じられる条件（例えば、因子）のそれぞれについても、本開示の種々の実装において追加、変更、除去などをすることができる条件（例えば、因子）自体に関しても、当てはまる。
【００４２】
「伝播の方向」は、システム１００などのシステム全体にわたって情報が伝播される方向を示す。他の可能性が存在するが、この因子は、一般に単一のパラメータをとる。一実施形態では、パラメータは、方向が「内」又は「外」であるかどうかを示し、それによって、情報がネットワーク内又はネットワーク外に伝播されるべきかどうかを示す。「内」に設定されると、情報は、図１Ｂに示されるように、情報が一般にソース１１０からターゲット１６０に流れるように、ネットワーク内に伝播される。「外」に設定されると、情報は、図１Ｂに示されるように、情報が一般にターゲット１６０からソース１１０に流れるように、ネットワーク外に伝播される。他の実施形態では、他の値（例えば、多くの他の選択肢の中でも１及び０）を使用して、伝播の方向を示すことができる。更に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【００４３】
「スキップ条件」は、条件が満たされると、伝播に所与のノードをスキップさせる条件を示す。他の可能性が存在するが、この因子は、一般に複数のパラメータをとる。例えば、一実施形態では、この条件は、「タイプ」を示すパラメータ及び「ハイパーバイザ」が存在するか又は別の方法で使用されているかを示すブール値をとる。他の実施形態では、この条件は、２つ以上の「タイプ」パラメータを受け入れることができる。特定の実施形態では、この条件は、「タイプ」が仮想マシンを指す場合、「ハイパーバイザ」ブール値のみを必要とする。当然ながら、他の可能なパラメータ及び値も可能である。いずれにしても、ルールによって定義された条件が満たされると、伝播は、関連するノードをスキップする。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【００４４】
「反転条件」は、条件が満たされると、システムに伝播の方向を反転させる条件を示す。他の可能性が存在するが、この因子は、一般に１つのパラメータをとる。一実施形態では、パラメータは、「整合性グループ」の略語である「ｃｇ」又は「バックアップ＿ポリシー」など、伝播が終了するノードの「タイプ」を示す。当然ながら、他の可能なパラメータ及び値も可能である。いずれにしても、ルールによって定義された条件が満たされると、伝播の方向はその時点で反転される。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【００４５】
「終了条件」は、条件が満たされると、伝播を終了させる条件を示す。他の可能性が存在するが、この因子は、一般に単一のパラメータをとる。一実施形態では、パラメータは、「アプリケーション」又は「仮想マシン」など、伝播が終了するノードの「タイプ」を示す。当然ながら、他の可能なパラメータ及び値も可能である。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【００４６】
いくつかの例を提供すると、１つの潜在的な伝播ルールを、「ｉｓＡｐｐｌｉｃａｔｉｏｎＲｅｐｌｉｃａｔｅｄＲｕｌｅ」と呼ぶことができる。この例のために、ｉｓＡｐｐｌｉｃａｔｉｏｎＲｅｐｌｉｃａｔｅｄＲｕｌｅは、「タイプ」パラメータ及び「複製」ブールパラメータを必要とする開始条件と；単一のパラメータをとる方向と；単一の「タイプ」パラメータをとる反転条件と；「ハイパーバイザ」ブールパラメータとペアリングされた「タイプ」パラメータを、第１の「タイプ」パラメータ及び「ハイパーバイザ」ブールパラメータに必ずしも関係しない第２の「タイプ」パラメータと共にとるスキップ条件と；単一の「タイプ」パラメータをとる終了条件と、を有し得る。この伝播ルールはまた、「終了アクション」を含んでもよい。
【００４７】
この例示的な伝播ルールを続けると、ルールは、前述の値に関連付けられた以下の値を有してもよい：開始条件の「タイプ」は「整合性グループ」を示してもよく、「複製」ブールパラメータは「真」の値を有してもよく、方向は、「内」に設定された値を有するパラメータを有してもよく、反転条件の「タイプ」パラメータは、「整合性グループ」も示す値を有してもよく、スキップ条件のパラメータペア（「タイプ」パラメータ及び「ハイパーバイザ」ブールパラメータ）は、「クラスタ」を示す値を有する第２の「タイプ」パラメータと共に、それぞれ「ホスト」及び「真」に設定された値を有してもよく、終了条件の「タイプ」パラメータは、「アプリケーション」の値を有してもよく、終了アクションは、「＄ｅｎｔｉｔｙ．ｒｅｐｌｉｃａｔｅｄ＝ｔｒｕｅ」などの値を有してもよい。（上述のように、これらのパラメータ及び値は、単なる例として提供されており、いかなる方法でも限定することを意図するものではない。）
【００４８】
上記の例を続けると、必要な場合は図１Ａ及び図１Ｂを参照すると、前述の例示的な伝播ルールは、この例示的な伝播ルールによって必要とされるように、整合性グループが複製としてマーキングされていると仮定すると、整合性グループ１２０から情報の伝播を開始する。次いで、関連する情報は、ネットワーク「内」に、すなわちディスク１３０の方向に、次いでノード１４０（１）などへ伝播される。他の条件は、各後続ノード（又はより一般的に他のエンティティ）において、又はそれに対して評価され、「アプリケーション」に到達したときに伝播は最終的に停止する。その時点で、終了アクションを実行することができる。
【００４９】
図２及び方法２００の論述を続けると、伝播ルールの初期伝播は、２２０で実行される。この方法の第１のパスでは、伝播ルールそれ自体を、必要に応じてシステム全体にわたって伝播することができる。管理サーバが使用される場合などの他の実施形態では、管理サーバは、伝播ルールの開始条件の効率的なキャッシュを維持し、伝播ルールの全てを効率的なキャッシュ内又は別のメモリ構造内に記憶することができる。したがって、ルールを常にシステム全体にわたって伝播する必要はないので、ステップ２２０は必ずしも実行される必要はない（多くの場合、実行されない）。しかしながら、このような実施形態では、ルールは、必要に応じて後でアクセス及び使用するために利用可能であるように、適切な場所に、ある様式又は別の様式で記憶される。それらの初期の記憶又は伝播の後、伝播ルールは、サービスインターフェースとしてその場で追加、修正、削除、又は他の方法で変更することができる。修正及び削除は、既存のルール（複数可）を無効にすることができる。このような機能については、以下でより詳細に論じる。
【００５０】
ステップ２３０において、方法２００は、エンティティに対する更新を処理する。この機能は、図３及び方法３００の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ２４０において、方法２００は、伝播メタデータに対する更新を処理する。この機能は、図４及び方法４００の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ２５０において、方法２００は、新しい関係の作成を処理する。この機能は、図５及び方法５００の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ２６０において、方法２００は、オブジェクト及び／又は関係の削除を処理する。この機能は、図６及び方法６００の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。
【００５１】
上述したように、方法２００は、本開示の個々の、しかし関係する部分である種々の動作を実施するために実行することができる動作の概要を提供する。図２００は、線形様式で発生する方法２００の種々の動作を描写するが、このような線形機能は、実務では必ずしも必要とされない。むしろ、個々のステップは、動作が必ずこの順序で実行されなければならないという基礎要件のためではなく、本明細書における論理的論述を容易にするために、このように示されている。これは、概ね互いから独立したはっきり異なる方法である２３０、２４０、２５０、及び２６０に特に当てはまる。これらの方法のそれぞれを、以下でより詳細に論じる。
【００５２】
図３は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法３００のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法３００を、図１Ａ、図１Ｂ、及び図２に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法３００は、例えば管理サーバ１２０などの管理サーバによって実行される。他の実施形態では、方法３００は、図１Ａ及び図１Ｂに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ１２０とははっきり異なる１つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体（総称的に「スレッド」）によって実行される。更に、方法３００の論述は、図１Ｂ及び属性グラフ１３０と併せて読むと、最も良く理解されるであろう。
【００５３】
方法３００を始める前に、典型的な実施形態では少なくともステップ２１０が実行され、伝播ルールは、システム又はネットワーク内の少なくとも１つの場所に記憶されている。したがって、管理サーバ（又は何らかの他のシステム有能な）は、一般に、方法３００を始める前にルールのベースラインバージョンを有する。システムはまた、一般に、方法３００を始める前に、例えば属性グラフ１３０などの属性グラフのベースラインバージョンを有する。
【００５４】
方法３００は、ステップ３１０で始まり、方法は、エンティティに対する更新及び／又は追加（総称的に「更新（複数可）」）をリッスンする。方法３００は、３２０において、そのような更新が受信されたかどうかを判定する。方法３００が、３２０において、更新がまだ受信されていないと判定した場合、方法３００は、３３０に進み、更新を引き続きリッスンする。方法３００が、３２０において、更新が受信されたと判定した場合、方法３００は、３４０に進む。
【００５５】
３４０において、方法３００は、更新を評価して、１つ以上の伝播ルールの開始条件が満たされたかどうかを判定する。所与の伝播ルールの開始条件が任意の所与のオブジェクトに関して満たされていない場合、方法３００は、３５０に進み、将来のイベントを待機する。示される実施形態では、将来のイベントを待機することは、３５０に示すように、更新を引き続きリッスンすることを含む。図３に明示的に示されていない別の実施形態では、将来のイベントを待機することは、そのようなイベントが発生した場合に３５０に直接戻ることを含み得る。特定の実施形態では、方法３００は、この時点で終了するか、又はオブジェクトに関して異なる伝播ルールを評価することに移行することもできる。所与の伝播ルールの開始条件が任意の所与のオブジェクトに関して満たされている場合、方法３００は、３６０において、伝播メタデータ（propagation metadata、ＰＭＤ）をそのオブジェクトに追加する。種々の実施形態において、伝播メタデータは、少なくとも以下の情報を含む：伝播を引き起こしたか又はもたらしたルールの識別、開始エンティティの識別、及び伝播を引き起こしたか又はもたらした兄弟の識別リスト。いくつかの例として、そのような伝播メタデータは、仮想マシンのバックアップポリシーが無効化されたときに「リスクがある」として仮想マシン内のアプリケーションをマーキングするために、又はビジネスアプリケーションの文脈における任意の記憶媒体の分類に基づいて所与の分類タイプ内のビジネスアプリケーションをマーキングするために、使用することができる。伝播ルールは、（伝播を引き起こす又は制御するために人間の相互作用の必要がないことに関して）自動的及び（基盤となるタイプのエンティティ及び他のインフラストラクチャ構成要素に関して）非依存的の両方であるような様式で、データセンター（又は他のシステム）全体にわたって種々の形式の情報をリアルタイムで伝播するために使用することもできる。
【００５６】
図４は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法４００のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法４００を、図１Ａ、図１Ｂ、及び図２に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法４００は、例えば管理サーバ１２０などの管理サーバによって実行される。他の実施形態では、方法４００は、図１Ａ及び図１Ｂに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ１２０とははっきり異なる１つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体（総称的に「スレッド」）によって実行される。更に、方法４００の論述は、図１Ｂ及び属性グラフ１３０と併せて読むと、最も良く理解されるであろう。
【００５７】
方法４００は、４１０で始まり、方法は、オブジェクト上の伝播メタデータ（「ＰＭＤ」）に対する更新及び／又は追加（総称的に「更新（複数可）」）をリッスンする。動作中のこの方法の例示的な例示を提供するために、ノード１３４（１）の観点から、この方法のステップを考察する。方法４００は、４２０において、例えばノード１３４（１）などにおいてそのような更新が受信されたかどうかを判定する。方法４００が、４２０において、評価されている所与のノードで更新がまだ受信されていないと判定した場合、方法４００は、４３０に進み、更新を引き続きリッスンする。方法４００が、４２０において、評価されている所与のノードで更新が受信されたと判定した場合、方法４００は、４４０に進む。
【００５８】
４４０において、方法４００は、更新を評価して、オブジェクトが１つ以上の伝播ルールの終了条件を満たすかどうかを判定する。所与の伝播ルールの終了条件が任意の所与のオブジェクトに関して満たされていない場合、方法４００は、４３０に進み、更新を引き続きリッスンする。特定の実施形態では、方法４００は、この時点で終了するか、又はオブジェクトに関して異なる伝播ルールを評価することに移行することもできる。所与の伝播ルールの終了条件が任意の所与のオブジェクトに関して満たされている場合、方法４００は、４５０内の任意の適格な兄弟ノードを識別する。この例のために、ノード１３４（１）はアプリケーションではないと仮定する。したがって、本明細書で提供されている例示のために、ノード１３４（１）の観点から、終了条件はこの時点では満たされず、方法４００は、４５０に進み、ノード１３４（１）の適格な兄弟を識別する。
【００５９】
用語「兄弟」が本明細書で使用されるとき、「兄弟」は、任意の所与のノードに直接接続されたノードを意味することを意図する。例えば、図１Ｂに示される例示的な伝播グラフを使用すると、ディスク１３３、ノード１３４（２）、及びノード１３４（３）は、ノード１３４（１）の兄弟であり、ノード１３４（１）及びノード１３４（４）は、ノード１３４（２）の兄弟であり、ノード１３４（１）及びノード１３４（４）は、ノード１３４（３）の兄弟であり、ノード１３４（２）、ノード１３４（３）、及びノード１３４（ｎ）は、ノード１３４（４）の兄弟であり、以下同様である。所与の属性グラフ内の他のエンティティはまた、エンティティを有することができる。例えば、図１Ｂに示される例示的な伝播グラフを使用すると、整合性グループ１３２及びノード１３４（１）は、ディスク１３３の兄弟であり、属性グラフ１３０を通じて以下同様である。
【００６０】
適格な兄弟は、２つの条件に関して任意の所与のノードの兄弟を評価することによって決定される：第１に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第２に、兄弟は、スキップ条件の基準に関して評価され、その結果、１つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード１３４（１）の観点からそのルールの適用を考察すると、ディスク１３３、ノード１３４（２）、及びノード１３４（３）は全てノード１３４（１）の兄弟であることを我々は既に示している。しかしながら、ノード１３４（２）及びノード１３４（３）のみが、方向が「内」に設定されたときに「伝播の方向」条件を満たす。したがって、ノード１３４（２）及びノード１３４（３）のみが、ノード１３４（１）の潜在的に適格な兄弟であり、それらのノードの両方は、それらのノードの各々がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード１３４（２）はスキップ条件の基準を満たし、ノード１３４（１）はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード１３４（２）は適格な兄弟ではなく、それによってノード１３４（３）がノード１３４（１）の唯一の適格な兄弟となる。
【００６１】
方法４００が、４５０において所与のノードの適格な兄弟（複数可）を識別した後、方法４００は、４６０に進む。４６０では、方法４００は、識別された適格な兄弟上の伝播メタデータ（「ＰＭＤ」）を更新する。したがって、上記で提供された例を続けると、方法４００は、ノード１３４（３）上のＰＭＤを更新する。この時点で、方法４００は、４７０において、処理を継続するかどうか、例えば更なる更新を引き続きリッスンするかどうかを判定する。方法４００が処理を継続しないことを決定した場合、方法４００はこの時点で終了する。しかしながら、方法４００が４７０において処理を継続することを決定する通常の状況では、方法４００は４１０に戻る。上記の特定の例を続けると、ノード１３４（３）は４６０に従って更新され、これは、今度はノード１３４（３）の観点から、方法４００の別の反復をトリガする。
【００６２】
図５は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法５００のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法５００を、図１Ａ、図１Ｂ、及び図２に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法５００は、例えば管理サーバ１２０などの管理サーバによって実行される。他の実施形態では、方法５００は、図１Ａ及び図１Ｂに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ１２０とははっきり異なる１つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体（総称的に「スレッド」）によって実行される。更に、方法５００の論述は、図１Ｂ及び属性グラフ１３０と併せて読むと、最も良く理解されるであろう。
【００６３】
方法５００は、５１０で始まり、方法は、ノード（又は他のエンティティ）間の新しい関係の作成をリッスンする。方法５００は、属性グラフによって表されるネットワーク内で新しい関係が作成されたかどうかを判定する（５２０）。方法５００が、５２０において、属性グラフによって表されるネットワーク内で新しい関係が作成されていないと判定した場合、方法５００は、５３０に進み、新しい関係の作成を引き続きリッスンする。方法５００が、５２０において、新しい関係が最近作成されたと判定した場合、方法５００は、５４０に進む。方法５００を例示するために、ノード１３４（３）は、以前は属性グラフ１３０の一部ではなかったが、新たに追加された（属性グラフ１３０内の現在位置においてであるが）と仮定する。この例では、方法５００は、５２０において、２つの新しい関係、すなわち、（１）ノード１３４（３）とノード１３４（１）との間の関係、及び（２）ノード１３４（３）とノード１３４（４）との間の関係が追加されたことを判定する。したがって、この例では、方法５００は５４０に進む。
【００６４】
５４０では、方法５００は、新しいオブジェクトが伝播メタデータ又は「ＰＭＤ」を有するかどうかを判定する。方法５００が、５４０において、新しいオブジェクトがＰＭＤを有していないと判定した場合、方法５００は、５３０に進み、新しい関係の作成を引き続きリッスンする。方法５００が、５４０において、新しいオブジェクトがＰＭＤを有すると判定した場合、方法５００は、５５０に進む。
【００６５】
５５０では、方法５００は、適格な兄弟ノードを識別する。ノード１３４（３）の作成及び上記定義に基づいて例を続けると、方法５００は、この時点でノード１３４（３）の適格な兄弟を識別する。方法４００の場合と同様に、適格な兄弟は、２つの条件に関して任意の所与のノードの兄弟を評価することによって決定される：第１に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第２に、兄弟は、スキップ条件の基準に関して評価され、その結果、１つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード１３４（３）の観点からそのルールの適用を考察すると、ノード１３４（１）、及びノード１３４（４）はノード１３４（３）の兄弟であることを我々は既に示している。しかしながら、ノード１３４（４）のみが、方向が「内」に設定されるとき、「伝播の方向」条件を満たす。したがって、ノード１３４（４）は、再びこの例で新たに追加されたノードであるノード１３４（３）の唯一の潜在的に適格な兄弟である。その結果、ノード１３４（４）は、ノード１３４（４）がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード１３４（４）はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード１３４（４）は、この例の例示のために再び我々がネットワーク及び／又は属性グラフに新たに追加されたものとして取り扱っているノード１３４（３）の適格な兄弟として識別される。
【００６６】
方法５００が、５５０において所与のノードの適格な兄弟（複数可）を識別した後、方法５００は、５６０に進む。５６０では、方法５００は、識別された適格な兄弟上の伝播メタデータ（「ＰＭＤ」）を更新する。したがって、上記で提供された例を続けると、方法５００は、ノード１３４（４）上のＰＭＤを更新する。この時点で、方法５００は、５７０において、処理を継続するかどうか、例えば更なる処理が必要かどうかを判定する。方法５００がこの時点で処理を継続しないことを決定した場合、方法５００はこの時点で終了する。しかしながら、方法５００が５７０において処理を継続することを決定する通常の状況では、方法５００は５１０に戻る。更に、図４又は図５に明示的に示されていないが、ステップ５６０において適格な兄弟上のＰＭＤが更新されるとき、その更新は、次いで一般に、その更新された情報もノード１３４（４）の任意の他の適格な兄弟に伝播されるべきかどうかを判定するように、新たに更新されたノード（この例では、ノード１３４（４））に関して図４及び方法４００の別のパスをトリガする。
【００６７】
図６は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法６００のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法６００を、図１Ａ、図１Ｂ、及び図２に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法６００は、例えば管理サーバ１２０などの管理サーバによって実行される。他の実施形態では、方法６００は、図１Ａ及び図１Ｂに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ１２０とははっきり異なる１つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体（総称的に「スレッド」）によって実行される。更に、方法６００の論述は、図１Ｂ及び属性グラフ１３０と併せて読むと、最も良く理解されるであろう。
【００６８】
方法６００は、６１０で始まり、方法は、オブジェクト及び／又は関係（総称的に「オブジェクト（複数可）」）の削除又は除去（総称的に「削除」及びその活用形）をリッスンする。方法６００は、６２０において、削除されたオブジェクトが伝播メタデータ、又は「ＰＭＤ」を有していたかどうかを判定する。方法６００が、６２０において、削除されたオブジェクトがＰＭＤを有さなかったと判定した場合、方法６００は、６３０に進み、別のオブジェクトの削除を引き続きリッスンする。方法６００が、６２０において、削除されたオブジェクトがＰＭＤを有していたと判定した場合、方法６００は、６４０に進む。方法６００を例示するために、ノード１３４（３）が削除されたと仮定する。ノード１３４（３）がＰＭＤを含んでいたと更に仮定する。この例では、方法６００は、６２０において、ノード１３４（３）がＰＭＤを有していたと判定し、したがって、方法６００は、この例では６４０に進む。
【００６９】
６４０では、方法６００は、適格な兄弟ノードを識別する。ノード１３４（３）の削除及び上記に提供された定義に基づいて例を続けると、方法６００は、この時点でノード１３４（３）の適格な兄弟を識別する。方法４００及び５００の場合と同様に、適格な兄弟は、２つの条件に関して任意の所与のノードの兄弟を評価することによって決定される：第１に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第２に、兄弟は、スキップ条件の基準に関して評価され、その結果、１つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード１３４（３）の観点からそのルールの適用を考察すると、ノード１３４（１）、及びノード１３４（４）はノード１３４（３）の兄弟であることを我々は既に示している。しかしながら、ノード１３４（４）のみが、方向が「内」に設定されるとき、「伝播の方向」条件を満たす。したがって、ノード１３４（４）は、再びこの例で新たに追加されたノードであるノード１３４（３）の唯一の潜在的に適格な兄弟である。その結果、ノード１３４（４）は、ノード１３４（４）がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード１３４（４）はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード１３４（４）は、この例の例示のために再び我々がネットワーク及び／又は属性グラフから最近削除されたものとして取り扱っているノード１３４（３）の適格な兄弟として識別される。
【００７０】
方法６００が、６４０において所与のノードの適格な兄弟（複数可）を識別した後、方法６００は、６５０に進む。６５０では、方法６００は、識別された適格な兄弟上の伝播メタデータ（「ＰＭＤ」）を消去する。したがって、上記で提供された例を続けると、方法６００は、ノード１３４（４）上のＰＭＤを消去する。この時点で、方法６００は、６６０において、処理を継続するかどうか、例えば更なる処理が必要かどうかを判定する。方法６００がこの時点で処理を継続しないことを決定した場合、方法６００はこの時点で終了する。しかしながら、方法６００が６６０において処理を継続することを決定する通常の状況では、方法６００は６１０に戻る。
【００７１】
図７は、上述の動作の１つ以上を実行することができるコンピューティングシステム７００のブロック図である。コンピューティングシステム７００は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサコンピューティングデバイスあるいはシステムを広く表す。コンピューティングシステム７００の例としては、限定することなく、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス（例えば、携帯情報端末及び携帯電話）、ネットワーク機器、ストレージコントローラ（例えば、アレイコントローラ、テープドライブコントローラ、又はハードディスクコントローラ）などを含む様々なデバイスのうちの１つ以上が挙げられる。その最も基本的な構成において、コンピューティングシステム７００は、少なくとも１つのプロセッサ７１４と、メモリ７１６と、を含んでもよい。管理モジュール１２９若しくは属性グラフ１３０のうちの１つ以上又は本開示と整合するそれらの任意の修正を呼び出すソフトウェアを実行することによって、コンピューティングシステム７００は、上述の様式で動作を実行するように構成された専用コンピューティングデバイスになる。
【００７２】
プロセッサ７１４は、データの処理、又は命令の解釈及び実行が可能な任意のタイプ又は形式の処理ユニットを概して表す。特定の実施形態では、プロセッサ７１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ７１４に、本明細書に記載及び／又は例示する実施形態のうちの１つ以上の機能を実行させてもよい。例えば、プロセッサ７１４は、本明細書に記載する動作を実行してもよく、及び／又は実行するための手段であってもよい。プロセッサ７１４はまた、本明細書に記載若しくは例示する任意の他の動作、方法、若しくはプロセスを実行してもよく、及び／又は実行するための手段であってもよい。
【００７３】
メモリ７１６は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性記憶デバイス又は媒体を概して表す。例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（read only memory、ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ、又は任意の他の好適なメモリデバイスが挙げられる。必須でないが、特定の実施形態では、コンピューティングシステム７００は、揮発性メモリユニット及び不揮発性記憶デバイスの両方を含んでもよい。一例では、に実装するプログラム命令又は本明細書に記載される更なる動作を実装が、メモリ７１０にロードされてもよい。
【００７４】
特定の実施形態では、コンピューティングシステム７００はまた、プロセッサ７１４及びメモリ７１６に加えて、１つ以上の構成要素又は要素を含んでもよい。例えば、図７に例示するように、コンピューティングシステム７００は、メモリコントローラ７１８、入力／出力（Input/Output、Ｉ／Ｏ）コントローラ７２０、及び通信インターフェース７２２を含んでもよく、これらの各々は、通信インフラストラクチャ７１２を介して相互接続されてもよい。通信インフラストラクチャ７１２は、コンピューティングデバイスの１つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ７１２の例としては、限定することなく、通信バス（業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）、周辺構成要素相互接続（Peripheral Component Interconnect、ＰＣＩ）、ＰＣＩエクスプレス（PCI express、ＰＣＩｅ）、又は類似のバスなど）、及びネットワークが挙げられる。
【００７５】
メモリコントローラ７１８は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム７００の１つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ７１８は、通信インフラストラクチャ７１２を介して、プロセッサ７１４、メモリ７１６、及びＩ／Ｏコントローラ７２０間の通信を制御してもよい。特定の実施形態では、メモリコントローラ７１８は、本明細書に記載及び／又は例示する１つ以上の動作又は機能を単独又は他の要素との組み合わせのいずれかで実行してもよく、及び／又は実行するための手段であってもよい。
【００７６】
Ｉ／Ｏコントローラ７２０は、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ７２０は、プロセッサ７１４、メモリ７１６、通信インターフェース７２２、ディスプレイアダプタ７２６、入力インターフェース７３０、及びストレージインターフェース７３４などのコンピューティングシステム７００の１つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
【００７７】
通信インターフェース７２２は、コンピューティングシステム７００と、１つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態において通信インターフェース７２２は、コンピューティングシステム７００と追加のコンピューティングシステムを含むプライベート又は公衆ネットワークとの間の通信を容易にしてもよい。通信インターフェース７２２の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース７２２は、インターネットなどのネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース７２２はまた、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワークなど）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【００７８】
特定の実施形態では、通信インターフェース７２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム７００と、１つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース（Small Computer System Interface、ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（Universal Serial Bus、ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（Institute of Electrical and Electronics Engineers、ＩＥＥＥ）１８９４ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント（Serial Advanced Technology Attachment、ＳＡＴＡ）及びエクスターナルＳＡＴＡ（external SATA、ｅＳＡＴＡ）ホストアダプタ、アドバンスドテクノロジーアタッチメント（Advanced Technology Attachment、ＡＴＡ）、及びパラレルＡＴＡ（Parallel ATA、ＰＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプターなどが挙げられる。
【００７９】
通信インターフェース７２２はまた、コンピューティングシステム７００が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース７２２は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【００８０】
図７に例示するように、コンピューティングシステム７００はまた、ディスプレイアダプタ７２６を介して通信インフラストラクチャ７１２に連結されている少なくとも１つのディスプレイデバイス７２４を含んでもよい。ディスプレイデバイス７２４は、ディスプレイアダプタ７２６によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、ディスプレイアダプタ７２６は、ディスプレイデバイス７２４上に表示するために、通信インフラストラクチャ７１２から（又はフレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【００８１】
図７に例示するように、コンピューティングシステム７００はまた、入力インターフェース７３０を介して通信インフラストラクチャ７１２に連結されている少なくとも１つの入力デバイス７２８を含んでもよい。入力デバイス７２８は、コンピュータ又は人間のいずれかによって生成された入力を、コンピューティングシステム７００に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス７２８の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【００８２】
図７に例示するように、コンピューティングシステム７００はまた、ストレージインターフェース７３４を介して通信インフラストラクチャ７１２に連結されている記憶デバイス７３２を含んでもよい。記憶デバイス７３２は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス７３２は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。記憶インターフェース７３４は、コンピューティングシステム７００の記憶デバイス７３２と他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。記憶デバイス７３２のような記憶デバイスは、本明細書に記載されるデータ構造、並びにコンピュータシステムに本明細書に記載される動作のうちの１つ以上を実行させることが可能な１つ以上のコンピュータ可読プログラミング命令などの情報を記憶することができる。
【００８３】
特定の実施形態では、記憶デバイス７３２は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス７３２はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム７００にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス７３２は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。記憶デバイス７３２はまた、コンピューティングシステム５００の一部であってもよく、又は他のインターフェースシステムを通じてアクセスされる別個のデバイスであってもよい。
【００８４】
多くの他のデバイス又はサブシステムは、コンピューティングシステム７００に接続されてもよい。逆に、図７に例示する構成要素及びデバイスの全てが、本明細書において説明及び／又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図７に示すものとは異なる方法で相互接続されてもよい。
【００８５】
コンピューティングシステム７００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの１つ以上は、非一過性コンピュータ可読記憶媒体上にコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。非一過性コンピュータ可読記憶媒体の例としては、磁気記憶媒体（例えば、ハードディスクドライブ及びフロッピーディスク）、光学的記憶媒体（例えば、ＣＤ−、又はＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュメディア）などが挙げられる。そのようなコンピュータプログラムはまた、インターネットなどのネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム７００に転送されてもよい。
【００８６】
コンピュータプログラミング命令を含む非一過性コンピュータ可読記憶媒体は、コンピューティングシステム７００にロードされてもよい。非一過性コンピュータ可読記憶媒体上に記憶されたコンピュータプログラミング命令の全部又は一部分は、次いで、メモリ７１６及び／又は記憶デバイス７３２の種々の部分に記憶されてもよい。プロセッサ７１４によって実行されるとき、コンピューティングシステム７００にロードされたコンピュータプログラムは、本明細書において説明及び／又は例示する実施形態のうちの１つ以上の機能をプロセッサ７１４に実行させてもよく、及び／又はそれらを実行するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び／又は例示される例示的な実施形態のうちの１つ以上は、ファームウェア及び／又はハードウェアに実装され得る。例えば、コンピューティングシステム７００は、本明細書において開示される実施形態のうちの１つ以上を実装するように適合された特定用途向け集積回路（application specific integrated circuit、ＡＳＩＣ）として構成されてもよい。
【００８７】
図８は、クライアントシステム８１０、８２０、及び８３０、並びにサーバ８４０及び８４５がネットワーク８５０に連結されてもよいネットワークアーキテクチャ８００のブロック図である。クライアントシステム８１０、８２０、及び８３０は、図７のコンピューティングシステム７００などの任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。
【００８８】
同様に、サーバ８４０及び８４５は、種々のデータベースサービスを提供するように、及び／又は特定のソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを概して表す。ネットワーク８５０は、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（personal area network、ＰＡＮ）、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一実施例では、クライアントシステム８１０、８２０、及び／又は８３０のうちの１つ以上は、管理モジュール１２９及び／若しくは属性グラフ１３０、並びに／又はそれらの１つ以上の構成要素若しくはスレッドのうちの１つ以上を実行するように構成されたソフトウェアを含んでもよい。
【００８９】
図８に例示するように、１つ以上の記憶デバイス８６０（１）〜（Ｎ）は、サーバ８４０に直接取設されてもよい。同様に、１つ以上の記憶デバイス８７０（１）〜（Ｎ）は、サーバ８４５に直接取設されてもよい。記憶デバイス８６０（１）〜（Ｎ）及び記憶デバイス８７０（１）〜（Ｎ）は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。特定の実施形態では、記憶デバイス８６０（１）〜（Ｎ）及び記憶デバイス８７０（１）〜（Ｎ）は、ネットワークファイルシステム（Network File System、ＮＦＳ）、サーバメッセージブロック（Server Message Block、ＳＭＢ）、又は共通インターネットファイルシステム（Common Internet File System、ＣＩＦＳ）など種々のプロトコルを使用して、サーバ８４０及び８４５と通信するように構成されたネットワーク接続型記憶（network-attached storage、ＮＡＳ）デバイスを表してもよい。このような記憶デバイスは、上述のようにバックアップ情報及び記憶構成情報を記憶することができる。
【００９０】
サーバ８４０及び８４５はまた、ストレージエリアネットワーク（ＳＡＮ）ファブリック８８０に接続されてもよい。ＳＡＮファブリック８８０は、複数の記憶デバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ＳＡＮファブリック８８０は、サーバ８４０及び８４５と、複数の記憶デバイス８９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ８９５との間の通信を容易にしてもよい。ＳＡＮファブリック８８０はまた、デバイス８９０（１）〜（Ｎ）及びアレイ８９５が、クライアントシステム８１０、８２０、及び８３０にローカルに取設されたデバイスとして見えるような様式で、ネットワーク８５０並びにサーバ８４０及び８４５を介して、クライアントシステム８１０、８２０、及び８３０と、記憶デバイス８９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ８９５との間の通信を容易にしてもよい。記憶デバイス８６０（１）〜（Ｎ）及び記憶デバイス８７０（１）〜（Ｎ）と同様に、記憶デバイス８９０（１）〜（Ｎ）及びインテリジェント記憶アレイ８９５は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。
【００９１】
特定の実施形態では、図７のコンピューティングシステム７００を参照すると、図７の通信インターフェース７２２などの通信インターフェースは、それぞれのクライアントシステム８１０、８２０、及び８３０と、ネットワーク８５０との間の接続性を提供するために使用されてもよい。クライアントシステム８１０、８２０、及び８３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ８４０又は８４５上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム８１０、８２０、及び８３０が、サーバ８４０、サーバ８４５、記憶デバイス８６０（１）〜（Ｎ）、記憶デバイス８７０（１）〜（Ｎ）、記憶デバイス８９０（１）〜（Ｎ）、又はインテリジェント記憶アレイ８９５によってホストされるデータにアクセスすることを可能にしてもよい。図８は、データを交換するためのネットワーク（インターネットなど）の使用を描写するが、本明細書において説明及び／又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
【００９２】
少なくとも１つの実施形態において、本明細書において開示される実施形態のうちの１つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ８４０、サーバ８４５、記憶デバイス８４０（１）〜（Ｎ）、記憶デバイス８７０（１）〜（Ｎ）、記憶デバイス８９０（１）〜（Ｎ）、インテリジェント記憶アレイ８９５、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される実施形態のうちの１つ以上の全て又は一部分はまた、コンピュータプログラムとしてコード化され、サーバ８４０内に記憶され、サーバ８４５によって実行され、ネットワーク８５０を通じてクライアントシステム８１０、８２０、及び８３０に分散されてもよい。
【００９３】
いくつかの例では、図１Ａ、図１Ｂ、図７、及び図８のシステムのうちの１つの全部又は一部分は、クラウドコンピューティング又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００９４】
加えて、本明細書に記載の構成要素のうちの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、ある形式から他の形式に変換し得る。例えば、本明細書に記載される動作のうちの１つ以上は、本明細書に記載される種々の動作を実行することができるように、コンピュータシステムの挙動を変換することができる。
【００９５】
本発明をいくつかの実施形態と関連して説明してきたが、本発明は、本明細書で述べた特定の形式に限定されることを意図しない。逆に、本発明は、添付の特許請求の範囲によって規定されるような本発明の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含することを意図する。
【図１Ａ】
0006841921.tif 000002
【図１Ｂ】
0006841921.tif 000003
【図２】
0006841921.tif 000004
【図３】
0006841921.tif 000005
【図４】
0006841921.tif 000006
【図５】
0006841921.tif 000007
【図６】
0006841921.tif 000008
【図７】
0006841921.tif 000009
【図８】
0006841921.tif 000010