(57)【要約】【課題】情報源から様々なストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにする。【解決手段】ストリームデータ管理システム１に用いられるフィルタ処理手段１０（１０Ａ〜１０Ｎ）は、ストリームデータを蓄積するデータ蓄積手段２０それぞれから、このデータ蓄積手段２０におけるキュー状態を示したキュー状態情報を受信する。そして、受信したキュー状態情報に基づき、ストリームデータの取得元となるデータ蓄積手段２０を選択する。また、選択されたデータ蓄積手段２０から、ストリームデータを取得し、ストリームデータに対し所定のフィルタ処理を実行する。なお、フィルタ処理手段１０は共有情報管理手段３０からファイルデータをダウンロードしてフィルタ処理機能を追加するとき、共有情報管理手段３０に対し再起動してもよいか否かを確認する。【選択図】図１
2008083808.tif 000002
【特許請求の範囲】
【請求項１】
複数のフィルタ処理装置によりストリームデータのフィルタ処理を行うストリームデータ管理システムに用いられるフィルタ処理装置であって、
各種データの入力を受け付ける入力部と、
複数の情報源より送信されたストリームデータを蓄積するデータ蓄積装置それぞれから、前記入力部経由で、このデータ蓄積装置におけるキュー状態を示したキュー状態情報を受信し、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、
前記選択処理部により選択されたデータ蓄積装置から、前記入力部経由で、このデータ蓄積装置に蓄積されたストリームデータを取得するデータ取得処理部と、
前記フィルタ処理装置により実行されるフィルタ処理の内容を記述したフィルタオペレーションを記憶する記憶部と、
前記ストリームデータに対し前記フィルタオペレーションに基づくフィルタ処理を実行するフィルタ処理部と、
前記ストリームデータに付されたサービスＩＤごとに、このストリームデータに対し実行すべきフィルタ処理を示したサービスＩＤテーブルと、前記取得したストリームデータに付されたサービスＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを前記記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理を前記フィルタ処理部に実行させるフィルタ実行制御部と、
前記フィルタ処理後のストリームデータを出力する出力部と、
を備えることを特徴とするフィルタ処理装置。
【請求項２】
前記フィルタオペレーションは、前記フィルタ処理後のストリームデータの出力先の情報を含み、
前記フィルタ処理部は、前記フィルタオペレーションに基づき、前記フィルタ処理後のストリームデータの出力先を決定する請求項１に記載のフィルタ処理装置。
【請求項３】
前記データ蓄積装置それぞれにおけるキュー状態情報は、このデータ蓄積装置における入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値を含み、
前記選択処理部は、
前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値に基づき、前記いずれかの値が大きいものから優先的に、前記ストリームデータの取得元となる前記データ蓄積装置を選択することを特徴とする請求項１または請求項２に記載のフィルタ処理装置。
【請求項４】
前記フィルタ実行制御部は、
前記取得したストリームデータに必要なフィルタ処理機能が、前記フィルタ処理部にあるか否かを判断するフィルタ判定部と、
前記フィルタ取得判定部において、前記取得したストリームデータに対し必要なフィルタ処理機能が、前記フィルタ処理部にないと判断されたとき、（１）前記フィルタ処理に必要なファイルと、（２）前記ストリームデータ管理システムにおいて再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する共有情報管理装置から、前記フィルタ処理に必要なファイルを取得し、前記フィルタ処理部に追加するフィルタ取得部と、
前記共有情報管理装置に対し、自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる再起動問い合わせ部と、
前記再起動問い合わせ部において、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信したとき、前記自身のフィルタ処理装置を再起動し、前記再起動を完了したとき、前記共有情報管理装置へ、前記自身のフィルタ処理装置の再起動の完了を通知する再起動部とを備えることを特徴とする請求項１ないし請求項３のいずれか１項に記載のフィルタ処理装置。
【請求項５】
前記再起動問い合わせ部は、
所定時間経過しても、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信しなかったとき、再度、前記自身のフィルタ処理装置の再起動を許可するか否かを問い合わせることを特徴とする請求項４に記載のフィルタ処理装置。
【請求項６】
請求項１ないし請求項５のいずれか１項に記載のフィルタ処理装置へ、前記ストリームデータを送信するデータ蓄積装置であって、
このデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値が、所定の閾値以上に変化したとき、前記フィルタ処理装置へ、前記データ蓄積装置におけるキュー状態情報を送信することを特徴とするデータ蓄積装置。
【請求項７】
請求項４または請求項５に記載のフィルタ処理装置におけるフィルタ処理に必要なファイルと、再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する記憶部を備える共有情報管理装置であって、
前記フィルタ処理装置からの要求に応じて、前記フィルタ処理に必要なファイルデータを送信するファイルデータ送信部と、
前記フィルタ処理装置から、再起動を許可するか否かの問い合わせを受信した場合、前記再起動情報における再起動を許可するフィルタ処理装置の数が正であるか否かを判断し、前記再起動を許可するフィルタ処理装置の数が正であると判断したとき、前記フィルタ処理装置へ、前記フィルタ処理装置の再起動を許可する旨の応答を送信する再起動判定処理部と、
前記フィルタ処理装置へ、前記再起動を許可する旨の応答を送信したとき、前記再起動情報における再起動を許可するフィルタ処理装置の数を減算し、前記フィルタ処理装置から、このフィルタ処理装置の再起動を完了した旨の通知を受信したとき、前記再起動情報における再起動を許可するフィルタ処理装置の数を加算する再起動情報更新部と、
を備えることを特徴とする共有情報管理装置。
【請求項８】
複数のフィルタ処理装置によりストリームデータのフィルタ処理を行うストリームデータ管理システムに用いられるフィルタ処理装置それぞれが、
前記ストリームデータを蓄積する１以上のデータ蓄積装置それぞれから、このデータ蓄積装置におけるキュー状態を示したキュー状態情報を受信するステップと、
前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択するステップと、
前記選択されたデータ蓄積装置から、このデータ蓄積装置に蓄積されたストリームデータを取得するステップと、
前記ストリームデータに付されたサービスＩＤごとに、このストリームデータに対し実行すべきフィルタ処理を示したサービスＩＤテーブルと、前記取得したストリームデータに付されたサービスＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理をフィルタ処理部に実行させるステップと、
前記フィルタ処理後のストリームデータを出力するステップと、
を実行することを特徴とするフィルタ処理方法。
【請求項９】
前記データ蓄積装置それぞれにおけるキュー状態情報は、このデータ蓄積装置における入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値を含み、
前記フィルタ処理装置は、
前記ストリームデータを取得元となる前記データ蓄積装置を選択するとき、前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値に基づき、前記いずれかの値が大きいものから優先的に、前記ストリームデータを取得元となる前記データ蓄積装置を選択することを特徴とする請求項８に記載のフィルタ処理方法。
【請求項１０】
請求項８または請求項９に記載のフィルタ処理方法をコンピュータに実行させることを特徴とするフィルタ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理技術に関する。
【背景技術】
【０００２】
従来、各種センサやＩＣタグ、携帯電話等により様々なデータを収集し、この収集したデータにフィルタ処理を行い、所定の利用先へ流通させるストリームデータ処理技術がある。このようなストリームデータ処理技術として、telegraphCQ（非特許文献１参照）や、borealis（非特許文献２参照）が提案されている。
【非特許文献１】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は、複数のサーバがストリームデータ処理を実行するものであるが、各サーバの最適配置が決定した後に、ストリームデータ処理のマイグレーション処理（負荷の大きいサーバから、負荷の小さいサーバへオペレーションを移行する処理）を行う必要がある。しかし、各サーバにおいてこのようなマイグレーション処理を実行すると、マイグレーションの負荷が大きくなり、特に、各種センサやＩＣタグ等、様々な情報源からデータ入力を受け付けたり、また、その情報源からのデータ入力量の変化が激しかったりする場合、システム全体の処理能力が下がる可能性がある。
【０００５】
そこで、本発明は前記した問題を解決し、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにするフィルタ処理装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記した課題を解決するため、請求項１に記載の発明は、複数のフィルタ処理装置によりストリームデータのフィルタ処理を行うストリームデータ管理システムに用いられるフィルタ処理装置であって、各種データの入力を受け付ける入力部と、複数の情報源より送信されたストリームデータを蓄積するデータ蓄積装置それぞれから、前記入力部経由で、このデータ蓄積装置におけるキュー状態を示したキュー状態情報を受信し、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、前記選択処理部により選択されたデータ蓄積装置から、前記入力部経由で、このデータ蓄積装置に蓄積されたストリームデータを取得するデータ取得処理部と、前記フィルタ処理装置により実行されるフィルタ処理の内容を記述したフィルタオペレーションを記憶する記憶部と、前記ストリームデータに対し前記フィルタオペレーションに基づくフィルタ処理を実行するフィルタ処理部と、前記ストリームデータに付されたサービスＩＤごとに、このストリームデータに対し実行すべきフィルタ処理を示したサービスＩＤテーブルと、前記取得したストリームデータに付されたサービスＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを前記記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理を前記フィルタ処理部に実行させるフィルタ実行制御部と、前記フィルタ処理後のストリームデータを出力する出力部とを備える構成とした。
【０００７】
このような構成によれば、ストリームデータ管理システムにおけるフィルタ処理装置はそれぞれ、複数のデータ蓄積装置からストリームデータを取得する。このとき、フィルタ処理装置それぞれが、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理負荷のバランスをとることができる。つまり、ストリームデータ管理システムにおいて、特定のフィルタ処理装置に処理負荷が集中することがなくなる。これにより、ストリームデータ管理システムが、異なる流量特性を持つストリームデータを受信する場合において、特定のフィルタ処理装置がボトルネックとなって、システム全体の処理能力が低下することがなくなる。
【０００８】
請求項２に記載の発明は、請求項１に記載のフィルタ処理装置において、前記フィルタオペレーションは、前記フィルタ処理後のストリームデータの出力先の情報を含み、前記フィルタ処理部は、前記フィルタオペレーションに基づき、前記フィルタ処理後のストリームデータの出力先を決定する構成とした。
【０００９】
このような構成によれば、フィルタ処理装置は、フィルタ処理後のストリームデータを所定の出力先に出力することができる。例えば、ストリームデータが、各家庭のテレビ番組の視聴データであるとき、フィルタ処理装置は、このストリームデータにフィルタ処理を行った後、視聴率調査を行う会社のサーバへ出力することができる。つまり、フィルタ処理後のストリームデータの出力先の制御を行うことができる。なお、このように、フィルタオペレーションが、フィルタ処理後のストリームデータの出力先の情報を含むことで、フィルタ処理装置において、フィルタ処理機能が追加されたとき、本システムの管理者等が、出力先を逐次手動で追加する必要がなくなり、大変便利である。
【００１０】
請求項３に記載の発明は、請求項１または請求項２に記載のフィルタ処理装置において、前記データ蓄積装置それぞれにおけるキュー状態情報は、このデータ蓄積装置における入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値を含み、前記選択処理部は、前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値に基づき、前記いずれかの値が大きいものから優先的に、前記ストリームデータの取得元となる前記データ蓄積装置を選択する構成とした。
【００１１】
このような構成によれば、各フィルタ処理装置の選択処理部は、データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵ（Central Processing Unit）コストに基づき、ストリームデータを取得するデータ蓄積装置を選択するので、より混雑しているデータ蓄積装置から優先的にストリームデータを取得することができる。
【００１２】
請求項４に記載の発明は、請求項１ないし請求項３のいずれか１項に記載のフィルタ処理装置において、前記フィルタ実行制御部は、前記取得したストリームデータに必要なフィルタ処理機能が、前記フィルタ処理部にあるか否かを判断するフィルタ判定部と、前記フィルタ取得判定部において、前記取得したストリームデータに対し必要なフィルタ処理機能が、前記フィルタ処理部にないと判断されたとき、（１）前記フィルタ処理に必要なファイルと、（２）前記ストリームデータ管理システムにおいて再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する共有情報管理装置から、前記フィルタ処理に必要なファイルを取得し、前記フィルタ処理部に追加するフィルタ取得部と、前記共有情報管理装置に対し、自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる再起動問い合わせ部と、前記再起動問い合わせ部において、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信したとき、前記自身のフィルタ処理装置を再起動し、前記再起動を完了したとき、前記共有情報管理装置へ、前記自身のフィルタ処理装置の再起動の完了を通知する再起動部とを備える構成とした。
【００１３】
このような構成によれば、各フィルタ処理装置は、共有情報管理装置から、自身に不足しているフィルタ処理に必要なファイルを取得し、フィルタ処理部に追加する。従って、各フィルタ処理装置は、ストリームデータの種類が変化した場合でも、フィルタ処理を実行することができる。なお、各フィルタ処理装置がフィルタ処理機能を追加する場合、フィルタ処理装置の再起動が必要となるが、各フィルタ処理装置は、共有情報管理装置から、再起動を許可する旨の通知を受信したときに再起動を実行する。これにより、再起動中のためフィルタ処理が停止してしまうフィルタ処理装置が、所定数を超え、システム全体の処理能力が著しく低下するのを防止できる。
【００１４】
請求項５に記載の発明は、請求項４に記載のフィルタ処理装置において、前記再起動問い合わせ部は、所定時間経過しても、前記共有情報管理装置から自身のフィルタ処理装置の再起動を許可する旨の応答を受信しなかったとき、再度、前記自身のフィルタ処理装置の再起動を許可するか否かを問い合わせる構成とした。
【００１５】
このような構成によれば、システム全体で、所定数以上のフィルタ処理装置が再起動中のため、自身のフィルタ処理装置が再起動できなかった場合でも、時間をずらして、自身のフィルタ処理装置を再起動させることができる。
【００１６】
請求項６に記載の発明は、請求項１ないし請求項５のいずれか１項に記載のフィルタ処理装置へ、前記ストリームデータを送信するデータ蓄積装置であって、このデータ蓄積装置における単位時間あたりの入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値が、所定の閾値以上に変化したとき、前記フィルタ処理装置へ、前記データ蓄積装置におけるキュー状態情報を送信する構成とした。
【００１７】
このような構成によれば、フィルタ処理装置は、データ蓄積装置のキュー状態（入力スループット、出力スループットおよびＣＰＵコスト）の変化があったとき、この変化をいち早く取り込み、この変化後のキュー状態情報をもとにストリームデータの取得元となるデータ蓄積装置を決定することができる。
【００１８】
請求項７に記載の発明は、請求項４または請求項５に記載のフィルタ処理装置におけるフィルタ処理に必要なファイルと、再起動を許可する前記フィルタ処理装置の数を示した再起動情報とを記憶する記憶部を備える共有情報管理装置であって、前記フィルタ処理装置からの要求に応じて、前記フィルタ処理に必要なファイルデータを送信するファイルデータ送信部と、前記フィルタ処理装置から、再起動を許可するか否かの問い合わせを受信した場合、前記再起動情報における再起動を許可するフィルタ処理装置の数が正であるか否かを判断し、前記再起動を許可するフィルタ処理装置の数が正であると判断したとき、前記フィルタ処理装置へ、前記フィルタ処理装置の再起動を許可する旨の応答を送信する再起動判定処理部と、前記フィルタ処理装置へ、前記再起動を許可する旨の応答を送信したとき、前記再起動情報における再起動を許可するフィルタ処理装置の数を減算し、前記フィルタ処理装置から、このフィルタ処理装置の再起動を完了した旨の通知を受信したとき、前記再起動情報における再起動を許可するフィルタ処理装置の数を加算する再起動情報更新部とを備える構成とした。
【００１９】
このような構成によれば、共有情報管理装置は、フィルタ処理装置からの要求に応じて、フィルタ処理に必要なファイルデータを送信するので、フィルタ処理装置に様々なストリームデータのフィルタ処理を実行させることができる。また、この共有情報管理装置は、システム全体において、再起動を許可するフィルタ処理装置の数を管理するので、再起動中のためフィルタ処理が停止するフィルタ処理装置が所定数を超え、システム全体の処理能力が著しく低下するのを防止できる。
【００２０】
請求項８に記載の発明は、複数のフィルタ処理装置によりストリームデータのフィルタ処理を行うストリームデータ管理システムに用いられるフィルタ処理装置それぞれが、前記ストリームデータを蓄積する１以上のデータ蓄積装置それぞれから、このデータ蓄積装置におけるキュー状態を示したキュー状態情報を受信するステップと、前記受信したキュー状態情報に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択するステップと、前記選択されたデータ蓄積装置から、このデータ蓄積装置に蓄積されたストリームデータを取得するステップと、前記ストリームデータに付されたサービスＩＤごとに、このストリームデータに対し実行すべきフィルタ処理を示したサービスＩＤテーブルと、前記取得したストリームデータに付されたサービスＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタオペレーションを決定し、前記決定したフィルタオペレーションを記憶部から読み出し、この読み出したフィルタオペレーションに基づくフィルタ処理をフィルタ処理部に実行させるステップと、前記フィルタ処理後のストリームデータを出力するステップと、を実行することを特徴とするフィルタ処理方法とした。
【００２１】
このような方法によれば、ストリームデータ管理システムにおけるフィルタ処理装置はそれぞれ、複数のデータ蓄積装置からストリームデータを取得する。このとき、フィルタ処理装置それぞれが、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理のバランスをとることができる。つまり、ストリームデータ管理システムにおいて、特定のフィルタ処理装置に処理負荷が集中することがなくなる。これにより、ストリームデータ管理システムが、異なる流量特性を持つストリームデータを受信する場合において、特定のフィルタ処理装置がボトルネックとなって、システム全体の処理能力が低下することがなくなる。
【００２２】
請求項９に記載の発明は、請求項８に記載のフィルタ処理方法において、前記データ蓄積装置それぞれにおけるキュー状態情報は、このデータ蓄積装置における入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値を含み、前記フィルタ処理装置は、前記ストリームデータを取得元となる前記データ蓄積装置を選択するとき、前記データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値に基づき、前記いずれかの値が大きいものから優先的に、前記ストリームデータを取得元となる前記データ蓄積装置を選択することを特徴とするフィルタ処理方法とした。
【００２３】
このような方法によれば、各フィルタ処理装置の選択処理部は、データ蓄積装置それぞれにおける入力スループット、出力スループットおよびＣＰＵコストに基づき、ストリームデータを取得するデータ蓄積装置を選択するので、より混雑しているデータ蓄積装置から優先的にストリームデータを取得することができる。
【００２４】
請求項１０に記載の発明は、請求項８または請求項９に記載のフィルタ処理方法をコンピュータに実行させることを特徴とするフィルタ処理プログラムとした。
【００２５】
このようなフィルタ処理プログラムによれば、コンピュータに請求項８または請求項９に記載のフィルタ処理方法を実行させることができる。
【発明の効果】
【００２６】
本発明によれば、ストリームデータ管理システムにおいて、情報源のデータ入力量の変化が激しい場合であっても、システム全体の処理能力を著しく低下させないようにすることができる。また、ストリームデータ管理システムにおけるフィルタ処理装置は、フィルタ処理機能を追加できるので、様々なストリームデータに対しフィルタ処理を実行することができる。さらに、このようなフィルタ処理機能を追加する場合においても、システム全体の処理能力を著しく低下させないようにすることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を実施するための最良の形態（以下、実施の形態という）を、図面を参照しながら説明する。
【００２８】
図１は、本実施の形態のストリームデータ管理システムを含むシステムの構成例を示した図である。図１に示すように、システムは、様々な情報源から取得したデータにサービスＩＤ（ＳＩＤ）を付し、このデータをストリームデータとして送信するクライアント５０（５０Ａ，５０Ｂ）と、受信したストリームデータのフィルタ処理を行うストリームデータ管理システム１と、フィルタ処理されたデータの出力先である、出力先６０（６０Ａ〜６０Ｎ）と、この出力先６０からデータの検索を行う検索クライアント７０（７０Ａ〜７０Ｎ）とを含んで構成される。
【００２９】
ストリームデータ管理システム１は、クライアント５０へ、ストリームデータの送信先となるデータ蓄積手段（装置）２０を指示するキュー割当手段４０と、クライアント５０から送信されたストリームデータを蓄積するデータ蓄積手段（装置）２０（２０Ａ，２０Ｂ，…，２０Ｎ）と、ストリームデータのフィルタ処理を行うフィルタ処理手段（装置）１０（１０Ａ〜１０Ｎ）と、このフィルタ処理手段１０におけるフィルタ処理部１２４（詳細は後記）の機能を実現するファイルデータ等を記憶する共有情報管理手段（装置）３０とを含んで構成される。
【００３０】
また、出力先６０は、ストリームデータ管理システム１においてフィルタ処理されたデータをＤＢ（データベース）６１に蓄積する蓄積処理部６２と、フィルタ処理されたデータを記憶するＤＢ６１と、検索クライアント７０からの要求に応じて、このＤＢ６１から所定のデータを検索する検索処理部６３とを含んで構成される。
【００３１】
（１）クライアント５０とストリームデータ管理システム１との間、（２）ストリームデータ管理システム１と出力先６０との間はそれぞれ、図示しない伝送経路により接続される。さらに、データ蓄積手段２０、フィルタ処理手段１０、出力先６０の数は、図１において、それぞれＮ個としたが、これに限定されない。
【００３２】
＜動作概要＞
ここで、図１のシステムの動作概要を説明する。まず、クライアント５０は、様々な情報源からデータを取得し、そのデータに応じたＳＩＤを付する。このＳＩＤはＳＩＤのバージョンの情報を含んでいてもよい。そして、クライアント５０は、このＳＩＤを付したデータをストリームデータとして、ストリームデータ管理システム１へ送信する。ストリームデータ管理システム１のキュー割当手段４０は、ストリームデータの送信先であるデータ蓄積手段２０を選択する。そして、クライアント５０に対し、ストリームデータの送信先のデータ蓄積手段２０を指示し、クライアント５０は、指示されたデータ蓄積手段２０にストリームデータを送信する。なお、データ蓄積手段２０はそれぞれ、自身のキュー状態（入力スループット、出力スループットおよびＣＰＵコスト等）に所定の閾値以上の変化があったとき、このキュー状態を各フィルタ処理手段１０へ通知する。
【００３３】
続いて、フィルタ処理手段１０は、各データ蓄積手段２０から通知されたキュー状態をもとに、ストリームデータを取得するデータ蓄積手段２０を決定する。例えば、データ蓄積手段２０（２０Ａ〜２０Ｎ）のうち、データ蓄積手段２０Ｂにおける入力スループットが比較的大きな値であった場合、このデータ蓄積手段２０Ｂをストリームデータの取得元として決定する。
【００３４】
次に、フィルタ処理手段１０は、この決定したデータ蓄積手段２０からストリームデータを取得し、フィルタ処理を行う。各ストリームデータに対し行うべきフィルタ処理は、このストリームデータに付されたＳＩＤに基づき判断する。ここで、このストリームデータに必要なフィルタ処理機能が自身のフィルタ処理部１２４になかった場合、フィルタ処理手段１０は、共有情報管理手段３０からファイルデータを取得して、フィルタ処理機能の追加を行う。そして、フィルタ処理手段１０は、機能の追加後、フィルタ処理を実行する。
【００３５】
なお、フィルタ処理手段１０は、共有情報管理手段３０からのファイルデータ取得により機能の追加を行うとき、再起動を行う。このとき、フィルタ処理手段１０は、まず、自身が再起動してよいか否かを共有情報管理手段３０に問い合わせる。ここで、共有情報管理手段３０は、現時点において、ストリームデータ管理システム１全体で、再起動によりフィルタ処理を停止してもよいフィルタ処理手段１０の数（再起動上限値）を記録している。そして、共有情報管理手段３０は、この問い合わせを受けたフィルタ処理手段１０を再起動しても、再起動上限値を超えないとき、このフィルタ処理手段１０に再起動を許可する旨の通知を行う。一方、このフィルタ処理手段１０を再起動すると、再起動上限値を超えるとき、共有情報管理手段３０は、このフィルタ処理手段１０に再起動を許可しない旨の通知を行う。このようにすることで、ストリームデータ管理システム１において、所定数を超えたフィルタ処理手段１０が再起動のため停止し、システム全体のフィルタ処理能力が著しく低下することを防止できる。
【００３６】
なお、この後、フィルタ処理手段１０は、フィルタ処理後のストリームデータを所定の出力先６０へ出力する。そして、出力先６０においてフィルタ処理後のデータをＤＢ６１に蓄積し、このＤＢ６１のデータは、検索クライアント７０により検索可能となる。
【００３７】
また、このクライアント５０、キュー割当手段４０、データ蓄積手段２０、共有情報管理手段３０、フィルタ処理手段１０、出力先６０および検索クライアント７０は、入出力インタフェース、ＣＰＵ（Central Processing Unit）等の演算処理部、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等の記憶部等を備えるコンピュータにより実現される。また、各処理部は、ＣＰＵによるプログラム実行処理あるいは専用回路により実現される。
【００３８】
また、データ蓄積手段２０（２０Ａ〜２０Ｎ）はそれぞれ別個のコンピュータ（装置）により実現するようにしてもよいし、これらをまとめて１つのコンピュータにより実現するようにしてもよい。さらに、フィルタ処理手段１０（１０Ａ〜１０Ｎ）についても、それぞれ別個のコンピュータ（装置）により実現するようにしてもよいし、これらをまとめて１つのコンピュータにより実現するようにしてもよい。つまり、データ蓄積手段２０（２０Ａ〜２０Ｎ）およびフィルタ処理手段１０（１０Ａ〜１０Ｎ）をそれぞれ、プロセスにより実現するようにしてもよいし、コンピュータ（マシン）により実現するようにしてもよい。さらに、キュー割当手段４０は、ロードバランサをさらに備え、このロードバランサにより各データ蓄積手段２０へのストリームデータの割り当てを行うようにしてもよい。
【００３９】
＜データ蓄積手段＞
次に、図２を用いてデータ蓄積手段２０を詳細に説明する。図２は、図１のデータ蓄積手段の詳細を示した機能ブロック図である。
【００４０】
データ蓄積手段２０は、クライアント５０から送信されたストリームデータを一時的に蓄積する手段である。このようなデータ蓄積手段２０は、図２に示すように、クライアント５０からのストリームデータの入力を受け付ける入力部２１と、記憶部２４におけるキュー２４１の状態を監視し、所定の閾値以上にキュー状態の変化があったとき、このデータ蓄積手段２０におけるキュー状態情報（入力スループット、出力スループットおよびＣＰＵコスト等の情報）を送信する処理部２２と、ストリームデータおよび前記したキュー状態情報を出力するための出力部２３と、蓄積したストリームデータのキュー２４１が形成される記憶部２４とを含んで構成される。
【００４１】
なお、この入力部２１および出力部２３は、クライアント５０やフィルタ処理手段１０との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部２４は、ＲＡＭ、ＨＤＤ等により実現される。また、処理部２２は、ＣＰＵによる記憶部２４に記憶されるプログラムの実行処理、専用回路等により実現される。なお、記憶部２４において、キュー２４１として蓄積されたストリームデータは、フィルタ処理手段１０からの要求に応じて、フィルタ処理手段１０へ送信される。
【００４２】
処理部２２は、キュー状態監視部２２１と、キュー状態情報送信部２２２とを含んで構成される。キュー状態監視部２２１は、自身のデータ蓄積手段２０におけるキュー状態（入力スループット、出力スループットおよびＣＰＵコスト等）を監視する。そして、キュー状態監視部２２１は、共有情報管理手段３０のキュー状態情報通知閾値３２１（詳細は後記）に示される閾値以上に、キュー状態が変化したか否かを監視する。
【００４３】
キュー状態情報送信部２２２は、キュー状態監視部２２１においてキュー状態が共有情報管理手段３０のキュー状態情報通知閾値３２１に示される閾値以上に変化したとき、このデータ蓄積手段２０におけるキュー状態情報を各フィルタ処理手段１０へ送信する。このときのキュー状態情報には、自身のデータ蓄積手段２０の識別情報が付される。また、キュー状態情報の送信は、例えば、各フィルタ処理手段１０への同報送信等により行われる。
【００４４】
このようにすることで、データ蓄積手段２０は、自身のキュー状態に変化があったとき、自身のキュー状態をいち早く各フィルタ処理手段１０へ通知することができる。なお、キュー状態情報通知閾値３２１は、このデータ蓄積手段２０が共有情報管理手段３０からコピーして記憶部２４に記憶しておき、キュー状態監視部２２１は、この記憶部２４に記憶されたキュー状態情報通知閾値３２１を参照して、キュー状態の監視を行うようにしてもよい。
【００４５】
＜フィルタ処理手段＞
次に、図１に戻ってフィルタ処理手段１０を詳細に説明する。フィルタ処理手段１０は、図１に示すように、ストリームデータの入力を受け付ける入力部１１と、ストリームデータをデータ蓄積手段２０から取得し、フィルタ処理を行う処理部１２と、フィルタ処理を行ったデータを出力する出力部１３と、このフィルタ処理手段１０の機能を実現するためのプログラムや、各データ蓄積手段２０のキュー状態を示したキュー状態テーブル１４１を記憶する記憶部１４とを含んで構成される。この入力部１１および出力部１３も、データ蓄積手段２０や出力先６０との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部１４は、ＲＡＭ、ＨＤＤ等により実現される。また、処理部１２は、ＣＰＵによる記憶部１４に記憶されるプログラムの実行処理、専用回路等により実現される。
【００４６】
この処理部１２は、選択処理部１２１と、データ取得処理部１２２と、フィルタ実行制御部１２３と、フィルタ処理部１２４（１２４Ａ〜１２４Ｎ）とを含んで構成される。
【００４７】
選択処理部１２１は、データ蓄積手段２０から送信されてきた、このデータ蓄積手段２０のキュー状態情報（入力スループット、出力スループット、ＣＰＵコスト（フィルタコスト）等を示した情報）を入力部１１経由で受信し、この情報をキュー状態テーブル１４１（詳細は後記）に反映する。そして、選択処理部１２１は、このキュー状態テーブル１４１に記された各データ蓄積手段２０におけるキュー状態情報をもとに、ストリームデータの取得元となるデータ蓄積手段２０を選択（決定）する。このときのデータ蓄積手段２０の選択処理の詳細は、具体例を用いて後記するが、例えば、入力スループットの値の大きいデータ蓄積手段２０ほど高確率で（優先的に）選択するようにする。
【００４８】
データ取得処理部１２２は、選択処理部１２１により選択されたデータ蓄積手段２０からストリームデータを入力部１１経由で受信する。なお、ストリームデータを取得するタイミングは、例えば、自身のフィルタ処理手段１０において処理しているデータがなくなったときでもよいし、処理中のデータが所定の閾値以下となったときでもよい。
【００４９】
フィルタ実行制御部１２３は、データ取得処理部１２２から取得したストリームデータに付されたＳＩＤと、共有情報管理手段３０のＳＩＤテーブル３２２（詳細は後記）とを参照して、このストリームデータに対し実行すべきフィルタ処理（フィルタオペレーションの適用手順）を決定する。そして、フィルタ実行制御部１２３は、記憶部１４からフィルタオペレーション（ＦＯＰ）を読み出し、ＦＯＰにより記述されるフィルタ処理をフィルタ処理部１２４に実行させる。
【００５０】
なお、このフィルタ実行制御部１２３は、このストリームデータに対し実行すべきフィルタ処理機能が自身のフィルタ処理手段１０にないとき、共有情報管理手段３０から、このフィルタ処理機能を実現するためのファイルデータ（フィルタオペレーションを含む）をダウンロードし、機能追加を行う。この実行制御部１２３の詳細は、図４を用いて後記する。
【００５１】
フィルタ処理部１２４は、フィルタ実行制御部１２３からの指示に基づき、ストリームデータに対しフィルタ処理を実行する。このフィルタ処理部１２４におけるフィルタ処理の内容はフィルタオペレーション（ＦＯＰ）により記述され、フィルタ処理部１２４は、このＦＯＰに基づきフィルタ処理を実行する。このＦＯＰは例えば「画像フォーマットをＪＰＥＧから、Ｂｉｔｍａｐフォーマットに変換する」というものや、「画像サイズを特徴抽出ルーチンに合うように正規化する」というもの等である。また、このＦＯＰは、「処理後のデータを出力先６０Ａに出力する」等、処理後のデータの出力先に関する情報を含んでいてもよい。このＦＯＰは、記憶部１４に記憶され、フィルタ実行制御部１２３により読み出される。
【００５２】
記憶部１４は、前記したＦＯＰを含み、このフィルタ処理手段１０の機能を実現するプログラム（図示省略）と、キュー状態テーブル１４１とを記憶する。このキュー状態テーブル１４１は、各データ蓄積手段２０ごとのキュー状態を示した情報である。以下の表１に、キュー状態テーブル１４１を例示する。
【００５３】
【表１】
2008083808.tif 000003
【００５４】
例えば、表１に例示したキュー状態テーブル１４１において、ＩＤ「１」のデータ蓄積手段２０の入力スループットは「１０」であり、出力スループットは「１０」であり、ＣＰＵコストは「２」であることを示す。
【００５５】
なお、入力スループットとは、データ蓄積手段２０へ入力されるデータの単位時間当たりの入力量である。また、出力スループットとは、データ蓄積手段２０に蓄えられたデータがフィルタ処理手段１０へ出力されるときに単位時間当たりの出力量である。なお、入力量および出力量は、例えば、データベースでいうところのタプル（レコード）の数で定量化することができる。
【００５６】
さらに、ＣＰＵコストは、例えば、この１タプルあたりのフィルタ処理時間により定義される。フィルタ処理時間は、データ蓄積手段２０がフィルタ処理手段１０へデータを渡した後に、そのデータが処理されるまでの時間とする。つまり、データ蓄積手段２０は、フィルタ処理手段１０へデータを渡したとき、その時間を記録しておく。そして、フィルタ処理手段１０は、当該データのフィルタ処理を完了したとき、その旨の通知をデータ蓄積手段２０へ送信するので、この通知を受信するまでの時間によりデータ蓄積手段２０は、当該データのフィルタ処理時間を計測する。そして、データ蓄積手段２０は、この計測したフィルタ処理時間が大きいほど、ＣＰＵコストが大きいと判断する。
【００５７】
ここで、前記したキュー状態テーブル１４１を参照した、選択処理部１２１によるデータ蓄積手段２０の選択処理を、図３を用いて説明する。図３は、図１の選択処理部によるデータ蓄積手段の選択処理を説明する図である。ここでは、選択処理部１２１が、入力スループットの値をもとにストリームデータの取得元となるデータ蓄積手段２０を選択する場合を例に説明する。
【００５８】
（１）まず、選択処理部１２１は、キュー状態テーブル１４１における入力スループットの値の総和（１０＋５＋５＝２０）を求める。
（２）次に、選択処理部１２１は、１〜２０（入力スループットの値の総和）までの間のランダム値ｒを生成する。
（３）そして、選択処理部１２１は、前記した（２）で生成したランダム値ｒをもとに、データを取得するデータ蓄積手段２０を選択する。例えば、（２）で生成したランダム値ｒが１≦ｒ≦１０を満たすものであれば、ＩＤ「１」のデータ蓄積手段２０を選択し、ランダム値ｒが１１≦ｒ≦１５を満たすものであれば、ＩＤ「２」のデータ蓄積手段２０を選択し、ランダム値ｒが１６≦ｒ≦２０を満たすものであれば、ＩＤ「３」のデータ蓄積手段２０を選択する。
【００５９】
すなわち、データ蓄積手段２０の数が３であった場合、ＩＤ「１」のデータ蓄積手段２０が選択される確率は５０％、ＩＤ「２」のデータ蓄積手段２０が選択される確率は２５％、ＩＤ「３」のデータ蓄積手段２０が選択される確率は２５％となる。つまり、各フィルタ処理手段１０の選択処理部１２１は、ストリームデータを取得するデータ蓄積手段２０を選択するとき、より負荷の大きいデータ蓄積手段２０を高い確率で選択することができる。
【００６０】
なお、ここでは、選択処理部１２１は、データ蓄積手段２０の入力スループットの値をもとにストリームデータを取得するデータ蓄積手段２０の選択を行うこととしたが、出力スループットまたはＣＰＵコストの値をもとにストリームデータを取得するデータ蓄積手段２０の選択を行うようにしてもよい。あるいは、入力スループット、出力スループットおよびＣＰＵコストのすべての値を考慮してデータ蓄積手段２０の選択を行うようにしてもよい。つまり、データ蓄積手段２０における入力スループット、出力スループットおよびＣＰＵコストのうち少なくともいずれか１つの値に基づき、データの取得元となるデータ蓄積手段２０の選択を行うようにする。
【００６１】
＜フィルタ実行制御部＞
次に、前記したフィルタ実行制御部１２３の詳細を、図４を用いて説明する。図４は、図１のフィルタ実行制御部の詳細を示した機能ブロック図である。
【００６２】
図４に示すように、フィルタ実行制御部１２３は、フィルタ判定部１２６と、フィルタ取得部１２７と、再起動問い合わせ部１２８と、再起動部１２９と、フィルタ処理適用部１３０とを含んで構成される。
【００６３】
フィルタ判定部１２６は、データ取得処理部１２２から出力されたストリームデータに付されたＳＩＤおよびＳＩＤのバージョンと、共有情報管理手段３０のＳＩＤテーブル３２２（詳細は後記）とを参照して、このストリームデータに対し実行すべきフィルタオペレーションを判断する。また、フィルタ判定部１２６は、このストリームデータに必要なフィルタ処理機能が、フィルタ処理部１２４にあるか否かを判断する。
【００６４】
フィルタ取得部１２７は、フィルタ判定部１２６において、ストリームデータに必要なフィルタ処理機能が、フィルタ処理部１２４にないと判断されたとき、共有情報管理手段３０からファイルデータ３２３を取得する。そして、このファイルデータ３２３をインストールすることにより、フィルタ処理手段１０にフィルタ処理機能を追加する。
【００６５】
再起動問い合わせ部１２８は、フィルタ取得部１２７がファイルデータ３２３を取得した後、共有情報管理手段３０に対し、自身のフィルタ処理手段１０の再起動を許可するか否かを問い合わせる。
【００６６】
再起動部１２９は、共有情報管理手段３０から自身のフィルタ処理手段１０の再起動を許可する旨の応答を受信したとき、自身のフィルタ処理手段１０を再起動する。また、再起動部１２９は、再起動を完了したとき、共有情報管理手段３０へ、自身のフィルタ処理手段１０の再起動の完了を通知する。このようにすることで、共有情報管理手段３０へ、各フィルタ処理手段１０が再起動中のためフィルタ処理を停止している状態であるかが通知されることになる。
【００６７】
フィルタ処理適用部１３０は、ストリームデータに付されたＳＩＤおよびＳＩＤのバージョンと、共有情報管理手段３０のＳＩＤテーブル３２２（詳細は後記）とを参照して、このストリームデータに対し実行すべきフィルタオペレーションを適用する。すなわち、ＳＩＤテーブル３２２に示されるスキーマ情報と、ＦＯＰ（フィルタオペレーション）系列とを参照して、このストリームデータに対し、どのような手順でフィルタ処理を実行すればよいかを判断する。そして、フィルタ処理部１２４に、この判断した手順でフィルタ処理を実行させる。
【００６８】
なお、共有情報管理手段３０からファイルデータ３２３を取得するタイミングは、フィルタ処理手段１０において、ストリームデータに必要なフィルタ処理機能がないことを検知したときでもよいし、所定期間ごとであってもよい。
【００６９】
＜共有情報管理手段＞
次に、図５を用いて、共有情報管理手段３０を詳細に説明する。図５は、図１の共有情報管理手段の機能ブロック図である（適宜、図１および図２参照）。
【００７０】
図５に示すように、共有情報管理手段３０は、各種データの入力を司る入力部３１と、フィルタ処理手段１０（図１参照）により参照される各種データや共有情報管理手段３０の機能を実現するプログラムを記憶する記憶部３２と、各種データの出力を司る出力部３３と、この共有情報管理手段３０全体の制御を司る処理部３４とを含んで構成される。この入力部３１および出力部３３は、データ蓄積手段２０やフィルタ処理手段１０等との間でデータ入出力可能な入出力インタフェースにより実現され、記憶部３２は、ＲＡＭ、ＨＤＤ等により実現される。また、処理部３４は、ＣＰＵによるプログラム実行処理や、専用回路等により実現される。なお、図５において、前記したプログラムの図示は省略している。
【００７１】
記憶部３２は、共有情報管理手段３０の機能を実現するプログラム（図示省略）と、キュー状態情報通知閾値３２１と、テーブル３２２と、ファイルデータ３２３と、再起動情報３２４とを記憶する。
【００７２】
キュー状態情報通知閾値３２１は、データ蓄積手段２０のキュー状態監視部２２１が、キュー状態情報を送信するか否かを判断するための閾値である。このキュー状態情報通知閾値３２１は、例えば、入力スループット、出力スループット、ＣＰＵコスト等の少なくともいずれか１つの値が、全体の２割変化した場合（つまり、増加あるいは減少）した場合等の条件を設定する。
【００７３】
ＳＩＤテーブル３２２は、ＳＩＤごとに、そのＳＩＤが付されたストリームデータに対し行うべきフィルタ処理の内容を示したテーブルである。このＳＩＤテーブル３２２を以下の表２に例示する。
【００７４】
【表２】
2008083808.tif 000004
【００７５】
表２に例示するＳＩＤテーブル３２２は、ＳＩＤと、そのＳＩＤのバージョンと、ストリームデータのスキーマ情報と、そのＳＩＤおよびバージョンを持つストリームデータに対し適用すべきフィルタオペレーション（ＦＯＰ）系列（適用すべきＦＯＰの識別情報およびフィルタオペレーションの適用手順）とが示される。
【００７６】
例えば、表２に例示するＳＩＤテーブル３２２において、ＳＩＤ「１０」、ＳＩＤのバージョン「１．０」のストリームデータのスキーマ情報は「NAME char(10)、TEL char(10)、ADDRESS char(100)、AGE int」であり、このストリームデータに対して「FOP102，FOP103，FOP104」というフィルタ処理を、「FOP102→FOP103→FOP104」という順番で適用すべきであることを示す。なお、スキーマ情報における括弧内の値は、フィルタ処理部１２４におうてフィルタ処理を行うときのウィンドウサイズである。例えば、フィルタ処理部１２４が、データのうち「NAME」に関するフィルタ処理を行うときには、１０個のデータ（レコード）が必要であることを示す。
【００７７】
このＳＩＤテーブル３２２は、フィルタ処理手段１０のフィルタ実行制御部１２３がストリームデータに対し実行すべきフィルタ処理の内容を判断する際に参照される。なお、このＳＩＤテーブル３２２の情報は、入力部３１経由で書き換え可能である。
【００７８】
ファイルデータ３２３は、フィルタ処理手段１０のフィルタ処理部１２４の機能を実現するファイルデータである。このファイルデータは、例えば、ストリームデータ管理システム１で用いられる最新バージョンのファイルデータであり、前記したＦＯＰを含むものである。このファイルデータ３２３は、フィルタ処理手段１０からの要求に基づき、フィルタ送信部３４１により、この要求の送信元のフィルタ処理手段１０へ送信される。
【００７９】
再起動情報３２４は、ストリームデータ管理システム１において再起動を許可するフィルタ処理手段１０の数を示した情報である。例えば、ストリームデータ管理システム１全体において、再起動によりフィルタ処理を停止してもよいフィルタ処理手段１０の数が「１０」の場合、初期値として、この再起動情報３２４に「１０」を設定しておく。この再起動情報３２４は、再起動判定処理部３４２（後記）により参照され、再起動情報更新部３４３（後記）により書き換えられる。
【００８０】
なお、この記憶部３２に記憶される情報は、入力部３１経由で入力される。
【００８１】
次に、処理部３４を説明する。処理部３４は、フィルタ送信部３４１と、再起動判定処理部３４２と、再起動情報更新部３４３とを含んで構成される。
【００８２】
フィルタ送信部（ファイルデータ送信部）３４１は、フィルタ処理手段１０のフィルタ取得部１２７（図４参照）からファイルデータの取得要求を受信すると、これに応じて、出力部３３経由で、ファイルデータ３２３を送信する。
【００８３】
再起動判定処理部３４２は、フィルタ処理手段１０の再起動問い合わせ部１２８（図４参照）から、このフィルタ処理手段１０の再起動を許可するか否かの問い合わせを受信すると、再起動情報３２４を参照して、このフィルタ処理手段１０の再起動を許可するか否かを判断する。例えば、再起動判定処理部３４２は、このフィルタ処理手段１０の再起動を許可するか否かの問い合わせを受信した場合において、再起動情報３２４における再起動を許可するフィルタ処理手段１０の数が正であるとき、フィルタ処理手段１０へ、このフィルタ処理手段１０の再起動を許可する旨の応答を送信する。一方、再起動判定処理部３４２は、再起動情報３２４における再起動を許可するフィルタ処理装置の数が０以下であるとき、フィルタ処理手段１０へ、このフィルタ処理手段１０の再起動を許可しない旨の応答を送信する。
【００８４】
再起動情報更新部３４３は、再起動判定処理部３４２が、フィルタ処理手段１０へ、このフィルタ処理手段１０の再起動を許可する旨の応答を送信したとき、再起動情報３２４において、再起動を許可するフィルタ処理装置の数を１減らす。また、フィルタ処理手段１０の再起動部１２９（図４参照）から、再起動完了通知を受信したとき、再起動を許可するフィルタ処理装置の数を１増やす。
【００８５】
このようにすることで、共有情報管理手段３０は、ストリームデータ管理システム１において、再起動中のためフィルタ処理を停止しているフィルタ処理手段１０の数を所定数以下に保つことができる。
【００８６】
なお、この共有情報管理手段３０は、ファイルデータ３２３が最新のものに更新されたとき、そのファイルデータ３２３により提供されるＦＯＰに関連するＳＩＤを、各フィルタ処理手段１０に公開するようにしてもよい。このようにすることで、各フィルタ処理手段１０は、自身が備えるフィルタ処理機能にアップデートが必要なことをすぐに知ることができる。
【００８７】
＜動作手順＞
次に、ストリームデータ管理システム１の動作を説明する。まず、図６を用いて、ストリームデータがデータ蓄積手段２０に蓄積されるまでの手順を説明する。図６は、ストリームデータが図１のデータ蓄積手段に蓄積されるまでの手順を示したフローチャートである。
【００８８】
まず、クライアント５０は、キュー割当手段４０へこのクライアント５０からのストリームデータの蓄積先となるデータ蓄積手段２０の指定依頼を送信する（Ｓ６０１）。これを受信したキュー割当手段４０は、データ蓄積手段２０の選択を行い、この選択したデータ蓄積手段２０として指定する（Ｓ６０２）。なお、ここでのデータ蓄積手段２０の選択は、例えば、ストリームデータ管理システム１におけるすべてのデータ蓄積手段２０のうち、最もキューが短いデータ蓄積手段２０を選択するようにする。このようにすることで、各データ蓄積手段２０において偏りが少ない状態でキューが形成されることになる。
【００８９】
次に、クライアント５０は、データ蓄積手段２０の指定を受信すると、指定されたデータ蓄積手段２０へデータ（ストリームデータ）を送信する（Ｓ６０３）。ここで送信するデータは、ＳＩＤを含むものである。
【００９０】
そして、データ蓄積手段２０は、クライアント５０からデータを受信すると、このデータを、記憶部２４（図２参照）に蓄積する（Ｓ６０４）。このようにして、データ蓄積手段２０にデータが蓄積される。
【００９１】
次に、図７を用いて、キュー状態テーブル１４１（図１参照）の更新手順を説明する。図７は、図１のキュー状態テーブルの更新手順を示したフローチャートである。
【００９２】
データ蓄積手段２０は、クライアント５０から送信されるデータを蓄積し（Ｓ７０１）、キュー状態監視部２２１（図２参照）は、このデータ蓄積手段２０におけるキュー状態を監視する（Ｓ７０２）。キュー状態監視部２２１は、共有情報管理手段３０のキュー状態情報通知閾値３２１に示される閾値以上に、キュー状態の変化があるか否か判断する（Ｓ７０３）。
【００９３】
ここで、キュー状態監視部２２１は、共有情報管理手段３０のキュー状態情報通知閾値３２１に示される閾値以上に、キュー状態の変化があると判断したとき（Ｓ７０３のＹｅｓ）、キュー状態情報送信部２２２は、このデータ蓄積手段２０におけるキュー状態情報を各フィルタ処理手段１０へ送信する（Ｓ７０４）。
【００９４】
フィルタ処理手段１０の選択処理部１２１は、各データ蓄積手段２０からキュー状態情報を受信すると、この情報をキュー状態テーブル１４１に記憶する。つまり、キュー状態テーブル１４１の更新を行う（Ｓ７０５）。
【００９５】
次に、図８および図９を用いて、フィルタ処理手段１０のフィルタ処理手順を説明する。図８および図９は、図１のフィルタ処理手段のフィルタ処理手順を示したフローチャートである（適宜、図１および図４参照）。
【００９６】
まず、フィルタ処理手段１０において処理すべきデータがないことを検知すると（Ｓ８０１のＹｅｓ）、選択処理部１２１は、キュー状態テーブル１４１を参照して、次にデータを取得するデータ蓄積手段２０を選択する（Ｓ８０２）。このときの選択手順の詳細については、図１０を用いて後記する。そして、データ取得処理部１２２は、この選択したデータ蓄積手段２０からデータを取得する（Ｓ８０３）。
【００９７】
次に、フィルタ判定部１２６（図４参照）は、このデータに付されたＳＩＤの情報（ＳＩＤおよびそのバージョン）と、ＳＩＤテーブル３２２とを参照して、このストリームデータに対し必要なフィルタ処理機能を判断する（Ｓ８０４）。そして、このストリームデータに対し必要なフィルタ処理機能が自身のフィルタ処理手段１０にあるか否かを判断する（Ｓ８０５）。ここで、必要なフィルタ処理機能が自身のフィルタ処理手段１０にないとき（Ｓ８０５のＮｏ）、フィルタ取得部１２７は、共有情報管理手段３０から、必要なフィルタ処理機能を取得する（Ｓ８０６）。すなわち、フィルタ取得部１２７は、共有情報管理手段３０から、ファイルデータ３２３を取得し、このファイルデータ３２３により、フィルタ処理部１２４にフィルタ処理機能を追加する。
【００９８】
一方、必要なフィルタ処理機能が自身のフィルタ処理手段１０にあるとき（Ｓ８０５のＹｅｓ）、図９のＳ９０１へ進み、再起動問い合わせ部１２８は共有情報管理手段３０に対し、自身のフィルタ処理手段１０の再起動を許可するか否かを問い合わせる（Ｓ９０１）。つまり、自身のフィルタ処理手段１０の再起動を許可するか否かを問い合わせるメッセージを送信する。
【００９９】
そして、フィルタ処理手段１０の再起動問い合わせ部１２８は、共有情報管理手段３０からの再起動を許可するか否かの問い合わせの応答を待つ。ここで、共有情報管理手段３０から自身のフィルタ処理手段１０の再起動を許可する旨の応答を受信したとき（Ｓ９０２のＹｅｓ）、再起動部１２９は、自身のフィルタ処理手段１０を再起動する（Ｓ９０３）。そして、再起動部１２９は、再起動を完了すると、再起動完了の通知を共有情報管理手段３０へ送信する（Ｓ９０４）。次に、フィルタ実行制御部１２３は、Ｓ８０６で取得したフィルタ処理機能により、フィルタ処理を実行する（Ｓ９０５）。すなわち、フィルタ実行制御部１２３は、ＳＩＤテーブル３２２に従い、このストリームデータに対するフィルタ処理の内容を判断し、このフィルタ処理を実行するための所定のＦＯＰを記憶部１４から読み出す。そして、フィルタ実行制御部１２３は、このＦＯＰに基づきフィルタ処理部１２４に所定の順序でフィルタ処理を実行させ、フィルタ処理後のデータを所定の出力先６０へ出力させる。そして、図８のＳ８０１へ戻る。
【０１００】
なお、図９のＳ９０２において、フィルタ処理手段１０の再起動問い合わせ部１２８が、共有情報管理手段３０から、自身のフィルタ処理手段１０の再起動を許可しない通知を受信したとき、あるいは、自身のフィルタ処理手段１０の再起動を許可する旨の応答を受信できなかったとき（Ｓ９０２のＮｏ）、所定時間経過後（Ｓ９０６のＹｅｓ）、Ｓ９０１へ戻る。そして、フィルタ処理手段１０再起動問い合わせ部１２８は共有情報管理手段３０に対し、自身のフィルタ処理手段１０の再起動を許可するか否かを問い合わせる。このようにすることで、他のフィルタ処理手段１０が再起動中のため、自身のフィルタ処理手段１０が再起動できなかった場合でも、時間をずらして、再起動することができる。
【０１０１】
次に、図１０を用いて、選択処理部１２１が、次にデータを取得するデータ蓄積手段２０を選択する手順（図８のＳ８０２）を詳細に説明する。図１０は、図１の選択処理部が、次にデータを取得するデータ蓄積手段を選択する手順を示したフローチャートである（適宜図１参照）。
【０１０２】
まず、フィルタ処理手段１０において処理すべきデータがないことを検知すると、選択処理部１２１は、キュー状態テーブル１４１を参照して、すべてのデータ蓄積手段２０における負荷（処理負荷）の和を算出する（Ｓ１００１）。例えば、すべてのデータ蓄積手段２０における入力スループットの値の総和を求める。
【０１０３】
選択処理部１２１は、１〜負荷の和（Ｓ１００１で算出した負荷の和）の値の間で、ランダム値ｒを生成する（Ｓ１００２）。このときのランダム値ｒの生成は、公知の技術を用いてよい。
【０１０４】
そして、選択処理部１２１は、Ｓ［１］（１番目のデータ蓄積手段２０における負荷）からＳ［ｊ］（ｊ番目のデータ蓄積手段２０における負荷）までの和≦ｒ≦Ｓ［１］（１番目のデータ蓄積手段２０における負荷）からＳ［ｊ＋１］（ｊ＋１番目のデータ蓄積手段２０における負荷）までの和を満たすｊを決定し、出力する（Ｓ１００３）。つまり、選択処理部１２１は、次にデータを取得するデータ蓄積手段２０を決定する。なお、ストリームデータ管理システム１における、データ蓄積手段２０の数がＮであるとき、ｊは、１≦ｊ≦Ｎを満たす値である。
【０１０５】
このようにすることで、各フィルタ処理手段１０は、ストリームデータを取得するデータ蓄積手段２０を選択するとき、より負荷の大きいデータ蓄積手段２０を高い確率で選択することができる。
【０１０６】
次に、図１１を用いて、フィルタ処理手段１０から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段３０の動作手順を説明する。図１１は、図１のフィルタ処理手段から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段の動作手順を示したフローチャートである（適宜、図５参照）。
【０１０７】
まず、共有情報管理手段３０の再起動判定処理部３４２（図５参照）は、フィルタ処理手段１０から再起動を許可するか否かの問い合わせを受信すると（Ｓ１１０１のＹｅｓ）、再起動情報３２４を参照する（Ｓ１１０２）。
【０１０８】
そして、再起動判定処理部３４２は、この再起動情報３２４において再起動を許可するフィルタ処理手段１０の数が正か否かを判断する（Ｓ１１０３）。
【０１０９】
ここで、この再起動情報３２４において再起動を許可するフィルタ処理手段１０の数が正であるとき（Ｓ１１０３のＹｅｓ）、再起動判定処理部３４２はフィルタ処理手段１０へ、このフィルタ処理手段１０の再起動を許可する旨の応答を送信する（Ｓ１１０４）。
【０１１０】
そして、再起動情報更新部３４３は、再起動情報３２４において、再起動を許可するフィルタ処理装置の数を１減らす（Ｓ１１０５）。
【０１１１】
この後、共有情報管理手段３０の再起動判定処理部３４２は、フィルタ処理手段１０から再起動完了の通知を待ち、フィルタ処理手段１０から再起動完了の通知を受信したとき（Ｓ１１０６のＹｅｓ）、共有情報管理手段３０の再起動情報更新部３４３は、再起動情報３２４において、再起動を許可するフィルタ処理装置の数を１増やす（Ｓ１１０７）。そして、Ｓ１１０１へ戻る。
【０１１２】
一方、Ｓ１１０３において、再起動情報３２４の再起動を許可するフィルタ処理手段１０の数が０以下であったとき（Ｓ１１０３のＮｏ）、共有情報管理手段３０の再起動判定処理部３４２はフィルタ処理手段１０へ、このフィルタ処理手段１０の再起動を許可しない旨の応答を送信する（Ｓ１１０８）。そして、Ｓ１１０１へ戻る。
【０１１３】
このようにすることで、共有情報管理手段３０は、ストリームデータ管理システム１において、再起動中のためフィルタ処理を停止しているフィルタ処理手段１０の数を所定数以下にすることができる。
【０１１４】
＜実施の形態の例＞
次に、前記したシステムの実施の形態の例を、具体例を用いて説明する。まず、ストリームデータ管理システム１が、映像監視を行う場合を例に説明する。
【０１１５】
ここでは、監視対象の映像において、その映像に写っているオブジェクト（人物）が予め指定されている軌跡以外の軌跡を辿ったか否かを監視する場合を例に説明する。
【０１１６】
クライアント５０は、監視カメラ等からの映像を受信すると、この映像をフレームごとに分解する。そして、キュー割り当て手段４０から指示されたデータ蓄積手段２０へ、この分解されたフレームのデータ（ストリームデータ）を送信する。このデータにはＳＩＤおよびそのＳＩＤバージョンに関する情報が付されている。データを受信したデータ蓄積手段２０は、このデータをキュー２４１（図２参照）として積む。
【０１１７】
各フィルタ処理手段１０は、データ蓄積手段２０におけるキュー状態から、データを取得するデータ蓄積手段２０を決定し、この決定したデータ蓄積手段２０からデータを取得する。そして、取得したデータのＳＩＤおよびそのバージョンと、共有情報管理手段３０のＳＩＤテーブル３２２（図４参照）とを参照して、このデータに対し実行すべきフィルタ処理を判断する。例えば、フィルタ処理手段１０は、以下のＦＯＰを順に実行すると判断する。
【０１１８】
（ＦＯＰ１１）画像フォーマットをＪＰＥＧ（Joint Photographic Experts Group）から、Ｂｉｔｍａｐフォーマットに変換し、
（ＦＯＰ１２）画像サイズを特徴抽出ルーチンに合うように正規化し、
（ＦＯＰ１３）カラー情報から白黒輝度画像情報を抽出し、
（ＦＯＰ１４）その白黒輝度画像情報と、事前に登録してある背景画像との差分を検出し、
（ＦＯＰ１５）その差分について領域のラベリングを行い、
（ＦＯＰ１６）指定画素数以下の領域はノイズとして除去し、
（ＦＯＰ１７）各領域について、重心位置・面積・形状等を検出し、
（ＦＯＰ１８）その結果をＸＭＬ（eXtensible Markup Language）タグ化し、
（ＦＯＰ１９）ＸＭＬデータとして、出力先６０Ａへ送る
【０１１９】
このＸＭＬデータを受信した出力先６０Ａは、このＸＭＬデータの情報源ごとにデータをソートし、時刻順に並んだ系列を得て、映像内のオブジェクトの軌跡を得る。そして、その軌跡が、予め指定されている軌跡に類似する（あるいは類似しない）場合、監視者に対し警報を発する。
【０１２０】
ここで、ストリームデータ管理システム１において、映像に写る人物が複数である場合、その人物間の関係（親子、男女、その他）を抽出するとき、各フィルタ処理手段１０に以下のＦＯＰの追加が必要になる。
【０１２１】
（ＦＯＰ１Ａ１）各ラベルについて、そのオブジェクト間の関係を抽出し、
（ＦＯＰ１Ａ２）その結果をＸＭＬタグ化する
【０１２２】
ここで、各フィルタ処理手段１０に、前記したＦＯＰを追加する場合を説明する。
【０１２３】
まず、システムの管理者等が、予め、前記したＦＯＰ１Ａ１およびＦＯＰ１Ａ２を実現するためのファイルデータ３２３（図４参照）を共有情報管理手段３０に登録しておく。そして、フィルタ処理手段１０において処理中のデータがなくなったことを契機として、フィルタ処理手段１０は、共有情報管理手段３０に新たなファイルデータ３２３が存在することを確認すると、この新たなファイルデータ３２３を共有情報管理手段３０から取得する。そして、フィルタ処理手段１０は、共有情報管理手段３０に対し、自身が再起動してもよいか否かを問い合わせ、再起動してもよい旨の応答を受信したとき、再起動する。そして、フィルタ処理手段１０は、ファイルデータ３２３によりＦＯＰ１Ａ１およびＦＯＰ１Ａ２の機能を追加する。なお、このフィルタ処理手段１０が再起動中の間、フィルタ処理はいったんストップするが、他のフィルタ処理手段１０において、フィルタ処理は継続される。そして、再起動を完了したフィルタ処理手段１０は、この追加されたＦＯＰ１Ａ１およびＦＯＰ１Ａ２の機能により、データに対しフィルタ処理を実行する。
【０１２４】
このようにすることで、フィルタ処理手段１０に新たなフィルタ処理を追加する場合であっても、システム全体の処理能力が著しく低下することがなくなる。
【０１２５】
次に、ある特定の目的に利用される映像データに対し、当初の目的以外の利用が必要になったとき、各フィルタ処理手段１０に新たなＦＯＰを追加することで対応できることを具体例とともに示す。
【０１２６】
例えば、データ蓄積手段２０は、Ａ駅に設置された構内の監視カメラからの映像データに対して、特徴情報を抽出して蓄積していたものとする。また、データ蓄積手段２０は、犯罪防止のためＡ駅の駅前商店街の監視カメラからの映像データを蓄積していたものとする。
【０１２７】
これらに対して、各フィルタ処理手段１０は従来のフィルタ処理を維持しながら、それぞれのデータから、どの時間帯に、どのような人々が、どのように流れるかを抽出し、駅前の不動産会社の空き店舗向けのマーケティング用のＤＢへ送信したい場合、前記した手順と同様の手順により、以下のＦＯＰを追加すればよい。
【０１２８】
（ＦＯＰ１Ｂ１）それぞれのデータから、どの時間帯に、どのような人々が、どのように流れるかを抽出し、
（ＦＯＰ１Ｂ２）駅前の不動産会社の空き店舗向けのマーケティング用のＤＢへ送信する
【０１２９】
次に、ストリームデータ管理システム１において、各家庭におけるテレビ番組の視聴率を取得する場合について説明する。
【０１３０】
各家庭の視聴率センサ（クライアント５０）は、所定期間ごと、またはテレビのチャンネルが変わるたびに、この家庭のＩＤと、視聴した日時と、チャンネル情報（視聴率の情報）とを含むデータを、データ蓄積手段２０へ送信する。各フィルタ処理手段１０は、このようなデータを、各データ蓄積手段２０から取得して、以下のフィルタ処理を行う。
【０１３１】
（ＦＯＰ２１）そのまま視聴率調査会社のＤＢへ転送する
【０１３２】
このとき、マーケティング会社が、視聴率を活用したマーケティングを行うため、視聴率情報を提供することに合意した家庭から、その家庭における視聴率の情報の提供を受けることになったとする。このとき、各フィルタ処理手段１０は、マーケティング会社へ視聴率の情報の提供に合意した家庭ＩＤを示した合意ＤＢ（データベース）を参照して、マーケティング会社へ視聴率の情報の提供に合意した家庭の視聴率の情報を、このマーケティング会社のＤＢへ送信する。なお、この合意ＤＢは、例えば、共有情報管理手段３０に設置しておく。
【０１３３】
この場合、ＦＯＰは以下のようになる。
【０１３４】
（ＦＯＰ２１´）視聴率調査会社のＤＢへ転送するとともに、ＦＯＰ２２の処理を行う
（ＦＯＰ２２）合意ＤＢを参照して、受信したデータに付された家庭ＩＤが、合意ＤＢに登録されたものであれば、そのデータをマーケティング会社のＤＢへ転送する
【０１３５】
各フィルタ処理手段１０は、このＦＯＰ２１´およびＦＯＰ２２を実現するファイルデータ３２３を共有情報管理手段３０から取得して、「ＦＯＰ２１」を、「ＦＯＰ２１´，ＦＯＰ２２」に置き換える。そして、共有情報管理手段３０におけるＳＩＤテーブル３２２において、視聴率の情報を視聴率調査会社のＤＢへ転送するというサービスのＳＩＤに対応するＦＯＰ系列（表２参照）を、「ＦＯＰ２１」から、「ＦＯＰ２１´，ＦＯＰ２２」に変更する。
【０１３６】
このようにすることで、各フィルタ処理手段１０は、従来の視聴率の情報の収集サービスを妨げることなく、フィルタ処理の追加や変更を行うことができる。
【０１３７】
なお、各フィルタ処理手段１０におけるＦＯＰの置き換えは、例えば、処理しているデータがなくなったフィルタ処理手段１０から順次行うようにする。また、ＦＯＰ自体に、処理ロジックを変更する仕組みや、処理ロジックの変更日時を指定しておくようにしてもよい。また、フィルタ処理手段１０は、このような処理ロジックの変更を、所定のＤＢを参照して行うようにしてもよい。
【０１３８】
なお、ストリームデータ（データ）によって、フィルタ処理手段１０での処理量が大きく変動する場合、例えば、被写体が多数ある入力される本実施の形態のように、複数のフィルタ処理手段１０同士で自律的にフィルタ処理を実行する方法の方が、１つのストリームデータに対し、特定のフィルタ処理手段により処理を行う場合に比べて、システム全体として処理の遅延は発生しにくくなる。
【０１３９】
次に、ストリームデータ管理システム１が、Ｗｅｂサーバ、アプリケーションサーバ、ＤＢサーバ、Ｗｅｂクライアント、管理者クライアント等のネットワーク機器から、この機器における実行ログおよび通信ログを収集し、顧客情報ＤＢへのアクセス異常の監視を行う場合を説明する。
【０１４０】
ここで、
（１）顧客情報ＤＢへのログインパスワードの認証エラーが連続３回以上あった場合
（２）顧客情報ＤＢに対して、１００件以上の検索が行われた場合
（３）認証用のＩＤやパスワード文字列に対して、シングルオート文字等を含めた攻撃を検出した場合
（４）顧客情報ＤＢの管理者権限でログインして、参照した場合
（５）顧客情報ＤＢを出力する処理を行った場合
（６）夜間や休日に、顧客情報ＤＢに管理者権限でアクセスした場合
に顧客情報ＤＢへのアクセス異常とするとき、フィルタ処理手段１０はフィルタ処理部１２４（図１参照）により以下の処理を実行する。
【０１４１】
・データ中の不要な文字を削除する
・データの文字コードを統一する
・データの表現形式を整形し、正規化する
・特定のサーバ、ユーザ、サービスに関するログを選択する
・特定のプロトコルによるデータを抜き出す
・ＷｅｂサーバとＤＢサーバ等、複数の情報源のデータを統合する
・安全と判断できるアクセスパターンに合致しないアクセスを検出する
【０１４２】
また、フィルタ処理手段１０は、フィルタ処理部１２４により、前記した処理に加え、
・ログイン等の運用者操作に関する異常データを検出した場合には、データを出力先６０Ｂへ出力する
・認証データに特殊な文字が混在する等のエンドユーザ操作に関する異常データを検出した場合には、データを出力先６０Ｃへ出力する
という処理を追加し、データの出力先の制御を行うようにしてもよい。
【０１４３】
さらに、フィルタ処理手段１０は、以下の処理を追加してもよい。
・顧客情報ＤＢへログインした際のログインアカウントは、在籍社員ＤＢに含まれるＩＤであることを確認する
・在籍社員以外のＩＤにより、顧客情報ＤＢへログインが発生した場合には、メールで情報管理者に警報を送信する
【０１４４】
このような場合も、前記した手順と同様の手順により、前記した処理を実現するＦＯＰの追加を行うので、既存のアクセス異常の監視を停止させないようにすることができる。
【０１４５】
なお、ストリームデータ管理システム１がアクセス異常の監視を行う場合、入力されるストリームデータ（ログデータ）の改ざん防止のため、クライアント５０あるいはデータ蓄積手段２０において、署名を行うようにしてもよい。
【０１４６】
なお、フィルタ処理手段１０において、過去にフィルタ処理を行ったストリームデータの平均値を用いてフィルタ処理を実行するようにしてもよい。これはWindowQueryとよばれるもので、例えば、フィルタ処理手段１０は、出力先６０のＤＢ６１に蓄積されたデータにおけるタイムスタンプの値等を用いて、このＤＢ６１のデータの中から、所定期間または所定数のデータを読み出し、このデータの平均値を計算してフィルタ処理を実行するようにしてもよい。
【０１４７】
なお、前記した実施の形態において、データ蓄積手段２０のキュー状態監視部２２１は、共有情報管理手段３０のキュー状態情報通知閾値３２１に示される閾値以上に、キュー状態が変化したか否かを監視することとしたが、例えば、データ蓄積手段２０の記憶部２４に所定量を超えたデータが蓄積されているか否かを監視するようにしてもよい。この場合、キュー状態情報通知閾値３２１として、例えば、記憶部２４におけるバッファの８０％を超えた場合の値等を設定しておき、キュー状態監視部２２１は、記憶部２４におけるバッファの８０％を超える量のデータが蓄積されているか否かを監視する。このようにすることで、フィルタ処理手段１０は、データ蓄積手段２０における輻輳発生を未然に防止できるので、ストリームデータ管理システム１におけるフィルタ処理の低下を防止することができる。
【０１４８】
本実施の形態に係るフィルタ処理手段１０、データ蓄積手段２０、共有情報管理手段３０は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体に記憶して提供することが可能である。また、そのプログラムを、インターネット等のネットワークを通して提供することも可能である。
【図面の簡単な説明】
【０１４９】
【図１】本実施の形態のストリームデータ管理システムを含むシステムの構成例を示した図である。
【図２】図１のデータ蓄積手段の詳細を示した機能ブロック図である。
【図３】図１の選択処理部によるデータ蓄積手段の選択処理を説明する図である。
【図４】図１のフィルタ実行制御部の詳細を示した機能ブロック図である。
【図５】図１の共有情報管理手段の機能ブロック図である。
【図６】ストリームデータが図１のデータ蓄積手段に蓄積されるまでの手順を示したフローチャートである。
【図７】図７は、図１のキュー状態テーブルの更新手順を示したフローチャートである。
【図８】図１のフィルタ処理手段のフィルタ処理手順を示したフローチャートである。
【図９】図１のフィルタ処理手段のフィルタ処理手順を示したフローチャートである。
【図１０】図１の選択処理部が、次にデータを取得するデータ蓄積手段を選択する手順を示したフローチャートである。
【図１１】図１のフィルタ処理手段から、再起動を許可するか否かの問い合わせを受信した共有情報管理手段の動作手順を示したフローチャートである。
【符号の説明】
【０１５０】
１      ストリームデータ管理システム
１０    フィルタ処理手段
１１,２１,３１    入力部
１２,２２,３２    処理部
１３,２３,３３    出力部
１４,２４,３４    記憶部
２０（２０Ａ〜２０Ｎ）  データ蓄積手段
３０    共有情報管理手段
４０    キュー割当手段
５０    クライアント
６０（６０Ａ〜６０Ｎ）    出力先
６１    ＤＢ（データベース）
６２    蓄積処理部
６３    検索処理部
７０    検索クライアント
１２１  選択処理部
１２２  データ取得処理部
１２３  フィルタ実行制御部
１２４  フィルタ処理部
１２６  フィルタ判定部
１２７  フィルタ取得部
１２８  再起動問い合わせ部
１２９  再起動部
１３０  フィルタ処理適用部
１４１  キュー状態テーブル
２２１  キュー状態監視部
２２２  キュー状態情報送信部
２４１  キュー
３２１  キュー状態情報通知閾値
３２２  ＳＩＤ（サービスＩＤ）テーブル
３２３  ファイルデータ
３２４  再起動情報
３４１  フィルタ送信部
３４２  再起動判定処理部
３４３  再起動情報更新部
【図１】
2008083808.tif 000005
【図２】
2008083808.tif 000006
【図３】
2008083808.tif 000007
【図４】
2008083808.tif 000008
【図５】
2008083808.tif 000009
【図６】
2008083808.tif 000010
【図７】
2008083808.tif 000011
【図８】
2008083808.tif 000012
【図９】
2008083808.tif 000013
【図１０】
2008083808.tif 000014
【図１１】
2008083808.tif 000015