(57)【特許請求の範囲】
【請求項１】
データベースおよびクライアント装置を備えるシステムであって、
前記クライアント装置は、
アプリケーションプログラムインターフェース（ＡＰＩ）を介して関数の呼出を行うことにより、データベースのトレースデータを検索するための複数の命令に従って、前記データベースから複数のトレースデータを検索して記憶リソースに格納し、
ＡＰＩを介して関数の呼出を行うことにより、前記格納された複数のトレースデータを再生するための複数の命令に従って、当該各トレースデータに基づく前記データベースの再生処理を実行するように構成されており、
前記トレースデータは、前記データベースに関する操作を示すデータであり、前記データベースの再生処理は、前記各トレースデータに示されたデータベースに関する一連の操作と同一または関連の操作を実行する処理であり、
前記トレースデータの再生処理は、前記データベースが前記複数のトレースデータからなる一連のトレースデータの再生により前記データベースが異常状態になった場合の状態と同じ状態になるよう、前記記憶リソース中の適切なトレースデータの組を使用して、以前に使用された要求を生成する
ことを特徴とするシステム。
【請求項２】
前記記憶リソースは、ファイルまたはテーブルを有することを特徴とする請求項１に記載のシステム。
【請求項３】
前記クライアント装置は、前記再生処理を実行する場合に、前記データベースのトレースデータを変更して、変更後のトレースデータの再生処理を行うことを特徴とする請求項１に記載のシステム。
【請求項４】
前記クライアント装置は、前記再生処理を実行する場合、再生処理の前に、前記ＡＰＩに対して再生の開始を通知することを特徴とする請求項１に記載のシステム。
【請求項５】
前記クライアント装置は、前記再生処理を実行する場合、前記ＡＰＩに対して、再生がいつ停止するかを通知することを特徴とする請求項１に記載のシステム。
【請求項６】
前記クライアント装置は、前記データベースを使用して、前記トレースデータ上で実際の動作を行うように構成されていることを特徴とする請求項１に記載のシステム。
【請求項７】
データベースおよびクライアント装置を備えるシステムにおいて前記データベースのトレースデータを検索および再生する方法であって、
前記クライアント装置は、
アプリケーションプログラムインターフェース（ＡＰＩ）を介して関数の呼出を行うことにより、データベースのトレースデータを検索するための複数の命令に従って、前記データベースから複数のトレースデータを検索して記憶リソースに格納するステップであって、前記トレースデータは、前記データベースに関する操作を示すデータである、ステップと、
ＡＰＩを介して関数の呼出を行うことにより、前記格納された複数のトレースデータを再生するための複数の命令に従って、当該トレースデータに基づく前記データベースの再生処理を実行するステップであって、前記トレースデータの再生処理は、前記データベースが前記複数のトレースデータからなる一連のトレースデータの再生により前記データベースが異常状態になった場合の状態と同じ状態になるよう、前記記憶リソース中の適切なトレースデータの組を使用して、以前に使用された要求を生成する、ステップと
を備えたことを特徴とする方法。
【請求項８】
前記記憶リソースは、ファイルまたはテーブルを有することを特徴とする請求項７に記載の方法。
【請求項９】
前記クライアント装置は、前記再生処理を実行する場合、再生処理の前に、前記ＡＰＩに対して再生の開始を通知することを特徴とする請求項７に記載の方法。
【請求項１０】
前記クライアント装置は、前記再生処理を実行する場合、前記ＡＰＩに対して、再生がいつ停止するかを通知することを特徴とする請求項７に記載の方法。
【請求項１１】
前記データベースの再生処理では、前記データベースは、前記ＡＰＩにより指定されることを特徴とする請求項７に記載の方法。
【請求項１２】
前記クライアント装置は、前記データベースを使用して、前記トレースデータ上で実際の動作を行うことを特徴とする請求項７に記載の方法。
【請求項１３】
データベースおよびクライアント装置を備えるシステムに、前記データベースのトレースデータを検索および再生を実行させるための命令を記録したコンピュータ読取可能な媒体であって、前記命令は、前記クライアント装置に、
アプリケーションプログラムインターフェース（ＡＰＩ）を介して関数の呼出を行うことにより、データベースのトレースデータを検索するための複数の命令に従って、前記データベースから複数のトレースデータを検索して記憶リソースに格納するステップであって、前記トレースデータは、前記データベースに関する操作を示すデータである、ステップと、
ＡＰＩを介して関数の呼出を行うことにより、前記格納された複数のトレースデータを再生するための複数の命令に従って、当該トレースデータに基づく前記データベースの再生処理を実行するステップであって、前記トレースデータの再生処理は、前記データベースが前記複数のトレースデータからなる一連のトレースデータの再生により前記データベースが異常状態になった場合の状態と同じ状態になるよう、前記記憶リソース中の適切なトレースデータの組を使用して、以前に使用された要求を生成する、ステップと
を実行させるためのコンピュータ読取可能な記憶媒体。
【請求項１４】
前記記憶リソースは、ファイルまたはテーブルを有することを特徴とする請求項１３に記載のコンピュータ読取可能な記憶媒体。
【請求項１５】
前記データベースの再生処理では、前記ＡＰＩは、前記クライアント装置から、再生の開始の通知をうけることを特徴とする請求項１３に記載のコンピュータ読取可能な記憶媒体。
【請求項１６】
前記データベースの再生処理では、前記ＡＰＩは、前記クライアント装置から、再生がいつ停止するかの通知をうけることを特徴とする請求項１３に記載のコンピュータ読取可能な記憶媒体。
【請求項１７】
前記データベースの再生処理では、前記データベースは、前記ＡＰＩにより指定されることを特徴とする請求項１３に記載のコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ処理に関し、より詳細にはデータベースの動作および性能の分析に関し、特にデータベースから出されたトレースデータの検索および再生をカスタマイズし、および自動化することを可能にするアプリケーションプログラミングインタフェースに関する。
【背景技術】
【０００２】
データベースは、一般に１つまたは複数の関連する組織の活動を記述する一連のデータを備えている。例えば大学のデータベースは、学生、教職員、講義、教室などのエンティティ、および講義への学生の登録、講義を教えている教職員、および講義に使用している教室など、エンティティ間の関係に関する情報を含んでいる。データベース管理システム、すなわちＤＢＭＳとは、大量のデータの集まりを管理し、使用するのを支援するように設計されたソフトウェアである。しかし、本明細書においては、「データベース」または「データベースサーバ」という用語は、データの集まりおよびＤＢＭＳソフトウェアのいずれかまたは両方を指すものとする。したがって、図１のデータベース１００は、データの集まりおよびＤＢＭＳの両方と考えることができる。
【０００３】
現在、使用されているデータベースは多くの種類にのぼっている。最初のデータベースモデルとされるのは、１９６０年代前半にゼネラルエレクトリックのＣｈａｒｌｅｓ  Ｂａｃｈｍａｎにより提案されたものである。これは、Ｉｎｔｅｇｒａｔｅｄ  Ｄａｔａ  Ｓｔｏｒｅと呼ばれており、ネットワークのデータモデルにならったものであった。１９６０年代後半、ＩＢＭは、階層データモデルの基礎を形成する情報管理システムを開発した。１９７０年、ＩＢＭのＥｄｇａｒ  Ｃｏｄｄは、リレーショナルデータモデルを提案し、これがデータベースシステムの開発における重大な分岐点となった。リレーショナルデータベースが知られることにより、商業の状況が一変した。そのメリットは広く認識され、企業データの管理にデータベースを使用することが標準的なやり方になった。リレーショナルデータベースは、今日使用されている主流のモデルである。
【０００４】
ＭＩＣＲＯＳＯＦＴ  ＳＱＬ  ＳＥＲＶＥＲ（登録商標）、ＩＢＭ  ＤＢ２（登録商標）、ＯＲＡＣＬＥ  ＤＡＴＡＢＡＳＥ（登録商標）、ＳＹＢＡＳＥ  ＩＱ（登録商標）など様々なＤＢＭＳ製品は、データベースの機能を大幅に拡大した。データベースは、画像やテキストなど、多種多様なデータタイプを格納することができ、格納されたデータに対する複雑なクエリを実行することができる。データウェアハウスを作成し、複数のデータベースからのデータをまとめ、専門的な分析を実行するため、非常に多くのベンダによって専門的なシステムが開発されてきた。
【０００５】
データベースにもインターネット時代が到来することとなった。すなわち、Ｗｅｂブラウザを介してアクセスされるデータを格納するデータベースの使用が普及してきている。クエリはＷｅｂアクセス可能な形式によって生成され、回答は、ブラウザで表示することができるハイパーテキストマークアップ言語（ＨＴＭＬ）または拡張可能マークアップ言語（ＸＭＬ）などのマークアップ言語を使用してフォーマットされる。ますます多くのデータがオンラインで送られ、コンピュータネットワークを介してよりいっそうアクセスしやすくなるにつれてデータベースも重要になり続ける。今日、この分野では、マルチメディアデータベース、双方向ビデオ、ストリームデータ、デジタルライブラリ、多数の科学的プロジェクト、企業データの統合およびデータマイニングなど、すばらしい未来像が実現されつつある。グローバルコンピュータネットワークを介したデータベースへのアクセスは、ごく一般的なことなのである。
【０００６】
図１を参照すると、多数のクライアント１０１、１０２、および１０３からデータベース１００はサービスを要求される可能性がある。一般に、サービス要求１０１ａ、１０２ａ、および１０３ａは、ある基準に一致するデータをデータベースに要求する構造化照会言語（ＳＱＬ）クエリである。例えば、上記のデータベースに、サービス要求１０１ａを介して、「Ｓｍｉｔｈ」という名字の全学生のリストを返すよう要求することができる。データベース１００は、こうしたサービス要求１０１ａを処理し、適切な情報を収集し、収集したデータをフォーマット化し、そのデータをクライアント１０１に送り返すのに最適な方法を定める戦略を決定する。現代のデータベース１００は、こうした何百または何千もの操作を平行して実行することが求められるのである。
【０００７】
データベースは、データの検索に加えて、データの更新も要求される場合がある。例えば、データベース１００が口座情報を含む銀行のデータベースである場合、特定の口座への預金またはそこからの引き出しがあるたびにデータの更新が必要となる。データベースのもう１つの機能は、データへのアクセスを構造化して、規則的な方法で確実に更新されるようにし、なされた多数の要求に対して最新バージョンのデータを提供するようにすることである。
【０００８】
単一の方法で、最適にデータを格納し、および更新し、並びにデータへのアクセスを管理することができる方法は存在しない。データを格納する方法だけを変更することによって、データベースの性能が大幅に向上する可能性がある。同様に、データ要求を管理する技術の変更、およびデータへの更新も性能を向上させる可能性がある。一方、データレイアウトおよびアクセス技術におけるこうした変更により、データベースの適切な動作について問題が生じるおそれもある。変更によって、性能が低下し、いくつかの要求が処理できなくなり、収集されて返されたデータにエラーが生じ、データベースが不安定になる場合がある。
【０００９】
その結果、データベースの性能を監視し、分析することが必要である。データベースがうまく実行する状態、あるいは逆にデータベースが問題を被っている状態を理解することによって、データベースをよりよいものに向上させることができる。このニーズに応えて、現代の多くのデータベースは、トレースのデータストリーム１０４ｂを出す機能を備えている。
【００１０】
トレースのデータストリーム１０４ｂは、データベース１００の様々な操作に関する情報を含む。こうしたストリーム１０４ｂは、分析に関連していると考えられる任意の情報を含むことができる。一般に、トレースのデータストリーム１０４ｂは、データベースに対してなされた様々なサービス要求１０１ａ、１０２ａ、１０３ａを記述する情報を含む。こうした記述は、なされた要求、要求時刻、および要求を発行したクライアントを含むことができる。データベースによって返された任意の出力もトレースのデータストリーム１０４ｂに含むことができる。現代のデータベースが提供するサービスの数が増えるにつれて、トレースのデータストリーム１０４ｂに含めることができるデータの種類が次第に増える。
【００１１】
一般に、トレースのデータストリーム１０４ｂは、クライアントコンピュータ１０４を介してアクセスされる。クライアントコンピュータ１０４は、トレースデータ要求１０４ａをデータベース１００に送信し、それによってトレースのデータストリーム１０４ｂへの接続を開くことができる。従来、プロファイラアプリケーション１０５がクライアントコンピュータ１０４にインストールされている。プロファイラ１０５によって、ユーザは、グラフィックユーザインターフェース（ＧＵＩ）を介してセッションを開始することができる。プロファイラは、蓄積されたトレースデータをウィンドウ１０８に表示することができる。プロファイラは、トレースデータ１０４ａにアクセスし操作するために、項目のメニューを提供して非常に多くの機能１１０を可能にすることができる。保存、開く、印刷、再生など、これらの機能１１０の一部を図１のプロファイラＧＵＩ１０５例に示す。このプロファイラアプリケーション１０５を使用して、ユーザは、分析すべきデータベース１００を指定し、対応するトレースのデータストリーム１０４ｂへの接続を開始し、収集されたトレースデータを、ファイル内、テーブル内、またはサーバ上など、任意の数の場所に保存することができる。
【００１２】
さらにユーザは、プロファイラ１０５にトレースデータを再生するよう指示することができる。トレースの再生によって、トレースデータで表される一連のクエリを生成し、データベース上で稼動させることができる。したがって、例えば問題に遭遇したデータベースに変更または改良が加えられた場合、改良されたデータベースに対して１組のクエリを実行して、それが適切に修正されたかどうかを決定することができる。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
データベースが急激に増加するにつれて、データベースを分析し、改良するコストも増している。単一のデータベースについて全てのトレースデータの稼動中の記憶を保持することは非常に高価な支出が必要であり、この支出はデータベースが複数となることにより倍増する。したがって、いつトレースデータにアクセスし、いつそれを格納するかを戦略的に選択することが必要である。第１のデータベースが特定の問題に遭遇した場合、他の様々なデータベースに対する問題に対応するトレースを再生することが望ましい場合がある。トレースデータは、再生前に追加情報を収集して、データベースに関する問題についての潜在的ではあるが考え得る原因を狭めるように変更されることがある。こうした変更されたトレースデータが多数のデータベース上で再生される場合もある。したがって、収集、変更、および再生は、費用がかかり面倒な作業となる可能性がある。データベースのトレースデータの累計、分析、および再生の従来の手法は、プロファイラアプリケーションの操作にあまりに多くの人的時間を伴う可能性がある。
【００１４】
上述した業界での今まで予見できなかった問題に鑑み、トレースデータを収集し、再生するための改良されたシステムおよび方法の必要性が認識されておらず、満たされていない。
【課題を解決するための手段】
【００１５】
上記で特定した技術の欠点を考慮して、本発明は、データベースのトレースデータのプログラムによる検索（ｒｅｔｒｉｅｖａｌ）および再生のためのシステムおよび方法を提供する。複数のオブジェクト、すなわちトレースオブジェクトおよび再生オブジェクトは、カスタムコンピュータプロセスによって呼び出されると、操作を自動的に実行するように設計することができる。トレースデータを様々な場所のうちの任意の場所に保存することができる。トレースデータを格納または再生の目的で操作することができる。非常に多くの再生用の構成オプションを使用して、トレースデータを任意のデータベースサーバ上で再生することができる。再生通知によって、実行するためデータベースに発信する直前のデータを変更することが可能となり、再生結果の即時検査、および再生が正確であるかについての妥当性検査が可能になる。
【００１６】
トレースオブジェクトおよび再生オブジェクトにより、複数の観点から見てトレースデータの管理を大幅に簡略化することができる。カスタムプロセスの設計者は、こうして、トレースされたデータベースサーバのセキュリティ監査および健全性の監視を完全に自動化することができる。新しいサーバリリースおよびセキュリティパックの自動確認を実行することもできる。カスタムプロセスは、提供されたオブジェクトを使用して、データベースのトレースデータに柔軟にアクセスすることができ、その検索、格納、および再生を操作することが可能となる。こうしたカスタムプロセスは、本発明を所与の組織の特定の要求に合致させて使用できるように設計することができる。
【００１７】
本発明の他の利点および特徴については以下で説明する。
【００１８】
本発明によるデータベースのトレースのプログラムによる検索および再生のためのＡＰＩについて、さらに添付の図面を参照して説明する。
【発明を実施するための最良の形態】
【００１９】
本発明の様々な実施形態を完全に理解できるように、いくつかの特定の詳細を以下の説明および図面に記載する。しかし、本発明の様々な実施形態を不必要に不明瞭にするのを避けるために、コンピューティングおよびソフトウェア技術にしばしば関連付けられているよく知られているいくつかの詳細については、以下の開示に記載しない。さらに、以下に記載するもののうちの１つまたは複数の詳細無しに本発明の他の実施形態を実施することができることを当業者であれば理解されよう。最後に、以下の開示ではステップおよび手順を参照して様々な方法を説明するが、この説明はそれ自体、本発明の実施形態を明確に実装可能とするためのものであり、ステップおよびステップの手順は本発明の実施に必須でないとみなされるものとする。
【００２０】
本発明の様々な態様は、データベースのトレースデータのプログラムによる検索および再生のためのＡＰＩに関する。これらの様々な態様を完全に開示するために、この説明では、ＡＰＩ、データベース、およびトレースデータを定義することから始める。続いてトレースデータの検索および再生について説明する。次に、プログラムによる検索および再生の態様および実装について説明する。最後に、本発明の様々な実施形態における使用に適した一般のコンピューティングおよびネットワークの環境について説明する。
【００２１】
アプリケーションプログラミングインターフェース（「ＡＰＩ」）は、各々のプロセスが共働して動作するためのコンピュータプロセスまたは機構である。ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤ（登録商標）やＡＤＯＢＥ  ＡＣＲＯＢＡＴ  ＲＥＡＤＥＲ（登録商標）など、オペレーティングシステムおよび様々なアプリケーションを稼動させるパーソナルコンピュータにおいて、よく知られている設定をした場合、ＡＰＩにより、アプリケーションはオペレーティングシステムと通信できるようになる。アプリケーションは、オペレーティングシステムのサービスを呼び出すためにオペレーティングシステムＡＰＩへの呼び出しを行う。オペレーティングシステムＡＰＩの背後にある実際のコードは、ダイナミックリンクライブラリ（「ＤＬＬ」）の集まりに配置されている。
【００２２】
データベースソフトウェアが、ＡＰＩを提供することもできる。データベースＡＰＩによってデータベースサービスを呼び出すためにデータベースへの呼び出しを行うプロセスが可能となる。ＭＩＣＲＯＳＯＦＴ  ＳＱＬ  ＳＥＲＶＥＲ（登録商標）、ＩＢＭ  ＤＢ２（登録商標）、ＯＲＡＣＬＥ  ＤＡＴＡＢＡＳＥ（登録商標）、およびＳＹＢＡＳＥ  ＩＱ（登録商標）など現代のデータベースソフトウェアは、すべてＡＰＩを提供する。今日の業務用アプリケーションの大部分はデータベースを使用し、したがってアプリケーションがこうしたデータベースにアクセスし、操作することを可能にするＡＰＩも使用される。アプリケーションがクライアント側、ミドル層、またはサーバ側のいずれのものであろうと、可能な限り最も応答性に優れ、拡張可能なデータベースＡＰＩをこれらのアプリケーションに提供することが望ましい。これは、データアクセスが多いアプリケーションの場合は特にそうである。ここに記載したＡＰＩは、オペレーティングシステムＡＰＩ、データベースＡＰＩ、他の何らかのアプリケーションまたはサービスのＡＰＩに統合するか、独立して用いる（ｓｔａｎｄ  ａｌｏｎｅ）ことができる。ここに記載した機能は、特定の装置またはホストのソフトウェア環境に限定されない。
【００２３】
オペレーティングシステム、アプリケーション、またはコンピュータ実行可能命令の形でそのサービスが呼び出される他のソフトウェアのように、ＡＰＩも実行実施することができる。こうした命令は、異なる多くの形で具体化することができる。最終的に命令は、コンピュータプロセッサによって処理できるように、機械読取可能なビット情報に変換される。しかし、これらの機械読取可能なビット情報を生成する前に、ＡＰＩ実装を様々な形式に変換する機能が多階層で存在する可能性がある。例えば、Ｃ＋＋で実施されるＡＰＩは、まず人間が読むことができる一連のコード行として表示される。次いでＡＰＩは、プロセッサ上で実行できるように、コンパイラソフトウェアによって機械読取可能なコードにコンパイルされる。
【００２４】
近年、Ｃ＋＋などのプログラミング言語の急増、並びにＰＣ環境、およびＡＰＰＬＥ（登録商標）コンピュータ、ハンドヘルドコンピュータ化装置、セル方式電話などによって提供される環境などの実行環境の急増によって、ＡＰＩ実装などのプログラミングコードの元々の実装と、装置上で処理するためのビット情報への変換との間に機能の層の追加が必要になってきている。今日、Ｃ＋＋など高レベル言語で最初に作成されたコンピュータプログラムは、まず、ＭＩＣＲＯＳＯＦＴ（登録商標）Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ（ＭＳＩＬ）やＪＡＶＡ（登録商標）などの中間言語に変換することができる。次いでこの中間言語は、特定の環境において実行する直前に、ジャストインタイム（ＪＩＴ）コンパイラによってコンパイルすることができる。これによって、コンパイルされた複数のバージョンを配布する必要なく、多種多様な処理環境においてコードを稼動させることができる。ＡＰＩを多くのレベルで実行することができ、コードを作成し、管理し、処理する技術が絶え間なく発展することを考慮に入れると、本発明は、特定の任意のプログラミング言語または実行環境に限定されないものである。本発明の様々な態様の説明のために実装として、管理されたＭＩＣＲＯＳＯＦＴ（登録商標）．ＮＥＴクラスライブラリを選択する。この選択により、本発明を実施し、説明するのに便利な環境が提供されるが、決して本発明はこの実装に限定されることにはならない。
【００２５】
本明細書に記載したＡＰＩの特徴は、データベースのトレースデータの検索および再生を自動化する手法を提供する。図３は、企図されたシステムおよび方法の様々な実施形態を示す図である。データベースの性能の分析に関心のある場合は、ＡＰＩ３０９を使用して、個々の要求に従いトレースデータ３０４ｂを収集し、操作し、再生することができるカスタムオブジェクト３３０、３３１、３３２を作成することができる。カスタムオブジェクト３３０、３３１、３３２によって潜在的にどのような動作が実行されるかは、多数のプログラマの技術および要件で異なるため、予測することができない。しかし、提供されたＡＰＩ３０９により、作成することができる様々なオブジェクト３３０、３３１、３３２の頑強なサポートが可能となる。本発明は、本明細書に開示した１組の機能３１０に限定されないが、提供された機能３１０は、別々でもグループとしても新しく、有用であると考えられる。これらの機能３１０については、トレースデータ３０４ｂの検索および再生の自動化との関連で以下にさらに詳しく説明する。
【００２６】
カスタムオブジェクト３３０、３３１、３３２、および図３でオブジェクトとして示される他の要素は、一般にオブジェクト指向プログラミング技術を使用して生成されるソフトウェアの個別の単位である。さらに、ＡＰＩ３０９自体は、１つまたは複数のオブジェクトとして実装することができる。こうした１つのオブジェクト例を、一般のＣＯＭオブジェクト１２００の特徴を図示した図１２に示している。他のオブジェクト型も使用可能であり、業界で広範に使用されており、ここに記載したオブジェクト１２００は、例示の目的のために限定的でない例として示す。オブジェクト１２００などのオブジェクトは、一般に１つまたは複数のインターフェース１２０２、１２０３、１２０４をサポートし、各々メソッド１２０５を含む。メソッド１２０５は、一般に特定の動作を実行する関数またはプロシージャであり、例えば３３０、３３１、および３３２など別のオブジェクトによって呼び出されるなど、ソフトウェアによって呼び出すことができる。こうした呼び出し側ソフトウェアは、「サーバ」オブジェクト１２００の「クライアント」と呼ばれる。インターフェース１２０３を構成するメソッド１２０５は、通常何らかの方法で互いに関連付けされている。一般に、クライアントは、オブジェクトのインターフェース１２０２、１２０３、１２０４内のメソッド１２０５を呼び出すことによって、オブジェクト１２００によって提供されるサービスにアクセスすることができる。クライアントは一般に、オブジェクトのデータにアクセスすることは禁止されている。あるオブジェクトによって達成された本明細書および特許請求の範囲に記載した機能は、互いにインターフェースをとるように設計されている複数のオブジェクトを介して達成することもできることに留意されたい。
【００２７】
一般に、オブジェクト１２００とは特定のクラスのインスタンスである。例えば、あるクラスはデータベースサーバへの接続を開くサービスを提供するオブジェクトを含み、別のクラスはデータをファイルに書き込むオブジェクトを含むことができる。一般にプログラマは、そのオブジェクトのインスタンスを稼働させる前にオブジェクトのクラスを知っている。オブジェクトのクラスは、クラスライブラリで調べられる。こうしたライブラリは、オブジェクトが使用可能なすべてのクラスのディレクトリにアクセスすることができる。クライアントは、所望のオブジェクトのクラス、およびポインタで指示したい第１のサポートされたインターフェースを指定して、ライブラリ内の関数を呼び出すことができる。次いでライブラリは、そのクラスのオブジェクトを実装するサーバに稼働を開始させる。また、ライブラリは、新しくインスタンス化されたオブジェクトの要求されたインターフェースへのポインタを開始側クライアントに返す。次いでクライアントは、オブジェクトがサポートする他の任意のインターフェースへのポインタをオブジェクトに直接求めることができる。
【００２８】
オブジェクトによってサポートされているインターフェースは一般に、オブジェクトとそのクライアントとの間の契約に例えられる。オブジェクトは、インターフェースがメソッドを定義するときにインターフェースのメソッドをサポートすることを約束し、クライアントはメソッドを正しく呼び出すことを約束する。したがって、オブジェクトおよびクライアントは、各インターフェースを明示的に識別する方法、インターフェースにおいてメソッドを記述し、または定義する共通の方法、およびインターフェースをどのように実装するかの具体的な定義について合意する必要がある。
【００２９】
したがって、オブジェクトが継承するインターフェースパラメータ、およびオブジェクトが継承するクラスパラメータに関して、オブジェクトを記述することができる。オブジェクトのクラスがファイルにデータを書き込む関数を有している場合、例えば、そのクラスを継承するインスタンスは、データをファイルに書き込むことができる、またインスタンスによって提供される任意の追加の特徴および機能を有することができる。クラスが特定のインターフェースをサポートしている場合、クラスのインスタンスは、「契約」を継承し、したがってインターフェースもサポートする。本発明の態様が実施されるオブジェクトは、一般にこうしたプログラミングの原則と、オブジェクト、クラス、継承、およびインターフェースの定義の解釈（ｕｎｄｅｒｓｔａｎｄｉｎｇｓ）とに従う。しかし、オブジェクト指向プログラミング技術に対する変更および改良は絶えず行われており、本発明は特定のタイプのオブジェクトまたは特定の特徴を有するオブジェクトに限定されるものではないことを理解されたい。提供されたＡＰＩは、現在使用中の、または後に開発される任意の種類のオブジェクトを介して実行することができる。
【００３０】
データベースは、一般に１つまたは複数の関連組織の活動を記述する一連のデータである。例えば大学のデータベースは、学生、教職員、講義、教室などのエンティティ、および講義への学生の登録、講義を教えている教職員、および講義に使用している教室など、エンティティ間の関係に関する情報を含むことができる。データベース管理システム、すなわちＤＢＭＳは、大量のデータの集まりを管理し、使用するのを助けるように設計されたソフトウェアである。しかし、本明細書においては、「データベース」または「データベースサーバ」という用語は、データの集まりおよびＤＢＭＳソフトウェアのいずれかまたは両方を指す。したがって、図１のデータベース１００、図３の３００、および図６の６４０は、データの集まりおよびＤＢＭＳを含むデータベースサーバを示している。必要に応じてさらに区別が行われる。
【００３１】
多くの種類のデータベースが使用されている。最初のデータベースモデルとされるのは、１９６０年代前半に開発されたゼネラルエレクトリックのＣｈａｒｌｅｓ  Ｂａｃｈｍａｎのものである。これは、Ｉｎｔｅｇｒａｔｅｄ  Ｄａｔａ  Ｓｔｏｒｅと呼ばれており、ネットワークのデータモデルにならったものであった。１９６０年代後半、ＩＢＭは、階層データモデルの基礎を形成した情報管理システムを開発した。１９７０年、ＩＢＭのＥｄｇａｒ  Ｃｏｄｄは、リレーショナルデータモデルを提案し、これがデータベースシステムの開発の重大な分岐点となった。リレーショナルデータベースが多く用いられたため、商業の状況は一変した。そのメリットが広く認識され、企業データの管理にデータベースを使用することが標準的なやり方になった。リレーショナルデータベースが今日使用されている有力なモデルであるが、本発明の様々な態様は、トレースデータを出すことができる既に使用されているデータベース、または今後開発される任意のデータベースにおいて使用するのに適している。
【００３２】
ＭＩＣＲＯＳＯＦＴ  ＳＱＬ  ＳＥＲＶＥＲ（登録商標）、ＩＢＭ  ＤＢ２（登録商標）、ＯＲＡＣＬＥ  ＤＡＴＡＢＡＳＥ（登録商標）、ＳＹＢＡＳＥ  ＩＱ（登録商標）など様々なＤＢＭＳ製品は、データベースの機能を大幅に拡大した。データベースは、画像やテキストなど、多種多様な種類のデータを格納することができ、格納されたデータに対する複雑なクエリを実行することができる。データウェアハウスを作成し、複数のデータベースからのデータをまとめ、専門的な分析を実行する専門的なシステムが、非常に多くのベンダによって開発されてきた。こうしたすべての製品およびデータベースの構成は、本明細書のシステムおよび方法とともに使用するのに適している。
【００３３】
データベースは既にインターネット時代に入っている。すなわち、Ｗｅｂブラウザを介してアクセスされるデータを格納するデータベースの使用が普及している。クエリはＷｅｂアクセス可能な形式によって生成され、回答は、ブラウザに表示することができるハイパーテキストマークアップ言語（ＨＴＭＬ）または拡張可能マークアップ言語（ＸＭＬ）などのマークアップ言語を使用してフォーマットされる。より多くのデータがオンラインで運ばれ、コンピュータネットワークを介してよりいっそうアクセスしやすくなるにつれて、データベースもより重要になってきている。今日、この分野は、マルチメディアデータベース、双方向ビデオ、ストリームデータ、デジタルライブラリ、多数の科学的プロジェクト、企業データの統合およびデータマイニングなど、すばらしい未来像が実現されつつある。グローバルコンピュータネットワークを介したデータベースへのアクセスが一般的である場合、クライアントとデータベースとの間の接続の距離または種類に関係なく、本明細書に記載したシステムおよび方法を使用することができることは明らかである。
【００３４】
データベースのトレースデータをプログラムによって検索しおよび再生するためのＡＰＩが提供される。上記でＡＰＩおよびデータベースを全体的に説明した。次にトレースデータについて説明し、次いでトレースデータの検索および再生、さらにプログラムによる検索および再生について説明する。これにより、上記で概説したＡＰＩの特徴が具体的に指摘される。
【００３５】
トレースデータは、データベースの操作を示すデータである。図３のデータベース３００など一般のデータベースは、任意の数のクライアント例えば、クライアント３０１、３０２、３０３のサービスを実行するよう要求される。こうした要求は一般に、構造化照会言語（ＳＱＬ）で定式化されたクエリで行なわれるが、データベース３００などのデータベースがより複雑になり、より広範囲のサービスを提供するようになるほど、要求される種類および量も増えてくる。現代のデータベースは、要求および対応するデータベース操作についての情報を含むトレースデータ３０４ｂのストリームを出すことができる。トレースデータは、データベース３００が何を行うよう要求されているか、またデータベース３００がその要求をどのように満たすかを分析するのに有用となる可能性がある。この分析によって、データはどのように格納されるか、クエリはどのように管理されるか、および現代のデータベースが提供する他の多くのサービスについてデータベースを改良することができる。
【００３６】
トレースデータは、任意のフォーマットでデータベースから出すことができる。一般に、データベースが連続的なサービスを提供するため、トレースデータは、データ転送プロトコルに従って構成されたデータの一定のストリーム３０４ｂとして出される。トレースのデータストリーム３０４ｂへの接続を開始することによって、クライアント３０４は、データベース３００の動作を分析し、記録することができる。この場合、トレースデータ３０４ｂは、一般に、図４に示したように、３つの場所のうちの１つに格納される。これらの場所は、ファイル４０３、テーブル４０４、およびサーバ４０５を含む。データベースのトレースデータ３０４ｂはこの業界ではよく理解されているため、ここでは、トレースデータ３０４を記録する正確なフォーマットについての詳細な説明は必要ない。トレースデータ３０４ｂは任意のフォーマットで記録することができることを理解されたい。しかし一般に、トレースデータのフォーマットは、それがファイル４０３、テーブル４０４、またはサーバ４０５のうちのどれに格納されるかに拘わらず、複数のレコード、または何らかの独立した意味を伝える個別のデータ単位を含むことができる。
【００３７】
トレースデータ３０４ｂが一般にどのようにレコードに分割されるかを示す例として、トレースデータが格納される一般のファイル４０３について考える。こうしたファイル４０３は、以下のレコードを含むことができる。
【００３８】
ヘッダ
２バイト−ヘッダ長
４８バイト−プロバイダ名
２バイト−プロバイダバージョン
４８バイト−定義型
４バイト−ファイルオプション
４８バイト−トレースされたサーバ名
データセクション
新しい各データベースイベントは、一般に特別な列ＴＲＡＣＥ＿ＢＥＧＩＮ＿ＲＥＣＯＲＤで始まり、次いで列の長さを表す１バイト、イベント識別子、およびイベントの全体長が続く。次いでイベントの他の任意の列が記述される。各イベント列レコードは、列識別子、データ長、およびデータ自体に対応する情報を含むことができる。データ長は、一般に単一バイトのフィールドである。
【００３９】
上記は、トレースデータがトレースデータファイル４０３においてどのようにレコードに分割されるかを示す例である。ここでは、テーブルに格納されているトレースデータ、およびサーバに格納されているトレースデータのレコードの分割例は示していない。というのは、こうしたフォーマットでトレースデータを格納することは一般的であり、一般に上記と同様にデータをレコードに分割するステップとともに、所望のレイアウトにおけるトレースデータをフォーマットするために一部のパラメータを変更するステップを含んでいるからである。上記の例では、トレースデータを任意の数のレコードに分割することができ、レコードを任意の数の方法で構成することができることを示していると理解することができる。本発明は、所定のトレースデータファイル、トレースデータテーブル、またはトレースデータサーバの数またはレコードの特定のレイアウトに限定されない。
【００４０】
トレースデータの検索（ｒｅｔｒｉｅｖａｌ）とは、トレースデータを電子的に獲得することを指す。本発明の様々な実施形態において、検索は、図３に示すようなクライアント３０４がトレースデータを求める要求３０４ａをデータベース３００に送信するといった状況で行うことができる。要求３０４ａによってデータベース３００または他の一部の中間プロセス（図示せず）は、トレースのデータストリーム３０４ｂをクライアント３０４に送信する。図３はトレースデータの一般の検索を示しているが、以下、コンピューティングおよびネットワークの環境を参照して説明するように、任意のプロセスまたはプロセスの一部は図示していない任意の数の装置上で稼働することができることを理解されたい。
【００４１】
トレースデータの検索は、図４に示すように、取り出されたデータを格納することによって達成される。トレースデータは、ファイル４０３、テーブル４０４、またはサーバ４０５に格納することができる。トレースデータを格納するプロセスでは、データベース３００から来る最初の信号からトレースのデータストリームに何らかの変換を行なう可能性があることに留意されたい。上述したように、トレースデータは、格納しようとするデータの特定のレイアウトおよび表現（ｐｒｅｓｅｎｔａｔｉｏｎ）に従っていくつかのレコードにフォーマットすることができる。図４に示したように、提供されたＡＰＩ４０１によって、カスタムオブジェクト４００の例では、トレースデータの検索が要求され、トレースデータのファイル４０３、テーブル４０４、またはサーバ４０５への格納を指定することができる。ＡＰＩ４０１に発信された要求の例４１０、４１１、および４１２は、トレースデータの検索を指定することができる。ＡＰＩの実装により、適切なデータベースへの接続、トレースのデータストリームの検索、およびファイル４０３、テーブル４０４、またはサーバ４０５への適切な出力の書き込みが可能となる。様々な実施形態において、ＡＰＩは、カスタムオブジェクト例４００によって格納場所が指示されていないときに使用すべきファイル４０３、テーブル４０４、またはサーバ４０５などの初期設定の格納場所を自動的に選択するように構成することができる。
【００４２】
トレースデータの再生とは、データベースに、１組のトレースデータで表される一連の操作と同一の、またはそれに関連する一連の操作を実行させることを指す。例えば、ファイル４０３に格納されている１組のトレースデータを考える。問題の１組のトレースデータが、例えば不適切な、異常な、または非常時の結果をクライアント３０１に返すことによってデータベース３００を異常に働かせ、または不安定にし、若しくはクラッシュさせたと考える。異常をもたらす一連のイベントを調査するため、データベース３００を異常をもたらした状態と同じ状態にすることが望ましい。この状況で、ファイル４０３内の適切なトレースデータの組を使用して、例えばサービス要求３０１ａなど前の要求を複製する一連のサービス要求を定式化することができる。こうした一連のサービス要求の発信が結果的にトレースデータの再生になる。トレースデータを再生する理由は数多くあり、異常の調査は単に一例にすぎないことに留意されたい。本明細書のシステムおよび方法を使用して、こうした再生を開始する者の目的または意図に関係なくトレースデータを再生することができる。
【００４３】
トレースデータの再生は、最初にトレースを出したデータベースと同じデータベース上で行われる必要はない。トレースデータの検索のために任意のデータベースを選択することができるように、再生のために任意のデータベースを選択することができる。これによって現実に責任を有するデータベースとは別のデータベースをテストの目的のために使用することができる。また、必要に応じて、様々なデータベースプラットフォームおよび製品に対するトレースデータの再生も可能である。
【００４４】
ファイル４０３内のトレースデータをデータベース３００上で再生することができるように、テーブル４０４またはサーバ４０５内のトレースデータを再生することができる。これらの様々なフォーマットで格納されたデータは、再生するトレースを適切にフォーマットし、発信するため適切な扱いが必要であるが、任意のフォーマット４０３、４０４、４０５で格納された同一のトレースデータを使用して、データベース３００について同一の再生シーケンスを生成することができる。図４に示すように、カスタムオブジェクト例４００は、提供されたＡＰＩ４０１を介してトレースデータの再生を要求することができる。この要求において再生するトレースデータを指定することができ、この場合、要求４１０、４１１、４１２を生成することによって、ファイル４０３、テーブル４０４、またはサーバ４０５にデータが格納されていることを示すようにすることもできる。次いで実装のＡＰＩ４３０は、トレースデータが存在するファイル４０３、テーブル４０４、またはサーバ４０５から指定されたトレースデータの組を検索し、および指定されたデータベース上でトレースデータを再生することができる。
【００４５】
場合によっては、再生前にトレースデータを変更することが望ましいことがある。例えば、あるタイプのクエリが異常の原因ではないかと疑いがもたれている場合がある。再生前に、格納されている１組のトレースデータに疑わしいタイプのいくつかの追加のクエリを追加して、この仮説を試験することができる。あるいは、既存のトレースデータの組の個々のレコードを変更することが有益な場合がある。また、再生前にトレースデータを変更することが必要となる理由は様々考えることができ、本発明は、本明細書のＡＰＩを使用する者の任意の特定の意図に限定されないのである。再生前にトレースデータを変更することが望ましい場合があるため、本明細書で使用する場合、再生という用語は、記録されたトレースデータのものと同一の１組の要求を発信するだけでなく、記録されたトレースデータのものに関連する１組の要求を発信することも指す。図４に示したように、提供されたＡＰＩによって、カスタムオブジェクト例４００は、要求４１０、４１１、および４１２などによりトレースデータの変更を要求することができる。次いでＡＰＩ４０１の実装４３０によって、指定されたトレースデータは、それがファイル４０３、テーブル４０４、またはサーバ４０５のいずれにあっても変更することができる。
【００４６】
データベースのトレースデータのプログラムによる検索および再生のためのＡＰＩが提供される。上記では、ＡＰＩ、データベース、トレースデータ、およびトレースデータの検索および再生を全体的に説明した。次に、プログラムによる検索および再生のためのシステムおよび方法について説明する。これは、上記で概説したＡＰＩの追加の特徴を具体的に指摘するものである。
【００４７】
本出願では、プログラムによるという用語は、自動化された機能によってアクセス可能であることを指す。言い換えれば、人間の関与無しに、または人間の関与が低減された状態でプログラムによる機能をトリガするコンピュータ化された命令を書くことができる。例えば、ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤ（登録商標）文書に一連の数字を格納するコンピュータユーザについて考える。ユーザは数字を追加することを望んでいる。これを行う１つの方法は、計算アプリケーションを使用することである。コンピュータユーザは、計算アプリケーションを起動し、適切な数字を選択するためにマウスを使用して任意の数字を追加することができる。しかし計算機能は、一般には、数字をプログラムで検索、追加するコンピュータプログラムを書き込む機能を明示していない。追加する数字が非常に大量にあるユーザ、または数字の組がたくさんあるユーザは、こうした作業に計算アプリケーションを使用するのが面倒であることに気がつくかもしれない。
【００４８】
同様に、大量のデータベーストレースデータ、またはこうしたトレースデータのうちの多くの組を検索、および／または再生することを望むコンピュータユーザは、「手動で」そのようなことを行うためにプロファイラアプリケーションを使用することが面倒であると気づく場合がある。またはこれと異なり、こうしたユーザは、トレースデータをプログラムで検索、格納し、再生するプログラムを書き込むことを好む場合がある。本明細書の様々な態様および実施形態と関連して説明するように、ユーザは、トレースデータをいつ取り出すか、どこから取り出すか、どのように格納するか、どのように変更するか、いつ再生するかなどを指定することができる。こうしたすべての動作は、ユーザの指定に従ってプログラムで実行することができる。本明細書に記載したシステムおよび方法を使用すると、こうしたプログラムの生成がかなり容易になる。
【００４９】
図４および図５に、本発明の様々な実施形態によるトレースデータの検索を示している。図４は、トレースデータの検索のプロセスおよび状況を示す図であり、図５は、プログラムによる検索機能を提供するのに使用するオブジェクトおよびインターフェースの実装を示す図である。図４に示す検索については上述しており、以下では図５の実装例について説明する。
【００５０】
図５を参照すると、本明細書のシステムおよび方法によるＡＰＩの実装を記載したＵｎｉｆｏｒｍ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ（ＵＭＬ）の図を示している。図５の上部にある要素５００は、サーバまたはデータベースへの接続に関するものなどの接続情報を提供する関数を図５に示す他のオブジェクトに提供する。要素５０１は、他の様々なオブジェクトによってアクセスすることができるエラーレポートの関数を提供する。要素５０２は、データレコードのインターフェースであり、要素５０４は、データを取り出すためのインターフェースである。ＩＤａｔａＲｅａｄｅｒインターフェース５０４は、本技術分野では知られている。これは、ＭＩＣＲＯＳＯＦＴ（登録商標）．ＮＥＴフレームワークとともにリリースされたＳｙｓｔｅｍ．Ｄａｔａ名前空間で定義された管理されたインターフェースである。このインターフェース５０４を図５に含めたのは、ＡＰＩ例の潜在的な関数を具体的に認識するためであり、本発明を特にＩＤａｔａＲｅａｄｅｒ５０４インターフェースに限定するためのものではない。
【００５１】
オブジェクト５０６、５０７、５０８、５０９、および５１０は、ＩＤａｔａＲｅａｄｅｒ５０４インターフェースから継承する。オブジェクト５０８、５０９、５１０は、トレースデータを取り出す関数をそれぞれサーバ、テーブル、およびファイルに提供する。これらの関数の個別のオブジェクトは、ファイル、テーブル、またはサーバからのデータの読み取り、そこへのデータの書き込みの際に異なる１組の操作が必要となるため有益である。サーバの場合、レコードの変更のためにトレースデータにアクセスすることは一般にはできないため、オブジェクト５０８は、オブジェクト５０９および５１０のように５０７から継承することなく、オブジェクト５０６から直接継承する。トレースデータを検索し、それをファイルに格納するためオブジェクト５０８によって提供される関数には、サーバに格納するトレースデータをフォーマットするＴｒａｃｅＳｅｒｖｅｒ（）、指定されたサーバからトレースデータの検索を開始するＳｔａｒｔ（）、指定されたサーバからトレースデータの実行中の検索を一時停止するＰａｕｓｅ（）、および指定されたサーバからトレースデータの稼動中の検索を停止するＳｔｏｐ（）などがある。オブジェクト５０８は、オブジェクト５０６から継承するため、入力されるデータを読み取る関数Ｒｅａｄ（）、およびデータを格納する場所を閉じるＣｌｏｓｅ（）も提供する。さらに、オブジェクト５０８は、ＩＤａｔａＲｅａｄｅｒインターフェース５０４で指定された関数を提供する。これらの関数を提供することによって、オブジェクト５０８は、ユーザがこれらの関数にプログラムでアクセスすることができるようにし、それによって自動化が可能になる。
【００５２】
オブジェクト５０９および５１０は、オブジェクト５０７およびオブジェクト５０６から継承するように示されている。これは、上述した理由によるものである。つまり、好ましい実施形態において、トレースデータが５０９の場合のようにテーブルに、または５１０の場合のようにファイルに保存されたとき、記録変更関数をサポートすることが有益である。これを達成するために、オブジェクト５０７は、５０６から継承し、格納されたトレースデータのレコードを変更することができる追加の書き込み関数を提供する。図５に示すように、書き込み関数は、データを書き込み、こうした書き込み動作について適切なオブジェクトに適切に通知する要件を設定するＩＴｒａｃｅＤａｔａＷｒｉｔｅｒインターフェース５０５に従う。インターフェース５０５は、確立されたＩＤａｔａＲｅｃｏｒｄインターフェース５０２から継承するＩＤａｔａＲｅｃｏｒｄＣｈａｎｇｅｒインターフェース５０３を使用する。ＩＤａｔａＲｅｃｏｒｄＣｈａｎｇｅｒインターフェース５０３については、図９に別の形式で示している。
【００５３】
図９の実施形態において、ＩＤａｔａＲｅｃｏｒｄＣｈａｎｇｅｒインターフェースに２つのメソッドが指定されている。本発明の基本動作を変更することなく、こうしたインターフェースで異なるメソッドまたは追加のメソッドを指定することができることを当業者であれば理解されよう。図９に示したようなインターフェースの目的は、データが書き込まれ、または再生されるときにデータを変更する方法を提供することである。この場合、メソッドＳｅｔＶａｌｕｅ（）により、置き換えられる列のインデックス（ｉｎｔ  ｉ）が獲得され、新しい値（ｏｂｊｅｃｔ  ｖａｌｕｅ）がその場所に配置される。一方メソッドＡｄｄＣｏｌｕｍｎ（）は、新しい列をトレースデータに追加する。この点で、列識別子（ｉｎｔ  ｃｏｌｕｍｎｉｄ）が引数などのメソッドに提供され、新しく生成された列のインデックスを返すことができる。
【００５４】
したがって、別のインターフェース５０２に従って配信されたトレースデータレコードを変更する要件を指定するためにインターフェース５０３を使用することによって、最終的にオブジェクト５０９および５１０がレコード変更動作を実行できるようになる。こうしたレコードの変更は、再生を行う場合有益である。本明細書で提供する自動化された再生技術とともに、トレースデータの実行時の変更および再生を使用して、これまで達成されたことのない強力なデータベース分析が可能となる。
【００５５】
オブジェクト５０９および５１０によって継承されたすべての関数は、例えばカスタムオブジェクト例４００によるなど、ユーザによってプログラムでアクセス可能である。したがって、オブジェクト５０９および５１０は、ＵＭＬ図のＴｒａｃｅＴａｂｌｅ（）およびＴｒａｃｅＦｉｌｅ（）の表記によって示すように、オブジェクト５０７からの継承によって、データベースストリームからそれぞれテーブルまたはファイルにトレースデータを書き込むことができ、またテーブルおよびファイルに格納されているレコードの変更もサポートする。さらに、オブジェクト５０６からの継承によって、データベーストレースのストリームを読み取る関数、およびデータベーストレースのストリームへの接続を閉じる関数も、オブジェクト５０９および５１０によってサポートされる。ＵＭＬ図を理解する者はこのことを理解し、さらにＩＤａｔａＲｅａｄｅｒインターフェース５０４およびそのインターフェースから継承される対応する関数例も理解されよう。
【００５６】
次に、データベースのトレースデータのプログラムによる再生をサポートする本発明の実施形態に移動して、図６、図７、図８、図９、図１０、および図１１を参照する。図６は、トレースデータのプログラムによる再生を可能にするＡＰＩを介して実行することができる様々な動作を例示する図を示している。図７から図１１は、再生関数にアクセスするために明かすことができる様々な呼び出しに関する情報を提供する。ＵＭＬ図は、有益な情報を伝えず、興味をひかないため、ここでは示していないことに留意されたい。これは、好ましい実施形態において、再生関数オブジェクトは、既存の任意のオブジェクトから継承する必要がないからである。とはいえ、確実に継承を使用する本発明の実装形態を考案することはできる。
【００５７】
図６を参照すると、この場合も、ＡＰＩ６０１に対する様々な関数呼び出し６１０、６１１、６１２を実行することができるカスタムオブジェクト例６００を示している。ＡＰＩ６０１は、要求されたＡＰＩ６０１の様々な操作を実行する実装６３０によってサポートすることができる。実装６３０は、例えば図１２に関して本明細書に記載した様々なオブジェクト指向設計の原則を使用することができる。要求された関数の実行時に、ＡＰＩ実装６３０は、ファイル６０３に格納されているトレースデータ、テーブル６０４に格納されているトレースデータ、サーバ６０５に格納されているトレースデータにアクセスし、および／またはそれらを変更することができる。実装６３０は、６０３、６０４、および６０５内のトレースデータに関連する一連のクエリまたは他の通信を定式化し、データベース６４０に送信することもできる。実装は、この場合もこうしたデータを６０３、６０４、または６０５に格納してさらに分析するため、トレースのデータストリームの戻り６４２を同時に取り出すことができる。
【００５８】
ＡＰＩは、トレースデータ６１０の再生を開始し、一時停止し、または停止する能力を明示することができる。これらの特徴は、オブジェクトのトレース再生クラスの疑似コードの定義を示す図７にも示されている。図７に示したものなどを呼び出すカスタムオブジェクト６００は、任意の数の開始パラメータとともに、再生を開始する開始操作を指定することができる。こうしたパラメータは、再生すべきトレースの場所、再生時刻、再生用のデータベースなどを指定することができる。同様に、図７に示すように、カスタムオブジェクト例６００によって一時停止関数および停止関数にアクセスすることができる。
【００５９】
ＡＰＩは、任意の数のイベントが行われた後、通知６１１を要求する能力を明示する（ｅｘｐｏｓｅ）こともできる。トレースデータを再生するのにさらに有利なように、こうした通知をカスタムオブジェクト６００によって使用することができる。これらのカスタム通知は、図７にも示す。例えば、カスタムオブジェクト６００は、再生を開始する前に通知を要求する場合がある。これは、図７の「ｅｖｅｎｔ  ＲｅｐｌａｙＮｏｔｉｆｙＤｅｌｅｇａｔｅ．．．」行によっても示している。この特徴によって、カスタムオブジェクト６００は、例えば再生直前にトレースデータを検査し、必要に応じて様々なレコードに任意の変更を加えることができる。同様に、図７の「ｅｖｅｎｔ  ＲｅｐｌａｙＰａｕｓｅＤｅｌｅｇａｔｅ  ＲｅｐｌａｙＰａｕｓｅＮｏｔｉｆｙ」行に示すように、再生が一時停止されたときに通知を要求することができる。図７の「ｅｖｅｎｔ  ＲｅｐｌａｙＰａｕｓｅＤｅｌｅｇａｔｅ  ＲｅｐｌａｙＳｔａｒｔＮｏｔｉｆｙ」によって示すように、再生が再開されたとき、または図７の「ｅｖｅｎｔ  ＲｅｐｌａｙＳｔｏｐＤｅｌｅｇａｔｅ  ＲｅｐｌａｙＳｔｏｐＮｏｔｉｆｙ」行によって示すように、トレースデータの再生が停止されたときに通知を要求することができる。図７の「ｅｖｅｎｔ  ＲｅｐｌａｙＯｕｔｐｕｔＮｏｔｉｆｙＤｅｌｅｇａｔｅ  ＲｅｐｌａｙＯｕｔｐｕｔＮｏｔｉｆｙ」行に示すように、特定の再生からトレースデータの出力が準備されたときに通知を要求することができる。逆に、カスタムオブジェクト６００は、通知６１１を要求しない場合もあり、またこれらのイベントを単に無視することを選択する場合もある。
【００６０】
トレースデータの変更および再生を調整するためカスタムオブジェクト６００がこれらの通知６１１を使用する方法は無限にある。この特許の範囲は、これらのオブジェクトが本発明の範囲を超えた追加の特徴も含むかどうかに関係なく、開示されたＡＰＩの使用、およびＡＰＩを使用するオブジェクトまで及ぶ。本明細書に開示したようにトレースデータを再生するＡＰＩを介して通知を提供するという概念、それ自体が、提供されたＡＰＩを使用してカスタムオブジェクトの柔軟かつ強力な設計をサポートする向上そのものである。
【００６１】
図６の通知６１１ａは、ＡＰＩ６０１からカスタムオブジェクトへの通知信号を表す。図７の言語によって示すように、イベントオブジェクト、．ＮＥＴデリゲートなど、本技術分野で知られている任意の形の通知を使用することができることを理解されたい。．ＮＥＴデリゲートがコールバック通知に使用される様々な好ましい実施形態において、通知イベントは、図８に示すように宣言することができる。ここでの例は、わずかな実装上の差に対処することにより他の実施形態に拡大することができる。図８に示すように、ＲｅｐｌａｙＮｏｔｉｆｙＤｅｌｅｇａｔｅは、対象の通知に関するデータを宣言することができる。これは、他の通知イベント例にも当てはまる。
【００６２】
図８に示した通知イベントは、通知に応答してイベントハンドラが知的に適切なアクションを選択できるのに十分な情報を運ぶように設計されている。これらの通知は、再生の実行に影響を与える機構も含むことができる。この点で、以下の情報例を、図８のものなどの通知イベント内に含めることができる。
【００６３】
ＲｅｃｏｒｄＮｕｍｂｅｒ−再生すべきトレースレコードの行数を指定することができる。
ｃｕｒｒｅｎｔＲｅｃｏｒｄ−現在再生されているトレースレコードとすることができる。カスタムオブジェクトは、こうしたレコードの列を検査し、それを直接変更することができる。
ｓｋｉｐＲｅｃｏｒｄ−スキップレコードフラグを「ｔｒｕｅ」に設定することによって、カスタムオブジェクトハンドラは、ＡＰＩに特定のトレースレコードを再生しないことを求めることができる。
【００６４】
図７を参照すると、まずここで「ＴｒａｃｅＲｅａｄｅｒＷｒｉｔｅｒ  Ｏｕｔｐｕｔ」関数として認識した関数が追加の特徴である。使用している言語によって示すように、これによってカスタムオブジェクト６００は、再生の結果としてデータベースによって発行されたトレースデータ出力を取り出すことができる。こうした出力データは、格納前に変更することができる。「ＣｏｎｎｅｃｔｉｏｎｌｎｆｏＢａｓｅ  Ｃｏｎｎｅｃｔｉｏｎ」関数によって、カスタムオブジェクトは、データベースまたは他の適切なサーバへの接続に関する情報を指定することができる。例えば、特定のデータベースアドレスおよび通信プロトコルを指定することができる。次いでＡＰＩは、カスタムオブジェクト６００によって要求された時などに指定されたデータベースへの接続をプログラムで開始することができる。
【００６５】
最後に図７を参照すると、「ＴｒａｃｅＲｅｐｌａｙＯｐｔｉｏｎｓ」関数によってカスタムオブジェクト６００は、任意の数の追加オプションを指定することができる。図１０に、好ましいＡＰＩで使用可能になるオプション例を示す。トレースデータＡＰＩのオプションを提供するオブジェクトは、示された５つのオプションの任意のもの、および考案することができ、または有用であると理解される他の任意のオプションを提供することができる。再生スレッドプールのサイズは、制御を行なうことができる。このオプションは、再生が非常に多くのスレッドを開き、システムリソースに過度の負担を負わせるのを防ぐために使用することができる。ハング状態のプロセスを「強制終了する」または終了する前の待ち時間を指定することができる。例えば、データベースへの接続が適切に実行されていない場合、このプロセスに、終了前に指定された時間を与えることができる。ハング状態のプロセスのポーリング回数を設定することもできる。これによってユーザは、システムリソースをどの程度ポーリングに割り当てるべきかを指定することができる。非常に安定した環境では、ポーリング回数が少ない方が望ましいであろう。再生モードも指定することができる。図１１は、このオプションをさらに示す図である。ここには２つのモードが企図される。第１に、トレースデータがトレースデータ格納エリアに収集されたのと同じ順序でデータベース上で再生される順次再生モードである。第２に、特定のクライアントに関するすべてのイベントは連続的に再生されるが、イベントの任意のグローバルシーケンスは保存されない、すなわちクライアント要求は互いに独立しているとみなされる「接続レベル同期」モード（ｃｏｎｎｅｃｔｉｏｎ  ｌｅｖｅｌ  ｓｙｎｃｈｒｏｎｉｚｅｄ  ｍｏｄｅ）である。例えば、単一のクライアントが特定のデータベースの要求の１／１０を生成した場合、本発明の一態様によって、データベース要求の同じ１／１０をデータベースに対して連続的に再生することができる。プログラムでアクセスできる本明細書の他の機能と同様に、これによって再生を細かに、かつ柔軟に制御することが可能となる。
【００６６】
最後に、図１０に戻ると、オブジェクトは、実際のデータベースクエリ結果を返すべきか、または単にエラーを生成した操作の結果を返すべきかを指定することができる。このオプションは、すなわちトレースデータに加えて、実際の結果、つまりクエリ結果またはエラーを再生中に収集することができるという本発明の有用な一態様を明らかにさせ、さらにこの特徴は、再生オプションの制御を提供するオブジェクトによって制御することができる。
【００６７】
したがって、本明細書に開示したＡＰＩおよび様々なサポートオブジェクトは、複数の観点からトレースデータの管理を大幅に省力化する。まず、これらによってユーザは、トレースされたサーバのセキュリティ監査および健全性監視を完全に自動化することができる。第２に、新しいサーバリリースおよびセキュリティパックの自動的な機能の確認を可能にする。
【００６８】
コンピューティングおよびネットワークの環境例
図２ａを参照すると、本発明のシステムおよび方法との使用に適したコンピューティング装置２００例を大まかに示している。その最も基本的な構成では、装置２００は一般に、処理ユニット２０２およびメモリ２０３を含む。コンピューティング装置の正確な構成およびタイプに応じて、メモリ２０３は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこれら２つの何らかの組み合わせとすることができる。さらに、装置２００は、磁気または光学式のディスクまたはテープなど、大容量記憶装置（取外式２０４および／または固定式２０５）も含むことができる。同様に、装置２００は、キーボードやマウスなどの入力装置２０７、および／またはコンピューティング装置２００の機能にアクセスするグラフィカルな補助としてＧＵＩを提示するディスプレイなどの出力装置２０６も有し得る。装置２００の他の態様は、有線媒体または無線媒体を使用した他の装置、コンピュータ、ネットワーク、サーバなどへの通信接続２０８を含むことができる。こうした装置はすべて、本技術分野ではよく知られており、ここでは詳細に説明する必要はない。
【００６９】
図２ｂは、図２ａの適したコンピューティング装置の多少詳細な例および周辺システムを示している。コンピューティングシステム環境２２０は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境２２０を、動作環境２２０の例に示した構成要素のいずれか１つ、またはその組み合わせに関連する依存性または必要条件を有しているものと解釈すべきではない。
【００７０】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００７１】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で実施することができる。一般にプログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
【００７２】
図２ｂを参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ２４１の形で含んでいる。コンピュータ２４１の構成要素は、それだけには限定されないが、処理ユニット２５９、システムメモリ２２２、およびシステムメモリを含む様々なシステム構成要素を処理ユニット２５９に結合するシステムバス２２１を含むことができる。システムバス２２１は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。
【００７３】
コンピュータ２４１は、一般に様々なコンピュータ読取可能な媒体を含む。コンピュータ読取可能な媒体は、コンピュータ２４１からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性の媒体、取外式および固定式の媒体を含む。コンピュータ読取可能な媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の取外式および固定式媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ２４１からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように１つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組み合わせでもコンピュータ読取可能な媒体の範囲内に含まれるものとする。
【００７４】
システムメモリ２２２は、読み取り専用メモリ（ＲＯＭ）２２３やランダムアクセスメモリ（ＲＡＭ）２６０など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム２２４（ＢＩＯＳ）は、例えば起動中など、コンピュータ２４１内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ２２３に格納されている。ＲＡＭ２６０は一般に、処理ユニット２５９から直接アクセス可能な、かつ／または処理ユニット２５９が現在処理しているデータおよび／またはプログラムモジュールを含む。図２ｂは、それだけには限定されないが一例として、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７、およびプログラムデータ２２８を示している。
【００７５】
コンピュータ２４１は、他の取外式／固定式、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図２ｂは、固定式不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ２３８、取外式不揮発性磁気ディスク２５４から読み取り、あるいはそこに書き込む磁気ディスクドライブ２３９、およびＣＤ−ＲＯＭや他の光媒体など、取外式不揮発性光ディスク２５３から読み取り、あるいはそこに書き込む光ディスクドライブ２４０を示している。動作環境の例で使用できる他の取外式／固定式、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ２３８は一般に、インターフェース２３４などの固定式メモリインターフェースを介してシステムバス２２１に接続され、磁気ディスクドライブ２３９および光ディスクドライブ２４０は一般に、インターフェース２３５などの取外式メモリインターフェースによってシステムバス２２１に接続される。
【００７６】
図２ｂを参照して上述したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータ２４１の他のデータの記憶域を提供する。図２ｂでは例えば、ハードディスクドライブ２３８は、オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６、およびプログラムデータ２５５を格納するものとして示されている。これらの構成要素は、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７、およびプログラムデータ２２８と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６、およびプログラムデータ２５５は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード２５１、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置２５２などの入力装置を介してコマンドおよび情報をコンピュータ２４１に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース２３６を介して処理ユニット２５９に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ２４２または他のタイプの表示装置もまた、ビデオインターフェース２３２などのインターフェースを介してシステムバス２２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース２３３などを介して接続できるスピーカ２４４、プリンタ２４３などの他の周辺出力装置を含むこともできる。
【００７７】
コンピュータ２４１は、リモートコンピュータ２４６など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ２４６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ２４１に関連して上述した多くまたはすべての要素を含むが、図２ｂにはメモリ記憶装置２４７のみを示している。図２ｂに示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）２４５および広域ネットワーク（ＷＡＮ）２４９を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００７８】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ２４１は、ネットワークインターフェースまたはアダプタ２３７を介してＬＡＮ２４５に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ２４１は一般に、モデム２５０、またはインターネットなどＷＡＮ２４９を介して通信を確立する他の手段を含む。モデム２５０は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース２３６または他の適切な機構を介してシステムバス２２１に接続することができる。ネットワーク式環境では、コンピュータ２４１に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図２ｂは、それだけには限定されないが一例として、リモートアプリケーションプログラム２４８をメモリ装置２４７上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００７９】
本明細書に記載した様々な技術を、ハードウェア、ソフトウェア、または必要に応じてその組み合わせとともに実装することができることを理解されたい。したがって、本発明の方法および装置、またはそのいくつかの態様または一部は、フロッピー（登録商標）ディスク、ＣＲ−ＲＯＭ、ハードドライブ、または他の任意の機械読取可能な記憶媒体など、有形の媒体に組み込まれるプログラムコード（すなわち命令）の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされ、それによって実行されると、そのマシンは本発明を実施する装置となる。プログラム可能コンピュータ上でプログラムコードを実行する場合、コンピューティング装置は一般に、プロセッサ、プロセッサによって読み取り可能な記憶媒体（揮発性および不揮発性メモリおよび／または記憶要素を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。１つまたは複数のプログラムは、例えばＡＰＩ、再利用可能なコントロールなどの使用を介して本発明との関連で記載したプロセスを実施し、使用することができる。こうしたプログラムは、コンピュータシステムと通信するための高レベル手続き型またはオブジェクト指向型のプログラミング言語で実施されることが好ましい。しかし、プログラムは、必要に応じて、アセンブリ言語またはマシン言語で実装することができる。どんな場合でも、言語はコンパイル型またはインタプリタ型言語とすることができ、ハードウェア実装と組み合わせることができる。
【００８０】
実施形態の例は、１つまたは複数のスタンドアロンコンピュータシステムの文脈での本発明の使用に言及しているが、本発明はそのように限定されず、むしろネットワークまたは分散コンピューティング環境など、任意のコンピューティング環境とともに実施することができる。さらに、本発明は、複数の処理チップまたは処理装置で、またはそれにわたって実施することができ、同様に記憶装置も複数の装置にわたって実施することができる。こうした装置には、パーソナルコンピュータ、ネットワークサーバ、ハンドヘルド装置、スーパーコンピュータ、または自動車や飛行機など他のシステムに統合されたコンピュータなどがある。
【００８１】
図２ｃにネットワークコンピューティング環境例を示している。ネットワークは、分散コンピューティング環境において任意のコンピュータ、または他のクライアント装置またはサーバ装置を接続することができることを当業者であれば理解できよう。この点で、任意の数の処理ユニット、メモリユニット、またはストレージユニット、および同時に行われる任意の数のアプリケーションおよびプロセスを有する任意のコンピュータシステムまたは環境は、提供されたシステムおよび方法との関連での使用に適していると考えられる。
【００８２】
分散コンピューティングは、コンピューティング装置とシステムとの間の交換によりコンピュータリソースおよびサービスの共有を提供する。これらのリソースおよびサービスは、情報の交換、キャッシュ記憶装置、およびファイル用のディスク記憶装置を含む。分散コンピューティングによって、ネットワーク接続が利用され、それによってクライアントは、統合的にコンピュータ能力を利用して企業全体の利益を得ることができる。この場合、様々な装置は、本明細書に記載したプロセスを含むことができるアプリケーション、オブジェクト、またはリソースを備えることができる。
【００８３】
図２ｃは、ネットワーク式または分散式のコンピューティング環境例の略図を示している。この環境は、コンピューティング装置２７１、２７２、２７６、２７７、ならびにオブジェクト２７３、２７４、２７５と、データベース２７８とを含む。これらの構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８のそれぞれは、プログラム、メソッド、データ記憶、プログラム可能ロジックなどを含み、使用することができる。構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、ＰＤＡ、オーディオ／ビデオ装置、ＭＰ３プレイヤ、パーソナルコンピュータなど、同じまたは異なる装置の部分にまたがり得る。各構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、通信ネットワーク２７０を介して別の構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８と通信することができる。この場合、任意のエンティティは、データベース２７８または他の記憶要素の操作および更新を行う役割を担うことができる。
【００８４】
このネットワーク２７０自体は、サービスを図２ｃに示すシステムに提供する他のコンピューティングエンティティを含み、複数の相互接続されたネットワークを表すことができる。本発明の一態様によれば、各構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、他の構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８のうちの１つまたは複数のサービスを要求するために、ＡＰＩ、あるいは他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを使用し得る個別の機能プログラムモジュールを含むことができる。
【００８５】
オブジェクト２７５などのオブジェクトは、別のコンピューティング装置２７６でホストされる場合があることも理解できよう。したがって、例示した物理的な環境では、接続された装置をコンピュータとして示しているが、こうした図は単に例にすぎず、代わりにＰＤＡ、ＴＶ、ＭＰ３プレイヤなどの様々なデジタル装置、インターフェース、ＣＯＭオブジェクトなどのソフトウェアオブジェクトを含む物理的な環境を示し、または記載することができる。
【００８６】
分散コンピューティング環境をサポートする様々なシステム、構成要素、ネットワーク構成がある。例えば、複数のコンピューティングシステムは、有線または無線のシステム、ローカルネットワーク、または広範に分散されたネットワークによってともに接続することができる。現在、多くのネットワークは、広範にわたって分散されたコンピューティングのためのインフラストラクチャを提供し、異なる多くのネットワークを含むインターネットに結合されている。こうした任意のインフラストラクチャは、インターネットに結合されているか否かに関わらず、提供されたシステムおよび方法とともに使用することができる。
【００８７】
ネットワークインフラストラクチャによって、クライアント／サーバ、ピアツーピア、またはハイブリッドアーキテクチャ（ｈｙｂｒｉｄ  ａｒｃｈｉｔｅｃｔｕｒｅ）など、多数のネットワークトポロジが可能となる。「クライアント」とは、関係のない別のクラスまたはグループのサービスを使用するあるクラスまたはグループのメンバである。コンピュータ処理では、クライアントとはプロセス、すなわち大まかに言えば、別のプログラムによって提供されるサービスを要求する１組の命令またはタスクである。クライアントプロセスは、他のプログラムまたはサービス自体についての任意の作業の詳細を「認識している」ことを必要とすることなく、要求されたサービスを使用する。クライアント／サーバアーキテクチャ、特にネットワーク式システムでは、クライアントは通常、サーバなど、別のコンピュータによって提供される共有のネットワークリソースにアクセスするコンピュータである。図２ｃの例では、任意の構成要素２７１、２７２、２７３、２７４、２７５、２７６、２７７、および２７８は、状況に応じてクライアント、サーバ、またはその両方とみなすことができる。
【００８８】
必須ではないが、サーバは一般に、インターネットなど、リモートネットワークまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第１のコンピュータシステムで動作可能であり、サーバプロセスは、第２のコンピュータシステムで動作可能であり、通信媒体を介して互いに通信し、したがって分散機能を提供し、複数のクライアントがサーバの情報収集機能を利用することができる。任意のソフトウェアオブジェクトを複数のコンピューティング装置またはオブジェクトにわたって分散することができる。
【００８９】
クライアントおよびサーバは、プロトコルレイヤによって提供される機能を使用して互いに通信する。例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）は、ＷＷＷまたは「Ｗｅｂ」とともに使用される共通のプロトコルである。一般に、インターネットプロトコル（ＩＰ）アドレスなどのコンピュータネットワークアドレス、またはユニバーサルリソースロケータ（ＵＲＬ）などの他の参照を使用してサーバコンピュータまたはクライアントコンピュータを互いに識別することができる。ネットワークアドレスは、ＵＲＬアドレスと呼ぶことができる。通信は、通信媒体を介して提供することができ、例えば、クライアントおよびサーバは、大容量通信用のＴＣＰ／ＩＰ通信を介して互いに結合することができる。
【００９０】
図２ａおよび図２ｂに提供された一般のフレームワークに従って構築することができる様々なコンピューティング環境、および図２ｃなどのネットワーク環境でのコンピュータ処理の際に起こり得るさらなる多様化を考慮して、本明細書に記載したシステムおよび方法は、決して特定のコンピューティングアーキテクチャに限定されるものと解釈することはできない。代わりに、本発明は、任意の単一の実施形態に限定されるべきではなく、むしろ特許請求の範囲による広さおよび範囲で解釈すべきである。
【図面の簡単な説明】
【００９１】
【図１】プロファイラアプリケーションがデータベーストレースデータの反映、データベースの様々なサービス要求および／またはデータベースによって実行される他の操作を検索、表示し、格納し、再生することができる従来技術のシステムを示す図である。
【図２ａ】本発明の様々な態様との使用に適したコンピューティング装置例の基本的な特徴を大まかに表すブロック図である。
【図２ｂ】本発明の様々な態様との使用に適したより詳細なコンピューティング装置例を示すブロック図である。
【図２ｃ】本発明のものを含めて多くのコンピュータ化されたプロセスを実施することができるネットワークコンピューティング環境例を示す図である。
【図３】データベーストレースデータの検索、表示、格納、および再生を自動化するようにカスタムオブジェクトを設計することができるデータベーストレースデータのプログラムによる検索および再生のためのＡＰＩを示す図である。
【図４】ファイル、テーブル、サーバへの格納、およびトレースデータの格納、変更、および再生の要求を含む、データベーストレースデータの検索および格納に関連付けられた様々な機能を示す図である。
【図５】本発明のＡＰＩを実施する様々なオブジェクトの構成の好ましい実施形態を示すＵＭＬ図である。
【図６】再生中に複数の通知オプションを提供し、トレースソース、再生モード、および他のオプションの指定など、任意の追加オプションを最終的に提供することに加えて、ファイル、テーブル、またはサーバからの再生、および再生の開始、停止、および一時停止を含むデータベーストレースデータの再生に関連付けられた様々な機能を示す図である。
【図７】再生オブジェクト例のクラス定義を示す図である。
【図８】コールバック通知イベントの宣言例を示す図である。
【図９】本技術分野で知られているＩＤａｔａＲｅｃｏｒｄインターフェースなど、ＩＤａｔａＲｅｃｏｒｄインターフェースから継承することができるＩＤａｔａＲｅｃｏｒｄＣｈａｎｇｅｒインターフェースの定義例を示す図である。
【図１０】トレース再生オプションオブジェクトのクラス定義例を示す図である。
【図１１】データベーストレースデータの再生時に選択することができる２つの再生モード例を示す図である。
【図１２】本発明との使用が企図されたオブジェクト指向符号化技術とともに使用するオブジェクト例を示す図である。
【符号の説明】
【００９２】
１００  データベース
１０１  クライアント
１０１ａ  サービス要求
１０２  クライアント
１０２ａ  サービス要求
１０３  クライアント
１０３ａ  サービス要求
１０４  クライアント
１０４ａ  トレースデータ要求
１０４ｂ  トレースのデータストリームの戻り
１０５  データベースプロファイラアプリケーション
１０６  ファイル
１０７  編集
２０２  処理ユニット
２０３  システムメモリ  揮発性  不揮発性
２０４  取外式記憶装置
２０５  固定式記憶装置
２０６  出力装置
２０７  入力装置
２０８  通信接続
２２０  コンピューティング環境
２２１  システムバス
２２２  システムメモリ
２２５  オペレーティングシステム
２２６  アプリケーションプログラム
２２７  他のプログラムモジュール
２２８  プログラムデータ
２３０  ビデオメモリ
２３１  グラフィックインターフェース
２３２  ビデオインターフェース
２３３  出力周辺インターフェース
２３４  固定式不揮発性メモリインターフェース
２３５  取外式不揮発性メモリインターフェース
２３６  ユーザ入力インターフェース
２３７  ネットワークインターフェース
２４２  モニタ
２４３  プリンタ
２４４  スピーカ
２４５  ローカルエリアネットワーク
２４６  リモートコンピュータ
２４８  リモートアプリケーションプログラム
２４９  広域ネットワーク
２５０  モデム
２５１  キーボード
２５２  ポインティング装置
２５５  プログラムデータ
２５６  他のプログラムモジュール
２５７  アプリケーションプログラム
２５８  オペレーティングシステム
２５９  処理ユニット
２７０  通信ネットワーク／バス
２７１  コンピューティング装置
２７２  コンピューティング装置
２７３  オブジェクト
２７６  コンピューティング装置
２７７  コンピューティング装置
２７８  データベース
３００  データベース
３０１  クライアント
３０１ａ  サービス要求
３０２  クライアント
３０２ａ  サービス要求
３０３  クライアント
３０３ａ  サービス要求
３０４  クライアント
３０４ａ  トレースデータ要求
３０４ｂ  トレースのデータストリームの戻り
３１０  データベースプロファイラ機能
３３０  カスタムオブジェクト
３３１  カスタムオブジェクト
３３２  カスタムオブジェクト
【図１】
0005404986.tif 000002
【図２ａ】
0005404986.tif 000003
【図２ｂ】
0005404986.tif 000004
【図２ｃ】
0005404986.tif 000005
【図３】
0005404986.tif 000006
【図４】
0005404986.tif 000007
【図５】
0005404986.tif 000008
【図６】
0005404986.tif 000009
【図７】
0005404986.tif 000010
【図８】
0005404986.tif 000011
【図９】
0005404986.tif 000012
【図１０】
0005404986.tif 000013
【図１１】
0005404986.tif 000014
【図１２】
0005404986.tif 000015