説明

ストリーム回復方法、ストリーム回復プログラム、および、障害回復装置

【課題】ストリーム処理システムの効率的な障害対策を実施すること。
【解決手段】入力ストリーム16は、クエリ処理の対象であるデータタプルと、そのデータタプルのストリームデータ内における位置を示す回復ポイントタプル61と、を含めて構成され、計算機21は、計算機31に発生する障害を検知すると、ストリーム処理装置のクエリ処理が済んだデータタプルの位置を示す、ストリームデータ内における位置情報を回復ポイント62から読み取り、その回復ポイント62のうちの最も後に位置する回復ポイント62を入力ストリーム16内の再投入位置とし、その再投入位置を起点とする入力ストリーム16を、計算機31に再投入する旨をストリーム配信装置に指示することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストリーム回復方法、ストリーム回復プログラム、および、障害回復装置の技術に関する。
【背景技術】
【0002】
ストリーム処理システムは、無限に到来する時刻順データ系列であるストリームデータを処理する機能を持つデータ処理システムである。ストリーム処理システムは、多量のストリームデータをメモリ上でリアルタイム処理(選択、射影、結合、集合演算、集計、…)する機能を持つ。ストリーム処理システムではリアルタイム処理するために、必要なデータをメモリ上で管理している。そのため障害が発生した場合、メモリ上に展開しているデータは消失してしまう可能性がある。
【0003】
このようなメモリ上にデータを保持するシステムで障害が発生した場合、大きく分けて二つの障害回復方法が考えられる。一つは、ある計算機に障害が発生した場合でも即座に動作できるように、複数のシステムを並列化して冗長性を上げ、信頼性を向上する方法。もう一つは単体のシステムに、障害回復機能を持たせ、回復する方法である。前者の方が信頼性、可用性は高いがコストも高くなるというデメリットもある。
【0004】
また、ストリーム処理システムと同様に、性能向上を目的としてメモリ上にデータを置くシステムとしてインメモリデータベースがある。インメモリデータベースでは、メモリが消滅するとデータベースが消えてしまうため、一定期間ごとにデータベース内容のスナップショットを取得し、それ以降は更新ジャーナルを保存することで障害回復を行っている(特許文献1)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−200114号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来技術のように、メモリ上のデータに対しスナップショットを取る方法をストリーム処理システムに適用した場合、データの入出力が多いために、処理が遅くなることが考えられる。また、ストリーム処理システムを並列化する方法もあるが、信頼性、可用性が上がる代わりに、コストも押し上げられることになる。
【0007】
一方でストリーム処理システムはインメモリデータベースと異なり、データベースをメモリ上に保持し続けるわけではなく、処理に必要な入力データと編集データを一定期間だけ保持している。そのため、ストリーム処理システムが障害によりデータを消失した場合、処理に必要となる一定期間の入力ストリームバックアップからストリームデータを再投入する方法で、ストリーム処理システムを回復可能である。
【0008】
しかし、入力ストリームバックアップからストリームデータを再投入する方法では、いつからどれだけの量を再投入すべきか分からないため、入力ストリームバックアップに格納されている全てのストリームデータを再投入することになり、既に処理したストリームデータを再び処理することになり、非効率である。
【0009】
そこで、本発明は、前記した問題を解決し、ストリーム処理システムの効率的な障害対策を実施することを、主な目的とする。
【課題を解決するための手段】
【0010】
前記課題を解決するために、本発明は、ストリームデータを配信するストリーム配信装置と、配信される前記ストリームデータをクエリ処理するストリーム処理装置と、前記ストリーム処理装置の障害発生により失われる前記ストリームデータを前記ストリーム処理装置に再投入するための制御を行う障害回復装置と、を用いるストリーム処理システムによるストリーム回復方法であって、
前記ストリームデータが、クエリ処理の対象であるデータタプルと、そのデータタプルの前記ストリームデータ内における位置を示す回復ポイントタプルと、を含めて構成され、
前記ストリーム処理装置が、
前記データタプルをクエリ処理するとともに、前記回復ポイントタプルをクエリ処理から除外して一時的にバッファにプールし、前記データタプルが前記ストリーム処理装置内で削除指示されると、その削除指示対象の前記データタプルより前に位置する前記回復ポイントタプルを前記バッファから読み取って、その回復ポイントタプルが示す前記ストリームデータ内における位置情報を、記憶手段に書き出し、
前記障害回復装置が、
前記ストリーム処理装置に発生する障害を検知すると、前記記憶手段から前記ストリームデータ内における位置情報を読み取り、その位置情報のうちの最も後に位置する位置情報を前記ストリームデータ内の再投入位置とし、その再投入位置を起点とする前記ストリームデータを、前記ストリーム処理装置に再投入する旨を前記ストリーム配信装置に指示することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【0011】
本発明によれば、ストリーム処理システムの効率的な障害対策を実施することができる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態に関するストリーム処理システムを示す構成図である。
【図2】本発明の一実施形態に関するストリームデータの受信側が回復ポイントタプル61を追加する形態を示す説明図である。
【図3】本発明の一実施形態に関するストリームデータの送信側が回復ポイントタプル61を追加する形態を示す説明図である。
【図4】本発明の一実施形態に関するクエリ処理部45の回復ポイントタプル61の処理の流れを示す説明図である。
【図5】本発明の一実施形態に関するストリーム処理システムの各データ構造を示す構成図である。
【図6】本発明の一実施形態に関するストリームデータ処理部41での、通常運用時における回復ポイントタプル61の生成から消滅までの処理を示すフローチャートである。
【図7】本発明の一実施形態に関する図6のフローチャートの処理を示す説明図である。
【図8】本発明の一実施形態に関するストリームデータ処理部41が実行する、S102(回復ポイントタプル61の追加処理)の詳細を示すフローチャートである。
【図9】本発明の一実施形態に関するクエリ処理部45が実行する、S103(回復ポイントタプル61の受信処理)の詳細を示すフローチャートである。
【図10】本発明の一実施形態に関するS202における回復ポイントタプル61の追加条件の一例を示す説明図である。
【図11】本発明の一実施形態に関するクエリ処理部45が実行する、S104(回復ポイントタプル61の出力処理)の詳細を示すフローチャートである。
【図12】本発明の一実施形態に関するストリームデータ送信部43が実行する、S105(回復ポイントタプル61の削除処理)の詳細を示すフローチャートである。
【図13】本発明の一実施形態に関するS505の整合性の判定処理の一例を示す説明図である。
【図14】本発明の一実施形態に関するストリームサーバ回復処理部26が実行する、障害発生時の入力ストリーム16の回復処理を示すフローチャートである。
【図15】本発明の一実施形態に関する図14のフローチャートの処理を示す説明図である。
【発明を実施するための形態】
【0013】
以下、図面を用いて、本発明の一実施形態を説明する。
【0014】
図1は、ストリーム処理システムを示す構成図である。ストリーム処理システムは、計算機11と、計算機21と、計算機31と、計算機51とを含めて構成される。ネットワーク8は、計算機11と、計算機21と、計算機31と、を接続する。ネットワーク9は、計算機31と、計算機51と、を接続する。
計算機11は、ストリームデータを計算機31に送信する。計算機21は、計算機11から送信されるストリームデータのバックアップを行うとともに、そのバックアップを用いて、障害時に失われるストリームの回復処理を実行する。計算機31は、計算機11から送信されるストリームデータのクエリ処理を行うとともに、そのストリームデータを計算機51へと転送する。計算機51は、計算機31から送信されるストリームデータおよび計算機31でのクエリ処理結果を受信し、それらのデータをもとに、業務アプリケーションを実行する。
【0015】
計算機11は、メモリ12、CPU14、および、disk15を有する。メモリ12上には、ストリームデータを送信するためのアプリケーション実行部13、および回復ポイントタプル61(詳細は、図5(a)参照)の追加位置をアプリケーション実行部13で指定するための回復ポイント指定処理部17を有する。
計算機21は、メモリ22、CPU24、および、入力ストリームバックアップ25を有する。メモリ22上には、ストリームサーバの状態を監視するためのストリームサーバ監視処理部23、ストリームサーバ回復処理を行うためのストリームサーバ回復処理部26を有する。また、入力ストリームバックアップ25は、フラッシュメモリなど不揮発性の記憶装置により構成してもよい。
【0016】
計算機31は、メモリ32、CPU34、および、disk35を有する。メモリ32上には、オペレーティングシステム33が動作し、そのオペレーティングシステム33上でストリームデータ処理部41が動作する。ストリームデータ処理部41は、ストリームデータ受信部42、ストリームデータ送信部43、制御部44、クエリ処理部45、および、回復ポイント管理部46を有する。回復ポイント管理部46は、管理テーブル47を含む。クエリ処理部45は、CQL(Continuous Query Language)などで記載された、ストリームデータを対象とする処理内容を実行する。
計算機51は、メモリ52、CPU54、および、disk55を有する。メモリ52上には、ストリームデータ処理部41で処理されたデータを受信するアプリケーション実行部53を有する。
【0017】
以上説明した図1のストリーム処理システムでは、計算機31上での障害により失われてしまったストリームデータを、計算機21が入力ストリームバックアップ25から読み出して再投入する。このとき、計算機31の障害発生時より前の時間帯では、既に一部のストリームデータが計算機31上ですでに処理されている。よって、計算機21は、入力ストリームバックアップ25のストリームデータのうち、計算機31によってまだ処理されていない部分のストリームデータを選択して、計算機31に再投入する。これにより、計算機31は、同じストリームデータを重複して処理する必要が無くなるため、入力ストリームバックアップ25のストリームデータを全て再投入する方式にくらべ、障害回復時の処理効率を高めることができる。
【0018】
このような高効率の再投入処理を実現するために、入力ストリームバックアップ25のストリームデータのうち、再投入をするストリームデータの位置を選択するための手がかりが必要になる。本実施形態では、その手がかりとして、回復ポイントタプル61を用いる。回復ポイントタプル61は、ストリームデータを構成するタプルの一種であるため、ストリームデータのデータタプルとともに、送信される。しかし、回復ポイントタプル61は、ストリームデータのデータ内容とは関係なく、障害回復の制御用のタプルであるため、クエリ処理部45の演算に関与せず、分岐はすべて分岐し、追い越しなどは行わない。
【0019】
本実施形態では、回復ポイントタプル61をストリームデータに追加する処理について、ストリームデータの受信側(計算機31のストリームデータ受信部42)が追加する形態(図2参照)と、ストリームデータの送信側(計算機11の回復ポイント指定処理部17)が追加する形態(図3参照)と、をそれぞれ挙げる。
【0020】
図2は、ストリームデータの受信側が回復ポイントタプル61を追加する形態を示す説明図である。本実施形態では、入力ストリームバックアップ25などに存在するストリームデータの表記について、そのストリームデータを構成する各タプル(データタプル、回復ポイントタプル61など)を矩形で示し、古いデータを右側に、新しいデータを左側に示す(図面内の矢印を参照)。
【0021】
まず、図2(a)では、通常運用時の回復ポイントタプル61の追加処理を示す。
ストリームデータ受信部42は、アプリケーション実行部13から送信されるストリームデータに対して、回復ポイントタプル61の追加条件を満たすときに、回復ポイントタプル61を追加する。追加条件は、例えば、「1000タプルごとに追加」および「30分ごとに追加」などが挙げられる。
回復ポイント管理部46は、回復ポイントタプル61がストリームデータ処理部41から出力される時点を回復ポイント62(詳細は、図5(c)参照)とし、その回復ポイント62をdisk35内の不揮発性のファイルとして出力する。つまり、回復ポイント62は、入力ストリームバックアップ25のストリームデータのうちの再投入するストリームデータの位置を示す。
【0022】
次に、図2(b)は、障害発生時の回復ポイントタプル61の利用処理を示す。
ストリームサーバ回復処理部26は、ストリーム処理システムダウンを検知すると、disk35から最新の回復ポイント62(例えば、「10:52.12」)を読み取る。
そして、ストリームサーバ回復処理部26は、その最新の回復ポイント62に該当する入力ストリームバックアップ25のタプルを検索し、その検索結果として見つかったタプル(再投入ポイント)より新しいタプルを、ストリームデータ処理部41に再投入する。これにより、障害回復が可能となる。
なお、回復ポイントタプル61の追加条件にタプル数が指定されている場合、システム回復時に使用するタプル数を計算できるため、システム回復時間を見積もることができるようになる。
また、回復ポイントタプル61の追加条件に時間が指定されている場合、システムを指定時間まで回復させることができる。これは、ログ解析や音声解析などのあらかじめシステムに投入するデータ持つ場合、つまりリアルタイムに情報の解析でない場合に、入力タプル量などを計算することなく回復ポイントを決定できる利点がある。
【0023】
図3は、ストリームデータの送信側が回復ポイントタプル61を追加する形態を示す説明図である。
まず、図3(a)では、通常運用時の回復ポイントタプル61の追加処理を示す。図2(a)との違いは、回復ポイントタプル61を追加する処理の主体が、計算機31のストリームデータ受信部42から、計算機11の回復ポイント指定処理部17へと置き換わっている点である。
このように、ストリームデータの送信側で回復ポイントタプル61を追加する形態は、ストリームデータを構成するデータタプルの意味情報を、回復ポイントタプル61の追加位置に反映させるときに、特に有効である。
例えば、図3(a)では、1つのストリームデータを構成する各データタプルが、3つのタプル群(A,B,C)に分類されている。アプリケーション実行部13は、ユーザから、データタプルの意味情報(タプル群の生成に要する情報)の入力を受け付ける。アプリケーション実行部13は、回復ポイント指定処理部17を呼び出すときに、データタプルの意味情報を併せて回復ポイント指定処理部17に通知する。回復ポイント指定処理部17は、データタプルの意味情報を参照して、タプル群を区切る位置に回復ポイントタプル61を挿入する。これにより、ユーザの意図する箇所に回復ポイント62を設定することが可能となる。
なお、データタプルの意味情報としては、例えば、文字列のストリームデータにおける文法情報(段落単位、文単位、文節単位など)、ラジオ放送やテレビ放送のストリームデータにおける番組情報(番組単位、シーン単位など)、および、数値解析用データのストリームデータにおける構造情報(投資用情報では、会社単位など)が、一例としてあげられる。
【0024】
次に、図3(b)は、障害発生時の回復ポイントタプル61の利用処理を示す。図3(b)は、図2(b)と同様である。ストリームサーバ回復処理部26は、例えば、タプル群B,C間の回復ポイントタプル61が通知された回復ポイント62の時刻(11:10.10)が、最新の回復ポイント62であるので、その回復ポイント62以降のタプル(タプル群B,A)を再投入の対象とする。
【0025】
図4は、クエリ処理部45の回復ポイントタプル61の処理の流れを示す説明図である。
【0026】
図4(a)では、クエリ処理部45は、ストリームデータのデータタプル(3番以外のタプル)をクエリ演算処理の対象とするが、ストリームデータの回復ポイントタプル61(3番のタプル)をクエリ演算処理の対象からは除外する。そして、クエリ処理部45は、入力された回復ポイントタプル61を、図4(c)で出力するまで一時的にバッファ(キューなど)に貯めておく。
【0027】
図4(b)では、クエリ処理部45aからクエリ処理部45bおよびクエリ処理部45cへ分岐している場合を示す。クエリ処理部45aは、回復ポイントタプル61(7番のタプル)の出力先が分岐しているときには、それぞれの分岐先に回復ポイントタプル61を複製して出力する。分岐先のクエリ処理部45bおよびクエリ処理部45cは、それぞれクエリ処理部45aから出力された回復ポイントタプル61(3番のタプル)をクエリ演算処理の対象からは除外する。
【0028】
図4(c)は、クエリ処理部45の回復ポイントタプル61の出力処理を示す。クエリ処理部45は、データタプルの消滅タプル(4番タプルの消滅指示が記載されている)が入力された場合に、その消滅タプルより前に存在する回復ポイントタプル61(例えば、3番のタプル)を、制御部44bへ出力する。
つまり、制御部44が発行する消滅タプルには、クエリ処理部45内で生存期間の過ぎたタプルに対し、該当タプルをクエリ処理部45から消滅させる旨の制御指示が記載されている。制御部44は、消滅タプルは、クエリ演算処理において、データタプルが不要になると、そのデータタプルを消滅させるための消滅タプルを発行する。
これにより、クエリ処理部45は3番の回復ポイントタプル61が出力された時点で、3番の回復ポイントタプル61以前に存在した、1番や2番のデータタプルについては、すべてクエリ処理部45からは出力されているものと判断できる。
【0029】
図5(a)は、回復ポイントタプル61を示す構成図である。この図5(a)の表の1行(1レコード)が、1つの回復ポイントタプル61を示す。回復ポイントタプル61は、時刻と、データ(ストリームID)と、フラグ(タプルの種類)とが対応づけられている。
回復ポイントタプル61の「時刻」は、ストリームデータ内のデータタプルの位置を特定するためのデータであり、例えば、生成時に付加された時刻(ライブ中継などで配信時刻が特定可能な場合)、ストリームデータ内の相対的な時刻(すでに記録された番組の再生時刻)などが、挙げられる。なお、時刻情報だけでは、ストリームデータ内のデータタプルの位置を一義的に特定できないときには、時刻情報と別の識別情報との組を、データタプルの位置特定用情報として利用すればよい。
回復ポイントタプル61の「データ(ストリームID)」は、タプルのデータ格納欄に、ストリームIDを格納する旨を示している。ストリームIDとは、入力ストリームごとに振られたユニークなIDである。この「データ(ストリームID)」は、クエリ演算処理の対象外であるため、とくに書き換えは発生しない。
回復ポイントタプル61の「フラグ(タプルの種類)」は、タプルの種類がデータタプルではなく、制御用の回復ポイントタプル61である旨を示している。
【0030】
図5(b)は、管理テーブル47を示す構成図である。管理テーブル47は、1つの行(1つのレコード)で、1つの回復ポイントタプル61を管理する。管理テーブル47は、ストリームIDと、時刻と、分岐数と、出力数とを対応づけて管理する。
管理テーブル47の「ストリームID」および「時刻」は、図5(a)で説明したように、回復ポイントタプル61の特定情報であり、回復ポイントタプル61の生成時に登録される。
管理テーブル47の「分岐数」は、分岐処理が実行された回数を示す。クエリ処理部45から分岐が発生するたびに通知される分岐通知を受けると、分岐数が初期値「1」から始めて、「1」ずつ増加される。
管理テーブル47の「出力数」は、含まれるレコードの回復ポイントタプル61がストリームデータ送信部43から出力されるたびに、1ずつ増加される。そして、管理テーブル47の「分岐数」と「出力数」とが同じ値になるレコードは、管理テーブル47から削除されるとともに、disk35に回復ポイント62として書き込まれる。
【0031】
図5(c)は、disk35で格納されている回復ポイント62を示す構成図である。回復ポイント62は、入力ストリームごとに振られたユニークID、回復ポイントタプル生成時に付加された時刻を持つ。回復ポイント62は、回復ポイント管理部46から管理テーブル47に基づいて、disk35に出力される。
回復ポイント62は、障害発生時に参照される。つまり、図2(b)などで説明したように、障害発生時には、ストリームデータの再投入の位置を特定する必要があるが、回復ポイント62から該当ストリームをストリームIDで検索し、そのストリームIDに対応する時刻の内の最新時刻が、ストリームデータの再投入の位置の特定情報として参照される。
【0032】
図6は、ストリームデータ処理部41での、通常運用時における回復ポイントタプル61の生成から消滅までを示すフローチャートである。図7は、図6のフローチャートの処理を示す説明図である。以下、図6および図7を参照して、ストリームデータ処理部41での、通常運用時の処理を説明する。
【0033】
ストリームデータ受信部42は、計算機11から、入力ストリーム16のタプル(データタプル、回復ポイントタプル61など)を受信する(S101)。なお、図7では、入力ストリーム16が、入力ストリームバックアップ25へとバックアップされるとともに、ストリームデータ処理部41へと入力される形態を示した。この形態は、入力ストリーム16がリアルタイムに生成されるライブ放送などに適した形態である。一方、入力ストリームバックアップ25内にすでに蓄積されている入力ストリーム16が、ストリームデータ処理部41へと入力される形態(オンデマンド配信)としてもよい。
【0034】
ストリームデータ受信部42は、入力ストリーム16のデータタプルの間に回復ポイントタプル61(61a)を追加(挿入)する(S102)。なお、回復ポイントタプル61を追加する位置について、例えば、所定の追加条件を満たす位置とする。そして、回復ポイント管理部46は、ストリームデータ受信部42から回復ポイントタプル61の追加通知を受けると、その内容を管理テーブル47に新規登録する。
【0035】
ストリームデータ受信部42は、制御部44に回復ポイントタプル61を出力する。クエリ処理部45a,45bは、制御部44から回復ポイントタプル61を受信する(S103)。図4(a)に示したように、クエリ処理部45a,45bは、回復ポイントタプル61b、61cをクエリ演算処理の対象とせずに、バッファにプールする。
【0036】
クエリ処理部45は、図4(c)に示したように、消滅タプルの受信に伴い、回復ポイントタプル61を制御部44に出力する(S104)。回復ポイント管理部46は、クエリ処理部45a、45bから、回復ポイントタプル61が出力された旨の通知を受け、管理テーブル47の情報を更新する。
【0037】
ストリームデータ送信部43は、制御部44から出力された回復ポイントタプル61を受信し、回復ポイント管理部46に通知した後、回復ポイントタプル61を削除する(S105)。回復ポイント管理部46は、ストリームデータ送信部43からの通知を受け、管理テーブル47の「出力数」を1つ増加させる。もし、管理テーブル47の「分岐数」と「出力数」とが等しくなったときには、回復ポイント管理部46は、入力ストリームバックアップ25にある回復ポイントタプル61d以前のデータはストリームデータ処理部41から出力されたと判断し、disk35に回復ポイント62を出力する。
これにより、回復ポイント62には、S105で削除された回復ポイントタプル61に関する情報が、追加される。なお、最新の回復ポイント62が示す時刻より前の時刻のデータタプルは、再投入の対象から除外される。よって、再投入の対象にならないデータタプルを、入力ストリームバックアップ25から削除することで、入力ストリームバックアップ25を記憶する記憶装置の空き容量を増やすことができる。
【0038】
図8は、ストリームデータ処理部41が実行する、S102(回復ポイントタプル61の追加処理)の詳細を示すフローチャートである。
【0039】
S201において、入力された入力ストリーム16のタプルが、回復ポイントタプル61か否かを判定する。入力ストリーム16に回復ポイントタプル61が含まれている場合は、例えば、図3(a)で説明したように、送信側のユーザが回復ポイントタプル61を明示的に設定した場合が挙げられる。
しかし、送信側のユーザが指定した回復ポイントタプル61を、受信側で無視する設定がなされている場合には、入力された回復ポイントタプル61を削除して、S201の処理を次のタプルに対して行うこととしてもよい。
S201でYESならS204へ、S201でNOならS202へ、それぞれ移行する。
【0040】
S202において、回復ポイントタプル61の追加条件(詳細は、図10参照)を満たしているか否かを判断する。S202でYESならS203へ、S202でNOならS205へ、それぞれ移行する。
S203において、回復ポイントタプル61を生成して、ストリームデータ受信部42に追加する。
S204において、回復ポイント管理部46の管理テーブル47に、回復ポイントタプル61の情報(レコード)を追加する。
S205において、ストリームデータ受信部42にあるタプルを、制御部44に出力する。
【0041】
図9は、クエリ処理部45が実行する、S103(回復ポイントタプル61の受信処理)の詳細を示すフローチャートである。
S301において、制御部44からタプルを受信する。
S302において、受信したタプルが回復ポイントタプル61であるか否かを判定する。S302でYESならS303へ、S302でNOならS304へ、それぞれ移行する。
S303において、受信した回復ポイントタプル61を、クエリ演算処理に関与させずに、バッファにプールする。
S304において、受信したデータタプルに対して、クエリ演算処理を行う。
【0042】
図10は、S202における回復ポイントタプル61の追加条件の一例を示す説明図である。
図10(a)は、所定の入力ストリーム量ごとに回復ポイントタプル61を追加する条件を示す。これにより、一定の入力ストリーム量ごとに回復ポイントを設定するため、障害時に再投入する入力ストリーム量を簡単に計算できる。再投入量が簡単に計算できるため、それに伴い回復までの時間を見積もることも可能となる。
図10(b)は、所定時間ごとに回復ポイントタプル61を追加する条件を示す。これにより、回復時点の時間指定が可能となる。また、ログの解析、音声解析などのように、あらかじめ入力するデータを用意でき、入力量が時間により変動しないデータである場合、指定した時間ごとに回復ポイントを取得できるため、ストリーム処理システムの回復時間を一定にすることが可能となる。
図10(c)は、ハードウェア負荷の増加などの外部要因を検知して、回復ポイントタプル61を追加する条件を示す。外部要因としては、ハードウェア(CPU、メモリ、I/O)などの負荷が「高い」または「低い」場合が挙げられる。
以上、図10(a)〜(c)に示した追加条件は、それぞれ単独で用いてもよいし、組み合わせで用いてもよい。さらに、これらの追加条件は、時間経過にかかわらず、同じ設定を使い続けてもよいし、時間帯やイベント発生などにより、複数の設定を切り替えてもよい。
【0043】
図11は、クエリ処理部45が実行する、S104(回復ポイントタプル61の出力処理)の詳細を示すフローチャートである。
S401において、制御部44からタプルを受信する。
S402において、受信したタプルが、消滅タプルか否かを判定する。なお、制御部44は、クエリ処理部45内での生存期間を過ぎたタプルを消滅させる指示を記述した消滅タプルを生成して、クエリ処理部45に適宜通知する。S402でYESならS403へ、S402でNOなら処理終了へ、それぞれ移行する。
S403において、消滅タプルで消滅を指定されたデータタプルが、S303でプールされている回復ポイントタプル61より後に受信したデータタプルであるか否かを判断する。S403でYESならS404へ、S403でNOならS406へ、それぞれ移行する。
S404において、S303でプールされている回復ポイントタプル61を、制御部44に出力する。
S405において、回復ポイント管理部46に対して、出力する回復ポイントタプル61の分岐数などの情報を通知する。回復ポイント管理部46は、通知された分岐数をもとに、管理テーブル47の出力された回復ポイントタプル61を示すレコードの「分岐数」を更新する。
S406において、受信した消滅タプルの指示に従い、データタプル(通常タプル)をクエリ処理部45から削除する。
【0044】
図12は、ストリームデータ送信部43が実行する、S105(回復ポイントタプル61の削除処理)の詳細を示すフローチャートである。
S501において、制御部44からタプルを受信する。
S502において、受信したタプルが、回復ポイントタプル61であるか否かを判定する。S502でYESならS503へ、S502でNOなら処理終了へ、それぞれ移行する。
S503において、回復ポイントタプル61が出力されたという情報を、回復ポイント管理部46に通知する。
S504において、受信した回復ポイントタプル61を削除する。
【0045】
S505において、受信した回復ポイントタプル61の管理テーブル47における「分岐数」と「出力数」との整合性が取れたか否かを判定する。この判定処理は、所定の回復ポイントタプル61が次々に分岐して数を増やしていった場合に、その回復ポイントタプル61を全て出力側で回収できたときに、整合性がとれたものとする。回復ポイントタプル61の数はクエリ処理部45の分岐処理などにより増減する可能性があるため、回復ポイントタプル61の出力の際に、正しい増減結果の数が出力されたか否かの整合性を確認する必要がある。なお、分岐が1回も行われなかった回復ポイントタプル61については、回復ポイントタプル61の分岐数および出力数は、ともに「1」となり整合性がとれる。S505でYESならS506へ、S505でNOならS508へ、それぞれ移行する。
S506において、回復ポイント62に記載する回復ポイントタプル61の情報を、disk35に出力する。
S507において、回復ポイント管理部46は、S506で出力した回復ポイントタプル61の情報を、管理テーブル47から削除する。
S508において、回復ポイント管理部46の管理テーブル47の出力数の項目を「1増加する」旨の更新を行う。
【0046】
図13は、S505の整合性の判定処理の一例を示す。
図13(a)では、1つの入力された回復ポイントタプル61が、クエリ処理部45で1回分岐することにより、2つの出力された回復ポイントタプル61となる場合を示す。このときには、1つのストリームデータ送信部43で2回の回復ポイントタプル61の出力が行われるため、管理テーブル47における「分岐数=2」と「出力数=2」とが整合する。
図13(b)では、1つの入力された回復ポイントタプル61が、クエリ処理部45で1回分岐することにより、2つの出力された回復ポイントタプル61となる場合を示す。このときには、2つのストリームデータ送信部43でそれぞれ1回の回復ポイントタプル61の出力が行われるため、管理テーブル47における「分岐数=2」と「出力数=2」とが整合する。
【0047】
図13(c)では、2つの入力された回復ポイントタプル61(ユニークIDは、互いに異なる)が、クエリ処理部45でそれぞれ1回ずつ分岐することにより、4つの出力された回復ポイントタプル61となる場合を示す。このときには、回復ポイントタプル61の整合性判定は、ユニークIDごとに(つまり、2回分)実行される。つまり、2つのストリームデータ送信部43でそれぞれ2回の回復ポイントタプル61の出力が行われるため、第1の回復ポイントタプル61における管理テーブル47における「分岐数=2」と「出力数=2」とが整合し、第2の回復ポイントタプル61における管理テーブル47における「分岐数=2」と「出力数=2」とが整合する。
なお、図13(c)のように回復ポイントタプル61の種類が多く存在する場合、各回復ポイントタプル61の最新の回復ポイント62を抽出し、一番古い回復ポイント62を再投入時点として採用する。
【0048】
図14は、ストリームサーバ回復処理部26が実行する、障害発生時の入力ストリーム16の回復処理を示すフローチャートである。図15は、図14のフローチャートの処理を示す説明図である。以下、図14および図15を参照して、入力ストリーム16の回復処理を説明する。
S601において、ストリームデータ処理部41で障害が発生する。
S602において、ストリームサーバ監視処理部23は、ストリームデータ処理部41の停止(障害)を検知する。
S603において、S602の検知を受け、ストリームサーバ回復処理部26を実行する。
S604において、ストリームサーバ回復処理部26は、disk35から最新の回復ポイント62を取得する。なお、disk35には、出力済の回復ポイントタプル61に関する情報が、格納されている。
S605において、ストリームサーバ回復処理部26は、入力ストリームバックアップ25から、取得した回復ポイント62が示す時刻より新しい時刻に対応するデータタプルをストリームデータ処理部41に入力ストリーム16として再投入することで、ストリームデータ処理部41を回復させる。
【0049】
以上説明した本実施形態によれば、入力ストリームバックアップ25を使用してストリームデータ処理部41の障害回復をする場合、入力ストリームバックアップ25からの再投入するデータタプルの位置を特定することができる。
そのため、回復ポイント指定処理部17およびストリームデータ受信部42は、回復ポイントタプル61を入力ストリーム16に追加する。そして、ストリームデータ処理部41から回復ポイントタプル61が出力される時点で、回復ポイント管理部46は、disk35に回復ポイント62を出力する。障害時には、最新の回復ポイント62が示す時刻位置以降のデータタプルを入力ストリームバックアップ25から取得して、新しい入力ストリーム16として再投入することで、ストリームデータ処理部41を回復できる。
【符号の説明】
【0050】
8,9 ネットワーク
11 計算機(ストリーム配信装置)
21 計算機(障害回復装置)
31 計算機(ストリーム処理装置)
51 計算機
12,22,32,52 メモリ
13,53 アプリケーション実行部
14,24,34,54 CPU
15,35,55 disk
16 入力ストリーム
17 回復ポイント指定処理部
23 ストリームサーバ監視処理部
25 入力ストリームバックアップ
26 ストリームサーバ回復処理部
33 オペレーティングシステム
41 ストリームデータ処理部
42 ストリームデータ受信部
43 ストリームデータ送信部
44 制御部
45,45a,45b,45c クエリ処理部
46 回復ポイント管理部
47 管理テーブル
56 出力ストリーム
61,61a,61b,61c,61d 回復ポイントタプル
62 回復ポイント


