JP4764300B2 - ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム - Google Patents

ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム Download PDF

Info

Publication number
JP4764300B2
JP4764300B2 JP2006260824A JP2006260824A JP4764300B2 JP 4764300 B2 JP4764300 B2 JP 4764300B2 JP 2006260824 A JP2006260824 A JP 2006260824A JP 2006260824 A JP2006260824 A JP 2006260824A JP 4764300 B2 JP4764300 B2 JP 4764300B2
Authority
JP
Japan
Prior art keywords
filter processing
unit
data
filter
stream data
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.)
Active
Application number
JP2006260824A
Other languages
English (en)
Other versions
JP2008083808A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2006260824A priority Critical patent/JP4764300B2/ja
Publication of JP2008083808A publication Critical patent/JP2008083808A/ja
Application granted granted Critical
Publication of JP4764300B2 publication Critical patent/JP4764300B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ストリームデータ処理技術に関する。
従来、各種センサやICタグ、携帯電話等により様々なデータを収集し、この収集したデータにフィルタ処理を行い、所定の利用先へ流通させるストリームデータ処理技術がある。このようなストリームデータ処理技術として、telegraphCQ(非特許文献1参照)や、borealis(非特許文献2参照)が提案されている。
Sirish Chandrasekaran,Owen Cooper,AmoI Deshpande,Michael J.Franklin,Joseph M. Hellerstein,Wei Hong,Sailesh Krishnamurthy,Sam Madden,Vijayshankar Raman,Fred Reiss,and Mehul A.Shah.,"Te1egraphCQ:Continuous Dataflow Processing for an Uncertain World," CIDR(2003) D.J.Abadi,Y.Ahmad,M.Balazinska,U.Cetintemel,M.Cherniack,J.H.Hwang,W.Lindner,A.S.Maskey,A.Rasin,E.Ryvkina,N.Tatbul,Y.Xing,and Stan Zdonik, "The Design of the Borealis Stream Processing Engine,"CIDR(2005)
前記したtelegraphCQは、入力されるデータの性質変化に合わせてストリームデータ処理を実行するものであるが、処理を実行するのは単一サーバのみである。つまり、前記したtelegraphCQにおいて、複数のサーバがストリームデータ処理を実行することについては考慮されていない。
また、前記したborealisは、複数のサーバがストリームデータ処理を実行するものであるが、各サーバの最適配置が決定した後に、ストリームデータ処理のマイグレーション処理(負荷の大きいサーバから、負荷の小さいサーバへオペレーションを移行する処理)を行う必要がある。しかし、各サーバにおいてこのようなマイグレーション処理を実行すると、マイグレーションの負荷が大きくなり、特に、各種センサやICタグ等、様々な情報源からデータ入力を受け付けたり、また、その情報源からのデータ入力量の変化が激しかったりする場合、システム全体の処理能力が下がる可能性がある。
そこで、本発明は前記した問題を解決し、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにするフィルタ処理装置等を提供することを目的とする。
前記した課題を解決するため、請求項1に記載の発明は、ストリームデータを蓄積する複数のデータ蓄積装置、およびストリームデータのフィルタ処理を行う複数のフィルタ処理装置から構成されるストリームデータ管理システムであって、前記複数のデータ蓄積装置のそれぞれは、当該自身のデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびCPU(Central Processing Unit)コストのうち少なくともいずれか1つの値が、所定の閾値以上に変化したとき、前記複数のフィルタ処理装置の各々に対して、当該自身のデータ蓄積装置における前記少なくともいずれか1つの値を含むキュー状態情報を送信する手段を備え、前記複数のフィルタ処理装置のそれぞれは、各種データの入力を受け付ける入力部と、前記複数のデータ蓄積装置それぞれから、前記入力部経由で、このデータ蓄積装置キュー状態情報を受信し、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、前記選択処理部により選択されたデータ蓄積装置から、前記入力部経由で、このデータ蓄積装置に蓄積されたストリームデータを取得するデータ取得処理部と、サービスIDに対応してフィルタ処理の内容を示したサービスIDテーブル、およびフィルタ処理の内容を記述したフィルタオペレーションを記憶する記憶部と、前記ストリームデータに対し前記フィルタオペレーションに基づくフィルタ処理を実行するフィルタ処理部と、前記取得したストリームデータに付されたサービスID、および前記サービスIDテーブルを参照し、当該ストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを前記記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理を前記フィルタ処理部に実行させるフィルタ実行制御部と、前記フィルタ処理後のストリームデータを出力する出力部と、を備え、前記選択処理部は、前記受信したキュー状態情報に示される前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値に基づき、前記データ蓄積装置のうち、前記値が高いデータ蓄積装置ほど高確率で、前記ストリームデータの取得元となる前記データ蓄積装置を選択するを備える構成とした。
このような構成によれば、ストリームデータ管理システムにおけるフィルタ処理装置はそれぞれ、複数のデータ蓄積装置からストリームデータを取得する。このとき、フィルタ処理装置それぞれが、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理負荷のバランスをとることができる。つまり、ストリームデータ管理システムにおいて、特定のフィルタ処理装置に処理負荷が集中することがなくなる。これにより、ストリームデータ管理システムが、異なる流量特性を持つストリームデータを受信する場合において、特定のフィルタ処理装置がボトルネックとなって、システム全体の処理能力が低下することがなくなる。また、このような構成によれば、各フィルタ処理装置の選択処理部は、データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストに基づき、ストリームデータを取得するデータ蓄積装置を選択するので、より混雑しているデータ蓄積装置から優先的にストリームデータを取得することができる。さらに、フィルタ処理装置は、データ蓄積装置のキュー状態(入力スループット、出力スループットおよびCPUコスト)の変化があったとき、この変化をいち早く取り込み、この変化後のキュー状態情報をもとにストリームデータの取得元となるデータ蓄積装置を決定することができる。
請求項2に記載の発明は、請求項1に記載のストリームデータ管理システムにおいて、前記フィルタオペレーションは、前記フィルタ処理後のストリームデータの出力先の情報を含み、前記フィルタ処理部は、前記フィルタオペレーションに基づき、前記フィルタ処理後のストリームデータの出力先を決定する構成とした。
このような構成によれば、フィルタ処理装置は、フィルタ処理後のストリームデータを所定の出力先に出力することができる。例えば、ストリームデータが、各家庭のテレビ番組の視聴データであるとき、フィルタ処理装置は、このストリームデータにフィルタ処理を行った後、視聴率調査を行う会社のサーバへ出力することができる。つまり、フィルタ処理後のストリームデータの出力先の制御を行うことができる。なお、このように、フィルタオペレーションが、フィルタ処理後のストリームデータの出力先の情報を含むことで、フィルタ処理装置において、フィルタ処理機能が追加されたとき、本システムの管理者等が、出力先を逐次手動で追加する必要がなくなり、大変便利である。
請求項に記載の発明は、請求項1または2に記載のストリームデータ管理システムにおいて、前記フィルタ実行制御部は、前記取得したストリームデータに必要なフィルタ処理機能が、前記フィルタ処理部にあるか否かを判断するフィルタ判定部と、前記フィルタ取得判定部において、前記取得したストリームデータに対し必要なフィルタ処理機能が、前記フィルタ処理部にないと判断されたとき、(1)前記フィルタ処理に必要なファイルと、(2)前記ストリームデータ管理システムにおいて再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する共有情報管理装置から、前記フィルタ処理に必要なファイルを取得し、前記フィルタ処理部に追加するフィルタ取得部と、前記共有情報管理装置に対し、自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる再起動問い合わせ部と、前記再起動問い合わせ部において、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信したとき、前記自身のフィルタ処理装置を再起動し、前記再起動を完了したとき、前記共有情報管理装置へ、前記自身のフィルタ処理装置の再起動の完了を通知する再起動部とを備える構成とした。
このような構成によれば、各フィルタ処理装置は、共有情報管理装置から、自身に不足しているフィルタ処理に必要なファイルを取得し、フィルタ処理部に追加する。従って、各フィルタ処理装置は、ストリームデータの種類が変化した場合でも、フィルタ処理を実行することができる。なお、各フィルタ処理装置がフィルタ処理機能を追加する場合、フィルタ処理装置の再起動が必要となるが、各フィルタ処理装置は、共有情報管理装置から、再起動を許可する旨の通知を受信したときに再起動を実行する。これにより、再起動中のためフィルタ処理が停止してしまうフィルタ処理装置が、所定数を超え、システム全体の処理能力が著しく低下するのを防止できる。
請求項に記載の発明は、請求項に記載のストリームデータ管理システムにおいて、前記再起動問い合わせ部は、所定時間経過しても、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信しなかったとき、再度、前記自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる構成とした。
このような構成によれば、システム全体で、所定数以上のフィルタ処理装置が再起動中のため、自身のフィルタ処理装置が再起動できなかった場合でも、時間をずらして、自身のフィルタ処理装置を再起動させることができる。
請求項に記載の発明は、ストリームデータを蓄積する複数のデータ蓄積装置それぞれが、当該自身のデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値が、所定の閾値以上に変化したとき、前記複数のフィルタ処理装置の各々に対して、当該自身のデータ蓄積装置における前記少なくともいずれか1つの値を含むキュー状態情報を送信するステップを実行し、前記ストリームデータのフィルタ処理を行う複数のフィルタ処理装置のそれぞれが、前記複数のデータ蓄積装置それぞれから、前記キュー状態情報を受信するステップと、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択するステップと、前記選択されたデータ蓄積装置から、このデータ蓄積装置に蓄積されたストリームデータを取得するステップと、前記取得したストリームデータに付されたサービスID、およびサービスIDに対応してフィルタ処理の内容を示したサービスIDテーブルを参照し、当該ストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理をフィルタ処理部に実行させるステップと、前記フィルタ処理後のストリームデータを出力するステップと、を実行し、前記データ蓄積装置を選択するステップにおいて、前記受信したキュー状態情報に示される前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値に基づき、前記データ蓄積装置のうち、前記値が高いデータ蓄積装置ほど高確率で、前記ストリームデータの取得元となる前記データ蓄積装置を選択することを特徴とするストリームデータ管理方法とした。
このような方法によれば、ストリームデータ管理システムにおけるフィルタ処理装置はそれぞれ、複数のデータ蓄積装置からストリームデータを取得する。このとき、フィルタ処理装置それぞれが、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理負荷のバランスをとることができる。つまり、ストリームデータ管理システムにおいて、特定のフィルタ処理装置に処理負荷が集中することがなくなる。これにより、ストリームデータ管理システムが、異なる流量特性を持つストリームデータを受信する場合において、特定のフィルタ処理装置がボトルネックとなって、システム全体の処理能力が低下することがなくなる。また、このような構成によれば、各フィルタ処理装置の選択処理部は、データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストに基づき、ストリームデータを取得するデータ蓄積装置を選択するので、より混雑しているデータ蓄積装置から優先的にストリームデータを取得することができる。さらに、フィルタ処理装置は、データ蓄積装置のキュー状態(入力スループット、出力スループットおよびCPUコスト)の変化があったとき、この変化をいち早く取り込み、この変化後のキュー状態情報をもとにストリームデータの取得元となるデータ蓄積装置を決定することができる。
請求項に記載の発明は、請求項5に記載のストリームデータ管理方法をコンピュータであるストリームデータ管理システムに実行させるためのストリームデータ管理プログラムとした。
このようなプログラムによれば、コンピュータに請求項に記載のストリームデータ管理方法を実行させることができる。
本発明によれば、ストリームデータ管理システムにおいて、情報源のデータ入力量の変化が激しい場合であっても、システム全体の処理能力を著しく低下させないようにすることができる。また、ストリームデータ管理システムにおけるフィルタ処理装置は、フィルタ処理機能を追加できるので、様々なストリームデータに対しフィルタ処理を実行することができる。さらに、このようなフィルタ処理機能を追加する場合においても、システム全体の処理能力を著しく低下させないようにすることができる。
以下、本発明を実施するための最良の形態(以下、実施の形態という)を、図面を参照しながら説明する。
図1は、本実施の形態のストリームデータ管理システムを含むシステムの構成例を示した図である。図1に示すように、システムは、様々な情報源から取得したデータにサービスID(SID)を付し、このデータをストリームデータとして送信するクライアント50(50A,50B)と、受信したストリームデータのフィルタ処理を行うストリームデータ管理システム1と、フィルタ処理されたデータの出力先である、出力先60(60A〜60N)と、この出力先60からデータの検索を行う検索クライアント70(70A〜70N)とを含んで構成される。
ストリームデータ管理システム1は、クライアント50へ、ストリームデータの送信先となるデータ蓄積手段(装置)20を指示するキュー割当手段40と、クライアント50から送信されたストリームデータを蓄積するデータ蓄積手段(装置)20(20A,20B,…,20N)と、ストリームデータのフィルタ処理を行うフィルタ処理手段(装置)10(10A〜10N)と、このフィルタ処理手段10におけるフィルタ処理部124(詳細は後記)の機能を実現するファイルデータ等を記憶する共有情報管理手段(装置)30とを含んで構成される。
また、出力先60は、ストリームデータ管理システム1においてフィルタ処理されたデータをDB(データベース)61に蓄積する蓄積処理部62と、フィルタ処理されたデータを記憶するDB61と、検索クライアント70からの要求に応じて、このDB61から所定のデータを検索する検索処理部63とを含んで構成される。
(1)クライアント50とストリームデータ管理システム1との間、(2)ストリームデータ管理システム1と出力先60との間はそれぞれ、図示しない伝送経路により接続される。さらに、データ蓄積手段20、フィルタ処理手段10、出力先60の数は、図1において、それぞれN個としたが、これに限定されない。
<動作概要>
ここで、図1のシステムの動作概要を説明する。まず、クライアント50は、様々な情報源からデータを取得し、そのデータに応じたSIDを付する。このSIDはSIDのバージョンの情報を含んでいてもよい。そして、クライアント50は、このSIDを付したデータをストリームデータとして、ストリームデータ管理システム1へ送信する。ストリームデータ管理システム1のキュー割当手段40は、ストリームデータの送信先であるデータ蓄積手段20を選択する。そして、クライアント50に対し、ストリームデータの送信先のデータ蓄積手段20を指示し、クライアント50は、指示されたデータ蓄積手段20にストリームデータを送信する。なお、データ蓄積手段20はそれぞれ、自身のキュー状態(入力スループット、出力スループットおよびCPUコスト等)に所定の閾値以上の変化があったとき、このキュー状態を各フィルタ処理手段10へ通知する。
続いて、フィルタ処理手段10は、各データ蓄積手段20から通知されたキュー状態をもとに、ストリームデータを取得するデータ蓄積手段20を決定する。例えば、データ蓄積手段20(20A〜20N)のうち、データ蓄積手段20Bにおける入力スループットが比較的大きな値であった場合、このデータ蓄積手段20Bをストリームデータの取得元として決定する。
次に、フィルタ処理手段10は、この決定したデータ蓄積手段20からストリームデータを取得し、フィルタ処理を行う。各ストリームデータに対し行うべきフィルタ処理は、このストリームデータに付されたSIDに基づき判断する。ここで、このストリームデータに必要なフィルタ処理機能が自身のフィルタ処理部124になかった場合、フィルタ処理手段10は、共有情報管理手段30からファイルデータを取得して、フィルタ処理機能の追加を行う。そして、フィルタ処理手段10は、機能の追加後、フィルタ処理を実行する。
なお、フィルタ処理手段10は、共有情報管理手段30からのファイルデータ取得により機能の追加を行うとき、再起動を行う。このとき、フィルタ処理手段10は、まず、自身が再起動してよいか否かを共有情報管理手段30に問い合わせる。ここで、共有情報管理手段30は、現時点において、ストリームデータ管理システム1全体で、再起動によりフィルタ処理を停止してもよいフィルタ処理手段10の数(再起動上限値)を記録している。そして、共有情報管理手段30は、この問い合わせを受けたフィルタ処理手段10を再起動しても、再起動上限値を超えないとき、このフィルタ処理手段10に再起動を許可する旨の通知を行う。一方、このフィルタ処理手段10を再起動すると、再起動上限値を超えるとき、共有情報管理手段30は、このフィルタ処理手段10に再起動を許可しない旨の通知を行う。このようにすることで、ストリームデータ管理システム1において、所定数を超えたフィルタ処理手段10が再起動のため停止し、システム全体のフィルタ処理能力が著しく低下することを防止できる。
なお、この後、フィルタ処理手段10は、フィルタ処理後のストリームデータを所定の出力先60へ出力する。そして、出力先60においてフィルタ処理後のデータをDB61に蓄積し、このDB61のデータは、検索クライアント70により検索可能となる。
また、このクライアント50、キュー割当手段40、データ蓄積手段20、共有情報管理手段30、フィルタ処理手段10、出力先60および検索クライアント70は、入出力インタフェース、CPU(Central Processing Unit)等の演算処理部、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)等の記憶部等を備えるコンピュータにより実現される。また、各処理部は、CPUによるプログラム実行処理あるいは専用回路により実現される。
また、データ蓄積手段20(20A〜20N)はそれぞれ別個のコンピュータ(装置)により実現するようにしてもよいし、これらをまとめて1つのコンピュータにより実現するようにしてもよい。さらに、フィルタ処理手段10(10A〜10N)についても、それぞれ別個のコンピュータ(装置)により実現するようにしてもよいし、これらをまとめて1つのコンピュータにより実現するようにしてもよい。つまり、データ蓄積手段20(20A〜20N)およびフィルタ処理手段10(10A〜10N)をそれぞれ、プロセスにより実現するようにしてもよいし、コンピュータ(マシン)により実現するようにしてもよい。さらに、キュー割当手段40は、ロードバランサをさらに備え、このロードバランサにより各データ蓄積手段20へのストリームデータの割り当てを行うようにしてもよい。
<データ蓄積手段>
次に、図2を用いてデータ蓄積手段20を詳細に説明する。図2は、図1のデータ蓄積手段の詳細を示した機能ブロック図である。
データ蓄積手段20は、クライアント50から送信されたストリームデータを一時的に蓄積する手段である。このようなデータ蓄積手段20は、図2に示すように、クライアント50からのストリームデータの入力を受け付ける入力部21と、記憶部24におけるキュー241の状態を監視し、所定の閾値以上にキュー状態の変化があったとき、このデータ蓄積手段20におけるキュー状態情報(入力スループット、出力スループットおよびCPUコスト等の情報)を送信する処理部22と、ストリームデータおよび前記したキュー状態情報を出力するための出力部23と、蓄積したストリームデータのキュー241が形成される記憶部24とを含んで構成される。
なお、この入力部21および出力部23は、クライアント50やフィルタ処理手段10との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部24は、RAM、HDD等により実現される。また、処理部22は、CPUによる記憶部24に記憶されるプログラムの実行処理、専用回路等により実現される。なお、記憶部24において、キュー241として蓄積されたストリームデータは、フィルタ処理手段10からの要求に応じて、フィルタ処理手段10へ送信される。
処理部22は、キュー状態監視部221と、キュー状態情報送信部222とを含んで構成される。キュー状態監視部221は、自身のデータ蓄積手段20におけるキュー状態(入力スループット、出力スループットおよびCPUコスト等)を監視する。そして、キュー状態監視部221は、共有情報管理手段30のキュー状態情報通知閾値321(詳細は後記)に示される閾値以上に、キュー状態が変化したか否かを監視する。
キュー状態情報送信部222は、キュー状態監視部221においてキュー状態が共有情報管理手段30のキュー状態情報通知閾値321に示される閾値以上に変化したとき、このデータ蓄積手段20におけるキュー状態情報を各フィルタ処理手段10へ送信する。このときのキュー状態情報には、自身のデータ蓄積手段20の識別情報が付される。また、キュー状態情報の送信は、例えば、各フィルタ処理手段10への同報送信等により行われる。
このようにすることで、データ蓄積手段20は、自身のキュー状態に変化があったとき、自身のキュー状態をいち早く各フィルタ処理手段10へ通知することができる。なお、キュー状態情報通知閾値321は、このデータ蓄積手段20が共有情報管理手段30からコピーして記憶部24に記憶しておき、キュー状態監視部221は、この記憶部24に記憶されたキュー状態情報通知閾値321を参照して、キュー状態の監視を行うようにしてもよい。
<フィルタ処理手段>
次に、図1に戻ってフィルタ処理手段10を詳細に説明する。フィルタ処理手段10は、図1に示すように、ストリームデータの入力を受け付ける入力部11と、ストリームデータをデータ蓄積手段20から取得し、フィルタ処理を行う処理部12と、フィルタ処理を行ったデータを出力する出力部13と、このフィルタ処理手段10の機能を実現するためのプログラムや、各データ蓄積手段20のキュー状態を示したキュー状態テーブル141を記憶する記憶部14とを含んで構成される。この入力部11および出力部13も、データ蓄積手段20や出力先60との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部14は、RAM、HDD等により実現される。また、処理部12は、CPUによる記憶部14に記憶されるプログラムの実行処理、専用回路等により実現される。
この処理部12は、選択処理部121と、データ取得処理部122と、フィルタ実行制御部123と、フィルタ処理部124(124A〜124N)とを含んで構成される。
選択処理部121は、データ蓄積手段20から送信されてきた、このデータ蓄積手段20のキュー状態情報(入力スループット、出力スループット、CPUコスト(フィルタコスト)等を示した情報)を入力部11経由で受信し、この情報をキュー状態テーブル141(詳細は後記)に反映する。そして、選択処理部121は、このキュー状態テーブル141に記された各データ蓄積手段20におけるキュー状態情報をもとに、ストリームデータの取得元となるデータ蓄積手段20を選択(決定)する。このときのデータ蓄積手段20の選択処理の詳細は、具体例を用いて後記するが、例えば、入力スループットの値の大きいデータ蓄積手段20ほど高確率で(優先的に)選択するようにする。
データ取得処理部122は、選択処理部121により選択されたデータ蓄積手段20からストリームデータを入力部11経由で受信する。なお、ストリームデータを取得するタイミングは、例えば、自身のフィルタ処理手段10において処理しているデータがなくなったときでもよいし、処理中のデータが所定の閾値以下となったときでもよい。
フィルタ実行制御部123は、データ取得処理部122から取得したストリームデータに付されたSIDと、共有情報管理手段30のSIDテーブル322(詳細は後記)とを参照して、このストリームデータに対し実行すべきフィルタ処理(フィルタオペレーションの適用手順)を決定する。そして、フィルタ実行制御部123は、記憶部14からフィルタオペレーション(FOP)を読み出し、FOPにより記述されるフィルタ処理をフィルタ処理部124に実行させる。
なお、このフィルタ実行制御部123は、このストリームデータに対し実行すべきフィルタ処理機能が自身のフィルタ処理手段10にないとき、共有情報管理手段30から、このフィルタ処理機能を実現するためのファイルデータ(フィルタオペレーションを含む)をダウンロードし、機能追加を行う。この実行制御部123の詳細は、図4を用いて後記する。
フィルタ処理部124は、フィルタ実行制御部123からの指示に基づき、ストリームデータに対しフィルタ処理を実行する。このフィルタ処理部124におけるフィルタ処理の内容はフィルタオペレーション(FOP)により記述され、フィルタ処理部124は、このFOPに基づきフィルタ処理を実行する。このFOPは例えば「画像フォーマットをJPEGから、Bitmapフォーマットに変換する」というものや、「画像サイズを特徴抽出ルーチンに合うように正規化する」というもの等である。また、このFOPは、「処理後のデータを出力先60Aに出力する」等、処理後のデータの出力先に関する情報を含んでいてもよい。このFOPは、記憶部14に記憶され、フィルタ実行制御部123により読み出される。
記憶部14は、前記したFOPを含み、このフィルタ処理手段10の機能を実現するプログラム(図示省略)と、キュー状態テーブル141とを記憶する。このキュー状態テーブル141は、各データ蓄積手段20ごとのキュー状態を示した情報である。以下の表1に、キュー状態テーブル141を例示する。
Figure 0004764300
例えば、表1に例示したキュー状態テーブル141において、ID「1」のデータ蓄積手段20の入力スループットは「10」であり、出力スループットは「10」であり、CPUコストは「2」であることを示す。
なお、入力スループットとは、データ蓄積手段20へ入力されるデータの単位時間当たりの入力量である。また、出力スループットとは、データ蓄積手段20に蓄えられたデータがフィルタ処理手段10へ出力されるときに単位時間当たりの出力量である。なお、入力量および出力量は、例えば、データベースでいうところのタプル(レコード)の数で定量化することができる。
さらに、CPUコストは、例えば、この1タプルあたりのフィルタ処理時間により定義される。フィルタ処理時間は、データ蓄積手段20がフィルタ処理手段10へデータを渡した後に、そのデータが処理されるまでの時間とする。つまり、データ蓄積手段20は、フィルタ処理手段10へデータを渡したとき、その時間を記録しておく。そして、フィルタ処理手段10は、当該データのフィルタ処理を完了したとき、その旨の通知をデータ蓄積手段20へ送信するので、この通知を受信するまでの時間によりデータ蓄積手段20は、当該データのフィルタ処理時間を計測する。そして、データ蓄積手段20は、この計測したフィルタ処理時間が大きいほど、CPUコストが大きいと判断する。
ここで、前記したキュー状態テーブル141を参照した、選択処理部121によるデータ蓄積手段20の選択処理を、図3を用いて説明する。図3は、図1の選択処理部によるデータ蓄積手段の選択処理を説明する図である。ここでは、選択処理部121が、入力スループットの値をもとにストリームデータの取得元となるデータ蓄積手段20を選択する場合を例に説明する。
(1)まず、選択処理部121は、キュー状態テーブル141における入力スループットの値の総和(10+5+5=20)を求める。
(2)次に、選択処理部121は、1〜20(入力スループットの値の総和)までの間のランダム値rを生成する。
(3)そして、選択処理部121は、前記した(2)で生成したランダム値rをもとに、データを取得するデータ蓄積手段20を選択する。例えば、(2)で生成したランダム値rが1≦r≦10を満たすものであれば、ID「1」のデータ蓄積手段20を選択し、ランダム値rが11≦r≦15を満たすものであれば、ID「2」のデータ蓄積手段20を選択し、ランダム値rが16≦r≦20を満たすものであれば、ID「3」のデータ蓄積手段20を選択する。
すなわち、データ蓄積手段20の数が3であった場合、ID「1」のデータ蓄積手段20が選択される確率は50%、ID「2」のデータ蓄積手段20が選択される確率は25%、ID「3」のデータ蓄積手段20が選択される確率は25%となる。つまり、各フィルタ処理手段10の選択処理部121は、ストリームデータを取得するデータ蓄積手段20を選択するとき、より負荷の大きいデータ蓄積手段20を高い確率で選択することができる。
なお、ここでは、選択処理部121は、データ蓄積手段20の入力スループットの値をもとにストリームデータを取得するデータ蓄積手段20の選択を行うこととしたが、出力スループットまたはCPUコストの値をもとにストリームデータを取得するデータ蓄積手段20の選択を行うようにしてもよい。あるいは、入力スループット、出力スループットおよびCPUコストのすべての値を考慮してデータ蓄積手段20の選択を行うようにしてもよい。つまり、データ蓄積手段20における入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値に基づき、データの取得元となるデータ蓄積手段20の選択を行うようにする。
<フィルタ実行制御部>
次に、前記したフィルタ実行制御部123の詳細を、図4を用いて説明する。図4は、図1のフィルタ実行制御部の詳細を示した機能ブロック図である。
図4に示すように、フィルタ実行制御部123は、フィルタ判定部126と、フィルタ取得部127と、再起動問い合わせ部128と、再起動部129と、フィルタ処理適用部130とを含んで構成される。
フィルタ判定部126は、データ取得処理部122から出力されたストリームデータに付されたSIDおよびSIDのバージョンと、共有情報管理手段30のSIDテーブル322(詳細は後記)とを参照して、このストリームデータに対し実行すべきフィルタオペレーションを判断する。また、フィルタ判定部126は、このストリームデータに必要なフィルタ処理機能が、フィルタ処理部124にあるか否かを判断する。
フィルタ取得部127は、フィルタ判定部126において、ストリームデータに必要なフィルタ処理機能が、フィルタ処理部124にないと判断されたとき、共有情報管理手段30からファイルデータ323を取得する。そして、このファイルデータ323をインストールすることにより、フィルタ処理手段10にフィルタ処理機能を追加する。
再起動問い合わせ部128は、フィルタ取得部127がファイルデータ323を取得した後、共有情報管理手段30に対し、自身のフィルタ処理手段10の再起動を許可するか否かを問い合わせる。
再起動部129は、共有情報管理手段30から自身のフィルタ処理手段10の再起動を許可する旨の応答を受信したとき、自身のフィルタ処理手段10を再起動する。また、再起動部129は、再起動を完了したとき、共有情報管理手段30へ、自身のフィルタ処理手段10の再起動の完了を通知する。このようにすることで、共有情報管理手段30へ、各フィルタ処理手段10が再起動中のためフィルタ処理を停止している状態であるかが通知されることになる。
フィルタ処理適用部130は、ストリームデータに付されたSIDおよびSIDのバージョンと、共有情報管理手段30のSIDテーブル322(詳細は後記)とを参照して、このストリームデータに対し実行すべきフィルタオペレーションを適用する。すなわち、SIDテーブル322に示されるスキーマ情報と、FOP(フィルタオペレーション)系列とを参照して、このストリームデータに対し、どのような手順でフィルタ処理を実行すればよいかを判断する。そして、フィルタ処理部124に、この判断した手順でフィルタ処理を実行させる。
なお、共有情報管理手段30からファイルデータ323を取得するタイミングは、フィルタ処理手段10において、ストリームデータに必要なフィルタ処理機能がないことを検知したときでもよいし、所定期間ごとであってもよい。
<共有情報管理手段>
次に、図5を用いて、共有情報管理手段30を詳細に説明する。図5は、図1の共有情報管理手段の機能ブロック図である(適宜、図1および図2参照)。
図5に示すように、共有情報管理手段30は、各種データの入力を司る入力部31と、フィルタ処理手段10(図1参照)により参照される各種データや共有情報管理手段30の機能を実現するプログラムを記憶する記憶部32と、各種データの出力を司る出力部33と、この共有情報管理手段30全体の制御を司る処理部34とを含んで構成される。この入力部31および出力部33は、データ蓄積手段20やフィルタ処理手段10等との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部32は、RAM、HDD等により実現される。また、処理部34は、CPUによるプログラム実行処理や、専用回路等により実現される。なお、図5において、前記したプログラムの図示は省略している。
記憶部32は、共有情報管理手段30の機能を実現するプログラム(図示省略)と、キュー状態情報通知閾値321と、テーブル322と、ファイルデータ323と、再起動情報324とを記憶する。
キュー状態情報通知閾値321は、データ蓄積手段20のキュー状態監視部221が、キュー状態情報を送信するか否かを判断するための閾値である。このキュー状態情報通知閾値321は、例えば、入力スループット、出力スループット、CPUコスト等の少なくともいずれか1つの値が、全体の2割変化した場合(つまり、増加あるいは減少)した場合等の条件を設定する。
SIDテーブル322は、SIDごとに、そのSIDが付されたストリームデータに対し行うべきフィルタ処理の内容を示したテーブルである。このSIDテーブル322を以下の表2に例示する。
Figure 0004764300
表2に例示するSIDテーブル322は、SIDと、そのSIDのバージョンと、ストリームデータのスキーマ情報と、そのSIDおよびバージョンを持つストリームデータに対し適用すべきフィルタオペレーション(FOP)系列(適用すべきFOPの識別情報およびフィルタオペレーションの適用手順)とが示される。
例えば、表2に例示するSIDテーブル322において、SID「10」、SIDのバージョン「1.0」のストリームデータのスキーマ情報は「NAME char(10)、TEL char(10)、ADDRESS char(100)、AGE int」であり、このストリームデータに対して「FOP102,FOP103,FOP104」というフィルタ処理を、「FOP102→FOP103→FOP104」という順番で適用すべきであることを示す。なお、スキーマ情報における括弧内の値は、フィルタ処理部124におうてフィルタ処理を行うときのウィンドウサイズである。例えば、フィルタ処理部124が、データのうち「NAME」に関するフィルタ処理を行うときには、10個のデータ(レコード)が必要であることを示す。
このSIDテーブル322は、フィルタ処理手段10のフィルタ実行制御部123がストリームデータに対し実行すべきフィルタ処理の内容を判断する際に参照される。なお、このSIDテーブル322の情報は、入力部31経由で書き換え可能である。
ファイルデータ323は、フィルタ処理手段10のフィルタ処理部124の機能を実現するファイルデータである。このファイルデータは、例えば、ストリームデータ管理システム1で用いられる最新バージョンのファイルデータであり、前記したFOPを含むものである。このファイルデータ323は、フィルタ処理手段10からの要求に基づき、フィルタ送信部341により、この要求の送信元のフィルタ処理手段10へ送信される。
再起動情報324は、ストリームデータ管理システム1において再起動を許可するフィルタ処理手段10の数を示した情報である。例えば、ストリームデータ管理システム1全体において、再起動によりフィルタ処理を停止してもよいフィルタ処理手段10の数が「10」の場合、初期値として、この再起動情報324に「10」を設定しておく。この再起動情報324は、再起動判定処理部342(後記)により参照され、再起動情報更新部343(後記)により書き換えられる。
なお、この記憶部32に記憶される情報は、入力部31経由で入力される。
次に、処理部34を説明する。処理部34は、フィルタ送信部341と、再起動判定処理部342と、再起動情報更新部343とを含んで構成される。
フィルタ送信部(ファイルデータ送信部)341は、フィルタ処理手段10のフィルタ取得部127(図4参照)からファイルデータの取得要求を受信すると、これに応じて、出力部33経由で、ファイルデータ323を送信する。
再起動判定処理部342は、フィルタ処理手段10の再起動問い合わせ部128(図4参照)から、このフィルタ処理手段10の再起動を許可するか否かの問い合わせを受信すると、再起動情報324を参照して、このフィルタ処理手段10の再起動を許可するか否かを判断する。例えば、再起動判定処理部342は、このフィルタ処理手段10の再起動を許可するか否かの問い合わせを受信した場合において、再起動情報324における再起動を許可するフィルタ処理手段10の数が正であるとき、フィルタ処理手段10へ、このフィルタ処理手段10の再起動を許可する旨の応答を送信する。一方、再起動判定処理部342は、再起動情報324における再起動を許可するフィルタ処理装置の数が0以下であるとき、フィルタ処理手段10へ、このフィルタ処理手段10の再起動を許可しない旨の応答を送信する。
再起動情報更新部343は、再起動判定処理部342が、フィルタ処理手段10へ、このフィルタ処理手段10の再起動を許可する旨の応答を送信したとき、再起動情報324において、再起動を許可するフィルタ処理装置の数を1減らす。また、フィルタ処理手段10の再起動部129(図4参照)から、再起動完了通知を受信したとき、再起動を許可するフィルタ処理装置の数を1増やす。
このようにすることで、共有情報管理手段30は、ストリームデータ管理システム1において、再起動中のためフィルタ処理を停止しているフィルタ処理手段10の数を所定数以下に保つことができる。
なお、この共有情報管理手段30は、ファイルデータ323が最新のものに更新されたとき、そのファイルデータ323により提供されるFOPに関連するSIDを、各フィルタ処理手段10に公開するようにしてもよい。このようにすることで、各フィルタ処理手段10は、自身が備えるフィルタ処理機能にアップデートが必要なことをすぐに知ることができる。
<動作手順>
次に、ストリームデータ管理システム1の動作を説明する。まず、図6を用いて、ストリームデータがデータ蓄積手段20に蓄積されるまでの手順を説明する。図6は、ストリームデータが図1のデータ蓄積手段に蓄積されるまでの手順を示したフローチャートである。
まず、クライアント50は、キュー割当手段40へこのクライアント50からのストリームデータの蓄積先となるデータ蓄積手段20の指定依頼を送信する(S601)。これを受信したキュー割当手段40は、データ蓄積手段20の選択を行い、この選択したデータ蓄積手段20として指定する(S602)。なお、ここでのデータ蓄積手段20の選択は、例えば、ストリームデータ管理システム1におけるすべてのデータ蓄積手段20のうち、最もキューが短いデータ蓄積手段20を選択するようにする。このようにすることで、各データ蓄積手段20において偏りが少ない状態でキューが形成されることになる。
次に、クライアント50は、データ蓄積手段20の指定を受信すると、指定されたデータ蓄積手段20へデータ(ストリームデータ)を送信する(S603)。ここで送信するデータは、SIDを含むものである。
そして、データ蓄積手段20は、クライアント50からデータを受信すると、このデータを、記憶部24(図2参照)に蓄積する(S604)。このようにして、データ蓄積手段20にデータが蓄積される。
次に、図7を用いて、キュー状態テーブル141(図1参照)の更新手順を説明する。図7は、図1のキュー状態テーブルの更新手順を示したフローチャートである。
データ蓄積手段20は、クライアント50から送信されるデータを蓄積し(S701)、キュー状態監視部221(図2参照)は、このデータ蓄積手段20におけるキュー状態を監視する(S702)。キュー状態監視部221は、共有情報管理手段30のキュー状態情報通知閾値321に示される閾値以上に、キュー状態の変化があるか否か判断する(S703)。
ここで、キュー状態監視部221は、共有情報管理手段30のキュー状態情報通知閾値321に示される閾値以上に、キュー状態の変化があると判断したとき(S703のYes)、キュー状態情報送信部222は、このデータ蓄積手段20におけるキュー状態情報を各フィルタ処理手段10へ送信する(S704)。
フィルタ処理手段10の選択処理部121は、各データ蓄積手段20からキュー状態情報を受信すると、この情報をキュー状態テーブル141に記憶する。つまり、キュー状態テーブル141の更新を行う(S705)。
次に、図8および図9を用いて、フィルタ処理手段10のフィルタ処理手順を説明する。図8および図9は、図1のフィルタ処理手段のフィルタ処理手順を示したフローチャートである(適宜、図1および図4参照)。
まず、フィルタ処理手段10において処理すべきデータがないことを検知すると(S801のYes)、選択処理部121は、キュー状態テーブル141を参照して、次にデータを取得するデータ蓄積手段20を選択する(S802)。このときの選択手順の詳細については、図10を用いて後記する。そして、データ取得処理部122は、この選択したデータ蓄積手段20からデータを取得する(S803)。
次に、フィルタ判定部126(図4参照)は、このデータに付されたSIDの情報(SIDおよびそのバージョン)と、SIDテーブル322とを参照して、このストリームデータに対し必要なフィルタ処理機能を判断する(S804)。そして、このストリームデータに対し必要なフィルタ処理機能が自身のフィルタ処理手段10にあるか否かを判断する(S805)。ここで、必要なフィルタ処理機能が自身のフィルタ処理手段10にないとき(S805のNo)、フィルタ取得部127は、共有情報管理手段30から、必要なフィルタ処理機能を取得する(S806)。すなわち、フィルタ取得部127は、共有情報管理手段30から、ファイルデータ323を取得し、このファイルデータ323により、フィルタ処理部124にフィルタ処理機能を追加する。
一方、必要なフィルタ処理機能が自身のフィルタ処理手段10にあるとき(S805のYes)、図9のS901へ進み、再起動問い合わせ部128は共有情報管理手段30に対し、自身のフィルタ処理手段10の再起動を許可するか否かを問い合わせる(S901)。つまり、自身のフィルタ処理手段10の再起動を許可するか否かを問い合わせるメッセージを送信する。
そして、フィルタ処理手段10の再起動問い合わせ部128は、共有情報管理手段30からの再起動を許可するか否かの問い合わせの応答を待つ。ここで、共有情報管理手段30から自身のフィルタ処理手段10の再起動を許可する旨の応答を受信したとき(S902のYes)、再起動部129は、自身のフィルタ処理手段10を再起動する(S903)。そして、再起動部129は、再起動を完了すると、再起動完了の通知を共有情報管理手段30へ送信する(S904)。次に、フィルタ実行制御部123は、S806で取得したフィルタ処理機能により、フィルタ処理を実行する(S905)。すなわち、フィルタ実行制御部123は、SIDテーブル322に従い、このストリームデータに対するフィルタ処理の内容を判断し、このフィルタ処理を実行するための所定のFOPを記憶部14から読み出す。そして、フィルタ実行制御部123は、このFOPに基づきフィルタ処理部124に所定の順序でフィルタ処理を実行させ、フィルタ処理後のデータを所定の出力先60へ出力させる。そして、図8のS801へ戻る。
なお、図9のS902において、フィルタ処理手段10の再起動問い合わせ部128が、共有情報管理手段30から、自身のフィルタ処理手段10の再起動を許可しない通知を受信したとき、あるいは、自身のフィルタ処理手段10の再起動を許可する旨の応答を受信できなかったとき(S902のNo)、所定時間経過後(S906のYes)、S901へ戻る。そして、フィルタ処理手段10再起動問い合わせ部128は共有情報管理手段30に対し、自身のフィルタ処理手段10の再起動を許可するか否かを問い合わせる。このようにすることで、他のフィルタ処理手段10が再起動中のため、自身のフィルタ処理手段10が再起動できなかった場合でも、時間をずらして、再起動することができる。
次に、図10を用いて、選択処理部121が、次にデータを取得するデータ蓄積手段20を選択する手順(図8のS802)を詳細に説明する。図10は、図1の選択処理部が、次にデータを取得するデータ蓄積手段を選択する手順を示したフローチャートである(適宜図1参照)。
まず、フィルタ処理手段10において処理すべきデータがないことを検知すると、選択処理部121は、キュー状態テーブル141を参照して、すべてのデータ蓄積手段20における負荷(処理負荷)の和を算出する(S1001)。例えば、すべてのデータ蓄積手段20における入力スループットの値の総和を求める。
選択処理部121は、1〜負荷の和(S1001で算出した負荷の和)の値の間で、ランダム値rを生成する(S1002)。このときのランダム値rの生成は、公知の技術を用いてよい。
そして、選択処理部121は、S[1](1番目のデータ蓄積手段20における負荷)からS[j](j番目のデータ蓄積手段20における負荷)までの和≦r≦S[1](1番目のデータ蓄積手段20における負荷)からS[j+1](j+1番目のデータ蓄積手段20における負荷)までの和を満たすjを決定し、出力する(S1003)。つまり、選択処理部121は、次にデータを取得するデータ蓄積手段20を決定する。なお、ストリームデータ管理システム1における、データ蓄積手段20の数がNであるとき、jは、1≦j≦Nを満たす値である。
このようにすることで、各フィルタ処理手段10は、ストリームデータを取得するデータ蓄積手段20を選択するとき、より負荷の大きいデータ蓄積手段20を高い確率で選択することができる。
次に、図11を用いて、フィルタ処理手段10から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段30の動作手順を説明する。図11は、図1のフィルタ処理手段から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段の動作手順を示したフローチャートである(適宜、図5参照)。
まず、共有情報管理手段30の再起動判定処理部342(図5参照)は、フィルタ処理手段10から再起動を許可するか否かの問い合わせを受信すると(S1101のYes)、再起動情報324を参照する(S1102)。
そして、再起動判定処理部342は、この再起動情報324において再起動を許可するフィルタ処理手段10の数が正か否かを判断する(S1103)。
ここで、この再起動情報324において再起動を許可するフィルタ処理手段10の数が正であるとき(S1103のYes)、再起動判定処理部342はフィルタ処理手段10へ、このフィルタ処理手段10の再起動を許可する旨の応答を送信する(S1104)。
そして、再起動情報更新部343は、再起動情報324において、再起動を許可するフィルタ処理装置の数を1減らす(S1105)。
この後、共有情報管理手段30の再起動判定処理部342は、フィルタ処理手段10から再起動完了の通知を待ち、フィルタ処理手段10から再起動完了の通知を受信したとき(S1106のYes)、共有情報管理手段30の再起動情報更新部343は、再起動情報324において、再起動を許可するフィルタ処理装置の数を1増やす(S1107)。そして、S1101へ戻る。
一方、S1103において、再起動情報324の再起動を許可するフィルタ処理手段10の数が0以下であったとき(S1103のNo)、共有情報管理手段30の再起動判定処理部342はフィルタ処理手段10へ、このフィルタ処理手段10の再起動を許可しない旨の応答を送信する(S1108)。そして、S1101へ戻る。
このようにすることで、共有情報管理手段30は、ストリームデータ管理システム1において、再起動中のためフィルタ処理を停止しているフィルタ処理手段10の数を所定数以下にすることができる。
<実施の形態の例>
次に、前記したシステムの実施の形態の例を、具体例を用いて説明する。まず、ストリームデータ管理システム1が、映像監視を行う場合を例に説明する。
ここでは、監視対象の映像において、その映像に写っているオブジェクト(人物)が予め指定されている軌跡以外の軌跡を辿ったか否かを監視する場合を例に説明する。
クライアント50は、監視カメラ等からの映像を受信すると、この映像をフレームごとに分解する。そして、キュー割り当て手段40から指示されたデータ蓄積手段20へ、この分解されたフレームのデータ(ストリームデータ)を送信する。このデータにはSIDおよびそのSIDバージョンに関する情報が付されている。データを受信したデータ蓄積手段20は、このデータをキュー241(図2参照)として積む。
各フィルタ処理手段10は、データ蓄積手段20におけるキュー状態から、データを取得するデータ蓄積手段20を決定し、この決定したデータ蓄積手段20からデータを取得する。そして、取得したデータのSIDおよびそのバージョンと、共有情報管理手段30のSIDテーブル322(図4参照)とを参照して、このデータに対し実行すべきフィルタ処理を判断する。例えば、フィルタ処理手段10は、以下のFOPを順に実行すると判断する。
(FOP11)画像フォーマットをJPEG(Joint Photographic Experts Group)から、Bitmapフォーマットに変換し、
(FOP12)画像サイズを特徴抽出ルーチンに合うように正規化し、
(FOP13)カラー情報から白黒輝度画像情報を抽出し、
(FOP14)その白黒輝度画像情報と、事前に登録してある背景画像との差分を検出し、
(FOP15)その差分について領域のラベリングを行い、
(FOP16)指定画素数以下の領域はノイズとして除去し、
(FOP17)各領域について、重心位置・面積・形状等を検出し、
(FOP18)その結果をXML(eXtensible Markup Language)タグ化し、
(FOP19)XMLデータとして、出力先60Aへ送る
このXMLデータを受信した出力先60Aは、このXMLデータの情報源ごとにデータをソートし、時刻順に並んだ系列を得て、映像内のオブジェクトの軌跡を得る。そして、その軌跡が、予め指定されている軌跡に類似する(あるいは類似しない)場合、監視者に対し警報を発する。
ここで、ストリームデータ管理システム1において、映像に写る人物が複数である場合、その人物間の関係(親子、男女、その他)を抽出するとき、各フィルタ処理手段10に以下のFOPの追加が必要になる。
(FOP1A1)各ラベルについて、そのオブジェクト間の関係を抽出し、
(FOP1A2)その結果をXMLタグ化する
ここで、各フィルタ処理手段10に、前記したFOPを追加する場合を説明する。
まず、システムの管理者等が、予め、前記したFOP1A1およびFOP1A2を実現するためのファイルデータ323(図4参照)を共有情報管理手段30に登録しておく。そして、フィルタ処理手段10において処理中のデータがなくなったことを契機として、フィルタ処理手段10は、共有情報管理手段30に新たなファイルデータ323が存在することを確認すると、この新たなファイルデータ323を共有情報管理手段30から取得する。そして、フィルタ処理手段10は、共有情報管理手段30に対し、自身が再起動してもよいか否かを問い合わせ、再起動してもよい旨の応答を受信したとき、再起動する。そして、フィルタ処理手段10は、ファイルデータ323によりFOP1A1およびFOP1A2の機能を追加する。なお、このフィルタ処理手段10が再起動中の間、フィルタ処理はいったんストップするが、他のフィルタ処理手段10において、フィルタ処理は継続される。そして、再起動を完了したフィルタ処理手段10は、この追加されたFOP1A1およびFOP1A2の機能により、データに対しフィルタ処理を実行する。
このようにすることで、フィルタ処理手段10に新たなフィルタ処理を追加する場合であっても、システム全体の処理能力が著しく低下することがなくなる。
次に、ある特定の目的に利用される映像データに対し、当初の目的以外の利用が必要になったとき、各フィルタ処理手段10に新たなFOPを追加することで対応できることを具体例とともに示す。
例えば、データ蓄積手段20は、A駅に設置された構内の監視カメラからの映像データに対して、特徴情報を抽出して蓄積していたものとする。また、データ蓄積手段20は、犯罪防止のためA駅の駅前商店街の監視カメラからの映像データを蓄積していたものとする。
これらに対して、各フィルタ処理手段10は従来のフィルタ処理を維持しながら、それぞれのデータから、どの時間帯に、どのような人々が、どのように流れるかを抽出し、駅前の不動産会社の空き店舗向けのマーケティング用のDBへ送信したい場合、前記した手順と同様の手順により、以下のFOPを追加すればよい。
(FOP1B1)それぞれのデータから、どの時間帯に、どのような人々が、どのように流れるかを抽出し、
(FOP1B2)駅前の不動産会社の空き店舗向けのマーケティング用のDBへ送信する
次に、ストリームデータ管理システム1において、各家庭におけるテレビ番組の視聴率を取得する場合について説明する。
各家庭の視聴率センサ(クライアント50)は、所定期間ごと、またはテレビのチャンネルが変わるたびに、この家庭のIDと、視聴した日時と、チャンネル情報(視聴率の情報)とを含むデータを、データ蓄積手段20へ送信する。各フィルタ処理手段10は、このようなデータを、各データ蓄積手段20から取得して、以下のフィルタ処理を行う。
(FOP21)そのまま視聴率調査会社のDBへ転送する
このとき、マーケティング会社が、視聴率を活用したマーケティングを行うため、視聴率情報を提供することに合意した家庭から、その家庭における視聴率の情報の提供を受けることになったとする。このとき、各フィルタ処理手段10は、マーケティング会社へ視聴率の情報の提供に合意した家庭IDを示した合意DB(データベース)を参照して、マーケティング会社へ視聴率の情報の提供に合意した家庭の視聴率の情報を、このマーケティング会社のDBへ送信する。なお、この合意DBは、例えば、共有情報管理手段30に設置しておく。
この場合、FOPは以下のようになる。
(FOP21´)視聴率調査会社のDBへ転送するとともに、FOP22の処理を行う
(FOP22)合意DBを参照して、受信したデータに付された家庭IDが、合意DBに登録されたものであれば、そのデータをマーケティング会社のDBへ転送する
各フィルタ処理手段10は、このFOP21´およびFOP22を実現するファイルデータ323を共有情報管理手段30から取得して、「FOP21」を、「FOP21´,FOP22」に置き換える。そして、共有情報管理手段30におけるSIDテーブル322において、視聴率の情報を視聴率調査会社のDBへ転送するというサービスのSIDに対応するFOP系列(表2参照)を、「FOP21」から、「FOP21´,FOP22」に変更する。
このようにすることで、各フィルタ処理手段10は、従来の視聴率の情報の収集サービスを妨げることなく、フィルタ処理の追加や変更を行うことができる。
なお、各フィルタ処理手段10におけるFOPの置き換えは、例えば、処理しているデータがなくなったフィルタ処理手段10から順次行うようにする。また、FOP自体に、処理ロジックを変更する仕組みや、処理ロジックの変更日時を指定しておくようにしてもよい。また、フィルタ処理手段10は、このような処理ロジックの変更を、所定のDBを参照して行うようにしてもよい。
なお、ストリームデータ(データ)によって、フィルタ処理手段10での処理量が大きく変動する場合、例えば、被写体が多数ある入力される本実施の形態のように、複数のフィルタ処理手段10同士で自律的にフィルタ処理を実行する方法の方が、1つのストリームデータに対し、特定のフィルタ処理手段により処理を行う場合に比べて、システム全体として処理の遅延は発生しにくくなる。
次に、ストリームデータ管理システム1が、Webサーバ、アプリケーションサーバ、DBサーバ、Webクライアント、管理者クライアント等のネットワーク機器から、この機器における実行ログおよび通信ログを収集し、顧客情報DBへのアクセス異常の監視を行う場合を説明する。
ここで、
(1)顧客情報DBへのログインパスワードの認証エラーが連続3回以上あった場合
(2)顧客情報DBに対して、100件以上の検索が行われた場合
(3)認証用のIDやパスワード文字列に対して、シングルオート文字等を含めた攻撃を検出した場合
(4)顧客情報DBの管理者権限でログインして、参照した場合
(5)顧客情報DBを出力する処理を行った場合
(6)夜間や休日に、顧客情報DBに管理者権限でアクセスした場合
に顧客情報DBへのアクセス異常とするとき、フィルタ処理手段10はフィルタ処理部124(図1参照)により以下の処理を実行する。
・データ中の不要な文字を削除する
・データの文字コードを統一する
・データの表現形式を整形し、正規化する
・特定のサーバ、ユーザ、サービスに関するログを選択する
・特定のプロトコルによるデータを抜き出す
・WebサーバとDBサーバ等、複数の情報源のデータを統合する
・安全と判断できるアクセスパターンに合致しないアクセスを検出する
また、フィルタ処理手段10は、フィルタ処理部124により、前記した処理に加え、
・ログイン等の運用者操作に関する異常データを検出した場合には、データを出力先60Bへ出力する
・認証データに特殊な文字が混在する等のエンドユーザ操作に関する異常データを検出した場合には、データを出力先60Cへ出力する
という処理を追加し、データの出力先の制御を行うようにしてもよい。
さらに、フィルタ処理手段10は、以下の処理を追加してもよい。
・顧客情報DBへログインした際のログインアカウントは、在籍社員DBに含まれるIDであることを確認する
・在籍社員以外のIDにより、顧客情報DBへログインが発生した場合には、メールで情報管理者に警報を送信する
このような場合も、前記した手順と同様の手順により、前記した処理を実現するFOPの追加を行うので、既存のアクセス異常の監視を停止させないようにすることができる。
なお、ストリームデータ管理システム1がアクセス異常の監視を行う場合、入力されるストリームデータ(ログデータ)の改ざん防止のため、クライアント50あるいはデータ蓄積手段20において、署名を行うようにしてもよい。
なお、フィルタ処理手段10において、過去にフィルタ処理を行ったストリームデータの平均値を用いてフィルタ処理を実行するようにしてもよい。これはWindowQueryとよばれるもので、例えば、フィルタ処理手段10は、出力先60のDB61に蓄積されたデータにおけるタイムスタンプの値等を用いて、このDB61のデータの中から、所定期間または所定数のデータを読み出し、このデータの平均値を計算してフィルタ処理を実行するようにしてもよい。
なお、前記した実施の形態において、データ蓄積手段20のキュー状態監視部221は、共有情報管理手段30のキュー状態情報通知閾値321に示される閾値以上に、キュー状態が変化したか否かを監視することとしたが、例えば、データ蓄積手段20の記憶部24に所定量を超えたデータが蓄積されているか否かを監視するようにしてもよい。この場合、キュー状態情報通知閾値321として、例えば、記憶部24におけるバッファの80%を超えた場合の値等を設定しておき、キュー状態監視部221は、記憶部24におけるバッファの80%を超える量のデータが蓄積されているか否かを監視する。このようにすることで、フィルタ処理手段10は、データ蓄積手段20における輻輳発生を未然に防止できるので、ストリームデータ管理システム1におけるフィルタ処理の低下を防止することができる。
本実施の形態に係るフィルタ処理手段10、データ蓄積手段20、共有情報管理手段30は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体に記憶して提供することが可能である。また、そのプログラムを、インターネット等のネットワークを通して提供することも可能である。
本実施の形態のストリームデータ管理システムを含むシステムの構成例を示した図である。 図1のデータ蓄積手段の詳細を示した機能ブロック図である。 図1の選択処理部によるデータ蓄積手段の選択処理を説明する図である。 図1のフィルタ実行制御部の詳細を示した機能ブロック図である。 図1の共有情報管理手段の機能ブロック図である。 ストリームデータが図1のデータ蓄積手段に蓄積されるまでの手順を示したフローチャートである。 図7は、図1のキュー状態テーブルの更新手順を示したフローチャートである。 図1のフィルタ処理手段のフィルタ処理手順を示したフローチャートである。 図1のフィルタ処理手段のフィルタ処理手順を示したフローチャートである。 図1の選択処理部が、次にデータを取得するデータ蓄積手段を選択する手順を示したフローチャートである。 図1のフィルタ処理手段から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段の動作手順を示したフローチャートである。
符号の説明
1 ストリームデータ管理システム
10 フィルタ処理手段
11,21,31 入力部
12,22,32 処理部
13,23,33 出力部
14,24,34 記憶部
20(20A〜20N) データ蓄積手段
30 共有情報管理手段
40 キュー割当手段
50 クライアント
60(60A〜60N) 出力先
61 DB(データベース)
62 蓄積処理部
63 検索処理部
70 検索クライアント
121 選択処理部
122 データ取得処理部
123 フィルタ実行制御部
124 フィルタ処理部
126 フィルタ判定部
127 フィルタ取得部
128 再起動問い合わせ部
129 再起動部
130 フィルタ処理適用部
141 キュー状態テーブル
221 キュー状態監視部
222 キュー状態情報送信部
241 キュー
321 キュー状態情報通知閾値
322 SID(サービスID)テーブル
323 ファイルデータ
324 再起動情報
341 フィルタ送信部
342 再起動判定処理部
343 再起動情報更新部

