本発明の開示の多くの態様は、以下の図面を参照することにより詳細に理解できる。図面におけるコンポーネントは、必ずしも一定の縮尺で記載されておらず、代わりに、本発明の開示の原理を明確に説明することに重点が置かれている。さらに、図中の同様の参照符号は、複数の図面を通して対応する部品を指す。
図1を参照すると、本発明の開示の様々な実施形態によるデータ通信ネットワーク100が示されている。データ通信ネットワーク100は、種々のネットワーク上を相互に通信する種々のデバイスを含む。このようなネットワークは、例えば、インターネット、イントラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク、無線ネットワークもしくは他の適切なネットワークなど、または2つ以上のこれらのネットワークの任意の組み合わせを含んでもよい。
様々な実施形態による1つ以上のサーバ103が、データ通信ネットワーク100内の各種デバイスの中にある。1つ以上のサーバ103は、理解できるように、例えば、1つ以上のサーババンク内に配置されてもよく、サーバコンピュータを備えてもよい。サーバ103は、理解できるように、単一施設内に設置されてもよく、または、複数の地理的に離れた場所に分散されてもよい。便宜上、本明細書では、1つ以上のサーバ103はサーバ103と称するが、本明細書で引用されるサーバ103は複数のサーバを表すこともあることが理解される。
さらに、データ通信ネットワーク100は、データストリームとしてサーバ103に送信され得るログおよび/またはメトリクス109を生成する被監視システム106を含む。この点に関し、本明細書で考えるようなデータストリームは、理解できるように、例えばバッチ転送または他の転送を採用し得る種々の転送方法を表している。被監視システム106は、メトリクス109を生成するサービスまたは物理システムの一例である。
この目的を達成するために、メトリクス109は、被監視システム106の状態を記述してもよい。この被監視システムの状態には、理解できるように、例えば、被監視システム106の性能またはメトリック109によって定量化され得る他のステータス情報の態様を含んでもよい。例えば、被監視システム106は、種々の機能を実行し、機能の性能の特性を記述した種々のメトリクス109を生成する実際のサーバコンピュータなどの、ハードウェアベースのシステムを備えてもよい。あるいは、被監視システム106は、理解できるように、1つ以上のサーバコンピュータにおいて実行されるウェブサービスまたは他のサービスなどのアプリケーションを備えてもよい。
データ通信ネットワーク100は、後述するように、サーバ103上で各種のサービスと通信する少なくとも1つのクライアント113をさらに含む。クライアント113は、例えば、デスクトップ型、ラップトップ型、または同様の能力を備える他のコンピュータシステムなど種々のタイプのコンピュータシステムを備えてもよい。この目的を達成するために、クライアント113はまた、理解できるように、携帯情報端末、携帯電話、または同様の能力を備える他の携帯用装置を備えてもよい。クライアント113は、理解できるように、ブラウザアプリケーション、専用アプリケーション、または他のアプリケーションなど種々のアプリケーションを用いて、サーバ103とインターフェースしてもよい。
様々な実施形態に基づいてサーバ103で実行される種々のアプリケーションがある。また、後述するように、1つ以上のデータ記憶が、データを記憶するためにサーバ103に関連付けされてもよい。サーバ103上で実行されるアプリケーションの中には、認証アプリケーション123、集合アプリケーション126、データ記憶アプリケーション129、監視サービス133、およびネットワーク・サーバ・アプリケーション136がある。さらに、種々のアプリケーションの動作に基づいてデータを記憶するために、サーバ103内には種々の記憶キューがある。このような記憶キューは、集合キュー143と記憶キュー146とを含む。上述のアプリケーションは、それらアプリケーションが実行する機能をどのように構成し得るかについての単なる例であることが理解される。しかし、理解できるように、代替の構成で構成された異なるアプリケーションセットを用いて同じ機能を実行することも可能である。
さらに、データ記憶149は、サーバ103にアクセス可能なメモリ内に記憶されている。後述するように、メトリクス109を表すデータモデル151が、データ記憶149に記憶されている。この目的を達成するために、データ記憶149に記憶されるデータモデル151は、ディメンション(dimension)153に関係付けされる。ディメンション153は、被監視システム106からサーバ103内に受信されたメトリクス109に関連付けて特定される。各データモデル151は、時間帯156と関連付けて記憶される。各時間帯156は、データ記憶149内のディメンション153のそれぞれ1つと関連付けされている。各時間帯156は、所定のディメンション153に関連する、複数の連続の時間帯のうちの1つを含む。ディメンション153は、ディメンションラベルと値とを有するキーペアを含む。
上述のように、被監視システム106は、ネットワークまたは他の通信システムを介してサーバ103に送信または転送されるメトリクス109を生成する。あるいは、被監視システム106がサーバ103内で実行されてもよく、この場合、転送はサーバ103内のアプリケーション間の転送を必要とする。
メトリクス109は、メトリクス109が、事前に定義された特定の転送プロトコルおよび/またはフォーマットに適合することを最初に保証する認証アプリケーション123によって受信される。さらに、認証アプリケーション123は、後述するように、メトリクス109によって特定されたディメンション153の数が時間経過に伴って所定のしきい値を超えないことを保証するか、またはそうでない場合は、ディメンションオーバーランを示さないことを保証するように構成される。メトリクス109が認証アプリケーション123によって認証されると、メトリクス109は集合キュー143内に置かれ、集合アプリケーション126によって作動される。
集合アプリケーション126は、集合キュー143内のメトリクス109を処理し、その結果を記憶キュー146に供給し、データ記憶アプリケーション129によってデータ記憶149に記憶されるようにする。様々な実施形態によれば、集合アプリケーション126は、各時間帯156に対する複数のメトリクス109を集める役割を果たす。この目的を達成するために、集合アプリケーション126は、サーバ103内に受信され、および認証アプリケーション123によって認証されたメトリクス109の時間集合を実行するように構成されている。
詳細に説明すると、様々な実施形態によれば、メトリクス109が認証アプリケーション123内に受信される速度は極めて速い。例えば、受信されるメトリクス109は、例えば、1日に30テラバイトなど、1日に複数のテラバイトのデータを含むことが可能である。ただし、フローの速度は、この水準より小さくても大きくてもよい。場合によっては、このようなフロー速度は、毎分200,000、または最大で500,000またはそれ以上のメトリクスを含んでもよいが、フロー速度は任意の速度であってもよい。このようなメトリクス109をそれぞれ記憶するのは、経済的にも、また必要な記憶空間や設備といった点からもかなり費用を要する可能性がある。
一実施形態によれば、メトリクス109自体を全て記憶しようとするのではなく、データモデル151が、複数の連続の時間帯156のうちのそれぞれ1つに関連付けて構成される。別の表現をすれば、各連続の時間帯156に関連するメトリクス109はデータモデル151によって表される。一実施形態によれば、データモデル151を生成する処理は、各連続の時間帯156に対するメトリクス109を集合し、それによって1つ以上の集合メトリクスを生成することを含む。この目的を達成するために、データモデル151は1つ以上の集合メトリクスを含んでもよい。
例えば、時間帯156は任意の時間間隔として特定できることが理解されるが、連続の時間帯156のそれぞれを1分と特定する。時間帯156のうちの所定の1つの時間帯に関連する各メトリック109は、時間帯156を表すデータモデル151内に集められる。したがって、所定の1分の時間帯156に対して、時間帯156に関連する各メトリック109がその時間帯156に対するデータモデル151内に集められる。複数のメトリクス109をデータモデル151内に集めるために、後述のように、種々の計算が実行されてもよい。最終的に、各時間帯156に関連するデータモデル151は、時間帯156に対するメトリクス109に関する種々の情報を表す多数の値を含んでもよい。
メトリック109は、例えば、メトリック109が、時間帯156自体の中にあるタイムスタンプを有する場合、所定の時間帯156に関連付けられる。所定のメトリック109に関連するタイムスタンプは、被監視システム106によって生成されてもよく、または認証システム123によって生成されてもよく、サーバ103内にメトリック109を受信するときにメトリック109に関連付けされてもよい。
所定のメトリック109は、複数の時間帯156に対する集合内に含まれてもよく、その場合、各時間帯156は複数の異なるディメンション153のうちの1つに関連付けされている。本発明の開示の様々な実施形態によれば、ディメンション153は、データ記憶149内でデータモデル151が保持されるカテゴリーである。様々な実施形態によれば、1つ以上のディメンション153が、サーバ103内に受信された各メトリック109に関連付けられている。ディメンション153は、最終的には、データ記憶149へのデータモデル151の記憶を組織化するために用いられる。すなわち、所定の時間帯156に関連するデータモデル151はそれぞれ、ディメンション153のうちの1つに関連付けしてデータ記憶149に記憶される。
メトリック109が、例えば1つ以上の関連ディメンション153と共に、サーバ103内に受信されると、メトリック109は、関連するディメンション153のそれぞれに対する各時間帯156に関連する集合内で使用される。このように、所定のメトリック109は、メトリック109に関連するディメンション153の各時間帯156に関連する複数の異なるデータモデル151に結果的になる集合内で使用されてもよい。
この目的を達成するために、集合アプリケーション126が所定のメトリック109を処理するとき、アプリケーション126はメトリック109に関連するディメンション153を決定する。その後、集合アプリケーション126は、メトリック109と共に含まれているディメンション153に関連する各時間帯156に対するデータモデル151に結果的になる集合内にメトリック109を含む。
一実施形態によれば、メトリック109が、それぞれのディメンション153の1つ以上の時間帯156に対して実行される集合内に含まれると、集合アプリケーション126はメトリック109を破棄する。この点から、生成されたメトリクス109が実際はもはや存在しないため、被監視システム106の動作に関する診断または他の機能を実行するために、各時間帯156に対するデータモデル151のみがアクセスされてもよい。別の表現をすれば、データモデル151の生成を結果的にもたらす集合の後は、実際のメトリクス109は、実際には記憶されていないため回復することができない。これは、時間帯156に関連してデータモデル151を記憶する記憶空間の量が、実際のメトリクス109自体を記憶するのに必要となる記憶空間の量よりも実質的に少ないため、有利である。実際のメトリクス109の代わりにデータモデル151を記憶することは、例えば、1000対1の比率または他の比率で、記憶されるデータが減ることを意味する可能性がある。
一実施形態によれば、データの記憶がデータ記憶149内でそれにより組織化されるディメンション153は、サーバ103内に受信されたメトリック109内にディメンション153が出現することに基づいて、増大または拡大されてもよい。この意味では、ディメンション153を増大または拡大するとは、既存のディメンションに新しいディメンション153を加えることを意味する。一実施形態によれば、新しいディメンション153は、メトリック109に関連して最初に出現するだけで生成される。様々な実施形態によれば、集合アプリケーション126は、集合アプリケーション126が、メトリック109に関連する新しいディメンション153と遭遇すると、最初に新しいディメンション153を含むメトリック109のタイムスタンプを含む待ち状態の時間帯156で始まる新しいディメンション153に対する後続のメトリクス109の集合を開始するように、構成されている。
この点に関して、データモデル151の記憶は、駆動されたデータである。データ記憶149内でデータモデル151がそれに関連付けされるディメンション153は、サーバ103内に受信されたメトリクス109に基づいて生成される。別の表現をすれば、ディメンション153は、データ記憶149内で事前に構成されておらず、または特定されていない。これは、有利には、メトリクス109の記憶において、被監視システム106のオペレータに大きい自由度を提供する。具体的には、メトリクス109が集められ、記憶されるディメンション153に関する制御は、被監視システム106のオペレータによって維持される。
同時に、認証システム123は、ディメンション153の拡大がエラーを含むかどうかを検出するように構成されている。これは、後述するように、例えば、拡大によって、所定の被監視システム106がディメンション153を過大に生成する結果となる場合に発生することがある。例えば、認証アプリケーション123は、所定のエンティティに対するディメンション153の数を、以前の合意に基づいた任意の所定の時間におけるディメンション153のしきい値に限定するように構成されてもよい。この限界を超えると、認証システム123は、ディメンション153が拡大したことによって、ディメンション153の許容可能なしきい値を超えるディメンション153の総数となったことを現場の担当者に知らせるサーバ103内でエラーを生成し得る。
あるいは、認証アプリケーション123は、新しいディメンション153が、実際には、新しいかまたは以前に存在していないディメンション153が誤って出現する結果をもたらす、以前の既存のディメンション153の誤った変数であるかどうかを検出することによって、ディメンション153の拡大がエラーを含むかどうかを検出するように構成されてもよい。例えば、場合によっては、被監視システム106は、所定のディメンション153をタイムスタンプまたは他のデータに追加してもよい。
時間帯156に関連するタイムスタンプを有する受信された別のメトリクス109が存在しない状態が現れるため、所定の時間帯156に対する集合が完了したと見なされると、集合の結果得られたデータモデル151は、記憶キュー146内に置かれ、それぞれのディメンション153に関連付けてデータ記憶149内に記憶される。したがって、データ記憶149内の各ディメンション153に対するデータは、複数の連続の時間帯156に関連するデータを含む。
一実施形態によれば、データモデル151は、限定された時間帯に対して、データ記憶149に記憶される。この目的を達成するために、データ記憶アプリケーション129は、所定の時間帯に対してデータモデルを記憶した後、データモデル151を破棄するよう構成されてもよい。記憶時間の長さは、記憶空間がどのくらい存在するか、データモデル151または記憶される他のデータによって示されるデータ量がどのくらい存在するか、および/またはデータを記憶する目的によって変化する可能性がある。このような時間帯は、例えば、2週間または他の期間である場合もある。いずれにせよ、例えば事業目的などのデータを記憶する目的が、使用される記憶空間の量などに関わらず、記憶時間が特定されることを要求する場合もある。
さらに、監視サービス133は、クライアント113からの要求に応じて、データ記憶149内に記憶されたデータモデル151に基づいて、情報を提供するように構成されている。このように、監視サービス133は、データ記憶149内に記憶されたデータモデル151に基づいて被監視システム106の性能を表す出力を生成するように構成されている。
この目的を達成するために、ネットワーク・サーバ・アプリケーション136は、監視サービス133へのブラウザアクセスまたは他のアクセスが容易になるウェブサーバまたは他のサーバアプリケーションを備えてもよい。監視サービス133は、データ記憶149内に記憶されたデータに基づいてレポートを生成するように構成されてもよい。このようなレポートは、被監視システム106の過去の性能に関する情報を中継してもよい。レポートは、所定のエンティティに対するクライアント113に送信されるように、事前に決定され、自動的に生成されてもよく、クライアント113によってリアルタイムに要求されてもよい。例えば、所定のエンティティが、データがデータ記憶149内に記憶されたディメンション153に基づいて、特定のレポートなどを要求してもよい。さらに、クライアント113に提供するレポートその他を生成する際に別の方法を採用して、被監視システム106の動作の健康状態を監視できるようにしてもよい。
さらに、別の実施形態によれば、サーバ上で実行可能なアプリケーションはさらに、データ記憶166内の1つ以上のアクティブ・メトリック・リスト169を維持するメトリック・ディレクトリ・アプリケーション163を含む。メトリック・ディレクトリ・アプリケーション163は、データモデル151がそれに対して検索され得るアクティブメトリクス109のリストを保持する役割を果たす。この目的を達成するために、メトリック109の1つ以上のインスタンスから生成されたデータモデル151が、データ記憶149に記憶されるたびに、そのデータモデルのコピーがメトリック・ディレクトリ・アプリケーション163に供給される。あるいは、メトリクス109自体のコピーがメトリック・ディレクトリ・アプリケーション163に送信されてもよい。アクティブ・メトリック・リスト169はそれぞれ、表、データベースまたは他のデータ構造の形で記憶されてもよい。
受信されたデータモデル151のコピーに基づいて、メトリック・ディレクトリ・アプリケーション163が1つ以上のアクティブ・メトリック・リスト169を保持する。具体的には、アクティブ・メトリック・リスト169は、監視サービス133を介してアクセスされ得るデータ記憶149内に現在記憶されているアクティブメトリクス169のリストを含む。具体的には、被監視システム106の動作を監視する目的でデータモデル151内に組み込まれたデータにアクセスするために、クライアント113は、最初、データ記憶149内でデータがそれに対して記憶されているメトリクス109のディレクトリを要求することができる。あるいは、このようなディレクトリは、クライアント113がホームページまたは他の入力の開始点においてデータ記憶149内のデータにアクセスを試みるときに、自動的に生成されてもよい。アクティブ・メトリック・リスト169は、例えば、メトリクス109をサーバ103に送信する所定のエンティティに関連付けられてもよい。
要求に応じて、または、クライアント113に送信される、例えば、ホームページなどの最初のポータルを作成する際に、メトリック・ディレクトリ・アプリケーション163は、クライアント113に提示するために、データ記憶149内にデータモデル151がそれに対して現在記憶されているアクティブメトリクス109の現在リストまたはディレクトリを生成するように構成される。アクティブメトリクス109の現在リストまたはディレクトリが、実際に現在のものであることを保証するために、メトリック・ディレクトリ・アプリケーション163は、アクティブ・メトリック・リスト169を保持するよう構成される。
これを実現するために、一実施形態によれば、被監視システム106から受信されたメトリック109の最後のインスタンスが、所定の時間帯よりも長くデータ記憶149に記憶されている場合、メトリック109はアクティブ・メトリック・リスト169に記載されない。一例では、このような時間帯は、分、時間、日、週、月または他の間隔で測定されるいずれの時間帯であってもよい。一例の時間帯は、2週間であってもよい。しかし、時間帯は、利用可能な記憶空間などの要因や他の変数によって変化してもよい。
一実施形態によれば、メトリック・ディレクトリ・アプリケーション163が、メトリック109自体の形の、または、アクティブ・メトリック・リスト169にリストアップされていないデータモデル151として、集合アプリケーション126から新しいメトリック109を受信すると、メトリック・ディレクトリ・アプリケーション163は、メトリック109に関連した現在のタイムスタンプを識別し、メトリック109に関する情報と、それぞれのアクティブ・メトリック・リスト169内の現在のタイムスタンプとを記憶する。
メトリック109がアクティブ・メトリック・リスト169内に以前から含まれている場合は、メトリック・ディレクトリ・アプリケーション163は、単に、メトリック109の最新に受信したインスタンスのタイムスタンプを有するメトリック109に関連するタイムスタンプを更新する。このようにして、現在のアクティブメトリクス109および/またはアクティブ・メトリック・リスト169内のデータモデル151の最新リストが維持される。
さらに、アクティブ・メトリック・リスト169内の所定のメトリック109に関連するタイムスタンプがメトリック109に関連する最新のデータが、上述の所定の記憶時間帯よりも長くデータ記憶149に記憶されていたことを示す場合は、メトリック・ディレクトリ・アプリケーション163は、続いて、このようなメトリック109をアクティブ・メトリック・リスト169から除去する。例えば、データモデル151が所定の記憶時間帯でデータ記憶149にのみ記憶されていると仮定すると、このようなデータモデル151はそれらが破棄されているため、利用できない。このような状況で、アクティブ・メトリック・リスト169にリストアップされたメトリクス109は古くなっていく。したがって、メトリック・ディレクトリ・アプリケーション163によって、アクティブ・メトリック・リスト169から古くなったメトリクス109を除去することによって、クライアント113は確実に、データ記憶149内に存在しないメトリクス109へのアクセスを試みないようになる。
さらに、所定の被監視システム106を作動するエンティティは、プライバシーまたは安全への配慮により、アクティブ・メトリック・リスト169内にメトリクス109を含むことを選択しない場合もある。この目的を達成するために、このようなエンティティによって、サーバ103内に送信されるメトリクス109に識別子を含むようにし、この識別子によりそのようなメトリクス109を無視するかまたは破棄するようにメトリック・ディレクトリ・アプリケーション163に指示して、そのようなメトリクス109がアクティブ・メトリック・リスト169内に含まれないようにしてもよい。
図2を参照すると、本発明の開示の一実施形態による被監視システム106によって生成されたメトリック109(図1)の一例が示されている。メトリック109は、拡張可能なマークアップ言語(XML)で表現されるが、理解できるように、メトリック109は他の言語およびフォーマットで表現されてもよいことが理解される。メトリック109は、例えば、「ネーム」、「ネームスペース」、「ウェブサイト」、「ページタイプ」および「サーバ」などのディメンション153(図1)を含む。これらのディメンション153は、所定のメトリクス109に含まれ得る多数の異なる種類のディメンション153の単なる例であることが理解される。この目的を達成するために、ディメンション153は、理解されるように、1つの変数または他の値まで減少し得る任意のカテゴリーであってもよい。メトリック109が生成された時間を示すタイムスタンプ173がさらに、メトリック109に関連付けられる。ディメンション153は「ネーム」および「ネームスペース」を含むものとして示されているが、実施形態によっては、これらのフィールドはディメンション153を含まず、「ディメンション」ネストの外側のメトリック109内のいずれの位置に置かれてもよい。
このようにして、タイムスタンプ173は、メトリック109が生成された時点における被監視システム106の状態を識別できる。図2の例では、タイムスタンプ173は、ウェブページの作成に関連する待ち時間を示す。したがって、ページ自体が作成された後に待ち時間が特定されると、タイムスタンプ173が生成される。あるいは、メトリック109は、タイムスタンプ173なしにサーバ103(図1)で受信されてもよい。このような場合、認証アプリケーション123は、メトリック109を受信次第、タイムスタンプ173を生成し、このようなタイムスタンプ173をメトリック109に関連付けるように構成されてもよい。
メトリック109はさらに、被監視システム106(図1)の作動のいくつかの態様を記述する値176を含む。例えば、図2のメトリック109に記述される値176は、ウェブページの作成に関連する待ち時間を表す値である。しかし、メトリック109に関連する値176は、理解できるように、値で表現できるかまたは値を定量化できる被監視システム106の1つの態様を表してもよいことが理解される。これに加えて、メトリック109はさらに、値176の単位179を表す。
特定の例を提供するために、メトリクス109は、プロセッサリソースの利用百分率、およびネットワークインターフェースに関連するトラフィック処理能力を示してもよい。メトリクス109は、ディスクまたは他の種類のメモリに書き込まれるかまたはそこから読み出されるバイト数を含んでもよい。メトリクス109は、応答待ち時間、要求回数、ならびに、健康なおよび/または不健康なホストのインスタンス数に関係してもよい。さらに、メトリクス109は、所定の被監視システム106の作動または利用に関連する他のパラメータに関係してもよい。
図3を参照すると、本発明の開示の様々な実施形態によるサーバ103内の種々のコンポーネントの動作を示すブロック図が示されている。この目的を達成するために、図3は、集合キュー143と、集合アプリケーション126と、記憶キュー146と、データ記憶アプリケーション129と、データ記憶149とを示している。集合キュー143は、タイムスタンプ173と、種々のディメンション153と、値176と、ユニット179とに関して表される、複数のメトリクス109を含む。
集合アプリケーション126は、集合キュー143からメトリクス109にアクセスし、時間集合を実行し、それによって、上述のように、各時間帯156に対するデータモデル151を生成する。例えば、図3で示されるように、集合アプリケーション126は、現在、3つの異なるディメンション153、すなわちディメンションD1、D2、D3に対する待ち状態の時間帯156aに対してデータモデル151を生成している。ディメンションD1、D2、D3は、ネーム、ネームスペースおよびページタイプを含むメトリクス109のディメンション153に相当する。本明細書で説明するディメンション153は、単に例として提供されているのであって、他のディメンション153が採用されてもよいことが理解される。集合アプリケーション126は、ディメンション153のそれぞれに対する待ち状態の時間帯156aについてのデータモデル151を計算する。例えば、図3に関して示されるように、現在待ち状態の時間帯156aは、「10:01」で始まる1分間の間隔に対するものである。
3つのディメンション153に対して3つの待ち状態の時間帯156aがあり、各時間帯156は、データ記憶149内のディメンション153の1つにそれぞれ関連付けて記憶される。集合アプリケーション126が集合キュー143からメトリクス109を取得すると、集合アプリケーション126は、各ディメンション153または遭遇する任意の他のディメンション153に対して待ち状態の時間帯156aのそれぞれについてのデータモデル151を計算する。ある時点で、別のメトリクス109が待ち状態の時間帯156に対して受信される可能性がないと考えられる。そのような時点では、集合アプリケーション126は、データ記憶149内に記憶されるべき待ち状態の時間帯156aに対するメトリクス109の集合の結果を、記憶キュー146内に置く。
記憶キュー146内に置かれたデータモデル151は、例えば、被監視システム106(図1)からサーバ103内に受信されている各時間帯156に関連するメトリクス109を記述するかまたは表す、複数の集合メトリクスを含んでもよい。この目的を達成するために、集合メトリクスは、例えば、各時間帯156に関連するメトリクス109の総数と、各時間帯156のメトリクス109に関連する値176の平均と、値176の最大値および/または値176の最小値とを含んでもよい。また、任意の他の種類の集合メトリックまたは、所定の時間帯156に対するメトリクス109についての他の情報と同様に、値176の合計が保持されてもよい。
計算された集合メトリクスの種類は、各時間帯156に対して実行される集合度合いに関係する。したがって、集合度合いは、所定の時間帯156に関連するメトリクス109に対してデータモデル151で保持された情報の詳細度合いに関係する。より多くの集合メトリクスが計算される場合、またはより大量の情報がデータモデル151内で保持される場合、集合度合いは低くなる。また、より少ない集合メトリクスが計算される場合、またはより少ない量の情報がデータモデル151内で保持されている場合、集合度合いはより高くなるという逆のことも成り立つ。
集合度合いはデータモデル151が生成される時間帯156の長さにも関連する。集合度合いは時間帯156が短くなるにつれて減少する。逆に、時間帯156が長くなるにつれて、集合度合いは高くなる。
選択される集合度合いは、被監視システム106を監視するために必要なデータに部分的に依存してもよい。この目的のために、記憶されたデータモデル151の特性が、被監視システム106を監視できる方法をある程度決定する。例えば、データモデル151を検査して、被監視システム106が動作しきい値に適合しているかどうかを決定する必要がある。データモデル151は、動作しきい値に関して被監視システム106の性能を決定および/または測定するために必要なデータを反映しなければならない。例えば、平均待ち時間が所定のしきい値より大きくなる場合、待ち時間を低減するために、処理容量などの追加のリソースを導入するといった、訂正アクションをとる必要がある。あるいは、各時間帯156に対するメトリクス109の集合度合いを特定することにより、1つ以上の事前に定義された動作しきい値に関して測定され得るかまたは測定され得ない被監視システム106の性能の全体監視を可能にする、必要とされる集合メトリクスを有するデータモデル151を生成する。
場合によっては、集合アプリケーション126は集合キュー143からメトリクス109の遅れた1つを取得してもよい。例えば、図3に示されるように、集合キュー143は10:01のタイムスタンプ173を有する大部分のメトリクス109を含む。しかし、メトリクス109の1つは「09:52」のタイムスタンプ173を有する。これは、いくつかの理由で、被監視システム106から相対的に遅れて受信したメトリック109を表す。このような「遅れた」メトリクス109は、他のメトリクス109に対して時間順序から外れて受信したメトリクス109を表す。
一実施形態によれば、集合アプリケーション126は遅れたメトリック109に関連する各時間帯156に対するデータモデル151に関するデータ記憶アプリケーション129に要求を送信してもよい。次に、データ記憶アプリケーション129は、各時間帯156に対するデータモデル151にアクセスし、データモデル151を集合アプリケーション126に戻す。メトリクス109の遅れた1つが記憶キュー146内に記憶された時間帯156に関連している場合には、データ記憶アプリケーション129は、所定の時間帯156がデータ記憶149内にまだ記憶されていないことが決定された後に、記憶キュー146を探索してもよい。
集合アプリケーション126からの要求に応答して、データ記憶アプリケーション129は、メトリクス109の遅れた1つの時間帯156に関連するデータモデル151に戻り、この結果、それぞれのデータモデル151がメトリクス109の遅れた1つで更新されてもよい。その後、集合アプリケーション126は、置かれるべき記憶キュー146内のデータモデル151の更新された1つを、データ記憶149に置く。この点において、データモデル151の更新された1つはデータ記憶149内に記憶されてもよい。1つの代替方法では、データモデル151の更新された1つは、理解できるように、前のデータモデル151に上書きされてもよい。
これは、集合アプリケーション126が時間帯156の古い1つに対する値を維持できる点で明らかな利点を提供する。これは、理解できるように、例えばインターネットまたは他のネットワークなどの様々なネットワークを介する中継においてメトリクス109が維持される状況に対応する。
さらに、所定のディメンション153に対して記憶された時間帯156は、被監視システム106がサーバ103のクロックに対して早く設定されたクロックを有することができることから、サーバ103により認知される現在時間より大きいタイムスタンプ173を有してもよい、ことに留意すべきである。したがって、各時間帯156に関連するタイムスタンプ173は、将来、サーバ103により認知される時間に比べて延長してもよい。一実施形態によれば、遮断の指定は、将来、サーバ103のクロックに比べてはるかに遠いタイムスタンプ173を有する受信したメトリクス109が無視されるか、または被監視システム106内のタイムスタンプ173の問題点を解決するために取られる訂正アクションを必要とするエラーが発生するように、指定される。一実施形態によれば、将来のタイムスタンプ173に対する許容できる制限は、サーバ103の現在時間から1時間、または理解できる他の時間制限である。このような時間制限は、生成されたメトリクス109の実際の時間に比べて将来はるかに遠いタイムスタンプ173が生成されるというような、被監視システム106に関連する故障が存在する可能性がある、という事実を反映する。
さらに、集合キュー143および記憶キュー146が採用され、および様々な機能コンポーネントが構成され、これにより、電源喪失の発生時におけるデータの喪失等を防止する。
次に図4を参照すると、様々な実施形態に関して図3に示されたのと同様に、様々なコンポーネントの動作の別の例が示されている。図4に示されるように、集合キュー143内にメトリクス109を受信したある時点で、新しいディメンション153が表われる。具体的には、「ページタイプ=ページ1」の新しいディメンションが集合キュー143内に現れる。新しいディメンション153の出現に応答して、集合アプリケーション126は新しいディメンション153に関連する新しい待ち状態の時間帯D4を生成する。集合アプリケーション126はまた、データ記憶149内への記憶のために新しいディメンションD4が生成されている、データ記憶アプリケーション129と通信してもよい。
あるいは、データ記憶アプリケーション129は、記憶キュー146から新しいディメンション153に関連するデータモデル151にアクセスするとき、データ記憶149内の新しいディメンション153に関連するそれぞれのデータモデル151を自動的に記憶してもよい。これは、データ記憶149内へのデータモデル151の記憶がデータ駆動型である事実を表す。すなわち、データは、理解できるように、サーバ103が被監視システム106から受信したメトリクス109に関連するディメンション153に基づいて、自動的に新しいディメンション153に関連付けて記憶される。
図5を参照すると、上述の説明を考慮して、集合アプリケーション126の様々な機能の一例を表すフローチャートが示されている。あるいは、図5のフローチャートはサーバ103(図1)において実行される方法のステップを示すものとして見ることもできる。
図5のフローチャートは、例えば、集合キュー143(図3)から得られる各メトリック109(図2)に対して実行されるルーチンを表す。所定のメトリック109が集合キュー143(図3)から得られたと仮定すると、次にボックス250において、集合アプリケーション126が、メトリック109に関連するタイムスタンプ173(図2)が、任意の所定時間において集合アプリケーション126により維持されたそれぞれのディメンション153(図3)に対する現在待ち状態の時間帯156a(図3)に関する時間順序から外れているかどうかを決定する。現在のメトリック109を考慮に入れる必要がある1つ以上のデータモデル151(図3)が、ディメンション153のそれぞれ1つに関連する記憶キュー146(図1)内またはデータ記憶149(図1)内に既に記憶されている場合、メトリック109は順序から外れてもよい。
ボックス250において、現在のメトリック109が時間順序から外れていると決定された場合、集合アプリケーション126はボックス253に進む。そうでない場合、集合アプリケーション126はボックス256に進む。ボックス253では、集合アプリケーション126は、集合アプリケーション126の現在待ち状態の時間帯156に関する時間順序から外れているメトリック109に関連する1つ以上のデータモデル151の更新を実行する。これには、上述の更新が必要なそれぞれのデータモデル151を検索するために、データ記憶アプリケーション129(図1)と通信することを含み得る。その後、図示されるように、集合アプリケーション126は終了する。
ボックス256では、集合アプリケーション126は、集合キュー143から得られた現在のメトリック109内に新しいディメンション153が存在するかどうかを決定する。存在する場合、集合アプリケーション126はボックス259に進む。存在しない場合、集合アプリケーション126はボックス263に進む。
ボックス259では、集合アプリケーション126は、新しいディメンション153に対する新しい記憶バケットおよび待ち状態の時間帯156aのセットアップを実行する。この意味における記憶「バケット」は、データ記憶149内の新しいディメンションに関連するデータモデル151または他のデータの記憶を表す抽象概念である。新しいディメンション153に対する新しい記憶バケットのセットアップを実行するために、集合アプリケーション126はデータ記憶アプリケーション129と通信して、新しいディメンション153に対する新しい記憶バケットの必要なことをデータ記憶アプリケーション126に通知してもよい。
あるいは、集合アプリケーション126は単に、新しいディメンション153に対する新しい待ち状態の時間帯156aに関連する新しいデータモデル151を生成してもよい。データモデル151をそのメトリクスから計算できるメトリクス109が受信されない時間帯156が存在する場合、このような時間帯156に対してデータモデル151は記憶されないことに留意すべきである。この意味において、所定のディメンション156に対する時間帯156により表される時間記録は、データの存在しない空白を有することもある。
ボックス259から、集合アプリケーション126はボックス263に進む。ボックス263では、集合アプリケーション126は、集合アプリケーション126により維持されている現在の時間帯のうちの待ち状態の1つのデータモデル151の計算において、現在のメトリック109に関連するタイムスタンプ173(図2)が含まれるべきかどうか、あるいは、1つ以上のディメンション153の次の連続する時間帯156に対するデータモデル151の計算において、新しいメトリック109が含まれるべきかどうかを決定する。メトリック109が時間帯156の次の連続する1つに関連するディメンション153を含むと仮定すると、集合アプリケーション126は、ボックス273に進み、ディメンション153を含まない場合はボックス276に進む。
ボックス273では、現在のメトリック109にも関連している、新しい待ち状態の時間帯156aに関連する1つ以上のデータモデル151が計算される。その後、ボックス279では、全面的に推定される対応する時間帯156に関連する1つ以上のデータモデル151が、データ記憶149(図1)内の記憶のために記憶キュー146(図3)内に置かれる。この点において、集合アプリケーション126は、記憶キュー146内に置かれる前の待ち状態の時間帯156aと同様に、各ディメンション153に対する最小数の連続時間帯156を維持してもよい。
このような時間帯156は、理解できるように、先入れ先出し方式で維持されてもよい。各時間帯156に関連する所定のデータモデル151を記憶キュー146内に置くかどうかの決定は、任意の追加のメトリクス109がそれぞれの1つ以上の時間帯156に対して処理されなかったことを受信したと考えられるかどうかに依存する。これは、各ディメンション153に対してどれほど多くの連続の時間帯156が、任意の所定時間において集合アプリケーション126によって待ち状態として維持されるかを決定してもよい。ボックス279において、いずれかの待ち状態の時間帯156aが記憶キュー内に置かれていると仮定すると、その後、図示されるように、集合アプリケーション126は終了する。
ボックス276を参照すると、現在のメトリック109のタイムスタンプ173が、上述のように、それぞれのディメンションに対する新しい時間帯156を生成することを要求しないと仮定すると、ボックス276では、現在の待ち状態の時間帯156に対するデータモデル151が、集合キュー143から受信した現在のメトリック109に基づいて再計算される。その後、集合アプリケーション126は終了する。
図6を参照すると、データ記憶149(図1)内に既に記憶されている、所定のディメンション153(図1)に対する時間帯156(図1)に関連するデータモデル151(図3)を更新する際の、集合アプリケーション126の機能の一例を表すフローチャートが示されている。図6では、集合アプリケーション126は、時間順序から外れたメトリクス109(図2)のうちの1つを受信している。あるいは、図6のフローチャートは、上記更新を達成するためにサーバ103(図1)において実行される方法のステップを示すものとして見ることもできる。
最初にボックス303において、時間順序から外れており、およびメトリック109内に示されるそれぞれのディメンション153に対する以前に記憶された時間帯のデータモデル151の計算において考慮に入れられるメトリック109を受信すると、集合アプリケーション126は、タイムスタンプ173(図2)および遅れたメトリック109のディメンション153に対応する各時間帯156に対するデータモデル151を要求する。この要求は、要求されたデータモデル151を取得し、およびそれらのデータモデルを集合アプリケーション126に送り返し得るデータ記憶アプリケーション129に提供されてもよい。
ボックス306では、集合アプリケーション126は、要求されたデータモデル151がデータ記憶アプリケーション129から受信されているかどうか、または受信されていない場合は、集合アプリケーション126が利用可能かどうかを決定する。上記いずれかが満たされていると仮定すると、ボックス309において、集合アプリケーション126は、遅れて受信したメトリック109に基づいて各時間帯156に対するデータモデル151を再計算する。その後、ボックス313において、各時間帯156に対するデータモデル151が記憶キュー146内に置かれ、上述のように、最終的に、所定のディメンション153の各時間帯に関連するデータ記憶149内に記憶される。上述のように、各時間帯156に対して新しく計算されたデータモデル151は、前から存在している時間帯156に最終的に上書きされる可能性がある。その後、図示されるように、集合アプリケーション126は終了する。
図7を参照すると、メトリック109(図1)を維持およびアクティブ・メトリック・リスト169(図1)に追加する場合における、メトリック・ディレクトリ・アプリケーション163の機能の一例を表すフローチャートが示されている。あるいは、図7のフローチャートは、上記維持および追加を達成するためにサーバ103(図1)において実行される方法のステップを示すものとして見ることもできる。
最初にボックス331において、メトリック・ディレクトリ・アプリケーション163は、識別子がメトリック109に関連付けられているかどうか、またはメタリック109またはデータモデル151がアクティブ・メトリック・リスト169内に含まれていないことを示すデータモデル151(図1)に関連付けられているかどうかを決定する。上記いずれかが満たされている場合、メトリック・ディレクトリ・アプリケーション163は図示のように終了し、その場合、メトリック109またはデータモデル151は無視および/または破棄される。上記いずれかが満たされていない場合、メトリック・ディレクトリ・アプリケーション163はボックス333に進む。ボックス333では、メトリック・ディレクトリ・アプリケーション163は、メトリック109または集合アプリケーション126または他のソースからのメトリック109の複数のインスタンスを表すデータモデル151を検査し、そのようなメトリック109がアクティブ・メトリック・リスト169の一部として現在存在するかどうかを識別する。メトリック109が現在存在する場合、メトリック・ディレクトリ・アプリケーション163はボックスに進む。存在しない場合は、メトリック・ディレクトリ・アプリケーション163はボックス339に移動する。
ボックス336では、メトリック・ディレクトリ・アプリケーション163は、メトリック109自体に関連するアクティブ・メトリック・リスト169内のメトリック109に対する最新のタイムスタンプを記憶する。その後、メトリック・ディレクトリ・アプリケーション163のこの機能は終了する。
ボックス339では、メトリック・ディレクトリ・アプリケーション163は、以前に存在しないメトリック109をアクティブ・メトリック・リスト169に追加する。その後、ボックス343において、新しく追加されたメトリック109に対するタイムスタンプが、新しく追加されたメトリック109に関連付けてアクティブ・メトリック・リスト169内に記憶される。その後、メトリック・ディレクトリ・アプリケーション163のこの機能は、図示されるように終了する。
図8を参照すると、アクティブ・メトリック・リスト169(図1)から古くまたは遅れたメトリック109(図1)を除去する場合における、メトリック・ディレクトリ・アプリケーション163(図1)の別の機能の一例を表すフローチャートが示されている。あるいは、図7のフローチャートは、上記除去を達成するためにサーバ103(図1)において実行される方法のステップを示すものとして見ることもできる。メトリック・ディレクトリ・アプリケーション163の機能は、アクティブ・メトリック・リスト169内に記憶されたメトリクス109のそれぞれ対して循環するループを含む。
最初のボックス353において、メトリック・ディレクトリ・アプリケーション163は、考慮中のアクティブ・メトリック・リスト169内の現在のメトリクス109に対する最新のタイムスタンプ173(図2)を取得する。次に、ボックス356において、メトリック・ディレクトリ・アプリケーション163は、事前に定義された時間帯に対するデータモデル151(図1)のみが記憶され得ると仮定して、メトリック109がそのメトリックに関連するタイムスタンプ173に基づいて古いかどうかを決定する。それぞれのメトリック109が古い場合、メトリック・ディレクトリ・アプリケーション163はボックス359に進行する。ボックス359では、古いメトリック109は、アクティブ・メトリック・リスト169から除去される。ボックス356において、メトリック109は古くないと決定される場合、メトリック・ディレクトリ・アプリケーション163のこの部分はボックス363に移動し、考慮するためのアクティブ・メトリック・リスト169内にリストアップされた次のメトリック109を特定する。メトリクス109がアクティブ・メトリック・リスト169から除去されると、メトリック・ディレクトリ・アプリケーション163はボックス363に進み、考慮するための次のメトリック109を特定する。したがって、メトリック・ディレクトリ・アプリケーション163のこの部分は、メトリクス109のそれぞれを連続的に検査して古いメトリックを識別し、それらメトリックをアクティブ・メトリック・リスト169から除去する。
次に図9を参照すると、本発明の開示の1つの実施形態によるサーバ103(図1)の一例の概略ブロック図が示されている。サーバ103は、例えばプロセッサ403およびメモリ406(これら両方はローカルインタフェース409に接続されている)を有する、プロセッサ回路を含む。この目的のために、サーバ103は、例えばこのような構造を有するサーバコンピュータを備えてもよい。ローカルインタフェース409は、理解できるように、例えば、付帯のアドレス/制御バスを有するデータバスまたは他のバス構造を備えてもよい。
プロセッサ403により実行されるデータおよびいくつかのコンポーネントの両方は、メモリ406に記憶される。具体的には、確認アプリケーション123、集合アプリケーション126/126a、データ記憶アプリケーション129、監視サービス133、ネットワーク・サーバ・アプリケーション136、メトリック・ディレクトリ・アプリケーション163、および可能性のある他のアプリケーションがメモリ406に記憶される。さらに、サーバ・オペレーティング・システムが、理解できるように、メモリ406に記憶されてもよく、またプロセッサにより実行されてもよい。さらにまた、集合キュー143、記憶キュー146、データ記憶149、およびデータ記憶166がメモリ406に記憶されてもよく、あるいはこれらはサーバ103にアクセスできる特定の他のメモリに記憶されてもよい。なお、理解できるように、メモリ406内に記憶され、またプロセッサ403により実行可能な他のアプリケーションがあってもよいことを理解されたい。また、他のデータがメモリ406に記憶され、プロセッサ403によりアクセスされてもよい。一実施形態によれば、データ記憶149および166のそれぞれは、例えばデータベースまたは他の適切なデータ記憶構造を備えてもよい。その場合、本明細書において説明される任意のコンポーネントは、ソフトウェアの形、すなわち、例えばC、C++、Java(登録商標)、Java(登録商標) Script、Perl、Python、Flashなどの多くのプログラミング言語、または他のプログラミング言語のうちの任意の1つで実現される。
多くのソフトウェアコンポーネントがメモリ406に記憶され、プロセッサ403により実行可能であってもよい。この点に関して、用語の「実行可能」は、最終的にはプロセッサ403により実行できる形のプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ406のランダムアクセス部分にロードでき、またプロセッサ403により実行できるフォーマットの機械コードに変換可能なコンパイルされたプログラムであってもよく、または、メモリ406のランダムアクセス部分にロードでき、およびプロセッサ403等により実行できる目的コードといった適正なフォーマットで表され得るソースコードであってもよい。実行可能なプログラムは、メモリ406の任意の部分またはコンポーネント内に記憶されてもよく、これらメモリとしては、例えばランダムアクセス・メモリ、読み出し専用メモリ、ハードドライブ、コンパクトディスク(CD)、フロッピー(登録商標)ディスク、または他のメモリコンポーネントが挙げられる。
本明細書では、メモリ406は揮発性および不揮発性メモリならびにデータ記憶コンポーネントの両方として定義される。揮発性コンポーネントは電源の喪失時にデータ値を維持できないコンポーネントである。不揮発性コンポーネントは電源の喪失時にもデータ値を維持できるコンポーネントである。このように、メモリ406は、例えばランダムアクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、ハード・ディスク・ドライブ、関連のフロッピー(登録商標)ディスク・ドライブを介してアクセスされるフロッピー(登録商標)ディスク、コンパクト・ディスク・ドライブを介してアクセスされるコンパクトディスク、適切なテープドライブを介してアクセスされる磁気テープ、および/または他のメモリコンポーネント、あるいは任意の2つ以上のこれらメモリコンポーネントの組み合わせを備えてもよい。さらに、RAMは、例えばスタティック・ランダム・アクセス・メモリ(SRAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、または磁気ランダムアクセス・メモリ(MRAM)および他のそのようなデバイスを備えてもよい。ROMは、例えばプログラム可能読み出し専用メモリ(PROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EPROM)、または他の同様のメモリデバイスを備えてもよい。
上述のようなサーバ103上で実行される様々なコンポーネントは、上述のような汎用ハードウェアにより実行されるソフトウェアまたはコード内で実現されてもよいが、代替として、専用ハードウェアまたはソフトウェア/汎用ハードウェアおよび専用ハードウェアの組み合わせで実現されてもよい。専用ハードウェアで実現される場合、上記の様々なコンポーネントは、多くの技術のうちのいずれか1つまたは組み合わせを採用する回路または状態機械として実現されてもよい。それらの技術は、これらに限定されないが、1つ以上のデータ信号を加えることにより様々な論理関数を実現する論理ゲートを有するディクリート論理回路、適切な論理ゲートを有する特定用途向け集積回路、または他のコンポーネント等を含んでよい。
図5から図8のフローチャートは、集合アプリケーション126とメトリック・ディレクトリ・アプリケーション163との一部の機能および動作を示す。ソフトウェアで実現されている場合、各ブロックはモジュール、セグメント、または特定の論理機能を実現するためにプログラム命令を含むコードの一部を表す場合がある。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサなどの適切な実行システムにより認識できる数値命令を含むプログラミング言語または機械コードで書かれた、人の読むことができるステートメントを含むソースコードの形で実現されてもよい。機械コードはソースコード等から変換されてもよい。ハードウェアで実現される場合、各ブロックは、特定の論理機能を実現するための回路または多数の相互接続回路を表してもよい。
図5から図8のフローチャートは特定の実行順序を示すが、実行順序は図示の順序と異なってもよいことは理解されたい。例えば、2つ以上のブロックの実行順序は図示される順序に対して任意に異なってもよい。また、図5から図8において連続して示されている2つ以上のブロックは、同時にまたは部分的に同時に実行されてもよい。さらに、任意の数のカウンタ、状態変数、警告セマフォー(warning semaphores)、またはメッセージが、拡張ユティリティ、アカウンティング、性能測定、または障害解析支援等を提供する目的のために、ここに説明される論理フローに追加されてもよい。このような変形形態の全ては本発明の範囲内にあると理解されたい。
また、確認アプリケーション123、集合アプリケーション126、データ記憶アプリケーション129、監視サービス133、メトリック・ディレクトリ・アプリケーション163、および上述のサーバ103内で実現される任意の他のコンポーネントがソフトウェアまたはコードを含む場合、上記コンポーネントは、例えばコンピュータシステムまたは他のシステム内のプロセッサなどの命令実行システムにより使用するための、または命令システムと接続して使用するための、任意のコンピュータ可読媒体内で実現できる。この意味において、論理は、例えば、コンピュータ可読媒体から取り込みでき、命令実行システムにより実行できる命令および宣言を含むステートメントを含んでもよい。本発明の開示に関しては、「コンピュータ可読媒体」は、命令実行システムにより使用するための、または命令システムと接続して使用するための、ソフトウェアまたはコードを含み、記憶し、または維持できる任意の媒体であってもよい。コンピュータ可読媒体は、多くの物理媒体、例えば、電子、磁気、光、電磁、または半導体媒体のうちの任意の1つを含んでもよい。適切なコンピュータ可読媒体の多くの特定の例には、これらに限定されないが、磁気テープ、磁気フロッピー(登録商標)ディスク、磁気ハードドライブ、またはコンパクトディスクを含む。またコンピュータ可読媒体は、例えばスタティック・ランダム・アクセス・メモリ(SRAM)およびダイナミック・ランダム・アクセス・メモリ(DRAM)、または磁気ランダムアクセス・メモリ(MRAM)を含む、ランダムアクセス・メモリ(RAM)であってもよい。さらにコンピュータ可読媒体は、読み出し専用メモリ(ROM)、プログラム可能読み出し専用メモリ(PROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、または他の種類のメモリデバイスであってもよい。
本発明の開示の上述の実施形態は単に、本発明の原理の明確な理解のために示した実現形態の可能な例であることが強調されるべきである。本発明の開示の精神および原理から実質的に逸脱することなく、上述の実施形態に対する多くの変形形態および修正形態が実現可能である。このような修正形態および変形形態は全て、本明細書において本発明の範囲内に含まれ、添付の特許請求の範囲により保護されるものとする。
(関連出願の相互参照)
本願は、米国特許仮出願の出願番号第61/106,901号(2008年10月20日出願)の発明の名称「監視のための大量データ記憶システム」:米国特許仮出願の出願番号第61/106,903号(2008年10月20日出願)の発明の名称「監視のための大量データの記憶システム」:米国特許仮出願の出願番号第61/106,904号(2008年10月20日出願)の発明の名称「監視のための大量データ記憶システム」:に対する優先権を主張するものであって、これらの仮出願のそれぞれは参照によりその全内容が本明細書に組み込まれる。本願はさらに、米国特許仮出願の出願番号第12/493,596号(2009年6月29日出願)の発明の名称「監視のための大量データ記憶システム」と、米国特許仮出願の出願番号第12/493,558号(2009年6月29日出願)の発明の名称「監視のための大量データ記憶システム」とに対する優先権を主張するものであって、これらの仮出願のそれぞれは参照によりその全内容が本明細書に組み込まれる。