JP5862245B2 - 配置装置、配置プログラムおよび配置方法 - Google Patents

配置装置、配置プログラムおよび配置方法 Download PDF

Info

Publication number
JP5862245B2
JP5862245B2 JP2011263048A JP2011263048A JP5862245B2 JP 5862245 B2 JP5862245 B2 JP 5862245B2 JP 2011263048 A JP2011263048 A JP 2011263048A JP 2011263048 A JP2011263048 A JP 2011263048A JP 5862245 B2 JP5862245 B2 JP 5862245B2
Authority
JP
Japan
Prior art keywords
query
queries
unit
processing
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011263048A
Other languages
English (en)
Other versions
JP2013114626A (ja
Inventor
高橋 秀和
秀和 高橋
喜則 坂本
喜則 坂本
信貴 今村
信貴 今村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011263048A priority Critical patent/JP5862245B2/ja
Priority to US13/644,978 priority patent/US9141677B2/en
Priority to EP12189718.5A priority patent/EP2600259B1/en
Priority to CN201210424875.5A priority patent/CN103136322B/zh
Publication of JP2013114626A publication Critical patent/JP2013114626A/ja
Application granted granted Critical
Publication of JP5862245B2 publication Critical patent/JP5862245B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、配置装置、配置プログラムおよび配置方法に関する。
様々な対象から刻々と収集される多数のデータを並列に処理する技術として複合イベント処理(CEP;Complex Event Processing)がある。複合イベント処理では、受信したデータに対してイベントの発生を検出し、発生が検出されたイベントに関する処理が実行される。なお、複合イベント処理は、ESP(Event Stream Processing)と称される場合もある。以下の説明では、CEPの技術の範囲に、ESPが含まれるものとして説明する。
複合イベント処理を行うCEPシステムでは、一時的に大量の受信データを処理する場合がある。この場合、CEPシステムにおける受信データの処理を行う装置では、処理負荷が高くなるため、処理性能が低下する場合がある。
そこで、例えば、CEPシステムでは、クラウド技術などの柔軟な資源割り当てが可能な技術を用いて、処理負荷の変動に応じて複数のサーバや仮想マシン(VM;Virtual Machine)に、処理の分散が行われる。かかる処理の分散について、一例を挙げて説明すると、処理負荷が高いサーバや仮想マシンに配置されたクエリと呼ばれる処理要求文や、クエリに付随するデータを処理要素として、他のサーバや仮想マシンに移動させて処理の分散を行う。
また、予め定められた、クエリに設定された処理の実行順序などの情報を含むクエリグラフに基づいて、実行順序が前後するクエリ、すなわち、クエリグラフにおいて隣接するクエリ同士を同一の装置に配置する技術がある。
米国特許出願公開第2009/0049187号明細書 米国特許出願公開第2009/0319687号明細書
Mehul A. Shah,Joseph M. Hellerstein,Sirish Chandrasekaran and Michael J.Franklin著、"Flux:An Adaptive Partitioning Operator for Continuous Query Systems",ICDE,2003 Ying Xing著、"Load Distribution for Distributed Stream Processing",EDBT,2004 WORKSHOPS Ying Xing,Stan Zdonik, Jeong−Hyon Hwang著、"Dynamic Load Distribution in the Borealis Stream Processor",ICDE,2005
しかしながら、上記の技術では、装置間の通信の増加を抑制することが困難であるという問題がある。以下、具体例を挙げて説明する。まず、上記の処理の分散の技術の一例を説明する。
図35Aおよび図35Bは、上記の処理の分散の技術の一例を説明するための図である。図35Aの例は、クエリの接続関係を示すクエリグラフの一例を示す。図35Aの例のクエリグラフは、クエリQ1の実行結果が用いられて、クエリQ2が実行されることを示す。また、図35Aの例のクエリグラフは、クエリQ2の実行結果が用いられて、クエリQ3が実行されることを示す。また、図35Aおよび図35Bの例では、処理負荷に応じて、クエリQ1およびクエリQ3がサーバ90に配置され、クエリQ2がサーバ91に配置された場合を示す。図35Aおよび図35Bの例では、サーバ90はクエリQ1の実行結果をクエリQ2が配置されたサーバ91へ送信する。また、図35Aおよび図35Bの例では、サーバ91はクエリQ2の実行結果をクエリQ3が配置されたサーバ90へ送信する。このように、図35Aおよび図35Bの例では、クエリQ1〜Q3を実行する場合に、サーバ90およびサーバ91間で実行結果の送信が2回も行われる。
次に、上記の隣接するクエリ同士を同一の装置に配置する技術の一例について説明する。図36Aおよび図36Bは、上記の隣接するクエリ同士を同一の装置に配置する技術の一例を説明するための図である。図36Aの例は、クエリの接続関係を示すクエリグラフの一例を示す。図36Aの例のクエリグラフは、クエリQ1の実行結果が用いられて、クエリQ2、Q3が実行されることを示す。また、図36Aの例のクエリグラフは、クエリQ2の実行結果が用いられて、クエリQ3が実行されることを示す。また、図36Aおよび図36Bの例では、クエリグラフが示すクエリの隣接関係に応じて、クエリQ1およびクエリQ2がサーバ90に配置され、クエリQ3がサーバ91に配置された場合を示す。ここで、クエリQ1が配置された装置からクエリQ2が配置された装置への処理結果の送信回数よりも、クエリQ1が配置された装置からクエリQ3が配置された装置への処理結果の送信回数が多い場合を説明する。この場合、図36Aおよび図36Bの例では、通信サーバ90は、クエリQ1、Q2が同一のサーバ90に配置されたため、クエリQ1、Q2間では、実行結果の送信を行わない。しかしながら、図36Aおよび図36Bの例では、通信サーバ90は、クエリQ1の実行結果をクエリQ3が配置されたサーバ91へ送信する。このように、図35Aおよび図35Bの例では、クエリQ1〜Q3を実行する場合に、サーバ90およびサーバ91間で実行結果の送信が行われてしまう。
したがって、上記の技術では、装置間の通信の増加を抑制することが困難である。
1つの側面では、本発明は、装置間の通信の増加を抑制することを目的とする。
1つの案では、本願の開示する配置装置は、取得部と、特定部と、決定部とを有する。取得部は、それぞれ設定された条件にデータが合致した場合に処理を実行するための複数のクエリが配置された複数の装置において実行された複数のクエリについて、クエリ間の通信回数を示す情報を取得する。特定部は、取得部により取得された情報が示す通信回数に基づいて、クエリの組を特定する。決定部は、特定部により特定されたクエリの組を同一の装置に配置することを決定する。
また、他の案では、本願の開示する配置装置は、取得部と、算出部と、特定部と、決定部とを有する。取得部は、それぞれ設定された条件にデータが合致した場合に処理を実行するための複数のクエリが配置された複数の装置において実行された複数のクエリについて、クエリが実行された順序を示す情報を取得する。算出部は、取得部により取得された情報に基づいて、クエリ間の通信回数を算出する。特定部は、算出部により算出された通信回数に基づいて、クエリの組を特定する。決定部は、特定部により特定されたクエリの組を同一の装置に配置することを決定する。
また、他の案では、本願の開示する配置装置は、取得部と、算出部と、特定部と、決定部とを有する。取得部は、複数の処理要求文を連携してイベントを実行する該処理要求文が1以上配置された複数の装置が実行した処理要求文間の通信回数を示す情報を取得する。特定部は、通信回数に基づいて、処理要求文の組を特定する。決定部は、特定された処理要求文の組を同一の装置に配置するための装置を決定する。
装置間の通信の増加を抑制することができる。
図1は、実施例1に係る配置装置を含むCEPシステムの構成の一例を示す図である。 図2は、実施例2に係る配置装置を含むCEPシステムの構成の一例を示す図である。 図3は、実施例3に係るCEPシステムの構成の一例を示す図である。 図4は、実施例3に係るVMの処理の一例を説明するための図である。 図5は、実施例3に係るVMの処理の一例を説明するための図である。 図6は、実施例3に係るVMの処理の一例を説明するための図である。 図7Aは、通信回数情報のデータ構造の一例を示す図である。 図7Bは、通信回数情報のデータ構造の一例を示す図である。 図7Cは、通信回数情報のデータ構造の一例を示す図である。 図7Dは、通信回数情報のデータ構造の一例を示す図である。 図8は、実施例3に係るVMの処理の一例を説明するための図である。 図9は、データの流れに沿ってCEPシステムの構成を模式的に示した図である。 図10Aは、クエリの移動の一例を示す図である。 図10Bは、クエリの移動の他の一例を示す図である。 図11は、クエリのグループ分けの一例を示す図である。 図12は、管理サーバの構成の一例を示す図である。 図13は、移動指示リストのデータ構造の一例を示す図である。 図14は、実施例3に係る管理サーバが実行する処理の一例を説明するための図である。 図15は、取得処理の手順を示すフローチャートである。 図16は、決定処理の手順を示すフローチャートである。 図17は、決定処理の手順を示すフローチャートである。 図18は、決定処理の手順を示すフローチャートである。 図19は、配置制御処理の手順を示すフローチャートである。 図20は、実施例4に係る管理サーバの構成を示すブロック図である。 図21は、実施例4に係る管理サーバが実行する処理の一例を説明するための図である。 図22は、実施例4に係る決定処理の手順を示すフローチャートである。 図23は、実施例4に係る決定処理の手順を示すフローチャートである。 図24は、実施例4に係る決定処理の手順を示すフローチャートである。 図25は、実施例5に係る管理サーバの構成を示すブロック図である。 図26は、実施例5に係る管理サーバが実行する処理の一例を説明するための図である。 図27は、実施例5に係る決定処理の手順を示すフローチャートである。 図28は、実施例5に係る決定処理の手順を示すフローチャートである。 図29は、実施例5に係る決定処理の手順を示すフローチャートである。 図30は、変形例に係る第一の除外処理の手順を示すフローチャートである。 図31は、変形例に係る第二の除外処理の手順を示すフローチャートである。 図32は、変形例に係る管理サーバの構成の一例を示す図である。 図33は、変形例に係る算出処理の手順を示すフローチャートである。 図34は、配置プログラムを実行するコンピュータを示す図である。 図35Aは、上記の処理の分散の技術の一例を説明するための図である。 図35Bは、上記の処理の分散の技術の一例を説明するための図である。 図36Aは、上記の隣接するクエリ同士を同一の装置に配置する技術の一例を説明するための図である。 図36Bは、上記の隣接するクエリ同士を同一の装置に配置する技術の一例を説明するための図である。
以下に、本願の開示する配置装置、配置プログラムおよび配置方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
実施例1に係る配置装置について説明する。図1は、実施例1に係る配置装置を含むCEPシステムの構成の一例を示す図である。図1の例のCEPシステムは、配置装置1と複数の装置2a〜2cとを有する。図1の例では、配置装置1と、複数の装置2a〜2cとが接続される。したがって、配置装置1および複数の装置2a〜2cの各装置は、互いに通信を行うことができる。
配置装置1は、CEPシステムを管理する物理サーバである。例えば、配置装置1は、データセンサや各企業に設けられた管理用のサーバである。装置2a〜2cの各々は、物理サーバまたは物理サーバ上で動作する仮想マシンである。各装置2a〜2cには、それぞれ設定された条件にデータが合致した場合に処理を実行するための複数のクエリ3a〜3cが配置される。各装置2a〜2cには、様々な対象から収集されたデータが配信(送信)される。各装置2a〜2cは、CEPシステムの外部から受信したデータ、または、CEPシステム内の他のクエリでの処理結果を示すデータを受信する。そして、各装置2a〜2cは、クエリ3a〜3cのそれぞれに設定された条件に合致した場合に、クエリ3a〜3cのそれぞれに設定された処理を実行する。
また、各装置2a〜2cに配置されたクエリ3a〜3cのそれぞれは、配置装置1により装置2a〜2cのいずれかの装置に再び配置される。例えば、各装置2a〜2cは、処理負荷を分散させる場合には、処理負荷が高い装置から処理負荷が低い装置へクエリを移動させる。
ここで、クエリ3bを実行する際に、クエリ3aの処理結果(実行結果)が用いられ、また、クエリ3cを実行する際に、クエリ3aまたはクエリ3cの処理結果が用いられる場合について説明する。この場合、装置2aは、外部から受信したデータが、クエリ3aに設定された条件に合致した場合に、クエリ3aに設定された処理を実行する。そして、装置2aは、クエリ3aに設定された処理を実行した処理結果を、クエリ3bが配置された装置2b、または、クエリ3cが配置された装置2cへ送信する。また、装置2bは、装置2aから受信したデータが、クエリ3bに設定された条件に合致した場合に、クエリ3bに設定された処理を実行する。そして、装置2bは、クエリ3bに設定された処理を実行した処理結果を、クエリ3cが配置された装置2cへ送信する。ここで、装置2aは、クエリ3aに設定された処理を実行した処理結果を、装置2bよりも装置2cへ送信する回数が多い場合について説明する。なお、上述したように、装置2bは、装置2aから受信したデータに基づいて、クエリ3bに設定された処理を実行し、処理結果を、装置2cへ送信する。この場合、結果的に、クエリ3a,3c間の通信回数は、クエリ3b,3c間の通信回数よりも多い。このとき、後述する配置装置1の制御により、通信回数が多いクエリ3a,3c間のクエリ3a,3cの組が同一の装置へ配置させることが決定される。
また、装置2cは、クエリ3a,3b間、クエリ3a,3c間、クエリ3b,3c間の通信回数を集計し、集計結果を配置装置1に送信する。すなわち、装置2cは、各クエリ間の通信回数を示す情報を配置装置1に送信する。なお、「クエリA,B間の通信回数」は、クエリAが配置された装置と、クエリBが配置された装置とで通信された(処理結果を送信した)回数を指す。
図1に示すように、配置装置1は、取得部1aと、特定部1bと、決定部1cとを有する。
取得部1aは、クエリ間の通信回数を示す情報を取得する。例えば、取得部1aは、装置2cから送信された各クエリ間の通信回数を示す情報を受信することにより、かかる情報を取得する。
特定部1bは、取得部1aにより取得された情報が示す通信回数に基づいて、クエリの組を特定する。例えば、特定部1bは、クエリ3a,3b間、クエリ3a,3c間、クエリ3b,3c間のうち、通信回数が最も多いクエリ3a,3c間のクエリ3a,3cの組を特定する。
決定部1cは、特定部1bにより特定されたクエリの組を同一の装置に配置することを決定する。例えば、決定部1cは、特定部1bにより特定されたクエリ3a,3cの組を同一の装置2a,2bまたは2cなどに配置することを決定する。
このように、本実施例に係る配置装置1は、クエリ3a,3cを同一の装置へ配置することを決定する。したがって、この決定に基づきクエリ3a,3cが同一の装置へ配置された場合には、クエリ3a,3cが同一の装置へ配置される前に装置2a,2c間で行われていたような、2つの装置間での処理結果の通信が行われなくなる。したがって、本実施例に係る配置装置1によれば、通信回数の増加を抑制することができる。
なお、図1の例では、機能的な構成を示したため、取得部1aと、特定部1bと、決定部1cとを別に分けているが、1つのデバイスで構成してもよい。デバイスの一例としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路が挙げられる。なお、かかるデバイスとして、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を採用することもできる。
次に、実施例2について説明する。図2は、実施例2に係る配置装置を含むCEPシステムの構成の一例を示す図である。図2の例のCEPシステムは、配置装置5と複数の装置6a〜6cとを有する。図2の例では、配置装置5と、複数の装置6a〜6cとが接続される。したがって、配置装置5および複数の装置6a〜6cの各装置は、互いに通信を行うことができる。
配置装置5は、CEPシステムを管理する物理サーバである。例えば、配置装置5は、データセンサや各企業に設けられた管理用のサーバである。装置6a〜6cの各々は、物理サーバまたは物理サーバ上で動作する仮想マシンである。各装置6a〜6cには、それぞれ設定された条件にデータが合致した場合に処理を実行するための複数のクエリ7a〜7cが配置される。各装置6a〜6cには、様々な対象から収集されたデータが配信(送信)される。各装置6a〜6cは、CEPシステムの外部から受信したデータ、または、CEPシステム内の他のクエリでの処理結果を示すデータを受信する。そして、各装置6a〜6cは、受信したデータがクエリ7a〜7cのそれぞれに設定された条件に合致した場合に、クエリ7a〜7cのそれぞれに設定された処理を実行する。
また、各装置6a〜6cに配置されたクエリ7a〜7cのそれぞれは、配置装置5により装置6a〜6cのいずれかの装置に再び配置される。例えば、各装置6a〜6cは、処理負荷を分散させる場合には、処理負荷が高い装置から処理負荷が低い装置へクエリを移動させる。
ここで、クエリ7bを実行する際に、クエリ7aの処理結果が用いられ、また、クエリ7cを実行する際に、クエリ7aまたはクエリ7cの処理結果が用いられる場合について説明する。この場合、装置6aは、外部から受信したデータが、クエリ7aに設定された条件に合致した場合に、クエリ7aに設定された処理を実行する。そして、装置6aは、クエリ7aに設定された処理を実行した処理結果を、クエリ7bが配置された装置6b、または、クエリ7cが配置された装置6cへ送信する。また、装置6bは、装置6aから受信したデータが、クエリ7bに設定された条件に合致した場合に、クエリ7bに設定された処理を実行する。そして、装置6bは、クエリ7bに設定された処理を実行した処理結果を、クエリ7cが配置された装置6cへ送信する。ここで、装置6aは、クエリ7aに設定された処理を実行した処理結果を、装置6bよりも装置6cへ送信する回数が多い場合について説明する。なお、上述したように、装置6bは、装置6aから受信したデータに基づいて、クエリ7bに設定された処理を実行し、処理結果を、装置6cへ送信する。そのため、結果的に、クエリ7a,7c間の通信回数は、クエリ7b,7c間の通信回数よりも多い。このとき、後述する配置装置5の制御により、通信回数が多いクエリ7a,7c間のクエリ7a,7cの組を同一の装置へ配置することが決定される。
また、各装置6a〜6cは、他の装置からクエリの識別子を受信していない場合に、クエリに設定された処理を実行した場合には、次のような情報を他の装置に送信する。すなわち、各装置6a〜6cは、処理結果と、実行したクエリの識別子とを他の装置に送信する。例えば、装置6aは、他の装置からクエリの識別子を受信していない場合に、クエリ7aに設定された処理の処理結果と、実行したクエリ7aの識別子とを装置6bまたは装置6cに送信する。
また、各装置6a〜6cは、他の装置からクエリの識別子を受信した場合には、処理結果とともに、受信したクエリの識別子と実行したクエリの識別子とをクエリの実行順が認識可能な形式にして送信する。例えば、装置6bは、クエリ7bに設定された処理の処理結果を装置6cに送信する。これに加えて、装置6bは、装置6aからクエリ7aの識別子を受信した場合に、次のような処理を行う。すなわち、装置6bは、クエリの実行順が認識可能なように、受信したクエリ7aの識別子の次に、実行したクエリ7bの識別子が並んだ情報、換言すれば、クエリ7aが実行された後に、クエリ7bが実行されたことが認識可能な情報を装置6cに送信する。また、装置6cは、クエリ7cに設定された処理の処理結果を配信装置5に送信する。これに加えて、装置6cは、受信したクエリの識別子がクエリ7aの識別子である場合には、クエリの実行順が認識可能なように、次のような処理を行う。すなわち、装置6cは、受信したクエリ7aの識別子の次に、実行したクエリ7cの識別子が並んだ情報、換言すれば、クエリ7aが実行された後に、クエリ7cが実行されたことが認識可能な情報を装置6cに送信する。また、装置6cは、受信したクエリの識別子がクエリ7aの識別子およびクエリ7bの識別子である場合には、クエリの実行順が認識可能なように、次のような処理を行う。すなわち、装置6cは、クエリ7aの識別子、クエリ7bの識別子、実行したクエリ7cの識別子の順で識別子が並んだ情報、換言すれば、クエリ7aが実行された後に、クエリ7b、クエリ7cの順で実行されたことが認識可能な情報を配置装置5に送信する。このようにして、装置6cは、クエリが実行された順序を示す情報を配置装置5に送信する。
図2に示すように、配置装置5は、取得部5aと、算出部5bと、特定部5cと、決定部5dとを有する。
取得部5aは、クエリが実行された順序を示す情報を取得する。例えば、取得部5aは、装置6cから送信されたクエリが実行された順序を示す情報を受信することにより、かかる情報を取得する。
算出部5bは、取得部5aにより取得された情報に基づいて、クエリ間の通信回数を算出する。例えば、算出部5bは、クエリが実行された順序を示す情報に、クエリ7aの次に、クエリ7cが実行されたことを示す情報が含まれている場合には、クエリ7a,7c間の通信回数を1つインクリメントする。また、算出部5bは、クエリが実行された順序を示す情報に、クエリ7aの次に、クエリ7bが実行されたことを示す情報が含まれている場合には、クエリ7a,7b間の通信回数を1つインクリメントする。また、算出部5bは、クエリが実行された順序を示す情報に、クエリ7bの次に、クエリ7cが実行されたことを示す情報が含まれている場合には、クエリ7b,7c間の通信回数を1つインクリメントする。
特定部5cは、算出部5bにより算出された通信回数に基づいて、クエリの組を特定する。例えば、特定部5cは、クエリ7a,7b間、クエリ7a,7c間、クエリ7b,7c間のうち、通信回数が最も多いクエリ7a,7c間のクエリ7a,7cの組を特定する。
決定部5dは、特定部5cにより特定されたクエリの組を同一の装置に配置することを決定する。例えば、決定部5dは、特定部5cにより特定されたクエリ7a,7cの組を同一の装置6aまたは6cに配置することを決定する。
このように、本実施例に係る配置装置5は、クエリ7a,7cを同一の装置へ配置することを決定する。したがって、この決定に基づきクエリ7a,7cが同一の装置へ配置された場合には、クエリ7a,7cが同一の装置へ配置される前に装置6a,6c間で行われていたような、2つの装置間での処理結果の通信が行われなくなる。したがって、本実施例に係る配置装置5によれば、通信回数の増加を抑制することができる。
なお、図2の例では、機能的な構成を示したため、取得部5aと、算出部5bと、特定部5cと、決定部5dとを別に分けているが、1つのデバイスで構成してもよい。デバイスの一例としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路が挙げられる。なお、かかるデバイスとして、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を採用することもできる。
実施例3について説明する。実施例3では、複数のサーバ上でそれぞれVMが動作し、VMにクエリが配置されたCEPシステムについて説明する。図3は、実施例3に係るCEPシステムの構成の一例を示す図である。CEPシステム10は、サーバ20と、サーバ31と、サーバ32と、サーバ33と、サーバ34と、サーバ35と、管理サーバ40とを有する。これらの各サーバは、ネットワーク99を介して接続される。すなわち、図3の例のCEPシステム10では、各サーバ間で通信を行うことができる。かかるネットワーク99の一態様としては、有線または無線を問わず、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の通信網が挙げられる。また、図3の例では、サーバ31〜35の台数を5台、管理サーバ40の台数を1台、サーバ20の台数を1台とする場合について例示したが、これらの台数は任意の値を採用することができる。
サーバ31では、VM31a,31bが動作する。同様に、各サーバ32〜35では、それぞれ、VM32a,32b、VM33a,33b、VM34a,34b、VM35a,35bが動作する。本実施例の説明では、これらの各VM32a、32b、33a、33b、VM34a、34b、35a、35bを区別無く説明する場合には、単にVMと総称する。また、図3の例では、各サーバ31〜35上で動作するVMの台数が2台の場合について例示したが、各サーバ31〜35上で動作するVMの台数は、任意の値を採ることができる。VMには、後述するように、管理サーバ40の制御により、クエリが配置される。また、VMは、CEPシステム10の外部から受信したデータであって後述の前処理が行われたデータ、または、CEPシステム10内の他のクエリでの処理結果を示すデータを受信する。そして、VMは、受信したデータが、VMに配置されたクエリに設定された条件に合致した場合に、クエリに設定された処理を実行する。
また、VMは、後述するように、管理サーバ40から、処理結果の送信先のVMのアドレス、例えば、IP(Internet Protocol)アドレスが通知される。また、VMには、後述するように、管理サーバ40から、クエリグラフが送信される。
また、VMは、他のVMからクエリの識別子を受信していない場合に、クエリに設定された処理を実行したときには、次のような情報を他のVMに送信する。すなわち、VMは、処理結果と、実行したクエリの識別子とを含むデータを、アドレスに対応するVMに送信する。ここで、以下の説明において、かかるデータを「イベントデータ」と表記する場合がある。
また、VMは、他のVMからクエリの識別子を受信した場合には、受信したクエリの識別子と実行したクエリの識別子とをクエリの実行順が認識可能な形式にして、処理結果とともにイベントデータに含め、イベントデータを送信する。例えば、VMは、通知されたアドレスを用いて、アドレスに対応するVMに、かかるイベントデータを送信する。このとき、VMは、他のVMからクエリの識別子を受信した場合に、次のような処理を行う。すなわち、VMは、クエリの実行順が認識可能なように、受信したクエリの識別子の次に、実行したクエリの識別子が並んだ情報、換言すれば、クエリが実行された順序が認識可能な情報をイベントデータに含めて、アドレスに対応するVMに送信する。
具体例を挙げて、実施例3に係るVMの処理を説明する。図4〜図6は、実施例3に係るVMの処理の一例を説明するための図である。図4は、VMに送信されるクエリグラフ60の一例を示す。図4の例では、クエリグラフ60は、クエリに設定された処理の実行順序を示す。図4の例のクエリグラフ60は、クエリ61に設定された処理の実行結果が用いられて、クエリ62に設定された処理が実行されることを示す。また、図4の例では、クエリ63〜68の各クエリに設定された処理についても同様にして実行される。また、図4の例のクエリグラフ60は、最初に実行される処理が設定されたクエリが、クエリ61であることを示す。また、図4の例のクエリグラフ60は、最後に実行される処理が設定されたクエリが、クエリ65であることを示す。したがって、図6の例に示すクエリグラフ60が送信されたVMは、自身に配置されたクエリと、クエリグラフ60の内容とから、自身に配置されたクエリが、最後に実行される処理が設定されたクエリであるか否かを判定することができる。例えば、VMは、クエリグラフ60を受信した場合に、クエリグラフ60を参照し、自身に配置されたクエリが、クエリ65であるか否かを判定することで、自身に配置されたクエリが、最後に実行される処理が設定されたクエリであるか否かを判定できる。
図5は、他のクエリグラフ70の一部の例を示す。図5の例では、クエリグラフ70は、クエリ71に設定された処理の処理結果が用いられて、クエリ72,73に設定された処理が実行されることを示す。また、図5の例のクエリグラフ70は、クエリ72に設定された処理の処理結果が用いられて、クエリ73に設定された処理が実行されることを示す。ここで、管理サーバ40により、クエリグラフ70が、VMに送信され、VM31aにクエリ71、VM32aにクエリ72、VM33aにクエリ73が配置された場合のVM31a,32a,33aの動作の一例について説明する。なお、以下の説明では、クエリ71〜73のそれぞれを、「Q1」、「Q2」、「Q3」と表記する場合がある。
図6の例では、VM31a,32a,33aのそれぞれは、まず、自身に配置されたクエリQ1,Q2,Q3のそれぞれが、クエリグラフ70が示す、最後に実行される処理が設定されたクエリQ3であるか否かを判定する。これにより、VM31a,32aは、自身に配置されたクエリQ1,Q2が、最後に実行される処理が設定されたクエリでないと判定する。またVM33aは、自身に配置されたクエリQ3が、最後に実行される処理が設定されたクエリであると判定する。このような判定をしたVM33aは、後述するように、イベントデータに含まれるクエリQ1,Q2,Q3の実行順序から、各クエリ間の通信回数を集計し、集計結果を含む通信回数情報を管理サーバ40に送信する。
図6の例では、VM31aは、VM32aに送信するイベントデータ36aの「ID(Identification)」の項目に、イベントデータを識別するための識別子を登録する。また、VM31aは、イベントデータ36aの「処理結果」の項目に、クエリQ1に設定された処理の処理結果を登録する。また、VM31aは、イベントデータ36aの「実行順序」の項目に、実行した処理が設定されたクエリQ1の識別子「Q1」を登録する。また、VM31aは、イベントデータ36aのその他の各種項目についても、各項目に対応する情報を登録する。このようにして、VM31aは、イベントデータ36aを生成する。そして、VM31aは、管理サーバ40から通知された、処理結果の送信先のVM32aのアドレスを用いて、VM32aに、生成したイベントデータ36aを送信する。
また、VM31aは、VM33aに送信するイベントデータ36bの「ID」の項目に、イベントデータを識別するための識別子を登録する。また、VM31aは、イベントデータ36bの「処理結果」の項目に、クエリQ1に設定された処理の処理結果を登録する。また、VM31aは、イベントデータ36bの「実行順序」の項目に、実行した処理が設定されたクエリQ1の識別子「Q1」を登録する。また、VM31aは、イベントデータ36bのその他の各種項目についても、各項目に対応する情報を登録する。このようにして、VM31aは、イベントデータ36bを生成する。そして、VM31aは、管理サーバ40から通知された、処理結果の送信先のVM33aのアドレスを用いて、VM33aに、生成したイベントデータ36bを送信する。
そして、VM32aは、イベントデータ36aを受信すると、イベントデータ36aの「処理結果」の項目に登録された処理結果のデータが、クエリQ2に設定された条件に合致するか否かを判定する。続いて、VM32aは、合致した場合に、クエリQ2に設定された処理を実行する。そして、VM32aは、VM33aに送信するイベントデータ36cの「ID」の項目に、イベントデータを識別するための識別子を登録する。また、VM32aは、イベントデータ36cの「処理結果」の項目に、クエリQ2に設定された処理の処理結果を登録する。また、VM32aは、イベントデータ36aの「実行順序」の項目に登録された識別子「Q1」を取得し、取得した識別子「Q1」の次に、実行した処理が設定されたクエリQ2の識別子「Q2」が並ぶように、次のような処理を行う。すなわち、VM32aは、イベントデータ36cの「実行順序」の項目に、識別子「Q1」の次に、識別子「Q2」が並んで登録されるように、識別子「Q1」および「Q2」を登録する。また、VM32aは、イベントデータ36cのその他の各種項目についても、各項目に対応する情報を登録する。このようにして、VM32aは、イベントデータ36cを生成する。そして、VM32aは、管理サーバ40から通知された、処理結果の送信先のVM33aのアドレスを用いて、VM33aに、生成したイベントデータ36cを送信する。
VM33aは、イベントデータ36bを受信すると、イベントデータ36bの「処理結果」の項目に登録された処理結果のデータが、クエリQ3に設定された条件に合致するか否かを判定する。続いて、VM33aは、合致した場合に、クエリQ3に設定された処理を実行する。そして、VM33aは、イベントデータ36bの「実行順序」の項目に登録された識別子「Q1」を取得し、取得した識別子「Q1」の次に、実行した処理が設定されたクエリQ3の識別子「Q3」が並んだ情報「Q1、Q3」を生成する。そして、VM33aは、生成した情報「Q1、Q3」を参照して、識別子「Q1」が示すクエリQ1に設定された処理が実行された後に、識別子「Q3」が示すクエリQ3に設定された処理が実行されたと判定する。続いて、VM33aは、判定結果に基づいて、通信回数情報37の送信元の項目「Q1」、送信先の項目「Q3」に対応する項目に登録された値を1つインクリメントする。
図7A〜図7Dは、通信回数情報のデータ構造の一例を示す図である。通信回数情報37には、クエリ間の通信回数が登録される。図7Aの例では、通信回数情報37は、クエリに設定された処理の実行順序が前後となる2つのクエリについて、先に実行された処理が設定されたクエリ(先クエリ)と、後に実行された処理が設定されたクエリ(後クエリ)とに対応する通信回数が登録される項目37aを有する。図7Aの例は、VM33aにより項目37aの値がインクリメントされる前の、いわゆる初期状態を示し、全ての項目37aの値は、「0」である。
通信回数情報37の項目37aの登録内容が、図7Aの例が示す場合に、上述したように、VM33aが、クエリQ1に設定された処理が実行された後に、クエリQ3に設定された処理が実行されたと判定したときには、VM33aは、次のような処理を行う。すなわち、VM33aは、図7Bの例に示すように、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値を1つインクリメントする。
また、VM33aは、イベントデータ36cを受信すると、イベントデータ36cの「処理結果」の項目に登録された処理結果のデータが、クエリQ3に設定された条件に合致するか否かを判定する。続いて、VM33aは、合致した場合に、クエリQ3に設定された処理を実行する。そして、VM33aは、イベントデータ36cの「実行順序」の項目に登録された識別子「Q1,Q2」を取得し、取得した識別子「Q1,Q2」の次に、実行した処理が設定されたクエリQ3の識別子「Q3」が並んだ情報「Q1,Q2,Q3」を生成する。そして、VM33aは、生成した情報「Q1,Q2,Q3」を参照して、識別子「Q1」が示すクエリQ1に設定された処理が実行された後に、識別子「Q2」が示すクエリQ2に設定された処理が実行されたと判定する。また、VM33aは、生成した情報「Q1,Q2,Q3」を参照して、識別子「Q2」が示すクエリQ2に設定された処理が実行された後に、識別子「Q3」が示すクエリQ3に設定された処理が実行されたと判定する。続いて、VM33aは、判定結果に基づいて、通信回数情報37の送信元の項目「Q1」、送信先の項目「Q2」に対応する項目に登録された値を1つインクリメントする。また、VM33aは、判定結果に基づいて、通信回数情報37の送信元の項目「Q2」、送信先の項目「Q3」に対応する項目に登録された値を1つインクリメントする。
通信回数情報37の項目37aの登録内容が、図7Aの例が示す場合に、上述したように、VM33aが、クエリQ1に設定された処理が実行された後に、クエリQ2に設定された処理が実行されたと判定したときには、VM33aは、次のような処理を行う。すなわち、VM33aは、図7Cの例に示すように、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q2」に対応する項目37aに登録された値を1つインクリメントする。また、この場合に、上述したように、VM33aが、クエリQ2に設定された処理が実行された後に、クエリQ3に設定された処理が実行されたと判定したときには、VM33aは、次のような処理を行う。すなわち、VM33aは、図7Cの例に示すように、「先クエリ」の項目が「Q2」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値を1つインクリメントする。
また、図7Aの例が示す場合から、クエリQ1に設定された処理が実行された後に、クエリQ3に設定された処理が実行されたと判定した回数が「10」である場合には、VM33aは、次のような処理を行う。すなわち、VM33aは、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値を1つインクリメントすることを10回行う。この結果、図7Dの例に示すように、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値が「10」となる。また、クエリQ1に設定された処理が実行された後に、クエリQ2に設定された処理が実行されたと判定した回数が「1」である場合には、VM33aは、次のような処理を行う。すなわち、VM33aは、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q2」に対応する項目37aに登録された値を1つインクリメントすることを1回行う。この結果、図7Dの例に示すように、「先クエリ」の項目が「Q1」、「後クエリ」の項目が「Q2」に対応する項目37aに登録された値が「1」となる。また、クエリQ2に設定された処理が実行された後に、クエリQ3に設定された処理が実行されたと判定した回数が「1」である場合には、VM33aは、次のような処理を行う。すなわち、VM33aは、「先クエリ」の項目が「Q2」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値を1つインクリメントすることを1回行う。この結果、図7Dの例に示すように、「先クエリ」の項目が「Q2」、「後クエリ」の項目が「Q3」に対応する項目37aに登録された値が「1」となる。
このようにして、自身に配置されたクエリQ3が、最後に実行される処理が設定されたクエリであると判定をしたVM33aは、イベントデータに含まれるクエリQ1,Q2などの実行順序から、各クエリ間の通信回数を集計する。そして、VM33aは、集計結果を含む通信回数情報37を生成する。続いて、VM33aは、所定時間間隔、例えば、1分毎に、生成した通信回数情報37を管理サーバ40に送信する。
また、VMは、所定時間ごと、例えば、1分ごとに、負荷を示す負荷情報を管理サーバ40へ送信する。なお、負荷情報は、例えば、クエリおよびクエリに付随するデータなどを含む処理要素ごとの負荷を示す情報である。
具体例を挙げて、実施例3に係るVMの処理を説明する。図8は、実施例3に係るVMの処理の一例を説明するための図である。図8の例では、VM31aは、管理サーバ40に送信する負荷情報38aの「装置」の項目に、VM31aの識別子「31a」を登録する。また、図8の例では、VM31aは、負荷情報38aの「クエリ」の項目に、VM31aに配置されたクエリQ1の識別子「Q1」を登録する。また、図8の例では、VM31aは、負荷情報38aの「処理要素」の項目に、クエリQ1およびクエリQ1に付随するデータを含む処理要素の識別子「V1」を登録する。また、図8の例では、VM31aは、負荷情報38aの「負荷値」の項目に、処理要素の負荷、例えば、単位時間の間(例えば、1秒間)に処理されたイベントの数mを登録する。
また、図8の例では、VM32aは、管理サーバ40に送信する負荷情報38bの「装置」の項目に、VM32aの識別子「32a」を登録する。また、図8の例では、VM32aは、負荷情報38bの「クエリ」の項目に、VM32aに配置されたクエリQ2の識別子「Q2」を登録する。また、図8の例では、VM32aは、負荷情報38bの「処理要素」の項目に、クエリQ2およびクエリQ2に付随するデータを含む処理要素の識別子「V2」を登録する。また、図8の例では、VM32aは、負荷情報38bの「負荷値」の項目に、処理要素の負荷、例えば、単位時間の間(例えば、1秒間)に処理されたイベントの数nを登録する。
また、図8の例では、VM33aは、管理サーバ40に送信する負荷情報38cの「装置」の項目に、VM33aの識別子「33a」を登録する。また、図8の例では、VM33aは、負荷情報38cの「クエリ」の項目に、VM33aに配置されたクエリQ3の識別子「Q3」を登録する。また、図8の例では、VM33aは、負荷情報38cの「処理要素」の項目に、クエリQ3およびクエリQ3に付随するデータを含む処理要素の識別子「V3」を登録する。また、図8の例では、VM33aは、負荷情報38cの「負荷値」の項目に、処理要素の負荷、例えば、単位時間の間(例えば、1秒間)に処理されたイベントの数rを登録する。
このようにして、VM31a〜33aのそれぞれは、負荷情報38a〜38cのそれぞれを生成する。
また、図8の例では、VM31a〜33aのそれぞれは、負荷情報38a〜38cのそれぞれを、所定時間ごとに、管理サーバ40に送信する。
管理サーバ40は、サーバ20、サーバ31〜35、VM31a〜35a,31b〜35bを管理するサーバである。管理サーバ40は、クエリの配置を制御する。
図9は、データの流れに沿ってCEPシステムの構成を模式的に示した図である。サーバ20、VM31a〜35a,31b〜35bおよび管理サーバ40は、各クエリが処理対象とするデータ毎に当該クエリの配置先が登録されたルーティングテーブル50を記憶する。
サーバ20は、外部ネットワーク98を介して様々な対象から多数のデータを受信する。サーバ20は、受信したデータを所定のデータ構成に整える前処理を行う。そして、サーバ20は、ルーティングテーブル50に基づき、受信したデータを処理対象とするクエリの配置先を特定する。続いて、サーバ20は、前処理が行われたデータを特定した配置先のVMへ送信する。なお、図3および図9の例では、サーバ20の台数が1台である場合を例示したが、サーバ20を複数台設けて、複数のサーバ20により受信したデータを各VMへ送信してもよい。
VMは、それぞれエンジン51を動作させる。エンジン51は、複合イベント処理を実現するソフトウェアである。エンジン51は、受信したデータと、クエリの条件式とを突合させてイベントを検出し、検出したイベントの処理を実行する制御を行う。また、CEPシステム10では、複数のクエリにより一連の処理を実行させる。例えば、上位のクエリによる処理結果のデータを下位のクエリへ送信する。そして、下位のクエリでは、送信されたデータを、下位のクエリに設定された処理を実行する際に用いる。エンジン51は、複数のクエリにより一連の処理を実行する場合、クエリによる処理結果のデータを下位のクエリが配置されたVMへ送信する。また、エンジン51は、管理サーバ40からのクエリの移動の指示に応じて、他のVM上で動作するエンジン51との間でクエリを移動させる制御を行う。
ここで、クエリの移動について説明する。クエリは、付随するデータを有する場合がある。例えば、クエリが処理対象とするデータの所定の期間の平均を求める処理を行う場合、平均を算出するために所定の期間より長い期間の間に受信したデータを保持する。また、クエリは、処理にテーブルなどの所定のデータを用いる場合もある。エンジン51は、クエリを移動させる場合、クエリおよびクエリに付随するデータを処理要素として移動させる。
また、クエリの移動には、複数のケースが考えられる。図10Aは、クエリの移動の一例を示す図である。図10Aに示すように、クエリ毎に処理対象とするデータが異なる場合、クエリを移動させ、移動先で処理対象とするデータを処理させる。例えば、処理を分散させる場合、各クエリをそれぞれ異なるVMに移動させて、各VMによりデータを処理させる。一方、処理負荷が低い場合などには、クエリをより少ない台数のVM、例えば、1台のVMに移動させ、1台のVMによりデータを処理させる。
一方、クエリは、処理対象とするデータが複数である場合がある。例えば、データとして証券コードおよび株価がVMに配信され、クエリが証券コード毎に株価の一定期間の移動平均を求める処理を行う場合がある。図10Bは、クエリの移動の他の一例を示す図である。図10Bの例では、図10Bの左側に示すように、クエリは、データ1〜nが処理対象である。この場合、処理対象のデータ1〜n毎に、クエリを移動させる。例えば、処理の分散を行う場合、クエリを複製して他のVMに移動させ、処理対象のデータ1〜nをそれぞれ異なるVMにより処理させる。一方、処理負荷が低い場合などには、クエリを1台のVMに配置させ、処理対象のデータ1〜nを1台のVMにより処理させる。
ここで、本実施例では、複数のクエリのそれぞれを複数のグループに分け、グループ毎に移動する。また、ルーティングテーブル50は、グループ毎に格納先を管理する。図11は、クエリのグループ分けの一例を示す図である。例えば、本実施例では、処理対象とする各データに、データを識別するキーが所定ビットの整数データとして含まれ、それぞれのクエリに処理の条件ごとに異なるキーが設定されている。この場合、処理の条件ごとに設定されたキーを用いて、キーから値を算出する所定の関数、例えば、ハッシュ関数によりハッシュ値を算出して、ハッシュ値が同一となるクエリを同一のグループとしてグループ分けする。例えば、処理の条件に設定されたキーを用いて、ハッシュ関数により算出されたハッシュ値が同一となるクエリを同一のグループとして静的にグループを分ける。図11の例は、クエリをグループ分けした各グループを「V−Node」とする場合を示す。そして、本実施例では、V−Node毎に、クエリをVMに配置する。なお、本実施例では、複数のクエリのそれぞれが異なるグループに分けられることとする。
ルーティングテーブル50には、V−Node毎に配置先が登録される。例えば、ルーティングテーブル50は、V−Nodeの識別子が登録される項目と、配置先のVMのIPアドレスが登録される項目とを有する。
サーバ20および各VMのエンジン51は、キーに基づいてクエリの配置先を判別する。例えば、サーバ20は、受信したデータに含まれるキーを用いてハッシュ関数によりハッシュ値を算出する。そして、サーバ20は、ルーティングテーブル50からV−Nodeの識別子が登録される項目に、算出したハッシュ値が登録されたレコードを検索する。続いて、サーバ20は、検索の結果、レコードが得られた場合、得られたレコードの配置先のVMのIPアドレスが登録される項目に登録されたIPアドレスを取得する。そして、サーバ20は、取得したIPアドレスを用いて、VMと通信を行う。
上述したように、各VMは、負荷情報を管理サーバ40へ送信する。そして、後述するように、管理サーバ40が、各VMから送信された負荷情報に基づき、クエリを移動させるための指示(移動指示)を送信する。なお、本実施例では、V−Node単位でクエリの移動が行われる。管理サーバ40は、移動先のVM31のIPアドレスおよび移動対象のV−Nodeの識別子を含む移動指示を移動元のVMに送信する。移動指示を受信したVMのエンジン51は、移動対象のV−Nodeに属するクエリや当該クエリに付随するデータなどの処理要素をシリアライズして移動先のVMへ送信する。
移動先のVMのエンジン51は、送信されたデータをデシリアライズして復元し、復元されたクエリの駆動を開始する。また、エンジン51は、ルーティングテーブル50の移動したV−Nodeに属するクエリの格納先を自身が動作するVMのIPアドレスに更新する。そして、エンジン51は、他のVM、サーバ20および管理サーバ40に対して移動対象のV−Nodeの識別子および移動先のVMのIPアドレスを含むルーティングテーブル更新指示を通知する。なお、管理サーバ40は、移動元および移動先のVMのIPアドレス、並びに、移動された処理要素の識別子など移動に関する各情報を把握しているため、管理サーバ40が、ルーティングテーブル更新指示を送信することもできる。
各VM、サーバ20および管理サーバ40は、ルーティングテーブル更新指示が通知された場合、次のような処理を行う。すなわち、各VM、サーバ20および管理サーバ40は、ルーティングテーブル50の通知された移動対象のV−Nodeに属するクエリの格納先を、通知されたルーティングテーブル更新指示に含まれる移動先のVMのIPアドレスに更新する。
図12は、管理サーバの構成の一例を示す図である。図12に示すように、管理サーバ40は、入力部41と、出力部42と、通信部43と、記憶部44と、制御部45とを有する。
入力部41は、各種情報を制御部45に入力する。例えば、入力部41は、ユーザからの各種指示を受け付けて、受け付けた指示を制御部45に入力する。入力部41のデバイスの一例としては、マウスやキーボードなどのユーザの操作を受け付けるデバイスなどが挙げられる。
出力部42は、各種の情報を出力する。例えば、出力部42は、VMの稼働状態などを表示する。出力部42のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
通信部43は、各装置間の通信を行うためのインターフェースである。例えば、通信部43は、ネットワーク99に接続される。これにより、管理サーバ40と、サーバ20、各VMとが通信を行うことができる。例えば、通信部43は、ネットワーク99を介して、VMから通信回数情報37を受信した場合には、受信した通信回数情報37を制御部45に送信する。また、通信部43は、ネットワーク99を介して、VMから負荷情報38を受信した場合には、受信した負荷情報38を制御部45へ送信する。
記憶部44は、各種情報を記憶する。例えば、記憶部44は、上述したルーティングテーブル50、通信回数情報37、負荷情報38、移動指示リスト46を記憶する。
通信回数情報37は、VMから送信された情報であり、後述の取得部45bによりVMから取得され、記憶部44に格納される。負荷情報38は、VMから送信された情報であり、後述の取得部45bによりVMから取得され、記憶部44に格納される。
移動指示リスト46には、移動対象の処理要素の識別子、移動元のVMのIPアドレス、移動先のVMのIPアドレスが後述の決定部45dにより登録される。図13は、移動指示リストのデータ構造の一例を示す図である。図13の例では、移動指示リスト46は、移動対象の処理要素の識別子が登録される「処理要素」の項目46a、移動元のVMのIPアドレスが登録される「移動元」の項目46b、移動先のVMのIPアドレスが登録される「移動先」の項目46cを有する。
記憶部44は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部44は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
制御部45は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図12に示すように、制御部45は、初期配置部45aと、取得部45bと、特定部45cと、決定部45dと、配置制御部45eとを有する。
初期配置部45aは、クエリグラフに基づいて、既知の技術を用いて、複数のVMにクエリを配置する。また、初期配置部45aは、クエリグラフを各VMに送信する。また、初期配置部45aは、各VMに、各VMが実行する処理が設定されたクエリを通知する。また、初期配置部45aは、各VMに、処理の処理結果の送信先のVMのIPアドレスを送信する。
取得部45bは、各種情報を取得する。例えば、取得部45bは、複数のVMにおいて処理が実行された複数のクエリについて、クエリ間の通信回数を示す通信回数情報37を取得する。
具体例を挙げて説明する。取得部45bは、通信部43を介して、VMから送信された通信回数情報37を受信することで、通信回数情報37を取得する。通信回数情報37を取得した場合には、取得部45bは、取得した通信回数情報37を記憶部44に格納する。また、取得部45bは、通信部43を介して、VMから送信された負荷情報38を受信することで、負荷情報38を取得する。負荷情報38を取得した場合には、取得部45bは、取得した負荷情報38を記憶部44に格納する。また、取得部45bは、記憶部44に記憶された通信回数情報37、負荷情報38を取得する。
特定部45cは、各種情報を特定する。例えば、特定部45cは、取得部45bにより取得された通信回数情報が示す通信回数に基づいて、クエリの組を特定する。
具体例を挙げて説明する。まず、特定部45cは、取得部45bにより取得された負荷情報38を用いて、VMごとに、処理要素ごとの負荷の和を算出し、各VMの負荷を算出する。続いて、特定部45cは、算出した各VMの負荷を用いて、全VMの負荷の平均値Aveを算出する。その後、特定部45cは、負荷が閾値α以上のVMがあるか否かを判定する。
図14は、実施例3に係る管理サーバが実行する処理の一例を説明するための図である。図14の例は、5つのVM31a〜35aのそれぞれの負荷を示す。横軸は、VMを示し、縦軸は、VMの負荷を示す。また、VMの中の「High」は、負荷が第一の閾値を超えた高負荷である処理要素を示す。また、VMの中の「Middle」は、負荷が第一の閾値以下で、かつ、第一の閾値より小さい第二の閾値を超えた中負荷である処理要素を示す。また、VMの中の「Low」は、負荷が第二の閾値以下である小負荷である処理要素を示す。図14の例では、閾値αは、上限の負荷の警戒値である。また、図14の例では、閾値βは、閾値αよりも小さく、下限の負荷の警戒値である。図14の例では、VM31aの負荷が閾値αを超えているため、特定部45cは、負荷が閾値α以上のVMがあると判定する。
負荷が閾値α以上のVMがある場合には、特定部45cは、負荷が閾値α以上の全てのVMを移動元のVMの候補とする。例えば、図14の例では、特定部45cは、負荷が閾値α以上のVM31aを移動元のVMの候補とする。
そして、特定部45cは、負荷が平均値Ave未満の全てのVMを移動先のVMの候補とする。例えば、図14の例では、負荷が平均値Ave未満のVM35aを移動先のVMの候補とする。
そして、特定部45cは、下記の処理で、特定したクエリの組について、全ての移動元のVMおよび全ての移動先のVMの組み合わせにおいて、同一のVMに配置することが可能か検証したか否かを判定する。検証していない場合には、特定部45cは、下記の処理で、特定されたクエリの組の一方のクエリを、他方のクエリが配置されたVMに移動することが移動指示リスト46に登録済みであるか否かを判定する。
登録されていない場合には、特定部45cは、下記の処理で、移動元のVMの候補のうち、未選択のVMがあるか否かを判定する。未選択のVMがない場合には、特定部45cは、移動先のVMの候補の全VMを未選択とする。そして、特定部45cは、以降の処理を行う。一方、未選択のVMがある場合には、特定部45cは、移動元のVMの候補の中から、未選択のVMを1つ選択する。
そして、特定部45cは、下記の処理で、移動先のVMの候補のうち、未選択のVMがあるか否かを判定する。未選択のVMがない場合には、特定部45cは、移動先のVMの候補の全VMを未選択とする。そして、特定部45cは、上述した、特定したクエリの組について、全ての移動元のVMおよび全ての移動先のVMの組み合わせにおいて、同一のVMに配置することが可能か検証したか否かの判定を再び行う。そして、特定部45cは、以降の処理を行う。一方、未選択のVMがある場合には、特定部45cは、移動先のVMの候補の中から、未選択のVMを1つ選択する。
続いて、特定部45cは、下記の処理で、クエリの組が特定されたか否かを判定する。クエリの組が特定されていない場合には、特定部45cは、取得部45bにより取得された通信回数情報37を用いて、通信回数が最大のクエリの組を特定する。例えば、図7Dの例に示す通信回数情報37を用いた場合には、特定部45cは、通信回数が10回であるクエリQ1とクエリQ3との組を選択する。
そして、特定部45cは、特定した組の数は複数であるか否かを判定する。複数である場合には、予め管理サーバ40に与えられたクエリグラフを参照し、特定した組ごとに、クエリ間の距離を算出する。例えば、図5の例に示すクエリグラフ70において、特定部45cがクエリQ1とクエリQ2との組、および、クエリQ1とクエリQ3との組の2つの組を特定した場合について説明する。この場合、特定部45cは、クエリグラフ70上で、クエリQ1とクエリQ2との距離、および、クエリQ1とクエリQ3との距離を算出する。なお、図5の例では、クエリグラフ70上で、クエリQ1とクエリQ2との距離のほうが、クエリQ1とクエリQ3との距離よりも小さい。すなわち、クエリQ1とクエリQ2との距離のほうが、クエリQ1とクエリQ3との距離よりも近い。
続いて、特定部45cは、算出した距離が最も近いクエリの組の数が複数であるか否かを判定する。図5の例では、特定部45cは、算出した距離が最も近いクエリQ1とクエリQ2との組の数は、1つなので、算出した距離が最も近いクエリの組の数が複数ではないと判定する。
算出した距離が最も近いクエリの組の数が複数である場合には、特定部45cは、算出した距離が最も近いクエリの複数の組のうち、クエリを含む処理要素の負荷の合計が最も小さいクエリの組を特定する。また、算出した距離が最も近いクエリの組の数が複数でない場合には、特定部45cは、特定した複数の組の中から、距離が最も近いクエリの組を特定する。
決定部45dは、各種情報を決定する。例えば、決定部45dは、特定部45cにより特定されたクエリの組を同一のVMに配置することを決定する。
具体例を挙げて説明する。まず、決定部45dは、特定部45cにより特定されたクエリの組について、一方のクエリが、新たに選択された移動元のVMに配置されたクエリであり、かつ、他方のクエリが、新たに選択された移動先のVMに配置されたクエリであるか否かを判定する。一方のクエリが、新たに選択された移動元のVMに配置されたクエリでないか、または、他方のクエリが、新たに選択された移動先のVMに配置されたクエリでない場合には、上述した、移動先のVMの候補のうち、未選択のVMがあるか否かの判定を行う。そして、以降の処理を行う。
一方、あるクエリが、新たに選択された移動元のVMに配置されたクエリであり、かつ、他のクエリが、新たに選択された移動先のVMに配置されたクエリである場合には、決定部45dは、新たに選択された移動先のVMに、特定したクエリの組のうち、新たに選択された移動元のVMに配置されたクエリを含む処理要素を移動させた場合の負荷Yを算出する。すなわち、決定部45dは、移動先のVMの負荷に、特定したクエリの組のうち、新たに選択された移動元のVMに配置されたクエリを含む処理要素の負荷を加えた値を、負荷Yとして算出する。
そして、決定部45dは、算出した負荷Yの値が平均値Aveより小さく、かつ、負荷Yの値が閾値βより大きいか否かを判定する。算出した負荷Yの値が平均値Ave以上であるか、または、負荷Yの値が閾値β以下である場合には、上述した、移動先のVMの候補のうち、未選択のVMがあるか否かの判定を行う。そして、以降の処理を行う。一方、負荷Yの値が平均値Aveより小さく、かつ、負荷Yの値が閾値βより大きい場合には、決定部45dは、次のような処理を行う。すなわち、決定部45dは、特定したクエリの組のうち、新たに選択された移動元のVMに配置されたクエリを含む処理要素を、移動元のVMから、新たに選択された移動先のVMへ移動することを決定する。
このように、本実施例に係る管理サーバ40は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。よって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ40によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ40は、複数のクエリと呼ばれる処理要求文を連携してイベントを実行する処理要求文が1以上配置された複数の装置が実行した処理要求文間の通信回数を示す情報を取得する。そして、管理サーバ40は、通信回数に基づいて、処理要求文の組を特定する。続いて、管理サーバ40は、特定された処理要求文の組を同一の装置に配置するための装置を決定する。よって、この決定に基づき2つの処理要求文が同一のVMへ配置された場合には、2つの処理要求文が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ40によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ40によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ40によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
そして、決定部45dは、移動が決定された処理要素の識別子と、移動元のVMのIPアドレスと、移動先のVMのIPアドレスとを対応付けて、移動指示リスト46に登録することにより、移動指示リスト46を更新する。続いて、決定部45dは、移動が決定された処理要素の移動元のVMを、移動元のVMの候補から外すとともに、移動先のVMを、移動先のVMの候補から外す。
続いて、決定部45dは、移動先のVMの候補、および、移動元のVMの候補の全VMを未選択とする。その後、決定部45dは、上述した、特定されたクエリの組の一方のクエリを、他方のクエリが配置されたVMに移動することが移動指示リスト46に登録済みであるか否かの判定を再び行い、そして、以降の処理を行う。
また、特定部45cにより、特定したクエリの組について、全ての移動元のVMおよび全ての移動先のVMの組み合わせにおいて、同一のVMに配置することが可能か検証したと判定された場合には、決定部45dは、移動元のVMの候補の全VMを未選択とする。そして、決定部45dは、移動元のVMの候補のうち、未選択のVMがあるか否かを判定する。未選択のVMがある場合には、移動元のVMの候補の中から、未選択のVMを1つ選択する。
その後、決定部45dは、変数Nに「1」を設定する。そして、決定部45dは、新たに選択された移動元のVMの処理要素のうち、N番目に負荷が高い処理要素を選択する。N=1である場合、図14の例では、決定部45dは、VM31aの処理要素のうち、1番目に負荷が高い一番上の「High」の処理要素を選択する。
続いて、決定部45dは、下記の処理で、移動先のVMの候補のうち、未選択のVMがあるか否かを判定する。未選択のVMがない場合には、決定部45dは、上述した、移動元のVMの候補のうち未選択のVMがあるか否かの判定を再び行い、以降の処理を続ける。一方、未選択のVMがある場合には、決定部45dは、移動先のVMの候補の中から、未選択のVMを1つ選択する。
その後、決定部45dは、新たに選択された移動先のVMに、新たに選択されたN番目に負荷が高い処理要素を移動させた場合の負荷Y´を算出する。すなわち、決定部45dは、移動先のVMの負荷に、選択されたN番目に負荷が高い処理要素の負荷を加えた値を、負荷Y´として算出する。例えば、N=1である場合、図14の例では、決定部45dは、VM35aの負荷に、VM31aの処理要素のうち一番上の「High」の処理要素の負荷を加えた値を、負荷Y´として算出する。
そして、決定部45dは、算出した負荷Y´の値が平均値Aveより小さく、かつ、負荷Y´の値が閾値βより大きいか否かを判定する。算出した負荷Y´の値が平均値Ave以上であるか、または、負荷Y´の値が閾値β以下である場合には、決定部45dは、変数Nの値を1つインクリメントする。その後、決定部45dは、変数Nの値が、新たに選択された移動元のVMの処理要素の数Kを超えたか否かを判定する。変数Nの値が、処理要素の数Kを超えていない場合には、決定部45dは、新たに選択された移動元のVMの処理要素のうち、N番目に負荷が高い処理要素を特定する。N=2である場合、図14の例では、決定部45dは、VM31aの処理要素のうち、2番目に負荷が高い一番下の「High」の処理要素を選択する。そして、決定部45dは、上述した、新たに選択された移動先のVMに、新たに選択されたN番目に負荷が高い処理要素を移動させた場合の負荷Yを算出する処理を再び行い、以降の処理を続ける。
一方、変数Nの値が、処理要素の数Kを超えた場合には、決定部45dは、上述した、移動先のVMの候補のうち未選択のVMがあるか否かの判定を再び行い、以降の処理を続ける。
また、算出した負荷Y´の値が平均値Aveより小さく、かつ、負荷Y´の値が閾値βより大きい場合には、決定部45dは、次のような判定を行う。すなわち、決定部45dは、新たに選択されたN番目に負荷が高い処理要素を、新たに選択された移動元のVMから、新たに選択された移動先のVMへ移動することを決定する。
このように、本実施例に係る管理サーバ40によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
そして、決定部45dは、移動が決定された処理要素の識別子と、移動元のVMのIPアドレスと、移動先のVMのIPアドレスとを対応付けて、移動指示リスト46に登録することにより、移動指示リスト46を更新する。続いて、決定部45dは、移動が決定された処理要素の移動元のVMを、移動元のVMの候補から外すとともに、移動先のVMを、移動先のVMの候補から外す。
続いて、決定部45dは、移動先のVMの候補、および、移動元のVMの候補の全VMを未選択とする。その後、決定部45dは、上述した、移動元のVMの候補のうち未選択のVMがあるか否かの判定を再び行い、以降の処理を続ける。
配置制御部45eは、処理要素の配置を制御する。例えば、配置制御部45eは、決定部45dによる処理要素の配置の決定結果に基づいて、特定部45cにより特定されたクエリの組が同一のVMに配置されるように制御する。
具体例を挙げて説明する。配置制御部45eは、まず、記憶部44から移動指示リスト46を取得する。そして、配置制御部45eは、前回取得した内容と比較して、移動指示リスト46に、新たに追加された内容があるか否かを判定する。新たに追加された内容がある場合には、配置制御部45eは、新たに追加されたレコードの「移動元」の項目に登録されたIPアドレスを用いて、次のような処理を行う。すなわち、配置制御部45eは、移動元に、レコードの「処理要素」の項目に登録された識別子が示す処理要素を、レコードの「移動先」の項目に登録されたIPアドレスが示す移動先に移動させる指示(移動指示)を送信する。これにより、移動元のVMは、移動先のVMに移動対象の処理要素を送信して、処理要素を移動させる。例えば、新たに追加されたレコードに、「移動元」および「移動先」の各項目に、特定したクエリの組のそれぞれが配置されたVMのIPアドレスが登録されている場合には、配置制御部45eは、クエリの組を1つのVMに配置するように制御することができる。続いて、配置制御部45eは、VM、サーバ20および管理サーバ40に対して移動対象のV−Nodeの識別子および移動先のVMのIPアドレスを含むルーティングテーブル更新指示を送信する。
制御部45は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
次に、本実施例に係る管理サーバ40が実行する各処理の流れを説明する。図15は、取得処理の手順を示すフローチャートである。この取得処理は、例えば、VMからのデータを受信したタイミングで実行される。
図15に示すように、取得部45bは、受信したデータが、通信回数情報37であるか否かを判定する(S101)。通信回数情報37である場合(S101肯定)には、取得部45bは、受信した通信回数情報37を取得し、取得した通信回数情報37を記憶部44に格納し(S102)、処理を終了する。一方、通信回数情報37でない場合(S101否定)には、取得部45bは、負荷情報38であるか否かを判定する(S103)。負荷情報38である場合(S103肯定)には、取得部45bは、受信した負荷情報38を取得し、取得した負荷情報38を記憶部44に格納し(S104)、処理を終了する。また、負荷情報38でない場合(S103否定)にも、処理を終了する。
図16〜18は、決定処理の手順を示すフローチャートである。この決定処理は、所定間隔ごとに実行される。
図16〜18に示すように、取得部45bは、記憶部44から負荷情報38を取得する(S201)。特定部45cは、取得部45bにより取得された負荷情報38を用いて、VMごとに、処理要素ごとの負荷の和を算出し、各VMの負荷を算出する(S202)。続いて、特定部45cは、算出した各VMの負荷を用いて、全VMの負荷の平均値Aveを算出する(S203)。その後、特定部45cは、負荷が閾値α以上のVMがあるか否かを判定する(S204)。
負荷が閾値α以上のVMがない場合(S204否定)には、処理を終了する。一方、負荷が閾値α以上のVMがある場合(S204肯定)には、特定部45cは、負荷が閾値α以上の全てのVMを移動元のVMの候補とする(S205)。
そして、特定部45cは、負荷が平均値Ave未満の全てのVMを移動先のVMの候補とする(S206)。続いて、特定部45cは、下記の処理で、特定したクエリの組について、全ての移動元のVMおよび全ての移動先のVMの組み合わせにおいて、同一のVMに配置することが可能か検証したか否かを判定する(S207)。検証していない場合(S207否定)には、特定部45cは、下記のS225の処理で、特定されたクエリの組の一方のクエリを、他方のクエリが配置されたVMに移動することが移動指示リスト46に登録済みであるか否かを判定する(S208)。
登録されている場合(S208肯定)には、S229へ進む。登録されていない場合(S208否定)には、特定部45cは、下記のS210の処理において、移動元のVMの候補のうち、未選択のVMがあるか否かを判定する(S209)。未選択のVMがない場合(S209否定)には、S212へ進む。一方、未選択のVMがある場合(S209肯定)には、特定部45cは、移動元のVMの候補の中から、未選択のVMを1つ選択する(S210)。
そして、特定部45cは、下記のS212の処理において、移動先のVMの候補のうち、未選択のVMがあるか否かを判定する(S211)。未選択のVMがない場合(S211否定)には、特定部45cは、移動先のVMの候補の全VMを未選択とする(S212)。そして、S207へ戻る。一方、未選択のVMがある場合(S211肯定)には、特定部45cは、移動元のVMの候補の中から、未選択のVMを1つ選択する(S213)。
続いて、特定部45cは、下記のS216、S220、S221のいずれかの処理で、クエリの組が特定されたか否かを判定する(S214)。クエリの組が特定された場合(S214肯定)には、S222へ進む。一方、クエリの組が特定されていない場合(S214否定)には、取得部45bは、記憶部44から通信回数情報37を取得する(S215)。そして、特定部45cは、取得部45bにより取得された通信回数情報37を用いて、通信回数が最大のクエリの組を特定する(S216)。
続いて、特定部45cは、特定した組の数は複数であるか否かを判定する(S217)。複数でない場合(S217否定)には、S222へ進む。一方、複数である場合(S217肯定)には、特定部45cは、予め管理サーバ40に与えられたクエリグラフを参照し、特定した組ごとに、クエリ間の距離を算出する(S218)。
続いて、特定部45cは、算出した距離が最も近いクエリの組の数が複数であるか否かを判定する(S219)。
算出した距離が最も近いクエリの組の数が複数である場合(S219肯定)には、特定部45cは、算出した距離が最も近いクエリの複数の組のうち、クエリを含む処理要素の負荷の合計が最も小さいクエリの組を特定し(S221)、S222へ進む。また、算出した距離が最も近いクエリの組の数が複数でない場合(S219否定)には、特定部45cは、特定した複数の組の中から、距離が最も近いクエリの組を特定し(S220)、S222へ進む。
決定部45dは、特定部45cにより特定されたクエリの組について、一方のクエリが、新たに選択された移動元のVMに配置されたクエリであり、かつ、他方のクエリが、新たに選択された移動先のVMに配置されたクエリであるか否かを判定する(S222)。一方のクエリが、新たに選択された移動元のVMに配置されたクエリでないか、または、他方のクエリが、新たに選択された移動先のVMに配置されたクエリでない場合(S222否定)には、S211に戻る。
また、一方のクエリが、新たに選択された移動元のVMに配置されたクエリであり、かつ、他方のクエリが、新たに選択された移動先のVMに配置されたクエリである場合(S222肯定)には、決定部45dは、次のような処理を行う。すなわち、決定部45dは、新たに選択された移動先のVMに、特定したクエリの組のうち、新たに選択された移動元のVMに配置されたクエリを含む処理要素を移動させた場合の負荷Yを算出する(S223)。
そして、決定部45dは、算出した負荷Yの値が平均値Aveより小さく、かつ、負荷Yの値が閾値βより大きいか否かを判定する(S224)。算出した負荷Yの値が平均値Ave以上であるか、または、負荷Yの値が閾値β以下である場合(S224否定)には、S211に戻る。一方、負荷Yの値が平均値Aveより小さく、かつ、負荷Yの値が閾値βより大きい場合(S224肯定)には、決定部45dは、次のような処理を行う。すなわち、決定部45dは、特定したクエリの組のうち、新たに選択された移動元のVMに配置されたクエリを含む処理要素を、移動元のVMから、新たに選択された移動先のVMへ移動することを決定し、移動指示リスト46を更新する(S225)。続いて、決定部45dは、移動が決定された処理要素の移動元のVMを、移動元のVMの候補から外すとともに、移動先のVMを、移動先のVMの候補から外す(S226)。
続いて、決定部45dは、移動先のVMの候補、および、移動元のVMの候補の全VMを未選択とし(S227)、S208へ戻る。
また、特定部45cにより、特定したクエリの組について、全ての移動元のVMおよび全ての移動先のVMの組み合わせにおいて、同一のVMに配置することが可能か検証したと判定された場合(S207肯定)には、決定部45dは、次のような処理を行う。すなわち、決定部45dは、移動元のVMの候補の全VMを未選択とする(S228)。そして、決定部45dは、移動元のVMの候補のうち、未選択のVMがあるか否かを判定する(S229)。未選択のVMがない場合(S229否定)には、処理を終了する。一方、未選択のVMがある場合(S229肯定)には、移動元のVMの候補の中から、未選択のVMを1つ選択する(S230)。
その後、決定部45dは、変数Nに「1」を設定する(S231)。そして、決定部45dは、新たに選択された移動元のVMの処理要素のうち、N番目に負荷が高い処理要素を選択する(S232)。
続いて、決定部45dは、下記のS234の処理で、移動先のVMの候補のうち、未選択のVMがあるか否かを判定する(S233)。未選択のVMがない場合(S233否定)には、S229へ戻る。一方、未選択のVMがある場合(S233肯定)には、決定部45dは、移動先のVMの候補の中から、未選択のVMを1つ選択する(S234)。
その後、決定部45dは、新たに選択された移動先のVMに、新たに選択されたN番目に負荷が高い処理要素を移動させた場合の負荷Y´を算出する(S235)。
そして、決定部45dは、算出した負荷Y´の値が平均値Aveより小さく、かつ、負荷Y´の値が閾値βより大きいか否かを判定する(S236)。算出した負荷Y´の値が平均値Ave以上であるか、または、負荷Y´の値が閾値β以下である場合(S236否定)には、決定部45dは、変数Nの値を1つインクリメントする(S237)。その後、決定部45dは、変数Nの値が、新たに選択された移動元のVMの処理要素の数Kを超えたか否かを判定する(S238)。変数Nの値が、処理要素の数Kを超えていない場合(S238否定)には、決定部45dは、新たに選択された移動元のVMの処理要素のうち、N番目に負荷が高い処理要素を特定し(S239)、S235へ戻る。
一方、変数Nの値が、処理要素の数Kを超えた場合(S238肯定)には、S233へ戻る。
また、算出した負荷Y´の値が平均値Aveより小さく、かつ、負荷Y´の値が閾値βより大きい場合(S236肯定)には、決定部45dは、次のような判定を行う。すなわち、決定部45dは、新たに選択されたN番目に負荷が高い処理要素を、新たに選択された移動元のVMから、新たに選択された移動先のVMへ移動することを決定し、移動指示リスト46を更新する(S240)。続いて、決定部45dは、移動が決定された処理要素の移動元のVMを、移動元のVMの候補から外すとともに、移動先のVMを、移動先のVMの候補から外す(S241)。
続いて、決定部45dは、移動先のVMの候補、および、移動元のVMの候補の全VMを未選択とし(S242)、S229へ戻る。
図19は、配置制御処理の手順を示すフローチャートである。この配置制御処理は、所定間隔ごとに実行される。
図19に示すように、配置制御部45eは、記憶部44から移動指示リスト46を取得する(S301)。そして、配置制御部45eは、前回取得した内容と比較して、移動指示リスト46に、新たに追加された内容があるか否かを判定する(S302)。新たに追加された内容がある場合(S302肯定)には、配置制御部45eは、新たに追加されたレコードの「移動元」の項目に登録されたIPアドレスを用いて、次のような処理を行う。すなわち、配置制御部45eは、移動元に、レコードの「処理要素」の項目に登録された識別子が示す処理要素を、レコードの「移動先」の項目に登録されたIPアドレスが示す移動先に移動させる指示(移動指示)を送信する(S303)。続いて、配置制御部45eは、VM、サーバ20および管理サーバ40に対して移動対象のV−Nodeの識別子および移動先のVMのIPアドレスを含むルーティングテーブル更新指示を送信し(S304)、処理を終了する。また、新たに追加された内容がない場合(S302否定)にも、処理を終了する。
上述してきたように、本実施例に係る管理サーバ40は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。したがって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ40によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ40によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ40によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
実施例4について説明する。実施例4では、全VMの処理要素の負荷の平均値が閾値αを超えた場合には、クエリを配置させるVMの台数を増やす場合について説明する。
図20は、実施例4に係る管理サーバの構成を示すブロック図である。図20に示すように、管理サーバ80の制御部45は、図12に示す実施例3に係る制御部45に比較して、特定部45c、決定部45dに代えて特定部81c、決定部81dを有する点が異なる。なお、以下では、上記の実施例3などと同様の機能を果たす各部については図12などと同様の符号を付し、その説明は省略する。
図21は、実施例4に係る管理サーバが実行する処理の一例を説明するための図である。図21の例は、5つのVM31a〜35aのそれぞれの負荷を示す。横軸は、VMを示し、縦軸は、VMの負荷を示す。また、VMの中の「High」は、負荷が第一の閾値を超えた高負荷である処理要素を示す。また、VMの中の「Middle」は、負荷が第一の閾値以下で、かつ、第一の閾値より小さい第二の閾値を超えた中負荷である処理要素を示す。また、VMの中の「Low」は、負荷が第二の閾値以下である小負荷である処理要素を示す。図21の例では、閾値αは、上限の負荷の警戒値である。また、図21の例では、閾値βは、閾値αよりも小さく、下限の負荷の警戒値である。図21の例では、5つのVMの負荷の平均値Aveが閾値αを超えている。そこで、図21の例では、VMの台数を2台(VM31b、VM32b)増やして、増やした2台のVM31b,32bに、処理要素を移動させて、合計7台のVMの負荷の平均値Aveが、予め定められた値WCとなるように、管理サーバ80は制御する。
特定部81cは、実施例3に係る特定部45cと比較して、下記の点が異なる。まず、特定部81cは、全VMの負荷の合計Tを算出する。また、特定部45cでは、負荷が閾値α以上のVMがあるか否かの判定を行っていたが、特定部81cは、この判定に代えて、平均値Aveが閾値α以上であるか否かの判定を行う。例えば、図21の例では、5台のVMの負荷の平均値Aveが閾値αを超えているので、特定部81cは、この場合には、平均値Aveが閾値α以上であると判定する。
また、特定部81cは、平均値Aveが閾値α以上である場合には、算出した全VMの負荷の合計Tを、予め定められた値WCで除した値(T/WC)を算出する。なお、値(T/WC)は、平均のVMの負荷をWCとする場合のVMの台数を示す。そして、特定部81cは、負荷がWCの場合におけるVMの台数(T/WC)から、現在のVMの台数Sを減じた値ΔS(=(T/WC)−S)を算出して、増加させるVMの台数を算出する。
また、特定部45cでは、負荷が平均値Ave未満の全てのVMを移動先のVMの候補とするが、特定部81cは、このような移動先のVMの候補の選出に代えて、ΔS分の台数の新規の全てのVMを移動先のVMの候補とする。例えば、図21の例では、特定部81cは、ΔS=2(7−5)台分の台数の新規の全てのVM31b,32bを移動先のVMの候補とする。
決定部81dは、実施例3に係る決定部45dと比較して、下記の点が異なる。決定部45dでは、算出した負荷Yの値が平均値Aveより小さく、かつ、負荷Yの値が閾値βより大きいか否かの判定を行うが、決定部81dは、この判定に代えて、次のような処理を行う。すなわち、決定部81dは、算出した負荷Yの値がWCより小さく、かつ、負荷Yの値が閾値βより大きいか否かを判定する。また、決定部45dでは、算出した負荷Y´の値が平均値Aveより小さく、かつ、負荷Y´の値が閾値βより大きいか否かの判定を行うが、決定部81dは、この判定に代えて、次のような処理を行う。すなわち、決定部81dは、算出した負荷Y´の値がWCより小さく、かつ、負荷Y´の値が閾値βより大きいか否かを判定する。これにより、移動先のVMにおいて、処理要素が移動された場合の負荷を、WCより小さく、かつ、閾値βより大きくすることができる。また、VMの平均の負荷がWCとなるようなVMの台数を決定することができる。
また、本実施例に係る管理サーバ80は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。したがって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ80によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ80によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ80によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
次に、本実施例に係る管理サーバ80が実行する各処理の流れを説明する。取得処理、配置制御処理については、実施例3と同様であるので説明を省略し、実施例4に係る決定処理について説明する。図22〜24は、実施例4に係る決定処理の手順を示すフローチャートである。この決定処理は、所定間隔ごとに実行される。なお、実施例3と同様の処理については、同一の符号を付して説明する。
図22〜24に示すように、特定部81cは、S202の次に、全VMの負荷の合計Tを算出する(S401)。また、特定部81cは、S203の次に、S204に代えて、平均値Aveが閾値α以上であるか否かを判定する(S402)。
平均値Aveが閾値α以上でない場合(S402否定)には、処理を終了する。一方、平均値Aveが閾値α以上である場合(S402肯定)には、特定部81cは、算出した全VMの負荷の合計Tを、予め定められた値WCで除した値(T/WC)を算出する(S403)。そして、特定部81cは、負荷がWCの場合におけるVMの台数(T/WC)から、現在のVMの台数Sを減じた値ΔS(=(T/WC)−S)を算出して、増加させるVMの台数を算出する(S404)。
また、特定部81cは、S205の次に、S206に代えて、ΔS分の台数の新規の全てのVMを移動先のVMの候補とする(S405)。
また、決定部81dは、S224に代えて、算出した負荷Yの値がWCより小さく、かつ、負荷Yの値が閾値βより大きいか否かを判定する(S406)。また、決定部81dは、S236に代えて、算出した負荷Y´の値がWCより小さく、かつ、負荷Y´の値が閾値βより大きいか否かを判定する(S407)。
上述してきたように、本実施例に係る管理サーバ80は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。したがって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ80によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ80によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ80によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
また、本実施例に係る管理サーバ80によれば、移動先のVMにおいて、処理要素が移動された場合の負荷を、WCより小さく、かつ、閾値βより大きくすることができる。
また、本実施例に係る管理サーバ80によれば、VMの平均の負荷がWCとなるようなVMの台数を決定することができる。
実施例5について説明する。実施例5では、全VMの処理要素の負荷の平均値が閾値βより小さい場合には、クエリを配置させるVMの台数を減らす場合について説明する。
図25は、実施例5に係る管理サーバの構成を示すブロック図である。図25に示すように、管理サーバ82の制御部45は、図20に示す実施例4に係る制御部45に比較して、特定部81c、決定部81dに代えて特定部83c、決定部83dを有する点が異なる。なお、以下では、上記の各実施例と同様の機能を果たす各部については同様の符号を付し、その説明を省略する。
図26は、実施例5に係る管理サーバが実行する処理の一例を説明するための図である。図26の例は、5つのVM31a〜35aのそれぞれの負荷を示す。横軸は、VMを示し、縦軸は、VMの負荷を示す。また、VMの中の「High」は、負荷が第一の閾値を超えた高負荷である処理要素を示す。また、VMの中の「Middle」は、負荷が第一の閾値以下で、かつ、第一の閾値より小さい第二の閾値を超えた中負荷である処理要素を示す。また、VMの中の「Low」は、負荷が第二の閾値以下である小負荷である処理要素を示す。図26の例では、閾値αは、上限の負荷の警戒値である。また、図26の例では、閾値βは、閾値αよりも小さく、下限の負荷の警戒値である。図26の例では、5つのVMの負荷の平均値Aveが閾値βよりも小さい。そこで、図26の例では、まず、クエリを配置させるVMの台数を2台(VM34a、VM35a)減らす。そして、残ったVMのうち負荷がWC未満の全てのVM(VM32a、VM33a)に、減らした2台のVM34a,35aの処理要素を移動させて、合計3台のVMの負荷の平均値Aveが、予め定められた値WCとなるように、管理サーバ82は制御する。
特定部83cは、実施例4に係る特定部81cと比較して、下記の点が異なる。まず、特定部81cでは、平均値Aveが閾値α以上であるか否かの判定を行われていたが、特定部83cは、平均値Aveが閾値βより小さいか否かを判定する。例えば、図26の例では、5台のVMの負荷の平均値Aveが閾値βより小さいので、特定部83cは、この場合には、平均値Aveが閾値βより小さいと判定する。
また、特定部81cでは、ΔS(=(T/WC)−S)を算出して、増加させるVMの台数を算出するが、特定部83cは、ΔSの算出に代えて、減らすVMの台数ΔS´(=S−(T/WC))を算出する。
また、特定部81cでは、負荷が閾値α以上の全てのVMを移動元のVMの候補とするが、特定部83cは、全てのVMのうち、負荷が低い方からΔS´の値が示す台数分のVMを移動元のVMの候補とする。例えば、図26の例では、特定部83cは、ΔS´=2(5−3)台分の台数の負荷が低いVM34a,35aを移動元のVMの候補とする。
また、特定部81cでは、ΔSの値が示す台数分の台数の新規の全てのVMを移動先の候補とするが、特定部83cは、減らす対象でないVM、すなわち、残りのVMのうち、負荷がWC未満の全てのVMを移動先のVMの候補とする。例えば、図26の例では、特定部83cは、残りのVM31a〜33aのうち、負荷がWC未満の全てのVM32a、VM33aを移動元のVMの候補とする。これにより、VMの平均の負荷がWCとなるようなVMの台数を決定することができる。また、移動先のVMにおいて、処理要素が移動された場合の負荷を、WCより小さく、かつ、閾値βより大きくすることができる。
また、本実施例に係る管理サーバ82は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。したがって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ82によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ82によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ82によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
次に、本実施例に係る管理サーバ82が実行する各処理の流れを説明する。取得処理、配置制御処理については、実施例4と同様であるので説明を省略し、実施例5に係る決定処理について説明する。図27〜29は、実施例5に係る決定処理の手順を示すフローチャートである。この決定処理は、所定間隔ごとに実行される。なお、実施例3や実施例4と同様の処理については、同一の符号を付して説明する。
図27〜29に示すように、特定部83cは、S203の次に、S402に代えて、平均値Aveが閾値βより小さいか否かを判定する(S501)。
また、特定部83cは、S403の次に、S404に代えて、現在のVMの台数Sから、負荷がWCの場合におけるVMの台数(T/WC)を減じた値ΔS´(=S−(T/WC))を算出して、増加させるVMの台数を算出する(S502)。そして、特定部83cは、S205に代えて、全てのVMのうち、負荷が低い方からΔS´の値が示す台数分のVMを移動元のVMの候補とする(S503)。続いて、特定部83cは、S405に代えて、残りのVMのうち、負荷がWC未満の全てのVMを移動先のVMの候補とする(S504)。
上述してきたように、本実施例に係る管理サーバ82は、特定した組の2つのクエリを含む2つの処理要素を同一のVMへ配置することを決定する。したがって、この決定に基づき2つの処理要素が同一のVMへ配置された場合には、2つの処理要素が同一のVMへ配置される前に2つのVM間で行われていた処理結果の通信が行われなくなる。したがって、本実施例に係る管理サーバ82によれば、通信回数の増加を抑制することができる。
また、本実施例に係る管理サーバ82によれば、優先的に、通信回数の多い処理要素を1つのVMに配置することを決定することができる。
また、本実施例に係る管理サーバ82によれば、処理要素を移動させた場合に、移動先のVMの負荷の値を平均値Aveより小さく、かつ、閾値βより大きくなるように、処理要素の配置を決定することができる。
また、本実施例に係る管理サーバ82によれば、移動先のVMにおいて、処理要素が移動された場合の負荷を、WCより小さく、かつ、閾値βより大きくすることができる。
また、本実施例に係る管理サーバ82によれば、VMの平均の負荷がWCとなるようなVMの台数を決定することができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
まず、上述した各実施例の変形例について説明する。例えば、CEPシステム内においてクエリを配置することが可能な複数の装置のうち、特定の装置のみ実行可能なクエリがある。そこで、この場合に、このクエリを含む処理要素を、他の装置に配置しないように管理サーバが制御する変形例について説明する。上述した各実施例の変形例における管理サーバは、特定の装置に配置された該当クエリの移動が不可であることを示す第一の不可情報を記憶部に格納する。そして、変形例における特定部や決定部などは、移動元の装置の候補が選出された後に、記憶部に第一の不可情報があるか否かを判定し、第一の不可情報がある場合には、第一の不可情報を参照する。続いて、変形例における特定部や決定部などは、第一の不可情報に該当する特定の装置が、移動元の装置の候補として選出された場合には、特定の装置を移動元の装置の候補から外す。なお、変形例における特定部や決定部は、移動元の装置の候補が選出される前に、第一の不可情報を参照し、第一の不可情報が示す特定の装置を、移動元の装置の候補に選出しないようにすることもできる。
図30は、変形例に係る第一の除外処理の手順を示すフローチャートである。第一の除外処理は、例えば、移動元のVMの候補が選出された後に、決定処理の一部の処理として実行される。図30に示すように、変形例における特定部や決定部などは、記憶部を検索し、記憶部に第一の不可情報があるか否かを判定する(S601)。第一の不可情報がない場合(S601否定)には、決定処理を進める。一方、第一の不可情報がある場合(S601肯定)には、変形例における特定部や決定部などは、記憶部から第一の不可情報を取得し、取得した第一の不可情報に基づいて、移動元の装置の候補の中に、第一の不可情報が示す特定の装置があるか否かを判定する(S602)。
移動元の装置の候補の中に、第一の不可情報が示す特定の装置がある場合(S602肯定)には、変形例における特定部や決定部などは、特定の装置を移動元の装置の候補から外し(S603)、決定処理を進める。また、移動元の装置の候補の中に、第一の不可情報が示す特定の装置がない場合(S602否定)にも、決定処理を進める。
上述したように、変形例は、CEPシステム内においてクエリを配置することが可能な複数の装置のうち、特定の装置のみでしか実行できないクエリについては、クエリが配置された装置を移動元の装置の候補から外す。したがって、変形例によれば、移動元の装置の候補の台数が減るため、処理要素を移動させる際の処理コストが抑制される。また、変形例によれば、特定の装置のみでしか実行できないクエリを他の装置に移動させてしまう事象が発生することを抑制することができる。
また、CEPシステム内において、複数のクエリのうち、特定のクエリしか実行できない装置がある。そこで、この場合に、この装置に、他の装置の処理要素を移動させないように管理サーバが制御する変形例について説明する。上述した各実施例の変形例における管理サーバは、特定のクエリしか実行できない装置に、他の装置からのクエリの移動が不可であることを示す第二の不可情報を記憶部に格納する。そして、変形例における特定部や決定部などは、移動先の装置の候補が選出された後に、記憶部に第二の不可情報があるか否かを判定し、第二の不可情報がある場合には、第二の不可情報を参照する。続いて、変形例における特定部や決定部などは、第二の不可情報に該当する装置が、移動先の装置の候補として選出された場合には、この装置を移動先の装置の候補から外す。なお、変形例における特定部や決定部は、移動先の装置の候補が選出される前に、第二の不可情報を参照し、第二の不可情報が示す装置を、移動先の装置の候補に選出しないようにすることもできる。
図31は、変形例に係る第二の除外処理の手順を示すフローチャートである。第二の除外処理は、例えば、移動先のVMの候補が選出された後に、決定処理の一部の処理として実行される。図31に示すように、変形例における特定部や決定部などは、記憶部を検索し、記憶部に第二の不可情報があるか否かを判定する(S701)。第二の不可情報がない場合(S701否定)には、決定処理を進める。一方、第二の不可情報がある場合(S701肯定)には、変形例における特定部や決定部などは、記憶部から第二の不可情報を取得し、取得した第二の不可情報に基づいて、移動先の装置の候補の中に、第二の不可情報が示す装置があるか否かを判定する(S702)。
移動先の装置の候補の中に、第二の不可情報が示す装置がある場合(S702肯定)には、変形例における特定部や決定部などは、この装置を移動先の装置の候補から外し(S703)、決定処理を進める。また、移動先の装置の候補の中に、第二の不可情報が示す装置がない場合(S702否定)にも、決定処理を進める。
上述したように、変形例は、CEPシステム内において、複数のクエリのうち、特定のクエリしか実行できない装置については、移動先の装置の候補から外す。したがって、変形例によれば、移動先の装置の候補の台数が減るため、処理要素を移動させる際の処理コストが抑制される。また、変形例によれば、特定のクエリしか実行できない装置に、他の装置から他のクエリを移動させてしまう事象が発生することを抑制することができる。
また、上記の各実施例では、VMが、クエリ間の通信回数を算出し、算出した通信回数を含む通信回数情報37を管理サーバに送信する場合について例示した。しかしながら、開示の装置は、これに限定されない。そこで、VMが、クエリの実行順序を示す順序情報を管理サーバに送信し、順序情報を受信した管理サーバがクエリ間の通信回数を算出し、算出した通信回数に基づいて、クエリの組を特定する変形例について説明する。
図32は、変形例に係る管理サーバの構成の一例を示す図である。図32の例は、実施例5の変形例を示す。図32に示すように、管理サーバ86の制御部45は、算出部87を有する。変形例では、VMから送信された順序情報を取得部45bが取得し、取得した順序情報を記憶部44に格納する。そして、算出部87は、所定のタイミング、例えば、決定処理において、記憶部44に記憶された通信回数情報37が取得部45bにより取得される前に、記憶部44から順序情報を取得する。続いて、算出部87は、取得した順序情報が示すクエリの実行順序から、クエリの通信回数を算出する。その後、算出部87は、算出したクエリの通信回数分の値を該当項目に登録した通信回数情報37を記憶部44に格納する。
図33は、変形例に係る算出処理の手順を示すフローチャートである。算出処理は、例えば、決定処理の一部の処理として、取得部により通信回数情報37が取得される前に実行される。図33に示すように、算出部87は、記憶部44から順序情報を取得する(S801)。続いて、算出部87は、取得した順序情報が示すクエリの実行順序から、クエリの通信回数を算出する(S802)。その後、算出部87は、算出したクエリの通信回数分の値を該当項目に登録した通信回数情報37を記憶部44に格納する(S803)。
上述したように、変形例では、VMは、クエリの通信回数を算出することなく、クエリの実行順序を管理サーバに送信する。そして、変形例では、クエリの実行順序からクエリの通信回数を算出し、算出した通信回数を用いて、クエリの組を特定する。したがって、変形例によれば、VMの処理コストを抑制することができる。なお、上記では、実施例5の変形例について説明したが、実施例3および実施例4などについても、実施例5の変形例と同様の技術を取り入れることができる。
また、上記の各実施例では、VMにクエリを配置した場合について説明したが、開示の装置は、物理サーバにクエリを配置して同様の処理を行うことができる。
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[配置プログラム]
また、上記の実施例で説明した配置装置および管理サーバの各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図34を用いて、上記の各実施例で説明した配置装置または管理サーバと同様の機能を有する配置プログラムを実行するコンピュータの一例を説明する。図34は、配置プログラムを実行するコンピュータを示す図である。
図34に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。これら310〜340の各符号が示す各機器は、バス350を介して接続される。
ROM320には、OSなどの基本プログラムが記憶されている。また、HDD330には、上記の各実施例で示す初期配置部と、取得部と、算出部と、特定部と、決定部と、配置制御部と同様の機能を発揮する配置プログラムが予め記憶される。なお、配置プログラムについては、適宜分離しても良い。また、HDD330には、ルーティングテーブル、通信回数情報、負荷情報、移動指示リストが設けられる。これらルーティングテーブル、通信回数情報、負荷情報、移動指示リスト、順序情報は、上述したルーティングテーブル50、通信回数情報37、負荷情報38、移動指示リスト46、順序情報に対応する。
そして、CPU310が、配置プログラムをHDD330から読み出して実行する。
そして、CPU310は、ルーティングテーブル、通信回数情報、負荷情報、移動指示リストを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたルーティングテーブル、通信回数情報、負荷情報、移動指示リストを用いて、配置プログラムを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM330に格納されなくともよい。処理に用いられるデータがRAM340に格納されれば良い。
なお、上記した配置プログラムについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
1 配置装置
1a 取得部
1b 特定部
1c 決定部
2 配置装置
2a 取得部
2b 算出部
2c 特定部
2d 決定部

Claims (16)

  1. 複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件に対象データが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、処理結果を送信するクエリ間の通信回数を示す通信回数情報を取得する取得部と、
    前記信回数情報に基づいて、クエリの組を特定する特定部と、
    前記特定部により特定されたクエリの組を同一の装置に配置することを決定する決定部と、
    を有することを特徴とする配置装置。
  2. 複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件にデータが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、対象データに対する複数のクエリが実行された順序を示す順序情報を取得する取得部と、
    前記順序情報に基づいて、クエリ間の通信回数を示す通信回数情報を算出する算出部と、
    前記信回数情報に基づいて、クエリの組を特定する特定部と、
    前記特定部により特定されたクエリの組を同一の装置に配置することを決定する決定部と、
    を有することを特徴とする配置装置。
  3. 前記特定部は、前記通信回数が最も多いクエリの組を特定する
    ことを特徴とする請求項1または2に記載の配置装置。
  4. 前記決定部は、前記通信回数が最も多いクエリの組が複数組である場合には、前記複数のクエリの組について、当該クエリを含む処理要素の負荷の合計が最も小さいクエリの組、または、前記複数のクエリの接続関係を示すクエリグラフ上において間に接続されるクエリの数が最も少ないクエリの組を特定する
    ことを特徴とする請求項3に記載の配置装置。
  5. 前記決定部による決定結果に基づいて、前記特定部により特定されたクエリの組が同一の装置に配置されるように制御する配置制御部
    をさらに有することを特徴とする請求項1〜4のいずれか1つに記載の配置装置。
  6. 前記配置制御部は、前記特定部により特定されたクエリの組に含まれるクエリが負荷が第一の閾値を超えた装置と負荷が第二の閾値未満の装置に配置されている場合、負荷が第一の閾値を超えた装置に配置されているクエリが、負荷が第二の閾値未満の装置に配置されることで同一の装置に配置されるように制御する
    ことを特徴とする請求項5に記載の配置装置。
  7. 前記配置制御部は、前記複数の装置の負荷が第一の閾値を超えている場合には、前記特定部により特定されたクエリの組が、前記複数の装置以外の他の装置に配置されるように制御する
    ことを特徴とする請求項5に記載の配置装置。
  8. 前記配置制御部は、前記複数の装置の負荷が第二の閾値未満である場合には、前記特定部により特定されたクエリの組、および、前記複数の装置のうち負荷が第三の閾値を超えた装置に配置されたクエリが、前記複数の装置のうち、前記複数の装置の台数よりも少ない台数の装置に配置されるように制御する
    ことを特徴とする請求項5に記載の配置装置。
  9. 前記配置制御部は、前記決定部が、前記複数のクエリのうち、所定のクエリのみを実行する装置を、他のクエリを配置する前記同一の装置としないように制御する
    ことを特徴とする請求項5に記載の配置装置。
  10. 前記配置制御部は、前記特定部により特定されたクエリの組が示すいずれかのクエリが、前記複数の装置のうち当該クエリが配置された装置のみで実行可能である場合には、当該装置以外の他の装置へ当該クエリを配置しないように制御する
    ことを特徴とする請求項5に記載の配置装置。
  11. 前記取得部は、前記装置によりクエリの実行に伴って記録または集計された前記情報を取得する
    ことを特徴とする請求項1〜10のいずれか1つに記載の配置装置。
  12. コンピュータ
    複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件に対象データが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、処理結果を送信するクエリ間の通信回数を示す通信回数情報を前記複数の装置のいずれかから取得する取得部と
    前記取得部が取得した前記通信回数情報に基づいて、クエリの組を特定する特定部と
    前記特定部が特定したクエリの組を同一の装置に配置することを決定する決定部と、
    を備える配置装置として機能させるための配置プログラム。
  13. コンピュータ
    複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件にデータが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、対象データに対する複数のクエリが実行された順序を示す順序情報を前記複数の装置のいずれかから取得する取得部と
    前記取得部が取得した順序情報に基づいて、クエリ間の通信回数を示す通信回数情報を算出する算出部と
    前記算出部が算出した通信回数情報に基づいて、クエリの組を特定する特定部と
    前記特定部が特定したクエリの組を同一の装置に配置することを決定する決定部と、
    を備える配置装置として機能させるための配置プログラム。
  14. プロセッサとメモリとを備えるコンピュータが実行する配置方法であって、
    前記プロセッサは、複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件に対象データが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、処理結果を送信するクエリ間の通信回数を示す通信回数情報を前記複数の装置のいずれかから取得して前記メモリに記憶し
    前記プロセッサは、前記通信回数情報に基づいて、クエリの組を特定し、
    前記プロセッサは、特定されたクエリの組を同一の装置に配置することを決定する
    各処理を実行することを特徴とする配置方法。
  15. プロセッサとメモリとを備えるコンピュータが実行する配置方法であって、
    前記プロセッサは、複数のクエリが複数の装置のいずれかに割り当てられ、それぞれ設定された条件にデータが合致した場合に処理を実行す複数のクエリが複数の装置のいずれかに割り当てられた分散処理システムについて、対象データに対する複数のクエリが実行された順序を示す順序情報を前記複数の装置のいずれかから取得して前記メモリに記憶し
    前記プロセッサは、前記順序情報に基づいて、クエリ間の通信回数を示す通信回数情報を算出し、
    前記プロセッサは、前記通信回数情報に基づいて、クエリの組を特定し、
    前記プロセッサは、特定されたクエリの組を同一の装置に配置することを決定する
    各処理を実行することを特徴とする配置方法。
  16. 連携してイベントを実行する複数の処理要求文が複数の装置のいずれかに割り当てられ、それぞれ設定された条件に対象データが合致した場合に処理を実行する複数の処理要求文が複数の装置のいずれかに割り当てられた分散処理システムについて、処理結果を送信する処理要求文間の通信回数を示す通信回数情報を取得する取得部と、
    前記通信回数情報に基づいて、処理要求文の組を特定する特定部と、
    特定された前記処理要求文の組を同一の装置に配置するための装置を決定する決定部と、
    を有することを特徴とする配置装置。
JP2011263048A 2011-11-30 2011-11-30 配置装置、配置プログラムおよび配置方法 Expired - Fee Related JP5862245B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011263048A JP5862245B2 (ja) 2011-11-30 2011-11-30 配置装置、配置プログラムおよび配置方法
US13/644,978 US9141677B2 (en) 2011-11-30 2012-10-04 Apparatus and method for arranging query
EP12189718.5A EP2600259B1 (en) 2011-11-30 2012-10-24 Device, method and program for arranging query in a plurality of devices
CN201210424875.5A CN103136322B (zh) 2011-11-30 2012-10-30 用于配置查询的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011263048A JP5862245B2 (ja) 2011-11-30 2011-11-30 配置装置、配置プログラムおよび配置方法

Publications (2)

Publication Number Publication Date
JP2013114626A JP2013114626A (ja) 2013-06-10
JP5862245B2 true JP5862245B2 (ja) 2016-02-16

Family

ID=47631158

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011263048A Expired - Fee Related JP5862245B2 (ja) 2011-11-30 2011-11-30 配置装置、配置プログラムおよび配置方法

Country Status (4)

Country Link
US (1) US9141677B2 (ja)
EP (1) EP2600259B1 (ja)
JP (1) JP5862245B2 (ja)
CN (1) CN103136322B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015015574A1 (ja) * 2013-07-30 2015-02-05 富士通株式会社 処理プログラム、処理システムおよび処理方法
WO2015087449A1 (ja) * 2013-12-13 2015-06-18 株式会社日立製作所 計算機システムおよび計算機システムの制御方法
JP6428012B2 (ja) * 2014-07-16 2018-11-28 富士通株式会社 分散処理プログラム、分散処理管理装置及び分散処理方法
US10089362B2 (en) * 2014-08-13 2018-10-02 Software Ag Systems and/or methods for investigating event streams in complex event processing (CEP) applications
CN105450964B (zh) * 2014-09-30 2020-03-17 杭州海康威视系统技术有限公司 对录像数据进行云存储的方法、系统及管理节点
JP6626198B2 (ja) * 2016-06-27 2019-12-25 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム
US11461335B1 (en) 2021-04-09 2022-10-04 Snowflake Inc. Optimized processing of data in different formats
US11100111B1 (en) 2021-04-09 2021-08-24 Snowflake Inc. Real-time streaming data ingestion into database tables

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158842A1 (en) * 2002-02-21 2003-08-21 Eliezer Levy Adaptive acceleration of retrieval queries
US20040230581A1 (en) * 2003-05-15 2004-11-18 Chang-Hung Lee Processing distributed mobile queries with interleaved remote mobile joins
JP2005004676A (ja) * 2003-06-16 2005-01-06 Fujitsu Ltd 適応型分散処理システム
JP4485230B2 (ja) * 2004-03-23 2010-06-16 株式会社日立製作所 マイグレーション実行方法
US7610397B2 (en) 2005-02-28 2009-10-27 International Business Machines Corporation Method and apparatus for adaptive load shedding
JP4687253B2 (ja) * 2005-06-03 2011-05-25 株式会社日立製作所 ストリームデータ処理システムのクエリ処理方法
US8103656B2 (en) * 2008-02-20 2012-01-24 Infosys Technologies Limited Integrated distributed query processor for data grids
US8060614B2 (en) 2008-06-19 2011-11-15 Microsoft Corporation Streaming operator placement for distributed stream processing
CN101685449B (zh) * 2008-09-26 2012-07-11 国际商业机器公司 一种用于连接多个异构分布式数据库中的表的方法和系统
JP2010086145A (ja) * 2008-09-30 2010-04-15 Hitachi East Japan Solutions Ltd 分散処理システム
JP5149840B2 (ja) * 2009-03-03 2013-02-20 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US20110029985A1 (en) * 2009-07-31 2011-02-03 Nokia Corporation Method and apparatus for coordinating resource access
US8352945B2 (en) * 2009-08-11 2013-01-08 International Business Machines Corporation System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database
US8688683B2 (en) * 2009-11-30 2014-04-01 Business Objects Software Ltd. Query plan reformulation
US9361341B2 (en) * 2010-02-16 2016-06-07 Hewlett Packard Enterprise Development Lp Functional-form queries
US9172678B2 (en) * 2011-06-28 2015-10-27 At&T Intellectual Property I, L.P. Methods and apparatus to improve security of a virtual private mobile network

Also Published As

Publication number Publication date
EP2600259A2 (en) 2013-06-05
EP2600259B1 (en) 2021-01-20
JP2013114626A (ja) 2013-06-10
EP2600259A3 (en) 2015-01-28
US9141677B2 (en) 2015-09-22
CN103136322A (zh) 2013-06-05
US20130138686A1 (en) 2013-05-30
CN103136322B (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
JP5862245B2 (ja) 配置装置、配置プログラムおよび配置方法
US11423082B2 (en) Methods and apparatus for subgraph matching in big data analysis
US10209908B2 (en) Optimization of in-memory data grid placement
WO2021036936A1 (zh) 在分布式系统中资源及任务的分配方法、装置及系统
KR102127116B1 (ko) 분산 데이터 저장 장치 및 분산 데이터 저장 방법
US9286001B2 (en) Effective range partition splitting in scalable storage
WO2015196911A1 (zh) 数据挖掘方法和节点
JP6381170B2 (ja) 基数推定を介した結合パスの効率的な判定
JP2021500649A (ja) シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム
US9529531B2 (en) Proxy hash table
JPWO2008102739A1 (ja) 仮想サーバシステム及び物理サーバ選択方法
TW201717066A (zh) 叢集運算架構的資源規劃方法、系統及裝置
US11120000B2 (en) Enhancements for optimizing query executions
CN107343164B (zh) 视频监控任务的分配方法及装置
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US8903871B2 (en) Dynamic management of log persistence
CN111756635B (zh) 用于网络规划的方法、网络规划设备和计算机可读介质
Kumar et al. Cost model for pregel on graphx
US9519521B2 (en) Server device, computer-readable storage medium and movement control method
JP6155861B2 (ja) データ管理方法、データ管理プログラム、データ管理システム及びデータ管理装置
US8782364B2 (en) Determining availability of data elements in a storage system
JPWO2018225747A1 (ja) 分散システム、データ管理装置、データ管理方法、及びコンピュータ読み取り可能な記録媒体
JP2015045995A (ja) 仮想データベースシステム管理装置、管理方法及び管理プログラム
JPWO2012059976A1 (ja) プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
KR101555752B1 (ko) 그리드 컴퓨팅 스케줄링을 위한 불연속 그룹 탐색 최적화 적용 방법 및 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151214

R150 Certificate of patent or registration of utility model

Ref document number: 5862245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees