以下に、本願の開示する分析装置、分析プログラムおよび分析方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
実施例1に係るシステムについて説明する。図1は、実施例1に係る分析装置が適用されるシステムの全体構成図の一例を示す図である。図1に示すように、システム1は、キャプチャサーバ10、クライアント端末11、スイッチ14およびサービス提供システム15を有する。システム1の一例としては、会社内におけるLAN(Local Area Network)システムや、インターネット16を介して商品の受注を行うシステムなどが挙げられる。なお、キャプチャサーバ10は、分析装置の一例である。
クライアント端末11は、サービス提供システム15に対して、サービス要求を行うための装置である。例えば、クライアント端末11は、インターネット16に接続されている。クライアント端末11は、ユーザの操作を受け付けて、サービスを要求するためのHTTP(HyperText Transfer Protocol)のリクエストメッセージを、インターネット16に送信する。この場合、クライアント端末11は、後述のWebサーバ12を送信先としたリクエストメッセージを、インターネット16に送信する。また、クライアント端末11は、Webサーバ12から、レスポンスを受信する。例えば、クライアント端末11は、Webサーバ12から、HTTPのレスポンスメッセージを受信する。そして、クライアント端末11は、レスポンスメッセージの内容をブラウザに表示する。クライアント端末11は、例えば、サービス提供システム15からサービスを受けるユーザによって利用される。なお、図1の例では、クライアント端末11の台数が複数の場合が例示されているが、クライアント端末11の台数は、任意の台数を採用することができる。
インターネット16では、データが、送信先の装置に送信される。例えば、インターネット16では、クライアント端末11から送信されたリクエストメッセージであって、送信先がWebサーバ12であるリクエストメッセージが、Webサーバ12に接続されたスイッチ14に送信される。また、インターネット16では、スイッチ14から送信されたレスポンスメッセージであって、送信先がクライアント端末11であるレスポンスメッセージが、クライアント端末11に送信される。
サービス提供システム15は、ユーザからの要求に応じて、サービスを提供する。例えば、サービス提供システム15は、Webサーバ12およびDB(Data Base)サーバ13を有する。
Webサーバ12は、クライアント端末11からのリクエストに応じて、DBサーバ13へリクエストを送信する。例えば、Webサーバ12は、クライアント端末11からのサービスを要求するリクエストメッセージに応じて、DBサーバ13へSQL(Structured Query Language)の問合せを送信する。
また、Webサーバ12は、DBサーバ13からのレスポンスに応じて、クライアント端末11へレスポンスを送信する。例えば、Webサーバ12は、DBサーバ13からのSQLの応答に応じて、クライアント端末11へHTTPのレスポンスメッセージを送信する。なお、図1の例では、Webサーバ12の台数が1台である場合を例示しているが、Webサーバ12の台数は複数であってもよい。
DBサーバ13は、Webサーバ12からのリクエストに応じて、Webサーバ12へレスポンスを送信する。例えば、DBサーバ13は、Webサーバ12からのSQLの問合せに応じて、図示しないDBへアクセスし、Webサーバ12へSQLの応答を送信する。ここで、SQLの応答には、DBサーバ13で実行された処理の種類を示す識別子が含まれる。なお、図1の例では、DBサーバ13の台数が1台である場合を例示しているが、DBサーバ13の台数は複数であってもよい。
スイッチ14は、クライアント端末11、Webサーバ12およびDBサーバ13の各装置間のデータの送受信を行うとともに、各装置間に流れるデータのコピーをキャプチャサーバ10に送信する。図1の例では、スイッチ14のポートP1は、インターネット16に接続されている。また、図1の例では、スイッチ14のポートP2は、Webサーバ12に接続されている。また、図1の例では、スイッチ14のポートP3は、DBサーバ13に接続されている。また、図1の例では、スイッチ14のポートP4は、キャプチャサーバ10に接続されている。図1の例では、スイッチ14は、インターネット16を介して、クライアント端末11から、送信先がWebサーバ12であるリクエストメッセージを受信した場合には、受信したリクエストメッセージをポートP2からWebサーバ12へ送信する。また、スイッチ14は、Webサーバ12から、送信先がDBサーバ13であるSQLの問合せを受信した場合には、受信したSQLの問合せをポートP3からDBサーバ13へ送信する。また、スイッチ14は、DBサーバ13から、送信先がWebサーバ12であるSQLの応答を受信した場合には、受信したSQLの応答をポートP2からWebサーバ12へ送信する。また、スイッチ14は、Webサーバ12から、送信先がクライアント端末11であるレスポンスメッセージを受信した場合には、受信したレスポンスメッセージをポートP1から、インターネット16を介して、クライアント端末11へ送信する。
また、スイッチ14は、いわゆるポートミラーリング機能を有する。例えば、スイッチ14は、ポートP1、P2、P3を経由するデータをコピーし、コピーしたデータを、ポートP4から、キャプチャサーバ10に送信する。これにより、クライアント端末11、Webサーバ12およびDBサーバ13の各装置間を流れるデータを、キャプチャサーバ10が収集可能となる。スイッチ14は、複数の装置でも良く、例えば、クライアント端末11とWebサーバ12との通信を中継する装置と、Webサーバ12とDBサーバ13との通信を中継する装置と、によって構成されてもよい。
[キャプチャサーバ10の構成]
実施例1に係るキャプチャサーバについて説明する。図2は、実施例1に係るキャプチャサーバの構成を示す図である。図2に示すように、キャプチャサーバ10は、入力部20と、I/F(Interface)21と、報知部22と、記憶部23と、制御部24とを有する。本実施例に係るキャプチャサーバ10は、クライアント端末11からWebサーバ12へ送信されたHTTPのリクエストに含まれるCGI(Common Gateway Interface)パラメータの種類(key)および値(value)を取得する。また、キャプチャサーバ10は、HTTPのリクエストに基づいてWebサーバ12からDBサーバ13へ送信されたSQLの問い合わせに基づいてDBサーバ13により実行されたSQL処理の識別子(SQLの種類)を取得する。そして、キャプチャサーバ10は、取得したkeyおよびvalueと、SQLの種類とを対応付けて記憶する。そして、キャプチャサーバ10は、記憶内容に基づいて、keyおよびvalueごとのDBサーバ13により実行されるSQL処理の割合を算出する。そして、キャプチャサーバ10は、算出した割合に対応するkeyおよびvalueに対するHTTPのリクエストに含まれるkeyおよびvalueの類似度を算出する。続いて、キャプチャサーバ10は、算出された類似度に基づいて、DBサーバ13により実行されるSQL処理に対応するkey、または、keyおよびvalueを特定する。このように、キャプチャサーバ10は、人の作業を発生させずに、処理によって名寄せを行う。また、キャプチャサーバ10は、keyにvalueが設定されていない場合でも、key単位で名寄せを行うことができる。したがって、キャプチャサーバ10によれば、精度良く名寄せを行うことができる。
入力部20は、制御部24に情報を入力する。例えば、入力部20は、ユーザからの指示を受け付けて、制御部24に、後述の特定処理を実行する指示を入力する。入力部20のデバイスの一例としては、キーボードやマウスなどが挙げられる。
I/F21は、スイッチ14との通信を行うための通信インタフェースである。例えば、I/F21は、スイッチ14から送信されたリクエストメッセージのコピーであって、クライアント端末11からWebサーバ12へのリクエストメッセージのコピーを受信した場合には、受信したリクエストメッセージのコピーを制御部24へ送信する。また、I/F21は、スイッチ14から送信されたSQLの問合せのコピーであって、Webサーバ12からDBサーバ13へのSQLの問合せのコピーを受信した場合には、受信したSQLの問合せのコピーを制御部24へ送信する。また、I/F21は、スイッチ14から送信されたSQLの応答のコピーであって、DBサーバ13からWebサーバ12へのSQLの応答のコピーを受信した場合には、受信したSQLの応答のコピーを制御部24へ送信する。また、I/F21は、スイッチ14から送信されたレスポンスメッセージのコピーであって、Webサーバ12からクライアント端末11へのレスポンスメッセージのコピーを受信した場合には、次のような処理を行う。すなわち、I/F21は、受信したレスポンスメッセージのコピーをクライアント端末11へ送信する。
報知部22は、情報を報知する。例えば、報知部22は、後述の報知制御部24dにより入力されたパラメータの特定結果を報知する。報知部22のデバイスとしては、例えば、CRT(Cathode Ray Tube)や、液晶ディスプレイなどの表示装置が挙げられる。
記憶部23は、制御部24で実行される各種プログラムを記憶する。また、記憶部23は、ペアリスト23a、第一のテーブル23b、第二のテーブル23c、第三のテーブル23d、第四のテーブル23e、第五のテーブル23fを記憶する。
ペアリスト23aは、リクエストと、このリクエストに対応するレスポンスとの組が登録されるテーブルである。ペアリスト23aの各レコードには、後述の格納部24aにより、リクエストとレスポンスとの各組が登録される。図3は、ペアリストの一例を示す図である。図3の例では、リクエストをキャプチャサーバ10が受信した時刻である「リクエスト時刻」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、リクエストに対応するレスポンスをキャプチャサーバ10が受信した時刻である「レスポンス時刻」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、リクエストとレスポンスとの組が、クライアント端末11とWebサーバ12との間、または、Webサーバ12とDBサーバ13との間で送受信されたものであるのかを示す「階層」の項目がペアリスト23aに含まれていることを示す。なお、図3の例では、リクエストとレスポンスとの組が、クライアント端末11とWebサーバ12との間で送受信されたものである場合には、第一の所定値、例えば「1」が「階層」に登録される。また、図3の例では、リクエストとレスポンスとの組が、Webサーバ12とDBサーバ13との間で送受信されたものである場合には、第二の所定値、例えば「2」が「階層」に登録される。すなわち、「階層」の項目には、リクエストとレスポンスとの組が、どの装置間で発生したものかを示す情報が登録される。
また、図3の例では、リクエストの内容である「内容1」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、ペアリスト23aのレコードの通し番号である「通し番号」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、レスポンスの送信元のIP(Internet Protocol)アドレスである「送信元IP」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、レスポンスの送信先のIPアドレスである「送信先IP」の項目がペアリスト23aに含まれていることを示す。また、図3の例では、レスポンスの内容である「内容2」の項目がペアリスト23aに含まれていることを示す。なお、DBサーバ13からのレスポンス(SQLの応答)については、ペアリスト23aの「内容2」には、DBサーバ13が実行したSQLの処理の種類を示す識別子が登録される。
ここで、図3の例では、「通し番号」が1のレコードは、SQLの問合せをキャプチャサーバ10が受信した時刻が2010年10月28日10時00分0.9秒であることを示す。また、図3の例では、「通し番号」が1のレコードは、対応するSQLの応答をキャプチャサーバ10が受信した時刻が2010年10月28日10時00分1.1秒であることを示す。また、図3の例では、「通し番号」が1のレコードの「階層」の項目は、このレコードに登録されたSQLの問合せとSQLの応答との組が、Webサーバ12とDBサーバ13との間で送受信されたものであることを示す。また、図3の例では、「通し番号」が1のレコードは、SQLの問合せの内容が「a」であることを示す。また、図3の例では、「通し番号」が1のレコードは、このレコードに登録されたSQLの応答の送信元のIPアドレスが「10.0.0.1」であることを示す。また、図3の例では、「通し番号」が1のレコードは、このレコードに登録されたSQLの応答の送信先のIPアドレスが「10.0.0.2」であることを示す。また図3の例では、「通し番号」が1のレコードは、このレコードに登録されたSQLの応答に含まれる、DBサーバ13が実行したSQLの処理の種類を示す識別子が10であることを示す。
また、図3の例では、「通し番号」が2のレコードは、リクエストメッセージをキャプチャサーバ10が受信した時刻が2010年10月28日10時01分0.0秒であることを示す。また、図3の例では、「通し番号」が2のレコードは、対応するレスポンスメッセージをキャプチャサーバ10が受信した時刻が2010年10月28日10時00分3.0秒であることを示す。また、図3の例では、「通し番号」が2のレコードの「階層」の項目は、このレコードに登録されたリクエストメッセージとレスポンスメッセージとの組が、クライアント端末11とWebサーバ12との間で送受信されたものであることを示す。また、図3の例では、「通し番号」が2のレコードは、リクエストメッセージの内容が「urlA.jsp」であることを示す。また、図3の例では、「通し番号」が2のレコードは、このレコードに登録されたレスポンスメッセージの送信元のIPアドレスが「192.168.0.1」であることを示す。また、図3の例では、「通し番号」が2のレコードは、このレコードに登録されたレスポンスメッセージの送信先のIPアドレスが「10.0.0.1」であることを示す。また図3の例では、「通し番号」が2のレコードは、レスポンスメッセージに含まれるデータの内容が「urlA.jsp」であることを示す。図3の例のその他のレコードの登録内容についても、上述した内容と同様であるので説明を省略する。
なお、ペアリスト23aに登録される情報は、上記の内容に限られない。ペアリスト23aには、クライアント端末11から送信されたHTTPのリクエストに含まれるURL、パラメータ(keyおよびvalue)と、DBサーバ13により実行されたSQLの処理の種類とを対応付けるための情報が登録されていればよい。例えば、ペアリスト23aに登録される情報は、「リクエスト時刻」、「レスポンス時刻」、「階層」、「内容1」、「内容2」の項目だけでもよい。また、ペアリスト23aに登録される各項目の情報は、後述の格納部24aによって、スイッチ14からのデータが解析されることにより得られる。
図4は、スイッチからキャプチャサーバに送信されたデータが示すURL、keyおよびvalueの組み合わせと、DBサーバで実行されたSQLの処理の種類との関係の一例を示す図である。図4の例では、横軸は、時間を示す。図4の例は、HTTPのリクエストがクライアント端末11から送信されてから、クライアント端末11がHTTPのレスポンスを受信するまでのリクエストとレスポンスの組である第一の組30a、30b、30cの3種類の第一の組が出現した場合を示す。また、図4の例は、SQLの問い合わせがWebサーバ12から送信されてから、Webサーバ12がSQLの応答を受信するまでのリクエストとレスポンスの組である第二の組31a、31bの2種類の第二の組が出現した場合を示す。
図4の例では、第一の組30aのリクエストには、URLに「urlA」、パラメータに「sid=001」、「exec=meisai」が含まれている。また、図4の例では、第一の組30bのリクエストには、URLに「urlA」、パラメータに「sid=002」、「exec=meisai」が含まれている。また、図4の例では、第一の組30cのリクエストには、URLに「urlA」、パラメータに「sid=003」が含まれている。また、以下、第二の組31aのレスポンスに含まれるSQLの処理の識別子を「子1」、第二の組31bのレスポンスに含まれるSQLの処理の識別子を「子2」第二の組31cのレスポンスに含まれるSQLの処理の識別子を「子3」と称する場合がある。
図4の例では、出現した第一の組30aのリクエストと、レスポンスとの間に、第二の組31a、31bが内包されている場合が示されている。なお、ここでいう「内包」とは、第一の組のリクエストとレスポンスとの間の時間内に、第二の組のリクエストおよびレスポンスの発生時刻が含まれることを指す。また、図4の例では、出現した第一の組30bのリクエストと、レスポンスとの間に、第二の組31a、31cが内包されている場合が示されている。また、図4の例では、第一の組30cのリクエストと、レスポンスとの間に、第二の組31cが内包されている場合が示されている。
第一のテーブル23bは、スイッチ14からキャプチャサーバ10に送信されたデータが示すURL、またはURLおよびkey、もしくは、URL、keyおよびvalueの組み合わせに対するDBサーバ13で実行されたSQLの処理の種類の割合が登録されるテーブルである。第一のテーブル23bには、後述の算出部24bにより算出された割合が登録、更新される。なお、第一のテーブル23bの各項目には、算出部24bにより内容が登録される前、いわゆる初期時には、何も登録されていない。図5は、第一のテーブルのデータ構造の一部の一例を示す図である。第一のテーブル23bは、「URL」、「CGI key」、「CGI value」、「インスタンス」の各項目を有する。
図5の例では、「URL」の項目に、スイッチ14からキャプチャサーバ10に送信されたデータにおいて出現したHTTPのリクエストに含まれる「URL」が登録される。また、図5の例では、「CGI key」の項目に、スイッチ14からキャプチャサーバ10に送信されたデータにおいて出現したHTTPのリクエストの「key」が登録される。また、図5の例では、「CGI value」の項目に、スイッチ14からキャプチャサーバ10に送信されたデータにおいて出現したHTTPのリクエストの「value」が登録される。また、図5の例では、「インスタンス」の項目に、スイッチ14からキャプチャサーバ10に送信されたデータにおいて出現したリクエストの「URL」、「key」および「value」の組み合わせに対する、DBサーバ13で実行されたSQLの処理の種類の割合が登録される。なお、DBサーバ13で実行されたSQLの処理を示す識別子と、その識別子が示すSQLの処理の出現割合との関係は、[DBサーバ13で実行されたSQLの処理を示す識別子:SQLの処理の出現割合]で表される。
ここで、先の図4の例では、1番目に出現した第二の組31aを内包しうる第一の組は、第一の組30aである。また、図4の例では、第二の組31bを内包しうる第一の組は、第一の組30aである。また、図4の例では、2番目に出現した第二の組31aを内包しうる第一の組は、第一の組30bである。また、図4の例では、第二の組31cを内包しうる第一の組は、第一の組30bおよび第一の組30cである。ここで、後述の算出部24bでは、ある第二の組に対して、この第二の組を内包しうる第一の組の数がN個である場合には、次のような処理を行う。すなわち、算出部24bでは、かかる第二の組に対するN個の第一の組のそれぞれに対して、1/Nの値を算出し、第一の組のリクエストが有するURLとパラメータとの組合せに対応する、第一のテーブル23bの「インスタンス」の項目に加算する。
例えば、図4の例では、1番目に出現した第二の組31aを内包しうる第一の組は、第一の組30aの1つである。そのため、図4の例の場合には、算出部24bは、1(1/1)を第一の組30aのURLおよびパラメータの組み合わせに対応する「インスタンス」の項目に加算する。
また、図4の例では、第二の組31bを内包しうる第一の組は、第一の組30aの1つである。そのため、図4の例の場合には、算出部24bは、1(1/1)を第一の組30aのURLおよびパラメータの組み合わせに対応する「インスタンス」の項目に加算する。
また、図4の例では、2番目に出現した第二の組31aを内包しうる第一の組は、第一の組30bである。そのため、図4の例の場合には、算出部24bは、1(1/1)を第一の組30bのURLおよびパラメータの組み合わせに対応する「インスタンス」の項目に加算する。
また、図4の例では、第二の組31cを内包しうる第一の組は、第一の組30b、第一の組30cの2つである。そのため、図4の例の場合には、算出部24bは、0.5(1/2)を、第一の組30bのURLおよびパラメータの組み合わせに対応する「インスタンス」の項目、第一の組30cのURLおよびパラメータの組み合わせに対応する「インスタンス」の項目に加算する。
すなわち、図4の例の場合には、後述の算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「001」に対応する「インスタンス」の項目に、「子1」の割合「1」、「子2」の割合「1」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「002」に対応する「インスタンス」の項目に、「子1」の割合「1」、「子3」の割合「0.5」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「003」に対応する「インスタンス」の項目に、「子3」の割合「0.5」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「exec」および「value」=「meisai」に対応する「インスタンス」の項目に、次のような内容を登録する。すなわち、算出部24bは、「子1」の割合「1」、「子2」の割合「1」、「子1」の割合「1」、「子3」の割合「0.5」を登録する。
第二のテーブル23cには、第一のテーブル23bの「インスタンス」に登録された値が、後述の算出部24bにより正規化された値が登録される。図6は、第二のテーブルのデータ構造の一部の一例である。例えば、図5の例において、「インスタンス」の項目に、「子1」の割合「1」、「子2」の割合「1」が登録された場合には、後述の算出部24bでは、この登録内容をベクトル(1,1)として扱い、正規化の処理を行う。例えば、図6に示すように、後述の算出部24bでは、ベクトルの長さが、所定値、例えば、「1」となるように、正規化する。この場合、ベクトル(1,1)は、(0.71,0.71)に正規化される。
第三のテーブル23dには、第二の組ごとに、第二のテーブル23cに登録された正規化後の割合の平均値が登録される。かかる平均値は、後述の算出部24bにより算出され、登録される。図7は、平均値を算出する処理の一例を説明するための図である。図7の例は、図6の例における「URL」=「urlA」、「CGI key」=「exec」、「CGI value」=「meisai」に対応する「インスタンス」の項目に、複数の「子1」の割合が登録された場合を示す。図7の例においては、後述の算出部24bにより、複数の「子1」の割合の平均値が算出される。図8は、第三のテーブルのデータ構造の一部の一例を示す図である。図8の例は、図7の例において、算出部24bにより算出された「子1」の平均値「0.80」(=(0.71+0.89)/2)が、URLとパラメータとの組み合わせごとに設けられた「モデル」の項目に登録された場合を示す。また、図8の例では、第三のテーブル23dは、先の図5で説明した「URL」、「CGI key」、「CGI value」の項目も有する。図8の例では、かかる「モデル」の項目に、「子1」、「子2」、「子3」のそれぞれの平均値(0.80,0.36,0.23)が登録された場合を示す。この「モデル」の項目の登録内容は、URLとパラメータとの組み合わせに対して平均的な挙動を示す。また、以下の説明において、モデルを暫定モデルと称する場合がある。なお、図8の例は、第三のテーブル23dのデータ構造の一部の一例であり、第三のテーブル23dは、例えば、先の図5の例に示すURL、URLとkey、または、URLとkeyとvalueとの組み合わせごとに、平均値を登録するための各項目を有する。
第四のテーブル23eには、後述の算出部24bにより算出された類似度が登録される。図9は、第四のテーブルのデータ構造の一部の一例を示す図である。図9の例では、第四のテーブル23eは、先の図5などで説明した「URL」、「CGI key」、「CGI value」の項目に加え、「類似度」の項目を有する。「類似度」の項目には、後述の算出部24bにより第二のテーブル23cの登録内容と、第三のテーブル23dの登録内容とに基づいて算出された類似度が登録される。なお、図9の例では、「類似度」の項目に2つの値「0.9」が登録されているが、上側の類似度「0.9」は、次のようなことを示す。すなわち、上側の類似度「0.9」は、「URL」=「urlA」、「CGI key」=「exec」、「CGI value」=「meisai」、「子1」の割合「1」、「子2」の割合「1」である場合について算出された類似度を示す。また、下側の類似度「0.9」は、「URL」=「urlA」、「CGI key」=「exec」、「CGI value」=「meisai」、「子1」の割合「1」、「子3」の割合「0.5」である場合について算出された類似度を示す。
第五のテーブル23fは、URL、URLとkey、URLとkeyとvalueとの組み合わせに対応付けられて、後述の算出部24bにより算出された類似度の平均値(平均類似度)、類似度の標準偏差、出現回数が登録される。図10は、第五のテーブルのデータ構造の一部の一例を示す図である。図10の例では、第五のテーブル23fは、先の図5などで説明した「URL」、「CGI key」、「CGI value」の各項目に加え、「URL単位」、「CGI key単位」、「CGI value単位」の各項目を有する。「URL単位」、「CGI key単位」、「CGI value単位」の各項目は、「平均類似度」、「標準偏差」、「出現回数」を有する。「URL単位」の「平均類似度」の項目には、「URL」の項目に登録されたURLに対応する類似度の平均値が後述の算出部24bにより登録される。「URL単位」の「標準偏差」には、「URL」の項目に登録されたURLに対応する類似度の平均値が後述の算出部24bにより登録される。「URL単位」の「出現回数」には、「URL」の項目に登録されたURLに対応する、DBサーバ13で実行されたSQLの処理の種類ごとの出現回数が後述の算出部24bにより登録される。「CGI key単位」は、URLとkeyとの組み合わせを示し、「CGI value単位」は、URLとkeyとvalueとの組み合わせを示す。これら「CGI key単位」、「CGI value単位」の各項目が有する「平均類似度」、「標準偏差」、「出現回数」についても、「URL単位」の場合と同様であるので、説明を省略する。第五のテーブル23fの登録内容に基づいて、後述の特定部24cにより、DBサーバ12で実行されるSQLの処理の種類を切り分けるためのURL、URLとkey、URLとkeyとvalueとの組み合わせが特定される。
記憶部23は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部23は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
図2の説明に戻り、制御部24は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部24は、図2に示すように、格納部24aと、算出部24bと、特定部24cと、報知制御部24dとを有する。
格納部24aは、データを解析し、解析した結果をペアリスト23aに登録する。例えば、格納部24aは、スイッチ14から送信される所定時間分のデータ、例えば、30秒分のデータを記憶部23に蓄積し、蓄積したデータに対して、下記に説明する解析を行う処理を所定時間ごとに繰り返し行う。
格納部24aが行う解析の一例について説明する。格納部24aは、クライアント端末11からWebサーバ12へ送信されたリクエストメッセージのコピーを解析し、リクエストメッセージに含まれるリクエストの内容を取得する。例えば、格納部24aは、「http://www.server.com/job/urlA.jsp?sid=001&exec=meisai」というリクエストメッセージについては、「www.server.com」が示すサーバに、「/job/urlA.jsp」というパス表記で指定されるコンテンツを要求するリクエストメッセージであると解析する。これに加えて、格納部24aは、URLが「http://www.server.com/job/urlA.jsp」であると解析する。なお、上記では、「http://www.server.com/job/urlA.jsp」を、「urlA」と略記した。また、格納部24aは、「sid=001&exec=meisai」をkeyおよびvalueのパラメータであると解析する。また、格納部24aは、Webサーバ12からDBサーバ13へ送信されたSQLの問合せのコピーを解析し、SQLの問合せに含まれる問合せ内容を取得する。また、格納部24aは、リクエストメッセージのコピーを受信した時刻を取得する。また、格納部24aは、SQLの問合せのコピーを受信した時刻を取得する。
また、格納部24aは、Webサーバ12からクライアント端末11へ送信されたレスポンスメッセージのコピーを解析し、レスポンスメッセージに含まれるレスポンスの内容を取得する。また、格納部24aは、レスポンスメッセージのコピーを解析し、レスポンスメッセージに含まれる送信元のIPアドレスを取得する。また、格納部24aは、レスポンスメッセージのコピーを解析し、レスポンスメッセージに含まれる送信先のIPアドレスを取得する。また、格納部24aは、DBサーバ13からWebサーバ12へ送信されたSQLの応答のコピーを解析し、SQLの応答に含まれる応答内容およびDBサーバ13で実行されたSQLの処理の種類を示す識別子を取得する。また、格納部24aは、SQLの応答のコピーを解析し、SQLの応答に含まれる送信元のIPアドレスを取得する。また、格納部24aは、SQLの応答のコピーを解析し、SQLの応答に含まれる送信先のIPアドレスを取得する。また、格納部24aは、レスポンスメッセージのコピーを受信した時刻を取得する。また、格納部24aは、SQLの応答のコピーを受信した時刻を取得する。
そして、格納部24aは、クライアント端末11とWebサーバ12間のリクエストおよびレスポンスの第一の組を検出する。例えば、格納部24aは、解析したリクエストメッセージの内容と、レスポンスメッセージの内容とから、リクエストメッセージとレスポンスメッセージとの対応付けを行う。ここでいう対応付けとは、ペアリングとも称され、あるリクエストメッセージと、そのリクエストメッセージに対するレスポンスメッセージとを関連付けることを指す。
そして、格納部24aは、対応付けしたリクエストメッセージとレスポンスメッセージとの第一の組を、ペアリスト23aに登録する。また、格納部24aは、図3に示すように、リクエストメッセージのコピーをキャプチャサーバ10が受信した時刻をペアリスト23aに登録する。また、格納部24aは、図3に示すように、レスポンスメッセージのコピーをキャプチャサーバ10が受信した時刻を、ペアリスト23aに登録する。また、格納部24aは、図3に示すように、クライアント端末11とWebサーバ12との間で送受信された第一の組について、第一の所定値、例えば「1」を、ペアリスト23aの「階層」の項目に登録する。また、格納部24aは、図3に示すように、リクエストメッセージのURLおよびkey並びにvalueを、ペアリスト23aの「内容1」に登録する。また、格納部24aは、図3に示すように、レスポンスメッセージの内容を、ペアリスト23aの「内容2」に登録する。
また、格納部24aは、Webサーバ12とDBサーバ13間のリクエストおよびレスポンスの第二の組を検出する。例えば、格納部24aは、解析したSQLの問合せの内容と、SQLの応答の内容とから、SQLの問合せとSQLの応答との対応付けを行う。ここでいう対応付けは、あるSQLの問合せと、そのSQLの問合せに対するSQLの応答とを関連付けることを指す。
そして、格納部24aは、対応付けしたSQLの問合せとSQLの応答との第二の組を、ペアリスト23aに登録する。また、格納部24aは、図3に示すように、SQLの問合せのコピーをキャプチャサーバ10が受信した時刻をペアリスト23aに登録する。また、格納部24aは、図3に示すように、SQLの応答のコピーをキャプチャサーバ10が受信した時刻を、ペアリスト23aに登録する。また、格納部24aは、図3に示すように、Webサーバ12とDBサーバ13との間で送受信された第二の組について、第二の所定値、例えば「2」を、ペアリスト23aの「階層」の項目に登録する。また、格納部24aは、図3に示すように、SQLの問合せの内容を、ペアリスト23aの「内容1」に登録する。また、格納部24aは、図3に示すように、SQLの問合せに含まれる、DBサーバ13により実行されたSQLの処理の種類を示す識別子を、ペアリスト23aの「内容2」に登録する。また、格納部24aは、図3に示すように、SQLの応答の送信元のIPアドレスを、ペアリスト23aに登録する。また、格納部24aは、図4に示すように、SQLの応答の送信先のIPアドレスを、ペアリスト23aに登録する。
算出部24bは、記憶部23のペアリスト23a、第一のテーブル23b、第二のテーブル23c、第三のテーブル23d、第四のテーブル23e、第五のテーブル23fを用いて、URL、URLとkey、URLとkeyとvalueとの組み合わせごとに、次のような値を算出する。すなわち、算出部24bは、DBサーバ13により実行されるSQLの処理の種類の割合を算出する。そして、算出部24bは、算出した割合に対応するURL、URLとkey、URLとkeyとvalueとの組み合わせのそれぞれに対する、解析の結果得られたURL、URLとkey、URLとkeyとvalueとの組み合わせのそれぞれの類似度を算出する。
例えば、算出部24bは、まず、ペアリスト23aを参照して、第一の組のリクエストとレスポンスとの間に出現した第二の組を全て特定する。また、算出部24bは、ペアリスト23aを参照して、第一の組のリクエストの「内容1」の項目から、HTTPのリクエストのURLとkeyとvalueとを特定する。
そして、算出部24bは、ペアリスト23aを参照して、特定した第二の組に対して、その第二の組を内包しうる第一の組の数Nを特定する。続いて、算出部24bは、第一の組のそれぞれに対して、1/Nの値を算出する。そして、算出部24bは、第一の組のリクエストが有するURL、URLとkey、URLとkeyとvalueとの組合せのそれぞれを第一のテーブル23bの対応する項目に登録するとともに、第一のテーブル23bの「インスタンス」の項目に、1/Nの値を加算する。
例えば、図4の例の場合には、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「001」に対応する「インスタンス」の項目に、「子1」の割合「1」、「子2」の割合「1」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「002」に対応する「インスタンス」の項目に、「子1」の割合「1」、「子3」の割合「0.5」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「sid」および「value」=「003」に対応する「インスタンス」の項目に、「子3」の割合「0.5」を登録する。また、図4の例の場合では、算出部24bは、図5の例に示すように、「URL」=「urlA」、「key」=「exec」および「value」=「meisai」に対応する「インスタンス」の項目に、次のような内容を登録する。すなわち、算出部24bは、「子1」の割合「1」、「子2」の割合「1」、「子1」の割合「1」、「子3」の割合「0.5」を登録する。このようにして、第一のテーブル23bに、各種内容が登録される。
また、算出部24bは、第一のテーブル23bの「インスタンス」の項目に登録された、DBサーバ13で実行されたSQLの処理の種類の割合を要素とするベクトルを正規化する処理を行う。例えば、算出部24bは、図5の例に示すように、「子1」の割合「1」、「子2」の割合「1」が登録された場合には、この登録内容をベクトル(1,1)として扱い、正規化の処理を行う。正規化の具体例としては、算出部24bは、図6に示すように、ベクトルの長さが、所定の長さ、例えば、「1」となるように、正規化する。この場合、ベクトル(1,1)は、(0.71,0.71)に正規化される。そして、算出部24bは、URL、URLとkey、URLとkeyとvalueとの組み合わせとともに、正規化した値を第二のテーブル23cに登録する。このようにして、算出部24bは、URL、URLとkey、URLとkeyとvalueとの組合せのそれぞれについて、正規化した値を第二のテーブル23cにする。
このとき、実行されたSQLの処理の種類の出現タイミングによっては、1つの「インスタンス」の項目の中に、同一のSQLの処理の種類について、複数正規化した値が登録される場合がある。例えば、図6の例に示すように、第二のテーブル23cのインスタンスの項目に、[子1:0.7、子2:0.70]および[子1:0.89、子3:0.45]というように、「子1」について正規化された割合が複数存在する場合がある。そこで、算出部24bは、SQLの処理の種類ごとに、正規化された割合の平均値を算出する。例えば、図6の例の[子1:0.7、子2:0.70]および[子1:0.89、子3:0.45]について、算出部24bは、次のような処理を行う。すなわち、算出部24bは、[子1:0.7、子2:0.70、子3:0.00]および[子1:0.89、子2:0.00、子3:0.45]と、子2および子3の割合の値を0とする補間を行った上で、SQLの処理の種類ごとに、平均値を算出する。この場合では、算出部24bは、平均値[子1:0.80、子2:0.36、子3:0.23]を算出する。これは、(URL,CGI key,CGI value)=(urlA,exec,meisai)のモデルである。そして、算出部24bは、図8に示すように、第三のテーブル23dに、「urlA」、「exec」および「meisai」の組み合わせとともに、平均値[子1:0.80、子2:0.36、子3:0.23]を登録する。このようにして、算出部24bは、URL、URLとkey、URLとkeyとvalueとの組合せのそれぞれについて、平均値を第三のテーブル23dにする。なお、登録された平均値は、対応するURL、URLとkey、URLとkeyとvalueとの組み合わせにおける平均的な挙動を示すモデルである。
また、算出部24bは、第三のテーブル23dに登録したモデルに対する第二のテーブル23cに登録した正規化した割合の類似度をURL、URLとkey、URLとkeyとvalueとの組合せごとに算出する。例えば、図6および図8の例に示すように、(URL,CGI key,CGI value)=(urlA,exec,meisai)の場合に、「子1」、「子2」、「子3」が出現する例について説明する。算出部24bは、第二のテーブル23cの[子1:0.70、子2:0.70]について、[子1:0.70、子2:0.70、子3:0.00]というように、子3の値を0とする補間を行う。そして、算出部24bは、補間した[子1:0.70、子2:0.70、子3:0.00]と、第三のテーブル23dの「モデル」に登録された[子1:0.80、子2:0.36、子3:0.23]との類似度を算出する。かかる類似度の算出方法の一例としては、コサイン類似度の手法を採用することができる。この手法を用いる場合には、例えば、割合の値、平均値をそれぞれ要素とするベクトルとして扱われる。
同様に、算出部24bは、第二のテーブル23cの[子1:0.89、子3:0.45]について、[子1:0.89、子2:0.00、子3:0.45]というように、子2の値を0とする補間を行う。そして、算出部24bは、補間した[子1:0.89、子2:0.00、子3:0.45]と、第三のテーブル23dの「モデル」に登録された[子1:0.80、子2:0.36、子3:0.23]との類似度を算出する。
そして、算出部24bは、算出した類似度をURL、URLとkey、URLとkeyとvalueとの組合せとともに、第四のテーブル23eに登録する。例えば、補間した[子1:0.70、子2:0.70、子3:0.00]と、第三のテーブル23dの「モデル」に登録された[子1:0.80、子2:0.36、子3:0.23]との類似度「0.9」を(urlA,exec,meisai)とともに登録する。例えば、補間した[子1:0.89、子2:0.00、子3:0.45]と、第三のテーブル23dの「モデル」に登録された[子1:0.80、子2:0.36、子3:0.23]との類似度「0.9」を(urlA,exec,meisai)とともに登録する。
続いて、算出部24bは、第四のテーブルに登録された類似度について、平均値と標準偏差とをURL、URLとkey、URLとkeyとvalueとの組み合わせごとに算出する。また、算出部24bは、ペアリスト23aを参照し、DBサーバ13で実行されたSQLの処理の出現回数を、URL、URLとkey、URLとkeyとvalueとの組み合わせごとに計数を行う。その後、算出部24bは、算出した類似度の平均値、標準偏差、出現回数をURL、URLとkey、URLとkeyとvalueとの組み合わせとともに第五のテーブル23fに登録する。例えば、算出部24bは、図10の例に示すように、算出した各値を第五のテーブル23fの各項目に登録する。ここで、類似度の平均値が大きく、標準偏差が小さいほど、その組み合わせにおけるSQLの処理の種類の組み合わせが類似しているもので占められていることとなる。
特定部24cは、算出部24bにより算出された類似度に基づいて、DBサーバ13により実行される処理の種類を切り分けるためのURL、URLとkey、URLとkeyとvalueとの組み合わせを特定する。
例えば、特定部24cは、URL、URLとkey、URLとkeyとvalueとの全組み合わせを候補とする。そして、特定部24cは、第五のテーブル23fを参照する。そして、特定部24cは、SQLの処理の出現回数が所定値、例えば、2より小さい場合のURL、URLとkey、URLとkeyとvalueとの組み合わせを、DBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外す。これは、例えば、出現回数が少ないと類似度の平均値などが極端な数値を示し、出現回数がある程度大きくならないと、類似度の平均値などの精度が確かなものとならないからである。例えば、図10に示すように、(urlA,sid,001〜003)に対応するSQLの処理などは、類似度の平均値は高いが、出現回数が1回と少ないため、かかる類似度の平均値の精度は確かなものではない。そこで、特定部24cは、このような出現回数が所定値より小さい場合のURL、URLとkey、URLとkeyとvalueとの組み合わせを、DBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外す。図10の例では、特定部24cは、(urlA,sid,001〜003)の組み合わせを候補から外す。
また、特定部24cは、第五のテーブル23fを参照し、類似度の平均値が、所定値未満である場合のURL、URLとkey、URLとkeyとvalueとの組み合わせを、DBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外す。これは、類似度が低い場合には、URL、URLとkey、URLとkeyとvalueとの対応する組み合わせが示すパラメータは、DBサーバ13により実行される処理の種類を切り分けに使用されていないと考えられるからである。なお、類似度の算出方法としてコサイン類似度を採用した場合には、本実施例では、類似度が0から1までの値をとる。そのため、処理の種類の識別子の組み合わせに一定のばらつきが生じている場合には、類似度が0.5未満になると考えられる。そこで、類似度の算出方法としてコサイン類似度を採用した場合には、特定部24cは、次のような処理を行うことができる。すなわち、特定部24cは、類似度の平均値が、0.5未満である場合のURL、URLとkey、URLとkeyとvalueとの組み合わせを、DBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外すことができる。例えば、図10の例では、特定部24cは、(urlA,exec)の組み合わせが類似度の平均値が0.5より小さいので、(urlA,exec)の組み合わせを候補から外す。
また、特定部24cは、第五のテーブル23fを参照する。そして、特定部24cは、「CGI key単位」の項目の「平均類似度」の項目に登録された類似度の平均値が、「CGI value単位」の項目の「平均類似度」の項目に登録された類似度の平均値以上である場合には、次のような処理を行う。すなわち、特定部24cは、対応するURLとkeyとvalueとの組み合わせをDBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外す。これは、「key」に「value」が設定された場合に、DBサーバ13により実行される処理の種類が切り分けられるのではなく、「key」が指定された場合に、指定された「key」によって、処理の種類が切り分けられると考えられるからである。
また、特定部24cは、第五のテーブル23fを参照する。そして、特定部24cは、「URL単位」の項目の「平均類似度」の項目に登録された類似度の平均値が、「CGI key単位」の項目の「平均類似度」の項目に登録された類似度の平均値以上である場合には、次のような処理を行う。すなわち、特定部24cは、対応するURLとkeyとの組み合わせをDBサーバ13により実行される処理の種類を切り分けるためのパラメータの候補から外す。これは、「URL」に「key」などのパラメータが設定された場合に、DBサーバ13により実行される処理の種類が切り分けられるのではなく、「URL」が指定された場合に、指定された「URL」によって、処理の種類が切り分けられると考えられるからである。例えば、図10の例では、(urlA)の組み合わせに対応する類似度の平均値が、(urlA,sid)の組み合わせに対応する類似度の平均値以上である。そのため、特定部24cは、(urlA,sid)の組み合わせを候補から外す。また、図10の例では、(urlA)の組み合わせに対応する類似度の平均値が、(urlA,exec)の組み合わせに対応する類似度の平均値以上である。そのため、特定部24cは、(urlA,meisai)の組み合わせを候補から外す。
そして、特定部24cは、候補として残った組み合わせをDBサーバ13により実行される処理の種類を切り分けるためのパラメータとして特定する。例えば、図10の例では、(urlA,exec,meisai)、(urlA,exec,download)の組み合わせが候補として残っているので、特定部24cは、これらの組み合わせを処理の種類を切り分けるためのパラメータとして特定する。また、例えば、URLとkey、URLとkeyとvalueとの組み合わせの場合の類似度の平均値が、URLのみの場合の類似度の平均値より小さい場合には、特定部24cは、URLを処理を切り分けるためのパラメータとして特定する。その後、特定部24cは、特定した結果を記憶部23に格納する。
報知制御部24dは、入力部20が受け付けたユーザからの特定結果を報知する指示を受信した場合に、記憶部23に記憶された特定結果を取得する。そして、報知制御部24dは、特定結果を報知するように、報知部22を制御する。
制御部24は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
[処理の流れ]
次に、本実施例に係るキャプチャサーバ10の処理の流れを説明する。図11は、実施例1に係る特定処理の手順を示すフローチャートである。この特定処理の実行タイミングとしては様々な場合が考えられる。例えば、キャプチャサーバ10は、スイッチ14から送信される所定時間分のデータ、例えば、30秒分のデータを記憶部23に蓄積する。また、キャプチャサーバ10の格納部24aは、蓄積したデータに対して、所定時間ごとに解析を行ってペアリスト23aを繰り返し生成するため、生成されたペアリスト23aに対して、所定時間ごとに繰り返し特定処理を実行することが考えられる。
図11に示すように、算出部24bは、ペアリスト23aを参照し、第一のテーブル23bに各種内容を登録することで、第一のテーブル23bを生成する(ステップS101)。算出部24bは、第一のテーブル23bの「インスタンス」の項目に登録された割合を正規化し、正規化した割合を第二のテーブル23cに登録する(ステップS102)。算出部24bは、第二のテーブル23cを参照し、平均値を算出して暫定モデルを生成し、生成した暫定モデルを第三のテーブル23dに登録する(ステップS103)。
算出部24bは、暫定モデルと、正規化された割合とを用いて、類似度を算出し、算出した類似度を第四のテーブル23eに登録する(ステップS104)。算出部24bは、算出した類似度の平均値、標準偏差、出現回数を算出し、算出した平均値、標準偏差、出現回数を第五のテーブル23fに登録する(ステップS105)。特定部24cは、第五のテーブル23fの登録内容に基づいて、処理を切り分けるためのパラメータを特定し(ステップS106)、処理を終了する。
上述してきたように、本実施例に係るキャプチャサーバ10は、クライアント端末11からWebサーバ12へ送信されたHTTPのリクエストに含まれるCGI(Common Gateway Interface)パラメータの種類(key)および値(value)を取得する。また、キャプチャサーバ10は、HTTPのリクエストに基づいてWebサーバ12からDBサーバ13へ送信されたSQLの問い合わせに基づいてDBサーバ13により実行されたSQL処理の識別子(SQLの種類)を取得する。そして、キャプチャサーバ10は、取得したkeyおよびvalueと、SQLの種類とを対応付けて記憶する。そして、キャプチャサーバ10は、記憶内容に基づいて、keyおよびvalueごとのDBサーバ13により実行されるSQL処理の割合を算出する。そして、キャプチャサーバ10は、算出した割合に対応するkeyおよびvalueに対するHTTPのリクエストに含まれるkeyおよびvalueの類似度を算出する。続いて、キャプチャサーバ10は、算出された類似度に基づいて、DBサーバ13により実行されるSQL処理に対応するkey、または、keyおよびvalueを特定する。このように、キャプチャサーバ10は、人の作業を発生させずに、処理によって名寄せを行う。また、キャプチャサーバ10は、keyにvalueが設定されていない場合でも、key単位で名寄せを行うことができる。したがって、キャプチャサーバ10によれば、精度良く名寄せを行うことができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、実施例1では、第一のテーブル23bに登録された内容を正規化し、正規化した結果を第二のテーブル23cに登録する場合について例示したが、開示の装置はこれに限定されない。開示の装置は、第一のテーブル23bに登録する前に、第一のテーブル23bに登録する内容の正規化を行い、正規化を行った結果を第一のテーブル23bに登録することができる。これにより、開示の装置は、記憶部23に記憶されるデータ量を削減することができる。
また、実施例1では、DBサーバ13で実行される処理の種類の切り分けを行うためのパラメータを特定する場合について例示したが、開示の装置はこれに限定されない。例えば、開示の装置は、DBサーバ13の代わりにアプリケーションサーバで実行される処理の切り分けを行うためのパラメータを特定することができる。この場合、開示の装置は、アプリケーションサーバで実行されたコマンドを識別するための識別子をアプリケーションサーバから受信することで、パラメータを特定することができる。
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[分析プログラム]
また、上記の実施例で説明したキャプチャサーバ10の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図12を用いて、上記の実施例で説明したキャプチャサーバ10と同様の機能を有する分析プログラムを実行するコンピュータの一例を説明する。図12は、分析プログラムを実行するコンピュータを示す図である。
図12に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。また、コンピュータ300は、通信インタフェース350を有する。これら310〜350の各符号が示す各装置は、バス360を介して接続される。
通信インタフェース350は、通信を行うためのインタフェースである。通信インタフェース350は、I/F21に対応する。
ROM320には、OSなどの基本プログラムが記憶されている。また、ROM320には、上記の実施例で示す格納部24aと、算出部24bと、特定部24cと、報知制御部24dと同様の機能を発揮する分析プログラム320aが予め記憶される。なお、分析プログラム320aについては、適宜分離しても良い。また、HDD330には、ペアリスト、第一のテーブル〜第五のテーブルが設けられる。これらペアリスト、第一のテーブル〜第五のテーブルは、上述したペアリスト23a、第一のテーブル23b〜第五のテーブル23fに対応する。
そして、CPU310が、分析プログラム320aをROM320から読み出して実行する。
そして、CPU310は、ペアリスト、第一のテーブル〜第五のテーブルを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたペアリスト、第一のテーブル〜第五のテーブルを用いて、分析プログラム320aを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM330に格納されなくともよい。処理に用いられるデータがRAM340に格納されれば良い。
なお、上記した分析プログラム320aについては、必ずしも最初からROM320に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。