以下、本発明の実施の形態を、図面により詳細に説明する。
図1は、本発明の一実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図である。
上記ストリームデータ処理システムは、図1に示すように、ストリームデータソース1と、ストリーム転送用計算機3と、第1のサーバ計算機5と、第2のサーバ計算機7と、運用管理用計算機9と、を含む。そして、ストリームデータソース1とストリーム転送用計算機3との間、ストリーム転送用計算機3と第1のサーバ計算機5との間、及びストリーム転送用計算機3と第2のサーバ計算機7との間は、何れも業務用ネットワーク11を通じて接続されるように構成されている。また、ストリーム転送用計算機3と運用管理用計算機9との間、第1のサーバ計算機5と運用管理用計算機9との間、及び第2のサーバ計算機7と運用管理用計算機9との間は、何れも運用ネットワーク13を通じて接続されるように構成されている。
ストリームデータソース1は、例えば、各種センサ、及びICタグ等から取得した情報や株価情報等の時々刻々と到来するデータであるストリームデータ15を、業務用ネットワーク11を通じてストリーム転送用計算機3側へと送信する機能を有する。本実施形態では、ストリームデータソース1から送信されるストリームデータ15には、ストリームIDと称される文字列が付与されている。該文字列(ストリームID)は、該ストリームデータ15が処理されるべきクエリを識別するためのものであり、ストリームIDは、予めユーザ等によって設定されるべきものである。なお、本実施形態では、取得された情報、即ち、ストリームデータに対し、ストリームIDとして、S1、S2、及びS3の何れかが割り当てられる。
ストリーム転送用計算機3は、主記憶装置17と、中央演算処理装置19と、通信インタフェース21と、を備える。主記憶装置17は、中央演算処理装置19の制御下でプログラムを読み込むための装置であり、例えば、RAM(Random Access Memory)が用いられる。主記憶装置17には、ストリーム転送プログラム23が搭載されている。ストリーム転送プログラム23は、例えば、ストリーム転送用計算機3に入力されたストリームデータ15を転送先(サーバ計算機)に送信するためのプログラムであって、データ転送部25と、転送先管理部27と、ストリーム転送表29と、を含む。ストリーム転送プログラム23が備える諸機能の詳細については、後述する。
中央演算処理装置19は、例えば、CPU(Central Processing Unit)を含み、主記憶装置17に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置19は、図1に示すように、主記憶装置17に読み込まれたストリーム転送プログラム23を実行することになる。
通信インタフェース21は、ストリーム転送用計算機3が、業務用ネットワーク11を通じてストリームデータソース1との間、第1のサーバ計算機5との間、第2のサーバ計算機7との間で、夫々データ通信(情報通信)を行うに際し利用される。通信インタフェース21は、ストリーム転送用計算機3が、運用ネットワーク13を通じて運用管理用計算機9との間でデータ通信(情報通信)を行うに際しても利用される。第1のサーバ計算機5、又は第2のサーバ計算機7との間のデータ通信においては、ストリーム転送用計算機3からストリームデータ15が第1のサーバ計算機5、又は第2のサーバ計算機7へ夫々送信される。
また、運用管理用計算機9との間のデータ通信においては、コマンド77が運用管理用計算機9からストリーム転送用計算機3へ送信される。該コマンド77には、転送先(サーバ計算機)を追加させるためのコマンドや、転送先(サーバ計算機)を削除させるためのコマンド等が含まれる。運用管理用計算機9との間のデータ通信においては、上記コマンド77を受信したことで、ストリーム転送用計算機3が該コマンド77に基づく一連の処理を完了したことを示すコマンド完了通知79が、ストリーム転送用計算機3から運用管理用計算機9へ送信される。コマンド77、及びコマンド完了通知79については、後に詳述する。
本実施形態では、通信インタフェース21として、イーサネット(登録商標)が採用されているが、イーサネット(登録商標)以外にも、FDDI(光ファイバのインタフェース)や、シリアル(インタフェースの1種)や、USB(インタフェースの1種)等を利用することも可能である。
第1のサーバ計算機5は、主記憶装置31と、補助記憶装置33と、中央演算処理装置35と、通信インタフェース37と、を備える。主記憶装置31は、上述したストリーム転送用計算機3の主記憶装置17と同様に、中央演算処理装置35の制御下でプログラムを読み込むための装置であり、例えば、RAMが用いられる。主記憶装置31には、エージェント処理プログラム39と、ストリームデータ処理プログラム41と、が搭載されている。
エージェント処理プログラム39は、第1のサーバ計算機5におけるクエリの実行状態の監視、及びスケールアウト時に発生するクエリの登録処理、又はクエリの削除処理を行う機能を有するプログラムである。更に詳述すれば、エージェント処理プログラム39は、ストリームデータ処理プログラム41において実行されているクエリ構造の収集、及び解析や、各々のクエリのリソース(第1のサーバ計算機5におけるハードウェアの)使用量データの収集を行う。上記に加えて、移行クエリ(例えば、第1のサーバ計算機5から第2のサーバ計算機7へ移行させるクエリ)の登録コマンドをストリームデータ処理プログラム41に発行する処理や、後に詳述する指定条件後のクエリの削除処理をも行う。エージェント処理プログラム39は、クエリ状態表43と、クエリ収集部45と、計算機状態収集部47と、クエリ処理状態収集部49と、クエリ移行実行部51と、を含む。エージェント処理プログラム39が備える諸機能の詳細については、後述する。
ストリームデータ処理プログラム41は、第1のサーバ計算機5が、通信インタフェース37、及び業務用ネットワーク11を通じてストリーム転送用計算機3から入力したストリームデータ15に対するクエリ処理を実行して、該実行結果を出力する機能を有するプログラムである。ストリームデータ処理プログラム41は、データ通信部53と、クエリ処理部55と、クエリ管理表57と、クエリ管理部59と、命令受付部61と、を含む。クエリ処理部55は、入力部63と、出力部65と、演算対象データ保存部67と、演算処理実行部69と、を含む。クエリ管理部59は、クエリ解析部71と、クエリ最適化部73と、クエリ実行形式生成部75と、を含む。ストリームデータ処理プログラム41が備える諸機能の詳細については、後述する。
補助記憶装置33は、中央演算処理装置35の制御下で、主記憶装置31に保存することができないような大きな情報量を有するデータやプログラムを保存するための装置であり、例えば、HDD(Hard Disk Drive)が用いられる。本実施形態では、補助記憶装置33は、エージェント処理プログラム39に含まれるクエリ状態表43、及びストリームデータ処理プログラム41に含まれるクエリ管理表57が、主記憶装置31に保存できない場合の格納先になる。
中央演算処理装置35も、ストリーム転送用計算機3における中央演算処理装置19と同様に、例えば、CPUを含み、主記憶装置31に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置35は、図1に示すように、主記憶装置31に読み込まれたエージェント処理プログラム39、及びストリームデータ処理プログラム41を実行する。また、必要に応じて(エージェント処理プログラム39に含まれる)クエリ状態表43、及び(ストリームデータ処理プログラム41に含まれる)クエリ管理表57等の補助記憶装置33へ格納するための処理をも実行する。
通信インタフェース37は、第1のサーバ計算機5が、業務用ネットワーク11を通じてストリーム転送用計算機3との間、第2のサーバ計算機7との間でデータ通信(情報通信)を行うに際し利用される。通信インタフェース37は、また、第1のサーバ計算機5が、運用ネットワーク13を通じて運用管理用計算機9との間でデータ通信(情報通信)を行うに際し利用される。ストリーム転送用計算機3との間のデータ通信においては、ストリーム転送用計算機3からストリームデータ15が第1のサーバ計算機5へ送信される。
また、運用管理用計算機9との間のデータ通信においては、コマンド77´が運用管理用計算機9から第1のサーバ計算機5へ送信される。該コマンド77´には、エージェント処理プログラム39に対し、移行クエリを登録させるためのコマンドや、ウインドウデータ一致後のクエリを削除させるためのコマンド等が含まれる。運用管理用計算機9との間のデータ通信においては、上記コマンド77´を受信したことで、第1のサーバ計算機5が該コマンド77´に基づく一連の処理を完了したことを示すコマンド完了通知79が、第1のサーバ計算機5から運用管理用計算機9へ送信される。コマンド77´、及びコマンド完了通知79´についても、後に詳述する。
本実施形態では、通信インタフェース37として、ストリーム転送用計算機3における通信インタフェース21と同様に、イーサネット(登録商標)が採用されているが、イーサネット(登録商標)以外にも、FDDIや、シリアルや、USB等を利用することも可能である。
第2のサーバ計算機7も、第1のサーバ計算機5と同様に、主記憶装置、補助記憶装置、中央演算処理装置、及び通信インタフェースを備えるが、図示の都合上、それらの記載を省略する。なお、図1では、図示と説明の都合上、サーバ計算機については、第1のサーバ計算機5、及び第2のサーバ計算機7の2台しか記載していないが、実際のストリームデータ処理システムでは、サーバ計算機は3台以上設置されている場合もあり得る。
運用管理用計算機9は、主記憶装置81と、入力装置83と、中央演算処理装置85と、通信インタフェース87と、を備える。主記憶装置81は、上述したストリーム転送用計算機3の主記憶装置17や、第1のサーバ計算機5の主記憶装置31と同様に、中央演算処理装置85の制御下でプログラムを読み込むための装置であり、例えば、RAMが用いられる。主記憶装置81には、運用管理プログラム89が搭載されている。
運用管理プログラム89は、スケールアウト処理が行われるに際して、現に稼働中のサーバ計算機(本実施形態では、第1のサーバ計算機5)が処理を実行中の複数のクエリの一部を、新たに追加されるサーバ計算機(本実施形態では、第2のサーバ計算機7等)へ移行させる処理を実行するための機能を有するプログラムである。運用管理プログラム89は、クエリ状態表収集部91と、サーバ状態表93と、コスト算出部95と、コスト表97と、移行クエリ決定部99と、コマンド送信部101と、を含む。運用管理プログラム89が備える諸機能の詳細については、後述する。
入力装置83は、例えば、移行元の計算機、即ち、複数のクエリを現に処理している1台以上のサーバ計算機を指定するための操作キーや、移行先の計算機、即ち、上記複数のクエリのうちの何れかを処理することになる新たに追加されるサーバ計算機を指定するための操作キーや、スケールアウト処理開始の命令を運用管理用計算機9に入力するための操作キー等を備える。ユーザ(オペレータ)が、上述した操作キーを操作することにより、移行元の計算機指定情報や、移行先の計算機指定情報や、スケールアウト処理開始の命令が、入力装置83を通じて中央演算処理装置85に与えられることになる。
通信インタフェース87は、運用管理用計算機9が運用ネットワーク13を通じて第1のサーバ計算機5との間、第2のサーバ計算機7との間でデータ通信(情報通信)を行うに際し利用される。第1のサーバ計算機5との間、又は第2のサーバ計算機7との間でのデータ通信においては、コマンド77´が運用管理用計算機9から第1のサーバ計算機5、又は第2のサーバ計算機7へ送信されると共に、上記コマンド77´に対応するコマンド完了通知79´が、第1のサーバ計算機5、又は第2のサーバ計算機7から運用管理用計算機9へ送信される。
中央演算処理装置85も、ストリーム転送用計算機3における中央演算処理装置19や、第1のサーバ計算機5における中央演算処理装置35と同様に、例えば、CPUを含み、主記憶装置81に読み込まれた各種プログラムを実行するための装置である。本実施形態では、中央演算処理装置85は、図1に示すように、主記憶装置81に読み込まれた運用管理プログラム89を実行する。
通信インタフェース87は、また、運用管理用計算機9が、運用ネットワーク13を通じてストリーム転送用計算機3との間でデータ通信(情報通信)を行うに際しても利用される。ストリーム転送用計算機3との間でのデータ通信においては、コマンド77が運用管理用計算機9からストリーム転送用計算機3へ送信されると共に、上記コマンド77に対応するコマンド完了通知79が、ストリーム転送用計算機3から運用管理用計算機9へ送信される。コマンド77、77´、及びコマンド完了通知79、79´の詳細については、ここでの記載を省略する。
次に、ストリーム転送用計算機3の主記憶装置17に搭載されているストリーム転送プログラム23の諸機能について、詳述する。
ストリーム転送表29は、上述したストリームIDの情報を元にして、ストリームデータソース1から業務用ネットワーク11を通じてストリーム転送用計算機3に送信されるストリームデータ15を、処理を行うべき第1のサーバ計算機5に転送するに際して使用されるものである。ストリーム転送表29は、ストリームID記録欄、及びストリームデータの転送先を示す転送先のサーバ計算機(図1に示した例では、第1のサーバ計算機5、及び第2のサーバ計算機7)の宛先情報記録欄を含む。ストリーム転送表29の構成については、図2で詳述する。
データ転送部25は、ストリーム転送用計算機3が、ストリームデータソース1から業務用ネットワーク11を通じて受信したストリームデータ15を、通信インタフェース21、及び業務用ネットワーク11を通じてその転送先である第1のサーバ計算機5(又は、第2のサーバ計算機7)へ送信するために機能する。即ち、まず、ストリームデータソース1から受信したストリームデータ15からストリームIDを取得すると共に、該取得したストリームIDに対応する上記宛先情報を、ストリーム転送表29を参照することによってストリーム転送表29から抽出する。そして、上記抽出した宛先情報に係わるサーバ計算機(図1に示した例では、第1のサーバ計算機5、又は第2のサーバ計算機7の何れか)に対し、通信インタフェース21、及び業務用ネットワーク11を通じて上記ストリームデータ15を送信(転送)する。
転送先管理部27は、ストリーム転送表29に記録されているデータ(情報)を更新するために機能する。即ち、(運用管理用計算機9の主記憶装置81に搭載されている)運用管理プログラム89(のコマンド送信部101)から通信インタフェース87、運用ネットワーク13、及び通信インタフェース21を通じて送信される転送先追加命令に基づき、指定されたストリームID、及び転送先であるサーバ計算機(図1に示した例では、第1のサーバ計算機5、又は第2のサーバ計算機7)に係わる宛先情報を、ストリーム転送表29に追加記録する。一方、運用管理プログラム89からストリーム転送用計算機3に対し、転送先削除命令が送信された場合には、該転送先削除命令に基づき、指定されたストリームID、及び転送先であるサーバ計算機(図1に示した例では、第1のサーバ計算機5、又は第2のサーバ計算機7)に係わる宛先情報を、ストリーム転送表29から削除する。
転送先追加命令、及び転送先削除命令の詳細については、後述する。
次に、第1のサーバ計算機5の主記憶装置31に搭載されているエージェント処理プログラム39、及びストリームデータ処理プログラム41の諸機能について、詳述する。
エージェント処理プログラム39において、クエリ状態表43は、該エージェント処理プログラム39の監視対象であるストリームデータ処理プログラム41(該エージェント処理プログラム39と共に主記憶装置31に搭載されている)において現に実行されているクエリの移行コストを産出するのに必要な表である。クエリ状態表43は、クエリの識別子記録欄と、サーバ計算機(第1のサーバ計算機5)のリソース使用量記録欄、クエリのウィンドウサイズ記録欄、及びクエリの処理量(CPU、即ち、中央演算処理装置35の使用率)記録欄を含む。
ここで、移行コストとは、スケールアウトを行うのに必要な処理量のことを指す。また、サーバ計算機におけるリソースとは、該サーバ計算機が有する中央演算処理装置、及び補助記憶装置、使用するイーサネットやシリアルやUSB等を含む入/出力インタフェースの帯域のような装置の能力のことを指す。また、リソース使用量とは、エージェント処理プログラム39の監視対象であるストリームデータ処理プログラム41が動作している第1のサーバ計算機5のリソース使用量のことを指す。本実施形態では、リソース使用量として、「CPU使用率」を用いる。更に、クエリの処理量とは、サーバ計算機(第1のサーバ計算機5、又は第2のサーバ計算機7)が該クエリを実行することにより処理したデータ数や、該サーバ計算機から出力されたデータ数のことを指す。なお、クエリ状態表43の構成については、図5で詳述する。
クエリ収集部45は、(エージェント処理プログラム39の監視対象である)上記ストリームデータ処理プログラム41に登録されているクエリ文字列を上記ストリームデータ処理プログラム41から収集する。そして、該クエリ文字列より、該クエリの移行コストを算出するのに必要なウィンドウサイズを抽出するように機能する。即ち、クエリ収集部45は、ストリームデータ処理プログラム41に含まれるクエリ管理表57からクエリIDとクエリ文字列とを収集して解析することにより、該クエリのウィンドウサイズを取得する。そして、上記収集したクエリIDについてはクエリ状態表43のクエリの識別子記録欄に、該クエリのウィンドウサイズを、クエリ状態表43のウィンドウサイズ記録欄に、夫々格納する。
計算機状態収集部47は、(エージェント処理プログラム39の監視対象である上記ストリームデータ処理プログラム41が動作している)第1のサーバ計算機5のリソースの状態を示すデータとして、CPU使用率に係わるデータを収集し、該収集したデータを、クエリ状態表43のリソース使用量記録欄、即ち、CPU使用率記録欄に格納する。
クエリ処理状態収集部49は、第1のサーバ計算機5におけるクエリの処理量に係わるデータを取得し、該クエリの移行コストを算出するのに必要な、第1のサーバ計算機5へのデータ入力頻度を算出するように機能する。本実施形態では、クエリ処理状態収集部49は、該クエリに基づき第1のサーバ計算機5において処理されたストリームデータ15の数を収集して、単位時間当たりの第1のサーバ計算機5への入力データ数を算出すると共に、該算出した入力データ数を、クエリ状態表43のクエリの処理量記録欄、即ち、データ入力頻度記録欄に格納する。
クエリ移行実行部51は、スケールアウトの際に発生するクエリの(第1のサーバ計算機5から第2のサーバ計算機7への)移行処理を行うように機能する。即ち、クエリ移行実行部51は、追加されたサーバ計算機である第2のサーバ計算機7において動作しているストリームデータ処理プログラム(41)に対し、第1のサーバ計算機5から移行すべきクエリを登録するためにクエリ登録コマンドを発行する処理を行う。これと共に、クエリ移行実行部51は、該クエリ移行元のサーバ計算機である第1のサーバ計算機5において後に詳述するウィンドウデータ一致後のクエリ削除処理をも実行する。
ストリームデータ処理プログラム41において、データ通信部53は、通信インタフェース37、及び業務用ネットワーク11を通じてストリーム転送用計算機3から第1のサーバ計算機5へ送信(転送)されるストリームデータ15を受信して、該受信したストリームデータ15を、クエリ処理部55に出力する機能を有する。
クエリ処理部55は、登録されたクエリに応じて、ストリームデータ処理を実行するように機能する。クエリ処理部55において、入力部63は、データ通信部53から出力されるストリームデータ15を入力し、該入力したストリームデータ15を、演算処理実行部69に出力する。演算対象データ保存部67は、演算処理実行部69から出力される、演算処理実行部69の演算処理対象であるストリームデータ15を保存すると共に、69からのデータ読出要求に応じて保存されているストリームデータ15を演算処理実行部69へ出力する。
演算処理実行部69は、入力部63から与えられる上記ストリームデータ15を読み込むと共に、例えば、上記入力部63を通じてクエリ管理表57を参照することにより、クエリ管理表57から該読み込んだストリームデータ15を処理対象とするクエリを取得する。演算処理実行部69におけるストリームデータ処理では、スライディングウィンドウにより過去に(第1のサーバ計算機5に)入力されたストリームデータ15を利用してクエリが実行される。そのため、演算処理実行部69は、演算処理対象にするストリームデータ15を、演算対象データ保存部67へ格納する。
クエリには、時間で処理対象とするストリームデータ15の範囲を指定するクエリと、処理対象となるストリームデータの個数で処理対象とするストリームデータ15の範囲を指定するクエリとが存在する。以後、クエリ記述言語によって記述された文字列を、「クエリ文字列」と表記し、時間で処理対象とするストリームデータ15の範囲を指定するクエリを、「時間ベースのクエリ」と表記し、処理対象となるストリームデータの個数で処理対象とするストリームデータ15の範囲を指定するクエリを、「個数ベースのクエリ」と表記する。
演算処理実行部69において実行されるクエリが、時間ベースのクエリである場合には、演算処理実行部69は、入力部63を通じてデータ通信部53から入力したストリームデータ15を、演算対象データ保存部67へ保存する。これと共に、演算対象データ保存部67に保存されているストリームデータ15のうちで保存時間を経過したストリームデータ15については、演算対象データ保存部67から削除する。
上記クエリが、個数ベースのクエリである場合にも、演算処理実行部69は、入力したストリームデータ15を、演算対象データ保存部67へ保存する。しかし、演算対象データ保存部67に保存されているストリームデータの個数が、所定の保存個数を超えた場合には、例えば、演算対象データ保存部67における保存時間の長いストリームデータ15から順に、演算対象データ保存部67より削除するような処理を実行することになる。
出力部65は、演算処理実行部による該クエリの実行結果を、データ通信部53を通じて、例えばエージェント処理プログラム39、或いは通信インタフェース37を通じて外部機器へ出力する。
なお、以下の記述では、演算対象データ保存部67を、「ウィンドウ」と表記し、演算対象データ保存部67に保存(格納)されているデータ(ストリームデータ15)を、「ウィンドウデータ」と表記し、演算対象データ保存部67におけるストリームデータ15の保存時間、又は保存個数を、「ウィンドウサイズ」と表記することもある。
クエリ管理表57は、第1のサーバ計算機5が、例えばストリーム転送用計算機3から受信したストリームデータ15を処理対象とするクエリを特定するために使用されるもので、クエリ管理表57は、クエリの識別子記録欄、クエリ文字列記録欄、クエリの実行形式格納先記録欄、及びクエリの実行対象のストリームID記録欄を含む。ここで、クエリの識別子とは、登録されたクエリを区別するために用いられる文字列のことを指し、以下では、該文字列を「クエリID」と表記することもある。また、クエリの実行対象のストリームIDとは、該クエリが処理対象とするストリームデータ15を取得するに際して用いられるものである。
クエリ管理部59は、ストリームデータ処理プログラム41において実行されるクエリの登録、及び削除を行う機能と、クエリ文字列(クエリの内容をユーザが理解可能なように、例えばソースコード等により表現されている)からクエリの実行形式(例えば、機械語、マシンが読んで分かる表現形式)を生成する機能と、を有する。クエリ管理部59において、上記クエリ文字列から該クエリの実行形式を生成する手法については、本願出願においては、特に限定するものではなく、任意の手法を用いて差し支えない。一例としては、特許文献2に記述されている最適化方法も採用され得る。
クエリ管理部59において、クエリ解析部71は、上述したクエリ文字列を解析するように機能する。即ち、クエリ解析部71は、クエリの登録に際して命令受付部61から与えられるクエリ文字列を解析して、その解析結果を、クエリ最適化部73に与える。クエリ最適化部73は、クエリ解析部71から与えられるクエリの解析結果を受けて、該解析結果からより効率の良いクエリの実行形式を選択する(即ち、最適化処理を行う)ように機能する。クエリ実行形式生成部75は、クエリ最適化部73において選択されたクエリの実行形式を生成する。
命令受付部61は、エージェント処理プログラム39から与えられる命令を受付けるべく機能する。エージェント処理プログラム39から命令受付部61に与えられる命令としては、例えば、クエリ登録命令や、クエリ削除命令が挙げられる。クエリ登録命令とは、ストリームデータ処理プログラム41に入力するデータ(ストリームデータ15)を、第1のサーバ計算機5に順次処理させるためのクエリを、クエリ管理部59に登録させるための命令である。クエリ登録命令には、クエリ記述言語により記述された文字列が含まれる。なお、本実施形態においては、クエリ記述言語として、CQL(Continuous Query Language)が用いられる。
次に、運用管理用計算機9の主記憶装置81に搭載されている運用管理プログラム89の諸機能について、詳述する。
運用管理プログラム89において、クエリ状態表収集部91は、全てのクエリの状態(即ち、各々のクエリ状態表(43)の掲載内容)を収集するように機能する。即ち、クエリ状態表収集部91は、各サーバ計算機(図1で示した例では、第1のサーバ計算機5と、第2のサーバ計算機7)上のエージェント処理プログラム39の管理下にあるクエリ状態表43を収集して、サーバ状態表93を作成する。サーバ状態表93は、上記のように、クエリ状態表収集部91により作成されるもので、全てのクエリの状態を管理するために使用される。サーバ状態表93は、サーバ計算機(図1で示した例では、第1のサーバ計算機5と、第2のサーバ計算機7)の識別子記録欄、クエリの識別子記録欄、ストリームデータ処理プログラム41が動作しているサーバ計算機(例えば、第1のサーバ計算機5)のリソース使用量記録欄、ウィンドウのサイズ記録欄、及びクエリの処理量記録欄を含む。
コスト算出部95は、各々のクエリ(例えば、第1のサーバ計算機5において処理が実行されるべき全てのクエリ)を、新たに追加されるサーバ計算機(図1で示した例では、第2のサーバ計算機7)に移行するに際して必要になるコストを、各々のクエリ毎に算出するために機能する。即ち、コスト算出部95は、上記サーバ状態表93を基にコスト算出処理を行い、各々のクエリを現に稼働中のサーバ計算機(図1で示した例では、第1のサーバ計算機5)から新たに追加されたサーバ計算機(図1で示した例では、第2のサーバ計算機7)に移行させるに際して必要とするであろう時間、即ち、見込み移行時間を算出する。そして、該算出した見込み移行時間を、コスト表97に反映させる。コスト算出処理については、後に詳述する。コスト表97は、上記各々のクエリによるサーバ計算機(第1のサーバ計算機5、第2のサーバ計算機7)のリソース使用量、及び現に稼働中のサーバ計算機(図1で示した例では、第1のサーバ計算機5)から新たに追加されたサーバ計算機(図1で示した例では、第2のサーバ計算機7)に移行するに際して要するコスト(即ち、移行コスト)を管理するために使用される。
移行クエリ決定部99は、スケールアウトの際に、現に稼働中のサーバ計算機(図1で示した例では、第1のサーバ計算機5)において処理が実行されるべき全てのクエリの中から、新たに追加されたサーバ計算機(図1で示した例では、第2のサーバ計算機7)に移行させるクエリを決定(選択)するために機能する。即ち、移行クエリ決定部99は、上記コスト表97に含まれる情報を基に、移行クエリ選択処理を実行することにより、移行クエリを決定する。移行クエリ選択処理については、後に詳述する。
コマンド送信部101は、スケールアウトを実行するために、ストリーム転送用計算機3の主記憶装置17に搭載されているストリーム転送プログラム23、及びサーバ計算機(第1のサーバ計算機5、第2のサーバ計算機7)の主記憶装置31に搭載されているエージェント処理プログラム39に、処理を依頼するための命令を送信するように機能する。即ち、コマンド送信部101は、ストリーム転送プログラム23に対しては転送先追加命令、及び転送先削除命令を、エージェント処理プログラム39に対しては、移行クエリを登録するコマンド、及びウィンドウデータ一致後のクエリ削除コマンドを、夫々送信する。
なお、図1で示した例では、ストリーム転送プログラム23は、ストリーム転送用計算機3の主記憶装置17に、エージェント処理プログラム39とストリームデータ処理プログラム41とは、第1のサーバ計算機5の主記憶装置31に、運用管理プログラム89は、運用管理用計算機9の主記憶装置81に、夫々搭載されているものとして説明した。しかし、上記各プログラム23、39、41、89を、1台の計算機の主記憶装置に搭載するものとしても差し支えない。また、図1で示した例では、エージェント処理プログラム39と、ストリームデータ処理プログラム41とを搭載したサーバ計算機を、(第1のサーバ計算機5、第2のサーバ計算機7のように)複数台備えてクエリの処理の実行に対処することとしている。しかし、エージェント処理プログラム39と、ストリームデータ処理プログラム41とを搭載したサーバ計算機については、1台だけを備えることとし、複数のプロセスにてクエリの処理の実行に対処することとしても差し支えない。
更に、図1で示した例では、ストリームデータソース1とストリーム転送用計算機3との間、及びストリーム転送用計算機3と第1のサーバ計算機5、第2のサーバ計算機7との間については、業務用ネットワーク11を通じて接続されている。また、運用管理用計算機9とストリーム転送用計算機5、第1のサーバ計算機5、第2のサーバ計算機7との間については、運用ネットワーク13を通じて接続されている。しかし、業務用ネットワーク11、又は運用ネットッワーク13の何れか一方のみを用いて上記各機器同士を接続するようにしても差し支えない。
図2は、図1に記載のストリーム転送プログラム23に含まれるストリーム転送表29の構成の一例を示した図である。
上記ストリーム転送表29は、図2に示すように、ストリームID記録欄111、及び転送先のIPアドレス記録欄113を含む。ストリームID記録欄111には、ストリームIDに係わる情報が格納される。転送先のIPアドレス記録欄113には、ストリームデータ処理プログラム41が搭載されている第1のサーバ計算機5のIPアドレスが格納される。図2に示した例では、ストリームID記録欄111には、ストリームIDとして、「S1、S2、S3」が記録されている。また、転送先のIPアドレス記録欄113には、IPアドレスとして、「192.168.0.2」が記録されている。上述した夫々のストリームIDを有する各々のストリームデータが、ストリーム転送用計算機3から上記IPアドレスを有するサーバ計算機、即ち、第1のサーバ計算機5に転送される。
図3は、スタンフォード大学ストリームシステムにおけるクエリの記述例を示した図である。
図3に示すクエリの記述例において、時間ベースのクエリの例である文字列115は、過去30秒間に入力された、ストリームID「S1」のストリームデータ15が持つ値dataの平均値を算出するクエリを表す文字列である。また、個数ベースのクエリの例である文字列117は、過去において5個入力された、ストリームID「S1」のストリームデータ15が持つ値dataの平均値を算出するクエリを表す文字列である。図3に記述された文字列115、117は、何れもCQLによって記述された文字列の例である。
図4は、図1に記載のストリームデータ処理プログラム41に含まれるクエリ管理表57の構成の一例を示した図である。
上記クエリ管理表57は、図4に示すように、クエリID記録欄119、クエリ文字列記録欄121、クエリの実行形式格納先記録欄123、及び実行対象ストリームID記録欄125を含む。クエリID記録欄119には、例えば、登録済みクエリのIDである、「Q1、Q2、及びQ3」が、格納される。クエリID「Q1」と同列のクエリ文字列記録欄121には、該クエリID「Q1」に対応するクエリ文字列が、クエリID「Q1」と同列のクエリの実行形式格納先記録欄123には、該クエリID「Q1」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置31のアドレスが格納されている。更に、クエリID「Q1」と同列の実行対象ストリームID記録欄125には、該クエリID「Q1」に対応するクエリの実行対象ストリームのID(識別子)として、「S1」が格納されている。
また、クエリID「Q2」と同列のクエリ文字列記録欄121には、該クエリID「Q2」に対応するクエリ文字列が、クエリID「Q2」と同列のクエリの実行形式格納先記録欄123には、該クエリID「Q2」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置31のアドレスが格納されている。更に、クエリID「Q2」と同列の実行対象ストリームID記録欄125には、該クエリID「Q2」に対応するクエリの実行対象ストリームのID(識別子)として、「S2」が格納されている。
更に、クエリID「Q3」と同列のクエリ文字列記録欄121には、該クエリID「Q3」に対応するクエリ文字列が、クエリID「Q3」と同列のクエリの実行形式格納先記録欄123には、該クエリID「Q3」に対応するクエリの実行形式として、上述したクエリの実行形式が格納されている主記憶装置31のアドレスが格納されている。更に、クエリID「Q3」と同列の実行対象ストリームID記録欄125には、該クエリID「Q3」に対応するクエリの実行対象ストリームのID(識別子)として、「S3」が格納されている。
図5は、図1に記載のエージェント処理プログラム39に含まれるクエリ状態表43の構成の一例を示した図である。
上記クエリ状態表43は、図5に示すように、クエリID記録欄127、CPU使用率(%)記録欄129、ウィンドウサイズ記録欄131、及びデータ入力頻度(個/秒)133を含む。クエリID記録欄127には、個々のクエリの識別子、即ち、クエリのIDである、「Q1、Q2、及びQ3」が、格納される。クエリID「Q1」と同列のCPU使用率(%)記録欄129には、リソースの使用量として、監視対象であるストリームデータ処理プログラム41が動作している第1のサーバ計算機5のCPU使用率(%)、即ち、該クエリID「Q1」に対応するCPU使用率(%)「50」が、格納されている。クエリID「Q1」と同列のウィンドウサイズ記録欄131には、該クエリID「Q1」に対応するウィンドウサイズ131として、「1分」が格納されている。更に、クエリID「Q1」と同列のデータ入力頻度(個/秒)記録欄133には、クエリの処理量、即ち、該クエリID「Q1」に対応するデータ入力頻度(個/秒)として、「10」が格納されている。ここで、データ入力頻度とは、クエリの処理対象とするストリームデータ15が、単位時間当たりに第1のサーバ計算機5に入力された個数を表す。クエリID「Q1」に係わる各欄に格納されている諸情報は、クエリIDを持つクエリが、第1のサーバ計算機5のCPUを50%使用しており、ウィンドウサイズが1分で、1秒間に10個のストリームデータが第1のサーバ計算機5に入力されていることを表している。
また、クエリID「Q2」と同列のCPU使用率(%)記録欄129には、該クエリID「Q2」に対応するCPU使用率(%)「30」が、クエリID「Q2」と同列のウィンドウサイズ記録欄131には、該クエリID「Q2」に対応するウィンドウサイズ131として、「10秒」が格納されている。更に、クエリID「Q2」と同列のデータ入力頻度(個/秒)記録欄133には、該クエリID「Q2」に対応するデータ入力頻度(個/秒)として、「100」が格納されている。
更に、クエリID「Q3」と同列のCPU使用率(%)記録欄129には、該クエリID「Q3」に対応するCPU使用率(%)「20」が、クエリID「Q3」と同列のウィンドウサイズ記録欄131には、該クエリID「Q3」に対応するウィンドウサイズ131として、「100個」が格納されている。更に、クエリID「Q3」と同列のデータ入力頻度(個/秒)記録欄133には、該クエリID「Q3」に対応するデータ入力頻度(個/秒)として、「50」が格納されている。
図6は、図1に記載の運用管理プログラム89に含まれるサーバ状態表93の構成の一例を示した図である。
上記サーバ状態表93は、(運用管理プログラム89の)クエリ状態表収集部91が、エージェント処理プログラム39から収集したクエリ状態表43を基に作成されるもので、図6に示すように、サーバID記録欄135、クエリID記録欄137、CPU使用率(%)記録欄139、ウィンドウサイズ記録欄141、及びデータ入力頻度(個/秒)143を含む。
サーバID記録欄135には、サーバ計算機(図1で示した例では、第1のサーバ計算機5、及び第2のサーバ計算機7)の識別子として、各々のサーバ計算機(図1で示した例では、第1のサーバ計算機5、及び第2のサーバ計算機7)毎に一意に割り当てられた識別子(即ち、ID)(図6で示した例では、「A」)が、格納される。なお、クエリID記録欄137に格納されている情報は、図5で示したクエリID記録欄127に格納されている情報と、CPU使用率(%)記録欄139に格納されている情報は、図5で示したCPU使用率(%)記録欄129に格納されている情報と、ウィンドウサイズ記録欄141に格納されている情報は、図5で示したウィンドウサイズ記録欄131に格納されている情報と、夫々内容が同一であるので、ここでの重ねての説明は省略する。
図7は、図1に記載の運用管理プログラム89に含まれるコスト表97の構成の一例を示した図である。
上記コスト表97は、図7に示すように、サーバID記録欄145、クエリID記録欄147、CPU使用率(%)記録欄149、及び移行時間(見込み)記録欄151を含む。
サーバID記録欄145に格納されている情報は、図6で示したサーバID記録欄135に格納されている情報と、クエリID記録欄147に格納されている情報は、図6で示したクエリID記録欄137に格納されている情報と、CPU使用率(%)記録欄149に格納されている情報は、図6で示したCPU使用率(%)記録欄139に格納されている情報と、夫々内容が同一であるので、ここでの重ねての説明は省略する。移行時間(見込み)記録欄151には、クエリの移行コストとして、サーバ状態表93を基に、コスト算出部95により算出されたクエリの、現在稼働中のサーバ計算機(図1で示した例では、第1のサーバ計算機5)から新たに追加されたサーバ計算機(図1で示した例では、第2のサーバ計算機7)への移行時間(見込み)が、格納される。図7で示した例では、クエリIDが「Q1」であるクエリの上記移行時間(見込み)は、「60秒」であり、クエリIDが「Q2」であるクエリの上記移行時間(見込み)は、「10秒」であり、クエリIDが「Q3」であるクエリの上記移行時間(見込み)は、「2秒」である。
上述した図1に記載のシステム構成において、図2で示したストリーム転送表29を用いてストリーム転送用計算機3が、図4で示したクエリ管理表57、及び図5で示したクエリ状態表43を用いて第1のサーバ計算機5が、図6で示したサーバ状態表93、及び図7で示したコスト表97を用いて運用管理用計算機9が、夫々既に稼働している。この状態において、新たに第2のサーバ計算機7が、クエリの処理を実行するために稼働するサーバ計算機として追加された場合のスケールアウト処理の動作手順を以下に説明する。
まず、スケールアウトが行われる前の、ストリームデータ処理システムの状態について説明する。
現在稼働中の第1のサーバ計算機5は、IPアドレス192.168.0.2を、第2のサーバ計算機7は、IPアドレス192.168.0.3を、夫々有する。ストリーム転送プログラム23は、図2で示したストリーム転送表29を保持し、ストリームデータソース1から受信したストリームデータ15に含まれているストリームIDに基づき、該ストリームデータ15を、対応するサーバ計算機、即ち、第1のサーバ計算機5へ転送する。既述の内容から明らかなように、図2で示したストリーム転送表29では、3種類のストリームID(S1、S2、S3)を有するストリームデータ15が転送されてくるであろうことを想定している。
第1のサーバ計算機5において、ストリームデータ処理プログラム41は、3個のクエリ(Q1、Q2、Q3)に係わる処理を実行しており、図4で示したクエリ管理表57を含む。また、エージェント処理プログラム39は、ストリームデータ処理プログラム41の状態(動作状態)を監視しており、図5で示したクエリ状態表43を含む。
次に、第1のサーバ計算機5のみがクエリに係わる処理を実行すべく稼働しているストリームデータ処理システムにおいて、第2のサーバ計算機7が、新たなサーバ計算機として追加された際のスケールアウト処理の手順について、以下に説明する。
まず、ユーザ(オペレータ)が、運用管理用計算機9の入力装置83を操作することにより、クエリの移行元として1台以上のサーバ計算機(図1で示した例では、第1のサーバ計算機5)を、クエリの移行先として1台以上のサーバ計算機(図1で示した例では、第2のサ−バ計算機7)を、夫々指定すると共に、スケールアウト処理開始命令をも入力する。本実施形態では、上記のようにユーザ(オペレータ)が、入力装置83を通じて運用管理用計算機9にスケールアウト処理開始命令を入力する際に、移行元の計算機として第1のサーバ計算機5を、移行先の計算機として第2のサーバ計算機7を、夫々指定する。しかし、ユーザがスケールアウト処理開始命令を入力するのではなく、移行元のサーバ計算機、及び移行先のサーバ計算機を自動的に検出し、スケールアウト処理を開始するように、上記ストリームデータ処理システムを設定することも可能である。
以後、移行元のサーバ計算機である第1のサーバ計算機5において動作しているエージェント処理プログラム39、及びストリームデータ処理プログラム41を、夫々「移行元のエージェント処理プログラム39」、及び「移行元のストリームデータ処理プログラム41」と表記する。また、移行先のサーバ計算機である第2のサーバ計算機7において動作するエージェント処理プログラム39、及びストリームデータ処理プログラム41を、夫々「移行先のエージェント処理プログラム39」、及び「移行先のストリームデータ処理プログラム41」と表記する。
次に、第1のサーバ計算機5のみがクエリに係わる処理を実行すべく稼働しているストリームデータ処理システムにおいて、第2のサーバ計算機7が、新たなサーバ計算機として追加された際のスケールアウトについて、以下に説明する。
スケールアウト処理は、全てのクエリに係わる情報を収集し、収集した情報の中からコストを算出し、該算出したコストを基に、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間が短く、且つ、サーバ計算機負荷が均等になるようなクエリを単数、又は複数選択する。そして、選択したクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行する、という処理の流れで実行される。上記選択されたクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行するに際し、移行の処理に遅延を発生させないようにするため、既述のコピー方式ではなく、後に詳述するウォームアップ方式によるクエリの移行処理が行われる。
次に、上述したスケールアウト処理の具体的な手順について説明する。
図8は、本発明の一実施形態に係るスケールアウト処理の手順の一例を示すフローチャートである。
図8において、まず、運用管理プログラム9が、移行元のエージェント処理プログラム39に含まれるクエリ状態表43を収集する。本実施形態では、移行元のサーバ計算機として、第1のサーバ計算機5が指定されるため、第1のサーバ計算機5において動作しているストリームデータ処理プログラム41を監視しているエージェント処理プログラム39に含まれるクエリ状態表43が収集される(ステップS161)。次に、収集されたクエリ状態表43中の情報から、サーバ状態表93が作成される。本実施形態では、収集されたクエリ状態表43に対し、第1のサーバ計算機5の識別子(ID)である「A」が、サーバ状態表93におけるサーバID記録欄135(図6にて示した)に格納される(ステップS162)。
上記のような処理動作を経てサーバ状態表93の作成が完了すると、後に詳述するコスト算出処理が実行される(ステップS163)。該コスト算出処理が完了すると、後に詳述するクエリ選択処理が実行される。クエリ選択処理の詳細については、後述するが、該クエリ選択処理によりクエリIDが「Q2」、及び「Q3」に係わるクエリが、夫々移行クエリとして選択される(ステップS164)。上記クエリ選択処理が完了すると、最後に、後述するウォームアップ方式によるクエリ移行処理が実行される。即ち、上記クエリ選択処理において選択された全てのクエリについて、ウォームアップ方式によるクエリ移行処理が実行される。本実施形態では、クエリ選択処理によって選択されたクエリQ2、及びクエリQ3が、第1のサーバ計算機5から第2のサーバ計算機7へと移行される(ステップS165、S166、S167)。
以上で、本発明の一実施形態に係るストリームデータ処理システムにおけるスケールアウト作業が完了し、移行元のストリームデータ処理プログラム41においては、クエリQ1に係わる処理動作が実行され、移行先のストリームデータ処理プログラム41においては、クエリQ2、及びクエリQ3に係わる処理動作が夫々実行される。
図9は、ウォームアップ方式におけるコスト算出処理での処理手順の一例を示すフローチャートである。
図8のステップS163において実行されたウォームアップ方式のコスト算出処理とは、ウォームアップ方式を用いて移行対象となるクエリを、移行元のサーバ計算機から移行先のサーバ計算機へ移行させる際に、個々のクエリ毎に移行に必要となるコストを算出するための処理のことである。図9に示したフローチャートにおいては、スケールアウトに際しての移行コストとして、(移行元のサーバ計算機から移行先のサーバ計算機への)クエリの移行に必要となる移行時間(見込み)が用いられる。
図9において、コスト算出処理は、サーバ状態表93に格納されている全てのクエリに対して実行される(ステップS171)。即ち、まず、対象になるクエリのウィンドウの種類をチェックすることにより、該クエリのウィンドウが時間ベースであるか、個数ベースであるかを判断する(ステップS172)。上記チェックの結果、時間ベースであると判断すれば、該クエリの「ウィンドウのデータ範囲」から、該クエリの移行時間を算出する処理を実行し(ステップS175)、次いで、ステップS173で算出した移行時間をコスト表97の移行時間(見込み)記録欄151(図7で示した)に反映(記録)させるための処理を実行する(ステップS175)。
一方、上記チェックの結果、個数ベースであると判断すれば、該クエリの「ウィンドウのデータ範囲/データ入力頻度」から、該クエリの移行時間を算出する処理を実行し(ステップS174)、次いで、ステップS174で算出した移行時間を上記コスト表97の移行時間(見込み)記録欄151に反映(記録)させるための処理を実行する(ステップS175)。そして、ステップS172〜ステップS175で夫々示した処理動作が全てのクエリに関して実行されたことを確認すると(ステップS176)、図9で示した一連の処理動作が終了する。上記処理が終了することにより、図7において既に説明したように、クエリQ1の移行時間が、60秒であり、クエリQ2の移行時間が、10秒であり、クエリQ3の移行時間が、2秒であることが見込まれることになる。
図10は、本発明の一実施形態に係る移行クエリ選択処理での処理手順の一例を示すフローチャートである。
図8のステップS164において実行された移行クエリ選択処理とは、移行元のサーバ計算機(図1で示した例では、第1のサーバ計算機5)から移行先のサーバ計算機(図1で示した例では、第2のサーバ計算機7)への移行を短時間で行うことが可能で、且つ、移行することにより移行元のサーバ計算機におけるリソース使用量の低減に寄与することが可能なクエリを選択するための処理である。
図10において、まず、コスト表97が探索され、現に移行クエリとして選択されていないクエリの中から、移行時間(見込み)が最も短いクエリが移行クエリとして選択される(ステップS181)。次に、ステップS181で移行クエリとして選択されたクエリのCPU使用率を、移行先のサーバ計算機(第2のサーバ計算機7)の合計CPU使用率に加算する処理が実行される。
本実施形態においては、移行先のサーバ計算機(図1で示した例では、第2のサーバ計算機7)は、初期状態が合計CPU使用率「0%」になっており(即ち、移行先のサーバ計算機がストリームデータ処理に使用されていないという意味である)、この状態において、移行されるクエリのCPU使用率が加算されて行く(ステップS182)。
ステップS181、S182において夫々示した処理動作は、移行先のサーバ計算機におけるCPU使用率と、リソース使用量目標値と称される或る閾値との間に、CPU使用率≧リソース使用量目標値という関係が成立する(ステップS183でYES)と判断されるまで、継続される。
本実施形態においては、リソース使用量目標値を50%として、図10で示した移行クエリ選択処理の処理動作が開始される。移行時間の最も短いクエリであるクエリQ2が、移行クエリとして選択されることで、移行元のサーバ計算機である第1のサーバ計算機5における合計CPU使用率は、80%になり、移行先のサーバ計算機である第2のサーバ計算機7における合計CPU使用率は、20%になる。ここで、移行先のサーバ計算機である第2のサーバ計算機7における合計CPU使用率(20%)が、リソース使用量目標値である50%を超えていないため、再度、現に移行クエリとして選択されていないクエリの中から、移行時間(見込み)が最も短いクエリが移行クエリとして選択される。即ち、移行時間がクエリQ2の次に短いクエリQ3が移行クエリとして選択される。その結果、第1のサーバ計算機5における合計CPU使用率、及び第2のサーバ計算機7における合計CPU使用率は、共に50%になる。第2のサーバ計算機7における合計CPU使用率がリソース使用量目標値である50%に達したので、図10で示した移行クエリ選択処理の処理動作が終了することになる。上記処理動作の結果として、第1のサーバ計算機5から第2のサーバ計算機7へ移行されるクエリとして、クエリQ2、及びクエリQ3が選択されたことになる。
図11は、本発明の一実施形態に係るウォームアップ方式による移行クエリ選択処理での処理手順の一例を示すフローチャートである。
図8のステップS166において実行されたウォームアップ方式による移行クエリ選択処理とは、移行すべき同一のクエリであって、移行される前のクエリと、移行された後のクエリとの双方に対し、或る期間、夫々同一のストリームデータを送信することにより、該クエリにおける移行前のウィンドウデータと、移行後のウィンドウデータとを一致させ、然る後に、移行される前のクエリ
係わる処理動作を停止させることにより、クエリを移行させる処理のことである。上述したコピー方式によるクエリの移行処理とは異なり、ウィンドウデータのコピーを行わないため、クエリに係わる処理を遅延させることなく対象となるクエリを移行させることが可能である。
図11において、まず、運用管理プログラム89が、移行先のエージェント処理プログラム39に対し、移行クエリを移行先のストリームデータ処理プログラム41に登録すべき旨のコマンド(以後、該コマンドを「ストリーム移行クエリ登録コマンド」と表記することもある。)77を送信する(ステップS191)。上記ストリーム移行クエリ登録コマンド77を受信すると、移行先のエージェント処理プログラム39は、移行すべきクエリを、移行先のストリームデータ処理プログラム41に登録するための処理動作を実行する。該処理動作が終了すると、移行先のエージェント処理プログラム39は、移行すべきクエリの、移行先のストリームデータ処理プログラム41への登録が終了したことを示すコマンド完了通知(以後、該完了通知を「移行クエリ登録通知」と表記することもある。)79を、運用管理プログラム89へ送信する。上記移行クエリ登録通知79を受信すると、運用管理プログラム89は、移行すべきクエリの処理対象であるストリームデータ15の転送先(であるサーバ計算機)に、新たに追加されるサーバ計算機(第2のサーバ計算機7)のIPアドレスを追加すべき旨の命令(以後、該命令を「移行クエリの転送先追加命令」と表記することもある。)を、ストリーム転送プログラム23へ送信する(ステップS192)。
上記移行クエリの転送先追加命令を受信すると、ストリーム転送プログラム23は、ストリーム転送表29のストリームID記録欄111に、移行すべきクエリの処理対象であるストリームデータ15のID、即ち、ストリームIDを追加記録する。また、上記ストリーム転送表29の転送先のIPアドレス記録欄113に、新たに追加されるサーバ計算機(第2のサーバ計算機7)のIPアドレスを追加記録する。そして、上記処理が終了すると、ストリーム転送プログラム23は、上記処理が終了した旨を、運用管理プログラム89へ通知する。なお、ストリーム転送表29のストリームID記録欄111への上記ストリームIDの追加記録、及びストリーム転送表29の転送先のIPアドレス記録欄113への上記IPアドレスの追加記録が完了した旨の通知を、以後、「移行クエリの転送先追加通知」と表記することもある。既述の内容から明らかなように、本実施形態では、移行すべきクエリは、クエリQ2、Q3であり、クエリQ2の処理対象である、ストリームID「S2」で示されるストリームデータ15、及びクエリQ3の処理対象である、ストリームID「S3」で示されるストリームデータ15が、ストリーム転送用計算機3から新たに追加されたサーバ計算機である第2のサーバ計算機7に転送されるようにストリーム転送表29が更新される。上記移行クエリの転送先追加通知を受信すると、運用管理プログラム89は、移行元のエージェント処理プログラム39に対し、後に詳述するウィンドウデータ一致後のクエリ削除処理を開始するためのコマンド77´を、送信する。以後、上記ウィンドウデータ一致後のクエリ削除処理を開始するためのコマンドを、「ウィンドウデータ一致後のクエリ削除コマンド」と表記することもある(ステップS193)。
上記削除コマンド77´を受信すると、移行元のエージェント処理プログラム39は、該削除コマンド77´に従い、ウィンドウデータ一致後のクエリ削除処理を行うと共に、該削除処理が完了すると、該削除処理が完了したことを示すコマンド完了通知79´を、運用管理プログラム89へ送信する。以後、上記ウィンドウデータ一致後のクエリ削除が完了したことを示すコマンド完了通知を、「移行クエリ削除通知」と表記することもある。上記移行クエリ削除通知79´を受信すると、運用管理プログラム89は、移行クエリの処理対象であるストリームデータ15の転送先であるサーバ計算機(第1のサーバ計算機5、及び第2のサーバ計算機7)のIPアドレスから、移行元のサーバ計算機(第1のサーバ計算機5)のIPアドレスを削除すべき旨の命令を、ストリーム転送プログラム23へ送信する。以後、移行クエリの処理対象であるストリームデータ15の転送先であるサーバ計算機のIPアドレスから、移行元のサーバ計算機のIPアドレスを削除すべき旨の命令を、「移行クエリの転送先削除命令」と表記することもある(ステップS194)。
次に、ストリーム転送プログラム23は、移行クエリの処理対象であることを示すストリームIDを有するストリームデータ15を、移行元のサーバ計算機(即ち、第1のサーバ計算機5)へ転送されないようにしつつ、上記ストリームデータ15の移行元のサーバ計算機への転送を阻止するための処理が完了した旨を、運用管理プログラム89へ通知する。以後、移行クエリの処理対象であることを示すストリームIDを有するストリームデータ15を移行元のサーバ計算機へ転送しないようにする処理が完了した旨の通知を、「移行クエリの転送先削除通知」と表記することもある。本実施形態では、クエリQ2の処理対象であるストリームデータ15のストリームID「S2」、及びクエリQ3の処理対象であるストリームデータ15のストリームID「S3」と、これらのストリームデータ15の転送先とされている、ストリームデータ処理プログラム41が動作中の第1のサーバ計算機5に係わるIPアドレス「192.168.0.2」とが、削除されることになる。上述した転送先削除の処理が完了すると、ストリーム転送プログラム23は、転送先削除完了通知を運用管理プログラム89へ送信し、運用管理プログラム89が、該転送先削除完了通知を受信する(ステップS195)。以上で、ウォームアップ方式による移行クエリ選択処理に係わる一連の処理動作が終了する。
図12は、本発明の一実施形態に係るウィンドウデータ一致後のクエリ削除処理の処理動作の一例を示すフローチャートである。
図11のステップS193において実行されるウィンドウデータ一致後のクエリ削除処理とは、移行元のエージェント処理プログラム39が、運用管理プログラム89から受信したウィンドウデータ一致後のクエリ削除コマンドに基づいて実行する、移行すべきクエリにおける移行前のウィンドウデータと、移行後のウィンドウデータとが一致した後の該クエリを削除する処理のことである。
図12において、移行元のエージェント処理プログラム39は、まず、削除すべきクエリにおけるウィンドウが、時間ベースのウィンドウであるのか、それとも個数ベースのウィンドウであるのか、ウィンドウの種類をチェックする。これは、削除すべきクエリのウィンドウが、時間ベースのウィンドウであるか、個数ベースのウィンドウであるかによって、ウィンドウデータの一致する条件が異なるためである(ステップS201)。
ステップS201でのチェックの結果、削除すべきクエリのウィンドウが時間ベースのウィンドウであると判断すると、移行元のエージェント処理プログラム39は、該クエリのウィンドウサイズ分の時間が経過した時点で、該クエリの削除処理を実行する。これは、該クエリのウィンドウが時間ベースのウィンドウである場合に、該クエリのウィンドウサイズ分に相当する時間が経過した後に、該クエリ移行前のウィンドウデータと、該クエリ移行後のウィンドウデータとが一致するためである(ステップS202)。ステップS202で示した処理動作が完了すると、移行元のエージェント処理プログラム39は、上記クエリを削除した旨を、運用管理プログラム89に通知し(ステップS204)、図12で示した一連の処理動作が終了する。
一方、ステップS201でのチェックの結果、削除すべきクエリのウィンドウが個数ベースウィンドウであると判断すると、エージェント処理プログラム39は、(第1のサーバ計算機5への)データ(ストリームデータ15)の入力数を監視し、該データ入力数が、該クエリが有するウィンドウサイズのデータ範囲分の個数に達した時点で、該クエリの削除処理を実行する。これは、該クエリのウィンドウが個数ベースのウィンドウである場合に、該クエリのウィンドウのデータ範囲分のストリームデータ15が入力されると、該クエリ移行前のウィンドウデータと、該クエリ移行後のウィンドウデータとが一致するためである(ステップS203)。ステップS203で示した処理動作が完了すると、移行元のエージェント処理プログラム39は、上記クエリを削除した旨を、運用管理プログラム89に通知し(ステップS204)、図12で示した一連の処理動作が終了する。
次に、ストリームデータ処理システムにおいて、スケールアウトの対象であるサーバ計算機(図1で示した例では、第1のサーバ計算機5、及び第2のサーバ計算機7)が複数台存在する場合のスケールアウトの手順について説明する。
図13は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウトの対象であるサーバ計算機が複数台存在する場合におけるストリーム転送プログラムに含まれるストリーム転送表の内容を示した図である。
図13において、ストリーム転送表211は、図2に示したストリーム転送表29と同様に、ストリームID記録欄213、及び転送先ストリームデータ処理プログラム(41)のIPアドレス記録欄215を含む。ストリームID記録欄213には、ストリームIDに係わる情報として、「S1、S2、S3、S4、S5」が記録されている。また、転送先ストリームデータ処理プログラム(41)のIPアドレス記録欄215には、IPアドレスとして、「192.168.0.2と、192.168.0.3」が記録されている。図13で示したストリーム転送表211の内容から明らかなように、ストリームID「S1」を有するストリームデータ15、ストリームID「S2」を有するストリームデータ15、及びストリームID「S3」を有するストリームデータ15が、IPアドレス「192.168.0.2」を有する第1のサーバ計算機5に転送され、また、ストリームID「S4」を有するストリームデータ15、及びストリームID「S5」を有するストリームデータ15が、IPアドレス「192.168.0.3」を有する第2のサーバ計算機7に転送される。
図14は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理を実現するために既存のサーバ計算機(第1のサーバ計算機5)に対し、新たに追加されたサーバ計算機(第2のサーバ計算機7)のエージェント処理プログラム39に含まれるクエリ状態表の内容を示した図である。
図14において、クエリ状態表217は、図5に示したクエリ状態表43と同様に、クエリID記録欄219、CPU使用率(%)記録欄221、ウィンドウのデータ範囲記録欄223、及びデータ入力頻度(個/秒)225を含む。クエリID記録欄219には、個々のクエリのIDである、「Q4、及びQ5」が、格納される。クエリID「Q4」と同列のCPU使用率(%)記録欄221には、リソースの使用量として、監視対象であるストリームデータ処理プログラム41が動作することになる第2のサーバ計算機7のCPU使用率(%)、即ち、該クエリID「Q4」に対応するCPU使用率(%)「45」が、格納されている。クエリID「Q4」と同列のウィンドウのデータ範囲記録欄223には、該クエリID「Q4」に対応するウィンドウのデータ範囲として、「300個」が格納されている。更に、クエリID「Q4」と同列のデータ入力頻度(個/秒)記録欄225には、クエリの処理量、即ち、該クエリID「Q4」に対応するデータ入力頻度(個/秒)として、「1」が格納されている。データ入力頻度の詳細については、既に説明済みであるので、ここでの説明は省略する。
また、クエリID「Q5」と同列のCPU使用率(%)記録欄221には、該クエリID「Q5」に対応するCPU使用率(%)「40」が、クエリID「Q5」と同列のウィンドウのデータ範囲記録欄223には、該クエリID「Q5」に対応するウィンドウのデータ範囲として、「5秒」が格納されている。更に、クエリID「Q5」と同列のデータ入力頻度(個/秒)記録欄225には、該クエリID「Q5」に対応するデータ入力頻度(個/秒)として、「25」が格納されている。
第1のサーバ計算機5は、そのエージェント処理プログラム39が含むクエリ状態表(図5において、符号43で示した)に基づき、3個のクエリQ1、Q2、Q3に夫々係わる処理を実行することとなり、また、第2のサーバ計算機7は、そのエージェント処理プログラム39が含むクエリ状態表(図14において、符号217で示した)に基づき、2個のクエリQ4、Q5に夫々係わる処理を実行することとなる。
図15は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるサーバ計算機、即ち、移行元のサーバ計算機が複数台存在する場合の、運用管理用計算機9が有するサーバ状態表の構成の一例を示した図である。換言すれば、図15は、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム(41)が複数存在する場合における運用管理プログラム89に含まれるサーバ状態表の構成の一例を示した図である。
図15において、サーバ状態表227は、図6に示したサーバ状態表93と略同様に、サーバID記録欄229、クエリID記録欄231、CPU使用率(%)記録欄233、ウィンドウのデータ範囲記録欄235、及びデータ入力頻度(個/秒)237を含む。
サーバID記録欄229には、サーバ計算機の識別子として、第1のサーバ計算機5のサーバID「A」、及び第2のサーバ計算機7のサーバID「B」が、夫々格納されている。サーバID「A」が格納されているサーバID記録欄229に対応するクエリID記録欄231には、個々のクエリの識別子(即ち、クエリID)として、「Q1」、「Q2」、及び「Q3」が夫々格納されている。クエリID「Q1」が格納されているクエリID記録欄231に対応するCPU使用率(%)記録欄233には、CPU使用率として「50」が格納されている。また、クエリID「Q1」が格納されているクエリID記録欄231に対応するウィンドウのデータ範囲記録欄235には、ウィンドウのデータ範囲として「1分」が格納されている。更に、クエリID「Q1」が格納されているクエリID記録欄231に対応するデータ入力頻度(個/秒)記録欄237には、ストリームデータ15の入力頻度範囲として「10」が格納されている。
次に、クエリID「Q2」が格納されているクエリID記録欄231に対応するCPU使用率(%)記録欄233には、CPU使用率として「30」が格納されている。また、クエリID「Q2」が格納されているクエリID記録欄231に対応するウィンドウのデータ範囲記録欄235には、ウィンドウのデータ範囲として「10秒」が格納されている。更に、クエリID「Q2」が格納されているクエリID記録欄231に対応するデータ入力頻度(個/秒)記録欄237には、ストリームデータ15の入力頻度範囲として「100」が格納されている。次に、クエリID「Q3」が格納されているクエリID記録欄231に対応するCPU使用率(%)記録欄233には、CPU使用率として「20」が格納されている。また、クエリID「Q3」が格納されているクエリID記録欄231に対応するウィンドウのデータ範囲記録欄235には、ウィンドウのデータ範囲として「100個」が格納されている。更に、クエリID「Q3」が格納されているクエリID記録欄231に対応するデータ入力頻度(個/秒)記録欄237には、ストリームデータ15の入力頻度範囲として「50」が格納されている。
一方、サーバID「B」が格納されているサーバID記録欄229に対応するクエリID記録欄231には、クエリIDとして、「Q4」、及び「Q5」が夫々格納されている。クエリID「Q4」が格納されているクエリID記録欄231に対応するCPU使用率(%)記録欄233には、CPU使用率として「45」が格納されている。また、クエリID「Q4」が格納されているクエリID記録欄231に対応するウィンドウのデータ範囲記録欄235には、ウィンドウのデータ範囲として「300個」が格納されている。更に、クエリID「Q4」が格納されているクエリID記録欄231に対応するデータ入力頻度(個/秒)記録欄237には、ストリームデータ15の入力頻度範囲として「1」が格納されている。次に、クエリID「Q5」が格納されているクエリID記録欄231に対応するCPU使用率(%)記録欄233には、CPU使用率として「40」が格納されている。また、クエリID「Q5」が格納されているクエリID記録欄231に対応するウィンドウのデータ範囲記録欄235には、ウィンドウのデータ範囲として「5秒」が格納されている。更に、クエリID「Q5」が格納されているクエリID記録欄231に対応するデータ入力頻度(個/秒)記録欄237には、ストリームデータ15の入力頻度範囲として「25」が格納されている。
なお、クエリID記録欄231における「Q1」、「Q2」、及び「Q3」に係わるCPU使用率(%)記録欄233、ウィンドウのデータ範囲記録欄235、及びデータ入力頻度(個/秒)記録欄237に夫々格納されている情報と、図5で示したものとは同一である。また、クエリID記録欄231における「Q4」、及び「Q5」に係わるCPU使用率(%)記録欄233、ウィンドウのデータ範囲記録欄235、及びデータ入力頻度(個/秒)記録欄237に夫々格納されている情報と、図14で示したものとは同一である。よって、上記諸情報についてのここでの重ねての説明は省略する。
図16は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるサーバ計算機、即ち、移行元のサーバ計算機が複数台存在する場合の、運用管理用計算機9が有するコスト表の構成の一例を示した図である。換言すれば、図16は、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム(41)が複数存在する場合における運用管理プログラム89に含まれるコスト表の構成の一例を示した図である。
図16において、コスト表239は、図7に示したコスト表97と略同様に、サーバID記録欄241、クエリID記録欄243、CPU使用率(%)記録欄245、及び移行時間(見込み)記録欄247を含む。
サーバID記録欄241には、サーバ計算機の識別子として、第1のサーバ計算機5のサーバID「A」、及び第2のサーバ計算機7のサーバID「B」が、夫々格納されている。サーバID「A」が格納されているサーバID記録欄241に対応するクエリID記録欄243には、個々のクエリの識別子(即ち、クエリID)として、「Q1」、「Q2」、及び「Q3」が夫々格納されている。クエリID「Q1」が格納されているクエリID記録欄243に対応するCPU使用率(%)記録欄245には、CPU使用率として「50」が格納されている。また、クエリID「Q1」が格納されているクエリID記録欄243に対応する移行時間(見込み)記録欄247には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間(見込み)「60秒」が、格納される。次に、クエリID「Q2」が格納されているクエリID記録欄243に対応するCPU使用率(%)記録欄245には、CPU使用率として「30」が格納されている。また、クエリID「Q2」が格納されているクエリID記録欄243に対応する移行時間(見込み)記録欄247には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間(見込み)「10秒」が、格納される。次に、クエリID「Q3」が格納されているクエリID記録欄243に対応するCPU使用率(%)記録欄245には、CPU使用率として「20」が格納されている。また、クエリID「Q3」が格納されているクエリID記録欄243に対応する移行時間(見込み)記録欄247には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間(見込み)「2秒」が、格納される。
一方、サーバID「B」が格納されているサーバID記録欄241に対応するクエリID記録欄243には、個々のクエリのIDとして、「Q4」、及び「Q5」が夫々格納されている。クエリID「Q4」が格納されているクエリID記録欄243に対応するCPU使用率(%)記録欄245には、CPU使用率として「45」が格納されている。また、クエリID「Q4」が格納されているクエリID記録欄243に対応する移行時間(見込み)記録欄247には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間(見込み)「300秒」が、格納される。次に、クエリID「Q5」が格納されているクエリID記録欄243に対応するCPU使用率(%)記録欄245には、CPU使用率として「40」が格納されている。また、クエリID「Q5」が格納されているクエリID記録欄243に対応する移行時間(見込み)記録欄247には、クエリの移行コストとして、移行元のサーバ計算機から移行先のサーバ計算機へのクエリの移行時間(見込み)「5秒」が、格納される。
以下の説明は、上記ストリームデータ処理システムにおいて、ストリーム転送表として、図13で示したストリーム転送表211が、クエリ状態表として、図14で示したクエリ状態表217が、サーバ状態表として、図15で示したサーバ状態表227が、コスト表として、図16で示したコスト表239が、夫々用いられている場合を前提とする。
ユーザが、上記ストリームデータ処理システムにおいてスケールアウト処理を開始するに際し、運用管理用計算機9の入力装置83を介し、移行元のサーバ計算機として第1のサーバ計算機5、及び第2のサーバ計算機7を指定したとすると、移行先のサーバ計算機として、新たに追加されることになる第3のサーバ計算機(図1では、図示と説明の都合上から記載を省略した。)を指定することになる。換言すれば、上記スケールアウト処理が開始される際に、ユーザが、移行元のストリームデータ処理プログラム(41)として、第1のサーバ計算機5のストリームデータ処理プログラム41、及び第2のサーバ計算機7のストリームデータ処理プログラム41を指定すると、移行先のストリームデータ処理プログラム(41)として、例えば、IPアドレス「192.168.0.4」を有する第3のサーバ計算機(図示しない)のストリームデータ処理プログラムを指定することになる。なお、以下に説明するスケールアウトの処理手順は、算出したコストから移行すべきクエリを選択する前の処理において、移行すべきクエリとして選択されるクエリに係わる処理を現に実行しているストリームデータ処理プログラム(41)を選択するための処理が行われる点で、図8乃至図12で説明したスケールアウトの処理手順と相違する。
図17は、本発明の一実施形態に係るストリームデータ処理システムにおいて、スケールアウト処理の対象になるストリームデータ処理プログラム、即ち、移行元のストリームデータ処理プログラム(41)が複数存在する場合におけるスケールアウトの処理手順の一例を示すフローチャートである。
図17において、まず、運用管理プログラム89は、全ての移行元のストリームデータ処理プログラム(41)において処理が実行されている全てのクエリに係わる情報の収集を行う(ステップS251)。即ち、移行元のストリームデータ処理プログラムである、第1のサーバ計算機5におけるストリームデータ処理プログラム41、及び第2のサーバ計算機7におけるストリームデータ処理プログラム41を、スケールアウトの対象にするために、第1のサーバ計算機5におけるエージェント処理プログラム39から(図5で示した)クエリ状態表43を、第2のサーバ計算機7におけるエージェント処理プログラム39から、(図14で示した)クエリ状態表217を、夫々収集する(ステップS252)。
ステップS252で示した処理が、全ての移行元のエージェント処理プログラム39について実行されたことを確認すると(ステップS253)、運用管理プログラム89は、ステップS252において収集した全てのクエリ状態表(43、217)を基に、サーバ状態表を作成する。このときのサーバ状態表は、図15において、符号227で示したような構成になる(ステップS254)。上記サーバ状態表227を作成すると、運用管理プログラム89は、上述したクエリを移行するに際して必要とするコスト、即ち、移行コストの算出処理を実行する(ステップS255)。
ステップS255における移行コストの算出処理が終了すると、運用管理プログラム89は、ストリームデータ処理プログラム(41)の選択処理、及びクエリの選択処理を実行する。このストリームデータ処理プログラム(41)の選択処理、及びクエリの選択処理については、後に詳述する(ステップS256)。
ステップS256における選択処理が終了すると、運用管理部89は、選択した全てのクエリに対し、上述したウォームアップ方式によるクエリ移行処理を開始する(ステップS257、S258)。そして、上記ウォームアップ方式によるクエリ移行処理が、選択した全てのクエリに対し実行されたことを確認すると(ステップS259)図17で示したスケールアウトに係わる一連の処理動作が終了する。なお、ステップS256でのクエリの選択処理においては、図11、及び図12で示した処理手順(フローチャート)が適用される。
以上で、移行元のサーバ計算機を複数台とした場合の、スケールアウト処理が完了することになる。
図18は、図17で示したスケールアウトの処理手順におけるストリームデータ処理プログラム、及びクエリ選択処理の処理手順の一例を示すフローチャートである。
図17のステップS256において実行されるストリームデータ処理プログラム、及びクエリ選択処理とは、運用管理プログラム89が、(移行元のサーバ計算機から移行先のサーバ計算機へ)移行すべきクエリに係わる処理動作が現に実行されている移行元のストリームデータ処理プログラム(41)を選択して、該選択したストリームデータ処理プログラム(41)の中から移行すべきクエリを選択する処理のことである。
図18において、運用管理部89は、まず、図16で示したコスト表239に基づき、移行元とされているサーバ計算機(第1のサーバ計算機5、及び第2のサーバ計算機7)における合計CPU使用率(%)を算出する。本実施形態では、図16に示すように、第1のサーバ計算機5におけるCPU使用率(%)は、「100%」であり、第2のサーバ計算機7におけるCPU使用率(%)は、「85%」である。そして、図18で示した処理動作を開始した時点における新たに追加されるサーバ計算機(即ち、第3のサーバ計算機のこと。ここでは、図示を省略。)におけるCPU使用率(%)は、「0%」である(ステップS261)。
次に、移行元のサーバ計算機から移行先のサーバ計算機へ移行すべきクエリを選択して、移行先のサーバ計算機へ移行する処理を、移行先のサーバ計算機におけるCPU使用率が最小でなくなるまで繰り返す処理が開始される(ステップS262)。即ち、まず、全てのサーバ計算機の中から合計CPU使用率(%)が最も大きいサーバ計算機を探索する。このサーバ計算機は、リソースが最も逼迫しているサーバ計算機であり、本実施形態では、上述した内容から明らかなように、第1のサーバ計算機5である(ステップS263)、次に、該探索したサーバ計算機のストリームデータ処理プログラム(41)において、処理が実行されるべき複数のクエリの中から移行時間が最も短いクエリを、該探索したサーバ計算機からの移行クエリとして選択する。本実施形態においては、第1のサーバ計算機5において処理が実行されているクエリの中で、移行時間が最も短いクエリQ3が、移行クエリとして選択されることになる(ステップS264)。
上記移行クエリ(Q3)の選択処理が終了すると、運用管理プログラム89は、上記移行クエリ(Q3)に係わるCPU使用率(%)を、第1のサーバ計算機5における合計CPU使用率(%)から減算すると共に、該減算したCPU使用率(%)を、新たに追加したサーバ計算機である第3のサーバ計算機(図示しない)の合計CPU使用率(%)へ加算する処理を実行する。該処理を実行した結果、本実施形態では、第1のサーバ計算機5におけるCPU使用率(%)が「80%」になり、第2のサーバ計算機7におけるCPU使用率(%)は「85%」で変らず、第3のサーバ計算機(図示しない)におけるCPU使用率(%)が「20%」になる(ステップS265)。ステップS265で示した処理が終了した時点では、新たに追加したサーバ計算機である第3のサーバ計算機(図示しない)におけるCPU使用率(%)が「20%」で最も小さい。そのため、ステップS263乃至ステップS265で夫々示した処理動作が繰り返されることになる(ステップS266)。
ステップS263乃至ステップS265で夫々示した処理動作の繰り返しにおいて、移行クエリとして、第2のサーバ計算機7において処理が実行されているクエリの中で、移行時間が最も短いクエリQ5が、移行クエリとして選択されることになる。その結果、第1のサーバ計算機5におけるCPU使用率(%)が「80%」で変らず、第2のサーバ計算機7におけるCPU使用率(%)が「45%」になり、第3のサーバ計算機(図示しない)におけるCPU使用率(%)が「65%」になるので、第3のサーバ計算機(図示しない)におけるCPU使用率(%)が第2のサーバ計算機7におけるCPU使用率(%)を超えることとなる。そのため、図18で示した一連の処理動作は終了する。
図1乃至図18において説明した内容は、クエリの移行方式をウォームアップ方式に限定したものであった。しかし、既に説明した内容から明らかなように、クエリの移行方式には、ウォームアップ方式に加えて、コピー方式という移行方式も存在する。クエリの移行方式としてコピー方式を採用すると、クエリの処理自体に遅延が発生するが、クエリによっては、ウォームアップ方式ではなく、コピー方式を用いてクエリの移行処理を実行することにより、移行時間を大幅に短縮することができる。そのため、クエリの処理自体に遅延が生じても、移行時間の短いコピー方式にて、クエリの移行を行う場合も想定され得る。
そこで、個々のクエリ毎に移行方式を選択すると共に、選択された移行方式において移行時間の短いクエリを更に選択して、クエリを移行する手法が有効になってくる。
図19は、本発明の他の実施形態に係るストリームデータ処理システムの全体構成を示す機能ブロック図である。
本発明の他の実施形態に係るストリームデータ処理システムは、図19と図1とを比較対照して明らかなように、サーバ計算機(第1のサーバ計算機5、及び第2のサーバ計算機7)の主記憶装置31に搭載されているエージェント処理プログラム271に、ユーザ事情設定部273で示される処理機能と、データ保存状態収集部275で示される処理機能と、を新たに追加した点において、図1で示した本発明の一実施形態に係るストリームデータ処理システムと構成が相違する。
上記に加えて、運用管理用計算機9の主記憶装置81に搭載されている運用管理プログラム277に、移行方式決定部279で示される処理機能を、新たに追加した点においても、本発明の他の実施形態に係るストリームデータ処理システムは、図1で示した本発明の一実施形態に係るストリームデータ処理システムと構成が相違する。
なお、上記以外の構成については、図1で示したストリームデータ処理システムと構成が同一であるので、図19において、図1に示した物と同一物には同一符号を付してそれらの詳細な説明を省略する。
図19において、データ保存状態収集部275は、ウィンドウの状態の監視、即ち、本実施形態では、ウィンドウに保存されている演算対象データのデータ量の監視を行う処理機能を有する。ユーザ事情設定部273は、ユーザが、スケールアウト処理に関係する諸設定を行えるようにするための機能を有する。本実施形態では、ユーザ事情設定部273は、コピー方式を用いたスケールアウト処理によってクエリ自体の処理に生じる遅延時間として、ユーザが許容することができる時間を、各々のクエリ毎に設定するに際して使用される。以後、クエリ自体の処理に生じる遅延において、ユーザが遅延を許容することができる時間を、「遅延許容時間」と表記することもある。移行方式決定部279は、クエリの移行方式を決定するための機能を有する。本実施形態では、図22で示すコスト表285を参照して、各々のクエリ毎に適したクエリの移行方式を選択する処理を行う。
図20は、図19に記載のエージェント処理プログラム271に含まれるクエリ状態表281の構成の一例を示した図である。
図20において、クエリ状態表281は、図5に示したクエリ状態表43と略同様に、クエリID記録欄287、CPU使用率(%)記録欄289、ウィンドウのデータ範囲記録欄295、及びデータ入力頻度(個/秒)記録欄297を含むのに加えて、更に、ウィンドウ内のデータ量(MB)記録欄291、運用ネットワーク帯域(MB/秒)記録欄293、及び遅延許容時間(秒)記録欄299をも含む。クエリID記録欄287の内容は、図5のクエリID記録欄127のそれと、CPU使用率(%)記録欄289の内容は、図5のCPU使用率(%)記録欄129のそれと、ウィンドウのデータ範囲記録欄295は、図5のウィンドウサイズ記録欄131のそれと、データ入力頻度(個/秒)記録欄297は、図5のデータ入力頻度(個/秒)記録欄133のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
ウィンドウ内のデータ量(MB)記録欄291には、各々のクエリが有するウィンドウ内に格納されているデータ(ストリームデータ)の量が、MB単位で格納される。クエリID「Q1」と同列のウィンドウ内のデータ量(MB)記録欄291には、ウィンドウ内のデータ量(MB)として、「20」が、また、クエリID「Q2」と同列のウィンドウ内のデータ量(MB)記録欄291には、ウィンドウ内のデータ量(MB)として、「10」が、夫々格納されている。更に、クエリID「Q2」と同列のウィンドウ内のデータ量(MB)記録欄291には、ウィンドウ内のデータ量(MB)として、「30」が、格納されている。
運用ネットワーク帯域(MB/秒)記録欄293に格納される運用ネットワーク帯域(MB/秒)とは、移行元のサーバ計算機と、移行先のサーバ計算機との間での、ウィンドウデータをコピーする処理能力の指標となるもので、移行元のサーバ計算機と移行先のサーバ計算機との間を接続するネットワーク(即ち、運用ネットワーク)における単位時間当たりのデータ伝送量のことを指す。本実施形態では、運用ネットワーク帯域(MB/秒)記録欄293に、運用ネットワーク帯域(MB/秒)として、「2.5」が、格納されている。遅延許容時間(秒)記録欄299には、スケールアウト処理に関連してユーザが設定可能な指標(情報)としての、遅延許容時間(秒)が格納される。本実施形態では、クエリID「Q1」と同列の遅延許容時間(秒)記録欄299には、遅延許容時間(秒)として、「1」が、また、クエリID「Q2」と同列の遅延許容時間(秒)記録欄299には、遅延許容時間(秒)として、「10」が、更に、クエリID「Q3」と同列の遅延許容時間(秒)記録欄299には、遅延許容時間(秒)として、「5」が、夫々格納されている。
図21は、図19に記載の運用管理プログラム277に含まれるサーバ状態表283の構成の一例を示した図である。
図21において、サーバ状態表283は、図6に示したサーバ状態表93と略同様に、サーバID記録欄301、クエリID記録欄303、CPU使用率(%)記録欄305、ウィンドウのデータ範囲記録欄311、及びデータ入力頻度(個/秒)記録欄313を含むのに加えて、更に、ウィンドウ内のデータ量(MB)記録欄307、運用ネットワーク帯域(MB/秒)記録欄309、及び遅延許容時間(秒)記録欄315をも含む。サーバID記録欄301の内容は、図6のサーバID記録欄135のそれと、クエリID記録欄303の内容は、図6のクエリID記録欄137のそれと、CPU使用率(%)記録欄305の内容は、図6のCPU使用率(%)記録欄139のそれと、ウィンドウのデータ範囲記録欄311は、図6のウィンドウサイズ記録欄141のそれと、データ入力頻度(個/秒)記録欄313は、図6のデータ入力頻度(個/秒)記録欄143のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
また、ウィンドウ内のデータ量(MB)記録欄307の内容は、図20のウィンドウ内のデータ量(MB)記録欄291のそれと、運用ネットワーク帯域(MB/秒)記録欄309の内容は、図20の運用ネットワーク帯域(MB/秒)記録欄293のそれと、遅延許容時間(秒)記録欄315の内容は、図20の遅延許容時間(秒)記録欄299のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
なお、図21で示したサーバ状態表283は、図6で示したサーバ状態表93におけると同様に、運用管理プログラム277が、エージェント処理プログラム271から収集したクエリ状態表281を基に作成したものである。
図22は、図19に記載の運用管理プログラム277に含まれるコスト表285の構成の一例を示した図である。
図22において、コスト表285は、図7に示したコスト表97と略同様に、サーバID記録欄317、クエリID記録欄319、及びCPU使用率(%)記録欄321を含むのに加えて、更に、ウォームアップ方式での移行時間(見込み)記録欄325と、コピー方式での移行時間(見込み)記録欄327とに分割されている移行時間(見込み)記録欄323、及び遅延許容時間(秒)記録欄329をも含む。サーバID記録欄317の内容は、図7のサーバID記録欄145のそれと、クエリID記録欄319の内容は、図7のクエリID記録欄147のそれと、CPU使用率(%)記録欄321の内容は、図7のCPU使用率(%)記録欄149のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。また、遅延許容時間(秒)記録欄329の内容は、図21の遅延許容時間(秒)記録欄215のそれと、ウォームアップ方式での移行時間(見込み)記録欄325の内容は、図7の移行時間(見込み)記録欄151のそれと、夫々同一であるので、ここでの重ねての説明は、省略する。
クエリID「Q1」と同列のコピー方式での移行時間(見込み)記録欄327には、移行時間(見込み)として、「8秒」が、クエリID「Q2」と同列のコピー方式での移行時間(見込み)記録欄327には、移行時間(見込み)として、「4秒」が、クエリID「Q3」と同列のコピー方式での移行時間(見込み)記録欄327には、移行時間(見込み)として、「12秒」が、夫々格納されている。
以下の説明は、上記ストリームデータ処理システムにおいて、ストリームデータ処理プログラム41が動作している第1のサーバ計算機5を(クエリの)移行元のサーバ計算機とし、上記ストリームデータ処理プログラム41とは別のストリームデータ処理プログラム41が動作ずることになる第2のサーバ計算機7を、(クエリの)移行先のサーバ計算機として新たに該システムに追加された状態を前提としたスケールアウト処理に関するものである。
まず、スケールアウト処理が行われる前の、上記ストリームデータ処理システムの状態について説明する。
移行元のサーバ計算機である第1のサーバ計算機5は、IPアドレスとして、「192.168.0.2」を、移行先のサーバ計算機である第2のサーバ計算機7は、IPアドレスとして、「192.168.0.3」を、夫々有する。また、ストリーム転送用計算機3の主記憶装置17に搭載されているストリーム転送プログラム23は、例えば、図2で示したようなストリーム転送表29を含んでいるものとする。移行元のサーバ計算機である第1のサーバ計算機5においては、ストリームデータ処理プログラム41が、3個のクエリ(Q1、Q2、Q3)に係わる処理を実行しており、該ストリームデータ処理プログラム41は、例えば、図4で示したクエリ管理表57を含んでいる。
次に、新たなサーバ計算機として、第2のサーバ計算機7を、上記ストリームデータ処理システムに追加した場合のスケールアウト処理の手順について説明する。
ユーザが、上記ストリームデータ処理システムにおいてスケールアウト処理を開始するに際し、運用管理用計算機9の入力装置83を介して、まず、スケールアウト処理開始の命令を入力すると共に、移行元のサーバ計算機として第1のサーバ計算機5を、移行先のサーバ計算機として、新たに追加されることになる第2のサーバ計算機7を夫々指定する。ここで、スケールアウト処理は、全てのクエリに係わる情報を収集し、収集した情報から(クエリを移行するのに必要な)コストを算出し、算出したコストを基に、各々のクエリ毎に適した移行方式を選択すると共に、更に、移行時間が短く、且つ、サーバ負荷が均等になるようなクエリを選択して、該選択したクエリを、選択した移行方式にて移行させるという処理流れで実行される。
図23は、本発明の他の実施形態に係るスケールアウト処理の手順の一例を示すフローチャートである。
図23において、まず、運用管理プログラム277が、移行元のエージェント処理プログラム271に含まれるクエリ状態表281を収集する。本実施形態では、移行元のサーバ計算機として、第1のサーバ計算機5が指定されるため、第1のサーバ計算機5において動作しているストリームデータ処理プログラム41を監視しているエージェント処理プログラム271に含まれるクエリ状態表281が収集される(ステップS341)。次に、収集されたクエリ状態表281中の情報から、サーバ状態表283が作成される。本実施形態では、収集されたクエリ状態表281に対し、第1のサーバ計算機5の識別子(ID)である「A」が、サーバ状態表283におけるサーバID記録欄301(図21にて示した)に格納される(ステップS342)。
上記のような処理動作を経てサーバ状態表283の作成が完了すると、各々のクエリ毎に、各移行方式にてクエリを移行させた場合のコストを算出する処理が行われる。本実施形態では、ステップS342で作成されたサーバ状態表283を用いて、上述したウォームアップ方式による移行コストの算出処理(ステップS343)、及びコピー方式による移行コストの算出処理(ステップS344)が、夫々実行される。ここで、ステップS344で行われるコピー方式による移行コストの算出処理とは、コピー方式を用いてクエリの移行を行う際に、必要になるコストを各々のクエリ毎に算出する処理のことを指す。本実施形態では、クエリの移行コストとして、クエリの移行処理に必要になる見込み移行時間が用いられる。
上記各々の方式(即ち、ウォームアップ方式、及びコピー方式)による移行コストの算出処理が行われた結果として、図22で示したコスト表285が作成される。次に、各々のクエリ毎に、ウォームアップ方式により該クエリを移行するか、コピー方式により該クエリを移行するかを選択する処理、即ち、移行方式選択処理を実行する(ステップS345)。ここで、ステップS345で行われる各々のクエリ毎の移行方式選択処理とは、各々のクエリ毎に、ウォームアップ方式により移行させるか、コピー方式により移行させるかを選択するための処理であり、該選択処理において、個々のクエリの特性に適した移行方式が選択される。次に、移行クエリの選択処理が実行される。この移行クエリの選択処理においては、各々のクエリにおいて選択された移行方式に係わる移行時間を見込み移行時間として、図10において示したような移行クエリの選択処理が実行される。本実施形態では、クエリQ2、クエリQ3が、移行クエリとして選択される(ステップS346)。
上記クエリ選択処理(移行クエリ選択処理)が完了すると、最後に、ウォームアップ方式、又はコピー方式によるクエリ移行処理が実行される。即ち、上記クエリ選択処理において選択された全てのクエリの何れかについて、ウォームアップ方式によるクエリ移行処理が、また、上記以外のクエリについて、コピー方式によるクエリ移行処理が、夫々実行される(ステップS347、S348、S349)。
以上で、本発明の他の実施形態に係るストリームデータ処理システムにおけるスケールアウト作業、即ち、各々のクエリにおける移行方式の選択処理と、移行すべきクエリの選択処理との双方を実行するスケールアウト処理が完了し、移行元のストリームデータ処理プログラム41においては、クエリQ1に係わる処理動作が実行され、移行先のストリームデータ処理プログラム41においては、クエリQ2、及びクエリQ3に係わる処理動作が夫々実行されることになる。
図24は、コピー方式におけるコスト算出処理での処理手順の一例を示すフローチャートである。
図24で示すコピー方式におけるコスト算出処理は、移行すべきクエリとして選択された全てのクエリに対して実行される。まず、任意の1個のクエリに対し、コピー方式によるコスト算出処理が開始される(ステップS351)。即ち、運用管理プログラム277は、図21で示したサーバ状態表283のウィンドウ内のデータ量(MB)記録欄307の値を、運用ネットワークの帯域(MB/秒)記録欄309の値で除算することにより、コピー方式による該クエリの移行時間(見込み)を算出し(ステップS352)、該算出した移行時間(見込み)を、図22で示したコスト表285に反映させる処理を行う(ステップS353)。ステップS352、及びステップS353で夫々示した処理動作が全てのクエリに対して実行されたことを確認した時点で(ステップS354)、図24で示したコピー方式によるコスト算出処理に係わる一連の処理動作が終了する。
図25は、本発明の他の実施形態に係る各々のクエリに係わる移行方式選択処理の処理手順の一例を示すフローチャートである。
図25で示す移行方式選択処理の処理手順では、各々のクエリに対してコスト表285に格納されている諸情報を基に、各々のクエリの移行に際して各方式(ウォームアップ方式、及びコピー方式)を採用した場合における移行時間の比較が行われる(ステップS361)。即ち、まず、ウォームアップ方式を採用した場合の移行時間と、コピー方式を採用した場合の移行時間とが比較され(ステップS362)、該比較の結果、ウォームアップ方式による移行時間が、コピー方式による移行時間と同一か、若しくは短かった場合には、移行方式としてウォームアップ方式が選択される(ステップS364)。一方、上記比較の結果、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短ければ、例えば、図22で示したコスト表285の遅延許容時間(秒)記録欄329に格納されている遅延許容時間と、上記コピー方式による移行時間とが比較される(ステップS363)。
この比較の結果、遅延許容時間の方が、コピー方式による移行時間よりも短かった場合には、移行方式として、ウォームアップ方式が選択され(ステップS364)、コピー方式による移行時間が、遅延時間と同一か、若しくは短かった場合には、移行方式として、コピー方式が選択される(ステップS365)。コピー方式によりクエリの移行を行っている間は、該クエリに係わる処理を停止させる必要があるので、ステップS363において、コピー方式によるクエリの見込み移行時間と遅延許容時間とを比較することで、ユーザが、クエリに係わる処理の実行が遅延するのを許容できるか否か判定している。
本実施形態では、クエリQ1については、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短いが、コピー方式による移行時間が、遅延許容時間を超えているため、ウォームアップ方式が選択される。また、クエリQ2については、コピー方式による移行時間の方が、ウォームアップ方式による移行時間よりも短く、且つ、遅延許容時間よりも短いため、コピー方式が選択され、更に、クエリQ3については、ウォームアップ方式による移行時間の方が、コピー方式による移行時間よりも短いために、ウォームアップ方式が選択されることになる。
図26は、本発明の他の実施形態に係る移行すべきクエリを、選択された移行方式により移行するに際しての処理手順の一例を示すフローチャートである。
図26において、まず、選択されたクエリの移行方式が、ウォームアップ方式か、コピー方式かをチェックする(ステップS371)、該チェックの結果、ウォームアップ方式が、クエリの移行方式として選択されたと判断すれば、ウォームアップ方式により該クエリの移行処理が実行され(ステップS372)、一方、該チェックの結果、コピー方式が、クエリの移行方式として選択されたと判断すれば、コピー方式により該クエリの移行処理が実行される(ステップS373)。本実施形態では、クエリQ2がコピー方式により移行され、クエリQ3がウォームアップ方式により移行されることになる。
図27は、コピー方式によるクエリの移行処理の処理手順の一例を示すフローチャートである。
上記コピー方式によるクエリの移行処理とは、新たに追加されたサーバ計算機(即ち、第2のサーバ計算機7)において動作することになるストリームデータ処理プログラム41に、ウィンドウデータをコピーする作業を実施して、移行の対象となるクエリを移行させる処理のことを指す。
図27において、運用管理プログラム277は、まず、移行すべきクエリを登録すべき旨のコマンド(移行クエリ登録コマンド)を、移行先のエージェント処理プログラム271へ送信する(ステップS381)。このコマンドを受信すると、移行先のエージェント処理プログラム271は、移行させるべきクエリの登録を行うと共に、運用管理プログラム277に対し、移行すべきクエリの登録が完了したことを示す通知、即ち、クエリ登録完了通知を送信する。該クエリ登録完了通知を受信すると、運用管理プログラム277は、(ストリーム転送用計算機3の)ストリーム転送プログラム23に対し、上記移行すべきクエリの転送先削除命令を送信する(ステップS382)。
この転送先削除命令を受信すると、ストリーム転送プログラム23は、上記移行すべきクエリが処理対象にしているストリームIDを有するストリームデータ15を、移行元のサーバ計算機(第1のサーバ計算機5)に転送しないようにする処理を行うと共に、運用管理プログラム277に対し、該移行すべきクエリの転送先削除通知を送信する。本実施形態では、ストリーム転送プログラム23は、ストリーム転送表29における転送先のIPアドレス記録欄113(図2で示した)から、移行元のストリームデータ処理プログラム41が動作する第1のサーバ計算機5のIPアドレスを削除することになる。上記転送先削除通知を受信すると、運用管理プログラム277は、ウィンドウコピーコマンドを、移行元のエージェント処理プログラム271へ送信する。ここで、ウィンドウコピーコマンドとは、移行元のエ−ジェント処理プログラム271が監視している(移行元の)ストリームデータ処理プログラム41において実行されている移行すべきクエリのウィンドウデータを、移行元のエ−ジェント処理プログラム271により、新たに追加されたサーバ計算機(第2のサーバ計算機7)において動作することになるストリームデータ処理プログラム41へとコピーするためのコマンドである(ステップS383)。
移行元のエージェント処理プログラム271によるウィンドウデータのコピーが完了すると、移行元のエージェント処理プログラム271は、運用管理プログラム277に対し、ウィンドウデータのコピーが完了したことを示す通知(ウィンドウデータコピー完了通知)を送信する。このウィンドウデータコピー完了通知を受信すると、運用管理プログラム277は、ストリーム転送プログラム23に対し、転送先追加命令を送信する(ステップS384)。この転送先追加命令に基づき、ストリーム転送プログラム23は、移行されたクエリが処理対象としているストリームデータ15の転送先として、移行先のストリームデータ処理プログラム41(第2のサーバ計算機7)を追加して、運用管理プログラム277に対し、移行されたクエリの転送先追加通知を送信する。これにより、運用管理プログラム277は、該転送先追加通知を受信することとなる(ステップS385)。
以上で、コピー方式によるクエリの移行処理が完了することになる。
以上、本発明の好適な実施形態、及びその変形例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態や変形例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。