(57)【特許請求の範囲】
【請求項１】
ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理装置であって、
前記管理装置は、
プロセッサと格納部を備え、
前記格納部は、
複数の前記クエリから構成されるクエリグラフに関する情報を格納し、
前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔で前記ストリームデータの処理を実行する処理に関する情報を含み、
前記プロセッサは、
前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信することを特徴とする管理装置。
【請求項２】
請求項１に記載の管理装置であって、
前記クエリグラフは、
前記第二の処理装置が前記ストリームデータを受信する処理に関する受信クエリと、
前記第二の処理装置が前記クエリに基づいて処理を実行した結果を出力する処理に関する出力クエリを含み、
前記プロセッサは、
前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の経路上に存在する前記クエリに設定された前記所定の間隔に基づいて、
前記データ送信間隔を算出することを特徴とする管理装置。
【請求項３】
請求項２に記載の管理装置であって、
前記データ送信間隔は、前記クエリに設定された前記所定の間隔の最大公約数であることを特徴とする管理装置。
【請求項４】
請求項２に記載の管理装置であって、
前記データ送信間隔は、前記クエリに設定された前記所定の間隔の最小値であることを特徴とする管理装置。
【請求項５】
請求項２に記載の管理装置であって、
前記データ送信間隔は、前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の各経路の前記クエリの前記所定の間隔の最小値の最大公約数であることを特徴とする管理装置。
【請求項６】
請求項１に記載の管理装置であって、
前記格納部は、
前記第二の処理装置の前記クエリに基づいた処理の実行時間に関する情報を含む構成情報を格納し、
前記プロセッサは、
前記クエリグラフと前記構成情報に基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする管理装置。
【請求項７】
請求項６に記載の管理装置であって、
前記プロセッサは、
前記クエリグラフと前記構成情報に基づいて、前記第二の処理装置の前記割り当てられたクエリに基づいた処理にかかる時間が、前記データ送信間隔の時間内に収まるように一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする管理装置。
【請求項８】
ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理システムによるストリームデータ処理の実行環境設定方法であって、
前記管理システムは、
複数の前記クエリから構成される前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
少なくとも一つの前記クエリに設定されるストリームデータの処理を実行する間隔である実行間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信する
ことを特徴とする実行環境設定方法。
【請求項９】
請求項８に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフにおける前記第二の処理装置が前記ストリームデータを受信する処理に関する受信クエリと前記第二の処理装置が前記クエリに基づいて処理を実行した結果を出力する処理に関する出力クエリとの間の経路上に存在する前記クエリに設定された前記実行間隔に基づいて、
前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項１０】
請求項９に記載の実行環境設定方法であって、
前記管理システムは、
前記実行間隔と前記クエリグラフに基づいて、前記実行間隔の最大公約数となる前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項１１】
請求項９に記載の実行環境設定方法であって、
前記管理システムは、
前記実行間隔と前記クエリグラフに基づいて、前記実行間隔の最小値となるデータ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項１２】
請求項９に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の経路ごとに前記クエリの前記実行間隔の最小値を算出し、
前記算出した最小値の最大公約数となる前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項１３】
請求項８に記載の実行環境設定方法であって、
前記管理システムは、
前記第二の処理装置が前記クエリに基づいた処理の実行時間に関する情報を含む構成情報と前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする実行環境設定方法。
【請求項１４】
請求項１３に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフと前記構成情報に基づいて、前記第二の処理装置の前記割り当てられたクエリに基づいた処理にかかる時間が前記データ送信間隔の時間内に収まるように一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする実行環境設定方法。
【請求項１５】
管理装置と第一の処理装置と第二の処理装置からなるストリームデータ処理システムであって、
前記管理装置は、
第一のプロセッサと第一の格納部を備え、
前記第一の格納部は、
複数のクエリから構成されるクエリグラフに関する情報を格納し、
前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔でストリームデータの処理を実行する処理に関する情報を含み、
前記第一のプロセッサは、
前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信し、
前記第一の処理装置は、
第二のプロセッサと第二の格納部を備え、
前記第二の格納部は、
前記受信したデータ送信間隔に関する情報と前記ストリームデータとして送信されるデータを格納し、
前記第二のプロセッサは、
前記受信したデータ送信間隔に関する情報に基づいて、前記第二の格納部に格納されたデータを前記ストリームデータとして前記第二の装置に送信し、
前記第二の処理装置は、
第三のプロセッサを備え、
前記第三のプロセッサは、
前記割り当てられたクエリに基づいて、前記受信したストリームデータに対して処理を実行し、
前記処理結果を出力することを特徴とするストリームデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データの分析に関する。
【背景技術】
【０００２】
近年、コンピュータやセンサなど世の中の様々な物を大量に接続し、各コンピュータやネットワーク機器などから取得したログデータを解析しネットワークの負荷を予測することや、設備の監視・メンテナンスなどを行うＩｏＴシステムに対する要求が高まっている。【０００３】
一般的に、ネットワーク分析では、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。【０００４】
例えば、企業などにおいて社内ネットワークのネットワーク分析を行う際に、ネットワークに接続されたコンピュータのネットワークアクセスを記録したアクセスログを解析し、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。また工場においては、設備の温度や振動量を測定し、異常値が検出された場合には管理者へ連絡するシステムが考えられる。【０００５】
従来のデータベース管理システム（ＤＢＭＳ）でデータを処理する場合には、時々刻々と到着するデータ（ストリームデータ）を一旦従来のデータベースが検索可能なデータ形式に変更して二次記憶装置に格納する必要があった。この変換処理と格納には大きな時間がかかり、データをまとめて一括で処理を行った方が効率的に行えるため、日単位の日次バッチなどで行われる事が多く、リアルタイムにデータ分析を行う事が出来ない。一括で処理を行った方が効率的である理由として、例えば従来のデータベースで一般的に用いられる二次索引へ逐次的にデータ１件毎に追加するのではなく、一括で追加した方が時間コストの大きい二次記憶へのアクセス量を抑えられる事が挙げられる。しかし、前述のログデータは従来のデータベースに格納して、日次バッチで処理するよりも、リアルタイムに鮮度の高いまま処理を行うストリームデータ処理を行うのが望ましい。例えば、ネットワークの負荷予測に対しては、ネットワークが過負荷になるタイミングを予測し、ネットワーク機器の切り替えや増強を行うことで、ネットワークのダウンを未然に防止することが可能となる。また工場における設備の故障に対しては、早いタイミングで検知するほど損失を抑えることが可能になる。【０００６】
しかし、ストリームデータ処理を行うためにストリームデータのリアルタイム処理アプリケーションを個別に作成すると、開発期間の長期化、処理内容の変化への迅速な対応が困難といった問題がある。そこで汎用のストリームデータ処理システムやストリームデータ処理クエリが提案されている。例えば、非特許文献１には、ストリームデータ処理システムが開示されている。【０００７】
また、ストリームデータ処理システムに関する技術として、特許文献１ではストリームデータ処理において装置間の通信回数を減らす方法が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許 US 9,141,677 B2
【非特許文献】
【０００９】
【非特許文献１】Arvind Arasu, Shivnath Babu, Jennifer Widom著: ”The CQL continuous query language: semantic foundations and query execution.”, VLDB J. (2006)
【発明の概要】
【発明が解決しようとする課題】
【００１０】
大企業においてネットワークの負荷の算出を行う場合には、ネットワークに接続された数万〜数十万のコンピュータを監視する。コンピュータのログデータを解析するためには各コンピュータやネットワーク機器などからサーバ等にログデータを送信する必要がある。ネットワーク負荷の低減や、通信にかかる消費電力を抑制する観点から、コンピュータやネットワーク機器などからサーバへのログデータの送信間隔を長くして、送信回数を少なくすることが望ましい。【００１１】
また、ＩｏＴシステムで良く用いられる無線センサは電池駆動が多く、センサデータの送信間隔を長くし、送信回数を少なくする事により通信電力消費を抑制し、駆動時間を長くする事が望ましい。センサデータの送信間隔が長くなると、無線親機が扱える子機数が増えるため、システム全体の価格を抑えることも可能になる。これは、複数の通信が重なった場合には通信を中断し、一定時間後に再度通信を試みる、という通信で広く使われるＣＳＭＡ／ＣＤプロトコルにおいて、通信間隔が長くなると通信の重なりが起こりにくくなるためである。【００１２】
しかし、単純にデータの送信間隔を長くすると、結果出力遅延が発生し、処理がリアルタイムに行えなくなってしまう。そのため、結果出力遅延と通信回数削減効果のトレードオフからデータの送信間隔を算出する必要がある。【００１３】
しかし、従来技術ではストリームデータ処理のデータ送信間隔については考慮されていない。そのため、より長い間隔でデータを送信してもリアルタイムに処理が出来る場合であっても、短い送信間隔が用いられる可能性がある。特許文献1では、ストリームデータ処理において装置間の通信回数を減らす方法が提案されている。通信の多いクエリ処理の組を同一装置で処理する事により、装置間の通信回数を減らす方法であるが、通信の間隔は扱われていないため、ストリームデータの送信間隔を長くして送信回数を減らすことによるネットワーク負荷の低減や省電力効果は見込めない。
【課題を解決するための手段】
【００１４】
本発明の代表的な一形態は、ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理装置であって、前記管理装置は、プロセッサと格納部を備え、前記格納部は、複数の前記クエリから構成されるクエリグラフに関する情報を格納し、前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔で前記ストリームデータの処理を実行する処理に関する情報を含み、前記プロセッサは、前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、前記データ送信間隔に関する情報を前記第一の処理装置に送信することを特徴とするものである。
【発明の効果】
【００１５】
本発明を用いることにより、ストリームデータ処理システムの処理結果出力に影響を与えない範囲でシステム全体の電力消費の抑制や、ネットワーク負荷を低減することが出来る。
【図面の簡単な説明】
【００１６】
【図１】実施例１に係るシステム全体の構成を示す。
【図２】実施例１のストリームデータ処理のフローを示す。
【図３】クエリグラフの一例を示す。
【図４】ログデータの一例を示す。
【図５】許容送信間隔を設定したクエリグラフの一例を示す。
【図６】許容送信間隔を設定した直線のクエリグラフの一例を示す。
【図７】展開したクエリグラフの一例を示す。
【図８】許容送信間隔の算出方法の一例を示す。
【図９】実施例１に係るデータ送信間隔の算出処理のフローを示す。
【図１０】クエリグラフ全体の許容送信間隔の算出方法の一例を示す。
【図１１】クエリの許容送信間隔を算出し、直線に展開したクエリグラフの一例を示す。
【図１２】クエリグラフ全体の許容送信間隔の算出方法の一例を示す。
【図１３】クエリの許容送信間隔を算出し、直線に展開したクエリグラフの一例を示す。
【図１４】クエリグループ割り当て処理のフローを示す。
【図１５】サーバと割り当てられたクエリグループとの関係の一例を示す。
【図１６】構成情報の一例を示す。
【図１７】クエリグループ抽出処理のフローを示す。
【図１８】サーバと割り当てられたクエリグループとの関係の一例を示す。
【図１９】サーバと割り当てられたクエリグループとの関係の一例を示す。
【図２０】出力デバイスの一例を示す。
【図２１】クエリグラフの一例を示す。
【図２２】実施例２に係るデータ送信間隔の算出処理のフローを示す。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら、幾つかの実施例を説明する。
【実施例１】
【００１８】
図１は、本発明の実施形態を示し、ストリームデータ処理システムの一例を示している。【００１９】
管理サーバ１００は、クエリグラフの実行の際に、コンピュータ３００がログデータ３４１をサーバ２００に送信する間隔であるデータ送信間隔をコンピュータ３００に送信し、ログデータ３４１に対してデータ処理を実行するクエリグループをサーバ２００に割り当てる。そしてサーバ２００でのクエリグループの実行結果に基づき、クエリグラフの実行結果を外部に出力する。管理サーバ１００と一つ又は複数のサーバ２００と一つ又は複数のコンピュータ３００が通信ネットワーク４００を介して接続されている。管理サーバ１００、サーバ２００はデータ処理を行うのであれば、サーバに限らず仮想マシンであってもよい。通信ネットワーク４００を介した通信のプロトコルとしては、例えば、ＦＣ（Fibre  Channel）、ＳＣＳＩ（Small  Computer  System  Interface）、又は、ＴＣＰ／ＩＰ（Transmission  Control  Protocol／Internet  Protocol）が採用されて良い。通信ネットワーク４００を介した通信のプロトコルとしては、例えば、IEEE８０２．１１、IEEE８０２．１５．１、又は、IEEE８０２．１５．４が採用されて良い。【００２０】
管理サーバ１００はハードウェア構成として、メモリ１１０、記憶装置１２０、プロセッサ１３０、ネットワークインターフェース１４０、入力デバイス１５０、出力デバイス１６０を備える。【００２１】
プロセッサ１３０は、メモリ１１０に格納されるプログラムを実行する。プロセッサ１１０がプログラムを実行しコンピュータ１００の機能が実現される。以下、機能部を主語の処理を説明する場合、プロセッサ１３０が当該機能部を実現するプログラムを実行していることを示す。【００２２】
ネットワークインターフェース１４０は、ネットワークを介して他の装置と接続するためのインターフェースである。【００２３】
記憶装置１２０は、ストリームデータに対する処理の内容を記述した一つまたは複数のクエリグラフ１２１と、構成情報１２２を格納する。クエリグラフは複数のクエリをツリー化したものであり、各クエリの処理内容とクエリの接続関係を示し、クエリに設定された処理の実行順序などの情報を含む。クエリグラフの一例を図３に示す。例えば、クエリ３００３はクエリ３００２の実行結果を受け取り、クエリ３００３の処理が行われることを示す。クエリ３００３の実行結果はクエリ３００４に受け渡される。記憶装置１２０は、コントローラおよび複数の記憶媒体を有するストレージシステムが考えられる。また、記憶装置１２０は、記憶媒体を有する一般的な計算機でもよいし、記憶媒体そのものであってもよい。ここで、記憶媒体は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。【００２４】
入力デバイス１５０は、データを入力する。入力デバイス１５０としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス１６０は、データを出力する。出力デバイス１６０としては、たとえば、ディスプレイ、プリンタがある。【００２５】
メモリ１１０は、送信間隔算出部１１１と、送信間隔送信部１１２と、クエリグループ割り当て部１１３と、クエリグループ実行結果処理部１１４を実現するプログラムを格納する。各部の機能については、後述する。【００２６】
サーバ２００は、コンピュータ３００から送信されるログデータ３４１に対して、管理サーバ１００から割り当てられたクエリグループの処理を実行する。サーバ２００はハードウェア構成として、ネットワークインターフェース２１０と、プロセッサ２２０と、メモリ２３０を備える。なお、サーバ２００はサーバに限るものでなくてもよく、仮想マシンでもよい。【００２７】
ネットワークインターフェース２１０は、ネットワークを介して他の装置と接続するためのインターフェースである。【００２８】
プロセッサ２２０はメモリ２３０に格納されるプログラムを実行する。プロセッサ２２０がプログラムを実行しサーバ２００の機能が実現される。【００２９】
メモリ２３０はクエリグループ実行部２３１を実現するプログラムを格納する。クエリグループ実行部２３１は、コンピュータ３００から受信したログデータ３４１に対して管理サーバ１００から割り当てられたクエリグループの処理を実行する。処理結果は管理サーバ１００もしくは他のサーバ２００に出力する。【００３０】
コンピュータ３００はログデータ３４１を管理サーバ１００から受信したデータ送信間隔でサーバ２００に送信する。コンピュータ３００はハードウェア構成として、ネットワークインターフェース３１０と、プロセッサ３２０と、メモリ３３０と、記憶装置３４０を備える。なお、コンピュータ３００はストリームデータを蓄積するものであればよく、工場のセンサデバイスであってもよい。【００３１】
ネットワークインターフェース３１０は、ネットワークを介して他の装置と接続するためのインターフェースである。【００３２】
プロセッサ３２０はメモリ３３０に格納されるプログラムを実行する。プロセッサ３２０がプログラムを実行しコンピュータ３００の機能が実現される。【００３３】
メモリ３３０はデータ送信部３３１を実現するプログラムを格納する。データ送信部３３１は、ログデータ３４１を管理サーバ１００から受信したデータ送信間隔に基づいてサーバ２００に送信する。【００３４】
記憶装置３４０は、コンピュータのネットワークへのアクセスログであるログデータ３４１を格納する。記憶装置３４０は、コントローラおよび複数の記憶媒体を有するストレージシステムが考えられる。また、記憶装置３４０は、記憶媒体を有する一般的な計算機でもよいし、記憶媒体そのものであってもよい。ここで、記憶媒体は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）や等が考えられる。【００３５】
図２は、コンピュータ３００に蓄積されるログデータ３４１に対して、クエリグラフ１２１に基づいてストリームデータ処理を実行する流れの一例である。
（Ｓ２０１）ログデータ３４１に対してクエリグラフ１２１に基づいた処理が開始されると、送信間隔算出部１１１はコンピュータ３００からサーバ２００へのデータ送信間隔をクエリグラフ１２１に基づいて算出する。コンピュータ３００からサーバ２００へのデータ送信間隔をクエリグラフ１２１に基づいて算出する手法については、後述する。
（Ｓ２０２）送信間隔送信部１１２は算出したデータ送信間隔をコンピュータ３００に送信する。コンピュータ３００は、受信したデータ送信間隔に基づいて、ログデータ３４１をサーバ２００に送信する。
（Ｓ２０３）クエリグループ割り当て部１１３は、構成情報１２２とクエリグラフ１２１と算出したデータ送信間隔に基づいて、クエリグラフ１２１内のクエリグループをサーバ２００に割り当てる。クエリグループのサーバ２００への割り当て方法については、後述する。
（Ｓ２０４）クエリグループ実行部２３１は、コンピュータ３００が送信したログデータ３４１に対して、割り当てられたクエリグループを実行する。
（Ｓ２０５）クエリグループ実行結果処理部１１４は、各サーバ２００のクエリグループの実行結果を、クエリグラフ１２１の実行結果として処理する。
（Ｓ２０６）クエリグループ実行結果処理部１１４は、クエリグラフ１２１の実行結果を出力デバイス１６０に出力し、処理を終了する。【００３６】
なお、Ｓ２０６とＳ２０７では、サーバ２００でのクエリグループの実行結果は管理サーバ１００で処理と出力を行っているが、サーバ２００が他のサーバ２００に処理結果を出力することや、サーバ２００が出力デバイスを持ち、その出力デバイスにサーバ２００の処理結果を出力する形であっても良い。【００３７】
Ｓ２０１で、送信間隔算出部１１１が、クエリグラフ１２１に基づいてコンピュータ３００からサーバ２００へのログデータ３４１のデータ送信間隔を算出する方法について具体的に説明する。【００３８】
図３は、ネットワーク分析を行うクエリグラフ処理の一例である。一般的に、ネットワーク分析では、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。基礎的な統計情報の算出をストリームデータ処理で行う例について説明する。【００３９】
図３のクエリグラフ１２１は、分析対象のネットワークログを読込み、正常データの最大応答時間と通信エラー数を機器毎に算出するためのストリームデータ処理のクエリグラフであり、９つのクエリから構成されている。３００１、３００２、３００３、３００４、３００５、３００６、３００７、３００８、３００９はクエリを表し、矢印はクエリ間のつながりを表している。各クエリで行う処理について説明する。分析対象のログデータ３４１を３００１で受けとり、受け取ったデータから正常データのみの抽出処理を３００２で行って、機器毎の最大応答時間を３００３で４秒毎に算出する。算出結果から最大応答時間が１００ミリ秒以上のデータのみの抽出を３００４で行って、３００５で最大応答時間の処理結果を出力デバイス１６０に出力している。３００６では、３００１で読み込まれたデータのうち通信エラーのみを抽出し、機器毎のエラー数を３０秒毎に３００７で算出する。３００７の算出結果から、合計エラー数が５以上の機器データのみを３００８にて抽出する。抽出結果を３００９において出力デバイス１６０に出力する。【００４０】
特に、３００１はコンピュータ３００からログデータ３４１を受信するクエリであり、３００５と３００９はクエリグラフで実行した処理を出力するクエリである。【００４１】
図４は、処理例の入力データであるログデータ３４１の一例である。ログデータ３４１は、複数のレコードを有する。このレコードは、データ属性として、ＴＩＭＥＳＴＡＭＰ４００１と、ＩＤ４００２と、ＲＥＳＰＯＮＳＥ＿ＴＩＭＥ４００３と、ＳＴＡＴＵＳ＿ＣＯＤＥ４００４とを有する。【００４２】
ＴＩＭＥＳＴＡＭＰ４００１は、通信ログが生成された日時を表す。ＩＤ４００２は、その通信ログの通信を行った機器を識別する情報を表す。ＲＥＳＰＯＮＳＥ＿ＴＩＭＥ４００３は、通信の応答時間を表す。ＳＴＡＴＵＳ＿ＣＯＤＥ４００４は、その通信のステータスコードを表す。【００４３】
例えば、図４のレコード４００５は、通信ログの生成時間（ＴＩＭＥＳＴＡＭＰ４００１）が「０８：０３：０１：０１」で、機器を識別する情報（ＩＤ４００２）が「１」で、通信の応答時間（ＲＥＳＰＯＮＳＥ＿ＴＩＭＥ３１３）が「７０」で、ステータスコード（ＳＴＡＴＵＳ＿ＣＯＤＥ３４００４）が「２００」であることを示す。ここで、ステータスコード「２００」はデータが正常に通信されたことを示し、「５０」は通信エラーが起きたことを示す。【００４４】
レコード４００５と４００７は、ステータスコードが「２００」のため、データが正常に通信されており、クエリグラフ１２１の分岐の３００２側の処理が行われる。レコード４００５の応答時間は７０ミリ秒のため、クエリ３００４で抽出されず、応答時間が２５０ミリ秒のレコード４００７は３００５のクエリの処理が行われる。また、レコード４００６はステータスコードが「５０」のため、通信エラーが起きたことを示しており、クエリグラフ１２１の分岐の３００６側の処理が行われる。【００４５】
なお、３００３と３００７にはデータを蓄積し数秒毎に出力するＲＳＴＲＥＡＭ処理が含まれているため、データを逐次的に送信・処理する代わりに、ＲＳＴＲＥＡＭの時間間隔でデータをまとめて送信し、統計情報算出などの処理を行っても結果出力の時間間隔に影響を与えない。この長くすることができる送信間隔を許容送信間隔と呼ぶこととする。【００４６】
図５は、各クエリに許容送信間隔を設定後の図３のクエリグラフの一例である。５００１、５００２、５００３、５００４、５００５、５００６、５００７、５００８、５００９はクエリを表している。５００３に許容送信間隔４秒、５００７に許容送信間隔３０秒が図３のクエリグラフを読み取ることで設定される。【００４７】
次に、クエリに許容送信間隔が設定されたクエリグラフにおいて、クエリグラフ全体の許容送信間隔を算出する方法について述べる。クエリグラフ全体の許容送信間隔とは、各クエリの許容送信間隔に基づいて算出されたクエリグラフ全体で設定される許容送信間隔のことである。クエリグラフ全体の許容送信間隔を算出した場合、各クエリ間のデータのやりとりをクエリグラフ全体の許容送信間隔まで長くしても、データ出力に対する遅延は生じない。このクエリグラフ全体の許容送信間隔を全体許容送信間隔と呼ぶ。以下、全体許容送信間隔の算出方法について説明する。【００４８】
図６をもちいて、直線で構成されているクエリグラフの全体許容送信間隔の設定の方法の１例を説明する。クエリグラフ６０１はクエリ６００１、６００２、６００３、６００４からなる直線のクエリグラフで構成されており、クエリの許容送信間隔が６００２と６００３に設定されている。６００１がデータの受信に関するクエリであり、６００４がデータの処理結果の出力に関するクエリである。この場合、６００２と６００３の許容送信間隔の最小値である２秒でまとめてデータを送信しても、データの処理に遅延を生じない。よって２秒が、クエリグラフ６０１の全体許容送信間隔となる。【００４９】
図７は、クエリグラフの処理結果の出力に関するクエリからデータの受信に関するクエリまでの各経路を直線に展開後の図３のクエリグラフの一例である。直線Ａ７０１と直線Ｂ７０２は、それぞれ展開後の経路を表している。クエリ５００３には許容送信間隔４秒が設定されており、クエリ５００７には許容送信間隔３０秒が設定されている。それぞれの許容送信間隔の最大公約数である２秒が、クエリグラフ全体の許容送信間隔となる。この場合、コンピュータ３００からサーバ２００へのログデータの受信を行うクエリ５００１において、全体許容送信間隔の２秒間分のデータをまとめて受信しても、データの出力に遅延を生じない。データを逐次受信するよりも、２秒分まとめて受信することで通信回数を低減し、ネットワーク負荷や消費電力を抑制することが出来る。【００５０】
なお、クエリグラフに分岐がない場合には、直線の許容送信間隔をクエリグラフの全体許容送信間隔として設定出来る。【００５１】
次に、クエリグラフにおいて、許容送信間隔の設定されているクエリから、設定されていないクエリの許容送信間隔を算出する手法について、図８を用いて説明する。【００５２】
図８Ａは、分岐を構成するクエリのうち、入力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信時間が設定されていない場合の展開方法の例である。８０１、８０２、８０３はクエリである。８０１には許容送信間隔２秒が設定されており、８０２には許容送信間隔６秒が設定されている。図８Ａのように、入力側クエリが複数有り、入力側クエリに許容送信間隔が設定されており、出力側クエリには設定されていない場合には、入力側クエリの許容送信間隔の最大公約数を出力側クエリの許容送信間隔とする。従って、８０１の許容送信間隔２秒と、８０２の許容送信間隔６秒の最大公約数である２秒が８０３の許容送信間隔として設定される。【００５３】
図８Ｂは、分岐を構成するクエリのうち、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信間隔が設定されている場合の展開方法の例である。８０４、８０５、８０６はクエリである。８０５には許容送信間隔２秒が設定されており、８０６には許容送信間隔３秒が設定されている。図８Ｂのように、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信間隔が設定されている場合には、出力側クエリの許容送信間隔の最大公約数を入力側クエリの許容送信間隔とする。従って、８０５の許容送信間隔２秒と、８０６の許容送信間隔３秒の最大公約数である１秒が８０４の許容送信間隔として設定される。【００５４】
図８Ｃは、分岐を構成するクエリのうち、入力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信時間が設定されている場合の展開方法の例である。８０７、８０８、８０９はクエリである。８０９には許容送信間隔２秒が設定されている。図９Ｃのように、入力側クエリが複数有り、入力側クエリに許容送信間隔が設定されていないが、出力側クエリには設定されている場合には、出力側クエリの許容送信間隔をそのまま入力側クエリの許容送信間隔とする。従って、８０９の許容送信間隔２秒が、８０７と８０８の許容送信間隔として設定される。【００５５】
図８Ｄは、分岐を構成するクエリのうち、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信間隔が設定されていない場合の展開方法の例である。８１０、８１１、８１２はクエリである。８１０には許容送信間隔１秒が設定されている。図８Ｄのように、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信間隔が設定されていない場合には、入力側クエリの許容送信間隔をそのまま出力側クエリの許容送信間隔とする。従って、８１０の許容送信間隔１秒が、８１１と８１２の許容送信間隔として設定される。【００５６】
なお、前述した手法を用いて許容送信間隔の設定されたクエリの許容送信間隔に基づいて、許容送信間隔の設定されていないクエリにさらに前述の算出処理を実行してもよい。また、許容送信間隔の設定されているクエリの処理の前もしくは後のクエリが許容送信間隔を設定されていない、かつ前もしくは後のクエリが一つしかない場合は、前もしくは後のクエリの許容送信間隔を許容送信間隔の設定されたクエリの許容送信間隔と等しいとして設定してもよい。【００５７】
図９を用いて、送信間隔算出部１１１がクエリグラフ１２１に基づいてデータの送信間隔を設定する処理の流れの一例を示す。【００５８】
送信間隔算出部１１１は、管理サーバ１００がログデータの解析の指示を受けると、コンピュータ３００からサーバ２００へのデータ送信間隔の算出処理を開始する。ログデータの解析は管理サーバ１００の管理システムの管理者のクエリグラフ実行の要求によって始まってもよいし、クエリグラフが記憶装置１２１に新たに格納されたタイミングで開始してもよい。
（Ｓ９０１）データ送信間隔の算出処理が開始されると、送信間隔算出部１１１はクエリグラフ１２１のＲＳＴＲＥＡＭ変換を行うクエリに対して、変換秒数を許容送信間隔として設定する。
（Ｓ９０２）許容送信間隔の設定されたクエリグラフにおいて、クエリの前後関係から新たに許容送信間隔が設定可能なクエリがあるか判定する。ある場合はＳ９０３の処理を、ない場合はＳ９０４の処理を行う。
（Ｓ９０３）図８を用いて説明したように、クエリの前後関係を参照しクエリの許容送信間隔を設定する。設定したらＳ９０２の処理に戻る。
（Ｓ９０４）クエリグラフに分岐があるか判定する。分岐がある場合はＳ９０５の処理を、ない場合はＳ９０６の処理を行う。
（Ｓ９０５）図７を用いて説明したように、分岐をもとにクエリグラフを直線に展開する。直線に展開したら、Ｓ９０４の処理に戻る。
（Ｓ９０６）展開後の各直線に対して、図６で説明したように直線の許容送信間隔を算出する。具体的には、直線内のクエリの許容送信間隔の最小値を直線の許容送信間隔とする。
（Ｓ９０７）展開後の直線全てに許容送信間隔が設定されているか判定する。設定されている場合にはＳ９０８の処理を、設定されていない直線がある場合にはＳ９１０の処理を行う。
（Ｓ９０８）すべての展開後の直線の許容送信間隔の最小値を、クエリグラフ全体の許容送信間隔として設定する。なお、全てのクエリの許容送信間隔の最小値をクエリグラフ全体の許容送信間隔として選んでも良い。
（Ｓ９０９）送信間隔算出部１１１は、クエリグラフ全体の許容送信間隔を、コンピュータ３００からサーバ２００へのログデータのデータ送信間隔として送信間隔送信部１１２に通知する。これにより処理を終了する。
（Ｓ９１０）送信間隔算出部１１１は、コンピュータ３００からサーバ２００へのデータのデータ送信間隔を設定出来ないことを送信間隔送信部１１２に通知する。これにより処理が終了する。クエリグラフ全体の許容送信間隔が設定できなかった場合には、コンピュータ３００からサーバ２００へデータを逐次送信することとなる。【００５９】
なお、Ｓ９０２とＳ９０３については、処理をスキップしても良い。【００６０】
図１０と図１１を用いて、送信間隔算出部１１１がクエリグラフ１２１にもとづいて、コンピュータ３００からサーバ２００へのデータ送信間隔を送信間隔送信部１１２に通知するまでの流れを具体的に説明する。図１０のクエリグラフの１００１から１０２８は全てクエリを表す。また、クエリ１００１はデータの受信を行うクエリであり、クエリ１００７と１００８は処理結果を出力するクエリである。【００６１】
図１０ＡのＲＳＴＲＥＡＭ変換を行うクエリを含んだクエリグラフは、図１０Ｂのように許容送信間隔が各クエリに設定される。クエリ１０１２は、クエリ１０１３の許容送信間隔２秒とクエリ１０１４の許容送信間隔３秒の最大公約数１秒が許容送信間隔として設定される。クエリ１０１７は、クエリ１０１５の許容送信間隔６秒と、クエリ１０１６の許容送信間隔４秒とクエリ１０１４の許容送信間隔３秒の最大公約数１秒が許容送信間隔として設定される。クエリ１０１８は、クエリ１０１４の許容送信間隔３秒が許容送信間隔として設定される。クエリ１０２１にはクエリ１０２２の許容送信間隔である１秒が許容送信間隔として設定される。【００６２】
図１１は図１０Ｃをクエリグラフの分岐に基づいて直線に展開したものを上から１１０１、１１０２、１１０３、１１０４として並べたものである。１１０１の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である１秒として算出される。１１０２の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である１秒として算出される。１１０３の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である１秒として算出される。１１０４の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である１秒として算出される。【００６３】
各直線の許容送信間隔は、１秒、１秒、１秒、１秒となり、最小値の１秒がクエリグラフ全体の許容送信間隔として算出される。送信間隔算出部１１１は、コンピュータ３００からサーバ２００へのデータ送信間隔として１秒を送信間隔送信部１１２に通知する。コンピュータ３００はサーバ２００に対して、１秒分のデータをまとめて送信しても出力結果に遅延を生じない。以上より、クエリグラフの制約条件の下で通信回数を少なくし、逐次データを送信するよりもネットワーク負荷や消費電力を抑制することができる。【００６４】
次に、図１２と図１３を用いてクエリグラフに全体許容送信間隔を設定出来ない場合について説明する。１２０１から１２１８はクエリを表す。また、クエリ１２０１はデータの受信を行うクエリであり、クエリ１２０７と１２０８は処理結果を出力するクエリである。【００６５】
図１２ＡのＲＳＴＲＥＡＭ変換を行うクエリを含んだクエリグラフは、図１２Ｂのように許容送信間隔が各クエリに設定される。クエリの許容送信間隔の前後関係から許容送信間隔を設定出来るクエリは存在しない。図１３は図１２Ｂを分岐に基づいて直線に展開したものをクエリグラフの上から１３０１、１３０２、１３０３、１３０４として並べたものである。１３０１と１３０２は直線の許容送信間隔が２秒と算出されているが、１３０３と１３０４については、直線の許容送信間隔を算出出来ない。よって、クエリグラフの全体許容送信間隔を設定出来ず、送信間隔算出部１１１は、コンピュータ３００からサーバ２００へのデータの送信を逐次行うよう送信間隔送信部１１２に通知する。【００６６】
次に、クエリグループ割り当て部１１３が、クエリグラフ１２１と構成情報１２２と算出したデータ送信間隔に基づいて、サーバ２００にクエリグループの割り当てを行う処理について説明する。クエリグループ割り当て部１１３は、各サーバ２００がデータ送信間隔内でデータを処理できるよう、クエリグループを割り当てることで、取得したログデータを遅滞なく解析・出力することが出来る。【００６７】
図１４はサーバ２００へのクエリグル―プ割り当て処理の流れの一例である。クエリグループ割り当て処理の開始は、送信間隔算出部１１１がデータ送信間隔を算出したタイミングでもよいし、管理サーバ１００の管理システムの管理者の指示によって開始してもよい。
（Ｓ１４０１）クエリグラフにおいて、各クエリ間のデータの送信量を算出する。
（Ｓ１４０２）データの出力を開始するクエリからクエリ間のデータ送信量が最小となるクエリまでをサーバへ割り当てるクエリグループの候補として設定する。
（Ｓ１４０３）サーバへ割り当てるクエリグループの候補を、算出したデータ送信間隔内で処理可能なサーバが存在するかをサーバの構成情報１２２に基づいて判定する。
（Ｓ１４０４）サーバへ割り当てるクエリグループの候補を、算出したデータ送信間隔内で処理可能なサーバが存在する場合にＳ１４０６に、存在しない場合にＳ１４０５の処理を行う。
（Ｓ１４０５）クエリ間のデータ送信量が次に小さくなるクエリまでを、サーバへ割り当てるクエリグループの候補として設定する。
（Ｓ１４０６）割り当てるクエリグループの候補を、Ｓ１４０４で判定したサーバに割り当てる。
（Ｓ１４０７）クエリグラフ内の全てのクエリをサーバに割り当てたか判定する。割り当てた場合はクエリグループ割り当て処理を終了する。割り当てが終了していない場合は、クエリグラフ内のクエリグループの割り当てが終わっていないクエリに対して、Ｓ１４０２の処理を行う。【００６８】
以上の操作によって、複数のサーバ２００でログデータ３４１に対してクエリグラフ１２１に基づいて解析処理を行う際に、データ出力に遅延なく処理を行うことが可能となる。【００６９】
次に、図１５と図１６を用いて実際にサーバにクエリグループを割り当てる処理について説明する。【００７０】
図１５は、割り当て対象のクエリである。１５０１から１５０５はクエリを示している。本発明の手法を使い、データ送信間隔は１秒と算出出来る。図１６は、図１の構成情報１１２の具体例の一例であり、例えばクエリの想定処理タプル数やタプル毎処理時間、想定処理時間が格納されている。想定処理タプル数は、例えば入力タプルとクエリの情報から算出できる。具体的には、集約処理(Group byなど)を特定時間間隔で行うクエリでは、特定時間内にクエリに入力されるタプルのGroup by指定カラムのカラム値種類数の積が、後段クエリに渡す処理タプル数の上限となる。それ以外のクエリでは、前段クエリの処理タプル数がそのまま後段クエリの処理タプル数となる。Group by以外に、例えば1カラムに対するＳＵＭ処理やＡＶＧ処理でも後段クエリに渡す処理タプル数が減少する。想定処理時間は、例えばクエリの実測処理時間から算出出来る。【００７１】
まず、１５Ａのクエリグラフについて、各クエリ間のデータの送信量を算出し、クエリグループ間のデータ送信量が最小となるクエリグループ候補を求める。この最小となるクエリグループの求め方は後に説明する。クエリグラフ内の全てのクエリを１つのクエリグループに割り当てる場合、クエリグラフ間のデータ送信が必要無いため、データ送信量が最小となる。【００７２】
１５Ｂに、全てのクエリを１クエリグループで処理する例を示した。まず、データ送信量が最小となる１５Ｂについて、処理時間を算出して、許容送信間隔内で処理可能なサーバが存在するかを判定する。処理時間は、図１６の情報を用いて算出する。クエリグループを構成するクエリの想定処理時間の合計が、クエリグループの想定処理時間となる。１５Ｂでは、１秒間に受信するデータの想定処理時間の合計が２秒となり、算出したデータ送信間隔より長くなっている。よって１秒ごとにデータを受信しても受信するデータを処理しきれず、未処理データが無制限にたまってしまう。【００７３】
１５Ｃは、クエリグループ間のデータ送信量が１５Ｂの次に小さいクエリグループ割り当てである。サーバ１に割り当てたクエリグループの想定処理時間の合計が１秒となり、入力データ量と処理可能量がバランスする。その後、クエリグループ割り当て部１１３はクエリグループ割り当てが行われていない１５０５クエリを、他のサーバに対してクエリグループ割り当てを行う。以上の操作によって、処理結果の出力に遅延を生じることなくデータの処理が可能となる。【００７４】
図１７はクエリグループ間通信量の小さいクエリグループ抽出処理の流れの一例である。クエリグループ抽出処理の開始は、送信間隔算出部１１１がデータの送信間隔を算出したタイミングでもよいし、管理サーバ１００の管理システムの管理者の指示によって開始してもよい。
（Ｓ１７０１）クエリグラフにおいて、「データ入力側でGroup byを含むRSTREAM処理を行うクエリ数が最も多い、クエリグループ候補」を抽出し、「データ入力側のGroup byを含むＲＳＴＲＥＡＭ処理数」を記憶する。
（Ｓ１７０２）抽出したクエリグループと同じ、「データ入力側のGroup byを含むＲＳＴＲＥＡＭ処理数」を持つすべてのクエリグループ候補について「データがクエリグループ間を往復する、クエリグループ候補」か判定し、「往復しない」と判定された候補が存在する場合にＳ１７０３、存在しない場合にＳ１７０４の処理を行う。
（Ｓ１７０３）「往復しない」クエリグループ候補を「クエリグループ割り当て処理」に渡して、処理終了。
（Ｓ１７０４）「データ入力側でGroup byを含むＲＳＴＲＥＡＭ処理を行うクエリ数が抽出候補の次にすくない、クエリグループ候補」が存在しないか判定し、存在する場合にＳ１７０５、存在しない場合にS１７０６の処理を行う。
（Ｓ１７０５）「往復しない」クエリグループ候補が存在しないと「クエリグループ割り当て処理」に通知して、処理終了。
（Ｓ１７０６）「データ入力側でGroup byを含むＲＳＴＲＥＡＭ処理を行うクエリ数が
抽出候補の次にすくない、クエリグループ候補」を抽出する。「データ入力側のGroup byを含むＲＳＴＲＥＡＭ処理数」を記憶し、Ｓ１７０２の処理を行う。【００７５】
以上の操作によって、クエリグループ間通信量の小さいクエリグループ抽出処理を行うことが可能となる。ネットワーク負荷を低減することが可能となる。【００７６】
次に、図１８と図１９を用いてクエリグループ間通信量の小さいクエリグループ抽出処理について説明する。図１８は、割り当て対象のクエリである。１８０１から１８０６と１８１１から１８１６はクエリを表す。図１９は、クエリグループ間をデータが往復する場合と往復しない場合の具体例である。クエリグラフ内の全てのクエリを１つのクエリグループに割り当てる場合、クエリグラフ間のデータ送信が必要無いため、データ送信量が最小となる。【００７７】
１８Ａに示した、全てのクエリを１クエリグループで含む場合から処理を始める。１８Ａをクエリグループ間通信量の最も小さいクエリグループとしてクエリグループ割り当て処理に渡し、割り当てが行えなかった場合には、次にクエリグループ間送信量が小さいクエリグループの抽出を行う。次にクエリグループ間送信量が小さいクエリグループは、「Group byを含むＲＳＴＲＥＡＭ処理」である１８１５クエリを含まない１８Ｂである。このクエリグループについて、クエリグループ割り当て処理を行う。１８Ｂのクエリグループについても、割り当て処理が行えなかった場合には、次に「Group byを含むＲＳＴＲＥＡＭ処理」が少ないクエリグループを抽出する。なお、この抽出の際に、図１９に示すようなクエリグループ間のデータ往復が発生しない事が望ましい。クエリ１９０１と１９０２はデータ出力に関するクエリである。【００７８】
図１９の１９Ａではクエリグループ１とクエリグループ２の間をデータが往復している。一方、１９Ｂではクエリグループ３とクエリグループ間をデータが往復していない。よって、クエリグラフ１９Ａではデータ出力までにグループ間、すなわちサーバ間でデータのやり取りが２回生じてしまうが、クエリグラフ１９Ｂではサーバ間のデータのやりとりは１回しか生じない。クエリグループ間の往復を判定する方法の一例としては、データ入力からデータ出力までの各径路について、同じクエリグループを複数回辿らないかを判定し、辿る場合にはデータがクエリグループ間を往復していると判定できる。【００７９】
図２０は、クエリグラフ１２１を管理サーバ１００の管理者が出力デバイス１６０を通して確認する例の一例である。クエリグラフ２００２は、データ送信間隔の算出対象のクエリグラフを表している。算出結果２００３は、データ送信間隔の算出結果である。チューニングポイント２００４は、データ送信間隔を長くするための方法が示されている。【００８０】
この例では、算出結果２００３は、データ送信間隔が１秒である事と、直線Ａと直線Ｂの許容送信間隔が１秒である事を示している。チューニングポイント２００４は、クエリａとクエリｂの許容送信間隔を２秒にすると、データ送信間隔を２秒に長く出来る事を示している。【００８１】
例えば、管理サーバ１００の管理システムの管理者は、２００１のインターフェース上でクエリグラフ１２１を確認し、業務要件を満たす範囲でクエリを変更して許容送信間隔を設定・変更することでログデータのデータ送信間隔を制御することが可能となる。管理者がコンピュータ３００からサーバ２００へのログデータのデータ送信間隔を制御することで、ログデータの送信回数を少なくし、消費電力を抑制するよう設定することが可能となる。
【実施例２】
【００８２】
次に、データ送信間隔の算出方法の別の実施形態について、図２１と図２２を使って説明する。【００８３】
クエリグラフの全体許容送信間隔は、実施例１の直線に展開する方法以外でも算出することができる。具体的には、クエリグラフに基づいた処理全体のデータを受信するクエリから処理結果を出力するクエリを辿り、全ての経路に許容送信間隔が設定できるクエリが存在するか調べ、全ての経路で許容送信間隔が設定できる場合には各径路の許容送信間隔の最大公約数を処理全体の許容送信間隔とできる。【００８４】
図２１は、各クエリに許容送信間隔を設定後のクエリグラフの一例である。クエリ上の数字は許容送信間隔を示している。２１１１、２１１２、２１１３、２１１４、２１１５、２１１６、２１１７、２１２１、２１２２、２１２３、２１２４、２１３１、２１３２、２１３３、２１３４、２１３５はクエリを表している。２１１４に許容送信間隔２秒、２１１５に許容送信間隔１秒、２１１６に許容送信間隔１秒、２１２３に許容送信間隔２秒、２１３３に許容送信間隔３秒が設定されている。【００８５】
２１１０コンピュータ１の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである２１４０出力から、データ受信を行うクエリである２１１２への各径路について、許容送信間隔が設定出来るか調べる。２１４０から２１１１へは、３つの経路があり、２１１５と２１１６には許容送信間隔１秒、２１１４には許容送信間隔２秒が設定されている。各径路の許容送信間隔の最大公約数である１秒が、コンピュータ1処理のデータ送信間隔として設定される。【００８６】
２１２０コンピュータ２の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである２１４０出力から、データ受信を行うクエリである２１２２への各径路について、許容送信間隔が設定出来るか調べる。２１４０から２１２２へは、１つの経路があり、２１２３には許容送信間隔２秒が設定されている。許容送信間隔の２秒が、コンピュータ２処理のデータ送信間隔として設定される。【００８７】
２１３０コンピュータ３の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである２１４０出力から、データ受信を行うクエリである２１３２への各径路について、許容送信間隔が設定出来るか調べる。２１４０から２１３２へは、２つの経路があり、２１３３には許容送信間隔３秒が設定されている。しかし、２１４０、２１３４、２１３２の経路には許容送信間隔が設定できないため、コンピュータ３の処理にはデータ送信間隔が設定できない。【００８８】
以下、本実施例で行われる処理を説明する。図２２は、データ送信間隔算出処理の流れの一例を示す。【００８９】
送信間隔算出部１１１は、管理サーバ１００がログデータの解析の指示を受けると、コンピュータ３００からサーバ２００へのデータ送信間隔の算出処理を開始する。ログデータの解析は管理サーバ１００の管理システムの管理者のクエリグラフ実行の要求によって始まってもよいし、クエリグラフが記憶装置１２１に新たに格納されたタイミングで開始してもよい。
（Ｓ２２０１）許容送信間隔算出処理が開始されると、送信間隔算出部１１１はクエリグラフの各クエリの許容送信間隔を設定する。
（Ｓ２２０２）送信間隔算出部１１１は、クエリグラフに許容送信間隔が設定出来るか未確認の経路があるか否かを判断する。その判断結果が肯定の場合、Ｓ２２０３が実行され、その判断結果が否定の場合、Ｓ２２０４が実行される。
（Ｓ２２０３）送信間隔算出部１１１は、クエリグラフの経路の一つに許容送信間隔が設定出来るかの確認を行い、設定できる場合には許容送信間隔を算出する。
（Ｓ２２０５）送信間隔算出部１１１は、すべての経路に許容送信間隔が設定されているか否かを判断する。その判断結果が肯定の場合、Ｓ２２０６が実行され、その判断結果が否定の場合、Ｓ２２０７が実行される。
（Ｓ２２０６）送信間隔算出部１１１は、各径路の許容送信間隔の最大公約数をクエリグラフ全体の許容送信間隔とする。
（Ｓ２２０７）送信間隔算出部１１１は、クエリグラフ全体の許容送信間隔を、コンピュータ３００からサーバ２００へのログデータのデータ送信間隔として送信間隔送信部１１２に通知する。これにより処理を終了する。
（Ｓ２２０８）送信間隔算出部１１１は、コンピュータ３００からサーバ２００へのデータのデータ送信間隔を設定出来ないことを送信間隔送信部１１２に通知する。これにより処理が終了する。クエリグラフ全体の許容送信間隔が設定できなかった場合には、コンピュータ３００からサーバ２００へデータを逐次送信することとなる。【００９０】
なお、Ｓ２２０２とＳ２２０３は行わずに、Ｓ２２０５を行ってもよい。これによって、データ送信間隔の算出までの手順を少なくすることが出来る。【００９１】
本発明は前述した実施例に限定されるものではない。例えば、工場のＩｏＴシステムに対して、本発明を適用した場合について説明する。【００９２】
工場内に取り付けられたセンサデバイスからデータを収集し、クエリグラフ１２１に基づいて設備の故障検知を行う場合がある。センサデバイスは危険な場所に設置されるため、電池駆動が多く、取得したデータを無線でサーバに送信する飛ばす必要がある。クエリグラフ１２１に基づいてデータ送信間隔を設定することで、データの送信回数を少なくして電池の消費を抑制し、電池交換の頻度を少なくすることが出来る。
【符号の説明】
【００９３】
１００  管理サーバ
１１０  メモリ
１１１  送信間隔算出部
１１２  送信間隔送信部
１１３  クエリグループ割り当て部
１１４  クエリグループ実行結果処理部
１２０  記憶装置
１２１  クエリグラフ
１２２  構成情報
１３０  プロセッサ
１４０  ネットワークインターフェース
１５０  入力デバイス
１６０  出力デバイス
２００  サーバ
２１０  ネットワークインターフェース
２２０  プロセッサ
２３０メモリ
２３１  クエリグループ実行部
３００  コンピュータ
３１０  ネットワークインターフェース
３２０  プロセッサ
３３０  メモリ
３３１  データ送信部
３４０  記憶装置
３４１  ログデータ
４００  通信ネットワーク
【図１】
0006626198.tif 000002
【図２】
0006626198.tif 000003
【図３】
0006626198.tif 000004
【図４】
0006626198.tif 000005
【図５】
0006626198.tif 000006
【図６】
0006626198.tif 000007
【図７】
0006626198.tif 000008
【図８】
0006626198.tif 000009
【図９】
0006626198.tif 000010
【図１０】
0006626198.tif 000011
【図１１】
0006626198.tif 000012
【図１２】
0006626198.tif 000013
【図１３】
0006626198.tif 000014
【図１４】
0006626198.tif 000015
【図１５】
0006626198.tif 000016
【図１６】
0006626198.tif 000017
【図１７】
0006626198.tif 000018
【図１８】
0006626198.tif 000019
【図１９】
0006626198.tif 000020
【図２０】
0006626198.tif 000021
【図２１】
0006626198.tif 000022
【図２２】
0006626198.tif 000023