(57)【特許請求の範囲】
【請求項１】
コンピュータが、記憶メモリに格納されたプログラムを実行することにより、ストリーミングデータを処理する方法であって、
前記コンピュータが、データのストリームを初期化するステップと、
前記コンピュータが、前記データのストリームに適用するために時間間隔を設定するステップとを備え、前記時間間隔は、前記データのストリーム内のデータを分析するためのウィンドウを含み、前記方法はさらに、
前記コンピュータが、前記データのストリーム内の１つ以上の列を特定するステップと、
前記コンピュータが、前記時間間隔にわたって前記データ内の差異がモニタリングされるように前記列のうちの１つ以上の列を指定するステップと、
前記コンピュータが、指定された前記列を前記時間間隔にわたってモニタリングするステップと、
前記コンピュータが、指定された前記列のうちの少なくとも１つからの少なくとも１つの値が変化したことを判断するステップと、
前記コンピュータが、少なくとも１つの値の変化に応答して、変化した前記値を指定された前記列から出力するステップとを備える、方法。
【請求項２】
前記コンピュータが、次の時間間隔のために前記データのストリームからデータを受け続けるステップをさらに備える、請求項１に記載のストリーミングデータを処理する方法。
【請求項３】
前記コンピュータが、前記データのストリームからデータを受けるステップは、実質的にリアルタイムである、請求項２に記載のストリーミングデータを処理する方法。
【請求項４】
前記コンピュータによる、前記ストリーミングデータの処理は、複合イベント処理（ＣＥＰ）を含む、請求項１に記載のストリーミングデータを処理する方法。
【請求項５】
ストリーミングデータを処理するための非一時的なコンピュータ読取可能媒体であって、一組の命令を格納しており、前記一組の命令は、コンピュータによって実行されると、
ｉｓｔｒｅａｍ演算子を適用することによってリレーショナルデータをストリーミングデータへと前記コンピュータに変換させ、
境界制約に適した前記ストリーミングデータ内で１つ以上のセグメントを前記コンピュータに判断させ、前記境界制約はセグメント境界を指定し、前記一組の命令はさらに、
データストリームから列を前記コンピュータに特定させ、
判断された前記セグメントにわたって、特定された前記列を前記コンピュータに選択させ、
判断された前記セグメントにわたって列内のデータの変化をモニタリングするために列を前記コンピュータに選択させ、
モニタリングされた前記列に適した、判断された前記セグメントにわたる、選択された前記列のマルチセットｉｓｔｒｅａｍ操作を前記コンピュータに実行させ、
結果として生じたデータを前記マルチセットｉｓｔｒｅａｍ操作から前記コンピュータに出力させる、非一時的なコンピュータ読取可能媒体。
【請求項６】
前記セグメント境界は時間間隔を含む、請求項５に記載のストリーミングデータを処理するための非一時的なコンピュータ読取可能媒体。
【請求項７】
前記時間間隔は、指定された列データ内の変化を分析するための時間ウィンドウを含む、請求項６に記載のストリーミングデータを処理するための非一時的なコンピュータ読取可能媒体。
【請求項８】
ストリーミングデータを処理するためのシステムであって、
一組の命令を格納した記憶メモリと、
前記記憶メモリに結合されたプロセッサとを備え、前記一組の命令は、前記プロセッサによって実行されると、
データのストリームを前記プロセッサに初期化させ、
前記データのストリームに適用するために時間間隔を前記プロセッサに設定させ、前記時間間隔は、前記データのストリーム内のデータを分析するためのウィンドウを含み、前記一組の命令はさらに、
前記データのストリーム内の１つ以上の列を前記プロセッサに特定させ、
前記時間間隔にわたって前記データ内の差異がモニタリングされるように前記列のうちの１つ以上の列を前記プロセッサに指定させ、
指定された前記列を前記時間間隔にわたって前記プロセッサにモニタリングさせ、
指定された前記列のうちの少なくとも１つからの少なくとも１つの値が変化したことを前記プロセッサに判断させ、
少なくとも１つの値の変化に応答して、変化した前記値を指定された前記列から前記プロセッサに出力させる、システム。
【請求項９】
前記１つ以上の列は、前記時間間隔にわたって前記データのストリームから構築された１つ以上の表に含まれる、請求項８に記載のストリーミングデータを処理するためのシステム。
【請求項１０】
前記ストリーミングデータの処理は、複合イベント処理（ＣＥＰ）を含む、請求項８に記載のストリーミングデータを処理するためのシステム。
【請求項１１】
請求項１から４のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願との相互参照
この特許協力条約出願は、「複合イベント処理（complex event processing：ＣＥＰ）における新たな挿入ストリーム（ＩＳＴＲＥＡＭ）操作のためのサポート（SUPPORT FOR A NEW INSERT STREAM (ISTREAM) OPERATION IN COMPLEX EVENT PROCESSING）」と題される２０１１年５月６日に出願された米国非仮特許出願番号第１３／１０２，６６５号の優先権を主張し、米国非仮特許出願番号第１３／１０２，６６５号の全開示内容は全ての目的で引用によって本明細書に援用される。
【背景技術】
【０００２】
発明の背景
一般に、複合イベント処理（ＣＥＰ）は、分散したメッセージベースのシステム、データベースおよびアプリケーションからの情報をリアルタイムで集約し、規則を動的に適用して、そうでなければ気付かれない可能性があるパターンおよび傾向を見分けるアプローチである。これにより、一見無関係のイベントによって表わされる例外および機会を、非常に複雑で分散した不均一な環境の全域で特定し、予想しさえすることができる能力が企業にもたらされ得る。また、ＣＥＰは、リアルタイムに近い状態で高速ストリーミングデータ内のパターンを互いに関係付け、集約し、強化して、検出するためにも用いられる。さらに、ＣＥＰは、ストリームの概念を介して無制限のデータのストリーミングをサポートする。ストリームはデータ項目の無制限の集まりであるのに対して、選択はデータ項目の有限の集まりであり、これは従来のデータベースシステムの場合とよく似ている。現在のところ、ストリームからリレーションにおよびリレーションからストリームに変換するさまざまな演算子が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
さらに、ＩＳＴＲＥＡＭ（または挿入ストリーム）は、リレーションをストリームに変換する演算子のうちの１つである。ＩＳＴＲＥＡＭは、リレーションの全ての列を考慮に入れて、時間Ｒ（ｔ）およびＲ（ｔ−１）の関数としてリレーションのマルチセット差異を計算する。このように、全ての列が考慮に入れられるので、出力データは不必要な情報または望ましくない情報を含む恐れがある。したがって、当該技術分野におけるこれらのおよび他の欠点を本発明が改善する。
【課題を解決するための手段】
【０００４】
発明の概要
本発明の一実施例は、ストリーミングデータを処理する方法を含む。当該方法は、データのストリームを初期化するステップと、当該データのストリームに適用するために時間間隔を設定するステップとを含む。当該時間間隔は、当該データのストリーム内のデータを分析するためのウィンドウを含む。当該方法はさらに、当該データのストリーム内の１つ以上の列を特定するステップと、当該時間間隔にわたって当該データ内の差異がモニタリングされるように当該列のうちの１つ以上の列を指定するステップと、指定された当該列を当該時間間隔にわたってモニタリングするステップとを含む。さらに、当該方法は、指定された当該列のうちの少なくとも１つからの少なくとも１つの値が変化したことを判断するステップと、少なくとも１つの値の変化に応答して、変化した当該値を指定された当該列から出力するステップとを含む。
【０００５】
さらに別の実施例においては、ストリーミングデータを処理するためのシステムについて説明する。当該システムは、一組の命令を格納した記憶メモリと、当該記憶メモリに結合されたプロセッサとを含む。当該一組の命令は、当該プロセッサによって実行されると、データのストリームを当該プロセッサに初期化させ、当該データのストリームに適用するために時間間隔を当該プロセッサに設定させる。当該時間間隔は、当該データのストリーム内のデータを分析するためのウィンドウを含む。当該命令はさらに、当該データのストリーム内の１つ以上の列を当該プロセッサに特定させ、当該時間間隔にわたって当該データ内の差異がモニタリングされるように当該列のうちの１つ以上の列を当該プロセッサに指定させ、指定された当該列を当該時間間隔にわたって当該プロセッサにモニタリングさせ、指定された当該列のうちの少なくとも１つからの少なくとも１つの値が変化したことを当該プロセッサに判断させ、少なくとも１つの値の変化に応答して、変化した当該値を指定された当該列から当該プロセッサに出力させる。
【０００６】
本発明のさらに他の実施例は、ストリーミングデータを処理するためのコンピュータ読取可能媒体を含む。当該コンピュータ読取可能媒体は、データのストリームを初期化するための命令と、当該データのストリームに適用するために時間間隔を設定するための命令とを含む。当該時間間隔は、当該データのストリーム内のデータを分析するためのウィンドウを含む。当該コンピュータ読取可能媒体はさらに、当該データのストリーム内の１つ以上の列を特定するための命令と、当該時間間隔にわたって当該データ内の差異がモニタリングされるように当該列のうちの１つ以上の列を指定するための命令と、指定された当該列を当該時間間隔にわたってモニタリングするための命令とを含む。さらに、当該コンピュータ読取可能媒体は、指定された当該列のうちの少なくとも１つからの少なくとも１つの値が変化したことを判断するための命令と、少なくとも１つの値の変化に応答して、変化した当該値を指定された当該列から出力するための命令とを含む。
【０００７】
添付の図面に関連して本発明について説明する。
添付の図面では、類似の構成要素および／または特徴は同一の参照数字表示を有し得る。さらに、同一のタイプのさまざまな構成要素は、類似の構成要素および／または特徴を区別する文字を参照表示の後に付けることによって区別可能である。明細書の中で第１の参照数字表示のみが用いられる場合、接尾文字に関わらず、同一の第１の参照数字表示を有する類似の構成要素および／または特徴のうちのいずれにも説明を適用することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例に係るストリーミングデータの処理を示すフロー図である。
【図２】本発明のさらに他の実施例に係るストリーミングデータの処理を示すフロー図である。
【図３】本発明の実施例に係るストリーミングデータを処理するためのシステムを示すブロック図である。
【図４】本発明の実施例に係るストリーミングデータの処理に関連する表を示す図である。
【図５】本発明の装置またはシステムの少なくともある部分において用いられ、本発明の方法の少なくともある部分を実現することができる例示的なコンピュータシステムのブロック図である。
【図６】本発明の実施例を実現するための例示的なネットワークシステムを示すブロック図である。
【発明を実施するための形態】
【０００９】
発明の詳細な説明
次に、例示的な実施例についてのみ説明する。以下の説明は、本開示内容の範囲、利用可能性または構成を限定することを意図したものではない。むしろ、例示的な実施例の以下の説明は、１つ以上の例示的な実施例を実現するための実施可能な程度の説明を当業者にもたらし、添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく要素の機能および配置の点でさまざまな変更を行なうことができる、ということが理解される。
【００１０】
実施例を完全に理解できるようにするために、以下の説明では具体的な詳細が示されている。しかし、これらの具体的な詳細がなくても実施例を実施できるということを当業者は理解するであろう。例えば、本発明における回路、システム、ネットワーク、プロセスおよび他の要素は、不必要に詳細に実施例を曖昧にすることのないように、ブロック図の形態で構成要素として示されてもよい。他の場合には、実施例を曖昧にすることを回避するために、周知の回路、プロセス、アルゴリズム、構造および技術は不必要な詳細を伴わずに示されてもよい。
【００１１】
なお、また、個々の実施例は、フローチャート、フロー図、データフロー図、構造図またはブロック図として描かれるプロセスとして記載されてもよい。フローチャートは動作を順次的なプロセスとして記載し得るが、動作のうちの多くは並列にまたは同時に実行可能である。また、動作の順序は配列し直されてもよい。プロセスは、その動作が完了した時に終了されてもよいが、図に記載されていないまたは含まれていないさらに他のステップを有している可能性がある。さらに、特定的に記載された任意のプロセスにおける全ての動作が全ての実施例において行なわれるわけではない。プロセスは、方法、関数、手続き、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は呼び出し関数または主要な関数への関数の戻りに対応する。
【００１２】
「機械読取可能媒体」という用語は、携帯型または固定式記憶装置、光学記憶装置、無線チャネル、ならびに、命令および／またはデータを保管、含有または搬送することができるさまざまな他の媒体を含むが、それらに限定されない。コードセグメントまたは機械実行可能命令は、手続き、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラム命令文の任意の組合せを表わし得る。情報、データ、引数、パラメータまたは記憶内容を受け渡すおよび／または受けることによって、コードセグメントは別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリの共有、メッセージの受け渡し、トークンの受け渡し、ネットワーク送信などを含む任意の好適な手段によって受け渡されてもよく、送られてもよく、または送信されてもよい。
【００１３】
さらに、本発明の実施例は、少なくとも一部が、手作業でまたは自動的に実現されてもよい。手作業のまたは自動的な実現は、機械、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語またはそれらの任意の組合せを用いることにより実行されてもよく、または少なくとも支援されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、機械読取可能媒体に格納されていてもよい。プロセッサが必要なタスクを実行してもよい。
【００１４】
本発明の局面は、頻繁にタプルのいくつかの列の値（または派生値）が２つの連続的な時間のインスタンス（すなわち、ｔおよびｔ＋１）の間で変化するのに対して、他の列の値が変化しない、という概念に関する。アプリケーションが列のサブセットのみに対する変化に関心を示す状況が存在し得るが、現在のところＩＳＴＲＥＡＭは全ての列を考慮し、たとえ対象の列の値（または派生値）が変化しなくてもタプルを報告する。したがって、アプリケーションが関心を示さないデータの変化が出力される可能性がある。
【００１５】
この目的のために、本発明の局面は、列のサブセットを考慮するだけでなくＮＯＴ  ＩＮセマンティクスなどの新たなセマンティクスも含むＩＳＴＲＥＡＭを提供する。クエリはかなり複雑であり得る。ＩＳＴＲＥＡＭが実際にはクエリの実行から具体化されたリレーションを扱うので、本発明の局面は、上記の論理をＳＥＬＥＣＴリスト表現に適用し、それをそのサブセットに適用することもできる。
【００１６】
ＮＯＴ  ＩＮセマンティクスを有する列のサブセット上のＩＳＴＲＥＡＭ演算子を適用することにより、便利な構文表記がもたらされ、出力が簡潔な態様で表現される。
【００１７】
ここで、以下のクエリを検討する。
【００１８】
【数１】
0005955381.tif 000002
【００１９】
これは、実際には、非決定性の出力につながる可能性がある（すなわち、どのタプル（したがってｃ３についての列の値）が選択されて、どのタプルが除外されるか）。別の代替例は、ＵＳＩＮＧ節に規定された列に基づいて列または表現のみを可能にするというものである。
【００２０】
【数２】
0005955381.tif 000003
【００２１】
または
【００２２】
【数３】
0005955381.tif 000004
【００２３】
しかし、これらの表現は使用するには限定的でありすぎる。したがって、本発明の局面は、ＮＯＴ  ＩＮ（これは、ＭＩＮＵＳが厳密にはセットを扱うのに対して本発明はマルチセット／バッグを考慮することを除いて、ＭＩＮＵＳセマンティクスと同じである）を利用してもよく、これにより上記のいかなる制約もなしに所望の挙動が正確にもたらされる。したがって、所与のセマンティクスでは、以下のクエリおよび所与の入力ストリームについて出力は以下の通りであり得る。
【００２４】
【数４】
0005955381.tif 000005
【００２５】
一実施例においては、ｕｓｉｎｇ節における表現は、ｓｅｌｅｃｔ表現の位置を指す数字位置（１..Ｎ）を使用することによって、または、ｓｅｌｅｃｔリスト内のエイリアスを指すｃ１、ｃ２のような属性を使用することによって規定することができる。ｓｅｌｅｃｔリストが複雑な表現を含む場合には、それは適切にエイリアス化されてもよい。なぜなら、ＵＳＩＮＧ節では表現を規定できないためである。
【００２６】
本発明のさらに他の局面は、以下のアルゴリズムを含む。例えば、ストリーム要素のタイムスタンプをＴ（すなわち、Ｔは順序付けられた離散時間領域である）に属するようにする。以下は、抽象的な用語で１つの実現例およびアルゴリズムを記載したものである。
【００２７】
【数５】
0005955381.tif 000006
【００２８】
本発明の考えられる利点は、セマンティクスの状態ではないマルチセットを含む複雑な論理をユーザが宣言的かつ簡潔に規定できることであり得る。このような機能は、例えば、ユーザが多くのコードを書くおよび／またはＲＳＴＲＥＡＭなどの高価な操作を用いる必要なく、サーバ内の宣言型フレームワークに完全かつスムーズに組込まれてもよい。また、本発明はメモリが最適化されてもよい。大半のユーザは多数の欄を備えるイベントを有するが、それらのサブセットのみが対象である。このような状況では、セマンティクス（以前の挙動）以外のＩＳＴＲＥＡＭマルチセットは、高価であるだけでなく望ましくないものでもある可能性がある。さらに、本発明によってサポートされるセマンティクス（マルチセットＮＯＴ  ＩＮ）を考え付くように他の現行のコンテキスト・クエリ言語（contextual query language：ＣＱＬ）構文を組合わせることはできないであろう。さらに、ＩＳＴＲＥＡＭ演算子のこの新たな変形体により、ＳＥＬＥＣＴ表現のサブセットのみを対象とする時にアプリケーションを設計する際に一層の柔軟性がユーザにもたらされ、セマンティクスが決定性になり、非対象のイベントを排除することなどによって性能が大きく向上する。
【００２９】
ＣＱＬ用語：
ストリーム：ストリームは、オラクルＣＱＬクエリが影響を及ぼすデータの主要なソースである。ストリームＳは、要素のバッグマルチセット（ｓ，Ｔ）であり、ｓはＳのスキーマに属し、Ｔは時間領域に属する。ストリーム要素は、タプルとタイムスタンプとのペアであり、タイムスタンプを持つタプルの挿入のシーケンスとして表わすことができる。言い換えると、ストリームとは、タイムスタンプを持つタプルのシーケンスである。同一のタイムスタンプを持つ２つ以上のタプルがある場合がある。入力ストリームのタプルは、タイムスタンプが増加する順にシステムに到着する必要がある。ストリームは、名前付き属性のセットからなる関連付けられたスキーマを有しており、当該ストリームの全てのタプルは当該スキーマに準拠している。
【００３０】
時間：タイムスタンプは、オラクルＣＥＰストリームの不可欠な部分である。しかし、タイムスタンプは必ずしもクロックタイムと同じである必要はない。例えば、アプリケーションドメインで時間を定義し、シーケンス番号で表わすことができる。タイムスタンプは、タイムスタンプの値が増加する順に更新がシステムに到着することだけを保証する必要がある。なお、タイムスタンプの順序付けの要件は、１つのストリームまたはリレーションに固有のものである。例えば、異なるストリームのタプルは任意に交互配置できる。オラクルＣＥＰではアプリケーション時間またはシステム時間を観察できる。
【００３１】
システムタイムスタンプを持つリレーションまたはストリームの場合、時間はリレーションまたはストリームデータソースでのデータの到着に依存する。指定された時間（例えば１分）以上にわたってアクティビティがなければ（ストリームまたはリレーションのソースにデータが到着しなければ）、オラクルＣＥＰではシステムタイムスタンプを持つリレーションまたはストリームでハートビートが生成される。リレーションまたはストリームがその指定のソースによって設定されるか、またはオラクルＣＥＰでハートビートが毎分生成される。これにより、リレーションまたはストリームの遅れが１分を超えることはなくなる。システムタイムスタンプを持つストリームおよびリレーションの場合、２つのイベントが同一の時間値を有することがないようにシステムが時間を割り当てる。しかし、アプリケーションタイムスタンプを持つストリームおよびリレーションの場合は、イベントが同一の時間値を有する場合がある。
【００３２】
タプル種類：ＣＥＰタプル種類インジケータは、挿入タプルの場合は＋であり、削除タプルの場合は−である。なお、これらの用語は単に明確にするためのものであり、当業者に公知であるようにこれらの用語の他の定義および解釈が用いられてもよい。
【００３３】
ここで図１を参照する。図１は、本発明の実施例に係るストリーミングデータを処理する方法１００を示す。プロセスブロック１０５において、データストリームが初期化されてもよい。一実施例においては、当該ストリームは、特定のアプリケーションまたはアプリケーションのセットに関連付けられてもよい。さらに、当該ストリームは、ＣＥＰストリームなどであってもよい。さらに、当該ストリーミングデータは表を含んでいてもよく、当該表はさらに列および／または欄を含む。また、当該ストリーミングデータは１つ以上のデータベースに格納されてもよい。
【００３４】
プロセスブロック１１０において、データのストリーム内の列のうちの１つ以上の列が「対象」の列として特定されてもよい。一実施例においては、対象の列は、アプリケーション（またはユーザ）が列内のデータに生じた変化に関心を示す列であってもよい。さらに、データストリームを処理するための時間間隔が、データのストリームに関連付けられてもよい（プロセスブロック１１５）。例えば、当該時間間隔は１ナノ秒、１０ナノ秒、１ミリ秒、１０ミリ秒などであってもよく、当該時間間隔は、データのストリーム内のデータを分析するためのウィンドウを備えていてもよい。一実施例においては、当該ウィンドウは、データのストリーム内で表を作成するためのリレーションをもたらしてもよい。当該表は、ウィンドウ内（すなわち、当該時間間隔内）のストリームからデータを埋込まれてもよい。
【００３５】
プロセスブロック１２０において、列に含まれるデータ内の差異をモニタリングするために、表内の列のうちの１つ以上の列が選択されてもよい。例えば、表が１０個の列Ａ〜Ｊを含む場合、列ＡおよびＣがモニタリングされるように選択され、列ＡまたはＣに対する変化が生じた時にのみクエリが出力を生成する。したがって、当該出力は、ユーザおよび／またはアプリケーションに関係があると考えられる情報を含むことになる。
【００３６】
したがって、選択された列は、当該時間間隔にわたって変化がモニタリングされる（プロセスブロック１２５）。変化が生じれば（判断ブロック１３０）、選択された列の差異が現在の時間間隔の間に出力される（プロセスブロック１３５）。代替的に、選択された列内のデータに変化が生じなければ、データストリームの期間中のその後の時間間隔の間、選択された列のモニタリングが継続される（プロセスブロック１４０）。
【００３７】
方法１００の実現例の一例は、交通データに関するものであってもよい。道路を走る所与の車についての交通データのストリームは、いくつかの変数（例えば、速度、位置、時間、セグメントなど）を含み得る。これらの変数の各々は表内の列に変換され、当該列内のデータは連続的に変化し得る。しかし、アプリケーションにとってはデータの特定の変化のみが有用であろう。一実施例においては、当該アプリケーションは、走行した道路のセグメントに基づいて通行料金を課す通行料金アプリケーションである。したがって、アプリケーションにとっては、車が道路の１つのセグメントから別のセグメントまでいつ走行したかを知ることのみが有益であろう。
【００３８】
したがって、例えば速度の変化は出力する価値がないかもしれない。さらに、速度の変化はほぼ全ての時間間隔内で生じそうである。同様に、時間および位置は変化を出力する価値がないかもしれないが、セグメントの変化は出力する価値があるであろう。したがって、車が道路を移動している時には、現在のセグメントが変化したか否かを判断するために位置（または座標）がモニタリングされる。このように、位置が１つのセグメント内の位置から別のセグメント内の位置に変化すると、このような変化が出力される。したがって、この例では、通行料金アプリケーションは、速度、時間および位置の変化を無視しながらセグメントの変化に基づいて加算通行料金を計算することができる。
【００３９】
ここで図２を参照する。図２は、本発明の実施例に係るストリーミングデータを処理する方法２００を示す。プロセスブロック２０５において、ＩＳＴＲＥＡＭ操作を適用することによって、リレーショナルデータがストリーミングデータに変換されてもよい。次いで、境界制約に適したストリーミングデータに基づいて、データストリーム内のセグメントが判断されてもよい（プロセスブロック２１０）。
【００４０】
プロセスブロック２１５において、データストリーム内の少なくとも１つの列が、アプリケーションが変化を捉えたいと思っているデータを含んでいるとして特定されてもよい。プロセスブロック２２０において、判断された当該セグメントにわたって、特定された当該列が選択される。次いで、特定された当該列内のデータに対する変化がモニタリングされてもよい（プロセスブロック２２５）。プロセスブロック２３０において、モニタリングされた当該列に適した、判断された当該セグメントにわたる、選択された当該列のマルチセットＩＳＴＲＥＡＭ操作が実行される。したがって、マルチセットＩＳＴＲＥＡＭ操作からの結果として生じたデータは、対象の列に対するデータ変化のみを含み、次いでこのような変化が出力される（プロセスブロック２３５）。
【００４１】
図３は、本発明の実施例に係るストリーミングデータを処理するためのシステム３００を示すブロック図である。一実施例においては、システム３００は、ストリーミングデータソース３０５を含む。ストリーミングデータソース３０５は、ＣＥＰプロセッサ３１５を含むアプリケーションサーバ３１０と通信してもよい。一実施例においては、ＣＥＰプロセッサ３１５は、図１および図２からの方法１００および２００を実現するように構成されてもよい。さらに、アプリケーションサーバ３１０は、データベース３２０および出力装置３２５と通信してもよい。一実施例においては、データベース３２０はストリーミングデータソース３０５からのデータを格納してもよく、出力装置３２５は、モニタリングされたデータに対する結果として生じた変化を表示するために使用されてもよい。さらに、データベース３２０は、アプリケーションサーバ３１０から遠く離れて位置していてもよく、またはアプリケーションサーバ３１０と同一の場所に位置していてもよい。
【００４２】
ここで図４を参照する。図４には、本発明の実施例に係るストリーミングデータの処理に関連する表が示される。図４の結果表を生成するために以下のクエリが使用されてもよい。
【００４３】
【数６】
0005955381.tif 000007
【００４４】
したがって、タイムスタンプ１０００においては、当該間隔内に生じた変化に基づいて出力は「５」であろう。タイムスタンプ１０００においては、当該間隔内に生じた変化に基づいて出力は「６」であろう。同様に、タイムスタンプ１０００においては、当該間隔内の変化に基づいて出力は「７」であろう。間隔１００１は、「５」、「６」および「７」がデータセット内に既に含まれていたという事実により、いかなる出力も持たないであろう。タイムスタンプ１００１においては、変化により出力は「８」であろう。
【００４５】
間隔１００３および１００４は、「５」が変化ではなく、かつ、当該間隔の残りが除去を含んでいるという事実により、いかなる出力も含まないであろう。その後、タイムスタンプ１００４においては、「５」がデータセットから除去されたので、「５」の追加はデータセットに対する変化ではないという理由で出力されない。
【００４６】
一実施例においては、時間の経過があるまで何も出力されない。これは、それまでに見られていない同一のタイムスタンプに別の−ｖｅタプルが到達でき、そのため既に見られた＋ｖｅを打ち消すという事実のためであり得る。したがって、出力は、１タイムスタンプ後であるべきだが、それが見られたタイムスタンプを依然として伝搬しているべきである（それは要素時間の非表示列の形態でそこにあってもよいが、いくつかのアプリケーションはそれを無視することを選択してもよい）。
【００４７】
図５は、本発明の実施例が実現され得る例示的なコンピュータシステム５００を示すブロック図である。バス５９０によって電気的に結合され得るハードウェア要素を備えるコンピュータシステム５００が示されている。ハードウェア要素は、１つ以上の中央処理部５１０と、１つ以上の入力装置５２０（例えば、マウス、キーボードなど）と、１つ以上の出力装置５３０（例えば、表示装置、プリンタなど）とを含んでいてもよい。コンピュータシステム５００は、１つ以上の記憶装置５４０も含んでいてもよい。一例として、記憶装置５４０は、プログラム可能、フラッシュアップデート可能などであり得る、ディスクドライブ、光学記憶装置、ランダムアクセスメモリ（random access memory：「ＲＡＭ」）および／または読取専用メモリ（read-only memory：「ＲＯＭ」）などの固体状態記憶装置であってもよい。
【００４８】
コンピュータシステム５００は、コンピュータ読取可能記憶媒体読取装置５５０と、通信システム５６０（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信装置、ブルートゥース（登録商標）装置、セルラー通信装置など）と、上記のＲＡＭ装置およびＲＯＭ装置を含み得るワーキングメモリ５８０とをさらに含んでいてもよい。いくつかの実施例においては、コンピュータシステム５００は、デジタル信号プロセッサ、特殊目的プロセッサなどを含み得る処理加速部５７０も含んでいてもよい。
【００４９】
コンピュータ読取可能記憶媒体読取装置５５０はさらに、コンピュータ読取可能記憶媒体に、ともに（任意に、記憶装置５４０と組合わせて）接続されることができ、コンピュータ読取可能記憶媒体は、コンピュータ読取可能情報を一時的および／またはより永続的に収容するためのリモート、ローカル、固定式および／または取外し可能な記憶装置プラス記憶媒体を包括的に表わす。通信システム５６０は、上記のネットワーク、システム、コンピュータおよび／または他の構成要素とデータをやり取りすることができ得る。
【００５０】
コンピュータシステム５００はソフトウェア要素も備えていてもよく、ソフトウェア要素は、現在のところワーキングメモリ５８０内に位置しているように示されており、オペレーティングシステム５８８および／または他のコード５８４を含む。コンピュータシステム５００の代替的な実施例が上記の実施例からの多数の変形例を有し得ることを理解すべきである。例えば、カスタマイズされたハードウェアも使用されてもよく、および／または、特定の要素がハードウェア、ソフトウェア（アプレットなどの高移植性ソフトウェアを含む）またはそれら両方に実装されてもよい。さらに、ネットワーク入力／出力およびデータ取得装置などの他の計算装置との接続も行なわれてもよい。
【００５１】
コンピュータシステム５００のソフトウェアは、本明細書に記載されているアーキテクチャのさまざまな要素の機能のうちのいずれかまたは全てを実現するためのコード５８４を含んでいてもよい。例えば、システム５００などのコンピュータシステムに格納される、および／または、コンピュータシステムによって実行されるソフトウェアは、上記のような本発明の機能および／または他の構成要素を提供することができる。これらの構成要素のうちのいくつかでソフトウェアによって実現可能な方法についてより詳細に上記で説明した。
【００５２】
単に一例として、図６は、実施例の１つの組に従って使用可能なシステム６００の概略図である。システム６００は、１つ以上のユーザコンピュータ６０５を含み得る。ユーザコンピュータ６０５は、汎用パーソナルコンピュータ（単に一例として、マイクロソフト社のウィンドウズ（登録商標）および／またはアップル社のマッキントッシュ（登録商標）オペレーティングシステムのうちのいずれか適切な好ましい方を実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む）、および／または、さまざまな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸのようなオペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。また、これらのユーザコンピュータ６０５は、本発明の方法を実施するように構成された１つ以上のアプリケーション、ならびに１つ以上のオフィスアプリケーション、データベースクライアントおよび／またはサーバアプリケーション、およびウェブブラウザアプリケーションを含むさまざまなアプリケーションのうちのいずれかを有し得る。代替的に、ユーザコンピュータ６０５は、ネットワーク（例えば、以下に記載されるネットワーク６１０）を介して通信可能であり、および／または、ウェブページもしくは他のタイプの電子文書を表示してナビゲートすることができる、シン・クライアントコンピュータ、インターネットへの接続が可能な携帯電話および／またはパーソナルデジタルアシスタント（personal digital assistant：ＰＤＡ）などのその他の電子装置であり得る。例示的なシステム６００は３つのユーザコンピュータ６０５を有するように示されているが、いかなる数のユーザコンピュータもサポートすることができる。
【００５３】
本発明の特定の実施例は、ネットワーク６１０を含み得るネットワーク化された環境で動作する。ネットワーク６１０は、ＴＣＰ／ＩＰ、ＳＮＡ、ＩＰＸ、ＡｐｐlｅＴａｌｋなどを含むがそれらに限定されないさまざまな市販のプロトコルのうちのいずれかを使用してデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであり得る。単に一例として、ネットワーク６１０は、イーサネット（登録商標）ネットワーク、トークンリングネットワークなどを含むがそれらに限定されないローカルエリアネットワーク（local area network：「ＬＡＮ」）；広域ネットワーク（wide-area network：ＷＡＮ）；仮想プライベートネットワーク（virtual private network：「ＶＰＮ」）を含むがそれに限定されない仮想ネットワーク；インターネット；イントラネット；エクストラネット；公衆交換電話網（public switched telephone network：「ＰＳＴＮ」）；赤外線ネットワーク；ＩＥＥＥ８０２．１１プロトコル一式、当該技術分野において公知のブルートゥース（登録商標）プロトコルおよび／またはその他の無線プロトコルのうちのいずれかのもとで動作するネットワークを含むがそれに限定されない無線ネットワーク；ならびに／または、これらのおよび／もしくは他のネットワークの任意の組合せであり得る。
【００５４】
本発明の実施例は、１つ以上のサーバコンピュータ６１５を含み得る。サーバコンピュータ６１５の各々は、上記のもののうちのいずれかを含むがそれに限定されないオペレーティングシステム、および任意の市販の（または自由に入手可能な）サーバオペレーティングシステムとともに構成されてもよい。また、サーバ６１５の各々は、１つ以上のユーザコンピュータ６０５および／または他のサーバコンピュータ６１５にサービスを提供するように構成され得る１つ以上のアプリケーションを実行していてもよい。
【００５５】
単に一例として、サーバ６１５のうちの１つは、単に一例としてユーザコンピュータ６０５からのウェブページまたは他の電子文書の要求を処理するために使用可能なウェブサーバであってもよい。当該ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データベースサーバ、ジャバ（登録商標）サーバなどを含むさまざまなサーバアプリケーションを実行することもできる。本発明のいくつかの実施例においては、当該ウェブサーバは、本発明の方法を実施するようにユーザコンピュータ６０５のうちの１つ以上のユーザコンピュータのウェブブラウザ内で動作可能なウェブページを供給するように構成されてもよい。
【００５６】
いくつかの実施例においては、サーバコンピュータ６１５は１つ以上のアプリケーションサーバを含んでいてもよく、当該１つ以上のアプリケーションサーバは、ユーザコンピュータ６０５および／または他のサーバコンピュータ６１５のうちの１つ以上で実行される、クライアントによってアクセス可能な１つ以上のアプリケーションを含み得る。単に一例として、サーバコンピュータ６１５は、ユーザコンピュータ６０５および／または他のサーバコンピュータ６１５に応答してプログラムまたはスクリプトを実行可能な１つ以上の汎用コンピュータであり得て、限定されないが（場合によっては本発明の方法を実施するように構成されてもよい）ウェブアプリケーションを含む。単に一例として、ウェブアプリケーションは、ジャバ（登録商標）、Ｃ、Ｃ＃（登録商標）もしくはＣ＋＋などの任意の好適なプログラミング言語、および／または、Ｐｅｒｌ、ＰｙｔｈｏｎもしくはＴＣＬなどの任意のスクリプト言語、ならびに、任意のプログラミング／スクリプト言語の組合せで書かれた１つ以上のスクリプトまたはプログラムとして実現されることができる。アプリケーションサーバはデータベースサーバも含み得て、当該データベースサーバは、ユーザコンピュータ６０５および／または別のサーバコンピュータ６１５で実行される（構成、データベースクライアント、ＡＰＩクライアント、ウェブブラウザなどによって）クライアントからの要求を処理することができる、オラクル社（登録商標）、マイクロソフト社（登録商標）、サイベース社（登録商標）、ＩＢＭ社（登録商標）などから市販されているものを含むが、それらに限定されない。いくつかの実施例においては、アプリケーションサーバは、本発明の実施例に従って情報を表示するためのウェブページを動的に作成することができる。アプリケーションサーバによって提供されたデータは、（例えば、ＨＴＭＬ、ジャバスクリプトなどを備える）ウェブページとしてフォーマットされてもよく、および／または、（例えば、上記の）ウェブサーバを介してユーザコンピュータ６０５に送られてもよい。同様に、ウェブサーバは、ユーザコンピュータ６０５からのウェブページ要求および／もしくは入力データを受けてもよく、ならびに／または、ウェブページ要求および／もしくは入力データをアプリケーションサーバに送ってもよい。場合によっては、ウェブサーバはアプリケーションサーバと一体化されてもよい。
【００５７】
さらに他の実施例によれば、１つ以上のサーバコンピュータ６１５は、ファイルサーバとして機能することができ、ならびに／または、ユーザコンピュータ６０５および／もしくは別のサーバコンピュータ６１５で実行されるアプリケーションによって組込まれる、本発明の方法を実現するのに必要なファイル（例えば、アプリケーションコード、データファイルなど）のうちの１つ以上を含むことができる。代替的に、当業者が理解するように、ファイルサーバは、ユーザコンピュータ６０５および／またはサーバコンピュータ６１５によってこのようなアプリケーションをリモートで呼び出すことができる全ての必要なファイルを含み得る。なお、さまざまなサーバ（例えば、アプリケーションサーバ、データベースサーバ、ウェブサーバ、ファイルサーバなど）に関して本明細書に記載されている機能は、実装時固有のニーズおよびパラメータに応じて、単一のサーバおよび／または複数の専門のサーバによって実行可能である。
【００５８】
特定の実施例においては、当該システムは１つ以上のデータベース６２０を含み得る。データベース６２０の場所は任意である。単に一例として、データベース６２０ａは、サーバコンピュータ６１５ａ（および／またはユーザコンピュータ６０５）にローカルな（および／または常駐している）記憶媒体にあってもよい。代替的に、データベース６２０ｂは、データベースがこれらのうちの１つ以上と（例えば、ネットワーク６１０を介して）通信可能である限り、コンピュータ６０５，６１５のうちのいずれかまたは全てから遠く離れていてもよい。実施例の特定の組においては、データベース６２０は、当業者になじみのあるストレージエリアネットワーク（storage area network：「ＳＡＮ」）にあってもよい。（同様に、コンピュータ６０５，６１５に起因する機能を実行するのに必要ないかなるファイルも、適宜それぞれのコンピュータにローカルにおよび／またはリモートで格納できる。）実施例の１つの組においては、データベース６２０は、ＳＱＬフォーマットのコマンドに応答してデータを格納、更新および検索するように適合されたオラクル（登録商標）データベースなどのリレーショナルデータベースであり得る。当該データベースは、例えば上記のデータベースサーバによって制御および／または維持されてもよい。
【００５９】
明確化して理解できるようにする目的で本発明について詳細に説明してきた。しかし、添付の特許請求の範囲内で特定の変更および変形が行なわれてもよいことが理解される。
【図１】
0005955381.tif 000008
【図２】
0005955381.tif 000009
【図３】
0005955381.tif 000010
【図４】
0005955381.tif 000011
【図５】
0005955381.tif 000012
【図６】
0005955381.tif 000013