(57)【特許請求の範囲】
【請求項１】
ストリームデータに対して予め登録されるクエリであるグローバルクエリを実行し、その結果を出力するストリームデータ処理システムであって、
前記グローバルクエリを分割することにより予め生成されるｎ個のローカルクエリのうちｉ（但し、１≦ｉ≦ｎ）番目のローカルクエリをそれぞれ実行するｉ番目のクエリ処理装置と、前記ストリームデータの少なくとも一部を含む保存データを記憶するプロキシ装置と、を有し、
前記プロキシ装置は、
前記ストリームデータの少なくとも一部と前記ｉ番目のクエリ処理装置とを対応付け、前記対応付けを示す対応情報を前記クエリ処理装置に送信するクエリ制御手段と、
前記クエリ処理装置から前記保存データを受信して記憶する保存データ記憶手段と、
前記クエリ処理装置からの要求に基づいて、前記ローカルクエリの処理対象である対象データを、前記保存データ記憶手段に記憶されている前記保存データから読み出して、要求元の前記クエリ処理装置へ送信するデータ読出手段と、を有し、
ｉ番目の前記クエリ処理装置は、
ｉ＝１の場合に、ストリームデータを受信し、ｉ≠１の場合に、ｉ−１番目の前記クエリ処理装置から転送データを受信するデータ受信手段と、
前記プロキシ装置から受信した前記対応情報に基づいて、ｉ＝１の場合に、１番目の前記クエリ処理装置に対応付けられた、受信したストリームデータの少なくとも一部を、前記保存データとして前記プロキシ装置に送信して記憶させ、１＜ｉ＜ｎの場合に、ｉ番目の前記クエリ処理装置に対応付けられた、受信した転送データまたは対象データの少なくともいずれかの少なくとも一部を、前記保存データとして前記プロキシ装置に送信して記憶させるデータ登録手段と、
１＜ｉ≦ｎの場合に、前記プロキシ装置から受信した前記対応情報に基づいて、ｉ番目の前記クエリ処理装置に、ｉ番目の前記ローカルクエリの処理対象である前記対象データとしてデータが対応付けられている場合、前記プロキシ装置にアクセスして前記対象データを取得するデータ取得手段と、
ｉ＝１の場合に、前記データ受信手段により受信されたストリームデータに対して前記プロキシ装置によって予め登録されているｉ番目のローカルクエリを実行し、ｉ≠１の場合に、前記データ受信手段により受信された転送データまたは前記データ取得手段により取得された対象データの少なくともいずれかに対して、前記プロキシ装置によって予め登録されているｉ番目のローカルクエリを実行するローカルクエリ処理手段と、
ｉ≠ｎの場合に、前記ローカルクエリ処理手段による処理結果を転送データとしてｉ＋１番目の前記クエリ処理装置に送信し、ｉ＝ｎの場合に、前記ローカルクエリ処理手段による処理結果を前記プロキシ装置又は前記グローバルクエリを出力した端末に送信するデータ送信手段と、を有する、
ことを特徴とするストリームデータ処理システム。
【請求項２】
請求項１に記載のストリームデータ処理システムであって、
前記プロキシ装置は、
前記グローバルクエリの入力を受け付けるグローバルクエリ入力手段と、
前記グローバルクエリ入力手段に入力されたグローバルクエリをｎ個の処理に分割して１番目〜ｎ番目のローカルクエリを生成するローカルクエリ生成手段と、
前記ローカルクエリ生成手段により生成された１番目〜ｎ番目のローカルクエリをそれぞれ１番目〜ｎ番目の前記クエリ処理装置に送信するローカルクエリ送信手段と、をさらに有し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置は、
前記プロキシ装置からｉ番目のローカルクエリを受信して、前記ローカルクエリ処理手段に設定するクエリ受信手段をさらに有する、
ことを特徴とするストリームデータ処理システム。
【請求項３】
請求項２に記載のストリームデータ処理システムであって、
前記ローカルクエリ生成手段は、
前記グローバルクエリ入力手段に入力されたグローバルクエリをｍ（但し、ｎ＜ｍ）個の処理単位に分割し、各処理単位の少なくとも一部を結合してｎ個の処理にし、各処理を含む１番目〜ｎ番目のローカルクエリを生成するものであり、さらに、
前記各処理単位を結合する組み合わせが異なる１番目〜ｎ番目のローカルクエリを含む複数の候補グループを生成する手段と、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置に対して、前記生成した各候補グループのｉ番目のローカルクエリを送信して、当該クエリ処理装置から各候補グループのｉ番目のローカルクエリの処理コストを入手する処理を、１番目〜ｎ番目の前記クエリ処理装置各々に対して実行する手段と、
１番目〜ｎ番目の前記クエリ処理装置から入手した各候補グループの１番目〜ｎ番目のローカルクエリの処理コストに基づいて、１番目〜ｎ番目のローカルクエリの処理コストの総和が最小となる候補グループを選択する手段と、を有し、
前記ローカルクエリ送信手段は、
前記選択する手段により選択された候補グループの１番目〜ｎ番目のローカルクエリをそれぞれ１番目〜ｎ番目の前記クエリ処理装置に送信し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置は、
前記クエリ受信手段により受信された候補グループのｉ番目のローカルクエリを前記ローカルクエリ処理手段に実行させた場合の処理コストを算出し、当該処理コストを前記プロキシ装置に送信する処理コスト送信手段を、さらに有する、
ことを特徴とするストリームデータ処理システム。
【請求項４】
請求項２又は３に記載のストリームデータ処理システムであって、
前記クエリ制御手段は、
１番目の前記クエリ処理装置に対して前記クエリ処理装置に入力されるストリームデータの少なくとも一部を保存データとして指定する情報を前記対応情報として送信し、ｉ（但し、１＜ｉ＜ｎ）番目の前記クエリ処理装置に対してｉ番目の前記クエリ処理装置に入力される転送データまたは対象データの少なくともいずれかの少なくとも一部を保存データとして指定する情報を前記対応情報として送信し、
前記データ登録手段は、
ｉ＝１の場合に、前記データ受信手段により受信されたストリームデータから前記プロキシ装置により指定された部分を抽出し、当該抽出した部分を含む保存データを前記プロキシ装置に送信して記憶させ、１＜ｉ＜ｎの場合に、前記データ受信手段により受信された転送データまたは前記データ取得手段により取得された対象データの少なくともいずれかから、前記プロキシ装置により指定された部分を抽出し、当該抽出した部分を含む保存データを前記プロキシ装置に送信して記憶させる、
ことを特徴とするストリームデータ処理システム。
【請求項５】
請求項４に記載のストリームデータ処理システムであって、
前記プロキシ装置は、
ｉ（但し、１＜ｉ≦ｎ）番目の前記クエリ処理装置によって実行されるｉ番目のローカルクエリの処理対象の前記ストリームデータ中の対象データを取得するための、ｊ（但し、１≦ｊ＜ｉ）〜ｉ−１番目の前記クエリ処理装置を経由するルートの通信コストの総和である第１の通信コストと、前記ｊ番目のクエリ処理装置及び前記プロキシ装置を経由するルートの通信コストの総和である第２の通信コストとを算出する処理と、前記第１通信コストと前記第２通信コストとを比較する処理と、前記第２の通信コストが前記第１の通信コストよりも小さい場合に、前記ｉ番目のローカルクエリの対象データを前記ｊ番目のクエリ処理装置の保存データとして決定する処理とを、実行する保存データ決定手段をさらに有し、
前記クエリ制御手段は、
前記保存データ決定手段により決定された前記ｊ番目のクエリ処理装置の保存データを指定する前記対応情報を、前記ｊ番目のクエリ処理装置に送信し、前記ｊ番目のクエリ処理装置の保存データに対応する前記ｉ番目のローカルクエリの対象データを指定する前記対応情報を、前記ｉ番目のクエリ処理装置に送信する、
ことを特徴とするストリームデータ処理システム。
【請求項６】
請求項１乃至５のいずれか一項に記載のストリームデータ処理システムであって、
前記プロキシ装置は、
１番目の前記クエリ処理装置からのシステムタイムスタンプ要求に応じて、当該１番目の前記クエリ処理装置に受信されたストリームデータの順番を示すシステムタイムスタンプを生成して、当該１番目の前記クエリ処理装置に送信するシステムタイムスタンプ生成手段をさらに有し、
１番目の前記クエリ処理装置の前記データ受信手段は、
前記ストリームデータを新たに受信する毎に、前記プロキシ装置に前記システムタイムスタンプ要求を送信して、前記プロキシ装置からシステムタイムスタンプを入手し、入手した前記システムタイムスタンプを新たに受信したストリームデータに付与し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置の前記ローカルクエリ処理手段は、
ｉ＝１の場合に、ストリームデータに付与されている前記システムタイムスタンプが示す順番に従って、受信した複数の前記ストリームデータの中から実行対象のストリームデータを特定し、当該実行対象のストリームデータの一部に対してｉ番目のローカルクエリを実行し、ｉ≠１の場合に、転送データに付与されているシステムタイムスタンプが示す順番に従って、受信した複数の転送データの中から実行対象の転送データを特定し、当該実行対象の転送データまたは前記対象データの少なくともいずれかの少なくとも一部に対して、ｉ番目のローカルクエリを実行し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置の前記データ送信手段は、
ｉ＝１の場合に、前記データ受信手段が受信した前記ストリームデータに付与した前記システムタイムスタンプを前記ローカルクエリ処理手段の処理結果である前記転送データに付与して２番目の前記クエリ処理装置に送信し、ｉ≠１，ｎの場合に、前記データ受信手段が受信した前記転送データに付与されているシステムタイムスタンプを前記ローカルクエリ処理手段の処理結果である前記転送データに付与してｉ＋１番目の前記クエリ処理装置に送信する、
ことを特徴とするストリームデータ処理システム。
【請求項７】
請求項６に記載のストリームデータ処理システムであって、
前記プロキシ装置は、
１番目の前記クエリ処理装置からのエクスパイアタイムスタンプ要求に応じて、前記システムタイムスタンプ生成手段により生成された前記システムタイムスタンプが付与された前記ストリームデータのストリームデータ処理システム内での寿命を示すエクスパイアタイムスタンプを生成して、当該１番目の前記クエリ処理装置に送信するエクスパイアタイムスタンプ生成手段をさらに有し、
１番目の前記クエリ処理装置の前記データ受信手段は、
前記ストリームデータを新たに受信する毎に、前記プロキシ装置に前記システムタイムスタンプ要求とともに前記エクスパイアタイムスタンプ要求を送信して、前記プロキシ装置から前記エクスパイアタイムスタンプを入手し、入手した前記エクスパイアタイムスタンプを新たに受信した前記ストリームデータに付与し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置の前記データ送信手段は、
ｉ＝１の場合に、前記データ受信手段が受信した前記ストリームデータに付与した前記エクスパイアタイムスタンプを前記ローカルクエリ処理手段の処理結果である前記転送データに付与して２番目の前記クエリ処理装置に送信し、ｉ≠１，ｎの場合に、前記データ受信手段が受信した前記転送データに付与されている前記エクスパイアタイムスタンプを前記ローカルクエリ処理手段の処理結果である前記転送データに付与してｉ＋１番目の前記クエリ処理装置に送信し、
ｉ（但し、１≦ｉ≦ｎ）番目の前記クエリ処理装置は、
前記ローカルクエリ処理手段の処理対象であるデータを記憶するデータ記憶手段と、
ｉ＝１の場合に、処理対象となっている前記ストリームデータの前記システムタイムスタンプよりも古い前記エクスパイアタイムスタンプを持つ前記データ記憶手段に記憶されているストリームデータを消去し、ｉ≠１の場合に、処理対象となっている前記転送データまたは前記対象データの少なくともいずれかの前記システムタイムスタンプよりも古い前記エクスパイアタイムスタンプを持つ前記データ記憶手段に記憶されている転送データまたは対象データの少なくともいずれかを消去するデータ消去手段と、をさらに有する、
ことを特徴とするストリームデータ処理システム。
【請求項８】
請求項１乃至７のいずれか一項に記載のストリームデータ処理システムであって、
前記保存データ記憶手段は、
主記憶装置と、補助記憶装置とを有する、
ことを特徴とするストリームデータ処理システム。
【請求項９】
請求項１乃至８のいずれか一項に記載のストリームデータ処理システムにおける前記プロキシ装置。
【請求項１０】
請求項１乃至８のいずれか一項に記載のストリームデータ処理システムにおける前記クエリ処理装置。
【請求項１１】
グローバルクエリを分割することにより予め生成されるｎ個のローカルクエリのうちｉ（但し、１≦ｉ≦ｎ）番目のローカルクエリをそれぞれ実行するｉ番目のクエリ処理装置と、ストリームデータの少なくとも一部を含む保存データを記憶するプロキシ装置と、を有するストリームデータ処理システムが、前記ストリームデータに対して前記グローバルクエリを実行し、その結果を出力するストリームデータ処理方法であって、
前記プロキシ装置が、
前記ストリームデータの少なくとも一部と前記ｉ番目のクエリ処理装置とを対応付け、前記対応付けを示す対応情報を前記クエリ処理装置に送信するクエリ制御ステップと、
前記クエリ処理装置から前記保存データを受信して記憶する保存データ記憶ステップと、
前記クエリ処理装置からの要求に基づいて、前記ローカルクエリの処理対象である対象データを、前記保存データ記憶手段に記憶されている前記保存データから読み出して、要求元の前記クエリ処理装置へ送信するデータ読出ステップと、を行い、
ｉ番目のクエリ処理装置が、
ｉ＝１の場合に、ストリームデータを受信し、ｉ≠１の場合に、ｉ−１番目の前記クエリ処理装置から転送データを受信するデータ受信ステップと、
前記プロキシ装置から受信した前記対応情報に基づいて、ｉ＝１の場合に、１番目の前記クエリ処理装置に対応付けられた、受信したストリームデータの少なくとも一部を、前記保存データとして前記プロキシ装置に送信して記憶させ、１＜ｉ＜ｎの場合に、ｉ番目の前記クエリ処理装置に対応付けられた、受信した転送データまたは対象データの少なくともいずれかの少なくとも一部を、前記保存データとして前記プロキシ装置に送信して記憶させるデータ登録ステップと、
１＜ｉ≦ｎの場合に、前記プロキシ装置から受信した前記対応情報に基づいて、ｉ番目の前記クエリ処理装置に、ｉ番目の前記ローカルクエリの処理対象である前記対象データとしてデータが対応付けられている場合、前記プロキシ装置にアクセスして前記対象データを取得するデータ取得ステップと、
ｉ＝１の場合に、前記データ受信手段により受信されたストリームデータに対して前記プロキシ装置によって予め登録されているｉ番目のローカルクエリを実行し、ｉ≠１の場合に、前記データ受信手段により受信された転送データまたは前記データ取得手段により取得された対象データの少なくともいずれかに対して、前記プロキシ装置によって予め登録されているｉ番目のローカルクエリを実行するローカルクエリ処理ステップと、
ｉ≠ｎの場合に、前記ローカルクエリ処理手段による処理結果を転送データとしてｉ＋１番目の前記クエリ処理装置に送信し、ｉ＝ｎの場合に、前記ローカルクエリ処理手段による処理結果を前記プロキシ装置又は前記グローバルクエリを出力した端末に送信するデータ送信ステップと、を行う、
ことを特徴とするストリームデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたストリームデータに対して予め登録されているクエリを実行し、その結果を出力するストリームデータ処理システムの技術に関する。
【背景技術】
【０００２】
非特許文献１には、入力されたストリームデータに対して予め登録されているクエリを実行し、その結果を出力するストリームデータ処理システムが開示されている。
【０００３】
例えば、商品購入希望者が商品を探しているとする。該商品購入希望者は、端末を用いて商品購入に際しての希望条件を含むクエリを生成し、これをストリームデータ処理システムに登録する。一方、各商品提供希望者は、端末を用いて提供したい商品および該商品提供に際しての希望条件を含むストリームデータを生成し、これをストリームデータ処理システムに入力する。ストリームデータ処理システムは、予め登録しておいたクエリを継続実行し、入力されたストリームデータに含まれている商品および希望条件が、該クエリに含まれている商品および希望条件とマッチするか否かを調べる。そして、マッチする場合は、該ストリームデータを商品購入希望者の端末に送信する。
【０００４】
このように、ストリームデータ処理システムは、逐次入力されるストリームデータをリアルタイムに処理するインターネットオークションや株価トレンド等のリアルタイムアプリケーションに好適である。
【０００５】
【非特許文献１】Motwani, Rajeev; Widom, Jennifer; Arasu, Arvind; Babcock, Brian; Babu, Shivnath; Datar, Mayur; Manku, Gurmeet; Olston, Chris; Rosenstein, Justin; Varma, Rohit,  "Query Processing, Resource Management, and Approximation in a Data Stream Management System",  CIDR 2003,  1st of August 2002,  [平成１７年６月２２日検索］  インターネット＜URL:http://dbpubs.stanford.edu:8090/aux/index-en.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、逐次入力されるストリームデータ各々に対してリアルタイムにクエリを実行するためには、高性能の情報処理装置を用いるか、あるいは、複数の情報処理装置を用いて負荷分散させることが好ましい。ここで、複数の情報処理装置を用いて負荷分散させた場合、複数の情報処理装置間を伝送するストリームデータによって大量の通信トラフィックが発生する。
【０００７】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、ストリームデータ処理システムにおいて、複数の情報処理装置を用いて負荷分散させた場合の通信トラフィックの発生を抑制する技術を提供することある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のストリームデータ処理システムでは、予め登録されたクエリであるグローバルクエリを複数の処理に分割する。ここで、クエリの好適な記述方法としては、上述の非特許文献１の第二節の７行目に示されたCQL（Continuous Query Language）を挙げることができる。ストリームデータ処理におけるクエリの特徴は、無限に続くストリームデータから、その処理対象のデータ列を切り取るための、ウィンドウ指定が行えることである。ウィンドウ指定の代表的な方法としては、（１）切り取るデータ列の数を指定する方法、そして（２）切り取るデータ列の時間間隔を指定する方法の２種類を挙げることができる。例えば、非特許文献１の第二節に示された“Rows 50 Preceding”は５０行分のデータを処理対象として切り取る（１）の好適な例、そして“Range 15 Minutes Preceding”１５分間分のデータを処理対象として切り取る（２）の好適な例である。以下では、（１）の方法で指定されるウィンドウをタプルベースウィンドウ、そして（２）の方法で指定されるウィンドウをタイムベースウィンドウと呼ぶ。
【０００９】
図１５の１０９４はサイズが３のタプルベースウィンドウを示している。サイズが３のタプルベースウィンドウでは、到着した過去３タプル分のストリームデータを処理対象として保持し、新たな処理対象データ６８が到着した際に、最も古い処理対象データ６９がタプルベースウィンドウから押し出される。一方、図１６の１６０１は３単位時間分のタイムベースウィンドウを示している。該タイムベースウィンドウでは、過去３単位時間分のストリームデータを処理対象として保持し、到着から３時間間隔を経過した処理対象データはタイムベースウィンドウから押し出される。
【００１０】
次に、グローバルクエリから分割された各処理を含むローカルクエリを生成し、各ローカルクエリを異なる情報処理装置に設定する。また、複数の情報処理装置間を順番にストリームデータを伝送させ、各情報処理装置でストリームデータに対してローカルクエリを実行させる。この際、ストリームデータの全てについて複数の情報処理装置間を順番に伝送させるのではなく、該ストリームデータの少なくとも一部（例えば、処理の順番上の後ろに位置する情報処理装置で初めてローカルクエリの処理に使用されるデータ）については、記憶装置に記憶しておく。そして、情報処理装置は、処理の順番上一つ前の情報処理装置から受け取ったストリームデータにローカルクエリの対象データが含まれていない場合、当該データを記憶装置から読出してローカルクエリを実行する。
【００１１】
例えば、本発明のストリームデータ処理システムは、ストリームデータに対して予め登録されているクエリであるグローバルクエリを実行し、その結果を出力するストリームデータ処理システムであって、
前記グローバルクエリを構成するｉ（但し、１≦ｉ≦ｎ）番目のローカルクエリをそれぞれ実行するｉ番目のクエリ処理装置と、前記ストリームデータの少なくとも一部を含む保存データを記憶するプロキシ装置と、を有し、
ｉ番目の前記クエリ処理装置は、
ｉ＝１の場合に、ストリームデータを受信し、ｉ≠１の場合に、ｉ-１番目の前記クエリ処理装置から転送データを受信するデータ受信手段と、
１≦ｉ＜ｎの場合に、受信したストリームデータの少なくとも一部を含む保存データを前記プロキシ装置に記憶させるデータ登録手段と、
１＜ｉ≦ｎの場合に、予め登録されているｉ番目のローカルクエリの処理に必要なデータである対象データが前記保存データに含まれているならば、前記プロキシ装置にアクセスして前記対象データを取得するデータ取得手段と、
ｉ＝１の場合に、前記データ受信手段により受信されたストリームデータに対して予め登録されているｉ番目のローカルクエリを実行し、ｉ≠１の場合に、前記データ受信手段により受信された転送データおよび/または前記データ取得手段により取得された対象データに対して、予め登録されているｉ番目のローカルクエリを実行するローカルクエリ処理手段と、
ｉ≠ｎの場合に、前記ローカルクエリ処理手段による処理結果を転送データとしてｉ+１番目の前記クエリ処理装置に送信し、ｉ＝ｎの場合に、前記ローカルクエリ処理手段による処理結果を所定の装置に送信するデータ送信手段と、を有し、
前記プロキシ装置は、
前記クエリ処理装置から前記保存データを受信して記憶するデータ記憶手段と、
前記クエリ処理装置から要求された対象データを、前記保存データ記憶手段に記憶されている前記保存データから読み出して、要求元の前記クエリ処理装置へ送信するデータ読出手段と、を有する。
【発明の効果】
【００１２】
本発明によれば、例えば入力されたストリームデータのうち、処理の順番上の後ろに位置する情報処理装置で初めてローカルクエリの処理に使用される一部のストリームデータ（以下、部分ストリームデータ）を記憶装置に記憶しておくことで、該部分ストリームデータが複数の情報処理装置間を伝送されるのを防止することができる。したがって、複数の情報処理装置を用いて負荷分散させた場合の通信トラフィックの発生を抑制することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について説明する。
【００１４】
図１は本発明の一実施形態が適用されたストリームデータ処理システムの概略図である。
【００１５】
図示するように、本実施形態のストリームデータ処理システム１００１は、ｎ台（ｎ≧１）のクエリ処理装置１１〜１ｎと、プロキシ装置２と、これらの装置間を接続するＬＡＮ、ＷＡＮ等のネットワーク５と、を有する。図１に示す例では、ストリームデータ処理１００１はストリームデータ生成装置４と、ユーザ端末３とに、ネットワーク５で接続されている。
【００１６】
ユーザ端末３は、プロキシ装置２にクエリ６６を送信し、プロキシ装置２からその結果を受信する。クエリ６６としては、希望条件（商品名、希望購入価格、引渡し場所、決済方法等）に合致する商品の提供希望者の情報を問い合わせるためのものや、所定品目の株価のトレンドを問い合わせるためのものなどが考えられる。以下、ユーザ端末３がプロキシ装置２に送信するクエリ６６をグローバルクエリ６６と呼ぶこととする。ユーザ端末３には、Ｗｅｂブラウザ等の既存のネットワーク端末を利用できるので、その詳細な説明を省略する。
【００１７】
ストリームデータ生成装置４は、グローバルクエリ６６の処理対象であるストリームデータ６１を生成して、クエリ処理装置１１に送信する。ストリームデータ６１としては、商品提供希望者の希望条件（商品名、希望提供価格、引渡し場所、決済方法等）の情報や、株価情報（銘柄、価格）などが考えられる。ストリームデータ６１が商品提供希望者の希望条件の情報である場合、ストリームデータ生成装置４は例えば商品提供希望者のネットワーク端末である。また、ストリームデータ６１が株価情報である場合、ストリームデータ生成装置４は例えば株式市場運営者のネットワーク端末である。
【００１８】
ストリームデータ６１は、複数のセグメントで構成されており、そのうちの１つのセグメントには、ストリームデータ６１の識別情報であるストリームＩＤが登録される。また、残りの各セグメントには、グローバルクエリ６１による処理の単位となる情報が登録される。また、ストリームデータ６１のデータフォーマットとしては、レコード形式やＸＭＬドキュメント形式などが考えられる。
【００１９】
図２はストリームデータ６１のデータフォーマットを模式的に表した図である。
【００２０】
図２（Ａ）はレコード形式のストリームデータ６１を例示している。この場合、レコードを構成するカラム６１１がセグメントに相当する。また、図２（Ｂ）はＸＭＬドキュメント形式のストリームデータ６１を例示している。この場合、ＸＭＬドキュメントを構成するタグとタグとで囲まれた領域６１２がセグメントに相当する。
【００２１】
クエリ処理装置１１〜１ｎには処理の順番が割り当てられている。また、グローバルクエリ６６をｎ個の処理に分割することで得られるｎ個のローカルクエリ６７１〜６７ｎが、それぞれ、実行順番に従って、クエリ処理装置１１〜１ｎに割り当てられる。具体的には、１番目のクエリ処理装置１１は、ストリームデータ６１に対してローカルクエリ６７１を実行する。ｉ（但し、１≦ｉ≦ｎ-１）番目のクエリ処理装置１ｉは、クエリの結果を転送データ６２ｉとしてｉ＋１番目のクエリ処理装置１ｉ＋１に送信する。クエリ処理装置１ｉ＋１は、該転送データ６２ｉに対してｉ＋１番目のローカルクエリ６７ｉ＋１を実行する。ｎ番目のクエリ処理装置１ｎは、クエリの結果を処理結果６５としてプロキシ装置２に送信する。
【００２２】
図３はクエリ処理装置１１〜１ｎの概略構成図である。
【００２３】
図示するように、クエリ処理装置１１〜１ｎは、ネットワーク５を介してプロキシ装置２と通信を行なうためのプロキシ装置アクセス部１０１と、ネットワーク５を介して他のクエリ処理装置１１〜１ｎと通信を行なうためのクエリ処理装置アクセス部１０２と、データ受信部１０３と、データ送信部１０４と、データ登録・スタンプ付与部１０５と、ストリームデータ管理部１０６と、データ取得部１０７と、ローカルクエリ最適化部１０８と、ローカルクエリ実行部１０９と、を有する。
【００２４】
データ受信部１０３は、クエリ処理装置アクセス部１０２を介して、処理の順番上一つ前に位置する他のクエリ処理装置１１〜１ｎ-１から転送データ６２を受信する。但し、処理の順番上一番目に位置するクエリ処理装置１１のデータ受信部１０３は、クエリ処理装置アクセス部１０２を介して、ストリームデータ生成装置４からストリームデータ６１を受信する。
【００２５】
データ送信部１０４は、クエリ処理装置アクセス部１０２を介して、処理の順番上一つ後に位置する他のクエリ処理装置１２〜１ｎに、後述するローカルクエリ実行部１０９の処理結果を、転送データ６２として送信する。但し、処理の順番上ｎ番目に位置するクエリ処理装置１ｎのデータ送信部１０４は、クエリ処理装置アクセス部１０２を介してプロキシ装置２に、後述するローカルクエリ実行部１０９の処理結果を、グローバルクエリの処理結果６５として送信する。
【００２６】
データ登録・スタンプ付与部１０５は、自装置が処理の順番上１番目に位置するクエリ処理装置１１である場合に、次の処理を行う。すなわち、データ登録・スタンプ付与部１０５は、データ受信部１０３がクエリ処理装置アクセス部１０２を介してストリームデータ生成装置４からストリームデータ６１を受信すると、プロキシ装置２によって予め設定されたセグメントを該受信したストリームデータ６１から切り出す。そして、切り出したセグメントおよび該受信したストリームデータ６１のストリームＩＤを含む保存データ登録要求を生成し、これをプロキシ装置アクセス部１０１経由でプロキシ装置２に送信する。また、データ登録・スタンプ付与部１０５は、保存データ登録要求に対する応答として、処理の順番を示すシステムタイムスタンプおよびストリームデータ処理システム内での寿命を示すエクスパイアタイムスタンプを、プロキシ装置アクセス部１０１を介してプロキシ装置２から受信する。そして、上述の予め設定されたセグメントが切り出されたストリームデータ６１に、該受信したシステムタイムスタンプおよびエクスパイアタイムスタンプを付与する。
【００２７】
プロキシ装置２におけるシステムタイムスタンプ、およびエクスパイアタイムスタンプの設定方法について、図１５および図１６を用いて説明する。説明を簡略化のために、本実施形態ではタイムスタンプを００１、００２、…のように時間の経過と共にその値が１ずつ増加する連番で表現しているが、UNIX（登録商標）オペレーティングシステムにおける時刻構造体など他の時刻表現方法でも差し支えない。
【００２８】
システムタイムスタンプ６８１は、ストリームデータがストリームデータ処理システムに到着した時刻を表す。ストリームデータはストリームデータ処理システム到着時にウィンドウオペレータで処理されるので、システムタイムスタンプ６８１はウィンドウオペレータでの処理開始時間と同一であると考えて差し支えない。図１５に示す例では、タプルベースウィンドウ１０９４中の処理対象ストリームデータ６９のうち、処理対象データ１、２はそれぞれ時刻００１、００２にストリームデータ処理システムに到着したことを表している。
【００２９】
一方、エクスパイアタイムスタンプ６８２は、ストリームデータ処理システム内でのストリームデータの寿命を表す。エクスパイアタイムスタンプ６８２は処理対象クエリにおけるウィンドウ指定の方法によって２通りの方法があり、図１５および図１６がそれぞれ、前記ウィンドウ指定がタプルベースの場合（タプルベースウィンドウ１０９４の場合）およびタイムベースの場合（タイムベースウィンドウ１６０１の場合）の例である。
【００３０】
図１５のタプルベースウィンドウ１０９４の場合、ストリームデータ到着時にはそのエクスパイアタイムスタンプ６８２の値を決定することはできない。なぜならば、タプルベースウィンドウ１０９４では該ウィンドウに保持できる限界数以上のタプルが到着したときに初めて、ウィンドウから押し出されるストリームデータの寿命が決定されるためである。そのため、ストリームデータのストリームデータシステム到着時には、該ストリームデータのエクスパイアタイムスタンプ６８２は図１５の処理対象データ"２"、"３"（６９）、および処理対象データ"４"（６８）に示されるように、"NULL"に設定される。その後、処理対象データ"４"（６８）が到着すると、タプルベースウィンドウ１０９４が保持できるデータ数（タプル数）は３であるので、処理対象データ"１"（６９）が該タプルベースウィンドウから押し出される。処理対象データ"４"（６８）のシステムタイムスタンプ６８１は"００４"であるので、処理対象データ"１"（６９）のエクスパイアタイムスタンプ６８２は"００４"に設定される。
【００３１】
図１６のタイムベースウィンドウ１６０１の場合には、処理対象データがウィンドウに到着したタイミングでエクスパイアタイムスタンプ６８２の値が決定される。例えば図１６に示す例の場合、タイムベースウィンドウ１６０１は３単位時間分のデータを保持するので、時刻"００１"、"００２"、"００４"に到着した処理対象データ"１"、"２"、"３"（６９）のエクスパイアタイムスタンプ６８２の値はそれぞれ、"００４"、"００５"、"００７"となる。
【００３２】
ストリームデータ管理部１０６は、自装置が処理の順番上１番目に位置するクエリ処理装置１１である場合に、次の処理を行う。すなわち、ストリームデータスタンプ付与部１０５によりシステムタイムスタンプおよびエクスパイアタイムスタンプが付与された、上述の予め設定されたセグメントが切り出されたストリームデータ６１を、処理対象データとしてバッファリングする。そして、システムタイムスタンプが示す順番に従って後述するローカルクエリ実行部１０９に処理対象データを出力する。また、ストリームデータ管理部１０６は、自装置が処理の順番上２〜ｎ番目に位置するクエリ処理装置１２〜１ｎである場合に、次の処理を行う。すなわち、データ受信部１０３が受信した転送データ６２１〜６２ｎ-１を、システムタイムスタンプが示す順番に従って後述するローカルクエリ実行部１０９に処理対象データを出力する。
【００３３】
また、ストリームデータ管理部１０６は、エクスパイアタイムスタンプが示す寿命が尽きた処理対象データを自クエリ処理装置１１〜１ｎ内のローカルクエリ実行部中に作成される処理バッファであるテンポラルストアから消去する。消去方法の詳細については後述する。
【００３４】
データ取得部１０７は、自装置が処理の順番上ｉ（但し、２≦ｉ≦ｎ）番目に位置するクエリ処理装置１ｉである場合に、次の処理を行う。すなわち、ストリームデータ管理部１０６に処理対象データが新たに到着すると、当該処理対象データのストリームＩＤおよびプロキシ装置２によって予め設定されたセグメントの指定を含む対象データ要求を生成し、これをプロキシ装置アクセス部１０１経由でプロキシ装置２に送信して、プロキシ装置２から対象データを取得する。そして、取得した対象データをストリームデータ管理部１０６中の当該処理対象データに付加する。
【００３５】
ローカルクエリ最適化部１０８は、プロキシ装置アクセス部１０１を介してプロキシ装置２からローカルクエリ候補を受信すると、当該ローカルクエリ候補を後述するローカルクエリ実行部１０９で実行させた場合のクエリ処理コストを計算し、計算した処理コストをプロキシ装置２に送信する。ここで、クエリ処理コストは、例えば前記ローカルクエリ候補のＣＰＵ処理コスト（ローカルクエリ候補を実行するためのＣＰＵが要するサイクル数）＋Ｉ／Ｏ処理コスト（ローカルクエリ候補を実行するために発行されるＩ／Ｏ処理に必要なコスト）で計算できる。ストリームデータに対する前記処理コスト計算については、文献「Stratis Viglas, Jeffrey F. Naughton: 迭ate-based query optimization for streaming information sources   SIGMOD Conference 2002, pp. 37-48.」にその方法が記載されている。
【００３６】
ローカルクエリ実行部１０９は、ストリームデータ管理部１０６から逐次入力される処理対象データに対して、プロキシ装置２によって設定されたローカルクエリを実行し、該実行結果に、該処理対象データのストリームＩＤを付与し、これを転送データ６２ｉとしてデータ送信部１０４に出力する。
【００３７】
図４はローカルクエリ実行部１０９の概略図である。図示するように、ローカルクエリ実行部１０９は、ローカルクエリ記憶部１０９１と、クエリ実施条件記憶部１０９２と、クエリ処理エンジン１０９３と、を有する。
【００３８】
ローカルクエリ記憶部１０９１には、クエリＩＤが付与されたローカルクエリが登録される。さらにクエリ実施条件記憶部１０９２には、ローカルクエリ記憶部１０９１に記憶されているローカルクエリ毎に該クエリの実施条件を記述するレコードが記憶される。該レコードは、クエリＩＤを登録するフィールド１０９２１と、実施条件を登録するフィールド１０９２２とを有する。実施条件の好適な例としては、実施時間帯指定、処理対象データのストリームＩＤ指定、処理回数指定、処理データ量指定などが考えられる。
【００３９】
クエリ処理エンジン１０９３は、クエリ実施条件記憶部１０９２に記憶されているレコードの中から、フィールド１０９２２に登録されている実施条件を満足するレコードを検索する。そして、検索したレコードのフィールド１０９２１に登録されているクエリＩＤを持つローカルクエリをローカルクエリ記憶部１０９１から読み出し、クエリ処理エンジンに到着する処理対象データ１０９５に対して、読み出したローカルクエリを継続的に実行する。
【００４０】
上記構成のクエリ処理装置１１〜１ｎは、例えば図５に示すような、ＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、ＣＤ-ＲＯＭやＤＶＤ-ＲＯＭ等の可搬性を有する記憶媒体９０４から情報を読み出す読取装置９０５と、キーボードやマウスなどの入力装置９０６と、ディスプレイなどの出力装置９０７と、通信ネットワークに接続するための通信装置９０８と、これらの装置を相互接続するバス９０９と、を備えた一般的なコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することで実現できる。この所定のプログラムは、読取装置９０５を介して記憶媒体９０４から、あるいは、通信装置９０８を介してネットワークから、外部記憶装置９０３にダウンロードされ、それから、メモリ９０２上にロードされてＣＰＵ９０１により実行されるようにしてもよい。また、読取装置９０５を介して記憶媒体９０４から、あるいは、通信装置９０８を介してネットワークから、メモリ９０２上に直接ロードされ、ＣＰＵ９０１により実行されるようにしてもよい。
【００４１】
次に、上記構成のクエリ処理装置１１〜１ｎの動作について説明する。
【００４２】
図６はローカルクエリの実行に先立って行われるクエリ処理装置１１〜１ｎの設定動作を説明するためのフロー図である。
【００４３】
ローカルクエリ最適化部１０８は、プロキシ装置アクセス部１０１を介してプロキシ装置２から少なくとも１つのローカルクエリ候補を受信すると（Ｓ１００１でＹＥＳ）、受信したローカルクエリ候補各々について、ローカルクエリ実行部１０９で実行させた場合の処理コストを計算する（Ｓ１００２）。そして、各ローカルクエリ候補の処理コストを、プロキシ装置アクセス部１０１を介してプロキシ装置２へ送信する（Ｓ１００３）。その後、Ｓ１００４に進む。
【００４４】
Ｓ１００４において、ローカルクエリ実行部１０９は、プロキシ装置アクセス部１０１を介してプロキシ装置２からローカルクエリ、クエリ実施条件、および、各クエリ処理装置の処理の順番に関する情報を受信すると（Ｓ１００４でＹＥＳ）、受信したローカルクエリおよびクエリ実施条件を、ローカルクエリ実行部１０９に設定する（Ｓ１００５）。また、各クエリ処理装置の処理の順番に関する情報をクエリ処理装置アクセス部２０１に設定する。この情報により、クエリ処理装置アクセス部２０１は、データの入手先（処理の順番上一つ前に位置するクエリ処理装置あるいはストリームデータ生成装置）およびデータの宛先（処理の順番上一つ後に位置するクエリ処理装置あるいはプロキシ装置）を認識する。その後、Ｓ１００６に進む。
【００４５】
Ｓ１００６において、データ登録・スタンプ付与部１０５は、自クエリ処理装置が処理の順番上１番目に位置するクエリ処理装置１１である場合に（Ｓ１００６でＹＥＳ）、プロキシ装置アクセス部１０１を介してプロキシ装置２から保存データを構成するセグメントの指定が送られてくるのを待つ（Ｓ１００７でＹＥＳ）。そして、指定されたセグメントをデータ登録・スタンプ付与部１０５に設定する（Ｓ１００８）。その後、Ｓ１００９に進む。
【００４６】
Ｓ１００９において、データ取得部１０７は、自クエリ処理装置が処理の順番上２〜ｎ番目に位置するクエリ処理装置１２〜１ｎである場合に（Ｓ１００９でＹＥＳ）、プロキシ装置アクセス部１０１を介してプロキシ装置２から対象データを構成するセグメントの指定が送られてくるのを待つ（Ｓ１０１０でＹＥＳ）。そして、指定されたセグメントをデータ取得部１０７に設定する（Ｓ１０１１）。それから、データ取得部１０７は、該クエリ処理装置においてプロキシ装置に保存するデータが存在する場合、プロキシ装置アクセス部１０１を介してプロキシ装置２から保存データを構成するセグメントの指定が送られてくるのを待つ（Ｓ１０１２でＹＥＳ）。そして、指定されたセグメントをデータ登録・スタンプ付与部１０５に設定し（Ｓ１０１３）、このフローを終了する。
【００４７】
図７は処理の順番上１番目に位置するクエリ処理装置１１のクエリ処理動作を説明するためのフロー図である。
【００４８】
データ受信部１０３は、クエリ処理装置アクセス部１１１を介してストリームデータ生成装置４からストリームデータ６１を受信すると（Ｓ１１０１）、該ストリームデータ６１をデータ登録・スタンプ付与部１０５に通知する。データ登録・スタンプ付与部１０５は、データ受信部１０３から通知されたストリームデータ６１から、プロキシ装置２により指定された保存データを構成するセグメントを切り出す（Ｓ１１０２）。そして、切り出したセグメントと、データ受信部１０３から通知されたストリームデータ６１のストリームＩＤとを含む保存データ登録要求を生成し、これをプロキシ装置アクセス部１０１経由でプロキシ装置２に送信する（Ｓ１１０３）。それから、データ登録・スタンプ付与部１０５は、保存データ登録要求に対する応答としてプロキシ装置２からシステムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２が送られてくるのを待つ（Ｓ１１０４）。次に、データ登録・スタンプ付与部１０５は、上述の保存データを構成するセグメントが切り出されたストリームデータ６１を処理対象データとし、これにプロキシ装置２から受信したシステムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２を付加してストリームデータ管理部１０６に通知する。これを受けて、ストリームデータ管理部１０６は、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２が付加された処理対象データをローカルクエリ実行部に転送する（Ｓ１１０５）。
【００４９】
また、ローカルクエリ実行部１０９は、システムタイムスタンプ６８１の順番に従ってストリームデータ管理部１０６から転送された処理対象データ６８に対して、プロキシ装置２により設定されたクエリ実施条件を満足するローカルクエリを実行する（Ｓ１１０６）。そして、その実行結果をデータ送信部１０４に送信する。これを受けて、データ送信部１０４は、処理対象データ６８のストリームＩＤ、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２と、該処理対象データ６８に対するローカルクエリの実行結果とを含む転送データ６２を生成し、これをクエリ処理装置アクセス部１０２経由で、処理の順番上２番目のクエリ処理装置１２に送信する（Ｓ１１０７）。また、ストリームデータ管理部１０６は、ローカルクエリ実行部１０９によって読み出され、現在処理対象となっている処理対象データ６８のシステムタイムスタンプよりも古い値のエクスパイアタイムスタンプを持つ処理対象データを、自クエリ処理装置内ローカルクエリ実行部中に作成される処理バッファであるテンポラルストアから消去する（Ｓ１１０８）。
【００５０】
図８は処理の順番上２〜ｎ番目に位置するクエリ処理装置１２〜１ｎのクエリ処理動作を説明するためのフロー図である。
【００５１】
データ受信部１０３は、クエリ処理装置アクセス部１０２を介して、処理の順番上一つ前に位置するクエリ処理装置１１〜１ｎ-１から転送データ６２を受信すると（Ｓ１４０１）、該転送データ６２に含まれているストリームＩＤをデータ取得部１０７に通知する。データ取得部１０７は、プロキシ装置２により対象データを構成するセグメントが指定されている場合（Ｓ１４０２でＹＥＳ）、データ受信部１０３より通知されたストリームＩＤと、対象データを構成するセグメントの指定とを含む対象データ要求を生成し、これをプロキシ装置アクセス部１０１経由でプロキシ装置２に送信する（Ｓ１４０３）。そして、プロキシ装置２から対象データを受信したならば（Ｓ１４０４）、これをデータ受信部１０３に通知する。一方、データ取得部１０７は、プロキシ装置２により対象データを構成するセグメントが指定されていない場合（Ｓ１４０２でＮＯ）、対象データが不要である旨をデータ受信部１０３に通知する。さて、データ受信部１０３は、データ取得部１０７から対象データを受け取った場合は、転送データ６２に対象データを付加し、これを処理対象データ６８としてローカルクエリ実行部に転送する（Ｓ１４０５）。一方、データ取得部１０７から対象データが不要である旨の通知を受け取った場合は、転送データ６２を処理対象データ６８としてローカルクエリ実行部に転送する（Ｓ１４０６）。
【００５２】
また、ローカルクエリ実行部１０９は、前記転送された処理対象データ６８に対して、プロキシ装置２により設定されたクエリ実施条件を満足するローカルクエリを実行する（Ｓ１４０７）。そして、その実行結果を、該処理対象データ６８のストリームＩＤ、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２と共にデータ送信部１０４に送信し、処理結果からプロキシ装置２により指定された保存データを構成するセグメントを切り出す（Ｓ１４０８）。次に、切り出したセグメントと、ストリームＩＤとを含む保存データ登録要求を生成し、これをプロキシ装置アクセス部１０１経由でプロキシ装置２に送信する（Ｓ１４０９）。データ送信部１０４は、処理対象データ６８のストリームＩＤ、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２と、該処理対象データ６８に対するローカルクエリの実行結果とを含む転送データ６２ｉ（但し、２≦ｉ＜ｎ）を生成し、これをクエリ処理装置アクセス部１０２を介して、処理の順番上一つ後のクエリ処理装置１３〜１ｎに送信する。なお、自クエリ処理装置が処理の順番上ｎ番目（最後）のクエリ処理装置１ｎである場合、該処理対象データ６８に対するローカルクエリの実行結果をグローバルクエリの処理結果６５として、プロキシ装置アクセス部１０１を介してプロキシ装置２に送信する（Ｓ１４１０）。
【００５３】
また、ストリームデータ管理部１０６は、ローカルクエリ実行部１０９によって読み出され、現在処理対象となっている処理対象データ６８のシステムタイムスタンプよりも古い値のエクスパイアタイムスタンプを持つ処理対象データを、自クエリ処理装置内のテンポラルストアから消去する（Ｓ１４１１）。
【００５４】
図１に戻って説明を続ける。
【００５５】
プロキシ装置２は、ユーザ端末３より受け付けたグローバルクエリ６６をｎ個の処理に分割することでｎ個のローカルクエリ６７１〜６７ｎを生成し、ローカルクエリ６７１〜６７ｎをそれぞれ順番に、クエリ処理装置１１〜１ｎに設定する。すなわち、ｉ（但し、１≦ｉ≦ｎ）番目のクエリ処理装置１ｉに対してｉ番目のローカルクエリ６７ｉを設定する。また、プロキシ装置２は、ストリームデータ６１を構成するセグメント各々について、他のクエリ処理装置１１〜１ｎを経由させて所望のクエリ処理装置１１〜１ｎに伝送させるか、それとも、プロキシ装置２を経由させて所望のクエリ処理装置１１〜１ｎに伝送させるかを決定する。そして、決定内容に従い、プロキシ装置２を経由させるセグメント（保存データを構成するセグメント）をクエリ処理装置１ｉ（但し、１≦ｉ＜ｎ）に設定すると共に、プロキシ装置２を経由させるセグメントに対してローカルクエリを実行するクエリ処理装置１１〜１ｎに、当該セグメント（対象データを構成するセグメント）を設定する。
【００５６】
図９はプロキシ装置２の概略構成図である。
【００５７】
図示するように、プロキシ装置２は、ネットワーク５を介してクエリ処理装置１１〜１ｎと通信を行なうためのクエリ処理装置アクセス部２０１と、ネットワーク５を介してユーザ端末３と通信を行なうためのユーザ端末アクセス部２０２と、クエリ受信部２０３と、スタンプ発行部２０４と、保存データ管理部２０５と、クエリ処理装置情報記憶部２０６と、グローバルクエリ最適化部２０７と、通信ルート探索部２０８と、結果送信部２０９と、データ抽出部２１０と、を有する。
【００５８】
クエリ受信部２０３は、ユーザ端末アクセス部２０２を介してユーザ端末３からグローバルクエリ６６およびクエリ実施条件を受信する。クエリ処理装置情報記憶部２０６には、本実施形態のストリームデータ処理システムに利用可能なクエリ処理装置の情報（アドレス、スペック等）が記憶されている。
【００５９】
グローバルクエリ最適化部２０７は、クエリ受信部２０３は受信したグローバルクエリ６６をｎ個の処理に分割する（但し、ｎ≦クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置の数）。分割した処理を含む１番目〜ｎ番目のローカルクエリ６７１〜６７ｎを生成し、ｎ台のクエリ処理装置１１〜１ｎにそれぞれ順番に設定する。この際、グローバルクエリ最適化部２０７は、各のローカルクエリ最適化部１０８と連携し、全体としての処理コストが最も小さくなるように、クエリ処理装置１１〜１ｎに設定するローカルクエリ６７１〜６７ｎを生成する。
【００６０】
通信ルート探索部２０８は、ストリームデータ６１を構成する各セグメントのネットワーク５における通信コストが最も小さくなるように、各セグメントの通信ルートを決定する。具体的には、処理の順番上ｉ番目（但し、１＜ｉ≦ｎ）のクエリ処理装置１ｉで実行されるローカルクエリの対象となるセグメントのデータを、処理の順番上ｊ番目〜ｉ-１番目（但し、ｊ＜ｉ）のクエリ処理装置１ｊ〜１ｉ-１を経由させてｉ番目のクエリ処理装置１ｉに取得させた場合の通信コストと、処理の順番上ｊ番目のクエリ処理装置１ｊおよびプロキシ装置２を経由させてｉ番目のクエリ処理装置１ｉに取得させた場合の通信コストとを比較し、通信コストの低い方の通信ルートを選択する。そして、選択された通信ルートに従い、ストリームデータ６１から切り出して保存データとしてプロキシ装置２に送信するセグメントをクエリ処理装置１ｊ（１≦ｊ＜ｎ）に設定する。また、クエリ処理装置１２〜１ｎがローカルクエリの対象データとしてプロキシ装置２から取得するセグメントをクエリ処理装置１２〜１ｎに設定する。
【００６１】
スタンプ発行部２０４は、クエリ処理装置アクセス部２０１を介して処理の順番上１番目のクエリ処理装置１１から保存データ登録要求を受信すると、処理の順番を示すシステムタイムスタンプ６８１、エクスパイタイムスタンプ６８２、およびストリームＩＤを生成し、これ等をクエリ処理装置アクセス部２０１を介して処理の順番上１番目のクエリ処理装置１１に送信する。また、スタンプ発行部２０４は、該保存データ登録要求に含まれている少なくとも１つのセグメントを、生成したシステムタイムスタンプ６８１、エクスパイアタイムスタンプ６８２、およびストリームＩＤと共に、保存データ管理部２０５に通知する。
【００６２】
保存データ管理部２０５は、スタンプ発行部２０４から受け取ったストリームＩＤ、少なくとも１つのセグメント、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２を、保存データとしてキャッシュ部２０５１に登録する。また、保存データ管理部２０５は、所定期間アクセスされなかった保存データを、キャッシュ部２０５１から記憶部２０５２に移動する。
【００６３】
データ抽出部２１０は、クエリ処理装置アクセス部２０１を介して処理の順番上２〜ｎ番目のクエリ処理装置１２〜１ｎから受信した対象データ要求に従い、当該対象データ要求に含まれているストリームＩＤを持つ保存データを保存データ管理部２０５から検索し、検索した保存データから当該対象データ要求で指定されているセグメントのデータを抽出する。そして、抽出したセグメントのデータを対象データとして、対象データ要求の送信元に送信する。
【００６４】
結果送信部２０９は、クエリ処理装置アクセス部２０１を介して、処理の順番上ｎ番目のクエリ処理装置１ｎから受信したグローバルクエリの処理結果を、ユーザ端末アクセス部２０２を介してユーザ端末３に送信する。
【００６５】
上記構成のプロキシ装置２も、クエリ処理装置１１〜１ｎと同様に、例えば図５に示すようなコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することで実現できる。この所定のプログラムは、読取装置９０５を介して記憶媒体９０４から、あるいは、通信装置９０８を介してネットワークから、外部記憶装置９０３にダウンロードされ、それから、メモリ９０２上にロードされてＣＰＵ９０１により実行されるようにしてもよい。また、読取装置９０５を介して記憶媒体９０４から、あるいは、通信装置９０８を介してネットワークから、メモリ９０２上に直接ロードされ、ＣＰＵ９０１により実行されるようにしてもよい。
【００６６】
次に、上記構成のプロキシ装置２の動作について説明する。
【００６７】
図１０はグローバルクエリの実行に先立って行われるプロキシ装置２の設定動作を説明するためのフロー図である。
【００６８】
グローバルクエリ最適化部２０７は、ユーザ端末アクセス部２０２を介してユーザ端末３からグローバルクエリ６６をクエリ実施条件と共に受信すると（Ｓ２０００でＹＥＳ）、後述するグローバルクエリ最適化処理を行って、クエリ処理装置１１〜１ｎにローカルクエリ６７１〜６７ｎをクエリ実施条件と共に設定する（Ｓ２１００）。それから、通信ルート探索部２０８が後述する通信ルート探索処理を行って、ストリームデータ生成装置４から出力されるストリームデータ６１の通信ルートを決定し、該決定内容に従い、保存データを構成するセグメントをクエリ処理装置１１に設定すると共に、対象データを構成するセグメントを、当該セグメントに対してローカルクエリを実行するクエリ処理装置１１〜１ｎに設定する（Ｓ２２００）。
【００６９】
図１１は図１０のグローバルクエリ最適化処理（Ｓ２１００）を説明するためのフロー図である。
【００７０】
まず、グローバルクエリ最適化部２０７は、ユーザ端末アクセス部２０２を介してユーザ端末３から受信したグローバルクエリ６６を処理単位に分割する（Ｓ２１０１）。そして、その分割数がクエリ処理装置情報記憶部２０６に記憶されているクエリ処理装置の装置数以下であるか否かを調べる（Ｓ２１０２）。分割数が装置数以下である場合（Ｓ２１０２でＹＥＳ）は、Ｓ２１０３に進む。一方、分割数が装置数以下でない場合（Ｓ２１０２でＮＯ）は、Ｓ２１１１に進む。
【００７１】
Ｓ２１０３において、グローバルクエリ最適化部２０７は、クエリ処理装置情報記憶部２０６を参照して、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置の中から、上述の分割数分のクエリ処理装置をランダムに選択し、選択したクエリ処理装置各々に処理の順番をランダムに付与して、グローバルクエリを処理する装置グループの候補を生成する。
【００７２】
次に、グローバルクエリ最適化部２０７は、Ｓ２１０１でグローバルクエリから分割された処理単位毎に、当該処理単位を含むローカルクエリ候補を生成する。そして、グローバルクエリ最適化部２０７は、各ローカルクエリ候補に処理の順番を付与する（Ｓ２１０４）。なお、ローカルクエリ候補を付与する処理の順番は、当該ローカルクエリ候補に含まれる処理のグローバルクエリにおける実行順（記述順）とすればよい。
【００７３】
次に、グローバルクエリ最適化部２０７は、Ｓ２１０４で生成したローカルクエリ候補を、Ｓ２１０３で選択したクエリ処理装置に割り当てる（Ｓ２１０５）。具体的には、処理の順番上ｉ（但し、１≦ｉ≦ｎ＝分割数）番目のローカルクエリ候補を、処理の順番上ｉ番目のクエリ処理装置に割り当てる。
【００７４】
次に、グローバルクエリ最適化部２０７は、クエリ処理装置アクセス部２０１を介して、Ｓ２１０３で選択したクエリ処理装置各々に、当該クエリ処理装置に割り当てたローカルクエリ候補を送信する。そして、クエリ処理装置アクセス部２０１を介して、各クエリ処理装置から、当該クエリ処理装置で当該クエリ処理装置に割り当てたローカルクエリ候補を実行した場合の処理コストを受信する（Ｓ２１０６）。
【００７５】
次に、グローバルクエリ最適化部２０７は、Ｓ２１０３で選択した各クエリ処理装置から受信した処理コストの総和を計算し、これをＳ２１０３で生成した装置グループの候補の総処理コストとする（Ｓ２１０７）。
【００７６】
さて、グローバルクエリ最適化部２０７は、クエリ処理装置情報記憶部２０６を参照し、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置を用いて新たな装置グループの候補（未選択の装置の組合せ）を生成できるか否かを判断する（Ｓ２１０８）。生成できる場合（Ｓ２１０８でＹＥＳ）は、Ｓ２１０３に戻って処理を続ける。一方、生成できない場合（Ｓ２１０８でＮＯ）は、Ｓ２１０３で生成した装置グループの候補の中から総処理コストが最小となる装置グループの候補を選出する。それから、クエリ処理装置アクセス部２０１を介して、選出した装置グループのクエリ処理装置各々に、当該クエリ処理装置に割り当てたローカルクエリ候補をローカルクエリとして、および、各クエリ処理装置の処理の順番に関する情報と共に送信する（Ｓ２１０９）。また、ローカルクエリが割り当てられたクエリ処理装置毎に、当該クエリ処理装置の情報および当該クエリ処理装置に割り当てられたローカルクエリの情報を、通信ルート探索部２０８に通知する。
【００７７】
一方、Ｓ２１１１において、グローバルクエリ最適化部２０７は、グローバルクエリから分割された処理単位の一部を結合して、分割数（処理数）がクエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置の装置数となるようにする。ここで、結合する処理単位は、グローバルクエリにおける実行順（記述順）が連続するものとするとよい。そして、処理毎に当該処理を含むローカルクエリ候補を生成する。したがって、ローカルクエリ候補は、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置の装置数分生成される。それから、グローバルクエリ最適化部２０７は、各ローカルクエリ候補に処理の順番を付与して、ローカルクエリグループの候補を生成する。なお、ローカルクエリ候補に付与する処理の順番は、当該ローカルクエリ候補に含まれる処理のグローバルクエリにおける実行順（記述順）とすればよい。
【００７８】
次に、グローバルクエリ最適化部２０７は、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置各々に処理の順番をランダムに付与する。そして、Ｓ２１１１で生成したローカルクエリ候補を、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置各々に割り当てる（Ｓ２１１２）。具体的には、処理の順番上ｉ（但し、１≦ｉ≦ｎ＝分割数）番目のローカルクエリ候補を、処理の順番上ｉ番目のクエリ処理装置に割り当てる。
【００７９】
次に、グローバルクエリ最適化部２０７は、クエリ処理装置アクセス部２０１を介して、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置各々に、当該クエリ処理装置に割り当てたローカルクエリ候補を送信する。そして、クエリ処理装置アクセス部２０１を介して、各クエリ処理装置から、当該クエリ処理装置で当該クエリ処理装置に割り当てたローカルクエリ候補を実行した場合の処理コストを受信する（Ｓ２１１３）。
【００８０】
次に、グローバルクエリ最適化部２０７は、クエリ処理装置情報記憶部２０６に情報が記憶されている各クエリ処理装置から受信した処理コストの総和を計算し、これをＳ２１１１で生成したローカルクエリグループの候補の総処理コストとする（Ｓ２１１４）。
【００８１】
さて、グローバルクエリ最適化部２０７は、グローバルクエリから分割された処理単位の一部を結合して、分割数（処理数）がクエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置の装置数となるように、新たなローカルクエリグループの候補（未選択の処理の組合せ）を生成できるか否かを判断する（Ｓ２１１５）。生成できる場合（Ｓ２１１５でＹＥＳ）は、Ｓ２１１１に戻って処理を続ける。一方、生成できない場合（Ｓ２１１５でＮＯ）は、Ｓ２１１１で生成したローカルクエリグループの候補の中から総処理コストが最小となるローカルクエリグループの候補を選出する。それから、クエリ処理装置アクセス部２１０を介して、クエリ処理装置情報記憶部２０６に情報が記憶されているクエリ処理装置各々に、選出したローカルクエリグループにおいて当該クエリ処理装置に割り当てたローカルクエリ候補をローカルクエリとして、クエリ実施条件、および、各クエリ処理装置の処理の順番に関する情報と共に送信する（Ｓ２１１６）。また、ローカルクエリが割り当てられたクエリ処理装置毎に、当該クエリ処理装置の情報および当該クエリ処理装置に割り当てられたローカルクエリの情報を、通信ルート探索部２０８に通知する。
【００８２】
図１２は図１０の通信ルート探索処理（Ｓ２２００）を説明するためのフロー図である。
【００８３】
先ず、通信ルート探索部２０８は、ｎをグローバルクエリ最適化部２０７より通知されたクエリ処理装置の装置数（＝ローカルクエリ数）に設定する（Ｓ２２０１）。次に、ｉ＝２に設定する（Ｓ２２０２）。
【００８４】
それから、通信ルート探索部２０８は、グローバルクエリ最適化部２０７より通知された、処理の順番上ｉ番目のクエリ処理装置に割り当てられたローカルクエリが対象とするセグメントを特定する（Ｓ２２０３）。
【００８５】
次に、通信ルート探索部２０８は、特定したセグメントが処理の順番上ｊ番目〜ｉ-１番目（但し、1≦ｊ＜ｉ≦ｎ）のクエリ処理装置を経由して、ｉ番目のクエリ処理装置に到達した場合の通信コストＣ１を計算する（Ｓ２２０４）。例えば、クエリ処理装置間の単位データサイズ当たりの通信コストをＵ１とした場合、通信コストＣ１は、（クエリ装置間を転送するセグメントのデータサイズ×Ｕ１）の各クエリ装置間の総和で計算できる。例えば、処理の順番上１番目〜２番目のクエリ処理装置間でセグメントサイズＶ１のデータを転送し、処理の順番上２番目〜３番目のクエリ処理装置間でセグメントサイズＶ２のデータを転送した場合の通信コストＣ１は、Ｃ１＝Ｖ１×Ｕ１＋Ｖ２×Ｕ１となる。なお、クエリ処理装置間の単位データサイズ当たりの通信コストＵ１は、通信環境等を考慮して予め設定されているものとする。
【００８６】
次に、通信ルート探索部２０８は、特定したセグメントが処理の順番上ｊ番目のクエリ処理装置およびプロキシ装置を経由して、ｉ番目のクエリ処理装置に到達した場合の通信コストＣ２を計算する（Ｓ２２０５）。例えば、クエリ処理装置およびプロキシ装置間の単位データサイズ当たりの通信コストをＵ２とした場合、ｊ番目のクエリ処理装置でプロキシ装置にセグメントサイズＶ３のデータを送信し、ｉ番目のクエリ処理装置でプロキシ装置からセグメントサイズＶ４のデータを受信した場合の通信コストＣ２は、Ｃ２＝Ｖ３×Ｕ２＋Ｖ４×Ｕ２で計算できる。なお、クエリ処理装置およびプロキシ装置２間の単位データサイズ当たりの通信コストＵ２は、通信環境およびプロキシ装置２での管理に要する処理コスト等を考慮して予め設定されているものとする。
【００８７】
さて、通信ルート探索部２０８は、Ｓ２２０４で計算した通信コストＣ１およびＳ２２０５で計算した通信コストＣ２を比較する（Ｓ２２０６）。通信コストＣ１の方が高い場合（Ｓ２２０６でＹＥＳ）は、Ｓ２２０３で特定したセグメントの通信ルートを、処理の順番上１番目〜ｉ-１番目のクエリ処理装置を経由するルートに決定し、Ｓ２２０９に進む。一方、通信コストＣ２の方が低い場合（Ｓ２２０６でＹＥＳ）は、Ｓ２２０３で特定したセグメントの通信ルートを、処理の順番上１番目のクエリ処理装置およびプロキシ装置２を経由するルートに決定し、Ｓ２２０７に進む。
【００８８】
Ｓ２２０７において、通信ルート探索部２０８は、Ｓ２２０３で特定した、処理の順番上ｉ番目のクエリ処理装置に割り当てられたローカルクエリが対象とするセグメントを、保存データを構成するセグメントとする。それから、通信ルート探索部２０８は、クエリ処理装置アクセス部２０１を介して、処理の順番上ｉ番目のクエリ処理装置にアクセスし、Ｓ２２０３で特定したセグメントを、当該クエリ処理装置の対象データを構成するセグメントに設定する（Ｓ２２０８）。
【００８９】
一方、Ｓ２２０９において、通信ルート探索部２０８は、Ｓ２２０３で特定した、処理の順番上ｉ番目のクエリ処理装置に割り当てられたローカルクエリが対象とするセグメントを、保存データを構成するセグメントから外し、プロキシを利用しないようにする。
【００９０】
さて、通信ルート探索部２０８は、ｉ＝ｎか否かを調べ（Ｓ２２１０）、ｉ＝ｎでない（ｉがｎに到達していない）ならば（Ｓ２２１０でＮＯ）、ｉの値を１つインクリメントして（Ｓ２２１１）、Ｓ２２０３に戻る。ｉ＝ｎならば（Ｓ２２１０でＹＥＳ）、クエリ処理装置アクセス部２０１を介して、処理の順番上１番目のクエリ処理装置にアクセスし、保存データを構成するセグメントを当該クエリ処理装置に設定する（Ｓ２２１２）。
【００９１】
図１３はプロキシ装置２のクエリ処理動作を説明するためのフロー図である。
【００９２】
スタンプ発行部２０４は、クエリ処理装置アクセス部２１０を介して処理の順番上１番目のクエリ処理装置１１から保存データ登録要求を受信すると（Ｓ２３０１でＹＥＳ）、システムタイムスタンプ（例えば連番）６８１、およびエクスパイアタイムスタンプ（例えば連番）６８２を生成する（Ｓ２３０２）。そして、生成したシステムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２に該保存データ登録要求に含まれているストリームＩＤを付加し、これをクエリ処理装置アクセス部２０１経由で処理の順番上１番目のクエリ処理装置１１に送信する（Ｓ２３０３）。また、スタンプ発行部２０４は、該保存データ登録要求に含まれているストリームＩＤおよび少なくとも１つのセグメントを、生成したシステムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２と共に、保存データ管理部２０５に通知する。これを受けて、保存データ管理部２０５は、スタンプ発行部２０４から受け取ったストリームＩＤ、少なくとも１つのセグメント、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２を、保存データとして登録する（Ｓ２３０４）。
【００９３】
また、データ抽出部２１０は、クエリ処理装置アクセス部２０１を介して処理の順番上２〜ｎ番目のクエリ処理装置１２〜１ｎから対象データ要求を受信すると（Ｓ２４０１でＹＥＳ）、当該対象データ要求に含まれているストリームＩＤを持つ保存データを保存データ管理部２０５から検索する（Ｓ２４０２）。そして、検索した保存データから当該対象データ要求で指定されているセグメントのデータを抽出する（Ｓ２４０４）。そして、抽出したセグメントのデータを対象データとして、クエリ処理装置アクセス部２０１を介して当該対象データ要求の送信元に送信する（Ｓ２４０４）。
【００９４】
次に、本発明の一実施形態に係るストリームデータ処理システムの動作概要を説明する。
【００９５】
図１４は図１に示すストリームデータ処理システムの動作を説明するための図である。
【００９６】
ユーザ端末３がプロキシ装置２にグローバルクエリを送信すると（Ｔ３０１）、プロキシ装置２は、上述のグローバルクエリ最適化処理（図１１参照）を行って（Ｔ３０２）、各クエリ処理装置１１〜１ｎに、ローカルクエリを設定する（Ｔ３０３〜Ｔ３０５）。また、プロキシ装置２は、上述の通信ルート探索処理（図１２参照）を行って（Ｔ３０６）、処理順番上ｉ番目（但し、1≦ｉ＜ｎ）のクエリ処理装置１ｉに、保存データを構成するセグメントを設定する（Ｔ３０７、Ｔ３１５、Ｔ３１６）。また、処理に際して保存データのセグメントを利用するクエリ処理装置１２〜１ｎに、当該セグメントを対象データとして利用するよう設定する（Ｔ３０８）。以上により、グローバルクエリの実行に先立って行われる各種設定が終了する。
【００９７】
ストリームデータ生成装置４は、複数のセグメントＳ１〜Ｓｎからなるストリームデータを生成し、これを処理の順番上１番目のクエリ処理装置１１に送信する（Ｔ３０９）。
【００９８】
処理の順番上ｉ番目（但し、１≦ｉ＜ｎ）のクエリ処理装置１ｉは、プロキシ装置２の設定に従い、受信したストリームデータＳ１〜Ｓｎから保存データを構成するセグメントＳ４〜Ｓｎを切り出して、プロキシ装置２に送信する（Ｔ３１０）。また、クエリ処理装置１１は、残りのストリームデータに含まれているセグメントＳ１〜Ｓ３に対してローカルクエリを実行し、その結果を転送データとして、処理の順番上２番目のクエリ処理装置１２に送信する（Ｔ３１１）。
【００９９】
処理の順番上２番目のクエリ処理装置１２は、転送データに含まれているＳ２、Ｓ３に対してローカルクエリを実行し、その結果を転送データとして、処理の順番上３番目のクエリ処理装置１３に送信する（Ｔ３１２）と共に、Ｓ３を保存データとしてプロキシ装置２に転送する（Ｔ３１７）。なお、処理の順番上ｉ番目のクエリ処理装置１ｉも同様の処理を行う（Ｔ３１８）。但し、ローカルクエリの対象となるセグメントＳｉが転送データに含まれていない場合は、プロキシ装置２からこのセグメントＳｉを取得する（Ｔ３１３）。
【０１００】
そして、処理の順番上ｎ番目（最後）のクエリ処理装置１ｎは、ローカルクエリの処理結果をプロキシ装置２に通知する。プロキシ装置２は、この結果をグローバルクエリの処理結果として、ユーザ端末３に送信する（Ｔ３１４）。
【０１０１】
以上、本発明の一実施形態について説明した。
【０１０２】
本実施形態によれば、例えば処理の順番上後方に位置するクエリ処理装置で初めてローカルクエリの処理に使用されるセグメントが保存データとしてプロキシ装置２に格納される。このため、該セグメントが複数のクエリ処理装置間を伝送されるのを防止することができ、これにより、通信トラフィックの発生を抑制することができる。
【０１０３】
また、本実施形態では、処理対象データに付与されたシステムタイムスタンプが示す順番に従ってクエリ処理を実行するので、例えば株価トレンド等の処理の順番が問題になるストリームデータも適切に処理することができる。また、本実施形態では、エクスパイアタイムスタンプが示す寿命が尽きた処理対象データを装置内のテンポラルストアから消去するので、不要なデータが装置内に滞在してクエリ処理の結果に影響を与えることを防止できる。
【０１０４】
本発明は上記の各実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【０１０５】
例えば、上記の実施形態では、処理の順番上最後（ｎ番目）に位置するクエリ処理装置１ｎは、グローバルクエリの処理結果をプロキシ装置２に送信しているが、これをユーザ端末３に直接送信するようにしてもよい。
【０１０６】
また、上記の実施形態では、システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２として、例えば連番を使用する場合を例にとり説明した。しかし、本発明はこれに限定されない。システムタイムスタンプ６８１およびエクスパイアタイムスタンプ６８２として、例えば時刻を利用してよい。
【０１０７】
また、上記の実施形態において、いずれかのクエリ処理装置１１〜１ｎに、プロキシ装置２としての機能を持たせてプロキシ装置２を兼ねさせてもよい。
【図面の簡単な説明】
【０１０８】
【図１】図１は本発明の一実施形態に係るストリームデータ処理システムの概略図である。
【図２】図２はストリームデータ６１のデータフォーマットを模式的に表した図である。
【図３】図３はクエリ処理装置１１〜１ｎの概略構成図である。
【図４】図４はローカルクエリ実行部１０９の概略図である。
【図５】図５はクエリ処理装置１１〜１ｎのハードウエア構成例を示す図である。
【図６】図６はローカルクエリの実行に先立って行われるクエリ処理装置１１〜１ｎの設定動作を説明するためのフロー図である。
【図７】図７は処理の順番上一番目に位置するクエリ処理装置１１のクエリ処理動作を説明するためのフロー図である。
【図８】図８は処理の順番上２〜ｎ番目に位置するクエリ処理装置１２〜１ｎのクエリ処理動作を説明するためのフロー図である。
【図９】図９はプロキシ装置２の概略構成図である。
【図１０】図１０はグローバルクエリの実行に先立って行われるプロキシ装置２の設定動作を説明するためのフロー図である。
【図１１】図１１は図１０のグローバルクエリ最適化処理（Ｓ２１００）を説明するためのフロー図である。
【図１２】図１２は図１０の通信ルート探索処理（Ｓ２２００）を説明するためのフロー図である。
【図１３】図１３はプロキシ装置２のクエリ処理動作を説明するためのフロー図である。
【図１４】図１４は図１に示すストリームデータ処理システムの動作を説明するための図である。
【図１５】図１５はタプルベースウィンドウを説明するための図である。
【図１６】図１６はタイムベースウィンドウを説明するための図である。
【符号の説明】
【０１０９】
１：クエリ処理装置、２：プロキシ装置、３：ユーザ端末、４：ストリームデータ生成装置、５：ネットワーク、６１：ストリームデータ、６２：転送データ、６３：保存データ、６４：対象データ、６５：処理結果、６６：グローバルクエリ、６７：ローカルクエリ
【図１】
0004723301.tif 000002
【図２】
0004723301.tif 000003
【図３】
0004723301.tif 000004
【図４】
0004723301.tif 000005
【図５】
0004723301.tif 000006
【図６】
0004723301.tif 000007
【図７】
0004723301.tif 000008
【図８】
0004723301.tif 000009
【図９】
0004723301.tif 000010
【図１０】
0004723301.tif 000011
【図１１】
0004723301.tif 000012
【図１２】
0004723301.tif 000013
【図１３】
0004723301.tif 000014
【図１４】
0004723301.tif 000015
【図１５】
0004723301.tif 000016
【図１６】
0004723301.tif 000017