JP5198929B2 - ストリームデータ処理方法及び計算機システム - Google Patents

ストリームデータ処理方法及び計算機システム Download PDF

Info

Publication number
JP5198929B2
JP5198929B2 JP2008115765A JP2008115765A JP5198929B2 JP 5198929 B2 JP5198929 B2 JP 5198929B2 JP 2008115765 A JP2008115765 A JP 2008115765A JP 2008115765 A JP2008115765 A JP 2008115765A JP 5198929 B2 JP5198929 B2 JP 5198929B2
Authority
JP
Japan
Prior art keywords
information
result
processing
delay
tuple
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.)
Expired - Fee Related
Application number
JP2008115765A
Other languages
English (en)
Other versions
JP2009266007A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008115765A priority Critical patent/JP5198929B2/ja
Priority to US12/230,289 priority patent/US7849227B2/en
Publication of JP2009266007A publication Critical patent/JP2009266007A/ja
Application granted granted Critical
Publication of JP5198929B2 publication Critical patent/JP5198929B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Description

本発明は、ストリームデータにおいて、データの一部が生成された時刻よりも遅延して到着した場合のストリームデータ処理方法に関する。
ストレージ装置に格納されたデータに対する処理を実行するデータベース管理システム(以下、DBMSとする)に対して、時々刻々と到着するデータをリアルタイム処理するデータ処理システムに対する要求が高まっている。例えば、株式の売買を行うシステムでは、株価の変動にいかに迅速に反応できるかがシステムの最重要の課題の一つであり、従来のDBMSのように株式のデータを一旦記憶装置に格納してから、該格納データに関して検索を行うような方法では、株価変動のスピードに即応できず、ビジネスチャンスを逃してしまうことになりかねない。例えば、特許文献1では、記憶されているクエリが周期的に実行される機構を開示しているが、株価のようにデータが入ってきた瞬間にクエリを実行することが重要なリアルタイムデータ処理には適用が困難であった。
このような時々刻々と到着するデータをストリームデータと定義し、該ストリームデータのリアルタイム処理に好適なデータ処理システムとして、ストリームデータ処理システムが提案されている。例えば、非特許文献1には、ストリームデータ処理システムSTREAMが開示されている。
ストリームデータ処理システムでは、従来のDBMSとは異なり、まずクエリ(問い合わせ)をシステムに登録し、データの到来と共に該クエリが継続的に実行される。前記STREAMでは、ストリームデータを効率的に処理するために、ストリームデータの一部を切り取るスライディングウィンドウと呼ばれる概念を導入し、データに対して生存期間を付与している。スライディングウィンドウ指定を含むクエリの記述言語の好適な例としては非特許文献1に開示されているCQL(Continuous Query Language)をあげることができる。CQLは、DBMSで広く用いられているSQL(Structured Query Language)のFROM句に、ストリーム名に続いて括弧を用いることにより、スライディングウィンドウを指定する拡張が施されている。SQLに関しては、非特許文献2に開示されるものが知られている。上記スライディングウィンドウを指定する代表的な方法としては、(1)切り取るデータ列の数を指定する方法、そして(2)切り取るデータ列の時間間隔を指定する方法の2種類をあげることができる。例えば、非特許文献1の第二節に示された“Rows 50 Preceding”は50行分のデータを処理対象として切り取る(1)の好適な例であり、そして“Range 15 Minutes Preceding”は15分間分のデータを処理対象として切り取る(2)の好適な例である。データの生存期間は、(1)の場合、50個のデータが到着するまでとなり、(2)の場合、15分間となる。スライディングウィンドウによって切り取られたストリームデータはメモリ上に保持され、クエリ処理に使用される。
しかしながら、ストリームデータは、ネットワーク、デバイス等の状態に起因して、データ到着が遅延する場合がある。例えば、センサノードではネットワークが不通の場合データを送信せず、基地局と通信可能となった場合に纏めて送信する。
公知の方法として、入力ストリームデータの履歴を一定期間保持し、遅延タプル到着時に再実行することで、データを修正・キャンセルする方法が非特許文献3に開示されている。ウィンドウで定められる生存期間よりも大きな期間を設定しておき、その間は入力ストリームデータをすべて保存する。遅延タプルが到着した時点で、保存データおよび遅延タプルを再実行することで正しい処理結果を得る。しかしながら、一定期間の全てのストリームデータの保持は、メモリ量、入力データを用いた再実行時間の増大の引き起こす場合がある。
また、通信遅延により、到着順が入れ替わってしまう現象に対し、レイテンシを記録しておくことで解決するトランザクション処理実施方法が特許文献2に開示されている。しかし、遅延タプルなしでのリアルタイム処理結果出力や、正しい処理結果の再計算を実行することはできない。
ストリームデータ処理システムは、ファイナンシャルアプリケーション、交通情報システム、流通システム、トレーサビリティシステム、センサモニタリングシステム、計算機システム管理に代表される、リアルタイム処理が必要とされる応用に対する適用が期待されている。
米国特許第5,495,600号公報 米国特許出願公開第2006/0282695号明細書Real time event stream processor to ensure up-to-date and accurate result R. Motwani, J. Widom, A. Arasu, B. Babcock, S. Babu, M. Datar, G. Manku, C. Olston, J. Rosenstein, and R. Varma著:"Query Processing, Resource Management, and Approximation in a Data Stream Management System",In Proc. of the 2003 Conf. on Innovative Data Systems Research(CIDR)、[online]、2003年1月、[平成18年10月12日検索]、インターネットURL<http://infolab.usc.edu/csci599/Fall2002/paper/DS1_datastreammanagementsystem.pdf> C. J. Date, Hugh Darwen著:"A Guide to SQL Standard (4th Edition)",米国、Addison−Wesley Professional発行、1996年11月8日発行,ISBN: 0201964260 D.J.Abadi,Y.Ahmad,M.Balazinska,U.Cetintemel,M.Cherniack,J.H.Hwang,W.Lindner,A.S.Makey,A.Rasin,E.Ryvkina,N.Tatbul,Y.Xing,and S.Zdonik,"The design of the Borealis stream processing engine",In Proc. of CIDR 2005,pp.277−289.
ストリームデータ処理では、データ処理の即時性が要求される。しかしながら、ストリームデータの一部のデータ到着が遅延する場合もある。遅延するデータが存在する場合、従来の方法として、
(1)ストリームデータ処理システムに到着した時刻(システムタイムスタンプ)で制御して処理する方法と、
(2)データソースが付与した時刻(アプリケーションタイムスタンプ)で制御して処理する方法、
の2通りがある。上記(1)の方法の場合、システムタイムスタンプは遅延して到着した時刻となり、データソースが付与した時刻が処理に反映されない。そのため、遅延せずに到着した場合に出力されるべき結果が、出力できない問題がある。上記(2)の方法の場合、遅延タプルが到着するまで、処理を開始することができず、リアルタイムに処理結果を出力できない問題がある。そのため、上記(1)、(2)のどちらの方法も用いることができない。
上記より、遅延タプルがある場合も、アプリケーションタイムスタンプを用いてリアルタイムに処理結果を出力することが求められる。その際に、遅延タプルがある状態で出力された処理結果であることも表す必要がある。また、リアルタイムに処理結果を出力する一方で、遅延タプルを到着時に再計算し、正しい処理結果を求めることも必要となる。再計算をせず、遅延タプルを処理しない場合、正しい処理結果が得られない、もしくは本来出力されるべきデータが出力されない問題がある。また、遅延タプルを処理しない場合では、遅延解消後においても集計演算のための内部状態が不正となり、遅延解消後の出力結果も不正となる場合がある。
本発明は上記問題点に鑑みてなされたものであり、本発明の第1の目的は、遅延タプルがある場合も、アプリケーションタイムスタンプを用いてリアルタイムに処理結果を出力することである。また、本発明の第2の目的は、遅延タプルが到着したときに再計算し、正しい処理結果を求めることである。
本発明は、ウィンドウによって生存期間が定義されるデータに対して処理するストリームデータ処理方法において、遅延情報(遅延処理ハートビートタプル)に従い、遅延情報に対応するストリームデータ(1次情報)を除く処理結果を未確定データであることを表すフラグとともにリアルタイム処理結果として即時に出力する。また、遅延情報に対応する1次情報が到着した後に、再計算に必要な途中処理結果を生存期間とともに保持し、遅延情報に対応する1次情報が到着したときには、途中処理結果、および遅延情報に対応する1次情報から正確な処理結果を遅延出力結果として算出する。上記処理を実現するため、ノードからデータが到着しない場合に影響が出るストリームデータを選択、抽出、管理する。また、遅延タプル到着時に遅延処理結果出力、状態のみメンテナンスの切り替えを可能とすることで、保持メモリ量の減少、処理高速化を可能にする。
本発明を適用することにより、ストリームデータが遅延する場合もリアルタイムに処理結果を出力し、遅延情報に対応する1次情報(遅延タプル)の到着時に正確な処理結果を再計算可能なストリームデータ処理を実現することができる。
以下、本発明の実施の形態について説明する。
ここで、ストリームデータ処理システム100のハードウェア環境を図1に示す。ストリームデータ処理システム100は、ひとつの計算機で実行され、演算処理を行うCPU11と、ストリームデータ201やストリームデータ処理のプログラムを格納するメモリ12と、データを格納するディスク装置13と、CPU11とディスク装置13やネットワーク112を接続するインターフェース14を含んでいる。なお、ストリームデータ処理システムが複数の計算機で実行されても構わない。
ストリームデータ201としてストリームデータ処理システム100へ入力されるデータは、温度センサノード101、湿度センサノード102、等のセンサノードがあり、ネットワーク105を介してセンサ基地局108やクレードル109に接続されている。また、RFIDタグ103がネットワーク106を介してRFID(Radio Frequency Identification)リーダー110に接続されている。また、携帯電話104がネットワーク107を介して携帯電話基地局111に接続されている。
ネットワーク112には、前記センサ基地局108と、前記クレードル109と、前記RFIDリーダー110と、前記携帯電話基地局111と、センサネットミドルウェアまたはRFIDミドルウェア等のアプリケーションを実行する中継計算機113と、ストリームデータ処理システム100に対してコマンドを入力する計算機115と、ストリームデータ処理システム100が出力する出力結果250を利用する計算機117が接続される。
センサ基地局108は、温度センサノード101、湿度センサノード102の測定結果(例えば、温度や湿度)を出力し、RFIDリーダー110は読み取ったRFIDタグ103の情報を出力する。携帯電話基地局111は、携帯電話104から受信した情報を出力する。これらの出力がストリームデータ201として、ストリームデータ処理システム100へ入力される。
前記センサ基地局108、前記クレードル109、前記RFIDリーダー110、前記携帯電話基地局111はネットワーク112を介して直接ストリームデータ201が前記ストリームデータ処理システム100に入力されても良いし、中継計算機113で処理をした後に前記ストリームデータ処理システム100に処理済みのストリームデータ201が入力されても構わない。
ここで、詳細は後述するが、前記ストリームデータ201の他に、遅延処理ハートビートタプル(Heart Beat Tuple、以下、HBTとする)202、遅延タプル203、遅延処理解消HBT204も前記ストリームデータ処理システム100に入力される。
また、ユーザ114が操作する計算機115により生成されたコマンド205は、ネットワーク112を介して前記ストリームデータ処理システム100に入力される。
前記ストリームデータ処理システム100で処理された結果であるリアルタイム出力結果250は、ネットワーク112を介してユーザ116が操作する計算機117上に出力される。ここで、詳細は後述するが、計算機117には、前記リアルタイム出力結果250の他に、遅延出力結果251も出力される。
ここで、前記ストリームデータ処理システム100と、前記中継計算機113と、前記計算機115と、前記計算機117とは、パーソナルコンピュータやワークステーションなどの任意のコンピュータシステムで構成され、同一の計算機でも異なる計算機でも構わない。また、前記ユーザ114、前記ユーザ116は同一のユーザでも異なるユーザでも構わない。また、ネットワーク105、106、107、112は、イーサネット(登録商標)、光ファイバ、FDDI(Fiber Distributed Data Interface)、無線等で接続されるローカルエリアネットワーク(LAN)、若しくはLANよりも低速なインターネットを含んだワイドエリアネットワーク(WAN)、若しくは公衆電話網、若しくは将来に渡って発明される類似の技術でも差し支えない。
ここで、上記図1に示した記憶装置15は、メモリ12の所定の領域とディスク装置13の所定の領域から構成される。ストリームデータ201は、主にメモリ12上の記憶装置15に格納され、計算機115、117からの問い合わせに対して高速な検索を可能にする。時々刻々と変化するストリームデータ201を管理するストリームデータ処理システム100は、検索対象となるストリームデータ201をメモリ12上の記憶装置15に格納しておき、検索の用途が済んだストリームデータ201はディスク装置13上の記憶装置15に格納することができる。例えば、ストリームデータ201が温度センサノード101の測定値(温度など)の場合、ユーザ114が計算機115で監視したい測定値は本日の値であり、昨日以前のものは高速に検索できなくても問題は生じない。このため、ストリームデータ処理システム100は本日の測定値をメモリ12上の記憶装置15に格納し、昨日以前の測定値をアーカイブとしてディスク装置13上に格納することができる。ここで、記憶装置15は、メモリ、ディスク、テープ、フラッシュメモリなどのいかなる記憶媒体でも構わない。また、記憶装置15は、複数の記憶媒体から構成される階層構造となっていてもよい。また、記憶装置15は、将来に渡って発明される類似の技術でも差し支えない。
なお、図1では、センサ、RFID、携帯電話の情報に対して処理するセンサモニタリングシステムの例を示したが、ファイナンシャルアプリケーション、交通情報システム、流通システム、トレーサビリティシステム、計算機システム管理に代表されるシステムにおいてもストリームデータ処理システム100を同様に適用することができる。
例えば、株を取り扱うファイナンシャルアプリケーションの場合、株価、出来高を配信する株価配信サーバ(図示省略)がネットワーク105に接続され、ニュースを配信するニュース配信サーバ(図示省略)がネットワーク106に接続され、ネット取引を処理するネット取引サーバ(図示省略)、および各店舗における取引を処理する店舗取引サーバ(図示省略)がネットワーク107に接続されている。また、中継計算機113は、前記ネットワーク105、106、107、およびネットワーク112に接続し、前記配信サーバ、ニュース配信サーバ、ネット取引サーバ、店舗取引サーバから送信される情報を前記ストリームデータ処理システム100が処理可能な形式に変換するサーバとしてもよい。本実施形態では、例えば、ある店舗からの情報送信が遅延した場合も、前記ストリームデータ処理システム100において、処理を継続できる。
図2は本発明の一実施形態が適用されたストリームデータ処理システム100及び関連するシステム構成を示すブロック図である。
図2において、ストリームデータ処理システム100は、センサ基地局108、またはRFIDリーダー110、または中継計算機113上で実行されるアプリケーション122からリアルタイムに送信された情報をストリームデータ201として入力とし、ユーザ114が操作する計算機115上で実行されるアプリケーション121により入力されたコマンド205に基づき、入力されたストリームデータ201を有意な情報に変換して、出力結果250を生成する。ストリームデータ処理システム100は、ユーザ116が操作する計算機117上で実行されるアプリケーション123へ提供するストリームデータ処理を実行する計算機(またはサーバ)である。ストリームデータ201は複数のストリームデータ2011、2012、・・・、201nから構成される。
前記計算機115は、ネットワーク112を介してストリームデータ処理システム100に接続されている。ここで、前記アプリケーション121、前記アプリケーション122、前記アプリケーション123は、同一のアプリケーションでも異なるアプリケーションでも構わない。
ここで、本実施形態で扱うストリームデータ201は、映像や音声の配信で用いられるストリームとは異なり、ひとつのストリームデータが有意な情報に対応するものである。また、ストリームデータ処理システム100がセンサ基地局108、またはRFIDリーダー110、または中継計算機113上で実行されるアプリケーション122から受信するストリームデータ201は、連続的あるいは間欠的であり、ストリームデータ201毎に異なる種類の情報や異なる要素が含まれる。
ストリームデータ処理システム100は、コマンド入力部210、問合せ管理部220、問合せ実行部230から構成される。
コマンド入力部210は、前記ユーザ114が操作する前記計算機115上で実行されるアプリケーション121により入力されたコマンドを受け付ける。次に、問合せ管理部220は、前記コマンド入力部210で受け付けたコマンドから前記ストリームデータ201を有意な情報に変換する処理内容を、「問い合わせ」として管理する。次に、問合せ実行部230は、前記コマンド入力部210で受け付け、前記問合せ管理部220で管理している「問い合わせ」に基づいて、ストリームデータ201の情報を有意な情報(ユーザ114が理解可能な情報)に変換してから出力する。
図2において、本発明の概要を説明する。ストリームデータ処理システム100は、ユーザ114が操作する計算機115上で実行されるアプリケーション121が入力した問合せに基づいて、問合せ実行部230が前記ストリームデータ201を読み出し、有意な情報に変換した後、リアルタイム出力結果250を計算機115に出力する。ここで、有意な情報とは、例えば、図1に示した温度センサノード101の測定値は、バイナリ値のままではユーザ114、116が理解できないので、所定の単位系を加えた数値に変換した情報である。
また、前記ストリームデータ201が遅延して到着する場合、ストリームデータ処理システム100は、遅延処理HBT202をセンサ基地局108、またはRFIDリーダー110、または中継計算機113上で実行されるアプリケーション122から受信する。
例えば、温度センサノード101が所定の周期で測定したデータをストリームデータ201として送信する場合、センサ基地局108は、所定の周期になっても温度センサノード101からストリームデータ201を受信できない場合には、ストリームデータ処理システム100に対して、温度センサノード101のハートビートを示す遅延処理HBT202を送信する。なお、センサ基地局108は、遅延処理解消HBT202をストリームデータ201に含める形式で送信する。
この遅延処理HBT202は、ストリームデータ処理システム100で処理を進めるためのダミーデータであり、例えば、温度センサノード101のIDとアプリケーションタイムスタンプなどを含むタプルである。なお、センサ基地局108は、温度センサノード101の動作設定を行う際に、計算機115等から測定周期(または起動周期)を受信して温度センサノード101に指令する。このときセンサ基地局108は温度センサノード101のIDとともに測定周期を記憶しておく。
センサ基地局108は、ストリームデータ201の遅延が発生すると、上記遅延処理HBT202をストリームデータ処理システム100へ送信し、温度センサノード101からのストリームデータ201を待つ。センサ基地局108は、温度センサノード101から受信したストリームデータ201が遅延タプル203か否かを管理し、遅延して到着したストリームデータ201を受信すると、このストリームデータ201を遅延タプル203としてストリームデータ処理システム100へ転送する。
センサ基地局108は、遅延タプル203が全て到着すると、ストリームデータ処理システム100へ遅延処理解消HBT204を送信する。この遅延処理解消HBT204は、遅延タプル203がなくなったことを示すダミーデータであり、ストリームデータ201に含める形式で送信される。なお、センサ基地局108は、温度センサノード101から受信したストリームデータ201が測定周期からはずれた場合に遅延処理HBT202をストリームデータ処理システム100へ送信し、測定周期からはずれたストリームデータ201が温度センサノード101から入力され、再び測定周期に戻った場合に遅延処理解消HBT204をストリームデータ処理システム100へ送信する。
なお、上記では、温度センサノード101とセンサ基地局108について、遅延処理HBT202と遅延タプル203及び遅延処理解消HBT204をストリームデータ処理システム100へ送信する例を示したが、RFIDリーダー110や中継計算機113上で実行されるアプリケーション122も上記センサ基地局108と同様の処理を行う。
ストリームデータ処理システム100は、遅延処理HBT202を受信した後に、実際のストリームデータ201として遅延タプル203を受信し、全ての遅延タプル203を受信すると、遅延処理解消HBT204を受信することになる。
ストリームデータ処理システム100の前記問合せ実行部230は、遅延処理HBT202を受信したときに、遅延して到着するデータなしで問合せを実行し、リアルタイム出力結果250を出力する。すなわち、計算機117からある期間のストリームデータ201を要求するコマンド(処理要求)を受信したとき、遅延処理HBT202を受信して遅延処理解消HBT204を受信していなければ、既に受信済のストリームデータ201のみで問い合わせを処理する。また、問い合わせ実行部230は、前記遅延タプル203を受信したときに、遅延なしで到着していた場合に出力されるべき問合せ実行結果を遅延出力結果251として計算機117へ出力する。これにより、遅延タプル203が未到着の場合もリアルタイムに処理結果(リアルタイム処理結果250)を出力し、遅延タプル203の到着後に正確な処理結果を再計算可能なストリームデータ処理が可能となるのである。
以下では、前記ストリームデータ処理システム100の構成を詳細に説明する。
コマンド入力部210は、ユーザ114が操作する計算機115上で実行されるアプリケーション121から入力されるコマンド205を受け付けるインターフェース(以下、I/F)を備える。前記コマンドがストリームデータ201、若しくは問合せに係るコマンドの場合、コマンド入力部210は問合せ管理部220にコマンドの内容を出力する。
問合せ管理部220は、ストリームデータ設定部221、ストリームデータ管理テーブル222、問合せ設定部223、問合せ管理テーブル224から構成される。ストリームデータ設定部221は、前記コマンド入力部210から入力された前記ストリームデータを登録または変更するコマンドを表すストリームデータ登録・変更コマンドを受け付け、ストリームデータ管理テーブル222を更新する。ストリームデータ管理テーブル224は、前記ストリームデータ設定部221で設定された情報を後述するように保持するテーブルである。
問合せ設定部223は、前記コマンド入力部210から入力された前記問合せを登録または変更するコマンドを表す問合せ登録・変更コマンドを受け付け、問合せ管理テーブル224を更新する。また、前記問合せコマンドに対応するストリームデータ201の処理内容を表す実行木241を生成または変更する。なお、問合せ設定部223は、生成した実行木241を問い合わせ実行部230に送信し、問い合わせ実行領域240へ格納させる。問合せ管理テーブル224は、前記問合せ設定部223で設定された情報を後述するように保持するテーブルである。
問合せ実行部230は、問合せ実行木スケジューラ231、時間順ソート部232、遅延処理HBT検知部233、未確定フラグ付与部234、結果復元タプル保持部235、遅延タプル検知部236、遅延タプル再計算部237、遅延処理解消HBT検知部238、問合せ実行領域240から構成される。
問合せ実行領域240は実行木241、ウィンドウデータ領域242、一時保存領域243、結果復元タプル領域244から構成され、実行木241は、複数の実行木2411、2412、・・・、241nから構成される。
実行木241は、ストリームデータ201を処理する内容を表したもので、ウィンドウ演算、選択演算、射影演算、結合演算、集計演算等の処理モジュールが木構造になっている。実行木241は、前記問合せ設定部223により生成される。ウィンドウデータ領域242は、ウィンドウ演算によって切り取られたストリームデータ201を保持する領域である。一時保存領域243は、結合演算、集計演算等をする場合に使用する一時的なデータ保存領域である。
問合せ実行木スケジューラ231は、前記実行木241の実行順序を制御する。時間順ソート部232は、前記ストリームデータ201をアプリケーションタイムスタンプ順にソートして、問合せ実行領域240に入力する。なお、アプリケーションタイムスタンプは、温度センサノード101や湿度センサノード102 、携帯電話104、RFIDリーダ110、センサ基地局108等でストリームデータ201に付与された時刻を示す。
遅延処理HBT検知部233は、前記入力ストリームデータ201に、前記遅延処理HBT202が含まれる場合に検知する。
未確定フラグ付与部234は、遅延処理HBT202を受信したときに、遅延して到着するストリームデータ201なしで問合せを実行した結果の全部、若しくは遅延するストリームデータ201があることにより、正しく演算できない可能性のあるストリームデータ201について、処理結果が確定しておらず、後に再計算される可能性があることを表す未確定フラグを付与し、遅延して到着した遅延タプル203により再計算し、処理結果が確定したことを表す確定フラグを付与する。
結果復元タプル保持部235は、前記遅延タプル203が到着したときに、この遅延タプル203及び前記結果復元タプル領域244のデータから正しい演算結果を再計算するために必要なタプルを後述する結果復元タプル領域244に格納する。
遅延タプル検知部236は、前記ストリームデータ201に、前記遅延タプル203が含まれる場合に検知する。遅延タプル再計算部237は、前記遅延タプル203が到着したときに、この遅延タプル203及び前記結果復元タプル領域244のデータから正しい演算結果を再計算する。遅延処理解消HBT検知部238は、前記入力ストリームデータ201に、前記遅延処理解消HBT204が含まれる場合に検知する。
ここで、前記ストリームデータ201、遅延処理HBT202、遅延タプル203、遅延処理解消HBT204、リアルタイム出力結果250、遅延出力結果251は、タプル形式(レコード形式)、XML形式、CSVファイル等のいかなるデータ形式でもよい。以下では、タプル形式を用いる例を説明する。また、前記ウィンドウデータ領域242、一時保存領域243、結果復元タプル領域244に保持するデータは、タプル形式(レコード形式)、XML形式、CSVファイル等のいかなるデータ形式でもよい。以下では、タプル形式を用いる例を説明する。
また、前記ストリームデータ201、遅延処理HBT202、遅延タプル203、遅延処理解消HBT204、リアルタイム出力結果250、遅延出力結果251は、データの実体を持つ必要はなく、データの一部、若しくは全部をデータの実体を指し示すポインタを含んでいても構わない。また、前記ウィンドウデータ領域242、一時保存領域243、結果復元タプル領域244に保持するデータは、データの実体を持つ必要はなく、データの一部、若しくは全部をデータの実体を指し示すポインタを含んでいても構わない。
前記ストリームデータ201が前記RFIDリーダー110、センサ基地局108、中継計算機113により、アプリケーションタイムスタンプが時刻順に並ぶことが保証される場合、前記時間順ソート部232はなくても構わない。また、前記時間順ソート部232は、前記問合せ実行木241において、前記ストリームデータ201に和集合演算等を行う問合せによって同等の機能を実現してもよい。
図3a、図3bは、ストリームデータ201の好適なデータフォーマットの例を模式的に表した図である。図示の例では、それぞれ、図3aにおいて温度センサノード101が出力した温度ストリームデータ(S1)2011を示し、図3bにおいて湿度センサノード102が出力した湿度ストリームデータ(S2)2012を示す。
図3aの温度ストリームデータ(S1)2011はレコード形式であり、レコードを構成するアプリケーションタイムスタンプカラム301と、温度センサIDカラム302と、機器IDカラム303と、温度カラム304と、システムタイムスタンプカラム305がセグメントに相当し、前記アプリケーションタイムスタンプカラム301と、前記温度センサIDカラム302と、前記機器IDカラム303、前記温度カラム304、前記システムタイムスタンプカラム305の組み合わせをタプル306とする。
ここで、前記アプリケーションタイムスタンプカラム301の値は、前記温度ストリームデータ(S1)2011が前記ストリームデータ処理システム100に入力される前に付与された時刻情報であり、前記温度センサ101、または前記センサ基地局108、または前記中継計算機113で実行センサネットミドルウェア等のアプリケーションが付与する。また、前記システムタイムスタンプカラム305の値は、前記温度ストリームデータ(S1)2011が前記ストリームデータ処理システム100に入力された場合に、前記ストリームデータ処理システム100が前記ストリームデータ処理システム100に到着した時刻情報を付与する。
なお、前記アプリケーションタイムスタンプカラム301、前記システムタイムスタンプカラム305は、いずれか一方のみ保持していても、両方保持していてもよい。以下の例では、前記タプル306には、前記アプリケーションタイムスタンプ301のみが含まれるもとし、前記システムタイムスタンプ305は、必要に応じて到着時刻として設定される。
図3bの湿度ストリームデータ(S2)2012はレコード形式であり、レコードを構成するアプリケーションタイムスタンプカラム311、湿度センサIDカラム312、機器IDカラム313、湿度カラム314、システムタイムスタンプカラム315がセグメントに相当し、前記アプリケーションタイムスタンプカラム311、前記湿度センサIDカラム312、前記機器IDカラム313、前記湿度カラム314、前記システムタイムスタンプカラム315の組み合わせをタプル316とする。
ここで、前記アプリケーションタイムスタンプカラム311の値は、前記湿度ストリームデータ(S2)2012が前記ストリームデータ処理システム100に入力される前に付与された時刻情報であり、前記湿度センサノード02、または前記センサ基地局108、または前記中継計算機113で実行されるセンサネットミドルウェア等のアプリケーションが付与する。また、前記システムタイムスタンプカラム315の値は、前記湿度ストリームデータ(S2)2012が前記ストリームデータ処理システム100に入力された場合に、前記ストリームデータ処理システム100が前記ストリームデータ処理システム100に到着した時刻情報を付与する。
なお、前記アプリケーションタイムスタンプカラム311、前記システムタイムスタンプカラム315は、いずれか一方のみ保持していても、両方保持していてもよい。以下の例では、前記タプル316には、前記アプリケーションタイムスタンプ311のみが含まれるもとし、前記システムタイムスタンプ315は、必要に応じて到着時刻として設定する。
図4は、前記コマンド入力部210において、前記ストリームデータ処理システム100に前記ストリームデータ201を登録または設定する際の好適なコマンドの記述例である。
ストリーム登録コマンド411は、前記ユーザ114が操作する前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210へ入力され、前記ストリームデータ設定部221において登録される。ストリーム登録コマンド411は、前記温度ストリームデータ(S1)2011が整数型(int型)を保持する温度センサIDと、整数型(int型)を保持する機器IDと、浮動小数点型(double型)を保持する温度と、から構成されるストリームデータを登録するコマンドであることを表している。これらは、前記図3a、図3bに示した前記温度センサIDカラム302、前記機器IDカラム303、前記温度カラム304、にそれぞれ対応する。
本実施例では、前記アプリケーションタイムスタンプカラム301は、自動的に含まれるものとしているが、前記ストリーム登録コマンド411において、「register stream 温度ストリーム (アプリケーションタイムスタンプ timestamp、温度センサID int、機器ID int、温度 double);」のように明示的に指定してもよい。前記システムタイムスタンプカラム305も、前記アプリケーションタイムスタンプカラム301と同様に扱うことができる。
ここで、本実施形態では、コマンドをコマンドラインインターフェース(CLI)形式で登録した例を表したが、これに限定されるものではない。例えば、グラフィックユーザーインターフェース(GUI)を用いて上記と同様の意味の入力をしてもよい。以下のコマンドにおいても同様とする。
図5は、ストリーム管理テーブル224の構成例を表した図である。
ストリーム名カラム401、ストリームスキーマカラム402には、それぞれ、前記コマンド入力部210において登録されたストリームデータ201の名前、及び登録されたストリームスキーマを格納する。
登録者名カラム403、登録日時カラム404にはそれぞれ、ストリーム登録時に取得したストリーム登録コマンドを実行した登録者名と、登録日時とが格納され、システムのアクセス管理、セキュリティ管理に使用される。
例えば、行405は、図4に示したストリーム登録コマンド411を登録した場合のストリーム管理テーブル224を表している。
行405は、ストリーム名カラム401の値が「温度ストリームS1」、ストリームスキーマカラム402の値が「温度センサID int、機器ID int、温度 double」、登録者名カラム403の値が「樫山」、登録日時カラム404の値が「2007/09/20 13:07:26 JST」であることを表している。
ここで、ストリームデータを登録・設定を入力するI/Fは、図4に示したコマンド形式、図5に示した表形式の他に、グラフィックユーザーインターフェース(GUI)によるパラメータ入力、設定ファイルによる入力、XMLファイルによる入力など任意の形式でよい。以下のテーブルにおいても、同様とする。
図6は、連続してストリームデータ処理システム100へ入力されたストリームデータ201を例示した図であり、温度ストリームデータ(S1)2011を表している。
温度ストリームデータ2011において、表の1行が前記図3a、図3bに示したタプル306に対応し、各タプルのデータ生成時間を表すアプリケーションタイムスタンプカラム301、温度センサIDカラム302、機器IDカラム303、温度カラム304から構成される。
例えば、行501は、アプリケーションタイムスタンプカラム301の値が「9:00」、温度センサIDカラム302の値が「1」、機器IDカラム303の値が「1」、温度カラム314の値が「20(20.0)」であるタプルであることを表している。
以下では、前記遅延タプルが発生する場合を想定する。ここでは、タプル509、タプル514、タプル519がアプリケーションタイムスタンプカラム301の時刻には到着せず、9:05に遅延してまとめて到着する。以下では、遅延して到着したタプル521、522、523を遅延タプル203とする。
ここで、本実施形態では、タイムスタンプを「9:00」のような時間、及び分の形式で表しているが、「2007/9/21 9:00:00 JST」のような日付、及び
秒を含めた形式に代表される他の形式でもよい。以下の図においても、同様とする。
図7は、連続してストリームデータ処理システム100へ入力されたストリームデータ201を例示した図であり、湿度ストリームデータ(S2)2012を表している。
湿度ストリームデータ2012において、表の1行が前記タプル316に対応し、各タプルのデータ生成時間を表すアプリケーションタイムスタンプカラム311、湿度センサIDカラム312、機器IDカラム313、湿度カラム314から構成される。
例えば、行601は、アプリケーションタイムスタンプカラム311の値が「9:00」、湿度センサIDカラム312の値が「1」、機器IDカラム313の値が「1」、湿度カラム314の値が「60(60.0)」であるタプルであることを表している。
図8は、コマンド入力部210において、前記ストリームデータ処理システム100に問合せ登録コマンドを登録または設定する際の好適なコマンドの記述例である。
問合せ登録コマンド711は、前記ユーザ114、または前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記問合せ設定部223において登録される。
問合せ登録コマンド711は、前記温度ストリーム(S1)2011において温度センサIDごとの最新の1個([Partition by S1 温度センサID rows 1])、及び前記湿度ストリーム(S2)2012の過去2分間([Range 2 minute])に対して、前記温度ストリーム(S1)2011の温度が20度以上である条件(S1.温度>=20)と、前記湿度ストリーム(S2)2012の湿度が60%以上である条件(S2.湿度>=60)とを満たし、前記温度ストリーム(S1)2011の温度センサIDと、前記湿度ストリーム(S2)2012の湿度センサIDとが一致する場合に、前記温度ストリーム(S1)2011のタプルと前記湿度ストリーム(S2)2012のタプルを結合し(WHERE S1.温度センサID=S2.湿度センサID)、機器IDごとに(GROUP BY 機器ID)温度の平均値(Avg(S1.温度))、及び湿度の平均値(Avg(湿度))を計算し、温度センサID、温度の平均値、湿度の平均値のタプルの増分のみをストリーム化して(ISTREAM)、出力する処理を表す問合せであることを表している。
図9は、問合せ管理テーブル224の構成例を表した図である。
問合せ名カラム701、問合せカラム702には、それぞれ、前記コマンド入力部210において登録された問合せの名前、及び登録された問合せを格納する。
問合せ実行形式格納先カラム703には、問合せの実行形式の格納先のアドレス(ポインタ)を格納する。実行形式を予め作成しておくことにより、クエリの実行のたびにコンパイルを行うオーバーヘッドを削減できる。このアドレスは、例えば図1に示した前記メモリ12上の格納位置を指し示す。
登録者名カラム704、登録日時カラム705にはそれぞれ、問合せ登録コマンド実行時に取得した問合せの登録者名、問合せの登録日時が格納され、ストリームデータ処理システム100のアクセス管理、セキュリティ管理に使用される。
例えば、行706は、図8に示した問合せ登録コマンド711を登録した場合の登録問合せ管理テーブル224を表している。
行706は、問合せ名カラム701の値が「Q1」、問合せカラム702の値が「ISTREAM ( SELECT S1.温度センサID、Avg(S1.温度)、Max(温度) FROM 温度ストリーム[Partition by S1 温度センサID rows 1] As S1、湿度ストリーム[Range 2 minute] As S2 WHERE S1.温度センサID=S2.湿度センサID and S1.温度>=20 and S2.湿度>=60 GROUP BY 機器ID );」、問合せ実行形式格納先カラム703の値が「0x7FFFAEE1」、登録者名カラム704の値が「樫山」、登録日時カラム705の値が「2007/09/20 13:07:26 JST」であることを表している。
図10は、問合せ実行領域240の実行木241の一例を表した説明図である。
実行木241は、図8に示した前記問合せ登録コマンド711が実行された場合に、図2に示した問合せ設定部223により生成される実行木241を表している。実行木241は、処理を行う実行モジュールであるオペレータ、及びオペレータ間をつなぐキュー801から構成される。
本図では、左端が入力で右端が出力となっている。入力タプルとして、ストリームデータ201を入力する。また、遅延タプルがある場合、遅延処理HBT202、遅延タプル203も同様に入力される。実行木241の問合せの処理結果はリアルタイム出力結果250として出力する。遅延タプルがある場合、遅延出力結果251も同様に出力される。リアルタイム出力結果250、遅延処理HBT202、遅延出力結果251をそれぞれ、別のストリームデータ201、遅延処理HBT202、遅延タプル203として再入力することも可能である。
オペレータは、処理内容によって種類が異なる。ウィンドウオペレータ802、803は、前記ストリームデータ201からデータ列の数を指定し、または、切り取るデータ列の時間間隔を指定してデータ列を切り取り、ストリームデータ201をタプル集合へと変換する処理を行う。
ウィンドウオペレータ802、803で切り取られたデータは、ウィンドウデータ領域811、812に保持される。選択オペレータ804、805は、予め設定された条件に基づいて図3a、図3bに示した前記タプル306、316を出力するか否かを決定する処理を行う。結合オペレータ806は、2入力以上のストリームデータ201をある条件のもとに結合する処理を行う。集計オペレータ807は、合計、平均、最大、最小、個数、分散、標準偏差、中央値などの導出で代表される集計処理を行う。ストリーム化オペレータ808は、タプル集合をストリームデータ201へと変換する処理を行う。図10に示したオペレータ以外に、前記タプル203のカラムの一部のみを出力する処理を行う射影オペレータ等がある。
図10は、前記図8に示した前記問合せ登録コマンドが実行された場合に、図2に示した問合せ設定部223により生成される実行木241を表している。実行木2411は、温度ストリームデータ2011、湿度ストリームデータ2012を入力とする。ウィンドウオペレータ802は、温度ストリームデータ2011の温度センサIDごとの最新1個([Partition by S1 温度センサID rows 1])を、ウィンドウデータ領域2421に保持し、ウィンドウに新たに入ったタプル、およびウィンドウから出たタプルを選択オペレータ804に出力する。
ウィンドウオペレータ803は、湿度ストリームデータ2012の過去2分間([Range 2 minute])を、ウィンドウデータ領域2422に保持し、ウィンドウに新たに入ったタプル、およびウィンドウから出たタプルを選択オペレータ805に出力する。
選択オペレータ804は、前記ウィンドウオペレータ802が出力したタプルに対して、温度が20度以上である条件(S1.温度>=20)を満たすタプルを結合オペレータ806に出力する。
選択オペレータ805は、前記ウィンドウオペレータ803が出力したタプルに対して、湿度が60%以上である条件(S2.湿度>=60)を満たすタプルを結合オペレータ806に出力する。
結合オペレータ806は、前記選択オペレータ804が出力したタプルの温度センサIDと、前記選択オペレータ805が出力したタプルの湿度センサIDとが一致する場合に、それぞれのタプルを結合し(WHERE S1.温度センサID=S2.湿度センサID)、集計オペレータ807に出力する。なお、詳細は例を用いて説明するが、結合オペレータ806は、結合対象のタプルを選択するため、一時保存領域2431、2432に前記選択オペレータ804、前記選択オペレータ805の出力したタプルを保持する。また、詳細は後述するが、遅延処理HBT2021が到着した以降、結果復元タプル領域2441、2442に、処理結果を再計算するためのタプルを保持する。なお、一時保存領域2431、2432、結果復元タプル領域2441、2442に保持するタプルは、データの実体であっても、ウィンドウデータ領域2421、2422へのポインタを含むデータであっても構わない。
集計オペレータ807は、前記結合オペレータ806の出力タプルに対して、機器IDごとに(GROUP BY 機器ID)温度の平均値(Avg(S1.温度))、及び湿度の平均値(Avg(湿度))を計算し、温度センサID、温度の平均値、湿度の平均値をストリーム化オペレータ808に出力する。なお、詳細は後述するが、集計オペレータ807は、一時保存領域2433に集計値を算出するためのタプルを保持する。また、詳細は後述するが、遅延処理HBT2021が到着した以降、結果復元タプル領域2443に、処理結果を再計算するためのデータを保持する。
ストリーム化オペレータ808は、前記集計オペレータ807の出力タプルの増分のみをストリーム化して(ISTREAM)リアルタイム出力結果2501として出力する。また、詳細は後述するが、遅延処理HBT2021が到着した以降、遅延処理HBT2021、および再計算した処理結果である遅延出力結果2511も同様に出力する。
図11は、ストリームデータ処理システム100の全体処理を表したフローチャートである。
まず、図2に示した前記遅延処理HBT検知部238において、到着タプル(ストリームデータ201)が遅延処理解消HBT204か否かを判定する(S2002)。前記ステップS2002でYESと判定された場合は、遅延タプル203が全て到着しているので、遅延処理HBT202、および遅延タプル203が存在しない場合の通常処理をする通常処理モードに変更する(S2003)。前記ステップS2002でNOと判定された場合は、図2に示した前記遅延処理HBT検知部233において、到着タプルが遅延処理解消HBT204か否かを判定する(S2005)。
前記ステップS2005でYESと判定された場合は、遅延処理HBT202、および遅延タプル203が存在する場合の処理をする遅延処理モードに変更する(S2006)。前記ステップS2005でNOと判定された場合、または前記ステップS2003が終了した場合、または前記ステップS2006が終了した場合は、遅延処理モードか否かを判定する(S2008)。
前記ステップS2008でNOと判定された場合は、前記遅延処理HBT202、および遅延タプル203が存在しない場合の通常処理をする(S2012)。前記ステップS2008でYESと判定された場合は、図2に示した前記遅延タプル検知部236において、到着タプルが遅延タプル203であるか否かを判定する(S2009)。
前記ステップS2009でNOと判定された場合は、遅延タプル203を除く処理結果を未確定フラグとともに出力すると同時に、ストリームデータ201の再生(再計算)に必要な途中処理結果を所定の生存期間とともに保持する(S2010)。前記ステップS2010の詳細な処理内容は図13で後述する。前記ステップS2009でYESと判定された場合は、途中処理結果、および遅延タプルから正確な処理結果を算出する(S2011)。
前記ステップS2010、S2011、S2012が終了した場合、前記ストリームデータ処理システム100を終了させるコマンドを受け付けたか判定する(S2013)。
前記ステップS2013でNOと判定された場合は、前記ステップS2002に戻り、前記ステップS2013でYESと判定された場合は、前記ストリームデータ処理システム100を終了する。
以下では、図10に示した実行木2411に対して、図6に示した温度ストリームデータ2011、図7に示した湿度ストリームデータ2012をストリームデータ処理システム100へ入力したときの処理を説明する。
図12a、図12bは、図11において、遅延処理HBT202、および遅延タプル203が入力されない場合の通常処理(前記ステップS2012)の結果を示すタイムチャートである。
タプル901からタプル916までは、温度ストリームデータ2011に対して、ウィンドウオペレータ802、選択オペレータ804で処理が行われた結果を表している。ここで、黒丸と、白丸と、それらを結ぶ線とにより、各タプルの所定の生存期間(この例では、60秒)を表している。例えば、タプル901は、(温度センサID、機器ID、温度)=(1、1、20)であり、生存期間が9:00から9:01までであることを表している。なお、黒丸は当該時刻を含み、白丸は当該時刻を含まない。
タプル901は、ウィンドウオペレータ802において、タプル905が到着したときに、温度センサIDごとの最新1個([Partition by S1 温度センサID rows 1])で切り取られるウィンドウにおいて、生存期間が9:00から9:01まであることが決定する。生存期間を表すため、タプルの生存期間開始時にタプルの生存期間が開始したことを表すプラスタプルを出力し、タプルの生存期間終了時にタプルの生存期間が終了したことを表すマイナスタプルを出力する。なお、本方法以外に、タプルに生存期間終了を埋め込んで処理する等、上記生存期間を表す方式はいかなる方式でも構わない。なお、マイナスタプル、プラスタプルについては、例えば、「Efficient Execution of SlidingWindow Queries Over Data Streams」(www.cs.purdue.edu/homes/aref/papers/StreamQueryProcessing-TechReport2003.pdf)に記載されるNegative Tuple等と同様である。
図6に示したタプル501、502、503、504は、それぞれ、図12aに示すタプル901、902、903、904に対応する。図6のタプル505は、温度が20度以上である条件(S1.温度>=20)を満たさないため、選択オペレータ804において破棄される。
タプル921からタプル928までは、図7に示した湿度ストリームデータ2012に対して、ウィンドウオペレータ803、選択オペレータ805で処理が行われた結果を表している。
図7のタプル601は、ウィンドウオペレータ803において、過去2分間([Range 2 minute])で切り取られるウィンドウにおいて、生存期間が9:00から9:02までとなる。図7に示したタプル601、602、603、604は、それぞれ、図12aのタプル921、922.923、924に対応する。図7のタプル605は、湿度が60%以上である条件(S2.湿度>=60)を満たさないため、選択オペレータ805において破棄される。
次に、図12a、図12bにおいて、タプル901からタプル916までと、タプル921からタプル928までとを、結合オペレータ806で処理した結果が、タプル931からタプル946までとなる。
結合オペレータ806は、温度センサIDと、前記選択オペレータ805が出力したタプルの湿度センサIDとが一致する場合に、それぞれのタプルを結合(WHERE S1.温度センサID=S2.湿度センサID)する。よって、タプル901、およびタプル921が到着した場合に、タプル901の温度センサID(1)とタプル921の湿度センサID(1)が一致するため、タプル901とタプル921とを結合し、(温度センサID、機器ID、温度、湿度センサID、機器ID、湿度)=(1、1、20、1、1、60)であるタプル931を生成する。なお、タプル901の生存期間が9:01で終了するため、結合したタプル931の生存期間も9:01で終了する。
ここで、上記に示したように、結合対象のタプルを選択するため、一時保存領域2431、2432に前記選択オペレータ804、前記選択オペレータ805の出力したタプルを保持する。範囲961に示したタプル群が一時保存領域2431に保持される。例えば、9:00:30においては、タプル901、902、903、904が一時保存領域2431に保持される。同様に、範囲962に示したタプル群が一時保存領域2432に保持される。
次に、タプル931からタプル946までを、集計オペレータ807で処理した結果が、タプル951からタプル958までとなる。
集計オペレータ807は、機器IDごとに(GROUP BY 機器ID)温度の平均値(Avg(S1.温度))、及び湿度の平均値(Avg(湿度))を計算し、温度センサID、温度の平均値、湿度の平均値を出力する。よって、9:00において、タプル931、およびタプル932の機器IDが1であるために、タプル931、およびタプル932の温度の平均値(20+24)/2=22が計算され、同様に湿度の平均値(60+64)/2=62が計算され、最終的に(機器ID、温度の平均値、湿度の平均値)=(1、22、62)であるタプル951が出力される。また、タプル933、およびタプル934の機器IDが2であるために、タプル952が出力される。
本実施形態では、平均値を求める場合に、合計値、母数を保持し、タプル932が入力される前の状態で、合計値:60、母数:1に対して、タプル932が入力された場合に、(合計値+24)/(母数+1)=(20+24)/(1+1)=22と、差分計算する。ここで、各機器IDと、合計値、機器IDの組が一時保存領域2433に保持される。差分計算をせずに、タプル931からタプル946までを一時保存領域2432に保持しても構わない。平均値(Avg)以外にも、合計値(Sum)、個数(Count)等でも差分計算することができる。
ここで、集計演算では、ゴーストと呼ばれる生存開始と生存終了のタイムスタンプが同一であり、生存期間がないタプルが生成されることがある。例えば、タイムスタンプ「9:01」において、タプル931のマイナスタプルが到着した場合に、温度の平均値はタプル932の平均となるため「24」となり、タプル935が到着した場合に、タプル935とタプル932の平均となるため「22.5」となり、タプル932のマイナスタプルが到着した場合に、タプル935の平均となるため「21」となり、タプル936が到着した場合に、タプル935とタプル936の平均となるため「23」となる。上記に示した温度の平均値「24」、「22.5」、「21」は、生存期間がないタプルとなる。ゴーストはそのまま出力しても、集計オペレータ内で除去しても構わない。図12a、図12bでは、ゴーストを省略して表している。以下の図も同様とする。
図13は、図11に示した前記ステップS2010の処理を表したフローチャートである。
まず、処理対象のオペレータがウィンドウオペレータ802、803か否かを判定する(S2102)。前記ステップS2102でYESと判定された場合は、遅延モードのウィンドウオペレータ802、803の処理をし(S2103)、処理を終了する(S2109)。前記ステップS2103の処理の詳細内容は図14で後述する。前記ステップS2102でNOと判定された場合は、処理対象のオペレータが結合オペレータ806か否かを判定する(S2104)。
前記ステップS2104でYESと判定された場合は、遅延モードの結合オペレータ806の処理をし(S2105)、処理を終了する(S2109)。前記ステップS2105の処理の詳細内容は図15で後述する。前記ステップS2104でNOと判定された場合は、処理対象のオペレータが集計オペレータ807か否かを判定する(S2106)。
前記ステップS2106でYESと判定された場合は、遅延モードの集計オペレータ807の処理をし(S2107)、処理を終了する(S2109)。前記ステップS2107の処理の詳細内容は図16で後述する。前記ステップS2106でNOと判定された場合は、遅延処理HBT202、および遅延タプル203が存在しない場合の通常処理をし(S2108)、処理を終了する(S2109)。
図14は、図13に示した前記ステップS2106の遅延モードのウィンドウ処理を表したフローチャートである。
まず、ウィンドウオペレータ802、803が時間ウィンドウ(range window)か否かを判定する(S2202)。前記ステップS2202でNOと判定された場合は、ウィンドウオペレータ802、803が行ウィンドウ(row window)オペレータか否かを判定する(S2203)。
前記ステップS2203でYESと判定された場合は、前記未確定フラグ付与部234において、到着タプルに対して未確定フラグを付与する(S2204)。次に、前記結果復元タプル領域244に、ウィンドウ用一時保存データを生存期間とともに格納する(S2205)。前記ステップS2203でNOと判定された場合は、ウィンドウオペレータ802、803がグループ別行ウィンドウ(partition by window)で、かつ到着タプルのグループ別ウィンドウのグループ化キーが遅延処理HBT202のグループ別ウィンドウのグループ化キーと同一であるか否かを判定する(S2206)。前記ステップS2206でYESと判定された場合は、前記未確定フラグ付与部234において、到着タプルに対して未確定フラグを付与する(S2207)。
前記ステップS2205が終了した場合、または前記ステップS2207が終了した場合、または前記ステップS2202でNOと判定された場合、または前記ステップS2206でNOと判定された場合は、マイナスタプル、およびプラスタプルをそのまま出力し(S2208)、処理を終了する(S2209)。
以上の処理により、遅延モードのウィンドウ処理では、グループ別行ウィンドウで、かつ到着タプルのグループ別ウィンドウのグループ化キーが遅延処理HBT202のグループ別ウィンドウのグループ化キーと同一のときに未確定フラグが付与され、遅延タプル203が存在することを示す。
図15は、図13に示した前記ステップS2108の通常処理を表したフローチャートである。
まず、前記一時保存領域243を参照し、結合対象の結合用一時保存データを取得する(S2302)。次に、到着タプルが未確定フラグ付きの結合用一時保存データと結合するか否かを判定する(S2303)。前記ステップS2303でNOと判定された場合は、到着タプルが未確定フラグ付きのタプルであるか否かを判定する(S2304)。
前記ステップS2303でYESと判定された場合、または前記ステップS2304でYESと判定された場合は、前記未確定フラグ付与部234において、結合結果に未確定フラグを付与する(S2305)。
次に、前記結果復元タプル領域244に、結合用一時保存データを生存期間とともに格納し(S2306)、結合結果を出力し(S2307)、処理を終了する(S2308)。
前記ステップS2304でNOと判定された場合、結合結果を出力し(S2307)、処理を終了する(S2308)。
以上の処理により、通常処理では、到着タプルと結合するタプルに未確定フラグがあれば、結合結果に未確定フラグを付与して、遅延タプル203が存在するタプルと結合していることを示す。
図16は、図13に示した前記ステップS2107の遅延モード集計オペレータ処理を表したフローチャートである。
まず、前記一時保存領域243を参照し、集計対象の集計用一時保存データを取得する(S2402)。次に、該取得した集計用一時保存データに未確定フラグが付与されているか否かを判定する(S2403)。前記ステップS2403でNOと判定された場合は、到着タプルが未確定フラグ付きのタプルであるか否かを判定する(S2404)。
前記ステップS2403でYESと判定された場合、または前記ステップS2404でYESと判定された場合は、前記未確定フラグ付与部234において、集計結果に未確定フラグを付与する(S2405)。
次に、前記結果復元タプル領域244に、集計用一時保存データを生存期間とともに格納し(S2406)、集計結果を出力し(S2407)、処理を終了する(S2408)。
前記ステップS2404でNOと判定された場合、集計結果を出力し(S2407)、処理を終了する(S2408)。
以上の処理により、遅延モードの集計オペレータ処理では、到着タプルまたは一時保存領域243の集計用のタプルの少なくとも一方に未確定フラグがあれば、集計結果に未確定フラグを付与して、遅延タプル203を除外した集計結果であることを示す。
以下では、図10に示した実行木2411に対して、図6に示した温度ストリームデータ2011、図7に示した湿度ストリームデータ2012を入力したときの処理を説明する。
図17a、図17bは、図11、図13、14、15、16に示したフローチャートを用いて遅延処理HBT202が到着した場合の処理結果を示すタイムチャートである。図17aは、タプル(ストリームデータ201と遅延タプル203)の受信処理の結果を示し、図17bは、受信したタプルの結合処理と集計処理の結果を示す。
図6に示したタプル509、514、519が9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)にまとめて到着するとし、9:01(実時間であり、アプリケーションタイムスタンプとは異なる)に遅延処理HBT202が送られてきたものとする。図12aでは、タプル901からタプル915までは、それぞれ図11に示したタプル901からタプル915までに対応し、タプル908、912、916の代わりに遅延処理HBT1001が到着したものとする。
まず、ウィンドウ演算では、タプル901から907までは、図11に示した前記ステップS2002においてNOと判定され、前記ステップS2005においてNOと判定され、前記ステップS2008においてNOと判定されるため、前記ステップS2012の通常処理が行われ、図12a、図12bに示した結果と同じになる。
次に、タプル1001が到着し、ウィンドウオペレータ802、803の処理が行われる場合に、図11に示した前記ステップS2002においてNOと判定され、前記ステップS2005においてYESと判定され、前記ステップS2006が実行される。次に、前記ステップS2006で遅延処理モードに変更されたため、前記ステップS2008においてYESと判定される。次に、前記ステップS2009においてNOと判定されるため、前記ステップS2010が実行される。そして、図13に示した前記ステップS2102においてYESと判定され、前記ステップS2103が実行される。
温度ストリームデータ2011はグループ別ウィンドウ(Partition by window)であるため、図14に示した前記ステップS2202においてNOと判定され、前記ステップS2203においてNOと判定される。次に、グループ別ウィンドウ、かつタプル904のグループ化キーが「4」であり、遅延処理HBTのグループ化キー(ノードID)が「4」であるため、前記ステップS2206においてYESと判定される。
ここで、9:01に新たなタプルが到着するかもしれないため、タプル904の生存期間が確定しない。本状態を未確定状態とし、前記ステップS2205においてタプルに未確定フラグを付与する。そのため、前記ステップS2207において、未確定フラグ付きタプル1002が出力される。ここで、未確定フラグ付きタプル1002と同じアプリケーションタイムスタンプで、タプル904のマイナスタプル、遅延処理HBT1001も出力される。
結合演算では、タプル901からタプル907、およびタプル921からタプル924が到着した場合には、上述したウィンドウ演算と同様に判定され、前記ステップS2012の通常処理が行われ、図12bに示したタプル931から937までと同じ結果であるタプル1011からタプル1017までが出力される。
結合演算の場合、タプル1002が到着した場合に、ウィンドウ演算の場合と同様に判定され、図13に示した前記ステップS2105が実行される。図15に示した前記ステップS2302では、結合対象の結合用一時保存データとして、タプル924を取得する。タプル924は、未確定フラグ付きではないため、前記ステップS2303においてNOと判定される。次に、タプル1002は未確定フラグ付きタプルであるため、前記ステップS2304においてYESと判定される。次に、前記ステップS2305において、結合結果に未確定フラグを付与し、図17bに示す未確定フラグ付きタプル1018を生成する。
次に、前記ステップS2306において、結合対象のタプルとして、湿度ストリームデータ2012のノードIDが「4」であるもの(図19aに示すタプル1112)を、結果復元タプル領域244に図19aに示す結合用一時保存データ1111として、生存期間とともに格納する。また、ノードIDが「4」である結合結果を、結果復元タプル領域244に図19aに示す結合用一時保存データ1121として、図19aに示すタプル1122を生存期間とともに格納する。次に、前記ステップS2307において、未確定フラグ付きタプル1018を出力して、処理を終了する。ここで、図17bのように未確定フラグ付きタプル1018と同じアプリケーションタイムスタンプで、タプル1014のマイナスタプル、遅延処理HBT1031も出力される。
また、図17aのタプル928が到着した場合に、図15に示した前記ステップS2302では、結合対象の結合用一時保存データとして、タプル1002を取得する。タプル1002は、未確定フラグ付きであるため、前記ステップS2303においてYESと判定される。次に、前記ステップS2305において、結合結果に未確定フラグを付与し、図17bの未確定フラグ付きタプル1022を生成する。
次に、前記ステップS2306において、図19aに示す結合対象のタプルとして、湿度ストリームデータ2012のノードIDが「4」であるもの(図19aに示すタプル1113)を、結果復元タプル領域244に図19aに示す結合用一時保存データ1111として、生存期間とともに格納する。また、ノードIDが「4」である結合結果を、結果復元タプル領域244に図19aに示す結合用一時保存データ1121として、図19aに示すタプル1123を生存期間とともに格納する。次に、前記ステップS2307において、未確定フラグ付きタプル1022を出力して、処理を終了する。
集計演算では、上述したウィンドウ演算と同様に判定され、前記ステップS2012の通常処理が行われ、図12bに示したタプル951から953までと同じ結果であるタプル1011からタプル1017までが出力される。
集計演算の場合、タプル1018が到着した場合に、ウィンドウ演算の場合と同様に判定が行われ、図13に示した前記ステップS2107が実行される。図16に示した前記ステップS2402では、タプル1014のマイナスタプルが処理された後であるため、集計対象の集計用一時保存データとして、「温度合計値「29」、温度母数「1」、湿度合計値「68」、湿度母数「1」」となっている。集計用一時保存データは、未確定フラグ付きではないため、前記ステップS2403においてNOと判定される。次に、タプル1018は未確定フラグ付きタプルであるため、前記ステップS2404においてYESと判定される。次に、前記ステップS2305において、集計結果に未確定フラグを付与し、未確定フラグ付きタプル1044を生成する。
次に、前記ステップS2406において、集計対象のタプルとして、機器IDが「2」であるものの集計用一時保存データ「機器ID「2」、温度合計値「61」、温度母数「2」、湿度合計値「140」湿度母数「2」」、である図19aに示すタプル1142を集計用一時保存データ1141として、生存期間とともに格納する。また、図19aに示すタプル1152を結果復元タプル領域244に、図19aに示す集計用一時保存データ1151として、生存期間とともに格納する。次に、前記ステップS2307において、未確定フラグ付きタプル1044を出力して、処理を終了する。ここで、未確定フラグ付きタプル1044と同じアプリケーションタイムスタンプで、タプル1014のマイナスタプル、遅延処理HBT1051も出力される。
また、タプル1022が到着した場合に、図15に示した前記ステップS2302では、集計用一時保存データとして、「温度合計値「61」、温度母数「2」、湿度合計値「140」、湿度母数「2」」、およびタプル1143を取得する。前記集計用一時保存データ「温度合計値「61」、温度母数「2」、湿度合計値「140」、湿度母数「2」」、およびタプル11143は、未確定フラグ付きであるため、前記ステップS2303においてYESと判定される。次に、前記ステップS2305において、結合結果に未確定フラグを付与し、未確定フラグ付きタプル1046を生成する。
次に、前記ステップS2406において、集計対象のタプルとして、機器IDが「2」であるものの集計用一時保存データ「機器ID「2」、温度合計値「62」、温度母数「2」、湿度合計値「142」、湿度母数「2」」である図19aに示すタプル1143を、集計用一時保存データ1141として、生存期間とともに格納する。また、図19aに示すタプル1144を結果復元タプル領域244に、図19aに示す集計用一時保存データ1141として、生存期間とともに格納する。次に、前記ステップS2307において、未確定フラグ付きタプル1046を出力して、処理を終了する。
ここで、遅延処理HBT1001に結合キーが含まれていない場合、結合結果すべてに未確定フラグを付与する。未確定フラグは、未確定状態とその他の状態が判別できれば、どのような形態でも構わない。例えば、未確定状態の場合、フラグの値を「1」とし、その他の状態を「0」とすることができる。
また、結合結果量によっては、結合元のデータを保持しても構わない。結合結果、もしくは結合元のデータ量をモニタリングし、少ない方を選択しても構わない。
さらに、上記では、遅延タプル203は一度遅れた場合、該アプリケーションタイムスタンプ以降のタプルはすべて遅延するものとし、アプリケーションタイムスタンプ順序の追い越しは発生しないものとしているが、アプリケーションタイムスタンプ順序の追い越しが発生した場合も、同様に未確定フラグを付与して処理結果を出力しても構わない。
図18は、図11に示した前記ステップS2011の処理を表したフローチャートである。
まず、処理対象のオペレータが結合オペレータ805か否かを判定する(S2502)。前記ステップS2502でYESと判定された場合は、前記結果復元タプル領域244を参照し、該遅延タプル203のアプリケーションタイムスタンプ301に対応する生存期間を持つ結合用結果復元タプルを取得し(S2503)、該遅延タプル203と結合対象の結合用結果復元タプルを結合処理する(S2504)。前記ステップS2502でNOと判定された場合は、処理対象のオペレータが集計オペレータ805か否かを判定する(S2505)。
前記ステップS2505でYESと判定された場合は、前記結果復元タプル領域244を参照し、該遅延タプル203のアプリケーションタイムスタンプ301に対応する生存期間を持つ集計用結果復元タプルを取得し(S2506)、該遅延タプル203と集計対象の集計用結果復元タプルから集計結果を再計算する(S2507)。前記ステップS2505でNOと判定された場合は、処理対象のオペレータがウィンドウオペレータ802、803か否かを判定する(S2508)。
前記ステップS2508でYESと判定された場合は、前記結果復元タプル領域244を参照し、該遅延タプル203のアプリケーションタイムスタンプ301以前で行ウィンドウサイズ分のウィンドウ用結果復元タプルを取得し(S2509)、該遅延タプル203とウィンドウ用結果復元タプルからウィンドウ結果を再計算する(S2510)。前記ステップS2508でNOと判定された場合は、遅延処理HBT202、および遅延タプル203が存在しない場合の通常処理をし(S2514)、処理を終了する(S2515)。
また、前記ステップS2504、または前記ステップS2507、または前記ステップS2510が終了した場合は、未確定フラグ付き処理結果のマイナスタプルを出力し(S2511)、前記未確定フラグ付与部234において処理結果へ遅延して到着したデータにより、処理を再計算し、処理結果が確定したことを表す確定フラグを付与して出力する(S2512)。次に、前記遅延タプル203のアプリケーションタイムスタンプ301よりも生存終了が早い結果復元タプルを結果復元タプル領域から削除し(S2513)、処理を終了する(S2515)。
ここで、複数の遅延タプル203がある場合に、前記結果復元タプルを用いて再計算した結果に、必ず確定フラグが付与されるのではなく、未確定状態であれば、再び未確定フラグを付与して再計算結果を出力する。
また、遅延タプル203の再計算を実行する場合に、図10で示した前記実行木241を用いても、前記実行木241と同一の実行木241を複製して、再計算を実行しても構わない。
以下では、図10に示した実行木2411に対して、図6に示した温度ストリームデータ2011、図7に示した湿度ストリームデータ2012を入力したときの処理を説明する。図19a、図19bは、図11、図18に示したフローチャートを用いて遅延タプル203が到着した場合の処理結果を示すタイムチャートである。図19aは、タプル(ストリームデータ201と遅延タプル203)の受信から結合処理の結果を示し、図19bは、遅延タプル203を受信した再計算処理の結果を示す。
図6に示したタプル509、514、519が9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)にまとめて到着するとし、図19aに示したタプル1101、1102、1103がそれぞれ対応する。ここで、前記遅延タプル203であるタプル1101、1102、1103は、到着時間は9:05であるが、アプリケーションタイムスタンプは9:01、9:02、9:03であることに注意が必要である。また、遅延タプル203が終了したことを表す前記遅延解消HBT204であるタプル1104は、到着時間9:05、システムタイムスタンプは9:05となる。
遅延タプル1101が到着した場合に、図11に示したフローチャートにおいて、前記ステップS2202においてNOと判定され、前記ステップS2005においてNOと判定され、前記ステップS2008においてYESと判定され、前記ステップS2009においてYESと判定されるため、前記ステップS2011の途中処理結果及び遅延タプルから再計算を行う処理が実行される。
ウィンドウ演算の場合、グループ化別ウィンドウオペレータであるため、図18に示したフローチャートにおいて、前記ステップS2502においてNOと判定され、前記ステップS2505においてNOと判定され、前記ステップS2508においてNOと判定されるため、前記ステップS2514が実行される。そのため、タプル1102が到着した場合に、グループ化キーが「4」であるタプル1101のマイナスタプルが出力され、タプル1102のプラスタプルが出力される。上記の処理は、前記遅延タプル203が存在しない場合の処理と変わらない。
次に、結合演算の場合、前記ステップS2502でYESと判定されるため、前記ステップS2503が実行される。前記ステップS2503において、タプル1101が到着した場合に、結合用の結果復元タプル領域1111を参照し、タプル1101のアプリケーションタイムスタンプが「9:01」に対応する生存期間を持つ結合用結果復元タプル1112を取得する。
次に、前記ステップS2504において、タプル1101とタプル1112は、センサIDから結合対象であるため、タプル1101とタプル1112を結合し、タプル1132が生成される。
次に、前記ステップS2511において、未確定フラグ付き結合結果であるタプル1112のマイナスタプルであるタプル1131を出力する。次に、前記ステップS2512において、タプル1132に確定フラグを付与して出力する。次に、前記ステップS2513において、タプル1101のアプリケーションタイムスタンプが「9:01」よりも生存終了が早い結果復元タプルがないため、何も処理を行わない。
タプル1102が到着した場合に、同様の処理により、タプル1133、タプル1134が生成されるが、前記ステップS2513において、タプル1102のアプリケーションタイムスタンプ「9:02」よりも生存終了が早い結果復元タプル1112を結果復元タプル領域1111から削除する。同時に、結果復元タプル1122を結果復元タプル領域1121から削除する。
集計演算の場合、タプル1131が到着した場合に、前記ステップS2502においてNOと判定され、前記ステップS2505においてYESと判定されるため、前記ステップS2506が実行される。
前記ステップS2506において、タプル1131が到着した場合に、集計用の結果復元タプル領域1141を参照し、タプル1133のアプリケーションタイムスタンプ「9:01」に対応する生存期間を持つ集計用結果復元タプル1142を取得する。次に、前記ステップS2507において、タプル1131と集計対象の集計用結果復元タプル1142から集計結果を再計算すると、一時保存タプルが「機器ID「2」、温度合計値「29」、温度母数「1」、湿度合計値「68」、湿度母数「1」」となり、ゴーストタプル「機器ID「2」、温度平均値「29」、湿度平均値「68」」が生成される。
タプル1132が到着した場合に、一時保存タプルが「機器ID「2」、温度合計値「62」、温度母数「2」、湿度合計値「140」、湿度母数「2」」となり、図19bのように「機器ID「2」、温度平均値「31」、湿度平均値「70」」であるタプル1162が生成される。
次に、前記ステップS2511において、未確定フラグ付きの集計結果のマイナスタプルである図19bのタプル1061を出力する。次に、前記ステップS2512において、タプル1062に確定フラグを付与して出力する。次に、前記ステップS2513において、タプル1131、タプル1132のアプリケーションタイムスタンプが「9:01」よりも生存終了が早い結果復元タプルがないため、何も処理を行わない。
タプル1133、1134が到着した場合に、同様の処理により、タプル1163、タプル1164が生成されるが、前記ステップS2513において、タプル1133、タプル1134のアプリケーションタイムスタンプが「9:02」よりも生存終了が早い結果復元タプル1142を結果復元タプル領域1141から削除する。同時に、結果復元タプル1152を結果復元タプル領域1151から削除する。
アプリケーションタイムスタンプ「9:05」において、遅延処理解消HBT1104が到着した場合に、結果復元タプル領域1111、1121、1141、1151は消滅する。
図20は、問い合わせ実行部230が出力するリアルタイム出力結果250を例示した図であり、図10に示した実行木2411に対して、図6に示した温度ストリームデータ2011、図7に示した湿度ストリームデータ2012を入力したときのリアルタイム出力結果250を表している。ここで、図6に示したタプル509、514、519が9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)にまとめて到着するとし、9:01(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)に遅延処理HBT202が送られてきたものとする。
アプリケーションタイムスタンプカラム1201、機器IDカラム1202は、それぞれ、図6に示したタイムスタンプカラム301、機器IDカラム303に対応付けられる。また、Avg(温度)カラム1203は、温度ストリームデータ2011のうちの温度の平均値が出力される。Avg(温度)カラム1204は、湿度ストリームデータ2012のうちの湿度の平均値が出力される。確定/未確定フラグカラム1205は、出力結果が未確定状態、もしくは確定状態となった場合に、確定フラグまたは未確定フフラグの一方が付与される。
例えば、行1206は、アプリケーションタイムスタンプ「9:00」において、機器IDが「1」、温度の平均値が「22」、湿度の平均値が「62」であり、確定/未確定フラグが付与されていないことを表している。
ここで、図17a、図17bに示した実行木の処理結果において、タプル1041からタプル1048までをストリーム化した結果が、図20のタプル1206から1213までに対応する。
図21は、問い合わせ実行部230が出力する遅延出力結果251を例示した図であり、図10に示した実行木2411に対して、図6に示した温度ストリームデータ2011、図7に示した湿度ストリームデータ2012を入力したときの遅延出力結果251を表している。ここで、図6に示したタプル509、514、519が9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)にまとめて到着するとし、9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)に遅延処理解消HBT204が送られてきたものとする。
アプリケーションタイムスタンプカラム1301、機器IDカラム1302は、それぞれ、図6に示したタイムスタンプカラム301、機器IDカラム303に対応付けられる。また、Avg(温度)カラム1303は、温度ストリームデータ2011のうちの温度の平均値が出力される。Avg(温度)カラム1304は、湿度ストリームデータ2012のうちの湿度の平均値が出力される。確定/未確定フラグカラム1305は、出力結果が未確定状態、もしくは確定状態となった場合に、確定フラグまたは未確定フフラグの一方が付与される。
例えば、行1306は、9:05(ストリームデータ処理システム100に到着した実時間であり、アプリケーションタイムスタンプとは異なる)において、アプリケーションタイムスタンプ1301「9:01」、機器ID1302が「2」、温度の平均値1303が「31」、湿度の平均値1304が「70」であり、確定フラグが付与されていることを表している。
ここで、図19bに示した実行木の処理結果において、タプル1062、タプル1064、タプル1066をストリーム化した結果がそれぞれ図21の、タプル1306、タプル1307、タプル1308に対応する。ここで、ストリーム化演算では、増分のみを出力するため(ISTREAM)、タプル1061、タプル1063、タプル1065は出力されない。
図22は、遅延処理HBT202の受信時のシーケンス図を表している。
まず、図2に示した遅延処理HBT検知部233において、受信したストリームデータ201から遅延処理HBT202を検知する(処理1401)。次に、遅延処理HBT検知部233は、図2に示した問合せ実行木241に対して、遅延処理HBT202を送信し、前記問合せ実行木241では、ウィンドウ演算をする(処理1402)。次に、問合せ実行木241は、図2に示した未確定フラグ付与部234に対して、前記処理1402で演算した演算結果を送信し、前記未確定フラグ付与部234では、未確定フラグを付与する(処理1403)。次に、未確定フラグ付与部234は、前記問合せ実行木241に対して、フラグ付き演算結果を送信する。
次に、前記問合せ実行木241では、上述の結合演算をする(処理1404)。問合せ実行木241は、結合演算結果を前記未確定フラグ付与部234に対して送信し、未確定フラグを付与し(処理1405)、未確定フラグ付与部234は、前記問合せ実行木241に対して、フラグ付き演算結果を送信する。
次に、前記問合せ実行木241は、図2に示した結果復元タプル保持部235において、結合演算結果復元用タプルを生成させる(処理1406)。次に、結果復元タプル保持部235は、図2に示した結果復元タプル領域244に対して、前記結合演算結果復元用タプルを送信する。前記結果復元タプル領域244は、前記結合演算結果復元用タプルを領域に格納し(処理1407)、前記問合せ実行木241に対して、格納完了ACKを送信する。
次に、前記問合せ実行木241では、上述の集計演算をする(処理1408)。問合せ実行木241は集計演算結果を前記未確定フラグ付与部234に対して送信し、未確定フラグ付与部234は未確定フラグを付与し(処理1409)、前記問合せ実行木241に対して、フラグ付き演算結果を送信する。次に、前記問合せ実行木241は、前記結果復元タプル保持部235において、フラグ付き演算結果から集計演算結果復元用タプルを生成し(処理1410)、前記結果復元タプル領域244に対して、前記集計演算結果復元用タプルを送信する。前記結果復元タプル領域244は、前記集計演算結果復元用タプルを領域に格納し(処理1411)、前記問合せ実行木241に対して、格納完了ACKを送信し、処理を終了する。
以上の手順で、問い合わせ実行部230と問い合わせ実行領域240では遅延処理HBT202に基づいて、ウィンドウ演算と、結合演算及び集計演算を実行する。
図23は、遅延タプル受信時のシーケンス図を表している。
まず、図2に示した遅延タプル検知部236において、受信したストリームデータ201から遅延タプル203を検知する(処理1501)。次に、遅延タプル検知部236は図2に示した問合せ実行木241に対して、遅延タプル203を送信し、前記問合せ実行木241では、ウィンドウ演算をする(処理1502)。次に、問合せ実行木241は図2に示した未確定フラグ付与部234に対して、前記処理1502で演算した演算結果を送信し、前記未確定フラグ付与部234では、確定フラグを付与する(処理1503)。次に、未確定フラグ付与部234は前記問合せ実行木241に対して、フラグ付き演算結果を送信する。ただし、行ウィンドウ以外の場合、通常のウィンドウ処理となるため、前期処理1503は行わない。
次に、前記問合せ実行木241では、上述の結合演算をする(処理1504)。まず、問合せ実行木241は図2に示した遅延タプル再計算部237に対して、前記遅延タプル203を送信する。前記遅延タプル再計算部237では、遅延タプル203から結合演算の再計算を行う(処理1505)。図2に示した結果復元タプル領域244に対して、遅延タプルの生存期間を送信する。前記結果復元タプル領域244において、生存期間を満たすタプルを参照し(処理1506)、前記遅延タプル再計算部237に対して結合用結果復元タプルを送信する。前記遅延タプル再計算部237では、送信されてきた前記結合用結果復元タプルをもとに、結合演算を再計算し、前記問合せ実行部230に対して、結合演算再計算結果を送信する。前記問合せ実行部230では、前記未確定フラグ付与部234に対して、再計算した演算結果を送信する。前記未確定フラグ付与部234では、再計算の演算結果に確定フラグを付与し(処理1507)、前記問合せ実行木241に対してフラグ付き演算結果を送信する。
次に、前記問合せ実行木241では、上述の集計演算をする(処理1508)。まず、問合せ実行木241は前記遅延タプル再計算部237に対して、前記遅延タプル203を送信する。前記遅延タプル再計算部237では、集計演算の再計算を行う(処理1509)。遅延タプル再計算部237は、前記結果復元タプル領域244に対して、遅延タプル203の生存期間を送信し、前記結果復元タプル領域244において、生存期間を満たすタプルを参照し(処理1510)、前記遅延タプル再計算部237に対して集計用結果復元タプルを送信する。前記遅延タプル再計算部237では、送信されてきた前記集計用結果復元タプルをもとに、集計演算を再計算し、前記問合せ実行部230に対して、集計演算再計算結果を送信する。前記問合せ実行部230では、前記未確定フラグ付与部234に対して、演算結果を送信する。前記未確定フラグ付与部234では、演算結果に確定フラグを付与し(処理1511)、前記問合せ実行木241に対してフラグ付き演算結果を送信し、処理を終了する。
以上の手順で、問い合わせ実行部230と問い合わせ実行領域240では遅延タプル203に基づいて、ウィンドウ演算と、結合演算及び集計演算を実行する。
<第一実施形態まとめ>
上記の実施形態では、ウィンドウオペレータ802、803、結合オペレータ806、集計オペレータ807に関して説明したが、ウィンドウオペレータ、結合オペレータ、集計オペレータ以外のオペレータに関して、遅延タプル203を除く処理結果を未確定フラグとともに出力すると同時に、再生に必要な途中処理結果を生存期間とともに保持する処理や、途中処理結果、および遅延タプルから正確な処理結果を算出する処理をしても構わない。
以上において、ウィンドウによって生存期間が定義されるストリームデータ201に対して処理するストリームデータ処理方法において、遅延処理HBT202に従い、遅延タプル203を除く演算結果を未確定フラグとともにリアルタイムで出力するとともに、遅延タプル203が到着した後の再生に必要な途中処理結果を生存期間とともに保持し、遅延タプル到着時には、遅延タプル、および処理結果復元タプルから正確な処理結果を算出する。上記処理により、本発明の第1の目的である遅延タプルがある場合も、アプリケーションタイムスタンプを用いてリアルタイムに処理結果を出力することが可能となる。また、本発明の第2の目的である遅延タプルが到着したときに処理結果を再計算し、正しい処理結果を求めることが可能であることを示した。
また、上記に示したように、本発明の処理では、遅延タプル203がある場合のみ処理結果復元タプルを保持すればよく、必要となるメモリ量を減少させることができる。また、処理結果復元タプルを用いて処理することができるため、遅延タプル203が到着した後の再計算時間を減少させることができる。
以上、本発明の第一の実施形態について説明した。
本発明は、上記に示した第一の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。以下では、第一の実施形態とは異なる実施形態により、同様、または更なる効果を得ることが可能である、若しくは第一の実施形態と組み合わせることにより更なる効果を得ることが可能であることを説明する。
なお、上記実施形態においてセンサノード(温度センサノード101、湿度センサノード102)の測定値から変換したユーザが理解可能な有意な情報は、センサノードが出力したバイナリ値を所定の単位系の数値に変換した情報としたが、これに限定されるものではない。例えば、センサノードの値の時系列の集計値、および複数のセンサノードの値の集計値を有意な情報としてもよい。あるいは、センサノードが1分間隔に温度情報を送信した場合に、ユーザは最近1時間の温度平均が知りたい(時系列の集計)場合では、直近の1時間の温度平均が有意な情報となる。また、複数のセンサノードの集計値の例では、同じ部屋にある複数のセンサノードの中で最も温度の高いものを有意な情報としてもよい。
<第二実施形態>
以下では、本発明の第二の実施形態について説明する。
第一の実施形態では、遅延処理HBT202、および遅延処理解消HBT204は、図1に示した前記センサ基地局108、前記クレードル109、前記RFIDリーダー110、前記携帯電話基地局111、もしくは前記中継計算機113からネットワーク112を介して前記ストリームデータ処理システム100に入力されるが、第二の実施形態では、前記ストリームデータ処理システム100が遅延処理HBT202、および遅延処理解消HBT204を生成することを特徴とする。遅延処理HBT202、および遅延処理解消HBT204を生成する処理以外は、前記第一の実施形態と同様の構成及び処理を備える。
本実施形態ではストリームデータ処理システム100のシステム時刻を示すシステムタイムスタンプと、アプリケーションタイムスタンプ301、305を比較し、以前到着したアプリケーションタイムスタンプ301、305から一定間隔以上経過した場合に、自動的に遅延処理HBT202を生成する。また、遅延処理HBT202を生成した後に、遅延タプル203が到着したアプリケーションタイムスタンプ301、305がシステムタイムスタンプから一定間隔以内である場合に、自動的に遅延処理解消HBT204を生成する。ここで、遅延処理HBT202が生成された場合も、データソースにおいて、ストリームデータ201が生成されていないのか、ストリームデータ201が遅延しているかを区別することはできない。
図24は本発明の第2実施形態が適用されたストリームデータ処理システム、及び関連するシステム構成を示すブロック図である。
図24は、図2に示したストリームデータ処理システム100、及び関連するシステム構成を示すブロック図に、遅延処理HBT202、および遅延処理解消HBT204を管理または生成する遅延処理ハートビートタプル(HBT)制御部260が付加されたものである。
遅延処理HBT制御部260は、前記ストリームデータ201を監視し、タイムアウトを検知するタイムアウト検知部261、および前記タイムアウト検知部261で検知した内容に基づいて遅延処理HBT202、遅延処理解消HBT204を生成する遅延処理HBT生成部262、および前記センサ基地局108、前記クレードル109、前記RFIDリーダー110、前記携帯電話基地局111、もしくは前記中継計算機113の各ノードと、前記ストリームデータ201の関係を管理するノードストリーム管理テーブル263から構成される。
図25は、前記コマンド入力部210において、前記ストリームデータ処理システム100が遅延処理HBT202、および遅延処理解消HBT204を生成するか否かを設定する際の好適なコマンドの記述例である。
遅延処理HBT生成箇所設定コマンド1601は、前記ユーザ114が操作する前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記ストリームデータ設定部221において登録される。遅延処理HBT生成箇所設定コマンド1601は、本発明の前記第一実施形態で示した遅延処理HBT202、および遅延処理解消HBT204は、図1に示した前記センサ基地局108、前記クレードル109、前記RFIDリーダー110、前記携帯電話基地局111、もしくは前記中継計算機113からネットワーク112を介して前記ストリームデータ処理システム100に入力されるコマンドの記述例を表している。
遅延処理HBT生成箇所設定コマンド1602は、前記ユーザ114が操作する前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記ストリームデータ設定部221において登録される。遅延処理HBT生成箇所設定コマンド1602は、前記ストリームデータ処理システム100が遅延処理HBT、および遅延処理解消HBTを生成するコマンドの記述例を表している。
図26は、前記コマンド入力部210において、前記ストリームデータ処理システム100が遅延処理HBT202を生成する際のノード情報とストリームデータ情報の関係を設定する際の好適なコマンドの記述例である。
ノードストリームデータ関係設定コマンド1603、および1604は、前記ユーザ114が操作する前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記ストリームデータ設定部221において登録される。ノードストリームデータ関係設定コマンド1603は、ノード名が「計算機0」、ノードIPアドレスが「192.168.0.100」、ストリームデータ名が「温度ストリーム(S1)」、タイムアウト設定がなし(null)、一定間隔送信が「1分」、スキーマ限定条件が「温度センサID=1、機器ID=1」に、それぞれ設定するコマンドの記述例を表している。各設定パラメータは、図27を用いて詳細に説明する。
ノードストリームデータ関係設定コマンド1604は、ノード名が「計算機1」、ノードIPアドレスが「192.168.0.101」、ストリームデータ名が「湿度ストリーム(S2)」、タイムアウト設定が「30秒」、一定間隔送信がなし(null)、スキーマ限定条件が「湿度センサID=2−3、機器ID=1」に、それぞれ設定するコマンドの記述例を表している。
図27は、ノードストリーム管理テーブル263の構成例を表した図である。
ノードストリーム管理テーブル263は、ノード名カラム1701、ノードIPアドレスカラム1702、ストリームデータ名カラム1703にはそれぞれ、図26に示したノードストリームデータ関係設定コマンド1603、1604等により、前記コマンド入力部210において登録されたノードの名前、ノードのIPアドレス、ストリームデータ名を格納する。
タイムアウト設定カラム1704には、遅延処理HBT202を生成する際のタイムアウト値を設定され、タイムアウト値を超えてストリームデータ201が到着しない場合、遅延処理HBT202が生成される。一定間隔送信カラム1705には、ストリームデータ201が一定間隔で生成される場合に設定され、一定間隔を超えてストリームデータ201が到着しない場合、遅延処理HBT202が生成される。タイムアウト設定カラム1704、一定間隔送信カラム1705には前記ノードストリームデータ関係設定コマンド1603、1604等により、前記コマンド入力部210において登録された値が設定される。
スキーマ限定条件カラム1706には、センサノードから送られてくる前記ストリームデータ201のうちの一部の情報が分かっている場合に設定される。スキーマ限定条件カラム1706には前記ノードストリームデータ関係設定コマンド1603、1604等により、前記コマンド入力部210において登録された値が設定される。
例えば、行1705は、図26に示したストリーム登録コマンド1603を登録した場合のノードストリーム管理テーブル263を表している。
行1707は、ノード名カラム1701の値が「計算機0」、ノードIPアドレスカラム1702の値が「192.168.0.100」、ストリームデータ名カラム1703の値が「温度ストリーム(S1)」、タイムアウト設定カラム1704の値がなし(−、null)、一定間隔送信カラム1705の値が「1分」、スキーマ限定条件カラム1706の値が「温度センサID=1、機器ID=1」であることを表している。
図28は、遅延処理HBT202、および遅延処理解消HBT204を生成する処理を表したフローチャートである。
まず、図24に示したノードストリーム管理テーブル263を参照し(S2602)、図27に示したノードストリーム管理テーブル263のタイムアウト設定カラム1704に値が設定されているか否かを判定する(S2603)。前記ステップS2603でYESと判定された場合は、HBT生成間隔値をタイムアウト設定値に設定する(S2604)。
前記ステップS2603でNOと判定された場合は、図27に示したノードストリーム管理テーブル263の一定間隔送信カラム1705に値が設定されているか否かを判定する(S2605)。前記ステップS2605でYESと判定された場合は、HBT生成間隔値を一定間隔送信値の2倍に設定する(S2606)。前記ステップS2603でNOと判定された場合は、HBT生成間隔値をデフォルトの値(1分間等)に設定する(S2607)。
前記ステップS2604、S2606、S2607が終了した場合、各ノードの最終到着タプルのアプリケーションタイムスタンプ301とシステムタイムスタンプが前記遅延処理HBT生成間隔値以内であるか否かを判定する(S2608)。前記ステップS2608でYESと判定された場合は、図27に示したノードストリーム管理テーブル263のスキーマ限定条件カラム1706に値が設定されているか否かを判定する(S2609)。前記ステップS2609でYESと判定された場合は、スキーマ限定条件を付与した遅延処理HBT202を出力する(S2610)。前記ステップS2609でNOと判定された場合は、遅延処理HBT202を出力する(S2611)。
前記ステップS2608でNOと判定された場合、前記ステップS2610が終了した場合、前記ステップS2611が終了した場合、各ノードの遅延タプル203のアプリケーションタイムスタンプ301とシステムタイムスタンプの差が遅延処理HBT生成間隔値以内であるか否かを判定する(S2612)。前記ステップS2612でYESと判定された場合は、図27に示したノードストリーム管理テーブル263のスキーマ限定条件カラム1706に値が設定されているか否かを判定する(S2613)。前記ステップS2612でYESと判定された場合は、スキーマ限定条件を付与した遅延処理解消HBTを出力する(S2614)。前記ステップS2613でNOと判定された場合は、遅延処理HBT202を出力する(S2615)。
前記ステップS2612でNOと判定された場合、前記ステップS2614が終了した場合、前記ステップS2615が終了した場合、処理を終了する(S2616)。
<第二実施形態の具体例>
例えば、図6に示した温度ストリームデータ2011を入力し、図6に示したタプル509、514、519が9:05(ストリームデータ処理システム100の実時間であり、アプリケーションタイムスタンプとは異なる)にまとめて到着する場合を考える。
上記の場合、図28に示したフローチャートにおいて、まず、前記S2602において図27に示したノードストリーム管理テーブル263を参照する。前記ステップS2603においてNOと判定され、前記ステップS2605においてYESと判定されるため、前記ステップS2606において遅延処理HBT生成間隔値を一定間隔送信値「1分」の2倍、すなわち「2分」に設定する。
次に、「計算機4」からの最終到着タプルのアプリケーションタイムスタンプ301が「9:01」であるのに対し、システムタイムスタンプが「9:03」となった場合に、前記ステップS2608においてYESと判定される。
前記ステップS2609においてYESと判定され、前記ステップS2610において、スキーマ限定条件として行1712の「温度センサID=4」を付与した、タプル「9:01、4、HBT」(アプリケーションタイムスタンプが「9:01」、温度センサIDが「4」であるHBT)を温度ストリーム(S1)に入力する。本タプルは図17a、図17bに示した遅延処理HBT1001となる。
遅延処理解消HBT出力の場合、上記に示した処理と同様に、前記S2606が実行される。次に、前記S2608においてNOと判定され、前記ステップS2612が実行される。「計算機4」において、図6に示した遅延タプル509、514、519がシステムタイムスタンプ「9:05」に到着する。そして、アプリケーションタイムスタンプ301が「9:03」となるタプル514を処理する場合に、前記ステップS2612においてYESと判定される。
前記ステップS2613において、YESと判定され、前記ステップS2614において、スキーマ限定条件として行1712の「温度センサID=4」を付与した、タプル「9:03、4、HBT」(アプリケーションタイムスタンプ301が「9:03」、温度センサIDが「4」であるHBT)を温度ストリーム(S1)に入力し、処理を終了する。
ここで、図19aに示す遅延処理HBT1104は、本タプルとアプリケーションタイムスタンプが異なる。しかし、図24に示した時間順ソート部232において、アプリケーションタイムスタンプ「9:03」以降のタプルはアプリケーションタイムスタンプ順に並べ替えるため保持されているため、本実施形態の場合、遅延タプル519は、通常のタプルとして扱われる。
以上、本発明の第二の実施形態について説明した。
<第三実施形態>
以下では、本発明の第三の実施形態について説明する。
第一、および第二の実施形態では、図2、および図24に示したリアルタイム出力結果250、遅延出力結果251をユーザ116が操作する計算機117上で実行されるアプリケーション123へ提供していた。しかしながら、リアルタイムの処理結果確認、もしくはリアルタイムの処理結果に基づく別の処理を実行する場合、遅延出力結果が必要ない場合もある。上記の場合にも、遅延タプル203を破棄する場合、図2、および図24に示したウィンドウデータ領域242、一時保存領域243の値が遅延タプルなしの場合と異なり、前記遅延処理解消HBTを処理後も、リアルタイム出力結果250が遅延タプル203なしの場合と異なる結果となってしまう。
そこで、本第3実施形態では、前記リアルタイム出力結果250、前記遅延出力結果251の出力方法を切り替え可能であることを特徴とする。本実施形態では、出力方法として、(1)すべての処理結果を出力する、(2)遅延出力結果251を出力せず、リアルタイム出力結果250のみを出力し、前記ウィンドウデータ領域242、一時保存領域243のメンテナンスのみ実行する、(3)遅延出力結果251を出力せず、遅延出力結果251を含む正しい処理結果を外部記憶媒体(アーカイブ)に保存する、3通りを示す。
なお、上記に示した3通りの方法以外にも、前記リアルタイム出力結果250、および前記遅延出力結果251の出力方法はいかなる組合せでも構わない。また、前記遅延出力結果251を含む正しい処理結果を外部記憶媒体(アーカイブ)に保存する処理において、別の計算機等、外部記憶媒体以外へ送信しても構わない。
図29は本発明の一実施形態が適用されたストリームデータ処理システム100、及び関連するシステム構成を示すブロック図である。
図29は、図2に示したストリームデータ処理システム100、及び関連するシステム構成を示すブロック図に、前記リアルタイム出力結果250、前記遅延出力結果251の出力方法を切り替える出力方法制御部270が付加されたものである。また、演算結果の出力先として、ユーザ116が操作する計算機117上で実行されるアプリケーション123の他に、外部記憶媒体に保持するアーカイブ274が付加されたものである。
出力方法制御部270は、図29に示した前記コマンド入力部210から入力された出力方法設定コマンドを受け付け、出力方法を切り替える出力方法設定部271、前記リアルタイム出力結果250、前記遅延出力結果251を前記出力方法設定部271で設定された出力方法に基づいて処理結果を出力するか否かを判定する出力結果制御部272、外部記憶媒体へのアーカイブを実行するアーカイブ実行部273から構成される。
ここで、アーカイブ274は、ファイル、データベース(DB)、の他、前記リアルタイム出力結果250、前記遅延出力結果251を保持するいかなる方法でも構わない。
図30は、前記コマンド入力部210において、前記リアルタイム出力結果250、前記遅延出力結果251の出力方法切り替えを設定する際の好適なコマンドの記述例である。
出力方法設定コマンド1801は、前記ユーザ114、または前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記出力方法設定部271において登録される。
出力方法設定コマンド1801は、すべての処理結果を出力するコマンドの記述例を表している。出力方法設定コマンド1802は、遅延出力結果251を出力せず、リアルタイム出力結果250のみを出力し、前記ウィンドウデータ領域242、一時保存領域243のメンテナンスのみ実行するコマンドの記述例を表している。出力方法設定コマンド1803は、遅延出力結果251を出力せず、遅延出力結果251を含む正しい処理結果を外部記憶媒体(アーカイブ)に保存するコマンドの記述例を表している。
図31は、出力方法を切り替えた場合に、前記出力方法制御部272が出力方法を制御する処理を表したフローチャートである。
まず、出力方法が遅延出力結果251を出力せず、遅延出力結果251を含む正しい処理結果を外部記憶媒体(アーカイブ)に保存する出力方法か否かを判定する(S2702)。前記ステップS2702でYESと判定された場合、未確定フラグ付きの処理結果はアーカイブせず、フラグなしのリアルタイム出力結果250、および確定フラグ付きの遅延出力結果251を外部記憶媒体にアーカイブする(S2703)。前記ステップS2702でNOと判定された場合、出力方法が遅延出力結果251を出力せず、リアルタイム出力結果250のみを出力し、前記ウィンドウデータ領域242、一時保存領域243のメンテナンスのみ実行する出力方法か否かを判定する(S2704)。
前記ステップS2703が終了した場合、および前記ステップS2704でYESと判定された場合、リアルタイム出力結果250のみを出力する(S2705)。前記ステップS2704でNOと判定された場合、すべての処理結果を出力する(S2706)。
前記ステップS2705が終了した場合、および前記ステップS2706が終了した場合、処理を終了する(S2707)。
<第三実施形態の具体例>
例えば、図20に示したリアルタイム出力結果250、および図21に示した遅延出力結果251に対して、出力方法を切り替える場合を以下に示す。
まず、前記出力方法設定コマンド1801により、すべての処理結果を出力する場合、前記ステップS2702でNOと判定され、前記ステップS2704でNOと判定されるため、前記ステップS2706が実行され、タプル1206からタプル1213、およびタプル1306からタプル1308は、すべて出力される。
次に、前記出力方法設定コマンド1802により、遅延出力結果251を出力せず、リアルタイム出力結果250のみを出力し、前記ウィンドウデータ領域242、一時保存領域243のメンテナンスのみ実行する場合、前記ステップS2702でNOと判定され、前記ステップS2704でYESと判定されるため、前記ステップS2705が実行され、リアルタイム出力結果250であるタプル1206からタプル1213が出力される。
次に、前記出力方法設定コマンド1803により、遅延出力結果251を出力せず、遅延出力結果251を含む正しい処理結果を外部記憶媒体(アーカイブ)に保存する場合、前記ステップS2702でYESと判定され、前記ステップS2703が実行される。そのため、リアルタイム出力結果250では、前記タプル1206、1207、1208、1210、1212がアーカイブされ、遅延出力結果251では、タプル1306からタプル1308がアーカイブされ、未確定フラグの付与された前記タプル1209、1211、1213はアーカイブされない。次に、前記ステップS2705が実行され、リアルタイム出力結果250であるタプル1206からタプル1213が出力される。
以上、本発明の第三の実施形態について説明した。
<まとめ>
本発明は、上記に示した第一から第三の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。また、上記に示した第一から第三の実施形態を組み合わせた実施形態も可能である。
例えば、上記の実施形態では、図2、図24、図29に示した結果復元タプル領域244に保持するデータ量に制限を設けなかったが、前記遅延タプル203の到着が遅れた場合、保持できる限界量を超えてしまう場合もある。そこで、メモリ上限値を定めて、上限値を超えた場合に、適切な処理をしてもよい。
以下に、詳しく説明する。
図32は、前記コマンド入力部210において、結果復元タプル領域のメモリ量上限値を設定する際の好適なコマンドの記述例である。
メモリ量上限値設定コマンド1901は、前記ユーザ114、または前記クライアント計算機115上で実行される前記アプリケーション121から前記コマンド入力部210を通して、前記出力方法設定部271において登録される。メモリ量上限値設定コマンド1901は、結果復元タプル領域244のメモリ量上限値を300MBに制限するコマンドの記述例を表している。
図32で設定したメモリ量上限値を超えた場合、結果復元タプル領域244のタイムスタンプの古いデータを削除する、入力ストリームデータを一時的に止める、入力ストリームデータの一部を削除して処理する(シュレッディング)、等いかなる処理をしても構わない。
ここで、図32では、メモリ量を設定するコマンドを示したが、メモリ以外のいかなる記憶媒体の量を設定してもよい。
また、上記の実施形態では、前記結果復元タプル領域244は前記問合せ実行木241で処理した一時保存結果を保持していたが、前記ストリームデータ201を保持しても構わない。例えば、前記遅延処理HBT202が到着してから前記遅延処理解消HBT204が到着するまでの前記ストリームデータ201を保持しても構わない。
また、上記の実施形態では、前記結果復元タプル領域244は前記ストリームデータ処理システム100内として説明したが、前記ストリームデータ処理システム100とは異なる別の計算機、もしくは外部記憶媒体に保持しても構わない。
また、上記の実施形態では、ストリームデータ処理システムにおいて遅延タプルを含むストリームデータを処理する例を説明したが、データベースシステム等のストリームデータ処理システム以外のシステムで、上記の実施形態で示した遅延タプルを含むストリームデータを処理してもよい。
また、上記の実施形態では、ストリームデータ処理システム100は、任意のコンピュータシステムとして説明したが、前記ストリームデータ処理システム100で行う処理の一部、若しくは全部をストレージ装置で行ってもよい。
また、上記の実施形態では、センサ基地局108が温度データ、および湿度データをストリームデータ201としてストリームデータ処理システム100に入力する例を説明したが、これに限定されるものではない。例えば、センサ基地局108に代わって多数のセンサノードを管理するセンサネットサーバが、センサノードの測定値をストリームデータ201と出力し、ストリームデータ処理システム100でユーザ116が理解可能な有意な情報を含むリアルタイム出力結果250に変換し、計算機117へ提供するようにしてもよい。また、ストリームデータ処理システム100に入力するデータは、RFIDリーダーで読み込んだタグの情報、RFIDを一元管理するRFIDミドルウェアシステムである計算機113から入力されるデータでもよい。他にも、ETCシステムなどの交通情報、自動改札機やクレジットカードなどのICカード情報、株価情報などの金融情報、製造工程管理情報、呼情報、システムログ、ネットワークアクセス情報、トレーサビリティ個品情報、監視映像メタデータ、Webクリックストリームなどでもよい。
以上のように、本発明は時々刻々と変化するストリームデータにおいて、遅延タプルがある場合も、アプリケーションタイムスタンプを用いてリアルタイムに処理結果を出力すること、遅延タプルが到着時に再計算し、正しい処理結果を求めることが可能である。特に、リアルタイムで処理する必要があるストリームデータの量が膨大な量になるファイナンシャルアプリケーション、交通情報システム、トレーサビリティシステム、センサモニタリングシステム、計算機システム管理などに適用することができる。
第1の実施形態を示し、本発明の計算機システムの一例を示すブロック図である。 本発明の第一実施形態を示したストリームデータ処理システム、及び関連するシステムの構成を示すブロック図である。 第1の実施形態を示し、ストリームデータ201の好適なデータフォーマットの例を模式的に表した図で、温度のストリームデータを示す。 第1の実施形態を示し、ストリームデータ201の好適なデータフォーマットの例を模式的に表した図で、湿度のストリームデータを示す。 第1の実施形態を示し、ストリームデータ201をストリームデータ処理システム100に登録または設定する際の好適なコマンドの記述例を示す説明図である。 第1の実施形態を示し、ストリーム管理テーブル224の構成例を表した図である。 第1の実施形態を示し、連続してストリームデータ処理システム100へ入力されたストリームデータ201を例示した図であり、温度ストリームデータ(S1)2011を表している。 第1の実施形態を示し、連続してストリームデータ処理システム100へ入力されたストリームデータ201を例示した図であり、湿度ストリームデータ(S2)2012を表している。 第1の実施形態を示し、問合せ登録コマンドをストリームデータ処理システム100に登録・設定する際の好適なコマンドの記述例を示す説明図である。 第1の実施形態を示し、問合せ管理テーブル224の構成例を表した図である。 第1の実施形態を示し、問合せ実行領域240の実行木241の好適な構成例を表した説明図である。 第1の実施形態を示し、ストリームデータ処理システム100の全体の処理を表したフローチャートである。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力されない場合の通常処理の結果の例を示す説明図で、前半を示す。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力されない場合の通常処理の結果の例を示す説明図で、後半を示す。 第1の実施形態を示し、未確定リアルタイム処理の処理手順を表したフローチャートである。 第1の実施形態を示し、遅延モードウィンドウオペレータ処理の処理手順を表したフローチャートである。 第1の実施形態を示し、遅延モード結合オペレータ処理の処理手順を表したフローチャートである。 第1の実施形態を示し、遅延モード集計オペレータ処理の処理手順を表したフローチャートである。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力された場合の未確定リアルタイム処理の結果の例を示す説明図で、前半を示す。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力された場合の未確定リアルタイム処理の結果の例を示す説明図で、後半を示す。 第1の実施形態を示し、遅延再計算処理の処理手順を表したフローチャートである。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力された場合の遅延再計算処理の結果の例を示す説明図で、前半を示す。 第1の実施形態を示し、遅延処理HBT202、および遅延タプル203が入力された場合の遅延再計算処理の結果の例を示す説明図で、後半を示す。 第1の実施形態を示し、リアルタイム出力結果250の例を表した説明図である。 第1の実施形態を示し、遅延出力結果251の例を表した説明図である。 第1の実施形態を示し、遅延処理HBT受信時の処理を表したシーケンス図である。 第1の実施形態を示し、遅延タプル受信時の処理を表したシーケンス図である。 第2の実施形態を示し、ストリームデータ処理システム、及び関連するシステムの構成を示すブロック図である。 第2の実施形態を示し、遅延処理HBT生成箇所設定コマンドをストリームデータ処理システム100に登録・設定する際の好適なコマンドの記述例を示す説明図である。 第2の実施形態を示し、ノードストリームデータ関係設定コマンドをストリームデータ処理システム100に登録・設定する際の好適なコマンドの記述例を示す説明図である。 第2の実施形態を示し、ノードストリーム管理テーブル263の構成例を表した図である。 第2の実施形態を示し、遅延処理HBT、および遅延処理解消HBTを生成する処理手順を表したフローチャートである。 第3の実施形態を示し、ストリームデータ処理システム、及び関連するシステムの構成を示すブロック図である。 第3の実施形態を示し、出力方法設定コマンドをストリームデータ処理システム100に登録・設定する際の好適なコマンドの記述例を示す説明図である。 第3の実施形態を示し、出力方法を切り替えた場合に、出力方法制御部272が出力方法を制御する処理手順を表したフローチャートである。 メモリ量上限値設定コマンドをストリームデータ処理システム100に登録・設定する際の好適なコマンドの記述例を示す説明図である。
符号の説明
100 ストリームデータ処理システム
108 センサ基地局
110 RFIDリーダー
112 ネットワーク
113 中継計算機
115、117 計算機
121、122、123 アプリケーション
201 ストリームデータ
202 遅延処理ハートビートタプル(HBT)
203 遅延タプル
204 遅延処理解消HBT
210 コマンド入力部
220 問合せ管理部
221 ストリームデータ設定部
222 ストリームデータ管理テーブル
223 問合せ設定部
224 問合せ管理テーブル
230 問合せ実行部
231 問合せ実行木スケジューラ
232 時間順ソート部
233 遅延処理HBT検知部
234 未確定フラグ付与部
235 結果復元タプル保持部
236 遅延タプル検知部
237 遅延タプル再計算部
238 遅延処理解消HBT検知部
240 問合せ実行領域
241 問合せ実行木
242 ウィンドウデータ領域
243 一時保存領域
244 結果復元タプル領域
250 リアルタイム出力結果
251 遅延出力結果