Claims (6)

  1. ストリームデータを蓄積する複数のデータ蓄積装置、およびストリームデータのフィルタ処理を行う複数のフィルタ処理装置から構成されるストリームデータ管理システムであって、
    前記複数のデータ蓄積装置のそれぞれは、
    当該自身のデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値が、所定の閾値以上に変化したとき、前記複数のフィルタ処理装置の各々に対して、当該自身のデータ蓄積装置における前記少なくともいずれか1つの値を含むキュー状態情報を送信する手段を備え、
    前記複数のフィルタ処理装置のそれぞれは、
    各種データの入力を受け付ける入力部と、
    前記複数のデータ蓄積装置それぞれから、前記入力部経由で、このデータ蓄積装置キュー状態情報を受信し、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、
    前記選択処理部により選択されたデータ蓄積装置から、前記入力部経由で、このデータ蓄積装置に蓄積されたストリームデータを取得するデータ取得処理部と、
    サービスIDに対応してフィルタ処理の内容を示したサービスIDテーブル、およびフィルタ処理の内容を記述したフィルタオペレーションを記憶する記憶部と、
    前記ストリームデータに対し前記フィルタオペレーションに基づくフィルタ処理を実行するフィルタ処理部と、
    前記取得したストリームデータに付されたサービスID、および前記サービスIDテーブルを参照し、当該ストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを前記記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理を前記フィルタ処理部に実行させるフィルタ実行制御部と、
    前記フィルタ処理後のストリームデータを出力する出力部と、を備え、
    前記選択処理部は、
    前記受信したキュー状態情報に示される前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値に基づき、前記データ蓄積装置のうち、前記値が高いデータ蓄積装置ほど高確率で、前記ストリームデータの取得元となる前記データ蓄積装置を選択することを特徴とするストリームデータ管理システム
  2. 前記フィルタオペレーションは、前記フィルタ処理後のストリームデータの出力先の情報を含み、
    前記フィルタ処理部は、前記フィルタオペレーションに基づき、前記フィルタ処理後のストリームデータの出力先を決定する請求項1に記載のストリームデータ管理システム
  3. 前記フィルタ実行制御部は、
    前記取得したストリームデータに必要なフィルタ処理機能が、前記フィルタ処理部にあるか否かを判断するフィルタ判定部と、
    前記フィルタ取得判定部において、前記取得したストリームデータに対し必要なフィルタ処理機能が、前記フィルタ処理部にないと判断されたとき、(1)前記フィルタ処理に必要なファイルと、(2)前記ストリームデータ管理システムにおいて再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する共有情報管理装置から、前記フィルタ処理に必要なファイルを取得し、前記フィルタ処理部に追加するフィルタ取得部と、
    前記共有情報管理装置に対し、自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる再起動問い合わせ部と、
    前記再起動問い合わせ部において、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信したとき、前記自身のフィルタ処理装置を再起動し、前記再起動を完了したとき、前記共有情報管理装置へ、前記自身のフィルタ処理装置の再起動の完了を通知する再起動部とを備えることを特徴とする請求項1または2に記載のストリームデータ管理システム
  4. 前記再起動問い合わせ部は、
    所定時間経過しても、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信しなかったとき、再度、前記自身のフィルタ処理装置の再起動を許可するか否かを問い合わせることを特徴とする請求項に記載のストリームデータ管理システム
  5. ストリームデータを蓄積する複数のデータ蓄積装置それぞれが、
    当該自身のデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値が、所定の閾値以上に変化したとき、前記複数のフィルタ処理装置の各々に対して、当該自身のデータ蓄積装置における前記少なくともいずれか1つの値を含むキュー状態情報を送信するステップを実行し、
    前記ストリームデータのフィルタ処理を行う複数のフィルタ処理装置のそれぞれが、
    前記複数のデータ蓄積装置それぞれから、前記キュー状態情報を受信するステップと、
    前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択するステップと、
    前記選択されたデータ蓄積装置から、このデータ蓄積装置に蓄積されたストリームデータを取得するステップと、
    前記取得したストリームデータに付されたサービスID、およびサービスIDに対応してフィルタ処理の内容を示したサービスIDテーブルを参照し、当該ストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理をフィルタ処理部に実行させるステップと、
    前記フィルタ処理後のストリームデータを出力するステップと、
    を実行し
    前記データ蓄積装置を選択するステップにおいて、
    前記受信したキュー状態情報に示される前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびCPUコストのうち少なくともいずれか1つの値に基づき、前記データ蓄積装置のうち、前記値が高いデータ蓄積装置ほど高確率で、前記ストリームデータの取得元となる前記データ蓄積装置を選択することを特徴とするストリームデータ管理方法。
  6. 請求項5に記載のストリームデータ管理方法をコンピュータであるストリームデータ管理システムに実行させるためのストリームデータ管理プログラム。
