JP4967014B2 - ストリームデータ処理装置及び方法 - Google Patents

ストリームデータ処理装置及び方法 Download PDF

Info

Publication number
JP4967014B2
JP4967014B2 JP2009285785A JP2009285785A JP4967014B2 JP 4967014 B2 JP4967014 B2 JP 4967014B2 JP 2009285785 A JP2009285785 A JP 2009285785A JP 2009285785 A JP2009285785 A JP 2009285785A JP 4967014 B2 JP4967014 B2 JP 4967014B2
Authority
JP
Japan
Prior art keywords
data
stream
processing
divided
elements
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
JP2009285785A
Other languages
English (en)
Other versions
JP2011128818A (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 JP2009285785A priority Critical patent/JP4967014B2/ja
Priority to US12/716,713 priority patent/US8782650B2/en
Publication of JP2011128818A publication Critical patent/JP2011128818A/ja
Application granted granted Critical
Publication of JP4967014B2 publication Critical patent/JP4967014B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストリームデータの処理技術に関する。
近年、金融業界における株取引の小口化や、製造/流通業界におけるRFID(Radio Frequency Identification)やセンサの普及などにみられるように、各産業分野で取り扱うデータ量は飛躍的に増加している。加えて、これら取り扱うデータにおいては、金融業界における証券取引や、製造/流通業界における個品単位でのリアルタイムなトレース/監視などにみられるように、即時的な活用に意味がある場合が多い。このため、大量のデータを高速に処理することが可能なデータ処理システムが求められている。
大量のデータを高速に処理するシステムとして、ストリームデータ処理システムが提案されている(例えば特許文献1)。以下に、ストリームデータ処理システムを一般的なデータベース管理システム(以下、DBMS)と比較して説明する。なお、以下、ストリームデータを構成する個々のデータを、「データ要素」と呼ぶことにする。
DBMSでは、分析するデータを2次記憶装置(例えばハードディスクドライブ等のディスク装置)に一旦格納した後、バッチ処理などで一括してデータを処理する。これに対して、ストリームデータ処理では、集計や分析などの処理内容を予めクエリとしてシステムに登録しておき、データがシステムの主記憶装置(例えば揮発性メモリ)へ到来した時点で、逐次的に処理を行う。これにより、ストリームデータ処理システムでは、システムに時々刻々と到来する大量の連続時系列データ(以下、ストリームデータ)を高速に処理することを可能としている。
ストリームデータ処理システムへ登録するクエリの例として、CQL(Continuous Query Language)を挙げることができる(例えば特許文献1)。CQLでは、処理定義の他に、処理対象となるデータ範囲を指定する。このデータ範囲は、一般に「ウィンドウ」と呼ばれる。
ウィンドウのサイズの指定方法として、個数指定と時間指定がある。例えば、個数指定の場合は、「直近10個分」といった指定が行われ、時間指定の場合は、「直近1時間分」といった指定が行われる。つまり、個数指定では、処理対象とされるデータ要素の数が指定され、時間指定では、処理対象とされるデータ要素のタイムスタンプの範囲としての時間が指定される。
ストリームデータ処理システムは、上記で述べたように、データの到来の度に、ウィンドウサイズ分のデータ要素の処理を逐次的に行う。このようなストリームデータ処理システムにおいても、従来方式であるラウンドロビン等の負荷分散技術が適用できることが望ましい
しかし、ストリームデータ処理システムに従来の負荷分散方式を単純に適用することはできない。すなわち、ストリームデータを、複数のストリームデータ処理サーバ(ストリームデータ処理を行うプログラムを実行する計算機)に、例えば均等に又はストリームデータ処理サーバ(以下、「サーバ」と略記する)の処理能力に応じて、分割して振り分けるだけでは、実現することができない。
特に、従来の負荷分散方式をストリームデータ処理システムに単純に適用できない例として、ストリームデータに対して端点を指定しないスライディングウィンドウと、ストリームデータに対して片方の端点を指定するランドマークウィンドウによって、データ範囲を指定した場合における処理が挙げられる(例えば非特許文献1)。
具体例として、自然数N(つまりNは1以上の整数)という値を有したデータ要素を、スライディングウィンドウを用いて直近3個分のデータ要素のSUM演算処理を行う場合を、以下に示す。
サーバ1台での演算結果は、値「1」がサーバに到来した時に演算処理が行われ、結果、値は「1」となる。値「2」がサーバに到来した時に、前回の結果の値「1」に値「2」が加算され、結果値は「3」となる。値「3」がサーバに到来した時に、前回の結果の値「3」に3が加算され、結果値は「6」となる。値「4」がサーバに到来した時に、前回の結果の値「6」に、スライディングウィンドウの範囲から外れる値「1」を減算し、かつ到来した値「4」の加算が行われ、結果値は「9」となる。サーバは、上記にみられる差分演算処理をデータ到来の度に繰り返し、演算結果の値は順に「1」、「3」、「6」、「9」、「12」、「15」、・・・となる。
これに対し、サーバ2台を用いて、ストリームデータを1個ずつのデータ要素に分割し、それらのデータ要素を相互に振り分けてSUM演算処理を行うことを試みる。第1のサーバに値「1」が到来し、その時に演算処理が行われ、結果値は「1」となる。第2のサーバに値「2」が到来し、その時に演算処理が行われ、結果値は「2」となる。第1のサーバに値「3」が到来し、その時に、前回の結果の値「1」に値「3」が加算され、結果値は「4」となる。この差分演算処理が各サーバで交互に繰り返され、演算結果の値は順に「1」、「2」、「4」、「6」、「9」、・・・となり、サーバ1台で演算処理した結果と異なることが分かる。
特開 2006−338432号公報
Lukasz Golaband M.Tamer¨Ozsu Issues in data stream management.SIGMOD Rec, Vol.32, No.2, pp.5−14,2003
前述したように、ストリームデータ処理システムにおける負荷分散では、従来の負荷分散方式を単純に適用できない。このため、上記システムにおける負荷分散を実現するには、システム開発者は、ストリームデータの量やシステム構成を考慮しながらクエリを定義する必要がある。例えば、システム開発者は、サーバを直列とし、前段のサーバでフィルタリング処理や集約処理を行うことでストリームデータの量を削減して、後段のサーバで高負荷な業務処理を行うなどを考慮してクエリを定義する必要がある。
そこで、本発明の目的は、システム開発者がストリームデータの量やシステム構成を考慮することなく、ストリームデータ処理の負荷分散が行われるシステムでのクエリを定義できるようにすることにある。
ストリームデータ処理装置に、複数の計算機が接続される。ストリームデータ処理装置は、ストリームデータに基づいて作成した複数の分割データを複数の計算機に分散する。一つの分割データは以下の通りに作成される。すなわち、ストリームデータ処理装置は、分割データの送信先の計算機の処理性能に基づく数のデータ要素で構成されたデータ要素群をストリームデータから取得し、そのデータ要素群の補助データ部を所定の値を基に決定する。ストリームデータ処理装置は、取得したデータ要素群とENDデータとを含んだ分割データを生成し、分割データを送信先の計算機に送信する。データ要素群は、補助データ部と結果利用データ部で構成される。
ストリームデータ処理装置が受信したストリームデータソースから受信したストリームデータは、記憶資源に格納され、その記憶資源内のストリームデータを基に、分割データを作成することができる。記憶資源は、ストリームデータ処理装置の中にあっても外にあっても良い。
本発明によれば、システム開発者は、ストリームデータの量やシステム構成を考慮することなく、ストリームデータ処理の負荷分散が行われるシステムでのクエリを定義することができる。
本発明の実施例1に係るストリームデータ処理システムの全体構成図である。 入力データ蓄積部123に格納されるストリームデータ状況表の一例を示す。 入力データ管理表124の一例を示す。 入力ストリーム定義の一例を示す。 個数指定によりウィンドウサイズが定義されたクエリ510の一例を示す。 時間指定によりウィンドウサイズが定義されたクエリ610の一例を示す。 サーバ管理表128の一例を示す。 分割データの構成を示す。 クエリ管理表149の一例を示す。 分割データ管理表150の一例を示す。 処理順序制御表176の一例を示す。 サーバ情報取得部125がサーバ管理表128を更新する手順を示したフローチャートである。 入力データ管理部126が負荷分散を行うか判定する処理を示したフローチャートである。 図13のステップ1360の詳細(入力キュー状態を非考慮)を示したフローチャートである。 図13のステップ1380の詳細(入力キュー状態を非考慮)を示したフローチャートである。 図13のステップ1360の詳細(入力キュー状態を考慮)を示したフローチャートである。 図13のステップ1380の詳細(入力キュー状態を考慮)を示したフローチャートである。 図14のステップ1440の指示に応答して行なわれる分割処理のフローチャートである。 図15のステップ1550の指示に応答して行なわれる分割処理のフローチャートである。 図16のステップ1650の指示に応答して行なわれる分割処理のフローチャートである。 図17のステップ1760の指示に応答して行なわれる分割処理のフローチャートである。 分割処理での指示に応答して行なわれる送信処理のフローチャートである。 クエリ処理部145による分割データの処理のフローチャートである。 出力部148によって送信された処理結果の処理結果制御プログラム172による処理のフローチャートである。 本発明の実施例2に係るストリームデータ処理システムの全体構成図である。 データ分割指定画面192の一例を示す。 データ分割指定管理表196の一例を示す。 実施例2におけるサーバ管理表128の更新手順を示したフローチャートである。
以下、本発明の幾つかの実施例を、適宜図面を参照しながら説明する。その際、時刻について「古い」/「新しい」と表現することがある。例えば、第1の時刻が第2の時刻より古いとは、第1の時刻が第2の時刻より過去であることを意味する。一方、第1の時刻が第2の時刻より新しいとは、第1の時刻が第2の時刻より未来であることを意味する。
本発明の実施例1の概要を説明する。なお、以下の説明でも、ストリームデータを構成する個々のデータを、「データ要素」と呼ぶことにする。データ要素は、例えば、ストリームデータソースで発生した時刻を表す情報であるタイムスタンプと、クエリに従う処理の対象となる値とを含む。データ要素は、例えば「タプル」と呼ばれるデータである。
実施例1に係るストリームデータ処理システムは複数の計算機を備える。複数の計算機は、入力制御用計算機と、複数のサーバ計算機と、出力制御用計算機とを含む。入力制御用計算機と出力制御用計算機は一体(同一の計算機)であっても良い。
入力制御用計算機は、本発明の実施例1に係るストリームデータ処理装置が適用された計算機である。
入力制御用計算機は、通信インタフェースと、通信インタフェースに接続されたコントローラ(以下、入力制御コントローラ)とを備える。入力制御コントローラは、メモリとプロセッサ(例えばCPU(Central Processing Unit))とを含み、プロセッサがメモリから入力データ制御プログラムを読み込んで実行することにより動作する。しかし、入力制御コントローラは、ハードウェア回路を含んでもよく、プロセッサによって行われる処理の一部がプロセッサに代えてハードウェア回路で実行されてもよい。
各サーバ計算機は、通信インタフェースと、通信インタフェースに接続されたコントローラ(以下、サーバコントローラ)とを備える。サーバコントローラは、メモリとプロセッサ(例えばCPU)とを含み、プロセッサがメモリからストリームデータ処理プログラムを読み込んで実行することにより動作する。しかし、サーバコントローラは、ハードウェア回路を含んでもよく、プロセッサによって行われる処理の一部がプロセッサに代えてハードウェア回路で実行されてもよい。
出力制御用計算機は、通信インタフェースと、通信インタフェースに接続されたコントローラ(以下、出力制御コントローラ)とを備える。出力制御コントローラは、メモリとプロセッサ(例えばCPU)とを含み、プロセッサがメモリから処理結果制御プログラムを読み込んで実行することにより動作する。しかし、出力制御コントローラは、ハードウェア回路を含んでもよく、プロセッサによって行われる処理の一部がプロセッサに代えてハードウェア回路で実行されてもよい。
ストリームデータを基に複数の分割データが生成され、複数の分割データが複数のサーバ計算機に分散される。これにより、ストリームデータの処理にかかる負荷が、複数のサーバ計算機に分散される。
ここで、「分割データ」は、補助データ部、結果利用データ部、および演算終了通知データ部から構成されており、それらは連続している。補助データ部が分割データの前部分にあり、演算終了通知データ部が分割データの後部分にあり、結果利用データ部が補助データ部と演算終了通知データ部との間に挟まれた中間部分にある。補助データ部及び結果利用データ部が、ストリームデータのうちの一以上のデータ要素で構成されており、演算終了通知データ部が、分割データの終わりを意味するデータ(ENDデータ)で構成されている。結果利用データ部に含まれるデータ要素中の値は、サーバ計算機にて処理され、且つ、そのサーバ計算機から処理結果として出力され得る。一方、補助データ部に含まれるデータ要素中の値は、サーバ計算機にて処理されるが、そのサーバ計算機から処理結果として出力されることがない。
以下、或る分割データの送信先が或るサーバ計算機(以下、対象サーバ)であるとして、説明を続ける。また、ENDデータは、データ要素の数としてカウントされても良いが、以下、説明をわかりやすくするために、ENDデータは、データ要素の数としてカウントされないとする。
入力制御コントローラは、ストリームデータソースから通信インタフェースを通じてストリームデータを受信し、受信したストリームデータを記憶資源に格納する。記憶資源は、入力制御用計算機の中にあっても外にあっても良い。入力制御コントローラは、定期的に(又は不定期的に)、ストリームデータのデータ量(又は、ストリームデータのデータ量及び蓄積時間長)を監視し、負荷分散を実行するか否かを判定する。具体的には、例えば、入力制御コントローラは、ストリームデータのデータ量と、対象サーバの処理性能を表したスループット(サーバスループット)と、クエリに定義されたデータ範囲のサイズ(ウィンドウサイズ)とに基づいて、負荷分散を実行するか否かを判断する。その判断では、入力キュー状態が考慮されてもよい。入力キュー状態とは、対象サーバが有するキュー(データ要素が入力されるキュー)に存在する未処理のデータ要素の数である。
入力制御コントローラは、負荷分散を実行すると判断した場合、対象サーバのサーバスループット(又は、サーバスループットと入力キュー状態)を基に、分割データのデータ量(分割データを構成するデータ要素の数)を決定する。そして、入力制御コントローラは、記憶資源に蓄積されているストリームデータから、決定したデータ量分のデータ要素を取得する。ここでは、連続した二以上のデータ要素が取得される。以下、その二以上のデータ要素を「データ要素群」と言う。
次に、入力制御コントローラは、対象サーバが有するクエリで定義されているウィンドウサイズを基に、データ要素群のうちの補助データ部を決定する(すなわち、データ要素群の先頭のデータ要素からどのデータ要素までを補助データ部に属するデータ要素であるかを決定する)。入力制御コントローラは、データ要素群の残りを結果利用データ部に決定する。
最後に、入力制御コントローラは、データ要素群の末端のデータ要素の後に、ENDデータを付加する。これにより、分割データが完成する。入力制御コントローラは、完成した分割データに、分割データのID(以下、分割データID)を付与し、分割データIDが付与された分割データを対象サーバに送信する。
なお、入力制御コントローラは、補助データ部及び結果利用データ部を決定した後、任意のタイミングで(例えば、分割データを送信する前、或いは、分割データと共に)、結果利用データ部に属する一以上のデータ要素のうちの先頭のデータ要素を特定可能にするための情報(以下、結果利用特定情報)を、対象サーバに送信する。結果利用特定情報は、別の言い方をすれば、補助データ部に属するデータ要素を特定可能にするための情報である。つまり、対象サーバは、分割データに含まれる二以上のデータ要素のうち、先頭のデータ要素から、結果利用特定情報から特定されるデータ要素より一つ前のデータ要素までが、補助データ部に属するデータ要素であり、結果利用特定情報から特定されるデータ要素及びそのデータ要素よりも後のデータ要素が、結果利用データ部に属するデータ要素であることがわかる。結果利用特定情報の一例としては、後に説明するように、結果利用データ部に属する一以上のデータ要素のうちの最古のデータ要素内のタイムスタンプを採用することができるが、それに限らず、他種の情報、例えば、補助データ部に属するデータ要素の数、及び、補助データ部の末端のデータ要素内のタイムスタンプのうちの少なくとも一つを採用することができる。
対象サーバのサーバコントローラが、入力制御コントローラから分割データを受信し、その分割データの処理を実行する。処理の実行では、分割データのうち、補助データ部に属する要素データ内の値は、処理されるものの処理結果としては出力されないよう破棄され、結果利用データ部に属する要素データ内の値は、処理され且つ処理結果として出力制御コントローラに送信される。補助データ部に属するデータ要素及び結果利用データ部に属するデータ要素は、上記の結果利用特定情報からわかる。サーバコントローラは、ENDデータを検出した場合、補助データ部ならびに結果利用データ部の処理が完了したことを認識して、ENDデータを出力制御コントローラに送信する。
出力制御コントローラは、クエリと分割データIDとのセットごとに、各サーバ計算機からの処理結果を管理する。ENDデータを受信すると、出力制御コントローラは、管理している処理結果を、ユーザからの要求に応じて送信する。
以下、実施例1を詳細に説明する。なお、以下、サーバ計算機の数を2とするが、サーバ計算機の数は2より多くてもよい。また、入力制御コントローラ、サーバコントローラ及び出力制御コントローラは、それぞれ、CPU及び主記憶装置を有するとする。また、以下、説明が冗長にならないようにするために、CPUがコンピュータプログラムを実行することにより行われる処理を、そのコンピュータプログラムにより行われるとする。
図1は、本発明の実施例1に係るストリームデータ処理システムの全体構成図である。
ストリームデータ処理システムは、ストリームデータソース101からのストリームデータを分割して送信する入力制御用計算機120と、ストリームデータ処理を実行する第1及び第2のサーバ計算機140及び160と、サーバ計算機の処理結果を制御する出力制御用計算機170とを有する。通信ネットワーク(以下、ネットワーク)110に、ストリームデータソース101と、入力制御用計算機120と、第1及び第2のサーバ計算機140及び160とが接続されており、ネットワーク115に、第1及び第2のサーバ計算機140及び160と、出力制御用計算機170とが接続されている。ネットワーク110及び115は一体であっても良い。
ストリームデータソース101は、ストリームデータの発生源となるシステムである。ストリームデータは、時々刻々と発生する時系列データであり、例えば、POS(Point Of Sales)データ、証券取引データ、センサから得られる温度データ及び/又は湿度データなどである。ストリームデータソース101は、ストリームデータを、ネットワーク110を介して入力制御用計算機120に送信する。
入力制御用計算機120は、主記憶装置121、CPU131、2次記憶装置132および通信インタフェース133を有する。主記憶装置121には、オペレーティングシステム130および入力データ制御プログラム122が格納されている。オペレーティングシステム130および入力データ制御プログラム122は、可搬型記憶媒体またはネットワーク110を介して2次記憶装置132に導入され、主記憶装置121にロード後、CPU131によって実行される。これは、図1に示した他の計算機におけるプログラムについても同様であってよい。
入力データ制御プログラム122は、ストリームデータソース101から送信されるストリームデータを格納する入力データ蓄積部123、入力データ蓄積部123に格納されたストリームデータの状態を格納する入力データ管理表124、入力データ蓄積部123を定期的(又は不定期的)に監視して負荷分散するか否かの判定を行う入力データ管理部126、入力データ蓄積部123に蓄積されたストリームデータを分割することにより分割データを生成する入力データ分割部127、各サーバ計算機からサーバ計算機の状態を取得するサーバ情報取得部125、サーバ情報取得部125から得たサーバ情報を格納するサーバ管理表128、及び、入力データ分割部127により生成された分割データを各サーバ計算機へ送信するデータ送信部129、を有するプログラムである。
第1のサーバ計算機140は、主記憶装置141、CPU152、2次記憶装置153および通信インタフェース154を有する。主記憶装置141には、オペレーティングシステム151、ストリームデータに対して演算処理を行うストリームデータ処理プログラム143、およびストリームデータ処理プログラム143を監視するサーバ監視プログラム142が格納されている。
ストリームデータ処理プログラム143は、データ送信部129から送信される分割データを受信するデータ受信部144、サーバ計算機140に登録されているクエリを管理するクエリ管理表149、登録されているクエリを実行するクエリ処理部145(入力部146、演算処理実行部147、および出力部148を有する)、データ送信部129から分割データの管理情報を取得する分割データ管理情報受信部155、及び、取得した分割データの管理情報を格納する分割データ管理表150、を有するプログラムである。
第2のサーバ計算機160の構成は、第1のサーバ計算機140と同様である。すなわち、第2のサーバ計算機160も、CPU、2次記憶装置、通信インタフェースおよび主記憶装置を有し、主記憶装置には、オペレーティングシステム、ストリームデータ処理プログラムおよびサーバ監視プログラムが格納されている。
出力制御用計算機170は、主記憶装置171、CPU178、2次記憶装置179及び通信インタフェース180を有する。主記憶装置171には、オペレーティングシステム177および処理結果制御プログラム172が格納されている。
処理結果制御プログラム172は、ストリームデータ処理プログラム143から処理結果を受信する処理結果受信部173、処理結果を2次記憶装置179(または主記憶装置171)に格納しユーザプログラム(例えば、図示しないアプリケーションプログラム)へ処理結果を送信する処理結果管理部174、データ送信部129から処理順序情報を取得する処理順序受信部175、および処理順序情報や処理結果の格納場所情報を格納する処理順序制御表176、を有するプログラムである。
次に、図1を用いて、ストリームデータ処理システムにおける負荷分散の処理フローを説明する。
ストリームデータソース101は、ネットワーク110を通じて入力データ蓄積部123にストリームデータを送信する。入力データ管理部126は、定期的に入力データ蓄積部123を監視することで、ストリームデータの状況を把握し、把握した状況を表すよう入力データ管理表124を更新する。加えて、入力データ管理部126は、入力データ管理表124と、サーバ情報取得部125がサーバ監視プログラム142から取得したサーバ情報が格納されているサーバ管理表128とを参照し、負荷分散を実行するか否かを判定する。
負荷分散を実行すると判定した場合、入力データ管理部126は、入力データ分割部127に、各サーバ計算機に送信するストリームデータ(以下、「分割データ」と呼ぶ)の生成を指示する。
入力データ分割部127は、サーバ管理表128を参照して各サーバ計算機に送信する分割データの量を決定し、入力データ蓄積部123から各サーバ計算機に送信するストリームデータの取得や分割データIDの付与等を行い、分割データを生成する(各サーバ計算機に送信する分割データの内容の詳細については、後述する)。
分割データを生成した後、データ送信部129は、まず、ネットワーク110または115を通じて、分割データの管理情報を分割データ管理情報受信部155に送信し、処理順序情報を処理順序受信部175に送信する。情報送信後、分割データ管理情報受信部155は、分割データ管理表150を更新し、処理順序受信部175は、処理順序制御表176を更新する。次に、データ送信部129は、ネットワーク110を通じて、サーバ計算機140に、生成した分割データを送信する。最後に、データ送信部129は、分割データに対応するウィンドウサイズ(すなわちデータ範囲のサイズ)を加味して、入力データ蓄積部123から、送信した分割データを削除する。ただし、データ送信部129は、分割データの全てを削除するのではなく、分割データを構成する連続した複数のデータ要素のうちの、後側におけるK個のデータ要素を削除しない。Kは、後述の補助データ部に含まれるデータ要素の数である。つまり、データ送信部129は、分割データの後側部分におけるデータ要素であって、補助データ部を構成するデータ要素の数Kと同数のデータ要素を削除しないで残す。なぜなら、その残されたK個のデータ要素が、次の分割データの補助データ部におけるデータ要素になるからである。
データ受信部144は、ネットワーク110を通じて分割データを受信する。データ受信部144は、クエリ管理表149を参照して、受信した分割データに対応するクエリ処理部145を選択し、クエリ処理部145の入力部146に分割データを入力する。入力部146は、入力された分割データを演算処理実行部147に順次投入し、演算処理実行部147は、クエリに定義された処理内容を実行する。演算処理実行部147は、演算処理実行後、分割データ管理表150を参照し、演算処理の結果を表すデータ(処理結果データ)を出力部148に出力するか否かを判定する。出力すると判定された場合、出力部148からネットワーク115を通じて処理結果受信部173へ処理結果データが出力される。処理結果受信部173は、処理結果データを受信し、受信した処理結果データを、処理結果管理部174に出力する。処理結果管理部174は、処理結果データを2次記憶装置179または主記憶装置172に格納した後、処理順序制御表176を更新する。
入力部146から演算処理実行部147に、分割データの終端を示すデータ(以下、ENDデータ)が投入されると、演算処理実行部147は、クエリに定義された処理を行わずに、出力部148に、ENDデータを出力する。出力部148は、ENDデータを受け、ネットワーク115を通じて、そのENDデータを処理結果受信部173に送信する。処理結果受信部173は、ENDデータを受け、そのENDデータを処理結果管理部174に出力する。処理結果管理部174は、ENDデータを受け、処理順序制御表176を更新する。
以上、実施例1におけるストリームデータ処理システムの負荷分散の処理フローを説明した。なお、上記の説明では、分割データが第1のサーバ計算機140に送信されることを例に採ったが、分割データが第2のサーバ計算機160に送信された場合には、第2のサーバ計算機160において、第1のサーバ計算機140で行われる処理と同様の処理が行われる。
図2は、入力データ蓄積部123に格納されるストリームデータ状況表の一例を示す。
ストリームデータ状況表には、ストリームデータの種類毎に、ストリームID210、タイムスタンプ220、および値230が格納される。
ここで言う「ストリームID」とは、ストリームデータの種類を識別するためのユニークなIDであり、通常は予めユーザ等によってユニークな文字列の値で設定される。
ストリームデータの各データ要素は、タイムスタンプ及び値を含んでいる。つまり、ストリームデータ状況表には、ストリームID210毎に、データ要素が蓄積される。表に含まれるタイムスタンプ220は、データ要素に含まれているタイムスタンプであり、そのタイムスタンプは、そのデータ要素の発生時間を示す。表に含まれる値230は、データ要素に含まれる値であり、その値は、ストリームデータ処理における演算で使用される。
図2の例によれば、ストリームID210として、「S1」が格納されており、同ストリームID「S1」のストリームデータのデータ要素として、タイムスタンプ220が「10:00:00」で値230が「30」であるデータ要素と、タイムスタンプ220が「10:00:01」で値230が「24」であるデータ要素と、タイムスタンプ220が「10:00:02」で値230が「45」であるデータ要素とがそれぞれ格納されている。
図3は、入力データ管理表124の一例を示す。
入力データ管理表124は、ストリームID310毎に、データ量320、データ蓄積時間330を有する。データ量320は、データ要素の総数を表す情報である。データ蓄積時間330は、最古のデータ要素が有するタイムスタンプと最新のデータ要素が有するタイムスタンプとの差分を表す情報である。
入力データ管理部126は、入力データ蓄積部123に格納されているストリームデータ状況表を元に、入力データ管理表124を定期的に更新し、ストリームID310ごとに、ストリームデータのデータ量320と、データ蓄積時間330とを格納する。ストリームデータ量320は、入力データ蓄積部123の各ストリームID210に存在するストリームデータの個数をカウントすることで取得する。データ蓄積時間330は、入力データ蓄積部123の各ストリームID210に存在するストリームデータの内、最新のストリームデータと最古のストリームデータのタイムスタンプの差分で取得する。
図3の例によれば、ストリームID310として「S1」が記録され、同ストリームID「S1」のデータ量320として「13500個」が、データ蓄積時間330として「10秒」がそれぞれ記録されている。
図4は、入力ストリーム定義の一例を示す。
入力ストリーム定義410は、第1のサーバ計算機140、および第2のサーバ計算機160に登録される。サーバ計算機140(160)に登録される入力ストリーム定義410は、そのサーバ計算機140(160)に入力されるストリームデータに関する情報、例えば、ストリームデータの種類、値の属性を表す情報を有する。
図4の例によれば、入力ストリーム定義410は、サーバ計算機140(160)のデータ受信部144が受信するストリームデータ(入力ストリーム)のストリームIDが「S1」(及び「S2」)であり、そのストリームデータが有する各データ要素の値が整数であり且つ変数「value」(及び変数「temperature」)であることを表している。
図5、および図6は、第1のサーバ計算機140、および第2のサーバ計算機160に登録されるクエリの例である。なお、クエリは、例えばCQL(Continuous Query Language)に基づいている。
図5は、個数指定によりウィンドウサイズが定義されたクエリ510の一例を示す。クエリ510は、クエリIDが「Q1」であり、処理内容が、ストリームID「S1」に対応する直近10個分のデータ要素の変数valueの値の合計値を演算することを示す。なお、クエリ510における「ROWS 10」が、直近10個分のデータ要素を意味し、それが、ウィンドウサイズに該当する。
図6は、時間指定によりウィンドウサイズが定義されたクエリ610の一例を示す。クエリ610は、クエリIDが「Q2」であり、処理内容が、ストリームID「S2」に対応する直近30秒分のデータ要素の変数temperatureの値の平均値を演算することを示す。なお、クエリ610における「RANGE 30 seconds」が、直近30秒分のデータ要素を意味し、それが、ウィンドウサイズに該当する。
図7は、サーバ管理表128の一例を示す。
サーバ管理表128は、サーバ計算機毎に、サーバ名710、IPアドレス720、ストリームID730、クエリID740、ウィンドウサイズ750、スループット760、および入力キュー状態770を有する。
サーバ名710およびIPアドレス720は、サーバ計算機の名称およびIPアドレスを表す情報である。ストリームID730は、サーバ計算機に登録されたストリームIDである。クエリID740およびウィンドウサイズ750は、サーバ計算機に登録されたストリームIDに対応したクエリが有するクエリID及びウィンドウサイズを表す情報である。スループット760は、クエリIDに対応した、サーバ計算機の平均処理性能(スループット)を表す情報である。スループットは、単位時間(例えば1秒間)当たりに処理されるデータ要素の数を表す。入力キュー状態770は、クエリIDに対応したクエリ処理部145の入力部146が管理するキュー(入力キュー)で待ち状態となっているデータ要素(未処理のデータ要素)の数を表す。
図7の例によれば、サーバ名710およびIPアドレス720として、第1のサーバ計算機140のサーバ名である「サーバA」と、IPアドレス「192.168.1.4」がそれぞれ記録されている。加えて、「サーバA」を有する行においては、第1のサーバ計算機140に登録されているストリームIDである「S1」と「S2」が、ストリームID730としてそれぞれ記録されている。
サーバ名「サーバA」について、ストリームID「S1」に対応するクエリID「Q1」とウィンドウサイズ「10個」が、ストリームID「S1」を有する行に、クエリID740およびウィンドウサイズ750としてそれぞれ記録されている。また、サーバ名「サーバA」について、スループット「1000個/秒」および入力キュー状態「50個」が、クエリID「Q1」を有する行に、スループット760および入力キュー状態770としてそれぞれ記録されている。
さらに、サーバ名「サーバA」について、ストリームID「S2」に対応するクエリID「Q2」とウィンドウサイズ「30秒」が、ストリームID「S2」を有する行に、クエリID740およびウィンドウサイズ750としてそれぞれ記録されている。また、サーバ名「サーバA」について、スループット「50個/秒」および入力キュー状態「200個」が、クエリID「Q2」を有する行に、スループット760および入力キュー状態770としてそれぞれ記録されている。
図8は、分割データの構成を示す。
分割データ810は、補助データ部840、結果利用データ部830、および演算終了通知データ部820から構成される。
結果利用データ部830は、入力データ蓄積部123から取得されたストリームデータにおける一以上のデータ要素で構成されている。このデータ部830に含まれるデータ要素は、演算処理実行部147にて演算処理され、出力部148に出力される。
補助データ部840は、入力データ蓄積部123から取得されたストリームデータにおける一以上のデータ要素で構成されている。このデータ部840に含まれるデータ要素は、結果利用データ部830の前部分に付与される。このデータ部840に含まれるデータ要素は、演算処理実行部147にて演算処理されるが、出力部148には出力されない。
演算終了通知データ部820は、演算処理実行部147にて演算処理対象となるデータの終端を示し、結果利用データ部の後部分に付与される。このデータ部820は、前述したENDデータで構成される。ENDデータは、演算処理実行部147にて演算処理はされず、補助データ部840および結果利用データ部830の処理後、出力部148に出力される。
図8によれば、補助データ部840の次に結果利用データ部830が続いており、結果利用データ部830の次に演算終了通知データ部820が続いている。
図8の例によれば、補助データ部840には、タイムスタンプが「10:00:00」で値が「30」のデータ要素から、タイムスタンプが「10:00:23」で値が「34」のデータ要素までが存在する。結果利用データ部830には、タイムスタンプが「10:00:24」で値が「25」のデータ要素から、タイムスタンプが「10:00:54」で値が「28」のデータ要素までが存在する。演算終了通知データ部820には、タイムスタンプが「END」で、値が「NULL」であるENDデータが存在する。
図9は、クエリ管理表149の一例を示す。
クエリ管理表149は、ストリームID910毎に、クエリID920、およびウィンドウサイズ930を有する。
ストリームID910は、サーバ計算機に登録されたストリームIDである。クエリID920、およびウィンドウサイズ930は、サーバ計算機に登録されたストリームIDに対応するクエリIDおよびウィンドウサイズである。
図9の例によれば、ストリームID910として、第1のサーバ計算機140に登録されているストリームID「S1」と「S2」がそれぞれ記録されている。ストリームID「S1」が記録されている行には、クエリID「Q1」とそのウィンドウサイズである「10個」が、クエリID920とウィンドウサイズ930としてそれぞれ記録されている。ストリームID「S2」が記録されている行には、クエリID「Q2」とそのウィンドウサイズである「30秒」が、クエリID920とウィンドウサイズ930としてそれぞれ記録されている。
図10は、分割データ管理表150の一例を示す。
分割データ管理表150は、クエリID1010毎に、分割データID1020、および演算対象開始時間1030を有する。
クエリID1010は、サーバ計算機に登録されているクエリのクエリIDである。分割データID1020は、データ送信部129が分割データに付与したユニークなIDである。演算対象開始時間1030は、分割データ810の結果利用データ部830における、最古のタイムスタンプである。
図10の例によれば、クエリID1010として、第1のサーバ計算機140に登録されているクエリのID「Q1」と「Q2」がそれぞれ記録されている。クエリID「Q1」が記録されている行には、分割データID1020として「000001」が記録されており、且つ、演算対象開始時間1030として「10:00:24」が記録されている。
図11は、処理順序制御表176の一例を示す。
処理順序制御表176は、クエリID1110毎に、分割データID1120、END送信有無1130、および処理結果格納場所1140を有する。
クエリID1110は、サーバ計算機に登録されているクエリのIDである。分割データID1120は、データ送信部129が分割データに付与したユニークなIDある。END送信有無1130は、分割データ810の演算終了通知データ部820が送信されたか否かを表す情報である。処理結果格納場所1140は、処理結果受信部173から受信した演算処理結果を格納している記憶領域のアドレスを表す情報である。
図11の例によれば、クエリID1110として、第1のサーバ計算機に登録されているクエリのクエリID「Q1」と「Q2」がそれぞれ記録されている。クエリID「Q1」を有する行には、分割データID「000001」と「000002」がそれぞれ分割データID1120として記録されている。分割データID「000001」を有する行には、演算終了通知データ部820が送信されたことを示す値「有り」がEND送信有無1130として記録されており、且つ、分割データID「000001」の分割データの演算処理結果が格納されている記憶領域のアドレスである「0x384621F」が処理結果格納場所1140として記録されている。一方、分割データID「000002」を有する行には、演算終了通知データ部820が送信されていないことを示す値「無し」がEND送信有無1130として記録されており、且つ、分割データID「000002」の分割データの演算処理結果が無いことを示す値「−」が処理結果格納場所1140として記録されている。
以下、本実施例で行われる処理を説明する。
図12は、サーバ情報取得部125がサーバ管理表128を更新する手順を示したフローチャートである。
最初に、サーバ情報取得部125は、ネットワーク110を通じてサーバ監視プログラム142と通信を行い、サーバ情報取得を指示する(ステップ1210)。
次に、サーバ監視プログラム142は、クエリ管理表149を参照し、ストリームID910と、クエリID920と、ウィンドウサイズ930とを取得する(ステップ1220)。
次に、サーバ監視プログラム142は、クエリ処理部145に問合せ、取得したクエリID920に対応するスループットを取得する(ステップ1230)。
次に、サーバ監視プログラム142は、取得したクエリID920に対応するクエリ処理部145に存在する入力部146に問合せ、入力キュー状態を取得する(ステップ1240)。
次に、サーバ監視プログラム142は、ステップ1220からステップ1240で取得したストリームID910、クエリID920、ウィンドウサイズ930、スループット、および入力キュー状態を、ネットワーク110を通じてサーバ情報取得部125に送信する(ステップ1250)。
最後に、サーバ情報取得部125は、サーバ管理表128における、ステップ1210でサーバ情報取得を指示したサーバ監視プログラム142が存在するサーバ名が記録されている行、を更新する(ステップ1260)。すなわち、ステップ1220で取得したストリームID910、クエリID920、ウィンドウサイズ930を、ストリームID730、クエリID740、およびウィンドウサイズ750として記録し、ステップ1230で取得したスループットをスループット760として記録し、ステップ1240で取得した入力キュー状態を入力キュー状態770として記録する。
図13は、入力データ管理部126が負荷分散を行うか判定する処理を示したフローチャートである。
最初に、入力データ分割部127は、分割データIDの値を「0」に設定する(ステップ1300)。つまり、分割データIDの値がリセットされる。なお、分割データIDは、ストリームID310ごとに存在する。
ストリームデータが入力データ蓄積部123に投入され続けている間(ステップ1305)、入力データ管理部126は、ステップ1310からステップ1380までの処理を繰り返す。
すなわち、入力データ管理部126は、入力データ管理表124からデータ量320を取得する(ステップ1310)。
取得されたデータ量320が「0」より多い数を表している場合(ステップ1320でYES)、入力データ管理部126は、入力データ管理表124から、対応するストリームID310を取得する(ステップ1330)。なお、取得されたデータ量320が「0」である場合(ステップ1320でNO)、ストリームデータが蓄積されていないということなので、負荷分散は不要であると判定されることになる。
次に、入力データ管理部126は、サーバ管理表128から、取得したストリームID310に対応するウィンドウサイズ750を取得する(ステップ1340)。
次に、入力データ管理部126は、取得したウィンドウサイズ750が個数指定か否かを判定する(ステップ1350)。
ステップ1350の判定結果がYESの場合、入力データ管理部126は、個数指定時の負荷分散判定を行う(ステップ1360)。
ステップ1350の判定結果がNOの場合、入力データ管理部126は、ステップ1340で取得されたウィンドウサイズ750が時間指定か否か判定する(ステップ1370)。
ステップ1370の判定結果がYESの場合、入力データ管理部126は、時間指定時の負荷分散判定を行う(ステップ1380)。
ストリームデータの入力データ蓄積部123への投入が完了すると、負荷分散判定処理が終了する(ステップ1390)。
なお、ステップ1360の詳細は、図14及び図16に示される。ステップ1350の判定結果がYESの場合、入力データ管理部126は、入力キュー状態770が有効な情報でなければ(入力キュー状態770が「−」といった無効な値であれば)、図14に示す処理を行い、入力キュー状態770が有効な情報であれば(入力キュー状態770が「−」といった無効な値でなければ)、図16に示す処理を行う。
ステップ1380の詳細は、図15及び図17に示される。ステップ1370の判定結果がYESの場合、入力データ管理部126は、入力キュー状態770が有効な情報でなければ(入力キュー状態770が「−」といった無効な値であれば)、図15に示す処理を行い、入力キュー状態770が有効な情報であれば(入力キュー状態770が「−」といった無効な値でなければ)、図17に示す処理を行う。
図14は、図13のステップ1360の詳細(入力キュー状態を非考慮)を示したフローチャートである。
最初に、入力データ管理部126は、サーバ管理表128から、ステップ1330で取得したストリームID310に対応するスループット760を取得する(ステップ1410)。
次に、入力データ管理部126は、ステップ1310で取得したデータ量320が、スループット760(つまり単位時間当たりに処理可能なデータ要素の数)よりも大きいか判定する(ステップ1420)。
ステップ1420の判定結果がYESの場合、入力データ管理部126は、データ量320が、ステップ1340で取得したウィンドウサイズ750の2倍よりも大きいか判定する(ステップ1430)。なお、2倍とする理由は、例えば次のとおりである。すなわち、個数指定の場合、分割データ量を最低でもウィンドウサイズの2倍以上にしないと、サーバの計算量だけが増えてしまい(例えば、補助データ量が多くて結果利用データが少ない、即ち、捨てる為の処理をサーバは多くしている)、逆にシステム全体のスループットが下がってしまうことにある。従って、S1430の判断において、データ量320の閾値は、ウィンドウサイズ750のX倍(Xは2以上の整数)の値とすることができる。これは、データ量がウィンドウサイズ750の2倍よりも大きいか否かの判断を行う他のステップにも適用することができる。
ステップ1430の判定結果がYESの場合、入力データ管理部126は、入力データ分割部127に、スループット760を加味した分割処理(個数指定による分割処理)を指示する(ステップ1440)。
ステップ1420又は1430の判定結果がNOの場合、負荷分散は行われない。
図15は、図13のステップ1380の詳細(入力キュー状態を非考慮)を示したフローチャートである。
最初に、入力データ管理部126は、入力データ管理表124から、S1330で取得したストリームID310に対応するデータ蓄積時間330を取得する(ステップ1510)。
次に、入力データ管理部126は、サーバ管理表128から、ステップ1330で取得したストリームID310に対応するスループット760を取得する(ステップ1520)。
次に、入力データ管理部126は、ステップ1310で取得したデータ量320が、スループット760よりも大きいか否かを判定する(ステップ1530)。
ステップ1530の判定結果がYESの場合、入力データ管理部126は、データ蓄積時間330が、ステップ1340で取得したウィンドウサイズ750の2倍よりも長いか否かを判定する(ステップ1540)。
ステップ1540の判定結果がYESの場合、入力データ管理部126は、入力データ分割部127に、スループット760を加味した分割処理(時間指定による分割処理)を指示する(ステップ1550)。
ステップ1530又は1540の判定結果がNOの場合、負荷分散は行われない。
図16は、図13のステップ1360の詳細(入力キュー状態を考慮)を示したフローチャートである。
最初に、入力データ管理部126は、サーバ管理表128から、ステップ1330で取得したストリームID310に対応するスループット760および入力キュー状態770を取得する(ステップ1610)。
次に、入力データ管理部126は、スループット760から入力キュー状態770を減算することにより得られた差が正の値か否かを判定する(ステップ1620)。
ステップ1620の判定結果がYESの場合、入力データ管理部126は、ステップ1310で取得したデータ量320が、ステップ1620で得られた差よりも大きいか否かを判定する(ステップ1630)。
ステップ1630の判定結果がYESの場合、入力データ管理部126は、データ量320が、ステップ1340で取得したウィンドウサイズ750の2倍よりも大きいか判定する(ステップ1640)。
ステップ1640の判定結果がYESの場合、入力データ管理部126は、入力データ分割部127に、スループット760と入力キュー状態770を加味した分割処理(個数指定による分割処理)を指示する(ステップ1440)。
ステップ1620、1630又は1640の判定結果がNOの場合、負荷分散は行われない。
図17は、図13のステップ1380の詳細(入力キュー状態を考慮)を示したフローチャートである。
最初に、入力データ管理部126は、入力データ管理表124から、ステップ1330で取得したストリームID310に対応するデータ蓄積時間330を取得する(ステップ1710)。
次に、入力データ管理部126は、サーバ管理表128から、ステップ1330で取得したストリームID310に対応するスループット760、および入力キュー状態770を取得する(ステップ1720)。
次に、入力データ管理部126は、スループット760から入力キュー状態770を減算することにより得られた差が正の値か否かを判定する(ステップ1730)。
ステップ1730の判定結果がYESの場合、入力データ管理部126は、ステップ1310で取得したデータ量320が、ステップ1730で得られた差よりも大きいか否かを判定する(ステップ1740)。
ステップ1740の判定結果がYESの場合、入力データ管理部126は、データ蓄積時間330が、ステップ1340で取得したウィンドウサイズ750の2倍よりも長いか判定する(ステップ1750)。
ステップ1750の判定結果がYESの場合、入力データ管理部126は、入力データ分割部127に、スループット760と入力キュー状態770を加味した分割処理(時間指定による分割処理)を指示する(ステップ1760)。
ステップ1730、1740又は1750の判定結果がNOの場合、負荷分散は行われない。
図18は、図14のステップ1440の指示に応答して行なわれる分割処理のフローチャートである。
最初に、入力データ分割部127は、ステップ1410で取得されたスループット760を、分割データ量として決定する(ステップ1810)。つまり、スループット760が表す、単位時間当りに処理されるデータ要素の数が、分割データを構成するデータ要素の数に決定される。
次に、入力データ分割部127は、入力データ蓄積部123に蓄積されているストリームデータから、ステップ1810で決定した分割データ量と同数のデータ要素(以下、図18の説明において「データ要素群」と言う)を取得する(ステップ1820)。
次に、入力データ分割部127は、分割データIDが0より大きいか否かを判定する(ステップ1830)。
ステップ1830の判定結果がYESの場合、入力データ管理部127は、S1820で取得したデータ要素群のうち、最古のタイムスタンプを持つデータ要素から数えて、S1340で取得したウィンドウサイズ750の値から1を減算した値番目のデータ要素までを、補助データ部840に含まれるデータ要素と決定する(ステップ1860)。そして、入力データ管理部127は、決定した補助データ部840の次のデータ要素(結果利用データ部830の先頭のデータ要素)が有するタイムスタンプを、演算対象開始時間とし、その演算対象開始時間を、ステップ1820で取得したデータ要素群の属性値として付与する(ステップ1865)。
ステップ1830の判定結果がNOの場合、入力データ分割部127は、ステップ1820で取得したデータ要素群のうちの最古のタイムスタンプを、演算対象開始時間とし、演算対象開始時間1030を属性値として同データ要素群に付与する(ステップ1840)。
次に、入力データ分割部127は、演算終了通知データ部820を、ステップ1820で取得したデータ要素群の後に付与する(ステップ1870)。
次に、入力データ分割部127は、分割データIDをインクリメントし、ステップ1820で取得したデータ要素群に、インクリメント後の分割データIDを、属性値として付与する(ステップ1880)。このステップ1880で、分割データが完成する。
次に、入力データ分割部127は、ステップ1880で生成された分割データを、データ送信部129に出力し、その分割データの送信処理を指示する(ステップ1890)。
図19は、図15のステップ1550の指示に応答して行なわれる分割処理のフローチャートである。
この図に示す分割処理は、図18に示した分割処理と比べて、分割データIDが0より大きいと判定されたときに行われる処理が異なり、その他の処理は、図18に示した分割処理と同様である。すなわち、ステップ1960は、図18のステップ1860と異なるが、他のステップ1910、1920、1930、1940、1970、1980、1990及び1995は、図18に示したステップ1810、1820、1830、1840、1865、1870、1880及び1890とそれぞれ同じである。
ステップ1960では、入力データ管理部127は、S1920で取得したデータ要素群の内、最古のタイムスタンプを持つデータ要素から、S1340で取得したウィンドウサイズ750の値の範囲にあるデータ要素までを、補助データ部840に含まれるデータ要素と決定する。なお、ここで言う「データ要素群」とは、入力データ蓄積部123に蓄積されているストリームデータから出力された一以上のデータ要素であって、スループット760が表す、単位時間当たりに処理可能なデータ要素の数と同数のデータ要素である。
図20は、図16のステップ1650の指示に応答して行なわれる分割処理のフローチャートである。
この図に示す分割処理は、図18に示した分割処理と比べて、分割データ量の決定の方法が異なり、その他の処理は、図18に示した分割処理と同様である。すなわち、ステップ2020は、図18のステップ1810と異なるが、他のステップ2030、2040、2050、2070、2075、2080、2090及び2100は、図18に示したステップ1820、1830、1840、1860、1865、1870、1880及び1890とそれぞれ同じである。
ステップ2020では、入力データ分割部127は、ステップ1610にて取得したスループット760と入力キュー状態770の差分を計算し、分割データ量を決定する(ステップ2020)。つまり、スループット760が表す、単位時間当りに処理されるデータ要素の数と、入力キュー状態770が表すデータ要素数との差分(正の値)が、分割データを構成するデータ要素の数に決定される。
図21は、図17のステップ1760の指示に応答して行なわれる分割処理のフローチャートである。
この図に示す分割処理は、図19に示した分割処理と比べて、分割データ量の決定の方法が異なり、その他の処理は、図19に示した分割処理と同様である。すなわち、ステップ2110は、図19のステップ1910と異なるが、他のステップ2120、2130、2140、2160、2170、2180、2190及び2195は、図19に示したステップ1920、1930、1940、1960、1970、1980、1990及び1995とそれぞれ同じである。
ステップ2110では、入力データ分割部127は、ステップ1720にて取得したスループット760と入力キュー状態770の差分を計算し、分割データ量を決定する(ステップ2020)。つまり、スループット760が表す、単位時間当りに処理されるデータ要素の数と、入力キュー状態770が表すデータ要素数との差分(正の値)が、分割データを構成するデータ要素の数に決定される。
図22は、分割処理での指示(図18のステップ1890、図19のステップ1995、図20のステップ2100、又は図21のステップ2195での指示)に応答して行なわれる送信処理のフローチャートである。
最初に、データ送信部129は、分割処理で決定された分割データIDと演算対象開始時間(属性値として付与された演算対象開示時間)を、分割データ管理情報受信部155に送信する(ステップ2210)。分割データ管理情報受信部155は、データ送信部129からの分割データID(属性値として付与されたID)と演算対象開始時間1030を、分割データ管理表150に、分割データID1020と演算対象開始時間1030としてそれぞれ記録する。
次に、データ送信部129は、分割処理で決定された分割データIDと、END送信有無の値「無し」を、処理順序受信部175に送信する(ステップ2220)。処理順序受信部175は、データ送信部129からの分割データIDと、END送信有無の値「無し」とを、処理順序制御表176に、分割データID1120とEND送信有無1130としてそれぞれ記録する。
次に、データ送信部129は、分割処理で決定された分割データをデータ受信部144に送信する(ステップ2230)。
次に、データ送信部129は、ステップ1340で取得されたウィンドウサイズ750が個数指定か否かを判定する(ステップ2240)。
ステップ2240の判定結果がYESの場合、データ送信部129は、送信した分割データのうちの、最新のタイムスタンプを持つデータ要素から数えて、ウィンドウサイズ750の値から1を減算した値番目のデータ要素が有するタイムスタンプを記憶領域(例えばレジスタ)に記録する(ステップ2250)。そして、データ送信部129は、入力データ蓄積部123から、ステップ2250で記録したタイムスタンプよりも古いデータ要素を全て削除する(ステップ2260)。
ステップ2240の判定結果がNOの場合、データ送信部129は、ステップ1340で取得されたウィンドウサイズ750が時間指定か否かを判定する(ステップ2270)。
ステップ2270の判定結果がYESの場合、データ送信部129は、送信した分割データのうち、最新のタイムスタンプを持つデータ要素から、ウィンドウサイズ750の値の範囲にあるデータ要素の最古のタイムスタンプを記憶領域(例えばレジスタ)に記録する(ステップ2280)。そして、データ送信部129は、入力データ蓄積部123から、ステップ2280で記録したタイムスタンプよりも古いデータ要素を全て削除する(ステップ2290)。
図23は、クエリ処理部145による分割データの処理のフローチャートである。
最初に、入力部146は、分割データを受信する(ステップ2310)。
次に、入力部146は、分割データを演算処理実行部147に送信する(ステップ2320)。
次に、演算処理実行部147は、受信した分割データが演算終了通知データ部820か否かを判定する(ステップ2330)。
ステップ2330の判定結果がYESの場合、演算処理実行部147は、演算処理が終了していることを確認して、出力部148に演算終了通知データ部820を出力する(ステップ2340)。
ステップ2330の判定結果がNOの場合、演算処理実行部147は、演算処理を実行し(ステップ2350)、分割データ管理表150を参照する(ステップ2360)。演算処理実行部147は、参照の結果、処理したストリームデータが演算対象開始時間1030の値以上か否かを判定する(ステップ2370)。
ステップ2370の判定結果がYESの場合、演算処理実行部147は、演算処理結果を、出力部148に出力する(ステップ2380)。
次に、出力部148は、入力された結果を処理結果受信部173に送信する(ステップ2390)。
図24は、出力部148によって送信された処理結果の処理結果制御プログラム172による処理のフローチャートである。
最初に、処理結果受信部173は、出力部148から処理結果を受信する(ステップ2410)。
次に、処理結果受信部173は、処理結果が演算終了通知データ部820か否かを判定する(ステップ2420)。
ステップ2420の判定結果がYESの場合、処理結果受信部173は、処理順序受信部175へ演算終了通知データ部820を送信する(ステップ2450)。処理順序受信部175は、処理順序制御表176に、END送信有無1130として「有り」を記録する(ステップ2460)。
ステップ2420の判定結果がNOの場合、処理結果受信部173は、処理結果を処理結果管理部174に出力する(ステップ2430)。処理結果管理部174は、処理結果を主記憶装置171、または2次記憶装置179に格納し、処理順序制御表176の処理結果格納場所1140を更新する(ステップ2440)。
以上、実施例1の説明である。
なお、実施例1によれば、分割データ量は、サーバのスループットと同じであるが、それは、ENDデータがデータ要素の数としてカウントされないためである。ENDデータをデータ要素の数としてカウントする場合には、分割データ量は、サーバのスループットの値よりも1少ない値となる。また、サーバのスループットについての時間の単位と、時間指定でのウィンドウサイズに定義される時間の単位は、同一であることが望ましい(例えば「秒」で表されることが望ましい)。それらの単位が異なっている場合には、同一の単位に換算されることが望ましい。
実施例1では、図13から分かるように、ストリームデータが入力データ蓄積部123に投入され続けている間、図13に示すループ1(すなわち、負荷分散するか否かの判定、分割データの生成、分割データの送信、及び、分割データの処理)が繰り返される。
ループ1の繰り返しにおいて、分割データの送信先となるサーバ計算機は、所定の規則(例えばラウンドロビン)に従って切り替わる。具体的には、例えば、第1のサーバ計算機140に分割データがN回送信された場合(Nは自然数)、分割データの送信先として、第2のサーバ計算機160が選択される。その第2のサーバ計算機160に分割データがN回送信された場合、分割データの送信先として、再び第1のサーバ計算機140が選択される。図13〜図22で考慮されるウィンドウサイズは、分割データの送信先のサーバ計算機が有するクエリで定義されているウィンドウサイズであり、図13〜図22で考慮されるスループットは、分割データの送信先のサーバ計算機のスループットである。
同一のストリームID及びクエリIDについて、第1のサーバ計算機140と第2のサーバ計算機のスループットは必ずしも同じでなくても良い。例えば、ストリームID「1」及びクエリID「1」について、第1のサーバ計算機140のスループットが1000個/秒であっても、第2のサーバ計算機140のスループットが300個/秒であっても良い。
以下、実施例1に係る負荷分散が行われても、演算処理結果としては、サーバ計算機1台で演算処理した結果と同じであることを説明する。その際、サーバ計算機1台で処理するケースを「ケースA」とし、2台のサーバ計算機140及び160(実施例1)に従うケースを「ケースB」とする。ケースBでは、両方のサーバ計算機140及び160について、ウィンドウサイズが個数指定で「3」であるとし、スループットが「5」であるとする。ケースA及びケースBの両方について、ストリームデータを構成する各データ要素が、1つの自然数を有しており、そのストリームデータにおいて、自然数が連続しているとする。以下、値として自然数「P」を有するデータ要素を<P>と表現する。
<<ケースA>>
(A1)1回目で送信される分割データは、<1>、<2>、<3>、<4>及び<5>を有する。サーバ計算機から出力される処理結果は、1、3(1+2)、6(1+2+3)、9(6+4−1)、12(9+5−2)である。
(A2)2回目で送信される分割データは、<6>、<7>、<8>、<9>及び<10>を有する。サーバ計算機から出力される処理結果は、15(12+6−3)、18(15+7−4)、21(18+8−5)、24(21+9−6)、27(24+10−7)である。
(A3)3回目で送信される分割データは、<11>、<12>、<13>、<14>及び<15>を有する。サーバ計算機から出力される処理結果は、30、33、36、39、42である。
従って、ケースAでは、処理結果として、1、3、6、9、12、15、18、21、24、27、30、…、が出力制御計算機に出力される。
<<ケースB>>
(B1)1回目で送信される分割データは、<1>、<2>、<3>、<4>及び<5>を有する。1回目の分割データなので、補助データ部は無い。この分割データは第1のサーバ計算機140に送信される。第1のサーバ計算機140から出力される処理結果は、1、3(1+2)、6(1+2+3)、9(6+4−1)、12(9+5−2)である。
(2)2回目で送信される分割データは、<4>、<5>、<6>、<7>及び<8>を有する。ウィンドウサイズ「3」より1つ少ない数が、補助データ部を構成するデータ要素の数(補助データ量)であるため、先頭から2個のデータ要素<4>及び<5>が、補助データ部を構成するデータ要素であり、残りのデータ要素<6>、<7>及び<8>が、結果利用データ部に属するデータ要素である。この分割データは第2のサーバ計算機160に送信される。第2のサーバ計算機160から出力される処理結果は、15(9+6)、18(15+7−4)、21(18+8−5)である。つまり、補助データ部を構成する<4>及び<5>は、演算処理の対象となり、結果利用データの演算処理に用いられるものの、処理結果としては出力されない。
(3)3回目で送信される分割データは、<7>、<8>、<9>、<10>及び<11>を有する。先頭から2個のデータ要素<7>及び<8>が、補助データ部を構成するデータ要素である。この分割データは第1のサーバ計算機140に送信される。第1のサーバ計算機140から出力される処理結果は、24(21+9−6)、27(24+10−7)、30(27+11−8)である。
従って、ケースBでも、処理結果として、1、3、6、9、12、15、18、21、24、27、30、…、が出力制御計算機に出力される。これは、ケースAと全く同じである。
以上、実施例1によれば、入力制御用計算機120が、ストリームデータを基に複数の分割データを送信し、複数の分割データをサーバ計算機140及び160に送信する。分割データのデータ量は、その分割データの送信先サーバ計算機140又は160のスループット(又は、スループット及び入力キュー状態)を基に決定される。また、分割データは、前述した補助データ部、結果利用データ部及び演算終了通知データ部から構成されるが、補助データ部のサイズ(補助データ部に含まれるデータ要素の数)は、送信先サーバ計算機140又は160のクエリで定義されているウィンドウサイズに基づいて決定される。そのため、システム開発者は、ストリームデータの量やシステム構成を考慮することなく、サーバ計算機毎のクエリを定義することができる。
また、実施例1によれば、入力制御用計算機120が、ストリームデータの量を基に、負荷分散を行うか否かを判定する。このため、ストリームデータの増加量に応じた負荷分散が可能である。それ故、ストリームデータ量が決定しているバッチ型処理への適用だけでなく、絶え間なく発生するストリームデータを処理するオンライン型処理への適用も可能となっている。また、例えば、ストリームデータの量が所定の条件に合致するまで減った場合には、入力制御用計算機120は、ストリームデータを基に分割データを生成することを止め一つのサーバ計算機にストリームデータを送信するといった縮退処理を行うこことも可能である。
以下、本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
実施例1では、補助データ量(補助データ部に含まれるデータ要素の数)は、クエリに定義されているウィンドウサイズに基づいて自動で決定されるが、実施例2では、補助データ量は、手動で設定される。
図25は、本発明の実施例2に係るストリームデータ処理システムの全体構成図である。
ユーザ指定用計算機190が、ネットワーク110に接続されている。ユーザ指定用計算機190は、CPU193、2次記憶装置195、通信インタフェース197、および主記憶装置191から構成されている。主記憶装置191には、データ分割指定プログラム194、およびデータ分割指定管理表196が格納されている。
データ分割指定プログラム194によって、補助データ量を入力するための画面(以下、ユーザ分割指定画面)が表示される。ユーザ分割指定画面は、計算機190が有する表示装置(図示せず)に表示されても良いし、ネットワーク110を通じて遠隔の表示装置に表示されても良い。
図26は、データ分割指定画面192の一例を示す。
データ分割指定画面192は、第1のサーバ計算機140のサーバ名が表示されたサーバ名表示部2620と、第1のサーバ計算機140のIPアドレスが表示されたサーバIPアドレス表示部2625と、第1のサーバ計算機140に登録されているストリームID「S1」が表示されたストリームID表示部2630と、同サーバ計算機140に登録されているストリームID「S2」が表示されたストリームID表示部2650と、ストリームID「S1」に対応するクエリID「Q1」の補助データ量2640を入力するテキストフィールド2645と、ストリームID「S2」に対応するクエリID「Q2」の補助データ量2660を入力するテキストフィールド2665と、OKボタン2670と、CANCELボタン2675とを有する。
この画面192は、例えば、ユーザがサーバAを指定したときに表示される。サーバAのIPアドレス、ストリームID及びクエリIDは、例えば、入力データ制御プログラム122に問い合わせることにより、サーバ管理表128から取得される。
テキストフィールド2645に値が入力されると、データ分割指定プログラム194は、サーバ管理表128を参照して、この画面192に表示されているストリームID「S1」及びクエリID「Q1」に対応するウィンドウサイズ750を特定し、入力された値が特定されたウィンドウサイズ750よりも大きいか否かを判定する。
テキストフィールド2645に入力された値がウィンドウサイズ750と同じかそれよりも小さいと判定した場合、データ分割指定プログラム194は、入力エラーを示す画面を表示する。この画面は、テキストフィールド2645に入力される値は別の値であるべきことを示唆する。
一方、テキストフィールド2645に入力された値がウィンドウサイズ750よりも大きいと判定した場合、データ分割指定プログラム194は、テキストフィールド2645に、入力された値を表示する。
テキストフィールド2665についても、テキストフィールド2645についての判定と同様の判定が行われる。
OKボタン2670が押下されると、データ分割指定プログラム194は、テキストフィールド2645ならびにテキストフィールド2665に表示されている値を、データ分割指定管理表196に、補助データ量2650(図27参照)としてそれぞれ記録する。
図27は、データ分割指定管理表196の一例を示す。
データ分割指定管理表196は、分割データ810の補助データ部820の量を表す値を有する。具体的には、この表196は、サーバ名2610、IPアドレス2620、ストリームID2630、クエリID2640、および補助データ量2650を有する。サーバ名2610、IPアドレス2620、ストリームID2630及びクエリID2640は、図26の画面192に表示されたサーバ名、IPアドレス、ストリームID及びクエリIDであり、補助データ量2650は、ユーザからテキストフィールド2665に入力された値である。
図28は、実施例2におけるサーバ管理表128の更新手順を示したフローチャートである。
最初に、サーバ情報取得部125は、ネットワーク110を通じてサーバ監視プログラム142と通信を行い、サーバ情報取得を指示する(ステップ2810)。
次に、サーバ監視プログラム142は、サーバ情報取得部125からの指示に応答して、クエリ管理表149を参照し、ストリームID記録欄1010からストリームIDを、クエリID記録欄920からクエリIDを取得する(ステップ2820)。
次に、サーバ監視プログラム142は、クエリ処理部145に問合せ、取得したクエリIDに対応するスループットを取得する(ステップ2830)。
次に、サーバ監視プログラム142は、取得したクエリIDに対応するクエリ処理部145に存在する入力部146に問合せ、入力部146から入力キュー状態を取得する(ステップ2840)。
次に、サーバ監視プログラム142は、ステップ2820からステップ2840で取得したストリームID、クエリID、スループット、および入力キュー状態を、サーバ情報取得部125に送信する(ステップ2850)。
次に、サーバ情報取得部125は、データ分割指定管理表196を参照し、クエリIDに対応する補助データ量を取得する(ステップ2860)。次に、サーバ情報取得部125は、補助データ量が個数指定か否かを判定する(ステップ2870)。
ステップ2870の判定結果がYESの場合、サーバ情報取得部125は、補助データ量の値に1を加算する(ステップ2880)。その理由は、下記の(1)及び(2)の通りである。
(1)このステップ2880での「補助データ量+1」という値は、後述のステップ2890で、サーバ管理表128のウィンドウサイズ750として記録される。
(2)個数指定に従うウィンドウサイズの場合、分割処理では、補助データ部に含まれるデータ要素の数は、「ウィンドウサイズ−1」である。
最後に、サーバ情報取得部125は、サーバ管理表128における該当の行(ステップ2810での指示先のサーバ監視プログラム142が存在するサーバ計算機の名称が記録されている行)を更新する(ステップ2890)。すなわち、サーバ情報取得部125は、ステップ2820で取得したストリームIDとクエリIDをストリームID730とクエリID740として記録し、ステップ2830で取得したスループットをスループット760として記録し、ステップ2840で取得した入力キュー状態を入力キュー状態770として記録し、ステップ2860またはステップ2880の補助データ量をウィンドウサイズ750として記録する。
以上、本発明の幾つかの実施例を説明したが、本発明はこれらの実施例に限定されるものではない。
例えば、上述した実施例1及び2では、入力データ制御プログラム122と処理結果制御プログラム172が別々の計算機に導入されているが、それらのプログラム122及び172は1台の計算機に導入されてもよい。その他、各装置、各プログラム、各フローチャートの具体的な構成は、本発明の趣旨を逸脱しない範囲で適宜変更(統合や分離など)が可能である。例えば、入力制御用計算機、複数のサーバ計算機及び出力制御用計算機のうちの少なくとも一つは、複数の計算機で構成されていてもよい。
101…ストリームデータソース、120…入力制御用計算機、140…第1のサーバ計算機、160…第2のサーバ計算機、170…出力制御用計算機、121,141,171…主記憶装置、131,152,178…CPU、132,153,179…2次記憶装置、133,154,180…通信インタフェース、122…入力データ制御プログラム、142…サーバ監視プログラム、143…ストリームデータ処理プログラム、172…処理結果制御プログラム、130,151,177…オペレーティングシステム、110,115…ネットワーク

Claims (9)

  1. 時系列の複数のデータ要素で構成されているストリームデータにおけるデータ要素を処理する複数の計算機に接続された装置であって、
    ストリームデータソースからストリームデータを受信する通信インタフェースと、
    前記通信インタフェースに接続されており、前記受信したストリームデータを記憶資源に蓄積し、前記記憶資源内のストリームデータを基に分割データを生成しその分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散するコントローラと
    を有し、
    データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、
    分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    前記コントローラは、以下の(X)を行い、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数とに基づいて、負荷分散を行うか否かを判定する、
    前記コントローラは、前記(X)の判定結果が肯定的の場合に、下記(A)乃至(E)を行い、
    (A)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (B)前記(A)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (C)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (D)前記(B)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (E)前記分割データを前記送信先の計算機に送信する、
    前記ウィンドウサイズは、データ要素の個数を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズから1を引いた数であり、
    前記(X)の判定結果は、下記の(x1)及び(x2)を満たす場合に肯定的となる、
    (x1)前記蓄積データ要素数が、前記処理性能よりも大きい、
    (x2)前記蓄積データ要素数が、前記ウィンドウサイズの2倍よりも大きい、
    ストリームデータ処理装置。
  2. 時系列の複数のデータ要素で構成されているストリームデータにおけるデータ要素を処理する複数の計算機に接続された装置であって、
    ストリームデータソースからストリームデータを受信する通信インタフェースと、
    前記通信インタフェースに接続されており、前記受信したストリームデータを記憶資源に蓄積し、前記記憶資源内のストリームデータを基に分割データを生成しその分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散するコントローラと
    を有し、
    データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、
    分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    前記コントローラは、以下の(X)を行い、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数と、前記送信先の計算機において処理されずに蓄積されているデータ要素の数である処理待ち数とに基づいて、負荷分散を行うか否かを判定する、
    前記コントローラは、前記(X)の判定結果が肯定的の場合に、下記(A)乃至(E)を行い、
    (A)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (B)前記(A)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (C)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (D)前記(B)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (E)前記分割データを前記送信先の計算機に送信する、
    前記ウィンドウサイズは、データ要素の個数を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズから1を引いた数であり、
    前記(X)の判定結果は、下記の(x1)乃至(x3)を満たす場合に肯定的となる、
    (x1)前記送信先の計算機の処理性能から前記処理待ち数を引いた値が、正の値である、
    (x2)前記蓄積データ要素数が、前記処理性能から前記処理待ち数を引いた値よりも大きい、
    (x3)前記蓄積データ要素数が、前記ウィンドウサイズで定義するデータ要素の個数よりも大きい、
    ストリームデータ処理装置。
  3. 時系列の複数のデータ要素で構成されているストリームデータにおけるデータ要素を処理する複数の計算機に接続された装置であって、
    ストリームデータソースからストリームデータを受信する通信インタフェースと、
    前記通信インタフェースに接続されており、前記受信したストリームデータを記憶資源に蓄積し、前記記憶資源内のストリームデータを基に分割データを生成しその分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散するコントローラと
    を有し、
    データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、
    分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    前記コントローラは、以下の(X)を行い、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数と、前記記憶資源に蓄積されているストリームデータのうち最古のデータ要素が有するタイムスタンプと最新のデータ要素が有するタイムスタンプとの差分である蓄積時間長とに基づいて、負荷分散を行うか否かを判定する、
    前記コントローラは、前記(X)の判定結果が肯定的の場合に、下記(A)乃至(E)を行い、
    (A)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (B)前記(A)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (C)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (D)前記(B)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (E)前記分割データを前記送信先の計算機に送信する、
    を行い、
    前記ウィンドウサイズは、データ要素のタイムスタンプの範囲としての時間を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズが表す値と同じであり、
    前記(X)の判定結果は、下記の(x1)及び(x2)を満たす場合に肯定的となり、
    (x1)前記蓄積データ要素数が、前記処理性能よりも大きい、
    (x2)前記蓄積時間長が、前記ウィンドウサイズの2倍よりも大きい、
    ストリームデータ処理装置。
  4. 時系列の複数のデータ要素で構成されているストリームデータにおけるデータ要素を処理する複数の計算機に接続された装置であって、
    ストリームデータソースからストリームデータを受信する通信インタフェースと、
    前記通信インタフェースに接続されており、前記受信したストリームデータを記憶資源に蓄積し、前記記憶資源内のストリームデータを基に分割データを生成しその分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散するコントローラと
    を有し、
    データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、
    分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    前記コントローラは、以下の(X)を行い、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数と、前記記憶資源に蓄積されているストリームデータのうち最古のデータ要素が有するタイムスタンプと最新のデータ要素が有するタイムスタンプとの差分である蓄積時間長と、前記送信先の計算機において処理されずに蓄積されているデータ要素の数である処理待ち数とに基づいて、負荷分散を行うか否かを判定する、
    前記コントローラは、前記(X)の判定結果が肯定的の場合に、下記(A)乃至(E)を行い、
    (A)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (B)前記(A)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (C)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (D)前記(B)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (E)前記分割データを前記送信先の計算機に送信する、
    を行い、
    前記ウィンドウサイズは、データ要素のタイムスタンプの範囲としての時間を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズが表す値と同じであり、
    前記(X)の判定結果は、下記の(x1)乃至(x3)を満たす場合に肯定的となる、
    (x1)前記送信先の計算機の処理性能から前記処理待ち数を引いた値が、正の値である、
    (x2)前記蓄積データ要素数が、前記処理性能から前記処理待ち数を引いた値よりも大きい、
    (x3)前記蓄積時間長が、前記ウィンドウサイズの2倍よりも大きい、
    ストリームデータ処理装置。
  5. 請求項1乃至4のいずれか1項に記載の装置であって、
    前記(A)で取得されたデータ要素群を構成するデータ要素の数は、前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と同じ数、又は、その数よりも1少ない数である、
    ストリームデータ処理装置。
  6. 請求項1乃至4のいずれか1項に記載の装置であって、
    前記(A)で取得されたデータ要素群を構成するデータ要素の数は、前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能から、前記送信先の計算機において処理されずに蓄積されているデータ要素の数である処理待ち数を引いた値と同じ数、又は、その数よりも1少ない数である、
    ストリームデータ処理装置。
  7. 請求項1乃至4のいずれか1項に記載の装置であって、
    前記コントローラは、前記(E)の後、前記分割データに含まれるデータ要素群のうち、演算対象となる終端のデータ要素から連続したK個のデータ要素以外のデータ要素を削除し、
    前記Kの値は、前記補助データ部を構成するデータ要素の数と同じ値である、
    ストリームデータ処理装置。
  8. 時系列の複数のデータ要素で構成されているストリームデータの処理方法であって、
    (A)ストリームデータソースからストリームデータを受信し、
    (B)前記受信したストリームデータを記憶資源に蓄積し、
    (C)前記記憶資源内のストリームデータを基に分割データを生成し、その分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散し、
    前記データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、
    前記分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    以下の(X)を行い、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数とに基づいて、負荷分散を行うか否かを判定する、
    前記(X)の判定結果が肯定的の場合に、前記(C)において、下記(c1)乃至(c5)を行い、
    (c1)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (c2)前記(c1)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (c3)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (c4)前記(c2)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (c5)前記分割データを前記送信先の計算機に送信する、
    前記ウィンドウサイズは、データ要素の個数を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズから1を引いた数であり、
    前記(X)の判定結果は、下記の(x1)及び(x2)を満たす場合に肯定的となる、
    (x1)前記蓄積データ要素数が、前記処理性能よりも大きい、
    (x2)前記蓄積データ要素数が、前記ウィンドウサイズの2倍よりも大きい、
    ストリームデータ処理方法。
  9. 時系列の複数のデータ要素で構成されているストリームデータ処理をコンピュータに実行させるためのコンピュータプログラムであって、
    (A)ストリームデータソースからストリームデータを受信し、
    (B)前記受信したストリームデータを記憶資源に蓄積し、
    (C)前記記憶資源内のストリームデータを基に分割データを生成し、その分割データを前記複数の計算機から送信先として選択した計算機に送信することで、複数の分割データを複数の計算機に分散し、
    をコンピュータに実行させ、
    前記データ要素は、ストリームデータソースで発生した時刻を示すタイムスタンプと、ストリームデータ処理における演算対象となる値とを含んでおり、タイムスタンプは、そのタイムタンプを含んだデータ要素の発生した時刻を表しており、
    前記分割データは、前記ストリームデータのうちの連続した二以上のデータ要素であるデータ要素群と、分割データの終端を表すデータであるENDデータとで構成されており、前記データ要素群は、第1のパートである補助データ部と、前記第1のパートの次のパートである結果利用データ部とで構成されており、
    前記コンピュータに、下記(X)を実行させ、
    (X)前記送信先の計算機が単位時間当たりに処理可能なデータ要素の数である処理性能と、前記送信先のクエリで定義されているウィンドウサイズと、前記記憶資源に蓄積されているストリームデータを構成するデータ要素の数である蓄積データ要素数とに基づいて、負荷分散を行うか否かを判定する、
    前記(X)の判定結果が肯定的の場合に、前記(C)において、前記コンピュータに下記(c1)乃至(c5)を実行させ、
    (c1)分割データの送信先の計算機の単位時間当たりに処理可能なデータ要素数で構成されたデータ要素群を前記ストリームデータから取得し、
    (c2)前記(c1)で取得したデータ要素群の補助データ部を、処理内容とデータ範囲サイズであるウィンドウサイズとが前記送信先の計算機について定義されたクエリが表す前記ウィンドウサイズを基に決定し、
    (c3)前記データ要素群と前記ENDデータとを含んだ分割データを生成し、
    (c4)前記(c2)で決定された補助データ部に続く結果利用データ部の先頭のデータ要素を特定するための情報である結果利用特定情報を、前記送信先の計算機に送信し、
    (c5)前記分割データを前記送信先の計算機に送信する、
    前記ウィンドウサイズは、データ要素の個数を表しており、
    前記(B)で決定された補助データ部を構成するデータ要素の数Kは、前記ウィンドウサイズから1を引いた数であり、
    前記(X)の判定結果は、下記の(x1)及び(x2)を満たす場合に肯定的となる、
    (x1)前記蓄積データ要素数が、前記処理性能よりも大きい、
    (x2)前記蓄積データ要素数が、前記ウィンドウサイズの2倍よりも大きい、
    ストリームデータの処理をコンピュータに実行させるためのコンピュータプログラム。
JP2009285785A 2009-12-16 2009-12-16 ストリームデータ処理装置及び方法 Expired - Fee Related JP4967014B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009285785A JP4967014B2 (ja) 2009-12-16 2009-12-16 ストリームデータ処理装置及び方法
US12/716,713 US8782650B2 (en) 2009-12-16 2010-03-03 Distributed processing of partitioned stream data including data element group and end data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009285785A JP4967014B2 (ja) 2009-12-16 2009-12-16 ストリームデータ処理装置及び方法

Publications (2)

Publication Number Publication Date
JP2011128818A JP2011128818A (ja) 2011-06-30
JP4967014B2 true JP4967014B2 (ja) 2012-07-04

Family

ID=44144384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009285785A Expired - Fee Related JP4967014B2 (ja) 2009-12-16 2009-12-16 ストリームデータ処理装置及び方法

Country Status (2)

Country Link
US (1) US8782650B2 (ja)
JP (1) JP4967014B2 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5712851B2 (ja) * 2011-07-29 2015-05-07 富士通株式会社 データ分割装置、データ分割方法およびデータ分割プログラム
JP2013052817A (ja) * 2011-09-06 2013-03-21 Toyota Motor Corp 車両用ストリームデータ管理システム
CN103299298B (zh) * 2011-12-31 2016-11-02 华为技术有限公司 处理业务的方法和***
US9239864B2 (en) * 2012-04-17 2016-01-19 Cisco Technology, Inc. Distributing and processing streams over one or more networks
US9207964B1 (en) * 2012-11-15 2015-12-08 Google Inc. Distributed batch matching of videos with dynamic resource allocation based on global score and prioritized scheduling score in a heterogeneous computing environment
WO2014174671A1 (ja) * 2013-04-26 2014-10-30 株式会社日立製作所 計算機システム及び負荷分散方法
WO2014188500A1 (ja) 2013-05-20 2014-11-27 富士通株式会社 データストリーム処理の並列化プログラム、及びデータストリーム処理の並列化システム
FR3008505B1 (fr) * 2013-07-10 2017-03-03 Thales Sa Procede d'optimisation de traitement parallele de donnees sur une plateforme materielle
US9819558B2 (en) * 2014-03-03 2017-11-14 Microsoft Technology Licensing, Llc Streaming query resource control
CN107729147B (zh) * 2014-03-06 2021-09-21 华为技术有限公司 流计算***中的数据处理方法、控制节点及流计算***
US20150363800A1 (en) * 2014-03-27 2015-12-17 Google Inc. Merchant performance evaluation in a computer networked environment
US9959301B2 (en) 2014-07-25 2018-05-01 Cisco Technology, Inc. Distributing and processing streams over one or more networks for on-the-fly schema evolution
US9438676B2 (en) 2014-07-25 2016-09-06 Cisco Technology, Inc. Speculative data processing of streaming data
JP6442951B2 (ja) * 2014-09-25 2018-12-26 富士通株式会社 データ処理方法、データ処理プログラム及びデータ処理装置
CN104504143B (zh) * 2015-01-04 2017-12-29 华为技术有限公司 一种流图优化方法及其装置
US10404787B1 (en) 2015-04-06 2019-09-03 EMC IP Holding Company LLC Scalable distributed data streaming computations across multiple data processing clusters
US10791063B1 (en) * 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10505863B1 (en) 2015-04-06 2019-12-10 EMC IP Holding Company LLC Multi-framework distributed computation
US10515097B2 (en) 2015-04-06 2019-12-24 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10270707B1 (en) 2015-04-06 2019-04-23 EMC IP Holding Company LLC Distributed catalog service for multi-cluster data processing platform
US10496926B2 (en) 2015-04-06 2019-12-03 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10541938B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
US10860622B1 (en) * 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10509684B2 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Blockchain integration for scalable distributed computations
US10511659B1 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Global benchmarking and statistical analysis at scale
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10812341B1 (en) * 2015-04-06 2020-10-20 EMC IP Holding Company LLC Scalable recursive computation across distributed data processing nodes
US10528875B1 (en) 2015-04-06 2020-01-07 EMC IP Holding Company LLC Methods and apparatus implementing data model for disease monitoring, characterization and investigation
US10541936B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Method and system for distributed analysis
US9875281B2 (en) 2015-06-10 2018-01-23 International Business Machines Corporation Performance monitoring of wait times
US10656861B1 (en) 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
JP6638544B2 (ja) 2016-04-27 2020-01-29 富士通株式会社 複合イベント処理プログラム、情報処理装置、情報処理システム、及び複合イベント処理方法
US10459922B2 (en) 2016-11-08 2019-10-29 At&T Intellectual Property I, L.P. Unique identification generation for records in a data streaming processing system
US10374968B1 (en) 2016-12-30 2019-08-06 EMC IP Holding Company LLC Data-driven automation mechanism for analytics workload distribution
WO2018216139A1 (ja) * 2017-05-24 2018-11-29 三菱電機株式会社 データ処理システム、データ処理装置およびデータ処理プログラム
US10902000B2 (en) 2017-09-29 2021-01-26 Oracle International Corporation Heartbeat propagation in a distributed stream processing system
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
CN110825061B (zh) * 2019-11-29 2023-08-11 新疆新能集团有限责任公司乌鲁木齐电力建设调试所 一种分散处理单元的流数据二维处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265459A (ja) * 1996-03-28 1997-10-07 Mitsubishi Electric Corp データ処理装置の制御方法
US6801938B1 (en) * 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
JP2006252394A (ja) * 2005-03-14 2006-09-21 Sony Corp 情報処理システム、情報処理装置および方法、並びにプログラム
JP4687253B2 (ja) 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
US7945540B2 (en) * 2007-05-04 2011-05-17 Oracle International Corporation Method to create a partition-by time/tuple-based window in an event processing service
JP2009087190A (ja) * 2007-10-02 2009-04-23 Nec Corp ストリームデータ解析高速化装置、方法およびプログラム

Also Published As

Publication number Publication date
JP2011128818A (ja) 2011-06-30
US20110145828A1 (en) 2011-06-16
US8782650B2 (en) 2014-07-15

Similar Documents

Publication Publication Date Title
JP4967014B2 (ja) ストリームデータ処理装置及び方法
US7953691B2 (en) Performance evaluating apparatus, performance evaluating method, and program
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
JP5018774B2 (ja) 監視装置、監視システム、監視方法およびプログラム
US20150341239A1 (en) Identifying Problems In A Storage Area Network
JP2004206495A (ja) 管理システム、管理計算機、管理方法及びプログラム
US20110113429A1 (en) Incident management method and operation management server
JP2014123354A (ja) グラフデータの再帰クエリを用いたストリームデータ処理方法
US20180067995A1 (en) Sensor Data Search System, Sensor Data Search Method and Management Computer
JP2007087232A (ja) システム構成変更によるポリシ修正を容易にするポリシ作成方法、及びポリシ管理方法
JP2008033725A (ja) 運用管理システム、監視装置、監視設定情報生成方法及びプログラム
US7613680B2 (en) Computer system and the computer control method
JP6451359B2 (ja) 通信記録装置、通信記録システム、通信記録プログラムおよび通信記録方法
JP5050878B2 (ja) 監視装置、監視システム、監視方法およびプログラム
CN108932241B (zh) 日志数据统计方法、装置及节点
JP2010128597A (ja) 情報処理装置及び情報処理装置の運用方法
JP2005128866A (ja) 計算機装置及び計算機装置の制御方法
CN112102040A (zh) 一种分布式环境下全局库存控制方法及***
US10904324B2 (en) Computer system and method of controlling data processing
CN115080215A (zh) 由状态监控芯片在计算节点间进行任务调度的方法及***
US20220300509A1 (en) Database system, distributed processing apparatus, database apparatus, distributed processing method and distributed processing program
JP2019502969A (ja) スーパーコンピュータの保守および最適化を支援するための方法およびシステム
WO2014075425A1 (zh) 数据处理方法、计算节点及***
US11132235B2 (en) Data processing method, distributed data processing system and storage medium
JP2012123539A (ja) 管理装置、管理方法、及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120402

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees