以下、実施形態のデータ検索システムおよびデータ検索方法を、図面を参照して説明する。
図1は、実施形態のデータ検索システム1の機能構成例を示す図である。図1に示すデータ検索システム1は、例えば、サーバ装置(第1の装置)100と、1以上のゲートウェイ装置(第2の装置)200−1〜200−nと、1以上の機器300−1〜300−k(またはm)とを備える。k,mは、同一の数でもよく異なる数でもよい変数である。サーバ装置100と、ゲートウェイ装置200と、機器300とは、インターネットやLAN(Local Area Network)、WAN(Wide Area Network)等を含むネットワークNWを介して通信する。なお、以下の説明において、ゲートウェイ装置200−1〜200−nは、それぞれ同様の構成とし、いずれのゲートウェイ装置であるかを区別しないときは、いずれのゲートウェイ装置であるかを示すハイフン以降の符号を省略し、「ゲートウェイ装置200」と称して説明する。また、ハイフンで示された他の構成についても同様とする。また、実施形態のデータ検索システム1は、サーバ装置100を複数備えてもよく、ゲートウェイ装置200が複数階層に構成されてもよい。
まず、サーバ装置100の機能構成例について説明する。サーバ装置100は、例えば、検索実行部110と、配信部120と、処理状態受信部130と、完了判定部140と、記憶部150とを備える。検索実行部110、処理状態受信部130、及び完了判定部140は、CPU(Central Processing Unit)等のプロセッサが記憶部150に記憶されたプログラム(例えば、検索アプリ152)を実行することにより実現される。プログラムは、例えば、ネットワークNWを介してアプリケーションサーバ(不図示)からダウンロードされてもよいし、SDカード等の可搬型記憶媒体に格納されたものがサーバ装置100にインストールされてもよい。また、上述した各機能のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等のハードウェアによって実現されてもよいし、ソフトウェアとハードウェアとの協働によって実現されてもよい。
検索実行部110は、1以上の機器300に保持されているデータを取得するためのクエリを発行する。クエリとは、例えば、機器300に保持されているデータに対する操作を表す命令である。クエリは、例えば、SQL(Standard Query Language)で記述されたコマンドである。クエリは、例えば、機器300から時間情報に対応させて2016年の9月14日から9月21日までの消費電力量、ガス使用量、水道使用量等を取得するためのコマンドでもよく、現時点での温度や湿度等を取得するためのコマンドでもよい。また、クエリは、時間情報に関係なく機器300が保持する全てのデータを取得するコマンドでもよい。
検索実行部110は、機器300に実行させるクエリと、クエリを識別するためのクエリIDとを配信部120に出力する。また、検索実行部110は、ゲートウェイ装置200ごとのクエリ状態を管理するためのGWクエリ管理テーブル154を作成する。
図2は、GWクエリ管理テーブル154のデータの内容を示す図である。GWクエリ管理テーブル154は、例えば、「クエリID」および「ゲートウェイID」に対し、「処理状態」および「充足度」が対応付けられた情報である。「クエリID」は、検索実行部110により実行指示されたクエリの識別情報である。「ゲートウェイID」は、ゲートウェイ装置200の識別情報である。「処理状態」は、ゲートウェイ装置200ごとのクエリの処理状態を示す情報である。例えば、処理状態受信部130がゲートウェイ装置200からGWクエリ完了メッセージを受信した場合に、処理状態は、「完了」を示す情報となる。また、GWクエリ完了メッセージを受信していない場合に、処理状態は、「未完了」を示す情報となる。
「充足度」は、処理状態を受信した後に、完了判定部140により判定されるクエリの処理結果に対する充足度合である。充足度は、例えば、正しくクエリを完了できた機器数を、クエリを処理すべき機器数で除算することで算出することができる。検索実行部110は、クエリを配信部120から配信させる場合に、上述したクエリIDと、ゲートウェイID、処理状態、および充足度を1つの組としてGWクエリ管理テーブル154に記憶させる。このとき、初期値として、処理状態には、「未完了」が記憶され、充足度には、「0」が記憶される。
配信部120は、検索実行部110から得られたクエリおよびクエリIDをゲートウェイ装置200に配信する。
処理状態受信部130は、配信部120によりクエリをゲートウェイ装置200に配信した後、ゲートウェイ装置200から1以上の機器300によるクエリの処理結果または処理状態を受信する。クエリの処理結果を受信した場合に、処理状態受信部130は、クエリの処理結果を、クエリ結果データベース156に記憶する。処理状態受信部130は、受信した各ゲートウェイ装置200からの処理状態に基づいて、記憶部150に記憶されたGWクエリ管理テーブル154の処理状態を更新する。
完了判定部140は、処理状態受信部130により受信された処理状態からクエリが完了したか否かを判定する。例えば、完了判定部140は、記憶部150に記憶されたGWクエリ管理テーブル154を参照し、各ゲートウェイの処理状態から充足度を算出する。また、完了判定部140は、算出された充足度が所定の閾値(例えば、80%)以上の場合に、実行したクエリが成功したと判定する。クエリが成功したとは、例えば、クエリの実行により取得した処理結果が正当な結果として判定することである。
記憶部150は、RAM(Random Access Memory)やROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。記憶部150には、例えば、検索アプリ152、GWクエリ管理テーブル154、およびクエリ結果データベース156の各情報が記憶される。サーバ装置100は、例えば、PC(Personal Computer)でもよく、複数の情報処理装置により構成されるクラウドサーバでもよい。
次に、ゲートウェイ装置200の機能構成について説明する。ゲートウェイ装置200は、例えば、送受信部210と、処理状態管理部220と、処理状態送信制御部230と、記憶部240とを備える。また、上述した処理状態管理部220および処理状態送信制御部230のうち一部または全部は、LSI、ASIC、FPGA等のハードウェアによって実現されてもよいし、ソフトウェアとハードウェアとの協働によって実現されてもよい。
送受信部210は、サーバ装置100により配信されたクエリを受信する。また、送受信部210は、受信したクエリを、ゲートウェイ装置200の配下にある1以上の機器300に送信する。
処理状態管理部220は、送受信部210により受信された、1以上の機器300ごとのクエリの処理結果を、記憶部240に記憶される機器クエリ管理テーブル242により管理する。
図3は、機器クエリ管理テーブル242のデータ例を示す図である。機器クエリ管理テーブル242は、例えば、「クエリID」および「機器ID」に対し、「処理状態」が対応付けられた情報である。「機器ID」は、機器を識別するための情報である。「処理状態」は、機器IDごとのクエリの処理状態である。
例えば、処理状態管理部220は、クエリを各機器300に配信した直後は、クエリに対する処理が完了していないため、「未完了」を設定する。また、処理状態管理部220は、機器300から処理結果を受信した場合に、対象の機器300の処理状態に「完了」を設定する。また、処理状態管理部220は、クエリを機器300に配信した後、所定時間を経過しても処理結果が得られた場合に、処理状態にタイムアウトエラーまたは通信エラー等を示す情報を設定する。なお、所定時間は、例えば、クエリごとに設定されてよい。
処理状態送信制御部230は、処理状態管理部220により管理されたクエリの処理状態を、送受信部210を用いてサーバ装置100に送信する。
記憶部240は、RAMやROM、HDD、フラッシュメモリ等により実現される。記憶部240には、例えば、機器クエリ管理テーブル242の情報が記憶される。ゲートウェイ装置200は、例えばネットワーク間でプロトコル変換を行う機能を有してもよい。また、ゲートウェイ装置200は、ルータ装置やハブ装置等の中継装置でもよい。
次に、機器300の機能構成例について、説明する。機器300は、例えば、送受信部310と、クエリ実行部320と、記憶部330とを備える。クエリ実行部320は、LSI、ASIC、FPGA等のハードウェアによって実現されてもよいし、ソフトウェアとハードウェアとの協働によって実現されてもよい。
送受信部310は、ゲートウェイ装置200により配信されたクエリを受信する。また、送受信部310は、クエリ実行部320で実行されたクエリ結果を、クエリを配信したゲートウェイ装置200に出力する。
クエリ実行部320は、送受信部310により受信したクエリを実行する。例えば、クエリ実行部320は、記憶部330に記憶されたセンサデータ332のうち、クエリに対応するデータの抽出を行う。センサデータ332とは、例えば、機器300が設置されている場所で所定時間毎に取得している温度や湿度、消費電力、ガス使用量、水道使用量等のデータのうち、少なくとも1つのデータである。センサデータ332は、時間情報とともに記憶されてもよい。
記憶部330は、RAMやROM、HDD、フラッシュメモリ等により実現される。記憶部330には、例えば、センサデータ332の情報が記憶される。機器300は、例えば、IoT機器である。
以下、サーバ装置100における検索処理の各種動作について説明する。図4は、サーバ装置100からのクエリ配信の様子を説明するための図である。なお、図4の例では、説明を簡略化するため、サーバ装置100と、ゲートウェイ装置200と、機器300とがそれぞれ1台接続されている例を示している。
サーバ装置100の検索アプリ152は、クエリIDとクエリとをサーバ側メッセージブローカ410により、全ゲートウェイ装置200へ送信させる(図示の(1))。なお、サーバ側メッセージブローカ410は、例えば、配信部120に相当する。また、検索アプリ152は、自己のライブラリ(クライアントライブラリ)に、GWクエリ管理テーブル154を生成する(図示の(2))。
次に、ゲートウェイ装置200のゲートウェイ側メッセージブローカ420により、サーバ装置100からのクエリIDおよびクエリを受信すると、受信した情報をクエリ制御プロセス430に出力する(図示の(3))。ゲートウェイ側メッセージブローカ420は、例えば、送受信部210に相当する。また、クエリ制御プロセス430は、例えば、処理状態管理部220および処理状態送信制御部230に相当する。
クエリ制御プロセスは、送信を受けたクエリIDを機器クエリ管理テーブル242に記憶し、データエントリを行う(図示の(4))。次に、ゲートウェイ側メッセージブローカ420は、クエリIDおよびクエリを機器300に送信する(図示の(5))。
機器300の送受信部310は、ゲートウェイ装置200からのクエリIDおよびクエリを受信する(図示の(6))。クエリ実行部320は、クエリを実行し、センサデータ332からクエリに対応するデータを取得するともに、検索結果のResultSetを作成する(図示の(7))。ResultSetとは、クエリに対するDBMS(Data Base Management System)等の応答であり、例えばSQLクエリの実行結果を含むオブジェクトである。DBMSを検索した結果として、例えば、テーブルの一部を表すデータがResultSetとなる。
次に、クエリ実行部320は、作成したResultSetを送受信部310により、ゲートウェイ装置200を介してサーバ装置100に送信する(図示の(8))。サーバ装置100は、ResultSetを受信する(図示の(9))。受信されたResultSetに対応するデータは、クエリ結果データベース156に記憶される。次に、クエリ実行部320は、クエリが完了した場合に、クエリ完了メッセージをクエリ制御プロセス430へ送信する(図示(10))。
次に、ゲートウェイ側メッセージブローカ420は、クエリ完了メッセージをクエリ制御プロセス430に出力する。クエリ制御プロセス430は、配下の全機器300について、クエリ完了メッセージを受信またはタイムアウトエラーを検出したか否かを判定する(図示の(11))。また、クエリ制御プロセス430は、配下の全機器300に対してクエリ完了メッセージを受信またはタイムアウトエラーを検出した場合に、GWクエリ完了メッセージをサーバ装置100に送信する(図示の(12))。クエリ制御プロセス430から送信されるGWクエリ完了メッセージには、配下の機器300のクエリの成功または失敗の割合に関する情報を含む。
図5は、配下の機器300から処理状態を取得した機器クエリ管理テーブル242の一例を示す図である。例えば、クエリ制御プロセス430は、ゲートウェイ装置200の配下の機器300として機器ID「device−1」〜「device−3」を有する。この場合、クエリ制御プロセス430は、クエリID「query−1」に対し、機器ID「device−1」および「device−2」の処理状態が「完了」で、機器ID「device−3」の処理状態がタイムアウトエラーだったとする。この場合、3つの機器300のうち2つの機器300が成功していることになるため、クエリ制御プロセス430は、GWクエリ完了メッセージに関する情報に、成功率2/3≒0.667等の割合に関する情報を出力する。なお、上述した割合に関する情報は、「充足度」の一例である。
次に、検索アプリ152は、配下の全ゲートウェイについてのGWクエリ完了メッセージを受信し、受信したGWクエリ完了メッセージに基づいて、クエリの成功または不成功を判定する。
図6は、配下のゲートウェイ装置200から処理状態を取得した機器クエリ管理テーブル242の一例を示す図である。例えば、サーバ装置100は、配下に3台のゲートウェイ装置(GW1〜GW3)を有しているとする。また、あるゲートウェイID「GW−1」が、その配下の3台の機器300のうち、1台でクエリ処理に失敗していたとする。この場合、ゲートウェイID「GW−1」の充足度は0.667となる。また、他のゲートウェイID「GW−2」、「GW−3」は、その配下の全ての機器300からの正常な処理結果を取得している。そのため、ゲートウェイID「GW−2」、「GW−3」の充足度は、1となる。したがって、トータルのクエリ結果の充足度は、各ゲートウェイ装置200の全ての充足度の総和をゲートウェイ装置200の数で除算し、2.667/3≒0.89となる。
ここで、検索アプリ152は、予め設定された閾値(例えば、0.8)以上の場合に、そのクエリは成功したと判定する。この場合、上述の0.89は、0.8以上であるため、検索アプリ152は、クエリが成功したと判定する。
ここで、上述の処理では、クエリ結果の充足度をゲートウェイ装置200ごとに求めたが、実施形態においては、これに限定されるものではない。例えば、ゲートウェイ装置200は、配下の機器300の数に応じて充足度を求めてもよい。この場合、ゲートウェイ装置200は、サーバ装置100に、クエリ結果の充足度Snと、配下にある機器数Nnとを送信する(例えば、nは、n番目の意味である)。
サーバ装置100の検索アプリ152は、ゲートウェイ装置200ごとのクエリ結果の充足度Snと、配下にある機器数Nnとの積の和を、機器数Nnの和で除算し(Σ(Sn×Nn)/ΣNn)、除算した値が閾値以上である場合に、クエリが成功したと判定する。
また、ゲートウェイ装置200は、機器300が保持するセンサデータ332のデータサイズに基づいて、充足度を算出してもよい。データサイズは、例えば、データベースサイズでもよく、テーブルサイズでもよい。例えば、データベースサイズに基づいて充足度を算出する場合には、全体のデータベースサイズに対して何割成功したか否かにより充足度を判定する。この場合、ゲートウェイ装置200は、クエリ発行時点での配下の機器が保持するデータベースサイズDmを予め受信する。なお、データベースサイズは、クエリ発行時に、同時にデータベースサイズの取得クエリを発行することで取得することができる。取得されたデータベースサイズは、機器クエリ管理テーブル242の各エントリに追加される。
図7は、データベースサイズを含む機器クエリ管理テーブル242Aの一例を示す図である。機器クエリ管理テーブル242Aには、クエリID、機器ID、処理状態の他に、各機器IDに対応する機器300のセンサデータ332のデータベースサイズが格納される。
ゲートウェイ装置200は、クエリ完了時に、クエリが成功した機器300が保持するデータベースサイズの和En(=ΣDm’(m’は成功した機器300)と、クエリを処理すべき機器300が保持するデータベースサイズの和Dn(=ΣDm)とを、サーバ装置100に送信する。サーバ装置100は、得られた二つの値に基づいて、クエリ結果の充足度を「ΣEn/ΣDn」を算出することで取得する。なお、上述したクエリ結果の充足度は、ゲートウェイ装置200で算出し、算出した結果をサーバ装置100に送信してもよい。
また、クエリに関連するテーブルサイズに基づいてクエリ結果の充足度を算出する場合、ゲートウェイ装置200は、クエリに関するテーブルのテーブルサイズTmを予め取得しておく。取得したテーブルサイズは、機器クエリ管理テーブル242の各エントリに追加される。
図8は、テーブルサイズを含む機器クエリ管理テーブル242Bの一例を示す図である。機器クエリ管理テーブル242Bには、クエリID、機器ID、処理状態の他に、各機器IDに対応する機器300のテーブルサイズが格納される。
ゲートウェイ装置200は、クエリが成功した機器300に関するテーブルサイズの和Tn(=ΣTm’)と、クエリを処理すべき機器300に関するテーブルサイズの和Un(=ΣTm)をサーバ装置100へ送信する。
サーバ装置100は、得られた二つの値に基づいて、クエリ結果の充足度を「ΣTn/ΣUn」を算出することで取得する。上述したクエリ結果の充足度は、ゲートウェイ装置200で算出し、算出した結果をサーバ装置100に送信してもよい。なお、上述したデータベースサイズやテーブルサイズを考慮したクエリ結果の充足度の算出手法は、固定長のデータ構造等の場合には、データサイズが共通化できるため、上述したクエリ結果の充足度の算出を容易に行うことができる。また、上述したデータサイズにより得られるクエリ結果の充足度に基づいて、クエリ結果が成功したか否かをより適切に判定することができる。
また、実施形態では、ゲートウェイ装置200の配下にある複数の機器300から、所定のグループ条件により機器300を抽出し、抽出した機器で少なくとも1つのグループを形成し、形成されたグループ単位でクエリを実行させたり、充足度等を算出させてもよい。所定のグループ条件としては、例えば地域ごとでもよく、機器300の種類や数でもよい。また、実施形態では、機器ID単位でグループ化を行ってもよく、ゲートウェイID単位でグループ化を行ってもよい。
例えば、サーバ装置100の管理者等は、「川崎市にある機器300の全て」等のように予めグルーピングを設定しておく。サーバ側メッセージブローカ410は、送信するクエリにグループを識別する情報を含めて、ゲートウェイ装置200に送信する。これにより、ゲートウェイ側メッセージブローカ420は、設定されたグループに含まれる機器300のみにクエリを送信させることができる。
次に、実施形態のサーバ装置100の各種処理内容について、フローチャートを用いて具体的に説明する。図9は、実施形態のサーバ装置100における処理内容の一例を示すフローチャートである。図9に示す処理は、クエリが実行されるごとに繰り返し実行される。
図9の例において、検索実行部110は、実行させるクエリを発行し(ステップS100)し、発行するクエリに対応するクエリIDを生成する(ステップS102)。
次に、配信部120は、GWクエリ管理テーブルを初期化し、クエリIDとクエリとをゲートウェイ装置200に配信する(ステップS104)。次に、処理状態受信部130は、ゲートウェイ装置200からクエリに対する処理結果、または、GWクエリ完了メッセージを受信したか否かを判定する(ステップS106)。
ゲートウェイ装置200からクエリに対する処理結果(クエリ結果)、または、GWクエリ完了メッセージを受信した場合、処理状態受信部130は、処理結果を受信したか否かを判定する(ステップS108)。処理結果を受信した場合、受信した処理結果を記憶部150に記憶させる(ステップS110)。また、ステップS108において、処理結果を受信していない場合、GWクエリ完了メッセージを受信したため、処理状態受信部130は、GWクエリ完了メッセージをGWクエリ管理テーブルに記憶する(ステップS112)。GWクエリ完了メッセージとは、例えば、ゲートウェイ装置200に対応する充足度である。
ステップS110およびステップS112の処理後、処理状態受信部130は、全てのゲートウェイ装置200からGWクエリ完了メッセージを受信したか、または、タイムアウトエラーになったか否かを判定する。タイムアウトエラーとは、例えば、クエリをゲートウェイ装置200に配信してから、GWクエリ完了メッセージを受信するまでの時間を設定しておき、その時間を超えたものをタイムアウトエラーとして判定する。
全てのゲートウェイ装置200からGWクエリ完了メッセージを受信した場合、または、タイムアウトエラーになった場合、完了判定部140は、クエリ全体における充足度を算出し(ステップS116)、算出された値と閾値と基づいてクエリの成功または失敗を判定する(ステップS118)。なお、例えば、算出したクエリ結果の充足度が閾値以上である場合に、クエリが成功したと判定することができる。これにより、本フローチャートの処理は終了する。
なお、上述したステップS114の処理において、全てのゲートウェイ装置からGWクエリ完了メッセージを受信したり、タイムアウトエラーになっていない場合、処理状態受信部130は、所定時間待機し(ステップS120)、ステップS106の処理に戻る。
次に、実施形態のゲートウェイ装置200の各種処理内容について、フローチャートを用いて具体的に説明する。図10は、実施形態のゲートウェイ装置200における処理内容の一例を示すフローチャートである。図10に示す処理は、ゲートウェイ装置200がサーバ装置100から配信されたクエリを受信するごとに繰り返し実行される。
図10の例において、送受信部210は、サーバ装置100からクエリとクエリIDに関する情報を受信する(ステップS200)、次に、処理状態管理部220は、送受信部210により、配下の全機器300にクエリを送信させる(ステップS202)。次に、処理状態管理部220は、受信したクエリIDに基づいて、機器クエリ管理テーブル242を作成する(ステップS204)。
次に、処理状態管理部220は、機器300からクエリ処理結果、または、クエリ処理完了メッセージを受信したか否かを判定する(ステップS206)。クエリ処理結果、または、クエリ処理完了メッセージを受信した場合、処理状態管理部220は、受信した情報がクエリ処理完了メッセージであるか否かを判定する(ステップS208)。受信した情報がクエリ処理完了メッセージでない場合、受信した情報は、クエリ処理結果であるため、送受信部210は、サーバ装置100にクエリ処理結果を送信し(ステップS210)、ステップS206の処理に戻る。
受信した情報がクエリ処理完了メッセージである場合(ステップS208)、処理状態管理部220は、受信したクエリ処理完了メッセージを機器クエリ管理テーブル242に記憶させる(ステップS212)。
次に、処理状態管理部220は、全機器300のクエリ処理完了メッセージが揃ったか、または、タイムアウトエラーになったか否かを判定する(ステップS214)。全機器300のクエリ処理完了メッセージが揃ったか、または、タイムアウトエラーになった場合、処理状態送信制御部230は、配下の機器300におけるクエリ結果に対する充足度を算出し(ステップS216)、クエリ結果の充足度を含むGWクエリ完了メッセージを、送受信部210によりサーバ装置100に送信させる(ステップS218)。これにより、本フローチャートの処理は終了する。
なお、上述したステップS214の処理において、全機器からクエリ処理完了メッセージが揃ってなく、タイムアウトエラーになっていない場合、処理状態管理部220は、所定時間待機し(ステップS220)、ステップS206の処理に戻る。
次に、実施形態の機器300の各種処理内容について、フローチャートを用いて具体的に説明する。図11は、実施形態の機器300における処理内容の一例を示すフローチャートである。図11に示す処理は、機器300がゲートウェイ装置200から送信されたクエリを受信するごとに繰り返し実行される。
図11の例において、ゲートウェイ装置200からクエリを受信すると、クエリ実行部320は、受信したクエリを実行する(ステップS300)。次に、クエリ実行部320は、クエリの処理結果として得られたデータ量が、所定量以上であるか否かを判定する(ステップS302)。所定量とは、例えば、送信するメッセージで規格化されたデータ量であるが、これに限定されるものではない。データ量が所定量以上である場合、クエリ実行部320は、処理結果として得られたデータ量を複数のデータに分割する(ステップS304)。
次に、送受信部310は、クエリの処理結果を、ゲートウェイ装置に送信する(ステップS306)。上述したステップS304の処理において、データが分割されている場合、送受信部310は、分割されているデータごとにゲートウェイ装置200に送信する。
次に、クエリ実行部320は、クエリの処理結果を全て送信したか否かを判定する(ステップS308)。クエリの処理結果を全て送信していない場合、ステップS302の処理に戻る。また、クエリの処理結果を全て送信した場合、クエリ完了メッセージをゲートウェイ装置200に送信する(ステップS310)。これにより、本フローチャートの処理は終了する。
ここで、実施形態のデータ検索システム1において、例えば、ある機器300がC送信中にダウンしたり、接続が切断された場合、処理状態受信部130は、それまでに送信済みのクエリ結果の一部を有効にしてもよく、また無効にしてもよい。また、データ検索システム1は、ゲートウェイ装置200において、上述した図4に示すクエリ制御プロセス430の代わりに、ブリッジプロセスを設け、機器300からのクエリ結果のバッファリングを行ってもよい。この場合、ゲートウェイ装置200は、ブリッジプロセスによりクエリ結果を一時的に保持しておき、機器300からのクエリ処理完了メッセージを受け取った場合に、保持されたクエリ結果をまとめてサーバ装置100に送信する。これにより、サーバ装置100は、機器300ごとに全てのクエリ結果を取得できるため、クエリ結果の充足度の精度を向上させることができる。
上述した実施形態のデータ検索システム1を用いることで、例えば、以下のような判定を行うことができる。例えば、サーバ装置100の検索実行部110は、機器300に対して現時点の消費電力量を取得するクエリをゲートウェイ装置200に配信させる。また、サーバ装置100は、ゲートウェイ装置200からクエリを配信した地域の9割の機器300からクエリ結果が取得できたとする。9割は、予め設定した閾値(例えば、8割)以上であるため、サーバ装置100の完了判定部140は、このクエリは、成功したと判定する。
また、完了判定部140は、9割の機器300の合計消費電力量が1.2[MWh]であった場合、全機器300の合計消費電力量を1.2×10/9≒1.33[MWh]であると推定する。また、完了判定部140は、推定した消費電力量を、消費電力量に関する閾値と比較することで、電力を使い過ぎているか否かを判定する。例えば、推定した消費電力量が閾値以上である場合、完了判定部140は、電力を使いすぎていると判定し、節電協力金のレートを一時的に引き上げる等の処理を行ってもよい。このように、実施形態のデータ検索システム1によれば、例えば、現時点での消費電力量の概況を得ることができ、一部のクエリ結果が得られなくても、ある範囲での概況を把握することで、システム全体に対する適切な処理を行うことができる。
なお、上述の例において、ゲートウェイ装置200からクエリを配信した地域の7割の機器300からしかクエリ結果が取得できなかった場合、閾値(例えば、8割)以下であるため、サーバ装置100の完了判定部140は、このクエリは、失敗したと判定、その後の処理を行わない。これにより、データ検索システム1は、信頼性がないデータを用いた処理を抑制することができ、システム全体の処理負荷を軽減することができる。
以上説明した少なくとも一つの実施形態によれば、サーバ装置100と、ゲートウェイ装置200とを備えるデータ検索システム1であって、サーバ装置100は、データを保持可能な1以上の機器300に対して、クエリを配信する配信部120と、ゲートウェイ装置200から、1以上の機器300のクエリに対する処理状態を示す情報を受信する処理状態受信部130と、処理状態受信部130により受信された処理状態からクエリが完了したか否かを判定する完了判定部140と、を持ち、ゲートウェイ装置200は、サーバ装置100により配信されたクエリを受信して、1以上の機器300に送信する送受信部210と、送受信部210により受信された、1以上の機器300ごとのクエリの処理結果に基づいて、1以上の機器のそれぞれがクエリを完了したか否かを示す処理状態を管理する処理状態管理部220と、処理状態管理部220により管理されたクエリの処理状態を、送受信部210を用いてサーバ装置100に送信する処理状態送信制御部230とを持つことにより、機器300に分散したデータを効率よく検索することができ、サーバ装置100の処理負荷を軽減させることができる。
具体的には、少なくとも一つの実施形態によれば、サーバ装置100は、クエリ管理をゲートウェイ装置200で行うことができる。また、少なくとも一つの実施形態によれば、ゲートウェイ装置200ごとに算出される充足度合に基づいて、クエリが成功したか否かを迅速に把握することができる。これにより、サーバ装置100は、全機器300の処理状態を管理する必要がなくなる。そのため、サーバ装置100の処理負荷を軽減させることができる。
また、少なくとも一つの実施形態によれば、多数の機器300に対する並列検索処理を迅速に行うことができる。また、少なくとも一つの実施形態によれば、クエリ結果に対する「質」の管理を適切に行うことができる。また、少なくとも一つの実施形態によれば、どの機器がクエリ処理を完了したのかを管理することができるとともに、クエリ結果の信頼性を判定することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。