(57)【要約】【課題】ストリームデータ処理システムにおいて、時刻の異なる複数の入力情報を同時に処理する。【解決手段】時刻情報が含まれたストリームデータを受信し、予め登録されたクエリにしたがって処理を実行するストリームデータ処理装置のストリームデータ処理方法であって、ストリームデータ処理装置に入力された入力情報毎に、各入力情報を構成するストリームデータを複数抽出し、該ストリームデータの入力間隔と、前記ストリームデータの処理時刻である第１の基準時刻とを算出する第１のステップと、入力情報毎に算出した入力間隔と、第１の基準時刻とに基づいて、前記複数の入力情報の新たな処理の時刻とする第２基準時刻を算出する第２のステップと、前記第２の基準時刻に基づいて、前記複数の入力情報毎に、新たな時刻情報が付与されたストリームデータを生成する第３のステップと、を含む。【選択図】図２
2011113273.tif 000002
【特許請求の範囲】
【請求項１】
時刻情報が含まれたストリームデータを受信し、予め登録されたクエリにしたがって処理を実行するストリームデータ処理装置のストリームデータ処理方法であって、
前記ストリームデータ処理装置は、
複数のストリームデータから構成される複数の入力情報を受信するストリームデータ受信部と、
前記複数の入力情報が有する時刻情報を、該複数の入力情報毎に分析する時刻情報分析部と、
前記分析の結果に基づいて、新たな入力情報をそれぞれ生成する時刻情報調整部と、
前記新たな入力情報のそれぞれについて、前記クエリに従って処理を実行するストリームデータ処理部と、を有し、
前記ストリームデータ処理方法は、
前記時刻情報分析部が、前記入力情報毎に、各入力情報を構成するストリームデータを複数抽出し、該ストリームデータの入力間隔と、前記ストリームデータの処理時刻である第１の基準時刻とを算出する第１のステップと、
前記時刻情報調整部が、前記入力情報毎に算出した前記入力間隔と、前記第１の基準時刻とに基づいて、前記複数の入力情報の新たな処理の時刻とする第２基準時刻を算出する第２のステップと、
前記時刻情報調整部が、前記第２の基準時刻に基づいて、前記複数の入力情報毎に新たな時刻情報が付与されたストリームデータを生成する第３のステップと、
を含むことを特徴とするストリームデータ処理方法。
【請求項２】
請求項１に記載のストリームデータ処理方法であって、
前記ストリームデータ処理方法は、
前記ストリームデータ処理部が、前記新たな時刻情報に基づいて、前記複数の入力情報を処理する第４のステップを更に含むことを特徴とする。
【請求項３】
請求項１又は２に記載のストリームデータ処理方法であって、
前記第２のステップは、前記時刻情報調整部が、前記複数の入力情報のストリームデータを用いて処理を実行するクエリで定義されると共に前記ストリームデータのうち処理を行う対象であるストリームデータの時間範囲が示された時刻精度と、前記抽出されたストリームデータに付与された前記時刻情報とに基づいて、前記第２の基準時間を算出するステップを含むことを特徴とする。
【請求項４】
請求項１から３の何れか一項に記載のストリームデータ処理方法であって、
前記ストリームデータ処理装置は、前記計算機システムの時刻を管理し、
前記第３のステップは、前記時刻情報調整部が、前記第１の基準時刻のうち、前記計算機システムの時刻に最も近い前記第１の基準時刻を用いて、前記第２の時刻情報を決定するステップを含むことを特徴とする。
【請求項５】
請求項１から４の何れか一項に記載のストリームデータ処理方法であって、
前記ストリームデータ処理装置は、前記第２の基準時間を決定するための情報である、調整精度情報及び調整時刻情報を受信する時刻情報定義設定部を有し、
前記第２のステップは、前記時刻情報調整部が、前記複数の入力情報毎のストリームデータの前記入力間隔及び前記第１の基準時刻の比較結果と、前記調整精度情報と、前記調整時刻情報と、に基づいて、前記第２の基準時刻を算出するステップを含むことを特徴とする。
【請求項６】
プロセッサと、前記プロセッサと接続されたメモリとを備え、時刻情報が含まれたストリームデータを受信し、予め登録されたクエリにしたがって処理を実行するストリームデータ処理装置を有する計算機システムのストリームデータ処理プログラムであって、
複数のストリームデータから構成される複数の入力情報を受信し、前記入力情報毎に、各入力情報を構成するストリームデータを複数抽出し、該ストリームデータの入力間隔と、前記ストリームデータの処理時刻である第１の基準時刻とを算出する第１の手順と、
前記入力情報毎に算出した前記入力間隔と、前記第１の基準時刻とに基づいて、前記複数の入力情報の新たな処理の時刻とする第２基準時刻を算出する第２の手順と、
前記第２の基準時刻に基づいて、前記複数の入力情報毎に新たな時刻情報が付与されたストリームデータを生成する第３の手順と、
を前記ストリームデータ処理装置に実行させることを特徴とするストリームデータ処理プログラム。
【請求項７】
請求項６に記載のストリームデータ処理プログラムであって、
前記ストリームデータ処理プログラムは、
前記新たな時刻情報に基づいて、前記複数の入力情報を処理する第４の手順を更に前記ストリームデータ処理装置に実行させることを特徴とする。
【請求項８】
請求項６又は７に記載のストリームデータ処理プログラムであって、
前記第２の手順は、前記複数の入力情報のストリームデータを用いて処理を実行するクエリで定義されると共に前記ストリームデータのうち処理を行う対象であるストリームデータの時間範囲が示された時刻精度と、前記抽出されたストリームデータに付与された前記時刻情報とに基づいて、前記第２の基準時間を算出する手順を含むことを特徴とする。
【請求項９】
請求項６から８の何れか一項に記載のストリームデータ処理プログラムであって、
前記ストリームデータ処理装置は、前記計算機システムの時刻を管理し、
前記第３の手順は、前記第１の基準時刻のうち、前記計算機システムの時刻に最も近い前記第１の基準時刻を用いて、前記第２の時刻情報を決定する手順を含むことを特徴とする。
【請求項１０】
請求項６から９の何れか一項に記載のストリームデータ処理プログラムであって、
前記ストリームデータ処理装置は、前記第２の基準時間を決定するための情報である、調整精度情報及び調整時刻情報を受信し、
前記第２の手順は、前記複数の入力情報毎のストリームデータの前記入力間隔及び前記第１の基準時刻の比較結果と、前記調整精度情報と、前記調整時刻情報と、に基づいて、前記第２の基準時刻を算出する手順を含むことを特徴とする。
【請求項１１】
プロセッサと、前記プロセッサと接続されるメモリとを備え、時刻情報が含まれたストリームデータを受信し、予め登録されたクエリにしたがって処理を実行するストリームデータ処理装置であって、
前記メモリは、
複数のストリームデータから構成される複数の入力情報を受信するストリームデータ受信部と、
前記複数の入力情報が有する時刻情報を、該複数の入力情報毎に分析する時刻情報分析部と、
前記分析の結果に基づいて、新たな入力情報をそれぞれ生成する時刻情報調整部と、
前記新たな入力情報のそれぞれについて、前記クエリに従って処理を実行するストリームデータ処理部と、を有し、
前記ストリームデータ処理装置は、
前記入力情報毎に、各入力情報を構成するストリームデータを複数抽出し、該ストリームデータの入力間隔と、前記ストリームデータの処理時刻である第１の基準時刻とを算出し、
前記入力情報毎に算出した前記入力間隔と、前記第１の基準時刻とに基づいて、前記複数の入力情報の新たな処理の時刻とする第２の基準時刻を算出し、
前記第２の基準時刻に基づいて、前記複数の入力情報毎に新たな時刻情報が付与されたストリームデータを生成することを特徴とするストリームデータ処理装置。
【請求項１２】
請求項１１に記載のストリームデータ処理装置であって、
前記ストリームデータ処理装置は、更に、
前記新たな時刻情報に基づいて、前記複数の入力情報を処理することを特徴とする。
【請求項１３】
請求項１１又は１２に記載のストリームデータ処理装置であって、
前記ストリームデータ処理装置は、
前記第２の基準時刻を算出する場合に、前記複数の入力情報のストリームデータを用いて処理を実行するクエリで定義されると共に前記ストリームデータのうち処理を行う対象であるストリームデータの時刻範囲が示された時刻精度と、前記抽出されたストリームデータに付与された前記時刻情報とに基づいて、前記第２の基準時間を算出することを特徴とする。
【請求項１４】
請求項１１から１３の何れか一項に記載のストリームデータ処理装置であって、
前記ストリームデータ処理装置は、前記計算機システムの時刻を管理し、
前記第２のストリームデータを生成する場合に、前記第１の基準時刻のうち、前記計算機システムの時刻に最も近い前記第１の基準時刻を用いて、前記第２の時刻情報を決定することを特徴とする。
【請求項１５】
請求項１１から１４の何れか一項に記載のストリームデータ処理装置であって、
前記ストリームデータ処理装置は、前記第２の基準時間を決定するための情報である、調整精度情報及び調整時刻情報を受信する時刻情報定義設定部を有し、
前記第２の基準時刻を算出する場合に、前記複数の入力情報毎のストリームデータの前記入力間隔及び前記第１の基準時刻の比較結果と、前記調整精度情報と、前記調整時刻情報と、に基づいて、前記第２の基準時刻を算出することを特徴とする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理方法及びプログラムに関し、特に、複数ストリームの同時処理を実行するストリームデータ処理方法及びストリームデータ処理プログラムに関する。
【背景技術】
【０００２】
近年、情報通信技術の発展によって、アプリケーションが取り扱う情報データ量が爆発的に増加している。
【０００３】
従来のデータベース管理システム（ＤＢＭＳ）では、受信したデータが一旦データベースなどの記憶領域に格納され、その後に、記憶領域に格納された受信データを用いて一括処理が実行されている。そのため、データベースに一旦受信データを格納するためにタイムラグが生じ、またデータ量が爆発的に増えると、計算量が線形的に増加するため、顧客が要求する処理性能を満たせなくなるアプリケーションが出てくる。
【０００４】
今後の情報通信技術の発展を考慮すると、ＩＴ基盤の性能をより向上させることが必須となる。そこで、リアルタイムに集計及び分析することを可能とするストリームデータ処理システムが注目を集めている。
【０００５】
ストリームデータ処理システムは、ストリームデータを計算対象とする。ここで、ストリームデータとは、途切れることなく到来する時刻順のデータ系列である。例えば、ＲＦＩＤ読取り情報、交通情報及び株価情報等がストリームデータに相当する。
【０００６】
また、ストリームデータ処理システムでは、予め定義されたシナリオにしたがってデータ処理が実行される。シナリオは、ＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を利用する（例えば、特許文献２参照）。ＣＱＬは、ＤＢＭＳで広く用いられているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が拡張されたものである。ＣＱＬは、ＳＱＬと同様にシナリオをクエリで記述する。ストリームデータ処理システムでのクエリは従来のＳＱＬと以下の点が異なる。
【０００７】
１点目は、複数の連結クエリによって構成されている点である。例えば、特許文献１に開示されるように、従来のＳＱＬは、１入力１出力を対象とした処理であり、単一のクエリから構成されるようになっている。
【０００８】
一方、ストリームデータ処理システムでは、複数のクエリを連結させ、中間結果を計算するようになっている。このため、単一のクエリでは実現できない複雑なデータ処理を可能にする。
【０００９】
２点目は、例えば、特許文献２に開示されるように、固有のウィンドウの概念を導入している点である。ストリームデータは、連続的に途切れることなく到来し続けるため、演算対象となるデータを抽出するために、時系列データを有限のデータ集合に区切る必要がある。そこで、ストリームデータ処理システムでは、ウィンドウ（スライディングウィンドウ）の概念を導入し、ウィンドウの変化差異を計算対象とする差分計算を採用している。
【００１０】
スライディングウィンドウには、大きく２種類ある。具体的には、入力情報の直前ｎ個分を保持するウィンドウ（ＲＯＷウィンドウ）と入力情報の直前ｎ時間分を保持するウィンドウ（ＲＡＮＧＥウィンドウ）との２種類である。
【００１１】
これらウィンドウを利用する事によって（例えば、ＲＯＷウィンドウを使用した場合）、任意の時刻に対して、直前ｎ個分の入力情報をリアルタイムに近い時刻で集計及び分析することが可能となる。
【００１２】
スラィディングウィンドウは、従来のデータベースシステム処理システムにはない、ストリームデータ処理システムが有する固有のオペレータであり、ＣＱＬを導入することによって可能となる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平９−３４７５９号公報
【特許文献２】特開２００６−３３８４３２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ストリームデータ処理では、無限に到来するデータを時刻順に処理するが、データに付与される時刻情報（タイムスタンプ）は、ストリームデータ処理システムがデータ到着時に付与することも、データ送信元が付与することもできる。例えば、交通情報や株価情報の様にリアルタイムの処理が要求されるデータの場合、ストリームデータ処理システムが、データの到着時に時刻情報を付与するようになっている。他方、ログ情報の様にバッチ処理を行う場合、データ入力元（データ送信元）が時刻情報を付与するようになっている。ストリームデータ処理システムは、ストリームデータに対してこの様に付与されたタイムスタンプに従って、順次処理を行うようになっている。
【００１５】
バッチ処理のようにデータ入力元（データ送信元）の時刻をタイムスタンプに付与する場合、日時や時刻が全く異なる複数系統のデータが同時にストリームデータ処理システムに入力される場合がある。
【００１６】
このように、ストリームデータ処理システムは、タイムスタンプ順に処理を行う特徴から一系統ずつしか処理できないという問題がある。
【００１７】
本発明は、日時や時刻が異なる複数系統のデータを、ストリームデータ処理システムが同時に処理すること目的とする。
【課題を解決するための手段】
【００１８】
本発明の代表的な一例を示せば以下の通りである。即ち、時刻情報が含まれたストリームデータを受信し、予め登録されたクエリにしたがって処理を実行するストリームデータ処理装置のストリームデータ処理方法であって、前記ストリームデータ処理装置は、複数のストリームデータから構成される複数の入力情報を受信するストリームデータ受信部と、前記複数の入力情報が有する時刻情報を、該複数の入力情報毎に分析する時刻情報分析部と、前記分析の結果に基づいて、新たな入力情報をそれぞれ生成する時刻情報調整部と、前記新たな入力情報のそれぞれについて、前記クエリに従って処理を実行するストリームデータ処理部と、を有し、前記ストリームデータ処理方法は、前記時刻情報分析部が、前記入力情報毎に、各入力情報を構成するストリームデータを複数抽出し、該ストリームデータの入力間隔と、前記ストリームデータの処理時刻である第１の基準時刻とを算出する第１のステップと、前記時刻情報調整部が、前記入力情報毎に算出した前記入力間隔と、前記第１の基準時刻とに基づいて、前記複数の入力情報の新たな処理の時刻とする第２基準時刻を算出する第２のステップと、前記時刻情報調整部が、前記第２の基準時刻に基づいて、前記複数の入力情報毎に新たな時刻情報が付与されたストリームデータを生成する第３のステップと、を含むことを特徴とする。
【発明の効果】
【００１９】
本発明によれば、ストリームデータ処理における処理効率（メモリ使用量や計算量）を向上させるという効果がある。
【００２０】
また、ストリームデータに対する時刻情報の操作が不要となり、運用を簡略化できるという効果がある。
【図面の簡単な説明】
【００２１】
【図１】本発明を適用した第１の実施形態のストリームデータ処理システムの構成例を示すブロック図である。
【図２】本発明を適用した第１の実施形態の入力データ解析部及びストリームデータ処理部が実行する処理の流れを示す説明図である。
【図３】本発明を適用した第１の実施形態のストリームデータ処理システムにおける入力情報のストリーム定義及びクエリ定義の一例を示す説明図である。
【図４】本発明を適用した第１の実施形態の入力情報１とサンプリングデータ１の一例を示す説明図である。
【図５】本発明を適用した第１の実施形態の入力情報２とサンプリングデータ２の一例を示す説明図である。
【図６】本発明を適用した第１の実施形態のサンプリングデータ１、サンプリングデータ２及び基準時刻の一例を示す説明図である。
【図７】本発明を適用した第１の実施形態における新たなタイムスタンプが付与されたストリームデータ１及びストリームデータ２の一例を示す説明図である。
【図８】本発明を適用した第１の実施形態における、新たに付与されたタイムスタンプに基づくストリームデータ処理システムの処理順序を示す説明図である。
【図９】本発明を適用した第１の実施形態の入力データ解析部の処理を説明するフローチャートである。
【図１０】本発明を適用した第１の実施形態のタイムスタンプ調整部が実行する処理を説明するフローチャートである。
【図１１】本発明を適用した第２の実施形態のストリームデータ処理計算機の構成例を示すブロック図である。
【図１２】本発明を適用した第２の実施形態のタイムスタンプ定義管理テーブルと基準時刻の一例を示す説明図である。
【図１３】本発明を適用した第２の実施形態における新たなタイムスタンプが付与されたストリームデータ１、ストリームデータ２、及びストリームデータ３の一例を示す説明図である。
【図１４】本発明を適用した第２の実施形態のタイムスタンプ調整部が実行する処理を説明するフローチャートである。
【発明を実施するための形態】
【００２２】
＜第１の実施形態＞
図１は、本発明の第１の実施形態のストリームデータ処理システムの構成例を示すブロック図である。
【００２３】
本発明の第１の実施形態のストリームデータ処理システムは、データ送信計算機１１００、ストリームデータ処理計算機１２００及び結果受信計算機１３００を備える。
【００２４】
データ送信計算機１１００とストリームデータ処理計算機１２００とは、ネットワーク１５００を介して互いに接続され、又結果受信計算機１３００とストリームデータ処理計算機１２００とは、ネットワーク１６００を介して互いに接続される。また、データ送信計算機１１００は、ストリームデータソース１４１０と、ネットワーク１４００を介して接続される。
【００２５】
なお、データ送信計算機１１００、ストリームデータ処理計算機１２００及び結果受信計算機１３００を単一の筐体上で実装する構成であってもよいし、いずれか二つの計算機を組み合わせて単一の筐体上に実装する構成であってもよい。また、各計算機が備える機能を組み合わせて、一以上の筐体上で実現するものであってもよい。
【００２６】
データ送信計算機１１００は、ストリームデータ処理計算機１２００に送信するストリームデータを生成し、生成されたストリームデータをストリームデータ処理計算機１２００に送信する。
【００２７】
ストリームデータの生成処理及び送信処理は、データ送信計算機１１００が有するプログラムによって実現されてもよいし、専用ハードウェアによって実現されてもよい。
【００２８】
本第１の実施形態では、データ送信計算機１１００上で送信アプリケーションが実行される例について説明する。
【００２９】
データ送信計算機１１００は、ＣＰＵ１１１０、ＤＩＳＫ１１２０及びメモリ１１３０を備える。
【００３０】
ＣＰＵ１１１０は、メモリ１１３０上に展開されたプログラムを実行する。
【００３１】
ＤＩＳＫ１１２０は、メモリ１１３０上に展開されたプログラムが利用するデータを格納する。
【００３２】
メモリ１１３０は、ＣＰＵ１１１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを格納する。メモリ１１３０は、アプリケーション実行部１１３１及びストリームデータ送信部１１３２を含む。
【００３３】
ＣＰＵ１１１０が、メモリ１１３０上に展開されたプログラムを実行することによって、ストリームデータ送信部１１３２から、ネットワーク１５００を介してストリームデータ処理計算機１２００にストリームデータが送信される。
【００３４】
生成されるストリームデータは、例えば、ＤＩＳＫ１１２０から読み出されたものを用いて生成されたものでもよいし、ストリームデータソース１４１０からネットワーク１４００を介して取得されたものでもよい。
【００３５】
また、異なる入力元からは、異なるストリームデータが生成される。ここで、入力元が異なるとは、ＤＩＳＫ１１２０から読み出されるファイルが異なる場合、ストリームデータソース１４１０から取得される情報が異なる計算機のものである場合等が考えられる。
【００３６】
以下、データ送信計算機１１００が生成したストリームデータを入力情報という。
【００３７】
ストリームデータ処理計算機１２００は、受信した入力情報に基づいて、各種処理を実行する。ストリームデータ処理計算機１２００は、ＣＰＵ１２１０、ＤＩＳＫ１２２０、及びメモリ１２３０を備える。ストリームデータ処理計算機１２００は、例えば、ブレード型計算機システム又はＰＣサーバなどの計算機システムであってもよい。
【００３８】
ＣＰＵ１２１０は、メモリ１２３０上に展開されたプログラムを実行する。
【００３９】
ＤＩＳＫ１２２０は、メモリ１２３０上のプログラムが利用するデータを格納する。
【００４０】
メモリ１２３０は、ＣＰＵ１２１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを格納する。メモリ１２３０は、オペレーティングシステム１２４０並びに当該オペレーティングシステム１２４０上で動作するプログラムである入力データ解析部１２５０及びストリームデータ処理部１２６０を含む。
【００４１】
また、メモリ１２３０は、実行されるクエリの定義情報（図示省略）、クエリシナリオ（図示省略）及び入力情報の入力若しくは出力の機能を提供するための情報であるストリームの定義情報（図示省略）を格納する。クエリの定義情報（図示省略）及びストリームの定義情報（図示省略）の詳細は、図３を用いて後述する。
【００４２】
また、メモリ１２３０には、ストリームデータ処理システムにおける時刻を管理する機能（図示省略）が格納される。当該機能によって、ストリームデータ処理計算機１２００は、ストリームデータ処理システムにおける時刻を把握することが可能となる。なお、当該機能は、タイムスタンプ調整部１２５３等他の構成に含まれてもよい。
【００４３】
入力データ解析部１２５０は、受信した入力情報を解析する。入力データ解析部１２５０は、ストリームデータ受信部１２５１、タイムスタンプ分析部１２５２、タイムスタンプ調整部１２５３、入力ストリームデータ送信部１２５４及びクエリ分析部１２５５を有する。
【００４４】
ストリームデータ受信部１２５１は、データ送信計算機１１００のストリームデータ送信部１１３２から、ネットワーク１５００を介して入力情報を受信する。なお、ストリームデータ受信部１２５１は複数あってもよい。この場合、各ストリームデータ受信部１２５１は、それぞれ、複数の入力情報を同時に受信することができる。
【００４５】
タイムスタンプ分析部１２５２は、ストリームデータ受信部１２５１が受信した入力情報に付与されたタイムスタンプとクエリ分析部１２５５から送信される分析結果とから、入力情報のタイムスタンプに関する情報を分析する。
【００４６】
タイムスタンプ調整部１２５３は、タイムスタンプ分析部１２５２及びクエリ分析部１２５５の分析結果に基づいて新たなタイムスタンプを生成し、ストリームデータ処理部１２６０に入力するストリームデータに、その生成したタイムスタンプを付与する。
【００４７】
以下、ストリームデータ処理部１２６０に送信されるストリームデータを入力ストリームデータという。
【００４８】
入力ストリームデータ送信部１２５４は、タイムスタンプ調整部１２５３によって生成された新たなタイムスタンプが付与された入力ストリームデータを、ストリームデータ処理部１２６０に送信する。
【００４９】
クエリ分析部１２５５は、メモリ１２３０上に格納されたクエリシナリオに基づいて、前記入力情報を処理する時間範囲を分析する。つまり、クエリ分析部１２５５は、処理対象となる時間範囲を分析する。また、クエリ分析部１２５５は、クエリシナリオを分析し、当該分析結果を保持する。
【００５０】
ストリームデータ処理部１２６０は、入力ストリームデータの処理を実行する。ストリームデータ処理部１２６０は、入力ストリームデータ受信部１２６１、クエリ処理部１２６２及びストリームデータ送信部１２６３を有する。
【００５１】
入力ストリームデータ受信部１２６１は、入力データ解析部１２５０の入力ストリームデータ送信部１２５４から送信された入力ストリームデータを受信する。
【００５２】
クエリ処理部１２６２は、メモリ１２３０上に格納されたクエリシナリオにしたがって、入力ストリームデータ受信部１２６１が受信した入力ストリームデータを集計し又分析する。
【００５３】
ストリームデータ送信部１２６３は、クエリ処理部１２６２が処理した結果を、ネットワーク１６００を介して、結果受信計算機１３００に送信する。
【００５４】
結果受信計算機１３００は、ストリームデータ処理計算機１２００によって処理された結果であるストリームデータを受信し、受信したストリームデータを用いて各種所定の処理を実行する。ストリームデータの受信処理及び所定の処理は、結果受信計算機１３００が有するプログラムによって実現されてもよいし、専用ハードウェアによって実現されてもよい。
【００５５】
結果受信計算機１３００は、ＣＰＵ１３１０、ＤＩＳＫ１３２０、メモリ１３３０を備える。本実施形態では、結果受信計算機１３００上で受信アプリケーションが実行される例について説明する。
【００５６】
ＣＰＵ１３１０はメモリ１３３０上に展開されたプログラムを実行する。
【００５７】
ＤＩＳＫ１３２０は、メモリ１３３０上に展開されたプログラムが利用するデータを格納する。
【００５８】
メモリ１３３０は、ＣＰＵ１３１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを格納する。メモリ１３３０は、ストリームデータ受信部１３３１及びアプリケーション実行部１３３２を含む。
【００５９】
ＣＰＵ１３１０が、メモリ１３３０上に展開されたプログラムを実行することによって、ストリームデータ受信部１３３１が、ネットワーク１６００を介してストリームデータ処理計算機１２００のストリームデータ送信部１２６３からストリームデータを受信し、アプリケーション実行部１３３２が、受信したストリームデータを用いて所定の処理を実行する。
【００６０】
所定の処理は、例えば、外部記憶装置（図示省略）への保存や、ディスプレイ装置（図示省略）への表示などである。
【００６１】
なお、ネットワーク１４００、ネットワーク１５００及びネットワーク１６００は、イーサネット（登録商標）、光ファイバなどによって接続されるローカルエリアネットワーク（ＬＡＮ）、ＬＡＮよりも低速なインターネットを含むワイドエリアネットワーク（ＷＡＮ）であってもよい。
【００６２】
また、ストリームデータの例としては、ファイナンシャルアプリケーションでの株価配信情報、小売業でのＰＯＳデータ、交通情報システムでのプローブカー情報及び計算機システム管理でのエラーログなどが考えられる。
【００６３】
次に、本第１の実施形態が有する機能の具体的な処理手順について説明する。
【００６４】
図２は、本第１の実施形態の入力データ解析部１２５０及びストリームデータ処理部１２６０が実行する処理の流れを示す説明図である。
【００６５】
図２に示す例では、タイムスタンプ分析部１（１２５２Ａ）は入力情報１（２１０１）を保持し、タイムスタンプ分析部２（１２５２Ｂ）は入力情報２（２１１１）を保持する。
【００６６】
入力情報１（２１０１）及び入力情報２（２１１１）は、データとタイムスタンプとから構成されるｎ個（ｎは整数）のストリームデータである。
【００６７】
タイムスタンプ調整部１２５３は、タイムスタンプ分析部１（１２５２Ａ）が保持する入力情報１（２１０１）に含まれるｎ個のタイムスタンプを用いてサンプリングデータ１（２２１０）を算出し、タイムスタンプ分析部２（１２５２Ｂ）が保持する入力情報２（２１１１）に含まれるｎ個のタイムスタンプを用いてサンプリングデータ２（２２３０）を算出する。
【００６８】
タイムスタンプ調整部１２５３は、サンプリングデータ１（２２１０）とサンプリングデータ２（２２３０）とを比較し、当該比較結果に基づいて基準時刻（２２２０）を算出する。
【００６９】
タイムスタンプ調整部１２５３は、算出された基準時刻に基づいて、新たなタイムスタンプを入力情報へ付与してストリームデータ１（２３０１）及びストリームデータ２（２３１１）を生成する。さらに、タイムスタンプ調整部１２５３は、生成されたストリームデータ１（２３０１）を入力ストリームデータ受信部１（１２６１Ａ）へ送信し、生成されたストリームデータ２（２３１１）を入力ストリームデータ受信部２（１２６１Ｂ）へ送信する。
【００７０】
クエリ処理部１２６２は、入力ストリームデータ受信部１（１２６１Ａ）及び入力ストリームデータ受信部２（１２６１Ｂ）が受信した入力ストリームデータを分析し、又集計する。
【００７１】
次に、本実施形態での入力情報及び分析シナリオを具体的に説明する。
【００７２】
本実施形態では、前年度のログ情報と当日のログ情報とから、それぞれ１時間毎のストリームデータの平均値を算出し、同日同時間帯の平均値における前年比を算出する例を用いて説明する。
【００７３】
図３は、本第１の実施形態のストリームデータ処理システムにおける入力情報のストリーム定義及びクエリ定義の一例を示す説明図である。
【００７４】
入力情報１に対するストリーム定義３００は、前年度のデータとタイムスタンプとを持つストリームデータを「ＤＡＴＡ＿ＯＦ＿ＰＲＥＶＩＯＵＳ＿ＹＥＡＲ」という名称で定義していることを示す。具体的な入力情報１（２１０１）の例は図４を用いて後述する。
【００７５】
入力情報２に対するストリーム定義３０１は、当日のデータとタイムスタンプとを持つストリームデータを「ＤＡＴＡ＿ＯＦ＿ＴＯＤＡＹ」という名称で定義していることを示す。具体的な入力情報２（２１１１）の例は図５を用いて後述する。
【００７６】
クエリ１のＣＱＬ定義３１０は、前年度の入力情報に対して１時間毎のストリームデータの平均値を算出するシナリオを「ＡＶＧ＿ＯＦ＿ＴＯＤＡＹ」という名称のクエリで定義している。具体的なクエリの処理の例は図４を用いて後述する。
【００７７】
クエリ２のＣＱＬ定義３１１は、当日の入力情報に対して１時間毎のストリームデータの平均値を算出するシナリオを「ＡＶＧ＿ＯＦ＿ＴＯＤＡＹ」という名称のクエリで定義している。具体的なクエリの処理の例は図５を用いて後述する。
【００７８】
クエリ３のＣＱＬ定義３１２は、クエリ１とクエリ２とを結合し、クエリ１から得られた前年度のストリームデータの平均値とクエリ２から得られた当日のストリームデータの平均値とから、該当時間帯（所定の時間帯）における対象データの前年比を算出するシナリオを「ＤＡＴＡ＿ＹＥＡＲ＿ＯＮ＿ＹＥＡＲ」という名称のクエリで定義している。
【００７９】
図４は、本第１の実施形態の入力情報１（２１０１）とサンプリングデータ１（２２１０）の一例を示す説明図である。
【００８０】
入力情報１（２１０１）は、入力情報１に対するストリーム定義３００によって定義された前年度のデータとタイムスタンプとを含む。
【００８１】
入力情報１（２１０１）における１カラム目４１０は、入力情報１に対するストリーム定義３００のＩＮＴＥＧＥＲ型のスキーマｖａｌｕｅに格納される値を示し、２カラム目４１１は、入力情報１に対するストリーム定義３００のＴＩＭＥＳＴＡＭＰ型のスキーマｔｉｍに格納される値を示す。
【００８２】
以下、１カラム目４１０をデータ４１０といい、２カラム目４１１をタイムスタンプ４１１という。
【００８３】
図４に示す例では、入力情報１（２１０１）に含まれる入力データ４２０は、データ４１０が「１００」、タイムスタンプ４１１が「２００８／０７／０１  １０：００：１０」であることを示す。なお、本第１の実施形態では、タイムスタンプ４１１には、ストリームデータ処理計算機１２００以外のクライアント装置（図示省略）等によって付与された値が格納される。
【００８４】
クエリ１のＣＱＬ定義３１０は、入力情報１（２１０１）のうち、入力された１時間分のストリームデータの量の平均値を求めるクエリであることを示す。
【００８５】
ＦＲＯＭ句に指定された「ＤＡＴＡ＿ＯＦ＿ＰＲＥＶＩＯＵＳ＿ＹＥＡＲ［１  ＨＯＵＲ］」は、入力情報１に対するストリーム定義３００において定義されたストリームを入力データとし、１時間分のストリームデータを処理の対象とすることを示している。また、ＳＥＬＥＣＴ句に指定されたＡＶＧ関数を用いて、入力情報１のデータ４１０の平均値が算出される。
【００８６】
クエリの時刻精度４３０は、クエリ１のＣＱＬ定義３１０に指定された時間ウィンドウの情報である。図４に示す例では、時間ウィンドウの情報は［１  ＨＯＵＲ］であるので、クエリの時刻精度４３０は、「１  ＨＯＵＲ」となる。つまり、クエリ１では１時間分のストリームデータを処理対象としていることを示す。
【００８７】
サンプリングデータ１（２２１０）は、基準時刻４４０と平均入力間隔４４１とを含む。
【００８８】
基準時刻４４０は、サンプリングデータ１（２２１０）の先頭データである入力データ４２０のタイムスタンプ４１１に示された時刻について、クエリの時刻精度４３０以下の値を切り捨てた値である。つまり、入力情報における処理対象の時刻を示す。基準時刻４４０に示された時刻を基点として、クエリの時刻精度４３０に示された時間間隔におけるストリームデータが、処理対象となるストリームデータであることを示す。
【００８９】
図４に示す例では、クエリの時刻精度４３０が「１  ＨＯＵＲ」であることから、入力データ４２０のタイムスタンプ「２００８／０７／０１  １０：００：１０」の「時間」より小さい値、つまり「分」及び「秒」を切り捨てた時刻「２００８／０７／０１  １０：００：００」が基準時刻４４０として設定される。なお、クエリの時刻制度４３０が「ｎ  ＭＩＮＵＴＥ（ｎは自然数）」又は「ｎ  ＳＥＣＯＮＤ（ｎは自然数）」である場合、この例では、入力データ４２０の基準時刻は、それぞれ「２００８／０７／０１  １０：００：００」、「２００８／０７／０１  １０：００：１０」として設定される。
【００９０】
平均入力間隔４４１は、ストリームデータが入力された時間間隔の平均値である。具体的には、タイムスタンプ４１１から算出された入力間隔の平均値である。
【００９１】
図５は、本発明の第１の実施形態の入力情報２（２１１１）とサンプリングデータ２（２２２０）の一例を示す説明図である。
【００９２】
入力情報２（２１１１）は、入力情報２に対するストリーム定義３０１によって定義された当日のデータとタイムスタンプとを含む。
【００９３】
入力情報２（２１１１）における１カラム目５１０は、入力情報２に対するストリーム定義３０１のＩＮＴＥＧＥＲ型のスキーマｖａｌｕｅに格納される値を示し、２カラム目５１１は、入力情報２に対するストリーム定義３０１のＴＩＭＥＳＴＡＭＰ型のスキーマｔｉｍに格納される値を示す。
【００９４】
以下、１カラム目５１０をデータ５１０といい、２カラム目５１１をタイムスタンプ５１１という。
【００９５】
図５に示す例では、入力情報２（２１１１）に含まれる入力データ５２０は、データ５１０が「１３０」、タイムスタンプ５１２が「２００９／０７／０１  １０：００：０５」であることを示す。なお、本実施形態では、タイムスタンプ５１１には、ストリームデータ処理計算機１２００以外のクライアント装置（図示省略）等によって付与された値が格納される。
【００９６】
クエリ２のＣＱＬ定義３１１は、入力情報２（２１１１）のうち、入力された１時間分のストリームデータの平均値を求めるクエリであることを示す。
【００９７】
ＦＲＯＭ句に指定された「ＤＡＴＡ＿ＯＦ＿ＴＯＤＡＹ［１  ＨＯＵＲ］」は、入力情報２に対するストリーム定義３０１において定義されたストリームを入力データとし、１時間分のストリームデータを処理の対象とすることを示している。また、ＳＥＬＥＣＴ句に指定されたＡＶＧ関数を用いて、入力情報２のデータ５１０の平均値が算出される。
【００９８】
クエリの時刻精度５３０は、クエリ２のＣＱＬ定義３１１に指定された時間ウィンドウの情報である。図５に示す例では、時間ウィンドウの情報は［１  ＨＯＵＲ］であるので、クエリの時刻精度５３０は、「１  ＨＯＵＲ」となる。つまり、クエリ２では１時間分のストリームデータを処理対象としていることを示す。
【００９９】
サンプリングデータ２（２２２０）は、基準時刻５４０と平均入力間隔５４１とを含む。
【０１００】
基準時刻５４０は、サンプリングデータ２（２２２０）の先頭データである入力データ５２０のタイムスタンプ５１１に示された時刻について、クエリの時刻精度５３０以下の値を切り捨てた値である。つまり、入力情報における処理対象の時刻を示す。基準時刻５４０に示された時刻を基点として、クエリの時刻精度５３０に示された時間間隔におけるストリームデータが、処理対象となるストリームデータであることを示す。
【０１０１】
図５に示す例では、クエリの時刻精度５３０が「１  ＨＯＵＲ」であることから、入力データ５２０のタイムスタンプ「２００９／０７／０１  １０：００：０５」の「時間」より小さい値、つまり「分」及び「秒」を切り捨てた時刻「２００９／０７／０１  １０：００：００」が基準時刻５４０として設定される。
【０１０２】
平均入力間隔５４１は、ストリームデータが入力された時間間隔の平均値である。具体的には、タイムスタンプ５１１から算出された入力間隔の平均値である。
【０１０３】
図６は、本第１の実施形態のサンプリングデータ１（２２１０）、サンプリングデータ２（２２２０）及び基準時刻の一例を示す説明図である。
【０１０４】
クエリ３のＣＱＬ定義３１２は、クエリ１のＣＱＬ定義３１１によって得られた前年度のデータ４１０の平均値と、クエリ２のＣＱＬ定義３１２によって得られた当日のデータ５１０の平均値とから、当該時間帯における平均値の前年度比を求めるクエリであることを示す。
【０１０５】
ＦＲＯＭ句に指定された「ＡＶＧ＿ＯＦ＿ＰＲＥＶＩＯＵＳ＿ＹＥＡＲ［１  ＨＯＵＲ］」と「ＡＶＧ＿ＯＦ＿ＴＯＤＡＹ［１  ＨＯＵＲ］」とは、それぞれ、クエリ１のＣＱＬ定義３１１の結果及びクエリ２のＣＱＬ定義３１２の結果を入力とし、１時間分のストリームデータを処理の対象とすることを示している。また、ＳＥＬＥＣＴ句に指定された計算式は、平均値の比を算出する式であることを示す。
【０１０６】
サンプリングデータ１（２２１０）及びサンプリングデータ２（２２２０）は、図４及び図５に示したものと同一である。
【０１０７】
クエリの時刻精度６１３は、クエリ３のＣＱＬ定義３１２において、時刻ウィンドウの指定値が「ＨＯＵＲ」であるから、クエリ３が「時間」単位で処理が実行されることを示す。
【０１０８】
サンプリングデータ１（２２１０）における基準時刻４４０の値「２００８／０７／０１  １０：００：００」と、サンプリングデータ２（２２２０）における基準時刻５４０の値「２００９／０７／０１  １０：００：００」とを比較すると、「年」の値が異なる以外は同一の値である。
【０１０９】
また、サンプリングデータ１（２２１０）における平均入力間隔４４１は「０：１０：２１」であり、サンプリングデータ２（２２２０）における平均入力間隔５４１は「０：１０：２９」である。したがって、両サンプリングデータの入力間隔は共に「分」のオーダーであることが分かる。
【０１１０】
以上から、入力情報１（２１０１）と入力情報２（２１１１）とはそれぞれタイムスタンプの「年」だけ異なる同時刻帯のデータであると判定される。つまり、同時に実行することが可能な処理であると判定される。
【０１１１】
新たな基準時刻６２０は、同時に実行される処理のデータに新たに設定するタイムスタンプを算出するための時刻である。本実施形態では、全てのサンプリングデータの基準時刻のうち最も新しい時刻が設定される。
【０１１２】
図６に示す例では、基準時刻６２０において、クエリの時刻精度６１３の「ＨＯＵＲ」より大きい「年」、「月」及び「日」は、「２００９／０７／０１」と設定され、基準時刻６２０のクエリの時刻精度６１３以下の「時」、「分」及び「秒」は、タイムスタンプの調整対象外であるため、「−−：−−：−−」と設定される。
【０１１３】
図７は、本第１の実施形態における新たなタイムスタンプが付与されたストリームデータ１（２３０１）及びストリームデータ２（２３１１）の一例を示す説明図である。
【０１１４】
ストリームデータ１（２３０１）の１カラム目７００は、ＩＮＴＥＧＥＲ型のスキーマｖａｌｕｅに格納される値である。
【０１１５】
ストリームデータ１（２３０１）の２カラム目７０１は、ストリームデータ処理計算機１２００以外のクライアント装置（図示省略）等によって付与された値が格納される。具体的には、タイムスタンプ４１１と同一の値が格納される。
【０１１６】
ストリームデータ１（２３０１）の３カラム目７０２は、新たに付与されたタイムスタンプである。具体的には、図６において算出された基準時刻６２０「２００９／０７／０１」に基づいて、新たに生成されたタイムスタンプである。
【０１１７】
以下、１カラム目７００をデータ７００といい、２カラム目７０１をタイムスタンプ７０１といい、３カラム目７０２を新たなタイムスタンプ７０２という。
【０１１８】
図７に示す例では、新たなタイムスタンプ７０２は、タイムスタンプ７０１の「年」、「月」、及び「日」に対して、基準時刻６２０「２００９／０７／０１」が新たに設定され、「時」、「分」及び「秒」の値は、元のタイムスタンプ７０１の値がそのまま設定される。
【０１１９】
ストリームデータ２（２３１１）は、図６で算出された基準時刻６２０「２００９／０７／０１」とサンプリングデータ２（２２２０）の基準時刻５４０とが同一であるため、新たなタイムスタンプは設定されない。したがって、ストリームデータ２（２３１１）の１カラム目７２０は入力情報２（２１１１）のデータ５１０が格納され、２カラム目７２１は入力情報２（２１１１）のタイムスタンプ５１１が格納される。３カラム目７２２には何も格納されない。
【０１２０】
以下、１カラム目７２０をデータ７２０といい、２カラム目７２１をタイムスタンプ７２１といい、３カラム目７２２を新たなタイムスタンプ７２２という。
【０１２１】
図８は、本第１の実施形態における、新たに付与されたタイムスタンプに基づくストリームデータ処理システムの処理順序を示す説明図である。
【０１２２】
ストリームデータ８０１は、図７におけるストリームデータ１（２３０１）のデータ７００を示す。
【０１２３】
ストリームデータ８１１は、図７におけるストリームデータ２（２３１１）のデータ７２０を示す。
【０１２４】
ストリームデータ１（８００）及びストリームデータ２（８１０）は、入力されたとき（入力情報１（２１０１）及び入力情報２（２１１１））のタイムスタンプにおける「年」の値が異なるストリームデータ、即ちタイムスタンプが異なるストリームデータである。しかし、図８に示すように、新たなタイムスタンプが付与されることによって同時間帯のストリームデータとして同時に処理が実行される。
【０１２５】
次に、本実施形態の処理の流れを説明する。
【０１２６】
図９は、本第１の実施形態の入力データ解析部１２５０の処理を説明するフローチャートである。
【０１２７】
まず、ストリームデータ受信部１２５１は、データ送信計算機１１００から２以上の入力情報を受信する（ステップＳ９００）。
【０１２８】
タイムスタンプ分析部１２５２は、受信した入力情報毎に所定の数のストリームデータを抽出する（ステップＳ９０１）。抽出されるストリームデータの数は、ストリーム定義及びクエリのＣＱＬ定義等を参照することによって分かる。抽出されたストリームデータは、タイムスタンプ調整部１２５３に送信される。
【０１２９】
クエリ分析部１２５５は、ストリーム定義及びクエリのＣＱＬ定義を参照して、受信した入力情報毎にクエリの時刻精度を取得する（ステップＳ９０２）。取得されたクエリの時刻精度は、タイムスタンプ調整部１２５３に送信される。
【０１３０】
タイムスタンプ調整部１２５３は、入力されたストリームデータ及びクエリの時刻精度に基づいて、入力情報毎にサンプリングデータを算出する（ステップＳ９０３）。即ちタイムスタンプ調整部１２５３は、入力間隔と基準時刻（「第１の基準時刻」に相当。）を算出する。
【０１３１】
タイムスタンプ調整部１２５３は、算出された各々のサンプリングデータを比較し、新たな基準時刻（「第２の基準時刻」に相当。）を算出し、算出された新たな基準時刻に基づいて、新たなタイムスタンプが付与された入力ストリームデータを生成する（ステップＳ９０４）。なお、ステップＳ９０４における処理の詳細については、図１０を用いて後述する。生成された入力ストリームデータは、入力ストリームデータ送信部１２５４に送信される。
【０１３２】
入力ストリームデータ送信部１２５４は、受信した入力ストリームデータをストリームデータ処理部１２６０に送信する（ステップＳ９０５）。
【０１３３】
以上の処理によって、ストリームデータ処理部１２６０は、入力ストリームデータに付与された新たにタイムスタンプに基づいて、同時に複数の処理を実行することができる。
【０１３４】
図１０は、本第１の実施形態のタイムスタンプ調整部１２５３が実行する処理を説明するフローチャートである。
【０１３５】
タイムスタンプ調整部１２５３は、クエリ分析部１２５５から結合クエリの時刻精度を取得する（ステップＳ１０００）。ここで、結合クエリとは、複数のクエリの結果を入力として、処理を実行するクエリである。例えば、図２に示す例では、クエリ３が結合クエリとなる。
【０１３６】
なお、タイムスタンプ調整部１２５３は、クエリ分析部１２５５が分析した結果を取得することによって、結合クエリを把握できる。以下の処理は、結合クエリ毎に実行される。
【０１３７】
タイムスタンプ調整部１２５３は、結合クエリに入力された入力情報に対する全てのサンプリングデータにおけるクエリ時刻精度が同一であるか否かを判定する（ステップＳ１００１）。
【０１３８】
結合クエリに入力された入力情報に対する全てのサンプリングデータのクエリ時刻精度が同一でないと判定された場合、タイムスタンプ調整部１２５３は、ステップＳ１００５に進む。
【０１３９】
結合クエリに入力された入力情報に対する全てのサンプリングデータのクエリ時刻精度が同一であると判定された場合、タイムスタンプ調整部１２５３は、当該結合クエリに入力された入力情報が同時に実行することが可能な処理対象であるか否かを判定する（ステップＳ１００２）。
【０１４０】
具体的には、以下の二つの判定処理が実行される。なお、いずれの判定処理から実行されてもよい。
【０１４１】
第１の判定処理では、タイムスタンプ調整部１２５３は、全ての入力情報に対するサンプリングデータの平均入力間隔が同一であるか否かを判定する。
【０１４２】
当該判定は、クエリの時刻精度に示された時刻を誤差の範囲とした場合に、全てのサンプリングデータの平均入力間隔が当該誤差の範囲内に含まれるか否かが判定される。
【０１４３】
全てのサンプリングデータの平均入力間隔が当該誤差の範囲内に含まれる場合には、全ての入力情報に対するサンプリングデータの平均入力間隔が同一であると判定される。一方、全てのサンプリングデータの平均入力間隔が当該誤差の範囲内に含まれない場合には、全ての入力情報に対するサンプリングデータの平均入力間隔が同一でないと判定される。
【０１４４】
例えば、クエリの時刻精度が「１  ＨＯＵＲ」である場合、平均入力間隔が「０：１０：００」のサンプリングデータと、平均入力間隔が「０：２０：００」のサンプリングデータとは、誤差１時間以内に含まれるため、同一の平均入力間隔のサンプリングデータと判定される。
【０１４５】
第２の判定処理では、タイムスタンプ調整部１２５３は、各サンプリングデータにおける基準時刻において、クエリの時刻精度に示された時刻以下の値が同一であるか否かを判定する。
【０１４６】
例えば、クエリの時刻精度が「１  ＨＯＵＲ」である場合、基準時間が「２００８／０７／０１  １０：００：００」のサンプリングデータと、基準時間が「２００９／０７／０１  １０：００：００」のサンプリングデータとは、「時間」以下の値が同一であるため、クエリの時刻精度に示された時刻以下の値が同一であると判定される。
【０１４７】
第１の判定処理及び第２の判定処理の判定が共に満たされる場合、当該結合クエリに入力された入力情報が同時に実行することが可能な処理対象であると判定される。
【０１４８】
少なくともいずれか一方の判定処理を満たさない場合、当該結合クエリに入力された入力情報が同時に実行することが可能な処理対象でないと判定される。
【０１４９】
当該結合クエリに入力された入力情報が同時に実行することが可能な処理対象でないと判定された場合、タイムスタンプ調整部１２５３は、ステップＳ１００５に進む。
【０１５０】
当該結合クエリに入力された入力情報が同時に実行することが可能な処理対象であると判定された場合、タイムスタンプ調整部１２５３は、結合クエリに入力された入力情報におけるサンプリングデータの基準時間のうち最新の基準時刻を取得し、クエリの時刻精度と当該取得された新たな基準時刻とに基づいて、新たな基準時間を算出する（ステップＳ１００３）。
【０１５１】
具体的には、クエリの時刻精度に示された時刻以下の値は調整対象外とし、クエリの時刻精度に示された時刻より大きい値を、サンプリングデータの基準時刻のうち最も新しい基準時刻に設定することによって新たな基準時刻を算出する。
【０１５２】
例えば、クエリの時刻精度が「１  ＨＯＵＲ」である場合、「年」、「月」及び「日」の単位がタイムスタンプの調整対象となり、最も新しい基準時刻の「年」、「月」及び「日」が、新たな基準時間として設定される。
【０１５３】
タイムスタンプ調整部１２５３は、新たに算出された基準時刻に基づいて、入力情報に新たなタイムスタンプを付与して、入力ストリームデータを生成する（ステップＳ１００４）。
【０１５４】
具体的には、新たな基準時刻と、各サンプリングデータの基準時刻とを比較し、新たな基準時刻の全ての値が、サンプリングデータにおける基準時刻に示された時刻の値と同一であるか否かを判定する。即ち新たな基準時刻に設定された時刻の値と、当該時刻に対応する単位のサンプリングデータにおける基準時刻の値とが同一であるか否かを判定する。
【０１５５】
例えば、新たな基準時刻に「年」、「月」及び「日」が設定されている場合、サンプリングデータにおける基準時刻の「年」、「月」及び「日」の値が、新たな基準時刻に「年」、「月」及び「日」の値と全て同一であるか否かが判定される。
【０１５６】
新たな基準時刻において設定された時刻の全ての値が、サンプリングデータの基準時刻に示された時刻の値と同一であると判定された場合、タイムスタンプ調整部１２５３は、新たなタイムスタンプを付与しない。この場合、元のタイムスタンプのみが付与された入力ストリームデータが生成される。
【０１５７】
新たな基準時刻において設定された時刻の全ての値が、サンプリングデータの基準時刻に示された時刻の値と同一でないと判定された場合、新たな基準時刻を、元のタイムスタンプに上書きしたものを新たなタイムスタンプとして入力情報に付与して、入力ストリームデータを生成する。
【０１５８】
タイムスタンプ調整部１２５３は、生成された入力ストリームデータを入力ストリームデータ送信部１２５４に送信し、処理を終了する（ステップＳ１００５）。
【０１５９】
第１の実施形態によれば、任意のクエリに入力された複数のストリームデータが同時に実行可能な処理対象であると判定された場合、新たなタイムスタンプを付与することによって、同時に処理が実行される。
【０１６０】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。
【０１６１】
本発明の第２の実施形態は、外部から定義されたタイムスタンプの調整精度及び調整時刻にしたがって新たな基準時刻を算出する点が本発明の第１の実施形態と異なる。以下、第１の実施形態との差異を中心に説明する。
【０１６２】
第２の実施形態のストリーミング処理システムの構成は、第１の実施形態と同一であるため説明を省略する。第２の実施形態では、ストリームデータ処理計算機１１０００の構成が第１の実施形態と異なる。
【０１６３】
図１１は、本第２の実施形態のストリームデータ処理計算機１１０００の構成例を示すブロック図である。なお、図１と同一の構成のものについては、同一の符号を用いる。また、図１と同一の構成については、説明を省略する。
【０１６４】
図１との相違点は、ストリームデータ処理計算機１１０００のメモリ１１３００がタイムスタンプ定義設定部１１４００を含む。
【０１６５】
タイムスタンプ定義設定部１１４００は、タイムスタンプに関する定義情報を管理する。タイムスタンプ定義設定部１１４００は、タイムスタンプ定義登録部１１４０１、タイムスタンプ定義管理テーブル１１４０２及びタイムスタンプ定義管理部１１４０３を含む。
【０１６６】
タイムスタンプ定義登録部１１４０１は、ユーザからタイムスタンプに関する定義を受けつける。なお、タイムスタンプに関する定義は、ストリームデータ処理計算機１１０００を操作するユーザから受け付けてもよいし、クライアント装置（図示省略）を操作するユーザから受け付けてもよい。
【０１６７】
タイムスタンプ定義管理テーブル１１４０２は、タイムスタンプ定義登録部１１４０１が受け付けた定義の内容を格納する。
【０１６８】
タイムスタンプ定義管理部は１１４０３、タイムスタンプ定義管理テーブル１１４０２を管理し、タイムスタンプ調整部１２５３からの取得要求に応じて定義情報を送信する。
【０１６９】
以下の説明において、本第２の実施形態では、三つのストリームが定義されている場合について説明する。各々のストリームでは、入力情報１、入力情報２及び入力情報３が定義される。また、入力情報１からストリームデータ１、入力情報２からストリームデータ２、入力情報３からストリームデータ３が生成される。
【０１７０】
図１２は、本第２の実施形態のタイムスタンプ定義管理テーブル１１４０２と基準時刻の一例を示す説明図である。
【０１７１】
サンプリングデータ１（１２００１）、サンプリングデータ２（１２００２）及びサンプリングデータ２（１２００３）は、個々の入力情報から算出された基準時刻及び平均入力間隔を含む。
【０１７２】
クエリの時刻精度１２１００は、入力情報１、入力情報２及び入力情報３を結合するクエリの時刻精度であり、「ＨＯＵＲ」という値から「時間」単位で処理を行うことを示す。
【０１７３】
タイムスタンプ定義１２２００は、タイムスタンプ定義管理テーブル１１４０２に格納される定義内容を示す。タイムスタンプ定義１２２００は、ストリーム名１２２０１、精度調整単位１２２０２、及び調整時刻１２２０３を含む。
【０１７４】
ストリーム名１２２０１は、ストリームを識別するための識別子である。精度調整単位１２２０２は、タイムスタンプを調整する時間単位を示す。調整時刻１２２０３は、タイムスタンプを調整するための時刻を示す。
【０１７５】
図１２に示す例では、タイムスタンプ定義１２２００の定義データ１２３００には、ストリーム名１２２０１に「Ｓ１、Ｓ２、Ｓ３」、精度調整単位１２２０２に「ＨＯＵＲ」、調整時刻１２２０３に「１２：００：００＋０９００」が格納される。
【０１７６】
つまり、ストリーム名が「Ｓ１、Ｓ２、Ｓ３」のストリームにおいて、精度単位を「時間」としてタイムスタンプを調整し、調整時刻を「１２：００：００＋０９００」と設定することを示す。
【０１７７】
新たな基準時刻１２４００は、サンプリングデータ１（１２００１）、サンプリングデータ２（１２００２）、サンプリングデータ（１２００３）及びクエリの時刻精度１２１００から決定された年、月及び日「２００９／０７／０１」と、タイムスタンプ定義１２２００から決定された時刻「１２：−−：−−＋０９００」を含む。
【０１７８】
図１２に示す例では、サンプリングデータ１（１２００１）はタイムゾーンがＪＳＴ、サンプリングデータ２（１２００２）はタイムゾーンがＥＳＴ、サンプリングデータ３（１２００３）はタイムゾーンがＧＭＴで付与されたタイムスタンプデータであることを示す。新たな基準時刻１２４００は、異なるタイムゾーンのタイムスタンプを同一タイムゾーンのＪＳＴが設定される。
【０１７９】
タイムスタンプ調整部１２５３は、新たな基準時刻１２４００に基づいて処理を実行する。なお、他の構成によって実行される処理は、第１の実施形態と同一であるため説明を省略する。
【０１８０】
図１３は、本第２の実施形態における新たなタイムスタンプが付与されたストリームデータ１（１３０００）、ストリームデータ２（１３１００）、及びストリームデータ３（１３２００）の一例を示す説明図である。
【０１８１】
ストリームデータ１（１３０００）の１カラム目のデータ１３００１及び２カラム目のタイムスタンプ１３００２は、入力情報１と同一の値である。３カラム目のタイムスタンプ１３００３は、基準時刻１２４００とサンプリングデータ１（１２００１）の基準時刻とが同一のため、付与されていないことを示す。
【０１８２】
ストリームデータ２（１３１００）の１カラム目のデータ１３１０１及び２カラム目のタイムスタンプ１３１０２は、入力情報２と同一の値である。３カラム目のタイムスタンプ１３１０３は、基準時刻１２４００に基づいて付与された新たなタイムスタンプである。
【０１８３】
ストリームデータ３（１３２００）の１カラム目のデータ１３２０１及び２カラム目のタイムスタンプ１３２０２は、入力情報３と同一の値である。３カラム目のタイムスタンプ１３２０３は、基準時刻１２４００に基づいて付与された新たなタイムスタンプである。
【０１８４】
次に、本第２の実施形態の処理の流れを説明する。
【０１８５】
図１４は、本発明の第２の実施形態のタイムスタンプ調整部１２５３が実行する処理を説明するフローチャートである。
【０１８６】
なお、以下で説明する処理は、結合クエリ毎に実行される。
【０１８７】
タイムスタンプ調整部１２５３は、タイムスタンプ定義が定義されているか否かを判定する（ステップＳ１４００１）。
【０１８８】
具体的には、タイムスタンプ調整部１２５３が、タイムスタンプ定義管理部１１４０３に問い合わせを行い、タイムスタンプ定義が定義されている旨の応答を受けることによって判定することができる。
【０１８９】
タイムスタンプ定義が定義されていないと判定された場合、タイムスタンプ調整部１２５３は、ステップＳ１４００５〜ステップＳ１４００９の処理を実行する。ステップＳ１４００５〜ステップＳ１４００９の処理は、第１の実施形態と同一であるため説明を省略する。
【０１９０】
タイムスタンプ定義が定義されていると判定された場合、タイムスタンプ調整部１２５３は、タイムスタンプ定義管理部１１４０３からタイムスタンプ定義を取得する（ステップＳ１４００１）。
【０１９１】
次に、タイムスタンプ調整部１２５３は、全てのサンプリングデータにおけるクエリ時刻精度が同一であるか否かを判定する（ステップＳ１４００２）。当該判定は、Ｓ１００１と同一の判定方法が用いられる。
【０１９２】
全てのサンプリングデータにおけるクエリ時刻精度が同一でないと判定された場合、タイムスタンプ調整部１２５３は、ステップＳ１４００９に進む。
【０１９３】
全てのサンプリングデータにおけるクエリ時刻精度が同一でないと判定された場合、タイムスタンプ調整部１２５３は、入力情報が同時に実行することが可能な処理対象であるか否かを判定する（ステップＳ１４００３）。
【０１９４】
具体的には、以下の二つの判定処理が実行される。なお、いずれの判定処理から実行されてもよい。
【０１９５】
第１の判定処理では、タイムスタンプ調整部１２５３は、全ての入力情報に対するサンプリングデータにおける平均入力間隔が同一であるか否かを判定する。当該判定は、クエリの時刻精度に示された時刻を誤差の範囲とした場合に、全てのサンプリングデータにおける平均入力間隔が同一であるか否かが判定される。
【０１９６】
例えば、クエリの時刻精度が「１  ＨＯＵＲ」である場合、平均入力間隔が「０：１０：００」のサンプリングデータと、平均入力間隔が「０：２０：００」のサンプリングデータとは、誤差１時間以内に含まれるため、同一の平均入力間隔のサンプリングデータと判定される。
【０１９７】
第２の判定処理では、タイムスタンプ調整部１２５３は、各サンプリングデータにおける基準時刻において、タイムスタンプ定義の精度調整単に示された時刻以下の値が同一であるか否かを判定する。
【０１９８】
例えば、タイムスタンプ定義の精度調整単が「ＨＯＵＲ」である場合、基準時間が「２００８／０７／０１  １２：００：００＋０９００」のサンプリングデータと、基準時間が「２００９／０７／０１  １２：００：００−０５００」のサンプリングデータとは、「時間」以下の単位の値が同一であるため、タイムスタンプ定義の精度調整単に示された時刻以下の値が同一であると判定される。
【０１９９】
第１の判定処理及び第２の判定処理の判定結果が共に、満たされると判定された場合、全ての入力情報が同時に実行することが可能な処理対象であると判定される。
【０２００】
少なくともいずれか一方の判定処理を満たさない場合、当該入力情報は同時に実行することが可能な処理対象でないと判定される。
【０２０１】
入力情報が同時に実行することが可能な処理対象でないと判定された場合、タイムスタンプ調整部１２５３は、ステップＳ１４００９に進む。
【０２０２】
入力情報が同時に実行することが可能な処理対象であると判定された場合、タイムスタンプ調整部１２５３は、タイムスタンプ定義に基づいて新たな基準時刻を算出する（ステップＳ１４００４）。
【０２０３】
具体的には、タイムスタンプ調整部１２５３は、クエリの時刻精度と、サンプリングデータの基準時刻のうち最も新しい基準時刻とに基づいて、クエリの時間精度に示された時刻より大きな単位の時刻情報を算出する。
【０２０４】
例えば、クエリの時刻精度が「１  ＨＯＵＲ」である場合、「年」、「月」、及び「日」の単位の情報が算出される。
【０２０５】
さらに、タイムスタンプ調整部１２５３は、タイムスタンプ定義の調整時刻に基づいて、タイムスタンプ定義の精度調整単位に示された単位の調整を実行する。
【０２０６】
例えば、図１２に示す例では、タイムスタンプ定義の精度調整単位が「ＨＯＵＲ」であり、タイムスタンプ定義の調整時刻が「１２：００：００＋０９００」であるので、「時間」の単位が「１２：−−：−−」に調整され、タイムゾーンをＪＳＴに調整される。
【０２０７】
タイムスタンプ調整部１２５３は、新たに算出された基準時刻に基づいて、入力情報に新たなタイムスタンプを付与して、入力ストリームデータを生成する（ステップＳ１４００８）。
【０２０８】
具体的には、新たな基準時刻と、各サンプリングデータにおける基準時刻とを比較し、新たな基準時刻において設定された時刻の全ての値が、サンプリングデータにおける基準時刻に示された時刻の値と同一であるか否かを判定する。
【０２０９】
新たな基準時刻において設定された時刻の全ての値が、サンプリングデータにおける基準時刻に示された時刻の値と同一であると判定された場合、タイムスタンプ調整部１２５３は、新たなタイムスタンプを付与しない。
【０２１０】
新たな基準時刻において設定された時刻の全ての値が、サンプリングデータにおける基準時刻に示された時刻の値と同一でないと判定された場合、新たな基準時刻に設定さえた時刻を、元のタイムスタンプに上書きしたものを新たなタイムスタンプとして入力情報に付与する。なお、新たなタイムスタンプの設定方法は第１の実施形態と同一であるため説明を省略する。
【０２１１】
タイムスタンプ調整部１２５３は、生成された入力ストリームデータを入力ストリームデータ送信部１２５４に送信し、処理を終了する（ステップＳ１４００９）。
【０２１２】
第２の実施形態によれば、任意のクエリに入力された複数のストリームデータが同時に実行可能な処理対象であると判定された場合、ユーザの設定に基づいて新たなタイムスタンプを付与することによって、同時に処理が実行される。
【符号の説明】
【０２１３】
１１００  データ送信計算機
１１１０  ＣＰＵ
１１２０  ＤＩＳＫ
１１３０  メモリ
１１３１  アプリケーション実行部
１１３２  ストリームデータ送信部
１２００  ストリームデータ処理計算機
１２１０  ＣＰＵ
１２２０  ＤＩＳＫ
１２３０  メモリ
１２４０  オペレーティングシステム
１２５０  入力データ解析部
１２５１  ストリームデータ受信部
１２５２  タイムスタンプ分析部
１２５３  タイムスタンプ調整部
１２５４  入力ストリームデータ送信部
１２５５  クエリ分析部
１２６０  ストリームデータ処理部
１２６１  入力ストリームデータ受信部
１２６２  クエリ処理部
１２６３  ストリームデータ送信部
１３００  結果受信計算機
１３１０  ＣＰＵ
１３２０  ＤＩＳＫ
１３３０  メモリ
１３３１  ストリームデータ受信部
１３３２  アプリケーション実行部
１４００  ネットワーク
１４１０  ストリームデータソース
１５００  ネットワーク
１６００  ネットワーク
１１０００  ストリームデータ処理計算機
１１３００  メモリ
１１４００  タイムスタンプ定義設定部
１１４０１  タイムスタンプ定義登録部
１１４０２  タイムスタンプ定義管理テーブル
１１４０３  タイムスタンプ定義管理部
【図１】
2011113273.tif 000003
【図２】
2011113273.tif 000004
【図３】
2011113273.tif 000005
【図４】
2011113273.tif 000006
【図５】
2011113273.tif 000007
【図６】
2011113273.tif 000008
【図７】
2011113273.tif 000009
【図８】
2011113273.tif 000010
【図９】
2011113273.tif 000011
【図１０】
2011113273.tif 000012
【図１１】
2011113273.tif 000013
【図１２】
2011113273.tif 000014
【図１３】
2011113273.tif 000015
【図１４】
2011113273.tif 000016