以下に、本願の開示するデータ格納制御装置、データ格納制御プログラムおよびデータ格納制御方法の各実施例を図面に基づいて詳細に説明する。なお、各実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
次に、実施例2について説明する。実施例2では、データセンタなどに設けられた複数のサーバ装置21から性能データを収集してデータベースで一元管理し、ユーザからの参照の要求に応じて性能データを提供するシステム20について説明する。図2は、システムの機能的な構成の一例を示す図である。システム20は、データ格納制御装置として機能する第1のサーバ装置22と、第2のサーバ装置23とを有する。
第1のサーバ装置22は、各サーバ装置21から送信された性能データを受信し、受信された性能データを決定された格納順に第2のサーバ装置23へ順次格納する制御を行う。
各サーバ装置21には、性能の測定を行うソフトウェア21aがインストールされている。ソフトウェア21aは、定期的にそれぞれサーバ装置21に搭載されたリソースの性能を測定する。例えば、ソフトウェア21aは、CPUやメモリ、ディスク、ミドルウェア、アプリケーションなど、リソースごとの性能を定期的に測定する。ソフトウェア21aは、測定された各リソースの性能を示す性能データを第1のサーバ装置22へ送信する。なお、図2の例では、サーバ装置21を4つ図示したが、サーバ装置21の数は何れであってもよい。
第2のサーバ装置23は、第1のサーバ装置22から順次格納される性能データを記憶装置40のデータベース40aに記憶して一元管理する。第2のサーバ装置23は、データベース40aに記憶された各性能データをクライアント装置24から参照可能としている。ユーザは、クライアント装置24を用いて第2のサーバ装置23に対して、確認したいサーバ装置21のリソースの性能データの参照要求を送信する。第2のサーバ装置23は、参照の要求に応じて性能データを提供しており、参照の要求に応じた性能データを要求元のクライアント装置24へ送信する。また、第2のサーバ装置23は、ユーザから要求された内容を示す操作ログ42を生成する。本実施例では、クライアント装置24に対して使用するユーザが固定されており、ユーザを特定することによりクライアント装置15を特定するものとする。第1のサーバ装置22と第2のサーバ装置23とサーバ装置21とクライアント装置24との間は、図示しないネットワークを介して通信可能に接続される。かかるネットワークの一態様としては、有線または無線を問わず、インターネット(Internet)、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の通信網が挙げられる。
図2に示すように、第1のサーバ装置22は、記憶部30と、特定部31と、決定部32と、格納部33と、操作実績生成部34と、参照パターン更新部35を有する。
記憶部30には、各種情報が記憶されている。例えば、記憶部30には、第1テーブル30a、第2テーブル30b、第3テーブル30c、第4テーブル30dおよび第5テーブル30eが記憶されている。記憶部30のデバイスの一例としては、フラッシュメモリやNVSRAMなどのデータを書き換え可能な半導体メモリや、ハードディスク、光ディスクなどの記憶装置が挙げられる。
第1テーブル30aは、性能データを参照するユーザ毎の過去の操作での参照パターンを記憶したテーブルである。第1テーブル30aは、性能データを参照するユーザ毎に同様のデータ構成でそれぞれ設けられている。図3は、第1テーブルのデータ構成の一例を示す図である。図3に示すように、第1テーブル30aは、状態、平均時間、参照確率などの各項目を有する。参照確率の項目は、各サーバ装置21の性能データ毎に複数の項目に分けている。図3の例では、参照確率の項目が「サーバ1:性能A−1」の項目、「サーバ1:性能A−2」の項目、「サーバ1:性能A−3」の項目、・・・「サーバ3:性能A」の項目に分けている。
状態の項目は、参照動作の状態または参照された性能データを表す情報を格納する領域である。例えば、状態の項目には、参照動作の状態を表す名称や性能データの名称を格納する。平均時間の項目は、状態の項目の状態が維持または性能データが参照される平均時間を秒単位で格納する領域である。参照確率の各項目は、状態の項目の状態または性能データの次に各性能データが参照される割合を格納する領域である。以下では、性能データが参照される割合を「参照確率」とも言う。参照確率の各項目には、状態の項目の状態または性能データの次に参照された実績がある場合、参照確率を示す値が登録される。また、参照確率の各項目には、状態の項目の状態または性能データの次に参照された実績がない場合、参照確率の項目には、実績なしを示す「NULL」が設定される。
図3の例では、ログイン直後の状態は、平均時間が1秒であり、次にサーバ1の性能A−1の参照確率が100%であることを示す。また、サーバ1の性能A−1の参照状態は、平均時間が32秒であり、次にサーバ1の性能項目A−2の参照確率が50%であり、サーバ1の性能項目A−3の参照確率が30%であり、サーバ3の性能項目Aの参照確率が30%であることを示す。また、サーバ1の性能A−2の参照状態は、平均時間が16秒であり、次にサーバ1の性能項目A−1の参照確率が10%であり、サーバ1の性能項目A−3の参照確率が80%であり、サーバ3の性能項目Aの参照確率が10%であることを示す。また、サーバ3の性能Aの参照状態は、平均時間が72秒であり、次にサーバ1の性能項目A−1の参照確率が80%であり、サーバ1の性能項目A−3の参照確率が30%であることを示す。
第1テーブル30aには、後述する参照パターン更新部35により各項目の情報が登録される。また、第1テーブル30aは、決定部32で実行される処理に用いられる。
第2テーブル30bは、直前に性能データを参照したユーザの参照パターンを記憶したテーブルである。図4は、第2テーブルのデータ構成の一例を示す図である。図4に示すように、第2テーブル30bは、第1テーブル30aと同様のデータ構成とされおり、状態、平均時間、参照確率などの各項目を有する。
状態の項目は、直前の性能データの参照動作での参照動作の状態または参照された性能データを表す情報を格納する領域である。平均時間の項目は、直前の性能データの参照動作での平均時間を秒単位で格納する領域である。参照確率の各項目は、直前の性能データの参照動作での参照確率を格納する領域である。参照確率の各項目には、状態の項目の状態または性能データの次に参照された実績がある場合、参照確率を示す値が登録される。また、参照確率の各項目には、状態の項目の状態または性能データの次に参照された実績がない場合、実績なしを示す「NULL」が設定される。
図4の例では、ログイン直後の状態は、平均時間が1秒であり、次にサーバ1の性能A−1の参照確率が100%であることを示す。また、サーバ1の性能A−1の参照状態は、平均時間が23秒であり、次にサーバ1の性能項目A−2の参照確率が100%であることを示す。また、サーバ1の性能A−2の参照状態は、平均時間が18秒であり、次にサーバ3の性能項目Aの参照確率が100%であることを示す。また、サーバ3の性能Aの参照状態は、平均時間が60秒であり、次に性能項目の参照が特にないことを示す。
第2テーブル30bには、後述する操作実績生成部34により各項目の情報が登録される。また、第2テーブル30bは、参照パターン更新部35で実行される処理に用いられる。
第3テーブル30cは、ユーザ毎の各サーバ装置21の各性能データの緊急度を記憶するテーブルである。第3テーブル30cは、性能データを参照するユーザ毎に同様のデータ構成でそれぞれ設けられている。図5は、第3テーブルのデータ構成の一例を示す図である。図5に示すように、第3テーブル30cは、サーバ、レコード、緊急度の各項目を有する。
サーバの項目は、何れのかのサーバ装置21を表す情報を格納する領域である。例えば、サーバの項目には、サーバ装置21のマシーン名を格納する。レコードの項目は、性能データを表す情報を格納する領域である。例えば、サーバの項目には、性能データの名称を格納する。緊急度の項目は、性能データの緊急度を表す値を格納する領域である。
図5の例では、ユーザAについて、サーバ1の性能データA−1は、緊急度が2.5であることを示す。また、サーバ1の性能データA−2は、緊急度が1.9であることを示す。また、サーバ2の性能データB−1は、緊急度が1.9であることを示す。また、サーバ3の性能データAは、緊急度が1.03であることを示す。また、図5の例では、ユーザCについて、サーバ1の性能データA−1は、緊急度が1.2であることを示す。また、サーバ2の性能データB−1は、緊急度が1.2であることを示す。また、サーバ3の性能データAは、緊急度が1.03であることを示す。
第3テーブル30cには、後述する決定部32により各項目の情報が登録される。また、第2テーブル30bは、決定部32で実行される処理に用いられる。
第4テーブル30dは、各サーバ装置21の各性能データの優先度を記憶するテーブルである。図6は、第4テーブルのデータ構成の一例を示す図である。図6に示すように、第4テーブル30dは、サーバ、レコード、優先度の各項目を有する。
サーバの項目は、何れのかのサーバ装置21を表す情報を格納する領域である。例えば、サーバの項目には、サーバ装置21のマシーン名を格納する。レコードの項目は、性能データを表す情報を格納する領域である。例えば、レコードの項目には、性能データの名称を格納する。優先度の項目は、性能データを優先して格納すべき度合い表す値を格納する領域である。
図6の例では、サーバ2の性能データB−1は、優先度が2であることを示す。また、サーバ1の性能データA−1は、優先度が1であることを示す。また、サーバ1の性能データA−2は、優先度が1であることを示す。また、サーバ3の性能データAは、優先度が1であることを示す。
第4テーブル30dには、予め各項目の情報が登録される。また、第4テーブル30dは、決定部32で実行される処理に用いられる。
第5テーブル30eは、各サーバ装置21の各性能データの格納順位を記憶するテーブルである。図7は、第5テーブルのデータ構成の一例を示す図である。図7に示すように、第5テーブル30eは、格納順位、サーバ、レコード、格納順位度数の各項目を有する。
格納順位の項目は、各サーバ装置21の各性能データの格納順位を表す値を格納する領域である。サーバの項目は、格納順位とされた性能データを送信するサーバ装置21を表す情報を格納する領域である。例えば、サーバの項目には、サーバ装置21のマシーン名を格納する。レコードの項目は、格納順位とされた性能データを表す情報を格納する領域である。例えば、サーバの項目には、性能データの名称を格納する。格納順位度数の項目は、後述する決定部により算出される格納順位度数の値を格納する領域である。
図7の例では、サーバ2の性能データB−1は格納順位度数が2.5であり、格納順位1位であることを示す。また、サーバ1の性能データA−1は格納順位度数が1.9であり、格納順位2位であることを示す。また、サーバ1の性能データA−2は格納順位度数が1.9であり、格納順位2位であることを示す。また、サーバ3の性能データAは格納順位度数が1であり、格納順位N位であることを示す。
第5テーブル30eには、後述する決定部32により各項目の情報が登録される。また、第5テーブル30eは、格納部33で実行される処理に用いられる。
図2の説明に戻り、特定部31は、第2のサーバ装置23に記憶された性能データを参照しているクライアント装置24のユーザおよび当該性能データを特定する。例えば、特定部31は、第2のサーバ装置23で生成される操作ログ42を参照し、性能データを参照しているクライアント装置24のユーザおよび当該性能データを特定する。
図8は、操作ログの一例を示す図である。図8に示すように、操作ログ42には、操作内容を表す複数のレコードが記録されている。各レコードは、カンマで区切られて時刻、ログ種別、ユーザ、操作の各項目が設けられている。時刻の項目は、操作された時刻を記録した領域である。ログ種別の項目は、ログがどのような内容であるかの種別を記録した領域である。図8の例では、「change_status」は第2のサーバ装置23に対してクライアント装置24のアクセス状態の変更に関する操作であることを示す。「refer_record」は性能データを参照操作であることを示す。ユーザの項目は、操作を行ったクライアント装置24のユーザ名を記録した領域である。操作の項目は、操作内容を記録した領域である。操作の項目には、アクセス状態の変更に関する操作がログインである場合、「login」と記録され、アクセス状態の変更に関する操作がログアウトである場合、「logout」と記録される。また、操作の項目には、性能データを参照操作である場合、参照操作を表す情報が記録される。図8の例では、参照操作を表す情報として、データベース40aに対して実行したSQL(Structured Query Language)が記録される。
図8の例では、レコード42aは、2011/2/28 9:35:00にユーザAがログインしたことを示す。また、レコード42bは、2011/2/28 9:35:01にユーザAがサーバ1の性能データA−1の参照を要求したことを示す。
特定部31は、第2のサーバ装置23で生成される操作ログ42を常時監視し、新たな操作ログ42が追加されたら、追加された操作ログ42を読み出す。そして、特定部31は、読み出した操作ログ42の解析を行い、性能データを参照しているクライアント装置24のユーザおよび当該性能データを特定する。また、特定部31は、読み出した操作ログ42の解析の結果、何れのユーザのログアウトを検出した場合、後述する操作実績生成部34へログアウトしたユーザを通知する。
決定部32は、サーバ装置21から送信された性能データを第2のサーバ装置23へ格納する格納順位を決定する。例えば、決定部32は、記憶部30に記憶された第1テーブル30aから、特定部31により特定されたユーザおよび性能データに対応するレコードを読み出す。例えば、特定されたユーザがユーザAであり、参照された性能データが性能データA−1の場合、決定部32は、図3に示す第1テーブル30aから、性能データA−1のレコードを読み出す。そして、決定部32は、読み出したレコードから平均時間および次に参照した各性能データの参照確率を求める。
決定部32は、求めた各性能データの参照確率を用いて各性能データの緊急度を算出する。例えば、決定部32は、特定部31によりユーザおよび性能データを特定してからの経過時間が待機時間を経過する毎に次の待機時間をより短い時間に変更する。かかる次の待機時間の変更の一例としては、決定部32は、初期の待機時間を平均時間の1/2の時間とし、待機時間を経過する毎に次の待機時間を直前の待機時間の1/2の時間とに変更する。そして、決定部32は、待機時間を経過する毎に、性能データ毎に所定の初期値に対して当該性能データの参照確率の値を加算して各性能データの緊急度を算出する。かかる緊急度の算出の一例としては、決定部32は、各性能データの緊急度の初期値を1とする。そして、決定部32は、待機時間を経過する毎に、緊急度に参照確率の値を加算する。これにより、各性能データの緊急度は、参照確率が高く、経過時間が長いほど大きな値として算出される。なお、決定部32は、参照確率が閾値以上の性能データについて緊急度の算出を行うようにする。この閾値としては、例えば10%とする。これにより、第1のサーバ装置21では、参照確率が10%未満の性能データを緊急度の算出対象から除外することができる。また、第1のサーバ装置21では、参照確率が10%未満の性能データを緊急度の算出対象から除外することにより、緊急度の算出する処理の負荷を低下させることができる。また、決定部32は、待機時間を経過した際に性能データが後述する格納部33の性能データ通知キュー33aに滞留している場合に、滞留している性能データについての緊急度に参照確率の値を加算するようにしてもよい。滞留していない性能データは、性能データ通知キュー33aに記憶されても速やかに格納される。これにより、第1のサーバ装置21では、滞留していない性能データの緊急度が不用意に高くなることを防止できる。決定部32は、各性能データの新たな緊急度を算出する毎に、算出したユーザの性能データ毎の緊急度を第3テーブル30cに記憶させる。
決定部32は、第3テーブル30cに記憶された各ユーザの性能データ毎の緊急度、および第4テーブル30dに記憶された性能データ毎の優先度を用いて各性能データの格納順を決定する。例えば、決定部32は、第3テーブル30cに記憶された各ユーザの性能データ毎の緊急度を読み込み、性能データ毎の緊急度を特定する。そして、決定部32は、同じ性能データに対して緊急度が複数存在するものがあるかを判定する。決定部32は、同じ性能データに対して緊急度が複数存在する場合、値の大きい緊急度を性能データに対する緊急度と特定する。決定部32は、各性能データ毎に、特定した性能データの緊急度と第4テーブル30dに記憶された優先度を乗算して格納順位度数を算出する。決定部32は、算出した格納順位度数の大きい順に性能データの格納順位を決定し、決定した格納順位、性能データを送信するサーバ、性能データ、格納順位度数を第5テーブル30eに記憶する。
格納部33は、各サーバ装置21から送信され、第1のサーバ装置21で受信した性能データを性能データ通知キュー33aに記憶する。図9は、性能データ通知キューのデータ構成の一例を示す図である。図9に示すように、性能データを性能データ通知キュー33aには、受信した性能データを格納する領域33bが設けられている。図9の例では、性能データ通知キュー33aの先頭の領域33bにサーバ1の性能データA−1が記憶され、次の領域33bにサーバ1の性能データA−2が記憶されていることを示す。また、図9の例では、性能データA−2の次の領域33bにサーバ2の性能データB−1が記憶され、次の領域33bにサーバ1の性能データA−3が記憶されていることを示す。
格納部33は、第5テーブル30eに記憶された各性能データの格納順位が更新されると、更新された格納順位に性能データを並び変える。また、格納部33は、性能データを受信した場合、当該性能データの格納順位に対応する領域33bがある場合、当該領域33bに受信した性能データを格納する。また、格納部33は、受信した性能データの格納順位に対応する領域33bがない場合、格納順位に性能データを並び変える。格納部33は、第1のサーバ装置21で性能データの格納が可能な状態となると、先頭の領域に記憶された性能データから順に性能データ通知キュー33aに記憶された性能データを記憶装置40へ順次格納する制御を行う。
操作実績生成部34は、特定部31からログアウトしたユーザが通知されると、第2のサーバ装置23で生成される操作ログ42にアクセスし、ログアウトしたユーザの操作ログ42を読み出す。そして、操作実績生成部34は、読み出した操作ログ42により示される各性能データの参照順から、各性能データに次に何れの性能データが参照されたかを特定する。そして、操作実績生成部34は、各性能データ毎に、次に性能データを参照した全参照回数に対する各性能データをそれぞれ次に参照された参照回数から、次に各性能データを参照する参照確率を算出する。また、操作実績生成部34は、各性能データを参照した時刻から次の性能データを参照した時刻までを参照時間として、各性能データがそれぞれ参照された平均時間を算出する。操作実績生成部34は、各性能データ毎に算出した平均時間および次に各性能データを参照する参照確率を記憶させた第2テーブル30bを作成する。
図10は、第2テーブルを作成する流れの一例を説明するための図である。図10の例では、例えば、図8に示した操作ログ42からログアウトしたユーザとしてユーザAの操作ログ42を読み出した場合を示している。図10の例では、読み出したユーザAの操作ログ42から各性能データを参照する参照確率と平均時間を算出し、第2テーブル30bを作成する。なお、作成された図10に示す第2テーブル30bは、図4と同様の内容であるため、説明を省略する。
参照パターン更新部35は、第2テーブル30bに記憶された各性能データ毎の平均時間および次に各性能データの参照確率を第1テーブル30aに反映させる。例えば、参照パターン更新部35は、ログアウトしたユーザに対応する第1テーブル30aが存在しない場合、第1テーブル30aを生成し、第2テーブル30bの各レコードを第1テーブル30aに格納する。また、参照パターン更新部35は、ログアウトしたユーザに対応する第1テーブル30aが存在する場合、各性能データ毎に、第1テーブル30aと第2テーブル30bの対応するフィールドの値を所定の比率で反映させた第1テーブル30aを作成する。例えば、参照パターン更新部35は、第1テーブル30aと第2テーブル30bの対応するフィールドの値に下記の演算を行って新しい第1テーブル30aの値とする。
第1テーブルの値=(第1テーブルの値×α+第2テーブルの値×β)÷(α+β)
αおよびβは、過去の操作実績と、直近の操作実績のどちらを重んじるかを決定する係数である。α,βは、例えば、共に1とする。なお、図2の例では、機能的な構成を示したため、特定部31と、決定部32と、格納部33と、操作実績生成部34と、参照パターン更新部35を別に分けているが、例えば、1つのデバイスで構成してもよい。デバイスの一例としては、CPUやMPUなどの電子回路が挙げられる。なお、デバイスとして、ASICやFPGAなどの集積回路を採用することもできる。
一方、第2のサーバ装置23は、記憶装置40と、ユーザ操作記録部41とを有している。記憶装置40は、性能データを格納したデータベース40aを記憶する。ユーザ操作記録部41はユーザから要求された内容を示す操作ログ42を生成する。
次に、本実施例に係るシステム20の処理の流れを説明する。図11は、操作特定処理の手順を示すフローチャートである。この操作特定処理は、例えば、第1のサーバ装置21が起動した後、常時実行される。
図11に示すように、特定部31は、第2のサーバ装置23で生成される操作ログ42を常時監視し、新たな操作ログ42が追加されたか否かを判定する(ステップS10)。新たな操作ログ42が追加されていない場合(ステップS10否定)、特定部31は、再度ステップS10へ移行して新たな操作ログ42の追加待ちを行う。一方、新たな操作ログ42が追加された場合(ステップS10肯定)、特定部31は、追加された新たな操作ログ42を取得する(ステップS11)。そして、特定部31は、取得した操作ログ42から操作を行ったユーザを特定する(ステップS12)。特定部31は、後述する操作ログ解析処理が起動済みであるか否かを判定する(ステップS13)。操作ログ解析処理が未起動の場合(ステップS13否定)、特定部31は、操作ログ解析処理の起動を行う(ステップS14)。そして、特定部31は、新しい操作ログ42を操作ログ解析処理に通知する(ステップS15)。一方、操作ログ解析処理が起動済みである場合(ステップS13肯定)、特定部31は、上述のステップS15の処理へ移行する。特定部31は、第1のサーバ装置21に対して終了が指示されたか否かを判定する(ステップS16)。終了が指示されていない場合(ステップS16否定)、特定部31は、ステップS10の処理へ移行する。一方、終了が指示された場合(ステップS16肯定)、特定部31は、処理を終了する。
図12は、操作ログ解析処理の手順を示すフローチャートである。この操作ログ解析処理は、操作特定処理から起動が指示されたタイミングで実行される。
図12に示すように、特定部31は、操作特定処理から操作ログ42が通知されたか否かを判定する(ステップS20)。操作特定処理から操作ログ42が通知されていない場合(ステップS20否定)、特定部31は、再度ステップS20へ移行して操作ログ42の通知待ちを行う。一方、操作特定処理から操作ログ42が通知された場合(ステップS20肯定)、特定部31は、操作ログ42に記録された操作がログアウト操作か否かを判定する(ステップS21)。操作がログアウト操作ではない場合(ステップS21否定)、特定部31は、特定したユーザに対応する第1テーブル30aが記憶部30に記憶されているか否かを判定する(ステップS22)。特定したユーザに対応する第1テーブル30aが記憶されていない場合(ステップS22否定)、特定部31は、ステップS20の処理へ移行する。一方、特定したユーザに対応する第1テーブル30aが記憶されている場合(ステップS22肯定)、特定部31は、後述する緊急度決定処理を起動し(ステップS23)、ステップS20へ移行する。一方、操作がログアウト操作である場合(ステップS21肯定)、特定部31は、後述する緊急度決定処理へ終了を通知する(ステップS24)。そして、特定部31は、ログアウトしたユーザを通知して後述する操作実績更新処理を起動し(ステップS25)、処理を終了する。
図13は、操作実績更新処理の手順を示すフローチャートである。この操作実績更新処理は、操作ログ解析処理から起動が指示されたタイミングで実行される。
図13に示すように、操作実績生成部34は、ログアウトしたユーザの操作ログ42を読み出す(ステップS30)。そして、操作実績生成部34は、各性能データ毎にそれぞれ参照された平均時間および次に各性能データを参照する参照確率を算出し、各性能データ毎の平均時間および次に各性能データを参照する参照確率を記憶させた第2テーブル30bを作成する(ステップS31)。参照パターン更新部35は、ログアウトしたユーザに対応する第1テーブル30aが存在するか否か判定する(ステップS32)。第1テーブル30aが存在しない場合(ステップS32否定)、参照パターン更新部35は、第1テーブル30aを生成し、第2テーブル30bの各レコードを第1テーブル30aに格納する(ステップS33)。一方、第1テーブル30aが存在する場合(ステップS32肯定)、参照パターン更新部35は、各性能データ毎に、第1テーブル30aと第2テーブル30bの対応するフィールドの値を所定の比率で反映させた第1テーブル30aを作成する(ステップS34)。操作実績生成部34は、第2のサーバ装置23で生成される操作ログ42からログアウトしたユーザの操作ログ42を削除する(ステップS35)。そして、操作実績生成部34は、第2テーブル30bを削除し(ステップS36)、処理を終了する。
図14は、緊急度決定処理の手順を示すフローチャートである。この緊急度決定処理は、操作ログ解析処理から起動が指示されたタイミングで実行される。
図14に示すように、決定部32は、サーバ、レコードの項目に各サーバ装置21のマシーン名称、各性能データの性能データの名称を設定した、特定部31により特定されたユーザの第3テーブル30cを作成する(ステップS40)。そして、決定部32は、特定部31により性能データを参照する操作が特定されたか否かを判定する(ステップS41)。性能データを参照する操作が特定されない場合(ステップS41否定)、決定部32は、処理の終了が通知されたか否かを判定する(ステップS42)。処理の終了が通知されていない場合(ステップS42否定)、決定部32は、ステップS41へ移行する。一方、処理の終了が通知された場合(ステップS42肯定)、決定部32は、各ユーザの第3テーブル30cを削除する(ステップS43)。そして、決定部32は、後述する優先度決定処理を起動し(ステップS44)、処理を終了する。一方、性能データを参照する操作が特定された場合(ステップS41肯定)、決定部32は、特定部31により特定されたユーザの第3テーブル30cの全レコードを削除する(ステップS45)。そして、決定部32は、後述する緊急度算出処理を起動し(ステップS46)、ステップS41へ移行する。
図15は、緊急度算出処理の手順を示すフローチャートである。この緊急度算出処理は、緊急度決定処理から起動が指示されたタイミングで実行される。
図15に示すように、決定部32は、記憶部30に記憶された第1テーブル30aから、特定部31により特定されたユーザおよび性能データに対応するレコードを読み出す(ステップS50)。そして、決定部32は、読み出したレコードから平均時間および次に参照した各性能データの参照確率を求める(ステップS51)。決定部32は、第3テーブル30cの各サーバの各性能データの緊急度の項目に初期値として1を設定する(ステップS52)。決定部32は、待機時間Tに平均時間の1/2の時間を設定する(ステップS53)。決定部32は、待機時間Tを経過したか否かを判定する(ステップS54)。待機時間Tを経過していない場合(ステップS54否定)、決定部32は、特定部31により同じユーザの別な性能データに対する参照操作が特定されたか否かを判定する(ステップS55)。別な性能データに対する参照操作が特定されない場合(ステップS55否定)、決定部32は、ステップS54へ移行する。一方、別な性能データに対する参照操作が特定された場合(ステップS55肯定)、決定部32は、処理を終了する。一方、待機時間Tを経過した場合(ステップS54肯定)、決定部32は、第3テーブル30cの性能データ毎に緊急度に対して当該性能データの参照確率の値を加算して各性能データの緊急度を更新する(ステップS56)。決定部32は、優先度決定処理を起動する(ステップS57)。そして、決定部32は、待機時間Tに待機時間Tの1/2の時間を更新する(ステップS58)。決定部32は、待機時間Tが所定の許容時間より短いか否かを判定する(ステップS59)。この許容時間は、緊急度の更新を行う最も短い時間である。この許容時間は、例えば、0.5秒と定めている。待機時間Tが許容時間以上の場合(ステップS59否定)、決定部32は、ステップS54へ移行する。一方、待機時間Tが所定の許容時間より短い場合(ステップS59肯定)、決定部32は、処理を終了する。これにより、待機時間Tの初期値が、例えば、30秒であった場合、ステップS54〜ステップ59の処理が繰り返される毎に、待機時間Tは、30秒、15秒、7.5秒、・・・と更新される。また、更新時間Tを経過する毎に、各性能データの緊急度には、参照確率の値が加算される。
図16は、優先度決定処理の手順を示すフローチャートである。この優先度決定処理は、緊急度決定処理および緊急度算出処理から起動が指示されたタイミングで実行される。
図16に示すように、決定部32は、記憶部30に記憶された全ユーザの第3テーブル30cを読み出し、性能データ毎の緊急度を特定する(ステップS60)。決定部32は、同じ性能データに対して緊急度が複数存在するものがあるか否かを判定する(ステップS61)。同じ性能データに対して緊急度が複数存在する場合(ステップS61肯定)、決定部32は、値の大きい緊急度を性能データに対する緊急度と特定する(ステップS62)。そして、決定部32は、各性能データ毎に、特定した性能データの緊急度と第4テーブル30dに記憶された優先度を乗算して格納順位度数を算出し、算出した格納順位度数の大きい順に性能データの格納順位を決定する(ステップS63)。一方、同じ性能データに対して緊急度が複数存在しない場合(ステップS61否定)、決定部32は、上述のステップS63へ移行する。決定部32は、後述する性能データ格納処理へ格納順位の変更を通知し(ステップS64)、処理を終了する。
図17は、性能データ格納処理の手順を示すフローチャートである。この性能データ格納処理は、例えば、第1のサーバ装置21が起動した後、常時実行される。
図17に示すように、格納部33は、第1のサーバ装置21で性能データの格納が可能な状態か否か判定する(ステップS70)。第1のサーバ装置21が性能データの格納が可能な状態である場合(ステップS70肯定)、格納部33は、性能データ通知キュー33aの先頭の領域33bに記憶された性能データから順に性能データを記憶装置40へ順次格納する制御を行い(ステップS71)、ステップS70へ移行する。一方、第1のサーバ装置21が性能データの格納が可能な状態ではない場合(ステップS70否定)、格納部33は、格納順位の変更が通知されたか否かを判定する(ステップS72)。格納順位の変更が通知されていない場合(ステップS72否定)、格納部33は、第1のサーバ装置21に対して終了が指示されたか否かを判定する(ステップS73)。終了が指示されていない場合(ステップS73否定)、格納部33は、ステップS70の処理へ移行する。一方、終了が指示された場合(ステップS73肯定)、格納部33は、処理を終了する。一方、格納順位の変更が通知された場合(ステップS72肯定)、格納部33は、第5テーブル30eから各性能データの格納順位を読み出す(ステップS74)。格納部33は、変数Iおよび変数Jをそれぞれ1に初期化する(ステップS75)。格納部33は、性能データ通知キュー33aの各性能データを別な記憶領域に待避する(ステップS76)。格納部33は、待避した全ての性能データの並び変えが完了したか否かを判定する(ステップS77)。並び変えが完了した場合(ステップS77肯定)、格納部33は、ステップS70へ移行する。一方、並び変えが完了していない場合(ステップS77否定)、格納部33は、待避した性能データに格納順位がJの値の性能データがあるか否かを判定する(ステップS78)。格納順位が変数Jの値の性能データがない場合(ステップS78否定)、格納部33は、変数Jの値をインクリメントし(ステップS79)、ステップS77へ移行する。一方、格納順位が変数Jの値の性能データがある場合(ステップS78肯定)、格納部33は、格納順位が変数Jの値の性能データを、性能データ通知キュー33aの変数I番目の領域に格納する(ステップS80)。格納部33は、変数Iの値をインクリメントし(ステップS81)、ステップS77へ移行する。
図18は、通知キュー格納処理の手順を示すフローチャートである。この通知キュー格納処理は、例えば、サーバ装置21から性能データを受信したタイミングで実行される。
図18に示すように、格納部33は、受信した性能データの格納順位に応じた格納領域があるか否か判定する(ステップS90)。格納領域がある場合(ステップS90肯定)、格納部33は、格納順位に応じた格納領域に受信した性能データを格納し(ステップS91)、処理を終了する。一方、格納領域がない場合(ステップS90否定)、格納部33は、第5テーブル30eに、受信した性能データに対応する格納順位があるか否か判定する(ステップS92)。格納順位がない場合(ステップS92否定)、格納部33は、受信した性能データの格納順位を最下位とする(ステップS93)。一方、格納順位がある場合(ステップS92肯定)、格納部33は、第5テーブル30eから各性能データの格納順位を読み出す(ステップS94)。格納部33は、変数Iおよび変数Jをそれぞれ1に初期化する(ステップS95)。格納部33は、性能データ通知キュー33aの各性能データを別な記憶領域に待避する(ステップS96)。格納部33は、待避した全ての性能データの並び変えが完了したか否かを判定する(ステップS97)。並び変えが完了した場合(ステップS97肯定)、格納部33は、処理を終了する。一方、並び変えが完了していない場合(ステップS97否定)、格納部33は、待避した性能データに格納順位がJの値の性能データがあるか否かを判定する(ステップS98)。格納順位が変数Jの値の性能データがない場合(ステップS98否定)、格納部33は、変数Jの値をインクリメントし(ステップS99)、ステップS97へ移行する。一方、格納順位が変数Jの値の性能データがある場合(ステップS98肯定)、格納部33は、格納順位が変数Jの値の性能データを、性能データ通知キュー33aの変数I番目の領域に格納する(ステップS100)。格納部33は、変数Iの値をインクリメントし(ステップS101)、ステップS97へ移行する。
上述してきたように、本実施例に係る第1のサーバ装置22は、クライアント装置24のユーザごとに、当該ユーザが参照した性能データに対応付けて当該性能データの参照時間を第1テーブル30aに記憶する。また、クライアント装置24は、クライアント装置24のユーザごとに、当該ユーザが参照した性能データに対応付けて当該性能データの次に参照した各性能データの参照確率を第1テーブル30aに記憶する。さらに、第1のサーバ装置22は、記憶装置40に記憶された性能データを参照しているクライアント装置24のユーザおよび当該性能データを特定する。そして、第1のサーバ装置22は、第1テーブル30aを参照し、特定されたクライアント装置および性能データに対応する参照時間に対する特定してからの経過時間を求める。また、第1のサーバ装置22は、第1テーブル30aを参照し、特定されたクライアント装置および性能データに対応する次に参照した各性能データの参照確率を求める。そして、第1のサーバ装置22は、特定してからの経過時間および、次に参照した各性能データの参照確率に基づいて、サーバ装置21から送信された性能データを記憶装置40へ格納する格納順位を決定する。これにより、第1のサーバ装置22は、クライアント装置24が次に参照する性能データが優先して格納されるように格納順位を決定する。よって、第1のサーバ装置22によれば、ユーザが参照する性能データの格納に遅延が発生することを抑制できる。
また、本実施例に係る第1のサーバ装置22は、性能データ毎の優先度を第4テーブル30dにさらに記憶する。また、第1のサーバ装置22は、参照確率が高く、参照時間に対する経過時間の割合が大きいほど大きな値として各性能データの緊急度を算出する。そして、第1のサーバ装置22は、性能データ毎に、算出された緊急度と記憶部に記憶された優先度を乗算した値の大きい順に格納順位を決定する。これにより、第1のサーバ装置22は、重要度が低い性能データも、参照確率が高く、参照時間に対する経過時間の割合が大きいほど大きな値として緊急度が算出されて格納順位が高くなる。よって、第1のサーバ装置22によれば、重要度が低い性能データもユーザによって参照されるまでに遅延を抑えて格納することがきる。
また、本実施例に係る第1のサーバ装置22は、特定部31によりユーザおよび性能データを特定してからの経過時間が待機時間を経過する毎に次の待機時間をより短い時間に変更する。そして、第1のサーバ装置22は、待機時間を経過する毎に、性能データ毎に所定の初期値に対して当該性能データの参照確率の値を加算して各性能データの緊急度を算出する。これにより、第1のサーバ装置22は、経過時間が長く、参照されるタイミングが近づくほど緊急度が高くなる。よって、第1のサーバ装置22によれば、参照されるタイミングが近い性能データほど、優先して格納することがきる。
また、第1のサーバ装置22は、重要度、及びユーザごとの参照特性から算出した緊急度という二つの指標を使って優先度を決定することにより、各ユーザが参照する性能データを優先して格納する。よって、第1のサーバ装置22によれば、多数のユーザが効率的に性能データを参照できるため、全体のサービスレベルを向上させることができる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例2では、性能データ通知キュー33aに格納された各性能データを格納順位の順に並び変える場合について説明したが、開示の装置はこれに限定されない。例えば、性能データを格納する領域33bに次の性能データの記憶位置を示すアドレス領域を設け、アドレス領域の情報を更新することにより、各性能データを格納順位の順に並び変えてもよい。図19は、性能データ通知キューの他のデータ構成の一例を示す図である。性能データ通知キュー33aの各領域33bには、アドレス領域33cが設けられている。例えば、性能データ通知キュー33aは、3つのサーバ1の性能データA−1、サーバ1の性能データA−2、サーバ2の性能データB−1が格納されている。この状態においてさらに、格納順位が2位のサーバ1の性能データA−3を格納する場合、格納部33は、例えば、サーバ1の性能データA−3を4つ目の領域33bに格納する。そして、格納部33は、先頭の領域33bのアドレス領域33cに、次の性能データとしてサーバ1の性能データA−3が格納された領域33bのアドレスを記憶させる。また、格納部33は、性能データA−3が格納された領域33bのアドレス領域33cに、サーバ1の性能データA−2が格納された領域33bのアドレスを記憶させる。また、格納部33は、サーバ1の性能データA−2が格納された領域33bのアドレス領域33cに、サーバ2の性能データB−1が格納された領域33bのアドレスを記憶させる。これにより、物理的な格納順を変えることなく、格納順位の順に性能データを並び変えることができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図2に示す、特定部31と決定部32と格納部33や、操作実績生成部34と参照パターン更新部35などが統合されてもよい。
[データ格納制御プログラム]
また、上記の実施例で説明したデータ格納制御装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図20を用いて、上記の実施例で説明したデータ格納制御装置と同様の機能を有するデータ格納制御プログラムを実行するコンピュータの一例を説明する。図20は、データ格納制御プログラムを実行するコンピュータを示す図である。
図20に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。これら300〜340の各部は、バス400を介して接続される。
ROM320には、上記の実施例1に示す決定部12と同様の機能、または上記の実施例2に示す特定部31、決定部32、格納部33、操作実績生成部34、および参照パターン更新部35と同様の機能を発揮するデータ格納制御プログラム320aが予め記憶される。なお、データ格納制御プログラム320aについては、適宜分離しても良い。
そして、CPU310が、データ格納制御プログラム320aをROM320から読み出して実行する。
そして、HDD330には、第1テーブル、第2テーブル、第3テーブル、第4テーブルおよび第5テーブルが設けられる。第1テーブル、第2テーブル、第3テーブル、第4テーブルおよび第5テーブルのそれぞれは、図2に示した、第1テーブル30a、第2テーブル30b、第3テーブル30c、第4テーブル30dおよび第5テーブル30eに対応する。
そして、CPU310は、第1テーブル、第2テーブル、第3テーブル、第4テーブルおよび第5テーブルを読み出してRAM340に格納する。CPU310は、RAM340に格納された第1テーブル、第2テーブル、第3テーブル、第4テーブルおよび第5テーブルを用いて、データ格納制御プログラム320aを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納される必要はなく、処理に必要なデータのみがRAM340に格納されれば良い。
なお、上記したデータ格納制御プログラム320aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)複数種類の性能データそれぞれについて、ある種類の性能データの次に参照された割合を記憶する記憶部と、
クライアント装置が前記ある種類の性能データを参照した場合に、前記記憶部に記憶した前記複数種類の性能データそれぞれについての前記割合に基づいて、サーバ装置から収集した前記複数種類の性能データを記憶装置へ格納する格納順位を決定する決定部と
を有するデータ格納制御装置。
(付記2)前記記憶部は、前記性能データそれぞれについて、参照時間、優先度をさらに記憶し、
前記決定部は、前記参照された割合が高く、参照時間に対する経過時間の割合が大きいほど大きな値として各性能データの緊急度を算出し、前記性能データ毎に、算出された緊急度と前記記憶部に記憶された優先度を乗算した値の大きい順に格納順位を決定する
ことを特徴とする付記1記載のデータ格納制御装置。
(付記3) 前記決定部は、クライアント装置が前記ある種類の性能データを参照してからの経過時間が待機時間を経過する毎に次の待機時間をより短い時間に変更し、待機時間を経過する毎に、性能データ毎に所定の初期値に対して当該性能データの参照された割合の値を加算して各性能データの緊急度を算出する
ことを特徴とする付記2記載のデータ格納制御装置。
(付記4)コンピュータに、
前記記憶部に記憶された、複数種類の性能データそれぞれについて、ある種類の性能データの次に参照された割合に基づいて、クライアント装置が前記ある種類の性能データを参照した場合に、サーバ装置から収集した前記複数種類の性能データを記憶装置へ格納する格納順位を決定する
処理を実行させることを特徴とするデータ格納制御プログラム。
(付記5)前記格納順位を決定する処理は、前記参照された割合が高く、前記記憶部に記憶された参照時間に対する経過時間の割合が大きいほど大きな値として各性能データの緊急度を算出し、前記性能データ毎に、算出された緊急度と前記記憶部に記憶された優先度を乗算した値の大きい順に格納順位を決定する
ことを特徴とする付記4記載のデータ格納制御プログラム。
(付記6)前記格納順位を決定する処理は、クライアント装置が前記ある種類の性能データを参照してからの経過時間が待機時間を経過する毎に次の待機時間をより短い時間に変更し、待機時間を経過する毎に、性能データ毎に所定の初期値に対して当該性能データの参照された割合の値を加算して各性能データの緊急度を算出する
ことを特徴とする付記5記載のデータ格納制御プログラム。
(付記7)コンピュータが、
前記記憶部に記憶された、複数種類の性能データそれぞれについて、ある種類の性能データの次に参照された割合に基づいて、クライアント装置が前記ある種類の性能データを参照した場合に、サーバ装置から収集した前記複数種類の性能データを記憶装置へ格納する格納順位を決定する
処理を実行することを特徴とするデータ格納制御方法。
(付記8)前記格納順位を決定する処理は、前記参照された割合が高く、前記記憶部に記憶された参照時間に対する経過時間の割合が大きいほど大きな値として各性能データの緊急度を算出し、前記性能データ毎に、算出された緊急度と前記記憶部に記憶された優先度を乗算した値の大きい順に格納順位を決定する
ことを特徴とする付記7記載のデータ格納制御方法。
(付記9)前記格納順位を決定する処理は、クライアント装置が前記ある種類の性能データを参照してからの経過時間が待機時間を経過する毎に次の待機時間をより短い時間に変更し、待機時間を経過する毎に、性能データ毎に所定の初期値に対して当該性能データの参照された割合の値を加算して各性能データの緊急度を算出する
ことを特徴とする付記8記載のデータ格納制御方法。