(57)【特許請求の範囲】
【請求項１】
コンピュータで実行される方法であって、
アプリケーションに関連する連続入力データストリームを受信することと、
前記連続入力データストリームから入力リレーションを生成することとを含み、
前記入力リレーションは、前記連続入力データストリームのデータレコードの有界集合であり、方法はさらに、
前記入力リレーションを識別する連続クエリを受信することと、
前記入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別することと、
前記入力リレーションの属性を前記コンフィギュラブルウィンドウ演算子に適用することによって前記連続クエリを実行して出力リレーションを生成することとを含み、
前記属性は、前記入力リレーションに関連付けられたイベントの特性を含み、前記方法は、さらに、
前記コンフィギュラブルウィンドウ演算子によって定義された、前記入力リレーションに前記イベントが挿入された時間から特定時間範囲内において前記イベントが発生したか否かを判断することと、
前記イベントが前記特定時間範囲内に発生したか否かの判断結果に応じて、前記出力リレーションに対して前記イベントを挿入するか、または、前記出力リレーションから前記イベントを取り除くことと、
前記出力リレーションのデータレコードを提供することとを含み、
前記出力リレーションは、前記イベントが前記特定時間範囲内に発生したことに基づいて挿入された当該イベントを含む、コンピュータで実行される方法。
【請求項２】
前記入力リレーションは、過去データのデータベースに記憶される前記アプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースである、請求項１に記載のコンピュータで実行される方法。
【請求項３】
前記入力リレーションは、前記アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースである、請求項１または２に記載のコンピュータで実行される方法。
【請求項４】
前記データレコードを提供することは、前記出力リレーションを表示することを含み、前記出力リレーションは、前記コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある前記入力リレーションからの前記データレコードの部分集合を含む、請求項１〜３のいずれか１項に記載のコンピュータで実行される方法。
【請求項５】
１つ以上のプロセッサーによって実行可能な複数の命令を含むコンピュータ読取可能プログラムであって、前記複数の命令は、
前記１つ以上のプロセッサーに、アプリケーションに関連する連続入力データストリームを受信させる命令と、
前記１つ以上のプロセッサーに、前記連続入力データストリームから入力リレーションを生成させる命令と、
前記１つ以上のプロセッサーに、前記入力リレーションを識別する連続クエリを受信させる命令と、
前記１つ以上のプロセッサーに、前記入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別させる命令と、
前記１つ以上のプロセッサーに、前記入力リレーションの属性を前記コンフィギュラブルウィンドウ演算子に適用することによって前記連続クエリを実行して出力リレーションを生成させる命令とを含み、
前記属性は、前記入力リレーションに関連付けられたイベントの特性を含み、前記複数の命令は、さらに、
前記１つ以上のプロセッサーに、前記コンフィギュラブルウィンドウ演算子によって定義された、前記入力リレーションに前記イベントが挿入された時間から特定時間範囲内において前記イベントが発生したか否かを判断させる命令と、
前記１つ以上のプロセッサーに、前記イベントが前記特定時間範囲内に発生したか否かの判断結果に応じて、前記出力リレーションに対して前記イベントを挿入するか、または、前記出力リレーションから前記イベントを取り除くかを判断させる命令と、
前記１つ以上のプロセッサーに、前記出力リレーションのデータレコードを提供させる命令とを含み、
前記出力リレーションは、前記イベントが前記特定時間範囲内に発生したことに基づいて挿入された当該イベントを含む、コンピュータ読取可能プログラム。
【請求項６】
システムであって、
複数の命令を記憶するメモリーと、
前記メモリーにアクセスするように構成される１つ以上のプロセッサーとを備え、前記１つ以上のプロセッサーは、前記複数の命令を実行するようにさらに構成され、前記複数の命令は少なくとも、
アプリケーションに関連する連続入力データストリームを受信し、
連続入力データストリームから入力リレーションを生成し、
前記入力リレーションを識別する連続クエリを受信し、
前記入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別し、
前記入力リレーションの属性を前記コンフィギュラブルウィンドウ演算子に適用することによって前記連続クエリを実行して出力リレーションを生成する命令を含み、
前記属性は、前記入力リレーションに関連付けられたイベントの特性を含み、前記複数の命令は、さらに、
前記コンフィギュラブルウィンドウ演算子によって定義された、前記入力リレーションに前記イベントが挿入された時間から特定時間範囲内において前記イベントが発生したか否かを判断し、
前記イベントが前記特定時間範囲内に発生したか否かの判断結果に応じて、前記出力リレーションに対して前記イベントを挿入するか、または、前記出力リレーションから前記イベントを取り除き、
前記出力リレーションのデータレコードを提供する命令を含み、
前記出力リレーションは、前記イベントが前記特定時間範囲内に発生したことに基づいて挿入された当該イベントを含む、システム。
【請求項７】
前記１つ以上のプロセッサーは、前記出力リレーションを表示するようにさらに構成され、前記出力リレーションは、前記コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある前記入力リレーションからの前記データレコードの部分集合を含む、請求項６に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
従来のデータベースシステムにおいて、データは、通常はテーブルの形態である１つ以上のデータベースに記憶される。そして、記憶されるデータは、構造化照会言語（ＳＱＬ）などのデータ管理言語を使用して照会および操作される。たとえば、ＳＱＬクエリは、データベースに記憶されるデータから関連するデータを識別するために定義および実行され得る。したがって、ＳＱＬクエリは、データベースに記憶されるデータの有限集合に対して実行される。さらに、ＳＱＬクエリが実行される時、それはひとたび有限データ集合に対して実行され、有限の静的結果（finite static result）を作成する。したがって、データベースは、有限の記憶されるデータ集合に対してクエリを実行するように最良に実装される。
【０００２】
しかしながら、いくつかの最新のアプリケーションおよびシステムは、有限のデータ集合の代わりに、連続的なデータもしくはイベントのストリームの形態のデータを生成する。このようなアプリケーションの例としては、限定されるものではないが、センサーデータアプリケーション、株式相場表示装置、ネットワーク性能測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車トラフィック監視などが含まれる。このようなアプリケーションは、データストリームを処理することができる新しい種類のアプリケーションの必要を生じさせた。たとえば、温度センサーは、温度測定値を発信するように構成され得る。
【０００３】
これらのタイプのイベントストリームベースのアプリケーションについてのデータの管理および処理では、厳密な時間によるフォーカスを使用してデータ管理およびクエリ機能が作成される。連続的なデータの非有界集合に対する長期実行クエリ（long-running queries）を含む、異なる種類の照会メカニズムが必要である。現在、一部のベンダーはイベントストリーム処理を目的とした製品スーツを提供しているが、提供されるこれらの製品は、今日のイベント処理の需要に対処するために必要な処理の柔軟性に依然として欠けている。
【発明の概要】
【課題を解決するための手段】
【０００４】
簡単な概要
一部の例において、リレーションに対する値ベースのウィンドウを管理するための方法が提供される。方法は、入力リレーションを識別する連続クエリを受信することを含み得る。１つの例において、入力リレーションは、アプリケーションに関連するデータレコードの有界集合である。そして、方法は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子（configurable window operator）を識別することを含み得る。加えて、方法は、出力リレーションを生成するために少なくとも部分的にコンフィギュラブルウィンドウ演算子に基づいて連続クエリを実行することを含み得る。一部の局面において、方法は、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供することも含み得る。
【０００５】
一部の例において、入力リレーションは、アプリケーションに関連する受信中の連続入力データストリームに少なくとも部分的に基づいて生成される外部データソースであり得る。加えて、一部の例において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースでもあり得る。
【０００６】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、方法は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用することを含み得る。他の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在時間値ウィンドウ演算子であり得て、方法は、出力リレーションを生成するために入力リレーションにおける属性に対して現在時間値ウィンドウ演算子を適用することを含み得る。加えて、一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在期間値ウィンドウ演算子であり得て、方法は、出力リレーションを生成するために入力リレーションにおける属性に対して現在期間値ウィンドウ演算子を適用することを含み得る。
【０００７】
一部の局面において、方法は、出力リレーションを表示することも含み得る。一部の例において、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含み得る。
【０００８】
一部の例において、非一時的コンピューター読取可能媒体が提供され得る。媒体は、１つ以上のプロセッサーによって実行可能な複数の命令を含み得る。命令は、一部の例において、入力リレーションを生成することと、入力リレーションを処理するように構成されるクエリを識別することとを含み得る。加えて、命令は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別することと、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行することとを含み得る。一部の局面において、命令は、出力リレーションを表示することによって連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供することも含み得る。一部の例において、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含み得る。
【０００９】
一部の例において、システムが提供され得る。システムは、メモリーと、メモリーにアクセスし、入力リレーションを生成する命令を実行するように構成される１つ以上のプロセッサーとを含み得る。命令は、入力リレーションを処理するように構成されるクエリを識別し、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別するために実行され得る。加えて、命令は、出力リレーションを生成するためにコンフィギュラブルなウィンドウ演算子に少なくとも部分的に基づいてクエリを実行するために実行され得る。
【００１０】
一部の例において、コンピューター実行装置が提供され得て、装置は、入力リレーションを生成する手段を含み、入力リレーションは、アプリケーションに関連するデータレコードの有界集合であり、装置はさらに、入力リレーションを識別する連続クエリを受信する手段と、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別する手段と、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいて連続クエリを実行する手段と、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供する手段とを含む。
【００１１】
一部の例において、入力リレーションは、アプリケーションに関連する受信中の連続的な入力データストリームに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００１２】
一部の例において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【００１３】
一部の例において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００１４】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、連続クエリを実行する手段は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用する手段を含む。
【００１５】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在時間値ウィンドウ演算子であり得て、連続クエリを実行する手段は、出力リレーションを生成するために入力リレーションにおける属性に対して現在時間値ウィンドウ演算子を適用する手段を含む。
【００１６】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在期間値ウィンドウ演算子であり得て、連続クエリを実行する手段は、出力リレーションを生成するために入力リレーションにおける属性に対して現在期間値ウィンドウ演算子を適用する手段を含む。
【００１７】
一部の例において、データレコードを提供する手段は、出力リレーションを表示する手段を含み、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【００１８】
一部の例において、サービスプロバイダーデバイス（１１０１）が提供され得て、サービスプロバイダーデバイス（１１０１）は、入力リレーションを識別する連続クエリを受信するように構成される入力リレーションユニット（１１０２）を含み、入力リレーションは、アプリケーションに関連するデータレコードの有界集合であり、サービスプロバイダーデバイス（１１０１）はさらに、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別するように構成されるコンフィギュラブルウィンドウ演算子ユニット（１１０３）と、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいて連続クエリを実行するように構成される出力リレーションユニット（１１０５）と、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供するように構成される提供ユニット（１１０７）とを含む。
【００１９】
一部の例において、入力リレーションは、アプリケーションに関連する受信中の連続的な入力データストリームに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００２０】
一部の例において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【００２１】
一部の例において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００２２】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、出力リレーションユニット（１１０５）は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用するようにさらに構成され得る。
【００２３】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在時間値ウィンドウ演算子であり得て、出力リレーションユニット（１１０５）は、出力リレーションを生成するために入力リレーションにおける属性に対して現在時間値ウィンドウを適用するようにさらに構成され得る。
【００２４】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在期間値ウィンドウ演算子であり得て、出力リレーションユニット（１１０５）は、出力リレーションを生成するために入力リレーションにおける属性に対して現在期間値ウィンドウ演算子を適用するようにさらに構成され得る。
【００２５】
一部の例において、提供ユニット（１１０７）は、出力リレーションを表示するようにさらに構成され得て、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【００２６】
一部の例において、コンピューター実行装置が提供され得て、装置は、入力リレーションを生成する手段と、入力リレーションを処理するためにクエリを識別する手段と、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別する手段と、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行する手段とを備える。
【００２７】
一部の例において、入力リレーションは、アプリケーションに関連する受信中の連続的な入力データストリームに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００２８】
一部の例において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【００２９】
一部の例において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００３０】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、連続クエリを実行する手段は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用するための手段を含む。
【００３１】
一部の例において、装置は、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供するための手段をさらに含み得る。
【００３２】
一部の例において、装置は、出力リレーションを表示するための手段をさらに含み得て、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【００３３】
一部の例において、サービスプロバイダーデバイス（１２０１）が提供され得て、サービスプロバイダーデバイス（１２０１）は、入力リレーションを処理するように構成されるクエリを受信および識別するように構成される入力リレーションユニット（１２０２）と、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別するように構成されるコンフィギュラブルウィンドウ演算子ユニット（１２０３）と、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行するように構成される出力リレーションユニット（１２０５）とを含む。
【００３４】
一部の例において、入力リレーションは、アプリケーションに関連する受信中の連続入力データに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００３５】
一部の例において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【００３６】
一部の例において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【００３７】
一部の例において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、出力リレーションユニット（１２０５）は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用するようにさらに構成され得る。
【００３８】
一部の例において、サービスプロバイダーデバイス（１２０１）は、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供するように構成される提供ユニット（１２０７）をさらに含み得る。
【００３９】
一実施形態において、提供ユニット（１２０７）は、出力リレーションを表示するようにさらに構成され得て、出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【００４０】
上記のものは、他の特徴および実施形態と合わせて、以下の明細書、請求項、および添付の図面を参照することによってより明らかとなる。
【００４１】
詳細な説明が、添付の図面を参照して述べられる。図面において、参照番号の最も左の数字は、参照番号が最初に表われる図面を識別する。異なる図面において同じ参照番号が使用される場合、それは同様もしくは同一の要素を示す。
【図面の簡単な説明】
【００４２】
【図１】リレーションに対する値ベースのウィンドウを管理するための技術が実施され得る、簡易化された例示的なシステムもしくは構成を示す図である。
【図２】リレーションに対する値ベースのウィンドウの管理のための特徴を説明するために用いられ得る簡易化されたブロック図である。
【図３】本開示の一実施形態に従う、入力リレーションに記憶される例示的な情報、およびコンフィギュラブルウィンドウ演算子を使用して入力リレーションが処理される場合における出力リレーションの生成を示す図である。
【図４】本開示の他の実施形態に従う、入力リレーションに記憶される例示的な情報、およびコンフィギュラブルウィンドウ演算子を使用して入力リレーションが処理される場合における出力リレーションの生成を示す図である。
【図５】本開示の他の実施形態に従う、入力リレーションに記憶される例示的な情報、およびコンフィギュラブルウィンドウ演算子を使用して入力リレーションが処理される場合における出力リレーションの生成を示す図である。
【図６】少なくとも１つの例に従う、本願明細書に記載されるリレーションに対する値ベースのウィンドウの管理の少なくとも一部の特徴を示す簡易化された処理フローを示す図である。
【図７】少なくとも１つの例に従う、本願明細書において記載されるリレーションに対する値ベースのウィンドウの管理の少なくとも一部の特徴を示す他の簡易化された処理フローを示す図である。
【図８】少なくとも１つの例に従う、本願明細書において記載されるリレーションに対する値ベースのウィンドウの管理の実施形態に従って使用され得るシステム環境の構成部分を示す簡易化されたブロック図である。
【図９】少なくとも１つの例に従う、本願明細書において記載されるリレーションに対する値ベースのウィンドウの管理の実施形態に従って使用され得るコンピューターシステムを示す簡易化されたブロック図である。
【図１０】本発明の他の実施形態に従う、本願明細書において記載されるリレーションに対する値ベースのウィンドウの管理を実施するための処理を示す例示的なフロー図である。
【図１１】本発明の特定の実施形態に従って使用され得るサービスプロバイダーデバイスを示す簡易化されたブロック図である。
【図１２】本発明の特定の実施形態に従って使用され得るサービスプロバイダーデバイスを示す簡易化されたブロック図である。
【発明を実施するための形態】
【００４３】
詳細な説明
以下の説明において、様々な実施形態が記載される。説明を目的として、実施形態についての完全な理解を提供するために、具体的な構成および詳細が述べられる。しかしながら、具体的な詳細がなくとも実施形態が実施され得ることは当業者にとって明らかである。さらにまた、周知の特徴は、記載される実施形態を不明瞭にしないために、省略もしくは簡易化され得る。
【００４４】
一部のアプリケーションにおいて、データは、記憶される有限のデータセットではなく、連続的な非有界データストリームの形態を取り得る。このようなデータストリームの例には、金融アプリケーションにおける株式相場表示、ネットワーク監視およびトラフィック管理における性能測定、ウェブトラッキングおよびパーソナル化におけるログ記録もしくはクリックストリーム、センサーアプリケーションからのデータフィード、ファイヤーウォールベースのセキュリティにおけるネットワークパケットおよびメッセージ、ならびに電話通信におけるコール詳細記録などが含まれ得る。それらの連続的な特性により、これらのデータストリームは、典型的に、従来のワンタイムＳＱＬクエリではなく連続クエリを使用して照会され得る。
【００４５】
一般に、連続データストリーム（イベントストリームともいわれる）は、明示的な終点のない連続もしくは非有界の特性を有し得るデータもしくはイベントのストリームを含み得る。論理的に、イベントもしくはデータストリームは、データ要素（イベントともいわれる）のシーケンスであり得て、各データ要素は、関連付けられたタイムスタンプを有する。連続イベントストリームは、要素のバッグもしくはセット（ｓ，Ｔ）として論理的に表わされ得て、ここで「ｓ」はデータ部分を表わし、「Ｔ」は時間ドメインに属する。「ｓ」部分は、概してタプルもしくはイベントといわれる。したがって、イベントストリームは、タイムスタンプを持つタプルもしくはイベントのシーケンスであり得る。
【００４６】
一部の局面において、ストリームにおけるイベントに関連付けられるタイムスタンプは、クロックタイムと同等とされ得る。しかしながら、他の例において、イベントストリームにおけるイベントに関連付けられる時間は、アプリケーションドメインによって定義され得て、クロックタイムに対応しない場合があるが、たとえば、代わりにシーケンス番号によって表わされ得る。このため、イベントストリームにおけるイベントに関連付けられる時間情報は、数字、タイムスタンプ、または時間の概念を表わす他の情報によって表され得る。入力イベントストリームを受信するシステムについては、イベントは、タイムスタンプの増加順でシステムに到達する。同じタイムスタンプを有する２つ以上のイベントがあり得る。
【００４７】
一部の例において、イベントストリームにおけるイベントは、いくぶん世俗的なイベント（たとえば、温度センサーが値を新しい値に変更した場合や、株式表示記号の価格が変化した場合など）の発生を表わし得て、イベントに関連付けられる時間情報は、データストリームイベントによって表わされる世俗的なイベントが発生した場合を示し得る。
【００４８】
イベントストリームを介して受信したイベントについては、イベントストリームにおけるイベントが確実にタイムスタンプ値の増加順で到達するように、イベントに関連付けられる時間情報が使用され得る。これにより、イベントストリームにおいて受信されたイベントを、それらに関連付けられる時間情報に基づいて順序付けることができる。この順序付けを可能にするために、後に生成されるイベントが前に生成されるイベントよりも後のタイムスタンプを有するように、タイムスタンプがイベントストリームにおけるイベントに対して非減少の態様で関連付けられ得る。他の例として、シーケンス番号が時間情報として使用されている場合、後に生成されるイベントに関連付けられるシーケンス番号は、前に生成されるイベントに関連付けられるシーケンス番号よりも大きくなり得る。一部の例において、たとえばデータストリームイベントによって表される世俗的なイベントが同時に発生した場合に、複数のイベントが、同じタイムスタンプもしくは同じシーケンス番号に関連付けられ得る。同じイベントストリームに属するイベントは、概して、関連付けられる時間情報によってイベントに対して加えられる順序で処理され得て、前のイベントは後のイベントの前に処理される。
【００４９】
イベントストリームにおけるイベントに関連付けられる時間情報（たとえば、タイムスタンプ）は、ストリームのソースによって設定され得る、または代替的にストリームを受信するシステムによって設定され得る。たとえば、特定の実施形態において、イベントストリームを受信するシステムに対してハートビートが維持され得て、イベントに関連付けられる時間は、ハートビートによって測定されるようにシステムへのイベントの到達の時間に基づき得る。イベントストリームにおける２つのイベントが同じ時間情報を有することは可能である。なお、タイムスタンプ順序付け要件は１つのイベントストリームに対して特定のものであるが、異なるストリームのイベントが適宜インターリーブされ得る。
【００５０】
イベントストリームは、関連付けられるスキーマ「Ｓ」を有し、スキーマは、時間情報と、１つ以上の指定される名前付き属性の集合とを含む。特定のイベントストリームに属するすべてのイベントは、その特定のイベントストリームに関連付けられるスキーマに準拠する。このため、イベントストリーム（ｓ，Ｔ）については、イベントストリームは、スキーマ「Ｓ」を(<time_stamp>,<attribute(s)>)として有し得て、ここで<attributes>は、スキーマのデータ部分を表わし、１つ以上の属性を含み得る。たとえば、株式相場表示装置イベントストリームについてのスキーマは、<stock symbol>および<stock price>の属性を含み得る。このようなストリームを介して受信される各イベントは、タイムスタンプと２つの属性とを有する。たとえば、株式相場表示装置イベントストリームは、以下のイベントおよび関連付けられるタイムスタンプを受け取り得る。
【００５１】
(<timestamp_N>,<NVDA,4>)
(<timestamp_N+1>,<ORCL,62>)
(<timestamp_N+2>,<PCAR,38>)
(<timestamp_N+3>,<SPOT,53>)
(<timestamp_N+4>,<PDCO,44>)
(<timestamp_N+5>,<PTEN,50>)
上記のストリームにおいて、ストリーム要素(<timestamp_N+1>,<ORCL,62>)については、イベントは、「stock_symbol」および「stock_value」を伴う<ORCL,62>である。ストリーム要素に関連付けられるタイムスタンプは、「timestamp_N+1」である。したがって、連続イベントストリームはイベントのフローであり、各イベントは同じ一連の属性を有する。
【００５２】
記載したように、ストリームはＣＱＬクエリが作用し得るデータの主要なソースであり得る。ストリームＳは、要素（ｓ，Ｔ）のバッグ（「マルチセットともいわれる）であり得て、ここで「s」はＳのスキーマに属し、「Ｔ」は時間ドメインに属する。加えて、ストリーム要素は、タプルとタイムスタンプのペアであり得て、タイムスタンプを持つタプル挿入のシーケンスとして表わされ得る。言い換えると、ストリームは、タイムスタンプを持つタプルのシーケンスであり得る。一部の場合において、同じタイムスタンプを有する２つ以上のタプルがあり得る。また、入力ストリームのタプルは、タイムスタンプの増加順でシステムに到達する必要があり得る。代替的に、リレーション（「時間で変化するリレーション」ともいわれ、リレーショナルデータベースからのデータを含み得る「リレーショナルデータ」と混同されない）は、時間ドメインからスキーマＲのタプルの非有界バッグへのマッピングであり得る。一部の例において、リレーションは、順序付けされていない、時間で変化するタプルのバッグ（すなわち、瞬間的なリレーション）であり得る。一部の場合において、時間の各瞬間では、リレーションは有界集合であり得る。これは、挿入、消去、および／または更新を含んでリレーションの変化する状態を表わし得る、タイムスタンプを持つタプルのシーケンスとしても表わされ得る。ストリームと同様に、リレーションは、リレーションの各タプルが準拠し得る固定スキーマを有し得る。さらに、本願明細書で使用される連続クエリは、概してストリームおよび／またはリレーションのデータを処理する（すなわち、照会する）ことが可能であり得る。加えて、リレーションは、ストリームのデータを参照し得る。
【００５３】
一部の例において、ビジネスインテリジェンス（ＢＩ）は、特定の間隔で（たとえば、一部の場合においては毎日）事業実施の運営および最適化を補助し得る。このタイプのＢＩは、通常、オペレーショナルビジネスインテリジェンス、リアルタイムビジネスインテリジェンス、またはオペレーショナルインテリジェンス（ＯＩ）と呼ばれる。オペレーショナルインテリジェンスは、一部の例において、ＢＩと事業活動の監視（ＢＡＭ）との線引きを不明瞭にする。たとえば、ＢＩは、過去データの周期的なクエリにフォーカスし得る。このようなことから、ＢＩは、後向きフォーカスを有し得る。しかしながら、ＢＩは、実施用途にも利用され得て、このため、単なる戦略的分析ツールから事業実施における前線へ拡大し得る。このようなことから、ＢＩシステムは、イベントストリームを分析し、リアルタイムで集合を演算するようにも構成され得る。
【００５４】
一部の例において、連続クエリ言語サービス（ＣＱサービス）は、連続クエリを取り扱うとともにリアルタイムの警告を可能にするように、ＢＩ分析サーバーを拡張するように構成され得る。ＣＱサービスは、一部の局面において、ＢＩ分析サーバーおよびＣＱＬエンジンとの統合を提供し得る。例示のみであるが、ＢＩ分析サーバーは、連続クエリをＣＱサービスに転付し得て、ＣＱサービスは、ＣＱＬエンジンのための論理データベース（ＤＢ）ゲートウェイとしても作用し得る。この方法により、ＣＱＬエンジンは、その分析能力およびセマンティックモデリングのために、ＢＩ分析サーバーを活用することが可能となり得る。
【００５５】
一部の例において、ＣＱサービスは、とりわけ、以下の機能を提供し得る。
・ＣＱＬエンジンゲートウェイとしてＢＩ分析サーバーのためのリモーティングサービス
・イベントソース／シンクアダプター
・論理ＳＱＬにＣＱＬ拡張を加えたものからのデータ定義言語（ＤＤＬ）の生成
・すべてのタイプの連続クエリおよび実施選択のための統一モデルの提供
・メタデータおよびサポート再開可能性の維持
・高い利用可能性およびスケーラビリティのサポート
加えて、一部の例において、ＯＩは、事業実施に対して可視性および見識をもたらすリアルタイムの動的事業分析の形態である。大量の情報から理解可能とすることを助けるという点において、ＯＩは、ＢＩもしくはリアルタイムＢＩに対してリンクもしくは比較されることが多い。しかしながら、いくつかの基本的な違いがある。ＯＩは、主に活動中心的であり得て、ＢＩは主にデータ中心的であり得る。加えて、ＯＩは、進展する状況（たとえば、傾向およびパターン）を検知する、およびこれに対応するのにより適し得て、これに対してＢＩは、事後ベースおよび報告ベースの手法として従来より使用され得る。
【００５６】
一部の例において、事業イベント分析および監視（ＢＥＡＭ）システムは、インフライトデータを処理および／または受信するためにＣＱＬエンジンを含み得る。たとえば、ＣＱＬエンジンは、受信中のリアルタイムの情報を照会もしくはそれ以外に処理するように構成されるインメモリーリアルタイムイベント処理エンジンであり得る（たとえば、ＢＩまたはＯＩ）。ＣＱＬエンジンは、一時セマンティクスを利用または理解し得るとともに、データのウィンドウの定義を処理することを可能にするように構成され得る。ＣＱＬエンジンを利用することは、一部の場合において、受信中のデータに対して常にクエリを実行することを伴う。
【００５７】
一部の局面において、ＣＱＬエンジンは、完全に発達したクエリ言語を含み得る。このようなことから、ユーザーは、クエリに関して演算を特定し得る。加えて、ＣＱＬエンジンは、メモリーの最適化、クエリ言語特性の利用、演算子の共有、リッチパターンマッチング、リッチ言語構成などのために設計され得る。加えて、一部の例において、ＣＱＬエンジンは、過去データおよびストリーミングデータの両方を処理し得る。たとえば、ユーザーは、カリフォルニアの販売が特定のターゲットを超えた時に警告を送るようにクエリを設定し得る。したがって、一部の例において、警告は、過去の販売データおよび受信中のライブ（すなわち、リアルタイム）販売データに少なくとも部分的に基づき得る。
【００５８】
一部の例において、ＣＱＬエンジンまたは以下に記載されるコンセプトの他の特徴は、リアルタイムで過去のコンテキスト（すなわち、ウェアハウスデータ）と受信中のデータとを結合するように構成され得る。したがって、一部の場合において、本開示は、データベースに記憶される情報とインフライト情報との間の境界を記載し得る。データベースに記憶される情報およびインフライト情報の両方は、ＢＩデータを含み得る。このようなことから、データベースは、一部の例において、ＢＩサーバーであり得る、または任意のタイプのデータベースであり得る。さらに、一部の例において、本開示の特徴は、ユーザーがどのようにプログラムするのか、またはそれ以外にどのようにコードを書くのかを知らなくとも上記の特徴の実施を可能とし得る。言い換えると、特徴は、多機能ユーザーインターフェイス（ＵＩ）において提供され得る、または過去データとリアルタイムのデータとの結合を非開発者が実施することを可能とする態様で提供され得る。
【００５９】
一部の例において、上記のコンセプトは、複合イベント処理に関連付けられるリッチリアルタイム連続イベント処理能力を活用するために利用され得る。限定されないが、アーカイブされたリレーションなどのいくつかの特徴がサポートされ得る。このようなことから、このような特徴（たとえば、リッチリアルタイム連続イベント処理）を活用するために、システムは、リレーショナルデータのスタートアップ状態およびランタイム状態に透明に対処するように構成され得る。言い換えると、システムは、作成の瞬間おいては空でないクエリ（すなわち、アーカイブされたリレーション）を管理するように構成され得る。
【００６０】
一部の例において、アーカイブされたリレーションが利用され得る。このようなことから、アーカイブされたリレーションに基づくことを示すクエリをＣＱＬエンジンが確認した場合、そのアーカイブされたリレーションは、たとえば、過去のコンテキストについてクエリを呼び出すことができる特定のエンティティがあることを示し得る。一部の例において、データ定義言語（ＤＤＬ）は、照会をどのように行なうか、テーブル内の重要なカラムは何か、および／または残りのデータをどこへ送信するかなど、アーカイブされたリレーションについての注釈を示し得るが、これらに限定されない。一部の例において、ひとたびクエリがＣＱＬエンジンにおいて構築されると（たとえば、グラフとして）、システムはクエリグラフを分析し得る。加えて、一部の局面において、「distinct」、「group aggr」、「pattern」、および／または「group by」のような、ステートフルな特定の演算子がある。しかしながら、ステートレスな演算子は、入力を取り、それをたとえば下流の演算子などの親に送るのみであり得る。このため、１つの手法は、このテーブル全体をここに記憶することである。しかしながら、アーカイブされたリレーションを利用することにより、システムは、クエリグラフを分析し、アーカイブを照会するために使用することができる最低のステートフル演算子がどれかを決定し得る。一部の例において、システム（または１つ以上のコンピューター実行方法）は、グラフを横断しながら到達した最低のステートフル演算子において状態を検索する。たとえば、クエリグラフは、ソースからのトポロジー順序において分析され得る。この第１のステートフル演算子に少なくとも部分的に基づき、ＣＱＬエンジンは、アーカイブされたリレーションに対して定義されるクエリについての演算子の状態を初期化するために、取得されるデータの最適量を判定し得る。
【００６１】
少なくとも１つの非限定的な例において、リレーションおよび／またはソースのようなソース演算子は、トポロジー横断線において最初に置かれ得て、クエリ出力および／またはルートは最後に置かれ得る。たとえば、ＣＱＬクエリが、select sum(c1) from R1 where c2>c25のような場合、このクエリについてのプランは、RelationSource→SELECT→GroupAggrのようになり得る。したがって、トポロジー順序に従うとともに、RelationSourceおよびSELECTが両方ともステートレスであることから、最低のステートフル演算子はGroupAggrであり得る。この方法により、クエリのステートフル演算子（この例では、GroupAggr）は、クエリエンジンがストリーミングデータを受信する前にデータストアから過去データをクエリエンジンに集合させることを可能にし得る。これは、アーカイブされたリレーションをクエリが分析しており、そのアーカイブされたリレーションがそのように示しているという事実に少なくとも部分的に基づいて可能となり得る。
【００６２】
一部の例において、所与のアーカイブリレーションのウィンドウサイズは、ユーザーによって指定され得る。一部の局面において、ウィンドウは、アーカイブされたリレーションに関連して、受信中のアクティブデータを分析もしくはそれ以外に評価するクエリグラフにおけるノードを含み得る。言い換えると、ウィンドウは、クエリエンジンによって分析および／または処理され得るアクティブデータの量、および／またはアーカイブされたリレーションに含まれる過去データの量を定義し得る。
【００６３】
高いレベルにおいて、ひとたびウィンドウがStreamに対して適用されると、それはRelationとなり、リレーショナルデータベースと同様に、通常のリレーショナルロジックが適用され得る。タプルが到着してウィンドウを離れると、考慮中のRelationは、それに対してコンパイルされるクエリによって変化し、同時に結果を発する。ＣＱＬは、RANGE（ナノ秒粒度に至る）、ROWS、PARTITION BY、および拡張可能ウィンドウをサポートし得る。これらのウィンドウは、ストリームからリレーションへの演算子（stream-to-relation operators）の例である。他方、ISTREAM（すなわち、挿入ストリーム）、DSTREAM（すなわち、削除ストリーム）、およびRSTREAM（すなわち、リレーションストリームは、リレーションからストリームへの演算子（relation-to-stream operators）である。一部の例において、ユーザー、開発者、および／または管理者は、クエリエンジンまたはクエリエンジンを操作もしくはホスティングする１つ以上のコンピューティングシステムによって提供されるウィンドウサイズを（たとえば、ＵＩを介して）設定し得る。一部の例において、ストリーム上のウィンドウは、時間ベースの範囲ウィンドウであり得る。たとえば、アーカイブされたリレーション上のコンフィギュラブル値ウィンドウは、ウィンドウサイズおよびウィンドウが計算される属性を使用して特定され得る。アーカイブされたリレーションの上部に特定されるコンフィギュラブル値ウィンドウがある場合、スナップショットクエリが演算され得て、ウィンドウ限界内のスナップショットタプルが出力され得る。加えて、状態の初期化後、値ウィンドウは、受信中のアクティブデータに対して適用され得る。一部の例において、ウィンドウ属性の値がウィンドウサイズよりも小さい現在イベント時間とは異なるウィンドウには受信中のアクティブデータのみが挿入される。
【００６４】
上述のように、一部の例において、連続クエリを使用した連続データストリームの処理には、ストリームに対してウィンドウを適用し、全ストリーム履歴の代わりに最近のストリームタプルの固定数が考慮されるように特定すること、または全ストリーム履歴の代わりに特定の時間内に到着したストリームタプルのみが考慮されるように特定することを伴い得る。上でさらに記載されるように、一部の例において、連続クエリ処理には、受信中の連続ストリームをリレーションに変換するよう処理する様々な演算子、または入力リレーションを出力ストリームデータに変換する演算子を使用することを伴い得る。
【００６５】
しかしながら、特定の状況においては、ユーザーは、アプリケーションに関連する受信中のリアルタイムデータをリレーション（たとえば、外部データソース）に記憶されるアプリケーションに関連するデータを用いて処理することが必要であり得るクエリを設定し得る。リレーションのサイズが非常に大きい場合、このデータを照会するためにメモリーに持ち込む必要のあるデータの量もまた非常に大きくなり得る。ＣＱＬエンジンは、典型的に、受信中のリアルタイム情報を照会もしくは処理するように構成されるインメモリーリアルタイムイベント処理エンジンであり得ることから、有限のメモリーにおいてこのような高いレートの入力ストリームを大きなサイズのリレーションと結合するようにスケール可能とはなり得ない。
【００６６】
このため、一部の実施形態において、ウィンドウ演算子は、連続クエリ（たとえば、ＣＱＬクエリ）におけるリレーションを処理するために定義され得る。１つの例において、ウィンドウ演算子は、ユーザーコンフィギュラブルであり得る。ウィンドウ演算子は、特定の時間の範囲に対してリレーションにおけるデータレコードの部分集合の処理を可能とし得る。このため、リレーションのデータレコードの部分集合は、メモリーにおけるリレーションのデータレコードのセットの全体を処理するのではなく、有限のメモリーにおいて照会され得る。
【００６７】
特定の実施形態において、入力リレーションが生成され得る。１つの例において、入力リレーションは、アプリケーションに関連するデータレコードの有界集合を含む外部データソースであり得る。１つの例において、入力リレーションは、連続入力データストリームから生成され得る。代替的に、入力リレーションは、アプリケーションに関連する過去データのデータベースに基づいて生成され得る。加えて、入力リレーションは、１つ以上のアーカイブされたリレーションから最初に生成され得て、入力リレーションの残りは、受信中のストリーミングデータに基づいて生成され得る。
【００６８】
本開示の一実施形態に従えば、入力リレーションを識別する連続クエリ（たとえば、ＣＱＬクエリ）が受信され得る。そして、入力リレーションに対して定義されるウィンドウ演算子が識別され得る。クエリは、出力リレーションを生成するためにウィンドウ演算子に少なくとも部分的に基づいて実行され得る。一実施形態において、出力リレーションは、入力リレーションにおけるウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含み得る。
【００６９】
上記および下記の技術は、いくつかの方法およびいくつかの状況において実施され得る。以下においてより詳細に記載されるように、いくつかの例示的な実施および状況が以下の図面を参照して提供される。しかしながら、以下の実施および状況は多くのうちの一部である。
【００７０】
図１は、リレーションに対する値ベースのウィンドウを管理するための技術が実施され得る、簡易化された例示的なシステムもしくはアーキテクチャ１００を示す。アーキテクチャ１００において、１人以上のユーザー１０２（たとえば、アカウント保持者）が、コンピューティングデバイス１０４（１）〜１０４（Ｎ）（まとめて、「ユーザーデバイス１０４」）を利用し、１つ以上のネットワーク１０８を介して１つ以上のサービスプロバイダーコンピューター１０６にアクセスし得る。一部の局面において、サービスプロバイダーコンピューター１０６は、ネットワーク１０８を介して、１つ以上のストリーミングデータソースコンピューター１１０および／または１つ以上のデータベース１１２と通信し得る。たとえば、ユーザー１０２は、サービスプロバイダーコンピューター１０６を利用し、ストリーミングデータソースコンピューター１１０および／またはデータベース１１２のデータにアクセスし得る、またはそれ以外にデータを管理し得る（たとえば、１１０および１１２のうちのいずれかもしくは両方に対してクエリが実行され得る）。データベース１１２は、リレーショナルデータベースまたはＳＱＬサーバーなどであり得て、一部の例においては、過去データ、イベントデータ、リレーション、またはアーカイブされたリレーションなどをユーザー１０２の代わりに管理し得る。加えて、データベース１１２は、ストリーミングデータソースコンピューター１１０によって提供されるデータを受信もしくはそれ以外に記憶し得る。一部の例において、ユーザー１０２は、ユーザーデバイス１０４を利用し、データ（たとえば、過去のイベントデータ、ストリーミングイベントデータなど）についてのクエリ（「クエリ宣言」ともいう）または他のリクエストを提供することによってサービスプロバイダーコンピューター１０６と対話し得る。そして、このようなクエリまたはリクエストは、サービスプロバイダーコンピューター１０６によって実行され、データベース１１２のデータおよび／またはストリーミングデータソースコンピューター１１０からの受信中のデータが処理され得る。さらに、一部の例において、ストリーミングデータソースコンピューター１１０および／またはデータベース１１２は、サービスプロバイダーコンピューター１０６に関連付けられる、統合された分散環境の一部であり得る。
【００７１】
一部の例において、ネットワーク１０８は、ケーブルネットワーク、インターネット、無線ネットワーク、携帯電話ネットワーク、イントラネットシステム、ならびに／または他の私的および／もしくは公共ネットワークなど、複数の異なるタイプのネットワークのうちの１つもしくはこれらの組み合わせを含み得る。示される例は、ユーザー１０２がネットワーク１０８を介してサービスプロバイダーコンピューター１０６にアクセスすることを表わしているが、記載の技術は、ユーザー１０２が固定電話で１つ以上のユーザーデバイス１０４を介して、キオスクを介して、または他の方法により１つ以上のサービスプロバイダーコンピューター１０６と対話する場合においても等しく適用され得る。また、記載の技術は、他のクライアント／サーバー構成（たとえば、セットトップボックスなど）および非クライアント／サーバー構成（たとえば、ローカルに記憶されるアプリケーションなど）においても適用され得る。
【００７２】
ユーザーデバイス１０４は、携帯電話、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ラップトップコンピューター、デスクトップコンピューター、シンクライアントデバイス、タブレットＰＣなどの任意のタイプのコンピューティングデバイスであり得るが、これらに限定されない。一部の例において、ユーザーデバイス１０４は、ネットワーク１０８を介して、または他のネットワーク接続を介して、サービスプロバイダーコンピューター１０６と通信し得る。さらに、ユーザーデバイス１０４は、データベース１１２（または他のデータストア）の処理されるデータを要求するための１つ以上のクエリもしくはクエリ宣言を提供するようにも構成され得る。
【００７３】
一部の局面において、サービスプロバイダーコンピューター１０６は、モバイル、デスクトップ、シンクライアント、および／またはサーバーのようなクラウドコンピューティングデバイスなど、任意のタイプのコンピューティングデバイスでもあり得るが、これらに限定されない。一部の例において、サービスプロバイダーコンピューター１０６は、ネットワーク１０８を介して、または他のネットワーク接続を介してユーザーデバイス１０４と通信し得る。サービスプロバイダーコンピューター１０６は、場合によってはクラスターにおいて、サーバーファームとして、または互いに関連付けられていない個別のサーバーとして構成される１つ以上のサーバーを含み得る。これらのサーバーは、本願明細書において記載されるＣＱＬリレーションの管理、入力リレーションの生成、入力リレーションに関連付けられるコンフィギュラブルウィンドウ演算子、および出力リレーションの生成を含む、本願明細書に記載される特徴を行なう、もしくはホスティングするように構成され得る。加えて、一部の局面において、サービスプロバイダーコンピューター１０６は、ストリーミングデータソースコンピューター１１０および／またはデータベース１１２を含む、統合された分散コンピューティング環境の一部として構成され得る。
【００７４】
１つの例示的な構成において、サービスプロバイダーコンピューター１０６は、少なくとも１つのメモリー１３６と１つ以上の処理ユニット（プロセッサー）１３８とを含み得る。プロセッサー１３８は、ハードウェア、コンピューター実行可能命令、ファームウェア、またはこれらの組み合わせにおいて適切に実施され得る。プロセッサー１３８のコンピューター実行可能命令またはファームウェアの実施は、記載される様々な機能を行なうために任意の適したプログラミング言語で書かれたコンピューター実行可能命令もしくはマシン実行可能命令を含み得る。
【００７５】
メモリー１３６は、プロセッサー１３８上でローディング可能および実行可能なプログラム命令ならびにこれらのプログラムの実行時に生成されるデータを記憶し得る。サービスプロバイダーコンピューター１０６の構成およびタイプに応じて、メモリー１３６は、揮発性（ランダムアクセスメモリー（ＲＡＭ）など）および／または不揮発性（読み取り専用メモリー（ＲＯＭ）、フラッシュメモリーなど）であり得る。サービスプロバイダーコンピューター１０６またはサーバーは、追加の記憶部１４０も含み得て、この記憶部１４０は、リムーバブル記憶部および／または非リムーバブル記憶部を含み得る。追加の記憶部１４０は、磁気記憶部、光学ディスク、および／またはテープ記憶部を含み得るが、これらに限定されない。ディスクドライブおよびこれに関連付けられるコンピューター読取可能媒体は、コンピューター読取可能命令、データ構造、プログラムモジュール、およびコンピューティングデバイスのための他のデータの不揮発性記憶部を提供し得る。一部の実施において、メモリー１３６は、スタティックランダムアクセスメモリー（ＳＲＡＭ）、ダイナミックランダムアクセスメモリー（ＤＲＡＭ）、またはＲＯＭなどの複数の異なるタイプのメモリーを含み得る。
【００７６】
メモリー１３６ならびにリムーバブルおよび非リムーバブルの両方の追加の記憶部１４０は、すべてコンピューター読取可能記憶媒体の例である。たとえば、コンピューター読取可能記憶媒体は、コンピューター読取可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の記憶のための任意の方法もしくは技術において実施される、揮発性もしくは不揮発性のリムーバブルもしくは非リムーバブル媒体を含み得る。メモリー１３６および追加の記憶部１４０は、すべてコンピューター記憶媒体の例である。
【００７７】
サービスプロバイダーコンピューター１０６は、記憶されるデータベース、他のコンピューティングデバイスもしくはサーバー、ユーザー端末、および／またはネットワーク１０８上の他のデバイスとサービスプロバイダーコンピューター１０６が通信することを可能にする通信接続１４２も含み得る。サービスプロバイダーコンピューター１０６は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、ディスプレイ、１つ以上のスピーカー、プリンターなどの入力／出力（Ｉ／Ｏ）デバイス１４４も含み得る。
【００７８】
より詳細にメモリー１３６の内容を見ると、メモリー１３６は、オペレーティングシステム１４６と、少なくとも入力リレーションモジュール１４８、コンフィギュラブルウィンドウ演算子モジュール１５０、および出力リレーションモジュール１５２を含む、本願明細書に開示される特徴を実施するための１つ以上のアプリケーションプログラムもしくはサービスとを含み得る。本願明細書において使用されるモジュールは、サービスの一部であるサーバーもしくはサーバーのクラスターによって実行されるプログラミングモジュールを言い得る。この特定の文脈において、モジュールは、サービスプロバイダーコンピューター１０６の一部であるサーバーもしくはサーバーのクラスターによって実行され得る。
【００７９】
一部の例において、入力リレーションモジュール１４８は、１つ以上の入力リレーションを受信、識別、生成、もしくは提供するように構成され得る。一実施形態において、入力リレーション１５４は、アプリケーションに関連するデータレコードの有界集合（たとえば、リレーションまたはアーカイブされたリレーション）を含む外部データソースである。
【００８０】
１つの例において、入力リレーション１５４は、アプリケーションに関連する（たとえば、データソースコンピューター１１０からの）データもしくはイベントのストリームを含む受信中の連続入力データストリームに基づいて生成され得る外部データソースであり得て、ここで入力リレーションは、連続データストリームにおけるイベントストリームエントリーｓ１、ｓ２…ｓＮのうちの１つ以上を含むデータレコードの有界集合を含み得る。他の例において、入力リレーション１５４は、過去データのデータベース（たとえば、データベース１１２）に記憶されるアプリケーションに関連する情報に基づいて生成され得る外部データソースであり得て、入力リレーションは、Persistenceまたは過去データのデータベースから事前にローディングされる１つ以上のイベントストリームエントリー（たとえば、ｓ１および／もしくはｓ２、またはそれより多いもしくは少ない）を含むデータレコードの有界集合を含み得る。
【００８１】
他の例において、入力リレーション１５４は、アプリケーションに関連する１つ以上のイベントストリームエントリーｓ１、ｓ２…ｓＮへの参照を含み得る１つ以上のアーカイブされたリレーションに基づいて生成され得る外部データソースであり得る。１つの例において、入力リレーション１５４は、１つ以上のアーカイブされたリレーションから最初に生成され得て、入力リレーションの残りは、受信中のストリーミングデータに基づいて生成され得る。
【００８２】
１つの例において、入力リレーション１５４におけるデータレコードは、入力リレーション１５４の変化する状態を表わすタイムスタンプを持つタプルもしくはデータレコードのシーケンスを含み得る。一実施形態において、入力リレーション１５４における各データレコードは、以下のスキーマ「Ｓ」：(<time stamp>,<attribute(s)>)によって表され得るイベントストリームエントリーを含み得て、ここで<attributes>は、スキーマのデータ部分を表わし、１つ以上の属性を含み得る。
【００８３】
コンフィギュラブルウィンドウ演算子モジュール１５０は、連続クエリにおける入力リレーションを処理するための１つ以上のコンフィギュラブルウィンドウ演算子１５６を定義するように構成され得る。入力リレーションについてコンフィギュラブルウィンドウ演算子が定義され得る様々な方法がある。一実施形態において、コンフィギュラブルウィンドウ演算子は、ユーザーコンフィギュラブルであり得る。特定の実施形態において、および以下に詳細に記載されるように、コンフィギュラブルウィンドウ演算子は、入力リレーションにおけるデータレコードのタイムスタンプｔに対してコンフィギュラブルウィンドウ演算子によって特定される範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む出力リレーションを作り得る。
【００８４】
一実施形態において、第１のタイプのコンフィギュラブルウィンドウ演算子は、入力リレーションに対する「ジェネリック値」ウィンドウ演算子として定義され得る。１つの例において、「ジェネリック値」ウィンドウ演算子は、以下のように入力リレーション１５４に対するサブクローズとして表現され得る。
【００８５】
RANGE range_val ON attr.
特定の実施形態において、「ジェネリック値」ウィンドウ演算子は、入力リレーションにおける対応するデータレコードのタイムスタンプｔに対する「range val」である特定の範囲内に属性「attr」値がある入力リレーションからのデータレコードの部分集合を含む出力リレーションを作り得る。ＣＱＬクエリにおける入力リレーションに対して「ジェネリック値」ウィンドウオペレーターが定義され得る方法の例示的な動作は以下に詳細に記載される。
【００８６】
他の実施形態において、第２のタイプのコンフィギュラブルウィンドウ演算子は、入力リレーションに対する「現在時間値」ウィンドウ演算子として定義され得る。１つの例において、「現在時間値」ウィンドウ演算子は、以下のように入力リレーションに対するサブクローズとして表現され得る。
【００８７】
CurrentHour on attr
一実施形態において、「現在時間値」ウィンドウ演算子は、入力リレーションにおける対応するデータレコードのタイムスタンプｔに対する「CurrentHour」である現在時間に属性「attr」値がある入力リレーションからのデータレコードの部分集合を含む出力リレーションを作り得る。ＣＱＬクエリにおける入力リレーションに対して「現在時間値」ウィンドウ演算子が定義され得る方法の例示的な動作は以下に詳細に記載される。
【００８８】
他の実施形態において、第３のタイプのコンフィギュラブルウィンドウ演算子は、入力リレーションに対する「現在期間値」ウィンドウ演算子として定義され得る。１つの例において、「現在期間値」ウィンドウ演算子は、以下のように入力リレーションに対するサブクローズとして表現され得る。
【００８９】
CurrentPeriod("t1","t2") on attr
一実施形態において、「現在期間値」ウィンドウ演算子は、入力リレーションにおける対応するデータレコードのタイムスタンプｔに対する「CurrentPeriod」である現在時間期間内に属性「attr」値がある入力リレーションからのデータレコードの部分集合を含む出力リレーションを作り得る。ＣＱＬクエリにおける入力リレーションに対して「CurrentPeriod」ウィンドウ演算子が定義され得る方法の例示的な動作は、以下により詳細に記載される。
【００９０】
上の記載は、ＣＱＬクエリにおける入力リレーションに対するコンフィギュラブルウィンドウ演算子の３つのタイプの定義づけに関連するが、少なくとも一部の実施形態においては、追加のタイプのウィンドウ演算子が、ＣＱＬクエリにおける入力リレーションに対してコンフィギュラブルウィンドウ演算子モジュール１５０によって定義され得ることが理解される。
【００９１】
出力リレーションモジュール１５２は、１つ以上の出力リレーション１５８を生成するように構成され得る。一実施形態において、出力リレーションモジュール１５２は、ＣＱＬエンジンおよび／またはＣＱサービスからのＣＱＬクエリを受信するように構成され得る。特定の実施形態において、出力リレーションモジュール１５２は、ＣＱＬクエリにおける入力リレーションを識別し、入力リレーションに対して定義されるコンフィギュラブルウィンドウ演算子を識別し、コンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてＣＱＬクエリを実行し、出力リレーションを生成し得る。代替的に、一部の例において、入力リレーションを含むクエリ（たとえば、ＣＱＬクエリ）が識別もしくは受信される場合、ＣＱＬエンジンおよび／またはＣＱサービスは、クエリ２０６をパースすることで、入力リレーションを処理して出力リレーションを生成する。一実施形態において、および以下に詳細に記載されるように、出力リレーションは、入力リレーションにおけるコンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。特定の実施形態において、ＣＱＬクエリが受信され、メモリー内の出力リレーションにおけるデータレコードの部分集合が処理される。
【００９２】
図２は、リレーションに対する値ベースのウィンドウの管理のための特徴を記載するのに用いられる簡易化されたブロック図を示す。示されるように、図２は、入力リレーション１５４を管理するためのＣＱＬエンジンおよび／またはＣＱサービス２００の少なくとも１つの実施について記載する。ＣＱＬエンジンおよび／またはＣＱサービス２００は、入力ソース２０２からの情報を最初に受け取り得る。１つの例において、入力ソース２０２は、アプリケーションに関連するデータもしくはイベントのストリームを含む受信中の連続入力データを受信するデータソースコンピューター１１０を含み得る。１つの例において、ＣＱＬエンジンおよび／またはＣＱサービス２００は、入力ソース２０２からのデータの表現であり得る入力リレーション１５４を識別し得る。一部の例において、および上記のように、入力ソース２０２は、アプリケーションに関連するデータレコードの有界集合を含み得る。特定の実施形態において、入力リレーション１５４を含むクエリ（たとえば、連続クエリ）が識別もしくは受信されると、ＣＱＬエンジン２００はクエリをパースし、クエリにおけるコンフィギュラブルウィンドウ演算子１５６を識別するとともにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行し、出力リレーション１５８を生成する。一実施形態において、ＣＱＬエンジンおよび／またはＣＱサービス２００は、入力リレーションにおける属性に対してコンフィギュラブルウィンドウ演算子を適用することによってクエリを実行し、出力リレーションを生成し得る。一部の例において、出力リレーションは、アプリケーションに関連するデータ（たとえば、データレコードの部分集合）の表現であり得る。そして、ＣＱＬエンジンおよび／またはＣＱサービス２００は、たとえば図１に示されるデータベースなどの出力先２０４に出力リレーションを記憶し得る。
【００９３】
図３は、本開示の一実施形態に従う、入力リレーションに記憶される例示的な情報、ならびにコンフィギュラブルウィンドウ演算子を使用して入力リレーションが処理される場合の出力リレーションの生成を示す。例として、以下のように生成され得る入力リレーション「CallCentreRecords」について考慮する。
【００９４】
CREATE RELATION CallCentreRecords(callerName char(50), callTime, timestamp)
この定義により、入力リレーション「CallCentreRecords」は、第１の属性「callerName」および第２の属性「callTime」という２つの属性と、タイムスタンプとを含む。１つの例において、入力リレーション「CallCentreRecords」は、コールセンターからのコール詳細記録に関連する連続データストリームを記憶し得る。ここで使用される「コールセンター」は、典型的に、カスタマーサービスの代表者が電話を介してカスタマーにサービスを提供し得るサービスネットワークをいう。コールセンターからの連続データストリームは、典型的に、短い時間間隔で要約されるコールに関連するコールバイコール（call-by-call）情報を含み得る。このようなコールバイコール情報は、たとえば、データベースにコールが記録もしくは受信される場合のためのタイムスタンプ、呼出元名、コールが行なわれた時間などを含み得る。
【００９５】
図３に示される例を参照すると、一実施形態において、入力リレーション「CallCenterRecords」３０２は、データレコードが入力リレーション３０２に挿入される時の各タイムスタンプ、コールを行なった呼出元の名前を識別する「callerName」属性、およびコールが行なわれた日時を識別する「callTime」属性を識別するカラムを含む。
【００９６】
特定の実施形態において、以下のように「CallCenterRecords」入力リレーション３０２を含むＣＱＬクエリが識別もしくは受信され得る。
【００９７】
SELECT * FROM CallCentreRecords [RANGE 1 HOUR ON callTime]
上に示されるＣＱＬクエリにより、コンフィギュラブルウィンドウ演算子は、「ジェネリック値」ウィンドウ演算子３０３として識別される。そして、ＣＱｌクエリは、「CallCenterRecords」入力リレーション３０２における属性「callTime」に対して「RANGE 1 HOUR」ウィンドウ演算子を適用することによって「ジェネリック値」ウィンドウ演算子３０３に少なくとも部分的に基づいて実行され、出力リレーションが生成される。「RANGE 1 HOUR」ウィンドウ演算子３０３を適用した結果として生成される出力リレーション３０４も図３に示される。
【００９８】
一実施形態において、および図３に示されるように、出力リレーション３０４は、データレコードのタイムスタンプｔに対して特定の範囲「1 HOUR」に属性値「callTime」がある入力リレーション３０２からのデータレコードの部分集合を含む。図３に示される例において、一実施形態では、「CallCenterRecords」出力リレーション３０４は、各データレコードについて、入力リレーション３０２に対して「ジェネリック値」ウィンドウ演算子３０３を適用した結果として入力リレーション３０２からの特定のデータレコードが出力リレーション３０４に挿入されるか、もしくは出力リレーション３０４から取り除かれたかを示す「SIGN」属性を識別するカラムも含む。「CallCenterRecords」出力リレーション３０４が生成される方法は、以下に詳細に記載される。
【００９９】
「CallCenterRecords」入力リレーション３０２における第１のデータレコードについて考慮する。「CallCenterRecords」入力リレーション３０２における情報により、このレコードは、21/01/2012 9:00:00 AMのタイムスタンプを有し、呼出元「Robin」によって21/01/2012 8:30:00 AMにコールが行なわれたことを示す。「RANGE 1 HOUR」ウィンドウ演算子３０３が「callTime」属性に対して適用される場合、「CallCenterRecords」出力リレーション３０４に第１のデータレコードが挿入されるかどうかが判定される。この例において、「CallCenterRecords」入力リレーション３０２における第１のデータレコードは、「CallCenterRecords」出力リレーション３０４に挿入され、これはこのコールのコール時間（8:30:00AM）が21/01/2012 9:00:00 AMの現在タイムスタンプから１時間の範囲内に行なわれたためであり、ここで現在タイムスタンプからの１時間の範囲は、このデータレコードについては（8.00AMから9.00AM）であると定義される。一実施形態において、および図３Ｂに示されるように、「CallCenterRecords」出力リレーション３０４へのこのデータレコードの挿入は、データレコードに対応するSIGNカラムにおける＋エントリーによって示される。
【０１００】
同様に、呼出元「Michael」によって21/01/2012 8:45:00 AMにコールが行なわれたことを示す「CallCenterRecords」入力リレーション３０２における第２のデータレコードもまた、このコールのコール時間（8:45:00AM）が21/01/2012 9:00:00 AMの現在タイムスタンプから１時間の範囲内に行なわれたことから、「CallCenterRecords」出力リレーション３０４に挿入され、ここで現在のタイムスタンプからの１時間の範囲は、このデータレコードについては（8:00:00 AMから9:00:00AM）であると定義される。
【０１０１】
「CallCenterRecords」入力リレーション３０２における次のデータレコードは、現在タイムスタンプが21/01/2012 10:00:00 AMに移ったことを示す。さらに、10:00:00 AMの現在タイムスタンプにおける入力リレーション３０２に２つのデータレコードが挿入されることがさらに観察され得る。これらのレコードは、21/01/2012 9:06:00 AMにコールを行なった呼出元「Sandeep」と、21/01/2012 9:30:00 AMにコールを行なった呼出元「Anand」を含む。これらのレコードは、21/01/2012 10:00:00 AMの現在タイムスタンプの１時間の範囲内にあり、ここで現在タイムスタンプからの１時間の範囲が（9:00:00 AMから10:00:00 AM）であると定義されることから、これらもまた、これらのデータレコードの隣のSIGNカラムにおける＋演算子によって示されるように「CallCenterRecords」出力リレーション３０４に挿入される。しかしながら、呼出元「Robin」および「Michael」を含むデータレコードはここでは現在タイムスタンプから１時間の範囲（9:00:00 AMから10:00:00 AM）内にはないことが観察され得る。このため、これらのレコードは、10:00:00 AMの現在タイムスタンプにおける「CallCenterRecords」から取り除かれる。一実施形態において、および図３に示されるように、これらのデータレコードが「CallCenterRecords」出力リレーション３０４から削除されることは、データレコードに対応するSIGNカラムにおける−エントリーによって示される。
【０１０２】
ここで、現在タイムスタンプは21/01/2012 3:00:00 PMに移った。このタイムスタンプでの「CallCenterRecords」入力リレーション３０２におけるデータレコードは、21/01/2012 11:00 AMにコールを行なった呼出元「Unmesh」と、21/01/2012 1:15:00 PMにコールを行なった呼出元「Alex」とを含む。しかしながら、これらのコールのコール時間は21/01/2012 3:00:00 PMの現在タイムスタンプから１時間の範囲内に行なわれず、現在タイムスタンプから１時間の範囲は（2:00:00 PMから3:00:00 PM）であると定義されることから、これらのレコードは、出力リレーション３０４に挿入されない。しかしながら、21/01/2012 2:30:00 PMにコールを行なった呼出元「Sundar」は、このコールが21/01/2012 3:00:00 PMの現在タイムスタンプの１時間の範囲内に行なわれたことから、「CallCenterRecords」出力リレーション３０４に挿入される。同様に、呼出元「Sandeep」および「Anand」を含むデータレコードがここでは21/01/2012 3:00:00 PMの現在タイムスタンプから１時間の範囲内にないことが観察され得る。このため、これらのレコードは、データレコードに対応するSIGNカラムにおける−エントリーによって示されるように、「CallCenterRecords」出力リレーション３０４から取り除かれる。
【０１０３】
「CallCenterRecords」入力リレーション３０２および「CallCenterRecords」出力リレーション３０４に列挙される情報は単に例として提供されるものであって本開示の範囲を限定する意図がないことが理解される。当業者は、多くの変形、変更、および代替を認識し得る。
【０１０４】
図４は、本開示の他の実施形態に従う、入力リレーションに記憶される例示的な情報、ならびに入力リレーションがコンフィギュラブルウィンドウ演算子を使用して処理される場合の出力リレーションの生成を示す。図４は、本開示の一実施形態に従う、「CallCenterRecords」入力リレーション４０２に記憶される例示的な情報を示す。図４に示される例において、一実施形態では、入力リレーション「CallCenterRecords」４０２は、データレコードが入力リレーションに挿入される各タイムスタンプについて、コールを行なった呼出元の名前を識別する「callerName」属性およびコールが行なわれた日時を識別する「callTime」属性を識別するカラムを含む。
【０１０５】
特定の実施形態において、以下のように「CallCenterRecords」入力リレーション４０２を含むＣＱＬクエリが識別もしくは受信され得る。
【０１０６】
SELECT callerName, callTime FROM CallCentreRecords[CurrentHour ON callTime]
上に示されるＣＱＬクエリにより、コンフィギュラブルウィンドウ演算子は「現在時間」ウィンドウ演算子４０３として識別される。そして、ＣＱＬクエリは、「CallCenterRecords」入力リレーション４０２における属性「callTime」に対して「CurrentHour」ウィンドウ演算子４０３を適用することによって「現在時間」ウィンドウ演算子に少なくとも部分的に基づいて実行され、出力リレーションが生成される。「CurrentHour」ウィンドウ演算子４０３を適用した結果として生成される出力リレーション４０４は、図４に示される。
【０１０７】
一実施形態において、および図４に示されるように、出力リレーション４０４は、データレコードのタイムスタンプｔに対する現在時間に属性値「callTime」がある入力リレーション４０２からのデータレコードの部分集合を含む。図４に示される例において、一実施形態では、「CallCenterRecords」出力リレーション４０４は、各データレコードについて「CurrentHour」ウィンドウ演算子４０３を入力リレーション４０２に適用した結果として入力リレーション４０２からの特定のデータレコードが出力リレーション４０４に挿入されるか、または出力リレーション４０４から取り除かれたかどうかを示す「SIGN」属性を識別するカラムも含む。
【０１０８】
図５は、本開示の他の実施形態に従う、入力リレーションに記憶される例示的な情報、ならびにコンフィギュラブルウィンドウ演算子を使用して入力リレーションが処理される場合の出力リレーションの生成を示す。図５は、本開示の一実施形態に従う、「CallCenterRecords」入力リレーション４０２に記憶される例示的な情報を示す。図５に示される例において、一実施形態では、入力リレーション「CallCenterRecords」５０２は、データレコードが入力リレーションに挿入される時の各タイムスタンプについて、コールを行なった呼出元の名前を識別する「callerName」属性およびコールが行なわれた日時を識別する「callTime」属性を識別するカラムを含む。
【０１０９】
特定の実施形態において、以下のように「CallCenterRecords」入力リレーション５０２を含むＣＱＬクエリが識別もしくは受信され得る。
【０１１０】
SELECT callerName, callTime FROM CallCentreRecords[CurrentPeriod("0900","1500" ON callTime]
上に示されるＣＱＬクエリにより、コンフィギュラブルウィンドウ演算子は、「現在期間」ウィンドウ演算子５０３として識別される。そして、ＣＱＬクエリは、「CallCenterRecords」入力リレーション５０２における属性「callTime」に対して「CurrentPeriod」ウィンドウ演算子５０３を適用することによって「CurrentPeriod」ウィンドウ演算子５０３に少なくとも部分的に基づいて実行され、出力リレーションが生成される。「CurrentPeriod」ウィンドウ演算子５０３を適用した結果として生成される出力リレーション５０４も図５に示される。
【０１１１】
一実施形態において、および図５に示されるように、出力リレーション５０４は、データレコードのタイムスタンプｔに対する現在期間CurrentPeriod("0900","1500)に属性値「callTime」がある入力リレーションからのデータレコードの部分集合を含み得る。図５に示される例において、一実施形態では、「CallCenterRecords」出力リレーション５０４は、CurrentPeriod("0900","1500")ウィンドウ演算子５０３を入力リレーション５０２に適用した結果として入力リレーション５０２からの特定のデータレコードが出力リレーション５０４に挿入されるか、または出力リレーション５０４から取り除かれたかどうかを示す「SIGN」属性を各データレコードについて識別するカラムも含む。
【０１１２】
開示の技術により、連続クエリ（たとえば、ＣＱＬクエリ）を使用して、外部データソース（たとえば、リレーション）に記憶されるアプリケーションに関連する受信中のリアルタイム情報の処理が可能となる。この受信中のリアルタイム情報は、典型的に、インメモリーリアルタイムイベント処理エンジン（たとえば、ＣＱＬエンジン）を使用して処理される。しかしながら、リアルタイムで受信されるアプリケーションに関連する情報の量が増加すると、メモリーに記憶されるリレーションのサイズも増加する。連続クエリを使用して有限のメモリーにおいてこのような大きなサイズのリレーションを処理することは、有限のメモリーにおいて大きなサイズのリレーションに対して高いレートの入力ストリームを結合させることを伴い得ることから、スケーラブルではない。
【０１１３】
開示の技術により、連続クエリ（たとえば、ＣＱＬクエリ）におけるウィンドウ演算子を定義することによって、メモリーにおけるリレーションのデータレコードのセットの全体を処理するのではなく限られたメモリーにおいてリレーションのデータレコードの部分集合を照会することが可能となる。連続クエリ（たとえば、ＣＱＬクエリ）は、ウィンドウ演算子の継続的な期間にわたって入力リレーションに対して適用され、出力リレーションが生成される。出力リレーションに関連するデータレコードのセットは、ユーザーに対して提供される。ウィンドウ演算子は、ユーザーによってコンフィギュラブルであり、特定の時間の範囲にわたってリレーションにおけるデータレコードの部分集合を処理することを可能とする。このため、リレーションのデータレコードの部分集合は、メモリーにおけるリレーションのデータレコードのセットのすべてを処理するのではなく、限られたメモリーにおいて照会され得る。
【０１１４】
開示の技術は、連続的な非有界データストリームの形態であり得るリアルワールドアプリケーションに関連するデータに適用され得る。このようなデータストリームの例としては、金融アプリケーションにおける株式相場表示装置、ネットワーク監視およびトラフィック管理における性能測定、ウェブトラッキングおよびパーソナル化におけるログ記録もしくはクリックストリーム、ファイヤーウォールベースのセキュリティにおけるネットワークパケットおよびメッセージ、電話通信におけるコール詳細記録などが含まれ得る。
【０１１５】
図６および図７は、本願明細書において記載されるリレーションに対する値ベースのウィンドウの管理を実施するためのそれぞれの処理６００および７００を示す例示的なフロー図である。これらの処理６００および７００は、論理フロー図として示され、その各動作は、ハードウェア、コンピューター命令、またはそれらの組み合わせにおいて実施され得る動作のシーケンスを表わす。コンピューター命令の文脈において、動作は、１つ以上のプロセッサーによって実行される場合に記載の動作を行なう、１つ以上のコンピューター読取可能記憶媒体に記憶されるコンピューター実行可能命令を表わす。概して、コンピューター実行可能命令には、特定の機能を行なう、もしくは特定のデータタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。動作が記載される順序は、限定的に解釈されることを意図しておらず、任意の数の記載の動作が任意の順序で、および／または並列に組み合わされ得て、処理が実施され得る。
【０１１６】
加えて、一部の、任意の、もしくはすべての処理は、実行可能命令を用いて構成される１つ以上のコンピューターシステムの制御下において行なわれ得る、および１つ以上のプロセッサー上でまとめて実行されるコード（たとえば、実行可能命令、１つ以上のコンピュータープログラム、または１つ以上のアプリケーション）として実施され得る、またはハードウェアによって実施され得る、またはこれらの組み合わせによって実施され得る。上記のように、コードは、たとえば１つ以上のプロセッサーによって実行可能な複数の命令を含むコンピュータープログラムの形態でコンピューター読取可能記憶媒体上に記憶され得る。コンピューター読取可能記憶媒体は、非一時的であり得る。
【０１１７】
一部の例において、少なくとも図１（およびその他）に示される１つ以上のサービスプロバイダーコンピューター１０６（たとえば、少なくとも入力リレーションモジュール１４８、コンフィギュラブルウィンドウ演算子モジュール１５０、または出力リレーションモジュール１５２を利用する）は、図６の処理６００を行ない得る。処理６００は、入力リレーションの精製を含むことによってブロック６０２において開始され得る。ブロック６０４において、処理６００は、入力リレーションを処理するクエリ（たとえば、ＣＱＬクエリ）を識別することを含み得る。ブロック６０６において、処理６００は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別することを含み得る。さらに、一部の例において、処理６００は、コンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行して出力リレーションを生成することを含むことにより、ブロック６０８において終了し得る。
【０１１８】
図７は、本願明細書に記載されるリレーションに対する値ベースのウィンドウの管理を実施するための処理７００を示す例示的なフロー図である。少なくとも図１（およびその他）に示される１つ以上のサービスプロバイダーコンピューター１０６（たとえば、少なくとも入力リレーションモジュール１４８、コンフィギュラブルウィンドウ演算子モジュール５５０、または出力リレーションモジュール１５２を利用する）は、図７の処理７００を行ない得る。処理７００は、入力リレーションの生成を含むことによってブロック７０２において開始され得る。一実施形態において、入力リレーションは、アプリケーションに関連するデータレコードの有界集合である。ブロック７０４において、処理７００は、入力リレーションを識別する連続クエリ（たとえば、ＣＱＬクエリ）を受信することを含み得る。ブロック７０６において、処理７００は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別することを含み得る。さらに、一部の例において、処理７００は、ブロック７０８において、コンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいて連続クエリを実行して出力リレーションを生成することを含み得る。さらに、処理７００は、ブロック７１０において、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供することを含むことによって終了し得る。
【０１１９】
図８は、本開示の実施形態に従って使用され得るシステム環境８００の構成部分を示す簡易化されたブロック図である。示されるように、システム環境８００は、１つ以上のクライアントコンピューティングデバイス８０２，８０４，８０６，８０８を含み、これらは、１つ以上のネットワーク８１０（図１のネットワーク１０８と同様のネットワークなどであるが、これに限定されない）を通じて、ウェブブラウザー、専用クライアント（たとえば、Oracle Forms）などのクライアントアプリケーションを動作させるように構成される。様々な実施形態において、クライアントコンピューティングデバイス８０２，８０４，８０６，８０８は、ネットワーク８１０を通じてサーバー８１２と対話し得る。
【０１２０】
クライアントコンピューティングデバイス８０２，８０４，８０６，８０８は、汎用パーソナルコンピューター（たとえば、Microsoft Windows（登録商標）および／またはApple Macintosh（登録商標）オペレーティングシステムの様々なバージョンを実行するパーソナルコンピューターおよび／またはラップトップコンピューターが含まれる）、携帯電話もしくはＰＤＡ（Microsoft Windows Mobile（登録商標）などのソフトウェアを実行するとともに、インターネット、電子メール、ＳＭＳ、ブラックベリー、もしくは他の通信プロトコルに対応する）、および／または様々な商業的に利用可能なＵＮＩＸ（登録商標）もしくはＵＮＩＸのようなオペレーティングシステム（様々なＧＮＵ／Ｌｉｎｕｘ（登録商標）オペレーティングシステムを含み、限定されない）のいずれかを実行するワークステーションコンピューターであり得る。代替的に、クライアントコンピューティングデバイス８０２，８０４，８０６，８０８は、ネットワーク（たとえば、以下に記載のネットワーク８１０）を通じて通信可能な、シンクライアントコンピューター、インターネット対応ゲーミングシステム、および／またはパーソナルメッセージングデバイスなどの任意の他の電子デバイスであり得る。４つのクライアントコンピューティングデバイスを用いて例示的なシステム環境８００が示されているが、任意の数のクライアントコンピューティングデバイスが支持され得る。センサーを有するデバイスなどの他のデバイスが、サーバー８１２と対話し得る。
【０１２１】
システム環境８００は、ネットワーク８１０を含み得る。ネットワーク８１０は、ＴＣＰ／ＩＰ、ＳＮＡ、ＩＰＸ、ＡｐｐｌｅＴａｌｋなどを含みこれらに限定されない様々な商業的に利用可能なプロトコルのいずれかを使用してデータ通信をサポートすることができる、当業者によく知られた任意のタイプのネットワークであり得る。単に例示であるが、ネットワーク１５１０は、イーサネット（登録商標）ネットワークおよび／またはトークンリングネットワークなどのローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク、仮想プライベートネットワーク（ＶＰＮ）を含むがこれに限定されない仮想ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、ＩＥＥＥ８０２．１１プロトコルスイート、当該技術において知られるＢｌｕｅｔｏｏｔｈ（登録商標）プロトコル、および／または任意の他の無線プロトコルにおいて運用されるネットワーク）、ならびに／またはこれらおよび／もしくは他のネットワークの組み合わせであり得る。
【０１２２】
また、システム環境８００は、汎用コンピューター、専用サーバーコンピューター（たとえば、ＰＣサーバー、ＵＮＩＸサーバー、ミッドレンジサーバー、メインフレームコンピューター、ラックマウントサーバーなどを含む）、サーバーファーム、サーバークラスター、または任意の他の適切な構成および／または組み合わせであり得る１つ以上のサーバーコンピューター８１２を含む。様々な実施形態において、サーバー８１２は、上記の開示において記載される１つ以上のサービスもしくはソフトウェアアプリケーションを実行するように適合され得る。たとえば、サーバー８１２は、本開示の実施形態に係る、上記の処理を行なうためのサーバーに対応し得る。
【０１２３】
サーバー８１２は、上記のいずれかを含むオペレーティングシステム、ならびに商業的に利用可能なサーバーオペレーティングシステムのいずれかを実行し得る。また、サーバー８１２は、ＨＴＴＰサーバー、ＦＴＰサーバー、ＣＧＩサーバー、Ｊａｖａ（登録商標）サーバー、データベースサーバーなどを含む、様々な付加的なサーバーアプリケーションおよび／またはミッドティアアプリケーションのいずれかを実行し得る。例示的なデータベースサーバーは、Oracle、Microsoft、Sybase、IBMなどから商業的に入手可能なものも含むが、これらに限定されない。
【０１２４】
また、システム環境８００は、１つ以上のデータベース８１４，８１６を含み得る。データベース８１４，８１６は、様々な場所に置かれ得る。たとえば、データベース８１４，８１６のうちの１つ以上は、サーバー８１２に対してローカルの（および／またはそこに置かれる）非一時的記憶媒体上に置かれ得る。代替的に、データベース８１４，８１６は、サーバー８１２から遠隔に設けられ得て、ネットワークベースもしくは専属接続を介してサーバー８１２と通信し得る。実施形態の１つのセットにおいて、データベース８１４，８１６は、当業者によく知られるストレージエリアネットワーク（ＳＡＮ）内に置かれ得る。同様に、サーバー８１２に帰する機能を行なうために必要な任意のファイルは、適宜、サーバー８１２にローカルに記憶され得る、および／または遠隔的に記憶され得る。実施形態の１つの集合において、データベース８１４，８１６は、ＳＱＬフォーマットの命令に応答してデータを記憶、更新、および検索するように適合される、Oracleによって提供されるデータベースなどのリレーショナルデータベースを含み得る。
【０１２５】
図９は、本開示の実施形態に従って使用され得るコンピューターシステム９００を示す簡易化されたブロック図である。たとえば、サービスプロバイダーコンピューター１０６は、システム９００などのシステムを使用して実施され得る。コンピューターシステム９００は、バス９０１を介して電気的および／または通信可能に結合され得るハードウェア要素を含んで示される。ハードウェア要素は、１つ以上の中央処理ユニット（ＣＰＵ）９０２、１つ以上の入力デバイス９０４（たとえば、マウス、キーボードなど）、および１つ以上の出力デバイス９０６（たとえば、ディスプレイデバイス、プリンターなど）を含み得る。コンピューターシステム９００は、１つ以上の記憶デバイス９０８も含み得る。たとえば、記憶デバイス９０８は、ディスクドライブ、光学記憶デバイス、ならびにプログラム可能および／またはフラッシュ更新可能であるランダムアクセスメモリー（ＲＡＭ）および／もしくは読み取り専用メモリー（ＲＯＭ）などのソリッドステート記憶デバイスなどのデバイスを含み得る。
【０１２６】
コンピューターシステム９００は、コンピューター読取可能記憶媒体リーダー９１２、通信サブシステム９１４（たとえば、モデム、ネットワークカード（無線もしくは有線）、赤外線通信デバイスなど）、ならびに上記のようなＲＡＭおよびＲＯＭデバイスを含み得るワーキングメモリー９１８を付加的に含み得る。一部の実施形態において、コンピューターシステム９００は、デジタル信号プロセッサー（ＤＳＰ）、専用プロセッサーなどを含み得る、処理加速ユニット９１６も含み得る。
【０１２７】
コンピューター読取可能記憶媒体リーダー９１２は、コンピューター読取可能記憶媒体９１０にさらに接続され得て、これらは合わせて（および、選択的には、記憶デバイス９０８と組み合わせて）包括的に、遠隔、ローカル、固定、および／またはリムーバブル記憶デバイスと、コンピューター読取可能情報を一時的および／またはより永続的に記憶するための記憶媒体とを加えたものを表わす。通信システム９１４は、ネットワーク９５２、および／またはシステム環境９００に関して上で記載される任意の他のコンピューターとデータが交換されることを許容し得る。
【０１２８】
コンピューターシステム９００は、ワーキングメモリー９１８内に位置しているものとして示され、オペレーティングシステム９２０および／またはアプリケーションプログラム（クライアントアプリケーション、ウェブブラウザー、ミッドティアアプリケーション、ＲＤＢＭＳなどであり得る）および／または他のコードソフトウェア要素も含み得る。例示的な実施形態において、ワーキングメモリー９１８は、上記のような信頼当事者およびオープン許可に関連する処理のための実行可能コードおよび関連付けられるデータ構造を含み得る。なお、コンピューターシステム９００の代替的な実施形態は、上記のものからの様々な変更を有し得ることを理解すべきである。たとえば、カスタマイズされるハードウェアも使用され得る、および／または特定の要素がハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、またはその両方で実施され得る。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続も採用され得る。
【０１２９】
図１０は、本発明の他の実施形態に従う、本願明細書に記載されるリレーションに対する値ベースのウィンドウの管理を実施するための処理１０００を示す例示的なフロー図を示す。少なくとも図１（およびその他）に示される１つ以上のサービスプロバイダーコンピューター１０６（たとえば、少なくとも入力リレーションモジュール１４８、コンフィギュラブルウィンドウ演算子モジュール１５０、または出力リレーションモジュール１５２を利用する）は、図１０の処理１０００を行ない得る。処理１０００は、入力リレーションを処理するように構成されるクエリ（たとえば、連続クエリ）を識別することを含むことによってブロック１００２において開始され得る。ブロック１００４において、処理１０００は、コンフィギュラブルウィンドウ演算子に基づいてクエリを開始して出力リレーションを生成することを含み得る。ブロック１００６において、処理１０００は、入力イベントを生成するとともにそれをＣＱＬエンジンおよび／またはＣＱサービス２００に送信することを含み得る。一部の例において、入力イベントは、新しいイベントがＣＱＬエンジンおよび／またはＣＱサービス２００において受信される時に生成され得る。たとえば、入力イベントは、上記の「CallCentreRecords」入力リレーション３０２における呼出元によって行なわれる新しいコールを含み得る。ブロック１００８において、処理１０００は、入力イベントおよび較正可能ウィンドウ演算子を受信し、出力イベントを作ることを含み得る。出力イベントは、たとえば、「CallCenterRecords」入力リレーション３０２における「コール時間」属性に対してコンフィギュラブルウィンドウ演算子が適用される時に「CallCenterRecords」出力リレーション３０４に挿入されるデータレコードを含み得る。
【０１３０】
図１１は、本発明の特定の実施形態に従って使用され得るサービスプロバイダーデバイス１１０１を示す簡易化されたブロック図である。サービスプロバイダーデバイス１１０１のブロックは、本発明の原則を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実施され得る。当業者は、図１１に記載されるブロックが組み合わされ得る、またはサブブロックに分離され得て、上記の本発明の原則が実施されることを理解する。このため、本願明細書における記載は、可能性のある組み合わせもしくは分離、または本願明細書に記載される機能ブロックのさらなる定義を支持し得る。
【０１３１】
図１１に示されるように、サービスプロバイダーデバイス１１０１は、入力リレーションユニット１１０２と、コンフィギュラブルウィンドウ演算子ユニット１１０３と、出力リレーションユニット１１０５と、提供ユニット１１０７とを含み得る。入力リレーションユニット１１０２は、入力リレーションを識別する連続クエリを受信するように構成され得て、ここで入力リレーションは、アプリケーションに関連するデータレコードの有界集合である。コンフィギュラブルウィンドウ演算子ユニット１１０３は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別するように構成され得る。出力リレーションユニット１１０５は、コンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいて連続クエリを実行して出力リレーションを生成するように構成され得る。提供ユニット１１０７は、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供するように構成され得る。一実施形態において、各ユニットは、コンピュータープログラム命令を読み取ることによって対応する処理を行なうプロセッサーとして実施され得る。
【０１３２】
一実施形態において、入力リレーションは、アプリケーションに関連する受信中の連続入力データストリームに少なくとも部分的に基づいて生成される外部データソースであり得る。
【０１３３】
一実施形態において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【０１３４】
一実施形態において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【０１３５】
一実施形態において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、ここで出力リレーションユニット１１０５は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用するようにさらに構成され得る。
【０１３６】
一実施形態において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在時間値ウィンドウ演算子であり得て、ここで出力リレーションユニット１１０５は、出力リレーションを生成するために入力リレーションにおける属性に対して現在時間値ウィンドウ演算子を適用するようにさらに構成され得る。
【０１３７】
一実施形態において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義される現在期間値ウィンドウ演算子であり得て、ここで出力リレーションユニット１１０５は、出力リレーションを生成するために入力リレーションにおける属性に対して現在期間値ウィンドウ演算子を適用するようにさらに構成され得る。
【０１３８】
一実施形態において、提供ユニット１１０７は、出力リレーションを表示するようにさらに構成され得て、ここで出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【０１３９】
図１２は、本発明の特定の実施形態に従って使用され得るサービスプロバイダーデバイス１２０１を示す簡易化されたブロック図である。サービスプロバイダーデバイス１２０１のブロックは、本発明の原則を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実施され得る。当業者は、上記の本発明の原則を実行するために図１２のブロックが結合され得る、またはサブブロックに分離され得ることを理解する。このため、本願明細書における記載は、可能性のある組み合わせもしくは分離、または本願明細書に記載の機能ブロックのさらなる定義を支持し得る。
【０１４０】
図１２に示されるように、サービスプロバイダーサービス１２０１は、入力リレーションユニット１２０２、コンフィギュラブルウィンドウ演算子ユニット１２０３、および出力リレーションユニット１２０５を含み得る。入力リレーションユニット１２０２は、入力リレーションを処理するように構成されるクエリを受信および識別するように構成され得る。コンフィギュラブルウィンドウ演算子ユニット１２０３は、入力リレーションの処理に関連付けられるコンフィギュラブルウィンドウ演算子を識別するように構成され得る。出力リレーションユニット１２０５は、出力リレーションを生成するためにコンフィギュラブルウィンドウ演算子に少なくとも部分的に基づいてクエリを実行するように構成され得る。一実施形態において、各ユニットは、コンピュータープログラム命令を読み取ることによって対応する処理を行なうプロセッサーとして実施され得る。
【０１４１】
一実施形態において、入力リレーションは、アプリケーションに関連する受信中の連続入力データストリームに少なくとも部分的に基づいて背市営される外部データソースであり得る。
【０１４２】
一実施形態において、入力リレーションは、過去データのデータベースに記憶されるアプリケーションに関連する情報に少なくとも部分的に基づいて生成される外部データソースであり得る。
【０１４３】
一実施形態において、入力リレーションは、アプリケーションに関連する１つ以上のアーカイブされたリレーションに少なくとも部分的に基づいて生成される外部データソースであり得る。
【０１４４】
一実施形態において、コンフィギュラブルウィンドウ演算子は、入力リレーションに対して定義されるジェネリック値ウィンドウ演算子であり得て、出力リレーションユニット１２０５は、出力リレーションを生成するために入力リレーションにおける属性に対してジェネリック値ウィンドウ演算子を適用するようにさらに構成され得る。
【０１４５】
一実施形態において、サービスプロバイダーデバイス１２０１は、連続クエリの実行に少なくとも部分的に基づいて出力リレーションのデータレコードを提供するように構成される提供ユニット１２０７をさらに含み得る。
【０１４６】
一実施形態において、提供ユニット１２０７は、出力リレーションを表示するようにさらに構成され得て、ここで出力リレーションは、コンフィギュラブルウィンドウ演算子によって定義される特定の範囲内に属性値がある入力リレーションからのデータレコードの部分集合を含む。
【０１４７】
コードもしくはコードの一部を記憶する記憶媒体およびコンピューター読み取り可能媒体は、当該技術において知られる、もしくは使用される任意の適切な媒体を含み、この媒体には、コンピューター読み取り可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の記憶および／または伝達のための任意の方法および技術において実施される揮発性および不揮発性（非一時的）のリムーバブルおよび非リムーバブル媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されず、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリー、もしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、もしくは他の光学記憶部、磁気カセット、磁気テープ、磁気ディスク記憶部、もしくは他の磁気記憶デバイス、データ信号、データ伝達、もしくは所望の情報を記憶もしくは伝達することができるとともにコンピューターによってアクセスすることができる任意の他の媒体が含まれ得る。
【０１４８】
本開示の具体的な実施形態が記載されるが、様々な変形、変更、代替的構造、および均等物もまた本開示の範囲内に含まれる。本開示の実施形態は、特定の具体的なデータ処理環境内における動作に限定されず、複数のデータ処理環境内において自由に動作する。加えて、特定の連続したトランザクションおよびステップを使用して本開示の実施形態が記載されるが、本開示の範囲が記載される連続したトランザクションおよびステップに限定されないことは当業者にとって明らかである。
【０１４９】
さらに、本開示の実施形態は、ハードウェアおよびソフトウェアの特定の組み合わせを使用して記載されるが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内にあることを認識すべきである。本開示の実施形態は、ハードウェアのみ、ソフトウェアのみ、またはこれらの組み合わせで実施され得る。
【０１５０】
このため、明細書および図面は、限定的ではなく例示的であるものとして考慮される。しかしながら、より広い主旨および範囲から逸脱することなく追加、削減、削除、および他の変更および変化が行なわれ得ることは明らかである。本開示の特徴を提供するための例示的な方法およびシステムは、上に記載されている。これらのシステムおよび方法の一部もしくはすべては、上記の図１から図１２に示されるものなどのアーキテクチャによって少なくとも部分的に実施され得るが、必要ではない。
【０１５１】
構造的特徴および／または方法論的な動作に対して具体的な言語で実施形態が記載されるが、開示は必ずしも記載される具体的な特徴もしくは動作に限定されないことが理解される。むしろ、具体的な特徴および動作は実施形態を実施する例示的な形態として開示されている。とりわけ、「can」、「could」、「might」、または「may」などの条件的な言語は、具体的に述べられない限り、または使用される文脈において理解されない限り、特定の実施形態が特定の特徴、要素、および／またはステップを含み、他の実施形態が含み得ないものとして伝えることを概して意図している。したがって、このような条件的な言語は、１つ以上の実施形態に対して特徴、要素、および／またはステップが必要であること、またはユーザー入力もしくは命令の有無に関わらずこれらの特徴、要素、および／またはステップが含まれるかもしくは任意の特定の実施形態において行なわれるかを決定するためのロジックを１つ以上の実施形態が必ず含む必要があることを暗に示すことを概して意図していない。
【図１】
0006511438.tif 000002
【図２】
0006511438.tif 000003
【図３】
0006511438.tif 000004
【図４】
0006511438.tif 000005
【図５】
0006511438.tif 000006
【図６】
0006511438.tif 000007
【図７】
0006511438.tif 000008
【図８】
0006511438.tif 000009
【図９】
0006511438.tif 000010
【図１０】
0006511438.tif 000011
【図１１】
0006511438.tif 000012
【図１２】
0006511438.tif 000013