(57)【要約】【課題】処理に遅延が生じない移行方式で、移行元のマシンから移行先のマシンへ短時間で移行可能なクエリを容易に検出でき、スケールアウトすることができるようにする。【解決手段】運用管理プログラム８９が移行元エージェント処理プログラム３９のクエリ状態表４３を収集し、サーバ状態表９３を作成する。運用管理プログラム８９はサーバ状態表９３に基づき、各クエリの移行コストを算出し、移行コストが小さいクエリを移行クエリとして選択する。そして、運用管理プログラムは、選択したクエリを最適な移行方式で移行する。 【選択図】図１
2010140357.tif 000002
【特許請求の範囲】
【請求項１】
予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、前記第１の情報処理装置から、前記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、
を備え、
入力した前記クエリの定義構造、及び前記クエリの実行状態に係わる情報を収集するクエリ状態収集部と、
前記クエリ収集部により収集された前記定義構造、及び前記実行状態に係わる情報に基づき、前記クエリの移行コストを算出する移行コスト算出部と、
前記移行コスト算出部が算出した移行コストに基づき、前記第１の情報処理装置において実行中のクエリのうちから前記第２の情報処理装置へ移行すべきクエリを決定する移行クエリ決定部と、
前記移行クエリ決定部により移行を決定されたクエリを予め設定されているクエリ移行方式で前記第１の情報処理装置から前記第２の情報処理装置へと移行させるクエリ移行実行部と、
を有するストリームデータ処理システム。
【請求項２】
予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、前記第１の情報処理装置から、前記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、
を備え、
入力した前記クエリの定義構造、及び前記クエリの実行状態に係わる情報を収集するクエリ状態収集部と、
前記クエリ収集部により収集された前記定義構造、及び前記実行状態に係わる情報に基づき、前記クエリの移行コストを算出する移行コスト算出部と、
前記移行コスト算出部が算出した移行コストに基づき、予め設定されている複数種類のクエリ移行方式の中から各クエリを前記第１の情報処理装置より前記第２の情報処理装置へ移行させるに際してのクエリ移行方式を選択するクエリ移行方式選択部と、
前記クエリ移行方式選択部により選択されたクエリ移行方式と前記移行コスト算出部が算出した移行コストとに基づき、前記第１の情報処理装置において実行中のクエリのうちから前記第２の情報処理装置へ移行すべきクエリを決定する移行クエリ決定部と、
前記移行クエリ決定部により移行を決定されたクエリを、前記クエリ移行方式選択部により選択されたクエリ移行方式に従って前記第１の情報処理装置から前記第２の情報処理装置へと移行させるクエリ移行実行部と、
を有するストリームデータ処理システム。
【請求項３】
請求項１又は請求項２記載のストリームデータ処理システムにおいて、
前記クエリの定義構造に係わる情報が、前記クエリのウィンドウサイズであるストリームデータ処理システム。
【請求項４】
請求項１又は請求項２記載のストリームデータ処理システムにおいて、
前記クエリの実行状態に係わる情報が、前記クエリ毎の単位時間当たりに入力された前記ストリームデータの個数情報であるデータ入力頻度であるストリームデータ処理システム。
【請求項５】
請求項４記載のストリームデータ処理システムにおいて、
前記移行コストが、前記クエリの前記第１の情報処理装置から前記第２の情報処理装置への移行に必要な時間である見込み移行時間であり、前記移行コスト算出部が、前記クエリの定義構造、及び前記クエリの実行状態に係わる情報を基に、前記クエリ毎に前記見込み移行時間を算出するストリームデータ処理システム。
【請求項６】
請求項５記載のストリームデータ処理システムにおいて、
前記移行コスト算出部が、前記クエリのウィンドウサイズの値を前記データ入力頻度の値で除算した値を、前記見込み移行時間として算出するストリームデータ処理システム。
【請求項７】
請求項１又は請求項２記載のストリームデータ処理システムにおいて、
前記クエリが登録されている前記第１の情報処理装置に係わるリソース情報を収集するリソース情報収集部、を更に有するストリームデータ処理システム。
【請求項８】
請求項７記載のストリームデータ処理システムにおいて、
前記リソース情報が、前記個々のクエリ毎の前記第１の情報処理装置のCPUの使用率、前記個々のクエリ毎の前記第１の情報処理装置のメインメモリの使用率のうちの、少なくとも何れか１つを含むストリームデータ処理システム。
【請求項９】
請求項８記載のストリームデータ処理システムにおいて、
前記移行クエリ決定部が、前記移行コスト算出部により算出された前記移行コスト、及び前記リソース情報に基づき、特定の条件を満たすような１個以上のクエリを、前記第１の情報処理装置から前記第２の情報処理装置へ移行させるクエリとして決定するストリームデータ処理システム。
【請求項１０】
請求項９記載のストリームデータ処理システムにおいて、
前記移行クエリ決定部が１個以上のクエリを選択するための特定の条件とは、前記リソース情報が前記クエリによる前記第１の情報処理装置のCPU使用率であり、前記移行コスト算出部により算出される前記見込み移行時間が短く、且つ、前記CPU使用率の合計値が所定の範囲に収まるような１個以上のクエリを選択することであるストリームデータ処理システム。
【請求項１１】
請求項１０記載のストリームデータ処理システムにおいて、
前記移行コスト算出部が、前記各々のクエリに対し、前記各々の移行方式毎に移行コストを算出し、
前記クエリ移行方式選択部が、前記移行コスト算出部により前記各々のクエリ毎に算出される前記移行コストを基に、前記各々のクエリの移行方式を決定するストリームデータ処理システム。
【請求項１２】
請求項１１記載のストリームデータ処理システムにおいて、
前記クエリ移行方式選択部が、前記移行クエリ決定部により移行を決定されたクエリを前記第１の情報処理装置から前記第２の情報処理装置へ移行させるに際しての最適な条件とは、前記移行コスト算出部により算出される前記見込み移行時間が最も短く、且つ、移行されるべきクエリが特定の条件を満たしていることを含むものであるストリームデータ処理システム。
【請求項１３】
請求項１２記載のストリームデータ処理システムにおいて、
前記各々のクエリにおけるウィンドウのデータサイズに係わる情報を取得するウィンドウデータサイズ情報取得部、を更に有するストリームデータ処理システム。
【請求項１４】
請求項１３記載のストリームデータ処理システムにおいて、
前記複数種類のクエリ移行方式が、
前記各々のクエリのウィンドウに保存されているストリームデータを前記第２の情報処理装置にコピーするコピー方式と、
同一のクエリであって前記第１の情報処理装置に登録されている状態にあるクエリと、前記第２の情報処理装置に移行された状態にあるクエリとに、一定期間同一のストリームデータを送信し、前記双方のクエリにおけるデータ内容が一致した時点で、前記第１の情報処理装置側のクエリに係わる処理を停止させるウォームアップ方式と、
を含むストリームデータ処理システム。
【請求項１５】
予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、前記第１の情報処理装置から、前記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、
を備え、
入力した前記クエリの定義構造、及び前記クエリの実行状態に係わる情報を収集する第１のステップと、
前記第１のステップにおいて収集された前記定義構造、及び前記実行状態に係わる情報に基づき、前記クエリの移行コストを算出する第２のステップと、
前記第２のステップにおいて算出された移行コストに基づき、前記第１の情報処理装置において実行中のクエリのうちから前記第２の情報処理装置へ移行すべきクエリを決定する第３のステップと、
前記第３のステップにおいて移行を決定されたクエリを予め設定されているクエリ移行方式で前記第１の情報処理装置から前記第２の情報処理装置へと移行させる第４のステップと、
を有するストリームデータ処理方法。
【請求項１６】
予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、前記第１の情報処理装置から、前記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、
を備え、
入力した前記クエリの定義構造、及び前記クエリの実行状態に係わる情報を収集する第１のステップと、
前記第１のステップにおいて収集された前記定義構造、及び前記実行状態に係わる情報に基づき、前記クエリの移行コストを算出する第２のステップと、
前記第２のサウテップにおいて算出された移行コストに基づき、予め設定されている複数種類のクエリ移行方式の中から各クエリを前記第１の情報処理装置より前記第２の情報処理装置へ移行させるに際してのクエリ移行方式を選択する第３のステップと、
前記第３のステップにおいて選択されたクエリ移行方式と前記第２のステップにおいて算出された移行コストとに基づき、前記第１の情報処理装置において実行中のクエリのうちから前記第２の情報処理装置へ移行すべきクエリを決定する第４のステップと、
前記第４のステップにおいて移行が決定されたクエリを、前記第３のステップにおいて選択されたクエリ移行方式に従って前記第１の情報処理装置から前記第２の情報処理装置へと移行させる第５のステップと、
を有するストリームデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、前記第１の情報処理装置から、前記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、を備えるストリームデータ処理方法、及びシステムに関する。
【背景技術】
【０００２】
近年、情報処理の技術分野において、ストリームデータと称される瞬時、且つ継続的な処理を必要とするデータが増加している。ストリームデータは、絶え間無く連続的に生成され、且つ、時々刻々と到来するもので、その例として、RFIDタグの読取情報、センサノードの監視情報、及び株価情報等の各種情報が挙げられる。
【０００３】
従来、選択された情報をデータベースシステムから連続的に抽出するに際し、効率的な問い合わせを行えるようにすることを目的とした装置が提案されている。該提案に係る連続問い合わせ装置では、ロードされたローカル又はリモートの外部ソースからの文書が、問い合わせで参照できる１セットの索引付けされたフィールドに構文解析され、また、上記文書等に対する一群の連続問い合わせが実行されるようになっている（例えば特許文献１参照）。
【０００４】
また、従来、ストリームデータ処理システムは、可用性、信頼性の向上を図ると共に、負荷増大時にあっても、リアルタイム処理性能を保持できるようにすることを目的とした技術も提案されている。
該提案は、リアルタイム性が重要なデータ処理に好適なデータ処理システムとしてのストリームデータ処理システムに係わるものである。該提案には、ストリームデータの一部、若しくは全部を複製して不揮発性の記憶媒体にアーカイブし、リアルタイムデータとアーカイブデータとを、シームレスに利用できるようにした構成、及び複数のストリームデータ処理システムを連携させ、クエリ（処理内容、指示内容を示す命令）処理の性能を向上させるようにした構成が開示されている（例えば特許文献２参照）。
【特許文献１】特開平06-052230号公報
【特許文献２】特開2006-338432号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ストリームデータ処理システムでは、従来のデータベース管理システム（DBMS）に代表される所謂ストック型のデータ処理とは異なり、まず、クエリをシステムに登録し、該システム（ストリームデータ処理システム）に到来するデータを、該クエリにより順次処理する。そして、リアルタイム処理を実現するため、クエリを実行するに際し、該システムに到来するデータ群から処理対象のデータ範囲をスライディングウインドウと称される概念によって規定する。ここで、スライディングウインドウとは、クエリの中に設定されている、演算処理の対象になるデータを保存するためのデータ蓄積部のことを指す。上記スライディングウインドウによって切り取られたストリームデータは、例えばマシンのメモリ等に保存され、該マシンの演算処理部がクエリを実行するに際して使用される。なお、スライディングウインドウの指定を含むクエリの記述言語に係わる好適な例としては、上述した特許文献２に記載されているCQL（Continuous Query Language）を挙げることができる。
【０００６】
ところで、ストリームデータ処理システムに対しては、ファイナンシャルアプリケーションや、交通情報システムや、計算機システムの管理等に代表されるような、リアルタイム処理が必要とされる分野への応用が期待されている。しかし、従来のストリームデータ処理システムには、ストリームデータ量の増加に伴う該システムへの負荷の増大時に、クエリ処理が遅延したり、停止したりする不具合が生じることがあり、実際にこのような不具合が生じると、上記システムでのデータ処理のリアルタイム性が損なわれてしまうという問題が起こる。
【０００７】
そこで、上記に鑑みて、スケールアウトと称される手法が提案されている。スケールアウトとは、現にクエリを実行中の計算機（マシン）とは別に、新たに計算機（マシン）を追加して、追加した計算機に上記クエリの一部を上記実行中の計算機から新たな計算機に移行させることにより、計算機負荷を分散させる手法である。ストリームデータ処理システムにおいて、このスケールアウトを採用すれば、上記システムでのデータ処理のリアルタイム性の確保を実現することが可能になる。以下に、ストリームデータ処理システムにおいて行われるスケールアウト作業の手順について説明する。
【０００８】
まず、移行元の計算機、即ち、現に複数のクエリを実行中の計算機において、データ送信元からのデータ入力を一時的に停止させる。そして、該複数のクエリの中から移行先の計算機、即ち、新たに追加された計算機に移行すべきクエリを１つ以上選択すると共に、選択された各々のクエリ中のスライディングウインドウによって切り取られたストリームデータを、移行先の計算機にコピーする。上記コピーが完了すると、上記データの送信先を移行元の計算機から移行先の計算機に切り替えると共に、上記移行されたクエリの、移行元の計算機中からの削除を実行する。以上で、ストリームデータ処理方式におけるスケールアウト作業が終了する。スライディングウインドウによって切り取られたデータをコピーする理由は、ストリームデータ処理においては、スライディングウインドウによって切り取られた（ストリーム）データにより処理結果が変わるためである。以下では、スライディングウインドウによって切り取られた（ストリーム）データを、移行先の計算機にコピーする方式を、コピー方式（即ち、スライディングウインドウに保存されているストリームデータを、スケールアウト対象の計算機にコピーする方式）と称することにする。
【０００９】
しかし、上述したコピー方式では、スライディングウインドウにより切り取られた（ストリーム）データをコピーしている間、移行元の計算機におけるクエリ処理を停止させる必要があるため、（ストリームデータの）処理に遅延が生じる虞がある。ストリームデータ処理では、既述の内容から明らかなように、リアルタイム性が非常に重要であるから、スケールアウト時に、（ストリームデータの）処理に遅延が生じると、（該データ処理が）必要とする性能を保持することができないという問題が生じる。そのため、上記コピー方式を、ミッションクリティカルな要件（即ち、金融システムに代表される２４時間、３６５日停止させることができないようなシステムにおける要件）に適用することは困難であるという問題がある。
【００１０】
また、スケールアウト作業は、稼働中の計算機において、必要な処理性能が不足しているときに実行されることがあるので、可能な限り短時間でスケールアウトを完了させ、該計算機において、早期に必要な処理性能を確保したいという要望がある。しかし、クエリ毎に移行元の計算機から移行先の計算機への移行に要する時間が異なり、しかも、オペレータが多数のクエリの中からスケールアウトが短時間で終了するクエリを見極めることは困難であるという問題もある。
【００１１】
上述したように、従来にあっては、ミッションクリティカルな要件を有するシステムへの適用が可能なストリームデータ処理システムを提供するために、処理に遅延が生じないようにスケールアウトすることができる手法の開発が課題になっていた。また、スケールアウトに際して、多数のクエリの中から短時間でスケールアウトが可能なクエリをユーザが検出することができる手法の開発についても課題になっていた。
【００１２】
従って本発明の第１の目的は、ストリームデータ処理システムにおいて、処理に遅延が生じない移行方式で、移行元のマシンから移行先のマシンへ短時間で移行可能なクエリを容易に検出でき、スケールアウトすることができるようにすることにある。
【００１３】
また、本発明の第２の目的は、ストリームデータ処理システムにおいて、現在稼働中のマシンから別の（休止中の）マシンへのクエリの移行方式の如何に関わらず、（現在稼働中のマシンから別の（休止中の）マシンへの）移行が短時間で行えるクエリを検出でき、更には、ユーザからの要望を考慮して、各々のクエリ毎に最適な移行方式を選択してスケールアウトすることができるようにすることにある。
【課題を解決するための手段】
【００１４】
本発明の第１の観点に従うストリームデータ処理システムは、予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、上記第１の情報処理装置から、上記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、を備え、入力した上記クエリの定義構造、及び上記クエリの実行状態に係わる情報を収集するクエリ状態収集部と、上記クエリ収集部により収集された上記定義構造、及び上記実行状態に係わる情報に基づき、上記クエリの移行コストを算出する移行コスト算出部と、上記移行コスト算出部が算出した移行コストに基づき、上記第１の情報処理装置において実行中のクエリのうちから上記第２の情報処理装置へ移行すべきクエリを決定する移行クエリ決定部と、上記移行クエリ決定部により移行を決定されたクエリを予め設定されているクエリ移行方式で上記第１の情報処理装置から上記第２の情報処理装置へと移行させるクエリ移行実行部と、を有する。
【００１５】
本発明の第２の観点に従うストリームデータ処理システムは、予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、上記第１の情報処理装置から、上記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、を備え、入力した上記クエリの定義構造、及び上記クエリの実行状態に係わる情報を収集するクエリ状態収集部と、上記クエリ収集部により収集された上記定義構造、及び上記実行状態に係わる情報に基づき、上記クエリの移行コストを算出する移行コスト算出部と、上記移行コスト算出部が算出した移行コストに基づき、予め設定されている複数種類のクエリ移行方式の中から各クエリを上記第１の情報処理装置より上記第２の情報処理装置へ移行させるに際してのクエリ移行方式を選択するクエリ移行方式選択部と、上記クエリ移行方式選択部により選択されたクエリ移行方式と上記移行コスト算出部が算出した移行コストとに基づき、上記第１の情報処理装置において実行中のクエリのうちから上記第２の情報処理装置へ移行すべきクエリを決定する移行クエリ決定部と、上記移行クエリ決定部により移行を決定されたクエリを、上記クエリ移行方式選択部により選択されたクエリ移行方式に従って上記第１の情報処理装置から上記第２の情報処理装置へと移行させるクエリ移行実行部と、を有する。
【００１６】
本発明の第１の観点、又は、第２の観点に係る好適な実施形態では、上記クエリの定義構造に係わる情報が、上記クエリのウィンドウサイズである。
【００１７】
上記とは別の実施形態では、上記クエリの実行状態に係わる情報が、上記クエリ毎の単位時間当たりに入力された上記ストリームデータの個数情報であるデータ入力頻度である。
【００１８】
また、上記とは別の実施形態では、上記移行コストが、上記クエリの上記第１の情報処理装置から上記第２の情報処理装置への移行に必要な時間である見込み移行時間であり、上記移行コスト算出部が、上記クエリの定義構造、及び上記クエリの実行状態に係わる情報を基に、上記クエリ毎に上記見込み移行時間を算出する。
【００１９】
また、上記とは別の実施形態では、上記移行コスト算出部が、上記クエリのウィンドウサイズの値を上記データ入力頻度の値で除算した値を、上記見込み移行時間として算出する。
【００２０】
また、上記とは別の実施形態では、上記クエリが登録されている上記第１の情報処理装置に係わるリソース情報を収集するリソース情報収集部、を更に有する。
【００２１】
また、上記とは別の実施形態では、上記リソース情報が、上記個々のクエリ毎の上記第１の情報処理装置のCPUの使用率、上記個々のクエリ毎の上記第１の情報処理装置のメインメモリの使用率のうちの、少なくとも何れか１つを含む。
【００２２】
また、上記とは別の実施形態では、上記移行クエリ決定部が、上記移行コスト算出部により算出された上記移行コスト、及び上記リソース情報に基づき、特定の条件を満たすような１個以上のクエリを、上記第１の情報処理装置から上記第２の情報処理装置へ移行させるクエリとして決定する。
【００２３】
また、上記とは別の実施形態では、上記移行クエリ決定部が１個以上のクエリを選択するための特定の条件とは、上記リソース情報が上記クエリによる上記第１の情報処理装置のCPU使用率であり、上記移行コスト算出部により算出される上記見込み移行時間が短く、且つ、上記CPU使用率の合計値が所定の範囲に収まるような１個以上のクエリを選択することである。
【００２４】
また、上記とは別の実施形態では、上記移行コスト算出部が、上記各々のクエリに対し、上記各々の移行方式毎に移行コストを算出し、上記クエリ移行方式選択部が、上記移行コスト算出部により上記各々のクエリ毎に算出される上記移行コストを基に、上記各々のクエリの移行方式を決定する。
【００２５】
また、上記とは別の実施形態では、上記クエリ移行方式選択部が、上記移行クエリ決定部により移行を決定されたクエリを上記第１の情報処理装置から上記第２の情報処理装置へ移行させるに際しての最適な条件とは、上記移行コスト算出部により算出される上記見込み移行時間が最も短く、且つ、移行されるべきクエリが特定の条件を満たしていることを含むものである。
【００２６】
また、上記とは別の実施形態では、上記各々のクエリにおけるウィンドウのデータサイズに係わる情報を取得するウィンドウデータサイズ情報取得部、を更に有する。
【００２７】
更に、上記とは別の実施形態では、上記複数種類のクエリ移行方式が、上記各々のクエリのウィンドウに保存されているストリームデータを上記第２の情報処理装置にコピーするコピー方式と、同一のクエリであって上記第１の情報処理装置に登録されている状態にあるクエリと、上記第２の情報処理装置に移行された状態にあるクエリとに、一定期間同一のストリームデータを送信し、上記双方のクエリにおけるデータ内容が一致した時点で、上記第１の情報処理装置側のクエリに係わる処理を停止させるウォームアップ方式と、を含む。
【００２８】
本発明の第３の観点に従うストリームデータ処理方法は、予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、上記第１の情報処理装置から、上記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、を備え、入力した上記クエリの定義構造、及び上記クエリの実行状態に係わる情報を収集する第１のステップと、上記第１のステップにおいて収集された上記定義構造、及び上記実行状態に係わる情報に基づき、上記クエリの移行コストを算出する第２のステップと、上記第２のステップにおいて算出された移行コストに基づき、上記第１の情報処理装置において実行中のクエリのうちから上記第２の情報処理装置へ移行すべきクエリを決定する第３のステップと、上記第３のステップにおいて移行を決定されたクエリを予め設定されているクエリ移行方式で上記第１の情報処理装置から上記第２の情報処理装置へと移行させる第４のステップと、を有する。
【００２９】
本発明の第４の観点に従うストリームデータ処理方法は、予め登録されている１個又は複数個のクエリに基づいたデータ処理を、入力したストリームデータに対して現に実行している少なくとも１台以上の第１の情報処理装置と、上記第１の情報処理装置から、上記第１の情報処理装置において現に実行しているクエリのうちの何れかの移行先になる少なくとも１台以上の第２の情報処理装置と、を備え、入力した上記クエリの定義構造、及び上記クエリの実行状態に係わる情報を収集する第１のステップと、上記第１のステップにおいて収集された上記定義構造、及び上記実行状態に係わる情報に基づき、上記クエリの移行コストを算出する第２のステップと、上記第２のステップにおいて算出された移行コストに基づき、予め設定されている複数種類のクエリ移行方式の中から各クエリを上記第１の情報処理装置より上記第２の情報処理装置へ移行させるに際してのクエリ移行方式を選択する第３のステップと、上記第３のステップにおいて選択されたクエリ移行方式と上記第２のステップにおいて算出された移行コストとに基づき、上記第１の情報処理装置において実行中のクエリのうちから上記第２の情報処理装置へ移行すべきクエリを決定する第４のステップと、上記第４のステップにおいて移行が決定されたクエリを、上記第３のステップにおいて選択されたクエリ移行方式に従って上記第１の情報処理装置から上記第２の情報処理装置へと移行させる第５のステップと、を有する。
【発明の効果】
【００３０】
本発明によれば、ストリームデータ処理システムにおいて、処理に遅延が生じない移行方式で、移行元のマシンから移行先のマシンへ短時間で移行可能なクエリを容易に検出でき、スケールアウトすることができるようにすることができる。
【００３１】
また、本発明によれば、ストリームデータ処理システムにおいて、現在稼働中のマシンから別の（休止中の）マシンへのクエリの移行方式の如何に関わらず、（現在稼働中のマシンから別の（休止中の）マシンへの）移行が短時間で行えるクエリを検出でき、更には、ユーザからの要望を考慮して、各々のクエリ毎に最適な移行方式を選択してスケールアウトすることができるようにすることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を、図面により詳細に説明する。
【００３３】
図１は、本発明の一実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図である。
【００３４】
上記ストリームデータ処理システムは、図１に示すように、ストリームデータソース１と、ストリーム転送用計算機３と、第１のサーバ計算機５と、第２のサーバ計算機７と、運用管理用計算機９と、を含む。そして、ストリームデータソース１とストリーム転送用計算機３との間、ストリーム転送用計算機３と第１のサーバ計算機５との間、及びストリーム転送用計算機３と第２のサーバ計算機７との間は、何れも業務用ネットワーク１１を通じて接続されるように構成されている。また、ストリーム転送用計算機３と運用管理用計算機９との間、第１のサーバ計算機５と運用管理用計算機９との間、及び第２のサーバ計算機７と運用管理用計算機９との間は、何れも運用ネットワーク１３を通じて接続されるように構成されている。
【００３５】
ストリームデータソース１は、例えば、各種センサ、及びICタグ等から取得した情報や株価情報等の時々刻々と到来するデータであるストリームデータ１５を、業務用ネットワーク１１を通じてストリーム転送用計算機３側へと送信する機能を有する。本実施形態では、ストリームデータソース１から送信されるストリームデータ１５には、ストリームIDと称される文字列が付与されている。該文字列（ストリームID）は、該ストリームデータ１５が処理されるべきクエリを識別するためのものであり、ストリームIDは、予めユーザ等によって設定されるべきものである。なお、本実施形態では、取得された情報、即ち、ストリームデータに対し、ストリームIDとして、S1、S2、及びS3の何れかが割り当てられる。
【００３６】
ストリーム転送用計算機３は、主記憶装置１７と、中央演算処理装置１９と、通信インタフェース２１と、を備える。主記憶装置１７は、中央演算処理装置１９の制御下でプログラムを読み込むための装置であり、例えば、RAM（Random Access Memory）が用いられる。主記憶装置１７には、ストリーム転送プログラム２３が搭載されている。ストリーム転送プログラム２３は、例えば、ストリーム転送用計算機３に入力されたストリームデータ１５を転送先（サーバ計算機）に送信するためのプログラムであって、データ転送部２５と、転送先管理部２７と、ストリーム転送表２９と、を含む。ストリーム転送プログラム２３が備える諸機能の詳細については、後述する。
【００３７】
中央演算処理装置１９は、例えば、CPU（Central Processing Unit）を含み、主記憶装置１７に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置１９は、図１に示すように、主記憶装置１７に読み込まれたストリーム転送プログラム２３を実行することになる。
【００３８】
通信インタフェース２１は、ストリーム転送用計算機３が、業務用ネットワーク１１を通じてストリームデータソース１との間、第１のサーバ計算機５との間、第２のサーバ計算機７との間で、夫々データ通信（情報通信）を行うに際し利用される。通信インタフェース２１は、ストリーム転送用計算機３が、運用ネットワーク１３を通じて運用管理用計算機９との間でデータ通信（情報通信）を行うに際しても利用される。第１のサーバ計算機５、又は第２のサーバ計算機７との間のデータ通信においては、ストリーム転送用計算機３からストリームデータ１５が第１のサーバ計算機５、又は第２のサーバ計算機７へ夫々送信される。
【００３９】
また、運用管理用計算機９との間のデータ通信においては、コマンド７７が運用管理用計算機９からストリーム転送用計算機３へ送信される。該コマンド７７には、転送先（サーバ計算機）を追加させるためのコマンドや、転送先（サーバ計算機）を削除させるためのコマンド等が含まれる。運用管理用計算機９との間のデータ通信においては、上記コマンド７７を受信したことで、ストリーム転送用計算機３が該コマンド７７に基づく一連の処理を完了したことを示すコマンド完了通知７９が、ストリーム転送用計算機３から運用管理用計算機９へ送信される。コマンド７７、及びコマンド完了通知７９については、後に詳述する。
【００４０】
本実施形態では、通信インタフェース２１として、イーサネット（登録商標）が採用されているが、イーサネット（登録商標）以外にも、FDDI（光ファイバのインタフェース）や、シリアル（インタフェースの１種）や、USB（インタフェースの１種）等を利用することも可能である。
【００４１】
第１のサーバ計算機５は、主記憶装置３１と、補助記憶装置３３と、中央演算処理装置３５と、通信インタフェース３７と、を備える。主記憶装置３１は、上述したストリーム転送用計算機３の主記憶装置１７と同様に、中央演算処理装置３５の制御下でプログラムを読み込むための装置であり、例えば、RAMが用いられる。主記憶装置３１には、エージェント処理プログラム３９と、ストリームデータ処理プログラム４１と、が搭載されている。
【００４２】
エージェント処理プログラム３９は、第１のサーバ計算機５におけるクエリの実行状態の監視、及びスケールアウト時に発生するクエリの登録処理、又はクエリの削除処理を行う機能を有するプログラムである。更に詳述すれば、エージェント処理プログラム３９は、ストリームデータ処理プログラム４１において実行されているクエリ構造の収集、及び解析や、各々のクエリのリソース（第１のサーバ計算機５におけるハードウェアの）使用量データの収集を行う。上記に加えて、移行クエリ（例えば、第１のサーバ計算機５から第２のサーバ計算機７へ移行させるクエリ）の登録コマンドをストリームデータ処理プログラム４１に発行する処理や、後に詳述する指定条件後のクエリの削除処理をも行う。エージェント処理プログラム３９は、クエリ状態表４３と、クエリ収集部４５と、計算機状態収集部４７と、クエリ処理状態収集部４９と、クエリ移行実行部５１と、を含む。エージェント処理プログラム３９が備える諸機能の詳細については、後述する。
【００４３】
ストリームデータ処理プログラム４１は、第１のサーバ計算機５が、通信インタフェース３７、及び業務用ネットワーク１１を通じてストリーム転送用計算機３から入力したストリームデータ１５に対するクエリ処理を実行して、該実行結果を出力する機能を有するプログラムである。ストリームデータ処理プログラム４１は、データ通信部５３と、クエリ処理部５５と、クエリ管理表５７と、クエリ管理部５９と、命令受付部６１と、を含む。クエリ処理部５５は、入力部６３と、出力部６５と、演算対象データ保存部６７と、演算処理実行部６９と、を含む。クエリ管理部５９は、クエリ解析部７１と、クエリ最適化部７３と、クエリ実行形式生成部７５と、を含む。ストリームデータ処理プログラム４１が備える諸機能の詳細については、後述する。
【００４４】
補助記憶装置３３は、中央演算処理装置３５の制御下で、主記憶装置３１に保存することができないような大きな情報量を有するデータやプログラムを保存するための装置であり、例えば、HDD（Hard Disk Drive）が用いられる。本実施形態では、補助記憶装置３３は、エージェント処理プログラム３９に含まれるクエリ状態表４３、及びストリームデータ処理プログラム４１に含まれるクエリ管理表５７が、主記憶装置３１に保存できない場合の格納先になる。
【００４５】
中央演算処理装置３５も、ストリーム転送用計算機３における中央演算処理装置１９と同様に、例えば、CPUを含み、主記憶装置３１に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置３５は、図１に示すように、主記憶装置３１に読み込まれたエージェント処理プログラム３９、及びストリームデータ処理プログラム４１を実行する。また、必要に応じて（エージェント処理プログラム３９に含まれる）クエリ状態表４３、及び（ストリームデータ処理プログラム４１に含まれる）クエリ管理表５７等の補助記憶装置３３へ格納するための処理をも実行する。
【００４６】
通信インタフェース３７は、第１のサーバ計算機５が、業務用ネットワーク１１を通じてストリーム転送用計算機３との間、第２のサーバ計算機７との間でデータ通信（情報通信）を行うに際し利用される。通信インタフェース３７は、また、第１のサーバ計算機５が、運用ネットワーク１３を通じて運用管理用計算機９との間でデータ通信（情報通信）を行うに際し利用される。ストリーム転送用計算機３との間のデータ通信においては、ストリーム転送用計算機３からストリームデータ１５が第１のサーバ計算機５へ送信される。
【００４７】
また、運用管理用計算機９との間のデータ通信においては、コマンド７７´が運用管理用計算機９から第１のサーバ計算機５へ送信される。該コマンド７７´には、エージェント処理プログラム３９に対し、移行クエリを登録させるためのコマンドや、ウインドウデータ一致後のクエリを削除させるためのコマンド等が含まれる。運用管理用計算機９との間のデータ通信においては、上記コマンド７７´を受信したことで、第１のサーバ計算機５が該コマンド７７´に基づく一連の処理を完了したことを示すコマンド完了通知７９が、第１のサーバ計算機５から運用管理用計算機９へ送信される。コマンド７７´、及びコマンド完了通知７９´についても、後に詳述する。
【００４８】
本実施形態では、通信インタフェース３７として、ストリーム転送用計算機３における通信インタフェース２１と同様に、イーサネット（登録商標）が採用されているが、イーサネット（登録商標）以外にも、FDDIや、シリアルや、USB等を利用することも可能である。
【００４９】
第２のサーバ計算機７も、第１のサーバ計算機５と同様に、主記憶装置、補助記憶装置、中央演算処理装置、及び通信インタフェースを備えるが、図示の都合上、それらの記載を省略する。なお、図１では、図示と説明の都合上、サーバ計算機については、第１のサーバ計算機５、及び第２のサーバ計算機７の２台しか記載していないが、実際のストリームデータ処理システムでは、サーバ計算機は３台以上設置されている場合もあり得る。
【００５０】
運用管理用計算機９は、主記憶装置８１と、入力装置８３と、中央演算処理装置８５と、通信インタフェース８７と、を備える。主記憶装置８１は、上述したストリーム転送用計算機３の主記憶装置１７や、第１のサーバ計算機５の主記憶装置３１と同様に、中央演算処理装置８５の制御下でプログラムを読み込むための装置であり、例えば、RAMが用いられる。主記憶装置８１には、運用管理プログラム８９が搭載されている。
【００５１】
運用管理プログラム８９は、スケールアウト処理が行われるに際して、現に稼働中のサーバ計算機（本実施形態では、第１のサーバ計算機５）が処理を実行中の複数のクエリの一部を、新たに追加されるサーバ計算機（本実施形態では、第２のサーバ計算機７等）へ移行させる処理を実行するための機能を有するプログラムである。運用管理プログラム８９は、クエリ状態表収集部９１と、サーバ状態表９３と、コスト算出部９５と、コスト表９７と、移行クエリ決定部９９と、コマンド送信部１０１と、を含む。運用管理プログラム８９が備える諸機能の詳細については、後述する。
【００５２】
入力装置８３は、例えば、移行元の計算機、即ち、複数のクエリを現に処理している１台以上のサーバ計算機を指定するための操作キーや、移行先の計算機、即ち、上記複数のクエリのうちの何れかを処理することになる新たに追加されるサーバ計算機を指定するための操作キーや、スケールアウト処理開始の命令を運用管理用計算機９に入力するための操作キー等を備える。ユーザ（オペレータ）が、上述した操作キーを操作することにより、移行元の計算機指定情報や、移行先の計算機指定情報や、スケールアウト処理開始の命令が、入力装置８３を通じて中央演算処理装置８５に与えられることになる。
【００５３】
通信インタフェース８７は、運用管理用計算機９が運用ネットワーク１３を通じて第１のサーバ計算機５との間、第２のサーバ計算機７との間でデータ通信（情報通信）を行うに際し利用される。第１のサーバ計算機５との間、又は第２のサーバ計算機７との間でのデータ通信においては、コマンド７７´が運用管理用計算機９から第１のサーバ計算機５、又は第２のサーバ計算機７へ送信されると共に、上記コマンド７７´に対応するコマンド完了通知７９´が、第１のサーバ計算機５、又は第２のサーバ計算機７から運用管理用計算機９へ送信される。
【００５４】
中央演算処理装置８５も、ストリーム転送用計算機３における中央演算処理装置１９や、第１のサーバ計算機５における中央演算処理装置３５と同様に、例えば、CPUを含み、主記憶装置８１に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置８５は、図１に示すように、主記憶装置８１に読み込まれた運用管理プログラム８９を実行する。
【００５５】
通信インタフェース８７は、また、運用管理用計算機９が、運用ネットワーク１３を通じてストリーム転送用計算機３との間でデータ通信（情報通信）を行うに際しても利用される。ストリーム転送用計算機３との間でのデータ通信においては、コマンド７７が運用管理用計算機９からストリーム転送用計算機３へ送信されると共に、上記コマンド７７に対応するコマンド完了通知７９が、ストリーム転送用計算機３から運用管理用計算機９へ送信される。コマンド７７、７７´、及びコマンド完了通知７９、７９´の詳細については、ここでの記載を省略する。
【００５６】
次に、ストリーム転送用計算機３の主記憶装置１７に搭載されているストリーム転送プログラム２３の諸機能について、詳述する。
【００５７】
ストリーム転送表２９は、上述したストリームIDの情報を元にして、ストリームデータソース１から業務用ネットワーク１１を通じてストリーム転送用計算機３に送信されるストリームデータ１５を、処理を行うべき第１のサーバ計算機５に転送するに際して使用されるものである。ストリーム転送表２９は、ストリームID記録欄、及びストリームデータの転送先を示す転送先のサーバ計算機（図１に示した例では、第１のサーバ計算機５、及び第２のサーバ計算機７）の宛先情報記録欄を含む。ストリーム転送表２９の構成については、図２で詳述する。
【００５８】
データ転送部２５は、ストリーム転送用計算機３が、ストリームデータソース１から業務用ネットワーク１１を通じて受信したストリームデータ１５を、通信インタフェース２１、及び業務用ネットワーク１１を通じてその転送先である第１のサーバ計算機５（又は、第２のサーバ計算機７）へ送信するために機能する。即ち、まず、ストリームデータソース１から受信したストリームデータ１５からストリームIDを取得すると共に、該取得したストリームIDに対応する上記宛先情報を、ストリーム転送表２９を参照することによってストリーム転送表２９から抽出する。そして、上記抽出した宛先情報に係わるサーバ計算機（図１に示した例では、第１のサーバ計算機５、又は第２のサーバ計算機７の何れか）に対し、通信インタフェース２１、及び業務用ネットワーク１１を通じて上記ストリームデータ１５を送信（転送）する。
【００５９】
転送先管理部２７は、ストリーム転送表２９に記録されているデータ（情報）を更新するために機能する。即ち、（運用管理用計算機９の主記憶装置８１に搭載されている）運用管理プログラム８９（のコマンド送信部１０１）から通信インタフェース８７、運用ネットワーク１３、及び通信インタフェース２１を通じて送信される転送先追加命令に基づき、指定されたストリームID、及び転送先であるサーバ計算機（図１に示した例では、第１のサーバ計算機５、又は第２のサーバ計算機７）に係わる宛先情報を、ストリーム転送表２９に追加記録する。一方、運用管理プログラム８９からストリーム転送用計算機３に対し、転送先削除命令が送信された場合には、該転送先削除命令に基づき、指定されたストリームID、及び転送先であるサーバ計算機（図１に示した例では、第１のサーバ計算機５、又は第２のサーバ計算機７）に係わる宛先情報を、ストリーム転送表２９から削除する。
【００６０】
転送先追加命令、及び転送先削除命令の詳細については、後述する。
【００６１】
次に、第１のサーバ計算機５の主記憶装置３１に搭載されているエージェント処理プログラム３９、及びストリームデータ処理プログラム４１の諸機能について、詳述する。
【００６２】
エージェント処理プログラム３９において、クエリ状態表４３は、該エージェント処理プログラム３９の監視対象であるストリームデータ処理プログラム４１（該エージェント処理プログラム３９と共に主記憶装置３１に搭載されている）において現に実行されているクエリの移行コストを産出するのに必要な表である。クエリ状態表４３は、クエリの識別子記録欄と、サーバ計算機（第１のサーバ計算機５）のリソース使用量記録欄、クエリのウィンドウサイズ記録欄、及びクエリの処理量（CPU、即ち、中央演算処理装置３５の使用率）記録欄を含む。
【００６３】
ここで、移行コストとは、スケールアウトを行うのに必要な処理量のことを指す。また、サーバ計算機におけるリソースとは、該サーバ計算機が有する中央演算処理装置、及び補助記憶装置、使用するイーサネットやシリアルやUSB等を含む入／出力インタフェースの帯域のような装置の能力のことを指す。また、リソース使用量とは、エージェント処理プログラム３９の監視対象であるストリームデータ処理プログラム４１が動作している第１のサーバ計算機５のリソース使用量のことを指す。本実施形態では、リソース使用量として、「CPU使用率」を用いる。更に、クエリの処理量とは、サーバ計算機（第１のサーバ計算機５、又は第２のサーバ計算機７）が該クエリを実行することにより処理したデータ数や、該サーバ計算機から出力されたデータ数のことを指す。なお、クエリ状態表４３の構成については、図５で詳述する。
【００６４】
クエリ収集部４５は、（エージェント処理プログラム３９の監視対象である）上記ストリームデータ処理プログラム４１に登録されているクエリ文字列を上記ストリームデータ処理プログラム４１から収集する。そして、該クエリ文字列より、該クエリの移行コストを算出するのに必要なウィンドウサイズを抽出するように機能する。即ち、クエリ収集部４５は、ストリームデータ処理プログラム４１に含まれるクエリ管理表５７からクエリIDとクエリ文字列とを収集して解析することにより、該クエリのウィンドウサイズを取得する。そして、上記収集したクエリIDについてはクエリ状態表４３のクエリの識別子記録欄に、該クエリのウィンドウサイズを、クエリ状態表４３のウィンドウサイズ記録欄に、夫々格納する。
【００６５】
計算機状態収集部４７は、（エージェント処理プログラム３９の監視対象である上記ストリームデータ処理プログラム４１が動作している）第１のサーバ計算機５のリソースの状態を示すデータとして、CPU使用率に係わるデータを収集し、該収集したデータを、クエリ状態表４３のリソース使用量記録欄、即ち、CPU使用率記録欄に格納する。
【００６６】
クエリ処理状態収集部４９は、第１のサーバ計算機５におけるクエリの処理量に係わるデータを取得し、該クエリの移行コストを算出するのに必要な、第１のサーバ計算機５へのデータ入力頻度を算出するように機能する。本実施形態では、クエリ処理状態収集部４９は、該クエリに基づき第１のサーバ計算機５において処理されたストリームデータ１５の数を収集して、単位時間当たりの第１のサーバ計算機５への入力データ数を算出すると共に、該算出した入力データ数を、クエリ状態表４３のクエリの処理量記録欄、即ち、データ入力頻度記録欄に格納する。
【００６７】
クエリ移行実行部５１は、スケールアウトの際に発生するクエリの（第１のサーバ計算機５から第２のサーバ計算機７への）移行処理を行うように機能する。即ち、クエリ移行実行部５１は、追加されたサーバ計算機である第２のサーバ計算機７において動作しているストリームデータ処理プログラム（４１）に対し、第１のサーバ計算機５から移行すべきクエリを登録するためにクエリ登録コマンドを発行する処理を行う。これと共に、クエリ移行実行部５１は、該クエリ移行元のサーバ計算機である第１のサーバ計算機５において後に詳述するウィンドウデータ一致後のクエリ削除処理をも実行する。
【００６８】
ストリームデータ処理プログラム４１において、データ通信部５３は、通信インタフェース３７、及び業務用ネットワーク１１を通じてストリーム転送用計算機３から第１のサーバ計算機５へ送信（転送）されるストリームデータ１５を受信して、該受信したストリームデータ１５を、クエリ処理部５５に出力する機能を有する。
【００６９】
クエリ処理部５５は、登録されたクエリに応じて、ストリームデータ処理を実行するように機能する。クエリ処理部５５において、入力部６３は、データ通信部５３から出力されるストリームデータ１５を入力し、該入力したストリームデータ１５を、演算処理実行部６９に出力する。演算対象データ保存部６７は、演算処理実行部６９から出力される、演算処理実行部６９の演算処理対象であるストリームデータ１５を保存すると共に、６９からのデータ読出要求に応じて保存されているストリームデータ１５を演算処理実行部６９へ出力する。
【００７０】
演算処理実行部６９は、入力部６３から与えられる上記ストリームデータ１５を読み込むと共に、例えば、上記入力部６３を通じてクエリ管理表５７を参照することにより、クエリ管理表５７から該読み込んだストリームデータ１５を処理対象とするクエリを取得する。演算処理実行部６９におけるストリームデータ処理では、スライディングウィンドウにより過去に（第１のサーバ計算機５に）入力されたストリームデータ１５を利用してクエリが実行される。そのため、演算処理実行部６９は、演算処理対象にするストリームデータ１５を、演算対象データ保存部６７へ格納する。
【００７１】
クエリには、時間で処理対象とするストリームデータ１５の範囲を指定するクエリと、処理対象となるストリームデータの個数で処理対象とするストリームデータ１５の範囲を指定するクエリとが存在する。以後、クエリ記述言語によって記述された文字列を、「クエリ文字列」と表記し、時間で処理対象とするストリームデータ１５の範囲を指定するクエリを、「時間ベースのクエリ」と表記し、処理対象となるストリームデータの個数で処理対象とするストリームデータ１５の範囲を指定するクエリを、「個数ベースのクエリ」と表記する。
【００７２】
演算処理実行部６９において実行されるクエリが、時間ベースのクエリである場合には、演算処理実行部６９は、入力部６３を通じてデータ通信部５３から入力したストリームデータ１５を、演算対象データ保存部６７へ保存する。これと共に、演算対象データ保存部６７に保存されているストリームデータ１５のうちで保存時間を経過したストリームデータ１５については、演算対象データ保存部６７から削除する。
【００７３】
上記クエリが、個数ベースのクエリである場合にも、演算処理実行部６９は、入力したストリームデータ１５を、演算対象データ保存部６７へ保存する。しかし、演算対象データ保存部６７に保存されているストリームデータの個数が、所定の保存個数を超えた場合には、例えば、演算対象データ保存部６７における保存時間の長いストリームデータ１５から順に、演算対象データ保存部６７より削除するような処理を実行することになる。
【００７４】
出力部６５は、演算処理実行部による該クエリの実行結果を、データ通信部５３を通じて、例えばエージェント処理プログラム３９、或いは通信インタフェース３７を通じて外部機器へ出力する。
【００７５】
なお、以下の記述では、演算対象データ保存部６７を、「ウィンドウ」と表記し、演算対象データ保存部６７に保存（格納）されているデータ（ストリームデータ１５）を、「ウィンドウデータ」と表記し、演算対象データ保存部６７におけるストリームデータ１５の保存時間、又は保存個数を、「ウィンドウサイズ」と表記することもある。
【００７６】
クエリ管理表５７は、第１のサーバ計算機５が、例えばストリーム転送用計算機３から受信したストリームデータ１５を処理対象とするクエリを特定するために使用されるもので、クエリ管理表５７は、クエリの識別子記録欄、クエリ文字列記録欄、クエリの実行形式格納先記録欄、及びクエリの実行対象のストリームID記録欄を含む。ここで、クエリの識別子とは、登録されたクエリを区別するために用いられる文字列のことを指し、以下では、該文字列を「クエリID」と表記することもある。また、クエリの実行対象のストリームIDとは、該クエリが処理対象とするストリームデータ１５を取得するに際して用いられるものである。
【００７７】
クエリ管理部５９は、ストリームデータ処理プログラム４１において実行されるクエリの登録、及び削除を行う機能と、クエリ文字列（クエリの内容をユーザが理解可能なように、例えばソースコード等により表現されている）からクエリの実行形式（例えば、機械語、マシンが読んで分かる表現形式）を生成する機能と、を有する。クエリ管理部５９において、上記クエリ文字列から該クエリの実行形式を生成する手法については、本願出願においては、特に限定するものではなく、任意の手法を用いて差し支えない。一例としては、特許文献２に記述されている最適化方法も採用され得る。
【００７８】
クエリ管理部５９において、クエリ解析部７１は、上述したクエリ文字列を解析するように機能する。即ち、クエリ解析部７１は、クエリの登録に際して命令受付部６１から与えられるクエリ文字列を解析して、その解析結果を、クエリ最適化部７３に与える。クエリ最適化部７３は、クエリ解析部７１から与えられるクエリの解析結果を受けて、該解析結果からより効率の良いクエリの実行形式を選択する（即ち、最適化処理を行う）ように機能する。クエリ実行形式生成部７５は、クエリ最適化部７３において選択されたクエリの実行形式を生成する。
【００７９】
命令受付部６１は、エージェント処理プログラム３９から与えられる命令を受付けるべく機能する。エージェント処理プログラム３９から命令受付部６１に与えられる命令としては、例えば、クエリ登録命令や、クエリ削除命令が挙げられる。クエリ登録命令とは、ストリームデータ処理プログラム４１に入力するデータ（ストリームデータ１５）を、第１のサーバ計算機５に順次処理させるためのクエリを、クエリ管理部５９に登録させるための命令である。クエリ登録命令には、クエリ記述言語により記述された文字列が含まれる。なお、本実施形態においては、クエリ記述言語として、CQL（Continuous Query Language）が用いられる。
【００８０】
次に、運用管理用計算機９の主記憶装置８１に搭載されている運用管理プログラム８９の諸機能について、詳述する。
【００８１】
運用管理プログラム８９において、クエリ状態表収集部９１は、全てのクエリの状態（即ち、各々のクエリ状態表（４３）の掲載内容）を収集するように機能する。即ち、クエリ状態表収集部９１は、各サーバ計算機（図１で示した例では、第１のサーバ計算機５と、第２のサーバ計算機７）上のエージェント処理プログラム３９の管理下にあるクエリ状態表４３を収集して、サーバ状態表９３を作成する。サーバ状態表９３は、上記のように、クエリ状態表収集部９１により作成されるもので、全てのクエリの状態を管理するために使用される。サーバ状態表９３は、サーバ計算機（図１で示した例では、第１のサーバ計算機５と、第２のサーバ計算機７）の識別子記録欄、クエリの識別子記録欄、ストリームデータ処理プログラム４１が動作しているサーバ計算機（例えば、第１のサーバ計算機５）のリソース使用量記録欄、ウィンドウのサイズ記録欄、及びクエリの処理量記録欄を含む。
【００８２】
コスト算出部９５は、各々のクエリ（例えば、第１のサーバ計算機５において処理が実行されるべき全てのクエリ）を、新たに追加されるサーバ計算機（図１で示した例では、第２のサーバ計算機７）に移行するに際して必要になるコストを、各々のクエリ毎に算出するために機能する。即ち、コスト算出部９５は、上記サーバ状態表９３を基にコスト算出処理を行い、各々のクエリを現に稼働中のサーバ計算機（図１で示した例では、第１のサーバ計算機５）から新たに追加されたサーバ計算機（図１で示した例では、第２のサーバ計算機７）に移行させるに際して必要とするであろう時間、即ち、見込み移行時間を算出する。そして、該算出した見込み移行時間を、コスト表９７に反映させる。コスト算出処理については、後に詳述する。コスト表９７は、上記各々のクエリによるサーバ計算機（第１のサーバ計算機５、第２のサーバ計算機７）のリソース使用量、及び現に稼働中のサーバ計算機（図１で示した例では、第１のサーバ計算機５）から新たに追加されたサーバ計算機（図１で示した例では、第２のサーバ計算機７）に移行するに際して要するコスト（即ち、移行コスト）を管理するために使用される。
【００８３】
移行クエリ決定部９９は、スケールアウトの際に、現に稼働中のサーバ計算機（図１で示した例では、第１のサーバ計算機５）において処理が実行されるべき全てのクエリの中から、新たに追加されたサーバ計算機（図１で示した例では、第２のサーバ計算機７）に移行させるクエリを決定（選択）するために機能する。即ち、移行クエリ決定部９９は、上記コスト表９７に含まれる情報を基に、移行クエリ選択処理を実行することにより、移行クエリを決定する。移行クエリ選択処理については、後に詳述する。
【００８４】
コマンド送信部１０１は、スケールアウトを実行するために、ストリーム転送用計算機３の主記憶装置１７に搭載されているストリーム転送プログラム２３、及びサーバ計算機（第１のサーバ計算機５、第２のサーバ計算機７）の主記憶装置３１に搭載されているエージェント処理プログラム３９に、処理を依頼するための命令を送信するように機能する。即ち、コマンド送信部１０１は、ストリーム転送プログラム２３に対しては転送先追加命令、及び転送先削除命令を、エージェント処理プログラム３９に対しては、移行クエリを登録するコマンド、及びウィンドウデータ一致後のクエリ削除コマンドを、夫々送信する。
【００８５】
なお、図１で示した例では、ストリーム転送プログラム２３は、ストリーム転送用計算機３の主記憶装置１７に、エージェント処理プログラム３９とストリームデータ処理プログラム４１とは、第１のサーバ計算機５の主記憶装置３１に、運用管理プログラム８９は、運用管理用計算機９の主記憶装置８１に、夫々搭載されているものとして説明した。しかし、上記各プログラム２３、３９、４１、８９を、１台の計算機の主記憶装置に搭載するものとしても差し支えない。また、図１で示した例では、エージェント処理プログラム３９と、ストリームデータ処理プログラム４１とを搭載したサーバ計算機を、（第１のサーバ計算機５、第２のサーバ計算機７のように）複数台備えてクエリの処理の実行に対処することとしている。しかし、エージェント処理プログラム３９と、ストリームデータ処理プログラム４１とを搭載したサーバ計算機については、１台だけを備えることとし、複数のプロセスにてクエリの処理の実行に対処することとしても差し支えない。
【００８６】
更に、図１で示した例では、ストリームデータソース１とストリーム転送用計算機３との間、及びストリーム転送用計算機３と第１のサーバ計算機５、第２のサーバ計算機７との間については、業務用ネットワーク１１を通じて接続されている。また、運用管理用計算機９とストリーム転送用計算機５、第１のサーバ計算機５、第２のサーバ計算機７との間については、運用ネットワーク１３を通じて接続されている。しかし、業務用ネットワーク１１、又は運用ネットッワーク１３の何れか一方のみを用いて上記各機器同士を接続するようにしても差し支えない。
【００８７】
図２は、図１に記載のストリーム転送プログラム２３に含まれるストリーム転送表２９の構成の一例を示した図である。
【００８８】
上記ストリーム転送表２９は、図２に示すように、ストリームID記録欄１１１、及び転送先のIPアドレス記録欄１１３を含む。ストリームID記録欄１１１には、ストリームIDに係わる情報が格納される。転送先のIPアドレス記録欄１１３には、ストリームデータ処理プログラム４１が搭載されている第１のサーバ計算機５のIPアドレスが格納される。図２に示した例では、ストリームID記録欄１１１には、ストリームIDとして、「S1、S2、S3」が記録されている。また、転送先のIPアドレス記録欄１１３には、IPアドレスとして、「１９２．１６８．０．２」が記録されている。上述した夫々のストリームIDを有する各々のストリームデータが、ストリーム転送用計算機３から上記IPアドレスを有するサーバ計算機、即ち、第１のサーバ計算機５に転送される。
【００８９】
図３は、スタンフォード大学ストリームシステムにおけるクエリの記述例を示した図である。
【００９０】
図３に示すクエリの記述例において、時間ベースのクエリの例である文字列１１５は、過去３０秒間に入力された、ストリームID「S1」のストリームデータ１５が持つ値dataの平均値を算出するクエリを表す文字列である。また、個数ベースのクエリの例である文字列１１７は、過去において５個入力された、ストリームID「S1」のストリームデータ１５が持つ値dataの平均値を算出するクエリを表す文字列である。図３に記述された文字列１１５、１１７は、何れもCQLによって記述された文字列の例である。
【００９１】
図４は、図１に記載のストリームデータ処理プログラム４１に含まれるクエリ管理表５７の構成の一例を示した図である。
【００９２】
上記クエリ管理表５７は、図４に示すように、クエリID記録欄１１９、クエリ文字列記録欄１２１、クエリの実行形式格納先記録欄１２３、及び実行対象ストリームID記録欄１２５を含む。クエリID記録欄１１９には、例えば、登録済みクエリのIDである、「Q1、Q2、及びQ3」が、格納される。クエリID「Q1」と同列のクエリ文字列記録欄１２１には、該クエリID「Q1」に対応するクエリ文字列が、クエリID「Q1」と同列のクエリの実行形式格納先記録欄１２３には、該クエリID「Q1」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置３１のアドレスが格納されている。更に、クエリID「Q1」と同列の実行対象ストリームID記録欄１２５には、該クエリID「Q1」に対応するクエリの実行対象ストリームのID（識別子）として、「S1」が格納されている。
【００９３】
また、クエリID「Q2」と同列のクエリ文字列記録欄１２１には、該クエリID「Q2」に対応するクエリ文字列が、クエリID「Q2」と同列のクエリの実行形式格納先記録欄１２３には、該クエリID「Q2」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置３１のアドレスが格納されている。更に、クエリID「Q2」と同列の実行対象ストリームID記録欄１２５には、該クエリID「Q2」に対応するクエリの実行対象ストリームのID（識別子）として、「S2」が格納されている。
【００９４】
更に、クエリID「Q3」と同列のクエリ文字列記録欄１２１には、該クエリID「Q3」に対応するクエリ文字列が、クエリID「Q3」と同列のクエリの実行形式格納先記録欄１２３には、該クエリID「Q3」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置３１のアドレスが格納されている。更に、クエリID「Q3」と同列の実行対象ストリームID記録欄１２５には、該クエリID「Q3」に対応するクエリの実行対象ストリームのID（識別子）として、「S3」が格納されている。
【００９５】
図５は、図１に記載のエージェント処理プログラム３９に含まれるクエリ状態表４３の構成の一例を示した図である。
【００９６】
上記クエリ状態表４３は、図５に示すように、クエリID記録欄１２７、CPU使用率（%）記録欄１２９、ウィンドウサイズ記録欄１３１、及びデータ入力頻度（個／秒）１３３を含む。クエリID記録欄１２７には、個々のクエリの識別子、即ち、クエリのIDである、「Q1、Q2、及びQ3」が、格納される。クエリID「Q1」と同列のCPU使用率（%）記録欄１２９には、リソースの使用量として、監視対象であるストリームデータ処理プログラム４１が動作している第１のサーバ計算機５のCPU使用率（%）、即ち、該クエリID「Q1」に対応するCPU使用率（%）「50」が、格納されている。クエリID「Q1」と同列のウィンドウサイズ記録欄１３１には、該クエリID「Q1」に対応するウィンドウサイズ１３１として、「1分」が格納されている。更に、クエリID「Q1」と同列のデータ入力頻度（個／秒）記録欄１３３には、クエリの処理量、即ち、該クエリID「Q1」に対応するデータ入力頻度（個／秒）として、「10」が格納されている。ここで、データ入力頻度とは、クエリの処理対象とするストリームデータ１５が、単位時間当たりに第１のサーバ計算機５に入力された個数を表す。クエリID「Q1」に係わる各欄に格納されている諸情報は、クエリIDを持つクエリが、第１のサーバ計算機５のCPUを50%使用しており、ウィンドウサイズが1分で、１秒間に10個のストリームデータが第１のサーバ計算機５に入力されていることを表している。
【００９７】
また、クエリID「Q2」と同列のCPU使用率（%）記録欄１２９には、該クエリID「Q2」に対応するCPU使用率（%）「30」が、クエリID「Q2」と同列のウィンドウサイズ記録欄１３１には、該クエリID「Q2」に対応するウィンドウサイズ１３１として、「10秒」が格納されている。更に、クエリID「Q2」と同列のデータ入力頻度（個／秒）記録欄１３３には、該クエリID「Q2」に対応するデータ入力頻度（個／秒）として、「100」が格納されている。
【００９８】
更に、クエリID「Q3」と同列のCPU使用率（%）記録欄１２９には、該クエリID「Q3」に対応するCPU使用率（%）「20」が、クエリID「Q3」と同列のウィンドウサイズ記録欄１３１には、該クエリID「Q3」に対応するウィンドウサイズ１３１として、「100個」が格納されている。更に、クエリID「Q3」と同列のデータ入力頻度（個／秒）記録欄１３３には、該クエリID「Q3」に対応するデータ入力頻度（個／秒）として、「50」が格納されている。
【００９９】
図６は、図１に記載の運用管理プログラム８９に含まれるサーバ状態表９３の構成の一例を示した図である。
【０１００】
上記サーバ状態表９３は、（運用管理プログラム８９の）クエリ状態表収集部９１が、エージェント処理プログラム３９から収集したクエリ状態表４３を基に作成されるもので、図６に示すように、サーバID記録欄１３５、クエリID記録欄１３７、CPU使用率（%）記録欄１３９、ウィンドウサイズ記録欄１４１、及びデータ入力頻度（個／秒）１４３を含む。
【０１０１】
サーバID記録欄１３５には、サーバ計算機（図１で示した例では、第１のサーバ計算機５、及び第２のサーバ計算機７）の識別子として、各々のサーバ計算機（図１で示した例では、第１のサーバ計算機５、及び第２のサーバ計算機７）毎に一意に割り当てられた識別子（即ち、ID）（図６で示した例では、「A」）が、格納される。なお、クエリID記録欄１３７に格納されている情報は、図５で示したクエリID記録欄１２７に格納されている情報と、CPU使用率（%）記録欄１３９に格納されている情報は、図５で示したCPU使用率（%）記録欄１２９に格納されている情報と、ウィンドウサイズ記録欄１４１に格納されている情報は、図５で示したウィンドウサイズ記録欄１３１に格納されている情報と、夫々内容が同一であるので、ここでの重ねての説明は省略する。
【０１０２】
図７は、図１に記載の運用管理プログラム８９に含まれるコスト表９７の構成の一例を示した図である。
【０１０３】
上記コスト表９７は、図７に示すように、サーバID記録欄１４５、クエリID記録欄１４７、CPU使用率（%）記録欄１４９、及び移行時間（見込み）記録欄１５１を含む。
サーバID記録欄１４５に格納されている情報は、図６で示したサーバID記録欄１３５に格納されている情報と、クエリID記録欄１４７に格納されている情報は、図６で示したクエリID記録欄１３７に格納されている情報と、CPU使用率（%）記録欄１４９に格納されている情報は、図６で示したCPU使用率（%）記録欄１３９に格納されている情報と、夫々内容が同一であるので、ここでの重ねての説明は省略する。移行時間（見込み）記録欄１５１には、クエリの移行コストとして、サーバ状態表９３を基に、コスト算出部９５により算出されたクエリの、現在稼働中のサーバ計算機（図１で示した例では、第１のサーバ計算機５）から新たに追加されたサーバ計算機（図１で示した例では、第２のサーバ計算機７）への移行時間（見込み）が、格納される。図７で示した例では、クエリIDが「Q1」であるクエリの上記移行時間（見込み）は、「60秒」であり、クエリIDが「Q2」であるクエリの上記移行時間（見込み）は、「10秒」であり、クエリIDが「Q3」であるクエリの上記移行時間（見込み）は、「2秒」である。
【０１０４】
上述した図１に記載のシステム構成において、図２で示したストリーム転送表２９を用いてストリーム転送用計算機３が、図４で示したクエリ管理表５７、及び図５で示したクエリ状態表４３を用いて第１のサーバ計算機５が、図６で示したサーバ状態表９３、及び図７で示したコスト表９７を用いて運用管理用計算機９が、夫々既に稼働している。この状態において、新たに第２のサーバ計算機７が、クエリの処理を実行するために稼働するサーバ計算機として追加された場合のスケールアウト処理の動作手順を以下に説明する。
【０１０５】
まず、スケールアウトが行われる前の、ストリームデータ処理システムの状態について説明する。
【０１０６】
現在稼働中の第１のサーバ計算機５は、IPアドレス１９２．１６８．０．２を、第２のサーバ計算機７は、IPアドレス１９２．１６８．０．３を、夫々有する。ストリーム転送プログラム２３は、図２で示したストリーム転送表２９を保持し、ストリームデータソース１から受信したストリームデータ１５に含まれているストリームIDに基づき、該ストリームデータ１５を、対応するサーバ計算機、即ち、第１のサーバ計算機５へ転送する。既述の内容から明らかなように、図２で示したストリーム転送表２９では、３種類のストリームID（S1、S2、S3）を有するストリームデータ１５が転送されてくるであろうことを想定している。
【０１０７】
第１のサーバ計算機５において、ストリームデータ処理プログラム４１は、３個のクエリ（Q1、Q2、Q3）に係わる処理を実行しており、図４で示したクエリ管理表５７を含む。また、エージェント処理プログラム３９は、ストリームデータ処理プログラム４１の状態（動作状態）を監視しており、図５で示したクエリ状態表４３を含む。
【０１０８】
次に、第１のサーバ計算機５のみがクエリに係わる処理を実行すべく稼働しているストリームデータ処理システムにおいて、第２のサーバ計算機７が、新たなサーバ計算機として追加された際のスケールアウト処理の手順について、以下に説明する。
【０１０９】
まず、ユーザ（オペレータ）が、運用管理用計算機９の入力装置８３を操作することにより、クエリの移行元として１台以上のサーバ計算機（図１で示した例では、第１のサーバ計算機５）を、クエリの移行先として１台以上のサーバ計算機（図１で示した例では、第２のサ−バ計算機７）を、夫々指定すると共に、スケールアウト処理開始命令をも入力する。本実施形態では、上記のようにユーザ（オペレータ）が、入力装置８３を通じて運用管理用計算機９にスケールアウト処理開始命令を入力する際に、移行元の計算機として第１のサーバ計算機５を、移行先の計算機として第２のサーバ計算機７を、夫々指定する。しかし、ユーザがスケールアウト処理開始命令を入力するのではなく、移行元のサーバ計算機、及び移行先のサーバ計算機を自動的に検出し、スケールアウト処理を開始するように、上記ストリームデータ処理システムを設定することも可能である。
【０１１０】
以後、移行元のサーバ計算機である第１のサーバ計算機５において動作しているエージェント処理プログラム３９、及びストリームデータ処理プログラム４１を、夫々「移行元のエージェント処理プログラム３９」、及び「移行元のストリームデータ処理プログラム４１」と表記する。また、移行先のサーバ計算機である第２のサーバ計算機７において動作するエージェント処理プログラム３９、及びストリームデータ処理プログラム４１を、夫々「移行先のエージェント処理プログラム３９」、及び「移行先のストリームデータ処理プログラム４１」と表記する。
【０１１１】
次に、第１のサーバ計算機５のみがクエリに係わる処理を実行すべく稼働しているストリームデータ処理システムにおいて、第２のサーバ計算機７が、新たなサーバ計算機として追加された際のスケールアウトについて、以下に説明する。
【０１１２】
スケールアウト処理は、全てのクエリに係わる情報を収集し、収集した情報の中からコストを算出し、該算出したコストを基に、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間が短く、且つ、サーバ計算機負荷が均等になるようなクエリを単数、又は複数選択する。そして、選択したクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行する、という処理の流れで実行される。上記選択されたクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行するに際し、移行の処理に遅延を発生させないようにするため、既述のコピー方式ではなく、後に詳述するウォームアップ方式によるクエリの移行処理が行われる。
【０１１３】
次に、上述したスケールアウト処理の具体的な手順について説明する。
【０１１４】
図８は、本発明の一実施形態に係るスケールアウト処理の手順の一例を示すフローチャートである。
【０１１５】
図８において、まず、運用管理プログラム９が、移行元のエージェント処理プログラム３９に含まれるクエリ状態表４３を収集する。本実施形態では、移行元のサーバ計算機として、第１のサーバ計算機５が指定されるため、第１のサーバ計算機５において動作しているストリームデータ処理プログラム４１を監視しているエージェント処理プログラム３９に含まれるクエリ状態表４３が収集される（ステップＳ１６１）。次に、収集されたクエリ状態表４３中の情報から、サーバ状態表９３が作成される。本実施形態では、収集されたクエリ状態表４３に対し、第１のサーバ計算機５の識別子（ID）である「A」が、サーバ状態表９３におけるサーバID記録欄１３５（図６にて示した）に格納される（ステップＳ１６２）。
【０１１６】
上記のような処理動作を経てサーバ状態表９３の作成が完了すると、後に詳述するコスト算出処理が実行される（ステップＳ１６３）。該コスト算出処理が完了すると、後に詳述するクエリ選択処理が実行される。クエリ選択処理の詳細については、後述するが、該クエリ選択処理によりクエリIDが「Q2」、及び「Q3」に係わるクエリが、夫々移行クエリとして選択される（ステップＳ１６４）。上記クエリ選択処理が完了すると、最後に、後述するウォームアップ方式によるクエリ移行処理が実行される。即ち、上記クエリ選択処理において選択された全てのクエリについて、ウォームアップ方式によるクエリ移行処理が実行される。本実施形態では、クエリ選択処理によって選択されたクエリQ2、及びクエリQ3が、第１のサーバ計算機５から第２のサーバ計算機７へと移行される（ステップＳ１６５、Ｓ１６６、Ｓ１６７）。
【０１１７】
以上で、本発明の一実施形態に係るストリームデータ処理システムにおけるスケールアウト作業が完了し、移行元のストリームデータ処理プログラム４１においては、クエリQ1に係わる処理動作が実行され、移行先のストリームデータ処理プログラム４１においては、クエリQ2、及びクエリQ3に係わる処理動作が夫々実行される。
【０１１８】
図９は、ウォームアップ方式におけるコスト算出処理での処理手順の一例を示すフローチャートである。
【０１１９】
図８のステップＳ１６３において実行されたウォームアップ方式のコスト算出処理とは、ウォームアップ方式を用いて移行対象となるクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行させる際に、個々のクエリ毎に移行に必要となるコストを算出するための処理のことである。図９に示したフローチャートにおいては、スケールアウトに際しての移行コストとして、（移行元のサーバ計算機から移行先のサーバ計算機への）クエリの移行に必要となる移行時間（見込み）が用いられる。
【０１２０】
図９において、コスト算出処理は、サーバ状態表９３に格納されている全てのクエリに対して実行される（ステップＳ１７１）。即ち、まず、対象になるクエリのウィンドウの種類をチェックすることにより、該クエリのウィンドウが時間ベースであるか、個数ベースであるかを判断する（ステップＳ１７２）。上記チェックの結果、時間ベースであると判断すれば、該クエリの「ウィンドウのデータ範囲」から、該クエリの移行時間を算出する処理を実行し（ステップＳ１７５）、次いで、ステップＳ１７３で算出した移行時間をコスト表９７の移行時間（見込み）記録欄１５１（図７で示した）に反映（記録）させるための処理を実行する（ステップＳ１７５）。
【０１２１】
一方、上記チェックの結果、個数ベースであると判断すれば、該クエリの「ウィンドウのデータ範囲／データ入力頻度」から、該クエリの移行時間を算出する処理を実行し（ステップＳ１７４）、次いで、ステップＳ１７４で算出した移行時間を上記コスト表９７の移行時間（見込み）記録欄１５１に反映（記録）させるための処理を実行する（ステップＳ１７５）。そして、ステップＳ１７２〜ステップＳ１７５で夫々示した処理動作が全てのクエリに関して実行されたことを確認すると（ステップＳ１７６）、図９で示した一連の処理動作が終了する。上記処理が終了することにより、図７において既に説明したように、クエリQ1の移行時間が、60秒であり、クエリQ2の移行時間が、10秒であり、クエリQ3の移行時間が、2秒であることが見込まれることになる。
【０１２２】
図１０は、本発明の一実施形態に係る移行クエリ選択処理での処理手順の一例を示すフローチャートである。
【０１２３】
図８のステップＳ１６４において実行された移行クエリ選択処理とは、移行元のサーバ計算機（図１で示した例では、第１のサーバ計算機５）から移行先のサーバ計算機（図１で示した例では、第２のサーバ計算機７）への移行を短時間で行うことが可能で、且つ、移行することにより移行元のサーバ計算機におけるリソース使用量の低減に寄与することが可能なクエリを選択するための処理である。
【０１２４】
図１０において、まず、コスト表９７が探索され、現に移行クエリとして選択されていないクエリの中から、移行時間（見込み）が最も短いクエリが移行クエリとして選択される（ステップＳ１８１）。次に、ステップＳ１８１で移行クエリとして選択されたクエリのCPU使用率を、移行先のサーバ計算機（第２のサーバ計算機７）の合計CPU使用率に加算する処理が実行される。
本実施形態においては、移行先のサーバ計算機（図１で示した例では、第２のサーバ計算機７）は、初期状態が合計CPU使用率「0%」になっており（即ち、移行先のサーバ計算機がストリームデータ処理に使用されていないという意味である）、この状態において、移行されるクエリのCPU使用率が加算されて行く（ステップＳ１８２）。
【０１２５】
ステップＳ１８１、Ｓ１８２において夫々示した処理動作は、移行先のサーバ計算機におけるCPU使用率と、リソース使用量目標値と称される或る閾値との間に、CPU使用率≧リソース使用量目標値という関係が成立する（ステップＳ１８３でYES）と判断されるまで、継続される。
【０１２６】
本実施形態においては、リソース使用量目標値を50%として、図１０で示した移行クエリ選択処理の処理動作が開始される。移行時間の最も短いクエリであるクエリQ2が、移行クエリとして選択されることで、移行元のサーバ計算機である第１のサーバ計算機５における合計CPU使用率は、80%になり、移行先のサーバ計算機である第２のサーバ計算機７における合計CPU使用率は、20%になる。ここで、移行先のサーバ計算機である第２のサーバ計算機７における合計CPU使用率（20%）が、リソース使用量目標値である50%を超えていないため、再度、現に移行クエリとして選択されていないクエリの中から、移行時間（見込み）が最も短いクエリが移行クエリとして選択される。即ち、移行時間がクエリQ2の次に短いクエリQ3が移行クエリとして選択される。その結果、第１のサーバ計算機５における合計CPU使用率、及び第２のサーバ計算機７における合計CPU使用率は、共に50%になる。第２のサーバ計算機７における合計CPU使用率がリソース使用量目標値である50%に達したので、図１０で示した移行クエリ選択処理の処理動作が終了することになる。上記処理動作の結果として、第１のサーバ計算機５から第２のサーバ計算機７へ移行されるクエリとして、クエリQ2、及びクエリQ3が選択されたことになる。
【０１２７】
図１１は、本発明の一実施形態に係るウォームアップ方式による移行クエリ選択処理での処理手順の一例を示すフローチャートである。
【０１２８】
図８のステップＳ１６６において実行されたウォームアップ方式による移行クエリ選択処理とは、移行すべき同一のクエリであって、移行される前のクエリと、移行された後のクエリとの双方に対し、或る期間、夫々同一のストリームデータを送信することにより、該クエリにおける移行前のウィンドウデータと、移行後のウィンドウデータとを一致させ、然る後に、移行される前のクエリ
係わる処理動作を停止させることにより、クエリを移行させる処理のことである。上述したコピー方式によるクエリの移行処理とは異なり、ウィンドウデータのコピーを行わないため、クエリに係わる処理を遅延させることなく対象となるクエリを移行させることが可能である。
【０１２９】
図１１において、まず、運用管理プログラム８９が、移行先のエージェント処理プログラム３９に対し、移行クエリを移行先のストリームデータ処理プログラム４１に登録すべき旨のコマンド（以後、該コマンドを「ストリーム移行クエリ登録コマンド」と表記することもある。）７７を送信する（ステップＳ１９１）。上記ストリーム移行クエリ登録コマンド７７を受信すると、移行先のエージェント処理プログラム３９は、移行すべきクエリを、移行先のストリームデータ処理プログラム４１に登録するための処理動作を実行する。該処理動作が終了すると、移行先のエージェント処理プログラム３９は、移行すべきクエリの、移行先のストリームデータ処理プログラム４１への登録が終了したことを示すコマンド完了通知（以後、該完了通知を「移行クエリ登録通知」と表記することもある。）７９を、運用管理プログラム８９へ送信する。上記移行クエリ登録通知７９を受信すると、運用管理プログラム８９は、移行すべきクエリの処理対象であるストリームデータ１５の転送先（であるサーバ計算機）に、新たに追加されるサーバ計算機（第２のサーバ計算機７）のIPアドレスを追加すべき旨の命令（以後、該命令を「移行クエリの転送先追加命令」と表記することもある。）を、ストリーム転送プログラム２３へ送信する（ステップＳ１９２）。
【０１３０】
上記移行クエリの転送先追加命令を受信すると、ストリーム転送プログラム２３は、ストリーム転送表２９のストリームID記録欄１１１に、移行すべきクエリの処理対象であるストリームデータ１５のID、即ち、ストリームIDを追加記録する。また、上記ストリーム転送表２９の転送先のIPアドレス記録欄１１３に、新たに追加されるサーバ計算機（第２のサーバ計算機７）のIPアドレスを追加記録する。そして、上記処理が終了すると、ストリーム転送プログラム２３は、上記処理が終了した旨を、運用管理プログラム８９へ通知する。なお、ストリーム転送表２９のストリームID記録欄１１１への上記ストリームIDの追加記録、及びストリーム転送表２９の転送先のIPアドレス記録欄１１３への上記IPアドレスの追加記録が完了した旨の通知を、以後、「移行クエリの転送先追加通知」と表記することもある。既述の内容から明らかなように、本実施形態では、移行すべきクエリは、クエリQ2、Q3であり、クエリQ2の処理対象である、ストリームID「S2」で示されるストリームデータ１５、及びクエリQ3の処理対象である、ストリームID「S3」で示されるストリームデータ１５が、ストリーム転送用計算機３から新たに追加されたサーバ計算機である第２のサーバ計算機７に転送されるようにストリーム転送表２９が更新される。上記移行クエリの転送先追加通知を受信すると、運用管理プログラム８９は、移行元のエージェント処理プログラム３９に対し、後に詳述するウィンドウデータ一致後のクエリ削除処理を開始するためのコマンド７７´を、送信する。以後、上記ウィンドウデータ一致後のクエリ削除処理を開始するためのコマンドを、「ウィンドウデータ一致後のクエリ削除コマンド」と表記することもある（ステップＳ１９３）。
【０１３１】
上記削除コマンド７７´を受信すると、移行元のエージェント処理プログラム３９は、該削除コマンド７７´に従い、ウィンドウデータ一致後のクエリ削除処理を行うと共に、該削除処理が完了すると、該削除処理が完了したことを示すコマンド完了通知７９´を、運用管理プログラム８９へ送信する。以後、上記ウィンドウデータ一致後のクエリ削除が完了したことを示すコマンド完了通知を、「移行クエリ削除通知」と表記することもある。上記移行クエリ削除通知７９´を受信すると、運用管理プログラム８９は、移行クエリの処理対象であるストリームデータ１５の転送先であるサーバ計算機（第１のサーバ計算機５、及び第２のサーバ計算機７）のIPアドレスから、移行元のサーバ計算機（第１のサーバ計算機５）のIPアドレスを削除すべき旨の命令を、ストリーム転送プログラム２３へ送信する。以後、移行クエリの処理対象であるストリームデータ１５の転送先であるサーバ計算機のIPアドレスから、移行元のサーバ計算機のIPアドレスを削除すべき旨の命令を、「移行クエリの転送先削除命令」と表記することもある（ステップＳ１９４）。
【０１３２】
次に、ストリーム転送プログラム２３は、移行クエリの処理対象であることを示すストリームIDを有するストリームデータ１５を、移行元のサーバ計算機（即ち、第１のサーバ計算機５）へ転送されないようにしつつ、上記ストリームデータ１５の移行元のサーバ計算機への転送を阻止するための処理が完了した旨を、運用管理プログラム８９へ通知する。以後、移行クエリの処理対象であることを示すストリームIDを有するストリームデータ１５を移行元のサーバ計算機へ転送しないようにする処理が完了した旨の通知を、「移行クエリの転送先削除通知」と表記することもある。本実施形態では、クエリQ2の処理対象であるストリームデータ１５のストリームID「S2」、及びクエリQ3の処理対象であるストリームデータ１５のストリームID「S3」と、これらのストリームデータ１５の転送先とされている、ストリームデータ処理プログラム４１が動作中の第１のサーバ計算機５に係わるIPアドレス「１９２．１６８．０．２」とが、削除されることになる。上述した転送先削除の処理が完了すると、ストリーム転送プログラム２３は、転送先削除完了通知を運用管理プログラム８９へ送信し、運用管理プログラム８９が、該転送先削除完了通知を受信する（ステップＳ１９５）。以上で、ウォームアップ方式による移行クエリ選択処理に係わる一連の処理動作が終了する。
【０１３３】
図１２は、本発明の一実施形態に係るウィンドウデータ一致後のクエリ削除処理の処理動作の一例を示すフローチャートである。
【０１３４】
図１１のステップＳ１９３において実行されるウィンドウデータ一致後のクエリ削除処理とは、移行元のエージェント処理プログラム３９が、運用管理プログラム８９から受信したウィンドウデータ一致後のクエリ削除コマンドに基づいて実行する、移行すべきクエリにおける移行前のウィンドウデータと、移行後のウィンドウデータとが一致した後の該クエリを削除する処理のことである。
【０１３５】
図１２において、移行元のエージェント処理プログラム３９は、まず、削除すべきクエリにおけるウィンドウが、時間ベースのウィンドウであるのか、それとも個数ベースのウィンドウであるのか、ウィンドウの種類をチェックする。これは、削除すべきクエリのウィンドウが、時間ベースのウィンドウであるか、個数ベースのウィンドウであるかによって、ウィンドウデータの一致する条件が異なるためである（ステップＳ２０１）。
【０１３６】
ステップＳ２０１でのチェックの結果、削除すべきクエリのウィンドウが時間ベースのウィンドウであると判断すると、移行元のエージェント処理プログラム３９は、該クエリのウィンドウサイズ分の時間が経過した時点で、該クエリの削除処理を実行する。これは、該クエリのウィンドウが時間ベースのウィンドウである場合に、該クエリのウィンドウサイズ分に相当する時間が経過した後に、該クエリ移行前のウィンドウデータと、該クエリ移行後のウィンドウデータとが一致するためである（ステップＳ２０２）。ステップＳ２０２で示した処理動作が完了すると、移行元のエージェント処理プログラム３９は、上記クエリを削除した旨を、運用管理プログラム８９に通知し（ステップＳ２０４）、図１２で示した一連の処理動作が終了する。
【０１３７】
一方、ステップＳ２０１でのチェックの結果、削除すべきクエリのウィンドウが個数ベースウィンドウであると判断すると、エージェント処理プログラム３９は、（第１のサーバ計算機５への）データ（ストリームデータ１５）の入力数を監視し、該データ入力数が、該クエリが有するウィンドウサイズのデータ範囲分の個数に達した時点で、該クエリの削除処理を実行する。これは、該クエリのウィンドウが個数ベースのウィンドウである場合に、該クエリのウィンドウのデータ範囲分のストリームデータ１５が入力されると、該クエリ移行前のウィンドウデータと、該クエリ移行後のウィンドウデータとが一致するためである（ステップＳ２０３）。ステップＳ２０３で示した処理動作が完了すると、移行元のエージェント処理プログラム３９は、上記クエリを削除した旨を、運用管理プログラム８９に通知し（ステップＳ２０４）、図１２で示した一連の処理動作が終了する。
【０１３８】
次に、ストリームデータ処理システムにおいて、スケールアウトの対象であるサーバ計算機（図１で示した例では、第１のサーバ計算機５、及び第２のサーバ計算機７）が複数台存在する場合のスケールアウトの手順について説明する。
【０１３９】
図１３は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウトの対象であるサーバ計算機が複数台存在する場合におけるストリーム転送プログラムに含まれるストリーム転送表の内容を示した図である。
【０１４０】
図１３において、ストリーム転送表２１１は、図２に示したストリーム転送表２９と同様に、ストリームID記録欄２１３、及び転送先ストリームデータ処理プログラム（４１）のIPアドレス記録欄２１５を含む。ストリームID記録欄２１３には、ストリームIDに係わる情報として、「S1、S2、S3、S4、S5」が記録されている。また、転送先ストリームデータ処理プログラム（４１）のIPアドレス記録欄２１５には、IPアドレスとして、「１９２．１６８．０．２と、１９２．１６８．０．３」が記録されている。図１３で示したストリーム転送表２１１の内容から明らかなように、ストリームID「S1」を有するストリームデータ１５、ストリームID「S2」を有するストリームデータ１５、及びストリームID「S3」を有するストリームデータ１５が、IPアドレス「１９２．１６８．０．２」を有する第１のサーバ計算機５に転送され、また、ストリームID「S4」を有するストリームデータ１５、及びストリームID「S5」を有するストリームデータ１５が、IPアドレス「１９２．１６８．０．３」を有する第２のサーバ計算機７に転送される。
【０１４１】
図１４は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理を実現するために既存のサーバ計算機（第１のサーバ計算機５）に対し、新たに追加されたサーバ計算機（第２のサーバ計算機７）のエージェント処理プログラム３９に含まれるクエリ状態表の内容を示した図である。
【０１４２】
図１４において、クエリ状態表２１７は、図５に示したクエリ状態表４３と同様に、クエリID記録欄２１９、CPU使用率（%）記録欄２２１、ウィンドウのデータ範囲記録欄２２３、及びデータ入力頻度（個／秒）２２５を含む。クエリID記録欄２１９には、個々のクエリのIDである、「Q4、及びQ5」が、格納される。クエリID「Q4」と同列のCPU使用率（%）記録欄２２１には、リソースの使用量として、監視対象であるストリームデータ処理プログラム４１が動作することになる第２のサーバ計算機７のCPU使用率（%）、即ち、該クエリID「Q4」に対応するCPU使用率（%）「45」が、格納されている。クエリID「Q4」と同列のウィンドウのデータ範囲記録欄２２３には、該クエリID「Q4」に対応するウィンドウのデータ範囲として、「300個」が格納されている。更に、クエリID「Q4」と同列のデータ入力頻度（個／秒）記録欄２２５には、クエリの処理量、即ち、該クエリID「Q4」に対応するデータ入力頻度（個／秒）として、「1」が格納されている。データ入力頻度の詳細については、既に説明済みであるので、ここでの説明は省略する。
【０１４３】
また、クエリID「Q5」と同列のCPU使用率（%）記録欄２２１には、該クエリID「Q5」に対応するCPU使用率（%）「40」が、クエリID「Q5」と同列のウィンドウのデータ範囲記録欄２２３には、該クエリID「Q5」に対応するウィンドウのデータ範囲として、「5秒」が格納されている。更に、クエリID「Q5」と同列のデータ入力頻度（個／秒）記録欄２２５には、該クエリID「Q5」に対応するデータ入力頻度（個／秒）として、「25」が格納されている。
【０１４４】
第１のサーバ計算機５は、そのエージェント処理プログラム３９が含むクエリ状態表（図５において、符号４３で示した）に基づき、３個のクエリQ1、Q2、Q3に夫々係わる処理を実行することとなり、また、第２のサーバ計算機７は、そのエージェント処理プログラム３９が含むクエリ状態表（図１４において、符号２１７で示した）に基づき、２個のクエリQ4、Q5に夫々係わる処理を実行することとなる。
【０１４５】
図１５は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるサーバ計算機、即ち、移行元のサーバ計算機が複数台存在する場合の、運用管理用計算機９が有するサーバ状態表の構成の一例を示した図である。換言すれば、図１５は、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム（４１）が複数存在する場合における運用管理プログラム８９に含まれるサーバ状態表の構成の一例を示した図である。
【０１４６】
図１５において、サーバ状態表２２７は、図６に示したサーバ状態表９３と略同様に、サーバID記録欄２２９、クエリID記録欄２３１、CPU使用率（%）記録欄２３３、ウィンドウのデータ範囲記録欄２３５、及びデータ入力頻度（個／秒）２３７を含む。
【０１４７】
サーバID記録欄２２９には、サーバ計算機の識別子として、第１のサーバ計算機５のサーバID「A」、及び第２のサーバ計算機７のサーバID「B」が、夫々格納されている。サーバID「A」が格納されているサーバID記録欄２２９に対応するクエリID記録欄２３１には、個々のクエリの識別子（即ち、クエリID）として、「Q1」、「Q2」、及び「Q3」が夫々格納されている。クエリID「Q1」が格納されているクエリID記録欄２３１に対応するCPU使用率（%）記録欄２３３には、CPU使用率として「50」が格納されている。また、クエリID「Q1」が格納されているクエリID記録欄２３１に対応するウィンドウのデータ範囲記録欄２３５には、ウィンドウのデータ範囲として「1分」が格納されている。更に、クエリID「Q1」が格納されているクエリID記録欄２３１に対応するデータ入力頻度（個／秒）記録欄２３７には、ストリームデータ１５の入力頻度範囲として「10」が格納されている。
【０１４８】
次に、クエリID「Q2」が格納されているクエリID記録欄２３１に対応するCPU使用率（%）記録欄２３３には、CPU使用率として「30」が格納されている。また、クエリID「Q2」が格納されているクエリID記録欄２３１に対応するウィンドウのデータ範囲記録欄２３５には、ウィンドウのデータ範囲として「10秒」が格納されている。更に、クエリID「Q2」が格納されているクエリID記録欄２３１に対応するデータ入力頻度（個／秒）記録欄２３７には、ストリームデータ１５の入力頻度範囲として「100」が格納されている。次に、クエリID「Q3」が格納されているクエリID記録欄２３１に対応するCPU使用率（%）記録欄２３３には、CPU使用率として「20」が格納されている。また、クエリID「Q3」が格納されているクエリID記録欄２３１に対応するウィンドウのデータ範囲記録欄２３５には、ウィンドウのデータ範囲として「100個」が格納されている。更に、クエリID「Q3」が格納されているクエリID記録欄２３１に対応するデータ入力頻度（個／秒）記録欄２３７には、ストリームデータ１５の入力頻度範囲として「50」が格納されている。
【０１４９】
一方、サーバID「B」が格納されているサーバID記録欄２２９に対応するクエリID記録欄２３１には、クエリIDとして、「Q4」、及び「Q5」が夫々格納されている。クエリID「Q4」が格納されているクエリID記録欄２３１に対応するCPU使用率（%）記録欄２３３には、CPU使用率として「45」が格納されている。また、クエリID「Q4」が格納されているクエリID記録欄２３１に対応するウィンドウのデータ範囲記録欄２３５には、ウィンドウのデータ範囲として「300個」が格納されている。更に、クエリID「Q4」が格納されているクエリID記録欄２３１に対応するデータ入力頻度（個／秒）記録欄２３７には、ストリームデータ１５の入力頻度範囲として「1」が格納されている。次に、クエリID「Q5」が格納されているクエリID記録欄２３１に対応するCPU使用率（%）記録欄２３３には、CPU使用率として「40」が格納されている。また、クエリID「Q5」が格納されているクエリID記録欄２３１に対応するウィンドウのデータ範囲記録欄２３５には、ウィンドウのデータ範囲として「5秒」が格納されている。更に、クエリID「Q5」が格納されているクエリID記録欄２３１に対応するデータ入力頻度（個／秒）記録欄２３７には、ストリームデータ１５の入力頻度範囲として「25」が格納されている。
【０１５０】
なお、クエリID記録欄２３１における「Q1」、「Q2」、及び「Q3」に係わるCPU使用率（%）記録欄２３３、ウィンドウのデータ範囲記録欄２３５、及びデータ入力頻度（個／秒）記録欄２３７に夫々格納されている情報と、図５で示したものとは同一である。また、クエリID記録欄２３１における「Q4」、及び「Q5」に係わるCPU使用率（%）記録欄２３３、ウィンドウのデータ範囲記録欄２３５、及びデータ入力頻度（個／秒）記録欄２３７に夫々格納されている情報と、図１４で示したものとは同一である。よって、上記諸情報についてのここでの重ねての説明は省略する。
【０１５１】
図１６は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるサーバ計算機、即ち、移行元のサーバ計算機が複数台存在する場合の、運用管理用計算機９が有するコスト表の構成の一例を示した図である。換言すれば、図１６は、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム（４１）が複数存在する場合における運用管理プログラム８９に含まれるコスト表の構成の一例を示した図である。
【０１５２】
図１６において、コスト表２３９は、図７に示したコスト表９７と略同様に、サーバID記録欄２４１、クエリID記録欄２４３、CPU使用率（%）記録欄２４５、及び移行時間（見込み）記録欄２４７を含む。
【０１５３】
サーバID記録欄２４１には、サーバ計算機の識別子として、第１のサーバ計算機５のサーバID「A」、及び第２のサーバ計算機７のサーバID「B」が、夫々格納されている。サーバID「A」が格納されているサーバID記録欄２４１に対応するクエリID記録欄２４３には、個々のクエリの識別子（即ち、クエリID）として、「Q1」、「Q2」、及び「Q3」が夫々格納されている。クエリID「Q1」が格納されているクエリID記録欄２４３に対応するCPU使用率（%）記録欄２４５には、CPU使用率として「50」が格納されている。また、クエリID「Q1」が格納されているクエリID記録欄２４３に対応する移行時間（見込み）記録欄２４７には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間（見込み）「60秒」が、格納される。次に、クエリID「Q2」が格納されているクエリID記録欄２４３に対応するCPU使用率（%）記録欄２４５には、CPU使用率として「30」が格納されている。また、クエリID「Q2」が格納されているクエリID記録欄２４３に対応する移行時間（見込み）記録欄２４７には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間（見込み）「10秒」が、格納される。次に、クエリID「Q3」が格納されているクエリID記録欄２４３に対応するCPU使用率（%）記録欄２４５には、CPU使用率として「20」が格納されている。また、クエリID「Q3」が格納されているクエリID記録欄２４３に対応する移行時間（見込み）記録欄２４７には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間（見込み）「2秒」が、格納される。
【０１５４】
一方、サーバID「B」が格納されているサーバID記録欄２４１に対応するクエリID記録欄２４３には、個々のクエリのIDとして、「Q4」、及び「Q5」が夫々格納されている。クエリID「Q4」が格納されているクエリID記録欄２４３に対応するCPU使用率（%）記録欄２４５には、CPU使用率として「45」が格納されている。また、クエリID「Q4」が格納されているクエリID記録欄２４３に対応する移行時間（見込み）記録欄２４７には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間（見込み）「300秒」が、格納される。次に、クエリID「Q5」が格納されているクエリID記録欄２４３に対応するCPU使用率（%）記録欄２４５には、CPU使用率として「40」が格納されている。また、クエリID「Q5」が格納されているクエリID記録欄２４３に対応する移行時間（見込み）記録欄２４７には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間（見込み）「5秒」が、格納される。
【０１５５】
以下の説明は、上記ストリームデータ処理システムにおいて、ストリーム転送表として、図１３で示したストリーム転送表２１１が、クエリ状態表として、図１４で示したクエリ状態表２１７が、サーバ状態表として、図１５で示したサーバ状態表２２７が、コスト表として、図１６で示したコスト表２３９が、夫々用いられている場合を前提とする。
【０１５６】
ユーザが、上記ストリームデータ処理システムにおいてスケールアウト処理を開始するに際し、運用管理用計算機９の入力装置８３を介し、移行元のサーバ計算機として第１のサーバ計算機５、及び第２のサーバ計算機７を指定したとすると、移行先のサーバ計算機として、新たに追加されることになる第３のサーバ計算機（図１では、図示と説明の都合上から記載を省略した。）を指定することになる。換言すれば、上記スケールアウト処理が開始される際に、ユーザが、移行元のストリームデータ処理プログラム（４１）として、第１のサーバ計算機５のストリームデータ処理プログラム４１、及び第２のサーバ計算機７のストリームデータ処理プログラム４１を指定すると、移行先のストリームデータ処理プログラム（４１）として、例えば、IPアドレス「１９２．１６８．０．４」を有する第３のサーバ計算機（図示しない）のストリームデータ処理プログラムを指定することになる。なお、以下に説明するスケールアウトの処理手順は、算出したコストから移行すべきクエリを選択する前の処理において、移行すべきクエリとして選択されるクエリに係わる処理を現に実行しているストリームデータ処理プログラム（４１）を選択するための処理が行われる点で、図８乃至図１２で説明したスケールアウトの処理手順と相違する。
【０１５７】
図１７は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム（４１）が複数存在する場合におけるスケールアウトの処理手順の一例を示すフローチャートである。
【０１５８】
図１７において、まず、運用管理プログラム８９は、全ての移行元のストリームデータ処理プログラム（４１）において処理が実行されている全てのクエリに係わる情報の収集を行う（ステップＳ２５１）。即ち、移行元のストリームデータ処理プログラムである、第１のサーバ計算機５におけるストリームデータ処理プログラム４１、及び第２のサーバ計算機７におけるストリームデータ処理プログラム４１を、スケールアウトの対象にするために、第１のサーバ計算機５におけるエージェント処理プログラム３９から（図５で示した）クエリ状態表４３を、第２のサーバ計算機７におけるエージェント処理プログラム３９から、（図１４で示した）クエリ状態表２１７を、夫々収集する（ステップＳ２５２）。
【０１５９】
ステップＳ２５２で示した処理が、全ての移行元のエージェント処理プログラム３９について実行されたことを確認すると（ステップＳ２５３）、運用管理プログラム８９は、ステップＳ２５２において収集した全てのクエリ状態表（４３、２１７）を基に、サーバ状態表を作成する。このときのサーバ状態表は、図１５において、符号２２７で示したような構成になる（ステップＳ２５４）。上記サーバ状態表２２７を作成すると、運用管理プログラム８９は、上述したクエリを移行するに際して必要とするコスト、即ち、移行コストの算出処理を実行する（ステップＳ２５５）。
ステップＳ２５５における移行コストの算出処理が終了すると、運用管理プログラム８９は、ストリームデータ処理プログラム（４１）の選択処理、及びクエリの選択処理を実行する。このストリームデータ処理プログラム（４１）の選択処理、及びクエリの選択処理については、後に詳述する（ステップＳ２５６）。
【０１６０】
ステップＳ２５６における選択処理が終了すると、運用管理部８９は、選択した全てのクエリに対し、上述したウォームアップ方式によるクエリ移行処理を開始する（ステップＳ２５７、Ｓ２５８）。そして、上記ウォームアップ方式によるクエリ移行処理が、選択した全てのクエリに対し実行されたことを確認すると（ステップＳ２５９）図１７で示したスケールアウトに係わる一連の処理動作が終了する。なお、ステップＳ２５６でのクエリの選択処理においては、図１１、及び図１２で示した処理手順（フローチャート）が適用される。
【０１６１】
以上で、移行元のサーバ計算機を複数台とした場合の、スケールアウト処理が完了することになる。
【０１６２】
図１８は、図１７で示したスケールアウトの処理手順におけるストリームデータ処理プログラム、及びクエリ選択処理の処理手順の一例を示すフローチャートである。
【０１６３】
図１７のステップＳ２５６において実行されるストリームデータ処理プログラム、及びクエリ選択処理とは、運用管理プログラム８９が、（移行元のサーバ計算機から移行先のサーバ計算機へ）移行すべきクエリに係わる処理動作が現に実行されている移行元のストリームデータ処理プログラム（４１）を選択して、該選択したストリームデータ処理プログラム（４１）の中から移行すべきクエリを選択する処理のことである。
【０１６４】
図１８において、運用管理部８９は、まず、図１６で示したコスト表２３９に基づき、移行元とされているサーバ計算機（第１のサーバ計算機５、及び第２のサーバ計算機７）における合計CPU使用率（%）を算出する。本実施形態では、図１６に示すように、第１のサーバ計算機５におけるCPU使用率（%）は、「100%」であり、第２のサーバ計算機７におけるCPU使用率（%）は、「85%」である。そして、図１８で示した処理動作を開始した時点における新たに追加されるサーバ計算機（即ち、第３のサーバ計算機のこと。ここでは、図示を省略。）におけるCPU使用率（%）は、「0%」である（ステップＳ２６１）。
【０１６５】
次に、移行元のサーバ計算機から移行先のサーバ計算機へ移行すべきクエリを選択して、移行先のサーバ計算機へ移行する処理を、移行先のサーバ計算機におけるCPU使用率が最小でなくなるまで繰り返す処理が開始される（ステップＳ２６２）。即ち、まず、全てのサーバ計算機の中から合計CPU使用率（%）が最も大きいサーバ計算機を探索する。このサーバ計算機は、リソースが最も逼迫しているサーバ計算機であり、本実施形態では、上述した内容から明らかなように、第１のサーバ計算機５である（ステップＳ２６３）、次に、該探索したサーバ計算機のストリームデータ処理プログラム（４１）において、処理が実行されるべき複数のクエリの中から移行時間が最も短いクエリを、該探索したサーバ計算機からの移行クエリとして選択する。本実施形態においては、第１のサーバ計算機５において処理が実行されているクエリの中で、移行時間が最も短いクエリQ3が、移行クエリとして選択されることになる（ステップＳ２６４）。
【０１６６】
上記移行クエリ（Q3）の選択処理が終了すると、運用管理プログラム８９は、上記移行クエリ（Q3）に係わるCPU使用率（%）を、第１のサーバ計算機５における合計CPU使用率（%）から減算すると共に、該減算したCPU使用率（%）を、新たに追加したサーバ計算機である第３のサーバ計算機（図示しない）の合計CPU使用率（%）へ加算する処理を実行する。該処理を実行した結果、本実施形態では、第１のサーバ計算機５におけるCPU使用率（%）が「80%」になり、第２のサーバ計算機７におけるCPU使用率（%）は「85%」で変らず、第３のサーバ計算機（図示しない）におけるCPU使用率（%）が「20%」になる（ステップＳ２６５）。ステップＳ２６５で示した処理が終了した時点では、新たに追加したサーバ計算機である第３のサーバ計算機（図示しない）におけるCPU使用率（%）が「20%」で最も小さい。そのため、ステップＳ２６３乃至ステップＳ２６５で夫々示した処理動作が繰り返されることになる（ステップＳ２６６）。
【０１６７】
ステップＳ２６３乃至ステップＳ２６５で夫々示した処理動作の繰り返しにおいて、移行クエリとして、第２のサーバ計算機７において処理が実行されているクエリの中で、移行時間が最も短いクエリQ5が、移行クエリとして選択されることになる。その結果、第１のサーバ計算機５におけるCPU使用率（%）が「80%」で変らず、第２のサーバ計算機７におけるCPU使用率（%）が「45%」になり、第３のサーバ計算機（図示しない）におけるCPU使用率（%）が「65%」になるので、第３のサーバ計算機（図示しない）におけるCPU使用率（%）が第２のサーバ計算機７におけるCPU使用率（%）を超えることとなる。そのため、図１８で示した一連の処理動作は終了する。
【０１６８】
図１乃至図１８において説明した内容は、クエリの移行方式をウォームアップ方式に限定したものであった。しかし、既に説明した内容から明らかなように、クエリの移行方式には、ウォームアップ方式に加えて、コピー方式という移行方式も存在する。クエリの移行方式としてコピー方式を採用すると、クエリの処理自体に遅延が発生するが、クエリによっては、ウォームアップ方式ではなく、コピー方式を用いてクエリの移行処理を実行することにより、移行時間を大幅に短縮することができる。そのため、クエリの処理自体に遅延が生じても、移行時間の短いコピー方式にて、クエリの移行を行う場合も想定され得る。
【０１６９】
そこで、個々のクエリ毎に移行方式を選択すると共に、選択された移行方式において移行時間の短いクエリを更に選択して、クエリを移行する手法が有効になってくる。
【０１７０】
図１９は、本発明の他の実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図である。
【０１７１】
本発明の他の実施形態に係るストリームデータ処理システムは、図１９と図１とを比較対照して明らかなように、サーバ計算機（第１のサーバ計算機５、及び第２のサーバ計算機７）の主記憶装置３１に搭載されているエージェント処理プログラム２７１に、ユーザ事情設定部２７３で示される処理機能と、データ保存状態収集部２７５で示される処理機能と、を新たに追加した点において、図１で示した本発明の一実施形態に係るストリームデータ処理システムと構成が相違する。
上記に加えて、運用管理用計算機９の主記憶装置８１に搭載されている運用管理プログラム２７７に、移行方式決定部２７９で示される処理機能を、新たに追加した点においても、本発明の他の実施形態に係るストリームデータ処理システムは、図１で示した本発明の一実施形態に係るストリームデータ処理システムと構成が相違する。
【０１７２】
なお、上記以外の構成については、図１で示したストリームデータ処理システムと構成が同一であるので、図１９において、図１に示した物と同一物には同一符号を付してそれらの詳細な説明を省略する。
【０１７３】
図１９において、データ保存状態収集部２７５は、ウィンドウの状態の監視、即ち、本実施形態では、ウィンドウに保存されている演算対象データのデータ量の監視を行う処理機能を有する。ユーザ事情設定部２７３は、ユーザが、スケールアウト処理に関係する諸設定を行えるようにするための機能を有する。本実施形態では、ユーザ事情設定部２７３は、コピー方式を用いたスケールアウト処理によってクエリ自体の処理に生じる遅延時間として、ユーザが許容することができる時間を、各々のクエリ毎に設定するに際して使用される。以後、クエリ自体の処理に生じる遅延において、ユーザが遅延を許容することができる時間を、「遅延許容時間」と表記することもある。移行方式決定部２７９は、クエリの移行方式を決定するための機能を有する。本実施形態では、図２２で示すコスト表２８５を参照して、各々のクエリ毎に適したクエリの移行方式を選択する処理を行う。
【０１７４】
図２０は、図１９に記載のエージェント処理プログラム２７１に含まれるクエリ状態表２８１の構成の一例を示した図である。
【０１７５】
図２０において、クエリ状態表２８１は、図５に示したクエリ状態表４３と略同様に、クエリID記録欄２８７、CPU使用率（%）記録欄２８９、ウィンドウのデータ範囲記録欄２９５、及びデータ入力頻度（個／秒）記録欄２９７を含むのに加えて、更に、ウィンドウ内のデータ量（MB）記録欄２９１、運用ネットワーク帯域（MB/秒）記録欄２９３、及び遅延許容時間（秒）記録欄２９９をも含む。クエリID記録欄２８７の内容は、図５のクエリID記録欄１２７のそれと、CPU使用率（%）記録欄２８９の内容は、図５のCPU使用率（%）記録欄１２９のそれと、ウィンドウのデータ範囲記録欄２９５は、図５のウィンドウサイズ記録欄１３１のそれと、データ入力頻度（個／秒）記録欄２９７は、図５のデータ入力頻度（個／秒）記録欄１３３のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
【０１７６】
ウィンドウ内のデータ量（MB）記録欄２９１には、各々のクエリが有するウィンドウ内に格納されているデータ（ストリームデータ）の量が、MB単位で格納される。クエリID「Q1」と同列のウィンドウ内のデータ量（MB）記録欄２９１には、ウィンドウ内のデータ量（MB）として、「20」が、また、クエリID「Q2」と同列のウィンドウ内のデータ量（MB）記録欄２９１には、ウィンドウ内のデータ量（MB）として、「10」が、夫々格納されている。更に、クエリID「Q2」と同列のウィンドウ内のデータ量（MB）記録欄２９１には、ウィンドウ内のデータ量（MB）として、「30」が、格納されている。
【０１７７】
運用ネットワーク帯域（MB/秒）記録欄２９３に格納される運用ネットワーク帯域（MB/秒）とは、移行元のサーバ計算機と、移行先のサーバ計算機との間での、ウィンドウデータをコピーする処理能力の指標となるもので、移行元のサーバ計算機と移行先のサーバ計算機との間を接続するネットワーク（即ち、運用ネットワーク）における単位時間当たりのデータ伝送量のことを指す。本実施形態では、運用ネットワーク帯域（MB/秒）記録欄２９３に、運用ネットワーク帯域（MB/秒）として、「2.5」が、格納されている。遅延許容時間（秒）記録欄２９９には、スケールアウト処理に関連してユーザが設定可能な指標（情報）としての、遅延許容時間（秒）が格納される。本実施形態では、クエリID「Q1」と同列の遅延許容時間（秒）記録欄２９９には、遅延許容時間（秒）として、「1」が、また、クエリID「Q2」と同列の遅延許容時間（秒）記録欄２９９には、遅延許容時間（秒）として、「10」が、更に、クエリID「Q3」と同列の遅延許容時間（秒）記録欄２９９には、遅延許容時間（秒）として、「5」が、夫々格納されている。
【０１７８】
図２１は、図１９に記載の運用管理プログラム２７７に含まれるサーバ状態表２８３の構成の一例を示した図である。
【０１７９】
図２１において、サーバ状態表２８３は、図６に示したサーバ状態表９３と略同様に、サーバID記録欄３０１、クエリID記録欄３０３、CPU使用率（%）記録欄３０５、ウィンドウのデータ範囲記録欄３１１、及びデータ入力頻度（個／秒）記録欄３１３を含むのに加えて、更に、ウィンドウ内のデータ量（MB）記録欄３０７、運用ネットワーク帯域（MB/秒）記録欄３０９、及び遅延許容時間（秒）記録欄３１５をも含む。サーバID記録欄３０１の内容は、図６のサーバID記録欄１３５のそれと、クエリID記録欄３０３の内容は、図６のクエリID記録欄１３７のそれと、CPU使用率（%）記録欄３０５の内容は、図６のCPU使用率（%）記録欄１３９のそれと、ウィンドウのデータ範囲記録欄３１１は、図６のウィンドウサイズ記録欄１４１のそれと、データ入力頻度（個／秒）記録欄３１３は、図６のデータ入力頻度（個／秒）記録欄１４３のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
【０１８０】
また、ウィンドウ内のデータ量（MB）記録欄３０７の内容は、図２０のウィンドウ内のデータ量（MB）記録欄２９１のそれと、運用ネットワーク帯域（MB/秒）記録欄３０９の内容は、図２０の運用ネットワーク帯域（MB/秒）記録欄２９３のそれと、遅延許容時間（秒）記録欄３１５の内容は、図２０の遅延許容時間（秒）記録欄２９９のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
【０１８１】
なお、図２１で示したサーバ状態表２８３は、図６で示したサーバ状態表９３におけると同様に、運用管理プログラム２７７が、エージェント処理プログラム２７１から収集したクエリ状態表２８１を基に作成したものである。
【０１８２】
図２２は、図１９に記載の運用管理プログラム２７７に含まれるコスト表２８５の構成の一例を示した図である。
【０１８３】
図２２において、コスト表２８５は、図７に示したコスト表９７と略同様に、サーバID記録欄３１７、クエリID記録欄３１９、及びCPU使用率（%）記録欄３２１を含むのに加えて、更に、ウォームアップ方式での移行時間（見込み）記録欄３２５と、コピー方式での移行時間（見込み）記録欄３２７とに分割されている移行時間（見込み）記録欄３２３、及び遅延許容時間（秒）記録欄３２９をも含む。サーバID記録欄３１７の内容は、図７のサーバID記録欄１４５のそれと、クエリID記録欄３１９の内容は、図７のクエリID記録欄１４７のそれと、CPU使用率（%）記録欄３２１の内容は、図７のCPU使用率（%）記録欄１４９のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。また、遅延許容時間（秒）記録欄３２９の内容は、図２１の遅延許容時間（秒）記録欄２１５のそれと、ウォームアップ方式での移行時間（見込み）記録欄３２５の内容は、図７の移行時間（見込み）記録欄１５１のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
【０１８４】
クエリID「Q1」と同列のコピー方式での移行時間（見込み）記録欄３２７には、移行時間（見込み）として、「8秒」が、クエリID「Q2」と同列のコピー方式での移行時間（見込み）記録欄３２７には、移行時間（見込み）として、「4秒」が、クエリID「Q3」と同列のコピー方式での移行時間（見込み）記録欄３２７には、移行時間（見込み）として、「12秒」が、夫々格納されている。
【０１８５】
以下の説明は、上記ストリームデータ処理システムにおいて、ストリームデータ処理プログラム４１が動作している第１のサーバ計算機５を（クエリの）移行元のサーバ計算機とし、上記ストリームデータ処理プログラム４１とは別のストリームデータ処理プログラム４１が動作ずることになる第２のサーバ計算機７を、（クエリの）移行先のサーバ計算機として新たに該システムに追加された状態を前提としたスケールアウト処理に関するものである。
【０１８６】
まず、スケールアウト処理が行われる前の、上記ストリームデータ処理システムの状態について説明する。
【０１８７】
移行元のサーバ計算機である第１のサーバ計算機５は、IPアドレスとして、「１９２．１６８．０．２」を、移行先のサーバ計算機である第２のサーバ計算機７は、IPアドレスとして、「１９２．１６８．０．３」を、夫々有する。また、ストリーム転送用計算機３の主記憶装置１７に搭載されているストリーム転送プログラム２３は、例えば、図２で示したようなストリーム転送表２９を含んでいるものとする。移行元のサーバ計算機である第１のサーバ計算機５においては、ストリームデータ処理プログラム４１が、３個のクエリ（Q1、Q2、Q3）に係わる処理を実行しており、該ストリームデータ処理プログラム４１は、例えば、図４で示したクエリ管理表５７を含んでいる。
【０１８８】
次に、新たなサーバ計算機として、第２のサーバ計算機７を、上記ストリームデータ処理システムに追加した場合のスケールアウト処理の手順について説明する。
【０１８９】
ユーザが、上記ストリームデータ処理システムにおいてスケールアウト処理を開始するに際し、運用管理用計算機９の入力装置８３を介して、まず、スケールアウト処理開始の命令を入力すると共に、移行元のサーバ計算機として第１のサーバ計算機５を、移行先のサーバ計算機として、新たに追加されることになる第２のサーバ計算機７を夫々指定する。ここで、スケールアウト処理は、全てのクエリに係わる情報を収集し、収集した情報から（クエリを移行するのに必要な）コストを算出し、算出したコストを基に、各々のクエリ毎に適した移行方式を選択すると共に、更に、移行時間が短く、且つ、サーバ負荷が均等になるようなクエリを選択して、該選択したクエリを、選択した移行方式にて移行させるという処理流れで実行される。
【０１９０】
図２３は、本発明の他の実施形態に係るスケールアウト処理の手順の一例を示すフローチャートである。
【０１９１】
図２３において、まず、運用管理プログラム２７７が、移行元のエージェント処理プログラム２７１に含まれるクエリ状態表２８１を収集する。本実施形態では、移行元のサーバ計算機として、第１のサーバ計算機５が指定されるため、第１のサーバ計算機５において動作しているストリームデータ処理プログラム４１を監視しているエージェント処理プログラム２７１に含まれるクエリ状態表２８１が収集される（ステップＳ３４１）。次に、収集されたクエリ状態表２８１中の情報から、サーバ状態表２８３が作成される。本実施形態では、収集されたクエリ状態表２８１に対し、第１のサーバ計算機５の識別子（ID）である「A」が、サーバ状態表２８３におけるサーバID記録欄３０１（図２１にて示した）に格納される（ステップＳ３４２）。
【０１９２】
上記のような処理動作を経てサーバ状態表２８３の作成が完了すると、各々のクエリ毎に、各移行方式にてクエリを移行させた場合のコストを算出する処理が行われる。本実施形態では、ステップＳ３４２で作成されたサーバ状態表２８３を用いて、上述したウォームアップ方式による移行コストの算出処理（ステップＳ３４３）、及びコピー方式による移行コストの算出処理（ステップＳ３４４）が、夫々実行される。ここで、ステップＳ３４４で行われるコピー方式による移行コストの算出処理とは、コピー方式を用いてクエリの移行を行う際に、必要になるコストを各々のクエリ毎に算出する処理のことを指す。本実施形態では、クエリの移行コストとして、クエリの移行処理に必要になる見込み移行時間が用いられる。
【０１９３】
上記各々の方式（即ち、ウォームアップ方式、及びコピー方式）による移行コストの算出処理が行われた結果として、図２２で示したコスト表２８５が作成される。次に、各々のクエリ毎に、ウォームアップ方式により該クエリを移行するか、コピー方式により該クエリを移行するかを選択する処理、即ち、移行方式選択処理を実行する（ステップＳ３４５）。ここで、ステップＳ３４５で行われる各々のクエリ毎の移行方式選択処理とは、各々のクエリ毎に、ウォームアップ方式により移行させるか、コピー方式により移行させるかを選択するための処理であり、該選択処理において、個々のクエリの特性に適した移行方式が選択される。次に、移行クエリの選択処理が実行される。この移行クエリの選択処理においては、各々のクエリにおいて選択された移行方式に係わる移行時間を見込み移行時間として、図１０において示したような移行クエリの選択処理が実行される。本実施形態では、クエリQ2、クエリQ3が、移行クエリとして選択される（ステップＳ３４６）。
上記クエリ選択処理（移行クエリ選択処理）が完了すると、最後に、ウォームアップ方式、又はコピー方式によるクエリ移行処理が実行される。即ち、上記クエリ選択処理において選択された全てのクエリの何れかについて、ウォームアップ方式によるクエリ移行処理が、また、上記以外のクエリについて、コピー方式によるクエリ移行処理が、夫々実行される（ステップＳ３４７、Ｓ３４８、Ｓ３４９）。
【０１９４】
以上で、本発明の他の実施形態に係るストリームデータ処理システムにおけるスケールアウト作業、即ち、各々のクエリにおける移行方式の選択処理と、移行すべきクエリの選択処理との双方を実行するスケールアウト処理が完了し、移行元のストリームデータ処理プログラム４１においては、クエリQ1に係わる処理動作が実行され、移行先のストリームデータ処理プログラム４１においては、クエリQ2、及びクエリQ3に係わる処理動作が夫々実行されることになる。
【０１９５】
図２４は、コピー方式におけるコスト算出処理での処理手順の一例を示すフローチャートである。
【０１９６】
図２４で示すコピー方式におけるコスト算出処理は、移行すべきクエリとして選択された全てのクエリに対して実行される。まず、任意の１個のクエリに対し、コピー方式によるコスト算出処理が開始される（ステップＳ３５１）。即ち、運用管理プログラム２７７は、図２１で示したサーバ状態表２８３のウィンドウ内のデータ量（MB）記録欄３０７の値を、運用ネットワークの帯域（MB/秒）記録欄３０９の値で除算することにより、コピー方式による該クエリの移行時間（見込み）を算出し（ステップＳ３５２）、該算出した移行時間（見込み）を、図２２で示したコスト表２８５に反映させる処理を行う（ステップＳ３５３）。ステップＳ３５２、及びステップＳ３５３で夫々示した処理動作が全てのクエリに対して実行されたことを確認した時点で（ステップＳ３５４）、図２４で示したコピー方式によるコスト算出処理に係わる一連の処理動作が終了する。
【０１９７】
図２５は、本発明の他の実施形態に係る各々のクエリに係わる移行方式選択処理の処理手順の一例を示すフローチャートである。
【０１９８】
図２５で示す移行方式選択処理の処理手順では、各々のクエリに対してコスト表２８５に格納されている諸情報を基に、各々のクエリの移行に際して各方式（ウォームアップ方式、及びコピー方式）を採用した場合における移行時間の比較が行われる（ステップＳ３６１）。即ち、まず、ウォームアップ方式を採用した場合の移行時間と、コピー方式を採用した場合の移行時間とが比較され（ステップＳ３６２）、該比較の結果、ウォームアップ方式による移行時間が、コピー方式による移行時間と同一か、若しくは短かった場合には、移行方式としてウォームアップ方式が選択される（ステップＳ３６４）。一方、上記比較の結果、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短ければ、例えば、図２２で示したコスト表２８５の遅延許容時間（秒）記録欄３２９に格納されている遅延許容時間と、上記コピー方式による移行時間とが比較される（ステップＳ３６３）。
【０１９９】
この比較の結果、遅延許容時間の方が、コピー方式による移行時間よりも短かった場合には、移行方式として、ウォームアップ方式が選択され（ステップＳ３６４）、コピー方式による移行時間が、遅延時間と同一か、若しくは短かった場合には、移行方式として、コピー方式が選択される（ステップＳ３６５）。コピー方式によりクエリの移行を行っている間は、該クエリに係わる処理を停止させる必要があるので、ステップＳ３６３において、コピー方式によるクエリの見込み移行時間と遅延許容時間とを比較することで、ユーザが、クエリに係わる処理の実行が遅延するのを許容できるか否か判定している。
【０２００】
本実施形態では、クエリQ1については、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短いが、コピー方式による移行時間が、遅延許容時間を超えているため、ウォームアップ方式が選択される。また、クエリQ2については、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短く、且つ、遅延許容時間よりも短いため、コピー方式が選択され、更に、クエリQ3については、ウォームアップ方式による移行時間の方が、コピー方式による移行時間よりも短いために、ウォームアップ方式が選択されることになる。
【０２０１】
図２６は、本発明の他の実施形態に係る移行すべきクエリを、選択された移行方式により移行するに際しての処理手順の一例を示すフローチャートである。
【０２０２】
図２６において、まず、選択されたクエリの移行方式が、ウォームアップ方式か、コピー方式かをチェックする（ステップＳ３７１）、該チェックの結果、ウォームアップ方式が、クエリの移行方式として選択されたと判断すれば、ウォームアップ方式により該クエリの移行処理が実行され（ステップＳ３７２）、一方、該チェックの結果、コピー方式が、クエリの移行方式として選択されたと判断すれば、コピー方式により該クエリの移行処理が実行される（ステップＳ３７３）。本実施形態では、クエリQ2がコピー方式により移行され、クエリQ3がウォームアップ方式により移行されることになる。
【０２０３】
図２７は、コピー方式によるクエリの移行処理の処理手順の一例を示すフローチャートである。
【０２０４】
上記コピー方式によるクエリの移行処理とは、新たに追加されたサーバ計算機（即ち、第２のサーバ計算機７）において動作することになるストリームデータ処理プログラム４１に、ウィンドウデータをコピーする作業を実施して、移行の対象となるクエリを移行させる処理のことを指す。
【０２０５】
図２７において、運用管理プログラム２７７は、まず、移行すべきクエリを登録すべき旨のコマンド（移行クエリ登録コマンド）を、移行先のエージェント処理プログラム２７１へ送信する（ステップＳ３８１）。このコマンドを受信すると、移行先のエージェント処理プログラム２７１は、移行させるべきクエリの登録を行うと共に、運用管理プログラム２７７に対し、移行すべきクエリの登録が完了したことを示す通知、即ち、クエリ登録完了通知を送信する。該クエリ登録完了通知を受信すると、運用管理プログラム２７７は、（ストリーム転送用計算機３の）ストリーム転送プログラム２３に対し、上記移行すべきクエリの転送先削除命令を送信する（ステップＳ３８２）。
【０２０６】
この転送先削除命令を受信すると、ストリーム転送プログラム２３は、上記移行すべきクエリが処理対象にしているストリームIDを有するストリームデータ１５を、移行元のサーバ計算機（第１のサーバ計算機５）に転送しないようにする処理を行うと共に、運用管理プログラム２７７に対し、該移行すべきクエリの転送先削除通知を送信する。本実施形態では、ストリーム転送プログラム２３は、ストリーム転送表２９における転送先のIPアドレス記録欄１１３（図２で示した）から、移行元のストリームデータ処理プログラム４１が動作する第１のサーバ計算機５のIPアドレスを削除することになる。上記転送先削除通知を受信すると、運用管理プログラム２７７は、ウィンドウコピーコマンドを、移行元のエージェント処理プログラム２７１へ送信する。ここで、ウィンドウコピーコマンドとは、移行元のエ−ジェント処理プログラム２７１が監視している（移行元の）ストリームデータ処理プログラム４１において実行されている移行すべきクエリのウィンドウデータを、移行元のエ−ジェント処理プログラム２７１により、新たに追加されたサーバ計算機（第２のサーバ計算機７）において動作することになるストリームデータ処理プログラム４１へとコピーするためのコマンドである（ステップＳ３８３）。
【０２０７】
移行元のエージェント処理プログラム２７１によるウィンドウデータのコピーが完了すると、移行元のエージェント処理プログラム２７１は、運用管理プログラム２７７に対し、ウィンドウデータのコピーが完了したことを示す通知（ウィンドウデータコピー完了通知）を送信する。このウィンドウデータコピー完了通知を受信すると、運用管理プログラム２７７は、ストリーム転送プログラム２３に対し、転送先追加命令を送信する（ステップＳ３８４）。この転送先追加命令に基づき、ストリーム転送プログラム２３は、移行されたクエリが処理対象としているストリームデータ１５の転送先として、移行先のストリームデータ処理プログラム４１（第２のサーバ計算機７）を追加して、運用管理プログラム２７７に対し、移行されたクエリの転送先追加通知を送信する。これにより、運用管理プログラム２７７は、該転送先追加通知を受信することとなる（ステップＳ３８５）。
【０２０８】
以上で、コピー方式によるクエリの移行処理が完了することになる。
【０２０９】
以上、本発明の好適な実施形態、及びその変形例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態や変形例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０２１０】
【図１】本発明の一実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図。
【図２】図１に記載したストリーム転送プログラムに含まれるストリーム転送表の構成の一例を示した図。
【図３】スタンフォード大学ストリームシステムにおけるクエリの記述例を示した図。
【図４】図１に記載したストリームデータ処理プログラム（クエリリポジトリ）に含まれるクエリ管理表の構成の一例を示した図。
【図５】図１に記載したエージェント処理プログラムに含まれるクエリ状態表の構成の一例を示した図。
【図６】図１に記載した運用管理プログラムに含まれるサーバ状態表の構成の一例を示した図。
【図７】図１に記載した運用管理プログラムに含まれるコスト表の構成の一例を示した図。
【図８】本発明の一実施形態に係るスケールアウト処理の手順の一例を示すフローチャート。
【図９】ウォームアップ方式におけるコスト算出処理での処理手順の一例を示すフローチャート。
【図１０】本発明の一実施形態に係る移行クエリ選択処理での処理手順の一例を示すフローチャート。
【図１１】本発明の一実施形態に係るウォームアップ方式による移行クエリ選択処理での処理手順の一例を示すフローチャート。
【図１２】本発明の一実施形態に係るウィンドウデータ一致後のクエリ削除処理の処理動作の一例を示すフローチャート。
【図１３】本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウトの対象であるサーバ計算機が複数台存在する場合におけるストリーム転送プログラムに含まれるストリーム転送表の内容を示した図。
【図１４】本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理を実現するために既存のサーバ計算機（第１のサーバ計算機）に対し、新たに追加されたサーバ計算機（第２のサーバ計算機）のエージェント処理プログラムに含まれるクエリ状態表の内容を示した図。
【図１５】スケールアウト処理の対象になるストリームデータ処理プログラム（移行元のストリームデータ処理プログラム）が複数存在する場合における運用管理プログラムに含まれるサーバ状態表の構成の一例を示した図。
【図１６】スケールアウト処理の対象になるストリームデータ処理プログラム（移行元のストリームデータ処理プログラム）が複数存在する場合における運用管理プログラムに含まれるコスト表の構成の一例を示した図。
【図１７】本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラムが複数存在する場合におけるスケールアウトの処理手順の一例を示すフローチャート。
【図１８】図１７で示したスケールアウトの処理手順におけるストリームデータ処理プログラム、及びクエリ選択処理の処理手順の一例を示すフローチャート。
【図１９】本発明の他の実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図。
【図２０】図１９に記載したエージェント処理プログラムに含まれるクエリ状態表の構成の一例を示した図。
【図２１】図１９に記載した運用管理プログラムに含まれるサーバ状態表の構成の一例を示した図。
【図２２】図１９に記載した運用管理プログラムに含まれるコスト表の構成の一例を示した図。
【図２３】本発明の他の実施形態に係るスケールアウト処理の手順の一例を示すフローチャート。
【図２４】コピー方式におけるコスト算出処理での処理手順の一例を示すフローチャート。
【図２５】本発明の他の実施形態に係る各々のクエリに係わる移行方式選択処理の処理手順の一例を示すフローチャート。
【図２６】本発明の他の実施形態に係る移行すべきクエリを、選択された移行方式により移行するに際しての処理手順の一例を示すフローチャート。
【図２７】コピー方式によるクエリの移行処理の処理手順の一例を示すフローチャート。
【符号の説明】
【０２１１】
１  ストリームデータソース
３  ストリーム転送用計算機
５  第１のサーバ計算機
７  第２のサーバ計算機
９  運用管理用計算機
１１  業務用ネットワーク
１３  運用ネットワーク
１７、３１、８１  主記憶装置
１９、３５、８５  中央演算処理装置
２１、３７、８７  通信インタフェース
２３  ストリーム転送プログラム
３３  補助記憶装置
３９  エージェント処理プログラム
４１  ストリームデータ処理プログラム
８３  入力装置
８９  運用管理プログラム
【図１】
2010140357.tif 000003
【図２】
2010140357.tif 000004
【図３】
2010140357.tif 000005
【図４】
2010140357.tif 000006
【図５】
2010140357.tif 000007
【図６】
2010140357.tif 000008
【図７】
2010140357.tif 000009
【図８】
2010140357.tif 000010
【図９】
2010140357.tif 000011
【図１０】
2010140357.tif 000012
【図１１】
2010140357.tif 000013
【図１２】
2010140357.tif 000014
【図１３】
2010140357.tif 000015
【図１４】
2010140357.tif 000016
【図１５】
2010140357.tif 000017
【図１６】
2010140357.tif 000018
【図１７】
2010140357.tif 000019
【図１８】
2010140357.tif 000020
【図１９】
2010140357.tif 000021
【図２０】
2010140357.tif 000022
【図２１】
2010140357.tif 000023
【図２２】
2010140357.tif 000024
【図２３】
2010140357.tif 000025
【図２４】
2010140357.tif 000026
【図２５】
2010140357.tif 000027
【図２６】
2010140357.tif 000028
【図２７】
2010140357.tif 000029