以下に、本願の開示する管理装置、管理プログラムおよび管理方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
実施例1に係る管理装置について説明する。図1は、実施例1に係る管理装置が適用されるシステムの全体構成図の一例を示す図である。本実施例に係る管理装置10は、ネットワーク上のデータ、およびサーバからのデータの保存期間を管理する装置である。
図1に示すように、システム1は、管理装置10、ユーザ端末11、サービスシステム12、ネットワーク情報収集装置13、サーバ情報収集装置14、運用管理装置15、データ保存装置16、システム管理者用端末17を有する。
ユーザ端末11は、サービスシステム12によるサービスを受けるための端末である。ユーザ端末11は、サービスを受けるための指示をユーザから受け付ける受付部、およびサービスシステム12からのコンテンツをWebブラウザに表示する表示部を有する。受付部のデバイスの一例としては、ユーザの指示を受け付けるキーボードやマウスなどが挙げられる。表示部のデバイスの一例としては、サービスシステム12からのコンテンツを表示出力するLCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などが挙げられる。ユーザ端末11は、ユーザの指示を受け付けると、受け付けたユーザの指示をサービスシステム12に送信する。
サービスシステム12は、ユーザの指示に応じた情報処理を実行し、情報処理の処理結果をユーザ端末11に送信することで、ユーザの指示に応じたサービスをユーザに提供する。サービスシステム12は、ルータ12a、Webサーバ12b_1〜3、AP(Application)サーバ12c_1〜3、DB(DataBase)サーバ12d_1、2を有する。なお、図1の例では、Webサーバ、APサーバ、DBサーバのそれぞれの台数が、3台、3台、2台の場合が示されているが、各サーバの台数はこれに限られず、任意の値を採ることができる。また、以下の説明において、Webサーバの各々を区別して説明する必要がない場合には、単に「Webサーバ12b」と表記する。同様に、APサーバの各々、DBサーバの各々についても、区別して説明する必要がない場合には、単に「APサーバ12c」、「DBサーバ12d」と表記する。
ルータ12aは、ユーザ端末11と、Webサーバ12bとの通信を行う。また、ルータ12aは、いわゆるポートミラーリング機能を有する。例えば、ルータ12aは、Webサーバ12bに接続されたポートを経由するデータをコピーし、コピーしたデータに「重要データ」であることを示す情報を付加してネットワーク情報収集装置13に送信する。これにより、ネットワーク上を流れるデータを、ネットワーク情報収集装置13が収集可能となる。
Webサーバ12bは、Webブラウザで閲覧されるコンテンツを提供する。例えば、Webサーバ12bは、APサーバ12cから情報処理の処理結果を受信すると、処理結果を示すコンテンツを、ルータ12aを介してユーザ端末11に送信する。また、Webサーバ12bは、ルータ12aを介してユーザ端末11からユーザの指示を受信した場合には、指示が示す情報処理を実行するようにAPサーバ12cに要求する。また、Webサーバ12bは、運用管理装置15の指示によって、自身の状態を稼働状態、待機状態、休止状態のいずれかの状態に切り替える。
また、Webサーバ12bは、1分間隔で、1分間の間に受信したパケット数、1分間の間のCPU負荷の平均値を算出し、算出した測定データを「分毎データ」としてサーバ情報収集装置14に送信する。図2は、分毎データの一例を示す図である。図2の例の分毎データは、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時」であり、測定対象のサーバの名称が「Web1」であり、算出したCPU負荷が「70%」、1分間の間に受信したパケット数が「50」であることを示す。
APサーバ12cは、Webサーバ12bから要求された情報処理を実行する。また、APサーバ12cは、実行した情報処理の処理結果をWebサーバ12bに送信する。また、APサーバ12cは、Webサーバ12bから要求された情報処理に応じて、必要なデータを取得するために、データベースへのアクセス要求をDBサーバ12dに行う。また、APサーバ12cは、運用管理装置15の指示によって、サーバ自身の状態を稼働状態、待機状態、休止状態のいずれかの状態に切り替える。
また、APサーバ12cは、1時間間隔で、1時間の間に受信したパケット数、1時間のCPU負荷の平均値を算出し、算出した測定データを「時毎データ」としてサーバ情報収集装置14に送信する。図3は、時毎データの一例を示す図である。図3の例の時毎データは、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時5分」であり、測定対象のサーバの名称が「AP1」であり、算出したCPU負荷が「50%」、1時間の間に受信したパケット数が「10」であることを示す。
DBサーバ12dは、APサーバ12cからデータベースへのアクセス要求を受け付けた場合に、データベースへのアクセスを管理する。また、DBサーバ12dは、運用管理装置15の指示によって、サーバ自身の状態を稼働状態、待機状態、休止状態のいずれかの状態に切り替える。
また、DBサーバ12dは、1日間隔で、この1日の間に受信したパケット数、1日のCPU負荷の平均値を算出し、算出した測定データを「日毎データ」としてサーバ情報収集装置14に送信する。図4は、日毎データの一例を示す図である。図4の例の日毎データは、パケット数およびCPU負荷を算出した日時が「2010年8月10日12時」であり、測定対象のサーバの名称が「DB1」であり、算出したCPU負荷が「5%」、1日の間に受信したパケット数が「2」であることを示す。
ネットワーク情報収集装置13は、ネットワーク上を流れるデータを収集する。例えば、ネットワーク情報収集装置13は、上述したように、ルータ12aから、Webサーバ12bに接続されたポートを経由するデータを収集する。また、ネットワーク情報収集装置13は、収集したデータを管理装置10に送信する。なお、ネットワーク情報収集装置13は、データを管理装置10に送信する際の日時を、送信するデータに含める処理を行った後、日時が含まれたデータを管理装置10に送信する。
サーバ情報収集装置14は、サーバからの測定データを収集する。例えば、サーバ情報収集装置14は、Webサーバ12b、APサーバ12c、DBサーバ12dから送信された測定データを収集する。また、サーバ情報収集装置14は、収集したデータを管理装置10に送信する。
運用管理装置15は、各サーバの運用を管理する。例えば、運用管理装置15は、システム管理者用端末17からの状態変更指示を受信し、受信した状態変更指示に基づいて、状態を変更させるサーバに対して、状態変更指示が示す状態に切り替える指示を送信する。
データ保存装置16は、各種データを保存する。図5は、実施例1に係るデータ保存装置の構成の一例を示す図である。図5に示すように、データ保存装置16は、少なくとも記憶部16aを有する。記憶部16aは、測定データDB16bを記憶する。この測定データDB16bには、管理装置10およびシステム管理者用端末17がアクセス可能である。
測定データDB16bには、各種データが、データ種別ごとに定められた保存期間が経過した後、データ種別ごとに定められた閾値に、データサイズが達するまで保存される。例えば、測定データDB16bには、まずは、「分毎データ」が、「日時」が示す日から3ヶ月間保存される。また、測定データDB16bには、まずは、「時毎データ」が、「日時」が示す日から1年間保存される。また、測定データDB16bには、まずは、「日毎データ」が、「日時」が示す日から3年間保存される。なお、「重要データ」については、測定データDB16bに、期限の定めなく無期限に保存される。
測定データDB16bには、後述の格納部22aにより、ネットワーク情報収集装置13からのネットワーク情報を流れるデータ、およびサーバ情報収集装置14からの測定データが格納される。そして、データ種別ごとに定められた保存期間が経過した場合には、測定データDB16bに保存されたデータは、後述の判定部22cにより、データのサイズがデータ種別ごとに定められた閾値に達したと判定された場合に、次のように処理される。すなわち、後述の削除部22dにより、測定データDB16bから削除される。
ここで、上記の閾値の算出方法の一例について説明する。まず、測定データDB16bの全記憶容量から、測定データDB16bに保存された「重要データのサイズ」と「分毎データのサイズ」と「時毎データのサイズ」と「日時データのサイズ」との和を減じた値を余剰保存領域の大きさとする。ここで、「全記憶容量」、「重要データのサイズ」、「分毎データのサイズ」、「時毎データのサイズ」、「日時データのサイズ」、「余剰保存領域のサイズ」をそれぞれ、A、B、C、D、E、Fとすると、次の関係を満たす。すなわち、F=A−(B+C+D+E)となる。そして、余剰保存領域を、「分毎データ」、「時毎データ」、「日時データ」のそれぞれに、所定の比率で割り当てた値を、閾値として算出する。例えば、余剰保存領域の大きさを「分毎データ」、「時毎データ」、「日時データ」のそれぞれに、2:2:1の比率で割り当てた場合には、余剰保存領域には、次のように「分毎データ」が保存される。すなわち、余剰保存領域には、「分毎データ」が、そのサイズが余剰保存領域の大きさの2/5に達するまで保存される。また、余剰保存領域には、「時毎データ」が、そのサイズが余剰保存領域の大きさの2/5に達するまで保存される。また、余剰保存領域には、「日毎データ」が、そのサイズが余剰保存領域の大きさの1/5に達するまで保存される。なお、システムの設計者などは、データ種別の重要度などに応じて、重要なデータほど長く保存されるように、比率を設定することができる。例えば、設計者などは、重要なデータほど、比率を大きく設定することができる。
このように、測定データDB16bの全記憶領域が、各種データを保存するために使用される。そのため、各種データを保存する際に、余剰保存領域も使用される。このように、本実施例では、余剰保存領域も有効に使用される。
図6は、測定データDBの保存内容の一例を示す図である。図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時」であり、データ種別が「分毎データ」であるデータが、測定データDB16bのシーケンス番号「1」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「1」のレコードには、サーバ「Web1」が算出したCPU負荷が「70%」、1分の間に受信したパケット数が「20」であることを示す「分毎データ」が保存されていることを示す。
また、図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時」であり、データ種別が「分毎データ」であるデータが、測定データDB16bのシーケンス番号「2」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「2」のレコードには、サーバ「Web2」が算出したCPU負荷が「65%」、1日の間に受信したパケット数が「15」であることを示す「分毎データ」が保存されていることを示す。
また、図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時」であり、データ種別が「分毎データ」であるデータが、測定データDB16bのシーケンス番号「3」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「3」のレコードには、サーバ「Web3」が算出したCPU負荷が「10%」、1日の間に受信したパケット数が「1」であることを示す「分毎データ」が保存されていることを示す。
また、図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時5分」であり、データ種別が「時毎データ」であるデータが、測定データDB16bのシーケンス番号「4」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「4」のレコードには、サーバ「AP1」が算出したCPU負荷が「50%」、1日の間に受信したパケット数が「10」であることを示す「時毎データ」が保存されていることを示す。
また、図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時10分」であり、データ種別が「時毎データ」であるデータが、測定データDB16bのシーケンス番号「5」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「5」のレコードには、サーバ「AP2」が算出したCPU負荷が「40%」、1日の間に受信したパケット数が「8」であることを示す「時毎データ」が保存されていることを示す。
また、図6の例は、パケット数およびCPU負荷を算出した日時が「2010年8月10日10時20分」であり、データ種別が「日毎データ」であるデータが、測定データDB16bのシーケンス番号「6」のレコードに保存されていることを示す。また、図6の例では、測定データDB16bのシーケンス番号「6」のレコードには、サーバ「DB1」が算出したCPU負荷が「5%」、1日の間に受信したパケット数が「2」であることを示す「日毎データ」が保存されていることを示す。
また、図6の例は、データを送信した日時が「2010年8月10日10時00分」であり、データ種別が「重要データ」であるデータが、測定データDB16bのシーケンス番号「7」のレコードに保存されていることを示す。なお、図6には図示されていないが、このシーケンス番号「7」のレコードに保存されている「重要データ」には、データの送信元のIPアドレス、送信先のIPアドレス、要求内容など、障害の発生を特定するための情報が含まれている。
システム管理者用端末17は、サービスシステム12の各サーバの状態を管理する。また、測定データDB16bに保存されたデータの内容を表示させる指示を後述の受付部が受け付けると、システム管理者用端末17は、データ保存装置16の測定データDB16bにアクセスし、データの内容を後述の表示部に表示する。これにより、システム管理者用端末17は、システム管理者による、サービスシステム12のネットワークの通信状態および各サーバの動作状態の監視を可能にする。システム管理者用端末17は、サービスシステム12を管理するシステム管理者の指示を受け付ける受付部、および測定データDB16bのデータの内容を表示する表示部を有する。受付部のデバイスの一例としては、システム管理者の指示を受け付けるキーボードやマウスなどが挙げられる。表示部のデバイスの一例としては、測定データDB16bのデータの内容を表示出力するLCDやCRTなどが挙げられる。また、システム管理者用端末17は、システム管理者からサーバの状態を変更する状態変更指示を受け付けると、受け付けた状態変更指示を運用管理装置15に送信する。
[管理装置の構成]
管理装置10は、ネットワーク上のデータ、およびサービスシステム12に含まれるサーバからのデータの保存期間を管理する装置である。図7は、実施例1に係る管理装置の構成を示すブロック図である。図7に示すように、管理装置10は、I/F(InterFace)20と、記憶部21と、制御部22とを有する。
I/F20は、各装置間の通信を行うためのものである。I/F20には、ネットワーク情報収集装置13、サーバ情報収集装置14、運用管理装置15、データ保存装置16、システム管理者用端末17が接続されている。また、I/F20には制御部22が接続されている。これにより、各装置間、例えば、ネットワーク情報収集装置13、サーバ情報収集装置14、運用管理装置15、データ保存装置16およびシステム管理者用端末17のそれぞれと、制御部22とで、データの通信が可能となる。
記憶部21は、制御部22で実行される各種プログラム、例えばOS(Operating System)やそのプログラムの実行に必要なデータを記憶する。記憶部21には、後述の生成部22bにより生成されたインデクス21aが格納される。また、記憶部21は、データ種別ごとの第1のキューラベル21b、データ種別ごとの第2のキューラベル21c、設定表21dを記憶する。ここで、以下に説明するキューは、インデクス21a、第1のキューラベル21b、第2のキューラベル21cによって、仮想的に実現されるものである。
インデクス21aは、ネットワーク情報収集装置13、サーバ情報収集装置14からI/F20が受信したデータ毎に生成され、測定データDB16bに保存されたデータを管理するために用いられるものである。また、第1のキューラベル21bは、各種データを、データ種別ごとに定められた保存期間に応じて保存するための仮想的なキューの各種情報を示すものである。また、第2のキューラベル21cは、各種データを、データ種別ごとに定められた閾値に、サイズが達するまで保存するための仮想的なキューの各種情報を示すものである。
図8〜13は、インデクスおよび第1のキューラベルの一例を説明するための図である。図8〜13に示すように、インデクス21aは、対応するデータのデータ種別を示す「種別」を有する。また、インデクス21aは、同一のデータ種別のインデクス21aのうち、自身のインデクス21aよりも「日時」が1つ前のインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「前index」を有する。また、インデクス21aは、同一のデータ種別のインデクス21aのうち、自身のインデクス21aよりも「日時」が1つ後ろのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「後index」を有する。また、インデクス21aは、データに含まれるCPUなどが算出された日付、またはデータが送信された日付を示す「日時」を有する。また、インデクス21aは、対応するデータのデータサイズを示す「データサイズ」を有する。また、インデクス21aは、自身に対応するデータが保存された測定データDB16bのシーケンス番号を示す「DB格納情報」を有する。
また、図8〜13に示すように、第1のキューラベル21bは、データ種別ごとに定められた保存期間に応じて各種データを保存するためのキューの名称を示す「キュー名」を有する。また、第1のキューラベル21bは、自身が示すキューが、各種データをデータ種別ごとに定められた保存期間に応じて保存するためのキューであること(期間保存)、およびキューを介して管理されるデータの種別を示す「キュー種別」を有する。また、第1のキューラベル21bは、キューの先頭データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「先頭index」を有する。なお、キューの先頭データとは、キューに含まれるデータのうち、最も「日時」が古いデータを指す。また、第1のキューラベル21bは、キューの最後尾データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「最後尾index」を有する。なお、キューの最後尾データとは、キューに含まれるデータのうち、最も「日時」が新しいデータを指す。また、第1のキューラベル21bは、自身が示すキューに含まれるデータの、測定データDB16bに保存されたデータ量の総和を示す「キュー長(サイズ)」を有する。
図8のインデクス21aの例は、データ種別が「日毎データ」であることを示す。また、図8のインデクス21aの例は、前後のインデクス21aが存在しないことを示す。これは、図8の例では、インデクス21aの個数が1つだからである。また、図8のインデクス21aの例は、対応するデータの日時が2010年8月10日10時であることを示す。また、図8のインデクス21aの例は、対応するデータのデータサイズがXAであることを示す。また、図8のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号がA1であることを示す。
また、図8の第1のキューラベル21bの例は、自身が示すキューの名称がAであることを示す。また、図8の第1のキューラベル21bの例は、自身が示すキューが、各種データをデータ種別ごとに定められた保存期間に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「日毎データ」であることを示す。また、図8の第1のキューラベル21bの例は、キューの先頭データのアドレスがAAであり、キューの最後尾データのアドレスもAAであることを示す。このように、図8の例で、キューの先頭データおよび最後尾データのアドレスが同一となる理由は、インデクス21aの個数が1つであり、キューの先頭データおよび最後尾データのインデクス21aが同一となるからである。また、図8の第1のキューラベル21bの例は、自身が示すキューに含まれるデータ、すなわち、日毎データの測定データDB16bに保存されたデータ量の総和がXAであることを示す。
図9のインデクス21aの例は、図8の例に、新たに、インデクス21aが追加された場合のものである。まず、新たに追加された、図9中、左側のインデクス21aについて説明し、次に、右側のインデクス21aについて説明する。図9の左側のインデクス21aの例は、対応するデータのデータ種別が「日毎データ」であることを示す。また、図9の左側のインデクス21aの例は、前のインデクス21aのアドレスがAAであることを示す。また、図9の左側のインデクス21aの例は、対応するデータの日時が2010年8月11日10時であることを示す。また、図9の左側のインデクス21aの例は、対応するデータのデータサイズがXBであることを示す。また、図9の左側のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号がA2であることを示す。
また、図9の右側のインデクス21aの例は、後ろのインデクス21aのアドレスがABであることを示す。その他については、図8の例について説明した内容と同様である。
また、図9の第1のキューラベル21bの例は、自身が示すキューの先頭データのアドレスがAAであり、キューの最後尾データのアドレスがABであることを示す。また、図9の第1のキューラベル21bの例は、自身が示すキューに含まれるデータ、すなわち、日毎データの測定データDB16bに保存されたデータ量の総和がXCであることを示す。ここで、図9の例において、XC=XA+XBである。
図10のインデクス21aの例は、データ種別が「分毎データ」であることを示す。また、図10のインデクス21aの例は、前後のインデクス21aが存在しないことを示す。また、図10のインデクス21aの例は、対応するデータの日時が2010年8月10日10時であることを示す。また、図10のインデクス21aの例は、対応するデータのデータサイズがXDであることを示す。また、図10のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号がD1であることを示す。
また、図10の第1のキューラベル21bの例は、キューの名称がDであることを示す。また、図10の第1のキューラベル21bの例は、自身が示すキューが、各種データをデータ種別ごとに定められた保存期間に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「分毎データ」であることを示す。また、図10の第1のキューラベル21bの例は、自身が示すキューの先頭データのアドレスがDDであり、キューの最後尾データのアドレスもDDであることを示す。また、図10の第1のキューラベル21bの例は、キューに含まれるデータ、すなわち、分毎データの測定データDB16bに保存されたデータ量の総和がXDであることを示す。
図11のインデクス21aの例は、図10の例に、新たに、インデクス21aが追加された場合のものである。まず、新たに追加された、図11中、左側のインデクス21aについて説明し、次に、右側のインデクス21aについて説明する。図11の左側のインデクス21aの例は、対応するデータのデータ種別が「分毎データ」であることを示す。また、図11の左側のインデクス21aの例は、前のインデクス21aのアドレスがDDであることを示す。また、図11の左側のインデクス21aの例は、対応するデータの日時が2010年8月10日10時1分であることを示す。また、図11の左側のインデクス21aの例は、対応するデータのデータサイズがXEであることを示す。また、図11の左側のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号D2であることを示す。
また、図11の右側のインデクス21aの例は、後ろのインデクス21aのアドレスがDEであることを示す。その他については、図10の例について説明した内容と同様である。
また、図11の第1のキューラベル21bの例は、キューの先頭データのアドレスがDDであり、キューの最後尾データのアドレスがDEであることを示す。また、図11の第1のキューラベル21bの例は、キューに含まれるデータ、すなわち、分毎データの測定データDB16bに保存されたデータ量の総和がXFであることを示す。ここで、図11の例において、XF=XD+XEである。
図12のインデクス21aの例は、データ種別が「時毎データ」であることを示す。また、図12のインデクス21aの例は、前後のインデクス21aが存在しないことを示す。また、図12のインデクス21aの例は、対応するデータの日時が2010年8月10日10時であることを示す。また、図12のインデクス21aの例は、対応するデータのデータサイズがXGであることを示す。また、図12のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号G1であることを示す。
また、図12の第1のキューラベル21bの例は、自身が示すキューの名称がGであることを示す。また、図12の第1のキューラベル21bの例は、自身が示すキューが、各種データをデータ種別ごとに定められた保存期間に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「時毎データ」であることを示す。また、図12の第1のキューラベル21bの例は、自身が示すキューの先頭データのアドレスがGGであり、キューの最後尾データのアドレスもGGであることを示す。また、図12の第1のキューラベル21bの例は、自身が示すキューに含まれるデータ、すなわち、時毎データの測定データDB16bに保存されたデータ量の総和がXGであることを示す。
図13のインデクス21aの例は、図12の例に、新たに、インデクス21aが追加された場合のものである。まず、新たに追加された、図13中、左側のインデクス21aについて説明し、次に、右側のインデクス21aについて説明する。図13の左側のインデクス21aの例は、対応するデータのデータ種別が「時毎データ」であることを示す。また、図13の左側のインデクス21aの例は、前のインデクス21aのアドレスがGGであることを示す。また、図13の左側のインデクス21aの例は、対応するデータの日時が2010年8月10日11時00分であることを示す。また、図13の左側のインデクス21aの例は、対応するデータのデータサイズがXHであることを示す。また、図13の左側のインデクス21aの例は、対応するデータが保存された測定データDB16bのシーケンス番号がG2であることを示す。
また、図13の右側のインデクス21aの例は、後ろのインデクス21aのアドレスがGHであることを示す。その他については、図12の例について説明した内容と同様である。
また、図13の第1のキューラベル21bの例は、自身が示すキューの先頭データのアドレスがGGであり、キューの最後尾データのアドレスがGHであることを示す。また、図13の第1のキューラベル21bの例は、自身が示すキューに含まれるデータ、すなわち、時毎データの測定データDB16bに保存されたデータ量の総和がXIであることを示す。ここで、図13の例において、XI=XG+XHである。
上述したようなインデクス21aおよび第1のキューラベル21bにより、データ種別ごとの仮想的なキューに、インデクス21aが仮想的に格納されることとなる。なお、第1のキューラベル21bが示すキューからインデクス21aが取り出されるタイミングは、後述するように、インデクス21aの「日時」から、保存期間が経過したときである。
図14〜19は、第2のキューラベルの一例を説明するための図である。図14〜19に示すように、第2のキューラベル21cは、データ種別ごとに定められた閾値に、サイズが達するまで各種データを保存するためのキューの名称を示す「キュー名」を有する。また、第2のキューラベル21cは、自身が示すキューが、各種データをデータ種別ごとに定められた閾値に応じて保存するためのキューであること(サイズ)、およびキューを介して管理されるデータの種別を示す「キュー種別」を有する。また、第2のキューラベル21cは、自身が示すキューの先頭データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「先頭index」を有する。また、第2のキューラベル21cは、自身が示すキューの最後尾データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを示す「最後尾index」を有する。また、第2のキューラベル21cは、自身が示すキューに含まれるデータの、測定データDB16bに保存されたデータ量の総和を示す「キュー長(サイズ)」を有する。
図14の第2のキューラベル21cの例は、自身が示すキューの名称がJであることを示す。また、図14の第2のキューラベル21cの例は、自身が示すキューが、各種データをデータ種別ごとに定められた閾値に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「日毎データ」であることを示す。また、図14の第2のキューラベル21cの例は、キューの先頭データのアドレスがJJであり、キューの最後尾データのアドレスもJJであることを示す。また、図14の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、日毎データの測定データDB16bに保存されたデータ量の総和がXJであることを示す。
図15の第2のキューラベル21cの例は、キューの先頭データのアドレスがJJであり、キューの最後尾データのアドレスがJKであることを示す。また、図15の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、日毎データの測定データDB16bに保存されたデータ量の総和がXLであることを示す。ここで、図15の例において、XL=XJ+XKである。
図16の第2のキューラベル21cの例は、キューの名称がMであり、各種データをデータ種別ごとに定められた閾値に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「分毎データ」であることを示す。また、図16の第2のキューラベル21cの例は、キューの先頭データのアドレスがMMであり、キューの最後尾データのアドレスもMMであることを示す。また、図16の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、分毎データの測定データDB16bに保存されたデータ量の総和がXMであることを示す。
図17の第2のキューラベル21cの例は、キューの先頭データのアドレスがMMであり、キューの最後尾データのアドレスがMNであることを示す。また、図17の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、分毎データの測定データDB16bに保存されたデータ量の総和がXOであることを示す。ここで、図17の例において、XO=XM+XNである。
また、図18の第2のキューラベル21cの例は、キューの名称がPであり、各種データをデータ種別ごとに定められた閾値に応じて保存するためのキューであること、およびキューを介して管理されるデータの種別が「時毎データ」であることを示す。また、図18の第2のキューラベル21cの例は、キューの先頭データのアドレスがPPであり、キューの最後尾データのアドレスもPPであることを示す。また、図18の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、時毎データの測定データDB16bに保存されたデータ量の総和がXPであることを示す。
また、図19の第2のキューラベル21cの例は、キューの先頭データのアドレスがPPであり、キューの最後尾データのアドレスがPQであることを示す。また、図19の第2のキューラベル21cの例は、キューに含まれるデータ、すなわち、時毎データの測定データDB16bに保存されたデータ量の総和がXRであることを示す。ここで、図19の例において、XR=XP+XQである。
上述したようなインデクス21aおよび第2のキューラベル21cにより、データ種別毎の仮想的なキューに、インデクス21aが仮想的に格納されることとなる。なお、第2のキューラベル21cが示すキューからインデクス21aが仮想的に取り出されるタイミングは、後述するように、インデクス21aに対応するデータ種別のデータのデータサイズが、対応する閾値に達したときである。
設定表21dは、各種データの保存期間が設定され、また、各種データの閾値を算出する際に用いられる比率が設定された表である。図20は、設定表の一例を示す図である。図20の例では、「日毎データ」の保存期間は3年間である。また、図20の例では、「時毎データ」の保存期間は1年間である。また、図20の例では、「分毎データ」の保存期間は3ヶ月である。
また、図20の例は、余剰保存領域の大きさを「分毎データ」、「時毎データ」、「日時データ」のそれぞれに割り当てる比率が、2:2:1の比率である場合を示す。
記憶部21は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部21は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
制御部22は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図7に示すように、制御部22は、格納部22aと、生成部22bと、判定部22cと、削除部22dとを有する。
格納部22aは、測定データDB16bにデータを格納する。例えば、格納部22aは、ネットワーク情報収集装置13から送信され、I/F20で受信されたデータを、測定データDB16bに格納する。また、格納部22aは、サーバ情報収集装置14から送信され、I/F20で受信された測定データを、測定データDB16bに格納する。なお、格納部22aは、データが格納されていないレコードのうち、シーケンス番号が最も小さいレコードにデータを格納する。
生成部22bは、上述したインデクス21aを生成したり、更新したり、また、第1のキューラベル21b、第2のキューラベル21cを更新したりする。例えば、生成部22bは、I/F20を介してネットワーク情報収集装置13やサーバ情報収集装置14からのデータを受信するごとに、受信したデータに含まれる各種情報を用いてインデクス21aを生成する。例えば、生成部22bは、データに含まれる「データ種別」を、インデクス21aの「種別」に設定する。また、生成部22bは、「データ種別」が同一であるインデクス21aの「日時」の前後関係を判別し、「日時」が1つ前のインデクス21aのアドレスを「前index」に設定する。また、生成部22bは、データのデータサイズを、インデクス21aの「データサイズ」に設定する。また、生成部22bは、インデクス21aが記憶された記憶部21の記憶領域上のアドレスを、インデクス21aの「DB格納情報」に設定する。
また、生成部22bは、新たにインデクス21aを生成した場合には、次のような処理を行う。すなわち、生成部22bは、新たなインデクス21aと「データ種別」が同一であり、かつ、新たなインデクス21aより「日時」が1つ前のインデクス21aの「後index」に、新たなインデクス21aのアドレスを設定する。
また、例えば、生成部22bは、第1のキューラベル21bの「先頭index」にアドレスが設定されていない場合には、次のような処理を行う。すなわち、生成部22bは、第1のキューラベル21bが示すキューの先頭データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを、第1のキューラベル21bの「先頭index」に設定する。
また、生成部22bは、第1のキューラベル21bが示すキューの最後尾データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを、第1のキューラベル21bの「最後尾index」に設定する。また、生成部22bは、キューに含まれる各インデクス21aが示すデータの、測定データDB16bに保存されたデータ量の総和を算出し、算出した総和を第1のキューラベル21bの「キュー長(サイズ)」に設定する。
判定部22cは、測定データDB16bの保存期間が経過したデータについて、そのデータのデータサイズが閾値を超えたか否かを判定する。例えば、判定部22cは、まず、データ種別ごとに定められた所定時間間隔、例えば、データ種別が「分毎データ」である場合には15秒、データ種別が「時毎データ」である場合には15分ごとに下記に示す処理を行う。また、判定部22cは、データ種別が「日毎データ」である場合には6時間ごとに、下記に示す処理を行う。すなわち、判定部22cは、15秒ごとに、データ種別が「分毎データ」であるインデクス21aのうち、「日時」から3ヶ月が経過したインデクス21aがあるか否かを判定し、「日時」から3ヶ月が経過したインデクス21aを特定する。また、判定部22cは、15分ごとに、データ種別が「時毎データ」であるインデクス21aのうち、「日時」から1年が経過したインデクス21aがあるか否かを判定し、「日時」から1年が経過したインデクス21aを特定する。また、判定部22cは、15分ごとに、データ種別が「日毎データ」であるインデクス21aのうち、「日時」から3年が経過したインデクス21aがあるか否かを判定し、「日時」から3年が経過したインデクス21aを特定する。
そして、判定部22cは、「日時」から3ヶ月が経過した、「分毎データ」のインデクス21aを、「分毎データ」に対応する第2のキューラベル21cが示すキューの最後尾データとする。ここで、以下の説明では、「日時」から3ヶ月が経過した、「分毎データ」のインデクス21aを「経過インデクス(分毎)」と表記する。具体例を挙げて説明する。判定部22cは、経過インデクス(分毎)に対して、分毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「分毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(分毎)の「前index」に設定する。また、判定部22cは、経過インデクス(分毎)のアドレスを、分毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「分毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。これにより、経過インデクス(分毎)が、「分毎データ」を3ヶ月間保存するための仮想的なキューから、仮想的に取り出され、「分毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューに、仮想的に格納される。なお、判定部22cは、余剰保存領域を算出し、設定表21dの「分毎データ」に対する比率を用いて、所定の閾値を算出する。例えば、図20の例の設定表21dを用いた場合には、判定部22cは、「分毎データ」に対応する閾値として、余剰保存領域の大きさの2/5を算出する。
また、判定部22cは、「分毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(分毎)の「データサイズ」を減算する。このように、「分毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から経過インデクス(分毎)の「データサイズ」を減算するのは、第1のキューラベル21bが示すキューから経過インデクス(分毎)が仮想的に取り出されたからである。
また、判定部22cは、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(分毎)の「データサイズ」を加算する。このように、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(分毎)の「データサイズ」を加算するのは、次の理由による。すなわち、第2のキューラベル21cが示すキューに、経過インデクス(分毎)に対応するインデクス21aが仮想的に格納されたからである。
また、判定部22cは、「分毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「分毎データ」を3ヶ月間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「分毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する。このように、かかるアドレスを、「分毎データ」に対応する第1のキューラベル21bの「先頭index」に設定するのは、キューから経過インデクス(分毎)が仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
また、判定部22cは、「分毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「分毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「分毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する。このように、「分毎データ」に対応する第2のキューラベル21cの「最後尾index」のアドレスを再設定するのは、キューの最後尾にインデクス21aが仮想的に格納され、キューの最後尾のインデクス21aが変更されたからである。
また、判定部22cは、所定時間間隔で、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「分毎データ」に対応する閾値を超えたか否かを判定する。これにより、余剰保存領域に保存された「分毎データ」のサイズが、「分毎データ」に対応する閾値に達したか否かが判定される。
また、判定部22cは、「日時」から1年が経過した、「時毎データ」のインデクス21aを、「時毎データ」に対応する第2のキューラベル21cが示すキューの最後尾データとする。ここで、以下の説明では、「日時」から1年が経過した、「時毎データ」のインデクス21aを「経過インデクス(時毎)」と表記する。具体例を挙げて説明する。判定部22cは、経過インデクス(時毎)に対して、時毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「時毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(時毎)の「前index」に設定する。また、判定部22cは、経過インデクス(時毎)のアドレスを、時毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「時毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。これにより、経過インデクス(時毎)が、「時毎データ」を1年間保存するための仮想的なキューから、仮想的に取り出され、「時毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューに、仮想的に格納される。なお、判定部22cは、余剰保存領域を算出し、設定表21dの「時毎データ」に対する比率を用いて、所定の閾値を算出する。例えば、図20の例の設定表21dを用いた場合には、判定部22cは、「時毎データ」に対応する閾値として、余剰保存領域の大きさの2/5を算出する。
また、判定部22cは、「時毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(時毎)の「データサイズ」を減算する。このように、「時毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から経過インデクス(時毎)の「データサイズ」を減算するのは、第1のキューラベル21bが示すキューから経過インデクス(時毎)が仮想的に取り出されたからである。
また、判定部22cは、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(時毎)の「データサイズ」を加算する。このように、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(時毎)の「データサイズ」を加算するのは、次の理由による。すなわち、第2のキューラベル21cが示すキューに、経過インデクス(時毎)に対応するインデクス21aが仮想的に格納されたからである。
また、判定部22cは、「時毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「時毎データ」を1年間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「時毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する。このように、かかるアドレスを、「時毎データ」に対応する第1のキューラベル21bの「先頭index」に設定するのは、キューから経過インデクス(時毎)が仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
また、判定部22cは、「時毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「時毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「時毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する。このように、「時毎データ」に対応する第2のキューラベル21cの「最後尾index」のアドレスを再設定するのは、キューの最後尾にインデクス21aが仮想的に格納され、キューの最後尾のインデクス21aが変更されたからである。
また、判定部22cは、所定時間間隔で、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「時毎データ」に対応する閾値を超えたか否かを判定する。これにより、余剰保存領域に保存された「時毎データ」のサイズが、「時毎データ」に対応する閾値に達したか否かが判定される。
また、判定部22cは、「日時」から3年が経過した、「日毎データ」のインデクス21aを、「日毎データ」に対応する第2のキューラベル21cが示すキューの最後尾データとする。ここで、以下の説明では、「日時」から3年が経過した、「日毎データ」のインデクス21aを「経過インデクス(日毎)」と表記する。具体例を挙げて説明する。判定部22cは、経過インデクス(日毎)に対して、日毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「日毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(日毎)の「前index」に設定する。また、判定部22cは、経過インデクス(日毎)のアドレスを、日毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「日毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。これにより、経過インデクス(日毎)が、「日毎データ」を3年間保存するための仮想的なキューから、仮想的に取り出され、「日毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューに、仮想的に格納される。なお、判定部22cは、余剰保存領域を算出し、設定表21dの「日毎データ」に対する比率を用いて、所定の閾値を算出する。例えば、図20の例の設定表21dを用いた場合には、判定部22cは、「日毎データ」に対応する閾値として、余剰保存領域の大きさの1/5を算出する。
また、判定部22cは、「日毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(日毎)の「データサイズ」を減算する。このように、「日毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から経過インデクス(日毎)の「データサイズ」を減算するのは、第1のキューラベル21bが示すキューから経過インデクス(日毎)が仮想的に取り出されたからである。
また、判定部22cは、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(日毎)の「データサイズ」を加算する。このように、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(日毎)の「データサイズ」を加算するのは、次の理由による。すなわち、第2のキューラベル21cが示すキューに、経過インデクス(日毎)に対応するインデクス21aが仮想的に格納されたからである。
また、判定部22cは、「日毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「日毎データ」を1年間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「日毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する。このように、かかるアドレスを、「日毎データ」に対応する第1のキューラベル21bの「先頭index」に設定するのは、キューから経過インデクス(日毎)が仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
また、判定部22cは、「日毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「日毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「日毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する。このように、「日毎データ」に対応する第2のキューラベル21cの「最後尾index」のアドレスを再設定するのは、キューの最後尾にインデクス21aが仮想的に格納され、キューの最後尾のインデクス21aが変更されたからである。
また、判定部22cは、所定時間間隔で、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「日毎データ」に対応する閾値を超えたか否かを判定する。これにより、余剰保存領域に保存された「日毎データ」のサイズが、「日毎データ」に対応する閾値に達したか否かが判定される。
削除部22dは、データ種別ごとに定められた閾値に達したデータのサイズが、閾値より小さくなるように、閾値に達したデータ種別のデータを測定データDB16bから削除する。一例としては、削除部22dは、データのサイズが閾値より小さくなるように、「日付」が古いデータから順に削除する。
例えば、削除部22dは、判定部22cにより、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「分毎データ」に対応する閾値を超えたと判定された場合には、次のような処理を行う。すなわち、削除部22dは、「分毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aに対応するデータを、測定データDB16bから削除する。具体例を挙げて説明すると、削除部22dは、かかる「先頭index」が示すインデクス21aの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する。
また、削除部22dは、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」から、「分毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aの「データサイズ」を減算する。これは、次に説明するように、「分毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出されるからである。
また、削除部22dは、「分毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aを記憶部21から削除する。これにより、「分毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出される。
また、削除部22dは、「分毎データ」に対応する第2のキューラベル21cが示すキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、削除部22dは、このアドレスを、「分毎データ」に対応する第2のキューラベル21cの「先頭index」に設定する。このように、かかるアドレスを、「分毎データ」に対応する第2のキューラベル21cの「先頭index」に再設定するのは、キューからインデクス21aが仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
また、削除部22dは、判定部22cにより、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「時毎データ」に対応する閾値を超えたと判定された場合には、次のような処理を行う。すなわち、削除部22dは、「時毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aに対応するデータを、測定データDB16bから削除する。具体例を挙げて説明すると、削除部22dは、かかる「先頭index」が示すインデクス21aの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する。
また、削除部22dは、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」から、「時毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aの「データサイズ」を減算する。これは、次に説明するように、「時毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出されるからである。
また、削除部22dは、「時毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aを記憶部21から削除する。これにより、「時毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出される。
また、削除部22dは、「時毎データ」に対応する第2のキューラベル21cが示すキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、削除部22dは、このアドレスを、「時毎データ」に対応する第2のキューラベル21cの「先頭index」に設定する。このように、かかるアドレスを、「時毎データ」に対応する第2のキューラベル21cの「先頭index」に再設定するのは、キューからインデクス21aが仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
また、削除部22dは、判定部22cにより、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」が、「日毎データ」に対応する閾値を超えたと判定された場合には、次のような処理を行う。すなわち、削除部22dは、「日毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aに対応するデータを、測定データDB16bから削除する。具体例を挙げて説明すると、削除部22dは、かかる「先頭index」が示すインデクス21aの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する。
また、削除部22dは、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」から、「日毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aの「データサイズ」を減算する。これは、次に説明するように、「日毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出されるからである。
また、削除部22dは、「日毎データ」に対応する第2のキューラベル21cの「先頭index」が示すインデクス21aを記憶部21から削除する。これにより、「日毎データ」に対応する第2のキューラベル21cが示す仮想的なキューから、「先頭index」が示すインデクス21aが仮想的に取り出される。
また、削除部22dは、「日毎データ」に対応する第2のキューラベル21cが示すキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、削除部22dは、このアドレスを、「日毎データ」に対応する第2のキューラベル21cの「先頭index」に設定する。このように、かかるアドレスを、「日毎データ」に対応する第2のキューラベル21cの「先頭index」に再設定するのは、キューからインデクス21aが仮想的に取り出され、キューの先頭のインデクス21aが変更されたからである。
制御部22は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
ここで、管理装置10の動作の一例について説明する。図21は、管理装置の動作の一例を模式的に示す図である。図21に示すように、管理装置10は、ネットワーク情報収集装置13、サーバ情報収集装置14からデータを受信すると、受信したデータを測定データDB16bに格納する。また、管理装置10は、受信したデータのデータ種別が「分毎データ」である場合には、「分毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー30に、インデクス21aを仮想的に格納する。また、管理装置10は、受信したデータのデータ種別が「時毎データ」である場合には、「時毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー31に、インデクス21aを仮想的に格納する。また、管理装置10は、受信したデータのデータ種別が「日毎データ」である場合には、「日毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー32に、インデクス21aを仮想的に格納する。
そして、図21に示すように、キュー30のインデクス21aの保存期間が、所定の期間、例えば、3ヶ月経過した場合には、管理装置10は、インデクス21aをキュー30から仮想的に取り出す。また、キュー31のインデクス21aの保存期間が、所定の期間、例えば、1年経過した場合には、管理装置10は、インデクス21aをキュー31から仮想的に取り出す。また、キュー32のインデクス21aの保存期間が、所定の期間、例えば、3年経過した場合には、管理装置10は、インデクス21aをキュー32から仮想的に取り出す。
そして、管理装置10は、キュー30から取り出したインデクス21aを、「分毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー33に仮想的に格納する。また、管理装置10は、キュー31から取り出したインデクス21aを、「時毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー34に仮想的に格納する。また、管理装置10は、キュー32から取り出したインデクス21aを、「日毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー35に仮想的に格納する。
そして、キュー33のインデクス21aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置10は、インデクス21aをキュー33から仮想的に取り出す。また、キュー34のインデクス21aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置10は、インデクス21aをキュー34から仮想的に取り出す。また、キュー35のインデクス21aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置10は、インデクス21aをキュー35から仮想的に取り出す。そして、管理装置10は、取り出したインデクス21aに対応するデータを測定データDB16bから削除する。
このように、本実施例の管理装置10は、測定データDB16bの全記憶領域を、各種データを保存するために使用することができる。すなわち、本実施例の管理装置10は、各種データを保存する際に、余剰保存領域も使用する。したがって、本実施例の管理装置10によれば、余剰保存領域を有効に使用することができる。
[処理の流れ]
次に、本実施例に係る管理装置10の処理の流れを説明する。以下の図22〜27で説明する各処理は、各々独立して実行される。図22は、実施例1に係る格納処理の手順を示すフローチャートである。この格納処理は、管理装置10の電源がONの間、繰り返し実行される。
図22に示すように、I/F20を介してネットワーク情報収集装置13やサーバ情報収集装置14からのデータを受信した場合(ステップS101肯定)に、格納部22aは、受信したデータを測定データDB16bに格納する(ステップS102)。生成部22bは、受信したデータに含まれる各種情報を用いてインデクス21aを生成する(ステップS103)。
生成部22bは、新たに生成したインデクス21aと「データ種別」が同一であり、かつ、新たなインデクス21aより「日時」が1つ前のインデクス21aの「後index」に、新たなインデクス21aのアドレスを設定する(ステップS104)。生成部22bは、キューに含まれる各インデクス21aが示すデータの、測定データDB16bに保存されたデータ量の総和を算出し、算出した総和を第1のキューラベル21bの「キュー長(サイズ)」に設定する(ステップS105)。生成部22bは、第1のキューラベル21bが示すキューの先頭データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを、第1のキューラベル21bの「先頭index」に設定する(ステップS106)。なお、ステップS106の処理は、第1のキューラベル21bの「先頭index」にアドレスが設定されている場合には、省略することができる。生成部22bは、第1のキューラベル21bが示すキューの最後尾データのインデクス21aが記憶された記憶部21の記憶領域上のアドレスを、第1のキューラベル21bの「最後尾index」に設定し(ステップS107)、ステップS101に戻る。
図23は、実施例1に係る分毎データの第1の判定処理の手順を示すフローチャートである。この分毎データの第1の判定処理は、管理装置10の電源がONの間、実行される。
図23に示すように、判定部22cは、タイマーをスタートする(ステップS201)。判定部22cは、タイマーが示す時間が15秒を超えたか否かを判定する(ステップS202)。タイマーが示す時間が15秒を超えた場合(ステップS202肯定)には、判定部22cは、タイマーをリセットする(ステップS203)。
判定部22cは、今回タイマーがリセットされてから、後述のステップS205において、次のようなインデクス21aがあるか否かを判定する。すなわち、判定部22cは、「分毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aがあるか否かを判定する(ステップS204)。「日時」が未確認のインデクスがない場合(ステップS204否定)には、ステップS201に戻る。一方、「日時」が未確認のインデクスがある場合(ステップS204肯定)には、判定部22cは、次のような処理を行う。すなわち、判定部22cは、「分毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aの「日時」を確認する(ステップS205)。
判定部22cは、確認した「日時」から3ヶ月が経過しているか否かを判定する(ステップS206)。確認した「日時」から3ヶ月が経過していない場合(ステップS206否定)には、判定部22cは、ステップS204に戻る。一方、確認した「日時」から3ヶ月が経過した場合(ステップS206肯定)には、判定部22cは、インデクス21aを修正する(ステップS207)。具体例を挙げて説明する。判定部22cは、経過インデクス(分毎)に対して、分毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「分毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(分毎)の「前index」に設定する。また、判定部22cは、経過インデクス(分毎)のアドレスを、分毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「分毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。
判定部22cは、「分毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(分毎)の「データサイズ」を減算する(ステップS208)。判定部22cは、「分毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(分毎)の「データサイズ」を加算する(ステップS209)。
判定部22cは、「分毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「分毎データ」を1年間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「分毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する(ステップS210)。
判定部22cは、「分毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「分毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「分毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する(ステップS211)。そして、ステップS204に戻る。
図24は、実施例1に係る時毎データの第1の判定処理の手順を示すフローチャートである。この時毎データの第1の判定処理は、管理装置10の電源がONの間、実行される。
図24に示すように、判定部22cは、タイマーをスタートする(ステップS301)。判定部22cは、タイマーが示す時間が15分を超えたか否かを判定する(ステップS302)。タイマーが示す時間が15分を超えた場合(ステップS302肯定)には、判定部22cは、タイマーをリセットする(ステップS303)。
判定部22cは、今回タイマーがリセットされてから、後述のステップS305において、次のようなインデクス21aがあるか否かを判定する。すなわち、判定部22cは、「時毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aがあるか否かを判定する(ステップS304)。「日時」が未確認のインデクスがない場合(ステップS304否定)には、ステップS301に戻る。一方、「日時」が未確認のインデクスがある場合(ステップS304肯定)には、判定部22cは、次のような処理を行う。すなわち、判定部22cは、「時毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aの「日時」を確認する(ステップS305)。
判定部22cは、確認した「日時」から1年が経過しているか否かを判定する(ステップS306)。確認した「日時」から1年が経過していない場合(ステップS306否定)には、判定部22cは、ステップS304に戻る。一方、確認した「日時」から1年が経過した場合(ステップS306肯定)には、判定部22cは、インデクス21aを修正する(ステップS307)。具体例を挙げて説明する。判定部22cは、経過インデクス(時毎)に対して、時毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「時毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(時毎)の「前index」に設定する。また、判定部22cは、経過インデクス(時毎)のアドレスを、時毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「時毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。
判定部22cは、「時毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(時毎)の「データサイズ」を減算する(ステップS308)。判定部22cは、「時毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(時毎)の「データサイズ」を加算する(ステップS309)。
判定部22cは、「時毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「時毎データ」を3ヶ月間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「時毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する(ステップS310)。
判定部22cは、「時毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「時毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「時毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する(ステップS311)。そして、ステップS304に戻る。
図25は、実施例1に係る日毎データの第1の判定処理の手順を示すフローチャートである。この日毎データの第1の判定処理は、管理装置10の電源がONの間、実行される。
図25に示すように、判定部22cは、タイマーをスタートする(ステップS401)。判定部22cは、タイマーが示す時間が6時間を超えたか否かを判定する(ステップS402)。タイマーが示す時間が6時間を超えた場合(ステップS402肯定)には、判定部22cは、タイマーをリセットする(ステップS403)。
判定部22cは、今回タイマーがリセットされてから、後述のステップS405において、次のようなインデクス21aがあるか否かを判定する。すなわち、判定部22cは、「日毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aがあるか否かを判定する(ステップS404)。「日時」が未確認のインデクスがない場合(ステップS404否定)には、ステップS401に戻る。一方、「日時」が未確認のインデクスがある場合(ステップS404肯定)には、判定部22cは、次のような処理を行う。すなわち、判定部22cは、「日毎データ」に対応する第1のキューラベル21bが示すキューに含まれるインデクス21aであって「日時」が未確認のインデクス21aの「日時」を確認する(ステップS405)。
判定部22cは、確認した「日時」から3年が経過しているか否かを判定する(ステップS406)。確認した「日時」から3年が経過していない場合(ステップS406否定)には、判定部22cは、ステップS404に戻る。一方、確認した「日時」から3年が経過した場合(ステップS406肯定)には、判定部22cは、インデクス21aを修正する(ステップS407)。具体例を挙げて説明する。判定部22cは、経過インデクス(日毎)に対して、日毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「日毎データ」であり、かつ「日時」が1つ前のインデクス21aのアドレスを用いて、次の処理を行う。すなわち、判定部22cは、かかるアドレスを経過インデクス(日毎)の「前index」に設定する。また、判定部22cは、経過インデクス(日毎)のアドレスを、日毎データに対応する第2のキューラベル21cが示すキューのインデクス21aであって「種別」が「日毎データ」であり、かつ「日時」が1つ前のインデクス21aの「後index」に設定する。
判定部22cは、「日毎データ」に対応する第1のキューラベル21bの「キュー長(サイズ)」から、経過インデクス(日毎)の「データサイズ」を減算する(ステップS408)。判定部22cは、「日毎データ」に対応する第2のキューラベル21cの「キュー長(サイズ)」に、経過インデクス(日毎)の「データサイズ」を加算する(ステップS409)。
判定部22cは、「日毎データ」に対応する第1のキューラベル21bが示すキュー、すなわち「日毎データ」を3年間保存するための仮想的なキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、判定部22cは、このアドレスを、「日毎データ」に対応する第1のキューラベル21bの「先頭index」に設定する(ステップS410)。
判定部22cは、「日毎データ」に対応する第2のキューラベル21cが示すキュー、すなわち「日毎データ」のサイズが所定の閾値に達するまで保存するための仮想的なキューの最後尾データのインデクス21aのアドレスを用いて次のような処理を行う。すなわち、判定部22cは、このアドレスを、「日毎データ」に対応する第2のキューラベル21cの「最後尾index」に設定する(ステップS411)。そして、ステップS404に戻る。
図26は、実施例1に係る第2の判定処理の手順を示すフローチャートである。この第2の判定処理は、管理装置10の電源がONの間、実行される。
図26に示すように、判定部22cは、現在の時刻が、確認タイミングであるか否かを判定する(ステップS501)。このような確認タイミングとしては、所定時間間隔ごとのタイミング、例えば、1分毎のタイミングが挙げられる。
現在の時刻が、確認タイミングである場合(ステップS501肯定)には、判定部22cは、次のような処理を行う。判定部22cは、分毎データ、時毎データ、日毎データのそれぞれに対応する第1のキューラベル21bの「キュー長」と、「重要データ」のデータサイズとの総和を算出する(ステップS502)。
判定部22cは、測定データDB16bの全記憶容量から、ステップS502で算出した総和を減算し、余剰保存領域の大きさを算出する(ステップS503)。判定部22cは、余剰保存領域の大きさを設定表21dの比率に基づいて、データ種別ごとに分配する(ステップS504)。なお、データ種別ごとに分配された余剰保存領域の大きさが、データ種別毎の閾値となる。
判定部22cは、今回、ステップS504で余剰保存領域の大きさがデータ種別ごとに分配されてから、後述のステップS506で「キュー長」が確認されていない第2のキューラベル21cがあるか否かを判定する(ステップS505)。後述のステップS506で「キュー長」が確認されていない第2のキューラベル21cがない場合(ステップS505否定)には、ステップS501に戻る。一方、後述のステップS506で「キュー長」が確認されていない第2のキューラベル21cがある場合(ステップS505肯定)には、判定部22cは、「キュー長」が未確認の第2のキューラベル21cの「キュー長」を確認する(ステップS506)。
判定部22cは、確認した「キュー長」が、データ種別毎に定められた閾値を超えているか否かを判定する(ステップS507)。確認した「キュー長」が、データ種別毎に定められた閾値を超えていない場合(ステップS507否定)には、ステップS505に戻る。一方、確認した「キュー長」が、データ種別毎に定められた閾値を超えている場合(ステップS507肯定)には、判定部22cは、次のような処理を行う。すなわち、判定部22cは、閾値を超えている第2のキューラベル21cの先頭のインデクス21aを特定し、特定したインデクス21aを制御部22の内部メモリに格納し(ステップS508)、ステップS505に戻る。
図27は、実施例1に係る削除処理の手順を示すフローチャートである。この削除処理は、上述したステップS508でインデクス21aが特定されるたびに実行される。
図27に示すように、削除部22dは、特定されたインデクス21aの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する(ステップS601)。削除部22dは、対応する第2のキューラベル21cの「キュー長(サイズ)」から、特定されたインデクス21aの「データサイズ」を減算する(ステップS602)。
削除部22dは、特定されたインデクス21aを記憶部21から削除する(ステップS603)。削除部22dは、対応する第2のキューラベル21cが示すキューの先頭データのインデクス21aのアドレスを用いて、次のような処理を行う。すなわち、削除部22dは、このアドレスを、対応する第2のキューラベル21cの「先頭index」に設定し(ステップS604)、処理を終了する。
[実施例1の効果]
上述してきたように、本実施例の管理装置10は、保存期間経過後に第2のキューラベル21cを用いてデータを管理するので、測定データDB16bの全記憶領域を、各種データを保存するために使用することができる。すなわち、本実施例の管理装置10は、各種データを保存する際に、余剰保存領域も使用する。したがって、本実施例の管理装置10によれば、余剰保存領域を有効に使用することができる。
さて、上記の実施例1では、データの保存期間経過後、第2のキューラベル21cが示すキューに含まれるデータのデータサイズの総和が、閾値に達した場合に、データを削除する場合を例示したが、開示の管理装置はこれに限定されない。そこで、実施例2では、待機状態や休止状態のサーバから送信された測定データについては、重要なデータでないため、測定データDB16bからの削除のタイミングを実施例1よりも早くする場合について説明する。このようにすることで、重要度の低いデータを優先的に削除することができる。ここで、本実施例では、運用管理装置15は、サーバの状態が変更されるたびに、Webサーバ12b、APサーバ12c、DBサーバ12dの状態を管理装置10に通知する。
[管理装置の構成]
図28は、実施例2に係る管理装置の構成を示すブロック図である。図28に示すように、管理装置40は、I/F20、記憶部41および制御部42を有する。かかる記憶部41は、図7に示す実施例1に係る記憶部21に比較して、インデクス41aおよび第3のキューラベル41bを記憶する点、および後述の生成部42aにより生成されたダミーインデクス41cが格納される点が異なる。また、かかる制御部42は、図7に示す実施例1に係る制御部22に比較して、生成部42a、判定部42b、削除部42cを有する点が異なる。なお、以下では、上記の実施例1と同様の機能を果たす各部については図7と同様の符号を付し、その説明は省略する。
図29は、実施例2に係るインデクス、第3のキューラベル、ダミーインデクスの一例を説明するための図である。図29に示すように、インデクス41aは、上述したインデクス21aの内容に加えて、ダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを示す「ダミーへのポインタ」を有する。
また、図29に示すように、第3のキューラベル41bは、重要でないデータ(非重要データ)の保存を管理するためのキューの名称を示す「キュー名」を有する。このような重要でないデータとしては、例えば、待機状態、休止状態のサーバから送信された測定データが挙げられる。また、第3のキューラベル41bは、自身が示すキューが、非重要データを保存するためのキューであること(非重要)を示す「キュー種別」を有する。また、第3のキューラベル41bは、キューの先頭データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを示す「先頭index」を有する。なお、キューの先頭データとは、キューに含まれるデータのうち、最も「日時」が古いデータを指す。また、第3のキューラベル41bは、キューの最後尾データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを示す「最後尾index」を有する。なお、キューの最後尾データとは、キューに含まれるデータのうち、最も「日時」が新しいデータを指す。また、第3のキューラベル41bは、自身が示すキューに含まれるデータの、測定データDB16bに保存されたデータ量の総和を示す「キュー長(サイズ)」を有する。
ダミーインデクス41cは、対応するデータのデータ種別を示す「種別」を有する。また、ダミーインデクス41cは、同一のデータ種別のダミーインデクス41cのうち、自身のダミーインデクス41cよりも「日時」が1つ前のダミーインデクス41cが記憶された記憶部21の記憶領域上のアドレスを示す「前index」を有する。また、ダミーインデクス41cは、同一のデータ種別のダミーインデクス41cのうち、自身のダミーインデクス41cよりも「日時」が1つ後ろのダミーインデクス41cが記憶された記憶部21の記憶領域上のアドレスを示す「後index」を有する。また、ダミーインデクス41cは、対応するインデクス41aのアドレスを示す「実インデクスへのポインタ」を有する。また、ダミーインデクス41cは、データに含まれるCPUなどが算出された日付、またはデータが送信された日付を示す「日時」を有する。また、ダミーインデクス41cは、対応するデータのデータサイズを示す「データサイズ」を有する。また、ダミーインデクス41cは、自身に対応するデータが保存された測定データDB16bのシーケンス番号を示す「DB格納情報」を有する。
記憶部41は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部41は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
生成部42aは、実施例1に係る生成部22bが行う処理に加え、次に示す処理を行う。すなわち、生成部42aは、対応するインデクス41aのアドレスを「実インデクスへのポインタ」に設定することで、上述したインデクス41aを生成したり、更新したりする。また、生成部42aは、第1のキューラベル21b、第2のキューラベル21c、第3のキューラベル41bを更新したりする。例えば、生成部42aは、I/F20を介してネットワーク情報収集装置13やサーバ情報収集装置14からのデータを受信するごとに、実施例1に係る生成部22bと同様に、受信したデータに含まれる各種情報を用いてインデクス41aを生成する。
また、生成部42aは、サーバ情報収集装置14およびI/F20を介して、待機状態、休止状態のサーバから送信された測定データを受信した場合には、対応する第3のキューラベル41bにより管理されるダミーインデクス41cを生成する。このダミーインデクス41cの「実インデクスへのポインタ」には、対応するインデクス41aのアドレスが設定される。また、生成部42aは、サーバ情報収集装置14およびI/F20を介して、待機状態、休止状態のサーバから送信された測定データを受信した場合には、インデクス41aの「ダミーへのポインタ」に、対応するダミーインデクス41cのアドレスを設定する。このように、待機状態、休止状態のサーバから送信された測定データを受信した場合には、生成部42aは、「実インデクスへのポインタ」および「ダミーへのポインタ」を設定することで、インデクス41aとダミーインデクス41cとをリンク付けする。なお、どのサーバが待機状態であるか、休止状態であるかについての情報は、運用管理装置15から通知されるサーバの状態に基づいて、生成部42aは認識できるものとする。
また、生成部42aは、第3のキューラベル41bの「先頭index」にアドレスが設定されていない場合には、次のような処理を行う。すなわち、生成部42aは、第3のキューラベル41bが示すキューの先頭データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを、第3のキューラベル41bの「先頭index」に設定する。
また、生成部42aは、第3のキューラベル41bが示すキューの最後尾データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを、第3のキューラベル41bの「最後尾index」に設定する。また、生成部42aは、キューに含まれる各ダミーインデクス41cが示すデータの、測定データDB16bに保存されたデータ量の総和を算出し、算出した総和を第3のキューラベル41bの「キュー長(サイズ)」に設定する。
判定部42bは、実施例1に係る判定部22cが行う処理に加え、次のような処理を行う。例えば、判定部42bは、所定時間間隔で、第3のキューラベル41bの「キュー長(サイズ)」が、閾値を超えたか否かを判定する。これにより、余剰保存領域に保存された非重要データのサイズが、閾値に達したか否かが判定される。なお、判定部42bは、余剰保存領域を算出し、所定の比率を用いて、閾値を算出する。例えば、判定部42bは、所定の比率「余剰保存領域の全領域:非重要データのサイズ=5:1」を用いた場合には、閾値として、余剰保存領域の大きさの1/5を算出する。
削除部42cは、実施例1に係る削除部22dが行う処理に加え、次のような処理を行う。例えば、削除部42cは、閾値に達した非重要データのサイズが、閾値より小さくなるように、閾値に達した非重要データを測定データDB16bから削除する。一例としては、削除部42cは、非重要データのサイズが閾値より小さくなるように、「日付」が古い非重要データから順に削除する。
例えば、削除部42cは、判定部42bにより、第3のキューラベル41bの「キュー長(サイズ)」が、閾値を超えたと判定された場合には、次のような処理を行う。すなわち、削除部42cは、第3のキューラベル41bの「先頭index」が示すダミーインデクス41cに対応するデータを、測定データDB16bから削除する。具体例を挙げて説明すると、削除部42cは、かかる「先頭index」が示すダミーインデクス41cの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する。
また、削除部42cは、第3のキューラベル41bの「キュー長(サイズ)」から、第3のキューラベル41bの「先頭index」が示すダミーインデクス41cの「データサイズ」を減算する。これは、次に説明するように、第3のキューラベル41bが示す仮想的なキューから、「先頭index」が示すダミーインデクス41cが仮想的に取り出されるからである。
また、削除部42cは、第3のキューラベル41bの「先頭index」が示すダミーインデクス41cを記憶部21から削除する。これにより、第3のキューラベル41bが示す仮想的なキューから、「先頭index」が示すダミーインデクス41cが仮想的に取り出される。
また、削除部42cは、第3のキューラベル41bが示すキューの先頭データのダミーインデクス41cのアドレスを用いて、次のような処理を行う。すなわち、削除部42cは、このアドレスを、第3のキューラベル41bの「先頭index」に設定する。このように、かかるアドレスを、第3のキューラベル41bの「先頭index」に再設定するのは、キューからダミーインデクス41cが仮想的に取り出され、キューの先頭のダミーインデクス41cが変更されたからである。
制御部42は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
ここで、管理装置40の動作の一例について説明する。図30は、管理装置の動作の一例を模式的に示す図である。図30に示すように、管理装置40は、ネットワーク情報収集装置13、サーバ情報収集装置14からデータを受信すると、受信したデータを測定データDB16bに格納する。また、管理装置40は、受信したデータのデータ種別が「分毎データ」である場合には、「分毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー30に、インデクス41aを仮想的に格納する。また、管理装置40は、受信したデータのデータ種別が「時毎データ」である場合には、「時毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー31に、インデクス41aを仮想的に格納する。また、管理装置40は、受信したデータのデータ種別が「日毎データ」である場合には、「日毎データ」に対応する第1のキューラベル21bが示す仮想的なキュー32に、インデクス41aを仮想的に格納する。また、管理装置40は、受信したデータが非重要データである場合には、第3のキューラベル41bが示す仮想的なキュー50に、インデクス41aにリンクされたダミーインデクス41cを仮想的に格納する。
そして、図30に示すように、キュー30のインデクス41aの保存期間が、所定の期間、例えば、3ヶ月経過した場合には、管理装置40は、インデクス41aをキュー30から仮想的に取り出す。また、キュー31のインデクス41aの保存期間が、所定の期間、例えば、1年経過した場合には、管理装置40は、インデクス41aをキュー31から仮想的に取り出す。また、キュー32のインデクス41aの保存期間が、所定の期間、例えば、3年経過した場合には、管理装置40は、インデクス41aをキュー32から仮想的に取り出す。
そして、管理装置40は、キュー30から取り出したインデクス41aを、「分毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー33に仮想的に格納する。また、管理装置40は、キュー31から取り出したインデクス41aを、「時毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー34に仮想的に格納する。また、管理装置40は、キュー32から取り出したインデクス41aを、「日毎データ」に対応する第2のキューラベル21cが示す仮想的なキュー35に仮想的に格納する。
そして、キュー33のインデクス41aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置40は、インデクス41aをキュー33から仮想的に取り出す。また、キュー34のインデクス41aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置40は、インデクス41aをキュー34から仮想的に取り出す。また、キュー35のインデクス41aが示すデータのデータ量の総和が、閾値に達した場合には、管理装置40は、インデクス41aをキュー35から仮想的に取り出す。そして、管理装置40は、取り出したインデクス41aに対応するデータを測定データDB16bから削除する。
また、キュー50のダミーインデクス41cが示すデータのデータ量の総和が、閾値に達した場合には、管理装置40は、ダミーインデクス41cをキュー50から仮想的に取り出す。そして、管理装置40は、取り出したダミーインデクス41cに対応するデータを測定データDB16bから削除する。
このように、本実施例の管理装置40は、測定データDB16bの全記憶領域を、各種データを保存するために使用することができる。すなわち、本実施例の管理装置40は、各種データを保存する際に、余剰保存領域も使用する。したがって、本実施例の管理装置40によれば、余剰保存領域を有効に使用することができる。
また、本実施例の管理装置40は、待機状態や休止状態のサーバから送信された測定データについては、重要なデータでないため、各種データのサイズが閾値に達する前であっても、測定データDB16bから削除する。そのため、本実施例の管理装置40によれば、重要度の低い非重要データを優先的に削除することができる。
[処理の流れ]
次に、本実施例に係る管理装置40の処理の流れを説明する。以下の図31〜33で説明する各処理は、各々独立して実行される。なお、本実施例においても、図23〜27に示す各処理と同様の処理が実行されるが、その説明については省略する。図31は、実施例2に係る格納処理の手順を示すフローチャートである。この格納処理は、管理装置40の電源がONの間、繰り返し実行される。
図31に示すように、I/F20を介してネットワーク情報収集装置13やサーバ情報収集装置14からのデータを受信した場合(ステップS701肯定)に、格納部22aは、受信したデータを測定データDB16bに格納する(ステップS702)。生成部42aは、受信したデータに含まれる各種情報を用いてインデクス41aを生成する(ステップS703)。
生成部42aは、受信したデータが、非重要データであるか否かを判定する(ステップS704)。受信したデータが、非重要データである場合(ステップS704肯定)には、生成部42aは、ダミーインデクス41cを生成する(ステップS705)。生成部42aは、ダミーインデクス41cの「実インデクスへのポインタ」に、対応するインデクス41aのアドレスを設定し、インデクス41aの「ダミーへのポインタ」に、対応するダミーインデクス41cのアドレスを設定する(ステップS706)。
生成部42aは、新たに生成したダミーインデクス41cより「日時」が1つ前のダミーインデクス41cの「後index」に、新たなダミーインデクス41cのアドレスを設定する(ステップS707)。生成部42aは、キューに含まれる各ダミーインデクス41cが示すデータの、測定データDB16bに保存されたデータ量の総和を算出し、算出した総和を第3のキューラベル41bの「キュー長(サイズ)」に設定する(ステップS708)。生成部42aは、第3のキューラベル41bが示すキューの先頭データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを、第3のキューラベル41bの「先頭index」に設定する(ステップS709)。なお、ステップS709の処理は、第3のキューラベル41bの「先頭index」にアドレスが設定されている場合には、省略することができる。生成部42aは、第3のキューラベル41bが示すキューの最後尾データのダミーインデクス41cが記憶された記憶部41の記憶領域上のアドレスを、第3のキューラベル41bの「最後尾index」に設定する(ステップS710)。
生成部42aは、新たに生成したインデクス41aと「データ種別」が同一であり、かつ、新たなインデクス41aより「日時」が1つ前のインデクス41aの「後index」に、新たなインデクス41aのアドレスを設定する(ステップS711)。生成部42aは、キューに含まれる各インデクス41aが示すデータの、測定データDB16bに保存されたデータ量の総和を算出し、算出した総和を第1のキューラベル21bの「キュー長(サイズ)」に設定する(ステップS712)。
生成部42aは、第1のキューラベル21bが示すキューの先頭データのインデクス41aが記憶された記憶部21の記憶領域上のアドレスを、第1のキューラベル21bの「先頭index」に設定する(ステップS713)。なお、ステップS713の処理は、第1のキューラベル21bの「先頭index」にアドレスが設定されている場合には、省略することができる。生成部42aは、第1のキューラベル21bが示すキューの最後尾データのインデクス41aが記憶された記憶部41の記憶領域上のアドレスを、第1のキューラベル21bの「最後尾index」に設定し(ステップS714)、ステップS701に戻る。一方、受信したデータが、非重要データでない場合(ステップS704否定)には、ステップS711に進む。
図32は、実施例2に係る第3の判定処理の手順を示すフローチャートである。この第3の判定処理は、管理装置40の電源がONの間、実行される。
図32に示すように、判定部42bは、現在の時刻が、確認タイミングであるか否かを判定する(ステップS801)。このような確認タイミングとしては、所定時間間隔ごとのタイミング、例えば、1分毎のタイミングが挙げられる。
現在の時刻が、確認タイミングである場合(ステップS801肯定)には、判定部42bは、次のような処理を行う。判定部42bは、分毎データ、時毎データ、日毎データのそれぞれに対応する第1のキューラベル21bの「キュー長」と、「重要データ」のデータサイズとの総和を算出する(ステップS802)。
判定部42bは、測定データDB16bの全記憶容量から、ステップS802で算出した総和を減算し、余剰保存領域の大きさを算出する(ステップS803)。判定部42bは、余剰保存領域の大きさを、所定の比率に基づいて、非重要データに分配する(ステップS804)。なお、非重要データに分配された余剰保存領域の大きさが、非重要データのサイズの閾値となる。
判定部42bは、第3のキューラベル41bの「キュー長」を確認する(ステップS805)。判定部42bは、確認した「キュー長」が、閾値を超えているか否かを判定する(ステップS806)。確認した「キュー長」が、閾値を超えていない場合(ステップS806否定)には、ステップS801に戻る。一方、確認した「キュー長」が、閾値を超えている場合(ステップS806肯定)には、判定部42bは、次のような処理を行う。すなわち、判定部42bは、第3のキューラベル41bの先頭のダミーインデクス41cを特定し、特定したダミーインデクス41cを制御部42の内部メモリに格納し(ステップS807)、ステップS801に戻る。
図33は、実施例2に係る削除処理の手順を示すフローチャートである。この削除処理は、上述したステップS807でダミーインデクス41cが特定されるたびに実行される。
図33に示すように、削除部42cは、特定されたダミーインデクス41cの「DB格納情報」が示すシーケンス番号のレコードに保存されたデータを、測定データDB16bから削除する(ステップS901)。削除部42cは、対応する第3のキューラベル41bの「キュー長(サイズ)」から、特定されたダミーインデクス41cの「データサイズ」を減算する(ステップS902)。
削除部42cは、特定されたダミーインデクス41c、およびこのダミーインデクス41cにリンクされたインデクス41aを記憶部41から削除する(ステップS903)。削除部42cは、第3のキューラベル41bが示すキューの先頭データのダミーインデクス41cのアドレスを用いて、次のような処理を行う。すなわち、削除部42cは、このアドレスを、第3のキューラベル41bの「先頭index」に設定し(ステップS904)、処理を終了する。
[実施例2の効果]
上述してきたように、本実施例の管理装置40は、測定データDB16bの全記憶領域を、各種データを保存するために使用することができる。すなわち、本実施例の管理装置40は、各種データを保存する際に、余剰保存領域も使用する。したがって、本実施例の管理装置40によれば、余剰保存領域を有効に使用することができる。
また、本実施例の管理装置40は、待機状態や休止状態のサーバから送信された測定データについては、重要なデータでないため、各種データのサイズが閾値に達する前であっても、測定データDB16bから削除する。そのため、本実施例の管理装置40によれば、重要度の低い非重要データを優先的に削除することができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
たとえば、実施例1および実施例2において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。例えば、管理者などが、図示しない操作受付装置を介して、各処理の実行指示を入力してもよい。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、図26に示すステップS502、S503をまとめたり、図32に示すステップS802、S803をまとめたりすることもできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。例えば、図23に示すステップS210の処理を行う前に、ステップS211の処理を行うこともできる。また、図24に示すステップS310の処理を行う前に、ステップS311の処理を行うこともできる。図25に示すステップS410の処理を行う前に、ステップS411の処理を行うこともできる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図7に示す生成部22bと判定部22cとが統合されてもよい。また、図28に示す生成部42aと判定部42bとが統合されてもよい。
[管理プログラム]
また、上記の実施例で説明した管理装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図34を用いて、上記の実施例1で説明した管理装置と同様の機能を有する管理プログラムを実行するコンピュータの一例を説明する。また、図35を用いて、上記の実施例2で説明した管理装置と同様の機能を有する管理プログラムを実行するコンピュータの一例を説明する。