Claims (19)

  1. 計算機に入力されたストリームデータを1次情報として受け付けて、前記受け付けた1次情報のうち所定の期間の1次情報を取得して2次情報として生成する処理を前記計算機で実行するストリームデータ処理方法において、
    前記計算機に入力されたストリームデータを1次情報として受け付けるステップと、
    前記受け付けた1次情報に、当該1次情報が遅延して到着することを示す遅延情報が含まれるか否かの第1の判定結果を求めるステップと、
    前記第1の判定結果が遅延情報を含むときに、第1のリアルタイム処理を行うステップと、を含み、
    前記第1のリアルタイム処理を行うステップは、
    前記受け付けた1次情報のうち所定の生存期間に該当する1次情報を2次情報として抽出し、当該抽出した2次情報からリアルタイム処理結果を生成するステップと、
    前記遅延情報に対応する1次情報を受け付けるステップと、
    前記遅延した1次情報を受け付けた後に、前記リアルタイム処理結果を再計算するステップと、を含み、
    前記抽出した2次情報からリアルタイム処理結果を生成するステップは、
    前記遅延情報を受け付けたときに、前記遅延して到着する1次情報を除いた1次情報から前記生存期間に基づいて2次情報を求め、当該2次情報を再計算が必要なリアルタイム出力結果として出力するステップと、
    前記遅延情報に対応する1次情報を受け付けた後の再計算に必要な情報として、前記リアルタイム出力結果を求める結果復元情報を前記生存期間とともに保持するステップと、を含み、
    前記遅延した1次情報を受け付けた後に、前記リアルタイム処理結果を再計算するステップは、
    前記遅延した1次情報と前記結果復元情報から前記2次情報を再計算し、当該再計算の結果を遅延出力結果として出力するステップと、
    を含むことを特徴とするストリームデータ処理方法。
  2. 前記遅延情報を受け付けたとき前記2次情報を再計算が必要なリアルタイム出力結果として出力するステップでは、再計算が必要であることを示す未確定フラグを前記2次情報に付与して出力し、前記遅延した1情報を受け付けた後に前記2次情報を再計算し、遅延出力として出力するステップでは、再計算の結果であることを示す確定フラグを結果に付与して出力することを特徴とする請求項1に記載のストリームデータ処理方法。
  3. 前記受け付けた1次情報に、前記遅延情報に対応する1次情報が全て到着したことを示す遅延解消情報が含まれるか否かの第2の判定結果を演算するステップと、
    前記第2の判定結果が遅延解消情報を含むときに、第2のリアルタイム処理を行うステップと、をさらに含み、
    前記第2のリアルタイム処理を行うステップは、
    前記受け付けた1次情報のうち所定の生存期間に該当する1次情報を2次情報として抽出し、当該抽出した2次情報からリアルタイム処理結果を生成するステップを含み、
    前記第1の判定結果が遅延情報を含むときに、第1のリアルタイム処理を行うステップは、
    前記遅延情報を受け付けてから遅延解消情報を受け付けるまでの間で実行されることを特徴とする請求項1に記載のストリームデータ処理方法。
  4. 前記受け付けた1次情報のうち所定の生存期間に該当する1次情報を2次情報として抽出し、当該抽出した2次情報からリアルタイム処理結果を生成するステップは、
    前記1次情報を取得する処理要求を受け付けるステップと、
    前記処理要求が前記1次情報から切り取るデータ列を指定し、当該1次情報を2次情報へと変換するウィンドウ演算を実行する処理要求か否かの第3の判定結果を求めるステップと、
    前記第3の判定結果で処理要求がウィンドウ演算を実行する処理要求の場合に、前記処理要求が前記データ列の数を指定するか否かの第4の判定結果を求めるステップと、
    前記第4の判定結果が前記データ列の数を指定する場合に、前記2次情報に未確定フラグを付与し、前記再計算に必要な処理途中結果としての結果復元情報を格納する結果復元情報領域に、前記切り取られたデータ列を前記生存期間とともに格納するステップと、
    前記第4の判定結果が前記データ列の数を指定するものでない場合に、前記処理要求がグループ別にデータ列の数を指定するグループ別ウィンドウであり、前記2次情報をグループ別に分類するグループ化キーが前記遅延情報に含まれるキーと同一であるか否かの第5の判定結果を求めるステップと、
    前記第5の判定結果がグループ別ウィンドウ、かつ前記グループ化キーが前記遅延情報に含まれるキーと同一である場合に、前記2次情報に前記未確定フラグを付与するステップと、
    を含むことを特徴とする請求項1に記載のストリームデータ処理方法。
  5. 前記受け付けた1次情報のうち所定の生存期間に該当する1次情報を2次情報として抽出し、当該抽出した2次情報からリアルタイム処理結果を生成するステップは、
    前記1次情報を取得する処理要求を受け付けるステップと、
    前記1次情報の結合対象として結合用一時保存情報を取得し、処理結果が確定していない結合用一時保存情報には、処理結果が確定していないことを示す未確定フラグを付与して一時保存領域に保存するステップと、
    前記処理要求が複数の前記1次情報を所定の条件のもとに結合して2次情報を生成する結合演算を要求するか否かの第6の判定結果を求めるステップと、
    前記第6の判定結果が結合演算を要求する場合に、一時的にデータを保存する一時保存領域を参照し、結合対象の結合用に一時的に保存された結合用一時保存情報を取得するステップと、
    前記1次情報が前記未確定フラグ付きの結合用一時保存情報と結合するか否かを判定するステップと、
    前記1次情報が未確定フラグ付き情報であるか否かを判定するステップと、
    前記1次情報が前記未確定フラグ付きの結合用一時保存情報と結合する場合、もしくは前記1次情報が前記未確定フラグ付きの場合に、前記1次情報と結合用一時保存情報を結合した結果に未確定フラグを付与するステップと、
    前記再計算に必要な処理途中結果としての結果復元情報を格納する結果復元情報領域に結合用一時保存情報を前記生存期間とともに結合用結果復元情報として格納するステップと、
    を含むことを特徴とする請求項2に記載のストリームデータ処理方法。
  6. 前記遅延した1次情報を受け付けた後に、前記リアルタイム処理結果を再計算するステップは、
    前記処理要求が前記結合演算の要求を含むか否かの第7の判定結果を求めるステップと、
    前記第7の判定結果が結合演算の要求を含む場合に、前記遅延した1次情報のタイムスタンプに対応する前記生存期間を持つ前記結合用結果復元情報を前記結果復元情報領域から取得するステップと、
    前記遅延した1次情報と結合対象の前記結合用結果復元情報を結合するステップと、
    前記結合した結果に対して遅延した1次情報から再計算を行って処理結果が確定したことを表す確定フラグを付与して出力するステップと、
    前記遅延した1次情報のタイムスタンプよりも前記生存期間の生存終了時期が早い前記結果復元情報を結果復元情報領域から削除するステップと、
    を含むことを特徴とする請求項5に記載のストリームデータ処理方法。
  7. 前記受け付けた1次情報のうち所定の生存期間に該当する1次情報を2次情報として抽出し、当該抽出した2次情報からリアルタイム処理結果を生成するステップは、
    前記1次情報を取得する処理要求を受け付けるステップと、
    前記1次情報の集計対象として集計用一時保存情報を取得し、処理結果が確定していない集計用一時保存情報には、処理結果が確定していないことを示す未確定フラグを付与して一時保存領域に保存するステップと、
    前記処理要求が前記1次情報に対して集計処理を実行する要求か否かの第8の判定結果を求める処理と、
    前記第8の判定結果が集計処理を要求する場合、一時的にデータを保存する前記一時保存領域を参照し、集計対象の集計時保存情報を取得するステップと、
    前記集計用一時保存情報が前記未確定フラグ付きであるか否かを判定するステップと、
    前記1次情報が未確定フラグ付き情報であるか否かの第9の判定結果を求めるステップと、
    前記第8の判定結果で集計用一時保存情報が前記未確定フラグ付きである場合、もしくは前記第9の判定結果で前記1次情報が未確定フラグ付き情報である場合に、集計結果に未確定フラグを付与するステップと、
    前記再計算に必要な処理途中結果としての結果復元情報を格納する結果復元情報領域に、前記集計用一時保存情報を前記生存期間とともに集計用結果復元情報として格納するステップと、
    を含むことを特徴とする請求項2に記載のストリームデータ処理方法。
  8. 前記遅延した1次情報を受け付けた後に、前記リアルタイム処理結果を再計算するステップは、
    前記処理要求が集計オペレータであるか否かの第10の判定結果を求めるステップと、
    前記第10の判定結果が集計オペレータである場合に、前記結果復元情報領域を参照し、前記遅延した1次情報のタイムスタンプに対応する前記生存期間を持つ前記集計用結果復元情報を取得するステップと、
    前記遅延した1次情報と集計対象の前記集計用結果復元情報から集計結果を再計算するステップと、
    前記集計結果に対して遅延した1次情報から再計算を行って処理結果が確定したことを表す確定フラグを付与して出力するステップと、
    前記遅延した1次情報のタイムスタンプよりも前記生存期間の生存終了時期が早い前記結果復元情報を結果復元情報領域から削除するステップと、
    を含むことを特徴とする請求項7に記載のストリームデータ処理方法。
  9. 前記計算機のシステム時刻を取得するステップと、
    前記入力されたストリームデータのうち、前記ストリームデータを送信したノードが最後に送信したストリームデータのタイムスタンプをアプリケーション時刻情報として取得するステップと、
    前記アプリケーション時刻情報とシステム時刻とを比較してその差が前記ストリームデータのタイムアウトを検知するために予め設定された時間情報である遅延情報生成閾値以内であるか否かの第11の判定結果を求める処理と、
    前記第11の判定結果で前記アプリケーション時刻情報と前記システム時刻との差が前記遅延情報生成閾値を超えていれば、遅延情報を生成するステップと、をさらに含み、
    前記受け付けた1次情報に、当該1次情報が遅延して到着することを示す遅延情報が含まれるか否かの第1の判定結果を求めるステップは、
    前記生成された遅延情報を入力とすることを特徴とする請求項1に記載のストリームデータ処理方法。
  10. 前記遅延情報を生成するステップは、
    前記1次情報を送信する各ノードと前記1次情報との関係を管理するノードストリーム管理テーブル上の情報において、前記ノードから送られてくる前記ストリームデータの情報が予め設定されたスキーマ限定条件に含まれるか否かの第12の判定結果を求める処理と、
    前記第12の判定結果が前記スキーマ限定条件に含まれる場合に、前記遅延情報に前記スキーマ限定条件を付与することを特徴とする請求項9に記載のストリームデータ処理方法
  11. 予め設定された選択により、前記計算機からユーザが操作する別の計算機に対し、前記リアルタイム処理結果と前記遅延出力結果の双方を出力するか、または前記遅延出力結果を出力せず、前記リアルタイム処理結果のみを出力するか、の何れかに決定することを特徴とする請求項1に記載のストリームデータ処理方法。
  12. 予め設定された選択により、前記遅延出力結果を含む正しい処理結果を外部記憶媒体に保存するか否かを決定するステップをさらに含み、
    前記遅延出力結果を含む正しい処理結果を外部記憶媒体に保存する場合に、前記再計算が必要なリアルタイム出力結果は前記外部記憶媒体に保存せず、前記遅延情報を含まない1次情報から生成したリアルタイム出力結果、および前記遅延した1次情報により前記再計算を経たリアルタイム出力結果を前記外部記憶媒体に保存することを特徴とする請求項1に記載のストリームデータ処理方法。
  13. 前記再計算に必要な結果復元情報を前記生存期間とともに保持するデータ量が予め設定されたメモリ量上限値を超える場合に、前記結果復元情報うちのタイムスタンプの古いデータを削除するか、前記ストリームデータの入力を一次的にとめるか、もしくは前記ストリームデータの一部を削除して処理する何れかの手順を実行することを特徴とする請求項1に記載のストリームデータ処理方法。
  14. プロセッサと記憶装置及びインターフェースを備えて、前記記憶装置に設定されて、前記インターフェースを介して入力されたストリームデータを1次情報として取得し、該取得した1次情報に対して前記1次情報が処理対象となる生存期間を定めるウィンドウに基づいて2次情報を生成する計算機システムにおいて、
    前記1次情報の一部が遅延して到着することを表す遅延処理情報に基づいて、前記遅延して到着する1次情報を除く処理結果を、リアルタイム処理結果として出力する第1の処理部と、
    前記遅延処理情報に対応する1次情報が到着した場合の再計算に必要な結果復元情報を前記生存期間とともに保持する結果復元情報保持部と、
    前記遅延処理情報に対応する1次情報が到着したときに前記結果復元情報および前記遅延処理情報に対応する1次情報から前記2次情報を再計算し、当該再計算の結果を遅延出力結果として出力する遅延タプル再計算部と、
    を備えたことを特徴とする計算機システム。
  15. 前記入力されたストリームデータのうち、前記ストリームデータを送信したノードが最後に送信したストリームデータのタイムスタンプをアプリケーション時刻情報として取得し、前記アプリケーション時刻情報と計算機のシステム時刻とを比較してその差が前記ストリームデータのタイムアウトを検知するために予め設定された時間情報である遅延情報生成閾値以内であるか否かを判定するタイムアウト検知部と、
    前記タイムアウト検知部の判定結果が遅延情報生成閾値を超えたという判定である場合に、遅延処理情報を生成する遅延処理ハートビートタプル生成部と、
    を備えたことを特徴とする請求項14に記載の計算機システム。
  16. 前記第1の処理部は、
    前記リアルタイム処理結果に、再計算が必要な2次情報であることを示す未確定フラグを付与し、
    前記遅延タプル再計算部は、
    前記遅延出力結果に再計算の結果であることを示す確定フラグを付与することを特徴とする請求項14に記載の計算機システム。
  17. 前記リアルタイム処理結果、および前記遅延出力結果に対して、出力する結果が前記遅延出力結果を出力せず、前記遅延出力結果を含む正しい処理結果を外部記憶媒体に保存するか否かを設定する出力方法設定部と、
    前記出力する結果が前記遅延出力結果を出力せず、前記遅延出力結果を含む正しい処理結果を外部記憶媒体に保存する場合に、前記未確定フラグつきの処理結果は前記外部記憶媒体に保存せず、前記未確定フラグなし、および前記遅延処理情報に対応する1次情報により、処理を再計算し、処理結果が確定したことを表す確定フラグ付きの処理結果を外部記憶媒体に保存するアーカイブ実行部と、
    前記リアルタイム処理結果のみを出力する出力結果制御部と、
    を備えたことを特徴とする請求項16に記載の計算機システム。
  18. 計算機に入力されるストリームデータを1次情報として取得し、該取得した1次情報に対して前記1次情報が処理対象となる生存期間を定めるウィンドウに基づいて2次情報を生成するストリームデータ処理を計算機に実行させるプログラムにおいて、
    前記1次情報の一部が遅延して到着することを表す遅延情報に基づいて、前記遅延して到着する1次情報を除く処理結果を2次情報として抽出し、リアルタイム処理結果として出力する手順と、
    記遅延情報に対応する1次情報が到着した場合の再計算に必要な処理途中結果を前記生存期間とともに保持する手順と、
    前記遅延情報に対応する1次情報が到着したときに前記処理途中結果および前記遅延情報に対応する1次情報から前記2次情報を再計算し、遅延出力結果として出力する手順と、
    を計算機に実行させることを特徴とするプログラム。
  19. 前記リアルタイム処理結果として出力する手順は、
    前記リアルタイム処理結果に、再計算が必要な2次情報であることを示す未確定フラグを付与し、
    前記遅延出力結果として出力する手順は、
    前記遅延出力結果に再計算の結果であることを示す確定フラグを付与することを特徴とする請求項18に記載のプログラム。
