(57)【要約】【課題】社内の各種異種情報システムからデータを容易に収集することができる情報収集方法及び情報収集プログラムを提供する。【解決手段】社内ネットワーク１を介して接続された各種情報システム３と社内横断検索サーバ５とから構成され、各種情報システム３において保存された情報を収集する情報収集システムであって、各種情報システム３は、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、社内横断検索サーバ５は、送信手段により送信されたデータを解析して保存する解析保存手段を備え、解析保存手段は、データベース１０から複数のテーブルの情報を取得し、テーブルの更新順に従ってデータベース１０を更新する構成となっている。【選択図】図１
2011197899.tif 000002
【特許請求の範囲】
【請求項１】
社内ネットワークを介して各種情報システムにおいて保存された情報を収集する情報収集方法であって、
前記各種情報システムから情報を収集し、統一したフォーマットのデータに変換して、指定先に送信する送信ステップと、
前記送信ステップにより送信されたデータを解析して保存する解析保存ステップと、を有し、
前記解析保存ステップは、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする情報収集方法。
【請求項２】
前記解析保存ステップは、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割することを特徴とする請求項１に記載の情報収集方法。
【請求項３】
前記解析保存ステップは、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定することを特徴とする請求項１又は２に記載の情報収集方法。
【請求項４】
前記解析保存ステップは、前記分割したデータを前記テーブルの更新順に従って更新することを特徴とする請求項２に記載の情報収集方法。
【請求項５】
社内ネットワークを介して接続された各種情報システムと社内横断検索サーバとから構成され、前記各種情報システムにおいて保存された情報を収集する情報収集システムであって、
前記各種情報システムは、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、
前記社内横断検索サーバは、前記送信手段により送信されたデータを解析して保存する解析保存手段を備え、前記解析保存手段は、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする情報収集システム。
【請求項６】
前記解析保存手段は、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割することを特徴とする請求項５に記載の情報収集システム。
【請求項７】
前記解析保存手段は、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定することを特徴とする請求項５又は６に記載の情報収集システム。
【請求項８】
前記解析保存手段は、前記分割したデータを前記テーブルの更新順に従って更新することを特徴とする請求項６に記載の情報収集システム。
【請求項９】
コンピュータに請求項１乃至４のいずれか一項に記載の情報収集方法を実行させるための情報収集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムを介して社内ネットワーク上保存されている情報を収集する情報収集方法、情報収集システム、及び情報収集プログラムに関し、さらに詳しくは、社内の各種異種情報システムからデータを容易に収集することができる情報収集方法、情報収集システム、及び情報収集プログラムに関する。
【背景技術】
【０００２】
一般に、通信システムを介して社内ネットワーク上保存されている情報を収集する情報収集プログラムが提案されており、その情報収集プログラムとして、クローラ（Ｃｒａｗｌｅｒ）が用いられることがあった。
クローラとは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムであり、「ボット（Ｂｏｔ）」、「ロボット」、「スパイダー」、「ロボット」などとも呼ばれ、主に検索エンジンのデータベース、インデックス作成に用いられているほか、統計調査などの目的にも利用される。
そして、クローラは、既知のＨＴＭＬ文書の新しいコピーを要求し、文書中に含まれるリンクをたどり別の文書を収集するという動作を繰り返し、新しい文書を見つけた場合はデータベースに登録し、既知のファイルが存在しないことを検出した場合はデータベースから削除するようになっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、企業内のデータを収集するためには、その情報収集プログラムが、社内にファイル共有サーバ、データベース、ＨＴＴＰサーバ、グループウェアなど色々なインフラの違う既存の情報システムに対応しなければならないものであった。
一方、新しい情報システムを導入する時には、社内横断検索システムに整合しなければならず、この場合、如何に開発の工夫を最小化にするのかが課題となっていた。
また、従来、社内横断検索システムにおいては、各データソースから収集したデータをデータベースに保存し、インデックスを作成し、違うデータシステムから収集したデータのお互いの関係を表す為に、各データベースから収集したデータをテーブルに保存し、他のデータベースに参照しているフィールドがあれば、そのフィールドを参照先テーブルのフィールドの外部キーにする方法でデータ間の参照関係を表すようにしなければならず、手間がかかるものであった。
さらに、検索システム内部のデータベースでデータの冗長性を減らすために、各テーブルから共通のデータフィールドを一つ或いは複数のテーブルにまとめることもあったが、クローラが収集されたデータをデータベースに登録する時に、どのデータを先に登録するか、どのデータを後にするかというデータの参照整合性問題を如何に対応するかも課題であった。
本発明は、かかる課題に鑑みてなされたものであり、社内の各種異種情報システムからデータを容易に収集することができる情報収集方法、情報収集システム、及び情報収集プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
本発明はかかる課題を解決するために、請求項１記載の発明は、社内ネットワークを介して各種情報システムにおいて保存された情報を収集する情報収集方法であって、前記各種情報システムから情報を収集し、統一したフォーマットのデータに変換して、指定先に送信する送信ステップと、前記送信ステップにより送信されたデータを解析して保存する解析保存ステップと、を有し、前記解析保存ステップは、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする。
請求項２記載の発明は、前記解析保存ステップは、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割する請求項１に記載の情報収集方法を特徴とする。
請求項３記載の発明は、前記解析保存ステップは、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定する請求項１又は２に記載の情報収集方法を特徴とする。
請求項４記載の発明は、前記解析保存ステップは、前記分割したデータを前記テーブルの更新順に従って更新する請求項２に記載の情報収集方法を特徴とする。
【０００５】
請求項５記載の発明は、社内ネットワークを介して接続された各種情報システムと社内横断検索サーバとから構成され、前記各種情報システムにおいて保存された情報を収集する情報収集システムであって、前記各種情報システムは、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、前記社内横断検索サーバは、前記送信手段により送信されたデータを解析して保存する解析保存手段を備え、前記解析保存手段は、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新する情報収集システムを特徴とする。
請求項６記載の発明は、前記解析保存手段は、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割する請求項５に記載の情報収集システムを特徴とする。
請求項７記載の発明は、前記解析保存手段は、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定する請求項５又は６に記載の情報収集システムを特徴とする。
請求項８記載の発明は、前記解析保存手段は、前記分割したデータを前記テーブルの更新順に従って更新する請求項６に記載の情報収集システムを特徴とする。
請求項９記載の発明は、コンピュータに請求項１乃至４のいずれか一項に記載の情報収集方法を実行させるための情報収集プログラムである。
【発明の効果】
【０００６】
本発明によれば、社内の各種異種情報システムからデータを容易に収集することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明による自動情報収集プログラムの一実施形態を使用した社内横断検索システムの概略構成ブロック図である。
【図２】各情報システム３及び社内横断検索サーバ５の基本構成を示す構成図である。
【図３】フェッチクローラ７とコレクタクローラ９の内部構成を示すブロック図である。
【図４】フェッチクローラ７が出力するデータのフォーマットを示す説明図である。
【図５】コレクタクローラ９の動作を示すフローチャートである。
【図６】スプールファイル一次解析部９ｄ及び二次スプールファイルの構造を示すブロック図である。
【図７】スプールファイルに対しての一次解析の過程を示すフローチャートである。
【図８】図５のステップＳ５０５における各二次解析スプールファイル及びデータベースの更新処理のフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明を図に示した実施形態を用いて詳細に説明する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
図１は、本発明による自動情報収集プログラムの一実施形態を使用した社内横断検索システムの概略構成ブロック図である。
図１に示すように、この社内横断検索システムは、社内ネットワーク１を介して、各情報システム３と、社内横断検索サーバ５とが接続された構成となっている。各情報システム３は、プロジェクト管理データベース３ａ、設計文書管理システム３ｂ、及びウェブサーバ３ｃ等の保存データの形態の異なる各種情報システムからなっており、プロジェクト管理データベース３ａは、データベースの形式で、プロジェクトと該当プロジェクトの予算を管理し、設計文書管理システム３ｂは、各プロジェクトの設計文書を一括で管理し、各プロジェクトの公開情報はウェブサーバ３ｃにより社内外に公開されている。
そして、本実施形態による自動情報収集プログラム（以下、「クローラ」と呼ぶ）は、フェッチクローラ７とコレクタクローラ９との二層の構造からなっており、各情報システム３に、フェッチクローラ７が設置され、社内横断検索サーバ５にコレクタクローラ９が設置されている。なお、クローラとは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。
【０００９】
図２は、各情報システム３及び社内横断検索サーバ５の基本構成を示す構成図である。
図２で示すように、各情報システム３及び社内横断検索サーバ５は、内部バス１１を介して、通信部１３と、入力部１５と、出力部１７と、記憶部１９と、入出力Ｉ／Ｆ部２１と、制御部２３とが相互に接続されており、通信部１３は、社内ネットワーク１に接続されており、入出力Ｉ／Ｆ部２１は、入出力機器２５に接続されている。また、制御部２３は、ＣＰＵ２３ａ、ＲＯＭ２３ｂ、及びＲＡＭ２３ｃからなっている。なお、フェッチクローラ７は、各情報システム３における制御部２３のＲＯＭ２３ｂに記憶されており、コレクタクローラ９は、社内横断検索サーバ５における制御部２３のＲＯＭ２３ｂに記憶されている。
また、社内横断検索サーバ５は、後述する複数の所属テーブルの記憶された目標データベースを有している。
【００１０】
図３は、フェッチクローラ７とコレクタクローラ９の内部構成を示すブロック図である。
図３に示すように、フェッチクローラ７は、制御部７ａ、マッピング部７ｂ、データ出力部７ｃから構成される。
そして、制御部７ａは、フェッチクローラ７が何時起動するかを制御し、起動時期は、クローラを内部に備える情報システムで決まり、方法としては、例えばシステムクロックを利用して定時で起動する方法と、情報システムの更新がある場合に新しいＯＳのプロセスを作って、フェッチクローラを読み出す方法とがある。
マッピング部７ｂは、該当フェッチクローラを内部に備える情報システムのデータフィールドの名前をコレクタクローラ９が分かるような名前に変換するためのものである。
データ出力部７ｃは、コレクタクローラ９にフォーマット化されたデータを転送するためのものである。データの転送方法は、コレクタクローラ９を内部に備えるマシンでネットワーク共有フォルダ（以下、「スプール」と呼ぶ）を生成し、フェッチクローラ７のデータ出力部７ｃがこの共有フォルダにフォーマットされたデータをファイルの形式で書き込むことで実現できる。
以下、このファイルを一次スプールファイルと呼ぶ。
【００１１】
図４は、フェッチクローラ７が出力するデータのフォーマットを示す説明図である。このように、各情報システム３のフェッチクローラ７は、統一されたフォーマットのデータである出力ファイル（一次スプールファイル）を出力するようになっている。
図４に示すように、フェッチクローラ７の出力ファイル３１は、ヘッダー部３３とデータ部３５とで構成され、ヘッダー部３３にはデータ部３５で各データの区切りをあらわす指示記号とデータの各構成フィールドの区切りが保存されている。各データ部３５では、ヘッダー部３３で定義された区切り記号を用いて、データを保存する。
ヘッダー部３３とデータ部３５の区切り記号はＸＭＬタグのような記号で実現されることができ、ヘッダー部３３内において、データの開始記号はデータルートタグフィールド部３３ａで指定される。また、データフィールドリスト３３ｂは、データ部３５で各データにあるデータフィールドをリストアップし、各データフィールドの区切り記号はデータフィールド管理情報として保存される。そして、ヘッダー部３３の情報に基づいて、各データ部３５では、ヘッダー部３３のデータルートタグフィールド部３３ａで指定されたルート区切り記号を用いて、各データを区分する。また、各データ部３５内では、ヘッダー部３３で定義されているデータフィールド区切り記号を用いて各データフィールドの値を保存する。
即ち、フェッチクローラ７の出力ファイル３１は、ヘッダー部３３とデータ部３５とを有しており、ヘッダー部３３は、フェッチクローラ７を有する情報システムの各データにあるデータフィールドのリストアップされたデータファイルリストを有しており、後述するように、フェッチクローラ７よりのデータをフェッチクローラ７の出力ファイル３１のデータファイルリストのデータフィールドに従って分けて上記目標データベースの複数のテーブルへ所属させるようになっている。
【００１２】
例えば、図４のフォーマットにおいて、ヘッダー部３３が、＜ｈｅａｄｅｒ＞＜／ｈｅａｄｅｒ＞というタグに囲まれ、データルートタグフィールド部３３ａが、＜ｒｏｏｔｔａｇ＞＜／ｒｏｏｔｔａｇ＞にし、データフィールドリスト３３ｂが、＜ｆｉｅｌｄｌｉｓｔ＞＜／ｆｉｅｌｄｌｉｓｔ＞に囲まれ、各データフィールドはデータフィールド管理情報＜ｆｉｅｌｄ＞＜／ｆｉｅｌｄ＞にある内容であることにした場合、スプールファイルは下記のようになる。
＜ｈｅａｄｅｒ＞
＜ｒｏｏｔｔａｇ＞ｄａｔａｒｏｏｔｔａｇ＜／ｒｏｏｔｔａｇ＞
＜ｆｅｉｌｄｌｉｓｔ＞
＜ｆｉｅｌｄ＞ｆｉｅｌｄ１＜／ｆｉｅｌｄ＞
＜ｆｉｅｌｄ＞ｆｉｅｌｄ２＜／ｆｉｅｌｄ＞
＜／ｆｉｅｌｄｌｉｓｔ＞
＜／ｈｅａｄｅｒ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ１＞ａａａ＜／ｆｉｅｌｄ１＞
＜ｆｉｅｌｄ２＞ｂｂｂ＜／ｆｉｅｌｄ２＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ１＞ｃｃｃ＜／ｆｉｅｌｄ１＞
＜ｆｉｅｌｄ２＞ｄｄｄ＜／ｆｉｅｌｄ２＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
ここでは、ヘッダーで定義されたｄａｔａｒｏｏｔｔａｇを用いて各データそれぞれを表わし、ヘッダー部３３で定義されたｆｉｅｌｄ１とｆｉｅｌｄ２はデータ部３５でデータフィールドを表わし、各データ内で＜ｆｉｅｌｄ１＞＜／ｆｉｅｌｄ１＞＜ｆｉｅｌｄ２＞＜／ｆｉｅｌｄ２＞で囲まれた部分はデータフィールドの値を表す。
次に、図３に戻って、コレクタクローラ９は、スプール９ａ、インデックス生成部９ｂ、データ保存部９ｃ、スプールファイル一次解析部９ｄ、スプールファイル二次解析部９ｅ、データベース構造分析部９ｆによって構成される。
コレクタクローラ９の動作は、図５に示される。
【００１３】
図５は、コレクタクローラ９の動作を示すフローチャートである。
図５のステップＳ５０１において、まず、データベース構造分析部９ｆが、目標データベース１０からテーブルの構造情報を取得する。そこで、横断検索サーバ５の目標データベース１０にあるすべてのテーブルと各テーブルの外部キー及びそれの参照先のテーブルを得ることができる。なお、目標データベース１０には、フェッチクローラ７よりのデータをフェッチクローラ７の出力ファイル３１のデータファイルリストのデータフィールドに従って分けて所属させる複数のテーブルが記憶されている。
そして、ステップＳ５０２において、同じデータベース構造分析部９ｆで各テーブル間の依存関係に基づいて、各テーブルへの挿入順番である更新順番を算出する。ここでは、下記のアルゴリズムでテーブルの更新順番を算出する。
１．各テーブルを有向グラフの頂点とする。
２．参照関係があるテーブル間に参照先にエッジを張る（例えばテーブルＡはテーブルＢに参照すれば、頂点ＡからＢにエッジを張る）。
３．グラフのトップロジソートを用いて各頂点の依存順番をソートする。
４．各頂点の依存順番をテーブルの依存順番に変換し、テーブルの依存順番を決める。
【００１４】
上記のアルゴリズムで、グラフ構造を表すためには、二次元配列を使用する。つまり、配列の行ナンバー及び列ナンバーを頂点に表し、２点の間にエッジがあれば、所対応の行と列のところの値を１にする。
上記のアルゴリズムで、グラフのトップロジソートは下記のアルゴリズムを用いる。
１．キューＬ、Ｓを用意する。
２．流入エッジはない頂点をすべて、Ｓに入れる。
３．Ｓは空にならないうち下記のことを繰り返す。
（１）一つの頂点ｎをＳから削除する。
（２）ｎをＬに入れる。
（３）すべて頂点ｎからくるエッジのある頂点ｍに対して、下記のことを繰り返す。
ｉ．エッジｅはｎからくるエッジとしたら、ｅを削除する。（二次元配列所対応の（ｎ，ｍ）のところの値を０にする）
ｉｉ．もしｍは流入するエッジはなければｍをＳに入れる。
４．もしグラフはエッジが残れば：エラーメッセージを出力する。
【００１５】
上記アルゴリズムで、ステップ４は特にグラフの中に循環があるかどうかを検出する目的とする。
なお、循環のあるグラフにはトポロジーソートを適用できない。また、直感的に、グラフの中に循環があるということも、テーブルの間に循環参照があるということに相当する。この場合、新しいデータをテーブルに挿入する時に、最初に更新すべきテーブルの探すは無限になるため、異常が発生してしまう。
そして、上記ソートされた頂点は、ＡからＢにエッジがあればＡはＢの先になるという特徴がある。つまり、テーブルＡはＢに参照すれば、上記のソート結果はちょうどテーブルの更新順番の逆である。そのため、ここでは、一回ソートされた結果を逆にする。
次に、テーブル更新順番の算出が終了後、ステップＳ５０３において、すべての一次スプールファイルに対してスプールファイル一次解析部９ｄで一次解析を行う。
【００１６】
図６は、スプールファイル一次解析部９ｄ及び二次スプールファイルの構造を示すブロック図である。
図６（ａ）に示すように、スプールファイル一次解析部９ｄは、フェッチクローラフィールド管理部４１、二次スプールファイル出力部４３、一次解析部４５によって構成される。
図７は、スプールファイルに対しての一次解析の過程を示すフローチャートである。
ここで、一次解析の主要な目的は、一次スプールファイルに保存されるデータの各データフィールドはどのテーブルに属するかを識別し、同じテーブルに属するデータフィールドを一つの二次スプールファイルにまとめるとするものである。各データフィールドに対して、どのテーブルに属するかに関する情報は、フェッチクローラフィールド管理部４１に管理される。フェッチクローラフィールド管理部４１には例えば、ｆｉｅｌｄ１はｔａｂｌｅ１、ｆｉｅｌｄ２はｔａｂｌｅ２に属するというような情報が保存される。
図７のステップＳ７０１において、まず、スプールファイルのヘッダーに対して解析を行う。
そこで、フェッチクローラフィールド管理部４１の情報を参照しながら、一次スプールファイルのヘッダーのデータフィールドリスト３３ｂにリストされた各フィールドはどのテーブルに属するかを分ける。
【００１７】
そして、ステップＳ７０２において、二次スプールファイルヘッダーを生成して、二次スプールファイルへ出力する。即ち、この二次スプールファイルヘッダー生成のステップで、図６（ｂ）に示すような二次スプールファイルを生成する。二次スプールファイルは、ヘッダー４７と複数のデータ４９によって構成される。
二次スプールファイルは、一次スプールファイルと比べて、ヘッダー４７のところに所在テーブル名５１、各データフィールド情報のところに該当データフィールド所対応テーブルのコラム名５３が付加えられた。残りのデータルートタグ情報５５、データフィールドリスト５７、データフィールド情報５９、フィールド名６１は一次スプールファイルと同じである。
次に、ステップＳ７０３において、一次スプールファイルのヘッダー解析結果に従って、一次スプールファイルのデータ解析を行う。ここでは、一次スプールファイルヘッダーの解析結果を用いて、各データフィールドはどのテーブルに属するか判断する。
そして、ステップＳ７０４において、一次スプールファイル解析で得られた各テーブルに対応する二次ファイルに所対応のデータフィールドを書き込む。
【００１８】
例えば、前記の一次スプールファイルを入力例として、フェッチクローラフィールド管理部４１で、ｆｅｉｌｄ１はｔａｂｌｅ１に属し、ｆｉｅｌｄ２はｔａｂｌｅ２に属する情報が登録されば、このステップによって、下記の二つの二次スプールファイルが出力されるとなる。
＜ｈｅａｄｅｒ＞
＜ｒｏｏｔｔａｇ＞ｄａｔａｒｏｏｔｔａｇ＜／ｒｏｏｔｔａｇ＞
＜ｔａｂｌｅ＞ｔａｂｌｅ１＜／ｔａｂｌｅ＞
＜ｆｅｉｌｄｌｉｓｔ＞
＜ｆｉｅｌｄ＞
＜ｎａｍｅ＞ｆｉｅｌｄ１＜／ｎａｍｅ＞
＜ｃｏｌｕｍｎ＞ｃｏｌｕｍｎ１＜／ｃｏｌｕｍｎ＞
＜／ｆｉｅｌｄ＞
＜／ｆｉｅｌｄｌｉｓｔ＞
＜／ｈｅａｄｅｒ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ１＞ａａａ＜／ｆｉｅｌｄ１＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ１＞ｃｃｃ＜／ｆｉｅｌｄ１＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
＜ｈｅａｄｅｒ＞
＜ｒｏｏｔｔａｇ＞ｄａｔａｒｏｏｔｔａｇ＜／ｒｏｏｔｔａｇ＞
＜ｔａｂｌｅ＞ｔａｂｌｅ２＜／ｔａｂｌｅ＞
＜ｆｅｉｌｄｌｉｓｔ＞
＜ｆｉｅｌｄ＞
＜ｎａｍｅ＞ｆｉｅｌｄ２＜／ｎａｍｅ＞
＜ｃｏｌｕｍｎ＞ｃｏｌｕｍｎ２＜／ｃｏｌｕｍｎ＞
＜／ｆｉｅｌｄ＞
＜／ｆｉｅｌｄｌｉｓｔ＞
＜／ｈｅａｄｅｒ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ２＞ｂｂｂ＜／ｆｉｅｌｄ２＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
＜ｄａｔａｒｏｏｔｔａｇ＞
＜ｆｉｅｌｄ２＞ｄｄｄ＜／ｆｉｅｌｄ２＞
＜／ｄａｔａｒｏｏｔｔａｇ＞
【００１９】
そして、図５のステップＳ５０４に戻り、すべての一次スプールファイルが二次スプールファイルに変換されたあと、二次スプールファイルの更新順番をソートする。具体的には、各二次スプールファイルヘッダー部を読み取って、ヘッダー部４７に記載されたテーブル情報とテーブル更新順番の算出するステップＳ５０２で算出された更新順番にしたがって、二次スプールファイルの挿入順を決める。
そして、ステップＳ５０５において、上記二次スプールファイルの挿入順に従って各二次スプールファイルをスプールファイル二次解析部９ｅにより二次解析して、目標データベース１０を更新する。図８は、図５のステップＳ５０５における各二次解析スプールファイル及びデータベースの更新処理のフローチャートである。
具体的には、図８のステップＳ８０１に示すように、まず、二次スプールファイルのヘッダーを解析する。
【００２０】
そこで、ヘッダーの情報にあるテーブル名とフィールドのコラム名を用いて、ＳＱＬのｕｐｄａｔｅ文とｉｎｓｅｒｔ文のフレームを作成する。
作成されたフレームは、例えば、ｕｐｄａｔｅ  ｔａｂｌｅ１  ｓｅｔ  ｆｉｅｌｄ１＝＠＠，ｗｈｅｒｅ  ｆｉｅｌｄ１＝＃＃とｉｎｓｅｒｔ  ｉｎｔｏ  ｔａｂｌｅ１（ｆｉｅｌｄ１）ｖａｌｕｅｓ（＠＠）のようになる。
そして、ステップＳ８０２において、各データを解析し、各フィールドの値を獲得する。そして、ステップＳ８０３において、作成されたフレームに値を代入して、ＳＱＬ文を生成する。そして、ステップＳ８０４において、生成したＳＱＬ文を実行して、テーブルを更新する。具体的に、ｕｐｄａｔｅ文を先に実行して、失敗したらｉｎｓｅｒｔ文を実行するとする。
なお、上記トポロジーソートのアルゴリズムとしては下記のようなアルゴリズムを用いることもできる。
１．キューＬとＳを用意する。
２．すべての頂点をＳに追加する。
３．Ｓにあるすべての頂点ｎに対して下記のＦｕｎｃｔｉｏｎ  ｖｉｓｉｔ（ｎｏｄｅ  ｎ）を実行する。
（１）Ｉｆ  ｎ  ｎｏｔ  ｖｉｓｉｔｅｄ  ｔｈｅｎ
Ｉ．ｎをｖｉｓｉｔｅｄにマークする。
ＩＩ．ｎをＬに追加する。
（２）すべてｎからエッジがくる頂点ｍに対して
Ｉ．もし、ｍはすでにＬにいれば、エラーメッセージを出力し、プログラム終了
ＩＩ．ｖｉｓｉｔ（ｍ）を実行する。
３−（２）−Ｉはグラフに循環があるかどうかを検出するステップである。
【符号の説明】
【００２１】
１…社内ネットワーク、３ａ…プロジェクト管理データベース、３ｂ…設計文書管理システム、３ｃ…ウェブサーバ、３…各情報システム、５…社内横断検索サーバ、７ａ…制御部、７ｂ…マッピング部、７ｃ…データ出力部、７…フェッチクローラ、９ａ…スプール、９ｂ…インデックス生成部、９ｃ…データ保存部、９ｄ…スプールファイル一次解析部、９ｅ…スプールファイル二次解析部、９ｆ…データベース構造分析部、９…コレクタクローラ、１０…目標データベース、１１…内部バス、１３…通信部、１５…入力部、１７…出力部、１９…記憶部、２３ａ…ＣＰＵ、２３ｂ…ＲＯＭ、２３ｃ…ＲＡＭ、２３…制御部、２５…入出力機器、３１…出力ファイル、３３ａ…データルートタグフィールド部、３３ｂ…データフィールドリスト、３３…ヘッダー部、３５…データ部、４１…フェッチクローラフィールド管理部、４３…二次スプールファイル出力部、４５…一次解析部、４７…ヘッダー部、４９…データ、５１…所在テーブル名、５３…コラム名、５５…データルートタグ情報、５７…データフィールドリスト、５９…データフィールド情報、６１…フィールド名
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特許第４１９０６０３号
【特許文献２】特開２００８−１６５３５６公報
【特許文献３】特開２００７−０８０１０３公報
【特許文献４】特開２００８−３０５３５２公報
【特許文献５】特開２００５−１３５３８１公報
【特許文献６】特開２００８−１８６１５７公報
【図１】
2011197899.tif 000003
【図２】
2011197899.tif 000004
【図３】
2011197899.tif 000005
【図４】
2011197899.tif 000006
【図５】
2011197899.tif 000007
【図６】
2011197899.tif 000008
【図７】
2011197899.tif 000009
【図８】
2011197899.tif 000010