スキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラム
【課題】スキーマ定義を自動で生成することで、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することを課題とする。
【解決手段】スキーマ生成装置1の要素比較作成部2は、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベース5への問い合わせ履歴情報に含まれるテーブル情報とを比較し、構成要素情報とテーブル情報との対応関係を示す対応関係情報を作成する。関係比較作成部3は、検索式に含まれる構成要素間の関係を示す関係情報と、問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。スキーマ生成部4は、要素比較作成部2によって作成された対応関係情報と、関係比較作成部3によって作成された対応関係情報とを用いて、スキーマ定義を作成する。
【解決手段】スキーマ生成装置1の要素比較作成部2は、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベース5への問い合わせ履歴情報に含まれるテーブル情報とを比較し、構成要素情報とテーブル情報との対応関係を示す対応関係情報を作成する。関係比較作成部3は、検索式に含まれる構成要素間の関係を示す関係情報と、問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。スキーマ生成部4は、要素比較作成部2によって作成された対応関係情報と、関係比較作成部3によって作成された対応関係情報とを用いて、スキーマ定義を作成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラムに関する。
【背景技術】
【0002】
近年、複数の業務システム同士での提携やマルチベンダ運用管理環境における情報管理のために、異なるシステム間の情報を仮想的に統合するFCMDB(Federated Configuration Management Database)を有する情報管理システムが知られている。
【0003】
例えば、図33に例示するように、FCMDBは、構成情報管理システムと保守契約情報管理システムとのそれぞれに記憶されるデータを仮想的に統合して管理する。ここで、FCMDBは、複数のスキーマで記述されたデータを管理することで、複数のシステムに記憶されるデータを仮想的に統合している。
【0004】
このため、情報管理システムの目的に応じたスキーマ定義を手動で作成する作業が実施されている。具体的には、スキーマ定義を作成する作業として、FCMDBの管理項目をCIまたはRelationshipとして設計し、統合時に必要となる情報を選別した後、FCMDBのスキーマ定義を管理者が手動で作成している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2001−518670号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のスキーマ定義を手動で作成する方式では、複数のシステムに対して繰り返し作業が発生することや、必要となる情報を選別することを手動で行うので、スキーマ定義作成作業に工数が掛かり、スキーマ定義を迅速に作成できないという課題があった。
【0007】
一つの側面では、スキーマ定義を自動的に作成することで、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することを目的とする。
【課題を解決するための手段】
【0008】
第一の案では、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報とリレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較して、対応関係情報を作成する。そして、検索式に含まれる構成要素間の関係を示す関係情報と問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較して、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。その後、作成された対応関係情報を用いて、構成要素情報のスキーマ定義および関係情報のスキーマ定義を作成する。
【発明の効果】
【0009】
スキーマ定義を自動で生成することで、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することができる。
【図面の簡単な説明】
【0010】
【図1】図1は、実施例1に係るスキーマ生成装置の構成を示すブロック図である。
【図2】図2は、実施例2に係るスキーマ生成装置の構成を示すブロック図である。
【図3】図3は、検索式の一例を示す図である。
【図4】図4は、SQLのログを示す図である。
【図5】図5は、CI名リストの一例を示す図である。
【図6】図6は、テーブル名リストの一例を示す図である。
【図7】図7は、CI候補リストの一例を示す図である。
【図8】図8は、Relationship候補リストの一例を示す図である。
【図9】図9は、CIとテーブルの対応関係を生成する処理を説明する図である。
【図10】図10は、異なるスキーマのテーブル間で辞書を生成する処理を説明する図である。
【図11】図11は、RelationshipとSQL文の対応関係を生成する処理を説明する図である。
【図12】図12は、スキーマを生成する処理を説明する図である。
【図13】図13は、実施例2に係るスキーマ生成装置の処理動作全体を示すフローチャートである。
【図14】図14は、実施例2に係るスキーマ生成装置のCIマッチング処理の動作を示すフローチャートである。
【図15】図15は、実施例2に係るスキーマ生成装置のRelationshipマッチング処理の動作を示すフローチャートである。
【図16】図16は、実施例2に係るスキーマ生成装置のスキーマ生成処理の動作を示すフローチャートである。
【図17】図17は、実施例3に係るスキーマ生成装置の構成を示すブロック図である。
【図18】図18は、テーブル未割当リストの一例を示す図である。
【図19】図19は、リコンサイル候補リストの一例を示す図である。
【図20】図20は、CI・Relationshipリストの一例を示す図である。
【図21】図21は、CI未割当リストの一例を示す図である。
【図22】図22は、パターンリストの一例を示す図である。
【図23】図23は、CI名に対応付けられていないテーブルに対するリコンサイル先推定処理を説明する図である。
【図24】図24は、検索式によって推定したモデルを辿れるかどうか検証する図である。
【図25】図25は、検証に失敗した場合の再検証処理を説明する図である。
【図26】図26は、検証に失敗した場合の再検証処理を具体的に説明する図である。
【図27】図27は、スキーマを生成する処理を説明する図である。
【図28】図28は、実施例3に係るスキーマ生成装置の処理動作全体を示すフローチャートである。
【図29】図29は、実施例3に係るスキーマ生成装置のCIマージ処理の動作を示すフローチャートである。
【図30】図30は、実施例3に係るスキーマ生成装置の検証処理の動作を示すフローチャートである。
【図31】図31は、実施例3に係るスキーマ生成装置のパターン変更処理の動作を示すフローチャートである。
【図32】図32は、スキーマ生成プログラムを実行するコンピュータを示す図である。
【図33】図33は、データセンタの構成を説明する図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示するスキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0012】
まず、図1を用いて、実施例1に係るスキーマ生成装置の構成について説明する。図1は、実施例1に係るスキーマ生成装置の構成を示すブロック図である。
【0013】
実施例1に係るスキーマ生成装置1は、要素比較作成部2、関係比較作成部3およびスキーマ生成部4を有し、リレーショナルデータベース5(図1では、「RDB」と記載)と接続される。また、スキーマ生成装置1は、管理対象である構成要素を示す構成要素情報を検索するための検索式の入力を受け付けるとともに、リレーショナルデータベース5から問い合わせ履歴情報を収集する。
【0014】
要素比較作成部2は、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベース5への問い合わせ履歴情報に含まれるテーブル情報とを比較し、構成要素情報とテーブル情報との対応関係を示す対応関係情報を作成する。
【0015】
関係比較作成部3は、検索式に含まれる構成要素間の関係を示す関係情報と、問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。
【0016】
スキーマ生成部4は、要素比較作成部2によって作成された対応関係情報と、関係比較作成部3によって作成された対応関係情報とを用いて、構成要素情報のスキーマ定義および関係情報のスキーマ定義を生成する。
【0017】
つまり、実施例1に係るスキーマ生成装置1では、検索式や問い合わせ履歴情報などの既存の情報を利用することで、スキーマ定義を自動で生成することができる結果、スキーマ作成の工数を削減することができる。
【実施例2】
【0018】
以下に、実施例2に係るスキーマ生成装置の構成および処理の流れを順に説明し、最後に実施例2による効果を説明する。
【0019】
[スキーマ生成装置の構成]
まず、図2を用いて、スキーマ生成装置10の構成を説明する。図2は、実施例2に係るスキーマ生成装置の構成を示すブロック図である。図2に示すように、このスキーマ生成装置10は、管理DB11、検索式解析部12、SQLログ収集部13、要素分析部14、関係分析部15、スキーマ生成部16を有し、RDB20と接続される。
【0020】
また、スキーマ生成装置10は、FCMDB向けに拡張したXpath(XML Path Language)で記述された検索式(例えば、後に詳述する図3参照)を受け付けるとともに、RDB20に記憶されたSQLログ(例えば、後に詳述する図4参照)を収集する。ここで、検索式とは、CIを検索するための検索式のことをいい、検索式にはCIおよびRelationshipの情報や構造が含まれている。また、SQLログとは、リレーショナルデータベースへ問い合わせた履歴のことをいい、SQLログにはテーブルの情報やテーブル間の関係が含まれている。
【0021】
FCMDB向けに拡張した検索式は、情報を要求するCIの種別やRelationshipなどを指定する。例えば、サーバ装置の情報、すなわちCI種別「Server」を有するCIの情報を要求する場合、検索式は「%Server」で表される。なお、名称の前に「%」を付すことにより、その名称がCIの名称であることが特定される。
【0022】
また、CI及びRelationshipを交互に並べることで、CI間の関係を辿る検索が可能となる。例えば、サーバ装置の管理者の情報を要求する場合、検索式は、「%Server==>%User」で表される。なお、「==>」はRelationshipを示す。
【0023】
また、「%」の後に「*」を付すことにより、全てのCI種別を指定した検索が可能となる。例えば、「%Server==>%*」で表される検索式は、CI種別「Server」と何らかの関係を持つCIの情報が要求されていることを示す。
【0024】
また、CI種別の後に、要求するCIを具体的に指定する情報を付すことにより、CIについての詳細検索が可能となる。例えば、名前がAであるようなサーバ装置の情報を要求する検索式は、「%Server[@name=='A']」で表される。
【0025】
管理DB11は、各種処理に必要なデータを記憶するとともに、CI名リスト11a、テーブル名リスト11b、CI候補リスト11c、Relationship候補リスト11dを記憶する。
【0026】
CI名リスト11aは、検索式に含まれるCI名を記憶する。具体的には、CI名リスト11aは、図5に示すように、CI名を一意に識別する「ID」と、検索式に含まれる「CI名」とを対応付けて記憶する。例えば、図3の例を用いて具体的に説明すると、CIリスト11aは、図3に例示する検索式に含まれるCI名「Service」、「Server」、「CPU」をそれぞれ記憶する。
【0027】
テーブル名リスト11bは、SQLログに含まれるテーブル名を記憶する。具体的には、テーブル名リスト11bは、図6に示すように、テーブル名を一意に識別する「ID」と、テーブルのスキーマ種別を示す「スキーマ」と、SQLログに含まれる「テーブル名」とを対応付けて記憶する。
【0028】
CI候補リスト11cは、CI名リスト11aに記憶されたCI名のうち、テーブル名リスト11bに記憶されたテーブル名と一致するCI名をCI候補として記憶する。具体的には、図7に示すように、CI候補リスト11cは、CI候補を一意に識別する「ID」と、CI候補の「CI名」と、CI名と一致するテーブル名のIDを示す「テーブル」とを対応付けて記憶する。
【0029】
Relationship候補リスト11dは、CI名候補リスト11cのうち、検索式中でRelationship名の前後のCIに対応するテーブル名の組をRelationship候補として記憶する。具体的には、Relationship候補リスト11dは、図8に示すように、Relationship候補を一意に識別する「ID」と、Relationship名の前後のCIに対応するテーブル名の組である「テーブル(1)」および「テーブル(2)」と、テーブル名の組のSQL文での関係を示す「関係」とを対応付けて記憶する。
【0030】
ここで、図4のSQLログの例を用いて、テーブル名の組のSQLでの関係について説明する。SQLログに含まれる特定のSQL文(例えば、副文問い合わせ、結合、キー制約など)から、テーブル名の組のSQLでの関係を特定する。例えば、図4に例示するように、テーブル名「server」にキー制約を示す「FOREGN KEY(serviceid)」が含まれている。この場合には、テーブル名「service」とテーブル名「Server」との関係が「キー制約」であるものとしてRelationship候補リスト11dに記憶される。
【0031】
また、図4のSQLログにおいて、テーブル名「PhysicalServer」に結合を示す「JOIN CPU ON」が含まれている。この場合には、テーブル名「PhysicalServer」とテーブル名「CPU」との関係が「結合」であるものとしてRelationship候補リスト11dに記憶される。
【0032】
検索式解析部12は、拡張したXpath(XML Path Language)で記述された検索式を解析してCI名リスト11aを生成する。具体的には、検索式解析部12は、図3に例示するような検索式を受け付けると、検索式を分割してCI名リスト11aを生成し、生成したCI名リストを管理DB11に格納する。例えば、検索式解析部12は、図3に例示する検索式を受け付けた場合には、検索式を「Service」、「Server」、「CPU」に分割し、CI名「Service」、「Server」および「CPU」を管理DB11のCI名リスト11aに記憶させる。
【0033】
SQLログ収集部13は、RDB20からSQLログを収集する。具体的には、SQLログ収集部13は、SQLログをRDB20から収集し、テーブル名リスト11bを生成し、生成したテーブル名リスト11bを管理DB11に記憶させる。例えば、SQLログ収集部13は、図4に例示するSQLログを収集した場合には、テーブル名「Service」、「Server」、「PhysicalServer」、「CPU」および「User」を管理DB11のテーブル名リスト11bに記憶させる。
【0034】
要素分析部14は、CIを検索するための検索式に含まれるCI情報と、リレーショナルデータベース20へのSQLログに含まれるテーブル情報を比較し、構成要素情報とテーブル情報との対応関係を示すCI候補リスト11cを作成する。具体的には、要素分析部14は、CI名リスト11aからCI名を一つ取り出し、テーブル名リスト1bからテーブル名を1件取得する。
【0035】
そして、要素分析部14は、比較関数群(完全比較や部分比較)を用いて、CI名とテーブル名とを比較し、CI名とテーブル名とが一致するか判定する。この結果、要素分析部14は、CI名とテーブル名とが一致した場合には、対応関係を生成してCI候補リスト11cに格納する。
【0036】
ここで、図9を用いて、CIとテーブルの対応関係を生成する処理について説明する。図9は、CIとテーブルの対応関係を生成する処理を説明する図である。図9に示すように、要素分析部14は、検索式に含まれるCI名とSQLログに含まれるテーブル名のマッチングを行い、CIとテーブルの関係の候補をリストアップし、CI候補リスト11cに記憶させる。
【0037】
また、要素分析部14は、全てのテーブル名について比較する処理を済ませた後に、CI名リスト11aから1件CIを取得し、CI候補リスト11cに該当CI名が複数件存在する場合には、同一のCI名同士の対応関係を記憶する辞書を生成してもよい。
【0038】
ここで、図10を用いて、異なるスキーマのテーブル間で辞書を生成する処理について説明する。例えば、図10に例示するように、要素分析部14は、CI候補リストにCI名「Server」が複数件存在し、スキーマが異なるテーブルが割り当てられた場合には、既存の辞書生成方式用いて、CI名「Server」同士の関係が紐付けられた辞書情報を作成する。
【0039】
関係分析部15は、検索式に含まれるRelationshipと、SQLログに含まれるとテーブル間の関係を示す特定のSQL文とを比較し、RelationshipとSQLとの対応関係を示すRelationship候補リスト11dを作成する。具体的には、関係分析部15は、検索式からRelationshipを一つ取り出すと、リレーションシップの前後のCIに対応するテーブル名をCI候補リスト11cから取り出す。
【0040】
そして、関係分析部15は、SQLログ中の関係をリストアップし、対応するRelationshipとの関係の有無と種類をRelationship候補リスト11dに格納する。ここで、図11を用いて、RelationshipとSQL文の対応関係を生成する処理を説明する。図11は、RelationshipとSQL文の対応関係を生成する処理を説明する図である。図11に示すように、関係分析部15は、検索式中で着目するRelationshipが結ぶCIに紐付けられたテーブルをCI候補リスト11cから取得し、テーブル名を含む特定のSQLを検索する。
【0041】
例えば、図11の例では、CI名「Sevice」とCI名「Server」との関係を示すRelationshipに着目した場合に、関係分析部15は、CI名「Sevice」に紐付けられたテーブル名「Service」とCI名「Server」に紐付けられたテーブル名「PhysicalServer」とを含む特定のSQL文を検索する。この結果、関係分析部15は、「CREATE TABLE PhysicalServer・・・FOREIGN KEY(cpuid)REFERENCES CPU(id)」を取得する。
【0042】
ここで、関係分析部15は、キー制約を示す「FOREIGN KEY」が含まれているので、リレーションシップ候補リストに関係の種類「キー制約」であることをRelationship候補リスト11dに記憶する。
【0043】
スキーマ生成部16は、CI候補リスト11cおよびRelationship候補リスト11dを用いて、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。具体的には、スキーマ生成部16は、CI名リスト11aから1件取り出し、CI候補リスト11cとテーブル名リスト11bからテーブル名を取り出す。
【0044】
そして、スキーマ生成部16は、SQLログを検索し、含まれる属性名を取得し、テーブル名と取得した属性名を元に、CI定義を生成する。そして、スキーマ生成部16は、全てのCIに対してCI定義を生成すると、Relationship候補リスト11dから1件取り出し、CI候補リストを参照してRelationship定義を作成する。
【0045】
その後、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理を繰り返す。例えば、スキーマ生成部16は、生成するスキーマとして、図12に例示するように、CI定義およびRelationship定義を生成する。
【0046】
図12の例では、スキーマ生成部16は、CIタイプが「Server」、「CPU」、「Service」であるCI定義を生成し、Relationshipタイプが「Server−CPU」、「Service−Server」であるRelationship定義を生成している。
【0047】
例えば、スキーマ生成部16は、図4に例示するSQLログの「TABLE Service」からCIタイプ「Service」のCI定義を生成する場合について説明する。図4に例示するSQLログの「TABLE Service」には、サービスのIDを示す「id」、ユーザのIDを示す「user_id」、サービス名称を示す「name」が列名で記載されている。スキーマ生成部16は、これらの列名を用いて、「id」、「user_id」および「Service」をCI定義として生成する。
【0048】
また、例えば、Relationshipタイプが「CPU」のRelationship定義として、接続元のCIを示す「src」と、接続先のCIを示す「dst」とが属性名として定義されている。
【0049】
このように、検索式およびSQLログなどの簡単に用意できる情報を用いて、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することができる。
【0050】
[スキーマ生成装置による処理]
次に、図13〜図16を用いて、実施例2に係るスキーマ生成装置10による処理を説明する。図13は、実施例2に係るスキーマ生成装置10の処理動作を示すフローチャートである。図14は、実施例2に係るスキーマ生成装置のCIマッチング処理の動作を示すフローチャートである。図15は、実施例2に係るスキーマ生成装置のRelationshipマッチング処理の動作を示すフローチャートである。図16は、実施例2に係るスキーマ生成装置のスキーマ生成処理の動作を示すフローチャートである。
【0051】
図13に示すように、スキーマ生成装置10は、拡張したXpathで記述された検索式を受け付けると、検索式を分割してCI名リストを生成する(ステップS101)。そして、スキーマ生成装置10は、CI名リスト11aからCI名を一つ取り出し(ステップS102)、CIマッチング処理(後に図14を用いて詳述)を行う(ステップS103)。
【0052】
そして、スキーマ生成装置10は、全てのCIについて処理済であるか判定し(ステップS104)、全てのCIが処理済でない場合には(ステップS104否定)、ステップS102に戻って処理を繰り返す。
【0053】
また、スキーマ生成装置10は、全てのCIが処理済である場合には(ステップS104肯定)、検索式の先頭から順に検索してRelationshipを一つ取り出し(ステップS105)、Relationshipマッチング処理(後に図15を用いて詳述)を行う(ステップS106)。
【0054】
その後、スキーマ生成装置10は、全てのRelationshipについて処理済であるか判定し(ステップS107)、全てのRelationshipが処理済でない場合には(ステップS107否定)、ステップS105に戻って処理を繰り返す。また、スキーマ生成装置10は、全てのRelationshipが処理済である場合には(ステップS107肯定)、スキーマ生成処理(後に図16を用いて詳述)を行い(ステップS108)、生成されたスキーマを結果として出力する(ステップS109)。
【0055】
次に、図14を用いて、CIマッチング処理の動作を説明する。図14に示すように、
スキーマ生成装置10の要素分析部14は、テーブル名リスト1bからテーブル名を1件取得する(ステップS201)。そして、要素分析部14は、比較関数群を用いて、CI名とテーブル名とを比較し(ステップS202)、CI名とテーブル名とが一致するか判定する(ステップS203)。この結果、要素分析部14は、CI名とテーブル名とが一致した場合には(ステップS203肯定)、CI候補リスト11cに対応関係を記録する(ステップS204)。
【0056】
その後、要素分析部14は、全てのテーブル名について比較する処理を済ませたか判定し(ステップS205)、全てのテーブル名について比較する処理を済ませていない場合には(ステップS205否定)、ステップS201に戻って処理を繰り返す。また、要素分析部14は、全てのテーブル名について比較する処理を済ませた場合には(ステップS205肯定)、CI名リスト11aから1件CIを取得し(ステップS206)、CI候補リストに該当CI名が複数件存在するか判定する(ステップS207)。
【0057】
この結果、要素分析部14は、CI候補リストに該当CI名が複数件存在する場合には(ステップS207肯定)、複数のCI名同士が紐付けられた辞書を生成する(ステップS208)。その後、要素分析部14は、全てのCIについて処理済みであるか判定し(ステップS209)、全てのCIについて処理済みでない場合には(ステップS209否定)、S206に戻って処理を繰り返す。また、要素分析部14は、全てのCIについて処理済みである場合には(ステップS209肯定)、CIマッチング処理を終了する。
【0058】
次に、図15を用いて、Relationshipマッチング処理の動作を説明する。図15に示すように、リレーションシップの前後のCIに対応するテーブル名をCI候補リスト11cから取り出す。
【0059】
図15に示すように、スキーマ生成装置10の関係分析部15は、CI候補リスト11cから、検索式中でリレーションシップの前後のCIに対応するテーブル名を取り出す(ステップS301)。そして、スキーマ生成装置10は、SQLログ中の関係をリストアップし(ステップS302)、対応するRelationshipに関係の有無と種類をRelationship候補リスト11dに記録する(ステップS303)。
【0060】
次に、図16を用いて、スキーマ生成処理の動作を説明する。図16に示すように、スキーマ生成装置10のスキーマ生成部16は、CI名リスト11aから1件取り出し(ステップS401)、CI候補リスト11cとテーブル名リスト11bからテーブル名を取り出す(ステップS402)。
【0061】
そして、スキーマ生成部16は、SQLログを検索し、含まれる属性名を取得し(ステップS403)、テーブル名と取得した属性名を元に、CI定義を生成する(ステップS404)。そして、スキーマ生成部16は、全てのCIについて処理済みであるか判定し(ステップS405)、処理済でない場合には(ステップS405否定)、ステップS401に戻って処理を繰り返す。
【0062】
また、スキーマ生成部16は、全てのCIについて処理済である場合には(ステップS405肯定)、Relationship候補リスト11dから1件取り出し(ステップS406)、CI候補リストを参照してRelationship定義を作成する(ステップS407)。
【0063】
その後、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んでいるかを判定し(ステップS408)、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んでいない場合には(ステップS408否定)、ステップS406に戻る。また、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んだ場合には(ステップS408肯定)、スキーマ生成処理を終了する。
【0064】
[実施例2の効果]
上述してきたように、スキーマ生成装置10は、CIを検索するための検索式に含まれるCI情報と、リレーショナルデータベース20へのSQLログに含まれるテーブル情報を比較し、構成要素情報とテーブル情報との対応関係を示すCI候補リスト11cを作成する。そして、スキーマ生成装置10は、検索式に含まれるRelationshipと、SQLログに含まれるとテーブル間の関係を示す特定のSQL文とを比較し、RelationshipとSQLとの対応関係を示すRelationship候補リスト11dを作成する。その後、スキーマ生成装置10は、CI候補リスト11cおよびRelationship候補リスト11dを用いて、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。このため、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することが可能である。
【0065】
また、実施例2によれば、検索式に含まれるCIの名称とSQLログに含まれるテーブル情報の名称とを比較し、当該構成要素情報の名称とテーブルの名称とが一致する組を前記対応関係情報として作成する。このため、検索式およびSQLログなどの簡単に用意できる情報を用いて、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することが可能である。
【実施例3】
【0066】
ところで、上記の実施例2では、CIマッチング処理およびRelationshipマッチング処理を行った後に、スキーマ生成処理を行っているが、本発明はこれに限定されるものではない。例えば、CIマッチング処理およびRelationshipマッチング処理を行った後に、リコンサイル先を推定するCIマージ処理や検索式どおりにCIおよびRelationshipを辿れるかを検証する検証処理を行ってもよい。
【0067】
そこで、以下の実施例3では、CIマッチング処理およびRelationshipマッチング処理を行った後に、CIマージ処理および検証処理を行う場合として、実施例3におけるスキーマ生成装置10Aの構成と処理について説明する。
【0068】
まず、図17を用いてスキーマ生成装置10Aの構成について説明する。図17に示すように、スキーマ生成装置10Aは、図2に示したスキーマ生成装置10と比較して、テーブル未割当リスト11e、リコンサイル候補リスト11f、CI・Relationshipリスト11g、CI未割当リスト11h、パターンリスト11i、従属要素推定部17および検証部18を新たに有する点が相違する。
【0069】
テーブル未割当リスト11eは、CIに対応付けられていないテーブル名を記憶する。具体的には、テーブル未割当リスト11eは、図18に示すように、CIに対応付けられていないテーブルを一意に識別する「ID」と、CIに対応付けられていないテーブルのIDを示す「テーブル名」とを対応付けて記憶する。
【0070】
リコンサイル候補リスト11fは、CIに対応付けられていないテーブルのリコンサイル先の候補を記憶する。具体的には、リコンサイル候補リスト11fは、図19に示すように、リコンサイル先候補を一意に識別する「ID」と、リコンサイル先のテーブルを示す「テーブル(先)」と、リコンサイル元のテーブルを示す「テーブル(元)」とを対応付けて記憶する。
【0071】
CI・Relationshipリスト11gは、CIおよびRelationshipを記憶する。具体的には、CI・Relationshipリスト11gは、CIまたはRelationshipを一意に識別する「ID」と、CIまたはRelationshipの種別を示す「CI/Rel」とを対応付けて記憶する。
【0072】
CI未割当リスト11hは、検証に失敗した原因となるCIを記憶する。具体的には、CI未割当リスト11hは、検証に失敗した原因となるCI候補を一意に識別する「ID」と、検証に失敗した原因となるCIの名称を示す「CI名」と、検証に失敗した原因となるCIに対応するテーブルを一意に識別する「テーブル」とを対応付けて記憶する。
【0073】
従属要素推定部17は、CIと対応付けられずに残ったテーブルに関連するSQL文を分析し、残ったテーブルのリコンサイル先のCIを推定する。具体的には、従属要素推定部17は、CIと対応付けられずに残ったテーブル名を含む特定のSQL文を検索し、それに含まれるテーブル名を取得することで、リコンサイル先をリストアップする。ここで、特定のSQL文とは、副文問い合わせ、結合、キー制約などである。
【0074】
例えば、図23の例を用いて説明すると、CIと対応付けられずに「User」テーブルが残った場合に、従属要素推定部17は、テーブル名「User」を含む特定のSQL文を検索する。
【0075】
この検索の結果、従属要素推定部17は、SQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」をSQLログから取得する。かかるSQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」は、テーブル名「User」を含む副文問い合わせのSQL文である。
【0076】
そして、従属要素推定部17は、SQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」に含まれるもう一つのテーブル名「Service」をリコンサイル先として推定する。その後、従属要素推定部17は、CIと対応付けられずに残ったテーブルと推定されたリコンサイル先のテーブルを対応付けてリコンサイル候補リスト11fに記憶させる。
【0077】
検証部18は、検索式通りにCIおよびRelationshipを辿れるか検証する。具体的には、検証部18は、検索式を分割し、CI・Relationshipリスト11gを作成する。そして、検索部18は、図24に示すように、CI・Relationshipリスト11gからCIまたはRelationshipを一つずつ取り出して、検索式通りにCIおよびRelationshipを辿れるかを検証する。
【0078】
例えば、図24の例では、検索式が「%Service→%Server→%CPU」である場合に、検証部18は、CI・Relationshipリスト11gからCIまたはRelationshipを一つずつ取り出す。そして、検証部18は、CI「Service」、「Relationship」、「Server」、「Relationship」、「CPU」の順に辿れるかを検証する。
【0079】
ここで、検証に失敗する場合について説明する。例えば、検証部18は、図25に示すように、検証の結果、該当するRelationshipが複数存在する場合や辿る先のCIが複数のテーブルに対応付けられている場合に、検索通りにCIおよびRelationshipを辿ることができない。
【0080】
例えば、図25の例では、CI「PhysicalServer」に複数のテーブル「PhysicalServer」、「Server」が対応付けられており、Relationshipが複数存在する。このため、検証部18は、検索通りにCIおよびRelationshipを辿ることができない。
【0081】
検証部18は、検証に失敗した場合には、辿ることができなかった原因となったCIとそのCIに対応するテーブルをCI未割当リスト11hに格納する。そして、辿ることができなかった原因となるCIとテーブルの関連付け数を減らす条件パターンを生成してパターンリスト11iに格納する。そして、検証部18は、検証が成功するまで、条件パターンを順に適用して検証処理を繰り返す。
【0082】
例えば、図26の例では、検証部18は、検索式「%Service→%Server→%PhysicalServer→%CPU」について、検証処理を行った場合に、CI「Server」に複数の経路が存在し、検証に失敗する。ここで、検証部18は、辿ることができなかった原因となったCI「Server」の情報をCI未割当リスト11hに格納する。
【0083】
そして、検証部18は、辿ることができなかった原因となったCI「Server」に関係するテーブル名「PhysicalServer」、「Server」、「Server」をCI候補リストから取得する。そして、検証部18は、CIとテーブルの対応付けを部分的に無効にしたパターンをパターンリスト11iに格納する。そして、パターンを一つずつ順に取り出し、パターンを順に適用して検証が成功するまで、検証処理を繰り返す。
【0084】
スキーマ生成部16は、実施例2と同様に、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。ここで、実施例3に係るスキーマ生成装置10Aでは、前述した従属要素推定部17が、CIと対応付けられずに残ったテーブルのリコンサイル先のCIを推定している。このため、図27に例示するように、実施例3に係るスキーマ生成装置10Aは、図12に例示したスキーマと比較して、CIと対応付けられずに残ったテーブの情報がマージされて、CIタイプ「Service」に「@user_name」が追加されている。
【0085】
次に、実施例3に係るスキーマ生成装置の処理動作全体について図28〜図31を用いて説明する。実施例3に係るスキーマ生成装置は、図13に示した実施例2にかかるスキーマ生成装置と比較して、CIマージ処理、検証処理およびパターン変更処理を新たに行う点が相違する。
【0086】
すなわち、図28に示すように、スキーマ生成装置10Aは、実施例2と同様に、全てのCIについてマッチング処理を行い(ステップS501〜S504)、全てのRelationshipについてマッチング処理を行う(ステップS505〜507)。その後、実施例3に係るスキーマ生成装置は、CIマージ処理(後に図29を用いて詳述)を行い(ステップS508)、XpathによってCIおよびRelationshipが辿れるかどうかを検証する検証処理(後に図30を用いて詳述)を行う(ステップS509)。
【0087】
検証の結果、スキーマ生成装置10Aは、検索式を満たす定義になっているか判定し(ステップS510)、検索式を満たす定義になっている場合には(ステップS510肯定)、実施例2と同様にスキーマ生成処理を行って(ステップS511)、生成されたスキーマ定義の結果を出力する(ステップS514)。
【0088】
また、検証の結果、スキーマ生成装置10Aは、検索式を満たす定義になっていない場合には(ステップS510否定)、パターン変更が可能か判定する(ステップS512)。具体的には、スキーマ生成装置10Aは、パターン変更済みかつ全パターン処理を行った場合、または終了フラグが立っている場合には、パターン変更が可能でないと判定する。
【0089】
この結果、スキーマ生成装置10Aは、パターン変更が可能である場合には(ステップS512肯定)、パターン変更処理(後に図31を用いて詳述)を行った後(ステップS513)、ステップS502に戻って処理を繰り返す。また、スキーマ生成装置10Aは、パターン変更が可能でない場合には(ステップS512否定)、結果を出力する(ステップS514)。
【0090】
ここで、図29を用いて、CIマージ処理の動作について説明する。図29は、実施例3に係るスキーマ生成装置のCIマージ処理の動作を示すフローチャートである。図29に示すように、スキーマ生成装置10Aは、CIリストに出現しないテーブルのテーブル未割当リストを作成し(ステップS601)、SQLログ中の関係をリストアップする(ステップS602)。つまり、スキーマ生成装置10Aは、SQLログ中から未割当リストのテーブル名を含む特定のSQL文を検索する。
【0091】
そして、スキーマ生成装置10Aは、割当リストのテーブル名を含む特定のSQL文にテーブル名が存在するか判定し(ステップS603)、テンプレートに合致するテーブル名が存在する場合には(ステップS603肯定)、リコンサイル候補リストに記録する(ステップS604)。また、スキーマ生成装置10Aは、テンプレートに合致するテーブル名が存在しない場合には(ステップS603否定)、リコンサイル候補リストに記録せずにステップS605に進む。
【0092】
そして、スキーマ生成装置10Aは、未割当リストの全てのテーブル名について処理済であるか判定し(ステップS605)、処理済でない場合には(ステップS605否定)、ステップS602に戻って処理を繰り返す。また、スキーマ生成装置10Aは、未割当リストの全てのテーブル名について処理済である場合には(ステップS605肯定)、CIマージ処理を終了する。
【0093】
ここで、図30を用いて、検証処理の動作について説明する。図30は、実施例3に係るスキーマ生成装置の検証処理の動作を示すフローチャートである。図30に示すように、スキーマ生成装置10Aは、検索式を分割し、CIおよびリレーションシップのリストを作成する(ステップS701)。
【0094】
そして、スキーマ生成装置10Aは、CI・Relationshipリスト11gに残りが存在するか判定する(ステップS702)。この結果、スキーマ生成装置10Aは、CI・Relationshipリスト11gに残りが存在する場合には(ステップS702肯定)、CI・Relationshipリスト11gから1件取り出す(ステップS703)。そして、スキーマ生成装置10Aは、取り出した種別がCIであるか判定し(ステップS704)、CIである場合には(ステップS704肯定)、CI候補から該当するものを取り出す(ステップS705)。
【0095】
そして、スキーマ生成装置10Aは、CI候補から該当するものが存在するか判定し(ステップS706)、該当するものが存在する場合には(ステップS706肯定)、CI・Relationship名リスト11g中で直前のCIと同じスキーマが割り当てられているか判定する(ステップS707)。
【0096】
この結果、スキーマ生成装置10Aは、I・Relationshipリスト11g中で直前のCIと同じスキーマが割り当てられている場合には(ステップS707肯定)、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在するか判定する(ステップS708)。
【0097】
そして、スキーマ生成装置10Aは、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在する場合には(ステップS708肯定)、取り出されたCIまたはRelationshipのIDと該当テーブルのIDを出力して(ステップS709)、検証処理を終了する。また、スキーマ生成装置10Aは、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在しない場合には(ステップS708否定)、ステップS702に戻る。
【0098】
また、S706において、スキーマ生成装置10Aは、CI候補から該当するものが存在しない場合(ステップS706否定)、終了フラグをセットして(ステップS714)、検証処理を終了する。また、S707において、スキーマ生成装置10Aは、I・Relationshipリスト11g中で直前のCIと同じスキーマが割り当てられていない場合には(ステップS707否定)、終了フラグをセットして(ステップS714)、検証処理を終了する。
【0099】
S704の説明に戻って、スキーマ生成装置10Aは、取り出した種別がCIでない場合には(ステップS704否定)、直前のCIをキーとしてCI候補リスト11cおよびRelationship候補リスト11dから該当するものを取り出す(ステップS710)。そして、スキーマ生成装置10Aは、Relationship候補リストに該当するものが存在するか判定し(ステップS711)、Relationship候補リストに該当しない場合には(ステップS711否定)、終了フラグをセットし(ステップS714)、検証処理を終了する。
【0100】
また、スキーマ生成装置10Aは、Relationship候補リストに該当する場合には(ステップS711肯定)、該当するもののうち、もう一方のテーブル名が複数種類存在するか判定する(ステップS712)。この結果、スキーマ生成装置10Aは、テーブル名が複数種類存在しない場合には(ステップS712否定)、ステップS702に戻る。
【0101】
また、スキーマ生成装置10Aは、テーブル名が複数種類存在する場合には(ステップS712肯定)、取りだされたCIまたはRelationshipのCI・Relationshipリスト中におけるIDを出力する(ステップS713)。
【0102】
S702の説明に戻って、スキーマ生成装置10Aは、CI・Relationshipリストに残りが存在しないと判定した場合には(ステップS702否定)、検証に成功したものとして(ステップS715)、検証処理を終了する。
【0103】
ここで、図31を用いて、パターン変更処理の動作について説明する。図31は、実施例3に係るスキーマ生成装置のパターン変更処理の動作を示すフローチャートである。図31に示すように、スキーマ生成装置10Aは、パターンリストが存在しているかを判定し(ステップS801)、パターンリストが存在する場合には(ステップS801肯定)、パターンリストから次のパターンを参照し、該当する定義を無効に設定する(ステップS808)。
【0104】
また、スキーマ生成装置10Aは、パターンリストが存在しない場合には(ステップS801否定)、検証で出力されたのがCIであるか判定する(ステップS802)。この結果、スキーマ生成装置10は、検証で出力されたのがCIである場合には(ステップS802肯定)、CI候補リスト11cから検証時出力されたテーブルIDとCI・Relationshipリスト11g以外のCI名を共に含む項目を抽出してCI未割当リスト11hを作成する(ステップS803)。
【0105】
また、スキーマ生成装置10は、検証で出力されたのがCIではなくRelationshipである場合には(ステップS802否定)、RelationshipのCI・Relationshipリスト11g中でのIDの次のCI名を取得する(ステップS804)。
【0106】
そして、スキーマ生成装置10Aは、CI候補から、取得されたCIを含むレコードを抽出して未割当リストを作成する(ステップS805)。続いて、スキーマ生成装置10は、未割当リストの全要素から全ての組み合わせを作成し(ステップS806)、空集合以外を要素数が少ない順に並べ替え、パターンリスト11iとして出力する(ステップS807)。その後、スキーマ生成装置10Aは、パターンリスト11iから次のパターンを参照し、該当する定義を無効に設定する(ステップS808)。
【0107】
このように、実施例3に係るスキーマ生成装置10Aは、SQLに含まれるテーブルのうち、いずれのCIとも対応関係がなかった未割当のテーブルが存在する場合に、そのテーブルに関連するSQLを分析し、リコンサイル先のCIを推定する。このため、対応付けられずに残ったテーブルに関連するSQL文もさらに利用して、スキーマ定義を作成することができる。
【0108】
また、実施例3に係るスキーマ生成装置10Aは、作成されたCI候補リスト11cおよびRelationship候補リスト11dを用いて、検索式を辿れるかを検証するので、精度の高いスキーマ定義を作成することができる。
【実施例4】
【0109】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例4として本発明に含まれる他の実施例を説明する。
【0110】
(1)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、要素分析部14および関係分析部15を統合してもよい。
【0111】
(2)プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図32を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図32は、スキーマ生成プログラムを実行するコンピュータを示す図である。
【0112】
図32に示すように、スキーマ生成プログラムを実行するコンピュータ600は、HDD610、RAM620、ROM630およびCPU640をバス650で接続して構成される。
【0113】
そして、ROM630には、上記の実施例と同様の機能を発揮するスキーマ生成プログラム、つまり、図32に示すように、検索式解析プログラム631、SQLログ収集プログラム632、要素分析プログラム633、関係分析プログラム634およびスキーマ生成プログラム635が予め記憶されている。なお、プログラム631〜635については、図2に示したスキーマ生成装置の各構成要素と同様、適宜統合または分散してもよい。
【0114】
そして、CPU640が、これらのプログラム631〜635をROM630から読み出して実行することで、図32に示すように、各プログラム631〜635は、検索式解析プロセス641、SQLログ収集プロセス642、要素分析プロセス643、関係分析プロセス644およびスキーマ生成プロセス645として機能するようになる。
【0115】
また、HDD610には、図32に示すように、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614が設けられる。そして、CPU640は、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614に対してデータを登録する。また、CPU640は、とともに、PU640は、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614からデータを読み出してRAM620に格納し、RAM620に格納されたデータに基づいて処理を実行する。
【符号の説明】
【0116】
1、10 スキーマ生成装置
2 要素比較作成部
3 関係比較作成部
4 スキーマ生成部
11 管理DB
11a CI名リスト
11b テーブル名リスト
11c CI候補リスト
11d Relationship候補リスト
12 検索式解析部
13 SQLログ収集部
14 要素分析部
15 関係分析部
16 スキーマ生成部
20 RDB
【技術分野】
【0001】
本発明は、スキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラムに関する。
【背景技術】
【0002】
近年、複数の業務システム同士での提携やマルチベンダ運用管理環境における情報管理のために、異なるシステム間の情報を仮想的に統合するFCMDB(Federated Configuration Management Database)を有する情報管理システムが知られている。
【0003】
例えば、図33に例示するように、FCMDBは、構成情報管理システムと保守契約情報管理システムとのそれぞれに記憶されるデータを仮想的に統合して管理する。ここで、FCMDBは、複数のスキーマで記述されたデータを管理することで、複数のシステムに記憶されるデータを仮想的に統合している。
【0004】
このため、情報管理システムの目的に応じたスキーマ定義を手動で作成する作業が実施されている。具体的には、スキーマ定義を作成する作業として、FCMDBの管理項目をCIまたはRelationshipとして設計し、統合時に必要となる情報を選別した後、FCMDBのスキーマ定義を管理者が手動で作成している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2001−518670号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のスキーマ定義を手動で作成する方式では、複数のシステムに対して繰り返し作業が発生することや、必要となる情報を選別することを手動で行うので、スキーマ定義作成作業に工数が掛かり、スキーマ定義を迅速に作成できないという課題があった。
【0007】
一つの側面では、スキーマ定義を自動的に作成することで、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することを目的とする。
【課題を解決するための手段】
【0008】
第一の案では、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報とリレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較して、対応関係情報を作成する。そして、検索式に含まれる構成要素間の関係を示す関係情報と問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較して、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。その後、作成された対応関係情報を用いて、構成要素情報のスキーマ定義および関係情報のスキーマ定義を作成する。
【発明の効果】
【0009】
スキーマ定義を自動で生成することで、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することができる。
【図面の簡単な説明】
【0010】
【図1】図1は、実施例1に係るスキーマ生成装置の構成を示すブロック図である。
【図2】図2は、実施例2に係るスキーマ生成装置の構成を示すブロック図である。
【図3】図3は、検索式の一例を示す図である。
【図4】図4は、SQLのログを示す図である。
【図5】図5は、CI名リストの一例を示す図である。
【図6】図6は、テーブル名リストの一例を示す図である。
【図7】図7は、CI候補リストの一例を示す図である。
【図8】図8は、Relationship候補リストの一例を示す図である。
【図9】図9は、CIとテーブルの対応関係を生成する処理を説明する図である。
【図10】図10は、異なるスキーマのテーブル間で辞書を生成する処理を説明する図である。
【図11】図11は、RelationshipとSQL文の対応関係を生成する処理を説明する図である。
【図12】図12は、スキーマを生成する処理を説明する図である。
【図13】図13は、実施例2に係るスキーマ生成装置の処理動作全体を示すフローチャートである。
【図14】図14は、実施例2に係るスキーマ生成装置のCIマッチング処理の動作を示すフローチャートである。
【図15】図15は、実施例2に係るスキーマ生成装置のRelationshipマッチング処理の動作を示すフローチャートである。
【図16】図16は、実施例2に係るスキーマ生成装置のスキーマ生成処理の動作を示すフローチャートである。
【図17】図17は、実施例3に係るスキーマ生成装置の構成を示すブロック図である。
【図18】図18は、テーブル未割当リストの一例を示す図である。
【図19】図19は、リコンサイル候補リストの一例を示す図である。
【図20】図20は、CI・Relationshipリストの一例を示す図である。
【図21】図21は、CI未割当リストの一例を示す図である。
【図22】図22は、パターンリストの一例を示す図である。
【図23】図23は、CI名に対応付けられていないテーブルに対するリコンサイル先推定処理を説明する図である。
【図24】図24は、検索式によって推定したモデルを辿れるかどうか検証する図である。
【図25】図25は、検証に失敗した場合の再検証処理を説明する図である。
【図26】図26は、検証に失敗した場合の再検証処理を具体的に説明する図である。
【図27】図27は、スキーマを生成する処理を説明する図である。
【図28】図28は、実施例3に係るスキーマ生成装置の処理動作全体を示すフローチャートである。
【図29】図29は、実施例3に係るスキーマ生成装置のCIマージ処理の動作を示すフローチャートである。
【図30】図30は、実施例3に係るスキーマ生成装置の検証処理の動作を示すフローチャートである。
【図31】図31は、実施例3に係るスキーマ生成装置のパターン変更処理の動作を示すフローチャートである。
【図32】図32は、スキーマ生成プログラムを実行するコンピュータを示す図である。
【図33】図33は、データセンタの構成を説明する図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示するスキーマ定義生成装置、スキーマ定義生成方法およびスキーマ定義生成プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0012】
まず、図1を用いて、実施例1に係るスキーマ生成装置の構成について説明する。図1は、実施例1に係るスキーマ生成装置の構成を示すブロック図である。
【0013】
実施例1に係るスキーマ生成装置1は、要素比較作成部2、関係比較作成部3およびスキーマ生成部4を有し、リレーショナルデータベース5(図1では、「RDB」と記載)と接続される。また、スキーマ生成装置1は、管理対象である構成要素を示す構成要素情報を検索するための検索式の入力を受け付けるとともに、リレーショナルデータベース5から問い合わせ履歴情報を収集する。
【0014】
要素比較作成部2は、管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベース5への問い合わせ履歴情報に含まれるテーブル情報とを比較し、構成要素情報とテーブル情報との対応関係を示す対応関係情報を作成する。
【0015】
関係比較作成部3は、検索式に含まれる構成要素間の関係を示す関係情報と、問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、関係情報と問い合わせ履歴情報との対応関係を示す対応関係情報を作成する。
【0016】
スキーマ生成部4は、要素比較作成部2によって作成された対応関係情報と、関係比較作成部3によって作成された対応関係情報とを用いて、構成要素情報のスキーマ定義および関係情報のスキーマ定義を生成する。
【0017】
つまり、実施例1に係るスキーマ生成装置1では、検索式や問い合わせ履歴情報などの既存の情報を利用することで、スキーマ定義を自動で生成することができる結果、スキーマ作成の工数を削減することができる。
【実施例2】
【0018】
以下に、実施例2に係るスキーマ生成装置の構成および処理の流れを順に説明し、最後に実施例2による効果を説明する。
【0019】
[スキーマ生成装置の構成]
まず、図2を用いて、スキーマ生成装置10の構成を説明する。図2は、実施例2に係るスキーマ生成装置の構成を示すブロック図である。図2に示すように、このスキーマ生成装置10は、管理DB11、検索式解析部12、SQLログ収集部13、要素分析部14、関係分析部15、スキーマ生成部16を有し、RDB20と接続される。
【0020】
また、スキーマ生成装置10は、FCMDB向けに拡張したXpath(XML Path Language)で記述された検索式(例えば、後に詳述する図3参照)を受け付けるとともに、RDB20に記憶されたSQLログ(例えば、後に詳述する図4参照)を収集する。ここで、検索式とは、CIを検索するための検索式のことをいい、検索式にはCIおよびRelationshipの情報や構造が含まれている。また、SQLログとは、リレーショナルデータベースへ問い合わせた履歴のことをいい、SQLログにはテーブルの情報やテーブル間の関係が含まれている。
【0021】
FCMDB向けに拡張した検索式は、情報を要求するCIの種別やRelationshipなどを指定する。例えば、サーバ装置の情報、すなわちCI種別「Server」を有するCIの情報を要求する場合、検索式は「%Server」で表される。なお、名称の前に「%」を付すことにより、その名称がCIの名称であることが特定される。
【0022】
また、CI及びRelationshipを交互に並べることで、CI間の関係を辿る検索が可能となる。例えば、サーバ装置の管理者の情報を要求する場合、検索式は、「%Server==>%User」で表される。なお、「==>」はRelationshipを示す。
【0023】
また、「%」の後に「*」を付すことにより、全てのCI種別を指定した検索が可能となる。例えば、「%Server==>%*」で表される検索式は、CI種別「Server」と何らかの関係を持つCIの情報が要求されていることを示す。
【0024】
また、CI種別の後に、要求するCIを具体的に指定する情報を付すことにより、CIについての詳細検索が可能となる。例えば、名前がAであるようなサーバ装置の情報を要求する検索式は、「%Server[@name=='A']」で表される。
【0025】
管理DB11は、各種処理に必要なデータを記憶するとともに、CI名リスト11a、テーブル名リスト11b、CI候補リスト11c、Relationship候補リスト11dを記憶する。
【0026】
CI名リスト11aは、検索式に含まれるCI名を記憶する。具体的には、CI名リスト11aは、図5に示すように、CI名を一意に識別する「ID」と、検索式に含まれる「CI名」とを対応付けて記憶する。例えば、図3の例を用いて具体的に説明すると、CIリスト11aは、図3に例示する検索式に含まれるCI名「Service」、「Server」、「CPU」をそれぞれ記憶する。
【0027】
テーブル名リスト11bは、SQLログに含まれるテーブル名を記憶する。具体的には、テーブル名リスト11bは、図6に示すように、テーブル名を一意に識別する「ID」と、テーブルのスキーマ種別を示す「スキーマ」と、SQLログに含まれる「テーブル名」とを対応付けて記憶する。
【0028】
CI候補リスト11cは、CI名リスト11aに記憶されたCI名のうち、テーブル名リスト11bに記憶されたテーブル名と一致するCI名をCI候補として記憶する。具体的には、図7に示すように、CI候補リスト11cは、CI候補を一意に識別する「ID」と、CI候補の「CI名」と、CI名と一致するテーブル名のIDを示す「テーブル」とを対応付けて記憶する。
【0029】
Relationship候補リスト11dは、CI名候補リスト11cのうち、検索式中でRelationship名の前後のCIに対応するテーブル名の組をRelationship候補として記憶する。具体的には、Relationship候補リスト11dは、図8に示すように、Relationship候補を一意に識別する「ID」と、Relationship名の前後のCIに対応するテーブル名の組である「テーブル(1)」および「テーブル(2)」と、テーブル名の組のSQL文での関係を示す「関係」とを対応付けて記憶する。
【0030】
ここで、図4のSQLログの例を用いて、テーブル名の組のSQLでの関係について説明する。SQLログに含まれる特定のSQL文(例えば、副文問い合わせ、結合、キー制約など)から、テーブル名の組のSQLでの関係を特定する。例えば、図4に例示するように、テーブル名「server」にキー制約を示す「FOREGN KEY(serviceid)」が含まれている。この場合には、テーブル名「service」とテーブル名「Server」との関係が「キー制約」であるものとしてRelationship候補リスト11dに記憶される。
【0031】
また、図4のSQLログにおいて、テーブル名「PhysicalServer」に結合を示す「JOIN CPU ON」が含まれている。この場合には、テーブル名「PhysicalServer」とテーブル名「CPU」との関係が「結合」であるものとしてRelationship候補リスト11dに記憶される。
【0032】
検索式解析部12は、拡張したXpath(XML Path Language)で記述された検索式を解析してCI名リスト11aを生成する。具体的には、検索式解析部12は、図3に例示するような検索式を受け付けると、検索式を分割してCI名リスト11aを生成し、生成したCI名リストを管理DB11に格納する。例えば、検索式解析部12は、図3に例示する検索式を受け付けた場合には、検索式を「Service」、「Server」、「CPU」に分割し、CI名「Service」、「Server」および「CPU」を管理DB11のCI名リスト11aに記憶させる。
【0033】
SQLログ収集部13は、RDB20からSQLログを収集する。具体的には、SQLログ収集部13は、SQLログをRDB20から収集し、テーブル名リスト11bを生成し、生成したテーブル名リスト11bを管理DB11に記憶させる。例えば、SQLログ収集部13は、図4に例示するSQLログを収集した場合には、テーブル名「Service」、「Server」、「PhysicalServer」、「CPU」および「User」を管理DB11のテーブル名リスト11bに記憶させる。
【0034】
要素分析部14は、CIを検索するための検索式に含まれるCI情報と、リレーショナルデータベース20へのSQLログに含まれるテーブル情報を比較し、構成要素情報とテーブル情報との対応関係を示すCI候補リスト11cを作成する。具体的には、要素分析部14は、CI名リスト11aからCI名を一つ取り出し、テーブル名リスト1bからテーブル名を1件取得する。
【0035】
そして、要素分析部14は、比較関数群(完全比較や部分比較)を用いて、CI名とテーブル名とを比較し、CI名とテーブル名とが一致するか判定する。この結果、要素分析部14は、CI名とテーブル名とが一致した場合には、対応関係を生成してCI候補リスト11cに格納する。
【0036】
ここで、図9を用いて、CIとテーブルの対応関係を生成する処理について説明する。図9は、CIとテーブルの対応関係を生成する処理を説明する図である。図9に示すように、要素分析部14は、検索式に含まれるCI名とSQLログに含まれるテーブル名のマッチングを行い、CIとテーブルの関係の候補をリストアップし、CI候補リスト11cに記憶させる。
【0037】
また、要素分析部14は、全てのテーブル名について比較する処理を済ませた後に、CI名リスト11aから1件CIを取得し、CI候補リスト11cに該当CI名が複数件存在する場合には、同一のCI名同士の対応関係を記憶する辞書を生成してもよい。
【0038】
ここで、図10を用いて、異なるスキーマのテーブル間で辞書を生成する処理について説明する。例えば、図10に例示するように、要素分析部14は、CI候補リストにCI名「Server」が複数件存在し、スキーマが異なるテーブルが割り当てられた場合には、既存の辞書生成方式用いて、CI名「Server」同士の関係が紐付けられた辞書情報を作成する。
【0039】
関係分析部15は、検索式に含まれるRelationshipと、SQLログに含まれるとテーブル間の関係を示す特定のSQL文とを比較し、RelationshipとSQLとの対応関係を示すRelationship候補リスト11dを作成する。具体的には、関係分析部15は、検索式からRelationshipを一つ取り出すと、リレーションシップの前後のCIに対応するテーブル名をCI候補リスト11cから取り出す。
【0040】
そして、関係分析部15は、SQLログ中の関係をリストアップし、対応するRelationshipとの関係の有無と種類をRelationship候補リスト11dに格納する。ここで、図11を用いて、RelationshipとSQL文の対応関係を生成する処理を説明する。図11は、RelationshipとSQL文の対応関係を生成する処理を説明する図である。図11に示すように、関係分析部15は、検索式中で着目するRelationshipが結ぶCIに紐付けられたテーブルをCI候補リスト11cから取得し、テーブル名を含む特定のSQLを検索する。
【0041】
例えば、図11の例では、CI名「Sevice」とCI名「Server」との関係を示すRelationshipに着目した場合に、関係分析部15は、CI名「Sevice」に紐付けられたテーブル名「Service」とCI名「Server」に紐付けられたテーブル名「PhysicalServer」とを含む特定のSQL文を検索する。この結果、関係分析部15は、「CREATE TABLE PhysicalServer・・・FOREIGN KEY(cpuid)REFERENCES CPU(id)」を取得する。
【0042】
ここで、関係分析部15は、キー制約を示す「FOREIGN KEY」が含まれているので、リレーションシップ候補リストに関係の種類「キー制約」であることをRelationship候補リスト11dに記憶する。
【0043】
スキーマ生成部16は、CI候補リスト11cおよびRelationship候補リスト11dを用いて、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。具体的には、スキーマ生成部16は、CI名リスト11aから1件取り出し、CI候補リスト11cとテーブル名リスト11bからテーブル名を取り出す。
【0044】
そして、スキーマ生成部16は、SQLログを検索し、含まれる属性名を取得し、テーブル名と取得した属性名を元に、CI定義を生成する。そして、スキーマ生成部16は、全てのCIに対してCI定義を生成すると、Relationship候補リスト11dから1件取り出し、CI候補リストを参照してRelationship定義を作成する。
【0045】
その後、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理を繰り返す。例えば、スキーマ生成部16は、生成するスキーマとして、図12に例示するように、CI定義およびRelationship定義を生成する。
【0046】
図12の例では、スキーマ生成部16は、CIタイプが「Server」、「CPU」、「Service」であるCI定義を生成し、Relationshipタイプが「Server−CPU」、「Service−Server」であるRelationship定義を生成している。
【0047】
例えば、スキーマ生成部16は、図4に例示するSQLログの「TABLE Service」からCIタイプ「Service」のCI定義を生成する場合について説明する。図4に例示するSQLログの「TABLE Service」には、サービスのIDを示す「id」、ユーザのIDを示す「user_id」、サービス名称を示す「name」が列名で記載されている。スキーマ生成部16は、これらの列名を用いて、「id」、「user_id」および「Service」をCI定義として生成する。
【0048】
また、例えば、Relationshipタイプが「CPU」のRelationship定義として、接続元のCIを示す「src」と、接続先のCIを示す「dst」とが属性名として定義されている。
【0049】
このように、検索式およびSQLログなどの簡単に用意できる情報を用いて、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することができる。
【0050】
[スキーマ生成装置による処理]
次に、図13〜図16を用いて、実施例2に係るスキーマ生成装置10による処理を説明する。図13は、実施例2に係るスキーマ生成装置10の処理動作を示すフローチャートである。図14は、実施例2に係るスキーマ生成装置のCIマッチング処理の動作を示すフローチャートである。図15は、実施例2に係るスキーマ生成装置のRelationshipマッチング処理の動作を示すフローチャートである。図16は、実施例2に係るスキーマ生成装置のスキーマ生成処理の動作を示すフローチャートである。
【0051】
図13に示すように、スキーマ生成装置10は、拡張したXpathで記述された検索式を受け付けると、検索式を分割してCI名リストを生成する(ステップS101)。そして、スキーマ生成装置10は、CI名リスト11aからCI名を一つ取り出し(ステップS102)、CIマッチング処理(後に図14を用いて詳述)を行う(ステップS103)。
【0052】
そして、スキーマ生成装置10は、全てのCIについて処理済であるか判定し(ステップS104)、全てのCIが処理済でない場合には(ステップS104否定)、ステップS102に戻って処理を繰り返す。
【0053】
また、スキーマ生成装置10は、全てのCIが処理済である場合には(ステップS104肯定)、検索式の先頭から順に検索してRelationshipを一つ取り出し(ステップS105)、Relationshipマッチング処理(後に図15を用いて詳述)を行う(ステップS106)。
【0054】
その後、スキーマ生成装置10は、全てのRelationshipについて処理済であるか判定し(ステップS107)、全てのRelationshipが処理済でない場合には(ステップS107否定)、ステップS105に戻って処理を繰り返す。また、スキーマ生成装置10は、全てのRelationshipが処理済である場合には(ステップS107肯定)、スキーマ生成処理(後に図16を用いて詳述)を行い(ステップS108)、生成されたスキーマを結果として出力する(ステップS109)。
【0055】
次に、図14を用いて、CIマッチング処理の動作を説明する。図14に示すように、
スキーマ生成装置10の要素分析部14は、テーブル名リスト1bからテーブル名を1件取得する(ステップS201)。そして、要素分析部14は、比較関数群を用いて、CI名とテーブル名とを比較し(ステップS202)、CI名とテーブル名とが一致するか判定する(ステップS203)。この結果、要素分析部14は、CI名とテーブル名とが一致した場合には(ステップS203肯定)、CI候補リスト11cに対応関係を記録する(ステップS204)。
【0056】
その後、要素分析部14は、全てのテーブル名について比較する処理を済ませたか判定し(ステップS205)、全てのテーブル名について比較する処理を済ませていない場合には(ステップS205否定)、ステップS201に戻って処理を繰り返す。また、要素分析部14は、全てのテーブル名について比較する処理を済ませた場合には(ステップS205肯定)、CI名リスト11aから1件CIを取得し(ステップS206)、CI候補リストに該当CI名が複数件存在するか判定する(ステップS207)。
【0057】
この結果、要素分析部14は、CI候補リストに該当CI名が複数件存在する場合には(ステップS207肯定)、複数のCI名同士が紐付けられた辞書を生成する(ステップS208)。その後、要素分析部14は、全てのCIについて処理済みであるか判定し(ステップS209)、全てのCIについて処理済みでない場合には(ステップS209否定)、S206に戻って処理を繰り返す。また、要素分析部14は、全てのCIについて処理済みである場合には(ステップS209肯定)、CIマッチング処理を終了する。
【0058】
次に、図15を用いて、Relationshipマッチング処理の動作を説明する。図15に示すように、リレーションシップの前後のCIに対応するテーブル名をCI候補リスト11cから取り出す。
【0059】
図15に示すように、スキーマ生成装置10の関係分析部15は、CI候補リスト11cから、検索式中でリレーションシップの前後のCIに対応するテーブル名を取り出す(ステップS301)。そして、スキーマ生成装置10は、SQLログ中の関係をリストアップし(ステップS302)、対応するRelationshipに関係の有無と種類をRelationship候補リスト11dに記録する(ステップS303)。
【0060】
次に、図16を用いて、スキーマ生成処理の動作を説明する。図16に示すように、スキーマ生成装置10のスキーマ生成部16は、CI名リスト11aから1件取り出し(ステップS401)、CI候補リスト11cとテーブル名リスト11bからテーブル名を取り出す(ステップS402)。
【0061】
そして、スキーマ生成部16は、SQLログを検索し、含まれる属性名を取得し(ステップS403)、テーブル名と取得した属性名を元に、CI定義を生成する(ステップS404)。そして、スキーマ生成部16は、全てのCIについて処理済みであるか判定し(ステップS405)、処理済でない場合には(ステップS405否定)、ステップS401に戻って処理を繰り返す。
【0062】
また、スキーマ生成部16は、全てのCIについて処理済である場合には(ステップS405肯定)、Relationship候補リスト11dから1件取り出し(ステップS406)、CI候補リストを参照してRelationship定義を作成する(ステップS407)。
【0063】
その後、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んでいるかを判定し(ステップS408)、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んでいない場合には(ステップS408否定)、ステップS406に戻る。また、スキーマ生成部16は、全てのリレーションシップ候補についてRelationship定義を作成する処理が済んだ場合には(ステップS408肯定)、スキーマ生成処理を終了する。
【0064】
[実施例2の効果]
上述してきたように、スキーマ生成装置10は、CIを検索するための検索式に含まれるCI情報と、リレーショナルデータベース20へのSQLログに含まれるテーブル情報を比較し、構成要素情報とテーブル情報との対応関係を示すCI候補リスト11cを作成する。そして、スキーマ生成装置10は、検索式に含まれるRelationshipと、SQLログに含まれるとテーブル間の関係を示す特定のSQL文とを比較し、RelationshipとSQLとの対応関係を示すRelationship候補リスト11dを作成する。その後、スキーマ生成装置10は、CI候補リスト11cおよびRelationship候補リスト11dを用いて、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。このため、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することが可能である。
【0065】
また、実施例2によれば、検索式に含まれるCIの名称とSQLログに含まれるテーブル情報の名称とを比較し、当該構成要素情報の名称とテーブルの名称とが一致する組を前記対応関係情報として作成する。このため、検索式およびSQLログなどの簡単に用意できる情報を用いて、スキーマ定義を自動で生成することができ、スキーマ定義作成作業の工数を削減し、スキーマ定義を迅速に作成することが可能である。
【実施例3】
【0066】
ところで、上記の実施例2では、CIマッチング処理およびRelationshipマッチング処理を行った後に、スキーマ生成処理を行っているが、本発明はこれに限定されるものではない。例えば、CIマッチング処理およびRelationshipマッチング処理を行った後に、リコンサイル先を推定するCIマージ処理や検索式どおりにCIおよびRelationshipを辿れるかを検証する検証処理を行ってもよい。
【0067】
そこで、以下の実施例3では、CIマッチング処理およびRelationshipマッチング処理を行った後に、CIマージ処理および検証処理を行う場合として、実施例3におけるスキーマ生成装置10Aの構成と処理について説明する。
【0068】
まず、図17を用いてスキーマ生成装置10Aの構成について説明する。図17に示すように、スキーマ生成装置10Aは、図2に示したスキーマ生成装置10と比較して、テーブル未割当リスト11e、リコンサイル候補リスト11f、CI・Relationshipリスト11g、CI未割当リスト11h、パターンリスト11i、従属要素推定部17および検証部18を新たに有する点が相違する。
【0069】
テーブル未割当リスト11eは、CIに対応付けられていないテーブル名を記憶する。具体的には、テーブル未割当リスト11eは、図18に示すように、CIに対応付けられていないテーブルを一意に識別する「ID」と、CIに対応付けられていないテーブルのIDを示す「テーブル名」とを対応付けて記憶する。
【0070】
リコンサイル候補リスト11fは、CIに対応付けられていないテーブルのリコンサイル先の候補を記憶する。具体的には、リコンサイル候補リスト11fは、図19に示すように、リコンサイル先候補を一意に識別する「ID」と、リコンサイル先のテーブルを示す「テーブル(先)」と、リコンサイル元のテーブルを示す「テーブル(元)」とを対応付けて記憶する。
【0071】
CI・Relationshipリスト11gは、CIおよびRelationshipを記憶する。具体的には、CI・Relationshipリスト11gは、CIまたはRelationshipを一意に識別する「ID」と、CIまたはRelationshipの種別を示す「CI/Rel」とを対応付けて記憶する。
【0072】
CI未割当リスト11hは、検証に失敗した原因となるCIを記憶する。具体的には、CI未割当リスト11hは、検証に失敗した原因となるCI候補を一意に識別する「ID」と、検証に失敗した原因となるCIの名称を示す「CI名」と、検証に失敗した原因となるCIに対応するテーブルを一意に識別する「テーブル」とを対応付けて記憶する。
【0073】
従属要素推定部17は、CIと対応付けられずに残ったテーブルに関連するSQL文を分析し、残ったテーブルのリコンサイル先のCIを推定する。具体的には、従属要素推定部17は、CIと対応付けられずに残ったテーブル名を含む特定のSQL文を検索し、それに含まれるテーブル名を取得することで、リコンサイル先をリストアップする。ここで、特定のSQL文とは、副文問い合わせ、結合、キー制約などである。
【0074】
例えば、図23の例を用いて説明すると、CIと対応付けられずに「User」テーブルが残った場合に、従属要素推定部17は、テーブル名「User」を含む特定のSQL文を検索する。
【0075】
この検索の結果、従属要素推定部17は、SQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」をSQLログから取得する。かかるSQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」は、テーブル名「User」を含む副文問い合わせのSQL文である。
【0076】
そして、従属要素推定部17は、SQL文「Select*FROM Sevice WHERE user_id=(SELECT id FROM User WHER name=“Suzuki”);」に含まれるもう一つのテーブル名「Service」をリコンサイル先として推定する。その後、従属要素推定部17は、CIと対応付けられずに残ったテーブルと推定されたリコンサイル先のテーブルを対応付けてリコンサイル候補リスト11fに記憶させる。
【0077】
検証部18は、検索式通りにCIおよびRelationshipを辿れるか検証する。具体的には、検証部18は、検索式を分割し、CI・Relationshipリスト11gを作成する。そして、検索部18は、図24に示すように、CI・Relationshipリスト11gからCIまたはRelationshipを一つずつ取り出して、検索式通りにCIおよびRelationshipを辿れるかを検証する。
【0078】
例えば、図24の例では、検索式が「%Service→%Server→%CPU」である場合に、検証部18は、CI・Relationshipリスト11gからCIまたはRelationshipを一つずつ取り出す。そして、検証部18は、CI「Service」、「Relationship」、「Server」、「Relationship」、「CPU」の順に辿れるかを検証する。
【0079】
ここで、検証に失敗する場合について説明する。例えば、検証部18は、図25に示すように、検証の結果、該当するRelationshipが複数存在する場合や辿る先のCIが複数のテーブルに対応付けられている場合に、検索通りにCIおよびRelationshipを辿ることができない。
【0080】
例えば、図25の例では、CI「PhysicalServer」に複数のテーブル「PhysicalServer」、「Server」が対応付けられており、Relationshipが複数存在する。このため、検証部18は、検索通りにCIおよびRelationshipを辿ることができない。
【0081】
検証部18は、検証に失敗した場合には、辿ることができなかった原因となったCIとそのCIに対応するテーブルをCI未割当リスト11hに格納する。そして、辿ることができなかった原因となるCIとテーブルの関連付け数を減らす条件パターンを生成してパターンリスト11iに格納する。そして、検証部18は、検証が成功するまで、条件パターンを順に適用して検証処理を繰り返す。
【0082】
例えば、図26の例では、検証部18は、検索式「%Service→%Server→%PhysicalServer→%CPU」について、検証処理を行った場合に、CI「Server」に複数の経路が存在し、検証に失敗する。ここで、検証部18は、辿ることができなかった原因となったCI「Server」の情報をCI未割当リスト11hに格納する。
【0083】
そして、検証部18は、辿ることができなかった原因となったCI「Server」に関係するテーブル名「PhysicalServer」、「Server」、「Server」をCI候補リストから取得する。そして、検証部18は、CIとテーブルの対応付けを部分的に無効にしたパターンをパターンリスト11iに格納する。そして、パターンを一つずつ順に取り出し、パターンを順に適用して検証が成功するまで、検証処理を繰り返す。
【0084】
スキーマ生成部16は、実施例2と同様に、CIのスキーマ定義およびRelationshipのスキーマ定義を生成する。ここで、実施例3に係るスキーマ生成装置10Aでは、前述した従属要素推定部17が、CIと対応付けられずに残ったテーブルのリコンサイル先のCIを推定している。このため、図27に例示するように、実施例3に係るスキーマ生成装置10Aは、図12に例示したスキーマと比較して、CIと対応付けられずに残ったテーブの情報がマージされて、CIタイプ「Service」に「@user_name」が追加されている。
【0085】
次に、実施例3に係るスキーマ生成装置の処理動作全体について図28〜図31を用いて説明する。実施例3に係るスキーマ生成装置は、図13に示した実施例2にかかるスキーマ生成装置と比較して、CIマージ処理、検証処理およびパターン変更処理を新たに行う点が相違する。
【0086】
すなわち、図28に示すように、スキーマ生成装置10Aは、実施例2と同様に、全てのCIについてマッチング処理を行い(ステップS501〜S504)、全てのRelationshipについてマッチング処理を行う(ステップS505〜507)。その後、実施例3に係るスキーマ生成装置は、CIマージ処理(後に図29を用いて詳述)を行い(ステップS508)、XpathによってCIおよびRelationshipが辿れるかどうかを検証する検証処理(後に図30を用いて詳述)を行う(ステップS509)。
【0087】
検証の結果、スキーマ生成装置10Aは、検索式を満たす定義になっているか判定し(ステップS510)、検索式を満たす定義になっている場合には(ステップS510肯定)、実施例2と同様にスキーマ生成処理を行って(ステップS511)、生成されたスキーマ定義の結果を出力する(ステップS514)。
【0088】
また、検証の結果、スキーマ生成装置10Aは、検索式を満たす定義になっていない場合には(ステップS510否定)、パターン変更が可能か判定する(ステップS512)。具体的には、スキーマ生成装置10Aは、パターン変更済みかつ全パターン処理を行った場合、または終了フラグが立っている場合には、パターン変更が可能でないと判定する。
【0089】
この結果、スキーマ生成装置10Aは、パターン変更が可能である場合には(ステップS512肯定)、パターン変更処理(後に図31を用いて詳述)を行った後(ステップS513)、ステップS502に戻って処理を繰り返す。また、スキーマ生成装置10Aは、パターン変更が可能でない場合には(ステップS512否定)、結果を出力する(ステップS514)。
【0090】
ここで、図29を用いて、CIマージ処理の動作について説明する。図29は、実施例3に係るスキーマ生成装置のCIマージ処理の動作を示すフローチャートである。図29に示すように、スキーマ生成装置10Aは、CIリストに出現しないテーブルのテーブル未割当リストを作成し(ステップS601)、SQLログ中の関係をリストアップする(ステップS602)。つまり、スキーマ生成装置10Aは、SQLログ中から未割当リストのテーブル名を含む特定のSQL文を検索する。
【0091】
そして、スキーマ生成装置10Aは、割当リストのテーブル名を含む特定のSQL文にテーブル名が存在するか判定し(ステップS603)、テンプレートに合致するテーブル名が存在する場合には(ステップS603肯定)、リコンサイル候補リストに記録する(ステップS604)。また、スキーマ生成装置10Aは、テンプレートに合致するテーブル名が存在しない場合には(ステップS603否定)、リコンサイル候補リストに記録せずにステップS605に進む。
【0092】
そして、スキーマ生成装置10Aは、未割当リストの全てのテーブル名について処理済であるか判定し(ステップS605)、処理済でない場合には(ステップS605否定)、ステップS602に戻って処理を繰り返す。また、スキーマ生成装置10Aは、未割当リストの全てのテーブル名について処理済である場合には(ステップS605肯定)、CIマージ処理を終了する。
【0093】
ここで、図30を用いて、検証処理の動作について説明する。図30は、実施例3に係るスキーマ生成装置の検証処理の動作を示すフローチャートである。図30に示すように、スキーマ生成装置10Aは、検索式を分割し、CIおよびリレーションシップのリストを作成する(ステップS701)。
【0094】
そして、スキーマ生成装置10Aは、CI・Relationshipリスト11gに残りが存在するか判定する(ステップS702)。この結果、スキーマ生成装置10Aは、CI・Relationshipリスト11gに残りが存在する場合には(ステップS702肯定)、CI・Relationshipリスト11gから1件取り出す(ステップS703)。そして、スキーマ生成装置10Aは、取り出した種別がCIであるか判定し(ステップS704)、CIである場合には(ステップS704肯定)、CI候補から該当するものを取り出す(ステップS705)。
【0095】
そして、スキーマ生成装置10Aは、CI候補から該当するものが存在するか判定し(ステップS706)、該当するものが存在する場合には(ステップS706肯定)、CI・Relationship名リスト11g中で直前のCIと同じスキーマが割り当てられているか判定する(ステップS707)。
【0096】
この結果、スキーマ生成装置10Aは、I・Relationshipリスト11g中で直前のCIと同じスキーマが割り当てられている場合には(ステップS707肯定)、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在するか判定する(ステップS708)。
【0097】
そして、スキーマ生成装置10Aは、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在する場合には(ステップS708肯定)、取り出されたCIまたはRelationshipのIDと該当テーブルのIDを出力して(ステップS709)、検証処理を終了する。また、スキーマ生成装置10Aは、取り出されたCIまたはRelationshiに対して複数テーブルを割り当てられたスキーマが存在しない場合には(ステップS708否定)、ステップS702に戻る。
【0098】
また、S706において、スキーマ生成装置10Aは、CI候補から該当するものが存在しない場合(ステップS706否定)、終了フラグをセットして(ステップS714)、検証処理を終了する。また、S707において、スキーマ生成装置10Aは、I・Relationshipリスト11g中で直前のCIと同じスキーマが割り当てられていない場合には(ステップS707否定)、終了フラグをセットして(ステップS714)、検証処理を終了する。
【0099】
S704の説明に戻って、スキーマ生成装置10Aは、取り出した種別がCIでない場合には(ステップS704否定)、直前のCIをキーとしてCI候補リスト11cおよびRelationship候補リスト11dから該当するものを取り出す(ステップS710)。そして、スキーマ生成装置10Aは、Relationship候補リストに該当するものが存在するか判定し(ステップS711)、Relationship候補リストに該当しない場合には(ステップS711否定)、終了フラグをセットし(ステップS714)、検証処理を終了する。
【0100】
また、スキーマ生成装置10Aは、Relationship候補リストに該当する場合には(ステップS711肯定)、該当するもののうち、もう一方のテーブル名が複数種類存在するか判定する(ステップS712)。この結果、スキーマ生成装置10Aは、テーブル名が複数種類存在しない場合には(ステップS712否定)、ステップS702に戻る。
【0101】
また、スキーマ生成装置10Aは、テーブル名が複数種類存在する場合には(ステップS712肯定)、取りだされたCIまたはRelationshipのCI・Relationshipリスト中におけるIDを出力する(ステップS713)。
【0102】
S702の説明に戻って、スキーマ生成装置10Aは、CI・Relationshipリストに残りが存在しないと判定した場合には(ステップS702否定)、検証に成功したものとして(ステップS715)、検証処理を終了する。
【0103】
ここで、図31を用いて、パターン変更処理の動作について説明する。図31は、実施例3に係るスキーマ生成装置のパターン変更処理の動作を示すフローチャートである。図31に示すように、スキーマ生成装置10Aは、パターンリストが存在しているかを判定し(ステップS801)、パターンリストが存在する場合には(ステップS801肯定)、パターンリストから次のパターンを参照し、該当する定義を無効に設定する(ステップS808)。
【0104】
また、スキーマ生成装置10Aは、パターンリストが存在しない場合には(ステップS801否定)、検証で出力されたのがCIであるか判定する(ステップS802)。この結果、スキーマ生成装置10は、検証で出力されたのがCIである場合には(ステップS802肯定)、CI候補リスト11cから検証時出力されたテーブルIDとCI・Relationshipリスト11g以外のCI名を共に含む項目を抽出してCI未割当リスト11hを作成する(ステップS803)。
【0105】
また、スキーマ生成装置10は、検証で出力されたのがCIではなくRelationshipである場合には(ステップS802否定)、RelationshipのCI・Relationshipリスト11g中でのIDの次のCI名を取得する(ステップS804)。
【0106】
そして、スキーマ生成装置10Aは、CI候補から、取得されたCIを含むレコードを抽出して未割当リストを作成する(ステップS805)。続いて、スキーマ生成装置10は、未割当リストの全要素から全ての組み合わせを作成し(ステップS806)、空集合以外を要素数が少ない順に並べ替え、パターンリスト11iとして出力する(ステップS807)。その後、スキーマ生成装置10Aは、パターンリスト11iから次のパターンを参照し、該当する定義を無効に設定する(ステップS808)。
【0107】
このように、実施例3に係るスキーマ生成装置10Aは、SQLに含まれるテーブルのうち、いずれのCIとも対応関係がなかった未割当のテーブルが存在する場合に、そのテーブルに関連するSQLを分析し、リコンサイル先のCIを推定する。このため、対応付けられずに残ったテーブルに関連するSQL文もさらに利用して、スキーマ定義を作成することができる。
【0108】
また、実施例3に係るスキーマ生成装置10Aは、作成されたCI候補リスト11cおよびRelationship候補リスト11dを用いて、検索式を辿れるかを検証するので、精度の高いスキーマ定義を作成することができる。
【実施例4】
【0109】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例4として本発明に含まれる他の実施例を説明する。
【0110】
(1)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、要素分析部14および関係分析部15を統合してもよい。
【0111】
(2)プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図32を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図32は、スキーマ生成プログラムを実行するコンピュータを示す図である。
【0112】
図32に示すように、スキーマ生成プログラムを実行するコンピュータ600は、HDD610、RAM620、ROM630およびCPU640をバス650で接続して構成される。
【0113】
そして、ROM630には、上記の実施例と同様の機能を発揮するスキーマ生成プログラム、つまり、図32に示すように、検索式解析プログラム631、SQLログ収集プログラム632、要素分析プログラム633、関係分析プログラム634およびスキーマ生成プログラム635が予め記憶されている。なお、プログラム631〜635については、図2に示したスキーマ生成装置の各構成要素と同様、適宜統合または分散してもよい。
【0114】
そして、CPU640が、これらのプログラム631〜635をROM630から読み出して実行することで、図32に示すように、各プログラム631〜635は、検索式解析プロセス641、SQLログ収集プロセス642、要素分析プロセス643、関係分析プロセス644およびスキーマ生成プロセス645として機能するようになる。
【0115】
また、HDD610には、図32に示すように、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614が設けられる。そして、CPU640は、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614に対してデータを登録する。また、CPU640は、とともに、PU640は、CI名リスト611、テーブル名リスト612、CI候補リスト613およびRelationship候補リスト614からデータを読み出してRAM620に格納し、RAM620に格納されたデータに基づいて処理を実行する。
【符号の説明】
【0116】
1、10 スキーマ生成装置
2 要素比較作成部
3 関係比較作成部
4 スキーマ生成部
11 管理DB
11a CI名リスト
11b テーブル名リスト
11c CI候補リスト
11d Relationship候補リスト
12 検索式解析部
13 SQLログ収集部
14 要素分析部
15 関係分析部
16 スキーマ生成部
20 RDB
【特許請求の範囲】
【請求項1】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成部と、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成部と、
前記要素比較作成部によって作成された対応関係情報と、前記関係比較作成部によって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成部と、
を有することを特徴とするスキーマ定義生成装置。
【請求項2】
前記要素比較作成部は、前記検索式に含まれる構成要素情報の名称と前記問い合わせ履歴情報に含まれるテーブル情報の名称とを比較し、当該構成要素情報の名称とテーブルの名称とが一致する組を前記対応関係情報として作成することを特徴とする請求項1に記載のスキーマ定義生成装置。
【請求項3】
前記要素比較作成部によって比較されたテーブル情報のうち、いずれの構成要素情報とも対応関係がなかった未割当のテーブル情報が存在する場合に、該テーブル情報に関連する問い合わせ履歴情報を分析し、従属関係にある構成要素情報を推定する従属要素推定部をさらに有することを特徴とする請求項1または2に記載のスキーマ定義生成装置。
【請求項4】
前記構成要素情報作成部によって作成された対応関係情報と、前記接続関係情報作成部によって作成された対応関係情報とを用いて、前記検索式を辿れるかを検証する検証部をさらに有することを特徴とする請求項1〜3のいずれか一つに記載のスキーマ定義生成装置。
【請求項5】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成ステップと、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成ステップと、
前記要素比較作成ステップによって作成された対応関係情報と、前記関係比較作成ステップによって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成ステップと、
を含んだことを特徴とするスキーマ定義生成方法。
【請求項6】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成手順と、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成手順と、
前記要素比較作成手順によって作成された対応関係情報と、前記関係比較作成手順によって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成手順と、
をコンピュータに実行させることを特徴とするスキーマ定義生成プログラム。
【請求項1】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成部と、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成部と、
前記要素比較作成部によって作成された対応関係情報と、前記関係比較作成部によって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成部と、
を有することを特徴とするスキーマ定義生成装置。
【請求項2】
前記要素比較作成部は、前記検索式に含まれる構成要素情報の名称と前記問い合わせ履歴情報に含まれるテーブル情報の名称とを比較し、当該構成要素情報の名称とテーブルの名称とが一致する組を前記対応関係情報として作成することを特徴とする請求項1に記載のスキーマ定義生成装置。
【請求項3】
前記要素比較作成部によって比較されたテーブル情報のうち、いずれの構成要素情報とも対応関係がなかった未割当のテーブル情報が存在する場合に、該テーブル情報に関連する問い合わせ履歴情報を分析し、従属関係にある構成要素情報を推定する従属要素推定部をさらに有することを特徴とする請求項1または2に記載のスキーマ定義生成装置。
【請求項4】
前記構成要素情報作成部によって作成された対応関係情報と、前記接続関係情報作成部によって作成された対応関係情報とを用いて、前記検索式を辿れるかを検証する検証部をさらに有することを特徴とする請求項1〜3のいずれか一つに記載のスキーマ定義生成装置。
【請求項5】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成ステップと、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成ステップと、
前記要素比較作成ステップによって作成された対応関係情報と、前記関係比較作成ステップによって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成ステップと、
を含んだことを特徴とするスキーマ定義生成方法。
【請求項6】
管理対象である構成要素を示す構成要素情報を検索するための検索式に含まれる構成要素情報と、リレーショナルデータベースへの問い合わせ履歴情報に含まれるテーブル情報とを比較し、前記構成要素情報と前記テーブル情報との対応関係を示す対応関係情報を作成する要素比較作成手順と、
前記検索式に含まれる構成要素間の関係を示す関係情報と、前記問い合わせ履歴情報に含まれるとテーブル間の関係を示す情報とを比較し、前記関係情報と前記問い合わせ履歴情報との対応関係を示す対応関係情報を作成する関係比較作成手順と、
前記要素比較作成手順によって作成された対応関係情報と、前記関係比較作成手順によって作成された対応関係情報とを用いて、前記構成要素情報のスキーマ定義および前記関係情報のスキーマ定義を生成するスキーマ定義生成手順と、
をコンピュータに実行させることを特徴とするスキーマ定義生成プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【公開番号】特開2011−257812(P2011−257812A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−129441(P2010−129441)
【出願日】平成22年6月4日(2010.6.4)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願日】平成22年6月4日(2010.6.4)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]