JPWO2016067335A1 - ストリームデータの処理方法及びストリームデータ処理装置 - Google Patents
ストリームデータの処理方法及びストリームデータ処理装置 Download PDFInfo
- Publication number
- JPWO2016067335A1 JPWO2016067335A1 JP2016556059A JP2016556059A JPWO2016067335A1 JP WO2016067335 A1 JPWO2016067335 A1 JP WO2016067335A1 JP 2016556059 A JP2016556059 A JP 2016556059A JP 2016556059 A JP2016556059 A JP 2016556059A JP WO2016067335 A1 JPWO2016067335 A1 JP WO2016067335A1
- Authority
- JP
- Japan
- Prior art keywords
- tuple
- input
- data
- queue
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/106—Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Abstract
プロセッサとメモリを備えた計算機で、データソースが付与したデータタイムスタンプとデータソースの識別子とを含む入力タプルを受信し、入力タプルを受信した時のシステムタイムスタンプを入力タプルに付与して保留タプルを生成し、データソースの識別子に対応するデータソース毎のキューに当該保留タプルを格納し、キューの先頭の保留タプルのデータタイムスタンプの順序でキューを並び替え、データタイムスタンプの値が最も小さい保留タプルを先頭に格納したキューで、先頭の保留タプルのシステムタイムスタンプに処理保留期間を加算した値よりも現在のシステムタイムスタンプの値の方が大きい場合、キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入する。
Description
本発明は、ストリームデータ処理の精度を向上させる技術に関する。
証券取引の自動化、交通情報処理の高度化、クリックストリームの解析といった、高いレートで継続的に発生する情報をリアルタイムに解析し、重要なイベントの発生に対して瞬時にアクションを起こす要求の高まりを背景に、高レートデータのリアルタイム処理を実現する、ストリームデータ処理が注目されている。
ストリームデータ処理は、様々なデータ処理に適用可能な汎用ミドルウェア技術であるため、個別案件ごとにシステムを構築するのでは間に合わないようなビジネス環境の急激な変化にも応えつつ、実世界のデータをリアルタイムにビジネスに反映することを可能とする。
ストリームデータ処理が対象とするストリームとは、タイムスタンプ付きのデータであるタプルが、連続してストリームデータ処理サーバに到来する時系列データである。ストリームデータ処理のユーザが、このストリームに対する監視ルールをクエリとして定義すると、ストリームデータ処理サーバでは、クエリ定義をクエリグラフに変換する。
クエリグラフは、オペレータと呼ばれる処理単位をノードとし、同オペレータ間のタプルキューをエッジとする、有向グラフである。入力ストリームを構成する個々のタプルについて、クエリグラフを通過させることで、データフロー的に処理を進める。
この処理は、データフロー型の処理であるため、クエリグラフを多段分割し、複数の計算資源によってパイプライン的に並列処理することができる。並列処理により、複数のデータソースが出力したストリームデータを処理する技術として、特許文献1、2が知られている。
特許文献1には、複数のストリームデータを結合してから処理する技術が開示されている。また、特許文献2には、複数のストリームデータ毎に独立したワークエリアを設ける技術が開示されている。
複数のデータソースからのストリームデータは、各データソースからストリームデータ処理サーバまでの経路の遅延などにより、タプルのタイムスタンプの順序でストリームデータ処理サーバに到着しない場合(Out−of−Order)がある。
上記特許文献1では、タプルと現在時刻に関連するタイムスタンプの減衰関数によって各タプルに重み付けを行っている。減衰関数は、よりタイムスタンプが新しいタプルに高い重みを与えているので、上述のようにOut−of−Order(順序の逆転)が発生した場合には、タプルのタイムスタンプの順序を正確に維持できないという問題があった。また、上記特許文献2では、ワークエリアを独立させて同一データソース内では、部分的にタプルをソートする。しかしながら、特許文献2では、タプルの全体的な順序については不定となる、という問題があった。
そこで本発明は、上記問題点に鑑みて成されたもので、ストリームデータ処理において、タプルのタイムスタンプの順序を維持することを目的とする。
本発明は、プロセッサとメモリを備えた計算機で、複数のデータソースから受信した入力タプルを処理するストリームデータの処理方法であって、前記計算機が、処理保留期間を設定する第1のステップと、前記計算機が、前記データソースによって付与されたデータタイムスタンプと、前記データソースの識別子とを含む前記入力タプルを受信する第2のステップと、前記計算機が、前記入力タプルを受信した時点のシステムタイムスタンプを当該入力タプルに付与して保留タプルを生成する第3のステップと、前記計算機が、前記保留タプルの前記データソースの識別子に対応するデータソース毎のキューに当該保留タプルを格納する第4のステップと、前記計算機が、前記キューの先頭の保留タプルのデータタイムスタンプを読み込んで、各キューを先頭の保留タプルのデータタイムスタンプの順序で並び替える第5のステップと、前記計算機が、前記データタイムスタンプの値が最も小さい保留タプルを先頭に格納したキューで、前記先頭の保留タプルのシステムタイムスタンプを読み込んで、当該システムタイムスタンプに前記処理保留期間を加算した値よりも現在のシステムタイムスタンプの値の方が大きいか否かを判定する第6のステップと、前記計算機が、現在のシステムタイムスタンプの値の方が大きいと判定した場合には、前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入する第7のステップと、前記計算機が、前記入力ストリームに投入した入力タプルに所定のクエリを実行する第8のステップと、を含む。
本発明によれば、入力タプルのデータタイムスタンプの順序を維持して、ストリームデータ処理を行うことが可能となる。
以下、本発明の一実施形態について添付図面を用いて説明する。
図1は、ストリームデータ処理を行う計算機システムの一例を示すブロック図である。ストリームデータ処理サーバ100は、CPUコア90−1〜90−4を含むCPU90と、データやプログラムを保持するメモリ103と、ネットワーク150に接続されたネットワークインタフェース105と、データやプログラムを格納するストレージ106と、これらの計算機資源を接続するバス104を含む計算機である。
メモリ103には、ストリームデータ処理を定義するストリームデータ処理部110が格納される。ストリームデータ処理部110は、CPUコア(または演算コア)90−1〜90−4によって実行可能な実行イメージである。
ストリームデータ処理サーバ100は、ネットワークインタフェース105を介してネットワーク150に接続される。ネットワーク150に接続されたホスト計算機130は、クエリの内容やタプルを整列させる設定を登録する登録インターフェース131を有する。ホスト計算機130のユーザは、登録インターフェース131を介してクエリを定義したストリームクエリ132や、タプルを整列させるパラメータを定義した入力タプル整列化設定133を生成して、ストリームデータ処理サーバ100に送信する。入力タプル整列化設定133は、後述するように、ストリームデータ処理サーバ100に到着したタプル(以下、入力タプル121とする)を、入力タプル121に付与されたデータタイムスタンプの順序でタプル整列化部211が並び替える際のパラメータを含む。なお、ホスト計算機130は入出力装置160によって、ユーザからの入力を受け付け、ストリームデータ処理サーバ100等からの出力を表示する。
ホスト計算機130から入力タプル整列化設定133を受信したストリームデータ処理サーバ100は、ストリームデータ処理部110のタプル入力部210で、複数のデータソースから受信した入力タプル121をデータタイムスタンプの順に整列させる。タプル入力部210は、ホスト計算機130から受信した入力タプル整列化設定133の内容に基づいて、複数のデータソースから受信した入力タプル121をデータタイムスタンプの順に整列させるタプル整列化部211を有する。
ホスト計算機130からストリームクエリ132を受信したストリームデータ処理サーバ100は、ストリームデータ処理部110で、受信したクエリ定義(ストリームクエリ132)に従ってストリームデータ処理を実行可能なクエリグラフを構築する。
ストリームデータ処理サーバ100は、ネットワーク150に接続されたデータ発生器(データソース)120から送信された入力タプル121を受信する。なお、入力タプル121は、データタイムスタンプとデータソースの識別子が付与されたデータである。なお、データタイムスタンプは、入力タプル121が送信されるときにデータソース(データ発生器120)で付与されたタイムスタンプである。
データ発生器120は、1以上で構成され、各データ発生器120がデータソースとなる。ストリームデータ処理サーバ100は、複数のデータソースから入力タプル121(ストリームデータ)を受け付ける。
そして、ストリームデータ処理サーバ100は、タプル入力部210のタプル整列化部211によって、受け付けた入力タプル121をデータタイムスタンプの順に整列させてから、前記クエリグラフに従って処理し、出力タプル141を生成する。ストリームデータ処理サーバ100は、この出力タプル141を、ネットワーク150に接続された結果受信計算機140に送信する。
ストリームデータ処理サーバ100のストレージ106は、ストリームデータ処理部110の実行イメージの他、一度受け取った前記ストリームクエリ132のテキストファイルを保存する。ストリームデータ処理部110は、起動時にストレージ106からこのクエリのファイルをロードし、クエリグラフを構築することも可能である。
ストリームデータ処理部110等の各機能部はプログラムとしてメモリ103にロードされる。CPU90は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU90は、ストリームデータ処理プログラムに従って処理することでストリームデータ処理部110として機能する。他のプログラムについても同様である。さらに、CPU90は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ストリームデータ処理部110の各機能を実現するプログラム、テーブル等の情報は、ストレージ106や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
図2A、図2Bは、ストリームデータ処理の一例を示すブロック図である。 図2Aは、ストリームデータ処理部110の一例を示すブロック図である。図2Bは、タプル入力部210の一例を示すブロック図である。
図2Aにおいて、ホスト計算機130のユーザがストリームクエリ132の登録操作を実行すると、クエリパーサ201が、ストリームクエリ132をクエリグラフ構成情報403に変換する。クエリ実行部203は、クエリグラフ構成情報202を処理して、クエリグラフを構成するオペレータ間の実行順序を決定し、クエリ実行部203に通知する。このオペレータ間の実行順序を決定する処理は、公知または周知の技術を用いることができ、例えば、特開2010−108152号公報の技術を適用すれば良い。
また、クエリパーサ201は、ストリームクエリ132からストリームデータの入力スキーマを入力ストリーム情報管理部204へ通知する。入力スキーマは、クエリで扱うデータの構成を示す。
クエリ実行部203は、入力ストリーム213−1〜213−3へ投入された入力タプルについてストリームデータ処理を実行する。入力ストリーム213−1〜213−3の総称を“−”のない符号213で表し、個々の構成要素を−1〜−nで表す。なお、他の構成要素についても同様であり、個々の構成要素を−1〜−nで表し、構成要素全体を“−”のない符号で表すものとする。
入力ストリーム213−1〜213−3には、後述するように、タプル入力部210−1〜210−3でデータタイムスタンプの順序で整列した入力タプル121が投入される。タプル入力部210−1〜210−3は、異なる種類のストリームデータ処理を行うものであり、それぞれが独立して機能する。クエリ実行部203では、入力ストリーム213−1〜213−3から入力された入力タプル121についてそれぞれ処理が実行される。
ホスト計算機130のユーザが入力タプル整列化設定133の登録操作を実行すると、入力タプル整列化設定受付部205が入力タプル整列化設定133の情報を受け付けて、タプル入力部210−1〜210−3へ入力する。なお、タプル入力部210−1〜210−3は同様の構成であるので、以下ではタプル入力部210−1について説明する。
入力タプル整列化設定133の情報は、入力タプル121のデータソース(データ発生器120)の識別子を格納するカラムの位置を示すデータソース識別カラム134と、入力タプル121のデータタイムスタンプを格納するカラムの位置を示すデータソース時刻カラム135と、後述するようにタプルを入力ストリーム213へ投入するまで保留する期間を決定する処理保留期間136と、後述するようにツリーの削除を保留する条件を決定するツリー回収保留回数137と、を含む。
データソース識別カラム134とデータソース時刻カラム135は、入力タプル121内でデータの位置を特定する情報である。処理保留期間136とツリー回収保留回数137は、ホスト計算機130が入力装置(図示省略)を介してユーザから受け付けた値であり、後述する処理を開始する際の閾値として機能する。入力タプル整列化設定受付部205は、ストリームデータ処理サーバ100が受け付けた入力タプル整列化設定133を、各タプル入力部210へ通知する。
タプル入力部210は、受け付けた入力タプル整列化設定133に基づいて、入力キュー212へ入力された入力タプル121を、データソース毎にデータタイムスタンプの順序に補正して、入力ストリーム213へ投入する。
入力ストリーム213へ投入された入力タプルは、クエリ実行部203で所定のクエリ処理が行われる。クエリ実行結果は出力タプル141としてタプル出力部206出力される。本実施例では、出力タプル141は、ストリームデータ処理サーバ100から図1に示す結果受信計算機140へ送信される。
上記タプル入力部210では、タプル整列化部211が、入力タプル121にストリームデータ処理サーバ100のシステムタイムスタンプを付与して保留タプル521として生成する。
タプル整列化部211は、データソース毎に保留タプル521をデータソース別キュー219へキューイングし、時刻順整列ツリー218で後述する補正を行って、入力タプル121をデータタイムスタンプの順序に補正する。そして、タプル入力部210は、タプル整列化部211でデータタイムスタンプの順序に補正した入力タプル121を入力ストリーム213へ投入する。
図2Bは、タプル整列化部211の一例を示すブロック図である。タプル整列化部211は、入力タプル整列化設定受付部205から受け付けた入力タプル整列化設定133を格納する入力タプル整列化設定保存部214と、入力タプル121のデータソース毎のキュー(またはバッファ)を保管するデータソース別キュー保管部215と、データソース毎に設定されて入力タプル121(保留タプル521)を格納するデータソース別キュー219と、データソース別キュー219をリーフノードに格納する時刻順整列ツリー218と、システムタイムスタンプを生成するシステム時計216と、入力ストリーム213へ投入した入力タプル121を計数する連続タプル入力数計数部217と、入力ストリーム213へ投入した入力タプル121のデータタイムスタンプを記憶する最新データソース時刻記憶部220と、を含む。
データソース別キュー保管部215は、図5で示すように、データソースの識別子(図中id00〜id03)毎に対応するデータソース別キュー219−0〜219−3(以下、Q00〜Q03で示す)がそれぞれ設定された例を示す。
タプル整列化部211は、データソース別キューQ00〜Q03に格納する入力タプル121(保留タプル521)のデータタイムスタンプの値に基づいて、時刻順整列ツリー218内でデータソース別キューQ00〜Q03をリーフノード613として配置する。
そして、タプル整列化部211は、先頭の入力タプル121のデータタイムスタンプの順序でデータソース別キューQ00〜Q03を整列させ、後述するようにシステムタイムスタンプに基づいて入力ストリーム213へ入力タプル121を投入する。
タプル入力部210から入力ストリーム213へ投入された入力タプル121は、クエリ実行部203で所定のクエリ処理が行われ、出力タプル141としてストリームデータ処理サーバ100から出力される。
<入力タプルとデータタイムスタンプ>
図4は、ストリームデータ処理サーバ100が、データソース毎に入力タプル121〜128を受け付ける処理を示すブロック図である。本発明では、ストリームデータ処理サーバ100が、複数のデータ発生器120(以下、データソース120−0〜120−2)から受け付けた入力タプル121〜128を処理する。なお、以下では、個々の入力タプルを符号121〜128で示し、入力タプルの総称を符号121で示す。
図4は、ストリームデータ処理サーバ100が、データソース毎に入力タプル121〜128を受け付ける処理を示すブロック図である。本発明では、ストリームデータ処理サーバ100が、複数のデータ発生器120(以下、データソース120−0〜120−2)から受け付けた入力タプル121〜128を処理する。なお、以下では、個々の入力タプルを符号121〜128で示し、入力タプルの総称を符号121で示す。
データソース120−0〜120−2は、データタイムスタンプ(図中TIME)と、データソース120の識別子(図中SID)を図示しないデータに付与した入力タプル121をストリームデータ処理サーバ100へ送信する。
各データソース120は、データタイムスタンプの順序で、入力タプル121を送信する。しかしながら、ストリームデータ処理サーバ100では、前記課題でも述べたように、通信経路の遅延や、通信経路上で行われる処理の遅延などによって、全てのデータソース120から受信した入力タプル121は、データタイムスタンプの順序で到着しない場合がある。
図4はストリームデータ処理サーバ100が、入力タプル127、121、128、122、124、125の順で各入力タプルを受け付けた例を示す。各データソース120からはデータタイムスタンプの順序で、各入力タプル121がストリームデータ処理サーバ100へ到着する。例えば、データソース120−2からは、データタイムスタンプが10時05分0.012秒の入力タプル127の後に、データタイムスタンプが10時05分1.789秒の入力タプル128がストリームデータ処理サーバ100へ到着している。
一方、ストリームデータ処理サーバ100に到着した全ての入力タプル121のデータタイムスタンプの順序は、データタイムスタンプが10時05分2.345秒の入力タプル122の後に、データタイムスタンプが10時05分1.456秒の入力タプル124が到着しており、異なるデータソース120間では、データタイムスタンプの順序が逆転する場合がある。
データソース120−1の入力タプル124は、データソース120−0の入力タプル121の後、かつ、データソース120−2の入力タプル128の前に、クエリ実行部203で処理をしなければ、前記課題で述べたようにデータタイムスタンプの順序でストリームデータ処理を行うことはできない。
そこで、本発明は、図4のように、データソース120間で入力タプルの到着順序とデータタイムスタンプの順序が一致しない場合に、タプル整列化部211が入力タプル121の順序を補正してから入力ストリーム213へ投入し、クエリ実行部203ではデータタイムスタンプの順序でクエリ処理を行う。
<タプル整列化部>
図5は、ストリームデータ処理サーバ100のタプル整列化部211が、データタイムスタンプの順序に入力タプル121の順序を補正する処理の一例を示すブロック図である。
図5は、ストリームデータ処理サーバ100のタプル整列化部211が、データタイムスタンプの順序に入力タプル121の順序を補正する処理の一例を示すブロック図である。
タプル整列化部211は、まず、ホスト計算機130から受け付けた入力タプル整列化設定133を入力タプル整列化設定保存部214に格納する。図示の例では、データソース識別カラム134に“SID”が格納され、データソース時刻カラム135に“TIME”が格納され、処理保留期間136に“2秒”が格納され、ツリー回収保留回数137に“4回”が格納される。
図示の例では、ストリームデータ処理サーバ100が、入力タプル127、121、128、122の順に受け付けてキューイングした後、入力タプル124が入力キュー212−1へ入力される。
タプル整列化部211は、システム時計216から現在時刻(システムタイムスタンプ)を取得して、入力された入力タプル124にシステムタイムスタンプを付加し、保留タプル524とする。タプル整列化部211は、データソース識別カラム134のSIDに対応する入力タプル124のデータソース識別子=id01を取得する。なお、本実施例では、入力タプルにシステムタイムスタンプを付加したものを保留タプルとする。
タプル整列化部211は、時刻順整列ツリー218を参照してデータソース識別子に対応するデータソース別キュー219がリーフノード613として存在するか否かを判定する。データソース別キュー219がリーフノード613として存在しない場合は、タプル整列化部211は、データソース別キュー保管部215からデータソース識別子に対応するデータソース別キュー219を選択する。
この例では、データソース識別子=id01に対応するデータソース別キューはQ01(219−1)となる。そして、タプル整列化部211は、データソース別キューQ01に保留タプル524を格納する。
一方、データソース別キューQ01がリーフノード613として存在する場合は、タプル整列化部211が、当該データソース別キューQ01の末尾に新たな保留タプル524を追加する。
タプル整列化部211は、新たにデータソース別キューQ01を時刻順整列ツリー218へ(リーフノード613として)挿入する際に、データタイムスタンプを順序キーとして、ルートノード611に接続されるブランチ612のうち、保留タプル524のデータタイムスタンプを範囲に含むものを選択する。
タプル整列化部211は、受け付けた入力タプル124に現在のシステムタイムスタンプを付加してストリームデータ処理サーバ100のシステムタイムスタンプを保留タプル524としてデータソース別キューQ01へ格納する。
その後、タプル整列化部211は、時刻順整列ツリー218内のデータソース別キュー219の先頭の保留タプル(以下、先頭タプル)のうち、最小(最古)のデータタイムスタンプを有する保留タプルのシステムタイムスタンプを取得する。図5において、先頭タプルのうち最古のデータタイムスタンプは、データソース別キューQ02の保留タプル527で、10時5分0.012秒である。
タプル整列化部211は、システム時計216から取得した現在のシステムタイムスタンプと、最古のデータタイムスタンプを有する保留タプル527のシステムタイムスタンプに処理保留期間136(2秒)を加えた値とを比較する。
すなわち、タプル整列化部211は、現在のシステムタイムスタンプ(10時7分4.500秒)が、保留タプル527のシステムタイムスタンプ(10時7分2.300秒)に処理保留期間136の“2秒”を加算した値(10時7分4.300秒)を超えていれば、当該保留タプル527の入力タプル127を入力ストリーム213に投入する。
後述するように、時刻順整列ツリー218に接続されたデータソース別キューの先頭タプルのうち最古のデータタイムスタンプを持つ入力タプルを、順次入力ストリーム213へ投入することで、入力タプル121をデータタイムスタンプの順序で処理することができるのである。
タプル整列化部211は、保留タプル527から入力タプル127を取り出して、入力ストリーム213−1(以下、213)へ投入すると、連続タプル入力数計数部217の値に1を加算する。また、タプル整列化部211は、入力ストリーム213へ投入した入力タプル127のデータタイムスタンプの値を最新データソース時刻記憶部220に格納する。
なお、タプル整列化部211は、先頭タプルを入力ストリーム213へ投入した後、新たに先頭となった保留タプルのデータタイムスタンプを順序キーとして、データタイムスタンプの順序となるリーフノード613の位置へデータソース別キュー219を移動させる。
また、タプル整列化部211は、連続タプル入力数計数部217の値がツリー回収保留回数137を超えると、保留タプルがなくなったツリーを削除して計算機リソースを回収する。
タプル整列化部211は、上記の処理により入力タプル124にシステムタイムスタンプを付加して保留タプルを生成し、時刻順整列ツリー218に保留タプル524を挿入して、リーフノード613のデータソース別キュー219の位置をデータタイムスタンプの時刻順で並び替える。
そして、データタイムスタンプが最古の先頭タプルのシステムタイムスタンプに処理保留期間136を加えた時刻が、現在のシステムタイムスタンプ未満であれば、当該先頭タプルの入力タプル121を入力ストリームに投入していく。換言すれば、現在のシステムタイムスタンプが、先頭タプルのシステムタイムスタンプに処理保留期間136を加えた時刻を経過していれば、タプル整列化部211は、当該先頭タプルの入力タプル121を入力ストリームに投入する。
これにより、ストリームデータ処理サーバ100は、複数のデータソース120から受け付けた入力タプル121をデータタイムスタンプの順序に補正してからクエリ処理を実現することができる。
また、タプル整列化部211は、ツリー回収保留回数137によって、時刻順整列ツリー218のうち、保留タプル521が入力ストリーム213へ投入されて空になったツリーを削除するタイミングを制御することができる。空になったツリーを削除するには、ストリームデータ処理サーバ100に大きな負荷がかかるため、頻繁にツリーを削除する処理が行われるのを抑制できる。なお、削除可能な空のツリーは、最新データソース時刻記憶部220に格納されたデータタイムスタンプよりも前(古い)のツリーである。
<時刻順整列ツリー>
図6は、時刻順整列ツリー218の一例を示すブロック図である。時刻順整列ツリー218には、図6で示すように、ルートノード611にブランチ612(RA、RB、RC)が接続される。各ブランチ612には、データソース別キュー219がリーフノード613として接続されてツリーを構成する。
図6は、時刻順整列ツリー218の一例を示すブロック図である。時刻順整列ツリー218には、図6で示すように、ルートノード611にブランチ612(RA、RB、RC)が接続される。各ブランチ612には、データソース別キュー219がリーフノード613として接続されてツリーを構成する。
各ブランチ612には、先頭タプルのデータタイムスタンプが、ルートノード611に記憶されている順序キー(データタイムスタンプ)を区切りとする、時刻範囲に含まれるデータソース別キュー219が、リーフノード613として接続される。本実施例では、時刻順整列ツリー218としてバランス型ツリーを用いる例を示す。バランス型ツリーとしては、B+ツリーやBツリーを採用する例を示す。時刻順整列ツリー218は、これに限定されるものではなく、公知または周知の手法を採用することができる。
図6の例では、ルートノード611に、各ブランチ612(RA、RB、RC)の時刻範囲を区切る順序キーとして、10:05:01.0および10:05:02.0が記憶されている。図中、RAは、10時5分01秒以下の時刻範囲のブランチである。RBは、10時5分01秒を超え、10時5分02秒以下の時刻範囲のブランチである。RCは、10時5分02秒を超える時刻範囲のブランチである。
図6において、ブランチRAのリーフノード613には、データソース別キュー219−2(以下、Q02)と219−0(以下、Q00)が配置される。データソース別キューQ02の先頭タプルのデータタイムスタンプは、10時5分0.012秒で、データソース別キューQ00の先頭タプルのデータタイムスタンプは、10時5分0.234秒であり、先頭タプルの時刻順では、Q02<Q00となっている。
そして、ブランチRBのリーフノード613には、データソース別キュー219−1(以下、Q01)が配置される。データソース別キューQ01の先頭タプルのデータタイムスタンプは、10時5分01.456秒である。リーフノード613において、データソース別キューQ00〜Q02の先頭タプルのデータタイムスタンプは、時刻(時系列)の順序で並んでいる。
そして、各データソース別キュー219の内部では、先頭タプルから図中下方の保留タプルに向けてデータタイムスタンプの値が増大するようにキューイングされる。例えば、図示のデータソース別キューQ02では、先頭タプル(保留タプル527)のデータタイムスタンプは、10時5分0.012秒であり、次の保留タプル528のデータタイムスタンプは10時5分01.789秒となり、データソース別キュー219の図中下方に向けて時刻が増大する。なお、以下では保留タプルの総称を符号521で示し、個々の保留タプルを符号521〜528で示す。
本発明の時刻順整列ツリー218では、リーフノード613の先頭タプルのデータタイムスタンプを順序キーとすることにより、ブランチ612を容易に決定することができる。
タプル整列化部211は、先頭タプルのデータタイムスタンプが時系列の順序を維持するようにデータソース別キュー219をノード間で移動して、リーフノード613を並び替える。これにより、複数のデータソース120から到着する入力タプル121の順序が、データタイムスタンプの順序から逸脱しても、処理保留期間136内であればデータタイムスタンプの順序に補正することが可能となるのである。
<タプル整列化部で行われるタプル入力部の処理>
図3A、図3Bは、タプル整列化部211で行われる処理の一例を示すフローチャートである。なお、図3Aはフローチャートの前半部で、図3Bは後半部である。この処理は、入力キュー212へ入力タプル121が入力されたときに繰り返して実行される。
図3A、図3Bは、タプル整列化部211で行われる処理の一例を示すフローチャートである。なお、図3Aはフローチャートの前半部で、図3Bは後半部である。この処理は、入力キュー212へ入力タプル121が入力されたときに繰り返して実行される。
タプル整列化部211は、ステップ301で、入力キュー212から入力タプル121を取得し、システム時計216から現在のシステムタイムスタンプを取得する。そして、タプル整列化部211は、入力タプル121にシステムタイムスタンプを付加して保留タプル521を生成する。
タプル整列化部211は、ステップ302で、保留タプル521のデータソース識別カラム134の値(データソース識別子:SID)をキーとして、データソース別キュー保管部215からデータソース別キュー219を選択する。
タプル整列化部211は、ステップ303で、時刻順整列ツリー218のリーフノード613に上記ステップ302で選択したデータソース別キュー219が存在するか否かを判定する。データソース別キュー219が存在する場合にはステップ305へ進み、データソース別キュー219が存在しない場合にはステップ304へ進む。
タプル整列化部211は、ステップ305で、データソース別キュー219が空であるか否かを判定する。データソース別キュー219が空であれば、ステップ307に進み、空でない場合にはステップ306へ進む。タプル整列化部211は、ステップ306で、データソース別キュー219の末尾に当該保留タプルを追加する。その後、ステップ309へ進む。
一方、ステップ303でデータソース別キュー319が存在しない場合、タプル整列化部211は、ステップ304で、データソース120の識別子に対応するデータソース別キュー219を生成し、データソース別キュー保管部215に格納する。その後、ステップ307へ進む。
タプル整列化部211は、ステップ307で、空のデータソース別キュー219に当該保留タプル521を追加する。その後、ステップ308へ進む。タプル整列化部211は、ステップ308で、保留タプル521のデータソース時刻カラム135の値(データタイムスタンプ)を順序キーとして、時刻順整列ツリー218で該当するリーフノード613の位置へデータソース別キュー219を挿入する。その後、ステップ309へ進む。
タプル整列化部211は、ステップ309で、時刻順整列ツリー218でデータタイムスタンプが最小(最古)のリーフノード613に位置するデータソース別キュー219の先頭タプルを取得する。そして、タプル整列化部211は、当該先頭タプルのシステムタイムスタンプについて、現在のシステムタイムスタンプの値が、先頭タプルのシステムタイムスタンプに処理保留期間136を加算した値を超えているか否かを判定する。
タプル整列化部211は、先頭タプルのシステムタイムスタンプ+処理保留期間<現在のシステムタイムスタンプであれば、図3Bのステップ311へ進み、そうでなければ、保留タプル521の追加のみで処理を終了する。
タプル整列化部211は、ステップ311で、当該先頭タプルからシステムタイムスタンプを削除した入力タプル121を、入力ストリーム213へ投入する。そして、タプル整列化部211は、当該入力タプル121のデータタイムスタンプを最新データソース時刻記憶部220に格納する。さらに、タプル整列化部211は、当該先頭タプルを当該データソース別キュー219から削除する。
タプル整列化部211は、ステップ312で、入力ストリーム213へ入力タプル121を1つ投入したので、連続タプル入力数計数部217の値をインクリメントする。
タプル整列化部211は、ステップ313で、連続タプル入力数計数部217の値がツリー回収保留回数137以上になったか否かを判定する。連続タプル入力数計数部217がツリー回収保留回数137以上であればステップ314へ進み、時刻順整列ツリー218のうち空のブランチを削除する。一方、連続タプル入力数計数部217がツリー回収保留回数137未満であればステップ315へ進む。
タプル整列化部211は、ステップ315で、時刻順整列ツリー218のルートノード611から、最新データソース時刻記憶部220に記憶された時刻より以前のブランチ612を削除する。そして、タプル整列化部211は、連続タプル入力数計数部217の値を0にリセットしてからステップ315へ進む。
タプル整列化部211は、ステップ315で、上記ステップ311で先頭タプルを削除したデータソース別キュー219が空であるか否かを判定する。当該データソース別キュー219が空であればステップ317へ進み、空でなければステップ316へ進む。
タプル整列化部211は、ステップ316で、上記ステップ311で削除した先頭タプルの次の保留タプル521を先頭タプルに繰り上げる。そして、タプル整列化部211は、新たな先頭タプルのデータタイムスタンプの値を順序キーとして、時刻順整列ツリー218のうち該当するリーフノード613の位置へ、新たな先頭タプルを格納したデータソース別キュー219を挿入する。その後、ステップ317へ進む。
タプル整列化部211は、ステップ317で、時刻順整列ツリー218のうち、データタイムスタンプが最小のリーフノード613を、その次に小さいリーフノード613へ移動する。
次に、タプル整列化部211は、図3Aのステップ309へ戻って上記処理を繰り返し、データタイムスタンプが最小(最古)のリーフノード613で、先頭タプルのシステムタイムスタンプ+処理保留期間136<現在のシステムタイムスタンプの条件を満たす間は上記処理を繰り返す。
以上の処理により、新たに生成した保留タプル521をデータソース毎にデータソース別キュー219へ格納する処理と、処理保留期間136を経過していればデータタイムスタンプが最小の先頭タプルを入力ストリーム213へ投入する処理と、連続タプル入力数計数部217の値がツリー回収保留回数137以上であれば、空きツリーを回収する処理が所定の条件で行われる。
上記ステップ301〜312では、上記図5で示したように、入力タプル124にシステムタイムスタンプが付加された保留タプル524が生成され、データソース別キューQ01に格納される。データソース別キューQ01は、先頭タプルである保留タプル524のデータタイムスタンプに応じて、ブランチRBの配下のリーフノード613として配置される。
上記ステップ316、317で行われる処理について図7を用いて説明する。図7は、データソース毎の保留タプルの処理でデータソース別キューを移動する処理を示すブロック図である。
図7は、タプル整列化部211が、図5に示したデータソース別キューQ02の先頭タプル(保留タプル527)から入力タプル127を選択して入力ストリーム213へ投入した後に、異なるリーフノード613の位置へデータソース別キューQ02を挿入する例を示す。
まず、タプル整列化部211は、データソース別キューQ02から入力ストリーム213へ入力タプル127を投入し、先頭タプルを空にする。
次に、タプル整列化部211は、先頭タプルの次の保留タプル528をデータソース別キューQ02の先頭タプルに繰り上げる。そして、タプル整列化部211は、先頭タプル(528)のデータタイムスタンプの値を順序キーとして、データソース別キューQ02を時刻順整列ツリー218のリーフノード613として挿入する。
先頭タプルに入力タプル127が含まれていた時点では、データタイムスタンプが10時5分0.012秒であったので、データソース別キューQ02はブランチRAの配下のリーフノード613で、データソース別キューQ00の先頭タプルの値よりも時刻の値が小さい位置に挿入されていた。
一方、データソース別キューQ02で保留タプル528が先頭タプルになると、入力タプル128のデータタイムスタンプは、10時5分1.789秒であるので、ブランチRBの配下で、データタイムスタンプがデータソース別キューQ01よりも大きいリーフノード613として、データソース別キューQ02が挿入される。
上記処理により、タプル整列化部211は、先頭タプルが更新されたデータソース別キューQ02を、新たな先頭タプルのデータタイムスタンプに対応するブランチ612の配下に移動させる。これにより、タプル整列化部211は、先頭タプルのデータタイムスタンプの順序でデータソース別キュー219を時刻順整列ツリー218上で整列させることができる。
なお、ブランチRAの配下のリーフノード613には、データソース別キューQ02の定義が残される。データソース別キュー219は、後述するように、保留タプル521がなくなってもキューの定義と、ブランチ612及びリーフノード613が残る。また、タプル整列化部211は、入力ストリーム213へ入力タプル127を投入した後にデータソース別キューQ02が空となった場合、他のリーフノード613へのデータソース別キューQ02の移動(挿入)は実施しない。
図8は、データソース毎の保留タプル521の処理で入力ストリームへのタプルの詰め込みが完了した状態を示すブロック図である。図8は、タプル整列化部211が、図5に示したデータソース別キューQ00の先頭タプル(保留タプル521)から入力タプル121を選択して入力ストリーム213へ投入した後に、異なるリーフノード613としてデータソース別キューQ00を挿入した後の例を示す。
図示の例では、上記図3Aのステップ309で行われる処理を示す。タプル整列化部211は、先頭タプルのデータタイムスタンプの値が最小のリーフノード613において、現在のシステムタイムスタンプの値が、保留タプル524に格納されたシステムタイムスタンプの値に処理保留期間136(2秒)を加算した値を超えていなければ、処理保留期間136内と判定する。この処理保留期間136において、タプル整列化部211は、入力ストリームへの入力タプル121の投入を行わずに処理を終了する。
本発明では、ストリームデータ処理サーバ100へ入力タプル121が到着したときのシステムタイムスタンプの値に処理保留期間136を加算した値まで、入力ストリーム213への投入を保留する。これにより、データソース間で通信経路の遅延時間が異なる場合でも、所定の処理保留期間136内でデータタイムスタンプの順序で入力タプル121を並び替えることができる。
図9、図10は、空になったデータソース別キューQ00、Q02、リーフノード613及びブランチ612を削除する処理を示す。この処理は、図3Bのステップ311〜314に相当する。
図9では、タプル整列化部211は、ストリームデータ処理サーバ100で受信した入力タプル125にシステムタイムスタンプを付与して、保留タプル525としてデータソース別キューQ01へ格納する。
そして、タプル整列化部211は、データソース別キューQ02の先頭タプル(128)を入力ストリーム213へ投入する。タプル整列化部211は、入力ストリーム213へ投入した入力タプル128のデータタイムスタンプ(10時5分1.789秒)の値を最新データソース時刻記憶部220へ格納する(図3Bのステップ311)。
次に、タプル整列化部211は、連続タプル入力数計数部217の値をインクリメントする(図3Bのステップ312)。タプル整列化部211は、連続タプル入力数計数部217の値がツリー回収保留回数137(4回)以上になったか否かを判定する(図3Bのステップ313)。
連続タプル入力数計数部217の値が4になっているので、タプル整列化部211は、時刻順整列ツリー218のルートノード611から、最新データソース時刻記憶部220の時刻(10時5分1.789秒)よりも以前のブランチ612及びリーフノード613を削除する(図3Bのステップ314)。
図9の例では、直近に入力ストリーム213へ投入した入力タプル128のデータタイムスタンプは、10時5分1.789秒であるので、当該時刻以前のブランチはRAである。したがって、同ブランチ612及びその配下のリーフノード613が、削除対象となる。
図10では、タプル整列化部211が、最新データソース時刻記憶部220の時刻(10時5分1.789秒)以前のブランチ612及びその配下のリーフノード613を一括して削除する。その後、タプル整列化部211は、連続タプル入力数計数部217の値を0にリセットする。
ここで、時刻順整列ツリー218の空きリーフノード613及びブランチ612を削除する処理は、計算機の負荷が高くなる処理である。本発明では、入力ストリーム213へ投入した入力タプル121の数が閾値以上になってから、空のデータソース別キューを含むリーフノード613及びブランチ612の削除を一括して行う。これにより、空きリーフノード613及びブランチ612の削除処理が頻繁に発生するのを防いで、ストリームデータ処理能力が低下するのを抑制することができる。
<まとめ>
以上のように、本発明によれば、ストリームデータ処理サーバ100は、データソース別キュー219に入力タプル121をデータソース120毎に格納し、データタイムスタンプが最も小さい(古い)入力タプル121を先頭タプルとする。そして、タプル整列化部211は、データソース別キュー219を先頭タプルのデータタイムスタンプ(時系列)の順序で並べ替える。
以上のように、本発明によれば、ストリームデータ処理サーバ100は、データソース別キュー219に入力タプル121をデータソース120毎に格納し、データタイムスタンプが最も小さい(古い)入力タプル121を先頭タプルとする。そして、タプル整列化部211は、データソース別キュー219を先頭タプルのデータタイムスタンプ(時系列)の順序で並べ替える。
タプル整列化部211は、入力タプル121をストリームデータ処理サーバ100で受け付けた時点のシステムタイムスタンプを入力タプル121に付与して保留タプル521として管理する。保留タプル524のシステムタイムスタンプが処理保留期間136を経過するまで、タプル整列化部211は、入力タプル121を入力ストリーム213へ投入するのを保留する。
そして、システムタイムスタンプが処理保留期間136を経過すると、タプル整列化部211は、先頭タプルのデータタイムスタンプが最も小さいデータソース別キュー219の先頭タプルを選択すれば、データタイムスタンプの順序で入力タプル121を投入することができる。
これにより、データソース120毎にストリームデータ処理サーバ100へ到着するまでの遅延時間が異なる場合でも、処理保留期間136の範囲で、データタイムスタンプの順序で入力ストリーム213へ投入することが可能となる。すなわち、処理保留期間136内に入力ストリーム213へ投入された入力タプル121の順序がデータタイムスタンプの順序であることを保証することができる。これにより、ストリームデータ処理サーバ100の処理の精度を向上させることができる。
また、データソース別キュー219の並べ替えを、時刻順整列ツリー218によって行うことで、入力ストリーム213へ投入する入力タプル121を、データタイムスタンプが最小の先頭タプルをもつデータソース別キューから効率的に選択することが可能となる。これにより、入力タプル121をデータタイムスタンプの順序で並び替えて入力ストリームへ投入する処理の負荷を抑制することができる。
さらに、入力ストリーム213へ入力タプル121を投入した回数(連続タプル入力数計数部217の値)が所定値となるまで、入力タプル121がなくなった空のデータソース別キュー219、リーフノード613及びブランチ612の削除処理を保留する。これにより、時刻順整列ツリー218のブランチ612及びリーフノード613の削除処理が頻発するのを抑制することができ、ストリームデータの処理能力を維持することができる。
なお、上記実施例では、ストリームデータ処理サーバ100へ到着した入力タプル121の順序を決定する値としてシステムタイムスタンプを用いる例を示したが、ユニークな値を用いればよい。
また、上記実施例では、データソース別キュー219を、B+ツリーで構成された時刻順整列ツリー218のリーフノード613として配置する例を示したが、これに限定されるものではなく、データソース別キュー219のポインタを時刻順整列ツリー218で管理しても良い。あるいは、時刻順整列ツリー218を用いずに時系列の配列上でデータソース別キュー219またはデータソース別キュー219のポインタを管理するようにしてもよい。
また、上記実施例では、ホスト計算機130から受け付けた入力タプル整列化設定133によって、タプル整列化部211が入力タプル121の順序を並び替える例を示したが、タプル整列化部211に予め入力タプル整列化設定133を設定しておいても良い。
また、上記実施例では、タプル入力部210の内部にタプル整列化部211を設けたが、タプル入力部210とタプル整列化部211が一組であってもよい。
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
Claims (10)
- プロセッサとメモリを備えた計算機で、複数のデータソースから受信した入力タプルを処理するストリームデータの処理方法であって、
前記計算機が、処理保留期間を設定する第1のステップと、
前記計算機が、前記データソースによって付与されたデータタイムスタンプと、前記データソースの識別子とを含む前記入力タプルを受信する第2のステップと、
前記計算機が、前記入力タプルを受信した時点のシステムタイムスタンプを当該入力タプルに付与して保留タプルを生成する第3のステップと、
前記計算機が、前記保留タプルの前記データソースの識別子に対応するデータソース毎のキューに当該保留タプルを格納する第4のステップと、
前記計算機が、前記キューの先頭の保留タプルのデータタイムスタンプを読み込んで、各キューを先頭の保留タプルのデータタイムスタンプの順序で並び替える第5のステップと、
前記計算機が、前記データタイムスタンプの値が最も小さい保留タプルを先頭に格納したキューで、前記先頭の保留タプルのシステムタイムスタンプを読み込んで、当該システムタイムスタンプに前記処理保留期間を加算した値よりも現在のシステムタイムスタンプの値の方が大きいか否かを判定する第6のステップと、
前記計算機が、現在のシステムタイムスタンプの値の方が大きいと判定した場合には、前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入する第7のステップと、
前記計算機が、前記入力ストリームに投入した入力タプルに所定のクエリを実行する第8のステップと、
を含むことを特徴とするストリームデータの処理方法。 - 請求項1に記載のストリームデータの処理方法であって、
前記第5のステップは、
時系列のルートノードを有するバランス型ツリーのうち前記キューの先頭の保留タプルのデータタイムスタンプに対応する位置に当該キューを格納し、各キューを先頭の保留タプルのデータタイムスタンプの順序で並び替えることを特徴とするストリームデータの処理方法。 - 請求項2に記載のストリームデータの処理方法であって、
前記第7のステップは、
前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入するステップと、
前記キューの先頭から次の保留タプルを先頭の保留タプルに繰り上げるステップと、
前記繰り上げた先頭の保留タプルのデータタイムスタンプに対応する前記ルートノードの配下に当該キューを移動するステップと、
を含むことを特徴とするストリームデータの処理方法。 - 請求項3に記載のストリームデータの処理方法であって、
前記第7のステップは、
前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入するステップと、
前記キューが空になった場合には、前記入力ストリームへ入力タプルを投入した回数が所定のツリー回収保留回数となる度に、当該キューを格納するツリーを削除するステップと、
を含むことを特徴とするストリームデータの処理方法。 - 請求項4に記載のストリームデータの処理方法であって、
前記第1のステップは、
前記処理保留期間及び前記ツリー回収保留回数を受け付けることを特徴とするストリームデータの処理方法。 - プロセッサとメモリを備えた計算機で、複数のデータソースから受信した入力タプルを処理するストリームデータ処理装置であって、
前記データソースによって付与されたデータタイムスタンプと、前記データソースの識別子とを含む前記入力タプルを受信するタプル入力部と、
前記受信した入力タプルの順序を補正して入力ストリームに投入するタプル整列化部と、
前記入力ストリームへ投入された入力タプルに所定のクエリを実行するクエリ実行部と、を備え、
前記タプル整列化部は、
前記入力タプルを受信した時点のシステムタイムスタンプを当該入力タプルに付与して保留タプルを生成し、前記保留タプルの前記データソースの識別子に対応するデータソース毎のキューに当該保留タプルを格納し、前記キューの先頭の保留タプルのデータタイムスタンプを読み込んで、各キューを先頭の保留タプルのデータタイムスタンプの順序で並び替え、前記データタイムスタンプの値が最も小さい保留タプルを先頭に格納したキューで、前記先頭の保留タプルのシステムタイムスタンプを読み込んで、当該システムタイムスタンプに所定の処理保留期間を加算した値よりも現在のシステムタイムスタンプの値の方が大きいか否かを判定し、現在のシステムタイムスタンプの値の方が大きいと判定した場合には、前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入することを特徴とするストリームデータ処理装置。 - 請求項6に記載のストリームデータ処理装置であって、
前記タプル整列化部は、
時系列のルートノードを有するバランス型ツリーのうち前記キューの先頭の保留タプルのデータタイムスタンプに対応する位置に当該キューを格納し、各キューを先頭の保留タプルのデータタイムスタンプの順序で並び替えることを特徴とするストリームデータ処理装置。 - 請求項7に記載のストリームデータ処理装置であって、
前記タプル整列化部は、
前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入した後に、前記キューの先頭から次の保留タプルを先頭の保留タプルに繰り上げて、前記繰り上げた先頭の保留タプルのデータタイムスタンプに対応する前記ルートノードの配下に当該キューを移動することを特徴とするストリームデータ処理装置。 - 請求項8に記載のストリームデータ処理装置であって、
前記タプル整列化部は、
前記キューの先頭の保留タプルから入力タプルを取得して入力ストリームへ投入した後に、前記キューが空になった場合には、前記入力ストリームへ入力タプルを投入した回数が所定のツリー回収保留回数となる度に、当該キューを格納するツリーを削除することを特徴とするストリームデータ処理装置。 - 請求項9に記載のストリームデータ処理装置であって、
前記処理保留期間及び前記ツリー回収保留回数を受け付ける受付部をさらに有することを特徴とするストリームデータ処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/078472 WO2016067335A1 (ja) | 2014-10-27 | 2014-10-27 | ストリームデータの処理方法及びストリームデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2016067335A1 true JPWO2016067335A1 (ja) | 2017-04-27 |
JP6313864B2 JP6313864B2 (ja) | 2018-04-18 |
Family
ID=55856730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016556059A Active JP6313864B2 (ja) | 2014-10-27 | 2014-10-27 | ストリームデータの処理方法及びストリームデータ処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9948570B2 (ja) |
JP (1) | JP6313864B2 (ja) |
WO (1) | WO2016067335A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019537092A (ja) * | 2016-09-15 | 2019-12-19 | オラクル・インターナショナル・コーポレイション | 自動時間進行についての処理タイムスタンプおよびハートビートイベント |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981457B (zh) * | 2017-12-27 | 2021-09-07 | 华为技术有限公司 | 一种报文处理的方法、网络节点和系统 |
US11055156B2 (en) * | 2019-08-20 | 2021-07-06 | International Business Machines Corporation | Processing of a message stream |
JP7425300B2 (ja) | 2020-03-09 | 2024-01-31 | 富士通株式会社 | 実行制御方法及び実行制御プログラム |
CN113784118A (zh) * | 2021-09-14 | 2021-12-10 | 广州博冠信息科技有限公司 | 视频质量评估方法及装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080072221A1 (en) * | 2006-09-05 | 2008-03-20 | Microsoft Corporation | Event stream conditioning |
WO2012046316A1 (ja) * | 2010-10-06 | 2012-04-12 | 株式会社日立製作所 | ストリームデータ処理方法及び装置 |
WO2012059976A1 (ja) * | 2010-11-02 | 2012-05-10 | 株式会社日立製作所 | プログラム、ストリームデータ処理方法及びストリームデータ処理計算機 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953094B1 (en) * | 2002-02-06 | 2011-05-31 | Juniper Networks, Inc. | Systems and methods for order preserving data |
US8391164B2 (en) * | 2008-01-02 | 2013-03-05 | At&T Intellectual Property I, L.P. | Computing time-decayed aggregates in data streams |
US8107502B2 (en) * | 2009-09-11 | 2012-01-31 | Symmetricom, Inc. | Method and apparatus for monitoring packet networks |
JP5887418B2 (ja) | 2012-09-14 | 2016-03-16 | 株式会社日立製作所 | ストリームデータ多重処理方法 |
US20150009840A1 (en) * | 2013-07-03 | 2015-01-08 | Niksun, Inc. | Packet time stamp processing methods, systems, and apparatus |
US9525611B2 (en) * | 2014-01-27 | 2016-12-20 | Imagine Communications Corp. | Transmission system implementing delay measurement and control |
US10652127B2 (en) * | 2014-10-03 | 2020-05-12 | The Nielsen Company (Us), Llc | Fusing online media monitoring data with secondary online data feeds to generate ratings data for online media exposure |
US9537914B1 (en) * | 2015-12-01 | 2017-01-03 | International Business Machines Corporation | Vehicle domain multi-level parallel buffering and context-based streaming data pre-processing system |
US10824629B2 (en) * | 2016-04-01 | 2020-11-03 | Wavefront, Inc. | Query implementation using synthetic time series |
US10896179B2 (en) * | 2016-04-01 | 2021-01-19 | Wavefront, Inc. | High fidelity combination of data |
-
2014
- 2014-10-27 JP JP2016556059A patent/JP6313864B2/ja active Active
- 2014-10-27 US US15/126,705 patent/US9948570B2/en active Active
- 2014-10-27 WO PCT/JP2014/078472 patent/WO2016067335A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080072221A1 (en) * | 2006-09-05 | 2008-03-20 | Microsoft Corporation | Event stream conditioning |
WO2012046316A1 (ja) * | 2010-10-06 | 2012-04-12 | 株式会社日立製作所 | ストリームデータ処理方法及び装置 |
WO2012059976A1 (ja) * | 2010-11-02 | 2012-05-10 | 株式会社日立製作所 | プログラム、ストリームデータ処理方法及びストリームデータ処理計算機 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019537092A (ja) * | 2016-09-15 | 2019-12-19 | オラクル・インターナショナル・コーポレイション | 自動時間進行についての処理タイムスタンプおよびハートビートイベント |
Also Published As
Publication number | Publication date |
---|---|
JP6313864B2 (ja) | 2018-04-18 |
US20170093738A1 (en) | 2017-03-30 |
WO2016067335A1 (ja) | 2016-05-06 |
US9948570B2 (en) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230126005A1 (en) | Consistent filtering of machine learning data | |
JP6313864B2 (ja) | ストリームデータの処理方法及びストリームデータ処理装置 | |
US11182691B1 (en) | Category-based sampling of machine learning data | |
US10713589B1 (en) | Consistent sort-based record-level shuffling of machine learning data | |
US10318882B2 (en) | Optimized training of linear machine learning models | |
US8521871B2 (en) | System and method for merging monitoring data streams from a server and a client of the server | |
US20150379072A1 (en) | Input processing for machine learning | |
TW201837720A (zh) | 用於多串流儲存裝置之串流選擇 | |
US9921874B2 (en) | Storage medium, information processing device, and information processing method | |
US20160253366A1 (en) | Analyzing a parallel data stream using a sliding frequent pattern tree | |
US10089352B2 (en) | Offloading projection of fixed and variable length database columns | |
US10474698B2 (en) | System, method, and program for performing aggregation process for each piece of received data | |
EP3698243B1 (en) | Asynchronously processing sequential data blocks | |
JPWO2016035189A1 (ja) | ストリームデータ処理方法、ストリームデータ処理装置及び記憶媒体 | |
JP6642435B2 (ja) | データ処理装置、データ処理方法、及び、プログラム | |
US20170359398A1 (en) | Efficient Sorting for a Stream Processing Engine | |
US20150332280A1 (en) | Compliant auditing architecture | |
CN114503080B (zh) | 在顺序数据块的异步处理期间的错误处理 | |
CN106599005B (zh) | 一种数据归档方法及装置 | |
US20160077945A1 (en) | Storage system statistical data storage and analysis | |
CN113342550A (zh) | 一种数据处理方法、系统、计算设备及存储介质 | |
US9275168B2 (en) | Hardware projection of fixed and variable length columns of database tables | |
CN107544090B (zh) | 一种基于MapReduce的地震数据解析存储方法 | |
JP5472885B2 (ja) | プログラム、ストリームデータ処理方法及びストリームデータ処理計算機 | |
JP6396615B1 (ja) | 情報処理プログラム、情報処理装置及びデバッグシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161207 |
|
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: 20180306 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180323 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6313864 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |