(57)【特許請求の範囲】
【請求項１】
複数のノードを有する処理装置と、
前記処理装置を管理する管理装置と、を備え、
前記処理装置が有する複数のノードは、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部と、を有し、
前記管理装置は、前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する判断部を有し、
前記判断部は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである、データストリーム処理システム。
【請求項２】
前記判断部は、前記処理装置に含まれるノードが混雑していないと判定した場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に高いデータストリーム処理部に切り替えたときに該ノードが満たすべき前記所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する、請求項１に記載のデータストリーム処理システム。
【請求項３】
複数のノードを有する処理装置を管理する管理装置であって、
前記処理装置が有する複数のノードは、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部と、
前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する判断部と、を備え、
前記判断部は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである、管理装置。
【請求項４】
前記判断部は、前記処理装置に含まれるノードが混雑していないと判定した場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に高いデータストリーム処理部に切り替えたときに該ノードが満たすべき前記所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する、請求項３に記載の管理装置。
【請求項５】
複数のノードを有する処理装置と、
前記処理装置を管理する管理装置と、を備えたデータストリーム処理システムによるデータストリーム処理方法であって、
前記処理装置が有する複数のノードが、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部を用いて処理する工程と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替える工程と、
前記管理装置が、前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する工程と、を含み、
前記管理装置は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである、データストリーム処理方法。
【請求項６】
前記管理装置が、前記処理装置に含まれるノードが混雑していないと判定した場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に高いデータストリーム処理部に切り替えたときに該ノードが満たすべき前記所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する工程を含む、請求項５に記載のデータストリーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本願は、先の日本特許出願２００７−３２６３６６号（２００７年１２月１８日出願）の優先権を主張するものであり、前記先の出願の全記載内容は、本書に引用をもって繰込み記載されているものとみなされる。
本発明は、連続的に生成され続ける大量の情報を逐次的に分析するデータストリーム処理システム、データストリーム処理方法、及びデータストリーム処理プログラムに関し、特に、処理ノード間を流通するデータフローを管理するデータストリーム処理システム、データストリーム処理方法、及びデータストリーム処理プログラムに関する。また、本発明は、データストリーム処理システムが備えるノード及び管理装置に関する。
【背景技術】
【０００２】
データストリームとは、連続的に時々刻々と生成され続ける大量のデータである。一般に、大量のデータを処理するためのシステムとして、ＤＢＭＳ（データベース管理システム：Data Base Management System ）が用いられる。しかし、本来静的なデータを処理することに特化したシステムであるＤＢＭＳでは、動的に変化し続けるデータストリームを効率よく処理することができない。そこで、そのような動的に変化し続けるデータを処理するための技術として、非特許文献１及び非特許文献２には、ＤＳＭＳ（データストリーム管理システム：Data Stream Management System ）と呼ばれるシステムを用いた技術が記載されている。【０００３】
例えば、非特許文献１及び非特許文献２には、ＤＳＭＳに関連する技術として、連続クエリを実行する複数のノードから成る処理装置によるストリーム処理技術が記載されている。【０００４】
【非特許文献１】The STREAM Group, "STREAM: The Stanford Stream Data Manager", IEEE Data Engineering Bulletin, 2003.
【非特許文献２】Daniel J. Abadi, et al., "Aurora: a new model and architecture for data stream management", VLDB journal, 2003.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記非特許文献の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明によって与えられたものである。
図１５は、非特許文献１や非特許文献２に記載されているＤＳＭＳの構成例を示すブロック図である。図１５に示すように、ＤＳＭＳは、データストリーム処理の最小単位である複数のノード９０１０−１，９０１０−２，・・・，９０１０−ｎを含む。また、各ノード９０１０−１，９０１０−２，・・・，９０１０−ｎは、それぞれ、ＤＳ入力キュー９０１１と、ＤＳ取得部９０１２と、ＤＳ処理部９０１３とを含む。【０００６】
ＤＳ入力キュー９０１１は、ノードが入力したデータストリームを一時的に蓄積するバッファである。ＤＳ処理部９０１３は、データストリーム処理を行う機能を備える。ＤＳ取得部９０１２は、ＤＳ入力キュー９０１１からデータストリーム処理部９０１３に、所定条件で所定量のデータストリームを転送する機能を備える。【０００７】
次に、ＤＳＭＳの動作について説明する。ＤＳ入力キュー９０１１は、外部又は処理装置内の他のノードからデータストリームを受け取り（入力し）、その入力したデータストリームをキュー形式で蓄える（格納する）。【０００８】
ＤＳ取得部９０１２は、ＤＳ入力キュー９０１１を監視し、所定条件が成立すれば、ＤＳ入力キュー９０１１から所定量のデータストリームを取り出す機能を備える。また、ＤＳ取得部９０１２は、取り出したデータストリームをＤＳ処理部９０１３に転送する機能を備える。【０００９】
なお、ＤＳ取得部９０１２は、所定条件が成立したか否かを判断する場合に、例えば、所定時間毎（例えば、１０分毎）に、一定条件が成立したと判断してもよい。また、例えば、ＤＳ取得部９０１２は、データが所定個（例えば、１０個）溜まったら、所定条件が成立したと判断してもよい。また、ＤＳ取得部９０１２は、所定量のデータとして、例えば、その時点でＤＳ入力キュー９０１１に蓄積されているデータのうち、先頭から所定個（例えば、１０個）のデータを取りだしてもよい。【００１０】
ＤＳ処理部９０１３は、ＤＳ取得部９０１２から受け取ったデータを処理する。そして、ＤＳ処理部９０１３は、処理したデータを、外部又は処理装置内の次のノードのＤＳ入力キューに送る（出力する）。【００１１】
以上のように動作することで、ＤＳＭＳでは、ノードによって構成された処理装置間を、データストリームが流れつつ、その経路上でデータストリームが処理される。【００１２】
しかしながら、非特許文献１や非特許文献２に記載されたＤＳＭＳでは、個々のノードが並列に処理を実行しているとともに、ノードによって各処理の負荷が異なる。そのため、ノード毎にデータの処理スループットが異なる。また、ＤＳＭＳでは、ノード間をデータストリームが流れることによってデータが処理される。従って、ＤＳＭＳ全体のスループットは、最もスループットの低いノードのスループットに律速されてしまうという問題がある。【００１３】
そこで、本発明は、ＤＳＭＳにおける各ノードのスループット格差を是正し、ＤＳＭＳ全体のスループットを向上させるデータストリーム処理システム、ノード、管理装置、データストリーム処理方法、及びデータストリーム処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の視点に係るデータストリーム処理システムは、
複数のノードを有する処理装置と、
前記処理装置を管理する管理装置と、を備え、
前記処理装置が有する複数のノードは、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部と、を有し、
前記管理装置は、前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する判断部を有し、
前記判断部は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである。
本発明の第２の視点に係る管理装置は、
複数のノードを有する処理装置を管理する管理装置であって、
前記処理装置が有する複数のノードは、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部と、
前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する判断部と、を備え、
前記判断部は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである。
本発明の第３の視点に係るデータストリーム処理方法は、
複数のノードを有する処理装置と、
前記処理装置を管理する管理装置と、を備えたデータストリーム処理システムによるデータストリーム処理方法であって、
前記処理装置が有する複数のノードが、それぞれ、データストリームを、精度または負荷が異なる複数のレベルで逐次処理する複数のデータストリーム処理部を用いて処理する工程と、
前記複数のデータストリーム処理部の間で、データストリームの処理に用いるデータストリーム処理部を切り替える工程と、
前記管理装置が、前記処理装置に含まれるノードが混雑している場合、該ノードにおいてデータストリームの処理に用いるデータストリーム処理部を、精度または負荷が相対的に低いデータストリーム処理部に切り替えたときに該ノードが満たすべき所定の制約条件を満たすか否かを判定し、満たすものと判定された場合、該ノードのデータストリーム処理切替部に切り替えを指示する工程と、を含み、
前記管理装置は、前記処理装置に含まれるノードに蓄積された未処理のデータストリームの量に応じて当該ノードが混雑しているか否かを判定し、
前記所定の制約条件は、混雑度が判定されたノードと他のノードのスループットが同程度であること、当該ノードの処理精度が他のノードよりも高いこと、当該ノードの処理精度が所定値以上であること、および、当該ノードの負荷が所定値以下であること、のうちの少なくともいずれかである。
本発明の第４の視点に係るデータストリーム処理システムは、複数のノードを有するデータストリーム処理システムの処理フローを管理するデータストリーム処理システムであって、複数のノードは、それぞれデータストリームを逐次処理する複数のデータストリーム処理部を含み、複数のノードのそれぞれにおけるデータストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替部を備える。
【００１５】
本発明の第５の視点に係るデータストリーム処理システムは、複数のノードを有する処理装置と、処理装置を管理する管理装置とを備え、処理装置が有する複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部とを備える。
【００１６】
本発明の第６の視点に係るデータストリーム処理システムのさらに他の態様は、複数のノードを有する処理装置と、処理装置を管理するネットワーク管理装置とを備え、複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替部とを備える。
【００１７】
本発明の第７の視点に係るノードは、データストリーム処理システムに含まれるノードであって、データストリームを逐次処理する複数のデータストリーム処理部と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替部とを備える。
【００１８】
本発明の第８の視点に係るデータストリーム処理システムの管理装置は、複数のノードを有する処理装置を管理する管理装置であって、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部とを備える。
【００１９】
本発明の第９の視点に係るデータストリーム処理方法は、複数のノードを有するデータストリーム処理システムの処理フローを管理するデータストリーム処理方法であって、複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部を備え、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替ステップを含む。
【００２０】
本発明の第１０の視点に係るデータストリーム処理プログラムは、複数のノードを有するデータストリーム処理システムの処理フローを管理するためのデータストリーム処理プログラムであって、データストリームを逐次処理する複数のデータストリーム処理部を備えたコンピュータに、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるデータストリーム処理切替処理を実行させる。なお、データストリーム処理プログラムは、任意の記録（ないし、記憶）媒体に記録することができる。
【発明の効果】
【００２１】
本発明に係るデータストリーム処理システム、方法およびプログラムによれば、ＤＳＭＳにおける各ノードのスループット格差を是正し、ＤＳＭＳ全体のスループットを向上させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明によるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。
【図２】厳密解及び近似解を求めるアルゴリズムを説明するための説明図である。
【図３】ＤＳＭＳにおけるデータストリームの処理フローの管理処理の一例を示すフローチャートである。
【図４】監視情報記憶部が格納する監視情報を記録するテーブル（Ｔ３０００）の構造の例を示す説明図である。
【図５】処理装置と管理装置とが別々の情報処理装置を用いて実現される場合のＤＳＭＳの構成例を示すブロック図である。
【図６】判断部によるＤＳ処理部の切り替え判定処理の一例を示すフローチャートである。
【図７】判断情報記憶部に格納されている判断情報の構造の一例を示す説明図である。
【図８】第２の実施形態におけるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。
【図９】ルールベース判断部によるＤＳ処理部の切り替え判定処理の一例を示すフローチャートである。
【図１０】判断情報記憶部に格納されている判断情報の構造の一例を示す説明図である。
【図１１】制御ルール記憶部に格納されている制御ルールの情報の構造の一例を示す説明図である。
【図１２】第３の実施形態におけるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。
【図１３】検証部による検証処理の一例を示すフローチャートである。
【図１４】データストリーム処理方法を用いたＤＳＭＳの最小の構成例を示すブロック図である。
【図１５】非特許文献１や非特許文献２に記載されているＤＳＭＳの構成例を示すブロック図である。
【符号の説明】
【００２３】
２１００  処理装置
２１１０  ノード
２１１１  ＤＳ（データストリーム）入力キュー
２１１２  ＤＳ（データストリーム）取得部
２１１３  ＤＳ（データストリーム）処理切替部
２１１４  ＤＳ（データストリーム）処理部
２２００  管理装置
２２０１  監視部
２２０２  監視情報記憶部
２２０３  判断部
２２０４  判断情報記憶部
２２０５  切替指示部
【発明を実施するための最良の形態】
【００２４】
実施形態１．
以下、本発明の第１の実施形態について、図面を参照して説明する。図１は、本発明によるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。なお、本実施形態において、データストリーム処理システムは、データストリーム処理方法を用いたＤＳＭＳによって実現される。【００２５】
図１に示すように、本実施形態において、ＤＳＭＳは、データストリーム処理を行う処理装置２１００と、ノードを制御する管理装置２２００とを含む。また、処理装置２１００は、データストリーム処理の最小単位である複数のノード２１１０−１，２１１０−２，・・・，２１１０−ｎを含む。【００２６】
なお、以下、各ノード２１１０−１，２１１０−２，・・・，２１１０−ｎを包括的に表現する場合、または各ノード２１１０−１，２１１０−２，・・・，２１１０−ｎのいずれかを指す場合に、単にノード２１１０という。【００２７】
また、管理装置２２００や処理装置２１００に含まれる各ノード２１１０は、具体的には、プログラムに従って動作するワークステーションやパーソナルコンピュータ等の情報処理装置によって実現される。この場合、管理装置２２００と処理装置２１００とは、１つの情報処理装置を用いて実現されてもよい。また、管理装置２２００を１つの情報処理装置を用いて実現するとともに、処理装置２１００を他の１つの情報処理装置を用いて実現してもよい。さらに、管理装置２２００を１つの情報処理装置を用いて実現するとともに、処理装置２１００に含まれる各ノード２１１０を、それぞれ別々の情報処理装置を用いて実現してもよい。また、管理装置２２００と一部のノード２１１０が１つの情報処理装置を用いて実現され、他のノード２１１０がそれぞれ別々の情報処理装置を用いて実現される等、ＤＳＭＳの実現形態は問わない。【００２８】
また、ＤＳＭＳによって実現されるデータストリーム処理システムは、例えば、複数のＲＦＩＤタグを荷物等に付与し、各ＲＦＩＤタグからの位置情報をトレースすることによって荷物を管理する物流管理システムの用途に適用できる。また、データストリーム処理システムは、例えば、ＧＰＳセンサ等を搭載した複数の車両（プローブカー）からの速度情報や位置情報を収集し解析することによって、渋滞情報案内や経路探索サービスを提供する交通管理システムの用途に適用できる。また、データストリーム処理システムは、例えば、複数のサーバが生成するログ情報を収集して解析するシステム運用管理システムの用途に適用できる。【００２９】
本実施形態において、データストリームとは、連続的に時々刻々と生成され続ける大量のデータである。例えば、物流管理システムの用途に適用する場合、データストリーム処理システムは、ＦＲＩＤタグから連続的に時々刻々と読み取った荷物の識別子や位置情報を、データストリームとして処理する。また、例えば、交通管理システムの用途に適用する場合、データストリーム処理システムは、プローブカーから連続的に時々刻々と収集する車両の識別子や位置情報、速度情報、車両状況情報（ワイパーの動作状態等）を、データストリームとして処理する。また、例えば、システム運用管理システムの用途に適用する場合、データストリーム処理システムは、各サーバから収集するログ情報を、データストリームとして処理する。【００３０】
ノード２１１０は、それぞれ、ＤＳ入力キュー２１１１と、ＤＳ取得部２１１２と、ＤＳ処理切替部２１１３と、複数のＤＳ処理部２１１４−１，２１１４−２，・・・２１１４−ｎを含む。なお、以下、各ＤＳ処理部２１１４−１，２１１４−２，・・・２１１４−ｎを包括的に表現する場合、または単に各ＤＳ処理部２１１４−１，２１１４−２，・・・２１１４−ｎのいずれかを指す場合に、単にＤＳ処理部２１１４という。【００３１】
ＤＳ入力キュー２１１１は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。ＤＳ入力キュー２１１１は、ノード２１１０が入力したデータストリームを、キュー形式で一時的に蓄積するバッファである。【００３２】
ＤＳ取得部２１１２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。ＤＳ取得部２１１２は、所定条件が成立すると、ＤＳ入力キュー２１１１から所定量のデータストリームを取り出す機能を備える。また、ＤＳ取得部２１１２は、取り出したデータストリームを、ＤＳ処理切替部２１１３を介してＤＳ処理部２１１４に転送する機能を備える。【００３３】
ＤＳ処理切替部２１１３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。ＤＳ処理切替部２１１３は、ＤＳ取得部２１１２が取り出したデータストリームの転送先のＤＳ処理部２１１４を切り替える機能を備える。【００３４】
ＤＳ処理部２１１４は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。ＤＳ処理部２１１４は、ＤＳ取得部２１１２からＤＳ処理切替部２１１３を介して転送されたデータストリームについて、データストリーム処理を行う機能を備える。【００３５】
また、各ＤＳ処理部２１１４は、同じ処理対象について処理を行い同じ処理結果（ただし、精度が異なる）を出力するのであるが、同じ処理対象を異なるアルゴリズムに従って処理することによって、それぞれ処理精度と処理負荷とが異なる。【００３６】
具体的には、ＤＳ処理部２１１４の中には、厳密な解を求めるアルゴリズムに従って処理を行い厳密解を求めるものがある。一方、他のＤＳ処理部２１１４では、近似的な解を求めるアルゴリズムに従って近似解を求めるものがある。【００３７】
例えば、データストリームのＮ個のデータ中に含まれる値がＡであるデータの数ｓｕｍを求める場合に、ｓｕｍの厳密解及び近似解を求めるアルゴリズムの例を説明する。厳密解を求める場合、ＤＳ処理部２１１４は、例えば、データストリームのＮ個のデータを全てチェックし、値がＡであるデータの個数をカウントする。そして、ＤＳ処理部２１１４は、そのカウント値を解ｓｕｍとして求める。この場合、ＤＳ処理部２１１４の処理負荷（チェック回数）はＮとなり、処理精度は１００％となる。【００３８】
また、近似解を求める場合、ＤＳ処理部２１１４は、例えば、データストリームのＮ個のデータからランダムに選択したＸ個のデータをチェックし、Ｘ個のデータ中に含まれる値がＡであるデータの個数をカウントし、カウント値Ｘ＿ｓｕｍを求める。そして、ＤＳ処理切替部２１１３は、ｓｕｍ＝Ｘ＿ｓｕｍ×Ｎ÷Ｘを求めることにより、解ｓｕｍを求める。この場合、ＤＳ処理部２１１４の処理負荷（チェック回数）はＸとなり、処理精度はＸ÷Ｎ×１００％となる。ただし、ランダム選択の処理やＸ＿ｓｕｍからｓｕｍを求める処理の負荷は、データチェック処理の負荷に比べて十分に小さいものとする。従って、サンプル数Ｘを小さくすれば、処理精度が低下する代わりに、処理負荷が低下することが分かる。【００３９】
また、厳密解及び近似解を求めるアルゴリズムの他の例として、例えば、ある線分ＡＢが正方形の矩形領域Ｓに含まれるか否かをチェックする場合を説明する。まず、厳密解を求める場合を説明する。例えば、矩形領域の四隅の座標がそれぞれ（ｘ１，ｙ１），（ｘ２，ｙ１），（ｘ１，ｙ２），（ｘ２，ｙ２）であるとする。また、線分ＡＢの両端Ａ，Ｂの座標をそれぞれ（Ａｘ，Ａｙ），（Ｂｘ，Ｂｙ）と表し、線分ＡＢを含む直線ｆをｙ＝αｘ＋βと表すものとする。この場合に、ＤＳ処理部２１１４は、以下の６つの条件に従って（図２（ａ）参照）、線分ＡＢが矩形領域Ｓに含まれるか否かを判定する。【００４０】
（１）まず、ＤＳ処理部２１１４は、直線ｆが開区間（ｘ１，ｘ２）において直線ｙ＝ｙ１と交点をもてば（視覚的には矩形領域Ｓの底辺と直線ｆが交われば）、線分ＡＢが矩形領域Ｓに含まれると判定する。すなわち、ＤＳ処理部２１１４は、ｙ１＝αｘ＋βにおいてｘ１≦ｘ≦ｘ２であれば、線分ＡＢが矩形領域Ｓに含まれると判定する。【００４１】
（２）また、ＤＳ処理部２１１４は、直線ｆが開区間（ｘ１，ｘ２）において直線ｙ＝ｙ２と交点をもてば、すなわち、ｙ２＝αｘ＋βにおいてｘ１≦ｘ≦ｘ２であれば、線分ＡＢが矩形領域Ｓに含まれると判定する。【００４２】
（３）また、ＤＳ処理部２１１４は、直線ｆが開区間（ｙ１，ｙ２）において直線ｘ＝ｘ１と交点をもてば、すなわち、ｙ＝αｘ１＋βにおいてｙ１≦ｙ≦ｙ２であれば、線分ＡＢが矩形領域Ｓに含まれると判定する。【００４３】
（４）また、ＤＳ処理部２１１４は、直線ｆが開区間（ｙ１，ｙ２）において直線ｘ＝ｘ２と交点をもてば、すなわち、ｙ＝αｘ２＋βにおいてｙ１≦ｙ≦ｙ２であれば、線分ＡＢが矩形領域Ｓに含まれると判定する。【００４４】
（５）また、ＤＳ処理部２１１４は、線分ＡＢの両端のうち、少なくとも一方が矩形領域Ｓの中に存在すれば、線分ＡＢが矩形領域Ｓに含まれると判定する。すなわち、ＤＳ処理部２１１４は、ｘ１≦Ａｘ≦ｘ２且つｙ１≦Ａｙ≦ｙ２、又はｘ１≦Ｂｘ≦ｘ２且つｙ１≦Ｂｙ≦ｙ２であれば、線分ＡＢが矩形領域Ｓに含まれると判定する。【００４５】
（６）また、ＤＳ処理部２１１４は、上記（１）〜（５）のいずれの条件にも合致しなければ、線分ＡＢが矩形領域Ｓに含まれないと判定する。【００４６】
次に、近似解を求める場合の一例を説明する。例えば、矩形領域Ｓの一辺の長さをＩとし、中心点をＯとする。また、ＤＳ処理部２１１４は、線分ＡＢと中心点Ｏとの距離を計算し、求めた距離をＬとする（図２（ｂ）参照）。そして、ＤＳ処理部２１１４は、１÷ｓｑｒｔ（２）を求め、１÷ｓｑｒｔ（２）＜Ｌであれば、線分ＡＢが矩形領域Ｓに含まれないと判定する。また、ＤＳ処理部２１１４は、１÷ｓｑｒｔ（２）＜Ｌでなければ、線分ＡＢが矩形領域Ｓに含まれると判定する。なお、１÷ｓｑｒｔ（２）＜Ｌでない場合であっても、線分ＡＢが矩形領域Ｓに含まれない場合も存在するが、確率が低いため無視する。【００４７】
次に、近似解を求める場合の他の例を説明する。例えば、ＤＳ処理部２１１４は、線分ＡＢの両端のうち、少なくとも一方が矩形領域Ｓの中に存在すれば、線分ＡＢが矩形領域Ｓに含まれると判定する（厳密解算出に用いる条件（５）に相当する）。一方、ＤＳ処理部２１１４は、線分ＡＢの両端のいずれも矩形領域Ｓの中に存在しなければ、線分ＡＢが矩形領域Ｓに含まれないと判定する。なお、線分ＡＢの両端のいずれも矩形領域Ｓの中に存在しなくても、線分ＡＢが矩形領域Ｓに含まれる場合も存在するが、確率が低いため無視する。【００４８】
さらに、近似解を求めるアルゴリズムの例について説明する。例えば、ＤＳ処理部２１１４は、近似アルゴリズムを用いて、データストリーム処理を実現するようにしてもよい。この場合、ＤＳ処理部２１１４は、厳密な解ではないが、比較的厳密解に近い近似解を求めるアルゴリズムを用いる。例えば、ＤＳ処理部２１１４は、巡回セールスマン問題における山登り法（ＨＣ）や焼きなまし法（ＳＡ）等の近似アルゴリズムを用いて、データストリームを処理して近似解を求める。【００４９】
また、例えば、ＤＳ処理部２１１４は、乱択アルゴリズムで処理をを用いて、データストリーム処理を実現するようにしてもよい。この場合、ＤＳ処理部２１１４は、乱数を用いて確率的な近似解を求めるアルゴリズムを用いる。例えば、ＤＳ処理部２１１４は、円の円周率を計算におけるモンテカルロ法等の近似アルゴリズムを用いて、データストリームを処理して近似解を求める。【００５０】
また、例えば、ＤＳ処理部２１１４は、処理に制限を付与して近似解を求めてもよい。この場合、ＤＳ処理部２１１４は、処理しやすい条件や処理しやすい制限の上でデータストリームの処理を行い、それらの条件や制限を満たさない処理をスキップするようにしてもよい。例えば、ＤＳ処理部２１１４は、多角形包含判定において厳密な判定が必要な境界付近の処理を放棄して、判定処理するようにしてもよい。【００５１】
また、例えば、ＤＳ処理部２１１４は、処理の計算精度を落とすことによって、近似解を求めてもよい。この場合、ＤＳ処理部２１１４は、計算の桁数を落として処理を実行する。例えば、ＤＳ処理部２１１４は、浮動小数計算を行う場合に、long double 型で行っていた処理を、float 型やint 型に近似して処理するようにしてもよい。【００５２】
また、例えば、ＤＳ処理部２１１４は、処理対象のサンプリングレートを落とすことによって、近似解を求めてもよい。この場合、ＤＳ処理部２１１４は、データストリーム中の全データを処理するのではなく、データストリーム中のいくつかのデータのみを処理する。例えば、ＤＳ処理部２１１４は、統計処理において全データではなく無作為に抽出したサンプルデータのみを処理するようにしてもよい。【００５３】
また、例えば、ＤＳ処理部２１１４は、上記に示した近似解を求めるアルゴリズムのいずれか複数を組み合わせて用いて、データストリームを処理して近似解を求めてもよい。【００５４】
上記に示した近似解を求める方法は、全て負荷が高い処理を用いて厳密な厳密解を得ることを放棄する代わりに、より低い負荷で比較的厳密解に近い（精度の低い）解を求める方法である。なお、複数のＤＳ処理部２１１４のうちの１つが、厳密解を求めるＤＳ処理部であってもよいし、ノード２１１０に厳密解を求めるＤＳ処理部２１１４が含まれていなくてもかまわない。【００５５】
管理装置２２００は、監視部２２０１と、監視情報記憶部２２０２と、監視情報記憶部２２０２と、判断部２２０３と判断情報記憶部２２０４と、切替指示部２２０５とを含む。【００５６】
監視部２２０１は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。監視部２２０１は、処理装置２１００に含まれる各ノード２１１０の状態を監視する機能を備える。【００５７】
監視情報記憶部２２０２は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。監視情報記憶部２２０２は、監視部２２０１による監視の結果である監視情報を記憶する。【００５８】
判断部２２０３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。判断部２２０３は、処理装置２１００内のどのノード２１１０にＤＳ処理部２１１４を切り替えさせるかを判断する機能を備える。【００５９】
判断情報記憶部２２０４は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。判断情報記憶部２２０４は、切り替えさせるノード２１００を判断するために必要な情報である判断情報を記憶する。【００６０】
切替指示部２２０５は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。切替指示部２２０５は、判断部２２０３の判断結果に基づいて、ＤＳ処理部２１１４の切り替えをノード２１１０に指示する機能を備える。【００６１】
なお、本実施形態において、データストリーム処理システムを実現する情報処理装置の記憶装置（図示せず）は、データストリームの処理フローを管理するための各種プログラムを記憶している。例えば、データストリーム処理システムを実現する情報処理装置の記憶装置（図示せず）は、コンピュータに、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替処理を実行させるためのデータストリーム処理プログラムを記憶している。【００６２】
次に、動作について説明する。図３は、ＤＳＭＳにおけるデータストリームの処理フローの管理処理の一例を示すフローチャートである。まず、ＤＳＭＳに含まれる管理装置２２００の動作について説明する。管理装置２２００の監視部２２０１は、各ノード２１１０それぞれの状態を監視し（ステップＳ１１）、その監視結果を監視情報記憶部２２０２に格納させる（ステップＳ１２）。【００６３】
図４は、監視情報記憶部２２０２が格納する監視情報を記録するテーブル（Ｔ３０００）の構造の例を示す説明図である。図４に示すように、監視情報記憶部２２０２は、監視情報として、ノードＩＤ（Ｔ３００１）、監視項目（Ｔ３００２）、時刻（Ｔ３００３）及び値（Ｔ３００４）を対応付けて記憶する。【００６４】
ノードＩＤ（Ｔ３００１）は、処理装置２１００内のノード２１１０を識別するためのＩＤ（識別子）である。監視項目（Ｔ３００２）は、監視項目を識別するためのラベルである。時刻（Ｔ３００３）は、監視項目で示される値を監視し、その監視結果を取得した時刻である。値（Ｔ３００４）は、監視結果として取得した値である。【００６５】
監視部２２０１は、監視する項目（監視項目Ｔ３００２）として、各ノード２１１０について、ＤＳ入力キュー長の長さ、及びＤＳ取得部２１１２の失敗率を監視する。なお、これらの値に限られず、監視部２２０１は、他の項目で示される値を監視してもかまわない。【００６６】
「ＤＳ入力キューの長さ」とは、ＤＳ入力キュー２１１１の全体のサイズに対する、データが格納されている部分のサイズの割合である。すなわち、「ＤＳ入力キューの長さ」は、ノード２１１０が処理しきれず、ＤＳ入力キュー２１１１に溜まっているデータの量を示しているのであるから、ノード２１１０の混み具合を示す指標である。従って、「ＤＳ入力キューの長さ」の値が大きい程、ノード２１１０が混み合っていることを示している。【００６７】
「ＤＳ取得部の失敗率」とは、ＤＳ処理部２１１４が定期的にＤＳ入力キュー２１１１を監視する回数に対する、所定条件を満たさずにデータストリームを取り出せなかった回数の割合である。すなわち、「ＤＳ取得部の失敗率」とは、ノード２１１０側には処理の余裕があるにもかかわらず、データそのものが来ていないためにＤＳ入力キュー２１１１にデータが格納されておらず、データの取り出しに失敗してデータ処理できない状態の割合を示している。従って、「ＤＳ取得部の失敗率」は、ノード２１１０の空き具合を示す指標であり、値が大きい程、ノード２１１０が空いていることを示している。【００６８】
例えば、処理装置２１００と管理装置２２００とが１つの情報処理装置を用いて実現される場合、監視部２２０１は、所定のタイミングで（例えば、所定時間毎に）、各ノード２１１０のＤＳ入力キュー２１１１中のデータ格納部分のサイズを求め、「ＤＳ入力キューの長さ」を求めてもよい。また、監視部２２０１は、ＤＳ処理部２１１４によるＤＳ入力キュー２１１１の監視回数及びデータ取り出し失敗回数を求め、「ＤＳ取得部の失敗率」を求めてもよい。【００６９】
また、例えば、処理装置２１００と管理装置２２００とが別々の情報処理装置を用いて実現される場合、監視部２２０１は、「ＤＳ入力キューの長さ」や「ＤＳ取得部の失敗率」を、ネットワークを介して各ノード２１１０から受信するようにしてもよい。【００７０】
図５は、処理装置２１００と管理装置２２００とが別々の情報処理装置を用いて実現される場合のＤＳＭＳの構成例を示すブロック図である。図５に示すように、処理装置２１００と管理装置２２００とが別々の情報処理装置を用いて実現される場合、ノード２１１０は、ノード２１１０の状態を通知する状態通知部２１１５を備える。なお状態通知部２１１５は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。【００７１】
監視部２２０１は、例えば、各ノード２１１０に対して、所定のタイミングで（例えば、所定時間毎に）、ノード２１１０の状態の送信を要求する要求信号を、ネットワークを介して送信する。すると、ノード２１１０の状態通知部２１１５は、要求信号を受信したことに応じて、「ＤＳ入力キューの長さ」や「ＤＳ取得部の失敗率」を求め、ネットワークを介して管理装置２２００に送信する。そして、監視部２２０１は、受信した「ＤＳ入力キューの長さ」や「ＤＳ取得部の失敗率」を含む監視情報を、監視情報記憶部２２０２に格納させる。【００７２】
また、監視部２２０１から要求するのではなく、各ノード２１１０の状態通知部２１１５は、所定のタイミングで（例えば、所定時間毎に）、自発的に「ＤＳ入力キューの長さ」や「ＤＳ取得部の失敗率」を求め、ネットワークを介して管理装置２２００に送信するようにしてもよい。そして、監視部２２０１は、受信した「ＤＳ入力キューの長さ」や「ＤＳ取得部の失敗率」を含む監視情報を、監視情報記憶部２２０２に格納させるようにしてもよい。【００７３】
なお、監視部２２０１は、ステップＳ１１，Ｓ１２の処理を、所定のタイミングで繰り返し実行する。そのようにすることによって、管理装置２２００の監視情報記憶部２２０２に、各ノード２１１０の状態を監視した監視情報が蓄積される。【００７４】
また、判断部２２０３は、所定のタイミングで、監視情報記憶部２２０２に集められた監視情報を取得（抽出）する。そして、判断部２２０３は、抽出した監視情報に基づいて、判断情報記憶部２２０４が記憶する判断情報に従って、ＤＳ処理部２１１４を切り替えさせるノード２１１０を判断する。また、判断部２２０３は、ＤＳ処理部２１１４を切り替えさせると判断したノード２１１０について、どのＤＳ処理部２１１４に切り替えさせるかを判断する（ステップＳ１３）。【００７５】
判断部２２０３は、ＤＳ処理部２１１４の切り替えの判断方式として、様々な方式を用いることができるが、以下、判断部２２０３による動作の一例を説明する。図６は、判断部２２０３によるＤＳ処理部２１１４の切り替え判定処理の一例を示すフローチャートである。また、図７は、判断情報記憶部２２０４に格納されている判断情報の構造の一例を示す説明図である。なお、判断情報は、例えば、予めシステム管理者によって作成され、判断情報記憶部２２０４に登録されている。【００７６】
図７に示すように、判断情報記憶部２２０４は、判断情報として、選択ＤＳ処理部情報（Ｔ５１００）、選択可能ＤＳ処理部情報（Ｔ５２００）、及び制約情報（Ｔ５３００）を記憶する。【００７７】
選択ＤＳ処理部情報（Ｔ５１００）は、各ノード２１１０が現在選択しているＤＳ処理部２１１４を示す情報である。図７（ａ）に示すように、判断情報記憶部２２０４は、選択ＤＳ処理部情報（Ｔ５１００）として、ノードＩＤ（Ｔ５１０１）及び選択処理部（Ｔ５１０２）を対応付けて記憶する。ノードＩＤ（Ｔ５１０１）は、処理装置２１００内のノード２１１０を識別するためのＩＤ（識別子）である。選択処理部（Ｔ５１０２）は、現在ノード２１１０が選択しているＤＳ処理部２１１４を識別するためのＩＤ（識別子）である。【００７８】
選択可能ＤＳ処理部情報（Ｔ５２００）は、各ノード２１１０が備え、選択可能なＤＳ処理部２１１４を示す情報である。図７（ｂ）に示すように、判断情報記憶部２２０４は、選択可能ＤＳ処理部情報（Ｔ５２００）として、ノードＩＤ（Ｔ５２０１）、処理部（Ｔ５２０２）、レベル（Ｔ５２０３）、精度（Ｔ５２０４）及び負荷（Ｔ５２０５）を対応付けて記憶する。【００７９】
ノードＩＤ（Ｔ５２０１）は、処理装置２１００内のノード２１１０を識別するためのＩＤ（識別子）である。処理部（Ｔ５２０２）は、ノード２１１０が備えるＤＳ処理部２１１４を識別するためのＩＤ（識別子）である。レベル（Ｔ５２０３）は、ノード２１１０が備えるＤＳ処理部２１１４を、処理精度と処理負荷とを基準に順位付けした順序を示す情報である。すなわち、処理精度と処理負荷との両方が高い程、レベル（Ｔ５２０３）の値が高くなる。【００８０】
精度（Ｔ５２０４）は、そのＤＳ処理部２１１４の処理の精度を示す情報である。すなわち、精度（Ｔ５２０４）の値が高い程、より厳密解に近い処理結果を出力するＤＳ処理部２１１４であることを示す。負荷（Ｔ５２０５）は、そのＤＳ処理部２１１４の処理の負荷を示す情報である。すなわち、負荷（Ｔ５２０５）の値が高い程、ＤＳ処理部２１１４が処理の実行に多くのシステムリソースを消費することを示す。【００８１】
制約情報（Ｔ５３００）は、ノードが満たさなくてはならない制約を示す情報、又はノード同士がが満たさなくてはならない制約を示す情報である。図７（ｃ）に示すように、判断情報記憶部２２０４は、制約情報（Ｔ５３００）として、制約条件（Ｔ５３０１）及び対象ノードＩＤ（Ｔ５３０２）を対応付けて聞くする。【００８２】
制約条件（Ｔ５３０１）は、満たすべき制約条件の種類を示すラベルである。なお、制約条件には、以下のような種類の条件が考えられるが、これらに限定するものではない。【００８３】
（１）同期：複数のノード同士のスループットが同程度であるという制約を示す条件である。例えば、図１に示す例では、処理装置２１００において、ノード２１１０−２とノード２１１０−３は並列状態に配置されている。この場合、ノード２１１０−２，２１１０−３の後段に接続されているノード２１１０−ｎが両方の処理結果を用いて処理を行う場合、ノード２１１０−２とノード２１１０−３のうちの一方のノードの処理が早く進んでも、他方のノードの処理が遅ければ、ノード２１１−ｎは処理を進められない。そのため、ノードの混雑は解消できない。従って、この場合、２つのノード２１１０−２，２１１０−３の負荷が同程度であることが、制約条件として求められる。なお、同程度であるとは、例えば、２つのノード２１１０−２，２１１０−３間の処理負荷の差が、１０パーセント程度（好ましくは５パーセント程度）であることである。【００８４】
（２）優先：対象ノードのＤＳ処理部２１１４のレベルが、他のノードに比べて相対的に優先して高いという制約を示す条件である。例えば、図１に示す例では、処理装置２１００において、ノード２１１０−１はネットワークの先頭に配置されている。この場合、このノード２１１０−１の処理精度が極端に低い場合、ノード２１１０−１の後段のノード２１１０−２〜Ｓ１１０−ｎの処理精度を上げても、処理の元となるデータの処理精度が低いため、さほど処理精度があがらず効率が悪いという場合がある。従って、この場合、ノード２１１０−１が他のノードと比べて優先して高いレベル（高い処理精度）の処理を実行することが、制約条件として求められる。【００８５】
（３）精度：対象ノードのＤＳ処理部２１１４の処理精度が、絶対的に一定値以上でなければならないという制約を示す条件である。例えば、制約条件「優先」と同様の理由から、又はＤＳＭＳ自体に求められるサービスレベル（精度）を維持するために、絶対的にこれ以上の処理精度が求められるという制約条件を示している。【００８６】
（４）負荷：対象ノードのＤＳ処理部２１１４の負荷が、絶対的に一定値以下でなければならないという制約を示す条件である。例えば、主にＤＳＭＳ自体に求められるサービスレベル（速度）を維持するために、絶対的にこれ以下の処理負荷が求められるという制約条件を示している。【００８７】
なお、制約条件（Ｔ５３０１）として設定される精度制約や負荷制約は、ノード単体に対する制約ではなく、複数のノードからなるデータフロー経路に対して課される制約であってもかまわない。例えば、あるデータフロー経路上にあたるノード全ての負荷の平均が一定値以下でなければならないことを示す制約条件等を、予め判断情報記憶部２２０４に設定していてもよい。【００８８】
対象ノードＩＴ（５３０２）は、制約条件の対象となるノードを識別するためのＩＤ（識別子）である。【００８９】
ステップＳ１３において、判断部２２０３は、まず、ノード２１１０−１、２１１０−２，・・・，２１１０−ｎから、１つの判断対象のノードを選択する（ステップＳ４００１）。この場合、判断部２２０３は、例えば、選択方法として、単純ラウンドロビン（全てのノードを順番に選択する）を用いて、ノードを選択するのが最も容易である。なお、判断部２２０３は、単純ラウンドロビンに限らず、重み付きラウンドロビンやランダム選択等の他の選択方法を用いて、ノードを選択してもかまわない。【００９０】
次いで、判断部２２０３は、選択したノードに関する過去一定期間の監視情報を監視情報記憶部２２０２から取得（抽出）する（ステップＳ４００２）。次いで、判断部２２０３は、取得した監視情報から、選択ノードのＤＳ入力キュー２１１１の過去一定期間の平均キュー長を計算する。そして、判断部２２０３は、求めた平均キュー長が所定値以上か否かを判定する（ステップＳ４００３）。【００９１】
過去一定期間の平均キュー長が所定値以上であれば、判断部２２０３は、選択ノードが混雑している状態であると判断し、選択ノードのＤＳ処理部２１１４のレベル（例えば、処理精度のレベル）を下げるように切り替え指示すると判定する。この場合、判断部２２０３は、まず、選択ノードが現在選択しているＤＳ処理部２１１４の情報を、判断情報記憶部２２０４が記憶する選択ＤＳ処理部情報（Ｔ５１００）から取得（抽出）する。また、判断部２２０３は、選択可能なＤＳ処理部２１１４の情報を、判断情報記憶部２２０４が記憶する選択可能ＤＳ処理部情報（Ｔ５２００）から取得（抽出）する。そして、判断部２２０３は、抽出したこれらの情報に基づいて、現在選択しているＤＳ処理部２１１４よりレベルの低いＤＳ処理部２１１４を選択ノードが備えているか否かを判定する（ステップＳ４１０５）。【００９２】
選択ノードがよりレベルの低いＤＳ処理部２１１４を備えていると判定すれば、判断部２２０３は、次に、その低レベルＤＳ処理部２１１４を仮に選択した場合に、制約条件を満たすか否かを判定する（ステップＳ４１０６）。この場合、判断部２２０３は、選択ノードが満たすべき制約を示す情報を、判断情報記憶部２２０４が記憶する制約情報（Ｔ５３００）から取得（抽出）する。そして、判断部２２０３は、既に取得している低レベルＤＳ処理部２１１４の情報等と照らし合わせて、抽出した情報に示される制約条件を満たすか否かを判定する。【００９３】
低レベルＤＳ処理部２１１４を選択した場合に制約条件を満たすか否かの判定の結果、選択ノードが満たすべき制約情報を満たしていると判定すれば、判断部２２０３は、ＤＳ処理部２１１４のレベルを下げるように切り替え指示すると判定する（ステップＳ４１０７）。そして、ステップＳ４００８に移行する。【００９４】
一方、ステップＳ４００３において、求めた過去一定期間の平均キュー長が所定値より小さければ、判断部２２０３は、選択ノードが混雑している状態ではないと判断する。この場合、判断部２２０３は、次に、監視情報記憶部２２０２から取得（抽出）した監視情報から、選択ノードのＤＳ取得部２１１４の過去一定期間の平均失敗率を計算する。そして、判断部２２０３は、求めた平均失敗率が所定値以上か否かを判定する（ステップＳ４００４）。【００９５】
過去一定期間の平均失敗率が所定値以上であれば、判断部２２０３は、選択ノードが空いている状態であると判断し、選択ノードのＤＳ処理部２１１４のレベル（例えば、処理精度のレベル）を上げるように切り替え指示すると判定する。の場合、判断部２２０３は、まず、選択ノードが現在選択しているＤＳ処理部２１１４の情報を、判断情報記憶部２２０４が記憶する選択ＤＳ処理部情報（Ｔ５１００）から取得（抽出）する。また、判断部２２０３は、選択可能なＤＳ処理部２１１４の情報を、判断情報記憶部２２０４が記憶する選択可能ＤＳ処理部情報（Ｔ５２００）から取得（抽出）する。そして、判断部２２０３は、抽出したこれらの情報に基づいて、現在選択しているＤＳ処理部２１１４よりレベルの高いＤＳ処理部２１１４を選択ノードが備えているか否かを判定する（ステップＳ４２０５）。【００９６】
選択ノードがよりレベルの高いＤＳ処理部２１１４を備えていると判定すれば、判断部２２０３は、次に、その高レベルＤＳ処理部２１１４を仮に選択した場合に、制約条件を満たすか否かを判定する（ステップＳ４２０６）。この場合、判断部２２０３は、選択ノードが満たすべき制約を示す情報を、判断情報記憶部２２０４が記憶する制約情報（Ｔ５３００）から取得（抽出）する。そして、判断部２２０３は、既に取得している高レベルＤＳ処理部２１１４の情報等と照らし合わせて、抽出した情報に示される制約条件を満たすか否かを判定する。【００９７】
高レベルＤＳ処理部２１１４を選択した場合に制約条件を満たすか否かの判定の結果、選択ノードが満たすべき制約情報を満たしていると判定すれば、判断部２２０３は、ＤＳ処理部２１１４のレベルを上げるように切り替え指示すると判定する（ステップＳ４２０７）。そして、ステップＳ４００８に移行する。【００９８】
一方、ステップＳ４００４において、求めた過去一定期間の平均失敗率が所定値より小さければ、判断部２２０３は、ＤＳ処理部２１１４のレベルの切り替え指示を行わないと判定する（ステップＳ４００７）。また、ステップＳ４１０５において、ＤＳ処理部２１１４のレベルを下げられない（よりレベルの低いＤＳ処理部２１１４を選択ノードが備えていない）と判定したときも、判断部２２０３は、ＤＳ処理部２１１４のレベルの切り替え指示を行わないと判定する（ステップＳ４００７）。また、ステップＳ４１０６において制約条件を満たさないと判定したときも、判断部２２０３は、ＤＳ処理部２１１４のレベルの切り替え指示を行わないと判定する（ステップＳ４００７）。【００９９】
また、ステップＳ４２０５において、ＤＳ処理部のレベルを上げられない（よりレベルの高いＤＳ処理部２１１４を選択ノードが備えていない）と判定したときも、判断部２２０３は、ＤＳ処理部２１１４のレベルの切り替え指示を行わないと判定する（ステップＳ４００７）。また、ステップＳ４２０６において制約条件を満たさないと判定したときも、判断部２２０３は、ＤＳ処理部２１１４のレベルの切り替え指示を行わないと判定する（ステップＳ４００７）。【０１００】
最後に、判断部２２０３は、ステップＳ４００７、ステップＳ４１０７、又はステップＳ４２０７で判定した判定結果（ＤＳ処理部２１１４の切り替え指示の判定結果）を、切替指示部２２０５に転送（出力）する（ステップＳ４００８）。【０１０１】
なお、判断部２２０３は、上記に示したステップＳ４００１〜Ｓ４００８の処理を、ノード２１１０−１，２１１０−２，・・・，２１１０−ｎの全てに対して繰り返し実行する。【０１０２】
次いで、切替指示部２２０５は、判断部２２０３の判断結果に従い、ＤＳ処理部２１１４の切り替えを指示すると判定した場合には、対象となるノード２１１０に対して、ＤＳ処理切替部２１１４の切り替えを指示する。すると、後述するように、ノード２１１０のＤＳ処理切替部２１１３は、管理装置２２００からの切り替え指示に従って、データストリームの処理に用いるＤＳ処理部２１１４を切り替える。そのようにすることによって、切替指示部２２０５は、対象となるノード２１１０に対して、ＤＳ処理部２１１４を切り替えさせる。【０１０３】
なお、ステップＳ１４において、管理装置２２００とノード２１１０とが別々の情報処理装置によって実現される場合には、切替指示部２２０５は、ＤＳ処理部２１１４の切り替えを指示する指示情報を、ネットワークを介してノード２１１０に送信する。すると、後述するように、ノード２１１０のＤＳ処理切替部２１１３は、管理装置２２００から受信した指示情報に示される切り替え指示に従って、データストリームの処理に用いるＤＳ処理部２１１４を切り替える。【０１０４】
また、切替指示部２２０５は、同時に、判断情報記憶部２２０４が記憶する選択ＤＳ処理部情報（Ｔ５１００）のうち、切り替え対象となるノードの選択処理部（Ｔ５１０２）を、切り替えたＤＳ処理部２１１４のＩＤに書き換える。【０１０５】
次に、ノード２１１０の動作について説明する。ノード２１１０は、データストリームの入力がある毎に、外部又は処理装置内の他のノードからデータストリームを受け取り（入力し）、その入力したデータストリームをキュー形式でＤＳ入力キュー２１１１に蓄える（格納する）。【０１０６】
また、ＤＳ取得部２１１２は、ＤＳ入力キュー２１１１を監視し、所定条件が成立すれば、ＤＳ入力キュー２１１１から所定量のデータストリームを取り出す。そして、ＤＳ取得部２１１２は、取り出したデータストリームを、ＤＳ処理切替部２１１３に転送（出力）する。【０１０７】
所定条件とは、例えば、所定時間毎（例えば、１０分毎）や、データが所定量（例えば、１０個）溜まったこと等である。所定量のデータとは、例えば、その時点でＤＳ入力キュー２１１１に格納されているデータ先頭から所定個（例えば、１０個）のデータ等である。【０１０８】
ＤＳ処理切替部２１１３は、ＤＳ取得部２１１２から受け取ったデータを、複数のＤＳ処理部２１１４のうち、管理装置２２００から選択指示されたＤＳ処理部２１１４に対してのみ、さらにデータを転送（出力）する。【０１０９】
複数のＤＳ処理部２１１４のうち、ＤＳ処理切替部２１１３からデータを受け取ったＤＳ処理部２１１４は、受け取ったデータを処理する。そして、ＤＳ処理部２１１４は、データストリーム処理したデータを、外部又は処理装置内の次のノードのＤＳ入力キュー２１１１に送る（出力する）。【０１１０】
また、ノード２１１０のＤＳ処理切替部２１１３は、管理装置２２００からＤＳ処理部２１１４の切り替え指示を受けた場合には、管理装置２２００からの切り替え指示に従って、データストリームの処理に用いるＤＳ処理部２１１４を切り替える（ステップＳ１５）。なお、この場合、管理装置２２００とノード２１１０とが別々の情報処理装置によって実現される場合には、処理切替部２１１３は、管理装置２２００からネットワークを介して受信した指示情報に示される切り替え指示に従って、データストリームの処理に用いるＤＳ処理部２１１４を切り替える。【０１１１】
そして、その後、ノード２１１０は、切り替え後のＤＳ処理部２１１４を用いて、データストリームの処理を行う（ステップＳ１６）。【０１１２】
以上のように処理を実行することで、各ノードの処理精度と処理負荷とを制御し、その制御の結果、各ノードの消費システムリソース量を明示的に変更することなく、スループットを制御することができる。【０１１３】
以上のように、本実施形態によれば、処理装置２１００に含まれる各ノード２１１０は、連続して入力される大量の情報であるデータストリームを逐次処理する複数のＤＳ処理部２１１４を含む。そして、各ノード２１１０のデータストリームの処理状態に応じて、データストリームの処理に用いるＤＳ処理部２１１４を切り替える処理を実行する。そようにすることによって、各ノード２１１０の処理制度と処理負荷とを制御することができる。また、各ノード２１１０の処理精度と処理負荷とを制御することで、ノード２１１０の消費システムリソース量を明示的に変更することなく、スループット制御を行なうことができる。また、各ノード２１１０の状況の監視結果に応じて、各ノード２１１０の処理精度と処理負荷とを繰り返し制御することによって、処理装置２１００全体のスループットを向上させることができる。【０１１４】
また、本実施形態によれば、上記のような処理を実行することによって、スループットの低いノードの処理精度を下げる代わりに処理負荷を下げることによって、スループットを向上させることができる。【０１１５】
例えば、非特許文献１や非特許文献２に記載されたＤＳＭＳを用いた場合、スループットの高いノード２１１０の後ろにスループットの低いノード２１１０が接続されると、スループットの遅いノード２１１０のＤＳ入力キュー２１１１内のデータの消費速度より、前段のスループットの高いノード２１１０によるデータの追加速度が上回る状態が発生してしまう。そのため、ＤＳ入力キュー２１１１の消費速度より追加速度が速い場合、ＤＳ入力キュー２１１１内のデータは増え続け、やがてオーバーフローを起こし、ＤＳＭＳは異常停止してしまうという問題があった。【０１１６】
ＤＳＭＳ全体のスループット律束や、ＤＳ入力キュー２１１１のオーバーフローが、一部のノード２１１０のスループット格差に基づくものであれば、スループットの高いノード２１１０に割り当てているシステムリソース（メモリやＣＰＵパワー等）を少なくし、スループットの低いノード２１１０に多くのシステムリソースを割り当てることにより、スループット格差を是正し、防ぐことが可能な場合もある。しかし、割り当てるシステムリソースを適切に配分するのは困難であるという問題がある。【０１１７】
これに対して、本実施形態によれば、スループットの高いノードのスループットを下げることで、ＤＳＭＳにおける各ノード２１１０のスループット格差を是正し、ＤＳＭＳ全体のスループットを向上させることができる。また、各ノード２１１０のＤＳ入力キュー２１１１のオーバフローを防ぎ、ＤＳＭＳの異常停止を防ぐことができる。【０１１８】
また、例えば、非特許文献１や非特許文献２に記載されたＤＳＭＳを用いた場合、外部からの入力データストリームが時々刻々と変化するため、時には非常に大量のデータが入力される場合もある。この場合、入力データストリームのデータ量がＤＳＭＳの全システムリソースを用いても処理しきれない量の場合には、処理装置２１００のどこかで上記したようなＤＳ入力キュー２１１１のオーバーフローが発生してしまうおそれがある。さらに、システムリソースに余裕がないため、そのオーバーフローを解消できないおそれがある。そのため、ＤＳＭＳが異常停止してしまうという問題があった。【０１１９】
これに対して、本実施形態によれば、システム全体のノードの処理精度を下げる代わりに処理負荷を下げて、システム全体の消費システムリソースを変更することなく、システム全体のスループットを向上させる。そのため、大量のデータストリームが入力されても、ＤＳＭＳの異常停止を防ぐことができる。【０１２０】
実施形態２．
次に、本発明の第２の実施形態について図面を参照して説明する。図８は、第２の実施形態におけるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。図８に示すように、本実施形態において、ＤＳＭＳは、データストリーム処理を行う処理装置２１００と、ノードを制御する管理装置６２００とを含む。なお、本実施形態において、処理装置２１００の構成及び機能は、第１の実施形態で示した処理装置２１００と同様であるため、説明を省略する。【０１２１】
管理装置６２００は、監視部２２０１と、監視情報記憶部２２０２と、ルールベース判断部６２０３と、判断情報記憶部６２０４と、制御ルール記憶部６２０６と、切替指示部２２０５とを含む。図８に示すように、本実施形態では、管理装置６２００が、第１の実施形態で示す管理装置２２００の構成要素に加えて、制御ルール記憶部６２０６を含む点で、第１の実施形態と異なる。また、第１の実施形態で示した判断部２２０３に代えて、ルールベース判断部６２０３を含む点で、第１の実施形態と異なる。さらに、判断情報記憶部６２０４が記憶する情報の内容が、第１の実施形態で示した判断情報記憶部２２０４が記憶する情報の内容と異なる。【０１２２】
監視部２２０１は、第１の実施形態と同様に、各ノードの状態を監視する機能を備える。監視情報記憶部２２０２は、第１の実施形態と同様に、監視部２２０１による監視の結果である監視情報を記憶する。【０１２３】
ルールベース判断部６２０３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。ルールベース判断部６２０３は、処理装置２１００内のどのノード２１００のＤＳ処理部２１１４を切り替えさせるかを判断する機能を備える。【０１２４】
判断情報記憶部６２０４は、切り替えさせるノード２１００を判断するために必要な情報である判断情報を記憶する。【０１２５】
制御ルール記憶部６２０６は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。制御ルール記憶部６２０６は、ルールベース判断部６２０３の動作を制御するためのルールである制御ルールを記憶する。【０１２６】
切替指示部２２０５は、ルールベース判断部６２０３の判断結果に基づいて、ＤＳ処理部２１１４の切り替えをノード２１１０に指示する機能を備える。【０１２７】
次に、動作について説明する。まず、ＤＳＭＳに含まれる管理装置６２００の動作について説明する。なお、図８に示す監視部２２０１と、監視情報記憶部２２０２と、切替指示部２２０５とを用いたＤＳＭＳの動作（図３に示すステップＳ１１，Ｓ１２，Ｓ１４の動作）は、第１の実施形態で示した動作と同様であるため、説明を省略する。【０１２８】
ステップＳ１３において、ルールベース判断部６２０３は、所定のタイミングで、監視情報記憶部２２０２に集められた監視情報を取得（抽出）する。そして、ルールベース判断部６２０３は、抽出した監視情報に基づいて、判断情報記憶部６２０４が記憶する判断情報に従って、ＤＳ処理部２１１４を切り替えさせるノード２１１０を判断する。また、ルールベース判断部６２０３は、ＤＳ処理部２１１４を切り替えさせると判断したノード２１１０について、どのＤＳ処理部２１１４に切り替えさせるかを判断する。この場合、本実施形態では、ルールベース判断部６２０３は、所定のルールベース判断処理を用いて、ＤＳ処理部２１１４の切り替えを判断する。【０１２９】
ルールベース判断部６２０３は、様々な方式を用いてルールベース判断処理を実現することができる。本実施形態では、図９〜図１１を用いて、ルールベース判断部６２０３の動作の一例として、ユニフィケーション有り優先度付きルールベースエンジンとして動作する場合を説明する。【０１３０】
図９は、ルールベース判断部６２０３によるＤＳ処理部２１１４の切り替え判定処理の一例を示すフローチャートである。また、図１０は、判断情報記憶部６２０４に格納されている判断情報の構造の一例を示す説明図である。また、図１１は、制御ルール記憶部６２０６に格納されている制御ルールの情報の構造の一例を示す説明図である。なお、判断情報は、例えば、予めシステム管理者によって作成され、判断情報記憶部６２０４に登録されている。また、制御ルールの情報は、例えば、予めシステム管理者によって作成され、制御ルール記憶部６２０６に登録されている。【０１３１】
図１０に示すように、判断情報記憶部６２０４は、判断情報として、選択ＤＳ処理部情報（Ｔ８１００）、及び選択可能ＤＳ処理部情報（Ｔ８２００）を記憶する。図１０に示すように、本実施形態では、判断情報記憶部６２０４は、第１の実施形態で示した判断情報記憶部２２０４が記憶する情報の内容のうち、制約情報を記憶していない点で、第１の実施形態と異なる。【０１３２】
なお、選択ＤＳ処理部情報（Ｔ８１００）、及び選択可能ＤＳ処理部情報（Ｔ８２００）の情報内容は、第１の実施形態で示した選択ＤＳ処理部情報（Ｔ５１００）、及び選択可能ＤＳ処理部情報（Ｔ５２００）と同様であるため、説明を省略する。【０１３３】
図１１に示すように、制御ルール記憶部６２０６は、制御ルールを示すルール情報（Ｔ９０００）を記憶する。ルール情報（Ｔ９０００）は、ルールベース判断部６２０３の動作を制御するためのルールを示す情報である。図１１に示すように、制御ルール記憶部６２０６は、ルール情報（Ｔ９０００）として、ルールＩＤ（Ｔ９００１）、ヘッド（Ｔ９００２）、ボディ（Ｔ９００３）及び優先度（Ｔ９００４）を対応付けて記憶する。【０１３４】
ルールＩＤ（Ｔ９００１）は、ルールを識別するためのＩＤ（識別子）である。ヘッド（Ｔ９００２）は、ルールのヘッドを示す情報である。ボディ（Ｔ９００３）は、ルールのボディを示す情報である。なお、ヘッド（Ｔ９００２）とボディ（９００３）との関係は、「ボディ（Ｔ９００３）が成立すれば、ヘッド（Ｔ９００２）が成立する」という論理学の命題の形式に対応している。【０１３５】
優先度（Ｔ９００４）は、ルールの優先度を示す情報である。従って、ルールベース判断部６２０３は、処理の結果、複数のルールが成立すると判断した場合、この優先度（Ｔ９００４）に基づいて、複数のルールから優先度の高い１つのルールを解として選択する。【０１３６】
なお、本実施形態では、第１の実施形態では判断情報記憶部２２０４に格納されていた制約情報（Ｔ５３００）が、ルールとして制御ルール記憶部６２０６に格納されていることになる。従って、本実施形態では、制御ルール記憶部６２０６が記憶するルール情報（Ｔ９０００）に含まれるＩＤ６〜９のルールが、制約情報（Ｔ５３００）に相当する。【０１３７】
ステップＳ１３において、ルールベース判断部６２０３は、まず、ノード２１１０−１、２１１０−２，・・・，２１１０−ｎから、１つの判断対象のノードを選択する（ステップＳ７００１）。この場合、ルールベース判断部６２０３は、例えば、選択方法として、単純ラウンドロビン（全てのノードを順番に選択する）を用いて、ノードを選択するのが最も容易である。なお、ルールベース判断部６２０３は、単純ラウンドロビンに限らず、重み付きラウンドロビンやランダム選択等の他の選択方法を用いて、ノードを選択してもかまわない。【０１３８】
次いで、ルールベース判断部６２０３は、選択したノードに関する過去一定期間の監視情報を監視情報記憶部２２０２から取得（抽出）する（ステップＳ７００２）。次いで、ルールベース判断部６２０３は、選択したノードに関して、現在選択しているＤＳ処理部２１１４の情報、及び選択可能なＤＳ処理部２１１４の情報も、判断情報記憶部６２０４から取得（抽出）する（ステップＳ７００３）。【０１３９】
次いで、ルールベース判断部６２０３は、取得した情報を条件として、制御ルール記憶部６２０６に格納されているルール群のボディと照らし合わせて、ユニフィケーションを行いながら成立するルールを検索する（ステップＳ７００４）。【０１４０】
例えば、選択したノードがノードＩＤ「ノード１」であり、ルールベース判断部６２０３は、過去１０分間の平均キュー長が７０％である内容の監視情報を抽出したものとする。また、ルールベース判断部６２０３は、判断情報として、現在のＤＳ処理部２１１４が選択処理部「１」である旨の情報を、判断情報記憶部６２０４の選択ＤＳ処理部情報（Ｔ８１００）から抽出するものとする（図１０（ａ）参照）。また、ルールベース判断部６２０３は、選択可能なＤＳ処理部２１１４が処理部「１」（レベルＬ２、精度１００、負荷１００）である旨の情報と、処理部「２」（レベルＬ１、精度９０、負荷５０）である旨の情報を、判断情報記憶部６２０４の選択可能処理部情報（Ｔ８２００）から抽出するものとする（図１０（ｂ）参照）。【０１４１】
ステップＳ７００４において、ルールベース判断部６２０３は、上記の各情報を制御ルール記憶部６２０６に格納されているルール群と照らし合わせて、各ルールの成立の有無を以下のように判断する。【０１４２】
ルールベース判断部６２０３は、ルール１については、単純に成立すると判断する。また、ルールベース判断部６２０３は、ルール２については、単純に成立しないと判断する。また、ルールベース判断部６２０３は、ルール３については、選択ノードがノード１であるため、対象とならず成立しないと判断する。【０１４３】
なお、このルール１〜３の成立の有無を判断する処理は、第１の実施形態で示した判断部２２０３が実行する処理であるステップＳ４００３の処理に相当する。【０１４４】
また、ルールベース判断部６２０３は、ルール４については、現状選択されている処理部「１」（レベルＬ２）より低レベルの処理部「２」（レベルＬ１）が存在するため、成立すると判断する。【０１４５】
また、ルール５のボディに示される条件「低レベル処理部がある」は、ルール４のヘッドに示される条件に相当する。そのため、ルール５のボディは、「ＮＯＴ（任意ノード＆ルール４が成立）」と置換できる。このように、複数のルールを統一化することをユニフィケーションという。図１０及び図１１に示す例では、ルールベース判断部６２０３は、ルール４が成立すると判断するため、連鎖的にルール５のボディのＮＯＴの内部が成立すると判断する。従って、ルールベース判断部６２０３は、ＮＯＴの内部が成立すると判断するため、ルール５のルール全体としては成立しないと判断する。【０１４６】
なお、このルール４，５の成立の有無を判断する処理は、第１の実施形態で示した判断部２２０３が実行する処理であるステップＳ４１０５の処理に相当する。【０１４７】
また、ルールベース判断部６２０３は、ルール６については、選択ノードがノード「１」であるため、成立すると判断する。なお、このルール６の成立の有無を判断する処理は、第１の実施形態で示した判断部２２０３が実行する処理であるステップＳ４１０６の処理に相当する。【０１４８】
また、ルールベース判断部６２０３は、ルール７〜９については、選択ノードがノード「１」であるため、成立しないと判断する。【０１４９】
よって、図１０及び図１１に示す例では、ルールベース判断部６２０３は、ルール１の「処理部レベルを下げる」と、ルール６の「処理部レベルを下げない」というルールが成立すると判断する。なお、ルール４も成立しているが、ルール５の成立の有無の判断処理を行う過程のルール成立であり、ヘッドに示される条件も、処理部レベルの上下を指示するものではないため考慮しない。【０１５０】
次いで、ルールベース判断部６２０３は、ステップＳ７００４の判断処理の結果、処理部レベルの上下を指示するルールがいくつ成立したかを判定する（ステップＳ７００５）。成立したルールが１つである場合には、ルールベース判断部６２０３は、その成立したルールを、ＤＳ処理部２１１４の切り替え指示に用いる結果ルールとして決定する。【０１５１】
成立したルールが複数ある場合には、ルールベース判断部６２０３は、成立したルールの優先度を基準に、ＤＳ処理部２１１４の切り替え指示に用いる結果となるルールを１つに絞り込む（ステップＳ７００６）。図１０及び図１１に示す例では、成立したルー
ル１とルール６とに関しては、それぞれ優先度が５０と７０である。よって、ルールベース判断部６２０３は、優先度が高いルール６が、ＤＳ処理部２１１４の切り替え指示に用いる結果となるルールであると決定する。そして、ルールベース判断部６２０３は、そのルール６のヘッドである「処理部レベルを下げない」という判定結果を、ノード「１」に対する判定結果として決定する。【０１５２】
なお、例えば、ステップＳ７００２で過去１０分間の平均キュー長が９０％である内容の監視情報を抽出した場合には、ルールベース判断部６２０３は、ステップＳ７００４において、ルール２も成立すると判断する。この場合、ルール２の優先度は８０であるため、ルール２は、ルール６より優先される。よって、ルールベース判断部６２０３は、ルール２を、ＤＳ処理部２１１４の切り替え指示に用いる結果ルールであると決定する。そして、ルールベース判断部６２０３は、そのルール２のヘッドである「処理部レベルを下げる」という判定結果を、ノード「１」に対する判定結果として決定する。【０１５３】
また、例えば、ステップＳ７００３で現在のＤＳ処理部２１１４が選択処理部「２」である旨の判断情報を抽出した場合には、ルールベース判断部６２０３は、ステップＳ７００４において、ルール４が成立せず、ユニフィケーションの結果、ルール５が成立すると判断する。この場合、ルール５の優先度は１００であるため、全てのルールより優先される。よって、ルールベース判断部６２０３は、ルール５を、ＤＳ処理部２１１４の切り替え指示に用いる結果ルールであると決定する。そして、ルールベース判断部６２０３は、そのルール５のヘッドである「処理部レベルを下げない」という判定結果を、ノード「１」に対する判定結果として決定する。【０１５４】
最後に、ルールベース判断部６２０３は、ステップＳ７００５もしくはステップＳ７００６で決定した結果ルールのヘッドに示される内容を、判定結果（ＤＳ処理部２１１４の切り替え指示の判定結果）として、切替指示部２２０５に転送（出力）する（ステップＳ７００７）。【０１５５】
なお、ルールベース判断部６２０３は、上記に示したステップＳ７００１〜Ｓ７００７の処理を、ノード２１１０−１，２１１０−２，・・・，２１１０−ｎの全てに対して繰り返し実行する。【０１５６】
また、本実施形態において、各ノード２１１０の動作も、第１の実施形態で示した動作と同様であるため、説明を省略する。【０１５７】
以上のように処理を実行することで、より柔軟な判断方法を用いて各ノードの処理精度と処理負荷とを制御し、その制御の結果、各ノードの消費システムリソース量を明示的に変更することなく、スループットを制御することができる。【０１５８】
以上のように、本実施形態によれば、第１の実施形態で示した効果に加えて、より柔軟な制御を容易に実現して、ＤＳＭＳ全体のスループットを向上させることができる。【０１５９】
例えば、第１の実施形態に示したデータストリーム処理システムでは、ステップＳ４２００における「過去一定期間の監視情報」やステップＳ４００３における「平均キュー長が一定値以上」等の判定パラメータを固定的に設定している。また、判定方式も「平均キュー長」の判定処理の次に「平均失敗率」の判定処理を行うように固定的に設定している。そのため、よりスループットの判定処理の柔軟に行えるようにすることが望ましい。また、制約条件の解消方法もアドホックになってしまうという点で、改善の余地がある。【０１６０】
これに対して、本実施形態では、処理フローを変えることなく、ルールを追加するだけで、スループット判定に用いる判定パラメータを容易に変更することができ、柔軟性を向上させることができる。例えば、ルール３を追加することにより、後から、ノード４のみ過去３０分間の平均キュー長でも判定するという処理を追加することができる。【０１６１】
従って、本実施形態では、第１の実施形態で示した効果に加えて、より柔軟な制御を容易に実現できるという効果を得ることができる。【０１６２】
実施形態３．
次に、本発明の第３の実施形態について図面を参照して説明する。図１２は、第３の実施形態におけるデータストリーム処理方法を用いたＤＳＭＳの構成例を示すブロック図である。図１２に示すように、本実施形態において、ＤＳＭＳは、データストリーム処理を行う処理装置２１００と、ノードを制御する管理装置１０２００とを含む。なお、本実施形態において、処理装置２１００の構成及び機能は、第１の実施形態で示した処理装置２１００と同様であるため、説明を省略する。【０１６３】
管理装置１０２００は、監視部２２０１と、監視情報記憶部２２０２と、ルールベース判断部６２０３と、判断情報記憶部６２０４と、制御ルール記憶部６２０６と、切替指示部２２０５と、検証部１０２０７と、更新部１０２０８とを含む。図１２に示すように、本実施形態では、管理装置１０２００が、第２の実施の形態で示した管理装置６２００の構成要素に加えて、検証部１０２０７及び更新部１０２０８を含む点で、第２の実施形態と異なる。【０１６４】
監視部２２０１は、第１の実施形態及び第２の実施形態と同様に、各ノードの状態を監視する機能を備える。監視情報記憶部２２０２は、第１の実施形態及び第２の実施形態と同様に、監視部２２０１による監視の結果である監視情報を記憶する。【０１６５】
ルールベース判断部６２０３は、第２の実施形態と同様に、処理装置２１００内のどのノード２１００のＤＳ処理部２１１４を切り替えさせるかを判断する機能を備える。判断情報記憶部６２０４は、第２の実施の形態と同様に、切り替えさせるノード２１００を判断するために必要な情報である判断情報を記憶する。制御ルール記憶部６２０６は、第２の実施形態と同様に、ルールベース判断部６２０３の動作を制御するためのルールである制御ルールを記憶する。【０１６６】
切替指示部２２０５は、第２の実施形態と同様に、ルールベース判断部６２０３の判断結果に基づいて、ＤＳ処理部２１１４の切り替えをノード２１１０に指示する機能を備える。【０１６７】
検証部１０２０７は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。検証部１０２０７は、ＤＳ処理部２１１４切り替え後のノード２１１０のデータストリームの処理の結果を検証する機能を備える。【０１６８】
更新部１０２０８は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。更新部１０２０８は、検証部１０２０７の検証結果に基づいて、制御ルール記憶部６２０６が記憶する制御ルールを更新する機能を備える。【０１６９】
次に、動作について説明する。まず、ＤＳＭＳに含まれる管理装置１０２００の動作について説明する。なお、図１２に示す監視部２２０１と、監視情報記憶部２２０２と、ルールベース判断部６２０３と、切替指示部２２０５とを用いたＤＳＭＳの動作（図３に示すステップＳ１１，Ｓ１２，Ｓ１４の動作。図９に示すステップＳ７００１〜Ｓ７００７の動作）は、第２の実施形態で示した動作と同様であるため、説明を省略する。【０１７０】
検証部１０２０７は、ルールベース判断部６２０３が判断したＤＳ処理部２１１４の切替指示を適用した結果、各ノード２１１０のデータストリーム処理の状況が改善したのか、悪化したのかを判定する。【０１７１】
図１３は、検証部１０２０７による検証処理の一例を示すフローチャートである。検証部１０２０７は、ルールベース判断部６２０３が監視情報２２０２を取得する場合と同様のタイミングで、監視情報記憶部２２０２から監視情報を取得（抽出）する。（ステップＳ１１０１０）。なお、このように検証部１０２０７が検証用に抽出する監視情報を、以下、監視情報（前）という。【０１７２】
次いで、検証部１０２０７は、ルールベース判断部６２０３が判断を行った後、最終的な結果と判断したルールの情報を、制御ルール記憶部６２０６から取得（抽出）する（ステップＳ１１０２０）。【０１７３】
次いで、検証部１０２０７は、一定時間が経過し（例えば、処理装置２１００に含まれる全てのノード２１１０に対する監視情報（前）を抽出したら）、ルールベース判断部６２０３が判断したＤＳ処理部２１１４の切替指示が適用されて所定時間が経過すると、再び、監視情報記憶部２２０２から監視情報を取得（抽出）する（ステップＳ１１０３０）。なお、このように検証部１０２０７が所定時間経過後に再び検証用に抽出する監視情報を、以下、監視情報（後）という。【０１７４】
次いで、検証部１０２０７は、取得（抽出）した結果ルールのヘッドに示される条件が「処理部レベルを上げる」、「処理部レベルを下げる」又は「処理部レベルを変えない」のいずれであるかを判定する（ステップＳ１１０４０）。【０１７５】
ヘッドに示される条件が「処理部レベルを上げる」である場合、ルールベース判断部６２０３による判断を適用した結果、判断対象となったノード２１１０の平均失敗率が低くなっていることが望ましい。よって、検証部１０２０７は、監視情報（前）と監視情報（後）とを比較し、監視情報（前）より、監視情報（後）の判断対象のノード２１１０の平均失敗率が高いか低いかを判定する（ステップＳ１１０５１）。【０１７６】
平均失敗率が一定値以上低くなっていれば、ＤＳ処理部２１１４切り替え後の状態が望ましい状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が効果的であったと判断する（ステップＳ１１０６１）。一方、平均失敗率が一定値以上高くなっていれば、ＤＳ処理部２１１４切り替え後の状態が望ましくない状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が逆効果であったと判断する（ステップＳ１１０７１）。また、どちらでもなければ（平均失敗率が一定値以上低くも高くもなっていなければ）、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用がそれほど効果的でなかったと判断する（ステップＳ１１０８１）。【０１７７】
また、ヘッドに示される条件が「処理部レベルを下げる」である場合、ルールベース判断部６２０３による判断を適用した結果、判断対象となったノード２１１０の平均キュー長が短くなっていることが望ましい。よって、検証部１０２０７は、監視情報（前）と監視情報（後）とを比較し、監視情報（前）より、監視情報（後）の判断対象のノード２１１０の平均キュー長が長いか短いかを判定する（ステップＳ１１０５３）。【０１７８】
平均キュー長が一定値以上短くなっていれば、ＤＳ処理部２１１４切り替え後の状態が望ましい状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が効果的であったと判断する（ステップＳ１１０６３）。一方、平均キュー長が一定値以上長くなっていれば、ＤＳ処理部２１１４切り替え後の状態が望ましくない状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が逆効果であったと判断する（ステップＳ１１０７３）。また、どちらでもなければ（平均キュー長が一定値以上短くも長くもなっていなければ）、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用がそれほど効果的でなかったと判断する（ステップＳ１１０８３）。【０１７９】
また、ヘッドに示される条件が「処理部レベルを変えない」である場合、ルールベース判断部６２０３による判断を適用した結果、判断対象となったノード２１１０の状態が、現状のままであることが望ましい。よって、検証部１０２０７は、監視情報（前）と監視情報（後）とを比較し、監視情報（前）と監視情報（後）との判断対象のノード２１１０の状態（例えば、平均失敗率と平均キュー長との両方）に一定以上の差があるか否かを判定する（ステップＳ１１０５２）。【０１８０】
ノード２１１０の状態に一定以上の差がなければ望ましい状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が効果的であったと判断する（ステップＳ１１０６２）。一方、ノード２１１０の状態に一定以上の差があれば望ましくない状態であり、検証部１０２０７は、ルールベース判断部６２０３が判断したルールの適用が逆効果であったと判断する（ステップＳ１１０７２）。また、どちらでもなければ（ノード２１１０の状態に一定以上の差がない状態であるある状態でもなければ）、ルールベース判断部６２０３が判断したルールの適用がそれほど効果的でなかったと判断する（ステップＳ１１０８２）。【０１８１】
最後に、検証部１０２０７は、ルールの適用が効果的であったか否かの判断結果を、更新部１０２０８に転送（出力）する（ステップＳ１１０９０）。【０１８２】
その後、更新部１０２０８は、検証部１０２０７によって結果ルールが効果的であると判断され、かつ現状のルールの優先度が一定値以下であれば、制御ルール記憶部６２０６に格納されている結果ルールの優先度を一定値増やすように、制御ルール記憶部６２０６が記憶する制御ルールを更新する。逆に、更新部１０２０８は、検証部１０２０７によって結果ルールが逆効果である判断され、かつ現状のルールの優先度が一定値以上であれば、制御ルール記憶部６２０６に格納されている結果ルールの優先度を一定値減らすように、制御ルール記憶部６２０６が記憶する制御ルールを更新する。また、更新部１０２０８は、どちらでもなければ、結果ルールの優先度を変更せず、制御ルール記憶部６２０６が記憶する制御ルールを更新しない。【０１８３】
以上のように処理を実行することで、判断した結果を制御ルールにフィードバックすることができる。【０１８４】
以上のように、本実施形態によれば、第２の実施形態で示した効果に加えて、処理結果に応じてルールの優先度が変更されるため、効果的なルールが優先して成立するようになり、より効果的なスループット制御を可能とすることができる。また、制御ルール記憶部６２０６が記憶する制御ルールを繰り返し学習して更新することができるので、処理装置２１００全体のスループット制御の精度を向上させることができる。【０１８５】
なお、データストリーム処理システムの実施形態は、以上に示した各実施形態に限定されず、その他各種の付加変更が可能である。例えば、データストリーム処理フ
ロー管理を用いたＤＳＭＳを、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。また、プログラムは、磁気ディスク装置や半導体メモリ等のコンピュータ可読記録媒体に記録されて提供される。そして、コンピュータの立ち上げ時等にコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを上記した各実施形態におけるＤＳＭＳとして機能させる。【０１８６】
次に、本発明によるデータストリーム処理システムの最小構成について説明する。図１４は、データストリーム処理方法を用いたＤＳＭＳの最小の構成例を示すブロック図である。図１４に示すように、データストリーム処理システムを実現する最小構成のＤＳＭＳは、複数のノード２１１０を含む。また、各ノード２１１０は、データストリームを逐次処理する複数のＤＳ処理部２１１４を含む。また、ＤＳＭＳは、各ノード２１１０のデータストリームの処理状態に応じて、データストリームの処理に用いるＤＳ処理部２１１４を切り替えるＤＳ処理切替部２１１３を備える。【０１８７】
図１４に示す最小構成のデータストリーム処理システムによれば、スループットの高いノードのスループットを下げることで、ＤＳＭＳにおける各ノード２１１０のスループット格差を是正し、ＤＳＭＳ全体のスループットを向上させることができる。【０１８８】
なお、上記の各実施形態では、以下の（１）〜（９）に示すようなデータストリーム処理システムの特徴的構成が示されている。【０１８９】
（１）データストリーム処理システムは、複数のノード（例えば、ノード２１１０）を有するデータストリーム処理システム（例えば、ＤＳＭＳ）の処理フローを管理するデータストリーム処理システムであって、複数のノードは、それぞれデータストリームを逐次処理する複数のデータストリーム処理部（例えば、ＤＳ処理部２１１４によって実現される）を含み、複数のノードのそれぞれにおけるデータストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替部（例えば、ＤＳ処理切替部２１１３によって実現される）を備える。【０１９０】
（２）また、データストリーム処理システムは、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部（例えば、監視部２２０１によって実現される）と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部（例えば、判断部２２０３によって実現される）とを備え、ＤＳ処理切替部は、判断部の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。【０１９１】
（３）また、データストリーム処理システムは、複数のノードを有する処理装置（例えば、処理装置２１００を１つの情報処理装置を用いて実現する場合の処理装置２１００によって実現される）と、処理装置を管理する管理装置（例えば、管理装置２２００によって実現される）とを備え、処理装置が有する複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部（例えば、ＤＳ処理部２１１４によって実現される）と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替部（例えば、ＤＳ処理切替部２１１３によって実現される）とを含むように構成されていてもよい。【０１９２】
（４）また、データストリーム処理システムにおいて、管理装置は、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部（例えば、監視部２２０１によって実現される）と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部（例えば、判断部２２０３によって実現される）とを含み、管理装置によって切替対象と判断されたノードのＤＳ処理切替部は、管理装置の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。【０１９３】
（５）また、データストリーム処理システムは、複数のノードを有する処理装置（例えば、各ノード２１１０を別々の情報処理装置を用いて実現する場合の処理装置２１００によって実現される）と、処理装置を管理するネットワーク管理装置（例えば、管理装置２２００によって実現される）とを備え、複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部（例えば、ＤＳ処理部２１１４によって実現される）と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるＤＳ処理切替部（例えば、ＤＳ処理切替部２１１３によって実現される）とを含むように構成されていてもよい。【０１９４】
（６）また、データストリーム処理システムにおいて、ネットワーク管理装置は、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部（例えば、監視部２２０１によって実現される）と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部（例えば、判断部２２０３によって実現される）とを含み、ネットワーク管理装置によって切替対象と判断されたノードのＤＳ処理切替部は、ネットワーク管理装置の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。【０１９５】
（７）また、データストリーム処理システムは、切替対象のノード及び切替対象のデータストリーム処理部を判断するための条件を示す判断情報を記憶する判断情報記憶部（例えば、判断情報記憶部２２０４によって実現される）を備え、判断部は、判断情報記憶部が記憶する判断情報に基づいて、切替対象のノードと切替対象のデータストリーム処理部とを判断するように構成されていてもよい。【０１９６】
（８）また、データストリーム処理システムは、切替対象のノード及び切替対象のデータストリーム処理部を判断するためのルールを示すルール情報（例えば、制御ルール）を記憶するルール記憶部（例えば、制御ルール記憶部６２０６によって実現される）を備え、判断部は、ルール記憶部が記憶するルール情報に基づいて、切替対象のノードと切替対象のデータストリーム処理部とを判断するように構成されていてもよい。【０１９７】
（９）また、データストリーム処理システムは、データストリーム処理部の切り替え後の複数のノードのそれぞれにおけるデータストリームの処理状態を検証する検証部（例えば、検証部１０２０７によって実現される）と、検証部による検証結果に基づいて、ルール記憶部が記憶するルール情報を更新するルール更新部（例えば、更新部１０２０８によって実現される）とを備えるように構成されていてもよい。【０１９８】
また、本発明の第１のデータストリーム処理システムは、好ましくは、データストリーム処理を行う処理装置と、ノードを制御する管理装置とを備え、処理装置は、データストリーム処理の最小単位である複数のノードを有し、複数のノードは、それぞれ、入力されたデータストリームを一時的に蓄積するＤＳ入力キューと、一定条件でＤＳ入力キューから一定のデータストリームを取り出すＤＳ取得部と、取り出したデータストリームの転送先を切り替えるＤＳ処理切替部と、処理対象が同じであるがそれぞれ処理精度と処理負荷とが異なる複数のＤＳ処理部とを含み、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのＤＳ処理部を切り替えるかを判断する判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、ＤＳ処理部の切り替えをノードに指示する切替指示部とを含む。【０１９９】
また、本発明の第２のデータストリーム処理システムは、本発明の第１のデータストリーム処理システムと同様の処理装置と、ノードを制御する管理装置とを備え、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのＤＳ処理部を切り替えるかを判断するルールベース判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、ルールベース判断部の動作を制御するためのルールである制御ルールを記憶する制御ルール記憶部と、ＤＳ処理部の切り替えをノードに指示する切替指示部とを含む。【０２００】
また、本発明の第３のデータストリーム処理システムは、本発明の第１のデータストリーム処理システムと同様の処理装置と、ノードを制御する管理装置とを備え、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのＤＳ処理部を切り替えるか判断するルールベース判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、ルールベース判断部の動作を制御するルールである制御ルールを記憶する制御ルール記憶部と、ＤＳ処理部の切り替えをノードに指示する切替指示部と、処理の結果を検証する検証部と、制御ルールを更新する更新部とを含む。【０２０１】
以上のように、本発明は、ＤＳＭＳにおける複数のノードのそれぞれにおける処理状態に応じて、混雑しているノードのＤＳ処理部を切り替えることで、処理精度と処理負荷とを制御することを基本として、ＤＳＭＳにおける各ノード２１１０のスループット格差を是正し、ＤＳＭＳ全体のスループットを向上させる。
【産業上の利用可能性】
【０２０２】
本発明は、連続的に生成され続ける大量の情報を逐次的に分析するデータストリーム処理装置に適用できる。
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図１】
0005540706.tif 000002
【図２】
0005540706.tif 000003
【図３】
0005540706.tif 000004
【図４】
0005540706.tif 000005
【図５】
0005540706.tif 000006
【図６】
0005540706.tif 000007
【図７】
0005540706.tif 000008
【図８】
0005540706.tif 000009
【図９】
0005540706.tif 000010
【図１０】
0005540706.tif 000011
【図１１】
0005540706.tif 000012
【図１２】
0005540706.tif 000013
【図１３】
0005540706.tif 000014
【図１４】
0005540706.tif 000015
【図１５】
0005540706.tif 000016