JP2006260824A 2006-09-26 2006-09-26 ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム Active JP4764300B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006260824A JP4764300B2 (ja) 2006-09-26 2006-09-26 ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006260824A JP4764300B2 (ja) 2006-09-26 2006-09-26 ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム

Publications (2)

Publication Number Publication Date
JP2008083808A JP2008083808A (ja) 2008-04-10
JP4764300B2 true JP4764300B2 (ja) 2011-08-31

Family

ID=39354661

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006260824A Active JP4764300B2 (ja) 2006-09-26 2006-09-26 ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム

Country Status (1)

Country Link
JP (1) JP4764300B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4733721B2 (ja) * 2008-04-10 2011-07-27 日本電信電話株式会社 ストリームデータシステム、ストリームデータ処理方法およびストリームデータ処理プログラム
JP4891979B2 (ja) * 2008-12-11 2012-03-07 日本電信電話株式会社 データストリーム管理システム、レコード処理方法、プログラム、及び記録媒体
JP4727715B2 (ja) * 2008-12-12 2011-07-20 株式会社日立製作所 ストリームデータ処理方法、及びシステム
JP4992945B2 (ja) 2009-09-10 2012-08-08 株式会社日立製作所 ストリームデータ生成方法、ストリームデータ生成装置及びストリームデータ生成プログラム
US9558247B2 (en) 2010-08-31 2017-01-31 Samsung Electronics Co., Ltd. Storage device and stream filtering method thereof
US20120054420A1 (en) 2010-08-31 2012-03-01 Jeonguk Kang Storage device and stream filtering method thereof
JP6184133B2 (ja) * 2013-03-07 2017-08-23 キヤノン株式会社 撮像装置
KR101822401B1 (ko) * 2016-05-30 2018-01-26 주식회사 인프라웨어 공동 편집 문서를 공유하는 방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04219859A (ja) * 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ
US5504894A (en) * 1992-04-30 1996-04-02 International Business Machines Corporation Workload manager for achieving transaction class response time goals in a multiprocessing system