JP2008115765A 2008-04-25 2008-04-25 ストリームデータ処理方法及び計算機システム Expired - Fee Related JP5198929B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008115765A JP5198929B2 (ja) 2008-04-25 2008-04-25 ストリームデータ処理方法及び計算機システム
US12/230,289 US7849227B2 (en) 2008-04-25 2008-08-27 Stream data processing method and computer systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008115765A JP5198929B2 (ja) 2008-04-25 2008-04-25 ストリームデータ処理方法及び計算機システム

Publications (2)

Publication Number Publication Date
JP2009266007A JP2009266007A (ja) 2009-11-12
JP5198929B2 true JP5198929B2 (ja) 2013-05-15

Family

ID=41216096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008115765A Expired - Fee Related JP5198929B2 (ja) 2008-04-25 2008-04-25 ストリームデータ処理方法及び計算機システム

Country Status (2)

Country Link
US (1) US7849227B2 (ja)
JP (1) JP5198929B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067456A (ja) * 2014-01-22 2014-04-17 Hitachi Ltd 処理方法、及びストリームデータ処理システム

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589436B2 (en) 2008-08-29 2013-11-19 Oracle International Corporation Techniques for performing regular expression-based pattern matching in data streams
JP5465413B2 (ja) * 2008-10-29 2014-04-09 株式会社日立製作所 ストリームデータ処理方法、及びそのシステム
JP5396184B2 (ja) * 2009-07-31 2014-01-22 株式会社日立製作所 計算機システム及び複数計算機によるストリームデータ分散処理方法
US9112724B2 (en) * 2009-12-01 2015-08-18 Cisco Technology, Inc. Minimum disruption MST reconfiguration (MDMR)
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
JP5354606B2 (ja) * 2010-02-10 2013-11-27 日本電信電話株式会社 データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム
EP2538343A4 (en) * 2010-02-18 2013-07-31 Hitachi Ltd INFORMATION AND COMMUNICATION PROCESSING SYSTEM, METHOD AND NETWORK NODES
US8676756B2 (en) * 2010-05-17 2014-03-18 Invensys Systems, Inc. Replicating time-series data values for retrieved supervisory control and manufacturing parameter values in a multi-tiered historian server environment
JP5583476B2 (ja) * 2010-05-21 2014-09-03 株式会社日立製作所 ノード装置、ノードシステム、および情報処理方法
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US8260803B2 (en) 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for data stream processing
US8620945B2 (en) 2010-09-23 2013-12-31 Hewlett-Packard Development Company, L.P. Query rewind mechanism for processing a continuous stream of data
US8260826B2 (en) 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. Data processing system and method
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US8880493B2 (en) 2011-09-28 2014-11-04 Hewlett-Packard Development Company, L.P. Multi-streams analytics
WO2013069078A1 (ja) * 2011-11-07 2013-05-16 株式会社 日立製作所 時系列データ処理装置、時系列データ処理方法、及び時系列データ処理プログラムを格納したコンピュータ読み取り可能な記録媒体
JP5818394B2 (ja) * 2011-11-10 2015-11-18 トレジャー データ, インク.Treasure Data, Inc. 大量データプラットフォームを操作するシステム及び方法
US8943120B2 (en) * 2011-12-22 2015-01-27 International Business Machines Corporation Enhanced barrier operator within a streaming environment
US8756209B2 (en) * 2012-01-04 2014-06-17 International Business Machines Corporation Computing resource allocation based on query response analysis in a networked computing environment
US9438656B2 (en) 2012-01-11 2016-09-06 International Business Machines Corporation Triggering window conditions by streaming features of an operator graph
US9430117B2 (en) 2012-01-11 2016-08-30 International Business Machines Corporation Triggering window conditions using exception handling
JPWO2013137067A1 (ja) * 2012-03-15 2015-08-03 日本電気株式会社 演算装置、演算方法及び演算プログラム
JP6040980B2 (ja) * 2012-03-16 2016-12-07 日本電気株式会社 時系列データ処理装置、時系列データ処理方法及び時系列データ処理プログラム
US9015339B2 (en) 2012-04-25 2015-04-21 International Business Machines Corporation Monitoring streams buffering to optimize operator procressing
US8768956B2 (en) * 2012-04-25 2014-07-01 Hitachi, Ltd. Stream data processing method with multiple windows on single stream
US9607045B2 (en) * 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
US8792633B2 (en) 2012-09-07 2014-07-29 Genesys Telecommunications Laboratories, Inc. Method of distributed aggregation in a call center
US8843524B2 (en) 2012-09-25 2014-09-23 International Business Machines Corporation Handling out-of-sequence data in a streaming environment
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9361308B2 (en) 2012-09-28 2016-06-07 Oracle International Corporation State initialization algorithm for continuous queries over archived relations
US9900432B2 (en) 2012-11-08 2018-02-20 Genesys Telecommunications Laboratories, Inc. Scalable approach to agent-group state maintenance in a contact center
US9756184B2 (en) 2012-11-08 2017-09-05 Genesys Telecommunications Laboratories, Inc. System and method of distributed maintenance of contact center state
US10412121B2 (en) * 2012-11-20 2019-09-10 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9477464B2 (en) * 2012-11-20 2016-10-25 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on sliding interval
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9069726B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Iteratively calculating standard deviation for streamed data
US9400823B2 (en) * 2012-12-20 2016-07-26 Hitachi, Ltd. Stream data processing method on recursive query of graph data
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9251205B2 (en) 2013-02-21 2016-02-02 International Business Machines Corporation Streaming delay patterns in a streaming environment
US9578171B2 (en) 2013-03-26 2017-02-21 Genesys Telecommunications Laboratories, Inc. Low latency distributed aggregation for contact center agent-groups on sliding interval
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9514214B2 (en) 2013-06-12 2016-12-06 Microsoft Technology Licensing, Llc Deterministic progressive big data analytics
US9384302B2 (en) 2013-06-17 2016-07-05 International Business Machines Corporation Generating differences for tuple attributes
WO2014204489A2 (en) * 2013-06-21 2014-12-24 Hitachi, Ltd. Stream data processing method with time adjustment
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
WO2015092395A1 (en) * 2013-12-17 2015-06-25 British Telecommunications Public Limited Company Sensor network
US9277018B2 (en) * 2014-06-11 2016-03-01 Verizon Patent And Licensing Inc. Mobile device detection of wireless beacons and automatic performance of actions
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
WO2016014925A2 (en) * 2014-07-25 2016-01-28 Ab Initio Technology Llc Mutable chronologies for accommodation of randomly occurring event delays
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
JP6021120B2 (ja) * 2014-09-29 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データをストリーム処理する方法、並びに、そのコンピュータ・システム及びコンピュータ・システム用プログラム
US9846632B2 (en) * 2014-10-08 2017-12-19 Signalfx, Inc. Real-time reporting based on instrumentation of software
US9846574B2 (en) * 2014-12-19 2017-12-19 Signalfx, Inc. Representing result data streams based on execution of data stream language programs
US10592500B2 (en) * 2015-01-27 2020-03-17 International Business Machines Corporation Eviction stream for data joins
US10394692B2 (en) * 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
US10459832B2 (en) * 2015-05-20 2019-10-29 International Business Machines Corporation How to track operator behavior via metadata
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
US20170293654A1 (en) * 2016-04-12 2017-10-12 International Business Machines Corporation Deferred joining of a stream of tuples
CN106874320A (zh) 2016-06-20 2017-06-20 阿里巴巴集团控股有限公司 分布式流式数据处理的方法和装置
US10740328B2 (en) 2016-06-24 2020-08-11 Microsoft Technology Licensing, Llc Aggregate-query database system and processing
US10726443B2 (en) 2016-07-11 2020-07-28 Samsung Electronics Co., Ltd. Deep product placement
US10552074B2 (en) 2016-09-23 2020-02-04 Samsung Electronics Co., Ltd. Summarized data storage management system for streaming data
US10127283B2 (en) 2016-10-31 2018-11-13 International Business Machines Corporation Projecting effect of in-flight streamed data on a relational database
US9836467B1 (en) * 2016-10-31 2017-12-05 International Business Machines Company Altering in-flight streamed data from a relational database
US10025826B2 (en) 2016-10-31 2018-07-17 International Business Machines Corporation Querying in-flight streamed data from a relational database
US10575067B2 (en) 2017-01-04 2020-02-25 Samsung Electronics Co., Ltd. Context based augmented advertisement
US10417239B2 (en) 2017-01-13 2019-09-17 International Business Machines Corporation Reducing flow delays in a data streaming application caused by lookup operations
US20180211176A1 (en) * 2017-01-20 2018-07-26 Alchemy IoT Blended IoT Device Health Index
US10678216B2 (en) 2017-02-28 2020-06-09 Sap Se Manufacturing process data collection and analytics
US10552435B2 (en) 2017-03-08 2020-02-04 Microsoft Technology Licensing, Llc Fast approximate results and slow precise results
CN107154834B (zh) * 2017-04-12 2018-11-13 重庆大学 一种cad、gis、swmm数据协同传输和组织管理方法
US11682045B2 (en) 2017-06-28 2023-06-20 Samsung Electronics Co., Ltd. Augmented reality advertisements on objects
JP6850215B2 (ja) * 2017-07-12 2021-03-31 ヤフー株式会社 情報処理装置、情報処理方法、およびプログラム
WO2019033397A1 (en) * 2017-08-18 2019-02-21 Paypal, Inc. REAL-TIME DATA PROCESSING AT SELF-GENERATION
US10691489B2 (en) 2018-01-29 2020-06-23 International Business Machines Corporation Managing the processing of streamed data in a data streaming application using query information from a relational database
US11204926B2 (en) 2018-10-31 2021-12-21 International Business Machines Corporation Storing partial tuples from a streaming application in a database system
CN110990438A (zh) * 2019-12-09 2020-04-10 北京明略软件系统有限公司 数据处理方法、装置、电子设备和存储介质
US11188534B2 (en) * 2020-01-14 2021-11-30 Microsoft Technology Licensing, Llc Optimizing input streams for a stream join model having a threshold function
US20230073627A1 (en) * 2021-08-30 2023-03-09 Datadog, Inc. Analytics database and monitoring system for structuring and storing data streams

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495600A (en) * 1992-06-03 1996-02-27 Xerox Corporation Conversion of queries to monotonically increasing incremental form to continuously query a append only database
AU2003211057A1 (en) * 2002-02-15 2003-09-09 Digital Fountain, Inc. System and method for reliably communicating the content of a live data stream
JP4687253B2 (ja) * 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
US7512829B2 (en) * 2005-06-09 2009-03-31 Microsoft Corporation Real time event stream processor to ensure up-to-date and accurate result
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
JP4804233B2 (ja) * 2006-06-09 2011-11-02 株式会社日立製作所 ストリームデータ処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067456A (ja) * 2014-01-22 2014-04-17 Hitachi Ltd 処理方法、及びストリームデータ処理システム

