以下に図面を参照して、開示の分類パターン作成方法、分類パターン作成装置、および分類パターン作成プログラムの実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかる分類パターン作成装置の動作例を示す説明図である。分類パターン作成装置100は、メッセージ(電文)の分析を行うときに用いられる、メッセージを分類する分類パターンを作成するコンピュータである。メッセージは、プロトコルに従った文字列である。したがって、分類パターン作成装置100は、プロトコルに対応付いた分類ルールを作成することになる。プロトコルとしては、アプリケーション層のプロトコルであるHTTP(Hypertext Transfer Protocol)、IIOP(Internet Inter−ORB Protocol)、SMTP(Simple Mail Transfer Protocol)や、セッション層のプロトコルであるSQL等がある。以下の例では、SQLを例にして説明する。以下、SQLに従ったメッセージを、「SQLデータ」と呼称する。
分類パターンは、文字列の並びを表現するパターン文字列で表されている。以下、パターン文字列を、単に、「分類パターン」と呼称する。分類パターンは、統計分析を行う分析者によって、SQLデータを閲覧して文字列マッチング用の正規表現を組み立てられる。この場合、分析対象のシステムが増改築されると、システム構成が複雑となり、結果、どのようなメッセージが出現するのか特定することが難しい。どのようなメッセージが出現するのか特定することが難しいと、分類パターンの作成基準を決定することが困難となる。また、SQLデータは、入れ子構造になる場合があり、分類パターンを作成するのが困難である。さらに、分類ルールで分類した結果による統計処理の結果が、統計分析を行う分析者の期待にそぐわない結果である場合、期待に沿うような分類ルールを作成することになる。この場合も、分析者が再度分類パターンを作成することはコストがかかる。
そこで、分類パターン作成装置100は、予約語を含む分類パターンに適合したSQLデータ群の中で予約語と対になる高頻出の文字列を、予約語に続く文字列とする分類パターンを作成する。これにより、分類パターン作製装置100は、システム性能を左右するSQLデータ群を分類するパターンを作成することができる。
分類パターン作成装置100は、SQLデータを粗く分類した後に、所定の閾値に達するまで、分類パターンを分解する。具体的に、分類パターン作成装置100は、第1のパターン文字列p1に適合するSQLデータ群111に含まれるSQLデータに対応して、SQLデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。第1の分類パターンp1は、プロトコルにより定義された予約語を含む。また、第1の分類パターンp1は、分析対象のシステムに依存する文字列が含まれておらず、SQLの基本構文のいずれかにマッチするような正規表現で表される。第1のパターン文字列の例は、図5で示す。部分文字列は、予約語の直前または直後のうちのいずれか一方の文字列の重複がないように抽出する。
図1の例では、SQLデータ群111に含まれるメッセージとして、メッセージ111−1〜111−3がある。そして、第1の分類パターンp1に適合したSQLデータ群の中にある予約語が、“SELECT”と、“FROM”と、“WHERE”とである。SQLデータ群111の各SQLデータの中の、“SELECT”の直後の文字列としては、それぞれ、“*”と、“id,name”とがある。また、SQLデータ群111の各SQLデータの中の、“FROM”の直後の文字列としては、“TBL1”がある。さらに、SQLデータ群111の各SQLデータの中の、“WHERE”の直後の文字列としては、それぞれ、“num=’100’”と、“code=’100’”と、“num > (SELECT AVG(num) FROM TBL1)”とがある。
したがって、分類パターン作成装置100は、予約語“SELECT”と直後の文字列からなる部分文字列として、“SELECT *”と、“SELECT id,name”と、を抽出する。また、分類パターン作成装置100は、予約語“FROM”と直後の文字列からなる部分文字列として、“FROM TBL1”を抽出する。さらに、分類パターン作成装置100は、“WHERE”と直後の文字列からなる部分文字列として、“WHERE num=’100’”と、“WHERE code=’100’”と、を抽出する。さらに、分類パターン作成装置100は、“WHERE”と直後の文字列からなる部分文字列として、“WHERE num > (SELECT AVG(num) FROM TBL1)”を抽出する。
続けて、分類パターン作成装置100は、部分文字列に対応して、部分文字列を含むSQLデータを検出する。そして、分類パターン作成装置100は、部分文字列に対応して検出したSQLデータに基づいて、SQLデータに対応して抽出した部分文字列からいずれかの部分文字列を特定する。具体的には、分類パターン作成装置100は、部分文字列を含むSQLデータの数が最大となる部分文字列を特定してもよいし、部分文字列を含むSQLデータの応答時間や応答時間の合計が最大となる部分文字列を特定してもよい。図1では、SQLデータの数が最大となる部分文字列を特定する例を用いる。
図1の例では、検出したSQLデータの個数として、“SELECT *”と、“SELECT id,name”を含むSQLデータの個数は、それぞれ、2、1である。また、“FROM TBL1”を含むSQLデータの個数は、3である。さらに、“WHERE num=’100’”と、“WHERE code=’100’”と、“WHERE num > (SELECT AVG(num) FROM TBL1)”を含むSQLデータの個数は、それぞれ1、1、1である。
したがって、分類パターン作成装置100は、部分文字列を含むSQLデータの個数が最大となる部分文字列として、“FROM TBL1”を特定する。そして、分類パターン作成装置100は、特定した部分文字列を用いて、新たな分類パターンp2を作成する。具体的に、分類パターン作成装置100は、分類パターンp2として、分類パターンp1の2つ目の(.*)を“ TBL1 ”に置き換えた、“/^SELECT(.*)FROM TBL1 WHERE(.*)$/”とする。
続けて、分類パターン作成装置100と、分類パターン作成装置100が作成した分類パターンを利用するシステム可視化装置と、システム可視化装置が可視化するシステムとの関係を、図2を用いて説明する。
図2は、実施の形態1にかかる分類パターン作成装置とシステム可視化装置と顧客システムとの接続例を示す説明図である。顧客システム201は、システム可視化装置202と接続する。システム可視化装置202は、分類パターン作成装置100と管理者端末203とに接続する。顧客システム201は、Webサーバ211と、アプリケーションサーバ212と、DB(DataBase)サーバ213と、スイッチ214と、スイッチ215と、を有する。スイッチ214は、インターネットなどのネットワーク204に接続する。
顧客システム201は、分析対象となるシステムである。顧客システム201は、たとえば、会計システムであったり、人事システムであったりする。Webサーバ211は、ネットワーク204に接続されたクライアントソフトウェアのウェブブラウザに対して、HTMLやオブジェクトの表示を提供する。アプリケーションサーバ212は、Webサーバ211とDBサーバ213との橋渡しを担うサーバであり、データの加工などを行う。DBサーバ213は、顧客システム201が記憶する情報を蓄積する。
システム可視化装置202は、顧客システム201のスイッチ214とスイッチ215とからパケットを集約したのちメッセージとして組み立てて、メッセージを分析する。具体的には、システム可視化装置202は、サーバ間のデータ流量を分析したり、サーバ間の平均応答時間を分析したりする。たとえば、システム可視化装置202は、メッセージをHTTP、IIOP等のプロトコルに分類し、プロトコルごとに、メッセージの平均応答時間、メッセージの分類結果の内訳等を解析する。
管理者端末203は、システム可視化装置202に顧客システム201の分析指示を行う。たとえば、顧客システム201に不具合が発生した場合や、キャパシティプランニングの一環として、管理者端末203は、管理者端末203を利用する管理者の操作により、システム可視化装置202に顧客システム201の分析指示を行う。そして、管理者端末203は、分析結果を表示する。
(分類パターン作成装置100のハードウェア)
図3は、分類パターン作成装置のハードウェア構成例を示すブロック図である。図3では、分類パターン作成装置100のハードウェア構成例を説明する。図3において、分類パターン作成装置100は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、分類パターン作成装置100は、ディスクドライブ304およびディスク305と、通信インターフェース306と、を含む。また、CPU301〜通信インターフェース306はバス307によってそれぞれ接続される。
CPU301は、分類パターン作成装置100の全体の制御を司る演算処理装置である。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ304には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ304が磁気ディスクドライブである場合、ディスク305には、磁気ディスクを採用することができる。また、ディスクドライブ304がソリッドステートドライブである場合、ディスク305には、半導体素子メモリを採用することができる。
通信インターフェース306は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース306は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース306には、たとえば、モデムやLANアダプタなどを採用することができる。
また、システム可視化装置202と、Webサーバ211と、アプリケーションサーバ212と、DBサーバ213と、スイッチ214と、スイッチ215とも、分類パターン作成装置100と同様のハードウェア構成を有する。管理者端末203は、CPU、ROM、RAM、ディスクドライブ、ディスク、キーボード、マウスを有する。
(システム可視化装置202と分類パターン作成装置100との機能)
次に、システム可視化装置202と分類パターン作成装置100との機能について説明する。図4は、システム可視化装置と分類パターン作成装置との機能構成例を示すブロック図である。システム可視化装置202は、パケット受信部401と、メッセージ組立部402と、メッセージ分類部403と、メッセージ統計処理部404とを有する。パケット受信部401〜メッセージ統計処理部404は、記憶装置に記憶されたプログラムをシステム可視化装置202のCPUが実行することにより、パケット受信部401〜メッセージ統計処理部404それぞれの機能を実現する。
また、分類パターン作成装置100は、分類部405と、抽出部406と、検出部407と、特定部408と、作成部409と、を含む。制御部となる分類部405〜作成部409は、記憶装置に記憶されたプログラムをCPU301が実行することにより、分類部405〜作成部409それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、ディスク305などである。また、分類部405〜作成部409は、記憶装置に記憶されたプログラムをシステム可視化装置202のCPUが実行してもよい。
また、分類パターン作成装置100は、基本分類表411と、予約語表412と、SQL学習用データ413と、SQL分類パターン表414と、HTTP分類パターン表415と、図示していないがSQL、HTTP以外の分類パターン表とにアクセス可能である。基本分類表411と、予約語表412と、SQL学習用データ413は、RAM303、ディスク305等の記憶装置に格納される。また、SQL分類パターン表414と、HTTP分類パターン表415と、SQL、HTTP以外のプロトコルの分類パターン表とは、システム可視化装置202のRAM、ディスクといった記憶装置に格納される。
基本分類表411については、図5で後述する。予約語表412については、図6で後述する。SQL分類パターン表414については、図8、図14、図18で後述する。
SQL学習用データ413は、顧客システム201のサーバによって送信または受信されたメッセージである。また、顧客システム201内の各サーバに処理を要求するメッセージであってもよい。SQL学習用データ413については、図7、図13で後述する。
パケット受信部401は、スイッチ214とスイッチ215とから顧客システム201で送受信されるパケットデータ421を受信する。メッセージ組立部402は、パケット受信部401が受信したパケットデータ421を組み立てて、メッセージを作成する。メッセージ分類部403は、メッセージ組立部402が組み立てたメッセージを、SQL分類パターン表414、HTTP分類パターン表415、等に従って分類する。メッセージ統計処理部404は、メッセージ分類部403が分類したメッセージを統計分析する。メッセージ統計処理部404は、分析結果を管理者端末203に送信する。
分類部405は、SQL学習用データ413のSQLデータを、基本分類表にある分類パターンに従って分類する。分類した結果は、RAM303、ディスク305といった記憶装置に格納される。
抽出部406は、第1の分類パターンに適合するSQLデータ群に含まれるSQLデータに対応して、SQLデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。具体的な抽出例は、図10、図15、図19で後述する。なお、抽出した部分文字列の内容、または部分文字列を示すポインタが、RAM303、ディスク305といった記憶装置に格納される。
検出部407は、抽出部406が抽出した部分文字列に対応して、SQLデータ群から部分文字列を含むSQLデータを検出する。具体的な検出例は、図10、図15、図19で後述する。なお、検出したSQLデータ、またはSQLデータが格納されたアドレスが、RAM303、ディスク305といった記憶装置に格納される。
特定部408は、部分文字列に対応して検出部407が検出したSQLデータに基づいて、SQLデータに対応して抽出部406が抽出した部分文字列からいずれかの部分文字列を特定する。
具体的に、特定部408は、部分文字列に対応して検出部407が検出したSQLデータの個数に基づいて、SQLデータに対応して抽出した部分文字列からいずれかの部分文字列を特定してもよい。具体的な特定例は、図10で後述する。たとえば、特定部408は、部分文字列に対応して検出部407が検出したSQLデータの個数が最大となる部分文字列を特定してもよい。または、特定部408は、部分文字列に対応して検出部407が検出したSQLデータの個数が検出部407が検出したSQLデータ群の半数以上となった部分文字列を特定してもよい。
具体的に、特定部408は、SQL学習用データ413を参照して、部分文字列に対応して検出部407が検出したSQLデータの応答時間に基づいて、SQLデータに対応して抽出した部分文字列からいずれかの部分文字列を特定してもよい。部分文字列に対応して検出部407が検出したSQLデータの応答時間は、部分文字列に対応して検出したSQLデータの応答時間の平均値でもよいし、最大値でもよい。具体的な特定例は図15で後述する。
また、特定部408は、SQL学習用データ413を参照して、部分文字列に対応して検出部407が検出したSQLデータの応答時間を累積した合計応答時間に基づいて、SQLデータに対応して検出した部分文字列からいずれかの部分文字列を特定してもよい。具体的な特定例は図19で後述する。
作成部409は、第1の分類パターンと特定部408が特定したいずれかの部分文字列とに基づいて、SQLデータ群を分類する第2の分類パターンを作成する。具体的な作成例は、図10、図15、図19で後述する。なお、作成した第2の分類パターンは、SQL分類パターン表414等に格納される。
分類パターン作成装置100は、SQL学習用データ413を参照して基本分類表411内の分類パターンを分解する。以下、基本分類パターンの分解の例として、第1の分解例〜第3の分解例を示す。また、“−ex1”が付与された符号は、第1の分解例に関するものであることを示す。同様に、“−ex2”が付与された符号は、第2の分解例に関するものであることを示し、“−ex3”が付与された符号は、第3の分解例に関するものであることを示す。
(第1の分解例)
第1の分解例は、SQLデータの個数に基づいて、分類パターンを分解する例である。以下、図5〜図12を用いて、第1の分解例について説明する。
図5は、第1の分解例における基本分類表の記憶内容の一例を示す説明図である。基本分類表411−ex1は、プロトコルにより定義された予約語と、予約語の対となる文字列の集合を正規表現を用いて表現した文字列とからなる第1のパターン文字列を記憶する。
図5に示す基本分類表411−ex1は、レコード501−1〜501−3を有する。基本分類表411−ex1は、項番と、分類パターンと、いう2つのフィールドを含む。項番フィールドには、パターンを識別する番号が格納される。分類パターンフィールドには、どのシステムでも適用できる、最も原始的なSQLパターンが格納される。また、以下の説明と、図とにおいて、レコードの後ろに末尾符号“p”が付与された場合、該当のレコードの分類パターンを示す。たとえば、分類パターン501−1pは、“/^SELECT(.*)FROM(.*)WHERE(.*)$/”である。
たとえば、レコード501−1は、項番1となる分類パターンが、“/^SELECT(.*)FROM(.*)WHERE(.*)$/”であることを示す。
また、基本分類表411−ex1の各SQLパターンは、正規表現を用いて表現される。たとえば、分類パターン501−1pは、先頭が“SELECT”であり、いずれかの文字が0回以上続き、“FROM”が続き、いずれかの文字が0回以上続き、“WHERE”が続き、いずれかの文字が0回以上続いて終了する文字列に適合する。
なお、SQLデータ全てに適合した分類パターンとして、基本分類表411−ex1は、“/^(.*)$/”を記憶しておいてもよい。
図6は、第1の分解例における予約語表の記憶内容の一例を示す説明図である。予約語表412−ex1は、予約語を記憶するテーブルである。図6に示す予約語表412−ex1は、レコード601−1〜601−4を有する。予約語表412−ex1は、SQL予約語という1つのフィールドを含む。SQL予約語フィールドには、SQLによって定義される予約語が格納される。
たとえば、レコード601−1は、SQLの予約語として、“SELECT”があることを示す。また、HTTPの例として、予約語表412−ex1の各レコードには、たとえば、“GET”、“POST”等が格納される。
図7は、第1の分解例におけるSQL学習用データの一例を示す説明図である。SQL学習用データ413−ex1は、分類パターンを作成するために用いるSQLデータである。具体的に、SQL学習用データ413−ex1は、顧客システム201において過去に採取したSQLデータである。図7に示すSQL学習用データ413−ex1は、SQLデータ701−1〜701−4を含む。
たとえば、SQLデータ701−1は、“SELECT * FROM TBL1 WHERE num=’100’”であることを示す。
図8は、第1の分解例におけるSQL分類パターン表の記憶内容の一例を示す説明図である。SQL分類パターン表414−ex1は、第1の分解例に従って、作成した分類パターンを記憶する情報である。
図8に示すSQL分類パターン表414−ex1は、レコード801−1〜801−5を有する。SQL分類パターン表414−ex1は、順位と、分類パターンと、出現頻度と、分解可能フラグと、いう4つのフィールドを含む。
順位フィールドには、分類パターンの順位が格納される。分類パターンフィールドには、作成された分類パターンが格納される。出現頻度フィールドには、SQL学習用データ413−ex1のSQLデータのうち該当の分類パターンに分類された頻度が格納される。たとえば、出現頻度フィールドには、SQL学習用データ413−ex1が1000個のSQLデータを有していれば、1000個のうち該当の分類パターンに分類された個数が格納される。分解可能フラグフィールドには、該当の分類パターンが2つ以上の分類パターンに分解可能であるか否かを示す識別子が格納される。識別子としては、該当の分類パターンが分解可能であることを示す“分解可能”識別子と、該当の分類パターンが分解不可能であることを示す“分解不可能”とがある。
たとえば、レコード801−1は、1番目の順位の分類パターンとして、SQL学習用データ413−ex1が有するSQLデータが最も多く分類された分類パターンが、“/^SELECT(.*)FROM TBL1 WHERE(.*)$/”であることを示す。さらに、レコード801−1は、1番目の順位の分類パターンの出現頻度が3,658であり、分解可能であることを示す。
図9は、第1の分解例におけるSQL学習用データの分類の一例を示す説明図である。分類パターン作成装置100は、始めに、SQL学習用データ413−ex1にあるSQLデータを基本分類表411−ex1の分類パターンごとに分類する。具体的に、分類パターン作成装置100は、SQL学習用データ413−ex1にあるSQLデータごとに、基本分類表411−ex1の分類パターンにヒットするか否かを判断して、ヒットした場合、該当のSQLデータをヒットした分類パターンに分類する。
たとえば、図9の例では、分類パターン作成装置100は、SQLデータ701−1、701−2、701−4を、分類パターン501−1pに分類する。
図10は、第1の分解例における分類パターンの分解の一例を示す説明図である。SQL学習用データ413−ex1にあるSQLデータを分類した後、分類パターン作成装置100は、出現頻度が最も高い分類パターンを分解する。
図10の例では、分類パターン501−1pが最も高い分類パターンであり、SQL学習用データ413−ex1のうち分類パターン501−1pに分類されたSQLデータの個数が3658個であったとする。このとき、分類パターン作成装置100は、分類パターン501−1pに適合したSQLデータ群の各SQLデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。
図10の例では、分類パターン501−1pに適合したSQLデータ群の中にある予約語が、“SELECT”と、“FROM”と、“WHERE”とである。分類パターン501−1pに適合したSQLデータ群の各SQLデータの中の、“SELECT”の直後の文字列としては、それぞれ、“*”、“id”、“id,name”とがある。また、分類パターン501−1pに適合したSQLデータ群の各SQLデータの中の、“FROM”の直後の文字列としては、それぞれ、“TBL1”、“Stores”、“Users”とがある。さらに、分類パターン501−1pに適合したSQLデータ群の各SQLデータの中の、“WHERE”の直後の文字列としては、それぞれ、“year=’2013’”、“num>’50’”とがある。
したがって、分類パターン作成装置100は、予約語“SELECT”と予約語の直後の文字列からなる部分文字列として、“SELECT *”と、“SELECT id”と、“SELECT id,name”と、を抽出する。また、分類パターン作成装置100は、予約語“FROM”と予約語の直後の文字列からなる部分文字列として、“FROM TBL1”と、“FROM Stores”と、“From Users”と、を抽出する。さらに、分類パターン作成装置100は、予約語“WHERE”と予約語の直後の文字列からなる部分文字列として、“WHERE year=’2013’”と、“WHERE num>’50’”と、を抽出する。
続けて、分類パターン作成装置100は、部分文字列に対応して、部分文字列を含むSQLデータの個数が最大となる部分文字列を特定する。
図10の例では、分類パターン作成装置100が“SELECT *”、“SELECT id”、“SELECT id,name”を含むSQL学習用データ413−ex1内のSQLデータを検出した個数は、それぞれ、2,530、500、628である。また、分類パターン作成装置100が“FROM TBL1”、“FROM Stores”、“FROM Users”を含むSQL学習用データ413−ex1内のSQLデータを検出した個数は、それぞれ、3,123、335、200である。さらに、分類パターン作成装置100が“WHERE year=’2013’”、“WHERE num>’50’”を含むSQL学習用データ413−ex1内のSQLデータを検出した個数は、それぞれ、1,500、2,158である。
したがって、分類パターン作成装置100は、部分文字列を含むSQLデータの個数が最大となる部分文字列として、“FROM TBL1”を特定する。そして、分類パターン作成装置100は、特定した部分文字列を用いて、新たな分類パターンを作成する。
具体的に、分類パターン作成装置100は、分類パターン501−1pが分類したSQLデータのうち、最頻出の部分文字列を含むSQLデータを分類する分類パターン1001−pを作成する。併せて、分類パターン作成装置100は、分類パターン501−1pが分類したSQLデータのうち、最頻出以外の部分文字列を含むSQLデータを分類する分類パターン1002−pを作成する。分類パターン1002−pの“(?!TBL1)”は、“TBL1”以外の部分文字列を検出する正規表現である。
なお、特定した部分文字列が、SQLデータ701−4のうちの“WHERE num > (SELECT AVG(num) FROM TBL1)”となったとする。この場合、分類パターン作成装置100は、最頻出の部分文字列を含むSQLデータを分類する分類パターンとして、“SELECT(.*)FROM(.*)WHERE num > (SELECT AVG(num) FROM TBL1)”を作成する。このように、分類パターン作成装置100は、入れ子構造となるSQLデータであっても、分類パターンとして登録することができる。
図11は、第1の分解例におけるSQL分類パターンの更新の一例を示す説明図である。分類パターン作成装置100は、分類パターン501−1pを、分類パターン1001−pと分類パターン1002−pとに分解した内容となるように、SQL分類パターン表414−ex1を更新する。
具体的には、分類パターン作成装置100は、分類パターン1001−pを有するレコード1101−1を1番目の順位として追加するとともに、分類パターン1002−pを有するレコード1101−2を4番目の順位として追加する。レコード1101−2の出現頻度は、SQL学習用データ413−ex1の内の“FROM”の後であり、“WHERE”の前の文字列が“Stores”、“Users”となるSQLデータの個数335、200の和である535となる。そして、分類パターン作成装置100は、レコード801−1を削除する。
図12は、第1の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第1の分解例における分類パターン作成処理は、基本分類表411にある分類パターンを、第1の分解例に従って分割することにより分類パターンを分解する処理である。
分類パターン作成装置100は、基本分類表411−ex1を参照して、SQL学習用データを分類パターンごとに分類する(ステップS1201)。次に、分類パターン作成装置100は、分類結果として、分類パターンと、該当の分類パターンに適合した頻度と“分類可能”識別子とをSQL分類パターン表414−ex1に格納する(ステップS1202)。続けて、分類パターン作成装置100は、分類パターンの数が閾値に達したか否かを判断する(ステップS1203)。分類パターンの数が閾値に達した場合(ステップS1203:Yes)、分類パターン作成装置100は、第1の分解例における分類パターン作成処理を終了する。
分類パターンの数が閾値に達していない場合(ステップS1203:No)、分類パターン作成装置100は、分解可能な分類パターンのうち、出現頻度が最も高い分類パターンを選択する(ステップS1204)。続けて、分類パターン作成装置100は、選択した分類パターンに適合されたSQLデータ群を選択する(ステップS1205)。次に、分類パターン作成装置100は、選択したSQLデータ群の各SQLデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する(ステップS1206)。続けて、分類パターン作成装置100は、部分文字列ごとに、選択したSQLデータ群から、部分文字列を含むSQLデータを検出する(ステップS1207)。
次に、分類パターン作成装置100は、検出したSQLデータの内容が全て同一か否かを判断する(ステップS1208)。検出したSQLデータの内容が全て同一である場合(ステップS1208:Yes)、分類パターン作成装置100は、選択した分類パターンの分解可能フラグを“分解不可能”に設定する(ステップS1209)。そして、分類パターン作成装置100は、ステップS1204の処理に移行する。
検出したSQLデータの内容が全て同一でない場合(ステップS1208:No)、分類パターン作成装置100は、複数の部分文字列のうち、検出したSQLデータの出現頻度が最大の部分文字列を特定する(ステップS1210)。次に、分類パターン作成装置100は、特定した部分文字列を含むSQLデータを分類する新たな分類パターンを作成する(ステップS1211)。続けて、分類パターン作成装置100は、特定した部分文字列を含まないSQLデータを分類する新たな分類パターンを作成する(ステップS1212)。
次に、分類パターン作成装置100は、作成した2つの分類パターンの出現頻度を算出する(ステップS1213)。続けて、分類パターン作成装置100は、作成した2つの分類パターンを用いて、SQL分類パターン表414−ex1を更新する(ステップS1214)。そして、分類パターン作成装置100は、ステップS1203の処理に移行する。第1の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置100は、SQLデータの出現頻度に基づいて分類パターンを分解することができる。
(第2の分解例)
第2の分解例は、平均応答時間に基づいて、分類パターンを分解する例である。以下、図13〜図17を用いて第2の分解例について説明する。第2の分解例における基本分類表411および予約語表412については、それぞれ、第1の分解例における基本分類表411−ex1、予約語表412−ex1と同一であるため、説明を省略する。
図13は、第2の分解例におけるSQL学習用データの一例を示す説明図である。SQL学習用データ413−ex2は、分類パターンを作成するために用いるSQLデータである。図13に示すSQL学習用データ413−ex2は、SQLデータ1301−1〜1301−4を含む。SQLデータ1301−1〜1301−4は、応答時間が付与される。応答時間は、可視化装置が各SQLデータを検出してから、サーバがSQLデータに対応する応答メッセージを送信して、可視化装置が応答メッセージを受信するまでの時間である。
たとえば、SQLデータ1301−1は、“SELECT * FROM TBL1 WHERE num=’100’”を検出してから、15.0[ms]後に応答メッセージがあったことを示す。
図14は、第2の分解例におけるSQL分類パターン表の記憶内容の一例を示す説明図である。SQL分類パターン表414−ex2は、第2の分解例に従って、作成した分類パターンを記憶する情報である。
図14に示すSQL分類パターン表414−ex2は、レコード1401−1〜1401−5を有する。SQL分類パターン表414−ex2は、SQL分類パターン表414−ex1が有する出現頻度フィールドの代わりに、平均応答時間フィールドを有する。
平均応答時間フィールドは、SQL学習用データ413−ex1のSQLデータのうち該当の分類パターンに分類されたSQLデータの応答時間の平均値が格納される。たとえば、レコード1401−1は、1番目の順位の分類パターンとなる分類パターン1401−1pに分類されたSQLデータの平均応答時間が13.5[ms]であり、分解可能であることを示す。
図15は、第2の分解例における分類パターンの分解の一例を示す説明図である。SQL学習用データ413−ex2にあるSQLデータを分類した後、分類パターン作成装置100は、平均応答時間が最も長い分類パターンを分解する。
図15の例では、分類パターン1401−1pが最も高い分類パターンであり、SQL学習用データ413−ex2のうち分類パターン1401−1pに分類されたSQLデータの平均応答時間が13.5[ms]であったとする。このとき、分類パターン作成装置100は、分類パターン1401−1pに適合したSQLデータ群の各SQLデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。抽出した部分文字列の例は、図10で説明した例と同一であるため、説明を省略する。
続けて、分類パターン作成装置100は、部分文字列に対応して、部分文字列を含むSQLデータの平均応答時間が最大となる部分文字列を特定する。
たとえば、“SELECT *”、“SELECT id”、“SELECT id,name”を含むSQL学習用データ413−ex2内のSQLデータの平均応答時間は、それぞれ14.3[ms]、11.3[ms]、9.5[ms]である。また、“FROM TBL1”、“FROM Stores”、“FROM Users”を含むSQL学習用データ413−ex2内のSQLデータの平均応答時間は、それぞれ14.5[ms]、10.8[ms]、11.9[ms]である。さらに、“WHERE year=’2013’”、“WHERE num>’50’”を含むSQL学習用データ413−ex2内のSQLデータの平均応答時間は、それぞれ、11.2[ms]、18.5[ms]である。
したがって、分類パターン作成装置100は、部分文字列を含むSQLデータの平均応答時間が最大となる部分文字列として、“WHERE num>’50’”を特定する。そして、分類パターン作成装置100は、特定した部分文字列を用いて、新たな分類パターンを作成する。
具体的に、分類パターン作成装置100は、分類パターン1401−1pが分類したSQLデータのうち、平均応答時間が最大の部分文字列を含むSQLデータを分類する分類パターン1501−pを作成する。併せて、分類パターン1401−1pが分類したSQLデータのうち、平均応答時間が最大以外の部分文字列を含むSQLデータを分類する分類パターン1502−pを作成する。
さらに、SQLデータ全てに適合した分類パターンとして、“/^(.*)$/”の平均応答時間が最大であったとする。たとえば、日時処理が行われた結果、レコードを削除するSQLデータ“DELETE FROM TBL1”が送信され、顧客システム201のDBサーバ213が“DELETE FROM TBL1”の処理に時間がかかったとする。このとき、分類パターン作成装置100は、“/^(.*)$/”に適合した“DELETE FROM TBL1”や、他のSQLデータを特定する。そして、“DELETE FROM TBL1”の平均応答時間が最大であれば、分類パターン作成装置100は、SQL分類パターン表414−ex2に、“DELETE FROM TBL1”を登録する。
図16は、第2の分解例におけるSQL分類パターンの更新の一例を示す説明図である。分類パターン作成装置100は、分類パターン1401−1pを、分類パターン1501−pと分類パターン1502−pとに分解した内容となるように、SQL分類パターン表414−ex2を更新する。
具体的には、分類パターン作成装置100は、分類パターン1501−pを有するレコード1601−1を1番目の順位として追加するとともに、分類パターン1502−pを有するレコード1601−2を2番目の順位として追加する。レコード1601−2の平均応答時間は、SQL学習用データ413−ex2内の“WHERE”の後の文字列が“year=’2013’”となるSQLデータの平均応答時間である11.2[ms]となる。そして、分類パターン作成装置100は、レコード1401−1を削除する。
なお、図16において、平均応答時間が最大以外の文字列が2以上ある場合の平均応答時間を算出する場合、平均応答時間が最大以外の文字列を有する個数による加重平均を算出すればよい。たとえば、図15において、SQL学習用データ413−ex2内の“FROM”の後であり“WHERE”の前の文字列が“TBL1”となるSQLデータの平均応答時間が最大であったとする。さらに、SQL学習用データ413−ex2内の“FROM”の後であり“WHERE”の前の文字列が“Stores”、“Users”となるSQLデータの個数が、それぞれ、40、50であったとする。
このとき、分類パターン作成装置100は、平均応答時間が最大以外の文字列を含むSQLデータを分類する分類パターンの平均応答時間を、(40×10.8+50×11.9)/(40+50)=11.4[ms]と算出する。
図17は、第2の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第2の分解例における分類パターン作成処理は、基本分類表411にある分類パターンを、第2の分解例に従って分割することにより分類パターンを分解する処理である。また、第2の分解例における分類パターン作成処理は、ステップS1704、ステップS1710、ステップS1713以外のステップの処理内容は、図12の下2桁が同一番号のステップの処理内容と同一であるため、説明を省略する。
ステップS1703:Noの場合、または、ステップS1709の処理終了後、分類パターン作成装置100は、分解可能な分類パターンのうち、平均応答時間が最大の分類パターンを選択する(ステップS1704)。ステップS1704の処理終了後、分類パターン作成装置100は、ステップS1705の処理に移行する。
また、ステップS1708:Noの場合、分類パターン作成装置100は、複数の部分文字列のうち、検出したSQLデータの平均応答時間が最大の部分文字列を特定する(ステップS1710)。ステップS1710の処理終了後、分類パターン作成装置100は、ステップS1711の処理に移行する。
また、ステップS1712の処理終了後、分類パターン作成装置100は、作成した2つの分類パターンの平均応答時間を算出する(ステップS1713)。ステップS1713の処理終了後、分類パターン作成装置100は、ステップS1714の処理に移行する。第2の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置100は、平均応答時間に基づいて分類パターンを分解することができる。
(第3の分解例)
第3の分解例は、合計応答時間に基づいて、分類パターンを分解する例である。以下、図18〜図21を用いて第3の分解例について説明する。第3の分解例における基本分類表411および予約語表412については、それぞれ、第1の分解例における基本分類表411−ex1、予約語表412−ex1と同一であるため、説明を省略する。また、第3の分解例におけるSQL学習用データ413は、SQL学習用データ413−ex2と同一であるため、説明を省略する。
図18は、第3の分解例におけるSQL分類パターン表の記憶内容の一例を示す説明図である。SQL分類パターン表414−ex3は、第3の分解例に従って、作成した分類パターンを記憶する情報である。
図18に示すSQL分類パターン表414−ex3は、レコード1801−1〜1801−5を有する。SQL分類パターン表414−ex3は、SQL分類パターン表414−ex1が有する出現頻度フィールドの代わりに、合計応答時間フィールドを有する。
合計応答時間フィールドは、SQL学習用データ413−ex2のSQLデータのうち該当の分類パターンに分類されたSQLデータの応答時間の合計値が格納される。たとえば、レコード1801−1は、1番目の順位の分類パターンとなる分類パターン1801−1pに分類されたSQLデータの合計応答時間が49.4[s]であり、分解可能であることを示す。
図19は、第3の分解例における分類パターンの分解の一例を示す説明図である。SQL学習用データ413−ex2にあるSQLデータを分類した後、分類パターン作成装置100は、合計応答時間が最も長い分類パターンを分解する。
図19の例では、分類パターン1801−1pが最も高い分類パターンであり、SQL学習用データ413−ex2のうち分類パターン1801−1pに分類されたSQLデータの合計応答時間が49.4[s]であったとする。このとき、分類パターン作成装置100は、分類パターン1801−1pに適合したSQLデータ群の各SQLデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。抽出した部分文字列の例は、図10で説明した例と同一であるため、説明を省略する。
続けて、分類パターン作成装置100は、部分文字列に対応して、部分文字列を含むSQLデータの合計応答時間が最大となる部分文字列を特定する。
たとえば、“SELECT *”、“SELECT id”、“SELECT id,name”を含むSQL学習用データ413−ex2内のSQLデータの合計応答時間は、それぞれ36.2[s]、5.7[s]、6.0[s]である。また、“FROM TBL1”、“FROM Stores”、“FROM Users”を含むSQL学習用データ413−ex2内のSQLデータの合計応答時間は、それぞれ45.3[s]、3.6[s]、2.4[s]である。さらに、“WHERE year=’2013’”と、“WHERE num>’50’”を含むSQL学習用データ413−ex2内の合計応答時間は、それぞれ、16.8[s]、39.9[s]である。
したがって、分類パターン作成装置100は、部分文字列を含むSQLデータの平均応答時間が最大となる部分文字列として、“FROM TBL1’”を特定する。そして、分類パターン作成装置100は、特定した部分文字列を用いて、新たな分類パターンを作成する。
具体的に、分類パターン作成装置100は、分類パターン1801−1pが分類したSQLデータのうち、合計応答時間が最大の部分文字列を含むSQLデータを分類する分類パターン1901−pを作成する。併せて、分類パターン1801−1pが分類したSQLデータのうち、合計応答時間が最大以外の部分文字列を含むSQLデータを分類する分類パターン1902−pを作成する。
図20は、第3の分解例におけるSQL分類パターンの更新の一例を示す説明図である。分類パターン作成装置100は、分類パターン1801−1pを、分類パターン1901−pと分類パターン1902−pとに分解した内容となるように、SQL分類パターン表414−ex3を更新する。
具体的には、そして、分類パターン作成装置100は、分類パターン1901−pを有するレコード2000−1を1番目の順位として追加するとともに、分類パターン1902−pを有するレコード2000−2を4番目の順位として追加する。レコード2001−2の合計応答時間は、“FROM”の後であり、“WHERE”の前の文字列が“Stores”、“Users”となるSQLデータの合計応答時間3.6、2.4の和である6.0[s]となる。そして、分類パターン作成装置100は、レコード1801−1を削除する。
図21は、第3の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第3の分解例における分類パターン作成処理は、基本分類表411にある分類パターンを、第3の分解例に従って分割することにより分類パターンを分解する処理である。また、第3の分解例における分類パターン作成処理は、ステップS2104、ステップS2110、ステップS2113以外のステップの処理内容は、図17の下2桁が同一番号のステップの処理内容と同一であるため、説明を省略する。さらに、ステップS2104、ステップS2110、ステップS2113の処理は、ステップS1704、ステップS1710、ステップS1713の“平均応答時間”が“合計応答時間”に置き換わっただけである。
また、ステップS2104の処理において、“合計応答時間”の代わりに、“平均応答時間”が最大の分類パターンを選択してもよい。さらに、ステップS2110の処理において、“合計応答時間が最大の部分文字列を特定”する代わりに、“出現頻度が最大の部分文字列を特定”してもよい。
第3の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置100は、合計応答時間に基づいて分類パターンを分解することができる。
以上説明したように、分類パターン作成装置100によれば、分類パターン作成装置100は、予約語を含む分類パターンに適合したSQLデータ群の中で予約語と対になる高頻出の文字列を、予約語に続く文字列とする分類パターンを作成する。これにより、分類パターン作製装置100は、システム性能を左右するSQLデータ群を分類するパターンを作成することができる。また、分類パターン作成装置100は、メッセージの複雑さに依存しておらず、システム構成や出現パターンを人間が認識しなくてよい。また、分類パターン作成装置100は、予約語か予約語以外かという単純な解析を行っており、複雑な構文解析を行わなくてよい。以上より、分類パターン作成装置100は、高速かつ低コストで分類パターンを作成することができる。
また、分類パターン作成装置100によれば、SQLデータの出現頻度に基づいて分類パターンを分解してもよい。これにより、作成した分類パターンを利用するシステム可視化装置202は、顧客システム201内で送受信されるSQLデータを、出現頻度という観点で分類することができる。
また、分類パターン作成装置100によれば、SQLデータの平均応答時間に基づいて分類パターンを分解してもよい。平均応答時間が大きいSQLデータは、サーバの処理に時間がかかるSQLデータである。したがって、作成した分類パターンを利用するシステム可視化装置202は、顧客システム201内で送受信されるSQLデータを、顧客システム201のサーバの処理に時間がかかる点で分類することができる。
また、分類パターン作成装置100によれば、SQLデータの合計応答時間に基づいて分類パターンを分解してもよい。平均応答時間が大きいSQLデータは、顧客システム201の性能を支配するデータであり、サーバに高い負荷を与えるデータである。したがって、作成した分類パターンを利用するシステム可視化装置202は、顧客システム201内で送受信されるSQLデータを、顧客システム201のサーバの負荷が高い順で分類することができる。
(実施の形態2)
実施の形態1にかかる分類パターン作成装置100は、過去に採取したSQLデータを用いて、分類パターンを作成する。この場合、過去に採取したSQLデータと、運用中に送受信されるSQLデータの傾向が変化し、分類パターンに適合しないSQLデータが多くなる可能性がある。たとえば、過去に採取したSQLデータが日中に取得したデータであり、運用中のSQLデータとして、夜間発行されたデータである場合である。
そこで、実施の形態2にかかる分類パターン作成装置は、運用中に分類パターンを更新することを特徴とする。なお、実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。また、実施の形態2にかかる分類パターン作成装置における、基本分類パターンの分解については、第1の分解例〜第3の分解例のうちいずれの分解例を適用してもよい。以下の説明では、第1の分解例を適用した例を用いて説明する。
図22は、システム可視化装置と実施の形態2にかかる分類パターン作成装置との機能構成例を示すブロック図である。実施の形態2にかかる分類パターン作成装置2200は、分類部405と、検出部407〜作成部409と、取得部2201と、算出部2202と、判断部2203と、抽出部2204と、を有する。取得部2201〜抽出部2204は、記憶装置に記憶されたプログラムをCPU301が実行することにより、取得部2201〜抽出部2204それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、ディスク305などである。また、取得部2201〜抽出部2204は、記憶装置に記憶されたプログラムをシステム可視化装置202のCPUが実行してもよい。
また、分類パターン作成装置2200は、実データDB2211にアクセス可能である。実データDB2211は、RAM303、ディスク305といった記憶装置に格納される。実データDB2211は、SQL学習用データ413と同一のデータ構造である。実データDB2211は、システム可視化装置202によって運用中に組み立てられたSQLデータを格納する記憶領域である。
取得部2201は、顧客システム201内の各サーバによって送信または受信されたSQLデータ群を実データDB2211から取得する。
算出部2202は、取得部2201が取得したサーバによって送信または受信されたSQLデータ群が第2の分類パターンに適合する割合を算出する。たとえば、取得部2201が取得したSQLデータ群が1000個であり、第2のパターン文字列に適合したSQLデータが50であれば、算出部2202は、50/1000=5[%]と算出する。また、作成した第2の分類パターンが複数あれば、算出部2202は、第2の分類パターンに適合した割合の合計を算出する。第2の分類パターンに適合した割合の合計を、以下、「パターン適合率」と称する。なお、算出結果は、RAM303、ディスク305といった記憶装置に格納される。
判断部2203は、算出部2202が算出したパターン適合率に基づいて、第2の分類パターンを再度作成するか否かを判断する。たとえば、判断部2203は、パターン適合率が所定の閾値未満であれば、第2の分類パターンを再度作成すると判断する。なお、判断結果は、RAM303、ディスク305といった記憶装置に格納される。
抽出部2204は、抽出部406が有する機能を有する。さらに、抽出部2204は、判断部2203が第2の分類パターンを再度作成すると判断した場合、取得部2201が取得したSQLデータ群のうちの第1の分類パターンに適合するSQLデータ群を抽出する。そして、抽出部2204は、抽出したSQLデータ群に含まれるSQLデータに対応して、SQLデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。
図23は、実施の形態2にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。実施の形態2にかかる分類パターン再作成判定処理は、分類パターンを再作成するか否かを判定する処理である。また、分類パターン再作成判定処理は、分類パターン作成装置2200とシステム可視化装置202とが協働して実行することが好ましい。理由として、後述するステップS2303の処理の一部とステップS2304との処理は、元々システム可視化装置202が行っている処理であるためである。
以下の説明では、分類パターン作成装置2200が、ステップS2303の処理の一部と、ステップS2304との処理と、以外の処理全てを行うこととする。逆に、分類パターン作成装置2200が、ステップS2308とステップS2309との処理を行い、他の処理をシステム可視化装置202が行ってもよい。
分類パターン作成装置2200は、更新時刻を現在時刻+一定期間に設定する(ステップS2301)。次に、分類パターン作成装置2200は、パターン適合率を0に設定する(ステップS2302)。続けて、システム可視化装置202は、パケットデータから組み立てたSQLデータを実データDB2211に格納する(ステップS2303)。システム可視化装置202から実データDB2211にSQLデータを格納したことの通知を受けた後、分類パターン作成装置2200は、実データDB2211からSQLデータを取得して、分類パターンに適合したか否かを判定する(ステップS2304)。なお、基本分類表411に、SQLデータ全てに適合した分類パターンを用意した場合、分類パターン作成装置2200は、SQLデータ全てに適合した分類パターン以外の分類パターンに適合した場合に、分類パターンに適合したと判定する。
ここで、ステップS2303の処理のうちの、“パケットデータからSQLデータを組み立てる”処理と、ステップS2304の処理のうちの、“分類パターンに適合したか否か判定する”処理については、元々システム可視化装置202が行っている処理である。したがって、図23の処理のうち、ステップS2303の処理の一部と、ステップS2304との処理と、以外の処理全てを、分類パターン作成装置2200が行ってもよい。
次に、システム可視化装置202は、パターン適合率を、分類パターンに適合したか否かの判定結果を用いて算出する(ステップS2305)。続けて、システム可視化装置202は、更新時刻が現在時刻より小さいか否かを判断する(ステップS2306)。更新時刻が現在時刻以上である場合(ステップS2306:No)、システム可視化装置202は、ステップS2303の処理に移行する。
更新時刻が現在時刻より小さい場合(ステップS2306:Yes)、システム可視化装置202は、パターン適合率が所定の閾値より小さいか否かを判断する(ステップS2307)。所定の閾値の指定は、分類パターン作成装置2200の開発者や、顧客システム201の管理者が行う。
パターン適合率が所定の閾値より小さい場合(ステップS2307:Yes)、システム可視化装置202は、分類パターン作成装置2200に、実データDB2211のSQLデータをSQL学習用データ413として、SQL分類パターン表414を再作成するように指示する(ステップS2308)。指示後、システム可視化装置202は、分類パターン作成装置2200から通知があるまで待機する。SQL分類パターン表414の再作成について、分類パターン作成装置2200は、SQL分類パターン表414の全レコードを削除して、図12に示した処理を行う。続けて、分類パターン作成装置2200は、再作成した分類パターンを、SQL分類パターン表414に反映する(ステップS2309)。ステップS2309の処理終了後、分類パターン作成装置2200は、システム可視化装置202に反映完了の通知を行う。
通知を受け付けたシステム可視化装置202は、パターン適合率を0に設定する(ステップS2310)。ステップS2310の処理終了後、または、パターン適合率が所定の閾値以上である場合(ステップS2307:No)、システム可視化装置202は、更新時刻を現在時刻+一定期間に設定する(ステップS2311)。ステップS2311の処理終了後、システム可視化装置202は、ステップS2303の処理に移行する。実施の形態2にかかる分類パターン再作成判定処理を実行することにより、分類パターン作成装置2200は、パターン適合率が低下した際に、分類パターンを再作成することができる。
以上説明したように、分類パターン作成装置2200によれば、顧客システム201内のサーバによって送信または受信されたSQLデータが、第2の分類パターンに適合するパターン適合率を算出してもよい。分類パターン作成装置2200は、パターン適合率を管理者端末203に出力して、管理者端末203の管理者が、パターン適合率を閲覧して第2の分類パターンを再作成するか否かを判断することができる。
また、分類パターン作成装置2200によれば、パターン適合率に基づいて第2の分類パターンを再度作成すると判断した場合、顧客システム201内の各サーバによって送信または受信されたSQLデータ群を用いて第2の分類パターンを作成してもよい。これにより、作成した分類パターンを利用するシステム可視化装置202は、顧客システム201内で送受信されるSQLデータの傾向が変化した場合でも、SQLデータの傾向に応じた分類パターンでSQLデータを分類することができる。
(実施の形態3)
実施の形態2にかかる分類パターン作成装置は、運用中に分類パターンを初期化して、一から再作成を行う。この場合、新たに作成した分類パターンと、初期化する前の分類パターンとが大きく異なる場合がある。そこで、実施の形態3にかかる分類パターン作成装置は、分類パターンを一から再作成するか、今使用中の分類パターンを残すか否かを判断することを特徴とする。なお、実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。また、実施の形態3にかかる分類パターン作成装置における、基本分類パターンの分解については、第1の分解例〜第3の分解例のうちいずれの分解例を適用してもよい。以下の説明では、第1の分解例を適用した例を用いて説明する。
図24は、システム可視化装置と実施の形態3にかかる分類パターン作成装置の機能構成例を示すブロック図である。実施の形態3にかかる分類パターン作成装置2400は、分類部405と、検出部407〜作成部409と、取得部2201と、抽出部2204と、算出部2401と、判断部2402と、削除部2403と、を有する。算出部2401〜削除部2403は、記憶装置に記憶されたプログラムをCPU301が実行することにより、算出部2401〜削除部2403それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、ディスク305などである。また、算出部2401〜削除部2403は、記憶装置に記憶されたプログラムをシステム可視化装置202のCPUが実行してもよい。
算出部2401は、算出部2202が有する機能を有する。さらに、算出部2401は、第2の分類パターンを作成した場合、SQL学習用データ413のSQLデータ群が第2の分類パターンに適合する割合を算出する。
判断部2402は、判断部2203が有する機能を有する。さらに、判断部2402は、SQLデータ群が第2の分類パターンに適合する割合と、取得部2201が取得したSQLデータ群が第2の分類パターンに適合する割合との差に基づいて、第2の分類パターンを削除するか否かを判断する。具体的な判断例は、図27で示す。
削除部2403は、判断部2402が第2の分類パターンを再度作成すると判断し、かつ、第2の分類パターンを削除すると判断した場合、古い第2の分類パターンを削除する。古い第2の分類パターンとは、顧客システム201の各サーバによって送信または受信されたSQLデータ群を取得する前に作成したパターンである。
図25は、実施の形態3にかかるSQL分類パターン表の記憶内容の例を示す説明図である。SQL分類パターン表2411は、第1の分解例に従って、作成した分類パターンを記憶する情報である。また、SQL分類パターン表2411は、学習時SQLデータに対して分類を行ったSQL分類パターン用と、運用時における実データDB2211のSQLデータに対して分類を行ったSQL分類パターン用と、の2つがある。
図25に示すSQL分類パターン表2411は、レコード2501−1〜2501−5を有する。SQL分類パターン表2411は、SQL分類パターン表414−ex1が有するフィールドと、さらに、出現率フィールドを有する。
出現率フィールドは、該当のSQL分類パターンが、学習時SQLデータ、または、実データDB2211のSQLデータに出現した割合を示す。たとえば、レコード2501−1は、1番目の順位の分類パターンとなる分類パターン2501−1pに分類されたSQLデータの出現頻度が3,658であり、出現率が31.2[%]であり、分解可能であることを示す。
次に、図26〜図28を用いて、実施の形態3にかかるフローチャートの説明を行う。なお、運用前に行う分類パターン初期作成処理は、図12に示す第1の分解例における分類パターン作成処理とほぼ同一であるため、図示を省略する。図12のフローチャートからの変更点として、ステップS1201の処理の実行後、分類パターン作成装置2400は、各分類パターンの出現率を算出する。そして、ステップS1201の処理の実行後、分類パターン作成装置2400は、作成した2つの分類パターンに対する出現率を算出する。
図26は、実施の形態3にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。実施の形態3にかかる分類パターン再作成判定処理は、分類パターンを再作成するか否かを判定する処理である。また、ステップS2601〜ステップS2605、ステップS2607、ステップS2608、ステップS2610〜ステップS2612は、ステップS2301〜ステップS2307、ステップS2309〜ステップS2311と同一処理のため、説明を省略する。
ステップS2605の処理終了後、分類パターン作成装置2400は、各分類パターンの出現率を、分類パターンに適合したか否かの判定結果を用いて更新する(ステップS2606)。ステップS2606の処理終了後、分類パターン作成装置2400は、ステップS2607の処理に移行する。
ステップS2608:Yesの場合、分類パターン作成装置2400は、分類パターン再作成処理を実行する(ステップS2609)。分類パターン再作成処理については、図27および図28で説明する。ステップS2609の処理終了後、分類パターン作成装置2400は、ステップS2610の処理に移行する。実施の形態3にかかる分類パターン再作成判定処理を実行することにより、分類パターン作成装置2400は、パターン適合率が低下した際に、分類パターンを再作成することができる。
図27は、実施の形態3にかかる分類パターン再作成処理手順の一例を示すフローチャート(その1)である。また、図28は、実施の形態3にかかる分類パターン再作成処理手順の一例を示すフローチャート(その2)である。実施の形態3にかかる分類パターン再作成処理は、分類パターンを再作成する処理である。
分類パターン作成装置2400は、前回学習時における分類パターンの出現率の分布と、運用時における分類パターンの出現率の分布とのずれを算出する(ステップS2701)。ずれの具体的な算出方法として、たとえば、分類パターン作成装置2400は、前回学習時のSQL分類パターン表2411と、運用時におけるSQL分類パターン表2411と、の1番目の分類パターンの出現率の差の2乗を求める。同様に、分類パターン作成装置2400は、前回学習時と運用時とにおける2番目の分類パターンの出現率の差の2乗、…、を求めた後、出現率の差の2乗の累計を、ずれとして算出する。また、分類パターン作成装置2400は、差の2乗の和以外に、前回学習時と運用時とにおける出現率の分散値や、標準偏差をずれとしてもよい。
次に、分類パターン作成装置2400は、ずれが所定のずれ量以上か否かを判断する(ステップS2702)。ずれが所定のずれ量以上である場合(ステップS2702:Yes)、分類パターン作成装置2400は、SQL分類パターン表2411の各レコードを削除する(ステップS2703)。一方、ずれが所定のずれ量未満である場合(ステップS2702:No)、分類パターン作成装置2400は、現在のSQL分類パターン表2411の末尾に基本分類表411の分類パターンを追加する(ステップS2704)。続けて、分類パターン作成装置2400は、各分類パターンの出現率を0に設定する(ステップS2705)。
ステップS2703、またはステップS2705の処理終了後、分類パターン作成装置2400は、基本分類表411を参照して、実データDB2211のSQLデータを分類パターンごとに分類する(ステップS2706)。次に、分類パターン作成装置2400は、各分類パターンの出現率を算出する(ステップS2707)。
ステップS2707の処理終了後、または、後述するステップS2806、ステップS2812の処理終了後、分類パターン作成装置2400は、出現頻度が0より大きい分類パターンの数が所定の閾値に達したか否かを判断する(ステップS2708)。出現頻度が0より大きいSQL分類パターンの数が所定の閾値に達していない場合(ステップS2708:No)、分類パターン作成装置2400は、続けて、分解可能な分類パターンがあるか否かを判断する(ステップS2709)。分解可能な分類パターンがない場合(ステップS2709:No)、分類パターン作成装置2400は、図28に示すステップS2801の処理に移行する。
出現頻度が0より大きいSQL分類パターンの数が所定の閾値に達した場合(ステップS2708:Yes)、または、分解可能な分類パターンがある場合(ステップS2709:Yes)、分類パターン作成装置2400は、出現頻度が多い順に、所定の閾値分の分類パターンを選択する(ステップS2710)。次に、分類パターン作成装置2400は、選択しなかった分類パターンを削除する(ステップS2711)。ステップS2711の処理終了後、分類パターン作成装置2400は、実施の形態3にかかる分類パターン再作成処理を終了する。
図28における、ステップS2801〜ステップS2810、ステップS2812の処理は、図12におけるステップS1204〜ステップS1214と同一処理であるため、説明を省略する。ステップS2810の処理終了後、分類パターン作成装置2400は、作成した2つの分類パターンの出現率を算出する(ステップS2811)。ステップS2811の処理終了後、分類パターン作成装置2400は、ステップS2812の処理に移行する。実施の形態3にかかる分類パターン再作成処理を実行することにより、分類パターン作成装置2400は、過去の分類パターンを継承して分類パターンを再作成することができる。
以上説明したように、分類パターン作成装置2400によれば、取得したSQLデータ群の第2の分類パターンのパターン適合率と、SQL学習用データ413の第2の分類パターンのパターン適合率との差に基づいて、古い第2の分類パターンを削除してもよい。古い第2の分類パターンを削除しないことにより、作成した分類パターンを利用するシステム可視化装置202は、分類パターンが変わるたびに可視化された分類結果の見え方が大きく変わるということを抑制することができる。
なお、本実施の形態で説明した分類パターン作成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分類パターン作成プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分類パターン作成プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態1〜3に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
プロトコルにより定義された予約語を含む第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第1のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第2のパターン文字列を作成する、
処理を実行することを特徴とする分類パターン作成方法。
(付記2)前記特定する処理は、
前記部分文字列に対応して検出した前記メッセージの個数に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記1に記載の分類パターン作成方法。
(付記3)前記メッセージ群に含まれるメッセージは、サーバに処理を要求するメッセージであり、
前記特定する処理は、
前記メッセージ群の各々のメッセージと、前記各々のメッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間と、を関連付けた情報を参照して、前記部分文字列に対応して検出した前記メッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記1または2に記載の分類パターン作成方法。
(付記4)前記特定する処理は、
前記情報を参照して、前記部分文字列に対応して検出した前記メッセージの前記応答時間を累積した合計応答時間に基づいて、前記メッセージに対応して検出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記3に記載の分類パターン作成方法。
(付記5)前記メッセージ群は、前記コンピュータに接続されたサーバによって送信または受信されたメッセージであり、
前記コンピュータが、
前記サーバによって送信または受信されたメッセージ群を取得し、
取得した前記サーバによって送信または受信されたメッセージ群が前記第2のパターン文字列に適合する割合を算出する、
処理を実行することを特徴とする付記1〜4のいずれか一つに記載の分類パターン作成方法。
(付記6)前記コンピュータが、
算出した前記割合に基づいて、前記第2のパターン文字列を再度作成するか否かを判断する、処理を実行し、
前記部分文字列を抽出する処理は、
前記第2のパターン文字列を再度作成すると判断した場合、取得した前記サーバによって送信または受信されたメッセージ群のうちの前記第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出することを特徴とする付記5に記載の分類パターン作成方法。
(付記7)前記コンピュータが、
前記第2のパターン文字列を作成した場合、前記メッセージ群が前記第2のパターン文字列に適合する割合を算出し、
前記メッセージ群が前記第2のパターン文字列に適合する割合と、取得した前記サーバによって送信または受信されたメッセージ群が前記第2のパターン文字列に適合する割合との差に基づいて、前記第2のパターン文字列を削除するか否かを判断し、
前記第2のパターン文字列を再度作成すると判断し、かつ、前記第2のパターン文字列を削除すると判断した場合、前記サーバによって送信または受信されたメッセージ群を取得する前に作成した前記第2のパターン文字列を削除する、
処理を実行することを特徴とする付記6に記載の分類パターン作成方法。
(付記8)プロトコルにより定義された予約語を含む第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する抽出部と、
前記抽出部が抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出する検出部と、
前記部分文字列に対応して前記検出部が検出した前記メッセージに基づいて、前記メッセージに対応して前記抽出部が抽出した前記部分文字列からいずれかの部分文字列を特定する特定部と、
前記第1のパターン文字列と前記特定部が特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第2のパターン文字列を作成する作成部と、
を有することを特徴とする分類パターン作成装置。
(付記9)プロトコルにより定義された予約語を含む第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する抽出部と、
前記抽出部が抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出する検出部と、
前記部分文字列に対応して前記検出部が検出した前記メッセージに基づいて、前記メッセージに対応して前記抽出部が抽出した前記部分文字列からいずれかの部分文字列を特定する特定部と、
前記第1のパターン文字列と前記特定部が特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第2のパターン文字列を作成する作成部と、
を有するコンピュータを含むことを特徴とする分類パターン作成装置。
(付記10)コンピュータに、
プロトコルにより定義された予約語を含む第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第1のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第2のパターン文字列を作成する、
処理を実行させることを特徴とする分類パターン作成プログラム。
(付記11)プロトコルにより定義された予約語を含む第1のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第1のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第2のパターン文字列を作成する、
処理を実行させる分類パターン作成プログラムを記録したことを特徴とする記録媒体。