Also Published As

Publication number Publication date
JP2008083808A (ja) 2008-04-10

Similar Documents

Publication Publication Date Title
JP4764300B2 (ja) ストリームデータ管理システム、ストリームデータ管理方法およびそのプログラム
US10348809B2 (en) Naming of distributed business transactions
JP2020507162A5 (ja)
JP4661722B2 (ja) 運用管理システム、監視装置、監視設定情報生成方法及びプログラム
CN112380473B (zh) 数据采集与同步方法、装置、设备及存储介质
US8775484B2 (en) Data management apparatus and method
US10009220B2 (en) In-vehicle information system and information processing method thereof
CN114172966A (zh) 单元化架构下的服务调用方法、服务处理方法及装置
JP4871213B2 (ja) ストリームデータ処理方法、ストリームデータ処理プログラムおよびストリームデータ処理システム
JP2012064155A (ja) 管理装置およびその制御方法、情報処理システム
US8326977B2 (en) Recording medium storing system analyzing program, system analyzing apparatus, and system analyzing method
JP2014038454A (ja) ユーザデータ保存先判定サーバ、通信装置及びユーザデータ保存先判定方法
JP2018170715A (ja) クラウド管理装置、クラウド管理方法、及びプログラム
JP2004234045A (ja) ワクチンプログラム送信方法、コンピュータネットワークシステム及びコンピュータプログラム
JP2005157727A (ja) ログ処理方法及びその処理プログラム並びに実施システム
US10511687B2 (en) Systems and methods for mobile device predictive response capabilities
US11356406B2 (en) Linking users to viewed content in dynamic internet protocol address environments
JP6803385B2 (ja) データ伝送方法及びデータ伝送装置
JP5217853B2 (ja) アドレス対応付け方法、アドレス対応付けプログラム及び装置
JP5354208B2 (ja) デフォルト値設定システム及びデフォルト値設定方法
JP2007080053A (ja) XML/Webサービス情報管理システム
JP2006178526A (ja) リソース提供システム、仲介エージェント、リソース提供方法、およびコンピュータプログラム
JP5280077B2 (ja) 情報提供装置、情報提供方法および情報提供システム
KR20020090017A (ko) 네트워크 시스템의 자원관리 장치 및 방법
JP2007066319A (ja) フロントエンド処理機能を有する情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080730

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100906

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

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

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4764300

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350