Also Published As

Publication number Publication date
US20090271529A1 (en) 2009-10-29
US7849227B2 (en) 2010-12-07
JP2009266007A (ja) 2009-11-12

Similar Documents

Publication Publication Date Title
JP5198929B2 (ja) ストリームデータ処理方法及び計算機システム
JP4804233B2 (ja) ストリームデータ処理方法
US8335782B2 (en) Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism
JP5154366B2 (ja) ストリームデータ処理プログラム及び計算機システム
JP4933222B2 (ja) インデックス処理方法及び計算機システム
US20200372007A1 (en) Trace and span sampling and analysis for instrumented software
US9170984B2 (en) Computing time-decayed aggregates under smooth decay functions
US11960443B2 (en) Block data storage system in an event historian
JP4880025B2 (ja) ストリームデータ処理方法、ストリームデータ処理プログラム及びストリームデータ処理装置
WO2020037917A1 (zh) 一种用户行为数据推荐方法、服务器及计算机可读介质
US9842134B2 (en) Data query interface system in an event historian
US10812322B2 (en) Systems and methods for real time streaming
CN111400288A (zh) 数据质量检查方法及系统
EP3531640B1 (en) Data stream guiding method, server, and system
CN115017159A (zh) 数据处理方法及装置、存储介质及电子设备
US20160170838A1 (en) Event data merge system in an event historian
CN113742172B (zh) 一种服务器日志的采集方法、系统及相关装置
JP6581395B2 (ja) フォーマット変換管理装置およびフォーマット変換管理方法
JP2009122995A (ja) 関連処理記録の管理システム及び管理方法
CN111291127A (zh) 一种数据同步方法、装置、服务器及存储介质
JP2016091556A (ja) 印刷装置データ処理システムおよび印刷装置データ処理方法
JP5372131B2 (ja) インデックス処理方法及び計算機システム
US20230073627A1 (en) Analytics database and monitoring system for structuring and storing data streams
TWM645374U (zh) 輿情分析蒐集系統
JP7103035B2 (ja) システム、方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5198929

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees