(57)【要約】【課題】ストリームの結果集合の出力に遅延が発生することを防止すること。【解決手段】結合装置１００は、ストリームＲおよびストリームＳを順次受信する。結合装置１００は、ストリームＲおよびストリームＳのウインドウを開始時刻から順に受信している最中に、ストリームＲの受信データの集計キーと同一の集計キーの受信データをストリームＳから検出した時点で、各集計キーの数値を結合して結合結果を結果集合テーブルに記憶する。【選択図】図１
2013174940.tif 000002
【特許請求の範囲】
【請求項１】
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信する受信部と、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶部に記憶する結合部と
を有することを特徴とする結合装置。
【請求項２】
前記記憶部は、第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域を有し、
前記結合部は、
前記第１ストリームデータの第１ウインドウに続いて第２ウインドウを受信する一方で、前記第２ストリームデータの第３ウインドウに続いて第４ウインドウを受信し、前記第２ウインドウおよび前記第４ウインドウを受信している最中に、
前記第２ウインドウの集計キーと同一の集計キーを第３ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第２記憶領域に格納し、
前記第２ウインドウの集計キーと同一の集計キーを第４ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第４記憶領域に格納し、
前記第４ウインドウの集計キーと同一の集計キーを第１ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第３記憶領域に格納し、
前記第１ストリームデータの前記第２ウインドウの次のウインドウを受信した場合には、前記第２記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第３記憶領域に登録し、
前記第２ストリームデータの前記第４ウインドウの次のウインドウを受信した場合には、前記第３記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第２記憶領域に登録する
ことを特徴とする請求項１に記載の結合装置。
【請求項３】
前記結合部は、
前記第２ウインドウの集計キーと同一の集計キーが、前記第２記憶領域に登録されている場合には、前記第２ウインドウの集計キーの数値と、前記第２記憶領域の同一の集計キーの数値とを加算させ
前記第４ウインドウの集計キーと同一の集計キーが、前記第３記憶領域に登録されている場合には、前記第４ウインドウの集計キーの数値と、前記第３記憶領域の同一の集計キーの数値とを加算させることを特徴とする請求項２に記載の結合装置。
【請求項４】
コンピュータに、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信し、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶装置に記憶する
各処理を実行させることを特徴とする結合プログラム。
【請求項５】
コンピュータが実行する結合方法であって、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信し、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を結合して結合結果を記憶装置に記憶する
各処理を実行することを特徴とする結合方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、結合装置等に関する。
【背景技術】
【０００２】
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含むストリームデータを複数の店舗から受信し、各ストリームデータを結合する従来技術がある。以下の説明では、ストリームデータを適宜ストリームと表記する。
【０００３】
上記の従来技術について説明する。ここでは、異なる２つの店から受信するストリームＲ、Ｓに対してウインドウ結合を行い、ある一定の期間内に双方の店で買い物をした顧客と、買い物の合計金額を求める場合について説明する。
【０００４】
図３０は、従来技術を説明するための図である。ストリームＲには、ウインドウＲ１、Ｒ２、Ｒ３、Ｒ４が含まれる。ストリームＳには、ウインドウＳ１、Ｓ２、Ｓ３、Ｓ４が含まれる。各ウインドウには、顧客の名前と顧客が購入した商品の金額とを対応付けた受信データが含まれている。ウインドウ条件を、ストリームＲ、Ｓともにウインドウ幅が３０分のジャンプ窓とし、開始時刻を「１０：００」とする。
【０００５】
従来技術では、ストリームＲ、Ｓに対して、それぞれ直近の閉じたウインドウ同士を結合した結果を、現在の結果集合とする。例えば、現在の時刻が「１０：３０〜１１：００」に含まれる場合には、直近の閉じたウインドウはウインドウＲ１とウインドウＳ１となる。ウインドウＲ１とウインドウＳ１とを比較すると、双方のストリームに含まれる顧客は「Ａｌｉｃｅ」であり、合計金額は「９００」となる。このため、結果集合Ｒ１×Ｓ１は「Ａｌｉｃｅ、９００」となる。
【０００６】
現在の時刻が「１１：００〜１１：３０」に含まれる場合には、直近の閉じたウインドウはウインドウＲ２とウインドウＳ２となる。ウインドウＲ２とウインドウＳ２とを比較すると、双方のストリームに含まれる顧客は「Ｈｅｎｒｙ」、「Ｃａｒｅｎ」である。「Ｈｅｎｒｙ」の合計金額は「１６００」となり、「Ｃａｒｅｎ」の合計金額は「３００」となる。このため、結果集合Ｒ２×Ｓ２は「Ｈｅｎｒｙ、１６００」、「Ｃａｒｅｎ、３００」となる。
【０００７】
現在の時刻が「１１：３０〜１２：００」に含まれる場合には、直近の閉じたウインドウはウインドウＲ３とウインドウＳ３となる。ウインドウＲ３とウインドウＳ３とを比較すると、双方のストリームに含まれる顧客は「Ｄｉｃｋ」であり、合計金額は「７００」となる。このため、結果集合Ｒ３×Ｓ３は「Ｄｉｃｋ、７００」となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２３８１９５号公報
【非特許文献】
【０００９】
【非特許文献１】A.  Arasu  et  al.  “The  CQL  continuous  query  language:semantic  foundations  and  query  execution”,  VLDB  Journal,  15(2),  pp.121−142,  2006.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来技術では、ストリームの結果集合の出力に遅延が生じるという問題があった。
【００１１】
従来技術では、ウインドウが閉じてから結合演算を行っている。このため、ウインドウが閉じた直後に結合結果の出力要求が発生した場合には、まだ結合演算が完了していないため、結果集合の出力に遅延が生じてしまう。
【００１２】
図３１は、従来技術の問題点を説明するための図である。例えば、結果集合Ｒ１×Ｓ１の演算の開始時刻は「１０：３０」となる。このため、「１０：３０」に出力要求を受け付けた場合には、演算終了までのタイムロス１０ａが発生する。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、ストリームの結果集合の出力に遅延が発生することを防止することができる結合装置、結合プログラムおよび結合方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
開示の結合装置は、受信部および結合部を有する。受信部は、任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信する。結合部は、第１ストリームデータおよび第２ストリームデータのウインドウを開始時刻から順に受信する。結合部は、第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶部に記憶する。
【発明の効果】
【００１５】
開示の結合装置によれば、ストリームの結果集合の出力に遅延が発生することを防止することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、本実施例に係るシステムの構成を示す図である。
【図２】図２は、ストリームのデータ構造の一例を示す図である。
【図３】図３は、本実施例に係る結合装置の構成の一例を示す図である。
【図４】図４は、受信データテーブルのデータ構造の一例を示す図である。
【図５】図５は、結果集合テーブルのデータ構造の一例を示す図である。
【図６】図６は、本実施例に係る受信部の処理手順を示すフローチャートである。
【図７】図７は、ウインドウ幅が等しい場合の結合部の処理を説明するための図である。
【図８】図８は、本実施例に係る結合部の処理手順を示すフローチャートである。
【図９】図９は、本実施例に係る受信データｒ処理の処理手順を示すフローチャートである。
【図１０】図１０は、本実施例に係る受信データｓ処理の処理手順を示すフローチャートである。
【図１１Ａ】図１１Ａは、結合部の処理を説明するための図（１）である。
【図１１Ｂ】図１１Ｂは、結合部の処理を説明するための図（２）である。
【図１１Ｃ】図１１Ｃは、結合部の処理を説明するための図（３）である。
【図１２Ａ】図１２Ａは、結合部の処理を説明するための図（４）である。
【図１２Ｂ】図１２Ｂは、結合部の処理を説明するための図（５）である。
【図１３Ａ】図１３Ａは、結合部の処理を説明するための図（６）である。
【図１３Ｂ】図１３Ｂは、結合部の処理を説明するための図（７）である。
【図１４Ａ】図１４Ａは、結合部の処理を説明するための図（８）である。
【図１４Ｂ】図１４Ｂは、結合部の処理を説明するための図（９）である。
【図１４Ｃ】図１４Ｃは、結合部の処理を説明するための図（１０）である。
【図１５Ａ】図１５Ａは、結合部の処理を説明するための図（１１）である。
【図１５Ｂ】図１５Ｂは、結合部の処理を説明するための図（１２）である。
【図１５Ｃ】図１５Ｃは、結合部の処理を説明するための図（１３）である。
【図１６Ａ】図１６Ａは、結合部の処理を説明するための図（１４）である。
【図１６Ｂ】図１６Ｂは、結合部の処理を説明するための図（１５）である。
【図１６Ｃ】図１６Ｃは、結合部の処理を説明するための図（１６）である。
【図１７Ａ】図１７Ａは、結合部の処理を説明するための図（１７）である。
【図１７Ｂ】図１７Ｂは、結合部の処理を説明するための図（１８）である。
【図１７Ｃ】図１７Ｃは、結合部の処理を説明するための図（１９）である。
【図１８Ａ】図１８Ａは、結合部の処理を説明するための図（２０）である。
【図１８Ｂ】図１８Ｂは、結合部の処理を説明するための図（２１）である。
【図１９Ａ】図１９Ａは、結合部の処理を説明するための図（２２）である。
【図１９Ｂ】図１９Ｂは、結合部の処理を説明するための図（２３）である。
【図２０Ａ】図２０Ａは、結合部の処理を説明するための図（２４）である。
【図２０Ｂ】図２０Ｂは、結合部の処理を説明するための図（２５）である。
【図２０Ｃ】図２０Ｃは、結合部の処理を説明するための図（２６）である。
【図２１Ａ】図２１Ａは、結合部の処理を説明するための図（２７）である。
【図２１Ｂ】図２１Ｂは、結合部の処理を説明するための図（２８）である。
【図２２Ａ】図２２Ａは、結合部の処理を説明するための図（２９）である。
【図２２Ｂ】図２２Ｂは、結合部の処理を説明するための図（３０）である。
【図２２Ｃ】図２２Ｃは、結合部の処理を説明するための図（３１）である。
【図２３Ａ】図２３Ａは、結合部の処理を説明するための図（３２）である。
【図２３Ｂ】図２３Ｂは、結合部の処理を説明するための図（３３）である。
【図２３Ｃ】図２３Ｃは、結合部の処理を説明するための図（３４）である。
【図２４Ａ】図２４Ａは、結合部の処理を説明するための図（３５）である。
【図２４Ｂ】図２４Ｂは、結合部の処理を説明するための図（３６）である。
【図２４Ｃ】図２４Ｃは、結合部の処理を説明するための図（３７）である。
【図２５Ａ】図２５Ａは、結合部の処理を説明するための図（３８）である。
【図２５Ｂ】図２５Ｂは、結合部の処理を説明するための図（３９）である。
【図２５Ｃ】図２５Ｃは、結合部の処理を説明するための図（４０）である。
【図２６Ａ】図２６Ａは、結合部の処理を説明するための図（４１）である。
【図２６Ｂ】図２６Ｂは、結合部の処理を説明するための図（４２）である。
【図２６Ｃ】図２６Ｃは、結合部の処理を説明するための図（４３）である。
【図２７Ａ】図２７Ａは、結合部の処理を説明するための図（４４）である。
【図２７Ｂ】図２７Ｂは、結合部の処理を説明するための図（４５）である。
【図２８Ａ】図２８Ａは、結合部の処理を説明するための図（４６）である。
【図２８Ｂ】図２８Ｂは、結合部の処理を説明するための図（４７）である。
【図２９】図２９は、結合プログラムを実行するコンピュータの一例を示す図である。
【図３０】図３０は、従来技術を説明するための図である。
【図３１】図３１は、従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する結合装置、結合プログラムおよび結合方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１８】
本実施例に係るシステムの構成について説明する。図１は、本実施例に係るシステムの構成を示す図である。図１に示すように、このシステムは、ストリーム送信装置２０ａ、２０ｂと、利用者端末３０と、結合装置１００を有する。ストリーム送信装置２０ａ、２０ｂ、利用者端末３０、結合装置１００は、ネットワーク５０に接続される。以下の説明では、適宜、ストリーム送信装置２０ａ、２０ｂをまとめてストリーム送信装置２０と表記する。
【００１９】
ストリーム送信装置２０は、ストリームデータを結合装置２００に送信する装置である。以下の説明では、ストリームデータを適宜、ストリームと略記する。ストリームは、任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む。以下の説明では、ストリーム送信装置２０ａから送信されるストリームをストリームＲと表記し、ストリーム送信装置２０ｂから送信されるストリームをストリームＳと表記する。
【００２０】
図２は、ストリームのデータ構造の一例を示す図である。まず、ストリームＲについて説明する。ストリームＲは、ウインドウＲ１、Ｒ２、Ｒ３を有する。ウインドウＲ１、Ｒ２、Ｒ３のウインドウ幅ＷＲを４０分とする。ストリームＲの各ウインドウは、受信データｒを含む。受信データｒは、集計キーと数値とを含む。
【００２１】
ウインドウＲ１には、受信データｒ１１、ｒ１２が含まれる。受信データｒ１１には、集計キー「Ａｌｉｃｅ」、数値「５００」が含まれる。受信データｒ１２には、集計キー「Ｄｉｃｋ」、数値「３００」が含まれる。
【００２２】
ウインドウＲ２には、受信データｒ２１〜ｒ２３が含まれる。受信データｒ２１には、集計キー「Ｅｒｉｃ」、数値「５００」が含まれる。受信データｒ２２には、集計キー「Ｃａｒｅｎ」、数値「２００」が含まれる。受信データｒ２３には、集計キー「Ｃａｒｅｎ」、数値「６００」が含まれる。
【００２３】
ウインドウＲ３には、受信データｒ３１が含まれる。受信データｒ３１には、集計キー「Ｉｒｉｓ」、数値「２００」が含まれる。
【００２４】
例えば、ストリームＲは、ストリーム送信装置２０ａによって結合装置１００に送信され、結合装置１００は、時刻「１０：００」から、ストリームＲの受信を開始する。
【００２５】
図２のストリームＳについて説明する。ストリームＳは、ウインドウＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５を有する。ウインドウＳ１〜Ｓ５のウインドウ幅ＷＳをそれぞれ２０分とする。ストリームＳの各ウインドウは、受信データｓを含む。受信データｓは、集計キーと数値とを含む。
【００２６】
ウインドウＳ１には、受信データｓ１１、ｓ１２が含まれる。受信データｓ１１には、集計キー「Ｂｏｂ」、数値「６００」が含まれる。受信データｓ１２には、集計キー「Ａｌｉｃｅ」、数値「４００」が含まれる。
【００２７】
ウインドウＳ２には、受信データｓ２１、ｓ２２が含まれる。受信データｓ２１には、集計キー「Ｄｉｃｋ」、数値「３００」が含まれる。受信データｓ２２には、集計キー「Ｈｅｎｒｙ」、数値「１００」が含まれる。
【００２８】
ウインドウＳ３には、受信データｓ３１、ｓ３２が含まれる。受信データｓ３１には、集計キー「Ｃａｒｅｎ」、数値「３００」が含まれる。受信データｓ３２には、集計キー「Ｄｉｃｋ」、数値「１００」が含まれる。
【００２９】
ウインドウＳ４には、受信データｓ４１が含まれる。受信データｓ４１には、集計キー「Ｂｏｂ」、数値「７００」が含まれる。なお、ウインドウＳ５には、受信データｓが含まれていない。
【００３０】
例えば、ストリームＳは、ストリーム送信装置２０ｂによって結合装置１００に送信され、結合装置１００は、時刻「１０：１０」から、ストリームＳの受信を開始する。
【００３１】
利用者端末３０は、図２に示したストリームＲ、Ｓの結合結果を、結合装置１００から取得する装置である。
【００３２】
結合装置１００は、ストリーム送信装置２０ａ、２０ｂからストリームＲ、Ｓを順次受信し、ストリームＲ、Ｓに含まれる各受信データを結合する装置である。結合装置１００は、利用者端末３０からの要求に応答して、結合結果を利用者端末３０に送信する。
【００３３】
結合装置１００の構成について説明する。図３は、本実施例に係る結合装置の構成の一例を示す図である。図３に示すように、この結合装置１００は、通信部１１０、入力部１２０、表示部１３０、記憶部１４０、制御部１５０を有する。
【００３４】
通信部１１０は、ネットワーク５０を介して、ストリーム送信装置２０ａ、２０ｂ、利用者端末３０との間でデータ通信を実行する処理部である。制御部１５０は、通信部１１０を介して、ストリーム送信装置２０ａ、２０ｂ、利用者端末３０との間でデータを送受信する。通信部１１０は、通信装置に対応する。
【００３５】
入力部１２０は、各種のデータを結合装置１００に入力する入力装置である。例えば、入力部１２０は、キーボード、マウス、タッチパネル等の入力装置に対応する。表示部１３０は、各種の情報を表示する表示装置である。表示部１３０は、例えば、ディスプレイ、タッチパネル等の表示装置に対応する。
【００３６】
記憶部１４０は、受信データテーブル１４１および結果集合テーブル１４２を記憶する。記憶部１４０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【００３７】
受信データテーブル１４１は、ストリームに含まれる受信データを一時的に保持するテーブルである。図４は、受信データテーブルのデータ構造の一例を示す図である。図４に示すように、受信データテーブル１４１は、記憶領域ＷＲｐｒｅｖ、ＷＲｃｕｒ、ＷＳｐｒｅｖ、ＷＳｃｕｒを有する。
【００３８】
以下の説明において、ウインドウ「Ｒｃｕｒ」、「Ｒｐｒｅｖ」、「Ｓｃｕｒ」、「Ｓｐｒｅｖ」、という表現を利用する。ウインドウ「Ｒｃｕｒ」は、ストリームＲについて、現在受信中のウインドウを示す。ウインドウ「Ｒｐｒｅｖ」は、ストリームＲについて、ウインドウ「Ｒｃｕｒ」の一つ前のウインドウを示す。ウインドウ「Ｓｃｕｒ」は、ストリームＳについて、現在受信中のウインドウを示す。ウインドウ「Ｓｐｒｅｖ」は、ストリームＳについて、ウインドウ「Ｓｃｕｒ」の一つ前のウインドウを示す。
【００３９】
「ＷＲｐｒｅｖ」は、ストリームＲにおいて、ウインドウＲｐｒｅｖに含まれる受信データを保持する領域である。例えば、図２において、ウインドウＲｐｒｅｖがウインドウＲ１の場合には、ＷＲｐｒｅｖには、ウインドウＲ１の受信データｒ１１、ｒ１２が保持される。
【００４０】
「ＷＲｃｕｒ」は、ストリームＲにおいて、ウインドウＲｃｕｒに含まれる受信データを保持する領域である。例えば、図２において、ウインドウＲｃｕｒがウインドウＲ２の場合には、ＷＲｃｕｒには、ウインドウＲ２の受信データｒ２１、ｒ２２、ｒ２３が保持される。
【００４１】
「ＷＳｐｒｅｖ」は、ストリームＳにおいて、ウインドウＳｐｒｅｖに含まれる受信データを保持する領域である。例えば、図２において、ウインドウＳｐｒｅｖがウインドウＳ１の場合には、ＷＲｐｒｅｖには、ウインドウＳ１の受信データｓ１１、ｓ１２が保持される。
【００４２】
「ＷＳｃｕｒ」は、ストリームＳにおいて、ウインドウＳｃｕｒに含まれる受信データを保持する領域である。例えば、図２において、ウインドウＳｃｕｒがウインドウＳ２の場合には、ＷＳｃｕｒには、ウインドウＳ２の受信データｓ２１、ｓ２２が保持される。
【００４３】
結果集合テーブル１４２は、ストリームＲ、Ｓの結合結果を保持するテーブルである。図５は、結果集合テーブルのデータ構造の一例を示す図である。図５に示すように、結果集合テーブル１４２は、第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域を有する。
【００４４】
第１記憶領域は、ウインドウＲｐｒｅｖ及びウインドウＳｐｒｅｖに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
【００４５】
第２記憶領域は、ウインドウＲｃｕｒ及びウインドウＳｐｒｅｖに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
【００４６】
第３記憶領域は、ウインドウＲｐｒｅｖ及びウインドウＳｃｕｒに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
【００４７】
第４記憶領域は、ウインドウＲｃｕｒ及びウインドウＳｃｕｒに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
【００４８】
制御部１５０は、受信部１５１と、結合部１５２と、データ送信部１５３とを有する。制御部１５０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１５０は、例えば、ＣＰＵやＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００４９】
受信部１５１は、ストリームＲ、ストリームＳを受信する処理部である。受信部１５１は、ストリームＲ、ストリームＳを受信しつつ、下記に示すような、閉鎖信号ストリームＣを生成する。受信部１５１は、ストリームＲ、ストリームＳ、閉鎖信号ストリームＣを、結合部１５２に出力する。
【００５０】
受信部１５１は、２種類のタイマーを有しており、現在時刻とウインドウ幅ＷＲ、ＷＳとを比較しながら、ストリームＲ、Ｓのウインドウが閉じるタイミングを示す閉鎖信号ストリームＣを生成し、結合部１５２に出力する。ストリームＲのウインドウを閉鎖するタイミングの信号を「ｃｒ」と表記する。ストリームＳのウインドウを閉鎖するタイミングの信号を「ｃｓ」と表記する。なお、受信部１５１は、ウインドウ幅ＷＲ、ＷＳの情報を、ストリーム送信装置２０ａ、２０ｂから予め取得しておいても良いし、ストリームＲ、Ｓと共に取得しても良い。
【００５１】
ここで、受信部１５１の処理手順について説明する。図６は、本実施例に係る受信部の処理手順を示すフローチャートである。例えば、図６に示す処理は、ストリームＲ、Ｓを受信したことを契機に実行される。
【００５２】
受信部１５１は、初期化を行う（ステップＳ１０１）。ステップＳ１０１において、受信部１５１は、タイマーＴＲ、ＴＳの値を０に設定する。タイマーＴＲは、ストリームＲのウインドウの開始時刻からの時間を計るタイマーである。タイマーＴＳは、ストリームＳのウインドウの開始時刻からの時間を計るタイマーである。タイマーＴＲ、タイマーＴＳは、ストップした状態とする。
【００５３】
受信部１５１は、ストリームＲ、Ｓの受信を開始する（ステップＳ１０２）。
【００５４】
受信部１５１は、次の受信データを受信するまで、タイマーＴＲとＴＳとを監視する。受信部１５１は、ＴＲ≧ＷＲとなった瞬間に、ストリームＲのウインドウ閉鎖信号ｃｒを閉鎖信号ストリームＣに出力し、タイマーＴＲをリセットする。また、受信部１５１は、ＴＳ≧ＷＳとなった瞬間に、ストリームＳのウインドウ閉鎖信号ｃｓを閉鎖信号ストリームＣに出力し、タイマーＴＳをリセットする（ステップＳ１０３）。
【００５５】
受信部１５１は、次の受信データを受信したか否かを判定する（ステップＳ１０４）。受信部１５１は、次の受信データを受信していない場合には（ステップＳ１０４，Ｎｏ）、ステップＳ１０３に移行する。
【００５６】
一方、受信部１５１は、次の受信データを受信した場合には（ステップＳ１０４，Ｙｅｓ）、受信データがストリームＲの受信データｒであるか否かを判定する（ステップＳ１０５）。
【００５７】
受信部１５１は、受信データｒである場合には（ステップＳ１０５，Ｙｅｓ）、ストリームＲの１件目の受信データｒであるか否かを判定する（ステップＳ１０６）。受信部１５１は、１件目の受信データｒではない場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１０８に移行する。
【００５８】
受信部１５１は、１件目の受信データｒである場合には（ステップＳ１０６，Ｙｅｓ）、タイマーＴＲをスタートさせる（ステップＳ１０７）。受信部１５１は、ストリームＲに受信データｒを出力し（ステップＳ１０８）、ステップＳ１０３に移行する。
【００５９】
ところで、ステップＳ１０５において、受信部１５１は、受信データが受信データｓの場合には（ステップＳ１０５，Ｎｏ）、ストリームＳの１件目の受信データｓであるか否かを判定する（ステップＳ１０９）。受信部１５１は、１件目の受信データｓではない場合には（ステップＳ１０９，Ｎｏ）、ステップＳ１１１に移行する。
【００６０】
受信部１５１は、１件目の受信データｓである場合には（ステップＳ１０９，Ｙｅｓ）、タイマーＴＳをスタートさせる（ステップＳ１１０）。受信部１５１は、ストリームＳに受信データｓを出力し（ステップＳ１１１）、ステップＳ１０３に移行する。
【００６１】
結合部１５２は、ストリームＲおよびストリームＳのウインドウを開始時刻から順に受信している最中に、ストリームＲの受信データの集計キーと同一の集計キーをストリームＳから検出する。結合部１５２は、各ストリームＲ、Ｓにおいて、同一の集計キーの数値を加算することで、集計キーの集計値を算出する。
【００６２】
ここで、結合部１５２の処理を具体的に説明する。まず、ストリームＲ、ストリームＳのウインドウ幅が等しい場合の結合部１５２の処理について説明する。図７は、ウインドウ幅が等しい場合の結合部の処理を説明するための図である。
【００６３】
結合部１５２は、ストリームＲに含まれる受信データｒ、ストリームＳに含まれる受信データｓを、受信データテーブル１４１に順次登録する。また、結合部１５２は、受信データテーブル１４１の各受信テーブルを比較して、ストリームＲの受信データの集計キーと同一の集計キーをストリームＳから検出した場合には、集計キーと集計値を、第４記憶領域に登録する。そして、ウインドウが次のウインドウに切り替わった場合には、結合部１５２は、第４記憶領域の情報を、第１記憶領域に移動させる。かかる第１記憶領域に記憶された情報が、前のウインドウにおける結果集合となる。
【００６４】
ストリームＲ、Ｓの現在のウインドウをＲ１、Ｓ１とする。受信データｒ１１と、受信データｓ１２の集計キーが「Ａｌｉｃｅ」で一致する。このため、結合部１５２は、第４記憶領域に、集計キー「Ａｌｉｃｅ」および集計値「９００」の組みを登録する。
【００６５】
ストリームＲ、Ｓの現在のウインドウをＲ２、Ｓ２とする。結合部１５２は、第４記憶領域に登録された集計キー「Ａｌｉｃｅ」および集計値「９００」の組みを、第１記憶領域に移動させる。第１記憶領域に記憶された集計キー「Ａｌｉｃｅ」および集計値「９００」の組みが、時刻「１０：３０」における結果集合となる。
【００６６】
また、ストリームＲ、Ｓの現在のウインドウがＲ２、Ｓ２の場合には、受信データｒ２１と、受信データｒ２２と、受信データｓ２２との集計キーが「Ｈｅｎｒｙ」で一致する。受信データｒ２３と受信データｓ２１との集計キーが「Ｃａｒｅｎ」で一致する。このため、結合部１５２は、集計キー「Ｈｅｎｒｙ」および集計値「１６００」の組みと、集計キー「Ｃａｒｅｎ」および集計値「３００」の組みとを第４記憶領域に登録する。
【００６７】
ストリームＲ、Ｓの現在のウインドウをＲ３、Ｓ３とする。結合部１５２は、第４記憶領域に登録された集計キー「Ｈｅｎｒｙ」および集計値「１６００」の組みと、集計キー「Ｃａｒｅｎ」および集計値「３００」の組みとを、第１記憶領域に移動させる。第１記憶領域に記憶された集計キー「Ｈｅｎｒｙ」および集計値「１６００」の組みと、集計キー「Ｃａｒｅｎ」および集計値「３００」の組みとが、時刻「１１：００」における結果集合となる。
【００６８】
また、ストリームＲ、Ｓの現在のウインドウがＲ３、Ｓ３の場合には、受信データｒ３１と、受信データｓ３１との集計キーが「Ｄｉｃｋ」で一致する。このため、結合部１５２は、第４記憶領域に、集計キー「Ｄｉｃｋ」および集計値「７００」の組みを登録する。
【００６９】
ストリームＲ、Ｓの現在のウインドウをＲ４、Ｓ４とする。結合部１５２は、第４記憶領域に登録された集計キー「Ｄｉｃｋ」および集計値「７００」の組みを、第１記憶領域に移動させる。第１記憶領域に記憶された集計キー「Ｄｉｃｋ」および集計値「７００」の組みが、時刻「１０：３０」における結果集合となる。
【００７０】
続いて、ストリームＲ、ストリームＳのウインドウ幅が異なる場合にも対応した結合部１５２の処理について説明する。まず、結合部１５２の処理手順を説明する。以下に示す処理手順は、ウインドウ幅が等しい場合であっても対応可能である。
【００７１】
図８は、本実施例に係る結合部の処理手順を示すフローチャートである。例えば、図８に示す処理は、ストリームＲ、Ｓ、閉鎖信号ストリームＣを受信したことを契機に実行される。
【００７２】
結合部１５２は、初期化を行う（ステップＳ２０１）。ステップＳ２０１において、結合部１５２は、受信データテーブル１４１のＷＲｐｒｅｖ、ＷＲｃｕｒ、ＷＳｐｒｅｖ、ＷＳｃｕｒを空集合とする。また、結合部１５２は、結果集合テーブル１４２の第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域の情報を空に設定する。
【００７３】
結合部１５２は、ストリームＲ、Ｓ、閉鎖信号ストリームＣの受信を開始する（ステップＳ２０２）。
【００７４】
結合部１５２は、次のデータを所定時間以上受信しなかった場合には（ステップＳ２０３，Ｎｏ）、処理を終了する。
【００７５】
ステップＳ２０３において、結合部１５２は、ウインドウ閉鎖信号ｃｓを受信した場合には、ステップＳ２０４に移行する。結合部１５２は、ウインドウ閉鎖信号ｃｒを受信した場合には、ステップＳ２０６に移行する。結合部１５２は、ストリームＲの受信データｒを受信した場合には、ステップＳ２０８に移行する。結合部１５２は、ストリームＳの受信データｓを受信した場合には、ステップＳ２０９に移行する。
【００７６】
結合部１５２が、ウインドウ閉鎖信号ｃｓを受信した場合について説明する。結合部１５２は、受信データテーブル１４１のＷＳｐｒｅｖに、ＷＳｃｕｒを代入し、ＷＳｃｕｒを空集合とする（ステップＳ２０４）。
【００７７】
結合部１５２は、第１記憶領域（Ｒｐｒｅｖ×Ｓｐｒｅｖ）に、第３記憶領域（Ｒｐｒｅｖ×Ｓｃｕｒ）を代入し、第２記憶領域（Ｒｃｕｒ×Ｓｐｒｅｖ）に第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）を代入する。結合部１５２は、第３記憶領域（Ｒｐｒｅｖ×Ｓｃｕｒ）と第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）を空集合に設定し（ステップＳ２０５）、ステップＳ２１０に移行する。
【００７８】
結合部１５２が、ウインドウ閉鎖信号ｃｒを受信した場合について説明する。結合部１５２は、受信データテーブル１４１のＷＲｐｒｅｖに、ＷＲｃｕｒを代入し、ＷＲｃｕｒを空集合とする（ステップＳ２０６）。
【００７９】
結合部１５２は、第１記憶領域（Ｒｐｒｅｖ×Ｓｐｒｅｖ）に、第２記憶領域（Ｒｃｕｒ×Ｓｐｒｅｖ）を代入し、第３記憶領域（Ｒｐｒｅｖ×Ｓｃｕｒ）に第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）を代入する。結合部１５２は、第２記憶領域（Ｒｃｕｒ×Ｓｐｒｅｖ）と第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）を空集合に設定し（ステップＳ２０７）、ステップＳ２１０に移行する。
【００８０】
結合部１５２が、ストリームＲの受信データｒを受信した場合について説明する。結合部１５２は、受信データｒ処理を実行し（ステップＳ２０８）、ステップＳ２１０に移行する。
【００８１】
結合部１５２が、ストリームＳの受信データｓを受信した場合について説明する。結合部１５２は、受信データｓ処理を実行し（ステップＳ２０９）、ステップＳ２１０に移行する。
【００８２】
結合部１５２は、利用者端末３０からの出力要求を受け付けた場合に、第１記憶領域（Ｒｐｒｅｖ×Ｓｐｒｅｖ）のデータを利用者端末３０に出力し（ステップＳ２１０）、ステップＳ２０３に移行する。
【００８３】
次に、図８のステップＳ２０８に示した受信データｒ処理の処理手順について説明する。図９は、本実施例に係る受信データｒ処理の処理手順を示すフローチャートである。
【００８４】
図９に示すように、結合部１５２は、受信データｒがＷＲｃｕｒに登録済みであるか否かを判定する（ステップＳ３０１）。
【００８５】
結合部１５２は、受信データｒがＷＲｃｕｒに登録済みの場合には（ステップＳ３０１，Ｙｅｓ）、ステップＳ３０２に移行する。
【００８６】
結合部１５２は、ＷＲｃｕｒにおける受信データｒの集計値を更新する。結合部１５２は、第２記憶領域（Ｒｃｕｒ×Ｓｐｒｅｖ）に受信データｒが登録されている場合に、集計値を更新する。結合部１５２は、第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）に受信データｒが登録されている場合に、集計値を更新する（ステップＳ３０２）。
【００８７】
一方、結合部１５２は、受信データｒがＷＲｃｕｒに登録済みではない場合に（ステップＳ３０１，Ｎｏ）、受信データｒをＷＲｃｕｒに登録する（ステップＳ３０３）。
【００８８】
結合部１５２は、受信データｒとＷＳｐｒｅｖの結合結果を第２記憶領域（Ｒｃｕｒ×Ｓｐｒｅｖ）に挿入する（ステップＳ３０４）。結合部１５２は、受信データｒとＷＳｃｕｒの結合結果を第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）に挿入する（ステップＳ３０５）。
【００８９】
次に、図８のステップＳ２０９に示した受信データｓ処理の処理手順について説明する。図１０は、本実施例に係る受信データｓ処理の処理手順を示すフローチャートである。
【００９０】
図１０に示すように、結合部１５２は、受信データｓがＷＳｃｕｒに登録済みであるか否かを判定する（ステップＳ４０１）。
【００９１】
結合部１５２は、受信データｓがＷＳｃｕｒに登録済みである場合には（ステップＳ４０１，Ｙｅｓ）、ステップＳ４０２に移行する。
【００９２】
結合部１５２は、ＷＳｃｕｒにおける受信データｓの集計値を更新する。結合部１５２は、第３記憶領域（Ｒｐｒｅｖ×Ｓｃｕｒ）に受信データｓが登録されている場合に、集計値を更新する。結合部１５２は、第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）に受信データｓが登録されている場合に、集計値を更新する（ステップＳ４０２）。
【００９３】
一方、結合部１５２は、受信データｓがＷＳｃｕｒに登録済みではない場合には（ステップＳ４０１，Ｎｏ）、受信データｓをＷＳｃｕｒに登録する（ステップＳ４０３）。
【００９４】
結合部１５２は、受信データｓとＷＲｐｒｅｖの結合結果を第３記憶領域（Ｒｐｒｅｖ×Ｓｃｕｒ）に挿入する（ステップＳ４０４）。結合部１５２は、受信データｓとＷＲｃｕｒの結合結果を第４記憶領域（Ｒｃｕｒ×Ｓｃｕｒ）に挿入する（ステップＳ４０５）。
【００９５】
図８、９、１０の処理手順に基づいた、結合部１５２の処理について説明する。図１１〜図２８は、結合部の処理を説明するための図である。前提条件として、ストリームＲのウインドウ幅ＷＲを４０分とし、ストリームＳのウインドウ幅ＷＳを２０分とする。
【００９６】
図１１Ａ、１１Ｂ、１１Ｃについて説明する。現在時刻を「１０：００」とする。図１１Ａに示すように、結合部１５２は、ストリームＲの受信を開始する。ストリームＲには受信データｒ１１が含まれる。結合部１５２は、受信データｒ１１の集計キー「Ａｌｉｃｅ」、数値「５００」を、受信データテーブル１４１の「ＷＲｃｕｒ」に登録する。図１１Ｂに示すように、受信データテーブル１４１の「ＷＲｃｕｒ」には、集計キー「Ａｌｉｃｅ」、数値「５００」が登録される。図１１Ｂに示すように、受信データｒ１１の比較対象となるＷＳｃｕｒ、ＷＳｐｒｅｖにはデータが存在しないため、結合結果はない。このため、図１１Ｃに示すように、結合部１５２は、第１〜４記憶領域にはデータを登録しない。
【００９７】
現在時刻「１０：００」において、受信部１５１により、タイマーＴＲは０にセットされた後、タイマーＴＲがスタートする。一方、ストリームＳの受信は開始されていないため、タイマーＴＳは、開始前となる。
【００９８】
図１２Ａ、図１２Ｂについて説明する。現在時刻を「１０：１０」とする。図１２Ａに示すように、結合部１５２は、ストリームＳの受信を開始する。ストリームＳには受信データｓ１１が含まれる。結合部１５２は、受信データｓ１１の集計キー「Ｂｏｂ」、数値「６００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に登録する。図１２Ｂに示すように、受信データテーブル１４１の「ＷＳｃｕｒ」には、集計キー「Ｂｏｂ」、数値「６００」が登録される。図１２Ｂに示すように、受信データｓ１１の比較対象となるＷＲｃｕｒ、ＷＲｐｒｅｖには、受信データｓ１１と同一の集計キーが存在しないため、結合結果はない。このため、図１１Ｃと同様にして、結合部１５２は、第１〜４記憶領域にデータを登録しない。
【００９９】
現在時刻「１０：１０」において、タイマーＴＲは１０分となる。また、受信部１５１により、タイマーＴＳは０にセットされた後、タイマーＴＳがスタートする。
【０１００】
図１３Ａ、図１３Ｂについて説明する。現在時刻を「１０：２５」とする。図１３Ａに示すように、結合部１５２は、ストリームＲから受信データｒ１２を新たに受信する。結合部１５２は、受信データｒ１２の集計キー「Ｄｉｃｋ」、数値「３００」を、受信データテーブル１４１の「ＷＲｃｕｒ」に登録する。図１３Ｂに示すように、「ＷＲｃｕｒ」には、集計キー「Ｄｉｃｋ」、数値「３００」が追加登録される。図１３Ｂに示すように、受信データｒ１２の比較対象となるＷＲｃｕｒ、ＷＲｐｒｅｖには、受信データｒ１２と同一の集計キーが存在しないため、結合結果はない。このため、図１１Ｃと同様にして、結合部１５２は、第１〜４記憶領域にデータを登録しない。
【０１０１】
現在時刻「１０：２５」において、タイマーＴＲは２５分となる。タイマーＴＳは１５分となる。
【０１０２】
図１４Ａ、図１４Ｂ、図１４Ｃについて説明する。現在時刻を「１０：２７」とする。図１４Ａに示すように、結合部１５２は、ストリームＳから受信データｓ１２を新たに受信する。結合部１５２は、受信データｓ１２の集計キー「Ａｌｉｃｅ」、数値「４００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に登録する。図１４Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ａｌｉｃｅ」、数値「４００」が追加登録される。
【０１０３】
図１４Ｂに示すように、受信データｓ１２の集計キー「Ａｌｉｃｅ」と、ＷＲｃｕｒの集計キー「Ａｌｉｃｅ」が一致する。このため、結合部１５２は、受信データｓ１２とＷＲｃｕｒを結合し、結合結果を、第４記憶領域に登録する。Ａｌｉｃｅの集計値は「９００」となる。なお、ＷＲｐｒｅｖには受信データｓ１２と同一の集計キーが存在しないため、結合結果はない。
【０１０４】
図１４Ｃに示すように、結果集合テーブル１４２の第４記憶領域には、集計キー「Ａｌｉｃｅ」、集計値「９００」が登録される。
【０１０５】
現在時刻「１０：２７」において、タイマーＴＲは２７分となる。タイマーＴＳは１７分となる。
【０１０６】
図１５Ａ、図１５Ｂ、図１５Ｃについて説明する。現在時刻を「１０：３０」とする。結合部１５２は、ウインドウ閉鎖信号ｃｓを取得する。これにより、図１５Ａに示すように、結合部１５２は、ストリームＳの現在のウインドウを閉じる。また、結合部１５２は、受信データテーブル１４１において、ＷＳｃｕｒのデータをＷＳｐｒｅｖに移動させ、ＷＳｃｕｒを空表に設定する。図１５Ｂに示すように、ＷＳｐｒｅｖには、集計キー「Ｂｏｂ」および数値「６００」の組みと、集計キー「Ａｌｉｃｅ」および数値「４００」の組みとが登録される。また、ＷＳｃｕｒは、空表となる。
【０１０７】
結合部１５２は、ウインドウ閉鎖信号ｃｓを受信した場合には、第４記憶領域の情報を、第２記憶領域に登録し、第４記憶領域を空集合に設定する。結合部１５２は、第３記憶領域の情報を第１記憶領域に登録し、第３記憶領域を空集合に設定する。図１５Ｃに示すように、結合部１５２は、第４記憶領域の「Ａｌｉｃｅ」、「９００」の組みの情報を、第２記憶領域に登録し、第４記憶領域を空集合に設定する。
【０１０８】
現在時刻「１０：３０」において、タイマーＴＲは３０分となる。タイマーＴＳは、２０分となり、ウインドウ幅ＷＳと一致する。このため、受信部１５１は、ウインドウ閉鎖信号ｃｓを、結合部１５２に出力し、タイマーＴＳを０分にリセットする。
【０１０９】
図１６Ａ、図１６Ｂ、図１６Ｃについて説明する。現在時刻を「１０：３５」とする。図１６Ａに示すように、結合部１５２は、ストリームＳから受信データｓ２１を新たに受信する。結合部１５２は、受信データｓ２１の集計キー「Ｄｉｃｋ」、数値「３００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に登録する。図１６Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ｄｉｃｋ」、数値「３００」が追加登録される。図１６Ｂに示すように、受信データｓ２１の集計キー「Ｄｉｃｋ」と、ＷＲｃｕｒの集計キー「Ｄｉｃｋ」とが一致する。このため、集計部１５２は、受信データｓ２１とＷＲｃｕｒを結合し、結合結果を第４記憶領域に登録する。Ｄｉｃｋの集計値は「６００」となる。なお、ＷＲｐｒｅｖには、受信データｓ２１と同一の集計キーが存在しないため、結合結果はない。
【０１１０】
図１６Ｃに示すように、結果集合テーブル１４２の第４記憶領域には、集計キー「Ｄｉｃｋ」、集計値「６００」が登録される。
【０１１１】
現在時刻「１０：３５」において、タイマーＴＲは３５分となる。タイマーＴＳは５分となる。
【０１１２】
図１７Ａ、図１７Ｂ、図１７Ｃについて説明する。現在時刻を「１０：４０」とする。係る時刻において、結合部１５２は、ウインドウ閉鎖信号ｃｒを取得する。これにより、図１７Ａに示すように、結合部１５２は、ストリームＲの現在のウインドウを閉じる。また、結合部１５２は、受信データテーブル１４１において、ＷＲｃｕｒのデータをＷＲｐｒｅｖに移動し、ＷＲｃｕｒを空表に設定する。図１７Ｂに示すように、ＷＲｐｒｅｖには、集計キー「Ａｌｉｃｅ」、数値「５００」の組みと、集計キー「Ｄｉｃｋ」、数値「３００」の組みが登録される。また、ＷＲｃｕｒは、空表となる。
【０１１３】
結合部１５２は、ウインドウ閉鎖信号ｃｒを受信した場合には、第４記憶領域の情報を、第３記憶領域に登録し、第４記憶領域を空集合に設定する。結合部１５２は、第２記憶領域の情報を第１記憶領域に登録し、第２記憶領域を空集合に設定する。図１７Ｃに示すように、結合部１５２は、第２記憶領域の「Ａｌｉｃｅ」、「９００」の組みを、第１記憶領域に登録し、第２記憶領域を空集合に設定する。また、結合部１５２は、第４記憶領域の集計キー「Ｄｉｃｋ」、数値「６００」の組みを第３記憶領域に登録し、第４記憶領域の情報を空集合に設定する。
【０１１４】
現在時刻「１０：４０」において、タイマーＴＲは４０分となり、ウインドウ幅ＷＲと一致する。このため、受信部１５１は、ウインドウ閉鎖信号ｃｒを、結合部１５２に出力し、タイマーＴＲを０分にリセットする。また、タイマーＴＳは１０分となる。
【０１１５】
図１８Ａ、図１８Ｂについて説明する。現在時刻を「１０：４２」とする。図１８Ａに示すように、結合部１５２は、ストリームＳから受信データｓ２２を新たに受信する。結合部１５２は、集計キー「Ｈｅｎｒｙ」、数値「１００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に追加登録する。図１８Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ｈｅｎｒｙ」、数値「１００」が追加登録される。図１８Ｂに示すように、受信データｓ２２と同一の集計キーは、ＷＲｃｕｒ、ＷＲｐｒｅｖには存在せず、結合結果はない。結果集合テーブル１４２に登録されるデータは、図１７Ｃと同様となる。
【０１１６】
現在時刻「１０：４２」において、タイマーＴＲは２分となる。タイマーＴＳは１２分となる。
【０１１７】
図１９Ａ、図１９Ｂについて説明する。現在時刻を「１０：４５」とする。図１９Ａに示すように、結合部１５２は、ストリームＲから受信データｒ２１を新たに受信する。結合部１５２は、集計キー「Ｅｒｉｃ」、数値「５００」を、受信データテーブル１４１の「ＷＲｃｕｒ」に追加登録する。図１９Ｂに示すように、「ＷＲｃｕｒ」には、集計キー「Ｅｒｉｃ」、数値「５００」が追加登録される。図１９Ｂに示すように、受信データｒ２１と同一の集計キーは、ＷＳｃｕｒ、ＷＳｐｒｅｖには存在せず、結合結果はない。結果集合テーブル１４２に登録されるデータは、図１７Ｃと同様となる。
【０１１８】
現在時刻「１０：４５」において、タイマーＴＲは５分となる。タイマーＴＳは１５分となる。
【０１１９】
図２０Ａ、図２０Ｂ、図２０Ｃについて説明する。現在時刻を「１０：５０」とする。係る時刻において、結合部１５２は、ウインドウ閉鎖信号ｃｓを取得する。これにより、図２０Ａに示すように、結合部１５２は、ストリームＳのウインドウを閉じる。また、結合部１５２は、受信データテーブル１４１において、ＷＳｃｕｒのデータをＷＳｐｒｅｖに移動し、ＷＳｃｕｒを空表に設定する。図２０Ｂに示すように、ＷＳｐｒｅｖには、集計キー「Ｄｉｃｋ」、数値「３００」の組みと、集計キー「Ｈｅｎｒｙ」、数値「１００」の組みが登録される。また、ＷＳｃｕｒは、空表となる。
【０１２０】
結合部１５２は、ウインドウ閉鎖信号ｃｓを受信した場合には、第４記憶領域の情報を、第２記憶領域に登録し、第４記憶領域を空集合に設定する。結合部１５２は、第３記憶領域の情報を第１記憶領域に登録し、第３記憶領域を空集合に設定する。図２０Ｃに示すように、結合部１５２は、第３記憶領域の「Ｄｉｃｋ」、「６００」の組みを、第１記憶領域に登録し、第３記憶領域を空集合に設定する。
【０１２１】
図２１Ａ、図２１Ｂについて説明する。図２０と同様にして、現在時刻を「１０：５０」とする。図２１Ａに示すように、結合部１５２は、ストリームＲから受信データｒ２２を新たに受信する。結合部１５２は、受信データｒ２２の集計キー「Ｃａｒｅｎ」、数値「２００」を、受信データテーブル１４１の「ＷＲｃｕｒ」に登録する。図２１Ｂに示すように、「ＷＲｃｕｒ」には、集計キー「Ｃａｒｅｎ」、数値「２００」が追加登録される。図２０Ｂに示すように、受信データｒ２２の集計キー「Ｃａｒｅｎ」と、同一の集計キーがＷＳｐｒｅｖ、ＷＳｃｕｒに存在しないため、結合結果はなく、結果集合テーブル１４２に登録されるデータは、図２０Ｃと同様となる。
【０１２２】
図２２Ａ、図２２Ｂ、図２２Ｃについて説明する。図２０、図２１と同様にして、現在時刻を「１０：５０」とする。図２２Ａに示すように、結合部１５２は、ストリームＳから受信データｓ３１を新たに受信する。結合部１５２は、集計キー「Ｃａｒｅｎ」、数値「３００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に追加登録する。図２２Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ｃａｒｅｎ」、数値「３００」が追加登録される。図２２Ｂに示すように、受信データｓ３１の集計キーは、ＷＲｃｕｒに一致する。このため、結合部１５２は、受信データｓ３１とＷＲｃｕｒを結合し、結合結果を、第４記憶領域に登録する。Ｃａｒｅｎの集計値は「５００」となる。なお、ＷＲｐｒｅｖには受信データｓ３１と同一の集計キーが存在しないため、結合結果はない。
【０１２３】
図２２Ｃに示すように、結果集合テーブル１４２の第４記憶領域には、集計キー「Ｃａｒｅｎ」、集計値「５００」が登録される。
【０１２４】
現在時刻「１０：５０」において、タイマーＴＲは１０分となる。タイマーＴＳは、２０分となり、ウインドウ幅ＷＳと一致する。このため、受信部１５１は、ウインドウ閉鎖信号ｃｓを、結合部１５２に出力し、タイマーＴＳを０分にリセットする。
【０１２５】
図２３Ａ、図２３Ｂ、図２３Ｃについて説明する。現在時刻を「１１：００」とする。図２３Ａに示すように、結合部１５２は、ストリームＳから受信データｓ３２を新たに受信する。結合部１５２は、集計キー「Ｄｉｃｋ」、数値「１００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に追加登録する。図２３Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ｄｉｃｋ」、数値「１００」が追加登録される。図２３Ｂに示すように、受信データｓ３２の集計キー「Ｄｉｃｋ」と、ＷＲｐｒｅｖの集計キー「Ｄｉｃｋ」が一致する。このため、結合部１５２は、受信データｓ３２とＷＲｐｒｅｖを結合し、結合結果を、第３記憶領域に登録する。Ｄｉｃｋの集計値は「４００」となる。なお、ＷＲｃｕｒには受信データｓ３２と同一の集計キーが存在しないため、結合結果はない。
【０１２６】
図２３Ｃに示すように、結果集合テーブル１４２の第３記憶領域には、集計キー「Ｄｉｃｋ」、集計値「４００」が登録される。
【０１２７】
現在時刻「１１：００」において、タイマーＴＲは２０分となる。タイマーＴＳは１０分となる。
【０１２８】
図２４Ａ、図２４Ｂ、図２４Ｃについて説明する。現在時刻を「１１：１０」とする。結合部１５２は、ウインドウ閉鎖信号ｃｓを取得する。これにより、図２４Ａに示すように、結合部１５２は、ストリームＳの現在のウインドウを閉じる。また、結合部１５２は、受信データテーブル１４１において、ＷＳｃｕｒのデータをＷＳｐｒｅｖに移動させ、ＷＳｃｕｒを空表に設定する。図２４Ｂに示すように、ＷＳｐｒｅｖには、集計キー「Ｃａｒｅｎ」および数値「３００」の組みと、集計キー「Ｄｉｃｋ」および数値「１００」の組みとが登録される。また、ＷＳｃｕｒは、空表となる。
【０１２９】
結合部１５２は、ウインドウ閉鎖信号ｃｓを受信した場合には、第４記憶領域の情報を、第２記憶領域に登録し、第４記憶領域を空集合に設定する。結合部１５２は、第３記憶領域の情報を第１記憶領域に登録し、第３記憶領域を空集合に設定する。図２４Ｃに示すように、結合部１５２は、第４記憶領域の「Ｃａｒｅｎ」、「５００」の組みの情報を、第２記憶領域に登録し、第４記憶領域を空集合に設定する。また、結合部１５２は、第３記憶領域の「Ｄｉｃｋ」、「４００」の組みの情報を、第１記憶領域に登録し、第３記憶領域を空集合に設定する。
【０１３０】
現在時刻「１１：１０」において、タイマーＴＲは３０分となる。タイマーＴＳは、２０分となり、ウインドウ幅ＷＳと一致する。このため、受信部１５１は、ウインドウ閉鎖信号ｃｓを、結合部１５２に出力し、タイマーＴＳを０分にリセットする。
【０１３１】
図２５Ａ、図２５Ｂ、図２５Ｃについて説明する。現在時刻を「１１：１５」とする。結合部１５２は、ストリームＲから受信データｒ２３を新たに受信する。結合部１５２は、受信データテーブル１４１のＷＲｃｕｒに「Ｃａｒｅｎ」が登録済みである。この場合には、図２５Ｂに示すように、結合部１５２は、ＷＲｃｕｒの集計キー「Ｃａｒｅｎ」の数値を「８００」に更新する。また、図２５Ｃに示すように、第２記憶領域の集計値に、「６００」を加算して、第２記憶領域の集計値を更新する。図２５に示したケースでは、結合部１５２は、受信データｒ２３と、ＷＳｃｕｒ、ＷＳｐｒｅｖとの比較は行わない。
【０１３２】
現在時刻「１１：１５」において、タイマーＴＲは３５分となる。タイマーＴＳは５分となる。
【０１３３】
図２６Ａ、図２６Ｂ、図２６Ｃについて説明する。現在時刻を「１１：２０」とする。係る時刻において、結合部１５２は、ウインドウ閉鎖信号ｃｒを取得する。これにより、図２６Ａに示すように、結合部１５２は、ストリームＲの現在のウインドウを閉じる。また、結合部１５２は、受信データテーブル１４１において、ＷＲｃｕｒのデータをＷＲｐｒｅｖに移動し、ＷＲｃｕｒを空表に設定する。図２６Ｂに示すように、ＷＲｐｒｅｖには、集計キー「Ｅｒｉｃ」、数値「５００」の組みと、集計キー「Ｃａｒｅｎ」、数値「８００」の組みが登録される。また、ＷＲｃｕｒは、空表となる。
【０１３４】
結合部１５２は、ウインドウ閉鎖信号ｃｒを受信した場合には、第４記憶領域の情報を、第３記憶領域に登録し、第４記憶領域を空集合に設定する。結合部１５２は、第２記憶領域の情報を第１記憶領域に登録し、第２記憶領域を空集合に設定する。図２６Ｃに示すように、結合部１５２は、第２記憶領域の「Ｃａｒｅｎ」、「１１００」の組みを、第１記憶領域に登録し、第２記憶領域を空集合に設定する。
【０１３５】
図２７Ａ、図２７Ｂについて説明する。図２６と同様にして、現在時刻を「１１：２０」とする。結合部１５２は、ストリームＳから受信データｓ４１を新たに受信する。結合部１５２は、受信データｓ４１の集計キー「Ｂｏｂ」、数値「７００」を、受信データテーブル１４１の「ＷＳｃｕｒ」に登録する。図２７Ｂに示すように、「ＷＳｃｕｒ」には、集計キー「Ｂｏｂ」、数値「７００」が追加登録される。図２７Ｂに示すように、受信データｓ４１の集計キー「Ｂｏｂ」と、同一の集計キーがＷＲｐｒｅｖ、ＷＲｃｕｒに存在しないため、結合結果はなく、結果集合テーブル１４２に登録されるデータは、図２６Ｃと同様となる。
【０１３６】
現在時刻「１１：２０」において、タイマーＴＲは４０分となり、ウインドウ幅ＷＲと一致する。このため、受信部１５１は、ウインドウ閉鎖信号ｃｒを、結合部１５２に出力し、タイマーＴＲを０分にリセットする。また、タイマーＴＳは１０分となる。
【０１３７】
図２８Ａ、図２８Ｂについて説明する。現在時刻を「１１：２５」とする。結合部１５２は、ストリームＲから受信データｒ３１を新たに受信する。結合部１５２は、受信データｒ３１の集計キー「Ｉｒｉｓ」、数値「２００」を、受信データテーブル１４１の「ＷＲｃｕｒ」に登録する。図２８Ｂに示すように、「ＷＲｃｕｒ」には、集計キー「Ｉｒｉｓ」、数値「２００」が登録される。図２８Ｂに示すように、受信データｒ３１の集計キー「Ｉｒｉｓ」と、同一の集計キーがＷＳｐｒｅｖ、ＷＳｃｕｒに存在しないため、結合結果はなく、結果集合テーブル１４２に登録されるデータは、図２６Ｃと同様となる。
【０１３８】
上記の図１１〜図２８に示す処理を結合部１５２が実行することで、結合部１５２は、ストリームＲ、Ｓの受信データｒ、ｓの結合結果を結果集合テーブル１４２に格納する。
【０１３９】
例えば、図１４に示したように、結合部１５２は、ウインドウＲｃｕｒと同一の集計キーをウインドウＳｃｕｒから検出した場合には、各集計キーの数値を結合した情報を、第４記憶領域に記憶する。また、図１８に示したように、結合部１５２は、ウインドウＳｃｕｒと同一の集計キーをウインドウＲｃｕｒから検出した場合には、各集計キーの数値を結合した情報を、第３記憶領域に記憶する。また、図２２に示したように、結合部１５２は、ウインドウＲｃｕｒと同一の集計キーをウインドウＳｃｕｒから検出した場合には、各集計キーの数値を結合した情報を、第４記憶領域に記憶する。
【０１４０】
そして、結合部１５２は、ストリームＲのウインドウが切り替わった場合には、第２記憶領域の情報を、第１記憶領域に移動させ、第１記憶領域の情報を、ウインドウＲｐｒｅｖと、ウインドウＳｐｒｅｖとの結合結果とする。また、結合部１５２は、第４記憶領域の情報を、第３記憶領域に移動させる。このため、ストリームＲのウインドウが切り替わった時点で、第１記憶領域に、前のウインドウにおける結合結果を登録可能となる。
【０１４１】
一方、結合部１５２は、ストリームＳのウインドウが切り替わった場合には、第３記憶領域の情報を、第１記憶領域に移動させ、第１記憶領域の情報を、ウインドウＲｐｒｅｖと、ウインドウＳｐｒｅｖとの結合結果とする。また、結合部１５２は、第４記憶領域の情報を、第２記憶領域に移動させる。このため、ストリームＳのウインドウが切り替わった時点で、第１記憶領域に、前のウインドウにおける結合結果を登録可能となる。
【０１４２】
データ送信部１５３は、利用者端末３０からのデータ要求に応答して、結果集合テーブル１４２に記憶されたデータを、利用者端末３０に送信する処理部である。例えば、データ送信部１５３は、ウインドウ閉鎖信号を、受信部１５１から取得し、ウインドウ閉鎖信号を取得したタイミングで、結果集合テーブル１４２の第１記憶領域に記憶された結合結果を順次、利用者端末３０に送信しても良い。
【０１４３】
次に、本実施例に係る結合装置１００の効果について説明する。結合装置１００は、ストリームＲおよびストリームＳのウインドウを開始時刻から順に受信している最中に、ストリームＲの受信データの集計キーと同一の集計キーの受信データをストリームＳから検出した時点で、各集計キーの数値を結合して結合結果を結果集合テーブル１４２に記憶する。このため、ストリームのウインドウが切り替わった時点において、前のウインドウの結合結果が算出済みとなり、ストリームの結果集合の出力に遅延が発生することを防止することができる。
【０１４４】
また、結合装置１００は、図２５等に示したように、受信データテーブル１４１のＷＲｃｕｒに「Ｃａｒｅｎ」が登録済みの場合には、受信データｒ２３と、ＷＳｃｕｒ、ＷＳｐｒｅｖとの比較は行わない。結合装置１００は、第２記憶領域の集計値に、「６００」を加算して、第２記憶領域の集計値を更新する。このため、処理を省略することができ、処理負荷を軽減することが可能となる。
【０１４５】
ところで、上記の例ではウインドウ幅ＷＲ、ＷＳを固定して、結合装置１００の処理を説明したが、これに限定されるものではない。ウインドウ幅ＷＲ、ＷＳを任意のタイミングに適宜変更しても良い。
【０１４６】
次に、各実施例に示した結合装置１００と同様の機能を実現する結合プログラムを実行するコンピュータの一例を説明する。図２９は、結合プログラムを実行するコンピュータの一例を示す図である。
【０１４７】
図２９に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３を有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７を有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１４８】
ハードディスク装置２０７は、例えば、受信プログラム２０７ａ、結合プログラム２０７ｂ、データ送信プログラム２０７ｃを有する。ＣＰＵ２０１は、各プログラム２０７ａ〜２０７ｃを読み出して、ＲＡＭ２０６に展開する。
【０１４９】
受信プログラム２０７ａは、受信プロセス２０６ａとして機能する。結合プログラム２０７ｂは、結合プロセス２０６ｂとして機能する。データ送信プログラム２０７ｃは、データ送信プロセス２０６ｃとして機能する。
【０１５０】
例えば、受信プロセス２０６ａは、受信部１５１に対応する。結合プロセス２０６ｂは、結合部１５２に対応する。データ送信プロセス２０６ｃは、データ送信部１５３に対応する。
【０１５１】
なお、各プログラム２０７ａ〜２０７ｃについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくてもよい。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００がこれらから各プログラム２０７ａ〜２０７ｃを読み出して実行するようにしてもよい。
【０１５２】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５３】
（付記１）任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信する受信部と、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶部に記憶する結合部と
を有することを特徴とする結合装置。
【０１５４】
（付記２）前記記憶部は、第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域を有し、
前記結合部は、
前記第１ストリームデータの第１ウインドウに続いて第２ウインドウを受信する一方で、前記第２ストリームデータの第３ウインドウに続いて第４ウインドウを受信し、前記第２ウインドウおよび前記第４ウインドウを受信している最中に、
前記第２ウインドウの集計キーと同一の集計キーを第３ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第２記憶領域に格納し、
前記第２ウインドウの集計キーと同一の集計キーを第４ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第４記憶領域に格納し、
前記第４ウインドウの集計キーと同一の集計キーを第１ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第３記憶領域に格納し、
前記第１ストリームデータの前記第２ウインドウの次のウインドウを受信した場合には、前記第２記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第３記憶領域に登録し、
前記第２ストリームデータの前記第４ウインドウの次のウインドウを受信した場合には、前記第３記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第２記憶領域に登録する
ことを特徴とする付記１に記載の結合装置。
【０１５５】
（付記３）前記結合部は、
前記第２ウインドウの集計キーと同一の集計キーが、前記第２記憶領域に登録されている場合には、前記第２ウインドウの集計キーの数値と、前記第２記憶領域の同一の集計キーの数値とを加算させ
前記第４ウインドウの集計キーと同一の集計キーが、前記第３記憶領域に登録されている場合には、前記第４ウインドウの集計キーの数値と、前記第３記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記２に記載の結合装置。
【０１５６】
（付記４）コンピュータに、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信し、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶装置に記憶する
各処理を実行させることを特徴とする結合プログラム。
【０１５７】
（付記５）前記記憶装置は、第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域を有し、
前記結合する処理は、
前記第１ストリームデータの第１ウインドウに続いて第２ウインドウを受信する一方で、前記第２ストリームデータの第３ウインドウに続いて第４ウインドウを受信し、前記第２ウインドウおよび前記第４ウインドウを受信している最中に、
前記第２ウインドウの集計キーと同一の集計キーを第３ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第２記憶領域に格納し、
前記第２ウインドウの集計キーと同一の集計キーを第４ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第４記憶領域に格納し、
前記第４ウインドウの集計キーと同一の集計キーを第１ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第３記憶領域に格納し、
前記第１ストリームデータの前記第２ウインドウの次のウインドウを受信した場合には、前記第２記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第３記憶領域に登録し、
前記第２ストリームデータの前記第４ウインドウの次のウインドウを受信した場合には、前記第３記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第２記憶領域に登録することを特徴とする付記４に記載の結合プログラム。
【０１５８】
（付記６）前記結合する処理は、
前記第２ウインドウの集計キーと同一の集計キーが、前記第２記憶領域に登録されている場合には、前記第２ウインドウの集計キーの数値と、前記第２記憶領域の同一の集計キーの数値とを加算させ、
前記第４ウインドウの集計キーと同一の集計キーが、前記第３記憶領域に登録されている場合には、前記第４ウインドウの集計キーの数値と、前記第３記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記５に記載の結合プログラム。
【０１５９】
（付記７）コンピュータが実行する結合方法であって、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第１ストリームデータおよび第２ストリームデータを受信し、
前記第１ストリームデータおよび前記第２ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第１ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第２ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶装置に記憶する
各処理を実行することを特徴とする結合方法。
【０１６０】
（付記８）前記記憶装置は、第１記憶領域、第２記憶領域、第３記憶領域、第４記憶領域を有し、
前記結合する処理は、
前記第１ストリームデータの第１ウインドウに続いて第２ウインドウを受信する一方で、前記第２ストリームデータの第３ウインドウに続いて第４ウインドウを受信し、前記第２ウインドウおよび前記第４ウインドウを受信している最中に、
前記第２ウインドウの集計キーと同一の集計キーを第３ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第２記憶領域に格納し、
前記第２ウインドウの集計キーと同一の集計キーを第４ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第４記憶領域に格納し、
前記第４ウインドウの集計キーと同一の集計キーを第１ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第３記憶領域に格納し、
前記第１ストリームデータの前記第２ウインドウの次のウインドウを受信した場合には、前記第２記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第３記憶領域に登録し、
前記第２ストリームデータの前記第４ウインドウの次のウインドウを受信した場合には、前記第３記憶領域のデータを前記第１記憶領域に登録し、前記第４記憶領域のデータを、前記第２記憶領域に登録することを特徴とする付記７に記載の結合方法。
【０１６１】
（付記９）前記結合する処理は、
前記第２ウインドウの集計キーと同一の集計キーが、前記第２記憶領域に登録されている場合には、前記第２ウインドウの集計キーの数値と、前記第２記憶領域の同一の集計キーの数値とを加算させ、
前記第４ウインドウの集計キーと同一の集計キーが、前記第３記憶領域に登録されている場合には、前記第４ウインドウの集計キーの数値と、前記第３記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記８に記載の結合方法。
【符号の説明】
【０１６２】
２０ａ、２０ｂ  ストリーム送信装置
３０    利用者端末
５０    ネットワーク
１００  結合装置
【図１】
2013174940.tif 000003
【図２】
2013174940.tif 000004
【図３】
2013174940.tif 000005
【図４】
2013174940.tif 000006
【図５】
2013174940.tif 000007
【図６】
2013174940.tif 000008
【図７】
2013174940.tif 000009
【図８】
2013174940.tif 000010
【図９】
2013174940.tif 000011
【図１０】
2013174940.tif 000012
【図１１Ａ】
2013174940.tif 000013
【図１１Ｂ】
2013174940.tif 000014
【図１１Ｃ】
2013174940.tif 000015
【図１２Ａ】
2013174940.tif 000016
【図１２Ｂ】
2013174940.tif 000017
【図１３Ａ】
2013174940.tif 000018
【図１３Ｂ】
2013174940.tif 000019
【図１４Ａ】
2013174940.tif 000020
【図１４Ｂ】
2013174940.tif 000021
【図１４Ｃ】
2013174940.tif 000022
【図１５Ａ】
2013174940.tif 000023
【図１５Ｂ】
2013174940.tif 000024
【図１５Ｃ】
2013174940.tif 000025
【図１６Ａ】
2013174940.tif 000026
【図１６Ｂ】
2013174940.tif 000027
【図１６Ｃ】
2013174940.tif 000028
【図１７Ａ】
2013174940.tif 000029
【図１７Ｂ】
2013174940.tif 000030
【図１７Ｃ】
2013174940.tif 000031
【図１８Ａ】
2013174940.tif 000032
【図１８Ｂ】
2013174940.tif 000033
【図１９Ａ】
2013174940.tif 000034
【図１９Ｂ】
2013174940.tif 000035
【図２０Ａ】
2013174940.tif 000036
【図２０Ｂ】
2013174940.tif 000037
【図２０Ｃ】
2013174940.tif 000038
【図２１Ａ】
2013174940.tif 000039
【図２１Ｂ】
2013174940.tif 000040
【図２２Ａ】
2013174940.tif 000041
【図２２Ｂ】
2013174940.tif 000042
【図２２Ｃ】
2013174940.tif 000043
【図２３Ａ】
2013174940.tif 000044
【図２３Ｂ】
2013174940.tif 000045
【図２３Ｃ】
2013174940.tif 000046
【図２４Ａ】
2013174940.tif 000047
【図２４Ｂ】
2013174940.tif 000048
【図２４Ｃ】
2013174940.tif 000049
【図２５Ａ】
2013174940.tif 000050
【図２５Ｂ】
2013174940.tif 000051
【図２５Ｃ】
2013174940.tif 000052
【図２６Ａ】
2013174940.tif 000053
【図２６Ｂ】
2013174940.tif 000054
【図２６Ｃ】
2013174940.tif 000055
【図２７Ａ】
2013174940.tif 000056
【図２７Ｂ】
2013174940.tif 000057
【図２８Ａ】
2013174940.tif 000058
【図２８Ｂ】
2013174940.tif 000059
【図２９】
2013174940.tif 000060
【図３０】
2013174940.tif 000061
【図３１】
2013174940.tif 000062