(57)【要約】【課題】データ分析システムは、計測用ソフトウェアによって生成されるデータを処理する。【解決手段】データ分析システムは、システム上で動作する計測用ソフトウェアのインスタンスによって生成されるデータストリームを受け取る。データ分析システムは、データストリームを記述するメタデータも受け取る。データ分析システムは、メタデータに基づいて、式を受け取る。データ分析システムは、時間間隔ごとに、データストリームのデータを受け取り、受け取られたデータ値に基づいて、式の結果を計算する。データ分析システムは、時間間隔ごとに、これらのステップを繰り返す。データ分析システムは、時間間隔ごとに、その時間間隔についての各データストリームにおいて受け取られたデータに基づいて、その時間間隔についての集約値を生成することによって、データストリームのデータ値を量子化することがある。データ分析システムは、その時間間隔についての量子化されたデータを使用して、式を評価する。【選択図】図１
2020187798.tif 000002
【特許請求の範囲】
【請求項１】
計測用ソフトウェアによって生成されるデータを処理するためのコンピュータ実施方法であって、
複数のデータストリームの１つのデータストリームを記述するメタデータを受け取るステップであって、前記データストリームに関する前記メタデータは、第１のセットの属性を含み、
初期の時間間隔上で、前記複数のデータストリームに関して受信されたデータを量子化するステップと、
ユーザインターフェースを通じて、前記複数のデータストリームの少なくとも２つのデータストリームにわたって量子化されたデータを集約するための式を受け取るステップであって、前記式は、少なくとも前記第１のセットの属性の１つの属性および第２のセットの属性の１つの属性に基づき、前記第２のセットの属性の各属性は、前記第１のセットの属性とは異なる、該ステップと、
出力データストリームを生成するために、複数の時間間隔上で前記データストリームの少なくとも２つを使用して前記式を評価するステップと、
前記ユーザインターフェースを通じて表示するために、前記出力データストリームを送るステップと
を含むことを特徴とする方法。
【請求項２】
１または複数の外部システムから、複数のデータストリームを識別する情報を受け取るステップであって、各データストリームは、前記１または複数の外部システム上で動作する計測用ソフトウェアのインスタンスによって生成され、各データストリームはタプルを含み、各タプルは前記データストリームの前記第２のセットの属性の値を含む、該ステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
時間間隔ごとに、
前記複数のデータストリームから、１または複数のタプルを受け取るステップであって、各タプルは、ある時点と関連付けられたデータ値を含む、該ステップと、
前記受け取られたタプルの前記データ値に基づいて、前記式の値を決定するステップと、
前記式の前記値を、前記出力データストリームに提供するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数のデータストリームの少なくとも２つのデータ値を集約するステップであって、各データ値は、前記時間間隔と関連付けられる、該ステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
後続の時間間隔の期間中、受信した新たなデータストリームに基づいて、前記出力データストリームをリアルタイムで更新するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記量子化するステップは、
前記複数のデータストリームの１つのデータストリームを受け取るステップであって、前記データストリームは、任意の時間間隔上で生じるデータ値を含む、該ステップと、
規則的な時間間隔で利用可能なデータを含む量子化されたデータストリームを生成するために、前記データストリームを処理するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
第１の時間間隔の期間中、データストリームの第１のセットを受け取るステップと、
データストリームの前記第１のセットを使用して、前記式を評価することによって、第１の複数の出力データストリームを生成するステップと、
第２の時間間隔の期間中、データストリームの第２のセットを受け取るステップと、
データストリームの前記第２のセットを使用して、前記式を評価することによって、第２の複数の出力データストリームを生成するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
データストリームを記述する前記メタデータのメタデータオブジェクトを変更するための命令を受け取るステップと、
後続の時間間隔について、時間間隔ごとに、
第２の出力データストリームを生成するために、前記変更されたメタデータに基づいて記式を評価するステップと、
前記ユーザインターフェースを介して表示するために、前記変更されたメタデータに基づいて、前記第２の出力データストリームを送るステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
メタデータオブジェクトを記述する情報を受け取るステップであって、各メタデータオブジェクトは、１または複数のプロパティと関連付けられ、各プロパティは、名前および値を含む、該ステップと、
メタデータオブジェクトと前記複数のデータストリームを識別する情報との間の関連付けを記述する情報を受け取るステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記式は、前記複数のデータストリームの前記少なくとも２つを選択するためのプロパティ値を指定し、前記複数のデータストリームの前記少なくとも２つは、前記プロパティ値と一致することを特徴とする請求項１に記載の方法。
【請求項１１】
ユーザインターフェースを通じて、計測用ソフトウェアによって生成されるデータを処理するためのデータストリーム言語プログラムを指定するシステムであって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに、請求項１ないし１０のいずれか１つに記載のコンピュータ実施方法を実行させることが可能な命令を有する、少なくとも１つのメモリと
を備えたことを特徴とするシステム。
【請求項１２】
コンピュータに、請求項１ないし１０のいずれか１つに記載のコンピュータ実施方法を実行させることを特徴とするコンピュータプログラム。
【請求項１３】
請求項１２記載のコンピュータプログラムを記録したことを特徴とする非一過性コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、ソフトウェアの計測に関し、より詳細には、計測用ソフトウェアによって生成されるデータストリームに基づいたリアルタイム報告に関する。
【背景技術】
【０００２】
ソフトウェア開発者は、コードに計測用の組み込みを施すことによって、彼らが開発するソフトウェアの様々な態様をモニタリングする。これらは、ソフトウェアのパフォーマンス、ソフトウェアの実行中に遭遇するエラー、ソフトウェアの実行中に遭遇する重要なイベント、およびコードのどの部分が実行中であり、どの部分が実行中でないかを記述する情報などを含む。コードに計測用の組み込みを施すための従来の技法は、様々な種類の情報をログファイルに記録する、またはスクリーン上に情報を印字する、コード内のステートメントを含む。この種類の計測は、単純なアプリケーション、例えば、シングルプロセッサ上で動作する単純な実行のフローを有するアプリケーションには適している。しかしながら、ソフトウェアに計測用の組み込みを施すためのこれらの技法は、各システムが多数のプロセスまたは実行のスレッドを実行する、多数のシステムにわたって分散されることがある、複雑なアプリケーションには不適切である。
【０００３】
そのような複雑なシステムに計測用の組み込みを施すためにこれまで使用されてきた１つの技法は、コードに計測用の組み込みを施すことに関する専門家の支援を使用することである。あるベンダは、コードの計測を支援する専門家サービスを提供する。しかしながら、これらのベンダは、一般に、しばしば柔軟性があまりない標準的なサービスを提供する。さらに、これらのベンダベースの解決策は、ベンダによって必要とされる、コードに計測用の組み込みを施すための時間に関して、著しいオーバヘッドを有する。したがって、これらの解決策は、ゆっくりとした開発サイクル、例えば、１年に及ぶ開発サイクルには適している。しかしながら、ソフトウェア製品についてのソフトウェア開発およびリリースサイクルは、短くなっている。例えば、ソフトウェア開発者が、毎月、毎週、または毎日のことさえある頻度で変更を行い、それらを展開する、いくつかのオンラインシステムが存在する。ベンダベースの計測解決策の著しいオーバヘッドのせいで、開発者は、ペースの速い開発環境において、これらのサービスを使用することは、困難であると感じている。
【０００４】
さらに、コードに計測用の組み込みを施すための従来の技法は、情報を取得し、情報を記憶し、情報を分析して、報告を生成することにおいて、著しい遅延を引き起こす。結果として、ソフトウェアにおいて問題が生じた時刻と、コードの計測を介して問題が検出される時刻との間に、著しい遅延が存在することが可能である。したがって、ソフトウェアの計測に基づいて報告を生成するための従来のシステムは、複雑なアプリケーションのペースの速い開発サイクルにおいては、しばしば不適切である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明では、改善されたソフトウェアの計測に基づいたリアルタイム報告に関する方法、およびシステムを提供する。
【課題を解決するための手段】
【０００６】
説明される実施形態は、計測用ソフトウェアによって生成されるデータを処理する。ソフトウェア開発者は、しばしば、コードに計測用の組み込みを施すためのコードスニペットをソフトウェア内に含めることによって、開発中のソフトウェアに計測用の組み込みを施す。計測用ソフトウェアのインスタンスは、それらが動作するときに、データストリームを生成し、データストリームを分析用のシステムに送る。計測用ソフトウェアを分析するシステムは、各データストリームが計測用ソフトウェアのインスタンスによって生成されたデータ値を含む、複数のデータストリームを識別する情報を受け取る。データストリームで受け取られるデータ値は、属性の第１のセットを含む。システムは、データストリームを記述するメタデータをさらに受け取る。メタデータは、第１のセットの属性とは異なる、データストリームの属性を指定する。システムは、データストリームにわたってデータ値を集約する、式の仕様を受け取る。式は、第１のセットに属する１または複数の属性と、第２のセットに属する１または複数の属性とを含む。例えば、式は、メタデータで指定された属性によってグループ化される、データストリームとともに受け取られた属性を集約することがある。システムは、時間間隔ごとに以下のステップを実行することによって、複数の時間間隔上で、データストリームのデータを処理する。システムは、時間間隔についてのデータストリームからタプル（ｔｕｐｌｅ）を受け取る。各タプルは、時間間隔内の時点と関連付けられたデータ値を含む。システムは、受け取られたタプルのデータ値に基づいて、式を計算する。システムは、以降の時間間隔についても、これらのステップを繰り返す。
【０００７】
実施形態では、システムは、時間間隔ごとに受け取られた各データストリームについてのデータ値を量子化し、時間間隔に基づいて、量子化されたデータ値を整列させる。データ値を量子化するために、システムは、時間間隔ごとの集約値を、その時間間隔についての各データストリームにおいて受け取られたデータに基づいて、生成する。システムは、時間間隔についての量子化されたデータを使用して、メタデータに基づいて、式を評価する。
【０００８】
本明細書で説明される特徴および利点は、必ずしもすべてを含むわけではなく、特に、多くの追加的な特徴および利点が、図面、明細書、および特許請求の範囲に鑑みて、当業者には明らかである。さらに、本明細書で使用される言葉は、主に読み易さおよび教示的目的で選択されており、開示される主題を正確に説明するために、または制限するために選択されていないことがあることに留意されたい。
【図面の簡単な説明】
【０００９】
開示される実施形態は、詳細な説明、添付の特許請求の範囲、および添付の図（または図面）からさらに容易に明らかな、他の利点および特徴を有する。図の簡潔な導入が、以下に示される。
【００１０】
【図１】実施形態による、計測用ソフトウェアに基づいた報告のための全体的なシステム環境を示す図である。
【図２】実施形態による、計測用ソフトウェアに基づいた報告のためのシステムのアーキテクチャを示す図である。
【図３】実施形態による、計測用ソフトウェアのインスタンスを実行することから受け取られるデータストリームと関連付けて指定されたメタデータオブジェクトの例示的な階層を示す図である。
【図４】実施形態による、メタデータオブジェクトの階層と関連付けられたデータストリームのセットを示す図である。
【図５】実施形態による、計測用ソフトウェアに基づいた報告を生成するための全体的なプロセスを示す図である。
【図６】実施形態による、計測用ソフトウェアから受け取られるデータストリームの量子化のプロセスを示す図である。
【図７】実施形態による、様々なソースから受け取られるデータストリームのデータを組み合わせるための全体的なプロセスを示す図である。
【発明を実施するための形態】
【００１１】
今から、その例が添付の図に示される、いくつかの実施形態に対する言及が、詳細に行われる。実施可能なところではどこでも、類似または同様の参照番号が、図において使用されることがあり、類似または同様の機能性を示すことがあることが留意される。図は、説明の目的でのみ、開示されるシステム（または方法）の実施形態を示している。当業者は、本明細書で説明される構造および方法の代替的な実施形態が、本明細書で説明される原理から逸脱することなく、利用されることがあることを、以下の説明から容易に認識する。
【００１２】
全体的なシステム環境
図１は、実施形態による、計測用ソフトウェアに基づいた報告のための全体的なシステム環境を示している。全体的なシステム環境は、計測分析システム１００と、１または複数の開発システム１２０と、管理システム１６０と、報告システム１５０とを含む。他の実施形態では、図１に示されたものよりも多いまたは少ないコンポーネントが、使用されることがある。例えば、開発システム１２０、管理システム１６０、および報告システム１５０は、（図１に示されていない）ネットワークを介して、計測分析システム１００と対話することがある。さらに、図１に示される各システムのインスタンスが、より多くまたは少なく存在することがあり、例えば、複数の報告システム１５０が、存在することがある。
【００１３】
図１および他の図は、同様の要素を識別するために、同様の参照番号を使用する。「１３０ａ」など、参照番号の後の文字は、本文が、その特定の参照番号を有する要素に特に言及していることを示す。「１３０」など、後続する文字を伴わない本文中の参照番号は、その参照番号を有する図中の要素のいずれかまたはすべてを参照する（例えば、本文中の「１３０」は、図中の参照番号「１３０ａ」および／または「１３０ｂ」を参照する）。
【００１４】
計測分析システム１００は、様々な開発システム１２０によって送られたメトリックの値を含むデータを受け取る（計測分析システム１００は、本明細書では、分析システムまたはデータ分析システムと呼ばれることもあり、開発システムは、本明細書では、外部システムと呼ばれることもある）。開発システム１２０は、計測用ソフトウェア、例えば、アプリケーション１３０を実行する。アプリケーション１３０は、図１では、計測用ソフトウェアの例として示されているが、本明細書で開示される技法は、アプリケーションソフトウェアに限定されず、他の種類のソフトウェア、例えば、サーバソフトウェア、クライアントデバイス上で動作するソフトウェア、およびウェブサイトなどにも適用可能である。
【００１５】
開発システム１２０上で動作するソフトウェアは、ソフトウェアに計測用の組み込みを施した結果として生成される情報を、計測分析システム１００に送るように構成される。例えば、アプリケーション１３０は、データを、定期的に、計測分析システム１００に送ることがある。異なるアプリケーション１３０は、異なるレートで、同じメトリックまたは異なるメトリックを送ることがある。同じアプリケーションは、異なるレートで、異なるメトリックを送ることがある。アプリケーションは、データを、（１または複数の）データストリームの形態で、計測分析システム１００に送る。データストリームは、本明細書では、時系列とも呼ばれる。アプリケーション１３０は、計測分析システム１００によってサポートされるアプリケーションプログラミングインターフェース（ＡＰＩ）を起動することによって、データを計測分析システム１００に送る。
【００１６】
アプリケーション１３０（または他の任意のソフトウェア）は、カウンタまたはゲージをアプリケーションに追加するために、計測用の組み込みを施されることがある。カウンタは、ソフトウェア内における何らかのイベントの発生時にインクリメントされる値を記憶する命令を含む。カウンタは、コードの特定の部分、例えば、関数またはメソッド、条件コードの特定のブランチ、例外、およびループなどが実行された回数を決定するために、使用されることがある。
【００１７】
一般に、カウンタ値は、単調に変化し、例えば、カウンタ値は、単調に増加することがあり、またはカウンタ値は、単調に減少することがある。カウンタの値は、２つの異なる時点における特定のカウンタ値の変化を決定するために、比較されることがある。例えば、時刻ｔ１とｔ２との間の時間間隔内に特定のイベントが発生した回数は、対応するカウンタのｔ１からｔ２までの変化を計算することによって、決定されることがある。カウンタの現在値を計測分析システム１００に定期的に送るために、計測分析システム１００のＡＰＩが、アプリケーション１３０によって起動される。
【００１８】
以下に、アプリケーション１３０の計測用の組み込みを施されたコードの例を示す。計測用の組み込みを施されているコード内に含まれる以下の命令は、アクションまたはエンティティのカウントを追跡するためのカウンタオブジェクトを生成する。
ｃｏｕｎｔｅｒ１＝ｃｒｅａｔｅＣｏｕｎｔｅｒ（ｓｏｕｒｃｅ＝“ｗｅｂ１”，ｍｅｔｒｉｃ＝“ｍｅｔｒｉｃ１”）；
【００１９】
上記の命令は、カウンタオブジェクトを生成し、それを変数ｃｏｕｎｔｅｒ１に割り当てる。カウンタを生成するための命令は、１または複数の属性値も指定する。例えば、上記のｃｒｅａｔｅＣｏｕｎｔｅｒ命令は、ソース属性と、メトリック属性とを指定する。ソース属性の値は、「ｗｅｂ１」になるように指定され、メトリック属性の値は、「ｍｅｔｒｉｃ１」になるように指定される。言い換えると、カウンタオブジェクトは、ソース「ｗｅｂ１」およびメトリック「ｍｅｔｒｉｃ１」と関連付けられる。アプリケーション１３０によって生成されるカウンタオブジェクトは、アプリケーション１３０が計測分析システム１００に送るデータストリームのソースとしての役割を果たす。実施形態では、ソース値およびメトリック値は、カウンタ（またはゲージ）と関連付けられたデータストリームを一意的に識別する。他の実施形態では、データストリームを一意的に識別するために、より多いまたは少ないキー値ペアが、使用されることがある。例えば、複数のサーバが、ソース「ｗｅｂ１」およびメトリック「ｍｅｔｒｉｃ１」と関連付けられたデータストリームを送ることがあるが、しかしながら、各データストリームは、データストリームを、サーバを識別する情報、例えば、サーバのＩＰ（インターネットプロトコル）アドレスまたはサーバの一意名とさらに関連付けることによって、一意的に識別されることがある。
【００２０】
カウンタの生成中に指定される属性のうちの１または複数についての値は、カウンタの値を表すタプルが、アプリケーション１３０の計測用の組み込みを施されたコードによって、計測分析システム１００に送られたときに、受け取られる。例えば、ソース値およびメトリック値は、報告されているデータ値とともにデータストリームで受け取られる値の各タプルを用いて、受け取られる。任意選択で、値のタプルは、タイムスタンプ、例えば、報告されているデータ値が計測用ソフトウェアによってキャプチャされた時のタイムスタンプを含むことがある。
【００２１】
アプリケーション１３０の計測用の組み込みを施されたコードは、コード内の様々な場所に、カウンタ値を更新するための命令を含むことがある。例えば、カウンタｃｏｕｎｔｅｒ１は、命令「ｃｏｕｎｔｅｒ１．ｉｎｃｒｅｍｅｎｔ（）」を実行することによって、インクリメントされることがある。カウンタは、コードと関連付けられた様々なアクションまたはエンティティを追跡するために、インクリメントされることがある。例えば、カウンタは、特定の関数またはメソッドが呼ばれたとき常に、インクリメントされることがあり、カウンタは、条件式の特定のブランチが実行されたとき常に、インクリメントされることがあり、カウンタは、特定の種類のオブジェクトが、例えば、オブジェクトのコンストラクタにおいて、生成されたとき常に、インクリメントされることがある。カウンタのインクリメント命令は、条件に応じて、例えば、関数がパラメータの特定の組み合わせを用いて起動された場合に、呼ばれることがある。アプリケーション１３０は、計測分析システム１００のＡＰＩを起動することによって、カウンタ値を計測分析システム１００に伝達する。
【００２２】
計測用の組み込みを施されたコード内で定義されるカウンタは、定期的に、自らをリセットすることがある。例えば、カウンタは、構成可能な特定の時間間隔の後、リセットされることがある。このケースでは、受け取られるカウンタ値は、間隔の終りに値がリセットされることがあるので、単調に増加（または減少）しないことがある。カウンタは、累積的なことがあり、すなわち、カウンタは、（それをリセットするための明示的な命令が提供されない限り）リセットされない。この状況では、累積的カウンタの値は、単調に変化し、すなわち、ユーザによって明示的にリセットされない限り、単調に増加（または減少）する。
【００２３】
ゲージは、アプリケーション１３０の何らかのランタイム特性、例えば、ヒープサイズ、キャッシュミスまたはヒットの回数、使用されるアクティブメモリ、ＣＰＵ（中央処理装置）利用、要求に応答するのにかかった総時間、およびサービスに接続するのにかかった時間などを測定するための命令を含む。ゲージは、何らかのアプリケーション固有のパラメータまたはビジネス関連の値、例えば、トランザクションの数、およびユーザの数などを追跡するためにも、使用されることがある。ゲージは、構成可能な間隔に基づいて、定期的に、起動されることがある。ゲージの値は、定期的に、計測分析システム１００に送られる。
【００２４】
管理システム１６０は、特権ユーザ、例えば、システム管理者が、データストリームをメタデータと関連付けることを可能にする。管理システム１６０は、システム管理者がメタデータを指定するためのユーザインターフェースを提供する、管理アプリケーション１７０を備える。メタデータは、プロパティ、例えば、名前−値ペアを含む。計測分析システム１００は、データストリームを記述するメタデータを受け取り、メタデータを記憶する。
【００２５】
メタデータは、データストリーム自体の一部として受け取られた属性とは異なることがある、データストリームを記述する属性を含む。例えば、データストリームは、キャッシュヒット、キャッシュミス、およびメモリ使用量などの属性のデータ値を提供することがある。一方で、メタデータは、データストリームが実行されているデータセンタ、およびデータストリームと関連付けられた組織の支部などの属性を指定することがある。メタデータ属性は、データストリームのソースとは異なるソースから受け取られることもある。例えば、データストリームは、開発システム１２０から受け取られることがあり、一方、メタデータ属性値は、管理システム１６０を使用するシステム管理者によって指定されることがある。
【００２６】
受け取られたデータとは独立して、データストリームについてのメタデータを指定する能力は、各データストリームとともにより少量の情報が送られるように、アプリケーション１３０が計測用の組み込みを施されることを可能にする。より具体的には、いくつかの属性は、メタデータを使用して、データストリームと関連付けられることがあるが、データストリームと関連付けられる属性のいくつかだけが、計測用ソフトウェアによって、タプルとして送られる。これは、コードに計測用の組み込みを施した結果としてアプリケーション１３０内に導入される、オーバヘッドの量を低減する。
【００２７】
一般に、データストリームと関連付けられたメタデータ属性は、データストリームで受け取られる動的に変化する属性と比較して、静的である。メタデータ属性は、変化することもできるが、それらは、データストリームとともに受け取られる属性と比較して、あまり頻繁には変化しない。例えば、サーバが、組織の１つの部門から組織の別の部門に割り当てられることがあり、それは、そのサーバによって送られるデータストリームと関連付けられた組織の部門を記述するメタデータ属性が変化する原因となる。しかしながら、これらの変化は、毎秒もしくは毎ミリ秒、またはより頻繁に、値を変更することができる、データストリームとともに受け取られる属性と比較して、あまり頻繁ではない。
【００２８】
各データストリームから受け取られたデータとは独立して、データストリームを記述するメタデータを指定する能力は、データストリームに基づいて報告を生成する際に、いくつかの利益を提供する。例として、計測分析システム１００は、アプリケーション１３０の計測用ソフトウェアに対するいかなる変更も必要とせずに、各データストリームを記述するメタデータに対する変更を受け取ることができる。結果として、計測分析システム１００は、新しい報告の仕様および既存の報告に対する変更を受け取り、アプリケーション１３０を変更するように開発者に求めることなく、新しい／変更された報告に基づいて、結果を生成する。
【００２９】
これは、開発者が、ソフトウェアに計測用の組み込みを施すときに、計測用データから生成される報告の種類を考慮する必要がないので、ソフトウェアに計測用の組み込みを施すための新しいパラダイムを提供する。開発者は、メタデータ属性とは独立して、単に原データを生成するようにソフトウェアに計測用の組み込みを施す。メタデータ属性は、データストリームのデータとは独立して、指定されることができる。報告システム１５０は、報告を生成するために、メタデータ属性を使用して、様々な方法でデータストリームのデータを組み合わせることができる。例えば、原データは、毎秒、各サーバ上の負荷を提示することがある。計測分析システム１００は、（データストリームのソースとは独立して指定されるメタデータ属性である）データセンタによってグループ化が行われ、データストリームが到着すると直ちに計算される、各サーバ上の負荷を集約することができる。結果として得られる報告は、リアルタイムに提示され、すなわち、データストリームのデータが受け取られると直ちに更新されることがある。
【００３０】
さらに、計測用ソフトウェアに基づいて報告を生成することに関する専門家である人たちは、ソフトウェア開発者とは異なることができる。例えば、開発者ではないデータ分析に関する専門家は、開発プロセスに関与させられることなく、データストリームについてのメタデータを定義し、報告を生成することができる。これは、計測用の組み込みを施されるコード内にメタデータがエンコードされる必要がある、ソフトウェアに計測用の組み込みを施すための従来の技法に対して、著しい改善である。これが、著しい改善であるのは、データを分析するために必要とされるスキルは、一般に、ソフトウェアを開発するために必要とされるスキルとは異なるからである。
【００３１】
さらに、計測分析システム１００は、既存の報告を構成し、新しい分析機能性を追加することによって、既存の報告の上に構築された報告を受け取り、処理することもできる。計測分析システム１００は、計測分析システム１００が計測用ソフトウェアからデータストリームを受け取ると直ちに、新しい報告の結果を生成し、それらを提示用にリアルタイムに送る。計測分析システム１００は、アプリケーション１３０の計測用の組み込みを施されたコードに対するいかなる変更も必要とせずに、これらの追加の報告を生成し、既存の報告を変更する。さらに、先に受け取られたデータストリームのために、新しいメタデータが、定義されることができる。したがって、データストリームとして受け取られているデータ、および（メタデータがデータストリームと関連付けられる以前に）先に記憶されたデータに基づいた新しい報告が、生成されることができる。例えば、大きい時間間隔にわたる移動平均を提供する報告が、生成されることができる。この報告は、現在受け取られているデータ、および（報告内で使用されるメタデータがデータと関連付けられる以前に）先に受け取られたデータに基づいて、移動平均を計算する。さらに、これらの新しい報告は、（ソフトウェアに再び計測用の組み込みを施すことによって）計測用ソフトウェアを変更する必要なしに、または計測用ソフトウェアを再び展開する必要なしに、定義されることができる。
【００３２】
さらに、計測分析システム１００は、データストリームを記述するメタデータの、データストリームのデータからの分離を提供する。したがって、開発システム１２０から計測分析システム１００に転送される必要があるデータの量は、低減される。各アプリケーション１３０は、メトリックのデータ値と、メトリックを識別する情報だけを転送する。メタデータ情報は、データストリームのデータソースとは独立して、別にソースから受け取られる。したがって、いずれの量のメタデータも、各データストリームのデータの量を増加させることなく、導入されることがある。
【００３３】
報告システム１５０は、クライアントデバイスであることがある。報告システム１５０は、ユーザが計測分析システム１００と対話することを可能にする、クライアントアプリケーション１４０を含む。実施形態では、クライアントアプリケーション１４０は、インターネットブラウザであり、それは、計測分析システム１００にアクセスするためのクライアントサイドコード（例えば、Ｊａｖａ  Ｓｃｒｉｐｔ）を含むことがある。他の実施形態では、クライアントアプリケーション１４０は、計測分析システム１００と対話するために開発された、独自仕様のアプリケーションである。報告は、計測分析システム１００によって生成され、報告システム１５０を介して、提示用に送られることがある。
【００３４】
報告システム１５０は、従来のコンピュータシステム（例えば、デスクトップもしくはラップトップコンピュータ）、タブレット、または携帯情報端末（ＰＤＡ）、モバイルフォン、スマートフォン、もしくは別の適切なデバイスなどのコンピュータ機能性を有するデバイスとすることができる。報告システム１５０は、ネットワークを介して、計測分析システム１００と対話する。ネットワークは、有線および／または無線両方の通信システムを使用する、ローカルエリアネットワークおよび／またはワイドエリアネットワークの任意の組み合わせを含むことがある。一実施形態では、ネットワークは、標準的な通信技術および／またはプロトコルを使用する。
【００３５】
計測分析システム１００は、１または複数のプロセッサ、メモリ、２次ストレージ、および／または入力／出力コントローラを含む、コンピューティングシステム上でホストされることがある。計測分析システム１００をホストするために使用されるコンピューティングシステムは、一般に、例えば、報告システム１５０として使用される典型的なコンピューティングシステムと比較して、強力なプロセッサ、大容量のメモリ、および高速な入力／出力システムを使用する、サーバクラスシステムである。
【００３６】
実施形態では、いくつかの開発システム１２０からのデータは、例えば、サーバによって統合され、組み合わされたデータが、計測分析システム１００に送られることがある。例えば、企業は、様々な開発システム１２０から内部的にデータストリームを受け取り、組み合わされたデータをバッチ形式で定期的に計測分析システム１００に送る、サーバを設置することがある。これは、企業からの外部通信の効率の良さを可能にする。しかしながら、この構成は、情報を計測分析システム１００に伝達する際の遅延、および報告システム１５０によってデータを報告する際の対応する遅延をもたらすことがある。
【００３７】
計測分析システムのシステムアーキテクチャ
図２は、実施形態による、計測分析システム１００のシステムアーキテクチャを示している。計測分析システム１００は、インターフェースモジュール２１０と、量子化モジュール２４０と、メタデータモジュール２２０と、メタデータストア２３０と、データ点ルーティングモジュール２５０と、分析エンジン２７０と、時系列データストア２６０とを含む。他の実施形態では、計測分析システム１００は、本明細書では説明されない他のモジュールを含むことがある。特定のモジュールによって提供されるものとして示される機能性は、代わりに、他のモジュールによって実施されることがある。
【００３８】
インターフェースモジュール２１０は、計測分析システム１００と通信する外部システム、例えば、開発システム１２０から、要求を受け取る。インターフェースモジュール２１０は、外部システムが起動することができる、様々なアプリケーションプログラミングインターフェース（ＡＰＩ）をサポートする。インターフェースモジュール２１０は、計測用の組み込みを施されたコードが、インターフェースモジュール２１０によって処理されることができるフォーマットで、情報を送る限り、様々なベンダによって提供される機能性を使用して計測用の組み込みを施されたアプリケーション１３０によって提供されるデータを受け取り、処理することができる。実施形態では、インターフェースモジュール２１０は、開発システム１２０が、データストリームと関連付けられた様々なアクション、例えば、データストリームを登録すること、データストリームのデータ値を表すタプルを提供すること、およびデータストリームと関連付けられた属性を指定すること（例えば、新しい属性を追加すること）などを実行することを可能にする、ＡＰＩをサポートする。
【００３９】
インターフェースモジュール２１０は、開発システム１２０から、データストリームの形態で、データを受け取る。インターフェースモジュール２１０は、データを受け取り、それをタプルとして表す。インターフェースモジュールによって受け取られるデータのタプルは、メトリック識別子、例えば、タプルに対応するメトリックの名前、およびメトリックの値を含む、様々な要素を含む。受け取られるデータのタプルは、他の要素、例えば、データを送ったアプリケーション１３０によってデータがキャプチャされた時刻に対応するタイムスタンプ、データと関連付けられた１または複数のプロパティをさらに含むことがある。実施形態では、タプルと関連付けられたタイムスタンプは、データ値が計測分析システム１００によって受け取られた時刻を表す。
【００４０】
データと関連付けられたプロパティは、名前、値ペアの形式で、提供されることがある。これらのプロパティは、受け取られたデータを記述する追加の情報、例えば、ホスト名、サーバ名、デバイス名、またはソースと関連付けられたサービス名などのデータのソースを記述する情報、データと関連付けられたメソッド名または関数名、およびアプリケーションインスタンス識別子などを提供することがある。
【００４１】
実施形態では、インターフェースモジュール２１０は、識別子を生成し、それをインターフェースモジュール２１０によって受け取られた記録に割り当てる。識別子は、本明細書では、時系列識別子と呼ばれる（本明細書では、ｔｓｉｄまたはＴＳＩＤとも呼ばれる）。一意的な時系列識別子が、メトリック名に一致するすべてのタプル、およびタプルとともに受け取られたプロパティのセットに割り当てられる。したがって、タプル（メトリック名，プロパティ，メトリック値，タイムスタンプ）は、タプル（ｔｓｉｄ，メトリック値，タイムスタンプ）にマッピングされる。例えば、タプルが、メトリック名ｍ１およびホスト名ｈ１を提供する場合、メトリック名ｍ１およびホスト名ｈ１を有するすべてのタプルが、同じ時系列識別子を割り当てられる。したがって、ｔｓｉｄは、計測分析システム１００によって受け取られたデータストリームのすべてのタプルを一意的に識別する。
【００４２】
量子化モジュール２４０は、データが任意の時間間隔で利用可能である入力データストリームを、データが規則的な時間間隔で利用可能であるデータストリームに変換するように、受け取られたデータ値を処理する。例えば、入力データストリームで受け取られたデータ値は、受け取られたデータ値の１つの連続するペアから、受け取られたデータ値の次のペアにかけて変化することがある、不規則な間隔で発生することがある。しかしながら、量子化モジュール２４０は、毎秒、５秒ごと、または１５秒ごとなど、定期的に（規則的な時間間隔で）発生するデータを有するデータストリームを生成するように、データストリームのデータを処理する。このプロセスは、本明細書では、データストリームまたは時系列の量子化と呼ばれる。実施形態では、インターフェースモジュール２１０は、複数のスレッドまたはプロセスを生成し、各スレッドまたはプロセスは、データストリームに対応するデータを受け取るように構成される。各スレッドまたはプロセスは、時間間隔ごとのデータストリームごとに受け取られたデータの量子化を実行するために、量子化モジュール２４０を起動する。
【００４３】
分析エンジン２７０は、データストリームとともに受け取られる属性、および／またはメタデータの一部として指定される属性に基づいて、式を指定する報告を評価する。式は、様々な操作、例えば、集約および変換に基づくことがある。実施形態では、式は、以降の時間間隔上で、データストリームとともに受け取られる属性値を集約する。
【００４４】
属性と関連付けられた属性は、値がデータストリームのデータの一部として提供される属性からなる第１のセットと、データ値がメタデータの一部として指定され、メタデータストア２３０内に記憶される属性からなる第２のセットの、２つのセットに属すると見なされることがある。分析エンジン２７０によって処理される式は、第１のセットの属性と、第２のセットの属性とに基づくことがある。言い換えると、式は、値がデータストリームとともに受け取られる属性と、メタデータの一部として指定される属性とに基づくことがある。例示的な式は、集約値がメタデータ属性に関してグループ化されるような、データストリームとともに受け取られた属性値の総和を計算することがある。例えば、データストリームが、組織のいくつかのサーバについて、毎秒、サーバの負荷を送り、各サーバと関連付けられたメタデータ属性「ｄａｔａｃｅｎｔｅｒ」が、存在する場合、式は、データセンタに関してグループ化されたサーバの平均負荷を決定することがある。
【００４５】
計測分析システム１００は、定期的に、入力された式の値を決定し、例えば、クライアントデバイス上で動作するブラウザアプリケーションなどのクライアントアプリケーションを介して、表示用に結果を送る。式は、集約および変換を含む様々な関数を様々な方法で構成することによって、ならびに先に定義された他の式を構成することによって、獲得されることがある。実施形態では、分析エンジン２７０は、式を解析し、プログラムの実行可能な表現を生成し、生成された表現を実行する。
【００４６】
分析エンジン２７０は、式の評価の結果として、複数の出力データストリームを生成することがある。例えば、分析エンジン２７０は、式を受け取りおよび評価し、組織と関連付けられたすべての入力データストリームにわたって、データストリームで受け取られた属性値を集約し、それらをメタデータ属性「ｄａｔａｃｅｎｔｅｒ」に関する集約値にグループ化すると仮定する。したがって、分析エンジン２７０は、「ｄａｔａｃｅｎｔｅｒ」属性の異なる値が存在するのと同数の出力データストリームを生成する。さらに、分析エンジン２７０によって生成される出力データストリームの数は、１つの時間間隔から別の時間間隔にかけて、変化することができる。例えば、新しいデータセンタが、組織に追加され、アクティブになった場合、出力データストリームの数は、新しいデータセンタの追加の結果として、増加することができる。同様に、既存のデータセンタのサーバが、シャットダウンした場合、出力データストリームの数は、以降の時間間隔については、減少することができる。したがって、分析エンジン２７０は、異なる時間間隔上で同じ式を評価した結果として、動的に数が変化する出力ストリームを生成することがある。出力ストリームの数の変化は、以降の時間間隔上での入力データストリームの数の変化の結果として、または以降の時間間隔上でデータストリームの同じセットで受け取られるデータ値の変化の結果として、発生することがある。
【００４７】
メタデータモジュール２２０は、開発システム１２０から受け取られる様々なデータストリームを記述する、メタデータ情報を受け取り、記憶する。実施形態では、メタデータモジュール２２０内に記憶されるメタデータは、ユーザ、例えば、管理システム１７０のクライアント管理アプリケーション１７０を介して計測分析システム１００と対話するシステム管理者から受け取られる。メタデータは、名前−値ペアとして表されることがある。実施形態では、メタデータは、メタデータオブジェクトとして表され、各オブジェクトは、名前−値ペアとして表されることがあるプロパティのセットを定義する。データストリームのセットは、メタデータオブジェクトと関連付けられることがある。したがって、メタデータオブジェクトによって表されるすべてのプロパティは、メタデータオブジェクトと関連付けられる各データストリームと関連付けられる。
【００４８】
メタデータデータストア２３０は、メタデータオブジェクト、およびそれらのデータストリームとの関連付けを記憶する。メタデータデータストア２３０は、各メタデータオブジェクトのための識別子（ＩＤ）、およびメタデータオブジェクトによって表されるプロパティを記憶する。実施形態では、各データストリームは、データストリームを一意的に識別する、時系列識別子と関連付けられる。メタデータデータストア２３０は、各メタデータオブジェクトを時系列識別子の値のセットにマッピングする、インデックスを記憶する。メタデータデータストア２３０は、様々なタグ（すなわち、プロパティまたは名前−値ペア）を時系列識別子の値のセットにマッピングする、インデックスを記憶する。
【００４９】
メタデータストア２３０は、受け取られた命令に基づいて、メタデータオブジェクトを変更することがある。例えば、メタデータストア２３０は、メタデータオブジェクトによって表されるいくつかのプロパティを変更し、追加し、または削除することがある。あるいは、メタデータストア２３０は、受け取られた命令に基づいて、メタデータオブジェクトからデータストリームへのマッピングを変更することがある。例えば、メタデータストア２３０は、データストリームをメタデータオブジェクトと関連付けること、またはメタデータオブジェクトとデータストリームとの間の関連付けを削除することがある。
【００５０】
実施形態では、メタデータストア２３０は、リレーショナルデータベースとして表されるが、他の任意の種類のデータベースまたはデータストアとして表されることもある。例えば、メタデータストア２３０は、メタデータオブジェクトＩＤをデータストリームを識別する時系列識別子にマッピングするテーブルを記憶する、リレーショナルデータベースであることがある。他のデータベーステーブルは、各メタデータオブジェクトと関連付けられたプロパティを、メタデータオブジェクトＩＤから名前−値ペアとして表される各プロパティへのマッピングとして記憶することがある。プロパティは、本明細書では、メタデータタグまたはタグとも呼ばれる。
【００５１】
時系列データストア２６０は、様々なソース、例えば、開発システム１２０から受け取られたデータストリームを記憶する。実施形態では、時系列データストア２６０は、データが量子化された後のデータストリームも記憶する。時系列データストア２６０は、式を評価した結果として分析エンジン２７０によって生成された、出力データストリームも記憶することがある。例えば、式が、複数のデータストリームの生成をもたらす場合、分析エンジン２７０は、これらの出力データストリームの各々についてのｔｓｉｄを決定し、各出力データストリームを時系列データストア２６０内に記憶する。
【００５２】
時系列データストア２６０は、各データストリームのためのロールアップデータも記憶することがある。時系列データストア２６０は、様々な解析要求の結果、例えば、ユーザによって要求された様々な報告の結果も記憶する。分析エンジン２７０は、時系列データストア２６０内に記憶されたデータを、様々なソースからデータストリームとして獲得されるデータとリアルタイムに組み合わることによって、ある種の報告のための結果、例えば、時間の間隔上での移動平均を計算する。
【００５３】
メタデータ表現
実施形態では、メタデータオブジェクトは、階層方式で組織され、それによって、メタデータ定義の再使用、およびメタデータ定義を変更する際の容易さを可能にする。図３は、実施形態による、計測用ソフトウェアのインスタンスを実行することから受け取られるデータストリームと関連付けて指定されたメタデータオブジェクトの例示的な階層を示している。図３に示されるように、各メタデータオブジェクト３１０は、プロパティのセットを表す。メタデータオブジェクトのいくつかは、それらがシステムのすべてのユーザから利用可能なように、計測分析システム１００において定義されることがある。他のメタデータオブジェクトは、ユーザによって、例えば、計測用ソフトウェアについての報告を生成するために計測分析システム１００を使用する企業によって、定義されることがある。
【００５４】
図３に示されるメタデータオブジェクトは、階層として組織される。したがって、メタデータオブジェクト３１０ａは、階層内でメタデータオブジェクト３１０ｃの上位にあり、メタデータオブジェクト３１０ｂは、階層内でメタデータオブジェクト３１０ｄの上位にあり、メタデータオブジェクト３１０ａ、３１０ｂ、３１０ｃ、３１０ｄは、すべて、メタデータオブジェクト３１０ｅの上位にある。
【００５５】
メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のオブジェクトのプロパティを含む（すなわち、継承する）。例えば、メタデータオブジェクト３１０ｃは、メタデータオブジェクト３１０ａから、プロパティ「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」を継承し、メタデータオブジェクト３１０ｄは、メタデータオブジェクト３１０ｂから、プロパティ「ｄａｔａｃｅｎｔｅｒ：ｅａｓｔ」を継承し、メタデータオブジェクト３１０ｅは、メタデータオブジェクト３１０ｅの上位のメタデータオブジェクトから、プロパティ「ｓｏｕｒｃｅ：ｗｅｂ１」、「ｄａｔａｃｅｎｔｅｒ：ｅａｓｔ」、「ｍｅｔｒｉｃ：ｅｒｒｏｒｓ」、および「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」を継承する。
【００５６】
メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のメタデータオブジェクトから継承されるプロパティに加えて、追加のプロパティを定義することがある。例えば、メタデータオブジェクト３１０ｃは、メタデータオブジェクト３１０ａから継承されるプロパティ「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」に加えて、「ｍｅｔｒｉｃ：ｅｒｒｏｒｓ」を定義し、メタデータオブジェクト３１０ｄは、メタデータオブジェクト３１０ｂから継承されるプロパティ「ｄａｔａｃｅｎｔｅｒ：ｅａｓｔ」に加えて、「ｓｏｕｒｃｅ：ｗｅｂ１」を定義し、メタデータオブジェクト３１０ｅは、階層内においてメタデータオブジェクト３１０ｅの上位のメタデータオブジェクトから継承されるプロパティに加えて、新しいプロパティ「ａｄｍｉｎｉｓｔｒａｔｏｒ：ａｄｍｉｎ１」を定義する。しかしながら、メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のメタデータオブジェクトから継承されるもの以外の追加のプロパティを定義しなければならないわけではない。
【００５７】
実施形態では、ソース属性およびメトリック属性を有するメタデータオブジェクトは、メトリック時系列オブジェクト（ＭＴＳオブジェクト）とも呼ばれる。ＭＴＳメタデータオブジェクトは、メトリック値およびソース値に基づいて、一意的に識別される。したがって、メトリック値およびソース値は、ＭＴＳオブジェクトを一意的に識別するためのキー（例えば、プライマリキー）を形成する。データストリームのデータ点を定義する値からなるいずれのタプルも、タプルのソース値およびメトリック値に基づいて、ＭＴＳオブジェクトと関連付けられることができる。実施形態では、ＭＴＳオブジェクトＸは、階層内においてメタデータオブジェクトＸの上位のメタデータオブジェクトのプロパティのセットすべての合併を取ることによって獲得される、プロパティのセットを有する。ソース値およびメトリック値を指定しない３１０ａおよび３１０ｂなどのメタデータオブジェクトは、プロパティのセットを指定するための抽象オブジェクトとしての役割を果たす（これらのメタデータオブジェクトは、タグとも呼ばれる）。
【００５８】
データストリームは、プロパティのセットによって特徴付けられる。データストリームは、一致するプロパティを有するメタデータオブジェクトと関連付けられる。メタデータオブジェクトの複数のインスタンスが、生成されることがあり、プロパティの一致するセットを有する各データストリームに１つずつ対応する。プロパティは、計測分析システム１００が、キー値ペアに基づいて、何らかの基準を満たすＭＴＳオブジェクトに問い合わせることを可能にする。例えば、キー値ペアのセットが与えられると、計測分析システム１００は、キー値ペアの与えられたセットと一致するすべてのデータストリームを識別することができる。これらの一致するデータストリームに属するデータ点は、これらのデータ点に基づいてある式を評価する、分析ジョブに提供されることがある。
【００５９】
図４は、実施形態による、図３に示されるメタデータオブジェクトの階層と関連付けられたデータストリームのセットを示している。図３に示されるメタデータオブジェクトの階層は、図４に示されるデータストリームの対応するセットを使用して、説明される。図４に示される各楕円形は、データストリームのセット４１０を表すと仮定する。さらに、図３に示されるいずれのセット４１０ｘ（ｘは、値「ａ」、「ｂ」、「ｃ」などを取ることができる変数を表す）も、図３に示されるメタデータオブジェクト３１０ｘに対応する。例えば、セット４１０ａは、メタデータオブジェクト３１０ａに対応し、セット４１０ｂは、メタデータオブジェクト３１０ｂに対応し、セット４１０ｃは、メタデータオブジェクト３１０ｃに対応し、その他も同様である。
【００６０】
メタデータオブジェクト４１０は、いずれのデータストリームとも関連付けられないことがあり、例えば、メタデータオブジェクトは、そのメタデータオブジェクトが追加された時に利用可能ないずれのデータストリームとも関連付けられない、モデリング構造体として追加されることがあることに留意されたい。しかしながら、メタデータオブジェクト４１０からデータストリームへのマッピングは、変更されることがある。例えば、要素が、メタデータオブジェクトと関連付けられたデータストリームのセットに追加されること、またはセットから削除されることがある。したがって、メタデータオブジェクトが、そのメタデータオブジェクトがメタデータストア２３０に追加されるときに、いずれのデータストリームとも関連付けられない場合であっても、メタデータオブジェクトは、後のステージにおいて、１または複数のデータストリームと関連付けられることがある。
【００６１】
図４に示されるように、セット４１０ａは、メタデータオブジェクト３１０ａ、したがって、値「ｔｒｕｅ」を有するプロパティ名「ｃｒｉｔｉｃａｌ」を有するメタデータオブジェクトと関連付けられる、すべてのデータストリームを表す。ユーザ、例えば、システム管理者は、管理システム１６０を使用して、データストリームをメタデータオブジェクトに割り当てることがある。例えば、システム管理者は、企業の運営にとってクリティカルであると決定されたすべてのデータストリームを決定し、それらをメタデータオブジェクト３１０ａと関連付けることがある。
【００６２】
別の例として、セット４１０ｂは、メタデータオブジェクト３１０ｂ、したがって、値「ｅａｓｔ」を有するプロパティ名「ｄａｔａｃｅｎｔｅｒ」を有するメタデータオブジェクトと関連付けられる、すべてのデータストリームを表す。上で言及されたように、システム管理者は、「ｅａｓｔ」と名付けられたデータセンタにおいて動作する計測用ソフトウェアのインスタンスを決定し、それらをメタデータオブジェクト３１０ｂと関連付けることができる。あるいは、スクリプトまたは自動化プロセスが、メタデータオブジェクトのプロパティに対応する特定の基準を満たす、計測用ソフトウェアのインスタンスを識別するために、実行されることがある。例えば、クローラが、データセンタ「ｅａｓｔ」において動作するすべてのサーバを識別し、それらをメタデータオブジェクト３１０ｂと関連付けるために、実行されることがある。
【００６３】
セット４１０ｃは、プロパティ「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」および「ｍｅｔｒｉｃ：ｅｒｒｏｒｓ」と関連付けられた、すべてのデータストリームを表す。したがって、セット４１０ｃは、セット４１０ａのすべてのデータセンタのサブセットである。これが、サブセットであるのは、「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」を満たすが、「ｍｅｔｒｉｃ：ｅｒｒｏｒｓ」を満たさない、追加のデータストリームが存在することがあるからである。セット４１０ａとセット４１０ｂは、いくつかのオーバーラップするデータストリームを含むことがあるが、含むことを求められるわけではないことに留意されたい。同様に、セット４１０ｃとセット４１０ｄは、いくつかのオーバーラップするデータストリームを含むことがあるが、含むことを求められるわけではない。図４に示されるように、セット４１０ａとセット４１０ｂは、いくつかのオーバーラップするデータストリームを含み、同様に、セット４１０ｃとセット４１０ｄは、いくつかのオーバーラップするデータストリームを含む。セット４１０ｅは、継承されたプロパティに加えて、それが、プロパティ「ａｄｍｉｎｉｓｔｒａｔｏｒ：ａｄｍｉｎ１」を定義するので、セット４１０ｃとセット４１０ｄの共通部分セットのサブセットを含む。セット４１０ｅが、継承されるプロパティに加えて、プロパティを定義しない場合、セット４１０ｅは、セット４１０ｃとセット４１０ｄの共通部分セットである。
【００６４】
一般に、メタデータオブジェクトＸに対応するセットは、メタデータオブジェクトＸが、継承されるプロパティに加えて、いかなる新しいプロパティも定義しない場合、階層内においてメタデータオブジェクトＸの上位のメタデータオブジェクトに対応するセットの共通部分である。さらに、メタデータオブジェクトＹに対応するセットは、メタデータオブジェクトＹが、継承されるプロパティに加えて、新しいプロパティを定義する場合、階層内においてメタデータオブジェクトＹの上位のメタデータオブジェクトに対応するセットの共通部分のサブセットであることがある。
【００６５】
いくつかの実施形態では、計測分析システム１００は、いくつかのメタデータオブジェクトからデータストリームのセットへのマッピングを受け取る。メタデータモジュール２２０は、階層内においてメタデータオブジェクトの下位の他のメタデータオブジェクトにマッピングされるデータストリームのセットに基づいて、メタデータオブジェクトと関連付けられたデータストリームのセットの要素を決定する。例えば、メタデータモジュール２２０は、階層内においてメタデータオブジェクトの下位のメタデータオブジェクトにマッピングされるデータストリームのセットの合併に基づいて、メタデータオブジェクトと関連付けられたすべてのデータストリームのセットを決定する。例えば、図３および図４では、メタデータモジュール２２０は、各メタデータオブジェクト３１０から１または複数のデータストリームへのマッピングを受け取る。メタデータモジュール２２０は、メタデータオブジェクト３１０ａと関連付けられたデータストリームのセットを、メタデータオブジェクト３１０ａ、３０１ｃ、３１０ｅにマッピングされるデータストリームの合併として、決定する。
【００６６】
メタデータオブジェクトの階層定義は、データセンタを様々なプロパティに割り当てることを容易にし、新しいメタデータオブジェクトを定義することも容易にする。分析エンジン２７０は、メタデータオブジェクト内で定義されたプロパティに基づいて、式を受け取り、処理する。分析エンジン２７０は、式に適用可能なデータストリームのセットを決定する。例えば、分析エンジン２７０が、「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」を満たすすべてのデータストリームの９５パーセンタイルの計算を指定する式を受け取った場合、分析エンジン２７０は、メタデータオブジェクト３１０ａに対応するすべてのデータストリーム、すなわち、セット４１０ａの９５パーセンタイルを決定する。分析エンジン２７０が、「ｃｒｉｔｉｃａｌ：ｔｒｕｅ」および「ｍｅｔｒｉｃ：ｅｒｒｏｒｓ」を満たすすべてのデータストリームの９５パーセンタイルの計算を指定する式を受け取った場合、分析エンジン２７０は、メタデータオブジェクト３１０ｃに対応するすべてのデータストリーム、すなわち、セット４１０ｃの９５パーセンタイルを決定する。
【００６７】
メタデータが、変更される場合は常に、計測分析システム１００は、変更されたメタデータに適用可能なすべてのデータストリームを決定し、メタデータをデータストリームと関連付けるインデックス構造を更新する。例えば、新しいタグ（すなわち、プロパティまたは名前−値ペア）が、定義され、データストリームのセットと関連付けられる場合、計測分析システム１００は、タグをデータストリームと関連付けるインデックスを更新する。（例えば、図３に示されるような）メタデータオブジェクトの階層内で階層の高位レベルにあるメタデータオブジェクトに対する変更は、その階層内でそのメタデータオブジェクトの下位にある複数のメタデータオブジェクトに影響することがあることに留意されたい。計測分析システム１００は、インデックスを更新して、影響されるこれらのメタデータオブジェクトの各々を適切なデータストリームと関連付ける。
【００６８】
全体的なプロセス
図５は、実施形態による、計測用ソフトウェアに基づいた報告を生成するための全体的なプロセスを示している。メタデータモジュール２２０は、５１０において、データストリームを記述するメタデータを受け取る。メタデータ定義は、データストリーム自体のデータとは独立して、受け取られる。例えば、データストリームは、メタデータで指定されるようなデータストリームを記述する属性（例えば、データセンタ属性）についての値を提供することなく、データ値と、データ値と関連付けられたタイムスタンプとを含む、タプルを提供することがある。メタデータモジュール２２０は、データストリームを提供するソースとは異なるソースから、データストリームを記述するプロパティを受け取る。例えば、データストリームは、動作中の計測用ソフトウェアのインスタンスによって提供され、一方、メタデータ定義は、管理システム１６０を介して、システム管理者によって提供される。
【００６９】
分析エンジン２７０は、５２０において、メタデータに基づいて、式を、例えば、メタデータで指定されるプロパティを使用する式を受け取る。５２０において受け取られる式は、問い合わせの一部であることがあり、例えば、計測用ソフトウェアを記述する報告を生成し、結果をリアルタイムに、すなわち、データストリームのデータが受け取られると直ちに、提供するための、計測分析システム１００によって受け取られる問い合わせの一部であることがある。
【００７０】
例示的な式は、複数のデータストリームからのデータの集約に基づいて、値を生成する。例えば、式は、複数のデータストリームからのデータの一定のパーセンタイルに基づいて、値を生成することがあり、または式は、複数のデータストリームからのデータの最大値（または最小値、平均、もしくは他の任意の統計的尺度）である値を生成することがある。別の例示的な式は、複数のストリームからのデータを集約し、メタデータ属性によってデータ値をグループ化し、それによって、複数の出力データストリームを生成する（メタデータ属性は、複数のデータ値を取ることができ、複数の入力データストリームは、メタデータ属性の複数のデータ値と関連付けられたデータストリームを含むと仮定する。
【００７１】
計測分析システム１００は、様々なデータストリームのデータが、様々な開発システム１２０から、計測分析システム１００によって受け取られると直ちに、以下のステップ（５３０、５４０、５５０、５６０）を繰り返す。インターフェースモジュール２１０は、５３０において、受け取られた式を分析して、式に適用可能なデータストリームを識別する。例えば、特定の時間間隔において、インターフェースモジュール２１０は、データストリームの第１のセットが式に適用可能であると決定することがある。しかしながら、第２の（後続する）時間間隔においては、インターフェースモジュール２１０は、データストリームの第２のセットが式に適用可能であると決定することがある。例えば、式が、プロパティｄａｔａｃｅｎｔｅｒ＝ｅａｓｔを使用して指定されるような、データセンタ「ｅａｓｔ」から到着するデータストリームに基づいて、ある値を評価する場合、受け取られるデータストリームの数は、（ソフトウェアの新しいインスタンスが、データセンタ内のサーバによって実行されるときは）増加することがあり、または受け取られるデータストリームの数は、（いくつかのサーバが、ダウンしている場合は）減少することがある。
【００７２】
インターフェースモジュール２１０は、５３０において、定期的に式を分析して、式に適用可能なすべてのデータストリームを識別する。実施形態では、インターフェースモジュール２１０が、５３０において、受け取られた式を分析するレートは、残りのステップ５４０、５５０、５６０が実行されるレートとは異なる。例えば、インターフェースモジュール２１０が、５３０において、受け取られた式を分析するレートは、残りのステップ５４０、５５０、５６０が実行されるレートよりも遅いことがある。
【００７３】
実施形態では、計測分析システム１００は、式に適用可能なデータストリームが利用可能になると直ちに、式と関連付けられたデータストリームのセットを更新する。計測分析システム１００は、評価中の各式と関連付けられたデータストリームのセットの表現を維持する。新しいデータストリームが登録されると、または式に適用可能なデータストリームについてのデータが受け取られると直ちに、計測分析システム１００、計測分析システム１００は、そのデータストリームを、式と関連付けられたデータストリームのセットに追加する。同様に、データストリームが、もはや式に適用可能ではない場合、計測分析システム１００は、そのデータストリームを、計測分析システム１００と関連付けられたデータストリームのセットから削除する。例えば、データストリームは、そのデータストリームを記述するメタデータが変更された場合、式と関連付けられないことがある。したがって、計測分析システム１００は、式に適用可能なデータストリームのセットを定期的に評価する必要がない。式と関連付けられたデータストリームが変化する原因となる、入力データストリームに対する変更が発生すると直ちに、各式に適用可能なデータストリームのセットが、決定される。
【００７４】
インターフェースモジュール２１０は、５４０において、異なるデータストリームの（値のタプルとして表される）データ点を受け取る。実施形態では、インターフェースモジュール２１０は、時間の一定の間隔、例えば、１秒または数秒にわたって待ち、一定の時間間隔の期間中、異なるデータストリームから受け取られたすべてのデータを収集する。実施形態では、量子化モジュール２４０は、時間間隔ごとに、データの量子化を実行する。したがって、各データストリームからのデータは、時間間隔についてのデータストリームと関連付けられた単一の値に集約される。量子化されたデータストリームの表現が、維持され、それは、データストリームのソースから到着したデータのメモリ内表現と、時系列データストア２６０内にデータストリームまたは時系列として記憶されたより古いデータ値とを含む。
【００７５】
分析エンジン２７０は、５５０において、時間間隔についてのデータストリームのデータに基づいて、式を評価する。データが、データストリームごとに量子化される場合、分析エンジン２７０は、５５０において、各データストリームからの量子化された値を使用して、式を評価する。分析エンジン２７０は、５６０において、式の評価の結果を、提示用に、例えば、ユーザインターフェースに送る。
【００７６】
分析エンジン２７０は、また、式の評価の結果として獲得された（１または複数の）出力データストリームを、例えば、時系列データストア２６０内に記憶する。実施形態では、分析エンジン２７０は、式の評価の結果として獲得された各出力データストリームを表す、新しいデータストリームを生成する。新しいデータストリームは、時系列データストア２６０内に記憶される。これは、式の結果が、他の式への入力として使用されることを可能にする。例えば、式は、複数のデータストリームとして受け取られた値の９５パーセンタイルを表すことがある。式の結果は、新しいデータストリームとして、時系列データストア２６０内に記憶されることがある。分析エンジン２７０は、生成されたデータストリームに基づいて、移動平均値を計算する式をさらに実行することがある。
【００７７】
実施形態では、計測分析システム１００は、受け取られた式を評価し、ステップ５３０、５４０、５５０、５６０を実行するために、ジョブ（またはプロセス）を実行する。このジョブは、式に対応するＭＴＳオブジェクトのインスタンス（および関連付けられたデータストリーム）を決定するために、問い合わせを動的に評価する。式に基づいて問い合わせに一致するすべてのデータストリームが、決定される。式を評価する場合、一致するデータストリームのデータ点が、考察される。
【００７８】
量子化
計測分析システム１００は、不規則な時間間隔で到着するデータ値を有するデータストリームを処理し、規則的な時間間隔でデータを有する等価なデータストリームを生成することによって、データストリームの量子化を実行する。データストリームのデータ値は、２つの連続するデータ値のペアの間の時間間隔が異なる場合、不規則な時間間隔で到着する。例えば、値ｖ１の到着と値ｖ２の到着との間の時間間隔は、値ｖ２の到着と値ｖ３の到着との間の時間間隔と異なる。
【００７９】
入力データストリームの量子化は、量子化されたデータストリームを使用するデータの処理を簡素化する。例えば、時間間隔ごとに、受け取られた複数のデータストリームに基づいた集約値が、各量子化されたデータストリームからの、その時間間隔についての単一のデータ値を単に集約することによって、決定されることができる。さらに、計測分析システム１００は、異なる報告に対応する異なる式を評価するために、量子化されたデータストリームの同じセットを使用する。結果として、量子化を実行するための、データ値を集約するために実行される計算が、各一定の時間間隔ごとに各式を評価するために再使用される。
【００８０】
実施形態では、計測分析システム１００は、各一定の時間間隔の終りに、入力データストリームの量子化を実行して、その時間間隔についての量子化されたデータが、その一定の時間間隔についての処理に利用可能であるようにする。さらに、計測分析システム１００は、量子化されたデータストリームを記憶して、複数のデータストリームにわたるデータが、様々な方法で組み合わされることができるようにする。言い換えると、ユーザは、第１の方法で、データストリームのセットにわたってデータを組み合わせる第１の要求を送ることがあり、その後、ユーザは、異なる方法で、データストリームの異なるセットにわたってデータを組み合わせるための新しい要求を送ることがある。データストリームの２つのセットが、オーバーラップしている場合、オーバーラップするデータストリームについての、その時間間隔についてのデータ値は、２つの計算のために再使用されることができる。
【００８１】
例として、計測分析システム１００は、様々なデータセンタ上で計算された集約を見るために、複数のデータストリームにわたるデータを組み合わせた報告を受け取り、処理することがある。しかしながら、その後、ユーザが、異なる種類のアプリケーション、異なる種類のサーバ、および異なる地理的領域上などで計算された集約を見るために、要求を変更することがある。計測分析システム１００は、これらの計算の各々のために、量子化されたデータストリームのデータ値を再使用する。
【００８２】
計測分析システム１００は、データストリームのデータを集約する式が以前に評価されたデータストリームのセットをユーザが変更する要求も受け取ることがある。例えば、ユーザは、計測分析システム１００に、データストリームのセットから１または複数のデータストリームを削除するように要求し、改定されたセットに基づいた集約を要求することがある。ユーザは、新しいサーバ、アプリケーションを削除もしくは追加することの影響、または他の任意の変更をシステム構成に施すことの影響を分析するために、そのような要求を送ることがある。計測分析システム１００は、量子化されたデータストリーム（または量子化された時系列データ）を保持し、これらの要求に基づいて、異なる時間間隔についての量子化されたデータストリームを組み合わせる。計測分析システム１００が、量子化されたデータストリームを記憶するので、計測分析システム１００は、必要に応じて、データストリームにわたってデータを効率的に組み合わせる能力を有する。
【００８３】
計測分析システム１００は、複数のデータストリームにわたって移動集約計算を実行するために、データストリームにわたってデータを組み合わせることができる。計測分析システム１００は、与えられた長さの時間間隔にわたる任意の移動集約値、例えば、１時間の移動平均、および１５分の移動平均などを、連続的に計算することがある。
【００８４】
量子化モジュールのアーキテクチャ
量子化モジュール２４０は、時間間隔ごとに入力データストリームの値を集約し、その時間間隔についての集約値を生成する。したがって、量子化モジュール２４０は、任意の時間間隔の後にデータ値が発生することができるデータストリームを受け取る。量子化モジュール２４０は、入力データストリームを処理して、データが規則的な時間間隔で利用可能であるデータストリームを生成する。量子化モジュール２４０についての詳細が、本明細書で、さらに説明される。
【００８５】
量子化モジュール２４０は、データストリームで受け取られた値の種類、例えば、値があるアクションまたはエンティティのカウントであるかどうか、値がある値の集約によって獲得されたかどうか、および値が値の与えられたセットの最大値／最小値を表すかどうかなどを記述する情報を受け取る。データストリームは、値を獲得するために、計測用ソフトウェアによって実行される操作の種類を記述する、値の種類と関連付けられる。量子化モジュール２４０によって受け取られ、処理されるデータストリームの値の様々な種類の例は、カウント（カージナリティ）、平均、中央値、パーセンタイル、および最新値など、統計的演算を実行した結果として獲得される値を含む。統計的演算は、計測用ソフトウェアにおいて表されるエンティティ、または計測用ソフトウェアによって実行されるアクションを記述する値に対して実行される。
【００８６】
実施形態では、量子化モジュール２４０は、量子化されたデータストリームの一定の時間間隔に対応する結果の値を獲得するために、データストリームの値の様々な種類から、ある間隔についてのデータストリームの入力値に対して実行される操作の種類へのマッピングを記憶する。マッピングは、構造として記憶されること、または量子化モジュール２４０の命令内に、例えば、ｉｆ、ｔｈｅｎ、ｅｌｓｅコマンドのシーケンスとして、エンコードされることがある。例えば、量子化モジュール２４０は、データストリームが操作の種類「ｃｏｕｎｔ」と関連付けられるならば（ｉｆ）、そのときは（ｔｈｅｎ）、第１の関数を実行し、そうではなく（ｅｌｓｅ）、データストリームが操作の種類「ｓｕｍ」と関連付けられるならば（ｉｆ）、そのときは（ｔｈｅｎ）、第２の関数を実行するなど、といった形式の命令を含むように構成されることがある。
【００８７】
実施形態では、量子化モジュール２４０は、特定の時間間隔についての入力として受け取られたデータ値を記憶するためのバッファを含む。時間間隔内で受け取られる値の数は、あらかじめ知られておらず、１つの時間間隔から別の時間間隔にかけて変化することができるので、量子化モジュール２４０のバッファは、任意の数の値を記憶するように構成されたデータ構造を使用する。例えば、量子化モジュール２４０は、入力データストリームの値を記憶するために、リストデータ構造、またはスタックデータ構造を使用することがある。
【００８８】
量子化モジュール２４０は、各一定の時間間隔ごとに、受け取られたデータストリームのデータ値を収集する。量子化モジュール２４０は、一定の時間間隔の長さを表す定数値Ｌを記憶する。量子化モジュール２４０は、現在の時間間隔の長さを決定するために、先の一定の時間間隔が閉じられて以降の時間を追跡する。量子化モジュール２４０は、現在の時間間隔の終りにいつ達したかを決定するために、現在の時間間隔の長さをＬと比較する。量子化モジュール２４０は、現在の時間間隔を表す集約値を決定するために、現在の時間間隔において受け取られたすべてのデータ値を処理する。
【００８９】
量子化モジュール２４０は、現在の時間間隔に対応する一定の時間間隔についての量子化されたデータストリーム値を表すものとして、集約値を記憶する。量子化モジュール２４０は、その後、現在の時間間隔の入力値を表すために使用されたバッファをクリアし、それを次の一定の時間間隔についての値を記憶するために使用する。実施形態では、量子化モジュール２４０は、バッファ内に記憶された先の時間間隔のデータが処理されている間に、次の時間間隔についての新しいデータが別のバッファ内に記憶されることができるように、複数のバッファを使用する。
【００９０】
図６は、実施形態による、計測用ソフトウェアから受け取られるデータストリームの量子化のプロセスを示している。図６は、時間軸６２０ａ、６２０ｂを示しており、各々は、データ値の系列を有するタイムラインを表す。時間軸６２０ａは、入力データストリーム６００のデータ値を示しており、時間軸６２０ｂは、量子化モジュール２４０によって生成された量子化されたデータストリーム６１０の結果の値のデータストリームを示している。
【００９１】
時間間隔Ｉ１、Ｉ２、Ｉ３などは、量子化されたデータストリームに対応する一定の時間間隔を表す。図６に示されるように、４つのデータ値Ｄ１１、Ｄ１２、Ｄ１３、Ｄ１４が、（Ｔ０からＴ１までの時間を表す）時間間隔Ｉ１において受け取られ、２つのデータ値Ｄ２１、Ｄ２２が、（Ｔ１からＴ２までの時間を表す）時間間隔Ｉ２において受け取られ、３つのデータ値Ｄ３１、Ｄ３２、Ｄ３３が、（Ｔ２からＴ３までの時間を表す）時間間隔Ｉ３において受け取られる。
【００９２】
ＴｍとＴｎとの間の時間間隔は、開始時点Ｔｍを含むと仮定されることがある（終了時点Ｔｎは、次の時間間隔に含まれる）。ＴｍとＴｎとの間の時間間隔についての他の任意の解釈が、使用されることがあり、例えば、終了時点Ｔｎが、時間間隔に含まれ、開始時点Ｔｍは、先の時間間隔に含まれる。
【００９３】
量子化モジュール２４０は、各時間間隔のデータ値を処理して、時間軸６２０ｂに示される対応する結果の値を生成する。例えば、量子化モジュール２４０は、時間間隔Ｉ１において受け取られた値Ｄ１１、Ｄ１２、Ｄ１３、Ｄ１４を集約して、時間軸６２０ｂに示される値Ｄ１を生成し、量子化モジュール２４０は、時間間隔Ｉ２において受け取られた値Ｄ２１、Ｄ２２を集約して、時間軸６２０ｂに示される値Ｄ２を生成し、量子化モジュール２４０は、時間間隔Ｉ３において受け取られた値Ｄ３１、Ｄ３２、Ｄ３３を集約して、時間軸６２０ｂに示される値Ｄ３を生成する。
【００９４】
実施形態では、量子化モジュール２４０は、データがどのように量子化されるべきかを定義する量子化方針を定義する、構成パラメータ（例えば、ユーザ定義の構成パラメータ）を受け取る。異なる種類のデータは、異なるように量子化されることがある。言い換えると、データストリームの入力値を集約するために実行される操作の種類は、入力データストリームによって表されるデータの種類に依存する。
【００９５】
入力データストリームの各タプルが、ある値のカウント、例えば、ソフトウェアによって実行されたアクションのカウントである場合、量子化モジュール２４０は、カウントを加算することによって、入力値を集約して、時間間隔ごとの出力データストリーム値を決定する。受け取られた入力データストリームの各タプルが、値のセットのうちの最小値（または最大値）である場合、量子化モジュール２４０は、時間間隔についての入力値の最小値（または最大値）を決定することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。受け取られた入力データストリームの各タプルが、値のセットのうちの最新値である場合、量子化モジュール２４０は、時間間隔についての入力値の最新を決定（し、時間間隔の期間中受け取られた以前の値を無視）することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。受け取られた入力データストリームの各タプルが、値のセットの平均である場合、量子化モジュール２４０は、時間間隔の入力値の平均を決定することによって、時間間隔と関連付けられた入力値を集約して、各時間間隔についての出力データストリーム値を決定する。平均のセットの平均は、必ずしも平均のセットを決定するために使用された入力の平均ではない。
【００９６】
実施形態では、量子化モジュール２４０は、セットのうちの最新値を決定することによって、平均のセットを含む入力値を集約する。受け取られた入力データストリームの各タプルが、その時点におけるメトリックの最後に利用可能な値である場合、量子化モジュール２４０は、単にデータストリームの最後の値を使用することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。
【００９７】
実施形態では、入力データストリームは、ある入力値の平均を表すデータ値を含む。各データ値は、平均を決定するために使用されたデータ値のカウントを含むタプルとして表される。タプルは、平均値と、平均を決定するために使用されたデータ値の数のカウントとを含むことがある。量子化モジュール２４０は、以下のようにして、複数のタプルに基づいて、全体的な平均値を決定する。量子化モジュール２４０は、平均値をカウント値で乗算することによって、各タプルについての総和値を決定する。量子化モジュール２４０は、各タプルについての総和値の合算を決定することによって、複数の入力タプルについての全体的な総和値を決定する。量子化モジュール２４０は、タプルのカウント値を合算することによって、全体的なカウント値を決定する。量子化モジュール２４０は、全体的な総和値を全体的なカウント値で除算することによって、全体的な平均値を決定する。
【００９８】
あるいは、各タプルは、総和と、総和を決定するために使用された値のカウントとを含むことがある。量子化モジュール２４０は、総和値をカウント値で除算することによって、各タプルに対応する各個々の平均値を決定することができる。量子化モジュール２４０は、以下のようにして、タプルを組み合わせて、全体的な平均値を決定する。量子化モジュール２４０は、すべての総和値を合算して、全体的な総和値を決定する。量子化モジュール２４０は、すべてのカウント値を合算して、全体的なカウント値を決定する。量子化モジュール２４０は、全体的な総和値を全体的なカウント値で除算することによって、全体的な平均値を決定する。
【００９９】
いくつかの実施形態では、量子化モジュール２４０は、ロールアップ操作を実行する。ロールアップ操作は、（本明細書ではロールアップ時間間隔と呼ばれる）より大きい時間間隔上で、データをさらに集約することに対応する。例えば、量子化モジュール２４０は、様々な時間間隔で不規則に到着するデータを有する入力データストリームを、１つの第２の時間間隔で利用可能なデータを有するデータストリームに変換するために、量子化を実行すると仮定する。量子化モジュール２４０は、さらに、より大きい時間間隔、すなわち、ロールアップ時間間隔、例えば、１分間の時間間隔にわたってデータを集約するために、ロールアップ操作を実行することがある。
【０１００】
実施形態では、ロールアップ操作は、ロールアップ時間間隔の終りに実行される。これは、計測分析システム１００が、複数のデータストリームにわたって効率的にロールアップ操作を実行することができるように、計測分析システム１００が、各データストリームについてロールアップデータがいつでも準備できているようにすることを可能する。上で説明されたように、計測分析システム１００は、ロールアップデータを、複数のデータストリームにわたって、異なる方法で、すなわち、ロールアップのために使用される関数の異なる種類別に、データストリームの異なる組み合わせ別に、ロールアップが実行される異なるセット別に、効率的に組み合わせることができる。実施形態では、量子化モジュール２４０が量子化またはロールアップを実行する時間間隔の長さは、構成可能である。
【０１０１】
図７は、実施形態による、様々なソースから受け取られるデータストリームのデータを組み合わせるための全体的なプロセスを示している。本明細書で説明されるステップは、示されたもの以外のモジュールによって実行されることがある。さらに、あるステップは、図７に示されるのとは異なる順序で実行されることがある。
【０１０２】
この計測分析システム１００は、複数の開発システム１２０からデータストリームを受け取り、データに基づいた報告をリアルタイムに生成するために、データが受け取られると直ちに、データストリームのデータを組み合わせる。したがって、データが受け取られると直ちに、入力データストリームに対応する報告の結果の値が、進行中ベースで生成され、提示用に送られる。例えば、時間間隔ごとのデータストリームのデータ値が、受け取られ、後続する時間間隔についての結果の値が処理される前に、結果の値が、計算され、提示用に送られる。あるいは、次の時間間隔についてのデータ値は、現在の時間間隔についての結果の値が、提示用に送られている間に、並列して、受け取られ、処理されることがある。図７は、時間間隔ごとに繰り返されるステップを示している。
【０１０３】
インターフェースモジュール２１０は、７１０において、１または複数のデータストリームからデータを受け取る。例えば、インターフェースモジュールは、７１０ａ、７１０ｂ、７１０ｃにおいて、第１のデータストリーム、第２のデータストリーム、第３のデータストリームについてのデータを受け取り、その他についても同様である。量子化モジュール２４０は、７２０において、時間間隔についての各データストリームにおいて受け取られたデータを量子化する。例えば、量子化モジュール２４０は、７２０ａ、７２０ｂ、７１０ｃにおいて、第１のデータストリーム、第２のデータストリーム、第３のデータストリームについてのデータを量子化し、その他についても同様である。したがって、量子化された集約値が、時間間隔の期間中受け取られた各データストリームのデータ値に基づいて、生成される。
【０１０４】
分析エンジン２７０は、７３０において、時間間隔についてのデータストリームに対応する量子化されたデータ値を集約する式を評価する。式は、メタデータストア２３０内に記憶されたデータストリームを記述するメタデータを使用して、指定されることがある。分析エンジン２７０は、７４０において、式の評価の結果を、時系列データストア２６０内に記憶する。実施形態では、分析エンジン２７０は、式の評価の結果として獲得された出力データストリームを、提示用に送る。
【０１０５】
上述のステップ７１０、７２０、７３０、７４０は、後続する時間間隔ごとに、計測分析システム１００によって繰り返される。結果として、分析エンジン２７０によって受け取られる式の結果を表す新しいデータストリームが、生成され、時系列データストア２６０内に記憶される。さらに時間間隔ごとのデータが、入力データストリームから受け取られると直ちに、式の結果が、各一定の時間間隔ごとに、リアルタイムに、表示用に送られる。
【０１０６】
代替的な実施形態
本明細書で説明された実施形態は、計測用ソフトウェアから受け取られたデータストリームの分析を開示するが、本明細書で開示される技法は、他の種類のデータストリームにも適用される。例えば、計測分析システム１００は、センサによって生成されたデータを表すデータストリーム、フライト追跡情報を表すデータストリーム、センサによって生成された天文情報を表すデータストリーム、および天候情報表すデータストリームなどを分析するために、使用されることがある。計測分析システム１００は、ユーザが、データストリーム自体によっては提供されないデータストリームを記述するメタデータ属性を定義することを可能にする。したがって、データストリームを記述する任意の数のメタデータ属性が、データストリーム自体のソースとは独立したソースによって定義されることができる。さらに、計測分析システム１００は、メタデータ属性、およびデータストリームの一部として受け取られる属性に基づいて、式の仕様を受け取ることができる。そのような式に基づいたリアルタイム報告が、生成され、ユーザインターフェースを介して提示されることができる。
【０１０７】
実施形態では、いくつかのセンサは、計測分析システム１００に登録して、各センサを識別する情報を提供する。各センサは、データストリームを計測分析システム１００に送る。計測分析システム１００は、さらに、データストリームとともに提供されないデータストリームを記述する属性を指定する、データストリームを記述するメタデータを受け取る。例えば、メタデータ属性は、センサの地理的ロケーションを指定することがあり、組織または組織内のグループをセンサと関連付けることがあり、１または複数のユーザ名を各センサと、製造者名を各センサと関連付けることがあり、その他のこともある。計測分析システム１００は、さらに、センサデータおよび１または複数のメタデータ属性に基づいて報告を定義する式を受け取る。計測分析システム１００は、一定の時間間隔に基づいて、各データストリームを量子化する。計測分析システム１００は、さらに、式を定期的に評価し、結果を、出力データストリームとして、ユーザインターフェースを介して、表示用に送る。
【０１０８】
センサデータを使用して計測分析システム１００によって生成される例示的な報告は、様々なロケーションによって、例えば、センサがある製造プロセスと関連付けられたデータを提供した、製造設備と関連付けられた各ロケーションによってグループ化されるセンサから受け取られたデータ値の総和を決定する。センサデータを使用して計測分析システム１００によって生成される別の例示的な報告は、計測分析システム１００が、受け取られたデータストリームに基づいて（またはセンサからの予想されるデータストリームの欠如に基づいて）、アクティブセンサを故障センサから区別することができると仮定して、各センサの製造者によってグループ化されるアクティブセンサのカウントを決定する。センサデータを使用して計測分析システム１００によって生成される例示的な報告は、（異なるセンサが組織のグループと関連付けられると仮定して）組織内のグループによってグループ化されるセンサデータに基づいて、アクティビティの度合いを決定する。これらの例は、本明細書で開示される技法が、計測用ソフトウェア以外のソースから受け取られるデータストリームにどのように適用されることができるかを示す。
【０１０９】
本発明の図および説明は、本発明の明確な理解のために関連する要素を説明する一方で、明瞭さのために、典型的なシステムにおいて見出される他の多くの要素を除外するように、簡略化されていることを理解されたい。当業者は、本発明を実施する際に、他の要素および／またはステップが望ましいこと、および／または必要とされることを認識することがある。しかしながら、そのような要素およびステップは、当技術分野においてよく知られているため、およびそれらは、本発明についてのより良い理解を促進しないため、そのような要素およびステップの説明は、本明細書では提供されない。本明細書の開示は、当業者に知られたそのような要素および方法に対する、そのような変形および変更すべてを対象にしている。
【０１１０】
上述の説明のいくつかの部分は、情報に対する操作のアルゴリズムおよびシンボル表現に関して、実施形態を説明している。これらのアルゴリズム記述および表現は、データ処理分野の当業者によって、自分の仕事の内容を他の当業者に効果的に伝えるために、一般に使用される。これらの操作は、機能的、計算的、または論理的に説明されるが、コンピュータプログラムまたは等価の電気回路もしくはマイクロコードなどによって実施されることが理解される。さらに、一般性を失うことなく、操作のこれらの並びをモジュールとして言及することも、時には便利であることが分かっている。説明された操作およびそれらと関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで実施されることがある。
【０１１１】
本明細書で使用される場合、「一実施形態」または「実施形態」に対するいずれの言及も、その実施形態に関連して説明される特定の要素、特徴、構造、または特性が、少なくとも１つの実施形態に含まれることを意味する。本明細書内の様々な箇所における「一実施形態では」という句の出現は、必ずしもすべてが、同じ実施形態に言及しているとは限らない。
【０１１２】
いくつかの実施形態は、「結合された」および「接続された」という表現を、それらの派生形とともに使用して、説明されることがある。これらの用語は、互いの同意語としては意図されていないことを理解されたい。例えば、いくつかの実施形態は、２つ以上の要素が、互いに直接的に物理または電気接触していることを示すために、「接続された」という用語を使用して、説明されることがある。別の例では、いくつかの実施形態は、２つ以上の要素が、直接的に物理または電気接触していることを示すために、「結合された」という用語を使用して、説明されることがある。しかしながら、「結合された」という用語は、２つ以上の要素が、互いに直接的に接触していないが、依然として、互いに協力または対話することを意味することもある。実施形態は、これに関連して、限定されない。
【０１１３】
本明細書で使用される場合、「ｃｏｍｐｒｉｓｅｓ（含む）」、「ｃｏｍｐｒｉｓｉｎｇ（含む）」、「ｉｎｃｌｕｄｅｓ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｈａｓ（有する）」、「ｈａｖｉｎｇ（有する）」という語、またはそれらの他の任意の変化形は、非排他的な包含をカバーすることが意図されている。例えば、要素のリストを含むプロセス、方法、物品、または装置は、必ずしもそれらの要素だけに限定されず、明示的に列挙されていないが、そのようなプロセス、方法、物品、または装置に固有の他の要素を含むことがある。さらに、反対のことが明示的に述べられていない限り、「ｏｒ（または）」は、包含的ｏｒのことであり、排他的ｏｒのことではない。例えば、条件ＡまたはＢは、以下のうちのいずれか１つ、すなわち、Ａが真であり（または存在し）、Ｂが偽である（または存在しない）、Ａが偽であり（または存在せず）、Ｂが真である（または存在する）、およびＡとＢの両方が真である（または存在する）によって満たされる。
【０１１４】
加えて、本明細書の実施形態の要素および構成要素を記述するために、「ａ」または「ａｎ」の使用が、利用される。これは、もっぱら便宜的に、本発明の一般的な意味を与えるために行われる。この記述は、１つまたは少なくとも１つを含むと読まれるべきであり、別のことが意味されていることが明らかでない限り、単数形は、複数形も含む。
【０１１５】
本開示を読むと、当業者は、本明細書で開示された原理を通して、計測用ソフトウェアに基づいて報告を生成するための、システムおよびプロセスについてのさらなる追加の代替的な構造設計および機能設計を理解する。したがって、特定の実施形態および応用例が、図説され、説明されたが、開示された実施形態は、本明細書で開示された通りの構成および構成要素に限定されないことを理解されたい。当業者に明らかな様々な変更、変化、および変形が、添付の特許請求の範囲において確定される主旨および範囲から逸脱することなく、本明細書で開示された方法および装置の配置、操作、および詳細において施されることがある。
【図１】
2020187798.tif 000003
【図２】
2020187798.tif 000004
【図３】
2020187798.tif 000005
【図４】
2020187798.tif 000006
【図５】
2020187798.tif 000007
【図６】
2020187798.tif 000008
【図７】
2020187798.tif 000009