JP6162363B2 - 結合装置、結合プログラムおよび結合方法 - Google Patents

結合装置、結合プログラムおよび結合方法 Download PDF

Info

Publication number
JP6162363B2
JP6162363B2 JP2012037497A JP2012037497A JP6162363B2 JP 6162363 B2 JP6162363 B2 JP 6162363B2 JP 2012037497 A JP2012037497 A JP 2012037497A JP 2012037497 A JP2012037497 A JP 2012037497A JP 6162363 B2 JP6162363 B2 JP 6162363B2
Authority
JP
Japan
Prior art keywords
window
data
storage area
stream data
stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012037497A
Other languages
English (en)
Other versions
JP2013174940A (ja
Inventor
達哉 浅井
達哉 浅井
孝 河東
孝 河東
裕章 森川
裕章 森川
多湖 真一郎
真一郎 多湖
稲越 宏弥
宏弥 稲越
湯上 伸弘
伸弘 湯上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012037497A priority Critical patent/JP6162363B2/ja
Priority to US13/735,173 priority patent/US9535825B2/en
Publication of JP2013174940A publication Critical patent/JP2013174940A/ja
Application granted granted Critical
Publication of JP6162363B2 publication Critical patent/JP6162363B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Marketing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Development Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、結合装置等に関する。
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含むストリームデータを複数の店舗から受信し、各ストリームデータを結合する従来技術がある。以下の説明では、ストリームデータを適宜ストリームと表記する。
上記の従来技術について説明する。ここでは、異なる2つの店から受信するストリームR、Sに対してウインドウ結合を行い、ある一定の期間内に双方の店で買い物をした顧客と、買い物の合計金額を求める場合について説明する。
図30は、従来技術を説明するための図である。ストリームRには、ウインドウR1、R2、R3、R4が含まれる。ストリームSには、ウインドウS1、S2、S3、S4が含まれる。各ウインドウには、顧客の名前と顧客が購入した商品の金額とを対応付けた受信データが含まれている。ウインドウ条件を、ストリームR、Sともにウインドウ幅が30分のジャンプ窓とし、開始時刻を「10:00」とする。
従来技術では、ストリームR、Sに対して、それぞれ直近の閉じたウインドウ同士を結合した結果を、現在の結果集合とする。例えば、現在の時刻が「10:30〜11:00」に含まれる場合には、直近の閉じたウインドウはウインドウR1とウインドウS1となる。ウインドウR1とウインドウS1とを比較すると、双方のストリームに含まれる顧客は「Alice」であり、合計金額は「900」となる。このため、結果集合R1×S1は「Alice、900」となる。
現在の時刻が「11:00〜11:30」に含まれる場合には、直近の閉じたウインドウはウインドウR2とウインドウS2となる。ウインドウR2とウインドウS2とを比較すると、双方のストリームに含まれる顧客は「Henry」、「Caren」である。「Henry」の合計金額は「1600」となり、「Caren」の合計金額は「300」となる。このため、結果集合R2×S2は「Henry、1600」、「Caren、300」となる。
現在の時刻が「11:30〜12:00」に含まれる場合には、直近の閉じたウインドウはウインドウR3とウインドウS3となる。ウインドウR3とウインドウS3とを比較すると、双方のストリームに含まれる顧客は「Dick」であり、合計金額は「700」となる。このため、結果集合R3×S3は「Dick、700」となる。
特開2010−238195号公報
A. Arasu et al. "The CQL continuous query language:semantic foundations and query execution", VLDB Journal, 15(2), pp.121−142, 2006.
しかしながら、上述した従来技術では、ストリームの結果集合の出力に遅延が生じるという問題があった。
従来技術では、ウインドウが閉じてから結合演算を行っている。このため、ウインドウが閉じた直後に結合結果の出力要求が発生した場合には、まだ結合演算が完了していないため、結果集合の出力に遅延が生じてしまう。
図31は、従来技術の問題点を説明するための図である。例えば、結果集合R1×S1の演算の開始時刻は「10:30」となる。このため、「10:30」に出力要求を受け付けた場合には、演算終了までのタイムロス10aが発生する。
開示の技術は、上記に鑑みてなされたものであって、ストリームの結果集合の出力に遅延が発生することを防止することができる結合装置、結合プログラムおよび結合方法を提供することを目的とする。
開示の結合装置は、受信部および結合部を有する。受信部は、任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信する。結合部は、第1ストリームデータおよび第2ストリームデータのウインドウを開始時刻から順に受信する。結合部は、第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを第2ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶部に記憶する。
開示の結合装置によれば、ストリームの結果集合の出力に遅延が発生することを防止することができるという効果を奏する。
図1は、本実施例に係るシステムの構成を示す図である。 図2は、ストリームのデータ構造の一例を示す図である。 図3は、本実施例に係る結合装置の構成の一例を示す図である。 図4は、受信データテーブルのデータ構造の一例を示す図である。 図5は、結果集合テーブルのデータ構造の一例を示す図である。 図6は、本実施例に係る受信部の処理手順を示すフローチャートである。 図7は、ウインドウ幅が等しい場合の結合部の処理を説明するための図である。 図8は、本実施例に係る結合部の処理手順を示すフローチャートである。 図9は、本実施例に係る受信データr処理の処理手順を示すフローチャートである。 図10は、本実施例に係る受信データs処理の処理手順を示すフローチャートである。 図11Aは、結合部の処理を説明するための図(1)である。 図11Bは、結合部の処理を説明するための図(2)である。 図11Cは、結合部の処理を説明するための図(3)である。 図12Aは、結合部の処理を説明するための図(4)である。 図12Bは、結合部の処理を説明するための図(5)である。 図13Aは、結合部の処理を説明するための図(6)である。 図13Bは、結合部の処理を説明するための図(7)である。 図14Aは、結合部の処理を説明するための図(8)である。 図14Bは、結合部の処理を説明するための図(9)である。 図14Cは、結合部の処理を説明するための図(10)である。 図15Aは、結合部の処理を説明するための図(11)である。 図15Bは、結合部の処理を説明するための図(12)である。 図15Cは、結合部の処理を説明するための図(13)である。 図16Aは、結合部の処理を説明するための図(14)である。 図16Bは、結合部の処理を説明するための図(15)である。 図16Cは、結合部の処理を説明するための図(16)である。 図17Aは、結合部の処理を説明するための図(17)である。 図17Bは、結合部の処理を説明するための図(18)である。 図17Cは、結合部の処理を説明するための図(19)である。 図18Aは、結合部の処理を説明するための図(20)である。 図18Bは、結合部の処理を説明するための図(21)である。 図19Aは、結合部の処理を説明するための図(22)である。 図19Bは、結合部の処理を説明するための図(23)である。 図20Aは、結合部の処理を説明するための図(24)である。 図20Bは、結合部の処理を説明するための図(25)である。 図20Cは、結合部の処理を説明するための図(26)である。 図21Aは、結合部の処理を説明するための図(27)である。 図21Bは、結合部の処理を説明するための図(28)である。 図22Aは、結合部の処理を説明するための図(29)である。 図22Bは、結合部の処理を説明するための図(30)である。 図22Cは、結合部の処理を説明するための図(31)である。 図23Aは、結合部の処理を説明するための図(32)である。 図23Bは、結合部の処理を説明するための図(33)である。 図23Cは、結合部の処理を説明するための図(34)である。 図24Aは、結合部の処理を説明するための図(35)である。 図24Bは、結合部の処理を説明するための図(36)である。 図24Cは、結合部の処理を説明するための図(37)である。 図25Aは、結合部の処理を説明するための図(38)である。 図25Bは、結合部の処理を説明するための図(39)である。 図25Cは、結合部の処理を説明するための図(40)である。 図26Aは、結合部の処理を説明するための図(41)である。 図26Bは、結合部の処理を説明するための図(42)である。 図26Cは、結合部の処理を説明するための図(43)である。 図27Aは、結合部の処理を説明するための図(44)である。 図27Bは、結合部の処理を説明するための図(45)である。 図28Aは、結合部の処理を説明するための図(46)である。 図28Bは、結合部の処理を説明するための図(47)である。 図29は、結合プログラムを実行するコンピュータの一例を示す図である。 図30は、従来技術を説明するための図である。 図31は、従来技術の問題点を説明するための図である。
以下に、本願の開示する結合装置、結合プログラムおよび結合方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係るシステムの構成について説明する。図1は、本実施例に係るシステムの構成を示す図である。図1に示すように、このシステムは、ストリーム送信装置20a、20bと、利用者端末30と、結合装置100を有する。ストリーム送信装置20a、20b、利用者端末30、結合装置100は、ネットワーク50に接続される。以下の説明では、適宜、ストリーム送信装置20a、20bをまとめてストリーム送信装置20と表記する。
ストリーム送信装置20は、ストリームデータを結合装置200に送信する装置である。以下の説明では、ストリームデータを適宜、ストリームと略記する。ストリームは、任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む。以下の説明では、ストリーム送信装置20aから送信されるストリームをストリームRと表記し、ストリーム送信装置20bから送信されるストリームをストリームSと表記する。
図2は、ストリームのデータ構造の一例を示す図である。まず、ストリームRについて説明する。ストリームRは、ウインドウR1、R2、R3を有する。ウインドウR1、R2、R3のウインドウ幅WRを40分とする。ストリームRの各ウインドウは、受信データrを含む。受信データrは、集計キーと数値とを含む。
ウインドウR1には、受信データr11、r12が含まれる。受信データr11には、集計キー「Alice」、数値「500」が含まれる。受信データr12には、集計キー「Dick」、数値「300」が含まれる。
ウインドウR2には、受信データr21〜r23が含まれる。受信データr21には、集計キー「Eric」、数値「500」が含まれる。受信データr22には、集計キー「Caren」、数値「200」が含まれる。受信データr23には、集計キー「Caren」、数値「600」が含まれる。
ウインドウR3には、受信データr31が含まれる。受信データr31には、集計キー「Iris」、数値「200」が含まれる。
例えば、ストリームRは、ストリーム送信装置20aによって結合装置100に送信され、結合装置100は、時刻「10:00」から、ストリームRの受信を開始する。
図2のストリームSについて説明する。ストリームSは、ウインドウS1、S2、S3、S4、S5を有する。ウインドウS1〜S5のウインドウ幅WSをそれぞれ20分とする。ストリームSの各ウインドウは、受信データsを含む。受信データsは、集計キーと数値とを含む。
ウインドウS1には、受信データs11、s12が含まれる。受信データs11には、集計キー「Bob」、数値「600」が含まれる。受信データs12には、集計キー「Alice」、数値「400」が含まれる。
ウインドウS2には、受信データs21、s22が含まれる。受信データs21には、集計キー「Dick」、数値「300」が含まれる。受信データs22には、集計キー「Henry」、数値「100」が含まれる。
ウインドウS3には、受信データs31、s32が含まれる。受信データs31には、集計キー「Caren」、数値「300」が含まれる。受信データs32には、集計キー「Dick」、数値「100」が含まれる。
ウインドウS4には、受信データs41が含まれる。受信データs41には、集計キー「Bob」、数値「700」が含まれる。なお、ウインドウS5には、受信データsが含まれていない。
例えば、ストリームSは、ストリーム送信装置20bによって結合装置100に送信され、結合装置100は、時刻「10:10」から、ストリームSの受信を開始する。
利用者端末30は、図2に示したストリームR、Sの結合結果を、結合装置100から取得する装置である。
結合装置100は、ストリーム送信装置20a、20bからストリームR、Sを順次受信し、ストリームR、Sに含まれる各受信データを結合する装置である。結合装置100は、利用者端末30からの要求に応答して、結合結果を利用者端末30に送信する。
結合装置100の構成について説明する。図3は、本実施例に係る結合装置の構成の一例を示す図である。図3に示すように、この結合装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
通信部110は、ネットワーク50を介して、ストリーム送信装置20a、20b、利用者端末30との間でデータ通信を実行する処理部である。制御部150は、通信部110を介して、ストリーム送信装置20a、20b、利用者端末30との間でデータを送受信する。通信部110は、通信装置に対応する。
入力部120は、各種のデータを結合装置100に入力する入力装置である。例えば、入力部120は、キーボード、マウス、タッチパネル等の入力装置に対応する。表示部130は、各種の情報を表示する表示装置である。表示部130は、例えば、ディスプレイ、タッチパネル等の表示装置に対応する。
記憶部140は、受信データテーブル141および結果集合テーブル142を記憶する。記憶部140は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
受信データテーブル141は、ストリームに含まれる受信データを一時的に保持するテーブルである。図4は、受信データテーブルのデータ構造の一例を示す図である。図4に示すように、受信データテーブル141は、記憶領域WRprev、WRcur、WSprev、WScurを有する。
以下の説明において、ウインドウ「Rcur」、「Rprev」、「Scur」、「Sprev」、という表現を利用する。ウインドウ「Rcur」は、ストリームRについて、現在受信中のウインドウを示す。ウインドウ「Rprev」は、ストリームRについて、ウインドウ「Rcur」の一つ前のウインドウを示す。ウインドウ「Scur」は、ストリームSについて、現在受信中のウインドウを示す。ウインドウ「Sprev」は、ストリームSについて、ウインドウ「Scur」の一つ前のウインドウを示す。
「WRprev」は、ストリームRにおいて、ウインドウRprevに含まれる受信データを保持する領域である。例えば、図2において、ウインドウRprevがウインドウR1の場合には、WRprevには、ウインドウR1の受信データr11、r12が保持される。
「WRcur」は、ストリームRにおいて、ウインドウRcurに含まれる受信データを保持する領域である。例えば、図2において、ウインドウRcurがウインドウR2の場合には、WRcurには、ウインドウR2の受信データr21、r22、r23が保持される。
「WSprev」は、ストリームSにおいて、ウインドウSprevに含まれる受信データを保持する領域である。例えば、図2において、ウインドウSprevがウインドウS1の場合には、WRprevには、ウインドウS1の受信データs11、s12が保持される。
「WScur」は、ストリームSにおいて、ウインドウScurに含まれる受信データを保持する領域である。例えば、図2において、ウインドウScurがウインドウS2の場合には、WScurには、ウインドウS2の受信データs21、s22が保持される。
結果集合テーブル142は、ストリームR、Sの結合結果を保持するテーブルである。図5は、結果集合テーブルのデータ構造の一例を示す図である。図5に示すように、結果集合テーブル142は、第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域を有する。
第1記憶領域は、ウインドウRprev及びウインドウSprevに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
第2記憶領域は、ウインドウRcur及びウインドウSprevに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
第3記憶領域は、ウインドウRprev及びウインドウScurに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
第4記憶領域は、ウインドウRcur及びウインドウScurに含まれる受信データの集計キーと、該集計キーに対応する数値の集計値を保持する領域である。
制御部150は、受信部151と、結合部152と、データ送信部153とを有する。制御部150は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部150は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
受信部151は、ストリームR、ストリームSを受信する処理部である。受信部151は、ストリームR、ストリームSを受信しつつ、下記に示すような、閉鎖信号ストリームCを生成する。受信部151は、ストリームR、ストリームS、閉鎖信号ストリームCを、結合部152に出力する。
受信部151は、2種類のタイマーを有しており、現在時刻とウインドウ幅WR、WSとを比較しながら、ストリームR、Sのウインドウが閉じるタイミングを示す閉鎖信号ストリームCを生成し、結合部152に出力する。ストリームRのウインドウを閉鎖するタイミングの信号を「cr」と表記する。ストリームSのウインドウを閉鎖するタイミングの信号を「cs」と表記する。なお、受信部151は、ウインドウ幅WR、WSの情報を、ストリーム送信装置20a、20bから予め取得しておいても良いし、ストリームR、Sと共に取得しても良い。
ここで、受信部151の処理手順について説明する。図6は、本実施例に係る受信部の処理手順を示すフローチャートである。例えば、図6に示す処理は、ストリームR、Sを受信したことを契機に実行される。
受信部151は、初期化を行う(ステップS101)。ステップS101において、受信部151は、タイマーTR、TSの値を0に設定する。タイマーTRは、ストリームRのウインドウの開始時刻からの時間を計るタイマーである。タイマーTSは、ストリームSのウインドウの開始時刻からの時間を計るタイマーである。タイマーTR、タイマーTSは、ストップした状態とする。
受信部151は、ストリームR、Sの受信を開始する(ステップS102)。
受信部151は、次の受信データを受信するまで、タイマーTRとTSとを監視する。受信部151は、TR≧WRとなった瞬間に、ストリームRのウインドウ閉鎖信号crを閉鎖信号ストリームCに出力し、タイマーTRをリセットする。また、受信部151は、TS≧WSとなった瞬間に、ストリームSのウインドウ閉鎖信号csを閉鎖信号ストリームCに出力し、タイマーTSをリセットする(ステップS103)。
受信部151は、次の受信データを受信したか否かを判定する(ステップS104)。受信部151は、次の受信データを受信していない場合には(ステップS104,No)、ステップS103に移行する。
一方、受信部151は、次の受信データを受信した場合には(ステップS104,Yes)、受信データがストリームRの受信データrであるか否かを判定する(ステップS105)。
受信部151は、受信データrである場合には(ステップS105,Yes)、ストリームRの1件目の受信データrであるか否かを判定する(ステップS106)。受信部151は、1件目の受信データrではない場合には(ステップS106,No)、ステップS108に移行する。
受信部151は、1件目の受信データrである場合には(ステップS106,Yes)、タイマーTRをスタートさせる(ステップS107)。受信部151は、ストリームRに受信データrを出力し(ステップS108)、ステップS103に移行する。
ところで、ステップS105において、受信部151は、受信データが受信データsの場合には(ステップS105,No)、ストリームSの1件目の受信データsであるか否かを判定する(ステップS109)。受信部151は、1件目の受信データsではない場合には(ステップS109,No)、ステップS111に移行する。
受信部151は、1件目の受信データsである場合には(ステップS109,Yes)、タイマーTSをスタートさせる(ステップS110)。受信部151は、ストリームSに受信データsを出力し(ステップS111)、ステップS103に移行する。
結合部152は、ストリームRおよびストリームSのウインドウを開始時刻から順に受信している最中に、ストリームRの受信データの集計キーと同一の集計キーをストリームSから検出する。結合部152は、各ストリームR、Sにおいて、同一の集計キーの数値を加算することで、集計キーの集計値を算出する。
ここで、結合部152の処理を具体的に説明する。まず、ストリームR、ストリームSのウインドウ幅が等しい場合の結合部152の処理について説明する。図7は、ウインドウ幅が等しい場合の結合部の処理を説明するための図である。
結合部152は、ストリームRに含まれる受信データr、ストリームSに含まれる受信データsを、受信データテーブル141に順次登録する。また、結合部152は、受信データテーブル141の各受信テーブルを比較して、ストリームRの受信データの集計キーと同一の集計キーをストリームSから検出した場合には、集計キーと集計値を、第4記憶領域に登録する。そして、ウインドウが次のウインドウに切り替わった場合には、結合部152は、第4記憶領域の情報を、第1記憶領域に移動させる。かかる第1記憶領域に記憶された情報が、前のウインドウにおける結果集合となる。
ストリームR、Sの現在のウインドウをR1、S1とする。受信データr11と、受信データs12の集計キーが「Alice」で一致する。このため、結合部152は、第4記憶領域に、集計キー「Alice」および集計値「900」の組みを登録する。
ストリームR、Sの現在のウインドウをR2、S2とする。結合部152は、第4記憶領域に登録された集計キー「Alice」および集計値「900」の組みを、第1記憶領域に移動させる。第1記憶領域に記憶された集計キー「Alice」および集計値「900」の組みが、時刻「10:30」における結果集合となる。
また、ストリームR、Sの現在のウインドウがR2、S2の場合には、受信データr21と、受信データr22と、受信データs22との集計キーが「Henry」で一致する。受信データr23と受信データs21との集計キーが「Caren」で一致する。このため、結合部152は、集計キー「Henry」および集計値「1600」の組みと、集計キー「Caren」および集計値「300」の組みとを第4記憶領域に登録する。
ストリームR、Sの現在のウインドウをR3、S3とする。結合部152は、第4記憶領域に登録された集計キー「Henry」および集計値「1600」の組みと、集計キー「Caren」および集計値「300」の組みとを、第1記憶領域に移動させる。第1記憶領域に記憶された集計キー「Henry」および集計値「1600」の組みと、集計キー「Caren」および集計値「300」の組みとが、時刻「11:00」における結果集合となる。
また、ストリームR、Sの現在のウインドウがR3、S3の場合には、受信データr31と、受信データs31との集計キーが「Dick」で一致する。このため、結合部152は、第4記憶領域に、集計キー「Dick」および集計値「700」の組みを登録する。
ストリームR、Sの現在のウインドウをR4、S4とする。結合部152は、第4記憶領域に登録された集計キー「Dick」および集計値「700」の組みを、第1記憶領域に移動させる。第1記憶領域に記憶された集計キー「Dick」および集計値「700」の組みが、時刻「10:30」における結果集合となる。
続いて、ストリームR、ストリームSのウインドウ幅が異なる場合にも対応した結合部152の処理について説明する。まず、結合部152の処理手順を説明する。以下に示す処理手順は、ウインドウ幅が等しい場合であっても対応可能である。
図8は、本実施例に係る結合部の処理手順を示すフローチャートである。例えば、図8に示す処理は、ストリームR、S、閉鎖信号ストリームCを受信したことを契機に実行される。
結合部152は、初期化を行う(ステップS201)。ステップS201において、結合部152は、受信データテーブル141のWRprev、WRcur、WSprev、WScurを空集合とする。また、結合部152は、結果集合テーブル142の第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域の情報を空に設定する。
結合部152は、ストリームR、S、閉鎖信号ストリームCの受信を開始する(ステップS202)。
結合部152は、次のデータを所定時間以上受信しなかった場合には(ステップS203,No)、処理を終了する。
ステップS203において、結合部152は、ウインドウ閉鎖信号csを受信した場合には、ステップS204に移行する。結合部152は、ウインドウ閉鎖信号crを受信した場合には、ステップS206に移行する。結合部152は、ストリームRの受信データrを受信した場合には、ステップS208に移行する。結合部152は、ストリームSの受信データsを受信した場合には、ステップS209に移行する。
結合部152が、ウインドウ閉鎖信号csを受信した場合について説明する。結合部152は、受信データテーブル141のWSprevに、WScurを代入し、WScurを空集合とする(ステップS204)。
結合部152は、第1記憶領域(Rprev×Sprev)に、第3記憶領域(Rprev×Scur)を代入し、第2記憶領域(Rcur×Sprev)に第4記憶領域(Rcur×Scur)を代入する。結合部152は、第3記憶領域(Rprev×Scur)と第4記憶領域(Rcur×Scur)を空集合に設定し(ステップS205)、ステップS210に移行する。
結合部152が、ウインドウ閉鎖信号crを受信した場合について説明する。結合部152は、受信データテーブル141のWRprevに、WRcurを代入し、WRcurを空集合とする(ステップS206)。
結合部152は、第1記憶領域(Rprev×Sprev)に、第2記憶領域(Rcur×Sprev)を代入し、第3記憶領域(Rprev×Scur)に第4記憶領域(Rcur×Scur)を代入する。結合部152は、第2記憶領域(Rcur×Sprev)と第4記憶領域(Rcur×Scur)を空集合に設定し(ステップS207)、ステップS210に移行する。
結合部152が、ストリームRの受信データrを受信した場合について説明する。結合部152は、受信データr処理を実行し(ステップS208)、ステップS210に移行する。
結合部152が、ストリームSの受信データsを受信した場合について説明する。結合部152は、受信データs処理を実行し(ステップS209)、ステップS210に移行する。
結合部152は、利用者端末30からの出力要求を受け付けた場合に、第1記憶領域(Rprev×Sprev)のデータを利用者端末30に出力し(ステップS210)、ステップS203に移行する。
次に、図8のステップS208に示した受信データr処理の処理手順について説明する。図9は、本実施例に係る受信データr処理の処理手順を示すフローチャートである。
図9に示すように、結合部152は、受信データrがWRcurに登録済みであるか否かを判定する(ステップS301)。
結合部152は、受信データrがWRcurに登録済みの場合には(ステップS301,Yes)、ステップS302に移行する。
結合部152は、WRcurにおける受信データrの集計値を更新する。結合部152は、第2記憶領域(Rcur×Sprev)に受信データrが登録されている場合に、集計値を更新する。結合部152は、第4記憶領域(Rcur×Scur)に受信データrが登録されている場合に、集計値を更新する(ステップS302)。
一方、結合部152は、受信データrがWRcurに登録済みではない場合に(ステップS301,No)、受信データrをWRcurに登録する(ステップS303)。
結合部152は、受信データrとWSprevの結合結果を第2記憶領域(Rcur×Sprev)に挿入する(ステップS304)。結合部152は、受信データrとWScurの結合結果を第4記憶領域(Rcur×Scur)に挿入する(ステップS305)。
次に、図8のステップS209に示した受信データs処理の処理手順について説明する。図10は、本実施例に係る受信データs処理の処理手順を示すフローチャートである。
図10に示すように、結合部152は、受信データsがWScurに登録済みであるか否かを判定する(ステップS401)。
結合部152は、受信データsがWScurに登録済みである場合には(ステップS401,Yes)、ステップS402に移行する。
結合部152は、WScurにおける受信データsの集計値を更新する。結合部152は、第3記憶領域(Rprev×Scur)に受信データsが登録されている場合に、集計値を更新する。結合部152は、第4記憶領域(Rcur×Scur)に受信データsが登録されている場合に、集計値を更新する(ステップS402)。
一方、結合部152は、受信データsがWScurに登録済みではない場合には(ステップS401,No)、受信データsをWScurに登録する(ステップS403)。
結合部152は、受信データsとWRprevの結合結果を第3記憶領域(Rprev×Scur)に挿入する(ステップS404)。結合部152は、受信データsとWRcurの結合結果を第4記憶領域(Rcur×Scur)に挿入する(ステップS405)。
図8、9、10の処理手順に基づいた、結合部152の処理について説明する。図11〜図28は、結合部の処理を説明するための図である。前提条件として、ストリームRのウインドウ幅WRを40分とし、ストリームSのウインドウ幅WSを20分とする。
図11A、11B、11Cについて説明する。現在時刻を「10:00」とする。図11Aに示すように、結合部152は、ストリームRの受信を開始する。ストリームRには受信データr11が含まれる。結合部152は、受信データr11の集計キー「Alice」、数値「500」を、受信データテーブル141の「WRcur」に登録する。図11Bに示すように、受信データテーブル141の「WRcur」には、集計キー「Alice」、数値「500」が登録される。図11Bに示すように、受信データr11の比較対象となるWScur、WSprevにはデータが存在しないため、結合結果はない。このため、図11Cに示すように、結合部152は、第1〜4記憶領域にはデータを登録しない。
現在時刻「10:00」において、受信部151により、タイマーTRは0にセットされた後、タイマーTRがスタートする。一方、ストリームSの受信は開始されていないため、タイマーTSは、開始前となる。
図12A、図12Bについて説明する。現在時刻を「10:10」とする。図12Aに示すように、結合部152は、ストリームSの受信を開始する。ストリームSには受信データs11が含まれる。結合部152は、受信データs11の集計キー「Bob」、数値「600」を、受信データテーブル141の「WScur」に登録する。図12Bに示すように、受信データテーブル141の「WScur」には、集計キー「Bob」、数値「600」が登録される。図12Bに示すように、受信データs11の比較対象となるWRcur、WRprevには、受信データs11と同一の集計キーが存在しないため、結合結果はない。このため、図11Cと同様にして、結合部152は、第1〜4記憶領域にデータを登録しない。
現在時刻「10:10」において、タイマーTRは10分となる。また、受信部151により、タイマーTSは0にセットされた後、タイマーTSがスタートする。
図13A、図13Bについて説明する。現在時刻を「10:25」とする。図13Aに示すように、結合部152は、ストリームRから受信データr12を新たに受信する。結合部152は、受信データr12の集計キー「Dick」、数値「300」を、受信データテーブル141の「WRcur」に登録する。図13Bに示すように、「WRcur」には、集計キー「Dick」、数値「300」が追加登録される。図13Bに示すように、受信データr12の比較対象となるWRcur、WRprevには、受信データr12と同一の集計キーが存在しないため、結合結果はない。このため、図11Cと同様にして、結合部152は、第1〜4記憶領域にデータを登録しない。
現在時刻「10:25」において、タイマーTRは25分となる。タイマーTSは15分となる。
図14A、図14B、図14Cについて説明する。現在時刻を「10:27」とする。図14Aに示すように、結合部152は、ストリームSから受信データs12を新たに受信する。結合部152は、受信データs12の集計キー「Alice」、数値「400」を、受信データテーブル141の「WScur」に登録する。図14Bに示すように、「WScur」には、集計キー「Alice」、数値「400」が追加登録される。
図14Bに示すように、受信データs12の集計キー「Alice」と、WRcurの集計キー「Alice」が一致する。このため、結合部152は、受信データs12とWRcurを結合し、結合結果を、第4記憶領域に登録する。Aliceの集計値は「900」となる。なお、WRprevには受信データs12と同一の集計キーが存在しないため、結合結果はない。
図14Cに示すように、結果集合テーブル142の第4記憶領域には、集計キー「Alice」、集計値「900」が登録される。
現在時刻「10:27」において、タイマーTRは27分となる。タイマーTSは17分となる。
図15A、図15B、図15Cについて説明する。現在時刻を「10:30」とする。結合部152は、ウインドウ閉鎖信号csを取得する。これにより、図15Aに示すように、結合部152は、ストリームSの現在のウインドウを閉じる。また、結合部152は、受信データテーブル141において、WScurのデータをWSprevに移動させ、WScurを空表に設定する。図15Bに示すように、WSprevには、集計キー「Bob」および数値「600」の組みと、集計キー「Alice」および数値「400」の組みとが登録される。また、WScurは、空表となる。
結合部152は、ウインドウ閉鎖信号csを受信した場合には、第4記憶領域の情報を、第2記憶領域に登録し、第4記憶領域を空集合に設定する。結合部152は、第3記憶領域の情報を第1記憶領域に登録し、第3記憶領域を空集合に設定する。図15Cに示すように、結合部152は、第4記憶領域の「Alice」、「900」の組みの情報を、第2記憶領域に登録し、第4記憶領域を空集合に設定する。
現在時刻「10:30」において、タイマーTRは30分となる。タイマーTSは、20分となり、ウインドウ幅WSと一致する。このため、受信部151は、ウインドウ閉鎖信号csを、結合部152に出力し、タイマーTSを0分にリセットする。
図16A、図16B、図16Cについて説明する。現在時刻を「10:35」とする。図16Aに示すように、結合部152は、ストリームSから受信データs21を新たに受信する。結合部152は、受信データs21の集計キー「Dick」、数値「300」を、受信データテーブル141の「WScur」に登録する。図16Bに示すように、「WScur」には、集計キー「Dick」、数値「300」が追加登録される。図16Bに示すように、受信データs21の集計キー「Dick」と、WRcurの集計キー「Dick」とが一致する。このため、集計部152は、受信データs21とWRcurを結合し、結合結果を第4記憶領域に登録する。Dickの集計値は「600」となる。なお、WRprevには、受信データs21と同一の集計キーが存在しないため、結合結果はない。
図16Cに示すように、結果集合テーブル142の第4記憶領域には、集計キー「Dick」、集計値「600」が登録される。
現在時刻「10:35」において、タイマーTRは35分となる。タイマーTSは5分となる。
図17A、図17B、図17Cについて説明する。現在時刻を「10:40」とする。係る時刻において、結合部152は、ウインドウ閉鎖信号crを取得する。これにより、図17Aに示すように、結合部152は、ストリームRの現在のウインドウを閉じる。また、結合部152は、受信データテーブル141において、WRcurのデータをWRprevに移動し、WRcurを空表に設定する。図17Bに示すように、WRprevには、集計キー「Alice」、数値「500」の組みと、集計キー「Dick」、数値「300」の組みが登録される。また、WRcurは、空表となる。
結合部152は、ウインドウ閉鎖信号crを受信した場合には、第4記憶領域の情報を、第3記憶領域に登録し、第4記憶領域を空集合に設定する。結合部152は、第2記憶領域の情報を第1記憶領域に登録し、第2記憶領域を空集合に設定する。図17Cに示すように、結合部152は、第2記憶領域の「Alice」、「900」の組みを、第1記憶領域に登録し、第2記憶領域を空集合に設定する。また、結合部152は、第4記憶領域の集計キー「Dick」、数値「600」の組みを第3記憶領域に登録し、第4記憶領域の情報を空集合に設定する。
現在時刻「10:40」において、タイマーTRは40分となり、ウインドウ幅WRと一致する。このため、受信部151は、ウインドウ閉鎖信号crを、結合部152に出力し、タイマーTRを0分にリセットする。また、タイマーTSは10分となる。
図18A、図18Bについて説明する。現在時刻を「10:42」とする。図18Aに示すように、結合部152は、ストリームSから受信データs22を新たに受信する。結合部152は、集計キー「Henry」、数値「100」を、受信データテーブル141の「WScur」に追加登録する。図18Bに示すように、「WScur」には、集計キー「Henry」、数値「100」が追加登録される。図18Bに示すように、受信データs22と同一の集計キーは、WRcur、WRprevには存在せず、結合結果はない。結果集合テーブル142に登録されるデータは、図17Cと同様となる。
現在時刻「10:42」において、タイマーTRは2分となる。タイマーTSは12分となる。
図19A、図19Bについて説明する。現在時刻を「10:45」とする。図19Aに示すように、結合部152は、ストリームRから受信データr21を新たに受信する。結合部152は、集計キー「Eric」、数値「500」を、受信データテーブル141の「WRcur」に追加登録する。図19Bに示すように、「WRcur」には、集計キー「Eric」、数値「500」が追加登録される。図19Bに示すように、受信データr21と同一の集計キーは、WScur、WSprevには存在せず、結合結果はない。結果集合テーブル142に登録されるデータは、図17Cと同様となる。
現在時刻「10:45」において、タイマーTRは5分となる。タイマーTSは15分となる。
図20A、図20B、図20Cについて説明する。現在時刻を「10:50」とする。係る時刻において、結合部152は、ウインドウ閉鎖信号csを取得する。これにより、図20Aに示すように、結合部152は、ストリームSのウインドウを閉じる。また、結合部152は、受信データテーブル141において、WScurのデータをWSprevに移動し、WScurを空表に設定する。図20Bに示すように、WSprevには、集計キー「Dick」、数値「300」の組みと、集計キー「Henry」、数値「100」の組みが登録される。また、WScurは、空表となる。
結合部152は、ウインドウ閉鎖信号csを受信した場合には、第4記憶領域の情報を、第2記憶領域に登録し、第4記憶領域を空集合に設定する。結合部152は、第3記憶領域の情報を第1記憶領域に登録し、第3記憶領域を空集合に設定する。図20Cに示すように、結合部152は、第3記憶領域の「Dick」、「600」の組みを、第1記憶領域に登録し、第3記憶領域を空集合に設定する。
図21A、図21Bについて説明する。図20と同様にして、現在時刻を「10:50」とする。図21Aに示すように、結合部152は、ストリームRから受信データr22を新たに受信する。結合部152は、受信データr22の集計キー「Caren」、数値「200」を、受信データテーブル141の「WRcur」に登録する。図21Bに示すように、「WRcur」には、集計キー「Caren」、数値「200」が追加登録される。図20Bに示すように、受信データr22の集計キー「Caren」と、同一の集計キーがWSprev、WScurに存在しないため、結合結果はなく、結果集合テーブル142に登録されるデータは、図20Cと同様となる。
図22A、図22B、図22Cについて説明する。図20、図21と同様にして、現在時刻を「10:50」とする。図22Aに示すように、結合部152は、ストリームSから受信データs31を新たに受信する。結合部152は、集計キー「Caren」、数値「300」を、受信データテーブル141の「WScur」に追加登録する。図22Bに示すように、「WScur」には、集計キー「Caren」、数値「300」が追加登録される。図22Bに示すように、受信データs31の集計キーは、WRcurに一致する。このため、結合部152は、受信データs31とWRcurを結合し、結合結果を、第4記憶領域に登録する。Carenの集計値は「500」となる。なお、WRprevには受信データs31と同一の集計キーが存在しないため、結合結果はない。
図22Cに示すように、結果集合テーブル142の第4記憶領域には、集計キー「Caren」、集計値「500」が登録される。
現在時刻「10:50」において、タイマーTRは10分となる。タイマーTSは、20分となり、ウインドウ幅WSと一致する。このため、受信部151は、ウインドウ閉鎖信号csを、結合部152に出力し、タイマーTSを0分にリセットする。
図23A、図23B、図23Cについて説明する。現在時刻を「11:00」とする。図23Aに示すように、結合部152は、ストリームSから受信データs32を新たに受信する。結合部152は、集計キー「Dick」、数値「100」を、受信データテーブル141の「WScur」に追加登録する。図23Bに示すように、「WScur」には、集計キー「Dick」、数値「100」が追加登録される。図23Bに示すように、受信データs32の集計キー「Dick」と、WRprevの集計キー「Dick」が一致する。このため、結合部152は、受信データs32とWRprevを結合し、結合結果を、第3記憶領域に登録する。Dickの集計値は「400」となる。なお、WRcurには受信データs32と同一の集計キーが存在しないため、結合結果はない。
図23Cに示すように、結果集合テーブル142の第3記憶領域には、集計キー「Dick」、集計値「400」が登録される。
現在時刻「11:00」において、タイマーTRは20分となる。タイマーTSは10分となる。
図24A、図24B、図24Cについて説明する。現在時刻を「11:10」とする。結合部152は、ウインドウ閉鎖信号csを取得する。これにより、図24Aに示すように、結合部152は、ストリームSの現在のウインドウを閉じる。また、結合部152は、受信データテーブル141において、WScurのデータをWSprevに移動させ、WScurを空表に設定する。図24Bに示すように、WSprevには、集計キー「Caren」および数値「300」の組みと、集計キー「Dick」および数値「100」の組みとが登録される。また、WScurは、空表となる。
結合部152は、ウインドウ閉鎖信号csを受信した場合には、第4記憶領域の情報を、第2記憶領域に登録し、第4記憶領域を空集合に設定する。結合部152は、第3記憶領域の情報を第1記憶領域に登録し、第3記憶領域を空集合に設定する。図24Cに示すように、結合部152は、第4記憶領域の「Caren」、「500」の組みの情報を、第2記憶領域に登録し、第4記憶領域を空集合に設定する。また、結合部152は、第3記憶領域の「Dick」、「400」の組みの情報を、第1記憶領域に登録し、第3記憶領域を空集合に設定する。
現在時刻「11:10」において、タイマーTRは30分となる。タイマーTSは、20分となり、ウインドウ幅WSと一致する。このため、受信部151は、ウインドウ閉鎖信号csを、結合部152に出力し、タイマーTSを0分にリセットする。
図25A、図25B、図25Cについて説明する。現在時刻を「11:15」とする。結合部152は、ストリームRから受信データr23を新たに受信する。結合部152は、受信データテーブル141のWRcurに「Caren」が登録済みである。この場合には、図25Bに示すように、結合部152は、WRcurの集計キー「Caren」の数値を「800」に更新する。また、図25Cに示すように、第2記憶領域の集計値に、「600」を加算して、第2記憶領域の集計値を更新する。図25に示したケースでは、結合部152は、受信データr23と、WScur、WSprevとの比較は行わない。
現在時刻「11:15」において、タイマーTRは35分となる。タイマーTSは5分となる。
図26A、図26B、図26Cについて説明する。現在時刻を「11:20」とする。係る時刻において、結合部152は、ウインドウ閉鎖信号crを取得する。これにより、図26Aに示すように、結合部152は、ストリームRの現在のウインドウを閉じる。また、結合部152は、受信データテーブル141において、WRcurのデータをWRprevに移動し、WRcurを空表に設定する。図26Bに示すように、WRprevには、集計キー「Eric」、数値「500」の組みと、集計キー「Caren」、数値「800」の組みが登録される。また、WRcurは、空表となる。
結合部152は、ウインドウ閉鎖信号crを受信した場合には、第4記憶領域の情報を、第3記憶領域に登録し、第4記憶領域を空集合に設定する。結合部152は、第2記憶領域の情報を第1記憶領域に登録し、第2記憶領域を空集合に設定する。図26Cに示すように、結合部152は、第2記憶領域の「Caren」、「1100」の組みを、第1記憶領域に登録し、第2記憶領域を空集合に設定する。
図27A、図27Bについて説明する。図26と同様にして、現在時刻を「11:20」とする。結合部152は、ストリームSから受信データs41を新たに受信する。結合部152は、受信データs41の集計キー「Bob」、数値「700」を、受信データテーブル141の「WScur」に登録する。図27Bに示すように、「WScur」には、集計キー「Bob」、数値「700」が追加登録される。図27Bに示すように、受信データs41の集計キー「Bob」と、同一の集計キーがWRprev、WRcurに存在しないため、結合結果はなく、結果集合テーブル142に登録されるデータは、図26Cと同様となる。
現在時刻「11:20」において、タイマーTRは40分となり、ウインドウ幅WRと一致する。このため、受信部151は、ウインドウ閉鎖信号crを、結合部152に出力し、タイマーTRを0分にリセットする。また、タイマーTSは10分となる。
図28A、図28Bについて説明する。現在時刻を「11:25」とする。結合部152は、ストリームRから受信データr31を新たに受信する。結合部152は、受信データr31の集計キー「Iris」、数値「200」を、受信データテーブル141の「WRcur」に登録する。図28Bに示すように、「WRcur」には、集計キー「Iris」、数値「200」が登録される。図28Bに示すように、受信データr31の集計キー「Iris」と、同一の集計キーがWSprev、WScurに存在しないため、結合結果はなく、結果集合テーブル142に登録されるデータは、図26Cと同様となる。
上記の図11〜図28に示す処理を結合部152が実行することで、結合部152は、ストリームR、Sの受信データr、sの結合結果を結果集合テーブル142に格納する。
例えば、図14に示したように、結合部152は、ウインドウRcurと同一の集計キーをウインドウScurから検出した場合には、各集計キーの数値を結合した情報を、第4記憶領域に記憶する。また、図18に示したように、結合部152は、ウインドウScurと同一の集計キーをウインドウRcurから検出した場合には、各集計キーの数値を結合した情報を、第3記憶領域に記憶する。また、図22に示したように、結合部152は、ウインドウRcurと同一の集計キーをウインドウScurから検出した場合には、各集計キーの数値を結合した情報を、第4記憶領域に記憶する。
そして、結合部152は、ストリームRのウインドウが切り替わった場合には、第2記憶領域の情報を、第1記憶領域に移動させ、第1記憶領域の情報を、ウインドウRprevと、ウインドウSprevとの結合結果とする。また、結合部152は、第4記憶領域の情報を、第3記憶領域に移動させる。このため、ストリームRのウインドウが切り替わった時点で、第1記憶領域に、前のウインドウにおける結合結果を登録可能となる。
一方、結合部152は、ストリームSのウインドウが切り替わった場合には、第3記憶領域の情報を、第1記憶領域に移動させ、第1記憶領域の情報を、ウインドウRprevと、ウインドウSprevとの結合結果とする。また、結合部152は、第4記憶領域の情報を、第2記憶領域に移動させる。このため、ストリームSのウインドウが切り替わった時点で、第1記憶領域に、前のウインドウにおける結合結果を登録可能となる。
データ送信部153は、利用者端末30からのデータ要求に応答して、結果集合テーブル142に記憶されたデータを、利用者端末30に送信する処理部である。例えば、データ送信部153は、ウインドウ閉鎖信号を、受信部151から取得し、ウインドウ閉鎖信号を取得したタイミングで、結果集合テーブル142の第1記憶領域に記憶された結合結果を順次、利用者端末30に送信しても良い。
次に、本実施例に係る結合装置100の効果について説明する。結合装置100は、ストリームRおよびストリームSのウインドウを開始時刻から順に受信している最中に、ストリームRの受信データの集計キーと同一の集計キーの受信データをストリームSから検出した時点で、各集計キーの数値を結合して結合結果を結果集合テーブル142に記憶する。このため、ストリームのウインドウが切り替わった時点において、前のウインドウの結合結果が算出済みとなり、ストリームの結果集合の出力に遅延が発生することを防止することができる。
また、結合装置100は、図25等に示したように、受信データテーブル141のWRcurに「Caren」が登録済みの場合には、受信データr23と、WScur、WSprevとの比較は行わない。結合装置100は、第2記憶領域の集計値に、「600」を加算して、第2記憶領域の集計値を更新する。このため、処理を省略することができ、処理負荷を軽減することが可能となる。
ところで、上記の例ではウインドウ幅WR、WSを固定して、結合装置100の処理を説明したが、これに限定されるものではない。ウインドウ幅WR、WSを任意のタイミングに適宜変更しても良い。
次に、各実施例に示した結合装置100と同様の機能を実現する結合プログラムを実行するコンピュータの一例を説明する。図29は、結合プログラムを実行するコンピュータの一例を示す図である。
図29に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207を有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、例えば、受信プログラム207a、結合プログラム207b、データ送信プログラム207cを有する。CPU201は、各プログラム207a〜207cを読み出して、RAM206に展開する。
受信プログラム207aは、受信プロセス206aとして機能する。結合プログラム207bは、結合プロセス206bとして機能する。データ送信プログラム207cは、データ送信プロセス206cとして機能する。
例えば、受信プロセス206aは、受信部151に対応する。結合プロセス206bは、結合部152に対応する。データ送信プロセス206cは、データ送信部153に対応する。
なお、各プログラム207a〜207cについては、必ずしも最初からハードディスク装置207に記憶させておかなくてもよい。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200がこれらから各プログラム207a〜207cを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信する受信部と、
前記第1ストリームデータおよび前記第2ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶部に記憶する結合部と
を有することを特徴とする結合装置。
(付記2)前記記憶部は、第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域を有し、
前記結合部は、
前記第1ストリームデータの第1ウインドウに続いて第2ウインドウを受信する一方で、前記第2ストリームデータの第3ウインドウに続いて第4ウインドウを受信し、前記第2ウインドウおよび前記第4ウインドウを受信している最中に、
前記第2ウインドウの集計キーと同一の集計キーを第3ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第2記憶領域に格納し、
前記第2ウインドウの集計キーと同一の集計キーを第4ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第4記憶領域に格納し、
前記第4ウインドウの集計キーと同一の集計キーを第1ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第3記憶領域に格納し、
前記第1ストリームデータの前記第2ウインドウの次のウインドウを受信した場合には、前記第2記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第3記憶領域に登録し、
前記第2ストリームデータの前記第4ウインドウの次のウインドウを受信した場合には、前記第3記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第2記憶領域に登録する
ことを特徴とする付記1に記載の結合装置。
(付記3)前記結合部は、
前記第2ウインドウの集計キーと同一の集計キーが、前記第2記憶領域に登録されている場合には、前記第2ウインドウの集計キーの数値と、前記第2記憶領域の同一の集計キーの数値とを加算させ
前記第4ウインドウの集計キーと同一の集計キーが、前記第3記憶領域に登録されている場合には、前記第4ウインドウの集計キーの数値と、前記第3記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記2に記載の結合装置。
(付記4)コンピュータに、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信し、
前記第1ストリームデータおよび前記第2ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶装置に記憶する
各処理を実行させることを特徴とする結合プログラム。
(付記5)前記記憶装置は、第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域を有し、
前記結合する処理は、
前記第1ストリームデータの第1ウインドウに続いて第2ウインドウを受信する一方で、前記第2ストリームデータの第3ウインドウに続いて第4ウインドウを受信し、前記第2ウインドウおよび前記第4ウインドウを受信している最中に、
前記第2ウインドウの集計キーと同一の集計キーを第3ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第2記憶領域に格納し、
前記第2ウインドウの集計キーと同一の集計キーを第4ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第4記憶領域に格納し、
前記第4ウインドウの集計キーと同一の集計キーを第1ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第3記憶領域に格納し、
前記第1ストリームデータの前記第2ウインドウの次のウインドウを受信した場合には、前記第2記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第3記憶領域に登録し、
前記第2ストリームデータの前記第4ウインドウの次のウインドウを受信した場合には、前記第3記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第2記憶領域に登録することを特徴とする付記4に記載の結合プログラム。
(付記6)前記結合する処理は、
前記第2ウインドウの集計キーと同一の集計キーが、前記第2記憶領域に登録されている場合には、前記第2ウインドウの集計キーの数値と、前記第2記憶領域の同一の集計キーの数値とを加算させ、
前記第4ウインドウの集計キーと同一の集計キーが、前記第3記憶領域に登録されている場合には、前記第4ウインドウの集計キーの数値と、前記第3記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記5に記載の結合プログラム。
(付記7)コンピュータが実行する結合方法であって、
任意の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信し、
前記第1ストリームデータおよび前記第2ストリームデータのウインドウを開始時刻から順に受信している最中に、前記第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した時点で、各受信データを結合し、各受信データの数値を加算して結合結果を記憶装置に記憶する
各処理を実行することを特徴とする結合方法。
(付記8)前記記憶装置は、第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域を有し、
前記結合する処理は、
前記第1ストリームデータの第1ウインドウに続いて第2ウインドウを受信する一方で、前記第2ストリームデータの第3ウインドウに続いて第4ウインドウを受信し、前記第2ウインドウおよび前記第4ウインドウを受信している最中に、
前記第2ウインドウの集計キーと同一の集計キーを第3ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第2記憶領域に格納し、
前記第2ウインドウの集計キーと同一の集計キーを第4ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第4記憶領域に格納し、
前記第4ウインドウの集計キーと同一の集計キーを第1ウインドウから検出した時点で、各受信データを結合し、各受信データの数値を加算して、前記第3記憶領域に格納し、
前記第1ストリームデータの前記第2ウインドウの次のウインドウを受信した場合には、前記第2記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第3記憶領域に登録し、
前記第2ストリームデータの前記第4ウインドウの次のウインドウを受信した場合には、前記第3記憶領域のデータを前記第1記憶領域に登録し、前記第4記憶領域のデータを、前記第2記憶領域に登録することを特徴とする付記7に記載の結合方法。
(付記9)前記結合する処理は、
前記第2ウインドウの集計キーと同一の集計キーが、前記第2記憶領域に登録されている場合には、前記第2ウインドウの集計キーの数値と、前記第2記憶領域の同一の集計キーの数値とを加算させ、
前記第4ウインドウの集計キーと同一の集計キーが、前記第3記憶領域に登録されている場合には、前記第4ウインドウの集計キーの数値と、前記第3記憶領域の同一の集計キーの数値とを加算させることを特徴とする付記8に記載の結合方法。
20a、20b ストリーム送信装置
30 利用者端末
50 ネットワーク
100 結合装置

Claims (4)

  1. 可変の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信して、受信した前記第1ストリームデータおよび前記第2ストリームデータを記憶部に記憶する受信部と、
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウの開始時刻から終了時刻までの間において、第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した場合、または、前記第2ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第1ストリームデータから検出した場合に、前記第1ストリームデータおよび前記第2ストリームデータのそれぞれにおいて同一の集計キーの各受信データの数値を集計キー毎に合計した集計結果を記憶領域に記憶し、
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウが終了時刻に到達したタイミングにおいて、前記記憶領域の集計結果を、前記第1ストリームデータの直近の閉じたウインドウと、前記第2ストリームデータの直近の閉じたウインドウとの結合結果として記憶部に記憶する結合部と、
    前記記憶部に記憶された結合結果を前記終了時刻に出力する出力部と
    を有することを特徴とする結合装置。
  2. 前記記憶部は、第1記憶領域、第2記憶領域、第3記憶領域、第4記憶領域を有し、
    前記結合部は、
    前記第1ストリームデータの第1ウインドウに続いて第2ウインドウを受信する一方で、前記第2ストリームデータの第3ウインドウに続いて第4ウインドウを受信し、
    前記1ウインドウおよび前記第3ウインドウの開始時刻から終了時刻までの間において、前記第1ウインドウの集計キーと同一の集計キーを前記第3ウインドウから検出した場合、または、前記第3ウインドウの集計キーと同一の集計キーを前記第1ウインドウから検出した場合には、前記第1ウインドウおよび前記第3ウインドウのそれぞれにおいて同一の集計キーの各受信データの数値を集計キー毎に合計した集計結果を前記第4記憶領域に格納し、
    第3ウインドウの終了時刻に到達したタイミングで、前記第4記憶領域に格納された集計結果を、前記第2記憶領域に移動させ
    前記1ウインドウおよび前記第4ウインドウの開始時刻から終了時刻までの間において、前記第1ウインドウの集計キーと同一の集計キーを前記第4ウインドウから検出した場合、または、前記第4ウインドウの集計キーと同一の集計キーを前記第1ウインドウから検出した場合には、前記第1ウインドウおよび前記第4ウインドウのそれぞれにおいて同一の集計キーの各受信データの数値を集計キー毎に合計した集計結果を前記第4記憶領域に格納し、
    第1ウインドウの終了時刻に到達したタイミングで、前記第4記憶領域に格納された集計結果を、前記第3記憶領域に移動させ、前記第2記憶領域に記憶された集計結果を、前記第1記憶領域に移動させ、
    前記第1記憶領域に記憶された集計結果を、前記第1ストリームデータの直近の閉じた前記第1ウインドウと、前記第2ストリームデータの直近の閉じた前記第3ウインドウとの結合結果とする
    ことを特徴とする請求項1に記載の結合装置。
  3. コンピュータに、
    可変の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信して、受信した前記第1ストリームデータおよび前記第2ストリームデータを記憶装置に記憶し
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウの開始時刻から終了時刻までの間において、第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した場合、または、前記第2ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第1ストリームデータから検出した場合に、前記第1ストリームデータおよび前記第2ストリームデータのそれぞれにおいて同一の集計キーの各受信データの数値を集計キー毎に合計した集計結果を記憶領域に記憶し、
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウが終了時刻に到達したタイミングにおいて、前記記憶領域の集計結果を、前記第1ストリームデータの直近の閉じたウインドウと、前記第2ストリームデータの直近の閉じたウインドウとの結合結果として前記記憶装置に記憶し、
    前記記憶装置に記憶された結合結果を前記終了時刻に出力する
    各処理を実行させることを特徴とする結合プログラム。
  4. コンピュータが実行する結合方法であって、
    可変の時間間隔で開始時刻および終了時刻に区切られる複数の各ウインドウ内に、集計キーと数値との組を示す受信データを含む第1ストリームデータおよび第2ストリームデータを受信して、受信した前記第1ストリームデータおよび前記第2ストリームデータを記憶装置に記憶し
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウの開始時刻から終了時刻までの間において、第1ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第2ストリームデータから検出した場合、または、前記第2ストリームデータの受信データの集計キーと同一の集計キーの受信データを前記第1ストリームデータから検出した場合に、前記第1ストリームデータおよび前記第2ストリームデータのそれぞれにおいて同一の集計キーの各受信データの数値を集計キー毎に合計した集計結果を記憶領域に記憶し、
    前記第1ストリームデータおよび前記第2ストリームデータのウインドウが終了時刻に到達したタイミングにおいて、前記記憶領域の集計結果を、前記第1ストリームデータの直近の閉じたウインドウと、前記第2ストリームデータの直近の閉じたウインドウとの結合結果として前記記憶装置に記憶し、
    前記記憶装置に記憶された結合結果を前記終了時刻に出力する
    各処理を実行することを特徴とする結合方法。
JP2012037497A 2012-02-23 2012-02-23 結合装置、結合プログラムおよび結合方法 Active JP6162363B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012037497A JP6162363B2 (ja) 2012-02-23 2012-02-23 結合装置、結合プログラムおよび結合方法
US13/735,173 US9535825B2 (en) 2012-02-23 2013-01-07 Information processing device and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012037497A JP6162363B2 (ja) 2012-02-23 2012-02-23 結合装置、結合プログラムおよび結合方法

Publications (2)

Publication Number Publication Date
JP2013174940A JP2013174940A (ja) 2013-09-05
JP6162363B2 true JP6162363B2 (ja) 2017-07-12

Family

ID=49004571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012037497A Active JP6162363B2 (ja) 2012-02-23 2012-02-23 結合装置、結合プログラムおよび結合方法

Country Status (2)

Country Link
US (1) US9535825B2 (ja)
JP (1) JP6162363B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351020A1 (en) * 2013-05-23 2014-11-27 International Business Machines Corporation Estimating the total sales over streaming bids
JP2016119118A (ja) * 2016-02-18 2016-06-30 アイエムエス ソフトウェア サービシズ リミテッド 情報処理装置、情報処理方法及びプログラム
US10860586B2 (en) 2018-02-19 2020-12-08 Red Hat, Inc. Methods and devices for joining multiple events in data streaming analytics systems

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212609A1 (en) * 2002-04-03 2003-11-13 Jeffery Blair Method of facilitating a transaction between a buyer and at least one seller
JP2006260222A (ja) * 2005-03-17 2006-09-28 Nec Corp 料金代行徴収システム、料金代行徴収サーバ、料金代行徴収方法及び料金代行徴収プログラム
JPWO2010095457A1 (ja) * 2009-02-20 2012-08-23 日本電気株式会社 解析前処理システム、解析前処理方法および解析前処理プログラム
JP5493431B2 (ja) 2009-03-31 2014-05-14 富士通株式会社 記憶媒体、トライ木生成方法およびトライ木生成装置
US8380724B2 (en) * 2009-11-24 2013-02-19 Microsoft Corporation Grouping mechanism for multiple processor core execution

Also Published As

Publication number Publication date
US9535825B2 (en) 2017-01-03
JP2013174940A (ja) 2013-09-05
US20130227228A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
US9516050B2 (en) Monitoring propagation in a network
CN112350953B (zh) 流量限制方法及其装置、电子设备和计算机可读存储介质
WO2017201935A1 (zh) 视频播放方法及装置
JP6523589B1 (ja) 通信装置、通信システム、通信方法および通信プログラム
JP6162363B2 (ja) 結合装置、結合プログラムおよび結合方法
JP7210600B2 (ja) 分岐予測回路及びその制御方法
JP2011254440A (ja) 情報処理装置
WO2020156055A1 (zh) 显示界面切换方法、电子设备及计算机可读存储介质
WO2020134620A1 (zh) 一种受理区块链存证交易的方法及系统
US20150128120A1 (en) Method for providing auto-run service and electronic device thereof
WO2014094570A1 (en) Method for adding bookmarks and browser
US9754063B2 (en) Reducing dynamic clock skew and/or slew in an electronic circuit
US20150242427A1 (en) Device and method for recommending content based on interest information
US11689347B2 (en) Communication apparatus, communication system, communication method, and computer readable medium
JP5933147B2 (ja) 通信装置及び通信方法及びプログラム
US9930031B2 (en) Multi-factor user authentication based on user credentials and entry timing
US10396886B2 (en) Relay device rewriting a destination address based on configuration of a multi-hop network
CN112817701B (zh) 定时器处理方法、装置、电子设备和计算机可读介质
US20150375122A1 (en) Systems and methods for controlling multiple accounts
CN110162337B (zh) 运算方法、装置及相关产品
US20140043286A1 (en) Method for identifying touch pen in electronic device, and electronic device
WO2020059138A1 (ja) 通信装置、通信システム、通信方法および通信プログラム
WO2017049480A1 (zh) 一种多屏显示的方法及智能手环
JPWO2019207962A1 (ja) 興味推定装置
US9002861B2 (en) Matching device and computer-readable storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160518

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160527

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20160701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170501

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170615

R150 Certificate of patent or registration of utility model

Ref document number: 6162363

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150