JP2010217968A - ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム - Google Patents

ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム Download PDF

Info

Publication number
JP2010217968A
JP2010217968A JP2009060783A JP2009060783A JP2010217968A JP 2010217968 A JP2010217968 A JP 2010217968A JP 2009060783 A JP2009060783 A JP 2009060783A JP 2009060783 A JP2009060783 A JP 2009060783A JP 2010217968 A JP2010217968 A JP 2010217968A
Authority
JP
Japan
Prior art keywords
data
query
computer
stream
processing
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
JP2009060783A
Other languages
English (en)
Other versions
JP4870183B2 (ja
Inventor
Noriaki Takahashi
則明 高橋
Satoshi Watanabe
聡 渡辺
Tomohiro Hanai
知広 花井
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 JP2009060783A priority Critical patent/JP4870183B2/ja
Priority to US12/644,973 priority patent/US8369207B2/en
Publication of JP2010217968A publication Critical patent/JP2010217968A/ja
Application granted granted Critical
Publication of JP4870183B2 publication Critical patent/JP4870183B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】現用系の計算機に障害が発生した場合に待機系の計算機に処理を切り替える障害回復方法において、待機系の計算機及びネットワークの負荷を低減させる。
【解決手段】時刻情報が付与されたデータを時系列順に受信し、あらかじめ登録された複数のクエリによって処理する計算機システムで、受信したデータを処理する現用系の計算機と、障害発生時に現用系の計算機の替わりに受信したデータを処理する待機系の計算機とが含まれ、現用系の計算機は、あらかじめ定義された順序で各クエリによって受信したデータを処理し、各クエリによる受信したデータの処理結果を中間データとして、所定のタイミングで、クエリごとに待機系の計算機に送信し、待機系の計算機は、現用系の計算機に障害が発生した場合には、受信したデータ及び中間データを処理することによってデータを復元する。
【選択図】図1

Description

本発明は、ストリームデータ処理システムにおいて障害を回復する技術に関する。
従来、企業情報システムのデータ管理の中心にはデータベース管理システム(以下、「DBMS」とする)が位置づけられていた。DBMSは、処理対象のデータを記憶装置に格納し、格納されたデータに対してトランザクション処理に代表される高信頼な処理を実現していた。
これに対し、近年、時々刻々と到着する大量のデータをリアルタイム処理するデータ処理システムに対する要求が高まっている。例えば、株取引を支援する金融アプリケーションの場合、株価の変動にいかに迅速に対応するかがシステムの最重要の課題の一つとなる。従来のDBMSのように、株式のデータを記憶装置に一旦格納し、当該格納データを検索するようなシステムでは株価変動のスピードに対応できないおそれがある。
そこで、以上のようなリアルタイムデータ処理に好適なデータ処理システムとして、ストリームデータ処理システムが提案されている。例えば、非特許文献1には、ストリームデータ処理システムSTREAMが開示されている。
ストリームデータ処理システムでは、従来のDBMSとは異なり、あらかじめクエリ(問合せ)がシステムに登録され、データの到来と共に登録されたクエリが継続的に実行される。ここでのストリームデータとは、映像ストリームのような論理的に継続する一つの大きなデータではなく、金融アプリケーションにおける株価配信データ、小売業でのPOSデータ、交通情報システムにおけるプローブカーデータ、計算機システム管理におけるエラーログ、センサ又はRFIDなどのユビキタスデバイスから発生するセンシングデータなど、比較的小さな論理的に独立した大量の時系列データである。ストリームデータをリアルタイムに処理することをストリーム処理という。
ストリームデータは、システムに到着し続けるため、到着の終わりを待ってから処理を開始するのでは実時間での処理は不可能である。また、システムに到着したデータは、データ処理の負荷に影響されることなく、到着順に従って処理されなければならない。
STREAMでは、システムに到着するストリームデータを、最新10分間などの時間の幅、又は最新1000件などの個数の幅を指定することによってストリームデータの一部を切り取ってリアルタイムの処理を実現するためのスライディングウィンドウ(以下単に「ウィンドウ」と呼ぶ)と呼ばれる概念を導入している。
このようなウィンドウ指定を含むクエリの記述言語の好適な例としては、CQL(Continuous Query Language)が非特許文献1に開示されている。CQLは、DBMSで広く用いられているSQL(Structured Query Language)を、ウィンドウ指定が可能となるように拡張したものである。
図22は、CQLの一例を示す図である。図22に示したクエリ2201は非特許文献1に示されているクエリの一例である。
クエリ2201は、あるWebプロキシサーバにおいて、ドメインstanford.eduからの現時点から過去1日分のアクセスの総数を計算するクエリである。「Requests」は、Webプロキシサーバに到来し続けるWebアクセスデータであり、DBMSで取り扱われるテーブル(表)のような静止化されたデータではなく、切れ目のないストリームデータとなる。そのため、ウィンドウ指定“[Range 1 Day Preceding]”のように、ストリームデータのどの部分を対象とするかを指定しなければアクセスの総数を計算することはできない。
ウィンドウによって切り取られたストリームデータは、メモリに保持され、クエリ処理に使用される。代表的なウィンドウの指定方法には、ウィンドウの幅を時間で指定するRangeウィンドウ(以下、「時間ウィンドウ」)と、ウィンドウの幅をデータ数で指定するRowウィンドウ(以下、「行ウィンドウ」)とがある。例えば、時間ウィンドウを10分とすると、最新の10分間分がクエリ処理の対象となり、行ウィンドウを10件とすると、最新の10件がクエリ処理の対象となる。
また、ストリームデータ処理システムの復旧方法として、非特許文献2には、平常時から現用系と待機系を稼動させるActiveStandby方式、現用系から待機系に定期的にメモリコピーするPassiveStandby方式が開示されている。
ActiveStandby方式は、データ送信アプリケーションから現用系及び待機系両システムに対しデータを送信し、現用系及び待機系が共にストリームデータ処理を行う方式である。そして、結果受信アプリケーションでは、両システムから出力された出力ストリームデータの整合性をチェックし、一方の出力ストリームデータのみを扱う。現用系で障害が発生しても待機系が常時稼動しているため、待機系に切り替えてストリーム処理システムを継続することができる。
PassiveStandby方式は、現用系では入力ストリームをストリーム処理し、待機系ではストリーム処理を行わずに入力ストリームデータをバッファリングし、現用系における処理結果を定期的に待機系にコピーする方式である。現用系で障害が発生した場合は待機系にコピーしてあるメモリの状態から入力ストリームデータを処理することによって、ストリーム処理システムを継続することができる。
R. Motwani,J. Widom,A. Arasu,B. Babcock,S. Babu,M. Datar,G. Manku,C. Olston,J. Rosenstein and R. Varma著:"Query Processing, Resource Management, and Approximation in a Data Stream Management System",In Proc. of the 2003 Conf. on Innovative Data Systems Research (CIDR),January 2003 Hwang, J.-H. Balazinska, M. Rasin, A. Cetintemel, U. Stonebraker, M. Zdonik, S. 著:"High-Availability Algorithms for Distributed Stream Processing"Proceedings of the 21st International Conference on Data Engineering, (ICDE2005) April 2005
信頼性の高いストリームデータ処理システムを提供するためには、バックアップシステムを用意する必要がある。また、ストリームデータ処理システムでは、時々刻々と到着する大量のストリームデータをリアルタイムに処理する必要があるため、迅速に障害から復旧しなければならない。
しかし、非特許文献2に開示された技術において、ActiveStandby方式では、現用系が正常に稼働している平常時であっても待機系が現用系と同様に稼働し、多くのリソースを消費してしまうという問題がある。
また、PassiveStandby方式では、常にストリームデータ処理システム内のすべてのメモリの内容を待機系にコピーする必要があるため、膨大なメモリ量を転送することによってネットワークに大きな負荷を与えてしまう。さらに、待機系では膨大な情報を受信することによって大きなオーバヘッドが生じてしまう。
本発明の目的は、待機系システム及びネットワークの負荷を増大させずに、現用系システムに障害が発生した場合に迅速にストリームデータ処理システムを復旧させる技術を提供することにある。
本発明の一形態によれば、時刻情報が付与されたデータを時系列順に受信し、前記受信したデータをあらかじめ登録された複数のクエリによって処理する計算機システムにおける障害回復方法であって、前記計算機システムには、複数の計算機が含まれ、前記各計算機は、前記データを受信するインタフェースと、前記インタフェースを介して受信したデータを記憶する記憶部と、前記記憶部に記憶されたデータを処理するプロセッサと、を備え、前記複数の計算機には、前記受信したデータを前記複数のクエリによって処理した結果を出力する第1の計算機(現用系)と、前記第1の計算機に障害が発生した場合に前記第1の計算機に替わって前記受信したデータを処理する第2の計算機(待機系)とが含まれ、前記複数のクエリには、前記受信したデータを処理する順序があらかじめ定義され、前記方法は、前記第1の計算機及び前記第2の計算機が、前記データをそれぞれ受信し、前記第1の計算機が、前記あらかじめ定義された順序に従って、順次、前記クエリによって前記受信したデータを処理し、前記第1の計算機が、前記受信したデータの前記クエリごとの処理結果を、中間データとして前記第1の計算機の記憶部に記憶し、前記第1の計算機が、所定のタイミングで、前記複数のクエリの一部のクエリに対応する中間データを前記第2の計算機に送信し、前記第2の計算機が、前記第1の計算機から送信された中間データを前記第2の計算機の記憶部に記憶し、前記第1の計算機に障害が発生した場合には、前記第2の計算機が、前記第2の計算機が受信したデータ及び前記第1の計算機から送信された中間データを処理することによって、前記第1の計算機の記憶部に格納されたデータを前記第2の計算機の記憶部に復元する。
本発明の代表的な一形態によれば、ネットワークの負荷及び待機系(第2の計算機)のリソース消費を抑制しながら、迅速にシステムの障害から復旧させることができる。
本発明の実施の形態の計算機システムの構成及び各構成の関係を示す図である。 本発明の実施の形態のシステムへのログイン情報を入力データとして正常又は異常ログインを判別するストリーム処理部の一例を示す図である。 本発明の実施の形態のストリーム処理部で実行されるクエリの定義例を示す図である。 本発明の実施の形態のストリーム処理部におけるクエリグループ定義の一例を示す図である。 本発明の実施の形態のストリーム処理部において、クエリグループ定義を適用した場合にメモリコピーの対象となるクエリのグループを示す図である。 本発明の実施の形態の現用系のストリーム処理部から待機系のストリーム処理部にクエリグループのメモリコピーを行う手順を説明する図である。 本発明の実施の形態の現用系のストリーム処理部から待機系のストリーム処理部にクエリグループのメモリコピーを行う手順を説明する図である。 本発明の実施の形態の現用系のストリーム処理部から待機系のストリーム処理部にクエリグループのメモリコピーを行う手順を説明する図である。 本発明の実施の形態のコピー容量管理テーブルの一例を示す図である。 本発明の実施の形態のタプル管理テーブルの一例を示す図である。 本発明の実施の形態の現用系の計算機に障害が発生し、待機系の計算機に処理を切り替える手順を説明する図である。 本発明の実施の形態のデータ受信部による処理の手順を示すフローチャートである。 本発明の実施の形態のデータ送信部による処理の手順を示すフローチャートである。 本発明の実施の形態の主制御部による処理の手順を示すフローチャートである。 本発明の実施の形態の入力データ制御部による処理の手順を示すフローチャートである。 本発明の実施の形態のメモリコピー制御部による処理の手順を示すフローチャートである。 本発明の実施の形態の入力ストリーム保存管理部による処理の手順を示すフローチャートである。 本発明の実施の形態のクエリ処理部による処理の手順を示すフローチャートである。 本発明の実施の形態の定義ファイル解析制御部による処理の手順を示すフローチャートである。 本発明の実施の形態のメモリ送受信制御部による処理の手順を示すフローチャートである。 本発明の実施の形態のハートビート送受信部による処理の手順を示すフローチャートである。 本発明の実施の形態のクエリ処理言語CQLによるクエリ記述例である。
以下、本発明を実施するための形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態の計算機システムの構成及び各構成の関係を示す図である。
本発明の実施の形態の計算機システムは、現用系の計算機110及び待機系の計算機140を含む。現用系の計算機110及び待機系の計算機140は、ネットワーク100を介して互いに接続される。待機系の計算機140は、現用系の計算機110に障害が発生した場合などに、現用系の計算機110に替わってストリームデータを処理する。
また、現用系の計算機110及び待機系の計算機140には、データ送信クライアント190及びデータ受信クライアント191が接続される。データ送信クライアント190は、未処理のストリームデータを計算機110及び計算機140に送信する。データ受信クライアント191は、計算機110又は計算機140によって処理されたストリームデータの処理結果を受信する。
計算機110は、プロセッサ111、メモリ112、通信インタフェース113、ディスクインタフェース(I/F)114及びハードディスク装置115を備える。
プロセッサ111は、メモリ112に記憶されたプログラムを処理することによって、各種業務処理を実行する。例えば、所定のプログラムを実行することによって、あらかじめ定義されているクエリを、受信したストリームデータに適用することによって処理結果を取得する。
メモリ112は、プロセッサ111によって実行されるプログラム及び当該プログラムを実行する際に使用されるデータを記憶する。メモリ112に記憶されたプログラム及びデータについては後述する。
通信インタフェース113は、ネットワーク100に接続するためのインタフェースである。ディスクインタフェース114は、プロセッサ111などとハードディスク装置115を接続するためのインタフェースである。
ハードディスク装置115は、クエリが定義されたファイルなどを格納する。具体的には、定義されたクエリが記録されているクエリ定義ファイル116、及び定義されたクエリを管理するグループの定義情報が記録されたクエリグループ定義ファイル117が格納される。クエリ定義ファイル116の詳細については、図3にて後述する。クエリグループ定義ファイル117の詳細については、図4にて後述する。
メモリ112には、ストリーム処理部120が記憶される。ストリーム処理部120は、プログラム及びデータによって構成される。プロセッサ111がストリーム処理部120に含まれるプログラムを実行することによって、データ送信クライアント190から送信されたストリームデータを処理し、処理結果をデータ受信クライアント191に送信する。また、ストリーム処理部120には、複数のプログラムが含まれる。
また、計算機140は、計算機110と同様に、プロセッサ141、メモリ142、通信インタフェース143、ディスクインタフェース144及びハードディスク装置145を備える。各構成の機能については、計算機110と同様である。
メモリ142には、計算機110と同様に、ストリーム処理部150が記憶される。プロセッサ141がストリーム処理部150を実行することによって、各種処理が実行される。計算機140は待機系であるため、現用系の計算機110で実行される処理と相違する。しかし、待機系の計算機140は、前述のように、現用系の計算機110に障害が発生した場合には、現用系に替わってストリームデータを処理するため、ストリーム処理部120とストリーム処理部150とは同じ構成を含み、同じ処理を実行することが可能である。
ストリーム処理部120は、データ受信部121、データ送信部122、主制御部123、タプル管理テーブル125、入力データ制御部124、クエリ処理部126、入力ストリーム保存管理部127、コピー容量管理テーブル128、定義ファイル解析制御部129、メモリコピー制御部130、メモリ送受信制御部131、及びハートビート送受信部132を有する。
データ受信部121、データ送信部122、主制御部123、入力データ制御部124、クエリ処理部126、入力ストリーム保存管理部127、定義ファイル解析制御部129、メモリコピー制御部130、メモリ送受信制御部131、及びハートビート送受信部132は、プロセッサ111によって実行されるプログラムである。
本発明の実施の形態では、入力データ制御部124、タプル管理テーブル125及びクエリ処理部126に関しては、定義されたクエリごとに生成される。また、ストリーム処理部150についても対応する構成が含まれている。
データ受信部121及びデータ受信部151は、ネットワーク100を介して外部からストリームデータを受信する。データ送信部122及びデータ送信部152は、処理されたストリームデータを、ネットワークを介して外部に送信する。
主制御部123及び主制御部153は、ストリームデータ処理全体を制御する。タプル管理テーブル125及びタプル管理テーブル155は、クエリ単位に入力タプルを格納する。入力データ制御部124及び入力データ制御部154は、タプル管理テーブル125及びタプル管理テーブル155に格納された入力タプルを管理する。クエリ処理部126及びクエリ処理部156は、定義されたクエリ処理を行う。
入力ストリーム保存管理部127及び入力ストリーム保存管理部157は、現用系に障害が発生した場合に、待機系で処理を継続するために、入力されたストリームデータを保存する。
コピー容量管理テーブル128は、待機系にメモリ112に記憶されている情報をコピーするためのメモリコピー情報を記録する。定義ファイル解析制御部129は、クエリ定義ファイル116及びクエリグループ定義ファイル117を読み出し、メモリコピー情報をコピー容量管理テーブル128に設定する。
同様に、コピー容量管理テーブル158は、待機系の計算機140が現用系として動作する場合に、待機系にメモリ142に記憶されている情報をコピーするためのメモリコピー情報を記録する。同様に、定義ファイル解析制御部159は、クエリ定義ファイル146及びクエリグループ定義ファイル147を読み出し、メモリコピー情報をコピー容量管理テーブル158に設定する。
メモリコピー制御部130は、コピー容量管理テーブル128に基づいて、コピーする情報量を管理し、さらに、受信した情報をクエリごとにコピーする。同様に、メモリコピー制御部160は、コピー容量管理テーブル158に基づいて、コピーする情報量を管理し、さらに、受信した情報をクエリごとにコピーする。
メモリ送受信制御部131及びメモリ送受信制御部161は、現用系と待機系との間でメモリに記憶された情報の送受信を制御する。ハートビート送受信部132及びハートビート送受信部162は、現用系と待機系との間で稼動状況通知を送受信する。
ここで、受信したストリームデータを処理し、外部に送信する場合において、各構成によって処理する手順の概要を説明する。
データ受信部121は、データ送信クライアント190から送信されたストリームデータを、通信インタフェース113を介して受信する。同じく、データ受信部151は、データ送信クライアント190から送信されたストリームデータを、通信インタフェース113を介して受信する。
データ受信部121及びデータ受信部151は、ストリームデータを受信すると、クエリ処理を実行するために主制御部123及び主制御部153を起動し、受信したストリームデータを送信する。
主制御部123は、自ストリーム処理部が現用系のストリーム処理部であるため、入力データ制御部124を起動する。入力データ制御部124は、クエリ処理を実行するためにクエリ処理部126を起動する。また、入力データ制御部124は、タプル管理テーブル125に受信したストリームデータに基づいて、入力データ情報を格納する。
主制御部123は、受信したストリームデータがクエリ処理部126によって処理された結果である出力タプルをデータ受信クライアント191に送信するために、データ送信部122を起動する。そして、出力タプルをデータ送信部122に送信する。
データ送信部122は、出力タプルを受信すると、通信インタフェース113を介してデータ受信クライアント191に送信する。データ送信クライアント190からストリームデータを受信するごとに以上の処理手順を繰り返し、受信したストリームデータを処理して外部に送信する。
一方、主制御部153は、自ストリーム処理部が待機系のストリーム処理部であるため、入力ストリーム保存管理部157を起動し、受信データを送信する。
入力ストリーム保存管理部157は、入力されたストリームデータの削除要求がメモリコピー制御部160から通知されるまで、入力されたストリームデータを保存及び管理する。
定義ファイル解析制御部129は、ハードディスク装置115に格納されているクエリ定義ファイル116及びクエリグループ定義ファイル117を、ディスクインタフェース114を介して読み出す。そして、クエリ実行シーケンス、メモリコピータイミング、メモリコピー容量、及びコピーサイクルなどの定義情報をコピー容量管理テーブル128に格納する。
クエリ定義ファイル116には、クエリの具体的な内容の他に、クエリの連結順番(クエリ実行順序)が定義されている。詳細については、図3にて後述する。
クエリグループ定義ファイル117には、時間間隔でメモリコピーを行う場合のメモリコピー間隔時間、メモリコピー対象となる先頭クエリ名称、ストリームデータの入力量でメモリコピーを行う先頭クエリ名称及び入力件数が定義されている。
また、連結されているクエリの中で、指定したクエリを先頭として、以降の連結されているクエリがメモリコピー対象のクエリグループとなる。クエリグループは、定義ファイル解析制御部129によって自動的に作成される。クエリグループの詳細については、図4にて後述する。
メモリコピー制御部130は、メモリ送受信制御部131によって、コピー容量管理テーブル128に設定されたメモリコピー間隔時間で、通信インタフェース113を介して待機系の計算機140のメモリ送受信制御部161に所定の情報を送信する。
なお、メモリコピー間隔時間は、定義ファイル解析制御部129によってコピー容量管理テーブル128に設定される。また、所定の情報には、クエリグループに含まれるストリームデータ、データ送信部122に保持されているデータ受信クライアント191に対する未送信ストリームデータ、及びタプル管理テーブル125に記録された各クエリに入力済の最新タプル情報が含まれる。
メモリ送受信制御部161は、受信したデータをそれぞれメモリ142の対応する構成に格納する。例えば、クエリ処理中のストリームデータは対応するクエリのクエリ処理部156に格納される。また、各クエリの入力済最新タプル情報は各クエリに対応するタプル管理テーブル155に格納される。さらに、未送信のストリームデータはデータ送信部152に格納される。
また、各クエリに対応する入力データ制御部124は、クエリグループ定義ファイル117によってストリームデータの入力量が定義されている場合には、入力されたストリームデータの量が定義されたデータ量に達すると、メモリコピー制御部130を起動する。メモリコピー制御部130は、さらにメモリ送受信制御部131によって、通信インタフェース113を介して待機系のメモリ送受信制御部161に所定のデータを送信する。所定のデータには、前述したように、対象クエリグループのクエリに含まれるストリームデータ、タプル管理テーブル125に含まれる各クエリに入力済の最新タプル情報、及びデータ送信部122に保持された未送信ストリームデータが含まれる。
ハートビート送受信部132は、現用系が稼動中であることを待機系に通知するために、通信インタフェース113を介して所定の間隔でハートビートを待機系のハートビート送受信部162に送信する。所定の間隔は、例えば、1秒間隔である。
図2は、本発明の実施の形態のシステムへのログイン情報を入力して正常又は異常ログインを判別するストリーム処理部120の一例を示す図である。
ストリーム処理部120は、データ送信クライアント190から各ホストのログインデータを入力し、正常又は異常なログイン情報を検出し、検出結果をデータ受信クライアント191に送信する。ストリーム処理部120は、いわゆる「なりすまし」を検知するための処理を実行する。
まず、ストリーム処理部120に含まれる各クエリの関係について説明する。
ストリーム処理部120には、クエリ211からクエリ216までの6つのクエリが連結されている。クエリ211は、データ送信クライアント190から送信されたデータを入力データとする。クエリ212は、クエリ211の出力データを入力データとする。クエリ212の出力データは、クエリ213及びクエリ215の入力データとなる。クエリ213の出力データはクエリ214の入力データとなり、クエリ215の出力データはクエリ216の入力データとなる。最後に、クエリ214及びクエリ216の出力データがストリーム処理部120の処理結果としてデータ受信クライアント191に送信される。
続いて、ストリーム処理部120に含まれる各クエリによる処理の内容について説明する。
クエリ211は、同一ホストからの多重ログインを1分間検出しないようにフィルタリングする。具体的には、クエリ211は、1分間のRangeWindowを有し、1分間に、同一のホストに同じユーザがログインした情報を除いたデータを出力する。
クエリ212は、ユーザ毎に1分間のログイン数を集計する。具体的には、クエリ212は、1分間のRangeWindowを有し、クエリ211から出力されたログインデータを入力データとし、ユーザ毎にログインした数の集計データのデータを出力する。
クエリ213は、1分間に別ホストからのログイン数が2件以上あるユーザを検出する。具体的には、クエリ213は、クエリ212から出力されたユーザ毎の集計データを入力データとし、ログイン回数が2回以上のユーザをフィルタリングし、異常なユーザとして集計データを出力する。すなわち、別のホストから同じユーザがログインされたことを検出する。
クエリ214は、クエリ213で検出されたユーザに対し、ホスト情報及びログイン時間を付与し、データ受信クライアント191に出力ストリームを送信する。すなわち、クエリ214は、異常なユーザとして検出されたデータにホスト情報及びログイン時間などの情報を付与し、データ受信クライアント191に送信する。
クエリ215は、1分間に別ホストからのログイン件数が2件未満のユーザを検出する。すなわち、クエリ215は、クエリ212から出力したユーザ毎の集計データを入力し、ログイン回数が2回未満のユーザをフィルタリングし、正常なユーザを検出する。
クエリ216は、クエリ215で検出されたユーザに対してホスト情報及びログイン時間を付与し、データ受信クライアント191に出力ストリームを送信する。すなわち、クエリ214は、正常なユーザとして検出されたデータにホスト情報及びログイン時間などの情報を付与し、データ受信クライアント191に送信する。
図3は、本発明の実施の形態のストリーム処理部120で実行されるクエリの定義例を示す図である。
図3に示すクエリ定義300は、クエリ定義ファイル116に記録されている情報の一例である。以下、具体的な内容について説明する。
「register stream」はストリームの登録を指示する定義項目である。また、「register query」はクエリの登録を指示する定義項目である。「register stream」に続くオペランドがストリーム名称であり、「register query」に続くオペランドがクエリ名称を示している。
さらに、「FROM」に続くオペランドは、どのクエリの後続クエリであるかを指示している。「FROM」に続くオペランドがストリーム名称である場合には先頭のクエリとなる。「FROM」に続くオペランドがクエリ名称である場合には当該クエリに続く後続のクエリとなることを指示している。
したがって、クエリ定義300のストリーム名称は「AccessLog_Squid」となり、先頭のクエリ名称が「LoginCount1」となる。さらに、「LoginCount1」に続くクエリは、順に、クエリ名称「LoginCount2」、クエリ名称「FilterRule1」及びクエリ名称「LoginRule1」となることを示している。
また、クエリ定義300は、クエリ名称「LoginCount2」の後に、さらに、クエリ名称「FilterRule2」及びクエリ名称「LoginRule2」のクエリが続くことを示している。
図4は、本発明の実施の形態のストリーム処理部120におけるクエリグループ定義400の一例を示す図である。
クエリグループ定義400に記述された「input_data_number」は、ストリームデータの入力量(件数)に基づいてメモリコピーを行なうことを指示する定義項目である。
具体的に説明すると、「input_data_number=LoginCount1、100」は、クエリ名称「LoginCount1」に100件のデータが入力された場合にメモリコピーを行うことを指示する。この定義項目によってメモリコピーの対象となるクエリは、クエリ名称「LoginCount1」以降に実行される後続のクエリである。
また、「input_data_number=LoginCount2、50」は、クエリ名称「LoginCount2」に50件のデータが入力された場合にメモリコピーを行うことを指示するものである。この定義項目によるメモリコピーの対象となるクエリは、クエリ名称「LoginCount2」以降に実行される後続のクエリである。
「query_group」は、時間間隔でメモリコピーを行うことを指示する定義項目である。具体的に説明すると、「query_group=LoginCount1」は、クエリ名称「LoginCount1」以降に実行される後続のクエリを対象としたメモリコピーを行うことを指示するものである。「query_group=LoginCount2」は、クエリ名称「LoginCount2」以降に実行される後続のクエリを対象としたメモリコピーを行うことを指示するものである。「query_group=FilterRule2」は、クエリ名称「FilterRule2」以降に実行される後続のクエリを対象としたメモリコピーを行うことを指示するものである。
「memory_copy_interval」は、メモリコピーを行う間隔時間を指示する定義項目である。「memory_copy_interval=10」は、10秒間隔にメモリコピーを行うことを指示するものである。
図5は、本発明の実施の形態のストリーム処理部120において、クエリグループ定義400を適用した場合にメモリコピーの対象となるクエリのグループを示す図である。
「input_data_number=LoginCount1,100」によってメモリコピーの対象となるクエリグループは、クエリ211以降のクエリ211、クエリ212、クエリ213、クエリ214、クエリ215及びクエリ216を含むクエリグループ511となる。同じく「input_data_number=LoginCount2,50」によってメモリコピーの対象となるクエリグループは、クエリ212以降のクエリ212、クエリ213、クエリ214、クエリ215及びクエリ216を含むクエリグループ512となる。
「query_group=LoginCount1」によってメモリコピーの対象となるクエリグループは、クエリ名称「LoginCount1」がストリーム内での先頭クエリであるため、クエリ211以降のすべてのクエリを含むクエリグループ511となる。
「query_group=LoginCount2」によってメモリコピーの対象となるクエリグループは、クエリ212以降のクエリ212、クエリ213、クエリ214、クエリ215及びクエリ216を対象としたクエリグループ512となる。
「query_group=FilterRule2」によってメモリコピーの対象となるクエリグループは、クエリ215以降のクエリ215及びクエリ216を含むクエリグループ513となる。
クエリグループ定義400を適用した場合、ストリーム処理部120では、各クエリグループの先頭クエリ名に基づいてクエリグループのコピーサイクルを自動的に決定する。クエリグループ511の先頭クエリは「LoginCount1」、クエリグループ512の先頭クエリは「LoginCount2」、クエリグループ513の先頭クエリは「FilterRule2」であるため、クエリの実行順序からコピーサイクルは、クエリグループ511、クエリグループ512、クエリグループ513の順となる。
クエリグループ定義400には、「memory_copy_interval=10」と記述されているため、クエリグループ511、クエリグループ512、クエリグループ513の順に、10秒間隔でメモリコピーが実行される。メモリコピーは、ストリーム処理システムが終了するまで順次繰り返される。
また、時間間隔のメモリコピーとは非同期に入力データ件数に達したクエリグループ511及び512のメモリコピーが行われる。
なお、「input_data_number」の定義は必須ではなく、入力データ件数によるメモリコピーを必要としない場合は定義を省略することが可能である。この場合には、入力データ件数によるメモリコピーは行わない。
また、「query_group」の定義も必須ではなく、省略した場合には、定義ファイル解析制御部129が自動的にクエリグループを決定する。ストリーム処理部120の場合には、クエリグループ511、512、513、514、515及び516が自動的に作成される。ただし、「query_group」を定義する場合には、必ずストリーム内の先頭のクエリを定義しなければならない。
「memory_copy_interval」は、値の設定が省略された場合に指定される値をあらかじめ設定しておけば省略することが可能である。
図6、図7及び図8は、現用系のストリーム処理部120から待機系のストリーム処理部150にメモリコピーを行う処理を説明する図である。
図4に示したクエリグループ定義400に記述された「input_data_number」及び「query_group」によって、図5に示したクエリグループ511、512及び513が作成される。
現用系のストリーム処理部120は、「memory_copy_interval」によって定義された10秒間隔でクエリグループ511、512及び513のクエリグループ単位でメモリコピーを行う。なお、コピーするクエリグループの順序を決定する方法については図9にて後述する。
図6は、本発明の実施の形態の現用系のストリーム処理部120から待機系のストリーム処理部150に、クエリグループ511のメモリコピーを行う手順を説明する図である。
ストリーム処理システムが開始されると、ストリーム処理部120は、最初にコピーするクエリグループ511に含まれるクエリに関連するデータをメモリ112から取得し、待機系のストリーム処理部150にコピーする。具体的にコピーされるデータは、クエリグループ511に含まれる各クエリに対応するタプル管理テーブル125に記録された入力データ管理情報、クエリ内のストリームデータ、送信待ちストリームデータ612及び613である。
待機系のストリーム処理部150は、現用系のストリーム処理部120から受信したデータに基づいて、タプル管理テーブル155に記録された入力データ管理情報を更新し、クエリ内のストリームデータを更新する。さらに、送信待ちストリームデータ612及び613を待機系のストリーム処理部150の送信待ちストリームデータ622及び623としてコピーする。
また、メモリコピーの対象がクエリグループ511である場合には、ストリーム処理部150内のメモリ状態がストリーム処理部120と同一のものとなるため、クエリ内データを回復する必要がなくなる。このため、待機系の入力ストリームデータ624をすべて削除する。こうすることによって、待機系のメモリ142の使用量を削減することができる。
図7は、本発明の実施の形態の現用系のストリーム処理部120から待機系のストリーム処理部150に、クエリグループ512のメモリコピーを行う手順を説明する図である。
ストリーム処理部120は、クエリグループ511の次にクエリグループ512をメモリコピーの対象とする。ストリーム処理部120は、クエリグループ512に含まれるクエリに関連するデータをメモリ112から取得し、待機系のストリーム処理部150にコピーする。具体的には、クエリグループ512に含まれる各クエリに対応するタプル管理テーブル125に記録された入力データ管理情報、クエリ内のストリームデータ、送信待ちストリームデータ712及び713である。
待機系のストリーム処理部150は、現用系のストリーム処理部120から受信したデータに基づいて、タプル管理テーブル155に記録された入力データ管理情報を更新し、クエリ内のストリームデータを更新する。さらに、送信待ちストリームデータ712及び713を待機系のストリーム処理部150の送信待ちストリームデータ722及び723としてコピーする。
また、メモリコピーの対象がクエリグループ512である場合には、ストリーム処理部150内のメモリ状態がストリーム処理部120内のメモリ状態とすべて同一にはならないため、クエリを実行することによってクエリ内のデータを回復する必要がある。このため、待機系の入力ストリームデータ724を削除せずにそのまま保持する。
図8は、本発明の実施の形態の現用系のストリーム処理部120から待機系のストリーム処理部150に、クエリグループ513のメモリコピーを行う手順を説明する図である。
ストリーム処理部120は、クエリグループ512の次にクエリグループ513をメモリコピーの対象とする。ストリーム処理部120は、クエリグループ513に含まれるクエリに関連するデータをメモリ112から取得し、待機系のストリーム処理部150にコピーする。具体的には、クエリグループ513に含まれる各クエリに対応するタプル管理テーブル125に記録された入力データ管理情報、クエリ内のストリームデータ、送信待ちストリームデータ812及び813である。
待機系のストリーム処理部150は、現用系のストリーム処理部120から受信したデータに基づいて、タプル管理テーブル155に記録された入力データ管理情報を更新し、クエリ内のストリームデータを更新する。さらに、送信待ちストリームデータ812及び813を待機系のストリーム処理部150の送信待ちストリームデータ822及び823としてコピーする。
また、メモリコピーの対象がクエリグループ513である場合には、ストリーム処理部150のメモリ状態がストリーム処理部120のメモリ状態とすべて同一にはならないため、クエリを実行することによってクエリ内に保持されるデータを回復する必要がある。このため、待機系の入力ストリームデータ824を削除せずにそのまま保持する。
現用系のストリーム処理部120は、クエリグループ513のメモリコピーが終了すると、再びクエリグループ511から順次メモリコピーを行う。
また、時間間隔で実行されるメモリコピーとは別に、「input_data_number」で定義されたクエリグループ511及び512のメモリコピーが、それぞれ入力件数が100件、50件に達した場合に行われる。この場合のメモリコピーでは、各クエリに対応する入力データ管理情報、クエリ内のストリームデータ及び送信待ちストリームデータを待機系のストリーム処理部150に送信する。そして、現用系のストリーム処理部120からデータを受信した待機系のストリーム処理部150は、受信した情報をメモリ142にコピーする。なお、「input_data_number」で指定されたクエリグループは、コピータイミングが異なるのみであり、現用系におけるメモリ送信処理及び待機系におけるメモリコピー処理の手順は同じである。
ここで、クエリグループ定義を「query_group=LoginCount2」としているのは、クエリ212(LoginCount2)のクエリ処理内容がユーザ毎に1分間のログイン数を集計するクエリであって、集計結果をクエリ213及びクエリ215の各クエリに出力するためである。すなわち、複数のクエリに入力データを提供するクエリを対象としているのである。
クエリグループ定義に「query_group=FilterRule2」としているのは、例示したストリーム処理が異常なユーザ及び正常なユーザを検出するため、クエリ215による正常なユーザの検出量がクエリ213による異常なユーザの検出量よりも多いことが想定されるためである。したがって、待機系のストリーム処理部150で回復処理を行う場合に、クエリ215以降のメモリコピー回数が多い方が回復時のクエリ215以降のクエリ処理の実行を少なくすることができ、回復に要する時間を削減することができるためである。
「input_data_number」に「LoginCount1」及び「LoginCount2」が指定されているのは、クエリ211及びクエリ212にRangeWindowが指定されているためである。RangeWindowは、時間当たりのデータ数を保持するため、保持しなければならないタプルの数を想定することができず、ストリームデータが大量に入力される場合には、大量のデータを保持しなければならない。そこで、時間間隔によるメモリコピーだけでなく、入力データ数でメモリコピーを行うことによって、待機系で保持されていないデータを現用系で大量に保持することを防止しているのである。なお、時間当たりの入力されるストリームデータが少ない場合には「input_data_number」を定義しなくてもよい。
図9は、本発明の実施の形態のコピー容量管理テーブル128の一例を示す図である。
図9に示すコピー容量管理テーブル128は、ストリーム処理システムの起動時に、定義ファイル解析制御部129が、図3に示したクエリ定義及び図4に示したクエリグループ定義400を解析することによって作成されたものである。
コピー容量管理テーブル128には、実行されたメモリコピーの対象を含むメモリコピー状態管理部901及びメモリコピーが実行される単位であるグループの定義情報が含まれる。
メモリコピー状態管理部901は、メモリコピーが実行されたクエリグループを管理する。メモリコピー状態管理部901には、例えば、メモリコピーが実行されたグループの識別情報であるメモリコピー状態情報、及びメモリコピーの実行間隔であるメモリコピー間隔時間が記録される。
メモリコピー状態情報は、前述のように実行されたメモリコピーが実行されたグループの識別情報であり、「memory_copy_interval」で設定された時間間隔で変化する動的な情報である。メモリコピー状態情報に格納された情報に基づいて、次に実行されるクエリグループを特定することができる。なお、メモリコピー状態情報には、実行されたグループではなく、次に実行されるクエリグループを格納してもよい。メモリコピー間隔時間には、「memory_copy_interval」で設定された値が格納される。
さらに、メモリコピーが実行される単位であるグループには、インターバルグループ及びデータ入力グループが含まれる。インターバルグループは「query_group」に定義された情報に基づいて作成されたクエリグループのコピーサイクルを管理する。データ入力グループは「input_data_number」に定義された情報に基づいて作成されたクエリグループを管理する。インターバルグループ及びデータ入力グループは、ストリームデータ処理システムの起動時に作成されてから値が変化しない静的な情報である。
ここで、クエリ定義300及びクエリグループ定義400に基づいて、具体的に作成されるインターバルグループ及びデータ入力グループについて説明する。
インターバルグループには、クエリグループ定義400の「query_group」に定義された情報に基づいて、インターバルグループA911、インターバルグループB912及びインターバルグループC913が作成される。したがって、コピー容量管理テーブル128のメモリコピー状態情報には、インターバルグループA911、インターバルグループB912又はインターバルグループC913のいずれかが記録される。
インターバルグループA911は、「query_group=LoginCount1」の定義に基づいて作成されるクエリグループである。インターバルグループA911は、クエリ「LoginCount1」を先頭クエリとし、後続のすべてのクエリが含まれるクエリグループである。クエリグループに含まれないクエリに保持されるデータは、入力されたストリームデータにクエリを適用することによって復元される。このように、後続のクエリをすべて含むようにクエリグループを定義することによって、クエリグループの先頭クエリを境界として、入力されたストリームデータを処理する必要があるか否かを判断することができる。
同様に、インターバルグループB912は「query_group=LoginCount2」の定義に基づいて作成されるクエリグループ情報、インターバルグループC913は「query_group=FilterRule2」の定義に基づいて作成されるクエリグループ情報である。
また、クエリグループ定義ファイル117によらずに、クエリ定義ファイル116に含まれる各クエリを先頭クエリとしてクエリグループ(インターバルグループ)を作成するようにしてもよい。こうすることによって、クエリグループの作成を自動化することができる。
クエリグループのコピーサイクルは、各クエリグループの先頭クエリによって決定される。インターバルグループA911の先頭クエリは「LoginCount1」、インターバルグループB912の先頭クエリは「LoginCount2」、インターバルグループC913の先頭クエリは「FilterRule2」であるため、「LoginCount1」「LoginCount2」「FilterRule2」の順で処理される。ストリーム処理の順序をメモリコピー優先度と位置付けると、クエリグループのコピーサイクルはインターバルグループA911、インターバルグループB912、インターバルグループC913となる。また、図5に示すように、クエリ213及びクエリ215は、ストリーム処理の順序に基づいて判断すると同位の優先度となるが、この場合にはクエリが定義された順序に基づいて優先度を決定する。
なお、クエリグループのコピーサイクルは、必ずしも、ストリーム処理の順序に従う必要はない。例えば、各クエリグループを独立した時間間隔で実行するようにしてもよい。この場合には、計算機の負荷の増大を抑制するため、複数のクエリグループのコピーが同時に実行されないように留意するとよい。
また、ネットワークの負荷が小さい場合には転送するデータ量が多いクエリグループ(例えば、インターバルグループA911)のコピーを実行し、ネットワークの負荷が小さい場合には転送するデータ量が少ないクエリグループ(例えば、インターバルグループC913)のコピーを実行するようにしてもよい。
データ入力グループには、クエリグループ定義400の「input_data_number」に定義された情報に基づいて、データ入力グループA921及びデータ入力グループB922が作成される。
データ入力グループA921は、「input_data_number=LoginCount1、100」の定義に基づいて作成されるクエリグループ情報を保持する。データ入力グループB922は、「input_data_number=LoginCount2、50」の定義に基づいて作成されるクエリグループ情報を保持する。
図10は、本発明の実施の形態のタプル管理テーブル125の一例を示す図である。
タプル管理テーブル125は、ストリーム処理システム起動時に、定義ファイル解析制御部129によってコピー容量管理テーブル128が作成された後、クエリ構成に基づいてクエリ単位に作成される。
タプル管理テーブル125は、クエリ名称、入力データ閾値数、入力データ最新時刻、同時刻データ入力数及び入力データ数を含む。
クエリ名称は、定義されているクエリを識別する名称である。入力データ閾値数は、クエリグループ定義400に、「input_data_number」が定義されている場合にメモリコピーを実行する閾値となる入力データの数である。クエリ名称及び入力データ閾値数は、ストリーム処理システム起動時に設定され、その後、値が変更されない静的な情報である。
入力データ最新時刻は、当該クエリに最新のストリームデータが入力された時刻である。同時刻データ入力数は、入力データ最新時刻において当該クエリに入力されているストリームデータの入力数である。入力データ数は、「input_data_number」定義でメモリコピー実施対象となる入力データ数の動的な情報からなり、「input_data_number」が定義されている場合にメモリコピーの対象となる入力データ数である。
図10には、クエリ定義300及びクエリグループ定義400に基づいて作成されるタプル管理テーブル125の具体例が示されている。
タプル管理テーブル1001は、クエリ名「LoginCount1」の入力タプル情報を保持する。同じく、タプル管理テーブル1002はクエリ名「LoginCount2」の入力タプル情報、タプル管理テーブル1003はクエリ名「FilterRule1」の入力タプル情報、タプル管理テーブル1004はクエリ名「LoginRule1」の入力タプル情報、タプル管理テーブル1005はクエリ名「FilterRule2」の入力タプル情報、タプル管理テーブル1006はクエリ名「LoginRule2」の入力タプル情報をそれぞれ保持する。
入力データ最新時刻、同時刻データ入力数及び入力データ数は、クエリにデータが入力された時点で更新される動的な情報である。
図11は、本発明の実施の形態の現用系の計算機110に障害が発生し、待機系の計算機140に処理を切り替える手順を説明する図である。
図11には、図8に示したクエリグループ516に対応するメモリコピーが実行され、待機系におけるクエリグループ516に対応するタプル管理テーブル1145及びタプル管理テーブル1146が最新の情報となっている状態を示している。
現用系のストリーム処理部120に含まれるハートビート送受信部132は、ストリーム処理部120が動作中であることを、1秒間隔でハートビートを送信することによって、待機系のストリーム処理部150のハートビート送受信部162に通知する。ハートビートとは、現用系のストリーム処理部120が正常に稼動していることを外部に知らせるために送信される信号である。
ハートビート送受信部162は、ハートビートを受信すると、現用系のストリーム処理部120が動作中であると認識する。ハートビート送受信部162は、現用系のストリーム処理部120からのハートビートの送信遅れを考慮し、最大2秒間までハートビートの受信を待機する。2秒間待機しても現用系のストリーム処理部120によって送信されたハートビートを受信できなかった場合には、ハートビート送受信部162は現用系のストリーム処理部120に障害が発生したと認識する。
ハートビート送受信部162は、現用系のストリーム処理部120の障害を認識すると、ストリーム処理部150において回復処理を開始するために、主制御部153を起動する。主制御部153は、ストリーム処理システムの回復処理を開始するため、まず、入力ストリーム保存管理部157を起動する。入力ストリーム保存管理部157は、最古のストリームデータ1−1を主制御部153に送信する。
主制御部153は、入力データを最初に処理するクエリに対応する入力データ制御部1121を起動する。さらに、起動された入力データ制御部1121に、受信したストリームデータ1−1を送信する。
入力データ制御部1121は、タプル管理テーブル1141の最新時刻(入力データ最新時刻)とストリームデータ1−1の時刻を比較し、当該最新時刻よりもストリームデータ1−1の時刻が新しい場合にはクエリ処理部1131を起動する。
クエリ処理部1131は、クエリ処理を実行してストリームデータ1−1を処理し、結果タプルを出力する。このとき、結果タプルの時刻は、クエリ処理部1131内の最古時刻(09:59:30)を設定し、主制御部153に送信する。ここで、クエリ処理部1131が保持する最新時刻のタプルは10:00:30のタプルとなり、また、タプル管理テーブル1141にある最新時刻を10:00:30に、同時刻のデータ入力数を1に変更する。
この際、対応するクエリのRangeWindowが1分であるため、クエリ処理部1131が保持していた09:59:30のタプルは消滅し、クエリ処理部1131には10:00:00と10:00:30のタプルが保持される。
主制御部153は、入力データ制御部1122を起動し、起動した入力データ制御部1122にクエリ処理部1131の処理結果(09:59:30)を送信する。入力データ制御部1122は、タプル管理テーブル1142にある最新時刻(09:59:00)と入力データの時刻(09:59:30)とを比較し、最新時刻よりも入力データの時刻が新しい場合にはクエリ処理部1132を起動する。
クエリ処理部1132は、クエリ処理を実行し、結果タプルを出力する。さらに、出力された結果タプルは、クエリ処理部1132に保持された最古時刻(09:58:30)が設定され、主制御部153に送信される。
ここで、クエリ処理部1132に保持されている最新時刻のタプルは09:59:30のタプルとなり、また、タプル管理テーブル1142にある最新時刻を09:59:30に、同時刻のデータ入力数を1に変更する。
この際、対応するクエリのRangeWindowが1分であるため、クエリ処理部1132に保持されていた09:58:30のタプルは消滅し、クエリ処理部1132には09:59:00と09:59:30のタプルが保持される。
主制御部153は、さらに、入力データ制御部1123を起動し、起動した入力データ制御部1123にクエリ処理部1132の処理結果(09:58:30)を送信する。入力データ制御部1123は、タプル管理テーブル1143にある最新時刻(09:58:0)と入力タプルの時刻(09:58:30)とを比較し、最新時刻よりも入力タプルに設定された時刻が新しい場合には、クエリ処理部1133を起動する。
クエリ処理部1133は、クエリ処理を実行し、入力されたタプルが異常ユーザのデータである場合にはタプルを出力する。クエリ処理部1133にはWindowが定義されていないため、入力データ時刻(09:58:30)をそのまま出力タプルに設定し、主制御部153に送信する。そして、タプル管理テーブル1142にある最新時刻を09:58:30に、同時刻の入力数を1に変更する。
主制御部153は、さらに、入力データ制御部1124を起動し、起動した入力データ制御部1124にクエリ処理部1133の処理結果(09:58:30)を送信する。入力データ制御部1124は、タプル管理テーブル1144にある最新時刻(09:58:00)と入力タプルの時刻(09:58:30)とを比較し、最新時刻よりも入力タプルに設定された時刻が新しい場合には、クエリ処理部1134を起動する。
クエリ処理部1134は、クエリ処理を実行し、入力されたタプルにホスト情報及びログイン時間を付与する。クエリ処理部1134にはWindowが定義されていないため、入力データ時刻(09:58:30)をそのまま出力タプルに設定し、主制御部153に送信する。そして、タプル管理テーブル1142にある最新時刻を09:58:30に、同時刻の入力数を1に変更する。クエリ処理部1134から出力された出力タプルは、以降、処理されるクエリが定義されていないため、データ受信クライアント191に送信される。
次に、主制御部153は、入力データ制御部1125を起動し、起動された入力データ制御部1125にクエリ処理部1132の処理結果(09:58:30)を送信する。
入力データ制御部1125は、タプル管理テーブル1145にある最新時刻(10:00:00)と入力タプルの時刻(09:58:30)とを比較し、入力タプルに設定された時刻よりも最新時刻が新しいため、入力タプルを破棄する。
続いて、入力ストリーム保存管理部157に保持されたストリームデータ1−2を、ストリームデータ1−1の場合と同様に処理を開始する。ストリームデータ1−2が正常データの場合には、クエリ処理部1133から結果タプルが出力されずに入力されたタプルが破棄される。さらに、クエリ処理部1135では、入力タプルに設定された時刻よりも最新時刻が新しいため、入力タプルが破棄される。ストリームデータ1−3についても同様に処理される。
主制御部153は、ストリームデータ1−3の処理が完了した後、入力ストリーム保存管理部157によって次のストリームデータを入力しようとする。しかし、入力ストリーム保存管理部157に保存されているストリームデータの処理がすべて完了したため、入力ストリーム保存管理部157は、処理対象のデータが存在しないことを主制御部153に通知する。
主制御部153は、入力ストリーム保存管理部157から処理対象のデータが存在しないことが通知されると、ストリームデータの回復処理を終了する。以降、ストリーム処理部150が、障害が発生したストリーム処理部120の替わりに実行系としてストリーム処理を継続する。
以下、本発明の実施の形態のストリームデータ処理システムの処理手順についてフローチャートを示しながら説明する。以下に示す各処理は、現用系の計算機110のプロセッサ111又は待機系の計算機140のプロセッサ141によって、ストリーム処理部120又はストリーム処理部150に含まれるプログラムが実行されることによって実行される。したがって、以下のフローチャートに示す処理の主体は、プロセッサ111又はプロセッサ141となるが、理解を容易にするために、処理を実行するためにプロセッサによって実行された処理部(プログラム)を主体として記述する。
また、各計算機は、現用系としても待機系としても機能するため、各処理部に対応するフローチャートには、現用系で実行される処理及び待機系で実行される処理の両方が示されている。特に断らない限り、フローチャートの各処理の動作主体は、現用系に含まれる各処理部とする。
図12は、本発明の実施の形態のデータ受信部121による処理の手順を示すフローチャートである。本処理は、現用系及び待機系の計算機で実行される処理であり、待機系の計算機140で実行される場合も同様である。
ストリーム処理システムが開始されると、現用系の計算機110及び待機系の計算機140において、データ受信部121及びデータ受信部151が実行され、ストリームデータの受信が開始される(ステップ1201)。
データ受信部121は、通信インタフェース113を介してストリームデータの受信要求を受け付ける(ステップ1202)。さらに、ストリームデータを受信したか否かを判定する(ステップ1203)。ストリームデータを受信できなかった場合には(ステップ1203の結果が「No」)、所定の条件を満たすまで待機するWAIT状態に移行する(ステップ1205)。
データ受信部121は、ストリームデータを受信した場合には(ステップ1203の結果が「Yes」)、主制御部123を起動し、受信したストリームデータを処理する(ステップ1204)。
データ受信部121は、データ送信クライアント190から送信されたデータを受信し、通信インタフェース113からデータの受信が通知された場合、又はストリーム処理システムの終了要求を受け付けた場合にWAIT状態が解除される。
データ受信部121は、WAIT状態を解除された場合には、ストリーム処理システムの終了要求でWAIT状態が解除されたか否かを判定する(ステップ1206)。すなわち、データの受信によってWAIT状態が解除されたか、又はストリーム処理システムの終了要求でWAIT状態が解除されたかを判定する。
データ受信部121は、データの受信によってWAIT状態が解除された場合には(ステップ1206の結果が「No」)、データ受信要求を受け付ける(ステップ1202)。一方、ストリーム処理システムの終了要求によってWAIT状態が解除された場合には(ステップ1206の結果が「Yes」)、データ受信部121の処理を終了する(ステップ1207)。
図13は、本発明の実施の形態のデータ送信部122による処理の手順を示すフローチャートである。
データ送信部122は、主制御部123によるデータ送信要求時に起動され、クエリ処理部126によって処理されたデータの送信を開始する(ステップ1301)。
データ送信部122は、まず、データの送信処理が実行中であるか否か判定する(ステップ1302)。送信処理が実行中でない場合には(ステップ1302の結果が「No」)、通信インタフェース113にデータ送信要求を送信し(ステップ1303)、データ受信クライアント191にデータを送信する。
データ送信部122は、データ送信要求の送信後、送信待ちデータが存在するか否かを判定する(ステップ1304)。送信待ちデータが存在する場合には(ステップ1304の結果が「Yes」)、先頭のデータをメモリチェインから切り離し(ステップ1305)、再度、通信インタフェース113にデータ送信要求を送信する(ステップ1303)。メモリチェインとは、未送信のデータを送信する順序にリスト状に連結して保持するデータ構造である。その後、メモリチェインの先頭から順次データを送信し、送信待ちデータがなくなると、データ送信部122の処理を終了する(ステップ1307)。
データ送信部122は、データの送信処理が実行中の場合には(ステップ1302の結果が「No」)、送信データをメモリチェインの最後尾に保存し(ステップ1306)、データ送信部122の処理を終了する(ステップ1307)。
図14は、本発明の実施の形態の主制御部123による処理の手順を示すフローチャートである。
主制御部123は、ストリームデータを受信した場合、又は現用系に障害が発生し、待機系で回復処理を実行する場合に起動される(ステップ1401)。
主制御部123又は主制御部153は、自ストリーム処理部が現用系か否かを判定する(ステップ1402)。自ストリーム処理部が現用系の場合には(ステップ1402の結果が「Yes」)、ストリームデータを受信したことによって本処理が開始されたと認識し、クエリ定義に基づいて、入力データ制御部124を起動する(ステップ1403)。
主制御部123は、入力データ制御部124の処理が終了すると、出力データが存在するか否かを判定する(ステップ1404)。出力データが存在する場合には(ステップ1404の結果が「Yes」)、再度クエリ定義に基づいて後続のクエリが存在するか否かを判定する(ステップ1405)。後続のクエリが存在する場合には(ステップ1405の結果が「Yes」)、定義されたクエリをすべて処理するまで、入力データ制御部124を実行する(ステップ1403)。
主制御部123は、後続のクエリが存在せず(ステップ1405の結果が「No」)、かつ、出力データがある場合には(ステップ1404の結果が「Yes」)、データ送信部122を起動し、出力データを送信する(ステップ1406)。
主制御部123は、出力データの送信が完了した場合、又は、後続のクエリが存在せず(ステップ1405の結果が「No」)、かつ、出力データがない場合には(ステップ1404の結果が「No」)、他に処理すべきクエリが存在するか否か、すなわち、定義されたすべてのクエリを処理したか否かを判定する(ステップ1407)。すべてのクエリを処理していない場合、すなわち、未処理のクエリが残されている場合には(ステップ1407の結果が「No」)、残りのクエリを処理する。
主制御部123は、すべてのクエリを処理した場合には(ステップ1407の結果が「Yes」)、自ストリーム処理部が現用系か否かを判定する(ステップ1408)。現用系である場合には(ステップ1408の結果が「Yes」)、主制御部123の処理を終了する(ステップ1413)。
主制御部153は、自ストリーム処理部が現用系でない場合、すなわち、待機系の場合には(ステップ1402の結果が「No」)、要求された処理が回復処理であるか否かを判定する(ステップ1409)。
主制御部153は、回復処理を要求された場合には(ステップ1409の結果が「Yes」)、入力ストリーム保存管理部157を起動し、保存されたストリームデータの取り出しを要求する(ステップ1410)。さらに、入力データが存在するか否かを判定する(ステップ1412)。入力データが存在する場合には(ステップ1412の結果が「Yes」)、定義されたクエリに基づいて、入力データ制御部154を起動し(ステップ1403)、入力データを処理する。入力データが存在しない場合には(ステップ1412の結果が「No」)、主制御部153の処理を終了する(ステップ1413)。
一方、主制御部153は、回復処理を要求されていない場合には(ステップ1409の結果が「Yes」)、入力ストリーム保存管理部157を実行し、受信したストリームデータの保存を要求する(ステップ1411)。その後、主制御部153の処理を終了する(ステップ1413)。
図15は、本発明の実施の形態の入力データ制御部124による処理の手順を示すフローチャートである。
本処理は、現用系及び待機系の両方で実行される処理であるが、入力データ制御部124を主体として説明する。
入力データ制御部124は、主制御部123によって起動される(ステップ1501)。このとき、主制御部123によってデータが入力される。
入力データ制御部124は、入力データに付与された時刻を取得する(ステップ1502)。さらに、タプル管理テーブル125から入力データ最新時刻を取得する(ステップ1503)。続いて、自ストリーム処理部が回復処理を実行中であるか否かを判定する(ステップ1504)。
入力データ制御部124は、自ストリーム処理部が回復処理を実行中でない場合には(ステップ1504の結果が「No」)、入力データに付与された時刻とタプル管理テーブル125の入力データ最新時刻が同じであるか否かを判定する(ステップ1505)。
入力データ制御部124は、入力データに付与された時刻とタプル管理テーブル125の入力データ最新時刻が同じである場合には(ステップ1505の結果が「Yes」)、タプル管理テーブル125の同一時刻入力データ数の値を1加算した値に更新する(ステップ1508)。
一方、入力データ制御部124は、入力データに付与された時刻と、タプル管理テーブル125の入力データ最新時刻とが異なる場合には(ステップ1505の結果が「No」)、タプル管理テーブル125の入力データ最新時刻を更新する(ステップ1506)。さらに、同一時刻入力データ数を1に初期化し、タプル管理テーブル125の同一時刻入力データ数を更新する。
入力データ制御部124は、タプル管理テーブル125の各項目の更新が終了すると、クエリ処理部126を起動し(ステップ1509)、定義されたクエリで入力データを処理する。クエリの処理が終了すると、入力データ制御部124の処理を終了する(ステップ1515)。
入力データ制御部124は、自ストリーム処理部が回復処理を実行中の場合には(ステップ1504の結果が「Yes」)、入力データに付与された時刻とタプル管理テーブル125の入力データ最新時刻とを比較する(ステップ1510)。
入力データ制御部124は、入力データに付与された時刻よりもタプル管理テーブル125の入力データ最新時刻が古い場合には(ステップ1510の結果が「>」)、クエリ処理部126を起動し(ステップ1509)、定義されたクエリで入力データを処理する。クエリの処理が終了すると、入力データ制御部124の処理を終了する(ステップ1515)。
入力データ制御部124は、入力データに付与された時刻よりもタプル管理テーブル125の入力データ最新時刻が新しい場合には(ステップ1510の結果が「<」)、タプル管理テーブル125の同一時刻入力データ数を1に設定する(ステップ1512)。その後、入力データを破棄し(ステップ1514)、入力データ制御部124の処理を終了する(ステップ1515)。
入力データ制御部124は、入力データに付与された時刻がタプル管理テーブル125の入力データ最新時刻と一致する場合には(ステップ1510の結果が「=」)、入力データの数とタプル管理テーブル125の同一時刻入力データ数とを比較する(ステップ1511)。
入力データ制御部124は、入力データの数がタプル管理テーブル125の同一時刻入力データ数よりも大きい場合、又は同じ場合には(ステップ1511の結果が「=>」)、定義されたクエリで入力データを処理する。クエリの処理が終了すると、入力データ制御部124の処理を終了する(ステップ1515)。
入力データ制御部124は、入力データの数がタプル管理テーブル125の同一時刻入力データ数よりも小さい場合には(ステップ1511の結果が「<」)、タプル管理テーブル125の同一時刻入力データ数の値を1加算した値に更新する(ステップ1508)。その後、入力データを破棄し(ステップ1514)、入力データ制御部124の処理を終了する(ステップ1515)。
図16は、本発明の実施の形態のメモリコピー制御部130による処理の手順を示すフローチャートである。
メモリコピー制御部130は、ストリーム処理部120の開始時に起動される(ステップ1601)。起動後、現用系では定義されたメモリコピー間隔時間分だけ待機し、WAIT状態となる(ステップ1602)。一方、待機系では現用系によって送信されたメモリの内容のコピー要求を受信するまで待機する(ステップ1602)。
現用系のメモリコピー制御部130では、メモリ送信時間間隔の満了、所定のデータ入力量の充足又はシステムの終了によるWAIT解除要求によってWAIT状態が解除される。また、待機系のメモリコピー制御部160では、メモリコピー要求の受信又はシステムの終了によるWAIT解除要求によってWAIT状態が解除される。
メモリコピー制御部130は、まず、WAIT状態が解除された要因が、メモリ送信要求、メモリコピー要求、又はシステム終了要求のいずれであるかを判定する(ステップ1603)。
メモリコピー制御部130は、メモリ送信要求によってWAIT状態が解除された場合には(ステップ1603の結果が「メモリ送信要求」)、さらに、メモリ送信要求が、メモリコピー間隔時間によるものか、入力データ量によるものかを判定する(ステップ1604)。
メモリコピー制御部130は、メモリコピー間隔時間によってメモリ送信要求が通知された場合には(ステップ1604の結果が「Yes」)、メモリ容量管理テーブルに含まれるメモリコピー状態情報を取得し(ステップ1605)、メモリコピーの対象となるインターバルグループを取得する(ステップ1606)。その後、メモリコピー状態情報を次のインターバルグループに更新する(ステップ1607)。
メモリコピー制御部130は、クエリに対する入力データ量の充足によってメモリ送信要求が通知された場合には(ステップ1604の結果が「No」)、当該クエリに対応するデータ入力グループ情報を取得する(ステップ1608)。
メモリコピー制御部130は、インターバルグループ又はデータ入力グループの情報を取得すると、各情報からクエリに含まれるストリームデータ、すなわち、クエリ処理部124に保持されているストリームデータを取得する(ステップ1609)。さらに、各クエリに対応するタプル管理テーブル125に含まれる入力データ最新時刻及び入力データ数を取得する(ステップ1610)。
さらに、メモリコピー制御部130は、データ受信クライアント191への未送信の出力データが存在するか否かを判定する(ステップ1611)。未送信の出力データが存在する場合には(ステップ1611の結果が「Yes」)、データ送信部122に保持された未送信の出力データを取得する(ステップ1612)。待機系に送信するデータの取得が完了すると、メモリ送受信制御部131を起動する(ステップ1613)。メモリ送受信制御部131による処理が終了すると、再びWAIT状態に移行する(ステップ1602)。
メモリコピー制御部160は、メモリコピー要求によってWAIT状態が解除された場合には(ステップ1603の結果が「メモリコピー要求」)、まず、受信したデータから該当するクエリ情報を取得する(ステップ1614)。そして、該当するクエリに対応するクエリ処理部154に保持されているストリームデータを更新し(ステップ1615)、さらに、該当するクエリに対応するタプル管理テーブル155を更新する(ステップ1616)。
また、メモリコピー制御部160は、データ受信クライアント191への未送信の出力データが存在するか否かを判定する(ステップ1617)。未送信の出力データが存在する場合には(ステップ1617の結果が「Yes」)、データ送信部152に保持された未送信の出力データを取得する(ステップ1618)。
メモリコピー制御部160は、受信したデータをすべてコピーし、すべてのデータ及び情報が更新された後、受信したデータがすべてのクエリに対するデータであるか否かを判定する(ステップ1619)。受信したデータがすべてのクエリに対するデータであった場合には(ステップ1619の結果が「Yes」)、入力されたストリームデータを削除する(ステップ1620)。その後、再びWAIT状態に移行する(ステップ1602)。
メモリコピー制御部130は、システムの終了要求によってWAIT状態が解除された場合には(ステップ1603の結果が「システム終了」)、メモリコピー制御部130の処理を終了する(ステップ1621)。
図17は、本発明の実施の形態の入力ストリーム保存管理部127による処理の手順を示すフローチャートである。
入力ストリーム保存管理部127は、主制御部123によって起動される(ステップ1701)。入力ストリーム保存管理部127は、起動されると、まず、主制御部123からの要求を受け付ける。そして、受け付けた要求がデータの保存要求であるか否かを判定する(ステップ1702)。
入力ストリーム保存管理部127は、データの保存要求を受け付けた場合には(ステップ1702の結果が「Yes」)、入力されたデータを入力ストリーム保存管理部127に保存する(ステップ1703)。入力されたデータは、前述したメモリチェインによって格納される。その後、入力ストリーム保存管理部127による処理を終了する(ステップ1706)。
入力ストリーム保存管理部127は、データの保存要求でない要求を受け付けた場合、すなわち、データの取出し要求を受け付けた場合には(ステップ1702の結果が「No」)、保存されているストリームデータが存在するか否かを判定する(ステップ1704)。保存中のストリームデータが存在しない場合には(ステップ1704の結果が「No」)、入力ストリーム保存管理部127による処理を終了する(ステップ1706)。
入力ストリーム保存管理部127は、保存中のストリームデータが存在する場合には(ステップ1704の結果が「Yes」)、メモリチェインの先頭に格納されたデータを切り離し、切り離されたデータを返却する(ステップ1705)。その後、入力ストリーム保存管理部127の処理を終了する(ステップ1706)。
図18は、本発明の実施の形態のクエリ処理部126による処理の手順を示すフローチャートである。
クエリ処理部126は、入力データ制御部124によって起動される(ステップ1801)。さらに、クエリ処理部126に対応するCQLを、入力データに基づいて実行する(ステップ1802)。CQLの実行が完了すると、クエリ処理部126による処理を終了する(ステップ1803)。
図19は、本発明の実施の形態の定義ファイル解析制御部129による処理の手順を示すフローチャートである。
定義ファイル解析制御部129は、ストリーム処理部120の開始時に起動される(ステップ1901)。
定義ファイル解析制御部129は、まず、ハードディスク装置115に格納されたクエリ定義ファイル116を、ディスクインタフェース114を介してオープンする(ステップ1902)。同じくディスクインタフェース114を介してクエリ定義ファイル116に含まれる1行単位に定義内容の読み出しを要求する(ステップ1903)。
定義ファイル解析制御部129は、クエリ定義ファイル116から1行単位に定義内容を読み出し、データが取得されたか否かを判定する(ステップ1904)。データが取得された場合には(ステップ1904の結果が「Yes」)、さらに定義項目を判定する(ステップ1905)。
定義ファイル解析制御部129は、定義項目が「register stream」の場合には(ステップ1905の結果が「register stream」)、一時的にクエリ実行順序を格納するためのストリーム領域をメモリ112に割り当てる(ステップ1906)。
定義ファイル解析制御部129は、定義項目が「register query」の場合には(ステップ1905の結果が「register query」)、メモリ上に割り当てられたストリーム領域にクエリ名称を実行順に格納する(ステップ1907)。
定義ファイル解析制御部129は、ステップ1903からステップ1907までの処理をクエリ定義ファイル116に定義されたすべての行について実行し、クエリの実行順序を決定する。
定義ファイル解析制御部129は、すべての行を読み出して処理すると(ステップ1904の結果が「No」)、ハードディスク装置115に格納されたクエリ定義ファイル116を、ディスクインタフェース114を介してクローズする(ステップ1908)。さらに、コピー容量管理テーブル128を作成するための領域をメモリ112に割り当てる(ステップ1909)。
定義ファイル解析制御部129は、その後、ハードディスク装置115に格納されたクエリグループ定義ファイル117を、ディスクインタフェース114を介してオープンする(ステップ1910)。同じくディスクインタフェース114を介して1行単位に定義内容の読み出しを要求する(ステップ1911)。
定義ファイル解析制御部129は、クエリグループ定義ファイル117から1行単位に定義内容を読み出し、データが取得されたか否かを判定する(ステップ1912)。データが取得された場合には(ステップ1912の結果が「Yes」)、さらに定義項目を判定する(ステップ1913)。
定義ファイル解析制御部129は、定義項目が「input_data_number」の場合には(ステップ1913の結果が「input_data_number」)、コピー容量管理テーブル128にデータ入力グループを作成し、該当するクエリのクエリ名称を設定する(ステップ1914)。
定義ファイル解析制御部129は、定義項目が「query_group」の場合には(ステップ1913の結果が「query_group」)、コピー容量管理テーブル128にインターバルグループを作成し、該当するクエリのクエリ名称を設定する(ステップ1915)。
定義ファイル解析制御部129は、定義項目が「memory_copy_interval」の場合には(ステップ1913の結果が「memory_copy_interval」)、コピー容量管理テーブル128のメモリコピー間隔時間を設定する(ステップ1916)。
定義ファイル解析制御部129は、クエリグループ定義ファイル117のすべての行を処理すると(ステップ1912の結果が「No」)、ハードディスク装置115に格納されたクエリグループ定義ファイル117を、ディスクインタフェース114を介してクローズする(ステップ1917)。その後、クエリごとのタプル管理テーブル125を作成する。
定義ファイル解析制御部129は、ステップ1906の処理で作成されたストリーム領域に含まれるクエリに対応するタプル管理テーブル125がすべて作成されたか否かを判定する(ステップ1918)。
定義ファイル解析制御部129は、すべてのタプル管理テーブル125が作成されていない場合には(ステップ1918の結果が「No」)、タプル管理テーブル125を作成するための領域をメモリ112に割り当てる(ステップ1919)。さらに、割り当てられた領域にタプル管理テーブル125が作成されていないクエリに対応するタプル管理テーブル125を作成し、対応するクエリの名称を設定する(ステップ1920)。さらに、入力データ閾値数を設定する(ステップ1921)。
定義ファイル解析制御部129は、すべてのクエリに対するタプル管理テーブル125の作成が終了した場合には(ステップ1918の結果が「Yes」)、定義ファイル解析制御部129の処理を終了する(ステップ1922)。
図20は、本発明の実施の形態のメモリ送受信制御部131による処理の手順を示すフローチャートである。
メモリ送受信制御部131は、ストリーム処理部120の開始時に起動される(ステップ2001)。メモリ送受信制御部131は、通信インタフェース113を介してデータの受信要求を受け付ける(ステップ2002)。
メモリ送受信制御部131は、データを受信したか否かを判定する(ステップ2003)。データを受信した場合には(ステップ2003の結果が「Yes」)、メモリコピー制御部130を起動し、メモリコピーの実行を指示する(ステップ2004)。
メモリ送受信制御部131は、データを受信していない場合には(ステップ2003の結果が「No」)、データを受信するまで待機し、WAIT状態に移行する(ステップ2005)。このとき、現用系から送信されたデータを、通信インタフェース113を介して受信したことが通知された場合、メモリコピー制御部130から送信要求を受け付けた場合、又はストリーム処理部の終了要求によるWAIT解除要求を受け付けた場合には、WAIT状態が解除される。
メモリ送受信制御部131は、WAIT状態が解除されると、まず、メモリ受信要求によってWAIT状態が解除されたか否かを判定する(ステップ2006)。メモリ受信要求によってWAIT状態が解除された場合には(ステップ2006の結果が「Yes」)、通信インタフェース113を介してデータ受信要求を受け付ける(ステップ2002)。その後、データを受信し、メモリコピー制御部130を実行することによって(ステップ2004)、メモリコピーを実行する。
メモリ送受信制御部131は、メモリ受信要求によってWAIT状態が解除されたのではない場合には(ステップ2006の結果が「No」)、メモリ送信要求によってWAIT状態が解除されたか否かを判定する(ステップ2007)。メモリ送信要求によってWAIT状態が解除された場合には(ステップ2007の結果が「Yes」)、通信インタフェースを介してメモリの送信要求を現用系の計算機に送信する(ステップ2008)。
メモリ送受信制御部131は、メモリ送信要求によってWAIT状態が解除されたのではない場合には(ステップ2007の結果が「No」)、ストリーム処理部の終了要求によってWAIT状態が解除されたため、メモリ送受信制御部131の処理を終了する(ステップ2009)。
図21は、本発明の実施の形態のハートビート送受信部132による処理の手順を示すフローチャートである。
ハートビート送受信部132は、ストリーム処理部120の開始時に起動される(ステップ2101)。ハートビート送受信部132は、まず、自ストリーム処理部が現用系であるか否かを判定する(ステップ2102)。
ハートビート送受信部132は、自ストリーム処理部が現用系である場合には(ステップ2102の結果が「Yes」)、ハートビートを送信するまで、1秒間のWAIT状態に移行する(ステップ2103)。WAIT状態は、WAIT時間の満了又はストリーム処理部からのシステム終了要求によるWAIT解除要求によって解除される。
ハートビート送受信部132は、WAIT状態が解除されると、ストリーム処理部120からのシステム終了要求によってWAIT状態が解除されたか否かを判定する(ステップ2104)。ストリーム処理部120からのシステム終了要求によってWAIT状態が解除された場合には(ステップ2104の結果が「Yes」)、ハートビート送受信部132の処理を終了する(ステップ2113)。
一方、ハートビート送受信部132は、ストリーム処理部からのシステム終了要求によってWAIT状態が解除されたのではない場合には(ステップ2104の結果が「No」)、WAIT時間の満了によってWAIT状態が解除されたため、通信インタフェースを介してハートビートの送信を要求する(ステップ2105)。ハートビート送信後、再びハートビートを送信するまで待機する(ステップ2103)。以上の処理がシステムの終了まで繰り返される。
ハートビート送受信部162は、自ストリーム処理部が現用系でない場合(ステップ2102の結果が「Yes」)、すなわち、待機系の場合には、ハートビートを受信するまでWAIT状態に移行する(ステップ2106)。WAIT状態は、ハートビートを受信した場合又はストリーム処理部からのシステム終了要求によるWAIT解除要求によって解除される。
ハートビート送受信部162は、WAIT状態が解除されると、ストリーム処理部150からのシステム終了要求によってWAIT状態が解除されたか否かを判定する(ステップ2107)。ストリーム処理部150からのシステム終了要求によってWAIT状態が解除された場合には(ステップ2107の結果が「Yes」)、ハートビート送受信部162の処理を終了する(ステップ2113)。
一方、ハートビート送受信部162は、ストリーム処理部からのシステム終了要求によってWAIT状態が解除されたのではない場合には(ステップ2104の結果が「No」)、ハートビートの受信によってWAIT状態が解除されたため、通信インタフェース113を介してハートビートのデータ受信を要求する(ステップ2108)。
ハートビート送受信部162は、さらにデータを受信したか否かを判定する(ステップ2109)。受信データが存在する場合には(ステップ2109の結果が「Yes」)、受信したハートビートのデータを破棄する(ステップ2110)。その後、再びハートビートを受信するために2秒間のWAIT状態に移行する(ステップ2111)。現用系からのハートビートは1秒間隔で送信されるが、ネットワークの輻輳などの影響による遅れを考慮して2秒間待機する。以上の処理がシステムの終了まで繰り返される。
このとき、WAIT状態は、ステップ2106の処理によるWAIT状態と同様に、ハートビートを受信した場合又はストリーム処理部からのシステム終了要求によるWAIT解除要求によって解除される。
一方、ハートビート送受信部162は、受信データが存在しない場合には(ステップ2109の結果が「No」)、現用系のストリーム処理部120に障害が発生したと判定し、主制御部153を起動し(ステップ2112)、回復処理の実行を要求する。回復処理が完了した後、ハートビート送受信部162の処理を終了する(ステップ2113)。
本発明の実施の形態によれば、現用系の計算機110のメモリ112に格納されたすべての情報を待機系の計算機140に毎回送信するのではないため、送信されるデータ量が削減され、ネットワーク100の負荷を軽減することができる。
さらに、本発明の実施の形態によれば、待機系の計算機140においてすべての入力されたストリームデータに対してクエリを実行する必要がないため、待機系の計算機140の負荷を軽減することができる。
また、本発明の実施の形態によれば、現用系の計算機110のメモリ112に記憶された情報の一部又は全部を周期的に待機系に送信するため、入力されたストリームデータにすべてのクエリを適用する必要がなく、迅速に障害から回復させることができる。
100 ネットワーク
110、140 計算機
111、141 プロセッサ
112、142 メモリ
113、143 通信インタフェース
114、144 ディスクインタフェース
115、145 ハードディスク装置
116、146 クエリ定義ファイル
117、147 クエリグループ定義ファイル
120、150 ストリーム処理部
121、151 データ受信部
122、152 データ送信部
123、153 主制御部
124、154 入力データ制御部
125、155 タプル管理テーブル
126、156 クエリ処理部
127、157 入力ストリーム保存管理部
128、158 コピー容量管理テーブル
129、159 定義ファイル解析制御部
130、160 メモリコピー制御部
131、161 メモリ送受信制御部
132、162 ハートビート送受信部
190 データ送信クライアント
191 データ受信クライアント
901 メモリコピー状態管理
911、912、913 インターバルグループ
921、922 データ入力グループ

Claims (14)

  1. 時刻情報が付与されたデータを時系列順に受信し、前記受信したデータをあらかじめ登録された複数のクエリによって処理する計算機システムにおける障害回復方法であって、
    前記計算機システムには、複数の計算機が含まれ、
    前記各計算機は、前記データを受信するインタフェースと、前記インタフェースを介して受信したデータを記憶する記憶部と、前記記憶部に記憶されたデータを処理するプロセッサと、を備え、
    前記複数の計算機には、前記受信したデータを前記複数のクエリによって処理した結果を出力する第1の計算機と、前記第1の計算機に障害が発生した場合に前記第1の計算機に替わって前記受信したデータを処理する第2の計算機とが含まれ、
    前記複数のクエリには、前記受信したデータを処理する順序があらかじめ定義され、
    前記方法は、
    前記第1の計算機及び前記第2の計算機が、前記データをそれぞれ受信し、
    前記第1の計算機が、前記あらかじめ定義された順序に従って、順次、前記クエリによって前記受信したデータを処理し、
    前記第1の計算機が、前記受信したデータの前記クエリごとの処理結果を、中間データとして前記第1の計算機の記憶部に記憶し、
    前記第1の計算機が、所定のタイミングで、前記複数のクエリの一部のクエリに対応する中間データを前記第2の計算機に送信し、
    前記第2の計算機が、前記第1の計算機から送信された中間データを前記第2の計算機の記憶部に記憶し、
    前記第1の計算機に障害が発生した場合には、前記第2の計算機が、前記第2の計算機が受信したデータ及び前記第1の計算機から送信された中間データを処理することによって、前記第1の計算機の記憶部に格納されたデータを前記第2の計算機の記憶部に復元することを特徴とする障害回復方法。
  2. 前記計算機システムには、少なくとも一つのクエリを含むクエリグループが定義され、
    前記方法は、前記第1の計算機が、前記クエリグループごとに前記中間データを前記第2の計算機に送信することを特徴とする請求項1に記載の障害回復方法。
  3. 前記クエリグループは、前記複数のクエリに含まれるいずれか一つのクエリが対応し、
    前記クエリグループには、前記対応するクエリと、前記対応するクエリの後に実行されるクエリが含まれることを特徴とする請求項2に記載の障害回復方法。
  4. 前記方法は、前記第1の計算機が、前記クエリグループに対応するクエリが実行される順序に基づいて、前記中間データを前記第2の計算機に送信することを特徴とする請求項3に記載の障害回復方法。
  5. 前記複数のクエリに含まれるすべてのクエリに対応するクエリグループが定義されることを特徴とする請求項3に記載の障害回復方法。
  6. 前記計算機システムには、複数のクエリグループが定義され、
    前記複数のクエリグループには、前記複数のクエリをすべて含むクエリグループが含まれ、
    前記方法は、前記第2の計算機が、前記複数のクエリをすべて含むクエリグループに対応する中間データを受信した場合には、前記第2の計算機が受信したデータを削除することを特徴とする請求項2に記載の障害回復方法。
  7. 前記方法は、前記第1の計算機が、前記所定のタイミングとして、周期的に、前記中間データを前記第2の計算機に送信することを特徴とする請求項1に記載の障害回復方法。
  8. 前記方法は、前記第1の計算機が、前記所定のタイミングとして、前記クエリが前記受信したデータを処理した数が所定の閾値を超えた場合に、前記中間データを前記第2の計算機に送信することを特徴とする請求項1に記載の障害回復方法。
  9. 前記方法は、
    前記第1の計算機が、第1の所定の間隔で正常に稼働していることを通知するために、前記第2の計算機と通信し、
    前記第2の計算機が、前記第1の所定の間隔よりも長い第2の所定の間隔で前記第1の計算機と通信できなかった場合には、前記第1の計算機に障害が発生したと判定することを特徴とする請求項1に記載の障害回復方法。
  10. 前記記憶部には、前記クエリごとに作成されたタプル管理情報が格納され、
    前記タプル管理情報には、当該タプル管理情報に対応するクエリが処理した最新のデータに付与された時刻情報である入力データ最新時刻が記録され、
    前記方法は、
    前記第1の計算機が、前記第1の計算機の記憶部に格納された前記タプル管理情報を、前記中間データとともに前記第2の計算機に送信し、
    前記第2の計算機が、前記受信したデータに付与された時刻情報と前記入力データ最新時刻とを比較し、
    前記受信したデータに付与された時刻情報が前記入力データ最新時刻よりも新しい場合には、前記入力データ最新時刻を前記受信したデータに付与された時刻情報に更新することを特徴とする請求項1に記載の障害回復方法。
  11. 複数の計算機を含み、時刻情報が付与されたデータを時系列順に受信し、前記受信したデータをあらかじめ登録された複数のクエリによって処理する計算機システムであって、
    前記各計算機は、前記データを受信するインタフェースと、前記インタフェースを介して受信したデータを記憶する記憶部と、前記記憶部に記憶されたデータを処理するプロセッサと、を備え、
    前記複数の計算機には、前記受信したデータを前記複数のクエリによって処理した結果を出力する第1の計算機と、前記第1の計算機に障害が発生した場合に前記第1の計算機に替わって前記受信したデータを処理する第2の計算機とが含まれ、
    前記複数のクエリには、前記受信したデータを処理する順序があらかじめ定義され、
    前記第1の計算機及び前記第2の計算機は、前記データをそれぞれ受信し、
    前記第1の計算機は、
    前記あらかじめ定義された順序に従って、順次、前記クエリによって前記受信したデータを処理し、
    前記受信したデータの前記クエリごとの処理結果を、中間データとして前記第1の計算機の記憶部に記憶し、
    所定のタイミングで、前記複数のクエリの一部のクエリに対応する中間データを前記第2の計算機に送信し、
    前記第2の計算機は、
    前記第1の計算機から送信された中間データを前記第2の計算機の記憶部に記憶し、
    前記第1の計算機に障害が発生した場合には、前記第2の計算機が受信したデータ及び前記第1の計算機から送信された中間データを処理することによって、前記第1の計算機の記憶部に格納されたデータを前記第2の計算機の記憶部に復元することを特徴とする計算機システム。
  12. 前記第1の計算機は、少なくとも一つのクエリを含むように定義されたクエリグループごとに、前記中間データを前記第2の計算機に送信することを特徴とする請求項11に記載の計算機システム。
  13. 時刻情報が付与されたデータを時系列順に受信し、あらかじめ登録された複数のクエリによって処理する計算機システムに含まれる計算機で実行されるプログラムであって、
    前記データを受信する手順と、
    前記クエリによって前記受信したデータを、あらかじめ定義された順序に従って処理する手順と、
    前記各クエリによって前記受信したデータを処理した結果を中間データとして記憶する手順と、
    前記複数のクエリの一部のクエリに対応する中間データを、所定のタイミングで、前記クエリごとに送信する手順と、
    前記中間データを受信する手順と、
    前記中間データを送信した計算機に障害が発生した場合に、前記受信したデータ及び前記受信した中間データを処理することによって、前記中間データを送信した計算機に格納されたデータを復元する手順と、を含むことを特徴とする障害回復プログラム。
  14. 前記中間データを送信する手順は、少なくとも一つのクエリを含むように定義されたクエリグループごとに、前記中間データを送信することを特徴とする請求項13に記載の障害回復プログラム。
JP2009060783A 2009-03-13 2009-03-13 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム Expired - Fee Related JP4870183B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009060783A JP4870183B2 (ja) 2009-03-13 2009-03-13 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム
US12/644,973 US8369207B2 (en) 2009-03-13 2009-12-22 Failure recovery method, computer system, and storage medium recorded failure recovery program for a stream data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009060783A JP4870183B2 (ja) 2009-03-13 2009-03-13 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム

Publications (2)

Publication Number Publication Date
JP2010217968A true JP2010217968A (ja) 2010-09-30
JP4870183B2 JP4870183B2 (ja) 2012-02-08

Family

ID=42730623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009060783A Expired - Fee Related JP4870183B2 (ja) 2009-03-13 2009-03-13 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム

Country Status (2)

Country Link
US (1) US8369207B2 (ja)
JP (1) JP4870183B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012059976A1 (ja) * 2010-11-02 2012-05-10 株式会社日立製作所 プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
WO2013072975A1 (ja) * 2011-11-18 2013-05-23 株式会社日立製作所 計算機システム、情報処理方法及びプログラム
WO2016035128A1 (ja) * 2014-09-02 2016-03-10 株式会社日立製作所 ストリームデータ処理システム及び処理方法
JP2016528616A (ja) * 2013-07-22 2016-09-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動
WO2018002976A1 (ja) * 2016-06-27 2018-01-04 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム
US9984134B2 (en) 2013-12-13 2018-05-29 International Business Machines Corporation Extraction device, data processing system, and extraction method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880493B2 (en) * 2011-09-28 2014-11-04 Hewlett-Packard Development Company, L.P. Multi-streams analytics
US20140261995A1 (en) 2013-03-15 2014-09-18 Logitech Europe S.A. Systems and methods for imprinting font on a key cap
US9654538B1 (en) * 2013-03-11 2017-05-16 DataTorrent, Inc. Dynamic partitioning of instances in distributed streaming platform for real-time applications
US9122651B1 (en) * 2014-06-06 2015-09-01 Sas Institute Inc. Computer system to support failover in an event stream processing system
US20180268001A1 (en) * 2017-03-16 2018-09-20 International Business Machines Corporation Managing a database management system using a set of stream computing data
US11037168B1 (en) 2019-12-20 2021-06-15 Capital One Services, Llc Transaction exchange platform with watchdog microservice
US11023528B1 (en) 2019-12-20 2021-06-01 Capital One Services, Llc Transaction exchange platform having configurable microservices
US10891615B1 (en) 2019-12-20 2021-01-12 Capital One Services, Llc Transaction exchange platform having streaming transaction data and microservices
US11080120B2 (en) 2019-12-20 2021-08-03 Capital One Services, Llc Transaction exchange platform with watchdog microservice
US10789600B1 (en) * 2019-12-20 2020-09-29 Capital One Services, Llc Transaction exchange platform with snapshot microservice
US11341006B1 (en) * 2020-10-30 2022-05-24 International Business Machines Corporation Dynamic replacement of degrading processing elements in streaming applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262069A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd 障害回復方法
JP2006338432A (ja) * 2005-06-03 2006-12-14 Hitachi Ltd ストリームデータ処理システムのクエリ処理方法
JP2007026373A (ja) * 2005-07-21 2007-02-01 Hitachi Ltd ストリームデータ処理システムおよびストリームデータ処理方法
JP2007241323A (ja) * 2004-05-11 2007-09-20 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びそのデータ同期化方法、仲介装置、仲介プログラム、データベースサーバ、データベースサーバプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044216A (en) * 1996-06-24 2000-03-28 Oracle Corporation Method and apparatus for implementing cursor variables for accessing data from database
US6122754A (en) * 1998-05-22 2000-09-19 International Business Machines Corporation Method and system for data recovery using a distributed and scalable data structure
US6347322B1 (en) * 1998-11-09 2002-02-12 Lucent Technologies Inc. Transaction state data replication by transaction forwarding in replicated database systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262069A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd 障害回復方法
JP2007241323A (ja) * 2004-05-11 2007-09-20 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びそのデータ同期化方法、仲介装置、仲介プログラム、データベースサーバ、データベースサーバプログラム
JP2006338432A (ja) * 2005-06-03 2006-12-14 Hitachi Ltd ストリームデータ処理システムのクエリ処理方法
JP2007026373A (ja) * 2005-07-21 2007-02-01 Hitachi Ltd ストリームデータ処理システムおよびストリームデータ処理方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012059976A1 (ja) * 2010-11-02 2012-05-10 株式会社日立製作所 プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
JP5472885B2 (ja) * 2010-11-02 2014-04-16 株式会社日立製作所 プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
WO2013072975A1 (ja) * 2011-11-18 2013-05-23 株式会社日立製作所 計算機システム、情報処理方法及びプログラム
JP2016528616A (ja) * 2013-07-22 2016-09-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動
US9984134B2 (en) 2013-12-13 2018-05-29 International Business Machines Corporation Extraction device, data processing system, and extraction method
US10089370B2 (en) 2013-12-13 2018-10-02 International Business Machines Corporation Extraction device, data processing system, and extraction method
WO2016035128A1 (ja) * 2014-09-02 2016-03-10 株式会社日立製作所 ストリームデータ処理システム及び処理方法
JPWO2016035128A1 (ja) * 2014-09-02 2017-04-27 株式会社日立製作所 ストリームデータ処理システム及び処理方法
WO2018002976A1 (ja) * 2016-06-27 2018-01-04 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム
JPWO2018002976A1 (ja) * 2016-06-27 2019-04-11 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム

Also Published As

Publication number Publication date
JP4870183B2 (ja) 2012-02-08
US8369207B2 (en) 2013-02-05
US20100232286A1 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
JP4870183B2 (ja) ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム
US9916201B2 (en) Write performance in fault-tolerant clustered storage systems
EP2062139B1 (en) Method for improving transfer of event logs for replication of executing programs
US8868492B2 (en) Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
US10942823B2 (en) Transaction processing system, recovery subsystem and method for operating a recovery subsystem
JP5075736B2 (ja) 仮想サーバのシステム障害回復方法及びそのシステム
JP5308403B2 (ja) データ処理の障害回復方法、システムおよびプログラム
US10459805B2 (en) Method and system for data recovery in a data system
CN107430606B (zh) 具有并行持久性的消息代理系统
US20040193583A1 (en) Method and database system for duplicating transactions between remote sites
US20100229047A1 (en) Method for displaying pair state of copy pairs
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US9798639B2 (en) Failover system and method replicating client message to backup server from primary server
US20180101558A1 (en) Log-shipping data replication with early log record fetching
US8527454B2 (en) Data replication using a shared resource
US20130332507A1 (en) Highly available servers
JP4289056B2 (ja) 計算機システム間のデータ二重化制御方法
Wang et al. A comprehensive study on fault tolerance in stream processing systems
Gog et al. Falkirk wheel: Rollback recovery for dataflow systems
JP2014038564A (ja) データベースに対する処理を行うシステム及び方法
JP6056408B2 (ja) フォールトトレラントシステム
JP2010244117A (ja) レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラム
Jiang et al. Lightweight live migration for high availability cluster service
Wang et al. Fast log replication in highly available data store
US20220308921A1 (en) Non-transitory computer-readable storage medium, information processing system, and data processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110922

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

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

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees