(57)【要約】【課題】様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにし、かつ再フィルタ処理を行いやすくする。【解決手段】ストリームデータ処理システムは、複数のデータ蓄積装置および複数のフィルタ処理装置を用いる。また、情報管理装置３０において、各データ蓄積装置２０に蓄積される過去のストリームデータの位置情報（追記データ位置情報）をデータ位置管理ＤＢ３２５において管理する。そして、参照クライアント７０から、再フィルタ指示を受信したとき、この追記データ位置情報を参照して、当該ストリームデータを蓄積するデータ蓄積装置２０からこの再フィルタ処理の対象となるストリームデータを読み出し、再フィルタ処理を行う構成とした。【選択図】図１
2008294774.tif 000002
【特許請求の範囲】
【請求項１】
（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムにおけるストリームデータ処理方法であって、
前記情報管理装置は、
前記情報源端末から、前記ＳＩＤを含む当該ストリームデータの送信先割り当て要求を受信したとき、記憶部に記憶された前記ＳＩＤごとに、当該ＳＩＤのストリームデータの送信先であるデータ蓄積装置の識別情報を示したシステム情報を参照して、当該情報源端末へこのストリームデータの送信先である前記データ蓄積装置の識別情報を送信し、
前記情報源端末は、
前記情報管理装置から送信された識別情報に対応する前記データ蓄積装置へ前記ストリームデータを送信し、
前記データ蓄積装置はそれぞれ、前記ストリームデータを受信したとき、この受信したストリームデータをキュー部に出力するとともに、蓄積データ記憶部に蓄積し、
前記フィルタ処理装置は、
前記データ蓄積装置のキュー部におけるキュー状態に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択し、
前記選択されたデータ蓄積装置のキュー部から、このキュー部に蓄積されたストリームデータを取得し、
前記情報管理装置から受信した前記処理手順情報と、前記取得したストリームデータに付されたＳＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタ処理を決定し、前記決定したフィルタ処理を実行し、
前記データ蓄積装置はそれぞれ、
前記情報源端末からストリームデータを受信し、このストリームデータを蓄積データ記憶部に記憶したとき、このストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域を示す情報とを対応付けた追記データ位置情報を作成し、前記情報管理装置へ送信し、
前記情報管理装置は、
前記データ蓄積装置それぞれから送信された前記追記データ位置情報を記憶部に記憶し、
外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、
前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索し、
前記検索した追記データ位置情報を前記外部装置へ送信することを特徴とするストリームデータ処理方法。
【請求項２】
前記情報管理装置は、
前記外部装置から、前記再フィルタ処理の対象であるストリームデータに関する前記追記データ位置情報と前記再フィルタ処理の内容とを示した再フィルタ指示情報を受信したとき、
前記再フィルタ処理の対象とするストリームデータに用いる再フィルタ用ＳＩＤを発行し、
前記記憶部における前記システム情報に、前記再フィルタ用ＳＩＤと、このＳＩＤを持つストリームデータを蓄積するデータ蓄積装置の識別情報とを対応付けた情報を追加し、
前記記憶部における前記処理手順情報に、前記発行した再フィルタ処理用ＳＩＤと、このＳＩＤを持つストリームデータに対する前記再フィルタ処理の内容と対応付けた情報を追加することで、前記再フィルタ処理の内容を前記処理手順情報に反映し、
前記再フィルタ処理の内容を反映した処理手順情報を、前記フィルタ処理装置へ送信し、
前記複数のデータ蓄積装置のうち、いずれか１つのデータ蓄積装置を選択し、
この選択したデータ蓄積装置へ前記発行した再フィルタ処理用ＳＩＤを含む前記再フィルタ処理指示情報を送信し、
前記再フィルタ処理指示情報を受信したデータ蓄積装置は、
前記受信した再フィルタ指示情報に示される前記データ蓄積装置の記憶領域から、前記再フィルタ処理の対象であるストリームデータを取得し、
前記取得した再フィルタ処理の対象であるストリームデータに前記再フィルタ処理用のＳＩＤを付与し、
前記再フィルタ指示情報に含まれる再フィルタ用ＳＩＤをキーとして、前記情報管理装置から、このデータ蓄積装置が接続すべき前記データ蓄積装置の識別情報を取得し、
前記取得した識別情報に示される前記データ蓄積装置へ接続して、このデータ蓄積装置へ前記ストリームデータを送信し、
前記フィルタ処理装置は、
前記データ蓄積装置のキュー部から、前記再フィルタ処理用ＳＩＤを持つストリームデータを取得したとき、
前記情報管理装置から受信した前記再フィルタ処理の内容を反映した処理手順情報を参照して、前記フィルタ処理を実行することを特徴とする請求項１に記載のストリームデータ処理方法。
【請求項３】
前記情報管理装置は、
前記外部装置から、前記再フィルタ処理の対象とするストリームデータのＳＩＤ、受信時刻および当該ストリームデータに対し実行すべき再フィルタ処理の内容を示した再フィルタ指示情報を受信したとき、
前記再フィルタ処理の対象とするストリームデータのＳＩＤおよび受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索し、
前記検索した追記データ位置情報および前記再フィルタ処理の内容を示した再フィルタ指示情報を、前記複数のデータ蓄積装置のうち、いずれか１つのデータ蓄積装置へ送信することを特徴とする請求項２に記載のストリームデータ処理方法。
【請求項４】
前記情報管理装置は、
前記受信した再フィルタ指示情報に示される再フィルタ処理の内容が、当該ストリームデータに対するウィンドウ処理を含むか否かを判断し、
前記受信した再フィルタ指示情報に示される再フィルタ処理の内容が、当該ストリームデータに対するウィンドウ処理を含まないと判断した場合、
前記再フィルタ処理指示情報の送信先である前記データ蓄積装置を選択するとき、前記記憶部から検索された当該ストリームデータに関する追記データ位置情報を、当該ストリームデータを有するデータ蓄積装置ごとに分け、前記分けた追記データ位置情報を前記再フィルタ指示情報に含め、当該ストリームデータを有するデータ蓄積装置それぞれへ送信することを特徴とする請求項２または請求項３に記載のストリームデータ処理方法。
【請求項５】
（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムに用いられるストリームデータ処理プログラムであって、
前記情報管理装置であるコンピュータに、
情報源端末から、前記ＳＩＤを含む当該ストリームデータの送信先割り当て要求を受信したとき、記憶部に記憶された前記ＳＩＤごとに、当該ＳＩＤのストリームデータの送信先であるデータ蓄積装置の識別情報を示したシステム情報を参照して、当該情報源端末へこのストリームデータの送信先である前記データ蓄積装置の識別情報を送信するステップと、
前記データ蓄積装置それぞれから、当該データ蓄積装置において記憶された前記ストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域とを対応付けた追記データ位置情報を取得するステップと、
前記追記データ位置情報を記憶部に記憶するステップと、
外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、
前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索するステップと、
前記検索した追記データ位置情報を前記外部装置へ送信するステップと、
を実行させることを特徴とするストリームデータ処理プログラム。
【請求項６】
（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムであって、
前記データ蓄積装置は、
前記受信したストリームデータを蓄積する蓄積データ記憶部および前記フィルタ処理装置へ出力するストリームデータを一時的に蓄積するキュー部を備え、
前記フィルタ処理装置は、
前記データ蓄積装置のキュー部におけるキュー状態に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、
前記選択されたデータ蓄積装置のキュー部から、このキュー部に蓄積されたストリームデータを取得するデータ取得部と、
前記情報管理装置から受信した前記処理手順情報と、前記取得したストリームデータに付されたＳＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタ処理を決定し、前記決定したフィルタ処理を実行するフィルタ処理実行部とを備え、
前記データ蓄積装置はそれぞれ、
前記情報源端末から受信したストリームデータを蓄積する蓄積データ記憶部と、
前記ストリームデータを前記蓄積データ記憶部に記憶したとき、このストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域を示す情報とを対応付けた追記データ位置情報を作成し、前記情報管理装置へ送信する追記データ位置情報送信部とを備え、
前記情報管理装置は、
前記データ蓄積装置それぞれから送信された前記追記データ位置情報を記憶部に記憶するデータ位置管理部と、
外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、前記ストリームデータに関する前記追記データ位置情報を検索し、前記検索した追記データ位置情報を前記外部装置へ送信する追記データ位置管理部と、
を備えることを特徴とするストリームデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理技術に関する。
【背景技術】
【０００２】
従来、各種センサやＩＣタグ、携帯電話等により様々なデータを収集し、この収集したデータにフィルタ処理を行い、所定の利用先へ流通させるストリームデータ処理技術がある。このようなストリームデータ処理技術として、telegraphCQ（非特許文献１参照）が提案されている。また、このようなストリームデータ処理技術において、受信したデータをＤＢ（データベース）に蓄積し、このデータの検索を可能とする技術も提案されている（非特許文献２参照）。
【非特許文献１】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.,“TelegraphCQ:Continuous Dataflow Processing for an Uncertain World,” CIDR(2003)
【非特許文献２】山田他、ストリーム処理とデータベースを統合した実世界情報管理基盤、電子情報通信学会、データ工学ワークショップＤＥＷＳ２００６、2006
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記した技術のいずれもが、単一のサーバがストリームデータ処理を実行するものである。つまり、前記した複数のサーバがストリームデータ処理を実行することについては考慮されていない。このため、多数の情報源からストリームデータを受信する場合、システム全体の処理能力が低下してしまうという問題があった。また、このように複数のサーバがフィルタ処理を行う場合において、過去のデータ（フィルタ処理後のストリームデータ）の洗い直しやマイニング等のために再フィルタ処理が必要な場合もある。このような場合、各サーバのＤＢに蓄積された過去のストリームデータを読み出す必要があるが、再フィルタ処理の対象データがどのサーバのどのディレクトリに蓄積されているかを把握しなければならず、再フィルタ処理が困難であった。
【０００４】
そこで、本発明は前記した問題を解決し、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにし、かつ再フィルタ処理を行いやすくすることを目的とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、請求項１に記載の発明は、（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムにおけるストリームデータ処理方法であって、前記情報管理装置は、前記情報源端末から、前記ＳＩＤを含む当該ストリームデータの送信先割り当て要求を受信したとき、記憶部に記憶された前記ＳＩＤごとに、当該ＳＩＤのストリームデータの送信先であるデータ蓄積装置の識別情報を示したシステム情報を参照して、当該情報源端末へこのストリームデータの送信先である前記データ蓄積装置の識別情報を送信し、前記情報源端末は、前記情報管理装置から送信された識別情報に対応する前記データ蓄積装置へ前記ストリームデータを送信し、前記データ蓄積装置はそれぞれ、前記ストリームデータを受信したとき、この受信したストリームデータをキュー部に出力するとともに、蓄積データ記憶部に蓄積し、前記フィルタ処理装置は、前記データ蓄積装置のキュー部におけるキュー状態に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択し、前記選択されたデータ蓄積装置のキュー部から、このキュー部に蓄積されたストリームデータを取得し、前記情報管理装置から受信した前記処理手順情報と、前記取得したストリームデータに付されたＳＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタ処理を決定し、前記決定したフィルタ処理を実行し、前記データ蓄積装置はそれぞれ、前記情報源端末からストリームデータを受信し、このストリームデータを蓄積データ記憶部に記憶したとき、このストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域を示す情報とを対応付けた追記データ位置情報を作成し、前記情報管理装置へ送信し、前記情報管理装置は、前記データ蓄積装置それぞれから送信された前記追記データ位置情報を記憶部に記憶し、外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索し、前記検索した追記データ位置情報を前記外部装置へ送信することを特徴とするストリームデータ処理方法とした。
【０００６】
このような方法によれば、ストリームデータ処理システムは、複数のデータ蓄積装置および複数のフィルタ処理装置を用いるので、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにすることができる。また、このフィルタ処理装置はそれぞれ、データ蓄積装置からストリームデータを取得するとき、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理負荷のバランスをとることができる。さらに、データ蓄積装置はそれぞれ、この情報源端末から受信したストリームデータをキュー部に送信するとともに、蓄積データ記憶部にも蓄積する。そして、データ蓄積装置はそれぞれ、自データ蓄積装置に蓄積したストリームデータの記憶位置を情報管理装置に送信し、情報管理装置は、この記憶位置（追記データ位置情報）を記憶部に記憶する。このようにすることで、情報管理装置は外部装置から再フィルタ処理の対象となるストリームデータの検索要求を受け付けたとき、このストリームデータの記憶位置を外部装置へ応答することができる。つまり、外部装置は、再フィルタ処理の対象のストリームデータの記憶位置を知ることができる。なお、このような追記データ位置情報を受信した外部装置は、情報管理装置へ再フィルタ処理の指示を送信するとき、この追記データ位置情報をそのまま送信してしてもよいし、この追記データ位置情報に示されるストリームデータのうち、所定のストリームデータを選択して、再フィルタ処理の指示を送信してもよい。
【０００７】
請求項２に記載の発明は、前記情報管理装置が、前記外部装置から、前記再フィルタ処理の対象であるストリームデータに関する前記追記データ位置情報と前記再フィルタ処理の内容とを示した再フィルタ指示情報を受信したとき、前記再フィルタ処理の対象とするストリームデータに用いる再フィルタ用ＳＩＤを発行し、前記記憶部における前記システム情報に、前記再フィルタ用ＳＩＤと、このＳＩＤを持つストリームデータを蓄積するデータ蓄積装置の識別情報とを対応付けた情報を追加し、前記記憶部における前記処理手順情報に、前記発行した再フィルタ処理用ＳＩＤと、このＳＩＤを持つストリームデータに対する前記再フィルタ処理の内容と対応付けた情報を追加することで、前記再フィルタ処理の内容を前記処理手順情報に反映し、前記再フィルタ処理の内容を反映した処理手順情報を、前記フィルタ処理装置へ送信し、前記複数のデータ蓄積装置のうち、いずれか１つのデータ蓄積装置を選択し、この選択したデータ蓄積装置へ前記発行した再フィルタ処理用ＳＩＤを含む前記再フィルタ処理指示情報を送信し、前記再フィルタ処理指示情報を受信したデータ蓄積装置は、前記受信した再フィルタ指示情報に示される前記データ蓄積装置の記憶領域から、前記再フィルタ処理の対象であるストリームデータを取得し、前記取得した再フィルタ処理の対象であるストリームデータに前記再フィルタ処理用ＳＩＤを付し、前記再フィルタ指示情報に含まれる再フィルタ用ＳＩＤをキーとして、前記情報管理装置から、このデータ蓄積装置が接続すべき前記データ蓄積装置の識別情報を取得し、前記取得した識別情報に示される前記データ蓄積装置へ接続して、このデータ蓄積装置へ前記ストリームデータを送信し、前記フィルタ処理装置は、前記データ蓄積装置のキュー部から、前記再フィルタ処理用のＳＩＤを持つストリームデータを取得したとき、前記情報管理装置から受信した前記再フィルタ処理の内容を反映した処理手順情報を参照して、前記フィルタ処理を実行することを特徴とする請求項１に記載のストリームデータ処理方法とした。
【０００８】
このような方法によれば、外部装置は、情報管理装置から、再フィルタ処理の対象のストリームデータの記憶位置を受信することができる。つまり、外部装置は、情報管理装置に、この再フィルタ処理の対象のストリームデータの記憶位置を含む再フィルタ指示情報を送信する。そして、この情報管理装置は、システム内のデータ蓄積装置に、この再フィルタ処理指示情報に示されるデータ蓄積装置から当該ストリームデータを取得させる。そして、このストリームデータを取得したデータ蓄積装置は、このストリームデータを自データ蓄積装置のキュー部に流し込む。次に、フィルタ処理装置は、このデータ蓄積装置のキュー部に流し込まれた再フィルタ処理の対象のストリームデータを取得すると、情報管理装置から受信しておいた処理手順情報（再フィルタ処理の内容を反映した処理手順情報）を参照して、このストリームデータに対し、再フィルタ処理を実行することができる。
【０００９】
請求項３に記載の発明は、前記情報管理装置が、前記外部装置から、前記再フィルタ処理の対象とするストリームデータのＳＩＤ、受信時刻および当該ストリームデータに対し実行すべき再フィルタ処理の内容を示した再フィルタ指示情報を受信したとき、前記再フィルタ処理の対象とするストリームデータのＳＩＤおよび受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索し、前記検索した追記データ位置情報および前記再フィルタ処理の内容を示した再フィルタ指示情報を、前記複数のデータ蓄積装置のうち、いずれか１つのデータ蓄積装置へ送信することを特徴とする請求項２に記載のストリームデータ処理方法とした。
【００１０】
このような方法によれば、情報管理装置は、外部装置へ再フィルタ処理の対象のストリームデータに関する追記データ位置情報を送信する必要がなくなる。
【００１１】
請求項４に記載の発明は、前記情報管理装置が、前記受信した再フィルタ指示情報に示される再フィルタ処理の内容が、当該ストリームデータに対するウィンドウ処理を含むか否かを判断し、前記受信した再フィルタ指示情報に示される再フィルタ処理の内容が、当該ストリームデータに対するウィンドウ処理を含まないと判断した場合、前記再フィルタ処理指示情報の送信先である前記データ蓄積装置を選択するとき、前記記憶部から検索された当該ストリームデータに関する追記データ位置情報を、当該ストリームデータを有するデータ蓄積装置ごとに分け、前記分けた追記データ位置情報を前記再フィルタ指示情報に含め、当該ストリームデータを有するデータ蓄積装置それぞれへ送信することを特徴とする請求項２または請求項３に記載のストリームデータ処理方法とした。
【００１２】
このような方法によれば、情報管理装置は、再フィルタ処理の内容が、当該ストリームデータに対するウィンドウ処理を行う必要がなければ、当該ストリームデータを有するデータ蓄積装置それぞれが、自データ蓄積装置の蓄積データ記憶部からストリームデータを読み出し、キュー部に流し込むことになる。従って、再フィルタ処理の対象のストリームデータの読み出しを効率よく行うことができる。
【００１３】
請求項５に記載の発明は、（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムに用いられるストリームデータ処理プログラムであって、前記情報管理装置であるコンピュータに、情報源端末から、前記ＳＩＤを含む当該ストリームデータの送信先割り当て要求を受信したとき、記憶部に記憶された前記ＳＩＤごとに、当該ＳＩＤのストリームデータの送信先であるデータ蓄積装置の識別情報を示したシステム情報を参照して、当該情報源端末へこのストリームデータの送信先である前記データ蓄積装置の識別情報を送信するステップと、前記データ蓄積装置それぞれから、当該データ蓄積装置において記憶された前記ストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域とを対応付けた追記データ位置情報を取得するステップと、前記追記データ位置情報を記憶部に記憶するステップと、外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、当該ストリームデータに関する前記追記データ位置情報を検索するステップと、前記検索した追記データ位置情報を前記外部装置へ送信するステップと、を実行させることを特徴とするストリームデータ処理プログラムとした。
【００１４】
このようなプログラムによれば、コンピュータを、請求項１に記載の各ステップを実行する情報管理装置として機能させることができる。
【００１５】
請求項６に記載の発明は、（１）複数の情報源端末より送信されたストリームデータを蓄積する複数のデータ蓄積装置と、（２）このデータ蓄積装置から取得した前記ストリームデータに対しフィルタ処理を実行する複数のフィルタ処理装置と、（３）前記ストリームデータの種別を示すＳＩＤごとに、このＳＩＤを持つストリームデータに対し実行すべき前記フィルタ処理およびそのフィルタ処理の適用手順を示した処理手順情報を前記フィルタ処理装置へ送信する情報管理装置とを備えるストリームデータ処理システムであって、前記データ蓄積装置は、前記受信したストリームデータを蓄積する蓄積データ記憶部および前記フィルタ処理装置へ出力するストリームデータを一時的に蓄積するキュー部を備え、前記フィルタ処理装置は、前記データ蓄積装置のキュー部におけるキュー状態に基づき、前記ストリームデータの取得元となる前記データ蓄積装置を選択する選択処理部と、
前記選択されたデータ蓄積装置のキュー部から、このキュー部に蓄積されたストリームデータを取得するデータ取得部と、前記情報管理装置から受信した前記処理手順情報と、前記取得したストリームデータに付されたＳＩＤとを参照して、前記取得したストリームデータに対し実行すべきフィルタ処理を決定し、前記決定したフィルタ処理を実行するフィルタ処理実行部とを備え、前記データ蓄積装置はそれぞれ、前記情報源端末から受信したストリームデータを蓄積する蓄積データ記憶部と、前記ストリームデータを前記蓄積データ記憶部に記憶したとき、このストリームデータのＳＩＤと、このストリームデータの受信時刻と、自データ蓄積装置の識別情報およびこのストリームデータの記憶領域を示す情報とを対応付けた追記データ位置情報を作成し、前記情報管理装置へ送信する追記データ位置情報送信部とを備え、前記情報管理装置は、前記データ蓄積装置それぞれから送信された前記追記データ位置情報を記憶部に記憶するデータ位置管理部と、外部装置から、当該ストリームデータのＳＩＤおよび受信時刻を含む前記ストリームデータの検索要求を受信したとき、前記検索要求に含まれる前記ＳＩＤおよび前記受信時刻をキーとして、前記記憶部から、前記ストリームデータに関する前記追記データ位置情報を検索し、前記検索した追記データ位置情報を前記外部装置へ送信する追記データ位置管理部と、を備えることを特徴とするストリームデータ処理システムとした。
【００１６】
このような構成によれば、ストリームデータ処理システムは、複数のデータ蓄積装置および複数のフィルタ処理装置を用いるので、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力が低下しないようにすることができる。また、このフィルタ処理装置はそれぞれ、データ蓄積装置からストリームデータを取得するとき、各データ蓄積装置におけるキュー状態に基づき、ストリームデータを取得するデータ蓄積装置を決定する。例えば、フィルタ処理装置は、より入力スループットが大きいデータ蓄積装置からストリームデータを取得するようにする。これにより、フィルタ処理装置同士で処理負荷の情報をやりとりしなくても、各フィルタ処理装置同士のフィルタ処理負荷のバランスをとることができる。さらに、データ蓄積装置はそれぞれ、この情報源端末から受信したストリームデータをキュー部に送信するとともに、蓄積データ記憶部にも蓄積する。そして、データ蓄積装置はそれぞれ、自データ蓄積装置に蓄積したストリームデータの記憶位置を情報管理装置に送信し、情報管理装置は、この記憶位置（追記データ位置情報）を記憶部に記憶する。このようにすることで、情報管理装置は外部装置から再フィルタ処理の対象となるストリームデータの検索要求を受け付けたとき、このストリームデータの記憶位置を外部装置へ応答することができる。つまり、外部装置は、再フィルタ処理の対象のストリームデータの記憶位置を知ることができる。なお、このような追記データ位置情報を受信した外部装置は、情報管理装置へ再フィルタ処理の指示を送信するとき、この追記データ位置情報をそのまま送信してしてもよいし、この追記データ位置情報に示されるストリームデータのうち、所定のストリームデータを選択して、再フィルタ処理の指示を送信してもよい。
【発明の効果】
【００１７】
本発明によれば、様々な情報源からストリームデータを受信する場合であっても、システム全体の処理能力を低下させず、かつ再フィルタ処理を行いやすくすることができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を実施するための最良の形態（以下、実施の形態という）を、第１の実施の形態および第２の実施の形態に分けて説明する。なお、各実施の形態におけるストリームデータは、例えば、ＸＭＬ（Extensible Markup Language）形式のデータ等である。
【００１９】
≪第１の実施の形態≫
図１は、第１の実施の形態のストリームデータ処理システムを示すブロック図である。
ストリームデータ処理システム（以下、適宜システムと略す）は、計測データやログデータ等の時系列で作成されるデータにサービスＩＤ（ＳＩＤ）を付し、このデータをストリームデータとして送信する追記クライアント（情報源端末）５０（５０Ａ〜５０Ｎ）と、追記クライアント５０から送信されたストリームデータを蓄積するデータ蓄積装置２０（２０Ａ〜２０Ｎ）と、このデータ蓄積装置２０からストリームデータを取得し、フィルタ処理を行うフィルタ処理装置１０（１０Ａ〜１０Ｎ）と、フィルタ処理後のストリームデータを蓄積するデータベース装置６０（６０Ａ〜６０Ｎ）と、このデータベース装置６０からデータの検索を行う参照クライアント（外部装置）７０（７０Ａ〜７０Ｎ）と、このデータ蓄積装置２０やフィルタ処理装置１０を動作させるための各種情報を管理する情報管理装置３０とを含んで構成される。なお、ＳＩＤとは、ストリームデータの種類や、このストリームデータの送信元（情報源）を識別するための識別情報である。
【００２０】
なお、（１）追記クライアント５０と、情報管理装置３０およびデータ蓄積装置２０（２０Ａ〜２０Ｎ）との間、（２）情報管理装置３０と、データ蓄積装置２０（２０Ａ〜２０Ｎ）との間、（３）データ蓄積装置２０（２０Ａ〜２０Ｎ）同士、（４）データ蓄積装置２０（２０Ａ〜２０Ｎ）と、フィルタ処理装置１０（１０Ａ〜１０Ｎ）の間、（５）フィルタ処理装置１０（１０Ａ〜１０Ｎ）とデータベース装置６０（６０Ａ〜６０Ｎ）との間、（６）データベース装置６０（６０Ａ〜６０Ｎ）と、参照クライアント７０（７０Ａ〜７０Ｎ）との間はそれぞれ、図示しないネットワークにより接続される。さらに、追記クライアント５０、データ蓄積装置２０、フィルタ処理装置１０、データベース装置６０、参照クライアント７０の数は、それぞれＮ個としたが、これに限定されない。
【００２１】
＜追記クライアント＞
追記クライアント（外部装置）５０は、通信インタフェース等を備えるコンピュータである。この追記クライアント５０は、当該追記クライアント５０に割当てられたＳＩＤを付したデータを順次ストリームデータとしてデータ蓄積装置２０へ送信する。
【００２２】
このとき送信するストリームデータは、各地の気温データや、コンピュータのログ等、時系列で計測されるデータであり、例えば、ＸＭＬ形式で記述される。また、追記クライアント５０の接続先、つまり、ストリームデータの送信先であるデータ蓄積装置２０の追記部２２１,２２２は、情報管理装置３０から指示された（割り当てられた）ものとする。
【００２３】
＜情報管理装置＞
情報管理装置３０は、フィルタ処理に用いる各種データを蓄積するともに、追記クライアント５０の接続先の割り当て、データ蓄積装置２０（２０Ａ〜２０Ｎ）におけるストリームデータの蓄積情報（追記データ位置情報）の記録、参照クライアント７０からの再フィルタ指示の受け付け等を行う。
【００２４】
このような情報管理装置３０は、記憶部３２と、接続先割当部３１と、データ再フィルタ制御部３３と、データ位置管理部３４と、情報管理部３５と、再起動処理部３６とを備える。なお、ここでは図示を省略しているが、情報管理装置３０は、各種データの入力を司る入力部と、出力を司る出力部と、ＣＰＵ（Central Processing Unit）、メモリ、通信インタフェース等を備えるコンピュータにより実現される。
【００２５】
記憶部３２は、システム情報３２１、情報源情報（ＳＩＤ情報）３２２、スキーマ情報３２３、処理手順情報３２４、データ位置管理ＤＢ（データベース）３２５および再起動情報３２６を所定領域に備える。
【００２６】
システム情報３２１は、ＳＩＤごとに、そのＳＩＤのストリームデータの送信先を示した情報である。ここでの送信先は、例えばデータ蓄積装置２０の識別情報（ＩＰアドレス等）およびそのデータ蓄積装置２０における追記部２２１，２２２の識別情報（ＩＤ）を示した情報（表１参照）である。このシステム情報３２１は、接続先割当部３１や、データ蓄積装置２０の蓄積データ取得部２５（後記）により参照される。なお、この追記部２２１，２２２のＩＤは、追記部２２１，２２２に割当てられたポート番号を用いてもよい。
【００２７】
【表１】
2008294774.tif 000003
【００２８】
図２は、図１の情報源情報およびスキーマ情報を例示した図である。
【００２９】
情報源情報（ＳＩＤ情報）３２２は、当該ＳＩＤの定義情報であり、図２の符号２０１に示すようにＳＩＤと、当該ＳＩＤを持つストリームデータのスキーマ情報の識別情報（ＳＣＨＥＭＡ）と、このストリームデータに用いるフィルタの識別情報（ＦＩＬＴＥＲ）、このストリームデータのウィンドウサイズ（ＷＩＮＤＯＷ＿ＳＩＺＥ）等を示した情報である。図２の符号２０１に示す情報源情報は、ＳＩＤ「ＤＭＬ００１」の定義情報であり、このストリームデータのスキーマは「ＤＭＬ００１＿ＳＣＨＥＭＡ」に定義されるスキーマであり、このストリームデータに用いるフィルタは「ＸｐａｔｈＦｉｌｔｅｒ（“ｕｐｄａｔｅ”）」であり、このストリームデータのウィンドウサイズは「１」であることを示す。
【００３０】
スキーマ情報３２３は、当該ＳＩＤを持つストリームデータのスキーマの定義情報である。図２の符号２０２に示すスキーマ情報は、「ＤＭＬ００１＿ＳＣＨＥＭＡ」、つまり、ＳＩＤ「ＤＭＬ００１」のスキーマ情報であり、このストリームデータのスキーマは、「ｃｏｌ＿ｔ」は「ｔｉｍｅｓｔａｍｐ」であり、「ｃｏｌ＿ｉｄ」は「ｉｎｔ」であり、「ｃｏｌ＿ｄ」は「ｘｍｌ」であることを示す。
【００３１】
処理手順情報３２４は、ＳＩＤごとに、そのＳＩＤのストリームデータに対しフィルタ処理装置１０が適用すべきフィルタ処理、つまり、フィルタオペレーション（ＦＯＰ）系列（適用すべきＦＯＰおよびそのＦＯＰの適用手順）が示される。また、この処理手順情報は、表２に例示するように、ストリームデータのスキーマ情報（スキーマ定義情報）やフィルタ処理を行うときのウィンドウサイズ（表２のスキーマ情報における括弧内の値参照）を含んでいてもよい。
【００３２】
例えば、表２に示す処理手順情報のＳＩＤ「１０」のスキーマ情報には、「NAME」に関するフィルタ処理を行うときには、１０個のデータ（レコード）が必要であることを示す。また、このストリームデータには「ＦＯＰ１０２、ＦＯＰ１０３、ＦＯＰ１０４」というＦＯＰを適用することを示す。なお、このスキーマ情報は、スキーマ情報３２３に記憶されるものと同じものである。
【００３３】
【表２】
2008294774.tif 000004
【００３４】
データ位置管理ＤＢ３２５は、システム内の各データ蓄積装置２０（２０Ａ〜２０Ｎ）に蓄積されるストリームデータの記憶位置を示した追記データ位置情報を蓄積する。この追記データ位置情報は、後記する図５に例示するように、ストリームデータのＳＩＤと、このデータ蓄積装置２０がストリームデータを受信した時刻、このストリームデータの記憶位置（追記データ位置）とを対応付けて記憶したものである。なお、追記データ位置とは、このストリームデータを記憶するデータ蓄積装置２０の識別情報およびこのデータ蓄積装置２０における記憶位置を示した情報である。
【００３５】
このように、情報管理装置３０がデータ位置管理ＤＢ３２５により、各データ蓄積装置２０に蓄積されるストリームデータの記憶位置を把握することで、情報管理装置３０は各データ蓄積装置２０に蓄積されたストリームデータから再フィルタの対象のストリームデータを効率的に見つけられる。なお、この追記データ位置情報は、各データ蓄積装置２０から受信したものである。また、この追記データ位置情報におけるストリームデータを受信した時刻（受信時刻）に代えて、このストリームデータがデータ蓄積装置２０の蓄積データ記憶部２４（後記）に記憶された時刻を用いてよい。このデータ位置管理ＤＢ３２５における追記データ位置情報の管理方法は、例えば、B-Tree、B+Tree、R-Tree、Red Black Tree等を用いる。
【００３６】
図１の説明に戻る。再起動情報３２６は、システム内において再起動を許可するフィルタ処理装置１０の数を示した情報である。例えば、システム全体において、再起動によりフィルタ処理を停止してもよいフィルタ処理装置１０の数が「１０」の場合、この再起動情報３２６の初期値として、「１０」を設定しておく。この再起動情報３２６は、再起動処理部３６（後記）がフィルタ処理装置１０の再起動を許可するか否かを判断するときに参照される。
【００３７】
接続先割当部３１は、外部装置（追記クライアント５０またはデータ蓄積装置２０）から接続先割当要求を受信すると、この接続先割当要求に含まれるＳＩＤをキーとしてシステム情報３２１から、この外部装置が接続すべき接続先（データ蓄積装置２０における追記部２２１,２２２）を検索する。そして、接続先割当部３１は、この検索した接続先（データ蓄積装置２０における追記部２２１,２２２）を、この外部装置の接続先として指示する。なお、ここで指示する接続先は、例えば、データ蓄積装置２０の識別情報（ＩＰアドレス等）と、追記部２２１,２２２のポート番号との組み合わせ等である。また、接続先割当部３１は、各データ蓄積装置２０の負荷状態を考慮して、より処理負荷の少ない接続先を選択するようにしてもよい。つまり、接続先割当部３１は、接続先に変更し、各データ蓄積装置２０間のロードバランスをとるようにしてもよい。
【００３８】
図３は、図１のストリームデータ処理システムの動作概要を示すブロック図である。データ再フィルタ制御部３３は、図３に示すように、参照クライアント７０から、再フィルタ指示（再フィルタ処理の対象のストリームデータのＳＩＤ、時区間等を示した情報、再フィルタ処理の内容）を受信すると、システム内の任意のマシン（データ蓄積装置２０）を決定する。この後、データ再フィルタ制御部３３は、この決定したデータ蓄積装置２０のプロセス管理部２６（後記）へ再フィルタ指示を送信する。なお、ここでの再フィルタ処理とは、例えば、フィルタ処理に用いる閾値やパラメータの変更、フィルタ処理の手順の変更等である。また、この再フィルタ指示には、この再フィルタ処理の対象のストリームデータに関する追記データ位置情報を含める。この追記データ位置情報は、データ位置管理部３４により、データ位置管理ＤＢ３２５から取得する。
【００３９】
このとき、データ再フィルタ制御部３３は、この再フィルタ処理用に新たなＳＩＤ（再フィルタ用ＳＩＤ）を発行し、この再フィルタ指示に含める。なお、このデータ再フィルタ制御部３３は、情報管理部３５（後記）に、この再フィルタ用ＳＩＤと、当該ＳＩＤをもつストリームデータに関する情報を、システム情報３２１、情報源情報３２２、スキーマ情報３２３、処理手順情報３２４に追加登録するよう指示する。
【００４０】
例えば、データ再フィルタ制御部３３は、ＳＩＤ「１０」、時区間「Ａ〜Ｂ」のストリームデータに対し再フィルタ処理を行うという再フィルタ指示を受信したとき、当該ストリームデータに対し再フィルタ用ＳＩＤ「３０」という新たなＳＩＤを発行する。そして、データ再フィルタ制御部３３は、情報管理部３５（後記）に、当該ＳＩＤをもつストリームデータに関する情報を、システム情報３２１、情報源情報３２２、スキーマ情報３２３、処理手順情報３２４に追加するよう指示する。また、データ再フィルタ制御部３３は、情報管理部３５（後記）に、当該再フィルタ用ＳＩＤに関する処理手順情報３２４に、この再フィルタ指示に示される再フィルタ処理の内容（例えば、フィルタにおける閾値の変更等）を書き加えるよう指示する。なお、データ再フィルタ制御部３３がこのように新たなＳＩＤ（再フィルタ用ＳＩＤ）を発行し、再フィルタ処理の対象のストリームデータに割当てるのは、もともと同じＳＩＤを持つストリームデータであっても、再フィルタ処理の対象としたいストリームデータのみに再フィルタ処理を適用することができるからである。
【００４１】
データ位置管理部３４は、各データ蓄積装置２０から受信した追記データ位置情報を、データ位置管理ＤＢ３２５に記憶する。
【００４２】
図４は、図１のストリームデータ処理システムの動作概要を示すブロック図である。例えば、図４に示すように、データ位置管理部３４は、データ蓄積装置２０の各追記部２２１，２２２（後記）からＳＩＤ、時刻および追記データ位置を含む追記データ位置情報を受信すると、この追記データ位置情報を順次、データ位置管理ＤＢ３２５に追加登録していく。また、このデータ位置管理部３４は、当該ストリームデータの時区間（受信時刻の始まりから終わりまでの時間）とＳＩＤとを含む再フィルタ指示（または追記データ位置情報の検索要求）を受信すると、この時区間およびＳＩＤをキーとして、データ位置管理ＤＢ３２５から追記データ位置情報を検索する。つまり、再フィルタ指示に示されるストリームデータがどのデータ蓄積装置２０のどの記憶位置に記憶されているかを検索する。なお、このデータ位置管理部３４は、この検索した追記データ位置情報を追記データ位置リストとして参照クライアント７０へ送信するようにしてもよい。
【００４３】
図１の説明に戻る。情報管理部３５は、記憶部３２の各情報を追加したり変更したりする。例えば、参照クライアント７０から送信された再フィルタ処理の内容であるフィルタ処理の閾値変更情報を、処理手順情報３２４に反映する。また、各フィルタ処理装置１０の要求に応じて、処理手順情報３２４に登録された情報源情報３２２、スキーマ情報３２３、処理手順情報等をフィルタ処理装置１０へ送信する。これにより、この情報管理装置３０に新たに追加された再フィルタ処理の内容を、フィルタ処理装置１０へ反映させることができる。
【００４４】
再起動処理部３６は、フィルタ処理装置１０から、再起動を許可するか否かの問い合わせを受信すると、再起動情報３２６を参照して、このフィルタ処理装置１０の再起動を許可するか否かを応答する。例えば、再起動情報３２６に示される値が「１」以上であれば再起動を許可するが、「０」なら再起動を許可しない。また、再起動処理部３６が、１台のフィルタ処理装置１０の再起動を許可したとき、この再起動情報の値を「１」減らす。そして、このフィルタ処理装置１０の再起動が完了すると、再起動処理部３６は、再起動情報３２６の値を元に戻す。このようにすることで、システム内において再起動によりフィルタ処理を停止するフィルタ処理装置の数を所定数以下にすることができ、システム内のフィルタ処理の効率が極端に低下するのを防止できる。
【００４５】
なお、前記した記憶部は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等により実現される。また、接続先割り当て部３１、データ再フィルタ制御部３３、データ位置管理部３４、情報管理部３５、再起動処理部３６は、ＣＰＵによるプログラム実行処理または専用のハードウェアにより実現される。ＣＰＵによるプログラム実行処理により実現する場合、記憶部３２はこれらのプログラムを記憶する。
【００４６】
＜データ蓄積装置＞
データ蓄積装置２０（２０Ａ〜２０Ｎ）はそれぞれ、追記クライアント５０から送信されたストリームデータを一時的に蓄積する。このようなデータ蓄積装置２０は、入力部２１と、出力部２３と、追記部２２１，２２２と、蓄積データ記憶部２４と、蓄積データ取得部２５と、プロセス管理部２６とを含む。なお、追記部２２１，２２２の数は図１に示した数に限定されない。
【００４７】
入力部２１は、追記クライアント５０からストリームデータを受信する。出力部２３は、追記部２２１，２２２から出力されたストリームデータをフィルタ処理装置１０へ出力する。また、追記部２２１，２２２はそれぞれ、受信したストリームデータをキュー部２２６（後記）に出力するとともに、蓄積データ記憶部２４に蓄積する。このような追記部２２１，２２２は、ストリーム受付部２２３と、追記データ蓄積部２２４と、キュー管理部２２５と、キュー部２２６と、追記データ位置情報送信部２２７と、を含んで構成される。
【００４８】
ストリーム受付部２２３は、追記クライアント５０から、入力部２１経由でストリームデータを受信する。そして、この受信したストリームデータを追記データ蓄積部２２４とキュー管理部２２５へ出力する。
【００４９】
追記データ蓄積部２２４は、ストリームデータを蓄積データ記憶部２４に蓄積する。なお、追記データ蓄積部２２４は、追記クライアント５０から受信したストリームデータをそのまま蓄積データ記憶部２４に蓄積するようにするのが好ましい。これは、この蓄積データ記憶部２４内のストリームデータの管理に、例えば、ＤＢＭＳ（DataBase Management System）等を用いると、データのトランザクション処理に伴う、各種ジャーナル、チェックポイント等が必要になり、大量のストリームデータを追記するとき、効率が悪いからである。
【００５０】
キュー管理部２２５はストリーム受付部２２３から出力されたデータ（ストリームデータ）をキュー部２２６に出力する。そして、フィルタ処理装置１０からストリームデータの取得要求があったとき、このキュー部２２６に蓄積されたストリームデータをフィルタ処理装置１０へ送信する。
【００５１】
追記データ位置情報送信部２２７は、この追記部２２１，２２２において、蓄積データ記憶部２４にストリームデータが蓄積（記憶）されると、このストリームデータの追記データ位置情報を作成し、この追記データ位置情報を情報管理装置３０へ送信する。なお、この追記データ位置情報に示される追記データ位置は、例えば、ＵＲＩ（Uniform Resource Identifier）、ファイルパス、ロケーションＩＤ等により記述される。
【００５２】
キュー部２２６は、キュー管理部２２５から出力されたストリームデータをキューとして蓄積する。
【００５３】
蓄積データ記憶部２４は、追記部２２１，２２２から出力されたストリームデータを蓄積する。
【００５４】
蓄積データ取得部２５は、前記した図３に示すように、プロセス管理部２６からの再フィルタ指示を受信すると、この再フィルタ指示基づき、自データ蓄積装置２０、または他のデータ蓄積装置２０の蓄積データ記憶部２４から、ストリームデータを取得する。そして、この取得したストリームデータに、プロセス管理部２６から指示された再フィルタ用ＳＩＤを付与する。そして、この蓄積データ取得部２５は、この再フィルタ用ＳＩＤを付与したストリームデータの送信先を、前記した情報管理装置３０の接続先割当部３１に問い合わせ、この接続先割当部３１から指示されたデータ蓄積装置２０の追記部（例えば、追記部２２２）へ、このストリームデータを流し込む。そして、このストリームデータは、追記部２２１，２２２のキュー部２２６に蓄積された後、フィルタ処理装置１０が取得し、再フィルタ処理が行われる。
【００５５】
プロセス管理部２６は、データ蓄積装置２０内の蓄積データ取得部２５や、追記部２２１，２２２の制御を行う。例えば、プロセス管理部２６は、情報管理装置３０から再フィルタ指示を受信したとき、この指示内容に基づき、自データ蓄積装置２０の蓄積データ取得部２５に対し、再フィルタ処理の対象となるストリームデータの取得を指示する。
【００５６】
なお、入力部２１および出力部２３は、追記クライアント５０やフィルタ処理装置１０との間でデータ入出力可能な入出力インタフェースにより実現される。
【００５７】
このデータ蓄積装置２０もコンピュータにより実現され、蓄積データ記憶部２４は、例えば、ＲＡＭ、ＨＤＤ等により実現される。また、蓄積データ取得部２５、プロセス管理部２６、追記部２２１，２２２のストリーム受付部２２３、追記データ蓄積部２２４、キュー管理部２２５、追記データ位置情報送信部２２７は、ＣＰＵによるプログラムの実行処理または専用ハードウェア等により実現される。キュー部２２６は、このデータ蓄積装置２０のＲＡＭ等に形成される。
【００５８】
なお、このキュー管理部２２５は、キュー部２２６のキュー状態（入力スループット、出力スループットおよびＣＰＵコスト等）を監視する。そして、このキュー状態が所定の閾値以上に変化したとき、このデータ蓄積装置２０におけるキュー状態情報を各フィルタ処理装置１０へ送信するようにしてもよい。このときのキュー状態情報には、自身のデータ蓄積装置２０の識別情報が付されたものである。また、このときのキュー状態情報の送信は、各フィルタ処理装置１０への同報送信等により行われる。このようにすることで、データ蓄積装置２０は、自身のキュー状態に変化があったとき、自身のキュー状態をいち早く各フィルタ処理装置１０へ通知することができる。
【００５９】
＜フィルタ処理装置＞
フィルタ処理装置１０は、データ蓄積装置２０（２０Ａ〜２０Ｎ）から、ストリームデータを取得し、この取得したストリームデータに対しフィルタ処理を実行する。このようなフィルタ処理装置１０は、入力部１１と、出力部１３と、処理部１２（１２Ａ，１２Ｂ）を備える。なお、この処理部の数は、図１に示す数に限定されない。
【００６０】
入力部１１は、データ蓄積装置２０からストリームデータを受信する。出力部１３は、フィルタ処理後のストリームデータをデータベース装置６０へ出力する。
【００６１】
処理部１２は、キュー選択部１２１と、データ取得部１２２と、フィルタ実行制御部１２３と、フィルタ処理部１２４（１２４Ａ〜１２４Ｎ）と、再起動問い合わせ部１２５とを備える。
【００６２】
キュー選択部１２１は、ストリームデータの取得元となるデータ蓄積装置２０を選択する。このときのデータ蓄積装置２０の選択は、例えば、データ蓄積装置２０から送信されてきた、当該データ蓄積装置２０のキュー状態情報（入力スループット、出力スループット、ＣＰＵコスト（フィルタコスト）等を示した情報）をもとに、入力スループットの値の大きいデータ蓄積装置２０ほど高確率で（優先的に）選択するようにする。
【００６３】
データ取得部１２２は、キュー選択部１２１により選択されたデータ蓄積装置２０からストリームデータを取得する。なお、このストリームデータを取得するタイミングは、例えば、自身のフィルタ処理装置１０において処理しているデータがなくなったときでもよいし、処理中のデータが所定の閾値以下となったときでもよい。
【００６４】
フィルタ実行制御部１２３は、データ取得部１２２から取得したストリームデータに付されたＳＩＤと、情報管理装置３０から受信しておいた、情報源情報３２２、スキーマ情報３２３、処理手順情報３２４とを参照して、このＳＩＤを持つストリームデータに対し実行すべきフィルタ処理を決定する。なお、ここでのフィルタ処理とは、ＦＯＰおよびそのＦＯＰの適用手順を含むものである。そして、フィルタ実行制御部１２３は、決定したフィルタ処理をフィルタ処理部１２４に実行させる。なお、この情報管理装置３０から取得した、情報源情報３２２、スキーマ情報３２３、処理手順情報３２４は、フィルタ処理装置１０の図示しない記憶部に記憶され、フィルタ処理を決定するときに適宜参照される。
【００６５】
なお、このフィルタ実行制御部１２３は、このストリームデータに対し実行すべきフィルタ処理機能が自身のフィルタ処理装置１０にないとき（例えば、再フィルタ用ＳＩＤが付与されたストリームデータを受信したが、このＳＩＤに対する処理手順情報がなかったとき）、情報管理装置３０から、このフィルタ処理機能を実現するためのファイルデータ（フィルタオペレーションを含む）をダウンロードし、機能追加を行う。このようにすることで、フィルタ処理装置１０は、再フィルタ処理を確実に実行できる。
【００６６】
フィルタ処理部１２４は、フィルタ実行制御部１２３からの指示に基づき、ストリームデータに対しフィルタ処理を実行する。このフィルタ処理部１２４におけるフィルタ処理の内容はＦＯＰにより記述され、フィルタ処理部１２４は、このＦＯＰに基づきフィルタ処理を実行する。このＦＯＰは例えば「Ｘ℃以上の温度の情報を持つストリームデータを抽出する」というものや、「処理後のデータをデータベース装置６０Ａに出力する」というものである。このＦＯＰは、フィルタ処理装置１０の記憶部（図示せず）に処理手順情報の一部として記憶される。
【００６７】
なお、再起動問い合わせ部１２５は、フィルタ取得部１２７がスキーマ情報３２３を取得した後、情報管理装置３０に対し、自身のフィルタ処理装置１０の再起動を許可するか否かを問い合わせる。そして、情報管理装置３０から、自身のフィルタ処理装置１０の再起動を許可する旨の応答を受信したとき、自フィルタ処理装置１０を再起動させる。このようにすることで、ストリームデータ処理システムにおいて、所定数を超えたフィルタ処理装置１０が再起動のため停止し、システム全体のフィルタ処理能力が著しく低下することを防止できる。
【００６８】
なお、この後、フィルタ処理部１２４は、出力部１３経由でフィルタ処理後のストリームデータをデータベース装置６０へ出力する。
【００６９】
フィルタ処理装置１０も、ＣＰＵ、ＲＡＭ、ＨＤＤ、通信インタフェース等を備えるコンピュータにより実現される。キュー選択部１２１、データ取得部１２２、フィルタ実行制御部１２３、フィルタ処理部１２４、再起動問い合わせ部１２５は、ＣＰＵによるプログラムの実行処理または専用ハードウェア等により実現される。
【００７０】
＜データベース装置＞
データベース装置６０は、フィルタ処理装置１０においてフィルタ処理されたストリームデータを受け付ける受付部６２（６２Ａ〜６２Ｎ）、このストリームデータを蓄積するＤＢ（データベース）６１（６１Ａ〜６１Ｎ）、参照クライアント７０からの検索要求に応じてＤＢ６１（６１Ａ〜６１Ｎ）からデータを検索する検索部６３（６３Ａ〜６３Ｎ）を備える。このデータ蓄積装置２０も、ＣＰＵ、ＲＡＭ、ＨＤＤ、通信インタフェース等を備えるコンピュータにより実現される。なお、この受付部６２、検索部６３は、ＣＰＵによるプログラムの実行処理または専用ハードウェア等により実現される。また、ＤＢ６１は、ＨＤＤ等により実現される。なお、この検索部６３に代えて、プッシュ型で参照クライアント７０へＤＢ６１に蓄積されたデータを送信する配信部を用いるようにしてもよい。
【００７１】
＜参照クライアント＞
参照クライアント７０は、データベース装置６０からデータの検索を行ったり、情報管理装置３０に対し、再フィルタ指示（再フィルタ処理の内容、再フィルタ処理の対象のストリームデータのＳＩＤ、時区間等を示した情報）を送信し、データ蓄積装置２０に蓄積されたストリームデータの再フィルタ処理を指示したりする。この参照クライアント７０もＣＰＵ、ＲＡＭ、ＨＤＤ、通信インタフェース等を備えるコンピュータにより実現される。
【００７２】
なお、フィルタ処理装置１０（１０Ａ〜１０Ｎ）およびデータ蓄積装置２０（２０Ａ〜２０Ｎ）は、それぞれ別個のコンピュータ（装置）により実現するようにしてもよいし、これらをまとめて１つのコンピュータにより実現するようにしてもよい。
【００７３】
＜動作手順＞
次に、図１を参照しつつ、図５および図６を用いて、図１のシステムの動作手順を説明する。図５および図６は、図１のストリームデータ処理システムの動作手順を示す図である。まず、図５を用いて、情報管理装置３０が、追記データ位置情報を取得し、蓄積する手順を説明する。
【００７４】
追記クライアント５０は、情報源からデータ（ストリームデータ）１００を受信すると、このデータに付されたＳＩＤ（例えば「ＳＩＤ-ｋａｎａ９９」）を含む追記先払出し依頼を情報管理装置３０の接続先割当部３１へ送信する（Ｓ４１）。つまり、追記クライアント５０は、ストリームデータの送信先の追記部２２１，２２２（当該追記部を備えるデータ蓄積装置２０のＩＰアドレス、当該追記部と接続するためのポート番号）を情報管理装置３０に問い合わせる。
【００７５】
接続先割当部３１は、Ｓ４１で送信された追記先払出し依頼を受信すると、この追記先払出し依頼に示されるＳＩＤをキーとして、システム情報３２１を検索する。そして、接続先割当部３１は、ストリームデータの送信先の追記部（例えば、追記部２２１）のあるデータ蓄積装置２０のＩＰアドレスと、追記部２２１のＰｏｒｔ（ポート番号）を示した追記先を払出す（Ｓ４２）。
【００７６】
追記クライアント５０は、Ｓ４２で払い出された追記部（例えば、追記部２２１）へ接続する（Ｓ４３）。そして、追記クライアント５０は、例えば、「ＳＩＤ-ｋａｎａ９９」を持つ追記データ１００をこの接続した追記部２２１へ送信する。つまり、ストリームデータを追記する（Ｓ４４）。
【００７７】
追記部２２１は、ストリーム受付部２２３（図１参照）によりこの追記データ１００を受信すると、この追記データ１００の受信時刻（受取時刻）を取得する（Ｓ４５）。つまり、この追記データ１００の受信時刻を記録する。また、追記部２２１は、追記データ蓄積部２２４（図１参照）により、この受信したストリームデータ（追記データ）を蓄積データ記憶部２４へ蓄積する（Ｓ４６）。次に、追記データ位置情報送信部２２７は、この蓄積した追記データ１００の追記データ位置情報を作成する。そして、この追記データ位置情報送信部２２７は、作成した追記データ位置情報を情報管理装置３０へ送信する（Ｓ４７）。この追記データ位置情報は、この蓄積した追記データ１００のＳＩＤ（「ＳＩＤ-ｋａｎａ９９」）、Ｓ４５で取得した受信時刻（「２００７／０２／２０Ｔ  １０：００」）、追記データ位置（「ｍａｃＡ．ｎｔｔ／ａｐｐ９９／ｂ．ｌｏｇ」）を含むものである。なお、この追記データ位置は、この追記データ１００を記憶するデータ蓄積装置２０は「ｍａｃＡ．ｎｔｔ」であり、そのデータ蓄積装置２０の蓄積データ記憶部２４における記憶領域は「／ａｐｐ９９／ｂ．ｌｏｇ」であることを示す。
【００７８】
このような追記データ位置情報を受信した情報管理装置３０のデータ位置管理部３４は、この追記データ位置情報をデータ位置記憶ＤＢ６１に記憶する（図５の追記データ位置情報４０１参照）。
【００７９】
また、データ蓄積装置２０の追記部２２１は、キュー管理部２２５（図１参照）により、追記データ１００をキュー部２２６に蓄積する（Ｓ４８：キュー管理）。
【００８０】
この後、追記部２２１は、ストリーム受付部２２３（図１参照）により、同じＳＩＤ「ＳＩＤ-ｋａｎａ９９」を持つ追記データ１０１を受信すると（Ｓ４９）、前記した手順と同様に、この追記データ１０１の受信時刻（受取時刻）を取得する（Ｓ５０）。また、追記部２２１は、追記データ蓄積部２２４により、追記データ１０１を蓄積データ記憶部２４へ蓄積すると（Ｓ５１）、前記した手順と同様に、この蓄積したデータ１０１の追記データ位置情報（ＳＩＤ（「ＳＩＤ-ｋａｎａ９９」）、Ｓ５０で取得した受信時刻（「２００７／０２／２０Ｔ  １１：００」）、追記データ位置（「ｍａｃＡ．ｎｔｔ／ａｐｐ９９／ｂ．ｌｏｇ」）を含む）を作成し、この追記データ位置情報を情報管理装置３０へ送信する（Ｓ５２）。
【００８１】
このような追記データ位置情報を受信した情報管理装置３０のデータ位置管理部３４は、この追記データ位置情報をデータ位置記憶ＤＢ６１に記憶する（図５の符号４０４参照）。
【００８２】
そして、データ蓄積装置２０の追記部２２１は、受信した追記データ１０１をキュー部２２６に蓄積する（Ｓ５３：キュー管理）。
【００８３】
以上のような処理を繰り返し、各データ蓄積装置２０は、ストリームデータを蓄積し、情報管理装置３０は、各データ蓄積装置２０に蓄積されるストリームデータの追記データ位置情報をデータ位置記憶ＤＢ６１に記憶していく。
【００８４】
続いて、図６を用いて、参照クライアント７０が再フィルタ指示を送信してから、フィルタ処理装置１０で再フィルタ処理が実行されるまでの手順を説明する。
【００８５】
参照クライアント７０は、再フィルタ処理の対象とするストリームデータのＳＩＤと、時区間と、再フィルタ処理の内容とを含む再フィルタ指示を情報管理装置３０のデータ再フィルタ制御部３３へ送信する（Ｓ６１）。
【００８６】
再フィルタ指示を受信した情報管理装置３０のデータ再フィルタ制御部３３は、この再フィルタ処理用のＳＩＤ（再フィルタ用ＳＩＤ）を発行し、再フィルタ用ＳＩＤの割当を行う（Ｓ６２）。すなわち、データ再フィルタ制御部３３は、情報管理部３５に、発行した再フィルタ用ＳＩＤと、当該ＳＩＤをもつストリームデータに関する情報を、システム情報３２１、情報源情報３２２、スキーマ情報３２３、処理手順情報３２４に登録するよう指示する。
【００８７】
また、データ再フィルタ制御部３３は、処理手順情報３２４に再フィルタ処理を登録する（Ｓ６３）。つまり、データ再フィルタ制御部３３は、情報管理部３５に対し、この再フィルタ用ＳＩＤに関する処理手順情報３２４として、この再フィルタ指示に示される再フィルタ処理の内容（例えば、フィルタにおける閾値の変更等）を書き加えるよう指示する。また、データ再フィルタ制御部３３は、情報管理部３５に対し、システム情報３２１に、再フィルタ用ＳＩＤと、このＳＩＤを持つストリームデータの送信先であるデータ蓄積装置２０の追記部２２１,２２２の情報とを対応付けた情報を追加する。
【００８８】
次に、データ再フィルタ制御部３３は、データ位置管理ＤＢ３２５から、この再フィルタ処理の対象となるストリームデータの追記データ位置情報を検索する（Ｓ６４）。具体的には、データ再フィルタ制御部３３は、データ位置管理部３４（図１参照）に対し、再フィルタ指示に含まれるＳＩＤと、時区間とをキーとして、追記データ位置情報を検索するよう指示する。そして、その検索結果を受け取る。
【００８９】
そして、データ再フィルタ制御部３３は、システム内のデータ蓄積装置２０の中から、再フィルタ追記クライアントとなるマシン（データ蓄積装置２０）を１つ決定する（Ｓ６５）。このときのマシン（データ蓄積装置２０）の決定は、例えばラウンドロビン等により行われる。
【００９０】
次に、データ再フィルタ制御部３３は、この決定したデータ蓄積装置２０のプロセス管理部２６に対し、Ｓ６４において検索した追記データ位置情報と、再フィルタ用ＳＩＤとを含む再フィルタ指示を送信する（Ｓ６６）。
【００９１】
データ再フィルタ制御部３３からの再フィルタ指示を受信したデータ蓄積装置２０のプロセス管理部２６は、蓄積データ取得部２５を起動させ、自データ蓄積装置２０を再フィルタ追記クライアントとして起動させる（Ｓ６７）。そして、蓄積データ取得部２５に対し、Ｓ６６で受信した追記データ位置情報と、再フィルタ用ＳＩＤとを含む再フィルタ指示を転送する（Ｓ６８）。
【００９２】
そして、蓄積データ取得部２５は、この再フィルタ指示を受信すると、情報管理装置３０の接続先割当部３１に対し、追記先払出し依頼を送信する（Ｓ６９）。このときの追記先払出し依頼は、この再フィルタ指示に含まれる再フィルタ用ＳＩＤを含むものである。つまり、蓄積データ取得部２５は、再フィルタの対象であるストリームデータを読み出した後、どの追記部２２１，２２２に流し込めばよいのかを接続先割当部３１へ問い合わせる。
【００９３】
そして、このような払出し依頼を受信した接続先割当部３１は、この再フィルタ用ＳＩＤをキーとして、システム情報３２１（図１参照）から、この再フィルタ用ＳＩＤを持つストリームデータを流し込む追記部２２１のＩＰアドレスとＰｏｒｔ（ポート番号）とを検索する。そして、接続先割当部３１は、この検索したＩＰアドレスとＰｏｒｔ（ポート番号）とを追記先として払出す（Ｓ７０）。
【００９４】
そして、蓄積データ取得部２５は、この接続先割当部３１から払出されたＩＰアドレスとＰｏｒｔ（ポート番号）に示される追記部２２１に接続する（Ｓ７１）。
【００９５】
そして、蓄積データ取得部２５は、Ｓ６８で転送された再フィルタ指示の追記データ位置情報に示される蓄積データ記憶部２４の記憶位置（記憶領域）から、再フィルタ処理の対象のデータ（ストリームデータ）を読み込む（Ｓ７２）。
【００９６】
なお、このＳ７２において、この再フィルタ処理の対象のデータが、自データ蓄積装置２０の蓄積データ記憶部２４に蓄積されていれば、自データ蓄積装置２０の蓄積データ記憶部２４から読み出し、他のデータ蓄積装置２０の蓄積データ記憶部２４に蓄積されていれば、図示しないネットワーク経由でこの他のデータ蓄積装置２０の蓄積データ記憶部２４から読み出すことになる。
【００９７】
このようにして蓄積データ取得部２５が再フィルタ処理の対象のデータを読み込むと、この読み込んだデータ（追記データ）のＳＩＤを、Ｓ６８で送信された再フィルタ指示に含まれる再フィルタ用ＩＤに付け替え、Ｓ７１で接続した追記部２２１へ流し込む。つまり、追記部２２１へストリームデータを追記する（Ｓ７３）。そして、追記部２２１は、前記した図５のＳ４８やＳ５３と同様にキュー管理を行う（Ｓ７４）。
【００９８】
この後、フィルタ処理装置１０は、データ蓄積装置２０の追記部２２１からデータを取得すると（Ｓ７５）、このデータに対しフィルタ処理を行う（Ｓ７６）。つまり、追記部２２１から取得したデータが再フィルタ用ＳＩＤを持つデータであれば、このデータに対し再フィルタ処理を行う。次に、図１を参照しつつ、図７を用いて、図６のＳ７５およびＳ７６の処理を詳細に説明する。図７は、図６のＳ７５およびＳ７６の処理を詳細に説明する図である。
【００９９】
図１のデータ取得部１２２は、自身に処理すべきデータがあるか否かをチェックし（Ｓ７０１）、処理すべきデータがないことを検知すると（Ｓ７０１のＹｅｓ）、キュー選択部１２１において次にデータを取得するデータ蓄積装置２０を選択する（Ｓ７０２）。このときのデータ蓄積装置２０の選択は、前記した通り、例えば、各データ蓄積装置２０から送信されてきたキュー状態情報をもとに、入力スループットの値の大きいデータ蓄積装置２０ほど優先的に選択する。
【０１００】
そして、データ取得部１２２は、Ｓ７０２で選択したデータ蓄積装置２０からデータを取得する（Ｓ７０３）。取得したデータは、フィルタ実行制御部１２３に出力する。
【０１０１】
次に、フィルタ実行制御部１２３は、処理手順情報１２６を参照して、この取得したデータに付されたＳＩＤをキーとして、このデータに対し必要なフィルタ処理機能を判断する（Ｓ７０４）。そして、フィルタ実行制御部１２３は、このデータに対し必要なフィルタ処理機能が自身のフィルタ処理装置１０にあるか否かを判断する（Ｓ７０５）。ここで、必要なフィルタ処理機能が自身のフィルタ処理装置１０にないとき（Ｓ７０５のＮｏ）、フィルタ実行制御部１２３は、情報管理装置３０から、必要なフィルタ処理機能（情報源情報３２２や、スキーマ情報３２３、処理手順情報３２４等を含む）を取得する（Ｓ７０６）。例えば、フィルタ実行制御部１２３が取得したデータが、再フィルタ用ＳＩＤが付されたデータである場合、この再フィルタ用ＳＩＤに対応するフィルタ処理機能まだフィルタ処理装置１０にダウンロード（取得）していない可能性が高い。そこで、フィルタ実行制御部１２３は、この再フィルタ用ＳＩＤを含むストリームデータを受信すると、このＳＩＤに対応するフィルタ処理機能を情報管理装置３０からダウンロードする。つまり、情報管理装置３０は、このＳＩＤに対応するフィルタ処理機能をフィルタ処理装置１０へ送信する。そして、フィルタ処理装置１０のフィルタ実行制御部１２３はフィルタ処理部１２４にフィルタ処理機能を追加する。
【０１０２】
一方、ここで、必要なフィルタ処理機能が自身のフィルタ処理装置１０にあるとき（Ｓ７０５のＹｅｓ）、Ｓ７０７へ進む。
【０１０３】
そして、フィルタ実行制御部１２３は、Ｓ７０３で取得したデータに対し、フィルタ処理を実行する（Ｓ７０７）。すなわち、フィルタ実行制御部１２３は、このストリームデータのＳＩＤと、情報源情報３２２や、スキーマ情報３２３、処理手順情報３２４とを参照して、このストリームデータに対するフィルタ処理の内容を判断し、このフィルタ処理を実行するためのＦＯＰを記憶部から読み出す。そして、フィルタ実行制御部１２３は、このＦＯＰに基づきフィルタ処理部１２４に所定の順序でフィルタ処理を実行させ、フィルタ処理部１２４はフィルタ処理後、このデータを所定のデータベース装置６０へ出力する（Ｓ７０８）。
【０１０４】
このようにすることで、情報管理装置３０は、各フィルタ処理装置１０に再フィルタ処理を実行させることができる。
【０１０５】
なお、ここでは説明を省略しているが、図７のＳ７０６で、フィルタ処理装置１０のフィルタ実行制御部１２３が情報管理装置３０から必要なフィルタ処理機能を取得した後、再起動処理部３６は、情報管理装置３０に対し、自身のフィルタ処理装置１０の再起動を許可するか否かを問い合わせる。そして、再起動処理部３６は、情報管理装置３０から、再起動許可の応答を受信したとき、自身のフィルタ処理装置１０を再起動する。次に、再起動処理部３６は、再起動を完了すると、再起動完了の通知を情報管理装置３０へ送信する。一方、再起動処理部３６は、情報管理装置３０から、再起動許可の応答を受信できなかった場合、自身のフィルタ処理装置１０は再起動させず、例えば所定時間経過後に、再起動を許可するか否かを問い合わせる。このようにすることで、他のフィルタ処理装置１０の再起動により、自身のフィルタ処理装置１０が再起動できなかった場合でも、時間をずらして、再起動することができる。従って、システム全体のフィルタ処理能力が著しく低下することを防止できる。
【０１０６】
≪第２の実施の形態≫
続いて、第２の実施の形態を説明する。第２の実施の形態は、再フィルタの対象となるストリームデータを蓄積するそれぞれのデータ蓄積装置が、自身の蓄積データ記憶部から再フィルタの対象となるストリームデータを読み出し、追記部へ流し込む（ストリームデータの追記）ことを特徴とする。つまり、再フィルタの対象となるストリームデータが複数のデータ蓄積装置にまたがって蓄積されている場合、このストリームデータの追記部への（送信）流し込みを、各データ蓄積装置それぞれが実行することを特徴とする。図８は、第２の実施の形態のストリームデータ処理システムを示すブロック図である。図８を用いて、第２の実施の形態の概要を説明する。前記した第１の実施の形態と同様の構成要素は同じ符号を付して、説明を省略する。
【０１０７】
図８に示すように、第２の実施の形態のストリームデータ処理システムにおける情報管理装置３０は、データ再フィルタ制御部３３Ａを備える。このデータ再フィルタ制御部３３Ａは、参照クライアント７０から、再フィルタ処理の対象とするストリームデータのＳＩＤおよび時区間と、再フィルタ処理の内容とを含む再フィルタ指示を受信すると、データ位置管理部３４に、データの存在するマシンを特定させる。つまり、データ位置管理部３４は、データ位置管理ＤＢ３２５の追記データ位置情報を参照して、当該再フィルタ処理の対象とするストリームデータを蓄積するデータ蓄積装置２０を検索して、このストリームデータの存在するマシン（データ蓄積装置２０）を特定する。そして、データ再フィルタ制御部３３は、このストリームデータの存在するデータ蓄積装置２０を、ストリームデータの追記を行うデータ蓄積装置２０（マシン）として決定し、このデータ蓄積装置２０のプロセス管理部２６に対し、ストリームデータの読み出しを指示する。
【０１０８】
この後、このような指示を受けたデータ蓄積装置２０はそれぞれ、蓄積データ取得部２５により、自データ蓄積装置２０の蓄積データ記憶部２４から、再フィルタ処理の対象となるストリームデータを読み出す。そして、蓄積データ取得部２５は、情報管理装置３０の接続先割当部３１にこのストリームデータを流し込む追記先を問い合わせ、この接続先割当部３１から指示された追記部２２２へ、ストリームデータを流し込む。次に、各フィルタ処理装置１０は、この再フィルタ処理の対象のストリームデータをデータ蓄積装置２０それぞれのキュー部２２６から取得し、再フィルタ処理を実行する。そして、再フィルタ処理後のデータをデータベース装置６０へ送信する。つまり、データ蓄積装置２０それぞれが、並列して再フィルタの対象となるストリームデータの読み出し、および、追記部２２２への流し込みを行う。
【０１０９】
＜動作手順＞
このような第２の実施の形態のストリームデータ処理システムの動作手順を、図９を用いて説明する。図９は、図８のストリームデータ処理システム動作手順を示す図である。
【０１１０】
図９のＳ９１の処理は、図６のＳ６１の処理と同様なので、説明を省略し、Ｓ９２から説明する。
【０１１１】
情報管理装置３０のデータ再フィルタ制御部３３Ａは、Ｓ９１で送信された再フィルタ指示に示される再フィルタ処理の内容がウィンドウ処理を含むか否かを判断する（Ｓ９２）。ここでの再フィルタ処理の内容がウィンドウ処理を含むか否かの判断は、再フィルタ指示に含まれる再フィルタ処理の内容そのものから判断してもよいし、情報源情報３２２に登録されているこの再フィルタ対象のストリームデータのＳＩＤに関する情報源情報３２２を参照して判断してもよい。情報源情報３２２を参照して判断する場合、当該ＳＩＤの情報源情報３２２（図２の符号２０１参照）に定義されているウィンドウサイズが「２」以上であるか否かにより判断すればよい。
【０１１２】
例えば、図２の符号２０１に例示したＳＩＤ「ＤＭＬ００１」の情報源情報において、ウィンドウサイズは「１」である。従って、データ再フィルタ制御部３３Ａは、再フィルタ処理の内容がウィンドウ処理を含まないと判断する。
【０１１３】
図９のＳ９２において再フィルタ処理の内容がウィンドウ処理を含むと判断したとき（Ｓ９２のＹｅｓ）、データ再フィルタ制御部３３Ａは、前記した図６のＳ６２以降と同様の処理を行う。つまり、データ再フィルタ制御部３３Ａが選択したいずれか１つのデータ蓄積装置２０が、各データ蓄積装置２０から再フィルタ対象のストリームデータを読み出し、追記部２２１，２２２へ流し込む処理を行う。
【０１１４】
一方、Ｓ９２において再フィルタ処理の内容がウィンドウ処理を含まないと判断したとき（Ｓ９２のＮｏ）、情報管理装置３０は、前記した図６のＳ６２、Ｓ６３と同様に、再フィルタ用ＳＩＤの割当（Ｓ９３）と、再フィルタ処理の登録（Ｓ９４）とを行う。そして、Ｓ６４と同様に、データ位置管理ＤＢ３２５から、再フィルタ指示に示されるＳＩＤと時区間とをキーとして、追記データ位置情報の検索を行う（Ｓ９５）。
【０１１５】
データ再フィルタ制御部３３Ａは、Ｓ９５で検索した追記データ位置情報（追記データ位置情報のリスト）における追記データ位置に示されるデータ蓄積装置２０の識別情報を参照して、この追記データ位置情報をデータ蓄積装置２０ごとに分ける（Ｓ９６）。
【０１１６】
例えば、データ再フィルタ制御部３３Ａは、再フィルタ指示においてＳＩＤ「ＳＩＤ−ｋａｎａ９９」と、時区間「２００７／０２／２０Ｔ  １０：００〜２００７／０２／２０Ｔ  １２：００」という指示が含まれていた場合、図５に例示したデータ位置管理ＤＢ３２５から、この条件に合う追記データ位置情報４０２，４０３，４０５を検索する。ここで、これらの追記データ位置情報４０２，４０３，４０５の追記データ位置の識別情報の記載部分（追記データ位置情報の冒頭の部分）を見ると、「ｍａｃＡ．ｎｔｔ」となっているものと、「ｍａｃＢ．ｎｔｔ」となっているものとがある。つまり、再フィルタ処理の対象となるストリームデータは異なるデータ蓄積装置２０に蓄積されている。したがって、データ再フィルタ制御部３３Ａは、この追記データ位置情報４０２，４０３，４０５を、「ｍａｃＡ．ｎｔｔ」から始まる追記データ位置情報４０２，４０３と、「ｍａｃＢ．ｎｔｔ」から始まる追記データ位置情報４０５とに分ける。つまり、「ｍａｃＡ．ｎｔｔ」のデータ蓄積装置２０へ送信する追記データ位置情報４０２，４０３と、「ｍａｃＢ．ｎｔｔ」のデータ蓄積装置２０へ送信する追記データ位置情報４０５とに分ける。
【０１１７】
そして、データ再フィルタ制御部３３Ａは、再フィルタ処理の対象のストリームデータを蓄積するそれぞれのデータ蓄積装置２０へ、Ｓ９６で分けた追記データ位置情報を含む再フィルタ指示を送信する（Ｓ９７）。例えば、データ再フィルタ制御部３３Ａは、「ｍａｃＡ．ｎｔｔ」のデータ蓄積装置２０へは追記データ位置情報４０２，４０３を含む再フィルタ指示を送信し、「ｍａｃＢ．ｎｔｔ」のデータ蓄積装置２０へは追記データ位置情報４０５を含む再フィルタ指示を送信する。そして、各データ蓄積装置２０における再フィルタ処理の対象のストリームデータの読み出し、追記部２２１,２２２への流し込み、フィルタ処理装置１０によるフィルタ処理の手順は、第１の実施の形態と同様なので説明を省略する。
【０１１８】
このようにすることで、再フィルタ処理の対象のストリームデータが複数のデータ蓄積装置２０にまたがって蓄積されている場合、それぞれのデータ蓄積装置２０において、蓄積データ記憶部２４から再フィルタ処理の対象のストリームデータの読み出し、キュー部２２６へ流し込むので、再フィルタ処理の対象のストリームデータの読み出しを効率よく行うことができる。
【０１１９】
なお、本発明は前記した各実施の形態に限定されず、広く変形可能である。
【０１２０】
例えば、情報管理装置３０において参照クライアント７０から再フィルタ指示を受信した後（図６のＳ６１の後）、この再フィルタ指示の対象である追記データ位置情報（追記データ位置リスト）を参照クライアント７０へ送信するようにしてもよい。図１０は、図１および図８の情報管理装置および参照クライアントの動作手順を示す図である。
【０１２１】
すなわち、図１０に示すように、情報管理装置３０のデータ位置管理部３４は、参照クライアント７０から、ＳＩＤと時区間とを含む追記データ位置情報の検索要求を受信する（Ｓ１５１）。そして、データ位置管理部３４は、この検索要求に含まれるＳＩＤと時区間とをキーとして、データ位置管理ＤＢ３２５から追記データ位置情報を検索し、この検索結果をまとめた結果リスト（追記データ位置リスト）を作成する（Ｓ１５２）。そして、データ位置管理部３４は、この作成した追記データ位置リストを前記検索要求に対する検索結果として返却する（送信する）（Ｓ１５３）。
【０１２２】
そして、このような追記データ位置リストを受信した参照クライアント７０は、再フィルタ処理の内容と、追記データ位置リストに示される追記データ位置情報とを含む再フィルタ指示を情報管理装置３０のデータ再フィルタ制御部３３Ａへ送信する（Ｓ１５４）。
【０１２３】
この後、データ再フィルタ制御部３３Ａは、追記フィルタ用ＳＩＤの割当と、再フィルタ処理の登録とを行った後、Ｓ５４で参照クライアント７０から送信された再フィルタ指示に含まれる追記データ位置情報に従い、データ蓄積装置２０に再フィルタ指示を行う。
【０１２４】
なお、参照クライアント７０は、Ｓ５４において、情報管理装置３０から受信した追記データ位置リストに示される追記データ位置情報の中から、所定の情報を選択し、この選択した追記データ位置情報を再フィルタ指示に含めて送信するようにしてもよい。このようにすることで、参照クライアント７０は、ＳＩＤおよび時区間を指定して検索されたストリームデータが、どのデータ蓄積装置２０の、どの記憶位置に蓄積されているか、どの程度のデータ数があるか等を確認した上で、再フィルタ指示することができる。
【０１２５】
なお、このようにいったん参照クライアント７０が追記データ位置リストを受信してから再フィルタ指示を送信する場合、参照クライアント７０はこの追記データ位置リストそのものではなく、このリストを示す識別情報を送信するようにしてもよい。
【０１２６】
また、前記した各実施の形態において、データ蓄積装置２０が、自データ蓄積装置２０の追記データ位置情報を、情報管理装置３０へ送信するタイミングは、このデータ蓄積装置２０の接続先割当部３１から接続先の払い出しを受けたときでもよいし、追記クライアント５０がデータ蓄積装置２０に接続したときでもよいし、データ蓄積装置２０が追記クライアント５０からストリームデータを受信したときでもよい。
【０１２７】
さらに、前記した各実施の形態のフィルタ処理装置１０におけるウィンドウ処理は、現在のデータを基準にして、過去ｎ件分のデータを使うウィンドウ処理（Touple-based Window）のほかに、過去所定時区間分のデータを使うウィンドウ処理(Time-based Window)等、様々なウィンドウ処理を用いてよい。
【０１２８】
また、追記クライアント５０が送信するストリームデータは、ＸＭＬデータ以外でも、ＣＬＯＢ（Character Large Object)型データでもよいし、ＢＬＯＢ（Binary Large OBject）型データでもよい。
【０１２９】
さらに、前記した第１の実施の形態において、情報管理装置３０は、再フィルタ追記クライアントとして１つのデータ蓄積装置２０を選択することとしたが、複数のデータ蓄積装置２０を選択するようにしてもよい。
【０１３０】
さらに、前記した第２の実施の形態において、再フィルタ処理の内容がウィンドウ処理を含まない場合、情報管理装置３０は、再フィルタ処理の対象のストリームデータを蓄積するデータ蓄積装置２０それぞれを追記クライアントとして割り当てる（つまり、各データ蓄積装置２０における並列処理を指示する）こととしたが、これに限定されない。例えば、情報管理装置３０は、参照クライアント７０から受信した再フィルタ指示に、前記並列処理を要求するフラグが含まれていたときに、各データ蓄積装置２０を追記クライアントとして割り当て、この並列処理を要求するフラグが含まれていなかったときには、第１の実施の形態のように、いずれか１つのデータ蓄積装置２０を追記クライアントとして割り当てるようにしてもよい。
【０１３１】
また、前記した各実施の形態のシステムは、様々な分野に適用可能である。
【０１３２】
例えば、本システムを、冷蔵庫メーカのメンテナンスセンタ等において各冷蔵庫の庫内温度を監視するために用いてもよい。この場合、図１の追記クライアント５０は、所定時間ごとに冷蔵庫の庫内温度を示したストリームデータを送信し、フィルタ処理装置１０において、このストリームデータに示される庫内温度（特定のカラム（例えば、Ｃ１）に記録）が所定の閾値超えた場合、異常として検出する。そして、このメンテナンスセンタ等の参照クライアント７０は、この検出結果を、データベース装置６０経由で受信する。
【０１３３】
このような場合において、参照クライアント７０により、所定の冷蔵庫の異常検出を受信すると、冷蔵庫メーカのメンテナンスセンタ等はこのような異常が発生するまでの過程を調査したい場合もある。
【０１３４】
このような場合、以下のようにすればよい。すなわち、異常が検出された冷蔵庫の種別を示すＳＩＤ、フィルタ処理装置１０のフィルタ処理部１２４における庫内温度の異常検出のための閾値を変更する。そして、情報管理装置３０は、データ蓄積装置２０の過去のストリームデータを再度この閾値変更後のフィルタ処理装置１０に流すという処理を何度か繰り返す。
【０１３５】
具体例を用いて説明すると、過去３ヶ月分さかのぼって、庫内温度が３℃以上の頻度はどれくらいあったかを調べたい場合、参照クライアント７０から、異常が検出された冷蔵庫のＳＩＤ、過去３ヶ月分という時区間、庫内温度が３℃以上のときに異常検出という再フィルタ処理の内容を含む再フィルタ指示を情報管理装置３０へ送信する。また、同様に、過去１年分さかのぼって、庫内温度が０℃以上の頻度はどれくらいあったかを調べたい場合、参照クライアント７０から、異常が検出された冷蔵庫のＳＩＤ、過去１年分という時区間、庫内温度が０℃以上のときに異常検出という再フィルタ処理の内容を含む再フィルタ指示を情報管理装置３０へ送信する。
【０１３６】
このような処理を何度か繰り返すことで、各冷蔵庫の庫内温度が、前記異常検出の温度まで徐々に上昇していったのか、急激に上昇していったのか、またその時期はいつ頃か等の分析を行うことができる。
【０１３７】
また、本システムを全国各地の気温の監視に用いるようにしてもよい。この場合、例えば複数の追記クライアント５０はそれぞれ、１分ごとに気温を計測する。次に、この計測した気温データに、各地に割当てられたＳＩＤを付したストリームデータを、データ蓄積装置２０へ送信する。そして、フィルタ処理装置１０において、４０℃以上の気温データを検出したとき、警報を出すよう設定しておく。
【０１３８】
ここで、フィルタ処理装置１０において５年間、気温を監視していて、ある日、Ａ地点で４０℃以上の警報が出たとする。このような場合、参照クライアント７０は、Ａ地点のＳＩＤ、過去３年分という時区間、気温が３８℃以上のときに警報を出すという再フィルタ処理の内容を含む再フィルタ指示を情報管理装置３０へ送信する。このようにすることで、Ａ地点について、過去３年分の気温のデータのうち、気温が３８℃以上のデータを調べることができる。
【０１３９】
つまり、本システムによれば、複数のデータ蓄積装置２０およびフィルタ処理装置１０を用いて処理を行うので、莫大な数の冷蔵庫の庫内温度や全国の各地点の気温監視等、多数のストリームデータのフィルタ処理を効率的に実行できる。また、このように複数のデータ蓄積装置２０に過去のストリームデータを蓄積する場合でも、情報管理装置３０が追記データ位置情報により過去のストリームデータがどのデータ蓄積装置２０に蓄積されているか把握しているので、効率的に再フィルタ対象のストリームデータを探すことができる。
【０１４０】
なお、本システムは、情報管理装置３０に新しいフィルタが追加され、フィルタ処理装置１０においてこの新しいフィルタで再度過去のストリームデータを流しなおす場合にも有効である。
【０１４１】
例えば、本システムのフィルタ処理装置１０において街角の監視画像のストリームデータから人物を検出する人物検出ツール用い、その地点の人の流量を測定する場合において、人物検出ツールの人物検出精度が向上したとき（例えば、親子関係を判別できるようになった場合や、人物の移動方向も検出できるようになった場合等）、まず、フィルタ処理装置１０における人物検出ツールを、この人物検出精度の向上した人物検出ツールに入れ替える。そして、追記クライアント５０からの再フィルタ指示に基づき、本システムはこの新たな人物検出ツールで、過去のストリームデータに対し再フィルタ処理を実行する。このようにすることで、新しいフィルタができたとき、この新しいフィルタを用いて過去のストリームデータの洗い直しをすることができる。
【０１４２】
なお、このように新しいフィルタ処理を追加したフィルタ処理装置１０は、再起動のため一時的に停止するが、前記したとおり、情報管理装置３０が再起動処理部３６により、再起動するフィルタ処理装置１０の数を制限する。従って、新しいフィルタ処理の追加のため多数のフィルタ処理装置１０が停止し、システム全体のフィルタ処理能力が著しく低下することを防止できる。
【０１４３】
さらに、本システムは、前記した例以外にも、ホームゲートウェイのログの監視や、携帯電話機の機器状態の監視等に適用してもよい。
【０１４４】
本実施の形態に係る情報管理装置３０、データ蓄積装置２０、フィルタ処理装置１０は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）に記憶して提供することが可能である。また、そのプログラムを、ネットワークを通して提供することも可能である。
【図面の簡単な説明】
【０１４５】
【図１】第１の実施の形態のストリームデータ処理システムを示すブロック図である。
【図２】図１の情報源情報およびスキーマ情報を例示した図である。
【図３】図１のストリームデータ処理システムの動作概要を示す図である。
【図４】図１のストリームデータ処理システムの動作概要を示す図である。
【図５】図１のストリームデータ処理システムの動作手順を示す図である。
【図６】図１のストリームデータ処理システムの動作手順を示す図である。
【図７】図６のＳ７５およびＳ７６の処理を詳細に説明する図である。
【図８】第２の実施の形態のストリームデータ処理システムを示すブロック図である。
【図９】図８のストリームデータ処理システム動作手順を示す図である。
【図１０】図１および図８の情報管理装置および参照クライアントの動作手順を示す図である。
【符号の説明】
【０１４６】
１０（１０Ａ〜１０Ｎ）    フィルタ処理装置
１１，２１    入力部
１２,３２    処理部
１３,２３    出力部
２０（２０Ａ〜２０Ｎ）    データ蓄積装置
２４    蓄積データ記憶部
２５    蓄積データ取得部
２６    プロセス管理部
３０    情報管理装置
３１    接続先割当部
３３，３３Ａ    データ再フィルタ制御部
３４    データ位置管理部
３５    情報管理部
３６    再起動処理部
５０（５０Ａ〜５０Ｎ）    追記クライアント（情報源端末）
６０    データベース装置
６１    データ位置記憶ＤＢ
６２    受付部
６３    検索部
７０    参照クライアント（外部装置）
１２１  キュー選択部
１２２  データ取得部
１２３  フィルタ実行制御部
１２４  フィルタ処理部
１２５  再起動問い合わせ部
１２６  処理手順情報
１２７  フィルタ取得部
１２４  フィルタ処理部
２２１，２２２  追記部
２２３  ストリーム受付部
２２４  追記データ蓄積部
２２５  キュー管理部
２２６  キュー部
２２７  追記データ位置情報送信部
３２１  システム情報
３２２  情報源情報
３２３  スキーマ情報
３２４  処理手順情報
３２５  データ位置管理ＤＢ
３２６  再起動情報
【図１】
2008294774.tif 000005
【図２】
2008294774.tif 000006
【図３】
2008294774.tif 000007
【図４】
2008294774.tif 000008
【図５】
2008294774.tif 000009
【図６】
2008294774.tif 000010
【図７】
2008294774.tif 000011
【図８】
2008294774.tif 000012
【図９】
2008294774.tif 000013
【図１０】
2008294774.tif 000014