(57)【要約】【課題】リアルタイムアプリケーション側でストリームデータ処理の制御の変更を判断する。【解決手段】時刻情報が付与されたデータを時系列に受信して登録されているクエリについてデータ処理するストリームデータ処理装置において、データを処理するためのクエリと、クエリによって受信されたデータが処理される時に格納されるウィンドウと、ストリームデータ処理装置の制御内容と対応する制御コードを含む制御管理情報とが記憶され、データを受信した場合には、制御管理情報に基づいて、制御コードを含むデータを生成し、受信したデータをウィンドウに格納する場合には、ウィンドウに格納するデータに制御コードが含まれているか否かを判定し、ウィンドウに格納するデータに制御コードが含まれている場合には、データに含まれている制御コードに基づいて、ストリームデータ処理装置を制御する。【選択図】図１
2010134599.tif 000002
【特許請求の範囲】
【請求項１】
時刻情報が付与されたデータを時系列に受信して登録されているクエリについてデータ処理するストリームデータ処理装置を制御するストリームデータ処理制御方法であって、
前記ストリームデータ処理装置は、前記データを受信するインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続される記憶部と、を備え、
前記記憶部には、前記データを処理するためのクエリと、前記クエリによって前記受信されたデータが処理される時に格納されるウィンドウと、前記ストリームデータ処理装置の制御内容を含む制御管理情報と、が記憶され、
前記制御管理情報には、前記制御内容を識別する制御コードが含まれ、
前記ストリームデータ処理装置は、
前記データを受信した場合は、前記制御管理情報に基づいて、前記制御コードを含むデータを生成し、
前記受信したデータを前記ウィンドウに格納する場合は、前記ウィンドウに格納されるデータに前記制御コードが含まれているか否かを判定し、
前記ウィンドウに格納されるデータに前記制御コードが含まれている場合は、前記データに含まれている制御コードに基づいて、前記ストリームデータ処理装置を制御することを特徴とするストリームデータ処理制御方法。
【請求項２】
前記制御管理情報には、前記制御を実行する時刻情報がさらに含まれ、
前記データには、時刻情報が付与され、
前記制御コードを含むデータは、前記受信したデータに付与された時刻情報及び前記制御管理情報に基づいて生成されることを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項３】
前記ストリームデータ処理装置は、さらに、
前記ストリームデータ処理装置を制御するコマンドの入力を受け付け、
前記入力されたコマンドに基づいて、前記制御管理情報を作成することを特徴とする請求項２に記載のストリームデータ処理制御方法。
【請求項４】
前記ストリームデータ処理装置は、前記入力されたコマンドに制御を実行する時刻情報が含まれる場合は、前記コマンドに含まれる時刻情報に基づいて、前記制御管理情報に含まれる時刻情報を設定することを特徴とする請求項３に記載のストリームデータ処理制御方法。
【請求項５】
前記ストリームデータ処理装置は、前記入力されたコマンドに制御を実行する時刻情報が含まれていない場合は、前記ストリームデータ処理装置に受信され、かつ、前記ウィンドウに格納されていない最新のデータに付与された時刻情報に基づいて、前記制御管理情報に含まれる時刻情報を設定することを特徴とする請求項３に記載のストリームデータ処理制御方法。
【請求項６】
前記データは、前記ストリームデータ処理装置によって受信された時刻が前記時刻情報として付与されることを特徴とする請求項２に記載のストリームデータ処理制御方法。
【請求項７】
前記データに付与される時刻情報は、前記データの送信元で付与されることを特徴とする請求項２に記載のストリームデータ処理制御方法。
【請求項８】
前記制御コードを含むデータは、前記受信したデータに前記制御コードを付与することによって生成されることを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項９】
前記制御コードを含むデータは、前記受信したデータとは別に、前記ストリームデータ処理装置によって新たに生成されることを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項１０】
前記ストリームデータ処理装置は、前記ストリームデータ処理装置に対する制御によって、前記ストリームデータ処理装置で実行中のクエリを別のクエリに切り替えることを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項１１】
前記ストリームデータ処理装置は、前記ストリームデータ処理装置に対する制御によって、前記ストリームデータ処理装置で実行中のクエリの性能を取得するモニタ処理を実行することを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項１２】
前記ストリームデータ処理装置は、前記ストリームデータ処理装置に対する制御によって、前記ストリームデータ処理装置を停止させる処理を実行することを特徴とする請求項１に記載のストリームデータ処理制御方法。
【請求項１３】
時刻情報が付与されたデータを時系列に受信して登録されているクエリについてデータ処理するストリームデータ処理装置であって、
前記ストリームデータ処理装置は、前記データを受信するインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続される記憶部と、を備え、
前記記憶部には、前記データを処理するためのクエリと、前記クエリによって前記受信されたデータが処理される時に格納されるウィンドウと、前記ストリームデータ処理装置の制御内容を含む制御管理情報と、が記憶され、
前記制御管理情報には、前記制御内容を識別する制御コードが含まれ、
前記プロセッサは、
前記ストリームデータ処理装置が前記データを受信した場合は、前記制御管理情報に基づいて、前記制御コードを含むデータを生成し、
前記受信したデータを前記ウィンドウに格納する場合は、前記ウィンドウに格納されるデータに前記制御コードが含まれているか否かを判定し、
前記ウィンドウに格納されるデータに前記制御コードが含まれている場合は、前記データに含まれている制御コードに基づいて、前記ストリームデータ処理装置を制御することを特徴とするストリームデータ処理装置。
【請求項１４】
時刻情報が付与されたデータを時系列に受信してあらかじめ登録されたクエリに基づいてデータ処理するストリームデータ処理装置で実行されるプログラムであって、
前記ストリームデータ処理装置には、前記ストリームデータ処理装置の制御内容と前記制御内容に対応する制御コードとを含む制御管理情報とが記憶され、
前記プログラムは、
前記クエリによってデータが処理される時に当該データが格納されるウィンドウを、前記クエリに基づいて生成する手順と、
前記データを受信した場合に、前記制御管理情報に基づいて、前記制御コードを含むデータを生成する手順と、
前記ウィンドウに格納されるデータに前記制御コードが含まれているか否かを判定する手順と、
前記ウィンドウに格納されるデータに前記制御コードが含まれている場合は、前記ウィンドウに格納されるデータに含まれている制御コードに基づいて、前記ストリームデータ処理装置を制御する手順とを含むことを特徴とするストリームデータ処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理システムを制御する技術に関する。
【背景技術】
【０００２】
近年、時々刻々と到着する大量のデータ（ストリームデータ）を受信し、リアルタイムで処理するストリームデータ処理システムに対する要求が高まっている。例えば、株取引を支援するファイナンシャルアプリケーションでは、株価の変動に迅速に対応することが最重要の課題の一つである。従来のデータベース管理システム（ＤＢＭＳ）でデータを処理する場合には、受信した株式データを一旦記憶装置に格納する必要があった。今後、さらに大量の株式データを扱う場合に、株価の変動などにリアルタイムで対応することが困難になる可能性がある。
【０００３】
また、ストリームデータをリアルタイムに処理するアプリケーションを個別に作成すると、開発期間の長期化、開発コストの高騰、アプリケーションを利用する業務の変化への迅速な対応が困難といった問題があり、汎用のストリームデータ処理システムが求められている。
【０００４】
ストリームデータ処理システムでは、まず、クエリ（問合せ）をシステムに登録し、ストリームデータの到着とともにクエリが継続的に実行される。しかし、ストリームデータは時々刻々と到着するため、すべてのデータの到着を待ってから処理を開始することは不可能である。また、システムに到着したデータは、データ処理の負荷に影響されることなく、到着順にしたがって処理される必要がある。
【０００５】
非特許文献１に開示された技術では、ストリームデータを、最新１０分間などの時間の幅、又は最新１０００件などの個数の幅を指定してストリームデータの一部を切り取りながらリアルタイム処理が実現される、スライディングウィンドウ（以下「ウィンドウ」）と呼ばれる概念を導入している。
【０００６】
また、データを取得するためのクエリを記述するための言語として、ウィンドウを指定可能なＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が非特許文献１に開示されている。ＣＱＬは、ＤＢＭＳで広く用いられているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が拡張されたものであって、ウィンドウの指定が可能となっている。具体的にＣＱＬを利用する技術などについては、例えば、特許文献２などに開示されている。
【０００７】
しかし、ストリームデータは、時々刻々と到着するデータであるため、ストリームデータ処理システムの処理挙動を受信したデータに基づいて変更しようとしても、区切りとなるデータを特定することができない。一方、ストリームデータを送信する側、例えばストリームデータ送信アプリケーションでは、区切りとなるデータが把握されている。そこで、ストリームデータの区切りを把握するための技術として、ストリームデータ（ＭＰＥＧ等の画像）を構成するパケットに付与されたパケット識別子に基づいてパケットフィルタを介して処理対象（デコード処理）を判別する技術が特許文献１に開示されている。
【特許文献１】特開２００３−２９８６６１号公報
【特許文献２】特開２００６−３３８４３２号公報
【非特許文献１】Ｒ．Ｍｏｔｗａｎｉ、Ｊ．Ｗｉｄｏｍ、Ａ．Ａｒａｓｕ、Ｂ．Ｂａｂｃｏｃｋ、Ｓ．Ｂａｂｕ、Ｍ．Ｄａｔａｒ、Ｇ．Ｍａｎｋｕ、Ｃ．Ｏｌｓｔｏｎ、Ｊ．Ｒｏｓｅｎｓｔｅｉｎ、ａｎｄ  Ｒ．  Ｖａｒｍａ著：“Ｑｕｅｒｙ  Ｐｒｏｃｅｓｓｉｎｇ、  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ、  ａｎｄ  Ａｐｐｒｏｘｉｍａｔｉｏｎ  ｉｎ  ａ  Ｄａｔａ  Ｓｔｒｅａｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ”、Ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ２００３  Ｃｏｎｆ．  ｏｎ  Ｉｎｎｏｖａｔｉｖｅ  Ｄａｔａ  Ｓｙｓｔｅｍｓ  Ｒｅｓｅａｒｃｈ（ＣＩＤＲ）、Ｊａｎｕａｒｙ  ２００３
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１に開示された技術は、入力ストリームデータを構成するパケットに対して、必ず一意の出力処理結果があり、かつ、パケット識別子に基づいてパケットごとに独立して処理可能な場合にのみ適用可能である。非特許文献１に開示されたようなウィンドウ機構を有するストリームデータ処理システムでは、ウィンドウ内のタプルに生存個数などの関連性によってタプルごとに独立して処理することはできないため、特許文献１に開示された技術によって前述した課題を解決することはできない。
【０００９】
リアルタイムアプリケーションで利用されるストリームデータ処理システムでは、クエリの変更、特定区間の性能情報の取得など、ストリームデータ処理の制御の変更をリアルタイムアプリケーション側で把握することが必要である。
【００１０】
本発明は、ストリームデータ処理の制御の変更をリアルタイムアプリケーション側で判断する技術を実現することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な一形態によれば、時刻情報が付与されたデータを時系列に受信して登録されているクエリについてデータ処理するストリームデータ処理装置を制御する方法であって、前記ストリームデータ処理装置は、前記データを受信するインタフェースと、前記インタフェースに接続されるプロセッサと、前記プロセッサに接続される記憶部と、を備え、前記記憶部には、前記データを処理するためのクエリと、前記クエリによって前記受信されたデータが処理される時に格納されるウィンドウと、前記ストリームデータ処理装置の制御内容を含む制御管理情報と、が記憶され、前記制御管理情報には、前記制御内容を識別する制御コードが含まれ、前記ストリームデータ処理装置が前記データを受信した場合は、前記制御管理情報に基づいて、前記制御コードを含むデータを生成し、前記受信したデータを前記ウィンドウに格納する場合は、前記ウィンドウに格納されるデータに前記制御コードが含まれているか否かを判定し、前記ウィンドウに格納されるデータに前記制御コードが含まれている場合には、前記データに含まれている制御コードに基づいて、前記ストリームデータ処理装置を制御することを特徴とする。
【発明の効果】
【００１２】
本発明の一形態によれば、ストリームデータに付与された制御コードに基づいて、リアルタイムアプリケーション側でストリームデータ処理の制御の変更を判断することが可能となる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の実施の形態のストリームデータ処理システムを含む計算機システムの一例を示す図である。
【００１４】
本発明の実施の形態の計算機システムは、サーバ計算機１０１を含む。サーバ計算機１０１は、時々刻々と到着するストリームデータを受信し、受信したストリームデータを処理する。
【００１５】
ストリームデータ処理システム１０７は、ストリームデータを処理し、サーバ計算機１０１上で実行されるプログラムとして実装される。また、サーバ計算機１０１に搭載される専用ハードウェアとして実装してもよい。
【００１６】
サーバ計算機１０１は、主記憶１０２、補助記憶装置１０３、出力装置１０４、プロセッサ１０５、入力装置１０６Ａ及びインタフェース１０６Ｂを備える。サーバ計算機１０１は、例えば、ブレード型計算機システム、ＰＣサーバなどの計算機システムであってもよい。
【００１７】
主記憶１０２は、プロセッサ１０５によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。主記憶１０２は、例えば、高速にアクセス可能な揮発性記憶媒体である。
【００１８】
主記憶１０２には、ストリームデータを処理するストリームデータ処理システム１０７が記憶される。ストリームデータ処理システム１０７は、プロセッサ１０５によって実行されることによって、サーバ計算機１０１の各構成と連携し、ストリームデータを処理する。ストリームデータ処理システム１０７の詳細については後述する。
【００１９】
補助記憶装置１０３は、サーバ計算機１０１で実行されるプログラム及びデータなどを格納する記憶装置である。補助記憶装置１０３には、例えば、サーバ計算機１０１で受信されたストリームデータを格納する。補助記憶装置１０３は、ネットワークなどを介して接続された外部記憶装置であってもよい。
【００２０】
出力装置１０４は、ストリームデータ処理システム１０７によって処理された結果１２４を出力する。また、サーバ計算機１０１の管理情報などを出力する。出力装置１０４は、例えば、情報を表示するディスプレイである。
【００２１】
プロセッサ１０５は、主記憶１０２に記憶されたプログラムを処理することによって各種処理を実行する。
【００２２】
入力装置１０６Ａは、ストリームデータ処理システム１０７で実行させるクエリ１２２の入力を受け付ける。また、サーバ計算機１０１又はストリームデータ処理システム１０７を制御するためのコマンド１２１の入力を受け付ける。さらに、ストリームデータソース１２３からストリームデータの入力を直接受け付けることも可能である。インタフェース１０６Ｂは、ネットワーク１２５に接続される。
【００２３】
サーバ計算機１０１は、ストリームデータを送信するクライアント計算機に接続される。図１に示す計算機システムでは、クライアント計算機１（１２６）及びクライアント計算機２（１３２）がネットワーク１２５を介してストリームデータ処理システム１０７を実行するサーバ計算機１０１に接続されている。
【００２４】
ネットワーク１２５は、イーサネット（登録商標）、光ファイバなどで接続されるローカルエリアネットワーク（ＬＡＮ）、又はＬＡＮよりも低速なインターネットを含むワイドエリアネットワーク（ＷＡＮ）であってもよい。また、クライアント計算機（１２６、１３２）はパーソナルコンピュータ、ブレード型の計算機システムなどの任意のコンピュータシステムでよい。
【００２５】
クライアント計算機１（１２６）は、プロセッサ１３７、主記憶１３８及びインタフェース（Ｉ／Ｆ）１３９を備える。主記憶１３８には、プロセッサ１３７によって実行されるアプリケーション１（１２７）が記憶される。アプリケーション１（１２７）では、コマンド１２８及びクエリ１２９の入力を受け付け、サーバ計算機１０１に送信する。さらに、ストリームデータソース１３０から入力されたストリームデータを、Ｉ／Ｆ１３９を介してネットワーク１２５からサーバ計算機１０１に送信する。そして、ストリームデータがサーバ計算機１０１によって処理された結果を受信し、結果１３１を出力する。
【００２６】
クライアント計算機２（１３２）は、プロセッサ１４１、主記憶１４２及びＩ／Ｆ１４３を備える。主記憶１４２には、プロセッサ１４１によって実行されるアプリケーション２（１３３）が記憶される。アプリケーション２（１３３）では、クライアント計算機２（１３２）がＩ／Ｆ１４３を介してネットワーク１３４からストリームデータソース１３５からストリームデータを受信し、Ｉ／Ｆ１４３を介してネットワーク１２５からサーバ計算機１０１に送信する。
【００２７】
以上のように、サーバ計算機１０１は、直接ストリームデータを受信してもよいし、クライアント計算機を介してストリームデータを受信してもよい。また、受信するストリームデータの例としては、前述したファイナンシャルアプリケーションにおける株価配信情報の他に、小売業におけるＰＯＳデータ、交通情報システムにおけるプローブカー情報、計算機システム管理におけるエラーログなどが挙げられる。
【００２８】
ここで、ストリームデータ処理システム１０７の構成について説明する。ストリームデータ処理システム１０７は、ストリームデータ処理システム管理部１０８、コマンド管理部１０９、クエリ管理部１１２、データ管理部１１３、クエリ処理管理部１１６、制御管理表１１９、及びクエリリポジトリ１２０を含む。
【００２９】
ストリームデータ処理システム１０７は、ストリームデータ処理システム管理部１０８によって管理される。
【００３０】
コマンド管理部１０９は、入力装置１０６Ａを介して入力されたストリームデータ処理システムを制御するコマンド１２１を処理する。コマンド管理部１０９は、コマンド解析部１１０及びコマンド実行部１１１を含む。
【００３１】
コマンド解析部１１０は、入力されたコマンド１２１を構文解析する。コマンド実行部１１１は、コマンド１２１の解析結果に基づいて、制御情報を制御管理表１１９に登録する。制御管理表１１９は、制御情報及び制御内容が格納される。制御管理表１１９の詳細については、図５にて後述する。
【００３２】
なお、コマンド管理部１０９によって処理されるコマンドは、サーバ計算機１０１に直接入力されたコマンド１２１でもよいし、クライアント計算機１（１２６）に入力されたコマンド１２８がネットワーク１２５経由でサーバ計算機１０１に入力されたものでもよい。
【００３３】
クエリ管理部１１２は、入力装置１０６Ａを介して入力されたクエリ１２２を構文解析する。さらに、解析されたクエリを最適化して実行形式を生成する。最後に、生成されたクエリ実行形式をクエリリポジトリ１２０に格納する。なお、クエリリポジトリ１２０は、サーバ計算機１０１の主記憶１０２に保持されてもよいし、サーバ計算機１０１に備えられる補助記憶装置１０３に格納されてもよい。
【００３４】
なお、クエリ管理部１１２によって処理されるクエリは、サーバ計算機１０１に直接入力されたクエリ１２２でもよいし、クライアント計算機１（１２６）に入力されたクエリ１２９がネットワーク１２５経由でサーバ計算機１０１に入力されたものでもよい。
【００３５】
データ管理部１１３は、入力装置１０６Ａを介して入力されたストリームデータを処理する。データ管理部１１３は、データ入出力部１１４及び制御コード設定部１１５を含む。
【００３６】
データ入出力部１１４は、入力されたストリームデータをストリームデータ入力キューに格納する。制御コード設定部１１５は、ストリームデータ入力キューに格納されたストリームデータに制御管理表１１９に登録されている制御情報を設定する。
【００３７】
クエリ処理管理部１１６は、クエリ処理制御部１１７及びクエリ処理部１１８を含む。クエリ処理制御部１１７は、入力された処理対象のストリームデータに付与された制御情報と、制御管理表１１９に登録されている制御内容に基づいて、クエリ処理を制御する。クエリ処理部１１８は、クエリリポジトリ１２０に格納されているクエリ実行形式に基づいて、入力された処理対象のストリームデータを処理する。
【００３８】
クエリ処理結果は、データ入出力部１１４によってストリームデータ出力キューに格納される。さらに、出力装置１０４を介して、結果１２４として出力される。クエリ処理結果は、サーバ計算機１０１のストリームデータ処理システム１０７から直接出力してもよいし、ネットワーク１２５を経由して、クライアント計算機１（１２６）から結果１３１として出力してもよい。
【００３９】
なお、ストリームデータ処理システム内部でストリームデータを格納する方法、受け付けられたクエリの解析、最適化及び生成されたクエリ実行形式の登録方法などについては、特許文献２に開示された技術を用いればよい。
【００４０】
本発明の実施の形態で対象とするストリームデータは、時々刻々と到着し、件数が大量であるが、１件あたりのデータ量は比較的小さく、各データは論理的に独立している。本発明の実施の形態では、このようなストリームデータを処理するために、前述したようにウィンドウの概念に基づいてクエリを処理する。
【００４１】
ストリームデータは、ＤＢＭＳで取り扱われるテーブル（表）のような静止化されたデータではなく、切れ目のないストリームデータであるため、ストリームデータのどの部分を対象とするかを指定しなければ処理することは不可能である。そこで、前述したように、指定された期間又は個数のストリームデータを区切ってデータを切り出すスライディングウィンドウ（ウィンドウ）の概念を適用する。ウィンドウは、データの生存期間（演算対象となる期間）を定める演算（ウィンドウ演算）と捉えることができる。ストリームデータは、ウィンドウ演算によって生存期間が特定され、１以上のデータ値及びタイムスタンプを含むストリームタプルが生成される。
【００４２】
図２は、本発明の実施の形態のクエリ処理部１１８の構成の一例を示すブロック図である。
【００４３】
クエリ処理部１１８は、メモリマネージャ２０１、ウィンドウマネージャ２０２、集約計算モジュール２０６及びクエリ処理に必要なオペレータ２１３を含む。
【００４４】
メモリマネージャ２０１は、ウィンドウマネージャ２０２、集約計算モジュール２０６及びクエリ処理に必要なオペレータ２１３を管理する。
【００４５】
ウィンドウマネージャ２０２は、クエリで指定されたウィンドウ演算をストリームデータに適用してストリームタプルを生成し、ストリームタプルのシステム内での生存期間を設定する。ストリームデータがウィンドウに挿入される時が生存期間の開始時刻、ウィンドウからストリームデータが削除される時が生存期間の終了時刻に相当する。
【００４６】
集約計算モジュール２０６は、総和計算オペレータ２０７、最大値計算オペレータ２０８、一時保存バッファ２０９及び集約計算処理に必要なオペレータ２１０を含む。一時保存バッファ２０９には、各オペレータによって実行された集約計算結果が一時的に保持される。
【００４７】
総和計算オペレータ２０７は、ウィンドウ内のデータの総和を計算する。最大値計算オペレータ２０８は、ウィンドウ内のデータの最大値を計算する。集約計算処理に必要なオペレータ２１０には、その他の集約計算処理に必要なオペレータが含まれ、例えば、最小値を計算する最小値計算オペレータ２１１及び平均値を計算する平均値計算オペレータ２１２が含まれる。
【００４８】
ここで、ウィンドウマネージャ２０２について、さらに詳しく説明する。ウィンドウマネージャ２０２は、ストリームタプル保持バッファ２０５、生存期間決定部２０３、及び差分情報生成部２０４を含む。
【００４９】
ウィンドウマネージャ２０２は、ストリームデータの入力を受け付けると、ストリームタプルを生成する。さらに、生成されたストリームタプルをストリームタプル保持バッファ２０５に格納し、生存期間決定部２０３に通知する。
【００５０】
生存期間決定部２０３は、ウィンドウ演算によって各ストリームタプルの生存期間を決定し、生存期間が終了するストリームタプルをストリームタプル保持バッファ２０５から消去する。
【００５１】
差分情報生成部２０４は、ストリームタプルがストリームタプル保持バッファ２０５に格納されたタイミングで、プラスタプルを生成し、差分情報として出力する。同様に、ストリームタプルがストリームタプル保持バッファ２０５から消去されるタイミング（ストリームタプルの生存期間が終了するタイミング）でマイナスタプルを生成し、同様に差分情報として出力する。
【００５２】
ストリームタプル保持バッファ２０５及び一時保存バッファ２０９は、クエリ処理部１１８内のメモリマネージャ２０１によってサーバ計算機１０１の主記憶１０２に割り当てられる。なお、要求される性能要件及び信頼性要件に適合すれば、補助記憶装置１０３にストリームタプル保持バッファ２０５及び一時保存バッファ２０９を割り当ててもよい。
【００５３】
クエリ処理に必要なオペレータ２１３には、所定の条件を満たすデータを選択する選択オペレータ２１４、及び所定の条件を満たすデータを結合する結合オペレータ２１５などが含まれる。
【００５４】
以下、本発明の実施の形態のストリームデータ処理システムの制御方法について説明する。まず、具体的な手順を説明する前に、データを取得するためのクエリ及びコマンドを示す。さらに、ストリームデータに付与される制御コードを具体例を参照しながら説明する。
【００５５】
図３Ａは、本発明の実施の形態のストリームデータ処理システムで実行されるクエリ３０１を示す図である。
【００５６】
クエリ３０１は、ウィンドウ演算を含む集約処理を実行するためのクエリである。具体的には、ｓｅｎｓｏｒストリーム（入力されるストリームデータの識別子）のＯｕｔｐｕｔカラムの値の総和を計算する。ウィンドウの指定は、［ｒｏｗｓ  ２］となっており、最新２つのデータに対するウィンドウ演算を指示している。
また、ウィンドウを指定する方法としては、ウィンドウの幅をデータ数で指定するＲｏｗウィンドウ以外にも、指定された期間に到着したストリームデータを処理するＲａｎｇｅウィンドウがある。Ｒａｎｇｅウィンドウの場合には、例えば、［Ｒａｎｇｅ  １０  ｍｉｎｕｔｅｓ］とすると、最新の１０分間分がクエリ処理の対象となる。
【００５７】
図３Ｂは、本発明の実施の形態のストリームデータ処理システムで実行されるクエリ３０２を示す図である。
【００５８】
クエリ３０２は、ｓｅｎｓｏｒストリームのＯｕｔｐｕｔカラムの値の最大値を計算する。入力されるストリームデータなどは、図３Ａに示したクエリ３０１と同様である。
【００５９】
図４Ａから図４Ｅは、本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【００６０】
図４Ａに示すコマンド４０１から４０５は、コマンドが入力されると、即座に入力されたコマンドに従って処理が開始される。
【００６１】
具体的に各コマンドについて説明すると、コマンド４０１は、クエリＱ１を開始するコマンドである。コマンド４０２は、実行されているクエリをクエリＱ１からクエリＱ２に変更するコマンドであって、換言すると、クエリＱ１を終了してクエリＱ２を開始するコマンドである。
【００６２】
コマンド４０３は、クエリＱ２に対して性能情報を取得するためのモニタ処理を開始するコマンドである。コマンド４０４は、クエリＱ２に対して性能情報を取得するためのモニタ処理を終了するコマンドである。コマンド４０５は、ストリームデータ処理システムを終了するコマンドである。
【００６３】
図４Ｆは、本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定有り）の一例を示す図である。
【００６４】
コマンド４０６は、入力されるとすぐにクエリＱ１が開始される。そして、１０：００になると、クエリＱ１の実行が停止され、さらにクエリＱ２の実行が開始される。さらに、１１：００にクエリＱ２に対して性能情報を取得するためのモニタ処理を開始し、１２：００にクエリＱ２に対して性能情報を取得するためのモニタ処理を終了する。そして、１７：００になると、ストリームデータ処理システム１０７を終了させる。
【００６５】
図５は、本発明の実施の形態の制御管理表１１９の具体例を示す図である。
【００６６】
制御管理表１１９は、制御コード５０２、制御時刻５０３、制御種別５０４、オプション１（５０５）及びオプション２（５０６）を含む。
【００６７】
制御コード５０２は、実行される制御を識別するコードである。制御時刻５０３は、制御が実行される時刻である。制御種別５０４は、実行される制御の種類を表す。オプション１（５０５）及びオプション２（５０６）は、制御種別を補完するオプション情報であって、コマンド実行時に使用されるパラメータなどである。
【００６８】
図５に示す制御管理表１１９は、図４Ｂに示したコマンド４０６に対応する。前述のように、コマンド４０６が入力されると、コマンド解析部１１０によって解析され、コマンド実行部１１１によって解析結果が制御管理表１１９に登録される。
【００６９】
具体的に説明すると、コマンド４０６では、最初に時間指定無しでクエリＱ１が実行される。この場合には、詳細については図７から図９を参照しながら説明するが、ストリームデータ入力キューに格納された先頭のストリームデータに制御コードが付与され、制御管理表１１９に登録される。クエリＱ１が実行されると、制御管理表１１９から対応するレコードが削除される。図５には、クエリＱ１の実行が開始された後の状態が示されている。また、時刻が指定されていない場合には、制御管理表１１９にレコードを追加せずに、入力されたコマンドに基づいて即時処理を実行するようにしてもよい。
【００７０】
続いて、１０：００にクエリＱ１の実行を停止し、クエリＱ２の実行を開始することによってクエリを切り替えるＣｈａｎｇｅコマンドが実行される。このＣｈａｎｇｅコマンドに対応して、制御コード５０２が「１」、制御時刻５０３が「１０：００」、制御種別５０４が「Ｃｈａｎｇｅ」、オプション１が「Ｑ１」、オプション２が「Ｑ２」であるレコードが生成される。
【００７１】
同様に、性能情報取得を開始する「Ｓｔａｒｔ  Ｍｏｎｉｔｏｒ」、性能情報取得を終了する「Ｓｔｏｐ  Ｍｏｎｉｔｏｒ」、ストリームデータ処理システム１０７を終了する「Ｓｈｕｔｄｏｗｎ」に対応するレコードがそれぞれ生成される。
【００７２】
図６Ａは、本発明の実施の形態のサーバ計算機１０１に入力されるストリームデータソースの構成の一例を示す図である。
【００７３】
ストリームデータソースは、サーバ計算機１０１に対するストリームデータの送信元であるが、実体は計算機などである。図６Ａに示すストリームデータソース６０１には、送信されるデータの一覧が示されており、データを格納するＯｕｔｐｕｔカラム６０２が含まれる。ストリームデータソース６０１は、時系列順にデータが格納されており、値が３０であるストリームデータ６０３が最初に送信される。なお、ストリームデータには複数のデータ値の組によって構成されていてもよい。
【００７４】
図６Ｂは、本発明の実施の形態の受信したストリームデータに基づいて生成されたストリームタプルの一例を示す図である。
【００７５】
サーバ計算機１０１は、ストリームデータソース６０１から送信されたストリームデータを受信すると、受信した時刻に基づいて、ストリームタプルを生成する。図６Ｂに示す例では、ストリームデータ処理システム１０７によってストリームデータを受け付けられた時刻をタイムスタンプとして付与するシステムタイムスタンプモードの例である。
【００７６】
ストリームタプル６０４には、Ｓｙｓｔｅｍ  Ｔｉｍｅカラム６０５、Ｏｕｔｐｕｔカラム及び制御コードカラム６０７が含まれる。
【００７７】
Ｓｙｓｔｅｍ  Ｔｉｍｅカラム６０５には、サーバ計算機１０１がストリームデータを受信した時刻が格納され、例えば、「０９：０２」（６０６）などの時刻情報が設定される。Ｏｕｔｐｕｔカラムには、受信したストリームデータが格納される。制御コードカラム６０７には、ストリームデータ処理システム１０７の制御コード設定部１１５で付与された制御コードが設定され、例えば、「１」（６０８）が設定される。
【００７８】
図６Ｃは、本発明の実施の形態の受信したストリームデータに基づいて生成されたストリームタプルの別の例を示す図である。
【００７９】
図６Ｃに示すストリームタプル６０９は、クライアント計算機１（１２６）上のアプリケーション１（１２７）によってストリームデータにタイムスタンプが付与されているアプリケーションタイムスタンプモードの例である。
【００８０】
ストリームタプル６０９には、ＡＰ  Ｔｉｍｅカラム６１０、Ｏｕｔｐｕｔカラム６０２及び制御コードカラム６１２が含まれる。
【００８１】
ＡＰ  Ｔｉｍｅカラム６１０には、クライアント計算機上で処理されたデータに付与されたタイムスタンプが格納され、例えば、「０９：０１」（６１１）などの時刻情報が設定される。Ｏｕｔｐｕｔカラムには、受信したストリームデータが格納される。制御コードカラム６１２には、ストリームデータ処理システム１０７の制御コード設定部１１５で付与された制御コードが設定され、例えば、「１」（６１３）が設定される。
【００８２】
なお、タイムスタンプモードは、ストリームデータ処理システム管理部１０８にあらかじめ設定されており、システムタイムスタンプモード又はアプリケーションタイムスタンプモードのいずれか一方が設定される。
【００８３】
以上が、本発明の実施の形態において利用されるクエリ、コマンド、制御管理表１１９及びストリームデータの一例である。以下、本発明の実施の形態のストリームデータ処理システム１０７の具体的な処理について説明する。まず、入力されたコマンド４０６に基づいて、制御管理表１１９を生成する手順について説明する。
【００８４】
図７は、本発明の実施の形態の制御管理表１１９を作成する手順を示すフローチャートである。
【００８５】
本処理では、プロセッサ１０５がコマンド実行部１１１を実行することによって、入力されたコマンドに基づいて制御管理表１１９が生成される。
【００８６】
プロセッサ１０５は、入力されたコマンドがコマンド解析部１１０によって解析されると、コマンド実行部１１１の処理を開始する（ステップ７０１）。本処理は、コマンド解析部１１０によるコマンドの解析結果に基づいて、制御コードが付与される単位で実行される。例えば、図４Ｂに示したコマンド４０６であれば、各行が対応する。このとき、時刻が指定されていない一行目については処理を制御するストリームデータを特定する必要がないため、制御管理表１１９の対応するレコードを生成しなくてもよい。
【００８７】
プロセッサ１０５は、まず、制御管理表１１９が存在するか否かを判定する（ステップ７０２）。制御管理表１１９の各レコードは、対応する制御の実行後に削除される。
【００８８】
プロセッサ１０５は、制御管理表１１９が存在しない場合には（ステップ７０２の結果が「Ｎｏ」）、制御管理表１１９を新たに作成し、制御コードインデックスを０に初期化する（ステップ７０３）。
【００８９】
一方、プロセッサ１０５は、制御管理表１１９が既に存在している場合には（ステップ７０２の結果が「Ｙｅｓ」）、制御管理表１１９から制御コードの最大値を検索し、検索された値を制御コードインデックスとして設定する（ステップ７０４）。
【００９０】
続いて、プロセッサ１０５は、制御コードインデックスに１加算し（ステップ７０５）、当該制御コードインデックスを処理対象のコマンドの制御コードとして、制御管理表１１９にレコードを追加する（ステップ７０６）。その後、コマンド実行部１１１の処理を終了する（ステップ７０７）。
【００９１】
続いて、受信したストリームデータに制御コードを付与し、ストリームタプルを生成する手順について説明する。
【００９２】
図８は、本発明の実施の形態のストリームデータに制御コードを付与する手順を示すフローチャートである。
【００９３】
本処理では、プロセッサ１０５が制御コード設定部１１５を実行することによって、ストリームデータに制御管理表１１９に格納された制御コードが付与され、ストリームタプル６０４又はストリームタプル６０９が生成される。本処理は、制御管理表１１９が作成された後、ストリームデータ入力キューに格納されたストリームデータに対して実行される。
【００９４】
プロセッサ１０５は、コマンドの入力を受け付け、ストリームデータの処理を開始すると、受信したストリームデータに対し、制御コード設定部１１５を実行する（ステップ８０１）。
【００９５】
プロセッサ１０５は、まず、制御管理表１１９に制御時刻５０３が設定されているか否かを判定する（ステップ８０２）。制御時刻５０３が設定されていない場合とは、例えば、図４Ａに示したコマンド（４０２、４０３、４０４、４０５）のように時刻の指定をせずにコマンドを入力した場合である。一方、制御時刻５０３が設定されている場合とは、例えば、図４Ｂに示したコマンド４０６の二行目以降の各コマンドに対応する。
【００９６】
プロセッサ１０５は、制御管理表１１９に制御時刻５０３が設定されていない場合には（ステップ８０２の結果が「Ｎｏ」）、制御管理表１１９から制御コード５０２を取得する（ステップ８０３）。
【００９７】
プロセッサ１０５は、ストリームデータ入力キューの先頭に格納されたストリームデータに、ステップ８０３の処理で取得された制御コード５０２を設定する（ステップ８０４）。
【００９８】
さらに、プロセッサ１０５は、ストリームデータ入力キューの先頭に格納されたストリームデータのタイムスタンプを取得する（ステップ８０５）。そして、制御管理表１１９の制御時刻５０３を、ステップ８０５の処理で取得されたタイムスタンプで更新し（ステップ８０６）、本処理を終了する（ステップ８０７）。
【００９９】
一方、プロセッサ１０５は、制御管理表１１９に制御時刻５０３が設定されている場合には（ステップ８０２の結果が「Ｙｅｓ」）、ストリームデータ入力キューに格納された最後のストリームデータのタイムスタンプを取得する（ステップ８０８）。
【０１００】
さらに、プロセッサ１０５は、制御管理表１１９から、ステップ８０８の処理で取得されたタイムスタンプよりも前の制御時刻５０３を有する制御コード５０２を検索し（ステップ８０９）、制御コード５０２が存在するか否かを判定する（ステップ８１０）。
【０１０１】
プロセッサ１０５は、制御コード５０２が存在する場合には（ステップ８１０の結果が「Ｙｅｓ」）、ストリームデータ入力キューに格納された最後のストリームデータにステップ８０９の処理で取得された制御コードを設定する（ステップ８１１）。
【０１０２】
プロセッサ１０５は、制御コード５０２が存在しない場合（ステップ８１０の結果が「Ｎｏ」）、又はステップ８１１の処理が終了した場合には、本処理を終了する（ステップ８０７）。
【０１０３】
図９は、本発明の実施の形態のストリームデータを処理する手順及びストリームデータ処理システムを制御する手順を示すフローチャートである。
【０１０４】
本処理では、プロセッサ１０５がクエリ処理制御部１１７を実行することによって、受信したストリームデータを処理する。さらに、ストリームタプル６０４又はストリームタプル６０９に付与された制御コード及び制御管理表１１９に登録された内容に基づいてストリームデータ処理システムを制御する。
【０１０５】
プロセッサ１０５は、ストリームデータ入力キューに格納されたストリームデータが処理可能な状態になると、クエリ処理制御部１１７による処理を開始する（ステップ９０１）。
【０１０６】
プロセッサ１０５は、ストリームデータ入力キューから、ストリームデータを取得し、ストリームタプルを生成する（ステップ９０２）。さらに、生成されたストリームタプルに制御コードが付与されているか否かを判定する（ステップ９０３）。
【０１０７】
プロセッサ１０５は、ストリームタプルに制御コードが付与されていない場合には（ステップ９０３の結果が「Ｎｏ」）、制御処理を実行せずに、クエリ処理部１１８によってクエリを実行する（ステップ９０６）。クエリの実行が終了した後、本処理を終了する（ステップ９０７）。
【０１０８】
一方、プロセッサ１０５は、ストリームタプルに制御コードが付与されている場合には（ステップ９０３の結果が「Ｙｅｓ」）、付与されている制御コードに基づいて、制御管理表１１９を検索する（ステップ９０４）。さらに、対応する制御コードが制御管理表１１９から検索されたか否かを判定する（ステップ９０５）。
【０１０９】
プロセッサ１０５は、制御コードが制御管理表１１９から検索されなかった場合には（ステップ９０５の結果が「Ｎｏ」）、クエリ処理部１１８によってクエリを実行する（ステップ９０６）。すなわち、付与された制御コードが不明の場合には、制御コードが付与されていない場合と同様に、通常のクエリを実行する。クエリの実行終了後、本処理を終了する（ステップ９０７）。
【０１１０】
プロセッサ１０５は、制御コードが制御管理表１１９から検索された場合には（ステップ９０７の結果が「Ｙｅｓ」）、制御管理表１１９から制御コードに対応する制御種別５０４を取得し、対応する処理を実行する（ステップ９０８）。
【０１１１】
プロセッサ１０５は、制御種別５０４の値が「Ｃｈａｎｇｅ」の場合には、ウィンドウマネージャ２０２のストリームタプル保持バッファ２０５に保持されたタプルを強制的に出力する（ステップ９０９）。さらに、制御管理表１１９のオプション１（５０５）及びオプション２（５０６）で指定されたクエリの切替処理を実行する（ステップ９１０）。ステップ９１０の処理では、オプション１（５０５）に指定されているクエリの実行を終了し、オプション２（５０６）に指定されているクエリの実行を開始する。
【０１１２】
プロセッサ１０５は、クエリ処理部１１８によってクエリを実行し（ステップ９０６）、さらに、制御管理表１１９から制御処理が完了した制御コードの行を削除する（ステップ９１１）。ステップ９１１の処理の終了後、本処理を終了する（ステップ９０７）。
【０１１３】
プロセッサ１０５は、制御種別５０４の値が「Ｓｔａｒｔ  Ｍｏｎｉｔｏｒ」の場合には、制御管理表１１９のオプション１（５０５）で指定されたクエリの性能情報を取得するためのモニタ処理を開始する（ステップ９１２）。
【０１１４】
プロセッサ１０５は、さらに、クエリ処理部１１８によってクエリを実行し（ステップ９０６）、制御管理表１１９から制御処理が完了した制御コードの行を削除する（ステップ９１１）。ステップ９１１の処理の終了後、本処理を終了する（ステップ９０７）。
【０１１５】
プロセッサ１０５は、制御種別５０４の値が「Ｓｔｏｐ  Ｍｏｎｉｔｏｒ」の場合には、制御管理表１１９のオプション１（５０５）で指定されたクエリの性能情報を取得するためのモニタ処理を終了する（ステップ９１３）。
【０１１６】
プロセッサ１０５は、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ９１１）、その後、本処理を終了する（ステップ９０７）。
【０１１７】
プロセッサ１０５は、制御種別５０４の値が「Ｓｈｕｔｄｏｗｎ」の場合には、ウィンドウマネージャ２０２のストリームタプル保持バッファ２０５に保持されたタプルを強制的に出力する（ステップ９０９）。さらに、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ９１１）、その後、ストリームデータ処理システムの終了処理を実行する（ステップ９１４）。
【０１１８】
以上、図７から図９までに示した手順に従って、クエリ３０１、クエリ３０２、コマンド４０６及びストリームタプル６０４を処理する流れを図１０を参照しながら説明する。
【０１１９】
図１０は、本発明の実施の形態のストリームデータ処理システム全体の流れを説明する図である。
【０１２０】
図１０に示す状態では、クエリＱ１（３０１）及びクエリＱ２（３０２）がクエリリポジトリ１２０に登録され、コマンド４０６が実行されたことによって、クエリＱ１（３０１）の実行が開始されている。この状態で、ストリームタプル６０４に示すようにストリームデータをサーバ計算機１０１が受信する。
【０１２１】
図１０では、縦軸を時間軸１００１とし、時間の経過とともにサーバ計算機１０１が受信したストリームデータが各モジュールによって処理される様子が表されている。
【０１２２】
本発明の実施の形態では、受信するストリームデータを｛値｝の形式と仮定しており、楕円１００２で表現している。時間軸１００１は、時刻０９：０２から１０：０３までの時間に対応しており、各ストリームデータがストリームデータ処理システム１０７に受け付けられた時刻を表している。例えば、ストリームデータ｛３０｝は時刻０９：０２に、ストリームデータ｛１０｝は時刻０９：０４にストリームデータ処理システム１０７に受け付けられたことを示している。
【０１２３】
図１０の横軸は、受け付けられたストリームデータが処理されるモジュール、及び生成されるデータを表している。さらに、図１０の左側上段の角丸四角（１００３）は、システムに受け付けられたストリームデータにウィンドウマネージャ２０２においてウィンドウ演算“［Ｒｏｗｓ  ２］”を適用した結果が格納されたストリームタプル保持バッファ２０５の各時刻での状態を示している。
【０１２４】
また、右側上段の角丸四角（１００７）は、ウィンドウマネージャ２０２から出力されたストリームタプルに、総和計算オペレータ２０７“ＳＵＭ（Ｏｕｔｐｕｔ）”を適用した結果が格納されている一時保存バッファ２０９を示している。また、各時刻で一時保存バッファ２０９に格納されている値（１００８）が示されている。一時保存バッファ２０９に格納された値を用いて指定された演算処理を実行し、処理結果１００９が出力される。
【０１２５】
前述したように、ウィンドウマネージャ２０２は、受け付けられたストリームデータに対し、クエリで指定されたウィンドウ演算を適用することによってストリームタプルを生成し、ストリームタプルのシステム内での生存期間を設定する。図１０に示す例では、生存期間の開始時刻を黒丸、終了時刻を白丸で表現している（１００５）。具体的には、ストリームデータ｛３０｝がウィンドウ演算によってストリームタプル｛３０｝（１００４）が生成され、ストリームタプル｛３０｝（１００４）の生存期間は時刻０９：０２から時刻０９：０８までの間となることを示している。
【０１２６】
本発明の実施の形態では、ストリームタプルの生存期間の開始時刻には、システム内部でストリームデータに増加分を表す符号を付けたタプル（以下「プラスタプル」）が生成される。また、ウィンドウからストリームデータが削除された場合、先に出力されたプラスタプルへの参照を有し、減少分を表す符号を付けたタプル（以下「マイナスタプル」）が生成される。生成されたプラスタプル及びマイナスタプルは、図１０の１００６に示している。以上の処理は、ウィンドウマネージャ２０２で実行される。
【０１２７】
図１０に示す例では、時刻０９：０２にはストリームデータ｛３０｝に対応するプラスタプル｛＋｝｛３０｝が生成され、時刻０９：０８に対応するマイナスタプル｛−｝｛３０｝が生成される。
【０１２８】
ウィンドウ演算に続く、後段のクエリ処理は、プラスタプル及びマイナスタプルが出力されたタイミングでプラスタプルとマイナスタプルに基づいて生成される差分情報に対して実行される。なお、プラスタプル及びマイナスタプルについては前述の非特許文献１に概念が記載されている。
【０１２９】
さらに、制御コード１（Ｃｈａｎｇｅ）が付与されたストリームデータ｛７０｝を受け付けると、クエリ処理制御部１１７からの通知によって、ストリームタプル保持バッファ２０５に保持されているストリームタプルを順次出力し、クエリＱ１の処理を完結させる。図１０では、タプル｛４０｝（１０１０）及び｛２０｝（１０１１）が出力される。そして、制御管理表１１９の制御コード１に対応するオプション１及びオプション２の登録内容に基づいて、実行されているクエリを切り替える。具体的には、クエリＱ１からクエリＱ２に切り替えられる。
【０１３０】
図１０の左側下段の角丸四角は、クエリ切り替え後のストリームタプル保持バッファ２０５の各時刻での状態を示している。すなわち、クエリＱ２に対して、システムに受け付けられたストリームデータに対して、ウィンドウマネージャ２０２でウィンドウ演算“［Ｒｏｗｓ  ２］”を適用した結果が格納されている。
【０１３１】
また、右側下段の角丸四角は、クエリ切り替え後、すなわちクエリＱ２において、ウィンドウマネージャ２０２から出力されるストリームタプルに対して、最大値計算オペレータ２０８“ＭＡＸ（Ｏｕｔｐｕｔ）”を適用した結果が格納された一時保存バッファ２０９の各時刻における状態を示している。
【０１３２】
図１１は、本発明の実施の形態のストリームデータ処理システム１０７のデータ入出力部１１４、制御コード設定部１１５及びクエリ処理部１１８で処理されたストリームデータの状態を説明する図である。
【０１３３】
図１１に示すクエリ処理部１１８は、図１０と同様にウィンドウマネージャ２０２及び集約計算モジュール２０６によって構成される。
【０１３４】
状態１１０１は、クエリを切り替える契機で受信された値が７０であるストリームデータがデータ入出力部１１４の入力キューに格納された状態である。
【０１３５】
状態１１０２は、データ入出力部１１４の入力キューに新たにデータが格納された場合に、制御コード設定部１１５によって制御コードを設定するか否かを判定する状態である。なお、図１１では、制御時刻が未設定の場合を想定している。
【０１３６】
状態１１０３は、制御コード設定部１１５による処理の結果、クエリを切り替える契機で受信された値が７０であるストリームデータに制御コードが付与された状態である。なお、制御コードが付与されたストリームデータを二重丸で表現する。
【０１３７】
状態１１０４から１１０６までは、入力キューからストリームデータを取り出し、取り出されたストリームデータに制御コードが付与されていない場合の状態である。
【０１３８】
状態１１０７は、制御コードが設定されたストリームデータを処理する状態である。制御コード付きのストリームデータを処理する場合には、図９に示した手順に基づいて、クエリ処理制御部１１７がクエリ処理部１１８を制御する。図１１に示す例では、クエリを切り替えるための制御種別が「Ｃｈａｎｇｅ」である制御コードが付与されているため、ステップ９０９の処理を実行する。具体的には、ウィンドウマネージャ２０２のストリームタプル保持バッファ２０５に保持されているストリームタプルを強制的に出力する。
【０１３９】
状態１１０８から１１１１は、強制的に出力されるストリームタプルを順次処理している状態である。
【０１４０】
図１２は、本発明の実施の形態のストリームデータ処理システム１０７で処理されたストリームデータの状態を説明する図であって、複数のウィンドウが連結されている場合を説明する図である。
【０１４１】
図１２に示す場合には、クエリ処理部１１８が複数のウィンドウマネージャ２０２で連結されている例を示している。
【０１４２】
状態１２０１は、図１１の状態１１０１と同様に、クエリを切り替える契機で受信された値が７０であるストリームデータがデータ入出力部１１４の入力キューに格納された状態である。
【０１４３】
状態１２０２は、図１１の状態１１０２と同様に、データ入出力部１１４の入力キューに新たにデータが格納された場合に、制御コード設定部１１５によって制御コードを設定するか否かを判定する状態である。なお、図１２では、図１１と同様に、制御時刻が未設定の場合を想定している。
【０１４４】
状態１２０３は、図１１の状態１１０３と同様に、制御コード設定部１１５による処理の結果、クエリを切り替える契機で受信された値が７０であるストリームデータに制御コードが付与された状態である。なお、図１１と同様に、制御コードが付与されたストリームデータを二重丸で表現する。
【０１４５】
状態１２０４は、入力キューからストリームデータを取り出し、取り出されたストリームデータに制御コードが付与されていない場合の状態である。
【０１４６】
状態１２０５は、制御コードが設定されたストリームデータを処理する状態である。制御コード付きのストリームデータを処理する場合には、図９に示した手順に基づいて、クエリ処理制御部１１７がクエリ処理部１１８を制御する。図１２に示す例では、図１１と同様に、クエリを切り替えるための制御種別が「Ｃｈａｎｇｅ」である制御コードが付与されているため、ステップ９０９の処理を実行する。図１２に示すように、複数のウィンドウ演算で構成されている場合には、ウィンドウマネージャ２０２が連結された順序に従って、ストリームタプル保持バッファ２０５に格納されたストリームタプルを出力する。
【０１４７】
状態１２０６から１２１０は、強制的に出力されるストリームタプルを順次処理している状態である。
【０１４８】
以上のように、本発明の実施の形態では、ストリームデータに制御コードを付与し、付与された制御コードに基づいて、ストリームデータ処理を制御することができる。
【０１４９】
また、以上に示した実施の形態では、処理を切り替える契機となるタイミングで受信されたストリームデータに制御コードを付与していたが、ストリームデータに制御コードを付与するのではなく、制御コードのみを含む特殊タプルを用いることも可能である。以下に、特殊タプルを用いた本発明の実施の形態の変形例について説明する。
【０１５０】
図１３Ａは、本発明の実施の形態の変形例のストリームデータ処理システム１０７によって処理されるストリームタプル１３０１の一例を示す図である。
【０１５１】
図１３Ａには、ストリームデータ処理システム１０７がストリームデータを受け付けた時刻でタイムスタンプを付与するシステムタイムスタンプモードの例を示している。基本的には図６Ｂに示したストリームタプル６０４と同じであるが、制御コードのみが設定されている特殊タプル（１３０２）が含まれる点で相違する。
【０１５２】
図１３Ｂは、本発明の実施の形態の変形例のストリームデータ処理システム１０７によって処理されるストリームタプル１３０３の一例を示す図である。
【０１５３】
図１３Ａには、クライアント計算機１（１２６）上のアプリケーション１（１２７）によってストリームデータにタイムスタンプが付与されるアプリケーションタイムスタンプモードの例を示している。基本的には図６Ｃに示したストリームタプル６０９と同じであるが、制御コードのみが設定されている特殊タプル（１３０４）が含まれる点で相違する。
【０１５４】
以下、特殊タプルを利用してストリームデータ処理システム１０７を制御する手順について説明する。
【０１５５】
図１４は、本発明の実施の形態の制御コードを含む特殊タプルをストリームデータ入力キューに挿入する手順を示すフローチャートである。
【０１５６】
本処理では、プロセッサ１０５が制御コード設定部１１５を実行することによって、制御管理表１１９に格納された制御コードを含む特殊タプルを生成し、ストリームデータ入力キューに生成された特殊タプルを挿入する。本処理によって、制御管理表１１９に基づいてストリームタプル１３０１又はストリームタプル１３０３が生成される。
【０１５７】
プロセッサ１０５は、コマンドが入力され、図７に示した制御管理表１１９が作成されると、受信したストリームデータに対し、制御コード設定部１１５を実行する（ステップ１４０１）。
【０１５８】
プロセッサ１０５は、まず、制御管理表１１９に制御時刻５０３が設定されているか否かを判定する（ステップ１４０２）。制御時刻５０３が設定されていない場合とは、例えば、図４Ａに示したコマンド（４０２、４０３、４０４、４０５）のように時刻の指定をせずにコマンドを入力した場合である。一方、制御時刻５０３が設定されている場合は、例えば、図４Ｂに示したコマンド４０６の二行目以降の各コマンドに対応する。
【０１５９】
プロセッサ１０５は、制御管理表１１９に制御時刻５０３が設定されていない場合には（ステップ１４０２の結果が「Ｎｏ」）、制御管理表１１９から制御コード５０２を取得する（ステップ１４０３）。
【０１６０】
プロセッサ１０５は、ストリームデータ入力キューの先頭に格納されたストリームデータからタイムスタンプを取得する（ステップ１４０４）。さらに、制御管理表１１９の制御時刻５０３を、ステップ１４０４の処理で取得されたタイムスタンプに基づいて更新する（ステップ１４０５）。
【０１６１】
プロセッサ１０５は、ステップ１４０３の処理で取得された制御コードを含む特殊タプルを、ストリームデータ入力キューの先頭に格納されたストリームデータの前に挿入し（ステップ１４０６）、本処理を終了する（ステップ１４０７）。
【０１６２】
一方、プロセッサ１０５は、制御管理表１１９に制御時刻５０３が設定されている場合には（ステップ１４０２の結果が「Ｙｅｓ」）、ストリームデータ入力キューに格納された最後のストリームタプルのタイムスタンプを取得する（ステップ１４０８）。
【０１６３】
さらに、プロセッサ１０５は、制御管理表１１９から、ステップ１４０８の処理で取得されたタイムスタンプよりも前の制御時刻５０３を有する制御コード５０２を検索し（ステップ１４０９）、制御コード５０２が存在するか否かを判定する（ステップ１４１０）。
【０１６４】
プロセッサ１０５は、制御コード５０２が存在する場合には（ステップ１４１０の結果が「Ｙｅｓ」）、ステップ１４０９の処理で取得された制御コードを含む特殊タプルを、ストリームデータ入力キューに格納された最後のストリームデータの前に挿入し（ステップ１４１１）、本処理を終了する（ステップ１４０７）。
【０１６５】
図１５は、本発明の実施の形態の変形例のストリームデータを処理する手順及びストリームデータ処理システムを制御する手順を示すフローチャートである。
【０１６６】
本処理では、プロセッサ１０５がクエリ処理制御部１１７を実行することによって、ストリームデータを処理する。さらに、ストリームタプル１３０１又はストリームタプル１３０３に付与された制御コード及び制御管理表１１９に登録された内容に基づいてストリームデータ処理システムを制御する。
【０１６７】
プロセッサ１０５は、ストリームデータ入力キューに格納されたストリームデータが処理可能な状態になると、クエリ処理制御部１１７による処理を開始する（ステップ１５０１）。
【０１６８】
プロセッサ１０５は、ストリームデータ入力キューから、処理対象のストリームデータ又は制御コード付き特殊タプルを取得する（ステップ１５０２）。さらに、制御コード付き特殊タプルが取得されたか否かを判定する（ステップ１５０３）。
【０１６９】
プロセッサ１０５は、制御コード付き特殊タプルが取得されなかった場合、すなわち、ストリームデータが取得された場合には（ステップ１５０３の結果が「Ｎｏ」）、クエリ処理部１１８によって通常のクエリ処理を実行し（ステップ１５０６）、本処理を終了する（ステップ１５１４）。
【０１７０】
一方、プロセッサ１０５は、制御コード付き特殊タプルが取得された場合には（ステップ１５０３の結果が「Ｙｅｓ」）、特殊タプルに付与された制御コードに基づいて、制御管理表１１９を検索する（ステップ１５０４）。さらに、対応する制御コードが制御管理表１１９から検索されたか否かを判定する（ステップ１５０５）。
【０１７１】
プロセッサ１０５は、制御コードが制御管理表１１９から検索されなかった場合には（ステップ１５０５の結果が「Ｎｏ」）、本処理を終了する（ステップ１５１４）。
【０１７２】
プロセッサ１０５は、制御コードが制御管理表１１９から検索された場合には（ステップ１５０７の結果が「Ｙｅｓ」）、制御管理表１１９から制御コードに対応する制御種別５０４を取得し、対応する処理を実行する（ステップ１５０７）。
【０１７３】
プロセッサ１０５は、制御種別５０４の値が「Ｃｈａｎｇｅ」の場合には、ウィンドウマネージャ２０２のストリームタプル保持バッファ２０５に保持されたタプルを強制的に出力する（ステップ１５０８）。さらに、制御管理表１１９のオプション１（５０５）及びオプション２（５０６）で指定されたクエリの切替処理を実行する（ステップ１５０９）ステップ１５０９の処理では、オプション１（５０５）に指定されているクエリの実行を終了し、オプション２（５０６）に指定されているクエリを実行する。
【０１７４】
プロセッサ１０５は、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ１５１０）、本処理を終了する（ステップ１５１４）。
【０１７５】
プロセッサ１０５は、制御種別５０４の値が「Ｓｔａｒｔ  Ｍｏｎｉｔｏｒ」の場合には、制御管理表１１９のオプション１（５０５）で指定されたクエリの性能情報を取得するためのモニタ処理を開始する（ステップ１５１１）。
【０１７６】
プロセッサ１０５は、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ１５１０）、本処理を終了する（ステップ１５１４）。
【０１７７】
プロセッサ１０５は、制御種別５０４の値が「Ｓｔｏｐ  Ｍｏｎｉｔｏｒ」の場合には、制御管理表１１９のオプション１（５０５）で指定されたクエリの性能情報を取得するためのモニタ処理を終了する（ステップ１５１２）。
【０１７８】
プロセッサ１０５は、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ１５１０）、本処理を終了する（ステップ１５１４）。
【０１７９】
プロセッサ１０５は、制御種別５０４の値が「Ｓｈｕｔｄｏｗｎ」の場合には、ウィンドウマネージャ２０２のストリームタプル保持バッファ２０５に保持されたタプルを強制的に出力する（ステップ１５０８）。さらに、制御管理表１１９から制御処理が完了した制御コードの行を削除し（ステップ１５１０）、その後、ストリームデータ処理システムの終了処理を実行する（ステップ１５１３）。
【０１８０】
本発明の実施の形態によれば、時々刻々と到着する大量のデータをリアルタイム処理するストリームデータ処理システムにおいて、ストリームデータを参照することによって区切りとなるデータを特定することができる。したがって、入力されるストリームデータに基づいてストリームデータ処理を制御することが可能となり、リアルタイムアプリケーションによって制御可能なデータ処理基盤を提供することができる。
【０１８１】
本発明の実施の形態によれば、特定期間のすべてのストリームデータに制御コードを付与するのではなく、処理を切り替える契機となるストリームデータにのみ制御コードを付与するため、ストリームデータを加工するためのオーバヘッドを最小限に抑えることができる。
【０１８２】
本発明の実施の形態によれば、入力されたコマンドにしたがって制御コードをストリームデータに付与するため、ストリームデータソース側でデータに識別子を付与する処理などを必要とせずに、ストリームデータ処理システム側で処理を完結させることができる。
【０１８３】
本発明の実施の形態によれば、特定データの到着を契機として、システムを終了させるなどの制御を行うことが可能となるため、指定された時刻において処理を完了させてからシステムを終了させるなどの運用が可能となる。
【０１８４】
本発明の実施の形態の変形例によれば、受信したストリームデータを加工しないため、従来の演算処理オペレータをそのまま使用することが可能となる。したがって、従来のストリームデータ処理システムに本発明を適用するために必要な最小限のモジュールを追加又は変更することで、クエリ処理部１１８などの利用を継続することができる。
【図面の簡単な説明】
【０１８５】
【図１】本発明の実施の形態のストリームデータ処理システムを含む計算機システムの一例を示す図である。
【図２】本発明の実施の形態のクエリ処理部の構成の一例を示すブロック図である。
【図３Ａ】本発明の実施の形態のストリームデータ処理システムで実行されるクエリを示す図である。
【図３Ｂ】本発明の実施の形態のストリームデータ処理システムで実行されるクエリを示す図である。
【図４Ａ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【図４Ｂ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【図４Ｃ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【図４Ｄ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【図４Ｅ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定無し）の一例を示す図である。
【図４Ｆ】本発明の実施の形態のストリームデータ処理システムに入力されるコマンド（時間指定有り）の一例を示す図である。
【図５】本発明の実施の形態の制御管理表の具体例を示す図である。
【図６Ａ】本発明の実施の形態のサーバ計算機に入力されるストリームデータソースの構成の一例を示す図である。
【図６Ｂ】本発明の実施の形態の受信したストリームデータに基づいて生成されたストリームタプルの一例を示す図である。
【図６Ｃ】本発明の実施の形態の受信したストリームデータに基づいて生成されたストリームタプルの別の例を示す図である。
【図７】本発明の実施の形態の制御管理表を作成する手順を示すフローチャートである。
【図８】本発明の実施の形態のストリームデータに制御コードを付与する手順を示すフローチャートである。
【図９】本発明の実施の形態のストリームデータを処理する手順及びストリームデータ処理システムを制御する手順を示すフローチャートである。
【図１０】本発明の実施の形態のストリームデータ処理システム全体の流れを説明する図である。
【図１１】本発明の実施の形態のストリームデータ処理システムのデータ入出力部、制御コード設定及びクエリ処理部で処理されたストリームデータの状態を説明する図である。
【図１２】本発明の実施の形態のストリームデータ処理システムで処理されたストリームデータの状態を説明する図であって、複数のウィンドウが連結されている場合を説明する図である。
【図１３Ａ】本発明の実施の形態の変形例のストリームデータ処理システムによって処理されるストリームタプルの一例を示す図である。
【図１３Ｂ】本発明の実施の形態の変形例のストリームデータ処理システムによって処理されるストリームタプルの一例を示す図である。
【図１４】本発明の実施の形態の変形例の制御コードを含む特殊タプルをストリームデータ入力キューに挿入する手順を示すフローチャートである。
【図１５】本発明の実施の形態の変形例のストリームデータを処理する手順及びストリームデータ処理システムを制御する手順を示すフローチャートである。
【符号の説明】
【０１８６】
１０１    サーバ計算機
１０２    主記憶
１０３    補助記憶装置
１０４    出力装置
１０５    プロセッサ
１０６Ａ    入力装置
１０６Ｂ    インタフェース
１０７    ストリームデータ処理システム
１０８    ストリームデータ処理システム管理部
１０９    コマンド管理部
１１０    コマンド解析部
１１１    コマンド実行部
１１２    クエリ管理部
１１３    データ管理部
１１４    データ入出力部
１１５    制御コード設定部
１１６    クエリ処理管理部
１１７    クエリ処理制御部
１１８    クエリ処理部
１１９    制御管理表
１２０    クエリリポジトリ
１２１    コマンド
１２２    クエリ
１２３    ストリームデータソース
１２４    結果
１２５    ネットワーク
１２６    クエリ計算機１
１２７    アプリケーション１
１２８    コマンド
１２９    クエリ
１３０    ストリームデータソース
１３１    結果
１３２    クエリ計算機２
１３２    アプリケーション２
１３４    ネットワーク
１３５    ストリームデータソース
２０１    メモリマネージャ
２０２    ウィンドウマネージャ
２０３    生存期間決定部
２０４    差分情報生成部
２０５    ストリームタプル保持バッファ
２０６    集約計算モジュール
２０７    総和計算オペレータ
２０８    最大値計算オペレータ
２０９    一時保存バッファ
２１０    集約計算処理に必要なオペレータ
２１１    最小値計算オペレータ
２１２    平均値計算オペレータ
２１３    クエリ処理に必要なオペレータ
２１４    選択オペレータ
２１５    結合オペレータ
３０１    クエリ
３０２    クエリ
４０１〜４０６    コマンド
５０２    制御コード
５０３    制御時刻
５０４    制御種別
５０５    オプション１
５０６    オプション２
６０１    ストリームデータソース
６０２    Ｏｕｔｐｕｔカラム
６０３    ストリームデータ
６０４    ストリームタプル
６０５    Ｓｙｓｔｅｍ  Ｔｉｍｅカラム
６０７    制御コードカラム
６０９    ストリームタプル
６１０    ＡＰ  Ｔｉｍｅカラム
６１２    制御コードカラム
【図１】
2010134599.tif 000003
【図２】
2010134599.tif 000004
【図３Ａ】
2010134599.tif 000005
【図３Ｂ】
2010134599.tif 000006
【図４Ａ】
2010134599.tif 000007
【図４Ｂ】
2010134599.tif 000008
【図４Ｃ】
2010134599.tif 000009
【図４Ｄ】
2010134599.tif 000010
【図４Ｅ】
2010134599.tif 000011
【図４Ｆ】
2010134599.tif 000012
【図５】
2010134599.tif 000013
【図６Ａ】
2010134599.tif 000014
【図６Ｂ】
2010134599.tif 000015
【図６Ｃ】
2010134599.tif 000016
【図７】
2010134599.tif 000017
【図８】
2010134599.tif 000018
【図９】
2010134599.tif 000019
【図１０】
2010134599.tif 000020
【図１１】
2010134599.tif 000021
【図１２】
2010134599.tif 000022
【図１３Ａ】
2010134599.tif 000023
【図１３Ｂ】
2010134599.tif 000024
【図１４】
2010134599.tif 000025
【図１５】
2010134599.tif 000026