【特許請求の範囲】
【請求項1】
ストリームデータを配信するストリーム配信装置と、配信される前記ストリームデータをクエリ処理するストリーム処理装置と、前記ストリーム処理装置の障害発生により失われる前記ストリームデータを前記ストリーム処理装置に再投入するための制御を行う障害回復装置と、を用いるストリーム処理システムによるストリーム回復方法であって、
前記ストリームデータは、クエリ処理の対象であるデータタプルと、そのデータタプルの前記ストリームデータ内における位置を示す回復ポイントタプルと、を含めて構成され、
前記ストリーム処理装置は、
前記データタプルをクエリ処理するとともに、前記回復ポイントタプルをクエリ処理から除外して一時的にバッファにプールし、前記データタプルが前記ストリーム処理装置内で削除指示されると、その削除指示対象の前記データタプルより前に位置する前記回復ポイントタプルを前記バッファから読み取って、その回復ポイントタプルが示す前記ストリームデータ内における位置情報を、記憶手段に書き出し、
前記障害回復装置は、
前記ストリーム処理装置に発生する障害を検知すると、前記記憶手段から前記ストリームデータ内における位置情報を読み取り、その位置情報のうちの最も後に位置する位置情報を前記ストリームデータ内の再投入位置とし、その再投入位置を起点とする前記ストリームデータを、前記ストリーム処理装置に再投入する旨を前記ストリーム配信装置に指示することを特徴とする
ストリーム回復方法。
【請求項2】
前記ストリーム配信装置は、入力手段を介してユーザから入力された位置情報を、前記ストリームデータ内の前記回復ポイントタプルの追加位置として、前記ストリームデータを構成することを特徴とする
請求項1に記載のストリーム回復方法。
【請求項3】
前記ストリーム処理装置は、所定の追加条件を満たすか否かを判定し、前記所定の追加条件を満たした時点で前記ストリーム配信装置から受信する前記ストリームデータに対して、前記回復ポイントタプルを挿入することを特徴とする
請求項1に記載のストリーム回復方法。
【請求項4】
前記ストリーム処理装置は、前記所定の追加条件として、受信する前記ストリームデータのデータ量が所定量になる度に、前記回復ポイントタプルを挿入することを特徴とする
請求項3に記載のストリーム回復方法。
【請求項5】
前記ストリーム処理装置は、前記所定の追加条件として、所定時間が経過する度に、前記回復ポイントタプルを挿入することを特徴とする
請求項3に記載のストリーム回復方法。
【請求項6】
前記ストリーム処理装置は、前記所定の追加条件として、前記ストリーム処理装置のハードウェア資源への負荷が所定量以上に増加する度に、前記回復ポイントタプルを挿入することを特徴とする
請求項3に記載のストリーム回復方法。
【請求項7】
前記ストリーム処理装置は、
前記クエリ処理において分岐処理を行うときには、分岐ごとに前記回復ポイントタプルを複製し、削除指示に伴って前記回復ポイントタプルの全てを前記バッファから読み取ったときに、その回復ポイントタプルが示す前記ストリームデータ内における位置情報を、前記記憶手段に書き出すことを特徴とする
請求項1〜請求項6のいずれか1項に記載のストリーム回復方法。
【請求項8】
前記回復ポイントタプルには、その所属する前記ストリームデータを特定するためのストリームIDが格納され、
前記ストリーム処理装置は、前記ストリームデータ内における位置情報を、ストリームIDごとに前記記憶手段に書き出し、
前記障害回復装置は、ストリームIDごとに前記記憶手段から位置情報を読み取り、その位置情報のうちの最も前に位置する位置情報を前記ストリームデータ内の再投入位置とすることを特徴とする
請求項1〜請求項7のいずれか1項に記載のストリーム回復方法。
【請求項9】
請求項1〜請求項8のいずれか1項に記載のストリーム回復方法を、前記ストリーム処理システムの各装置に実行させるためのストリーム回復プログラム。
【請求項10】
ストリームデータを配信するストリーム配信装置と、配信される前記ストリームデータをクエリ処理するストリーム処理装置と、前記ストリーム処理装置の障害発生により失われる前記ストリームデータを前記ストリーム処理装置に再投入するための制御を行う障害回復装置と、を用いるストリーム処理システムにおける障害回復装置であって、
前記ストリームデータは、クエリ処理の対象であるデータタプルと、そのデータタプルの前記ストリームデータ内における位置を示す回復ポイントタプルと、を含めて構成され、
前記ストリーム処理装置に発生する障害を検知すると、前記ストリーム処理装置のクエリ処理が済んだ前記データタプルの位置を示す、前記ストリームデータ内における位置情報を記憶手段から読み取り、その位置情報のうちの最も後に位置する位置情報を前記ストリームデータ内の再投入位置とし、その再投入位置を起点とする前記ストリームデータを、前記ストリーム処理装置に再投入する旨を前記ストリーム配信装置に指示することを特徴とする
障害回復装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate