(57)【要約】【課題】  通常のデータストリーム処理に加えて、時差付きのデータに対応可能な分散データストリーム管理システムを提供する。【解決手段】  本発明は、分散ストリーム管理システムにおけるストリーム処理装置において、起動時または再起動時に時差情報を取得し、NTPなどの時刻同期手段で設定されたシステム時刻に時差情報を加算もしくは減算した時差時を基準として作成し、ストリームデータ内に存在する標準時を元に付与されたタイムスタンプに時差情報を加算もしくは減算した時差時を元に時間ウィンドウ範囲を決定し、時差時を元に時間スライドに応じたクエリまたはフィルタ条件に応じた処理を実行する。【選択図】  図１
2014225112.tif 000002
【特許請求の範囲】
【請求項１】
時刻同期手段（例えばNTP（Network Time Protocol））で同期されたサーバ群を有し、複数のサーバで構成され、２台以上のストリーム処理装置と１台以上の結果統合装置と、を有し、
前記ストリーム処理装置は、
追記クライアントから入力されたストリームデータのバッファリングを行いつつ、予め別の経路から与えられたクエリまたはフィルタ条件に応じて、時間スライドで指定された範囲のストリームデータの処理を行い、一次処理結果を算出し、前記結果統合装置に送信、または、該結果統合装置が取得できる領域に出力する手段を有し、
前記結果統合装置は、
時間スライドに依存した間隔で、前記一時処理結果を前記ストリーム処理装置から取得し、それらを統合した統合処理結果を作成し、出力する手段を有する分散ストリーム管理システムであって、
前記ストリーム処理装置は、
起動時または再起動時に時差情報を取得し、前記NTPで設定されたシステム時刻に時差情報を加算もしくは減算した時差時を基準として作成する手段と、
前記ストリームデータ内に存在する標準時を元に付与されたタイムスタンプに時差情報を加算もしくは減算した時差時を元に時間ウィンドウ範囲を決定する手段と、
前記時差時を元に時間スライドに応じたクエリまたはフィルタ条件に応じた処理を実行する手段と、
を含む制御手段を有することを特徴とする分散ストリーム管理システム。
【請求項２】
前記ストリーム処理装置は、
前記時差情報を受け取った際に、共有域に既存の時差情報が存在するかを確認し、存在すれば、該共有息の時差情報を利用し、存在しなければ、該共有域に受け取った時差情報を保存する手段を含む
請求項１記載の分散ストリーム管理システム。
【請求項３】
時刻同期手段（例えばNTP（Network Time Protocol））で同期されたサーバ群を有し、複数のサーバで構成され、２台以上のストリーム処理装置と１台以上の結果統合装置と、を有し、
前記ストリーム処理装置は、
追記クライアントから入力されたストリームデータのバッファリングを行いつつ、予め別の経路から与えられたクエリまたはフィルタ条件に応じて、時間スライドで指定された範囲のストリームデータの処理を行い、一次処理結果を算出し、前記結果統合装置に送信、または、該結果統合装置が取得できる領域に出力する手段を有し、
前記結果統合装置は、
時間スライドに依存した間隔で、前記一時処理結果を前記ストリーム処理装置から取得し、それらを統合した統合処理結果を作成し、出力する手段を有するシステムにおける分散ストリーム管理方法であって、
前記ストリーム処理装置において、
起動時または再起動時に時差情報を取得し、前記NTPで設定されたシステム時刻に時差情報を加算もしくは減算した時差時を基準として作成し、
前記ストリームデータ内に存在する標準時を元に付与されたタイムスタンプに時差情報を加算もしくは減算した時差時を元に時間ウィンドウ範囲を決定し、
前記時差時を元に時間スライドに応じたクエリまたはフィルタ条件に応じた処理を実行する
ことを特徴とする分散ストリーム管理方法。
【請求項４】
前記ストリーム処理装置において、
前記時差情報を受け取った際に、共有域に既存の時差情報が存在するかを確認し、存在すれば、該共有息の時差情報を利用し、存在しなければ、該共有域に受け取った時差情報を保存する
請求項３記載の分散ストリーム管理方法。
【請求項５】
コンピュータを、
請求項１または２に記載の分散ストリーム管理システムにおけるストリーム処理装置の各手段として機能させるための分散ストリーム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データストリーム管理システム及び方法及びプログラムに係り、特に、多様なセンサから生成される連続的な情報に対して各種の処理を行うデータストリーム処理のための分散データストリーム管理システム及び方法及びプログラムに関する。
【背景技術】
【０００２】
データストリーム処理は、レコードの発生時刻を基準としたウィンドウとスライドで処理することを基本とするものである。
【０００３】
データストリーム処理は、交通センサ、環境センサ、インターネット、携帯機器、ビデオカメラなどから時々刻々と発生され続ける多様なデータを対象とする。
【０００４】
従来は、一度センサから取得したデータをＤＢ等に蓄積し、その集合に対して各種の処理を行っていたが、データストリーム処理では、多様なセンサから生成される連続的な情報に対して各種の処理を行う。そのような処理のために、ストリーム処理エンジン（ＳＰＥ）としてデータストリーム管理システムがある（例えば、非特許文献1参照）。
【０００５】
データストリーム管理システムでは、無限に連続するデータストリームに対して問合せを行うために、有限のレコード群を切り出すウィンドウと呼ばれる演算を用いる。
【０００６】
ウィンドウには、一定数のレコードを切り出す時間ウィンドウや、時間を基準とするもの等がある。データストリームに対するウィンドウは時間とともにシフトしていく。そのシフトの単位をスライドと呼ぶ。
【０００７】
スライドに対しても、レコード数をベースとするものと、時間をベースとするものがある。スライドの指定によって、ウィンドウを確定し、そのウィンドウに対して処理（クエリやフィルタ）を行う間隔が決定される。
【０００８】
例えば、レコード数をベースとする例として、
ウィンドウ＝１００レコード
スライド＝１０レコード
としたとき、処理（クエリ）は、対象レコードの特定のカラム値の最大値を取得とすると、１０レコード受信する毎に、過去１００レコード分に対して最大値を出力することになる。
【０００９】
また、例えば時間をベーストする例として、
ウィンドウ＝１時間
スライド＝１０分
としたとき、処理（クエリ）は、対象レコードの特定のカラム値の最大値を取得とすると、１０分毎に、過去１時間分のレコードに対して最大値を出力することになる。
【００１０】
本発明は、時間ベースのウィンドウと時間ベースのスライドを対象としている。
【００１１】
分散データストリーム管理システムとしては、非特許文献１でも紹介されているBorealisや、プラットフォームへの要件を定義し、それを実現するアーキテクチャとして、データの流れ方向と処理量の増加方向に対する2つの分散軸を持ち、系としての連続性を維持したまま機能的成長、規模的成長を実現する技術がある（例えば、非特許文献２参照）。
【００１２】
分散システムでは、処理やログの時刻を合わせるためにNTP（Network Time Protocol）を使って系内の時刻同期を行う。NTPとは、ネットワークを経由しサーバ群での時刻同期を行う仕組みである。通常は、独立行政法人情報通信研究機構の提供する標準時をマスタとして、サーバ群の時刻をNTPによって同期させる。
【００１３】
従来の分散ストリーム管理システムの構成例を図１に、その動作を図２に示す。
【００１４】
分散ストリーム管理システムは、NTPで同期されたサーバ群にあって、複数のサーバで構成される。
【００１５】
分散ストリーム管理システム１２０は、ネットワークを介して追記クライアント１１及び結果利用装置１４に接続され、２台以上のストリーム処理装置１２と、1台以上の結果統合装置１３を有し、各々のストリーム処理装置１２１，１２２は、追記クライアント１１１，１１２から入力されたストリームデータに対しバッファリングを行いつつ、予め別の経路から与えられたクエリやフィルタ条件に応じて時間スライドで指定された時間間隔毎に、時間ウィンドウで指定された範囲のストリームデータを対象として処理を行い、一時処理結果を算出し（ステップ１）、結果統合装置１３１に送信、または結果統合装置１３１が取得できる領域に一次処理結果を保管する（ステップ２）。
【００１６】
結果統合装置１３１は、時間スライドに依存した間隔で、一次処理結果を全てのストリーム処理装置１２から受信または入手し、それらを統合した統合処理結果を作成し（ステップ３）、それを活用した監視・警報、可視化、予知・レコメントなどの様々なサービスのための結果利用システムに情報を提供する（ステップ４）。
【００１７】
データストリーム処理は、新鮮なデータに対して処理を行うのが基本である。よって多くの場合には、レコードの発生時刻を基準としたウィンドウとスライドで問題が発生しない。しかし、センサからの通信に恒常的に回線遅延が発生する場合や、通信コストの削減等の目的で、一旦、ファイルに集約されて転送される場合などは、それを受け付けた分散データストリームの時刻（NTPによって同期された標準時）で処理を行うと、標準時とのデータの時間差が存在することで以下の問題が発生する。
【００１８】
・仮に即時に処理ができたとした場合の集計結果と異なってしまう。
【００１９】
・２回以上実行した場合にも集計結果と異なってしまう。
【００２０】
上記の例を上記の図２と、センサから入力されるデータストリームの例を示した図３を用いて説明する。
【００２１】
センサ（外部システム）はｘ、センサｙ、センサｚがあり、各々が図３上部に示すスキーマに応じたデータを生成して追記クライアントに送信もしくは追記クライアント１１から取得される。追記クライアント１１は分散ストリーム管理システム１２０の外界に存在するデータを、分散ストリーム管理システム１２０に投入する役割を持つプログラムである。なお、センサは任意の情報を生成するものとする。
【００２２】
そのデータの例を図３下部に記載する。データ中には、センサのＩＤや、データのシーケンス番号、標準時をベースとした発生日時等が格納されているとする。
【００２３】
現在時刻が標準時1:00（t01）で、
ウィンドウ＝１時間
スライド＝２０分
における処理は、ウィンドウ内のレコードの件数のカウントとすると、分散データストリーム管理システム１２０が1:00に処理（およびウィンドウとスライド制御）を開始しているとすると、2:00（t04）からのストリームデータに対して、20分毎に最大値を計算する場合、標準時を基準したとき、スライドt04，t05，t06，t07，t08，t09，t10，・・・に対して、ウィンドウ内のデータとしてr01，r02，r03，r04，r05，r06，r07，・・・のような処理対象が決定され、それぞれのカウント値が、4，4，4，1，2，2，3，・・・と求められる。
【００２４】
しかし、なんらかの事情によって各データが１０分遅れで届いた場合に、標準時を基準として処理を進めるとカウント値にズレが発生してしまう。
【００２５】
こういったシーンは、エラーや一部のサーバダウン等によってシステムのデータが失われたとき、特定の時区間の結果だけを再処理したい場合にも発生する。
【００２６】
上記のような問題に対し、従来の技術では以下のような対処を行っていた。 
（１）OSのタイムゾーンの指定を利用する：
OSは世界各国の標準時に対応するためのタイムゾーン指定の機能を持っている。
【００２７】
（２）OSの時刻を強制的に変更して処理を進める。もしくは、システムが参照するNTPサーバをローカルなものとし、システムをデータのローカルな時刻体系に合わせて処理をする。
【００２８】
（３）ストリームを入力する側の追記クライアント（１１１，１１２）などストリーム管理システムの外部において、時差を補正したデータに変換し、ストリーム管理システムに入力する。
【先行技術文献】
【非特許文献】
【００２９】
【非特許文献１】北川博之，川島英之，天笠俊之，「センシングデータ処理基盤技術 - ストリームデータ処理」情報処理 Vol.51, No.9, pp.1119-1126, 2010.
【非特許文献２】赤間浩樹，内山寛之，他，「追記・参照型データ管理システムの設計と評価」 情報処理学会論文誌，Vol.49, No.2, pp.749-764, 2008.
【発明の概要】
【発明が解決しようとする課題】
【００３０】
しかしながら、入力データストリームに遅延が存在するケースや、一旦ファイルに蓄積されたデータストリームを後にストリーム化させて処理を行うケースなどデータが時差を持つ場合に、従来技術では以下の問題があった。
【００３１】
OSのタイムゾーンの指定を利用することでは、データの時差にあわせた時差制御ができなかった。
【００３２】
OSの時刻を強制的に変更して処理を進めることを行うと、ジョブを自動実行するためのデーモンプロセスであるcronなどの他プロセス処理にも影響を与えてしまう点や、同一環境にトランザクション処理システム（時刻をベースにしたロギングやジャーナリング）が存在している場合などに悪影響が発生するリスクがあった。
【００３３】
また、ストリームを入力する側の追記クライアントで、時差を補正したデータに変換すると、アプリケーションの依存性が高まってしまうという問題があった。
【００３４】
このように通常のデータストリーム処理に加えて、時差つきのデータに対応可能な分散データストリーム管理システムの実現が課題となっている。
【００３５】
本発明は、上記の点に鑑みなされたもので、分散データストリーム管理システムにおいて、通常のデータストリーム処理に加えて、時差付きのデータに対応可能な分散データストリーム管理システム及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３６】
上記の課題を解決するため、一態様によれば、時刻同期手段（例えばNTP）で同期されたサーバ群を有し、複数のサーバで構成され、２台以上のストリーム処理装置と１台以上の結果統合装置と、を有し、
前記ストリーム処理装置は、
追記クライアントから入力されたストリームデータのバッファリングを行いつつ、予め別の経路から与えられたクエリまたはフィルタ条件に応じて、時間スライドで指定された範囲のストリームデータの処理を行い、一次処理結果を算出し、前記結果統合装置に送信、または、該結果統合装置が取得できる領域に出力する手段を有し、
前記結果統合装置は、
時間スライドに依存した間隔で、前記一時処理結果を前記ストリーム処理装置から取得し、それらを統合した統合処理結果を作成し、出力する手段を有する分散ストリーム管理システムであって、
前記ストリーム処理装置は、
起動時または再起動時に時差情報を取得し、前記NTPで設定されたシステム時刻に時差情報を加算もしくは減算した時差時を基準として作成する手段と、
前記ストリームデータ内に存在する標準時を元に付与されたタイムスタンプに時差情報を加算もしくは減算した時差時を元に時間ウィンドウ範囲を決定する手段と、
前記時差時を元に時間スライドに応じたクエリまたはフィルタ条件に応じた処理を実行する手段と、を含む制御手段を有する分散データストリーム管理システムが提供される。
【発明の効果】
【００３７】
上記のように本発明によれば、データが時差を持つケース（センサからの通信に恒常的に回線遅延が発生する場合や、通信コストの削減等の目的で、一旦、ファイルに集約されて転送される場合など）に対応可能なデータストリーム管理システムの構成が可能になり、データストリーム管理システムを利用するアプリケーションの作成が簡単になる。
【００３８】
また、通常のストリームデータを受け付ける場合にも、単に時差を0:00として分散データストリーム管理システムを利用すればよい。
【図面の簡単な説明】
【００３９】
【図１】従来技術における分散ストリーム管理システムの構成図である。
【図２】従来の分散ストリーム処理システムのシーケンスチャートである。
【図３】センサから入力されるデータストリームの例である。
【図４】本発明の一実施の形態における分散ストリーム管理システム内のストリーム処理装置の構成図である。
【図５】本発明の一実施の形態における分散ストリーム処理システムのシーケンスチャートである。
【図６】本発明の一実施の形態におけるセンサ毎のイベントをカウントするストリーム処理例（時差ありの場合）である。
【図７】センサ毎のイベントをカウントするストリーム処理例（時差なしの場合）である。
【発明を実施するための形態】
【００４０】
以下、図面と共に本発明の実施の形態を説明する。
【００４１】
本発明の分散ストリーム管理システムの構成は、図１に示した従来の構成と同様である。
【００４２】
本発明では、分散ストリーム管理システム１２０内のストリーム処理装置１２内において、通常のデータストリーム処理に加えて、時差付きのデータに対応可能な処理を行う。
【００４３】
図４は、本発明の一実施の形態における分散ストリーム管理システム内のストリーム処理装置の構成を示す。
【００４４】
ストリーム処理装置１２は、起動・停止制御部２１０、データ入力制御部２２０、クエリ・フィルタ制御部２３０、処理結果データ出力制御部２４０、バッファ２５０を有する。
【００４５】
起動・停止制御部２１０は、時差情報入力制御部２１１を有し、クエリ・フィルタ制御部２３０は、ウィンドウ制御部２３１、スライド制御部２３２、時差情報制御部２３３を有する。
【００４６】
起動・停止制御部２１０の時差情報入力制御部２１１は、起動時または再起動時に時差情報を受け取り、NTPで設定されたシステム時刻に時差情報を加算（もしくは減算）した時差時を基準として作成する。
【００４７】
データ入力制御部２２０は、外部から入力されたストリームデータをバッファ２５０にバッファリングし、クエリ・フィルタ制御部２３０に出力する。
【００４８】
クエリ・フィルタ制御部２３０のウィンドウ制御部２３１は、時間スライドで指定された時間範囲のストリームデータを時間ウィンドウとして決定する。
【００４９】
時差情報制御部２３３は、起動・停止制御部２１０から時差情報を取得して標準時を元に付与されたタイムスタンプに時差情報を加算（もしくは減算）した時差時を管理する。
【００５０】
スライド制御部２３２は、クエリやフィルタから得られるスライド条件を標準時または時差時と照らし合わせ、条件に合致した場合にクエリやフィルタのイベントを発生する。
【００５１】
このイベント通知を受けて、クエリ・フィルタ制御部２３０は、ウィンドウ制御部２３１が決定する時間スライドに応じたストリームデータに対してクエリやフィルタ条件に応じた処理を実行し、その結果を出力する。
【００５２】
図５は、本発明の一実施の形態における分散ストリーム処理システムのシーケンスチャートであり、図６は、センサ毎のイベントをカウントするストリーム処理例（時差あり）の場合を示している。以下、図５〜６を用いて説明する。
【００５３】
図３で示したデータストリームが、１０分遅れで、図５に示す分散データストリーム管理システムに入力されるとする。
【００５４】
ストリーム処理装置１２１とストリーム処理装置１２２を起動する際、各々のプロセス起動に時差が１０分（d=10）であることを共有ファイル経由で伝えて起動するものとする。
【００５５】
この情報により、各ストリーム処理装置１２１と１２２の時差情報制御部２３３は、標準時ｔに対して、１０分減算した時刻でデータの時刻が動くことを認識する（ステップ１０１，１０２）。同時に、データ内のタイムスタンプである発生日時カラムについても時差が存在することを認識する（ステップ１０３，１０４）。
【００５６】
データz1は、データ内の発生日時は1:01であるが、いずれかのストリーム処理装置（例えば、ストリーム処理装置１２１）に届く時刻は１０分遅れの標準時の1:11である。
【００５７】
各ストリーム処理装置（例えば、ストリーム処理装置１２１）の時差情報制御部２３３はデータのタイムスタンプに時差を補正した1:01を基準としてウィンドウの制御を行う（ステップ１０５）。よってt01'-dから始まるウィンドウ内にz1を格納する。
【００５８】
同様に、データx2は、データ内の発生時刻は1:42であるが、いずれかのストリーム処理装置（例えば、ストリーム処理装置１２２）に届く時刻は１０分遅れの標準時で1:52である。各システムの時差情報制御部２３３は、データのタイムスタンプに時差を補正した1:42を基準としてウィンドウの制御を行う（ステップ１０６）。よって、t01-d , t02-d , t03-dから始まるウィンドウ内にx2を格納する。
【００５９】
同様に、データz2は、データ内の発生時刻は1:52であるが、いずれかのストリーム処理装置１２に届く時刻は１０分遅れの標準時で2:02である。各ストリーム処理装置１２はデータのタイムスタンプに時差を補正した1:52を基準としてウィンドウの制御を行う。よって、t01-d, t02-d , t03-dから始まるウィンドウ内にx2を格納する。
【００６０】
比較のために解説すると、このとき、図７に示す時差に関する処理を行わない従来の方法を用いると、t02 , t03 から始まるウィンドウ内にx2を格納するが、t01から始まるウィンドウはすでに処理が終わっているためデータが処理対象にならないという問題が発生する。
【００６１】
また、ストリーム処理装置１２１とストリーム処理装置１２２を起動する際、各々のプロセス起動に時差が１０分（d=10）であることを共有する際に、共有ファイルが存在すれば、それを優先するという処理を行うことで、１プロセスの起動だけで指定を行い、他のプロセスでは指定を省略して簡略化することが可能である。
【００６２】
本発明は、上記のストリーム処理装置１２の各構成要素の動作をプログラムとして構築し、ストリーム処理装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００６３】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００６４】
１０  外部システム（センサ等）
１１  追記クライアント
１２  ストリーム処理装置
１３  結果統合装置
１２０  分散ストリーム管理システム
２１０  起動・停止制御部
２１１  時差情報入力制御部
２２０  データ入力制御部
２３０  クエリ・フィルタ制御部
２３１  ウィンドウ制御部
２３２  スライド制御部
２３３  時差情報制御部
２４０  処理結果データ出力制御部
２５０  バッファ
【図１】
2014225112.tif 000003
【図２】
2014225112.tif 000004
【図３】
2014225112.tif 000005
【図４】
2014225112.tif 000006
【図５】
2014225112.tif 000007
【図６】
2014225112.tif 000008
【図７】
2014225112.tif 000009