実施例1で説明する都市OS(データ連携・流通のプラットフォーム)のデータ仲介では、都市OSの内部に仲介するデータを格納しておくためのデータベース(内部データベース)を用意し、データ提供者が都市OSの内部データベースにデータを格納しておく。
データ利用者は、都市OSの内部データベースに格納されたデータを都市OSに対してリクエストする方法と、データ利用者が提供元のデータベース(外部データベース)に格納されているデータについて都市OSを介してリクエストして取得する方法がある。
実施例1で説明する都市OSのデータ仲介において、リクエストからレスポンス(リクエストされたデータをアプリケーションに返すこと)までの時間を保証するために、プランを作成しておき、プランに加入したデータ利用者は、プランで決められた最低レスポンス時間内にデータを取得できるようにする仕組みを実装することができる。
実施例1は、上記の外部データベースに都市OSがデータをリクエストする場合に、状況に応じてレスポンス時間テーブルを参照してリクエストからレスポンスまでかかった時間(以下、実測レスポンス時間)を用いて、リクエストの優先順位を変更し、処理遅延を解消するデータ要求処理システムに関して説明する。なお、上記状況は、例えば、レスポンスに時間がかかる状況や、上記の都市OSのプランで決められた最低限のレスポンス時間より遅れそうな状況、又は、カテゴリ(種類)や属性(自治体、民間、企業、等)別にデータの取得に時間がかかる状況である。
図1は、実施例1によるデータ要求処理システムの構成の一例を示すブロック図である。
データ要求処理システムは、データ要求処理装置1と、アプリケーション2-1~2-3をそれぞれ実行する端末100-1~100-3と、ネットワーク3、ネットワーク4、データベース5、外部データベース6、データ送信部7から構成される。なお、データベース5と、データ送信部7はデータ要求処理装置1が提供する例を示すが、他の計算機が提供してもよい。また、端末を個々に特定しない場合には、「-」以降を省略した符号「100」を用いる。他の構成要素の符号についても同様である。
データ要求処理装置1は、プロセッサ21と、メモリ22と、ストレージ装置23と、通信インターフェース24と、入出力装置25を含む計算機である。
メモリ22には、都市OS30がロードされて、プロセッサ21によって実行される。都市OS30は、優先度制御部11と、スケジューリング部12と、データ送信部7の機能部を含む。優先度制御部11は、リクエスト受信部111と、リクエスト分析部112と、優先度設定部113の機能部を含む。
都市OS30の各機能を提供する優先度制御部11と、スケジューリング部12と、データ送信部7は、プログラムとしてメモリ22にロードされる。
プロセッサ21は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ21は、優先度制御プログラムに従って処理を実行することで優先度制御部11として機能する。他のプログラムについても同様である。さらに、プロセッサ21は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ストレージ装置23は、データベース5を格納する。データベース5は都市OS30の内部のデータベースとして管理される。通信インターフェース24は、ネットワーク3、4に接続されて、端末100や外部データベース6と通信を行う。入出力装置25は、キーボードやマウス或いはタッチパネル等の入力装置と、ディスプレイ等の出力装置を含む。
優先度制御部11は、後述するように、アプリケーション2から受け付けたデータのリクエストメッセージに優先度を設定して、スケジューリング部12に出力する。スケジューリング部12は優先度(優先順位)の高い順にリクエストメッセージを処理してデータベース5又は外部データベース6にアクセスする。なお、外部データベース6は、外部の都市OS(図示省略)によって管理される。
なお、スケジューリング部12は、リクエストメッセージから抽出したクエリ(データ要求)をデータベース5又は外部データベース6に出力してもよいし、データベース5又は外部データベース6がリクエストメッセージを受け付け可能な場合には、リクエストメッセージを送信すればよい。
データ送信部7は、データベース5又は外部データベース6の応答を受け付けると、レスポンスメッセージを生成して、アプリケーション2に送信する。
図2は、データ要求処理システムのシーケンスを示す。なお、以下の説明では、端末100-1~100-3のアプリケーション2-1~2-3の構成は同様であるので、アプリケーション2-1について説明する。
端末100が実行するアプリケーション2は、ネットワーク3を介して、データ要求処理装置1に接続し、データ取得のためのリクエストメッセージを送信する(S1)。
データ要求処理装置1は、優先度制御部11で設定された優先度(可変優先度)に従って、リクエストメッセージの処理順位を決定し、スケジューリング部12で処理順位の高いリクエストメッセージのクエリを送信してデータベース5にアクセスする。
スケジューリング部12は、データの所在によっては、データベース5かネットワーク4を介して接続された外部データベース6にアクセスする。データベース5又は外部データベース6から取得したデータはデータ送信部7に出力され、データ送信部7はレスポンスメッセージを生成して、アプリケーション2にデータを送信する。
優先度制御部11のリクエスト受信部111は、アプリケーション2から送信されたリクエストメッセージを記録する。リクエスト分析部112は、リクエスト受信部111に記録されているリクエストメッセージを取得し(S2、S3)、リクエストメッセージを分析し(S4)、分析結果のパラメータ(リアルタイム性)を生成し(S5)、優先度設定部113に出力する(S6、S7)。
優先度設定部113は、リクエスト分析部112からの全パラメータが入力されると、パラメータからリクエストメッセージ毎に優先度の変更を判断し、判断に応じて可変優先度を算出する(S8)。優先度設定部113は、リクエストメッセージと可変優先度をスケジューリング部12へ送信する(S9)。
スケジューリング部12は、受信したリクエストメッセージの可変優先度に従って、リクエストメッセージに含まれるクエリを送信して、データベース5にデータを要求する(S10)。データベース5はリクエストメッセージのクエリで要求されたデータを検索した結果をデータ送信部7に送信する(S11)。
スケジューリング部12は、リクエストメッセージで要求されたデータが外部データベース6の場合には、外部データベース6にデータを要求する(S12)し、外部データベース6はリクエストメッセージで要求されたデータを検索した結果(データ)をデータ送信部7に送信する(S13)。
データ送信部7は、データベース5又は外部データベース6から受信したデータからレスポンスメッセージを生成して(S14)アプリケーション2へ送信する(S15)。
図3は、実施例1によるリクエストメッセージ300の構造の一例を示す図である。requestID301は、アプリケーション2から送信されたリクエストメッセージを識別するための項目で、リクエスト受信部111で付与される。
requestTime302は、リクエストメッセージ300がリクエスト受信部111に記録(又は受信)された時刻であり、リクエスト受信部111で付与される。appricationID303は、アプリケーション2を識別するための項目であり、アプリケーション2から送信されるリクエストメッセージ300に含まれる。
priorty304は、予め決められたアプリケーション2毎の優先度(アプリ優先度)であり、アプリケーション2から送信されるリクエストメッセージ300に含まれる。アプリ優先度(304)は、例えば、自然数を用いて優先順位の値を設定する(例えば、1~7)。なお、優先度設定部113で設定される可変優先度の値の範囲も前記のアプリ優先度(304)と同じレンジとする。なお、優先順位は値が小さいほど優先度が高いものとする。
query305は、リクエストメッセージ300に含まれるデータ要求であり、要求されるデータ名3051や、データのカテゴリ(種別・図中dataCatalog)3052や、サイズ3053、属性(図中property)3054など、データを取得するために必要な情報の全てが含まれる。query305は、アプリケーション2から送信されるリクエストメッセージ300に含まれている。
図4は、実施例1によるリクエスト分析部112の構成の一例を示すブロック図である。リクエスト分析部112は、リクエストメッセージ300を取得するリクエスト取得部1121と、リクエストメッセージ300に含まれるアプリ優先度(304)を取得するアプリ優先度読み取り部1122と、リクエストメッセージ300からquery305を取得するクエリ読み取り部1123と、データ送信部7からレスポンスに関する情報を受け付けて実測レスポンス時間を算出してレスポンス時間テーブル1125に格納するレスポンス時間計算部1126と、query305とレスポンス時間テーブル1125の情報からパラメータを生成するパラメータ検出部1124を含む。
図5は、リクエスト分析部112の処理を示すフローチャートである。この処理は、リクエスト受信部111からリクエストメッセージ300を受診した場合に実行される。
リクエスト取得部1121は、リクエスト受信部111に記録されているリクエストメッセージ300を要求し、レスポンスとしてリクエストメッセージを取得する(S51)。
リクエスト取得部1121は、取得したリクエストメッセージ300をアプリ優先度読み取り部1122と、クエリ読み取り部に送る(S52)。アプリ優先度読み取り部1122は、リクエストメッセージ300からrequestID301と、priority304を取得(S53)し、優先度設定部113に出力する(S57)。
クエリ読み取り部1123は、requestID301と、requestTime302と、appricationID303と、クエリ305をリクエストメッセージ300から取得し(S54)、パラメータ検出部1124に出力する。
パラメータ検出部1124は、クエリ読み取り部1123で取得した項目を用いて、可変優先度を設定するのに必要なパラメータを生成する。実施例1では、パラメータ検出部1124は、レスポンス時間テーブル1125にアクセスし、query305を用いてリクエストメッセージ300に該当する過去の実測レスポンス時間を参照する(S55)。
パラメータ検出部1124は、例えば、query305のデータ名3051を取得し、データ名3051でレスポンス時間テーブル1125を検索し、データ名1202が一致するレコードの実測レスポンス時間1204を取得し、リクエストメッセージ300でアクセスする際の推定レスポンス時間として設定する。
図8は、レスポンス時間テーブル1125の一例を示す図である。レスポンス時間テーブル1125は、アプリID1201と、データ名1202と、種類1203と、実測レスポンス時間1204と、所在1205と、タイムスタンプ1206を1つのレコードに含む。
アプリID1201は、アプリケーション2の識別子を格納する。データ名1202は、リクエストメッセージ300で要求されたデータの名称が格納される。種類1203にはデータの種類が格納される。所在1205には、データが格納されている位置(又はパス)が格納される。タイムスタンプ1206には、データが登録された日時が格納される。
実測レスポンス時間1204は、データ送信部7から送信されたデータ要求に対してデータベース5からの応答がデータ送信部7に到着した時刻と、リクエストメッセージ300のrequestTime302の差分からレスポンス時間計算部1126が計算した時間である。
なお、実測レスポンス時間1204は、上記に限定されるものではなく、スケジューリング部12がリクエストメッセージ300又はクエリを送信してから、データベース5(又は外部データベース6)の応答をデータ送信部7で受け付けるまでの時間をレスポンス時間計算部1126が測定して、レスポンス時間テーブル1125へ蓄積してもよい。
なお、レスポンス時間テーブル1125は、図示はしないが、少なくともデータ名(3051)と、データのカテゴリ(3052)と、実測レスポンス時間を1つのレコードに含めばよい。
また、レスポンス時間計算部1126は、計算した実測レスポンス時間1204と、データ名1201やデータの所在などの情報を登録し、登録した時刻をタイムスタンプ1206に設定する。レスポンス時間計算部1126は、毎回のレスポンス毎に計算するか、一定時間内に発生したレスポンスの平均値を計算することも可能である。
次に、パラメータ検出部1124は、取得した実測レスポンス時間1204を用いて、パラメータを生成する(S56)。なお、パラメータ検出部1124は、レスポンス時間テーブル1125から複数の実測レスポンス時間1204を検索した場合には、タイムスタンプ1206が最新のレコードの値を選択して推定レスポンス時間とする。
例えば、外部データベース6にデータを要求する状況においては、パラメータ検出部1124は、query305のデータ名を用いてレスポンス時間テーブル1125を検索し、パラメータとして実測レスポンス時間1204と、外部アクセス判定結果が「True」の値と、データの所在1205を生成する。なお、外部アクセス判定結果は、「True」又は「False」が設定される。
また、パラメータ検出部1124は、要求されているデータの所在1205が、外部データベース6ではない場合にはパラメータとして外部アクセス判定結果が「False」の値を生成する。パラメータ検出部1124が生成したパラメータは優先度設定部113に出力される(S57)。
リクエストメッセージ300の到着からデータ送信部7が検索結果を取得するまでにレスポンスに時間を要するカテゴリ3052(種類1203)のデータの処理速度を上げるために、パラメータ検出部1124が、リクエストメッセージ300のカテゴリ3052でレスポンス時間テーブル1125を検索し、データの種類1203に一致する実測レスポンス時間1204をパラメータとして使用することも可能である。
又は、レスポンスに時間を要する属性(自治体、民間、企業、等)のデータの処理速度を上げるために、レスポンス時間テーブル1125にデータの属性情報と実測レスポンス時間1204を登録し、パラメータとして生成することも可能である。
又は、都市OS30のプランで決められた最低限のレスポンス時間より遅れそうな場合に、遅延を回避するため、レスポンス時間テーブル1125にプラン情報(最低限レスポンス時間)を加えておくことができる。
パラメータ検出部1124は、リクエストメッセージ300のappricationID303に一致するアプリID1201のレコードを検索し、レスポンス時間テーブル1125からプラン情報(最低限レスポンス時間)、実測レスポンス時間1204を取得する。そして、パラメータ検出部1124は、アプリケーション2が加入しているプランの最低限レスポンス時間と、実測レスポンス時間1204の差を計算し、パラメータを生成することも可能である。
パラメータ検出部1124は、実測レスポンス時間1204と外部アクセス判定結果(「True」又は「False」)と、上記ステップS53で取得したアプリ優先度(304)を含むパラメータを優先度設定部113に出力する(S57)。
次に、リクエスト分析部112のリクエスト取得部1121は、優先度設定部113からパラメータの受信完了の通知(レスポンス)を待って処理を終了する(S58)。
図6は、優先度設定部113の構成の一例を示すブロック図である。優先度設定部113は、リクエスト分析部112からパラメータを受け付けて、可変優先度を算出してスケジューリング部12へ出力する。優先度設定部113は、パラメータ受信部1131と、優先度計算部1132と、処理順序制御部1133から構成される。
図7は、優先度設定部113で行われる処理の一例を示すフローチャートである。
パラメータ受信部1131は、リクエスト分析部112から出力されたパラメータを受信し、requestID301で、リクエストメッセージ毎のパラメータを識別する(S71)。
パラメータ受信部1131は、リクエストメッセージのパラメータの受信が完了すると、リクエスト分析部112のリクエスト取得部1121にパラメータの受信終了のレスポンスを返し、リクエスト取得部1121に新しいリクエストメッセージを取得するよう通知する(S72、S73)。
パラメータ受信部1131は、パラメータが複数の場合は、全てのパラメータの受信が完了してからリクエスト取得部1121にレスポンスを返す。パラメータ受信部1131が受け取ったパラメータは優先度計算部1132に出力され、優先度計算部1132はパラメータを用いて可変優先度を計算する(S74)。
実施例1の優先度計算部1132は、パラメータ内の実測レスポンス時間を、リクエストメッセージ300で要求されたデータを取得する際の推定レスポンス時間として扱う。優先度計算部1132は、推定レスポンス時間が予め設定した閾値を超えているかを判断し、閾値を超える場合は、アプリ優先度(priority304)よりも優先順位を上げて、可変優先度(値は減少)を設定する。
優先順位を上げる程度は、アプリ優先度(304)の設定レンジ内(例えば、自然数で1~7)で、アプリ優先度(304)を1段階又は2段階だけ上げた可変優先度を設定することができる。そして、推定レスポンス時間が、閾値を超えると、優先度計算部1132が可変優先度を最優先(可変優先度=1)に設定することができる。
すでに、アプリ優先度(304)が最優先順位(=1)に相当する値であれば、優先度計算部1132は優先順位の変更はしない。優先度計算部1132は、推定レスポンス時間が閾値を超えない場合は、優先順位を変えずに、優先度計算部1132はアプリ優先度(304)で処理する。
又は、優先度計算部1132は、予め閾値を複数設定し、推定レスポンス時間が低い閾値(第1の閾値)を超えない場合は、優先度計算部1132が優先順位(可変優先度)を下げ、推定レスポンス時間が高い閾値(第2の閾値)を超える場合は、優先順位(可変優先度)を上げ、その間の場合は、優先順位を変えない方法もある。
又は、優先度計算部1132は、予め複数の閾値を設定し、推定レスポンス時間が低い閾値(第1の閾値)を超える場合は、優先順位を1段階上げた可変優先度を算出し、推定レスポンス時間が高い閾値(第2の閾値)を超える場合は、優先順位を2段階だけ上げた可変優先度を算出する方法もある。
優先度計算部1132は、外部データベース6からデータを取得する場合、受け取ったパラメータの外部アクセス判定結果が「True」である場合、推定レスポンス時間と閾値を比較し、可変優先度を設定するようにしてもよい。
また、優先度計算部1132は、受け取ったパラメータの外部アクセス判定結果が「False」の場合は、アプリ優先度(304)のまま処理する。或いは、優先度計算部1132は、パラメータのうち外部アクセス判定結果の「True」又は「False」のみ用いて、「True」の場合に優先順位を上げ、「False」場合にはアプリ優先度(304)で処理することも可能である。
また、優先度計算部1132は、パラメータのうち外部アクセス判定結果の「True」又は「False」のみ用いて、「True」の場合に優先順位を上げ、「False」場合にはアプリ優先度(304)で処理することも可能である。
また、優先度計算部1132は、パラメータに外部アクセス判定結果の「True」が含まれる場合には、推定レスポンス時間と閾値に応じて可変優先度を算出し、パラメータが「False」の場合にはアプリ優先度(304)の値を可変優先度に設定してもよい。
また、優先度設定部113は、リクエスト分析部112から受け付けたパラメータが、カテゴリ3052や属性(property3054)の場合、推定レスポンス時間と閾値を用いて、優先度計算部1132で可変優先度を設定してもよい。
また、パラメータ検出部1124が、複数のリクエストメッセージ300について推定レスポンス時間を取得して、複数のリクエストメッセージ300と複数の推定レスポンス時間を優先度設定部113に出力することができる。この場合、パラメータ受信部1131で、複数のリクエストメッセージと複数の推定レスポンス時間を優先度計算部1132に出力し、優先度計算部1132は、複数のリクエストメッセージの推定レスポンス時間を比較して、推定レスポンス時間が最長時間か、推定レスポンス時間が長い上位いくつかの優先順位を上げて、可変優先度を設定する方法もある。
パラメータ受信部1131から、一定期間の間に貯められたリクエストメッセージのパラメータを優先度計算部1132に出力する場合、優先度計算部1132は、推定レスポンス時間が最長時間か、推定レスポンス時間が上位いくつかのリクエストメッセージか、推定レスポンス時間が上位何割かのリクエストメッセージの優先順位を上げることも可能である。
処理順序制御部1133は、算出された可変優先度(又はアプリ優先度(304))を含めて、スケジューリング部12にリクエストメッセージ300を送信する(S75)。なお、処理順序制御部1133は、リクエストメッセージ300のクエリ(query305)と可変優先度(アプリ優先度)を送信すればよい。
スケジューリング部12は、優先順位の異なる複数のキューで構成され、優先順位(可変優先度)の高いキューから優先的にデキューされるアルゴリズムでスケジューリングを実施する。
スケジューリング部12からアクセス先のデータベース5又は外部データベース6にリクエストメッセージのクエリ(query305)が送信されて、リクエストメッセージ300で要求されたデータの取得が実施される。
以上のように実施例1のデータ要求処理装置1は、リクエストメッセージ300の受信からレスポンスまでにかかった時間情報(推定レスポンス時間)と所定の閾値に基づいて、優先順位(可変優先度)を変更し、リクエストメッセージの処理を迅速化することで、端末100から要求されたデータの取得までの時間を短縮することができる。
また、データ要求処理装置1は、外部データベース6へアクセスする場合(パラメータの外部アクセス判定結果が「True」)に、推定レスポンス時間と閾値を用いて可変優先度を算出し、推定レスポンス時間の長さに応じた優先順位を設定することで、データの仲介を行う際にネットワーク4やアクセスの状況に応じてダイナミックでかつ柔軟にデータを要求するリクエストの優先度を制御することが可能となる。
実施例2では、端末100のアプリケーション2が、事故や災害のように発生時期が予想できない状況で優先度の変更を要求し、データ要求処理装置1が優先度の変更要求に応じて、優先順位を上げるための制御をリクエスト分析部112と、優先度設定部113で実施する例を説明する。
図9は、実施例2によるリクエスト分析部の構成を示す。
実施例2において、リクエスト分析部112は、リクエスト取得部1121と、アプリ優先度読み取り部1122と、クエリ読み取り部1123と、パラメータ検出部1124及び優先度変更要求取得部1127から構成される。パラメータ検出部1124は、優先度変更を管理するために入出力装置25からの指令を受け付ける。
リクエスト取得部1121、アプリ優先度読み取り部1122、クエリ読み取り部1123は実施例1と同様である。実施例2のリクエスト分析部112は、前記実施例1のレスポンス時間計算部1126とレスポンス時間テーブル1125を削除し、優先度変更要求取得部1127を加えた点が実施例1と相違する。
図10は、本発明の実施例2によるリクエスト分析部112の処理の一例を示すフローチャートである。この処理は、リクエスト受信部111から優先度変更要求を含むリクエストメッセージ300を受け付けた場合に開始される。なお、優先度変更要求は、リクエストメッセージ300と異なるメッセージであってもよい。
優先度変更要求取得部1127は、リクエスト受信部111から優先度変更を含むリクエストメッセージ300を取得する(S91)。優先度変更のリクエストメッセージ300は、appricationID303と、アプリ優先度(priority304)と同様の形式(レンジなど)を含む要求優先度で構成される。優先度変更要求取得部1127は、リクエストメッセージ300内の優先度変更要求を抽出してパラメータ検出部1124へ送信する。
パラメータ検出部1124は、優先度変更のリクエストを受け付ける(S92)と、入出力装置25へ優先度変更要求の可否を問い合せる(S93)。入出力装置25を利用する管理者は、通知を受けた入出力装置25で、要求優先度への変更を許可(True)又は不可(False)を決定し(S94)、決定内容を応答に含めてパラメータ検出部1124に送信する(S95)。
図11は、本発明の実施例2によるリクエスト分析部112の処理の一例を示すフローチャートである。この処理は、入出力装置25から優先度の変更の可否を受け付けた場合に開始される。
ステップS101~S104は前記実施例1の図5に示したステップS51~S54と同様の処理である。
入出力装置25から許可又は拒否の応答を受け付けたパラメータ検出部1124は、優先度変更の可否が設定されたappricationID303と同一のIDを含むアプリケーション2のリクエストメッセージ300を取得し、優先度変更の可否が「True」(許可)であるかを判定し(S105)、「True」であればステップS106へ進み、「False」(拒否)であればステップS107へ進む。
ステップS106では、パラメータ検出部1124が、優先度変更要求に含まれる要求優先度をパラメータとして生成し、優先度設定部113に出力する(S108)。一方、優先度変更が不可であれば、パラメータ検出部1124は0の値をパラメータとし(S107)、優先度設定部113に出力する(S108)。
優先度設定部113の優先度計算部1132は、受け付けたパラメータが0値であれば、アプリ優先度(304)をそのまま可変優先度に設定し、0でなければ、要求優先度を可変優先度に設定して出力する。
次に、リクエスト分析部112のリクエスト取得部1121は、優先度設定部113からパラメータの受信完了の通知(レスポンス)を待って処理を終了する(S109)。
なお、上記の他に、要求優先度は、通常時は「0」に設定され、予め設定された緊急時は「1」に設定しておき、緊急時には、可変優先度を最優先順位に設定することも可能である。
実施例2より、停電が起きた場合の電力インフラの保守アプリケーションや、洪水が起きた場合の下水道インフラの保守アプリケーションなど、平常より、優先されるべき事故や災害が発生した場合、それらのアプリケーション2が優先度変更を要求する場合に、データ要求処理装置1は当該アプリケーション2の優先順位を上げることが可能となる。なお、混雑度を計算するアプリケーション2が、都市内のイベントにより人の混雑発生した場合に、データ要求処理装置1が当該アプリケーション2の優先順位を上げるようにしてもよい。
実施例3は、アプリケーション2が様々なアプリケーションで利用された汎用性が高いデータにアクセスする場合に、過去のリクエストメッセージを用いて、優先順位を変更するためのパラメータを生成するリクエスト分析部112の例に関して説明する。
図12は、実施例3によるリクエスト分析部112の構成の一例を示す。実施例3のリクエスト分析部112は、リクエスト取得部1121と、アプリ優先度読み取り部1122と、クエリ読み取り部1123と、パラメータ検出部1124及びリクエスト記録部1128から構成される。
リクエスト取得部1121、アプリ優先度読み取り部1122、クエリ読み取り部1123は実施例1と同様である。実施例3のリクエスト分析部112は、前記実施例1のレスポンス時間計算部1126とレスポンス時間テーブル1125を削除し、リクエスト記録部1128を加えた点が実施例1と相違する。
図13は、実施例3によるリクエスト分析部の処理を示すフローチャートである。この処理は、リクエスト受信部111からリクエストメッセージ300を受診した場合に実行される。
リクエスト取得部1121は、リクエスト受信部111に記録されているリクエストメッセージ300を要求し、リクエストメッセージ300を取得する(S121)。
リクエスト取得部1121は、取得したリクエストメッセージ300をアプリ優先度読み取り部1122と、クエリ読み取り部に送信する(S122)。アプリ優先度読み取り部1122は、リクエストメッセージ300からrequestID301と、priority304を取得(S123)し、優先度設定部113に出力する(S127)。
クエリ読み取り部1123は、requestID301と、requestTime302と、appricationID303と、クエリ305をリクエストメッセージ300から取得優先度変更要求(S124)し、取得した情報をリクエスト記録部1128に記録を行う。また、クエリ読み取り部1123は、取得した情報をパラメータ検出部1124に出力する。
リクエスト記録部1128は過去のリクエストメッセージ300のrequestTime302と、appricationID303と、query305を記録する。リクエスト記録部1128は、SSDのような記憶装置か、DRAMのように揮発性の記憶装置で構成することも可能である。
パラメータ検出部1124は、リクエスト記録部1128にアクセスして、ステップS124で取得したrequestTime302よりも過去のリクエストメッセージ300を検索する(S125)。パラメータ検出部1124は、検索結果を用いてパラメータを生成する(S126)。パラメータ検出部1124は、生成されたパラメータを優先度設定部113に出力する(S127)。
例えば、汎用性の高いデータを要求する場合、パラメータ検出部1124は、requestTime302より一定期間の過去で、appricationID303が異なり、かつquery305の同じデータを要求したリクエストメッセージ300を検索しする。
パラメータ検出部1124は、同じデータを利用しているアプリケーションの数を特定し、アプリケーションの数が多い(又は最大)リクエストメッセージ300のquery305からパラメータを生成し(S126)、優先度設定部113に送信する(S127)。
次に、リクエスト分析部112のリクエスト取得部1121は、優先度設定部113からパラメータの受信完了の通知(レスポンス)を待って処理を終了する(S128)。
なお、特定したアプリケーション数は毎回のリクエストメッセージ300に対して算出するか、算出したアプリケーション数をリクエスト記録部1128に一定時間記録しておいて、以降のリクエストメッセージ300はその値をパラメータとして設定する方法もある。優先度設定部113の優先度計算部1132は、実施例1と同様の方法で、可変優先度の設定を実施する。
実施例3により、過去のリクエストメッセージ300の情報を用いて、優先順位を上げ、リクエストメッセージ300の処理を迅速化することで、データ取得までの時間を短縮することができる。
<結び>
以上のように、上記実施例のデータ要求処理装置1は、以下のような構成とすることができる。
(1)プロセッサ(21)とメモリを有するデータ要求処理装置(1)であって、データベース(5又は外部データベース6)に格納されているデータをリクエストするメッセージ(リクエストメッセージ300)を受信し、前記メッセージ(300)に含まれるデータ要求(query305)に優先度(可変優先度)を設定して、前記優先度に応じて前記データ要求(305)の処理順序を決定する優先度制御部(11)を有し、前記優先度制御部(11)は、前記メッセージ(300)を受信する受信部(リクエスト受信部111)と、前記メッセージ(300)に含まれるデータ要求(305)を取得し、前記データ要求(305)を分析して、前記優先度の設定に必要なパラメータ(推定レスポンス時間(実測レスポンス時間1204)又は外部アクセス判定結果)を生成する分析部(リクエスト分析部112)と、前記パラメータ(1204又は外部アクセス判定結果)を用いて前記データ要求(305)に優先度を設定する優先度設定部(113)と、を有し、前記優先度設定部(113)は、前記パラメータ(1204又は外部アクセス判定結果)を受け付けて、所定のルールで前記パラメータ(1204又は外部アクセス判定結果)を分類し、前記分類の結果に応じて前記データ要求(305)の優先度(可変優先度)を設定することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、パラメータ(1204又は外部アクセス判定結果)の状況に応じてダイナミックでかつ柔軟にリクエストの優先度を制御して、リアルタイム性が必要なアプリケーションは安定的にデータを取得することができる。
(2)上記(1)に記載のデータ要求処理装置であって、前記分析部(112)は、過去に算出されたレスポンス時間(実測レスポンス時間1204)を蓄積したテーブル(レスポンス時間テーブル1125)を参照し、前記データ要求(305)に対応するレスポンス時間(1204)を取得して前記パラメータとして出力し、前記優先度設定部(113)は、前記レスポンス時間(推定レスポンス時間)に応じて前記データ要求(305)に前記優先度を設定することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、レスポンスまでにかかった時間情報(推定レスポンス時間)に基づいて、優先順位(可変優先度)を変更し、リクエストメッセージの処理を迅速化することで、端末100から要求されたデータの取得までの時間を短縮することができる。
(3)上記(2)に記載のデータ要求処理装置であって、前記優先度設定部(113)が設定した前記優先度に応じた前記データ要求(305)を前記データベース(5、6)に送信するスケジューリング部(12)を、さらに有し、前記分析部(112)は、前記データ要求(305)が前記スケジューリング部(12)で送信されてから前記データベース(5、6)からの応答を受け付けるまでの時間をレスポンス時間(1204)として計算して前記テーブル(1125)に蓄積するレスポンス時間計算部(1126)を、さらに有することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、レスポンスまでにかかった時間情報(推定レスポンス時間)に基づいて、優先順位(可変優先度)を変更し、リクエストメッセージの処理を迅速化することで、端末100から要求されたデータの取得までの時間を短縮することができる。
(4)上記(1)に記載のデータ要求処理装置であって、 前記優先度設定部(113)は、前記分析部(112)から出力されたパラメータ(1204又は外部アクセス判定結果)と、予め設定された閾値とを比較して、前記比較の結果に応じて前記データ要求(305)の前記優先度を設定することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、レスポンスまでにかかった時間情報(推定レスポンス時間)と所定の閾値に基づいて、優先順位(可変優先度)を変更し、リクエストメッセージの処理を迅速化することで、端末100から要求されたデータの取得までの時間を短縮することができる。
(5)上記(2)に記載のデータ要求処理装置であって、前記分析部(112)は、複数の前記データ要求(305)について前記レスポンス時間を取得して、前記複数のメッセージと複数の前記レスポンス時間を前記優先度設定部(113)に出力し、前記優先度設定部(113)は、前記複数のレスポンス時間に応じて、前記複数のデータ要求(305)の優先度を設定することを特徴とするデータ要求処理装置。
上記構成により、パラメータ検出部1124が、複数のリクエストメッセージ300について推定レスポンス時間を取得して、複数のリクエストメッセージ300と複数の推定レスポンス時間を優先度設定部113に出力することができる。この場合、パラメータ受信部1131で、複数のリクエストメッセージと複数の推定レスポンス時間を優先度計算部1132に出力し、優先度計算部1132は、複数のリクエストメッセージの推定レスポンス時間を比較して、推定レスポンス時間が最長時間か、推定レスポンス時間が長い上位いくつかの優先順位を上げることができる。
また、パラメータ受信部1131から、一定期間の間に貯められたリクエストメッセージのパラメータ(1204又は外部アクセス判定結果)を優先度計算部1132に出力する場合、優先度計算部1132は、推定レスポンス時間が最長時間か、推定レスポンス時間が上位いくつかのリクエストメッセージか、推定レスポンス時間が上位何割かのリクエストメッセージの優先順位を上げることも可能である。
(6)上記(2)に記載のデータ要求処理装置であって、前記受信部は、前記優先度の変更要求を受信し、前記分析部(112)は、前記優先度の変更要求の可否の問い合せを出力し、前記問い合せに対する応答を受け付け、当該応答の内容(True又はFalse)を前記優先度設定部(113)に出力し、前記優先度設定部(113)は、前記応答の内容に応じて前記優先度を設定することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、停電が起きた場合の電力インフラの保守アプリケーションや、洪水が起きた場合の下水道インフラの保守アプリケーションなど、平常より、優先されるべき事故や災害が発生した場合、それらのアプリケーション2が優先度変更を要求する場合に、データ要求処理装置1は当該アプリケーション2の優先順位を上げることが可能となる。
(7)上記(6)に記載のデータ要求処理装置であって、前記分析部(112)は、前記問い合せに対する応答がTrueを含む場合には、前記優先度設定部(113)に前記優先度の変更要求を通知し、前記優先度設定部(113)は、前記通知に応じて前記優先度を設定することを特徴とするデータ要求処理装置。
上記構成により、優先度設定部113の優先度計算部1132は、受け付けたパラメータ(1204)が0値であれば、アプリ優先度(304)をそのまま可変優先度に設定し、0でなければ、要求優先度を可変優先度に設定して出力することができる。
(8)上記(1)に記載のデータ要求処理装置であって、前記分析部(112)は、過去のメッセージ(300)に含まれるデータ要求(305)を記録する記録部(1128)と、前記記録部(1128)から過去のデータ要求(305)を検索して、前記パラメータ(1204又は外部アクセス判定結果)を生成する検出部(パラメータ検出部1124)と、を有することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、過去のリクエストメッセージ300の情報を用いて、優先順位を上げ、リクエストメッセージ300の処理を迅速化することで、データ取得までの時間を短縮することができる。
(9)上記(1)に記載のデータ要求処理装置であって、上記(8)に記載のデータ要求処理装置であって、前記検出部(1124)は、前記記録部(1128)から、異なるアプリケーションで、かつ、前記データ要求(305)と同一のデータを要求した過去のデータ要求(305)を検索し、前記アプリケーションの数を取得し、前記アプリケーションの数が所定の条件を満たすデータ要求(305)からパラメータを生成することを特徴とするデータ要求処理装置。
上記構成により、データ要求処理装置1は、アプリケーションの数が所定の条件(例えば、最大)を満たすデータ要求からパラメータ(1204又は外部アクセス判定結果)を生成することができ、過去のリクエストメッセージ300の情報を用いて、優先順位を上げ、リクエストメッセージ300の処理を迅速化することで、データ取得までの時間を短縮することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。