特許第6626198号(P6626198)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
特許6626198管理装置、実行環境設定方法、ストリームデータ処理システム
<>
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000002
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000003
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000004
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000005
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000006
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000007
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000008
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000009
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000010
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000011
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000012
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000013
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000014
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000015
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000016
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000017
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000018
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000019
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000020
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000021
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000022
  • 特許6626198-管理装置、実行環境設定方法、ストリームデータ処理システム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6626198
(24)【登録日】2019年12月6日
(45)【発行日】2019年12月25日
(54)【発明の名称】管理装置、実行環境設定方法、ストリームデータ処理システム
(51)【国際特許分類】
   G06F 16/25 20190101AFI20191216BHJP
   G06F 16/27 20190101ALI20191216BHJP
   G06F 17/40 20060101ALI20191216BHJP
【FI】
   G06F16/25
   G06F16/27
   G06F17/40 320A
【請求項の数】15
【全頁数】23
(21)【出願番号】特願2018-524589(P2018-524589)
(86)(22)【出願日】2016年6月27日
(86)【国際出願番号】JP2016068942
(87)【国際公開番号】WO2018002976
(87)【国際公開日】20180104
【審査請求日】2018年12月21日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】土田 隼之
(72)【発明者】
【氏名】今木 常之
【審査官】 後藤 彰
(56)【参考文献】
【文献】 国際公開第2014/204489(WO,A2)
【文献】 特開2014−81759(JP,A)
【文献】 特開2010−217968(JP,A)
【文献】 国際公開第2014/188500(WO,A1)
【文献】 特開2013−114626(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/25
G06F 16/27
G06F 17/40
(57)【特許請求の範囲】
【請求項1】
ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理装置であって、
前記管理装置は、
プロセッサと格納部を備え、
前記格納部は、
複数の前記クエリから構成されるクエリグラフに関する情報を格納し、
前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔で前記ストリームデータの処理を実行する処理に関する情報を含み、
前記プロセッサは、
前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信することを特徴とする管理装置。
【請求項2】
請求項1に記載の管理装置であって、
前記クエリグラフは、
前記第二の処理装置が前記ストリームデータを受信する処理に関する受信クエリと、
前記第二の処理装置が前記クエリに基づいて処理を実行した結果を出力する処理に関する出力クエリを含み、
前記プロセッサは、
前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の経路上に存在する前記クエリに設定された前記所定の間隔に基づいて、
前記データ送信間隔を算出することを特徴とする管理装置。
【請求項3】
請求項2に記載の管理装置であって、
前記データ送信間隔は、前記クエリに設定された前記所定の間隔の最大公約数であることを特徴とする管理装置。
【請求項4】
請求項2に記載の管理装置であって、
前記データ送信間隔は、前記クエリに設定された前記所定の間隔の最小値であることを特徴とする管理装置。
【請求項5】
請求項2に記載の管理装置であって、
前記データ送信間隔は、前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の各経路の前記クエリの前記所定の間隔の最小値の最大公約数であることを特徴とする管理装置。
【請求項6】
請求項1に記載の管理装置であって、
前記格納部は、
前記第二の処理装置の前記クエリに基づいた処理の実行時間に関する情報を含む構成情報を格納し、
前記プロセッサは、
前記クエリグラフと前記構成情報に基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする管理装置。
【請求項7】
請求項6に記載の管理装置であって、
前記プロセッサは、
前記クエリグラフと前記構成情報に基づいて、前記第二の処理装置の前記割り当てられたクエリに基づいた処理にかかる時間が、前記データ送信間隔の時間内に収まるように一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする管理装置。
【請求項8】
ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理システムによるストリームデータ処理の実行環境設定方法であって、
前記管理システムは、
複数の前記クエリから構成される前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
少なくとも一つの前記クエリに設定されるストリームデータの処理を実行する間隔である実行間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信する
ことを特徴とする実行環境設定方法。
【請求項9】
請求項8に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフにおける前記第二の処理装置が前記ストリームデータを受信する処理に関する受信クエリと前記第二の処理装置が前記クエリに基づいて処理を実行した結果を出力する処理に関する出力クエリとの間の経路上に存在する前記クエリに設定された前記実行間隔に基づいて、
前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項10】
請求項9に記載の実行環境設定方法であって、
前記管理システムは、
前記実行間隔と前記クエリグラフに基づいて、前記実行間隔の最大公約数となる前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項11】
請求項9に記載の実行環境設定方法であって、
前記管理システムは、
前記実行間隔と前記クエリグラフに基づいて、前記実行間隔の最小値となるデータ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項12】
請求項9に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフにおける前記受信クエリと前記出力クエリとの間の経路ごとに前記クエリの前記実行間隔の最小値を算出し、
前記算出した最小値の最大公約数となる前記データ送信間隔を算出することを特徴とする実行環境設定方法。
【請求項13】
請求項8に記載の実行環境設定方法であって、
前記管理システムは、
前記第二の処理装置が前記クエリに基づいた処理の実行時間に関する情報を含む構成情報と前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする実行環境設定方法。
【請求項14】
請求項13に記載の実行環境設定方法であって、
前記管理システムは、
前記クエリグラフと前記構成情報に基づいて、前記第二の処理装置の前記割り当てられたクエリに基づいた処理にかかる時間が前記データ送信間隔の時間内に収まるように一つ以上の前記クエリを前記第二の処理装置に割り当てることを特徴とする実行環境設定方法。
【請求項15】
管理装置と第一の処理装置と第二の処理装置からなるストリームデータ処理システムであって、
前記管理装置は、
第一のプロセッサと第一の格納部を備え、
前記第一の格納部は、
複数のクエリから構成されるクエリグラフに関する情報を格納し、
前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔でストリームデータの処理を実行する処理に関する情報を含み、
前記第一のプロセッサは、
前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、
前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、
前記データ送信間隔に関する情報を前記第一の処理装置に送信し、
前記第一の処理装置は、
第二のプロセッサと第二の格納部を備え、
前記第二の格納部は、
前記受信したデータ送信間隔に関する情報と前記ストリームデータとして送信されるデータを格納し、
前記第二のプロセッサは、
前記受信したデータ送信間隔に関する情報に基づいて、前記第二の格納部に格納されたデータを前記ストリームデータとして前記第二の装置に送信し、
前記第二の処理装置は、
第三のプロセッサを備え、
前記第三のプロセッサは、
前記割り当てられたクエリに基づいて、前記受信したストリームデータに対して処理を実行し、
前記処理結果を出力することを特徴とするストリームデータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、データの分析に関する。
【背景技術】
【0002】
近年、コンピュータやセンサなど世の中の様々な物を大量に接続し、各コンピュータやネットワーク機器などから取得したログデータを解析しネットワークの負荷を予測することや、設備の監視・メンテナンスなどを行うIoTシステムに対する要求が高まっている。
【0003】
一般的に、ネットワーク分析では、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。
【0004】
例えば、企業などにおいて社内ネットワークのネットワーク分析を行う際に、ネットワークに接続されたコンピュータのネットワークアクセスを記録したアクセスログを解析し、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。また工場においては、設備の温度や振動量を測定し、異常値が検出された場合には管理者へ連絡するシステムが考えられる。
【0005】
従来のデータベース管理システム(DBMS)でデータを処理する場合には、時々刻々と到着するデータ(ストリームデータ)を一旦従来のデータベースが検索可能なデータ形式に変更して二次記憶装置に格納する必要があった。この変換処理と格納には大きな時間がかかり、データをまとめて一括で処理を行った方が効率的に行えるため、日単位の日次バッチなどで行われる事が多く、リアルタイムにデータ分析を行う事が出来ない。一括で処理を行った方が効率的である理由として、例えば従来のデータベースで一般的に用いられる二次索引へ逐次的にデータ1件毎に追加するのではなく、一括で追加した方が時間コストの大きい二次記憶へのアクセス量を抑えられる事が挙げられる。しかし、前述のログデータは従来のデータベースに格納して、日次バッチで処理するよりも、リアルタイムに鮮度の高いまま処理を行うストリームデータ処理を行うのが望ましい。例えば、ネットワークの負荷予測に対しては、ネットワークが過負荷になるタイミングを予測し、ネットワーク機器の切り替えや増強を行うことで、ネットワークのダウンを未然に防止することが可能となる。また工場における設備の故障に対しては、早いタイミングで検知するほど損失を抑えることが可能になる。
【0006】
しかし、ストリームデータ処理を行うためにストリームデータのリアルタイム処理アプリケーションを個別に作成すると、開発期間の長期化、処理内容の変化への迅速な対応が困難といった問題がある。そこで汎用のストリームデータ処理システムやストリームデータ処理クエリが提案されている。例えば、非特許文献1には、ストリームデータ処理システムが開示されている。
【0007】
また、ストリームデータ処理システムに関する技術として、特許文献1ではストリームデータ処理において装置間の通信回数を減らす方法が提案されている。
【先行技術文献】
【特許文献】
【0008】

【特許文献1】米国特許 US 9,141,677 B2
【非特許文献】
【0009】
【非特許文献1】Arvind Arasu, Shivnath Babu, Jennifer Widom著: ”The CQL continuous query language: semantic foundations and query execution.”, VLDB J. (2006)
【発明の概要】
【発明が解決しようとする課題】
【0010】
大企業においてネットワークの負荷の算出を行う場合には、ネットワークに接続された数万〜数十万のコンピュータを監視する。コンピュータのログデータを解析するためには各コンピュータやネットワーク機器などからサーバ等にログデータを送信する必要がある。ネットワーク負荷の低減や、通信にかかる消費電力を抑制する観点から、コンピュータやネットワーク機器などからサーバへのログデータの送信間隔を長くして、送信回数を少なくすることが望ましい。
【0011】
また、IoTシステムで良く用いられる無線センサは電池駆動が多く、センサデータの送信間隔を長くし、送信回数を少なくする事により通信電力消費を抑制し、駆動時間を長くする事が望ましい。センサデータの送信間隔が長くなると、無線親機が扱える子機数が増えるため、システム全体の価格を抑えることも可能になる。これは、複数の通信が重なった場合には通信を中断し、一定時間後に再度通信を試みる、という通信で広く使われるCSMA/CDプロトコルにおいて、通信間隔が長くなると通信の重なりが起こりにくくなるためである。
【0012】
しかし、単純にデータの送信間隔を長くすると、結果出力遅延が発生し、処理がリアルタイムに行えなくなってしまう。そのため、結果出力遅延と通信回数削減効果のトレードオフからデータの送信間隔を算出する必要がある。
【0013】
しかし、従来技術ではストリームデータ処理のデータ送信間隔については考慮されていない。そのため、より長い間隔でデータを送信してもリアルタイムに処理が出来る場合であっても、短い送信間隔が用いられる可能性がある。特許文献1では、ストリームデータ処理において装置間の通信回数を減らす方法が提案されている。通信の多いクエリ処理の組を同一装置で処理する事により、装置間の通信回数を減らす方法であるが、通信の間隔は扱われていないため、ストリームデータの送信間隔を長くして送信回数を減らすことによるネットワーク負荷の低減や省電力効果は見込めない。
【課題を解決するための手段】
【0014】
本発明の代表的な一形態は、ストリームデータを送信する第一の処理装置とクエリに基づいて前記第一の処理装置から受信した前記ストリームデータに対して処理を実行する第二の処理装置とネットワークを介して接続される管理装置であって、前記管理装置は、プロセッサと格納部を備え、前記格納部は、複数の前記クエリから構成されるクエリグラフに関する情報を格納し、前記クエリグラフを構成する少なくとも一つの前記クエリは、所定の間隔で前記ストリームデータの処理を実行する処理に関する情報を含み、前記プロセッサは、前記クエリグラフに基づいて、一つ以上の前記クエリを前記第二の処理装置に割り当て、前記所定の間隔と前記クエリグラフに基づいて、前記第一の処理装置が前記ストリームデータを前記第二の処理装置に送信する間隔であるデータ送信間隔を算出し、前記データ送信間隔に関する情報を前記第一の処理装置に送信することを特徴とするものである。
【発明の効果】
【0015】
本発明を用いることにより、ストリームデータ処理システムの処理結果出力に影響を与えない範囲でシステム全体の電力消費の抑制や、ネットワーク負荷を低減することが出来る。
【図面の簡単な説明】
【0016】
図1】実施例1に係るシステム全体の構成を示す。
図2】実施例1のストリームデータ処理のフローを示す。
図3】クエリグラフの一例を示す。
図4】ログデータの一例を示す。
図5】許容送信間隔を設定したクエリグラフの一例を示す。
図6】許容送信間隔を設定した直線のクエリグラフの一例を示す。
図7】展開したクエリグラフの一例を示す。
図8】許容送信間隔の算出方法の一例を示す。
図9】実施例1に係るデータ送信間隔の算出処理のフローを示す。
図10】クエリグラフ全体の許容送信間隔の算出方法の一例を示す。
図11】クエリの許容送信間隔を算出し、直線に展開したクエリグラフの一例を示す。
図12】クエリグラフ全体の許容送信間隔の算出方法の一例を示す。
図13】クエリの許容送信間隔を算出し、直線に展開したクエリグラフの一例を示す。
図14】クエリグループ割り当て処理のフローを示す。
図15】サーバと割り当てられたクエリグループとの関係の一例を示す。
図16】構成情報の一例を示す。
図17】クエリグループ抽出処理のフローを示す。
図18】サーバと割り当てられたクエリグループとの関係の一例を示す。
図19】サーバと割り当てられたクエリグループとの関係の一例を示す。
図20】出力デバイスの一例を示す。
図21】クエリグラフの一例を示す。
図22】実施例2に係るデータ送信間隔の算出処理のフローを示す。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、幾つかの実施例を説明する。
【実施例1】
【0018】
図1は、本発明の実施形態を示し、ストリームデータ処理システムの一例を示している。
【0019】
管理サーバ100は、クエリグラフの実行の際に、コンピュータ300がログデータ341をサーバ200に送信する間隔であるデータ送信間隔をコンピュータ300に送信し、ログデータ341に対してデータ処理を実行するクエリグループをサーバ200に割り当てる。そしてサーバ200でのクエリグループの実行結果に基づき、クエリグラフの実行結果を外部に出力する。管理サーバ100と一つ又は複数のサーバ200と一つ又は複数のコンピュータ300が通信ネットワーク400を介して接続されている。管理サーバ100、サーバ200はデータ処理を行うのであれば、サーバに限らず仮想マシンであってもよい。通信ネットワーク400を介した通信のプロトコルとしては、例えば、FC(Fibre Channel)、SCSI(Small Computer System Interface)、又は、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されて良い。通信ネットワーク400を介した通信のプロトコルとしては、例えば、IEEE802.11、IEEE802.15.1、又は、IEEE802.15.4が採用されて良い。
【0020】
管理サーバ100はハードウェア構成として、メモリ110、記憶装置120、プロセッサ130、ネットワークインターフェース140、入力デバイス150、出力デバイス160を備える。
【0021】
プロセッサ130は、メモリ110に格納されるプログラムを実行する。プロセッサ110がプログラムを実行しコンピュータ100の機能が実現される。以下、機能部を主語の処理を説明する場合、プロセッサ130が当該機能部を実現するプログラムを実行していることを示す。
【0022】
ネットワークインターフェース140は、ネットワークを介して他の装置と接続するためのインターフェースである。
【0023】
記憶装置120は、ストリームデータに対する処理の内容を記述した一つまたは複数のクエリグラフ121と、構成情報122を格納する。クエリグラフは複数のクエリをツリー化したものであり、各クエリの処理内容とクエリの接続関係を示し、クエリに設定された処理の実行順序などの情報を含む。クエリグラフの一例を図3に示す。例えば、クエリ3003はクエリ3002の実行結果を受け取り、クエリ3003の処理が行われることを示す。クエリ3003の実行結果はクエリ3004に受け渡される。記憶装置120は、コントローラおよび複数の記憶媒体を有するストレージシステムが考えられる。また、記憶装置120は、記憶媒体を有する一般的な計算機でもよいし、記憶媒体そのものであってもよい。ここで、記憶媒体は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等が考えられる。
【0024】
入力デバイス150は、データを入力する。入力デバイス150としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス160は、データを出力する。出力デバイス160としては、たとえば、ディスプレイ、プリンタがある。
【0025】
メモリ110は、送信間隔算出部111と、送信間隔送信部112と、クエリグループ割り当て部113と、クエリグループ実行結果処理部114を実現するプログラムを格納する。各部の機能については、後述する。
【0026】
サーバ200は、コンピュータ300から送信されるログデータ341に対して、管理サーバ100から割り当てられたクエリグループの処理を実行する。サーバ200はハードウェア構成として、ネットワークインターフェース210と、プロセッサ220と、メモリ230を備える。なお、サーバ200はサーバに限るものでなくてもよく、仮想マシンでもよい。
【0027】
ネットワークインターフェース210は、ネットワークを介して他の装置と接続するためのインターフェースである。
【0028】
プロセッサ220はメモリ230に格納されるプログラムを実行する。プロセッサ220がプログラムを実行しサーバ200の機能が実現される。
【0029】
メモリ230はクエリグループ実行部231を実現するプログラムを格納する。クエリグループ実行部231は、コンピュータ300から受信したログデータ341に対して管理サーバ100から割り当てられたクエリグループの処理を実行する。処理結果は管理サーバ100もしくは他のサーバ200に出力する。
【0030】
コンピュータ300はログデータ341を管理サーバ100から受信したデータ送信間隔でサーバ200に送信する。コンピュータ300はハードウェア構成として、ネットワークインターフェース310と、プロセッサ320と、メモリ330と、記憶装置340を備える。なお、コンピュータ300はストリームデータを蓄積するものであればよく、工場のセンサデバイスであってもよい。
【0031】
ネットワークインターフェース310は、ネットワークを介して他の装置と接続するためのインターフェースである。
【0032】
プロセッサ320はメモリ330に格納されるプログラムを実行する。プロセッサ320がプログラムを実行しコンピュータ300の機能が実現される。
【0033】
メモリ330はデータ送信部331を実現するプログラムを格納する。データ送信部331は、ログデータ341を管理サーバ100から受信したデータ送信間隔に基づいてサーバ200に送信する。
【0034】
記憶装置340は、コンピュータのネットワークへのアクセスログであるログデータ341を格納する。記憶装置340は、コントローラおよび複数の記憶媒体を有するストレージシステムが考えられる。また、記憶装置340は、記憶媒体を有する一般的な計算機でもよいし、記憶媒体そのものであってもよい。ここで、記憶媒体は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)や等が考えられる。
【0035】
図2は、コンピュータ300に蓄積されるログデータ341に対して、クエリグラフ121に基づいてストリームデータ処理を実行する流れの一例である。
(S201)ログデータ341に対してクエリグラフ121に基づいた処理が開始されると、送信間隔算出部111はコンピュータ300からサーバ200へのデータ送信間隔をクエリグラフ121に基づいて算出する。コンピュータ300からサーバ200へのデータ送信間隔をクエリグラフ121に基づいて算出する手法については、後述する。
(S202)送信間隔送信部112は算出したデータ送信間隔をコンピュータ300に送信する。コンピュータ300は、受信したデータ送信間隔に基づいて、ログデータ341をサーバ200に送信する。
(S203)クエリグループ割り当て部113は、構成情報122とクエリグラフ121と算出したデータ送信間隔に基づいて、クエリグラフ121内のクエリグループをサーバ200に割り当てる。クエリグループのサーバ200への割り当て方法については、後述する。
(S204)クエリグループ実行部231は、コンピュータ300が送信したログデータ341に対して、割り当てられたクエリグループを実行する。
(S205)クエリグループ実行結果処理部114は、各サーバ200のクエリグループの実行結果を、クエリグラフ121の実行結果として処理する。
(S206)クエリグループ実行結果処理部114は、クエリグラフ121の実行結果を出力デバイス160に出力し、処理を終了する。
【0036】
なお、S206とS207では、サーバ200でのクエリグループの実行結果は管理サーバ100で処理と出力を行っているが、サーバ200が他のサーバ200に処理結果を出力することや、サーバ200が出力デバイスを持ち、その出力デバイスにサーバ200の処理結果を出力する形であっても良い。
【0037】
S201で、送信間隔算出部111が、クエリグラフ121に基づいてコンピュータ300からサーバ200へのログデータ341のデータ送信間隔を算出する方法について具体的に説明する。
【0038】
図3は、ネットワーク分析を行うクエリグラフ処理の一例である。一般的に、ネットワーク分析では、ネットワーク通信の応答時間の平均値や最大値などの基礎的な統計情報を一定時間毎に算出して、算出した値を用いて負荷予測などの高度な分析を行う。基礎的な統計情報の算出をストリームデータ処理で行う例について説明する。
【0039】
図3のクエリグラフ121は、分析対象のネットワークログを読込み、正常データの最大応答時間と通信エラー数を機器毎に算出するためのストリームデータ処理のクエリグラフであり、9つのクエリから構成されている。3001、3002、3003、3004、3005、3006、3007、3008、3009はクエリを表し、矢印はクエリ間のつながりを表している。各クエリで行う処理について説明する。分析対象のログデータ341を3001で受けとり、受け取ったデータから正常データのみの抽出処理を3002で行って、機器毎の最大応答時間を3003で4秒毎に算出する。算出結果から最大応答時間が100ミリ秒以上のデータのみの抽出を3004で行って、3005で最大応答時間の処理結果を出力デバイス160に出力している。3006では、3001で読み込まれたデータのうち通信エラーのみを抽出し、機器毎のエラー数を30秒毎に3007で算出する。3007の算出結果から、合計エラー数が5以上の機器データのみを3008にて抽出する。抽出結果を3009において出力デバイス160に出力する。
【0040】
特に、3001はコンピュータ300からログデータ341を受信するクエリであり、3005と3009はクエリグラフで実行した処理を出力するクエリである。
【0041】
図4は、処理例の入力データであるログデータ341の一例である。ログデータ341は、複数のレコードを有する。このレコードは、データ属性として、TIMESTAMP4001と、ID4002と、RESPONSE_TIME4003と、STATUS_CODE4004とを有する。
【0042】
TIMESTAMP4001は、通信ログが生成された日時を表す。ID4002は、その通信ログの通信を行った機器を識別する情報を表す。RESPONSE_TIME4003は、通信の応答時間を表す。STATUS_CODE4004は、その通信のステータスコードを表す。
【0043】
例えば、図4のレコード4005は、通信ログの生成時間(TIMESTAMP4001)が「08:03:01:01」で、機器を識別する情報(ID4002)が「1」で、通信の応答時間(RESPONSE_TIME313)が「70」で、ステータスコード(STATUS_CODE34004)が「200」であることを示す。ここで、ステータスコード「200」はデータが正常に通信されたことを示し、「50」は通信エラーが起きたことを示す。
【0044】
レコード4005と4007は、ステータスコードが「200」のため、データが正常に通信されており、クエリグラフ121の分岐の3002側の処理が行われる。レコード4005の応答時間は70ミリ秒のため、クエリ3004で抽出されず、応答時間が250ミリ秒のレコード4007は3005のクエリの処理が行われる。また、レコード4006はステータスコードが「50」のため、通信エラーが起きたことを示しており、クエリグラフ121の分岐の3006側の処理が行われる。
【0045】
なお、3003と3007にはデータを蓄積し数秒毎に出力するRSTREAM処理が含まれているため、データを逐次的に送信・処理する代わりに、RSTREAMの時間間隔でデータをまとめて送信し、統計情報算出などの処理を行っても結果出力の時間間隔に影響を与えない。この長くすることができる送信間隔を許容送信間隔と呼ぶこととする。
【0046】
図5は、各クエリに許容送信間隔を設定後の図3のクエリグラフの一例である。5001、5002、5003、5004、5005、5006、5007、5008、5009はクエリを表している。5003に許容送信間隔4秒、5007に許容送信間隔30秒が図3のクエリグラフを読み取ることで設定される。
【0047】
次に、クエリに許容送信間隔が設定されたクエリグラフにおいて、クエリグラフ全体の許容送信間隔を算出する方法について述べる。クエリグラフ全体の許容送信間隔とは、各クエリの許容送信間隔に基づいて算出されたクエリグラフ全体で設定される許容送信間隔のことである。クエリグラフ全体の許容送信間隔を算出した場合、各クエリ間のデータのやりとりをクエリグラフ全体の許容送信間隔まで長くしても、データ出力に対する遅延は生じない。このクエリグラフ全体の許容送信間隔を全体許容送信間隔と呼ぶ。以下、全体許容送信間隔の算出方法について説明する。
【0048】
図6をもちいて、直線で構成されているクエリグラフの全体許容送信間隔の設定の方法の1例を説明する。クエリグラフ601はクエリ6001、6002、6003、6004からなる直線のクエリグラフで構成されており、クエリの許容送信間隔が6002と6003に設定されている。6001がデータの受信に関するクエリであり、6004がデータの処理結果の出力に関するクエリである。この場合、6002と6003の許容送信間隔の最小値である2秒でまとめてデータを送信しても、データの処理に遅延を生じない。よって2秒が、クエリグラフ601の全体許容送信間隔となる。
【0049】
図7は、クエリグラフの処理結果の出力に関するクエリからデータの受信に関するクエリまでの各経路を直線に展開後の図3のクエリグラフの一例である。直線A701と直線B702は、それぞれ展開後の経路を表している。クエリ5003には許容送信間隔4秒が設定されており、クエリ5007には許容送信間隔30秒が設定されている。それぞれの許容送信間隔の最大公約数である2秒が、クエリグラフ全体の許容送信間隔となる。この場合、コンピュータ300からサーバ200へのログデータの受信を行うクエリ5001において、全体許容送信間隔の2秒間分のデータをまとめて受信しても、データの出力に遅延を生じない。データを逐次受信するよりも、2秒分まとめて受信することで通信回数を低減し、ネットワーク負荷や消費電力を抑制することが出来る。
【0050】
なお、クエリグラフに分岐がない場合には、直線の許容送信間隔をクエリグラフの全体許容送信間隔として設定出来る。
【0051】
次に、クエリグラフにおいて、許容送信間隔の設定されているクエリから、設定されていないクエリの許容送信間隔を算出する手法について、図8を用いて説明する。
【0052】
図8Aは、分岐を構成するクエリのうち、入力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信時間が設定されていない場合の展開方法の例である。801、802、803はクエリである。801には許容送信間隔2秒が設定されており、802には許容送信間隔6秒が設定されている。図8Aのように、入力側クエリが複数有り、入力側クエリに許容送信間隔が設定されており、出力側クエリには設定されていない場合には、入力側クエリの許容送信間隔の最大公約数を出力側クエリの許容送信間隔とする。従って、801の許容送信間隔2秒と、802の許容送信間隔6秒の最大公約数である2秒が803の許容送信間隔として設定される。
【0053】
図8Bは、分岐を構成するクエリのうち、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信間隔が設定されている場合の展開方法の例である。804、805、806はクエリである。805には許容送信間隔2秒が設定されており、806には許容送信間隔3秒が設定されている。図8Bのように、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信間隔が設定されている場合には、出力側クエリの許容送信間隔の最大公約数を入力側クエリの許容送信間隔とする。従って、805の許容送信間隔2秒と、806の許容送信間隔3秒の最大公約数である1秒が804の許容送信間隔として設定される。
【0054】
図8Cは、分岐を構成するクエリのうち、入力側クエリが複数有り、入力側クエリには許容送信間隔が設定されていないが、出力側クエリには許容送信時間が設定されている場合の展開方法の例である。807、808、809はクエリである。809には許容送信間隔2秒が設定されている。図9Cのように、入力側クエリが複数有り、入力側クエリに許容送信間隔が設定されていないが、出力側クエリには設定されている場合には、出力側クエリの許容送信間隔をそのまま入力側クエリの許容送信間隔とする。従って、809の許容送信間隔2秒が、807と808の許容送信間隔として設定される。
【0055】
図8Dは、分岐を構成するクエリのうち、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信間隔が設定されていない場合の展開方法の例である。810、811、812はクエリである。810には許容送信間隔1秒が設定されている。図8Dのように、出力側クエリが複数有り、入力側クエリには許容送信間隔が設定されているが、出力側クエリには許容送信間隔が設定されていない場合には、入力側クエリの許容送信間隔をそのまま出力側クエリの許容送信間隔とする。従って、810の許容送信間隔1秒が、811と812の許容送信間隔として設定される。
【0056】
なお、前述した手法を用いて許容送信間隔の設定されたクエリの許容送信間隔に基づいて、許容送信間隔の設定されていないクエリにさらに前述の算出処理を実行してもよい。また、許容送信間隔の設定されているクエリの処理の前もしくは後のクエリが許容送信間隔を設定されていない、かつ前もしくは後のクエリが一つしかない場合は、前もしくは後のクエリの許容送信間隔を許容送信間隔の設定されたクエリの許容送信間隔と等しいとして設定してもよい。
【0057】
図9を用いて、送信間隔算出部111がクエリグラフ121に基づいてデータの送信間隔を設定する処理の流れの一例を示す。
【0058】
送信間隔算出部111は、管理サーバ100がログデータの解析の指示を受けると、コンピュータ300からサーバ200へのデータ送信間隔の算出処理を開始する。ログデータの解析は管理サーバ100の管理システムの管理者のクエリグラフ実行の要求によって始まってもよいし、クエリグラフが記憶装置121に新たに格納されたタイミングで開始してもよい。
(S901)データ送信間隔の算出処理が開始されると、送信間隔算出部111はクエリグラフ121のRSTREAM変換を行うクエリに対して、変換秒数を許容送信間隔として設定する。
(S902)許容送信間隔の設定されたクエリグラフにおいて、クエリの前後関係から新たに許容送信間隔が設定可能なクエリがあるか判定する。ある場合はS903の処理を、ない場合はS904の処理を行う。
(S903)図8を用いて説明したように、クエリの前後関係を参照しクエリの許容送信間隔を設定する。設定したらS902の処理に戻る。
(S904)クエリグラフに分岐があるか判定する。分岐がある場合はS905の処理を、ない場合はS906の処理を行う。
(S905)図7を用いて説明したように、分岐をもとにクエリグラフを直線に展開する。直線に展開したら、S904の処理に戻る。
(S906)展開後の各直線に対して、図6で説明したように直線の許容送信間隔を算出する。具体的には、直線内のクエリの許容送信間隔の最小値を直線の許容送信間隔とする。
(S907)展開後の直線全てに許容送信間隔が設定されているか判定する。設定されている場合にはS908の処理を、設定されていない直線がある場合にはS910の処理を行う。
(S908)すべての展開後の直線の許容送信間隔の最小値を、クエリグラフ全体の許容送信間隔として設定する。なお、全てのクエリの許容送信間隔の最小値をクエリグラフ全体の許容送信間隔として選んでも良い。
(S909)送信間隔算出部111は、クエリグラフ全体の許容送信間隔を、コンピュータ300からサーバ200へのログデータのデータ送信間隔として送信間隔送信部112に通知する。これにより処理を終了する。
(S910)送信間隔算出部111は、コンピュータ300からサーバ200へのデータのデータ送信間隔を設定出来ないことを送信間隔送信部112に通知する。これにより処理が終了する。クエリグラフ全体の許容送信間隔が設定できなかった場合には、コンピュータ300からサーバ200へデータを逐次送信することとなる。
【0059】
なお、S902とS903については、処理をスキップしても良い。
【0060】
図10図11を用いて、送信間隔算出部111がクエリグラフ121にもとづいて、コンピュータ300からサーバ200へのデータ送信間隔を送信間隔送信部112に通知するまでの流れを具体的に説明する。図10のクエリグラフの1001から1028は全てクエリを表す。また、クエリ1001はデータの受信を行うクエリであり、クエリ1007と1008は処理結果を出力するクエリである。
【0061】
図10AのRSTREAM変換を行うクエリを含んだクエリグラフは、図10Bのように許容送信間隔が各クエリに設定される。クエリ1012は、クエリ1013の許容送信間隔2秒とクエリ1014の許容送信間隔3秒の最大公約数1秒が許容送信間隔として設定される。クエリ1017は、クエリ1015の許容送信間隔6秒と、クエリ1016の許容送信間隔4秒とクエリ1014の許容送信間隔3秒の最大公約数1秒が許容送信間隔として設定される。クエリ1018は、クエリ1014の許容送信間隔3秒が許容送信間隔として設定される。クエリ1021にはクエリ1022の許容送信間隔である1秒が許容送信間隔として設定される。
【0062】
図11図10Cをクエリグラフの分岐に基づいて直線に展開したものを上から1101、1102、1103、1104として並べたものである。1101の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である1秒として算出される。1102の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である1秒として算出される。1103の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である1秒として算出される。1104の直線の許容送信間隔は、直線内に存在するクエリの許容送信間隔の最小値である1秒として算出される。
【0063】
各直線の許容送信間隔は、1秒、1秒、1秒、1秒となり、最小値の1秒がクエリグラフ全体の許容送信間隔として算出される。送信間隔算出部111は、コンピュータ300からサーバ200へのデータ送信間隔として1秒を送信間隔送信部112に通知する。コンピュータ300はサーバ200に対して、1秒分のデータをまとめて送信しても出力結果に遅延を生じない。以上より、クエリグラフの制約条件の下で通信回数を少なくし、逐次データを送信するよりもネットワーク負荷や消費電力を抑制することができる。
【0064】
次に、図12図13を用いてクエリグラフに全体許容送信間隔を設定出来ない場合について説明する。1201から1218はクエリを表す。また、クエリ1201はデータの受信を行うクエリであり、クエリ1207と1208は処理結果を出力するクエリである。
【0065】
図12AのRSTREAM変換を行うクエリを含んだクエリグラフは、図12Bのように許容送信間隔が各クエリに設定される。クエリの許容送信間隔の前後関係から許容送信間隔を設定出来るクエリは存在しない。図13図12Bを分岐に基づいて直線に展開したものをクエリグラフの上から1301、1302、1303、1304として並べたものである。1301と1302は直線の許容送信間隔が2秒と算出されているが、1303と1304については、直線の許容送信間隔を算出出来ない。よって、クエリグラフの全体許容送信間隔を設定出来ず、送信間隔算出部111は、コンピュータ300からサーバ200へのデータの送信を逐次行うよう送信間隔送信部112に通知する。
【0066】
次に、クエリグループ割り当て部113が、クエリグラフ121と構成情報122と算出したデータ送信間隔に基づいて、サーバ200にクエリグループの割り当てを行う処理について説明する。クエリグループ割り当て部113は、各サーバ200がデータ送信間隔内でデータを処理できるよう、クエリグループを割り当てることで、取得したログデータを遅滞なく解析・出力することが出来る。
【0067】
図14はサーバ200へのクエリグル―プ割り当て処理の流れの一例である。クエリグループ割り当て処理の開始は、送信間隔算出部111がデータ送信間隔を算出したタイミングでもよいし、管理サーバ100の管理システムの管理者の指示によって開始してもよい。
(S1401)クエリグラフにおいて、各クエリ間のデータの送信量を算出する。
(S1402)データの出力を開始するクエリからクエリ間のデータ送信量が最小となるクエリまでをサーバへ割り当てるクエリグループの候補として設定する。
(S1403)サーバへ割り当てるクエリグループの候補を、算出したデータ送信間隔内で処理可能なサーバが存在するかをサーバの構成情報122に基づいて判定する。
(S1404)サーバへ割り当てるクエリグループの候補を、算出したデータ送信間隔内で処理可能なサーバが存在する場合にS1406に、存在しない場合にS1405の処理を行う。
(S1405)クエリ間のデータ送信量が次に小さくなるクエリまでを、サーバへ割り当てるクエリグループの候補として設定する。
(S1406)割り当てるクエリグループの候補を、S1404で判定したサーバに割り当てる。
(S1407)クエリグラフ内の全てのクエリをサーバに割り当てたか判定する。割り当てた場合はクエリグループ割り当て処理を終了する。割り当てが終了していない場合は、クエリグラフ内のクエリグループの割り当てが終わっていないクエリに対して、S1402の処理を行う。
【0068】
以上の操作によって、複数のサーバ200でログデータ341に対してクエリグラフ121に基づいて解析処理を行う際に、データ出力に遅延なく処理を行うことが可能となる。
【0069】
次に、図15図16を用いて実際にサーバにクエリグループを割り当てる処理について説明する。
【0070】
図15は、割り当て対象のクエリである。1501から1505はクエリを示している。本発明の手法を使い、データ送信間隔は1秒と算出出来る。図16は、図1の構成情報112の具体例の一例であり、例えばクエリの想定処理タプル数やタプル毎処理時間、想定処理時間が格納されている。想定処理タプル数は、例えば入力タプルとクエリの情報から算出できる。具体的には、集約処理(Group byなど)を特定時間間隔で行うクエリでは、特定時間内にクエリに入力されるタプルのGroup by指定カラムのカラム値種類数の積が、後段クエリに渡す処理タプル数の上限となる。それ以外のクエリでは、前段クエリの処理タプル数がそのまま後段クエリの処理タプル数となる。Group by以外に、例えば1カラムに対するSUM処理やAVG処理でも後段クエリに渡す処理タプル数が減少する。想定処理時間は、例えばクエリの実測処理時間から算出出来る。
【0071】
まず、15Aのクエリグラフについて、各クエリ間のデータの送信量を算出し、クエリグループ間のデータ送信量が最小となるクエリグループ候補を求める。この最小となるクエリグループの求め方は後に説明する。クエリグラフ内の全てのクエリを1つのクエリグループに割り当てる場合、クエリグラフ間のデータ送信が必要無いため、データ送信量が最小となる。
【0072】
15Bに、全てのクエリを1クエリグループで処理する例を示した。まず、データ送信量が最小となる15Bについて、処理時間を算出して、許容送信間隔内で処理可能なサーバが存在するかを判定する。処理時間は、図16の情報を用いて算出する。クエリグループを構成するクエリの想定処理時間の合計が、クエリグループの想定処理時間となる。15Bでは、1秒間に受信するデータの想定処理時間の合計が2秒となり、算出したデータ送信間隔より長くなっている。よって1秒ごとにデータを受信しても受信するデータを処理しきれず、未処理データが無制限にたまってしまう。
【0073】
15Cは、クエリグループ間のデータ送信量が15Bの次に小さいクエリグループ割り当てである。サーバ1に割り当てたクエリグループの想定処理時間の合計が1秒となり、入力データ量と処理可能量がバランスする。その後、クエリグループ割り当て部113はクエリグループ割り当てが行われていない1505クエリを、他のサーバに対してクエリグループ割り当てを行う。以上の操作によって、処理結果の出力に遅延を生じることなくデータの処理が可能となる。
【0074】
図17はクエリグループ間通信量の小さいクエリグループ抽出処理の流れの一例である。クエリグループ抽出処理の開始は、送信間隔算出部111がデータの送信間隔を算出したタイミングでもよいし、管理サーバ100の管理システムの管理者の指示によって開始してもよい。
(S1701)クエリグラフにおいて、「データ入力側でGroup byを含むRSTREAM処理を行うクエリ数が最も多い、クエリグループ候補」を抽出し、「データ入力側のGroup byを含むRSTREAM処理数」を記憶する。
(S1702)抽出したクエリグループと同じ、「データ入力側のGroup byを含むRSTREAM処理数」を持つすべてのクエリグループ候補について「データがクエリグループ間を往復する、クエリグループ候補」か判定し、「往復しない」と判定された候補が存在する場合にS1703、存在しない場合にS1704の処理を行う。
(S1703)「往復しない」クエリグループ候補を「クエリグループ割り当て処理」に渡して、処理終了。
(S1704)「データ入力側でGroup byを含むRSTREAM処理を行うクエリ数が抽出候補の次にすくない、クエリグループ候補」が存在しないか判定し、存在する場合にS1705、存在しない場合にS1706の処理を行う。
(S1705)「往復しない」クエリグループ候補が存在しないと「クエリグループ割り当て処理」に通知して、処理終了。
(S1706)「データ入力側でGroup byを含むRSTREAM処理を行うクエリ数が
抽出候補の次にすくない、クエリグループ候補」を抽出する。「データ入力側のGroup byを含むRSTREAM処理数」を記憶し、S1702の処理を行う。
【0075】
以上の操作によって、クエリグループ間通信量の小さいクエリグループ抽出処理を行うことが可能となる。ネットワーク負荷を低減することが可能となる。
【0076】
次に、図18図19を用いてクエリグループ間通信量の小さいクエリグループ抽出処理について説明する。図18は、割り当て対象のクエリである。1801から1806と1811から1816はクエリを表す。図19は、クエリグループ間をデータが往復する場合と往復しない場合の具体例である。クエリグラフ内の全てのクエリを1つのクエリグループに割り当てる場合、クエリグラフ間のデータ送信が必要無いため、データ送信量が最小となる。
【0077】
18Aに示した、全てのクエリを1クエリグループで含む場合から処理を始める。18Aをクエリグループ間通信量の最も小さいクエリグループとしてクエリグループ割り当て処理に渡し、割り当てが行えなかった場合には、次にクエリグループ間送信量が小さいクエリグループの抽出を行う。次にクエリグループ間送信量が小さいクエリグループは、「Group byを含むRSTREAM処理」である1815クエリを含まない18Bである。このクエリグループについて、クエリグループ割り当て処理を行う。18Bのクエリグループについても、割り当て処理が行えなかった場合には、次に「Group byを含むRSTREAM処理」が少ないクエリグループを抽出する。なお、この抽出の際に、図19に示すようなクエリグループ間のデータ往復が発生しない事が望ましい。クエリ1901と1902はデータ出力に関するクエリである。
【0078】
図19の19Aではクエリグループ1とクエリグループ2の間をデータが往復している。一方、19Bではクエリグループ3とクエリグループ間をデータが往復していない。よって、クエリグラフ19Aではデータ出力までにグループ間、すなわちサーバ間でデータのやり取りが2回生じてしまうが、クエリグラフ19Bではサーバ間のデータのやりとりは1回しか生じない。クエリグループ間の往復を判定する方法の一例としては、データ入力からデータ出力までの各径路について、同じクエリグループを複数回辿らないかを判定し、辿る場合にはデータがクエリグループ間を往復していると判定できる。
【0079】
図20は、クエリグラフ121を管理サーバ100の管理者が出力デバイス160を通して確認する例の一例である。クエリグラフ2002は、データ送信間隔の算出対象のクエリグラフを表している。算出結果2003は、データ送信間隔の算出結果である。チューニングポイント2004は、データ送信間隔を長くするための方法が示されている。
【0080】
この例では、算出結果2003は、データ送信間隔が1秒である事と、直線Aと直線Bの許容送信間隔が1秒である事を示している。チューニングポイント2004は、クエリaとクエリbの許容送信間隔を2秒にすると、データ送信間隔を2秒に長く出来る事を示している。
【0081】
例えば、管理サーバ100の管理システムの管理者は、2001のインターフェース上でクエリグラフ121を確認し、業務要件を満たす範囲でクエリを変更して許容送信間隔を設定・変更することでログデータのデータ送信間隔を制御することが可能となる。管理者がコンピュータ300からサーバ200へのログデータのデータ送信間隔を制御することで、ログデータの送信回数を少なくし、消費電力を抑制するよう設定することが可能となる。
【実施例2】
【0082】
次に、データ送信間隔の算出方法の別の実施形態について、図21図22を使って説明する。
【0083】
クエリグラフの全体許容送信間隔は、実施例1の直線に展開する方法以外でも算出することができる。具体的には、クエリグラフに基づいた処理全体のデータを受信するクエリから処理結果を出力するクエリを辿り、全ての経路に許容送信間隔が設定できるクエリが存在するか調べ、全ての経路で許容送信間隔が設定できる場合には各径路の許容送信間隔の最大公約数を処理全体の許容送信間隔とできる。
【0084】
図21は、各クエリに許容送信間隔を設定後のクエリグラフの一例である。クエリ上の数字は許容送信間隔を示している。2111、2112、2113、2114、2115、2116、2117、2121、2122、2123、2124、2131、2132、2133、2134、2135はクエリを表している。2114に許容送信間隔2秒、2115に許容送信間隔1秒、2116に許容送信間隔1秒、2123に許容送信間隔2秒、2133に許容送信間隔3秒が設定されている。
【0085】
2110コンピュータ1の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである2140出力から、データ受信を行うクエリである2112への各径路について、許容送信間隔が設定出来るか調べる。2140から2111へは、3つの経路があり、2115と2116には許容送信間隔1秒、2114には許容送信間隔2秒が設定されている。各径路の許容送信間隔の最大公約数である1秒が、コンピュータ1処理のデータ送信間隔として設定される。
【0086】
2120コンピュータ2の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである2140出力から、データ受信を行うクエリである2122への各径路について、許容送信間隔が設定出来るか調べる。2140から2122へは、1つの経路があり、2123には許容送信間隔2秒が設定されている。許容送信間隔の2秒が、コンピュータ2処理のデータ送信間隔として設定される。
【0087】
2130コンピュータ3の処理について、データ送信間隔の算出処理を行う。クエリグラフに基づいた処理結果の出力を行うクエリである2140出力から、データ受信を行うクエリである2132への各径路について、許容送信間隔が設定出来るか調べる。2140から2132へは、2つの経路があり、2133には許容送信間隔3秒が設定されている。しかし、2140、2134、2132の経路には許容送信間隔が設定できないため、コンピュータ3の処理にはデータ送信間隔が設定できない。
【0088】
以下、本実施例で行われる処理を説明する。図22は、データ送信間隔算出処理の流れの一例を示す。
【0089】
送信間隔算出部111は、管理サーバ100がログデータの解析の指示を受けると、コンピュータ300からサーバ200へのデータ送信間隔の算出処理を開始する。ログデータの解析は管理サーバ100の管理システムの管理者のクエリグラフ実行の要求によって始まってもよいし、クエリグラフが記憶装置121に新たに格納されたタイミングで開始してもよい。
(S2201)許容送信間隔算出処理が開始されると、送信間隔算出部111はクエリグラフの各クエリの許容送信間隔を設定する。
(S2202)送信間隔算出部111は、クエリグラフに許容送信間隔が設定出来るか未確認の経路があるか否かを判断する。その判断結果が肯定の場合、S2203が実行され、その判断結果が否定の場合、S2204が実行される。
(S2203)送信間隔算出部111は、クエリグラフの経路の一つに許容送信間隔が設定出来るかの確認を行い、設定できる場合には許容送信間隔を算出する。
(S2205)送信間隔算出部111は、すべての経路に許容送信間隔が設定されているか否かを判断する。その判断結果が肯定の場合、S2206が実行され、その判断結果が否定の場合、S2207が実行される。
(S2206)送信間隔算出部111は、各径路の許容送信間隔の最大公約数をクエリグラフ全体の許容送信間隔とする。
(S2207)送信間隔算出部111は、クエリグラフ全体の許容送信間隔を、コンピュータ300からサーバ200へのログデータのデータ送信間隔として送信間隔送信部112に通知する。これにより処理を終了する。
(S2208)送信間隔算出部111は、コンピュータ300からサーバ200へのデータのデータ送信間隔を設定出来ないことを送信間隔送信部112に通知する。これにより処理が終了する。クエリグラフ全体の許容送信間隔が設定できなかった場合には、コンピュータ300からサーバ200へデータを逐次送信することとなる。
【0090】
なお、S2202とS2203は行わずに、S2205を行ってもよい。これによって、データ送信間隔の算出までの手順を少なくすることが出来る。
【0091】
本発明は前述した実施例に限定されるものではない。例えば、工場のIoTシステムに対して、本発明を適用した場合について説明する。
【0092】
工場内に取り付けられたセンサデバイスからデータを収集し、クエリグラフ121に基づいて設備の故障検知を行う場合がある。センサデバイスは危険な場所に設置されるため、電池駆動が多く、取得したデータを無線でサーバに送信する飛ばす必要がある。クエリグラフ121に基づいてデータ送信間隔を設定することで、データの送信回数を少なくして電池の消費を抑制し、電池交換の頻度を少なくすることが出来る。
【符号の説明】
【0093】
100 管理サーバ
110 メモリ
111 送信間隔算出部
112 送信間隔送信部
113 クエリグループ割り当て部
114 クエリグループ実行結果処理部
120 記憶装置
121 クエリグラフ
122 構成情報
130 プロセッサ
140 ネットワークインターフェース
150 入力デバイス
160 出力デバイス
200 サーバ
210 ネットワークインターフェース
220 プロセッサ
230メモリ
231 クエリグループ実行部
300 コンピュータ
310 ネットワークインターフェース
320 プロセッサ
330 メモリ
331 データ送信部
340 記憶装置
341 ログデータ
400 通信ネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22