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

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

Info

Publication number
JPWO2017168497A1
JPWO2017168497A1 JP2018507824A JP2018507824A JPWO2017168497A1 JP WO2017168497 A1 JPWO2017168497 A1 JP WO2017168497A1 JP 2018507824 A JP2018507824 A JP 2018507824A JP 2018507824 A JP2018507824 A JP 2018507824A JP WO2017168497 A1 JPWO2017168497 A1 JP WO2017168497A1
Authority
JP
Japan
Prior art keywords
query
flow control
data
unit
divided
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
Application number
JP2018507824A
Other languages
English (en)
Other versions
JP6505944B2 (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
Publication of JPWO2017168497A1 publication Critical patent/JPWO2017168497A1/ja
Application granted granted Critical
Publication of JP6505944B2 publication Critical patent/JP6505944B2/ja
Active 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
    • G06F16/24568Data stream processing; Continuous queries
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ストリームデータ処理を実行する複数の計算機、及び複数の計算機に分割クエリを割り当てる管理計算機を含む計算機システムであって、管理計算機は、複数のクエリを含む分析シナリオ、及び分析シナリオを複数の分割クエリに分割するための分割情報を受け付けるパラメータ入力部と、分析シナリオを解析することによってクエリグラフを生成するクエリ解析部と、を有し、クエリ解析部は、分析シナリオ及び分割情報に基づいて、フロー制御が必要な分割クエリを特定し、フロー制御が必要な分割クエリを複数の計算機に割り当てる場合、フロー制御が必要な分割クエリを割り当てる複数の計算機に対してフロー制御の設定を行う。

Description

本発明は、フロー制御を組み込んだ分散型のストリームデータ処理システムの設定方法に関する。
近年、リアルタイムにデータを集計し、また、分析することを可能とするストリームデータ処理システムが注目されている。ここで、ストリームデータとは、途切れることなく到来するデータ列である。IoT時代では、システムの改善等のために様々な機器から取得されたデータの分析に、分散型のストリームデータ処理システムの利用が期待される。
分散型のストリームデータ処理システムでは、分析処理等を構成する複数のクエリが複数の計算機に配置され、各計算機によってクエリが実行される。ネットワークの接続関係及び計算機の配置等によって、データの発生順番とデータの受信順番とが一致していない場合がある。
実行される複数のクエリの中には、時系列順にデータを処理する必要があるクエリが含まれる。データの発生順番及びデータの受信順番が異なる場合、誤った処理結果が出力される。そのため、処理結果の整合性を保証するためには、データの発生順番及びデータの受信順番を整合させる仕組みが必要である。
これを解決するための手段として特許文献1に記載されているような技術が知られている。特許文献1には、グループ単位に処理を分割できる集計処理において、実行モジュールが、タプル時刻に基づいて集計処理を分割し、分割時刻を後段の計算機における集計処理時刻として用いることが記載されている。
米国特許出願公開第2011/0093491号明細書
特許文献1に記載の技術は、集計処理に限定されており、分割時刻が通信の遅延時間より細かい粒度の場合、データの発生順番及びデータの受信順番の不一致が発生する。また、特許文献1に記載の技術は、分散型のストリームデータ処理システムへの適応を前提としていない。
そのため、従来、管理者等は、データの発生順番及びデータの受信順番の不一致を解消するために、通信の遅延時間、各クエリ間の接続、及び入出力されるデータの関係等を考慮して、データの発生順番及びデータの受信順番を整合させるためのクエリ及びデータを受信するソフトウェアを開発する必要があった。そのため、分散型のストリーム処理システムの設定に必要なコストが大きくなるという問題がある。
本発明は、容易に、かつ、処理結果の整合性が保たれた分散型のストリームデータ処理システムの設定を実現するシステム及び方法を提供する。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ストリームデータ処理を実行する複数の計算機、及び前記複数の計算機に一つ以上のクエリを含む複数の分割クエリを割り当てる管理計算機を含む計算機システムであって、前記複数の計算機の各々は、第1プロセッサ、前記第1プロセッサに接続される第1メモリ、及び前記第1プロセッサに接続され、外部装置と接続するための第1インタフェースを有し、前記管理計算機は、第2プロセッサ、前記第2プロセッサに接続される第2メモリ、及び前記第2プロセッサに接続され、外部装置と接続するための第2インタフェースを有し、前記管理計算機は、前記ストリームデータ処理を実現するための複数のクエリを含む分析シナリオ、及び前記分析シナリオを前記複数の分割クエリに分割するための分割情報を受け付けるパラメータ入力部と、前記分析シナリオを解析することによって、前記分析シナリオに含まれる前記複数のクエリの構成を示すクエリグラフを生成するクエリ解析部と、を有し、前記クエリ解析部は、前記分析シナリオ及び前記分割情報に基づいて、前記クエリによって処理されるデータの発生順番及び当該データの受信順番を整合させるためのフロー制御が必要な分割クエリを特定し、前記フロー制御が必要な分割クエリを前記複数の計算機に割り当てる場合、前記フロー制御が必要な分割クエリが割り当てられる複数の計算機に対して前記フロー制御の設定を行うことを特徴とする。
本発明によれば、管理計算機は、入力された情報に基づいてクエリの処理結果の整合性が保証された分散型のストリームデータ処理システムを設定することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
実施例1の計算機システムの構成の一例を示す図である。 実施例1のクエリ振り分け計算機及びストリームデータ処理計算機のソフトウェア構成の一例を示す図である。 実施例1のクエリ解析部の処理の流れを示す図である。 実施例1のクエリグラフ管理情報の一例を示す図である。 実施例1の分割クエリ管理情報の一例を示す図である。 実施例1の分割情報を含む分析シナリオの一例を示す図である。 実施例1のオペレータ種別情報の一例を示す図である。 実施例1の経路情報の一例を示す図である。 実施例1の経路情報を含む分析シナリオの一例を示す図である。 実施例1のクエリ解析部が実行する処理の一例を説明するフローチャートである。 実施例1のフロー制御の要否判定処理の一例を説明するフローチャートである。 実施例1のクエリ実行部が実行する処理の一例を説明するフローチャートである。 実施例1のフロー制御部が実行するフロー制御処理の一例を説明するフローチャートである。 実施例2のフロー制御の要否判定処理の一例を説明するフローチャートである。 実施例3のフロー制御の要否判定処理の一例を説明するフローチャートである。 実施例3のフロー制御の要否判定処理の一例を説明するフローチャートである。
以下、本発明の実施例について図面を参照して詳細に説明する。
図1は、実施例1の計算機システムの構成の一例を示す図である。
実施例1の計算機システムは、クエリ振り分け計算機100、複数のストリームデータ処理計算機120、複数のデータ送信計算機140、及びデータ受信計算機160から構成される。本実施例では、複数のストリームデータ処理計算機120を用いて分散型のストリームデータ処理システムが構築される。なお、データ受信計算機160は、複数存在してもよい。
クエリ振り分け計算機100は、ネットワーク181を介して複数のストリームデータ処理計算機120と接続する。また、複数のデータ送信計算機140及びデータ受信計算機160は、それぞれ、ネットワーク182を介して複数のストリームデータ処理計算機120と接続する。なお、本実施例はネットワーク181、182の種別に限定されない。ネットワーク181、182は、WAN(Wide Area Network)及びLAN(Local Area Network)等が考えられる。また、本実施例は、各装置とネットワーク181、182との間の接続形式に限定されず、無線又は有線のいずれでもよい。
クエリ振り分け計算機100は、分析シナリオ201(図2参照)を受け付け、分析シナリオ201に基づいて複数のクエリから構成されるクエリグラフ301(図3参照)を生成する。また、クエリ振り分け計算機100は、クエリグラフ301を分割することによって複数の分割クエリ220(図2参照)を生成し、複数のストリームデータ処理計算機120に複数の分割クエリ220を割り当てる。
ここで、分割クエリ220は、分析シナリオ201に基づいて生成されたクエリグラフ301を分割することによって生成されるクエリ群である。分割クエリ220には、少なくとも一つのクエリが含まれる。
クエリ振り分け計算機100は、ハードウェア構成として、CPU101、メモリ102、ストレージ装置103、ネットワークインタフェース104、及び入出力装置105を備える。なお、クエリ振り分け計算機100は、ストレージ装置103及び入出力装置105を備えていなくてもよい。
CPU101は、メモリ102に格納されるプログラムを実行する演算装置である。CPU101がプログラムを実行することによって、クエリ振り分け計算機100が有する機能が実現される。以下の説明では、機能部を主語にして処理を説明する場合、CPU101が当該機能部を実現するプログラムを実行していることを示す。
メモリ102は、CPU101が実行するプログラム及び当該プログラムによって使用される情報を格納する記憶装媒体である。メモリ102に格納されるプログラム及び情報については後述する。ストレージ装置103は、プログラム及び情報を格納する記憶媒体である。ストレージ装置103は、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶媒体が考えられる。なお、本実施例は記憶媒体の種類に限定されない。
ネットワークインタフェース104は、ネットワークを介して他の装置と接続するためのインタフェースである。入出力装置105は、クエリ振り分け計算機100に各種データを入力し、また、処理結果等を出力するためのインタフェースである。入出力装置105は、キーボード、マウス、タッチパネル、及びディスプレイ等を含む。
ここで、メモリ102に格納されるプログラムについて説明する。メモリ102は、パラメータ入力部111及びクエリ解析部112を実現するプログラムを格納する。
パラメータ入力部111は、クエリ振り分け計算機100に対する各種パラメータ及び情報を受け付ける。クエリ解析部112は、分析シナリオ201(図2参照)の解析、及び分割クエリ220(図2参照)の割り当てを行う。
本実施例のクエリ解析部112は、フロー制御が必要な分割クエリ220を特定することを特徴とする。ここで、フロー制御は、データの発生順番及びデータの受信順番を整合させるための制御を表す。これによって、処理結果の整合性を保証することができる。
クエリ振り分け計算機100のソフトウェア構成の詳細は、図2及び図3を用いて説明する。
ストリームデータ処理計算機120は、データ送信計算機140から送信されるデータ(ストリームデータ)を受信し、割り当てられた分割クエリ220に従ってデータを処理する。ストリームデータ処理計算機120は、処理結果を他のストリームデータ処理計算機120又はデータ受信計算機160に出力する。
なお、ストリームデータ処理計算機120が受信するデータには、タイムスタンプが含まれるものとする。
ストリームデータ処理計算機120は、ハードウェア構成として、CPU121、メモリ122、ストレージ装置123、ネットワークインタフェース124、及び入出力装置125を備える。
CPU121、メモリ122、ストレージ装置123、ネットワークインタフェース124、及び入出力装置125は、CPU101、メモリ102、ストレージ装置103、ネットワークインタフェース104、及び入出力装置105と同一のものであるため説明を省略する。
メモリ122は、クエリ実行部130を実現するプログラムを格納する。クエリ実行部130は、分割クエリ220に従って、データ送信計算機140又は他のストリームデータ処理計算機120から受信したデータを処理する。クエリ実行部130は、複数のプログラムモジュールから構成される。具体的には、クエリ実行部130は、データ受信部131、クエリ処理部132、及びデータ送信部133を含む。
データ受信部131は、データ送信計算機140又は他のストリームデータ処理計算機120から送信されるデータの受信処理を実行する。クエリ処理部132は、分割クエリ220に従って受信したデータを処理する。データ送信部133は、クエリ処理部132から出力された処理結果を含むデータの送信処理を実行する。
ストリームデータ処理計算機120のソフトウェア構成の詳細は、図2を用いて説明する。
データ送信計算機140は、ストリームデータ処理計算機120が処理するデータを送信する。データ送信計算機140は、例えば、工場のセンサを管理する計算機等が考えられる。なお、センサそのものが、データ送信計算機140であってもよい。
データ送信計算機140は、図示しないCPU、メモリ、及びネットワークインタフェースを備える。データ送信計算機140上では、アプリケーション151及びデータ送信部152が稼働する。本実施例は、アプリケーション151の種別に限定されない。データ送信部152は、アプリケーション151によって取得された値、又は、アプリケーション151の挙動等を示すデータの送信処理を実行する。
データ受信計算機160は、ストリームデータ処理計算機120によって処理されたデータを受信する。データ受信計算機160は、図示しないCPU、メモリ、及びネットワークインタフェースを備える。データ受信計算機160上では、アプリケーション171及びデータ受信部172が稼働する。本実施例は、アプリケーション171の種別に限定されない。データ受信部172は、データの受信処理を実行する。
なお、データ送信計算機140及びデータ受信計算機160のいずれかがクエリ振り分け部110を有してもよい。
なお、図1では、クエリ振り分け計算機100及びストリームデータ処理計算機120を物理的な計算機を用いて実現しているがこれに限定されない。例えば、仮想化技術を用いて生成された仮想計算機を用いてクエリ振り分け計算機100及びストリームデータ処理計算機120を実現してもよい。
図2は、実施例1のクエリ振り分け計算機100及びストリームデータ処理計算機120のソフトウェア構成の一例を示す図である。
まず、図2に示すストリームデータ処理計算機120に対するデータの入出力について説明する。ストリームデータ処理計算機120−1及びストリームデータ処理計算機120−2がデータ送信計算機140からデータを受信し、分割クエリ220に従って受信したデータの処理を実行する。ストリームデータ処理計算機120−1及びストリームデータ処理計算機120−2は、処理結果をストリームデータ処理計算機120−3に出力する。また、ストリームデータ処理計算機120−3は、ストリームデータ処理計算機120−1及びストリームデータ処理計算機120−2からデータを受信し、分割クエリ220に従って受信したデータの処理を実行する。ストリームデータ処理計算機120−3は、処理結果をデータ受信計算機160に出力する。
次に、クエリ振り分け計算機100に入力される情報及びクエリ振り分け計算機100のソフトウェア構成について説明する。
クエリ振り分け計算機100には、分析シナリオ201、分割情報202、及び遅延許容時間203が入力される。
分析シナリオ201は、複数のクエリを含む。また、クエリは、一つ以上のオペレータを含む。オペレータは、ストリームデータ処理における最小単位の処理を示す。オペレータは、例えば、データの抽出処理及びデータの集約処理等が対応する。
分割情報202は、分析シナリオ201を分割するための情報である。分割情報202には、クエリグラフ301(図3参照)に含まれる複数のクエリの分割位置を示す情報が含まれる。本実施例では、分析シナリオ201に分割情報202が含まれるものとする。分割情報202の詳細については、図6を用いて説明する。
遅延許容時間203は、フロー制御に使用する期間を指定するための値である。後述するように、フロー制御部230は、遅延許容時間203を用いてフロー制御を実行する。
クエリ解析部112は、クエリグラフ生成部211、分割クエリ生成部212、及びフロー制御設定部213を含み、また、オペレータ種別情報215及び経路情報216を保持する。
クエリグラフ生成部211は、分析シナリオ201からクエリグラフ301を生成する。分割クエリ生成部212は、分割情報202に基づいて、クエリグラフ301の分割位置を特定し、さらに、特定された分割位置に基づいてクエリグラフ301を分割することによって分割クエリ220を生成する。フロー制御設定部213は、フロー制御が必要な分割クエリ220を特定する。
オペレータ種別情報215は、オペレータに対するフロー制御の要否を管理するための情報である。オペレータ種別情報215の詳細は、図7を用いて説明する。経路情報216は、クエリに入力されるデータであって、任意の識別情報に基づいて集約された集約データの経路を管理するための情報である。経路情報216の詳細は、図8を用いて説明する。
クエリ解析部112は、分割クエリ220を割り当てるストリームデータ処理計算機120を決定し、決定されたストリームデータ処理計算機120に分割クエリ220を割り当てる。具体的には、以下のような処理が実行される。
フロー制御が不要な分割クエリ220の場合、クエリ解析部112は、分割クエリ220をストリームデータ処理計算機120に割り当てる。フロー制御が必要な分割クエリ220の場合、クエリ解析部112は、遅延許容時間203を含む分割クエリ220をストリームデータ処理計算機120に割り当て、さらに、ストリームデータ処理計算機120に対してフロー制御部230の設定を行う。
次に、ストリームデータ処理計算機120のソフトウェア構成について説明する。ストリームデータ処理計算機120−1及びストリームデータ処理計算機120−2は、フロー制御が必要な分割クエリ220が割り当てられたストリームデータ処理計算機120である。ストリームデータ処理計算機120−3は、フロー制御が不要な分割クエリ220が割り当てられたストリームデータ処理計算機120である。
ストリームデータ処理計算機120−1及びストリームデータ処理計算機120−2のデータ受信部131は、フロー制御を実行するフロー制御部230を含む。フロー制御部230は、データ保存部240を含む。データ保存部240は、受信したデータを一時的に記憶する。
一方、ストリームデータ処理計算機120−3のデータ受信部131は、フロー制御部230を含まない。
フロー制御部230を含むデータ受信部131は、データを受信した場合、遅延許容時間203に基づいてフロー制御を実行し、フロー制御が実行されたデータをクエリ処理部132に出力する。一方、フロー制御部230を含まないデータ受信部131は、データを受信した場合、受信したデータをそのままクエリ処理部132に出力する。
クエリ処理部132は、分割クエリ220に従って、データ受信部131から入力されたデータを用いて分割クエリ220に含まれるクエリを実行し、処理結果を含むデータをデータ送信部133に出力する。
データ送信部133は、処理結果を含むデータを他のストリームデータ処理計算機120又はデータ受信計算機160に送信する。
次に、クエリ解析部112の機能について説明する。
図3は、実施例1のクエリ解析部112の処理の流れを示す図である。図4は、実施例1のクエリグラフ管理情報の一例を示す図である。図5は、実施例1の分割クエリ管理情報の一例を示す図である。図6は、実施例1の分割情報202を含む分析シナリオ201の一例を示す図である。図7は、実施例1のオペレータ種別情報215の一例を示す図である。図8は、実施例1の経路情報216の一例を示す図である。図9は、実施例1の経路情報216を含む分析シナリオ201の一例を示す図である。
クエリグラフ生成部211について説明する。クエリグラフ生成部211は、分析シナリオ201を入力としてクエリグラフ301を生成する。図3に示すように、クエリグラフ301は木構造のデータであり、クエリがノードに対応する。また、図3に示すクエリグラフ301は、クエリQ1及びクエリQ3からクエリQ6の順番にクエリが実行されることを示す。
本実施例のクエリグラフ生成部211は、図4に示すようなクエリグラフ管理情報400を生成する。クエリグラフ管理情報400は、クエリグラフ301を管理するための情報であり、ノードID401及び接続ノードID402から構成されるエントリを複数含む。
ノードID401は、クエリの識別情報である。接続ノードID402は、ノードID401に対応するクエリのデータが出力されるノード(クエリ)の識別情報である。
なお、クエリグラフ生成部211は、クエリグラフ管理情報400を必ずしも生成しなくてもよい。例えば、クエリグラフ生成部211は、分析シナリオ201に、クエリ間の接続を認識するためのポインタ等を埋め込む。
分割クエリ生成部212について説明する。分割クエリ生成部212は、分割情報202及びクエリグラフ301を入力として、クエリグラフ301の分割位置を特定し、特定された分割位置に基づいてクエリグラフ301を分割することによって複数の分割クエリ220を生成する。
図6に示す分析シナリオ201は、分割情報202を含む。具体的には、「//option cluster begin」から「//option cluster end」に含まれるクエリが分割クエリ220を構成するクエリであることを示す。この場合、分割クエリ生成部212は、「//option cluster end」と次に登場する「//option cluster begin」との間が分割位置であると判定する。
本実施例の分割クエリ生成部212は、図5に示すような分割クエリ管理情報500を生成する。分割クエリ管理情報500は、分割クエリ220を管理するための情報であり、分割クエリID501、ノードID502、接続分割クエリID503、及びフロー制御フラグ504を含む。
分割クエリID501は、分割クエリ220の識別情報である。ノードID502は、分割クエリ220に含まれるクエリの識別情報である。接続分割クエリID503は、分割クエリID501に対応する分割クエリ220のデータが出力される分割クエリ220の識別情報である。フロー制御フラグ504は、フロー制御が必要な分割クエリ220であるか否かを示すフラグである。フロー制御フラグ504の初期値は空欄であるものとする。フロー制御が必要な分割クエリ220であると判定された場合、フロー制御フラグ504には「ON」が格納される。
フロー制御設定部213について説明する。フロー制御設定部213は、クエリグラフ301の分割結果に基づいて、フロー制御が必要な分割クエリ220を特定する。図3では、分割クエリ220−1、分割クエリ220−2、及び分割クエリ220−3が、フロー制御が必要な分割クエリ220であると判定されたことを示す。
実施例1のフロー制御設定部213は、クエリグラフ301の分割結果に基づいて、フロー制御が必要な分割クエリ220を特定する。実施例2のフロー制御設定部213は、クエリグラフ301の分割結果及びオペレータ種別情報215に基づいて、フロー制御が必要な分割クエリ220を特定する。実施例3のフロー制御設定部213は、クエリグラフ301の分割結果、オペレータ種別情報215、及び経路情報216に基づいて、フロー制御が必要な分割クエリ220を特定する。
次に、オペレータ種別情報215及び経路情報216について説明する。
オペレータ種別情報215は、オペレータ種別701、フロー制御702、及びグループ化703を含む。
オペレータ種別701は、オペレータの識別情報である。オペレータ種別701には、オペレータそのものが格納されてもよい。フロー制御702は、フロー制御が必要であるか否かを示すフラグである。グループ化703は、グループ化の対象となるオペレータであるか否かを示すフラグであり、また、経路情報216を参照するか否かを示すフラグとして用いられる。グループ化の対象となるオペレータである場合、グループ化703には「YES」が格納され、グループ化の対象となるオペレータでない場合、グループ化703には「NO」が格納される。
経路情報216は、クエリID801、グループ化キー802、及び独立性803を含む。
クエリID801は、クエリの識別情報であり、ノードID401と同一の識別情報が格納される。グループ化キー802は、グループ化する場合に使用されるキーの情報である。独立性803は、グループ化されたデータに独立性があるか否かを示すフラグである。
クエリID801に対応するクエリに入力される、グループ化されたデータに独立性がある場合、独立性803には「YES」が格納される。クエリID801に対応するクエリに入力される、グループ化されたデータに独立性がない場合、独立性803には「NO」が格納される。
同一の識別情報で集約された集約データの入力経路が一つの場合、当該データは独立性がある。一方、同一の識別情報で集約された集約データの入力経路が複数存在する場合、当該データは独立性がない。
なお、図9に示すように、分析シナリオ201に経路情報216が含まれてもよい。図9の太文字部分は、クエリQ1からクエリQ2に入力される、IDでグループ化されたデータは独立性があることを示す。
次に、図10及び図11を用いて、クエリ振り分け計算機100が実行する処理の詳細を説明する。
図10は、実施例1のクエリ解析部112が実行する処理の一例を説明するフローチャートである。
クエリ解析部112は、分析シナリオ201が入力された場合、以下で説明する処理を開始する。
まず、クエリ解析部112は、分析シナリオ201に基づいてクエリグラフ301を生成する(ステップS1000)。
具体的には、クエリグラフ生成部211が、分析シナリオ201に基づいてクエリグラフ301を生成する。このとき、クエリグラフ生成部211は、クエリグラフ管理情報400を生成する。なお、クエリグラフ301の生成方法は公知の技術であるため説明を省略する。
次に、クエリ解析部112は、クエリグラフ301を複数の分割クエリ220に分割できるか否かを判定する(ステップS1001)。
具体的には、分割クエリ生成部212は、分割情報202が入力されたか否かを判定する。分割情報202が入力されていない場合、分割クエリ生成部212は、クエリグラフ301を複数の分割クエリ220に分割できないと判定する。
クエリグラフ301を複数の分割クエリ220に分割できないと判定された場合、クエリ解析部112は、ストリームデータ処理計算機120にクエリを割り当てる(ステップS1004)。その後、クエリ解析部112は処理を終了する。
具体的には、クエリ解析部112は、一つのストリームデータ処理計算機120に、クエリグラフ301に含まれる全てのクエリを割り当てる。
クエリグラフ301を複数の分割クエリ220に分割できると判定された場合、クエリ解析部112は、分割情報202に基づいて、複数の分割クエリ220を生成する(ステップS1002)。
具体的には、分割クエリ生成部212が、分割情報202に基づいてクエリグラフ301の分割位置を特定し、特定された分割位置に基づいてクエリグラフ301を分割することによって、複数の分割クエリ220を生成する。このとき、分割クエリ生成部212は、クエリグラフ301の分割結果に基づいて分割クエリ管理情報500を生成する。この時点では、分割クエリ管理情報500の全てのエントリのフロー制御フラグ504は、空欄である。
次に、クエリ解析部112は、フロー制御の要否判定処理を実行する(ステップS1003)。フロー制御の要否判定処理では、フロー制御が必要な分割クエリ220が特定される。フロー制御の要否判定処理の詳細は、図11を用いて説明する。
次に、クエリ解析部112は、フロー制御の要否判定処理の処理結果に基づいて、ストリームデータ処理計算機120にクエリを割り当てる(ステップS1004)。その後、クエリ解析部112は処理を終了する。具体的には、以下のような処理が実行される。
クエリ解析部112は、複数の分割クエリ220の各々を割り当てるストリームデータ処理計算機120を決定する。クエリ解析部112は、分割クエリ管理情報500のフロー制御フラグ504を参照し、フロー制御が必要な分割クエリ220であるか否かを判定する。
フロー制御フラグ504が空欄の場合、クエリ解析部112は、分割クエリ220をストリームデータ処理計算機120に割り当てる。フロー制御フラグ504が「ON」の場合、クエリ解析部112は、遅延許容時間203を含む分割クエリ220をストリームデータ処理計算機120に割り当て、さらに、ストリームデータ処理計算機120に対してフロー制御部230の設定を行う。ここで、ストリームデータ処理計算機120に対するフロー制御部230の設定方法は、以下のような方法が考えられる。
(設定方法1)ストリームデータ処理計算機120のデータ受信部131がフロー制御部230を含まない場合、クエリ解析部112は、データ受信部131にフロー制御部230を追加する。例えば、クエリ解析部112は、データ受信部131を実現するプログラムをストリームデータ処理計算機120にインストールする。
(設定方法2)ストリームデータ処理計算機120のデータ受信部131がフロー制御を実行するフロー制御部230を含む場合、クエリ解析部112は、ストリームデータ処理計算機120にフロー制御部230の活性化を指示する。なお、フロー制御部230は、分割クエリ220の割り当て前は非活性化の状態であるものとする。
前述したように、クエリ振り分け計算機100は、フロー制御が必要な分割クエリ220が割り当てられるストリームデータ処理計算機120に対してのみ、フロー制御部230の設定を行う。以上がステップS1004の処理の説明である。
図11は、実施例1のフロー制御の要否判定処理の一例を説明するフローチャートである。
フロー制御設定部213は、分割クエリ220のループ処理を開始する(ステップS1100)。
具体的には、フロー制御設定部213は、分割クエリ管理情報500を参照し、対象の分割クエリ220を選択する。本実施例では、データの出力の最終端の分割クエリ220からデータの入力方向に分割クエリ220を選択するものとする。例えば、図3に示すクエリグラフ301の場合、最初に分割クエリ220−4が選択され、次に、分割クエリ220−3が選択され、次に、分割クエリ220−1又は分割クエリ220−2が選択される。
フロー制御設定部213は、選択された分割クエリ220を、フロー制御が必要な分割クエリ220として特定する(ステップS1101)。
具体的には、フロー制御設定部213は、選択された分割クエリ220に対応するエントリのフロー制御フラグ504に「ON」を設定する。フロー制御設定部213は、必要に応じて、選択された分割クエリ220にフロー制御の実行を指示するフラグを追加する。
次に、フロー制御設定部213は、全ての分割クエリ220に対して処理が完了したか否かを判定する(ステップS1102)。
全ての分割クエリ220に対して処理が完了していないと判定された場合、フロー制御設定部213は、ステップS1100に戻り、同様の処理を実行する。
全ての分割クエリ220に対して処理が完了したと判定された場合、フロー制御設定部213は、処理を終了する。
実施例1では、クエリ解析部112は、分割クエリ220が割り当てられる全てのストリームデータ処理計算機120に対してフロー制御部230を設定する。
次に、図12及び図13を用いて、ストリームデータ処理計算機120が実行する処理の詳細を説明する。
図12は、実施例1のクエリ実行部130が実行する処理の一例を説明するフローチャートである。
クエリ実行部130は、分割クエリ220の実行時にフロー制御が必要であるか否かを判定する(ステップS1200)。
具体的には、クエリ実行部130は、分割クエリ220にフロー制御の実行を指示するフラグが含まれるか否かを判定する。なお、前述した判定方法は一例であってこれに限定されない。例えば、クエリ振り分け計算機100から、分割クエリ220及び遅延許容時間203を受け取った場合に、クエリ実行部130は、分割クエリ220にフロー制御が必要であると判定してもよい。
分割クエリ220の実行時にフロー制御が必要であると判定された場合、クエリ実行部130は、データが入力されるまで待ち状態となる。クエリ実行部130は、データを受信した場合(ステップS1201)、フロー制御処理を実行する(ステップS1202)。具体的には、データ受信部131がデータを受信し、フロー制御部230を呼び出す。フロー制御処理の詳細は図13を用いて説明する。
次に、クエリ実行部130は、データ受信部131からフロー制御処理が実行されたデータが出力されたか否かを判定する(ステップS1203)。
具体的には、クエリ処理部132が、データ受信部131からデータが出力されたか否かを判定する。
データ受信部131からフロー制御処理が実行されたデータが出力されていないと判定された場合、クエリ実行部130は、ステップS1203に戻り、データが出力されるまで待ち状態となる。
データ受信部131からフロー制御処理が実行されたデータが出力されたと判定された場合、クエリ実行部130は、分割クエリ220に基づいて、クエリを実行する(ステップS1204)。
具体的には、クエリ処理部132がクエリを実行する。なお、本実施例は、実行されるクエリの内容に限定されない。
次に、クエリ実行部130は、クエリの処理結果を含むデータを送信する(ステップS1205)。その後、クエリ実行部130は、ステップS1201に戻り、同様の処理を実行する。なお、クエリ実行部130は、所定の条件を満たした場合、又は、処理の終了指示を受け付けた場合、処理を終了する。
具体的には、データ送信部133が、クエリの処理結果を含むデータを他のストリームデータ処理計算機120又はデータ受信計算機160に送信する。
ステップS1200において、分割クエリ220の実行時にフロー制御が必要でないと判定された場合、クエリ実行部130は、データが入力されるまで待ち状態となる。クエリ実行部130は、データを受信した場合(ステップS1206)、分割クエリ220に基づいて、クエリを実行する(ステップS1207)。このとき、データ受信部131が受信したデータは、そのままクエリ処理部132に出力される。
次に、クエリ実行部130は、クエリの処理結果を含むデータを送信する(ステップS1208)。その後、クエリ実行部130は、ステップS1206に戻り、同様の処理を実行する。なお、クエリ実行部130は、所定の条件を満たした場合、又は、処理の終了指示を受け付けた場合、処理を終了する。
図13は、実施例1のフロー制御部230が実行するフロー制御処理の一例を説明するフローチャートである。
フロー制御部230は、変数Tendに基準時刻を設定する(ステップS1300)。その後、フロー制御部230は、データの受信を待ち続ける。具体的には、以下のような処理が実行される。
フロー制御部230は、初期起動時に、データ受信部131が初めてデータを受信した時刻、又は、クエリ振り分け計算機100等の外部装置によって指定された時刻を基準時刻として変数Tendに設定する。
ステップS1304からステップS1300に戻る場合、変数Tendの値が更新される。更新方法は、例えば、以下のような方法が考えられる。
(更新方法1)フロー制御部230は、変数Tendに所定の時間を加算することによって算出された時刻を新たな基準時刻として変数Tendに設定する。
(更新方法2)フロー制御部230は、データ受信部131が新たにデータを受信した場合、当該データの時刻を新たな基準時刻として変数Tendに設定する。
なお、加算する時間は、クエリ振り分け計算機100等の外部装置によって指定することができる。以上が、ステップS1300の処理の説明である。
フロー制御部230は、データ受信部131がデータを受信した場合、データ受信部131が受信したデータから時刻を取得し、変数Tdataに取得された時刻を設定する(ステップS1301)。
次に、フロー制御部230は、下式(1)を満たすか否かを判定する(ステップS1302)。
Figure 2017168497
式(1)を満たすと判定された場合、フロー制御部230は、下式(2)を満たすか否かを判定する。ここで、変数Tlateは、遅延許容時間203を示す変数である。
Figure 2017168497
式(2)を満たさない場合、フロー制御部230は、データ保存部240に格納されるデータをクエリ処理部132に出力する(ステップS1304)。その後、フロー制御部230は、ステップS1300に戻り、同様の処理を実行する。
具体的には、フロー制御部230は、データ保存部240に格納されるデータを時系列順にソートし、ソートされたデータをクエリ処理部132に出力する。
ステップS1303において、式(2)を満たすと判定された場合、すなわち、受信したデータの時刻がTendから(Tend+Tlate)の間に含まれる場合、フロー制御部230は、受信したデータをデータ保存部240に格納する(ステップS1306)。その後、フロー制御部230は、ステップS1301に戻り、同様の処理を実行する。
ステップS1302において、式(1)を満たさないと判定された場合、フロー制御部230は、例外処理を実行する(ステップS1305)。その後、フロー制御部230は、ステップS1301に戻り、同様の処理を実行する。
例外処理では、受信したデータの破棄、又は、予め指定された任意の処理が実行される。なお、本実施例は例外処理の内容に限定されない。
図13では、フロー制御部230は、データの出力時に、データの出力順番を変更していたが本発明はこれに限定されない。例えば、フロー制御部230は、受信したデータをデータ保存部240に格納する時に、データの順番を変更してもよい。
実施例1によれば、クエリ振り分け計算機100は、分析シナリオ201及び分割情報202に基づいて、分割クエリ220単位にフロー制御部230を自動的に設定することができる。
そのため、管理者等は、クエリ及びデータを受信するソフトウェアを開発することなく、容易にフロー制御を組み込んだ分散型のストリームデータ処理システムを設定できる。また、分散型のストリーム処理システムの設定に必要なコストを削減できる。
実施例2では、フロー制御の要否判定処理において、クエリ解析部112が、クエリに含まれるオペレーションの種別を考慮する点が実施例1と異なる。以下、実施例1との差異を中心に実施例2について説明する。
実施例2の計算機システムの構成は、実施例1の計算機システムと同一であるため説明を省略する。実施例2のクエリ振り分け計算機100のハードウェア構成及びソフトウェア構成は実施例1のクエリ振り分け計算機100と同一であるため説明を省略する。実施例2のストリームデータ処理計算機120のハードウェア構成及びソフトウェア構成は実施例1のストリームデータ処理計算機120と同一であるため説明を省略する。
また、実施例2のクエリ振り分け計算機100が保持する情報は実施例1のクエリ振り分け計算機100が保持する情報と同一であるため説明を省略する。
実施例2のクエリ解析部112が実行する処理は、実施例1のクエリ解析部112が実行する処理(図10参照)と同一であるため説明を省略する。また、実施例2のクエリ実行部130が実行する処理は、実施例1のクエリ実行部130が実行する処理(図12参照)と同一であるため説明を省略する。実施例2のフロー制御部230が実行する処理は、実施例1のフロー制御部230が実行する処理(図13参照)と同一であるため説明を省略する。
実施例2では、フロー制御の要否判定処理が一部異なる。図14は、実施例2のフロー制御の要否判定処理の一例を説明するフローチャートである。
フロー制御設定部213は、分割クエリ220のループ処理を開始する(ステップS1400)。ステップS1400の処理は、ステップS1100の処理と同一である。
次に、フロー制御設定部213は、クエリのループ処理を開始する(ステップS1401)。
具体的には、フロー制御設定部213は、分割クエリ管理情報500のノードID502を参照し、選択された分割クエリ220に含まれるクエリの中から対象のクエリを選択する。本実施例では、フロー制御設定部213は、出力側のクエリから入力側のクエリの方向にクエリを選択するものとする。例えば、ステップS1400において、図3に示す分割クエリ220−2が選択された場合、フロー制御設定部213は、クエリQ4を選択し、次に、クエリQ3を選択する。
次に、フロー制御設定部213は、選択されたクエリにフロー制御が必要なオペレータが含まれるか否かを判定する(ステップS1402)。具体的には、以下のような処理が実行される。
フロー制御設定部213は、分析シナリオ201を参照して、選択されたクエリに含まれるオペレータを特定する。フロー制御設定部213は、特定されたオペレータを一つ選択し、オペレータ種別情報215を参照して、選択されたオペレータに対応するエントリを検索する。
フロー制御設定部213は、検索されたエントリのフロー制御702が「必要」であるか否かを判定する。検索されたエントリのフロー制御702が「必要」である場合、フロー制御設定部213は、選択されたクエリにフロー制御が必要なオペレータが含まれると判定する。検索されたエントリのフロー制御702が「必要」ではない場合、フロー制御設定部213は、他のクエリについても同様の処理を実行する。
選択されたクエリに含まれる全てのオペレータのフロー制御702が「必要」ではない場合、フロー制御設定部213は、選択されたクエリにフロー制御が必要なオペレータが含まれないと判定する。以上がステップS1402の処理の説明である。
選択されたクエリにフロー制御が必要なオペレータが含まれないと判定された場合、フロー制御設定部213は、選択された分割クエリ220に含まれる全てのクエリに対して処理が完了したか否かを判定する(ステップS1403)。
選択された分割クエリ220に含まれる全てのクエリに対して処理が完了していないと判定された場合、フロー制御設定部213は、ステップS1401に戻り、同様の処理を実行する。
選択された分割クエリ220に含まれる全てのクエリに対して処理が完了していると判定された場合、フロー制御設定部213は、全ての分割クエリ220について処理が完了したか否かを判定する(ステップS1404)。
全ての分割クエリ220について処理が完了していないと判定された場合、フロー制御設定部213は、ステップS1400に戻り、同様の処理を実行する。
全ての分割クエリ220について処理が完了したと判定された場合、フロー制御設定部213は、処理を終了する。
ステップS1402において、選択されたクエリにフロー制御が必要なオペレータが含まれると判定された場合、フロー制御設定部213は、選択された分割クエリ220を、フロー制御が必要な分割クエリ220として特定する(ステップS1405)。ステップS1405の処理は、ステップS1101の処理と同一である。
次に、フロー制御設定部213は、選択された分割クエリ220が最上位の分割クエリ220であるか否かを判定する(ステップS1406)。
具体的には、フロー制御設定部213は、分割クエリ管理情報500を参照し、最も入力側の分割クエリ220であるか否かを判定する。より具体的には、フロー制御設定部213は、選択された分割クエリ220にデータを入力する分割クエリ220が存在するか否かを判定する。選択された分割クエリ220にデータを入力する分割クエリ220が存在する場合、選択された分割クエリ220は最上位の分割クエリ220ではないと判定される。
例えば、図3に示すクエリグラフ301の分割クエリ220−3が選択された分割クエリ220である場合、分割クエリ220−1及び分割クエリ220−2が選択された分割クエリ220にデータを入力する分割クエリ220となる。
選択された分割クエリ220が最上位の分割クエリ220であると判定された場合、フロー制御設定部213は、処理を終了する。
選択された分割クエリ220が最上位の分割クエリ220ではないと判定された場合、フロー制御設定部213は、選択された分割クエリ220より上位の分割クエリ220を、フロー制御が必要な分割クエリ220として特定する(ステップS1407)。その後、フロー制御設定部213は、処理を終了する。
具体的には、フロー制御設定部213は、分割クエリ管理情報500を参照して、選択された分割クエリ220より上位の分割クエリ220を特定する。ここで、上位の分割クエリ220は、ステップS1406の条件を満たす分割クエリ220を示す。フロー制御設定部213は、特定された分割クエリ220に対応するエントリのフロー制御フラグ504に「ON」を設定する。
図14では、フロー制御設定部213は、フロー制御が必要なオペレータが含まれるクエリを含む分割クエリ220を検索するために、分割クエリ220単位でステップS1402の処理を実行する。
なお、フロー制御設定部213は、フロー制御が必要な分割クエリ220より上位の分割クエリ220に関する処理を省略してもよい。すなわち、ステップS1406及びステップS1407の処理を省略してもよい。この場合、フロー制御設定部213は、ステップS1405の処理の後、ステップS1404に進む。
実施例2は、実施例1と同様の効果を有する。また、実施例2では、クエリ振り分け計算機100は、分割クエリ220毎にフロー制御の要否を判定する。これよって、処理結果の整合性を保ちつつ、システム全体の処理性能が高い分散型のストリームデータ処理システムの設定が可能となる。
実施例3では、フロー制御の要否判定処理において、クエリ解析部112が、クエリに含まれるオペレーションの種別及び入力される集約データの経路を考慮する点が実施例1と異なる。以下、実施例1との差異を中心に実施例3について説明する。
実施例3の計算機システムの構成は、実施例1の計算機システムと同一であるため説明を省略する。実施例3のクエリ振り分け計算機100のハードウェア構成及びソフトウェア構成は実施例1のクエリ振り分け計算機100と同一であるため説明を省略する。実施例3のストリームデータ処理計算機120のハードウェア構成及びソフトウェア構成は実施例1のストリームデータ処理計算機120と同一であるため説明を省略する。
また、実施例3のクエリ振り分け計算機100が保持する情報は実施例1のクエリ振り分け計算機100が保持する情報と同一であるため説明を省略する。
実施例3のクエリ解析部112が実行する処理は、実施例1のクエリ解析部112が実行する処理(図10参照)と同一であるため説明を省略する。また、実施例3のクエリ実行部130が実行する処理は、実施例1のクエリ実行部130が実行する処理(図12参照)と同一であるため説明を省略する。実施例3のフロー制御部230が実行する処理は、実施例1のフロー制御部230が実行する処理(図13参照)と同一であるため説明を省略する。
実施例3では、フロー制御の要否判定処理が一部異なる。図15A及び図15Bは、実施例3のフロー制御の要否判定処理の一例を説明するフローチャートである。
フロー制御設定部213は、分割クエリ220のループ処理を開始する(ステップS1500)。ステップS1500の処理は、ステップS1100の処理と同一である。
次に、フロー制御設定部213は、クエリのループ処理を開始する(ステップS1501)。ステップS1501の処理は、ステップS1401の処理と同一である。
次に、フロー制御設定部213は、選択されたクエリにフロー制御が必要なオペレータが含まれるか否かを判定する(ステップS1502)。ステップS1502の処理は、ステップS1402の処理と同一である。
選択されたクエリにフロー制御が必要なオペレータが含まれないと判定された場合、フロー制御設定部213は、選択された分割クエリ220に含まれる全てのクエリに対して処理が完了したか否かを判定する(ステップS1503)。ステップS1503の処理は、ステップS1403の処理と同一である。
選択された分割クエリ220に含まれる全てのクエリに対して処理が完了していないと判定された場合、フロー制御設定部213は、ステップS1501に戻り、同様の処理を実行する。
選択された分割クエリ220に含まれる全てのクエリに対して処理が完了していると判定された場合、フロー制御設定部213は、全ての分割クエリ220について処理が完了したか否かを判定する(ステップS1504)。ステップS1504の処理は、ステップS1102の処理と同一である。
ステップS1502において、選択されたクエリにフロー制御が必要なオペレータが含まれると判定された場合、フロー制御設定部213は、選択されたクエリがグループ化クエリであるか否かを判定する(ステップS1505)。具体的には、以下のような処理が実行される。
フロー制御設定部213は、オペレータ種別情報215を参照し、選択されたクエリにグループ化703が「YES」であるオペレータが二つ以上含まれるか否かを判定する。このとき、フロー制御設定部213は、特定のオペレータの組合せについてのみ判定を行ってもよい。例えば、フロー制御設定部213は、オペレータ「PARTITION BY」及びオペレータ「GROUP BY」のそれぞれのグループ化703が「YES」であるか否かを判定する。
前述した条件を満たさない場合、フロー制御設定部213は、選択されたクエリがグループ化クエリではないと判定する。
前述した条件を満たす場合、フロー制御設定部213は、選択されたクエリがグループ化クエリであると判定する。以上がステップS1505の処理の説明である。
選択されたクエリがグループ化クエリではないと判定された場合、フロー制御設定部213は、選択されたクエリが含まれる分割クエリ220を、フロー制御が必要な分割クエリ220として特定する(ステップS1506)。ステップS1506の処理は、ステップS1101の処理と同一である。
次に、フロー制御設定部213は、選択された分割クエリ220が最上位の分割クエリ220であるか否かを判定する(ステップS1507)。ステップS1507の処理は、ステップS1406の処理と同一の処理である。
選択された分割クエリ220が最上位の分割クエリ220であると判定された場合、フロー制御設定部213は、処理を終了する。
選択された分割クエリ220が最上位の分割クエリ220ではないと判定された場合、フロー制御設定部213は、選択された分割クエリ220より上位の分割クエリ220を、フロー制御が必要な分割クエリ220として特定する(ステップS1508)。その後、フロー制御設定部213は、処理を終了する。ステップS1508の処理は、ステップS1407の処理と同一の処理である。
ステップS1505において、選択されたクエリがグループ化クエリであると判定された場合、フロー制御設定部213は、選択されたクエリに入力される集約データの経路が独立であるか否かを判定する(ステップS1509)。
具体的には、フロー制御設定部213は、経路情報216を参照して、選択されたクエリに対応するエントリを検索する。さらに、フロー制御設定部213は、選択されたクエリにおけるグループ化のキーが検索されたエントリのグループ化キー802と一致し、かつ、独立性803が「YES」であるか否かを判定する。
前述した条件を満たす場合、フロー制御設定部213は、選択されたクエリに入力される集約データの経路が独立であると判定する。すなわち、集約データの経路が複数存在しない場合、当該経路が独立であることを示す。
選択されたクエリに入力される集約データの経路が独立ではないと判定された場合、フロー制御設定部213は、ステップS1506に進む。
選択されたクエリに入力される集約データの経路が独立であると判定された場合、フロー制御設定部213は、ステップS1503に進む。
図15A及び図15Bでは、フロー制御設定部213は、フロー制御が必要、かつ、経路情報216を参照する必要がないオペレータが含まれるクエリを含む分割クエリ220、及び、フロー制御が必要であり、かつ、集約データの経路が独立であるクエリを含む分割クエリを検索するために、分割クエリ220単位でステップS1502、ステップS1505、ステップS1509の処理を実行する。
実施例3は、実施例1及び実施例2と同様の効果を有する。また、実施例3によれば、クエリ振り分け計算機100は、より詳細なフロー制御の要否判定を行うため、より効率的な分散型のストリームデータ処理システムの設定が可能となる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
そのため、従来、管理者等は、データの発生順番及びデータの受信順番の不一致を解消するために、通信の遅延時間、各クエリ間の接続、及び入出力されるデータの関係等を考慮して、データの発生順番及びデータの受信順番を整合させるためのクエリ及びデータを受信するソフトウェアを開発する必要があった。そのため、分散型のストリームデータ処理システムの設定に必要なコストが大きくなるという問題がある。
メモリ102は、CPU101が実行するプログラム及び当該プログラムによって使用される情報を格納する記憶媒体である。メモリ102に格納されるプログラム及び情報については後述する。ストレージ装置103は、プログラム及び情報を格納する記憶媒体である。ストレージ装置103は、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶媒体が考えられる。なお、本実施例は記憶媒体の種類に限定されない。
(設定方法1)ストリームデータ処理計算機120のデータ受信部131がフロー制御部230を含まない場合、クエリ解析部112は、データ受信部131にフロー制御部230を追加する。例えば、クエリ解析部112は、フロー制御部230を実現するプログラムをストリームデータ処理計算機120にインストールする。
そのため、管理者等は、クエリ及びデータを受信するソフトウェアを開発することなく、容易にフロー制御を組み込んだ分散型のストリームデータ処理システムを設定できる。また、分散型のストリームデータ処理システムの設定に必要なコストを削減できる。

Claims (15)

  1. ストリームデータ処理を実行する複数の計算機、及び前記複数の計算機に一つ以上のクエリを含む複数の分割クエリを割り当てる管理計算機を含む計算機システムであって、
    前記複数の計算機の各々は、第1プロセッサ、前記第1プロセッサに接続される第1メモリ、及び前記第1プロセッサに接続され、外部装置と接続するための第1インタフェースを有し、
    前記管理計算機は、第2プロセッサ、前記第2プロセッサに接続される第2メモリ、及び前記第2プロセッサに接続され、外部装置と接続するための第2インタフェースを有し、
    前記管理計算機は、
    前記ストリームデータ処理を実現するための複数のクエリを含む分析シナリオ、及び前記分析シナリオを前記複数の分割クエリに分割するための分割情報を受け付けるパラメータ入力部と、
    前記分析シナリオを解析することによって、前記分析シナリオに含まれる前記複数のクエリの構成を示すクエリグラフを生成するクエリ解析部と、を有し、
    前記クエリ解析部は、
    前記分析シナリオ及び前記分割情報に基づいて、前記クエリによって処理されるデータの発生順番及び当該データの受信順番を整合させるためのフロー制御が必要な分割クエリを特定し、
    前記フロー制御が必要な分割クエリを前記複数の計算機に割り当てる場合、前記フロー制御が必要な分割クエリが割り当てられる複数の計算機に対して前記フロー制御の設定を行うことを特徴とする計算機システム。
  2. 請求項1に記載の計算機システムであって、
    前記クエリ解析部は、前記複数の分割クエリの各々を、前記フロー制御が必要な分割クエリとして特定することを特徴とする計算機システム。
  3. 請求項1に記載の計算機システムであって、
    前記クエリは、一つ以上のオペレータを含み、
    前記クエリ解析部は、前記オペレータの種別、及び前記フロー制御の要否を示す第1フラグが対応付けられたエントリを含むオペレータ種別情報を保持し、
    前記クエリ解析部は、前記オペレータ種別情報を参照して、前記複数のクエリの中から、前記フロー制御が必要なオペレータが含まれるクエリを含む第1分割クエリを検索し、
    前記第1分割クエリを前記フロー制御が必要な分割クエリとして特定することを特徴とする計算機システム。
  4. 請求項3に記載の計算機システムであって、
    前記クエリ解析部は、
    前記第1分割クエリが検索された場合、前記クエリグラフを参照して、前記第1分割クエリが処理するデータの入力元となる分割クエリを検索し、
    前記検索された分割クエリを前記フロー制御が必要な分割クエリとして特定することを特徴とする計算機システム。
  5. 請求項3に記載の計算機システムであって、
    前記クエリは、一つ以上のオペレータを含み、
    前記クエリ解析部は、前記クエリの識別情報、及び前記クエリに入力され、任意の識別情報に基づいて集約された集約データの経路が一つであるか否かを示す第2フラグが対応付けられたエントリを含む経路情報を保持し、
    前記オペレータ種別情報に含まれる前記エントリは、前記経路情報の参照の要否を示す第3フラグが対応付けられ、
    前記クエリ解析部は、
    前記オペレータ種別情報を参照して、前記複数のクエリの中から、前記フロー制御が必要であり、かつ、前記経路情報の参照が必要でないオペレータが含まれるクエリを含む第2分割クエリを検索し、
    前記オペレータ種別情報及び前記経路情報を参照して、前記複数のクエリの中から、前記フロー制御が必要であり、かつ、前記集約データの経路が一つであるクエリを含む第3分割クエリを検索し、
    前記第2分割クエリ及び前記第3分割クエリを前記フロー制御が必要な分割クエリとして特定することを特徴とする計算機システム。
  6. 請求項1に記載の計算機システムであって、
    前記複数の計算機は、
    データを受信するデータ受信部と、
    前記データ受信部が受信したデータを前記分割クエリに基づいて処理するクエリ処理部と、
    前記クエリ処理部の処理結果を送信するデータ送信部と、を有し、
    前記フロー制御が設定された前記分割クエリが割り当てられた前記データ受信部は、前記フロー制御を実行するフロー制御部を含み、
    前記フロー制御部は、一時的に前記データを格納するデータ保存部を含み、
    前記フロー制御部は、
    前記データ受信部が前記データを受信した場合、前記受信したデータに含まれる時刻を取得し、
    前記受信したデータから取得した時刻が所定の期間に含まれるか否かを判定し、
    前記受信したデータから取得された時刻が前記所定の期間に含まれる場合、前記受信したデータを前記データ保存部に格納し、
    前記受信したデータから取得された時刻が前記所定の期間に含まれない場合、前記データ保存部に格納されるデータを時系列順にソートし、前記ソートされたデータを前記クエリ処理部に出力することを特徴とする計算機システム。
  7. 請求項1に記載の計算機システムであって、
    前記複数の計算機は、
    データを受信するデータ受信部と、
    前記データ受信部が受信したデータを前記分割クエリに基づいて処理するクエリ処理部と、
    前記クエリ処理部の処理結果を送信するデータ送信部と、を有し、
    前記管理計算機は、前記フロー制御が設定された前記分割クエリを前記計算機に割り当てる場合に、前記フロー制御を実行するフロー制御部を前記データ受信部に設定することを特徴とする計算機システム。
  8. 請求項1に記載の計算機システムであって、
    前記複数の計算機は、
    データを受信するデータ受信部と、
    前記データ受信部が受信したデータを前記分割クエリに基づいて処理するクエリ処理部と、
    前記クエリ処理部の処理結果を送信するデータ送信部と、を有し、
    前記データ受信部は、非活性化状態の前記フロー制御を実行するフロー制御部を含み、
    前記管理計算機は、前記フロー制御が設定された前記分割クエリを割り当てる場合に、前記フロー制御部を活性状態に設定することを特徴とする計算機システム。
  9. ストリームデータ処理を実行する複数の計算機、及び前記複数の計算機に一つ以上のクエリを含む複数の分割クエリを割り当てる管理計算機を含む計算機システムにおけるストリームデータ処理システムの設定方法であって、
    前記複数の計算機の各々は、第1プロセッサ、前記第1プロセッサに接続される第1メモリ、及び前記第1プロセッサに接続され、外部装置と接続するための第1インタフェースを有し、
    前記管理計算機は、第2プロセッサ、前記第2プロセッサに接続される第2メモリ、及び前記第2プロセッサに接続され、外部装置と接続するための第2インタフェースを有し、
    前記管理計算機は、
    前記ストリームデータ処理を実現するための複数のクエリを含む分析シナリオ、及び前記分析シナリオを前記複数の分割クエリに分割するための分割情報を受け付けるパラメータ入力部と、
    前記分析シナリオを解析することによって、前記分析シナリオに含まれる前記複数のクエリの構成を示すクエリグラフを生成するクエリ解析部と、を有し、
    前記クエリ解析部が、前記分析シナリオ及び前記分割情報に基づいて、前記クエリによって処理されるデータの発生順番及び当該データの受信順番を整合させるためのフロー制御が必要な分割クエリを特定する第1のステップと、
    前記クエリ解析部が、前記フロー制御が必要な分割クエリを前記複数の計算機に割り当てる場合、前記フロー制御が必要な分割クエリが割り当てられる複数の計算機に対して前記フロー制御の設定を行う第2のステップと、を含むことを特徴とするストリームデータ処理システムの設定方法。
  10. 請求項9に記載のストリームデータ処理システムの設定方法であって、
    前記第1のステップは、前記クエリ解析部が、前記複数の分割クエリの各々を、前記フロー制御が必要な分割クエリとして特定するステップを含むことを特徴とするストリームデータ処理システムの設定方法。
  11. 請求項9に記載のストリームデータ処理システムの設定方法であって、
    前記クエリは、一つ以上のオペレータを含み、
    前記クエリ解析部は、前記オペレータの種別、及び前記フロー制御の要否を示す第1フラグが対応付けられたエントリを含むオペレータ種別情報を保持し、
    前記第1のステップは、
    前記クエリ解析部が、前記オペレータ種別情報を参照して、前記複数のクエリの中から、前記フロー制御が必要なオペレータが含まれるクエリを含む第1分割クエリを検索する第3のステップと、
    前記クエリ解析部が、前記第1分割クエリを前記フロー制御が必要な分割クエリとして特定する第4のステップと、を含むことを特徴とするストリームデータ処理システムの設定方法。
  12. 請求項11に記載のストリームデータ処理システムの設定方法であって、
    前記第4のステップは、
    前記クエリ解析部が、前記クエリグラフを参照して、前記第1分割クエリが処理するデータの入力元となる分割クエリを検索するステップと、
    前記クエリ解析部が、前記検索された分割クエリを前記フロー制御が必要な分割クエリとして特定するステップと、を含むことを特徴とするストリームデータ処理システムの設定方法。
  13. 請求項11に記載のストリームデータ処理システムの設定方法であって、
    前記クエリは、一つ以上のオペレータを含み、
    前記クエリ解析部は、前記クエリの識別情報、及び前記クエリに入力され、任意の識別情報に基づいて集約された集約データの経路が一つであるか否かを示す第2フラグが対応付けられたエントリを含む経路情報を保持し、
    前記オペレータ種別情報に含まれる前記エントリは、前記経路情報の参照の要否を示す第3フラグが対応付けられ、
    前記第1のステップは、
    前記クエリ解析部が、前記オペレータ種別情報を参照して、前記複数のクエリの中から、前記フロー制御が必要であり、かつ、前記経路情報の参照が必要でないオペレータが含まれるクエリを含む第2分割クエリを検索するステップと、
    前記クエリ解析部が、前記オペレータ種別情報及び前記経路情報を参照して、前記複数のクエリの中から、前記フロー制御が必要であり、かつ、前記集約データの経路が一つであるクエリを含む第3分割クエリを検索するステップと、
    前記クエリ解析部が、前記第2分割クエリ及び前記第3分割クエリを前記フロー制御が必要な分割クエリとして特定するステップと、を含むことを特徴とするストリームデータ処理システムの設定方法。
  14. 請求項9に記載のストリームデータ処理システムの設定方法であって、
    前記複数の計算機は、
    データを受信するデータ受信部と、
    前記データ受信部が受信したデータを前記分割クエリに基づいて処理するクエリ処理部と、
    前記クエリ処理部の処理結果を送信するデータ送信部と、を有し、
    前記フロー制御が設定された前記分割クエリが割り当てられた前記データ受信部は、前記フロー制御を実行するフロー制御部を含み、
    前記フロー制御部は、一時的に前記データを格納するデータ保存部を含み、
    前記ストリームデータ処理システムの設定方法は、
    前記フロー制御部が、前記データ受信部が前記データを受信した場合、前記受信したデータに含まれる時刻を取得するステップと、
    前記フロー制御部が、前記受信したデータから取得した時刻が所定の期間に含まれるか否かを判定するステップと、
    前記フロー制御部が、前記受信したデータから取得された時刻が前記所定の期間に含まれる場合、前記受信したデータを前記データ保存部に格納するステップと、
    前記フロー制御部が、前記受信したデータから取得された時刻が前記所定の期間に含まれない場合、前記データ保存部に格納されるデータを時系列順にソートし、前記ソートされたデータを前記クエリ処理部に出力するステップと、を含むことを特徴とするストリームデータ処理システムの設定方法。
  15. 請求項9に記載のストリームデータ処理システムの設定方法であって、
    前記複数の計算機は、
    データを受信するデータ受信部と、
    前記データ受信部が受信したデータを前記分割クエリに基づいて処理するクエリ処理部と、
    前記クエリ処理部の処理結果を送信するデータ送信部と、を有し、
    前記第2のステップは、前記クエリ解析部が、前記フロー制御を実行するフロー制御部を前記データ受信部に設定するステップを含むことを特徴とするストリームデータ処理システムの設定方法。
JP2018507824A 2016-03-28 2016-03-28 計算機システム及びストリームデータ処理システムの設定方法 Active JP6505944B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/059834 WO2017168497A1 (ja) 2016-03-28 2016-03-28 計算機システム及びストリームデータ処理システムの設定方法

Publications (2)

Publication Number Publication Date
JPWO2017168497A1 true JPWO2017168497A1 (ja) 2018-07-26
JP6505944B2 JP6505944B2 (ja) 2019-04-24

Family

ID=59963585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018507824A Active JP6505944B2 (ja) 2016-03-28 2016-03-28 計算機システム及びストリームデータ処理システムの設定方法

Country Status (3)

Country Link
US (1) US10769153B2 (ja)
JP (1) JP6505944B2 (ja)
WO (1) WO2017168497A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3077663B1 (fr) * 2018-02-02 2020-02-28 Alstom Transport Technologies Procede d'elaboration d'un programme informatique et dispositif d'elaboration correspondant
CN110321458B (zh) * 2019-05-21 2021-10-15 国家电网有限公司 一种基于控制流图的数据流分析方法及装置
US11556370B2 (en) * 2020-01-30 2023-01-17 Walmart Apollo, Llc Traversing a large connected component on a distributed file-based data structure
US11947539B2 (en) * 2022-05-21 2024-04-02 Oracle International Corporation Concurrency and cancellation in distributed asynchronous graph processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039820A (ja) * 2009-08-12 2011-02-24 Hitachi Ltd ストリームデータ処理方法及び装置
WO2011070725A1 (ja) * 2009-12-11 2011-06-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984043B1 (en) * 2007-07-24 2011-07-19 Amazon Technologies, Inc. System and method for distributed query processing using configuration-independent query plans
US8195648B2 (en) 2009-10-21 2012-06-05 Microsoft Corporation Partitioned query execution in event processing systems
WO2014188500A1 (ja) * 2013-05-20 2014-11-27 富士通株式会社 データストリーム処理の並列化プログラム、及びデータストリーム処理の並列化システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039820A (ja) * 2009-08-12 2011-02-24 Hitachi Ltd ストリームデータ処理方法及び装置
WO2011070725A1 (ja) * 2009-12-11 2011-06-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Also Published As

Publication number Publication date
US10769153B2 (en) 2020-09-08
WO2017168497A1 (ja) 2017-10-05
US20190391981A1 (en) 2019-12-26
JP6505944B2 (ja) 2019-04-24

Similar Documents

Publication Publication Date Title
JP7246381B2 (ja) 環境要件に基づくコンテナのデプロイメント
US10474438B2 (en) Intelligent cloud engineering platform
KR101522014B1 (ko) 앱 아이콘을 관리하는 방법, 장치 및 기록매체
US9600342B2 (en) Managing parallel processes for application-level partitions
JP6505944B2 (ja) 計算機システム及びストリームデータ処理システムの設定方法
JP5999574B2 (ja) データベース管理システム及び計算機システム
US9921874B2 (en) Storage medium, information processing device, and information processing method
US20190354403A1 (en) Deploying embedded computing entities based on features within a storage infrastructure
JP7231518B2 (ja) パッケージ化支援システムおよびパッケージ化支援方法
US20090248596A1 (en) Configuration information management apparatus, configuration information management program, and configuration information management method
JP6256115B2 (ja) 操作探索プログラム、操作探索方法、および操作探索装置
US11544108B2 (en) Method and apparatus for functional improvements to moving picture experts group network based media processing
US20190087167A1 (en) Generating service images having scrpits for the deployment of services
CN110704749B (zh) 推荐引擎定制系统、推荐方法及推荐系统、电子设备
EP3182298A2 (en) Smart elastic scaling based on application scenarios
JP5962736B2 (ja) 情報処理システム、分類方法、及びそのためのプログラム
US20190370267A1 (en) Attribute sharing platform for data processing systems
JP2018147301A (ja) 計算機システム及び処理の割当方法
US9898488B2 (en) Preserving deprecated database columns
JP2015095096A (ja) MapReduceジョブ実行システム、MapReduceジョブ実行方法
US11782763B2 (en) Resolution of tickets in a multi-tenant environment
JP5472885B2 (ja) プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
US9727362B2 (en) Execution control method, storage medium, and execution control apparatus
KR20130127218A (ko) 컨텐츠 서비스 장치 및 컨텐츠 서비스 장치의 컨텐츠 병합 서비스 방법
US20240273065A1 (en) Hadoop distributed file system (hdfs) express bulk file deletion

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180104

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: 20190305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190327

R150 Certificate of patent or registration of utility model

Ref document number: 6505944

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150