説明

情報収集方法、情報収集システム及び情報収集プログラム

【課題】社内の各種異種情報システムからデータを容易に収集することができる情報収集方法及び情報収集プログラムを提供する。
【解決手段】社内ネットワーク1を介して接続された各種情報システム3と社内横断検索サーバ5とから構成され、各種情報システム3において保存された情報を収集する情報収集システムであって、各種情報システム3は、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、社内横断検索サーバ5は、送信手段により送信されたデータを解析して保存する解析保存手段を備え、解析保存手段は、データベース10から複数のテーブルの情報を取得し、テーブルの更新順に従ってデータベース10を更新する構成となっている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システムを介して社内ネットワーク上保存されている情報を収集する情報収集方法、情報収集システム、及び情報収集プログラムに関し、さらに詳しくは、社内の各種異種情報システムからデータを容易に収集することができる情報収集方法、情報収集システム、及び情報収集プログラムに関する。
【背景技術】
【0002】
一般に、通信システムを介して社内ネットワーク上保存されている情報を収集する情報収集プログラムが提案されており、その情報収集プログラムとして、クローラ(Crawler)が用いられることがあった。
クローラとは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムであり、「ボット(Bot)」、「ロボット」、「スパイダー」、「ロボット」などとも呼ばれ、主に検索エンジンのデータベース、インデックス作成に用いられているほか、統計調査などの目的にも利用される。
そして、クローラは、既知のHTML文書の新しいコピーを要求し、文書中に含まれるリンクをたどり別の文書を収集するという動作を繰り返し、新しい文書を見つけた場合はデータベースに登録し、既知のファイルが存在しないことを検出した場合はデータベースから削除するようになっている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、企業内のデータを収集するためには、その情報収集プログラムが、社内にファイル共有サーバ、データベース、HTTPサーバ、グループウェアなど色々なインフラの違う既存の情報システムに対応しなければならないものであった。
一方、新しい情報システムを導入する時には、社内横断検索システムに整合しなければならず、この場合、如何に開発の工夫を最小化にするのかが課題となっていた。
また、従来、社内横断検索システムにおいては、各データソースから収集したデータをデータベースに保存し、インデックスを作成し、違うデータシステムから収集したデータのお互いの関係を表す為に、各データベースから収集したデータをテーブルに保存し、他のデータベースに参照しているフィールドがあれば、そのフィールドを参照先テーブルのフィールドの外部キーにする方法でデータ間の参照関係を表すようにしなければならず、手間がかかるものであった。
さらに、検索システム内部のデータベースでデータの冗長性を減らすために、各テーブルから共通のデータフィールドを一つ或いは複数のテーブルにまとめることもあったが、クローラが収集されたデータをデータベースに登録する時に、どのデータを先に登録するか、どのデータを後にするかというデータの参照整合性問題を如何に対応するかも課題であった。
本発明は、かかる課題に鑑みてなされたものであり、社内の各種異種情報システムからデータを容易に収集することができる情報収集方法、情報収集システム、及び情報収集プログラムを提供することを目的とする。
【課題を解決するための手段】
【0004】
本発明はかかる課題を解決するために、請求項1記載の発明は、社内ネットワークを介して各種情報システムにおいて保存された情報を収集する情報収集方法であって、前記各種情報システムから情報を収集し、統一したフォーマットのデータに変換して、指定先に送信する送信ステップと、前記送信ステップにより送信されたデータを解析して保存する解析保存ステップと、を有し、前記解析保存ステップは、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする。
請求項2記載の発明は、前記解析保存ステップは、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割する請求項1に記載の情報収集方法を特徴とする。
請求項3記載の発明は、前記解析保存ステップは、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定する請求項1又は2に記載の情報収集方法を特徴とする。
請求項4記載の発明は、前記解析保存ステップは、前記分割したデータを前記テーブルの更新順に従って更新する請求項2に記載の情報収集方法を特徴とする。
【0005】
請求項5記載の発明は、社内ネットワークを介して接続された各種情報システムと社内横断検索サーバとから構成され、前記各種情報システムにおいて保存された情報を収集する情報収集システムであって、前記各種情報システムは、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、前記社内横断検索サーバは、前記送信手段により送信されたデータを解析して保存する解析保存手段を備え、前記解析保存手段は、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新する情報収集システムを特徴とする。
請求項6記載の発明は、前記解析保存手段は、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割する請求項5に記載の情報収集システムを特徴とする。
請求項7記載の発明は、前記解析保存手段は、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定する請求項5又は6に記載の情報収集システムを特徴とする。
請求項8記載の発明は、前記解析保存手段は、前記分割したデータを前記テーブルの更新順に従って更新する請求項6に記載の情報収集システムを特徴とする。
請求項9記載の発明は、コンピュータに請求項1乃至4のいずれか一項に記載の情報収集方法を実行させるための情報収集プログラムである。
【発明の効果】
【0006】
本発明によれば、社内の各種異種情報システムからデータを容易に収集することができる。
【図面の簡単な説明】
【0007】
【図1】本発明による自動情報収集プログラムの一実施形態を使用した社内横断検索システムの概略構成ブロック図である。
【図2】各情報システム3及び社内横断検索サーバ5の基本構成を示す構成図である。
【図3】フェッチクローラ7とコレクタクローラ9の内部構成を示すブロック図である。
【図4】フェッチクローラ7が出力するデータのフォーマットを示す説明図である。
【図5】コレクタクローラ9の動作を示すフローチャートである。
【図6】スプールファイル一次解析部9d及び二次スプールファイルの構造を示すブロック図である。
【図7】スプールファイルに対しての一次解析の過程を示すフローチャートである。
【図8】図5のステップS505における各二次解析スプールファイル及びデータベースの更新処理のフローチャートである。
【発明を実施するための形態】
【0008】
以下、本発明を図に示した実施形態を用いて詳細に説明する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
図1は、本発明による自動情報収集プログラムの一実施形態を使用した社内横断検索システムの概略構成ブロック図である。
図1に示すように、この社内横断検索システムは、社内ネットワーク1を介して、各情報システム3と、社内横断検索サーバ5とが接続された構成となっている。各情報システム3は、プロジェクト管理データベース3a、設計文書管理システム3b、及びウェブサーバ3c等の保存データの形態の異なる各種情報システムからなっており、プロジェクト管理データベース3aは、データベースの形式で、プロジェクトと該当プロジェクトの予算を管理し、設計文書管理システム3bは、各プロジェクトの設計文書を一括で管理し、各プロジェクトの公開情報はウェブサーバ3cにより社内外に公開されている。
そして、本実施形態による自動情報収集プログラム(以下、「クローラ」と呼ぶ)は、フェッチクローラ7とコレクタクローラ9との二層の構造からなっており、各情報システム3に、フェッチクローラ7が設置され、社内横断検索サーバ5にコレクタクローラ9が設置されている。なお、クローラとは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。
【0009】
図2は、各情報システム3及び社内横断検索サーバ5の基本構成を示す構成図である。
図2で示すように、各情報システム3及び社内横断検索サーバ5は、内部バス11を介して、通信部13と、入力部15と、出力部17と、記憶部19と、入出力I/F部21と、制御部23とが相互に接続されており、通信部13は、社内ネットワーク1に接続されており、入出力I/F部21は、入出力機器25に接続されている。また、制御部23は、CPU23a、ROM23b、及びRAM23cからなっている。なお、フェッチクローラ7は、各情報システム3における制御部23のROM23bに記憶されており、コレクタクローラ9は、社内横断検索サーバ5における制御部23のROM23bに記憶されている。
また、社内横断検索サーバ5は、後述する複数の所属テーブルの記憶された目標データベースを有している。
【0010】
図3は、フェッチクローラ7とコレクタクローラ9の内部構成を示すブロック図である。
図3に示すように、フェッチクローラ7は、制御部7a、マッピング部7b、データ出力部7cから構成される。
そして、制御部7aは、フェッチクローラ7が何時起動するかを制御し、起動時期は、クローラを内部に備える情報システムで決まり、方法としては、例えばシステムクロックを利用して定時で起動する方法と、情報システムの更新がある場合に新しいOSのプロセスを作って、フェッチクローラを読み出す方法とがある。
マッピング部7bは、該当フェッチクローラを内部に備える情報システムのデータフィールドの名前をコレクタクローラ9が分かるような名前に変換するためのものである。
データ出力部7cは、コレクタクローラ9にフォーマット化されたデータを転送するためのものである。データの転送方法は、コレクタクローラ9を内部に備えるマシンでネットワーク共有フォルダ(以下、「スプール」と呼ぶ)を生成し、フェッチクローラ7のデータ出力部7cがこの共有フォルダにフォーマットされたデータをファイルの形式で書き込むことで実現できる。
以下、このファイルを一次スプールファイルと呼ぶ。
【0011】
図4は、フェッチクローラ7が出力するデータのフォーマットを示す説明図である。このように、各情報システム3のフェッチクローラ7は、統一されたフォーマットのデータである出力ファイル(一次スプールファイル)を出力するようになっている。
図4に示すように、フェッチクローラ7の出力ファイル31は、ヘッダー部33とデータ部35とで構成され、ヘッダー部33にはデータ部35で各データの区切りをあらわす指示記号とデータの各構成フィールドの区切りが保存されている。各データ部35では、ヘッダー部33で定義された区切り記号を用いて、データを保存する。
ヘッダー部33とデータ部35の区切り記号はXMLタグのような記号で実現されることができ、ヘッダー部33内において、データの開始記号はデータルートタグフィールド部33aで指定される。また、データフィールドリスト33bは、データ部35で各データにあるデータフィールドをリストアップし、各データフィールドの区切り記号はデータフィールド管理情報として保存される。そして、ヘッダー部33の情報に基づいて、各データ部35では、ヘッダー部33のデータルートタグフィールド部33aで指定されたルート区切り記号を用いて、各データを区分する。また、各データ部35内では、ヘッダー部33で定義されているデータフィールド区切り記号を用いて各データフィールドの値を保存する。
即ち、フェッチクローラ7の出力ファイル31は、ヘッダー部33とデータ部35とを有しており、ヘッダー部33は、フェッチクローラ7を有する情報システムの各データにあるデータフィールドのリストアップされたデータファイルリストを有しており、後述するように、フェッチクローラ7よりのデータをフェッチクローラ7の出力ファイル31のデータファイルリストのデータフィールドに従って分けて上記目標データベースの複数のテーブルへ所属させるようになっている。
【0012】
例えば、図4のフォーマットにおいて、ヘッダー部33が、<header></header>というタグに囲まれ、データルートタグフィールド部33aが、<roottag></roottag>にし、データフィールドリスト33bが、<fieldlist></fieldlist>に囲まれ、各データフィールドはデータフィールド管理情報<field></field>にある内容であることにした場合、スプールファイルは下記のようになる。
<header>
<roottag>dataroottag</roottag>
<feildlist>
<field>field1</field>
<field>field2</field>
</fieldlist>
</header>
<dataroottag>
<field1>aaa</field1>
<field2>bbb</field2>
</dataroottag>
<dataroottag>
<field1>ccc</field1>
<field2>ddd</field2>
</dataroottag>
ここでは、ヘッダーで定義されたdataroottagを用いて各データそれぞれを表わし、ヘッダー部33で定義されたfield1とfield2はデータ部35でデータフィールドを表わし、各データ内で<field1></field1><field2></field2>で囲まれた部分はデータフィールドの値を表す。
次に、図3に戻って、コレクタクローラ9は、スプール9a、インデックス生成部9b、データ保存部9c、スプールファイル一次解析部9d、スプールファイル二次解析部9e、データベース構造分析部9fによって構成される。
コレクタクローラ9の動作は、図5に示される。
【0013】
図5は、コレクタクローラ9の動作を示すフローチャートである。
図5のステップS501において、まず、データベース構造分析部9fが、目標データベース10からテーブルの構造情報を取得する。そこで、横断検索サーバ5の目標データベース10にあるすべてのテーブルと各テーブルの外部キー及びそれの参照先のテーブルを得ることができる。なお、目標データベース10には、フェッチクローラ7よりのデータをフェッチクローラ7の出力ファイル31のデータファイルリストのデータフィールドに従って分けて所属させる複数のテーブルが記憶されている。
そして、ステップS502において、同じデータベース構造分析部9fで各テーブル間の依存関係に基づいて、各テーブルへの挿入順番である更新順番を算出する。ここでは、下記のアルゴリズムでテーブルの更新順番を算出する。
1.各テーブルを有向グラフの頂点とする。
2.参照関係があるテーブル間に参照先にエッジを張る(例えばテーブルAはテーブルBに参照すれば、頂点AからBにエッジを張る)。
3.グラフのトップロジソートを用いて各頂点の依存順番をソートする。
4.各頂点の依存順番をテーブルの依存順番に変換し、テーブルの依存順番を決める。
【0014】
上記のアルゴリズムで、グラフ構造を表すためには、二次元配列を使用する。つまり、配列の行ナンバー及び列ナンバーを頂点に表し、2点の間にエッジがあれば、所対応の行と列のところの値を1にする。
上記のアルゴリズムで、グラフのトップロジソートは下記のアルゴリズムを用いる。
1.キューL、Sを用意する。
2.流入エッジはない頂点をすべて、Sに入れる。
3.Sは空にならないうち下記のことを繰り返す。
(1)一つの頂点nをSから削除する。
(2)nをLに入れる。
(3)すべて頂点nからくるエッジのある頂点mに対して、下記のことを繰り返す。
i.エッジeはnからくるエッジとしたら、eを削除する。(二次元配列所対応の(n,m)のところの値を0にする)
ii.もしmは流入するエッジはなければmをSに入れる。
4.もしグラフはエッジが残れば:エラーメッセージを出力する。
【0015】
上記アルゴリズムで、ステップ4は特にグラフの中に循環があるかどうかを検出する目的とする。
なお、循環のあるグラフにはトポロジーソートを適用できない。また、直感的に、グラフの中に循環があるということも、テーブルの間に循環参照があるということに相当する。この場合、新しいデータをテーブルに挿入する時に、最初に更新すべきテーブルの探すは無限になるため、異常が発生してしまう。
そして、上記ソートされた頂点は、AからBにエッジがあればAはBの先になるという特徴がある。つまり、テーブルAはBに参照すれば、上記のソート結果はちょうどテーブルの更新順番の逆である。そのため、ここでは、一回ソートされた結果を逆にする。
次に、テーブル更新順番の算出が終了後、ステップS503において、すべての一次スプールファイルに対してスプールファイル一次解析部9dで一次解析を行う。
【0016】
図6は、スプールファイル一次解析部9d及び二次スプールファイルの構造を示すブロック図である。
図6(a)に示すように、スプールファイル一次解析部9dは、フェッチクローラフィールド管理部41、二次スプールファイル出力部43、一次解析部45によって構成される。
図7は、スプールファイルに対しての一次解析の過程を示すフローチャートである。
ここで、一次解析の主要な目的は、一次スプールファイルに保存されるデータの各データフィールドはどのテーブルに属するかを識別し、同じテーブルに属するデータフィールドを一つの二次スプールファイルにまとめるとするものである。各データフィールドに対して、どのテーブルに属するかに関する情報は、フェッチクローラフィールド管理部41に管理される。フェッチクローラフィールド管理部41には例えば、field1はtable1、field2はtable2に属するというような情報が保存される。
図7のステップS701において、まず、スプールファイルのヘッダーに対して解析を行う。
そこで、フェッチクローラフィールド管理部41の情報を参照しながら、一次スプールファイルのヘッダーのデータフィールドリスト33bにリストされた各フィールドはどのテーブルに属するかを分ける。
【0017】
そして、ステップS702において、二次スプールファイルヘッダーを生成して、二次スプールファイルへ出力する。即ち、この二次スプールファイルヘッダー生成のステップで、図6(b)に示すような二次スプールファイルを生成する。二次スプールファイルは、ヘッダー47と複数のデータ49によって構成される。
二次スプールファイルは、一次スプールファイルと比べて、ヘッダー47のところに所在テーブル名51、各データフィールド情報のところに該当データフィールド所対応テーブルのコラム名53が付加えられた。残りのデータルートタグ情報55、データフィールドリスト57、データフィールド情報59、フィールド名61は一次スプールファイルと同じである。
次に、ステップS703において、一次スプールファイルのヘッダー解析結果に従って、一次スプールファイルのデータ解析を行う。ここでは、一次スプールファイルヘッダーの解析結果を用いて、各データフィールドはどのテーブルに属するか判断する。
そして、ステップS704において、一次スプールファイル解析で得られた各テーブルに対応する二次ファイルに所対応のデータフィールドを書き込む。
【0018】
例えば、前記の一次スプールファイルを入力例として、フェッチクローラフィールド管理部41で、feild1はtable1に属し、field2はtable2に属する情報が登録されば、このステップによって、下記の二つの二次スプールファイルが出力されるとなる。
<header>
<roottag>dataroottag</roottag>
<table>table1</table>
<feildlist>
<field>
<name>field1</name>
<column>column1</column>
</field>
</fieldlist>
</header>
<dataroottag>
<field1>aaa</field1>
</dataroottag>
<dataroottag>
<field1>ccc</field1>
</dataroottag>

<header>
<roottag>dataroottag</roottag>
<table>table2</table>
<feildlist>
<field>
<name>field2</name>
<column>column2</column>
</field>
</fieldlist>
</header>
<dataroottag>
<field2>bbb</field2>
</dataroottag>
<dataroottag>
<field2>ddd</field2>
</dataroottag>
【0019】
そして、図5のステップS504に戻り、すべての一次スプールファイルが二次スプールファイルに変換されたあと、二次スプールファイルの更新順番をソートする。具体的には、各二次スプールファイルヘッダー部を読み取って、ヘッダー部47に記載されたテーブル情報とテーブル更新順番の算出するステップS502で算出された更新順番にしたがって、二次スプールファイルの挿入順を決める。
そして、ステップS505において、上記二次スプールファイルの挿入順に従って各二次スプールファイルをスプールファイル二次解析部9eにより二次解析して、目標データベース10を更新する。図8は、図5のステップS505における各二次解析スプールファイル及びデータベースの更新処理のフローチャートである。
具体的には、図8のステップS801に示すように、まず、二次スプールファイルのヘッダーを解析する。
【0020】
そこで、ヘッダーの情報にあるテーブル名とフィールドのコラム名を用いて、SQLのupdate文とinsert文のフレームを作成する。
作成されたフレームは、例えば、update table1 set field1=@@,where field1=##とinsert into table1(field1)values(@@)のようになる。
そして、ステップS802において、各データを解析し、各フィールドの値を獲得する。そして、ステップS803において、作成されたフレームに値を代入して、SQL文を生成する。そして、ステップS804において、生成したSQL文を実行して、テーブルを更新する。具体的に、update文を先に実行して、失敗したらinsert文を実行するとする。
なお、上記トポロジーソートのアルゴリズムとしては下記のようなアルゴリズムを用いることもできる。
1.キューLとSを用意する。
2.すべての頂点をSに追加する。
3.Sにあるすべての頂点nに対して下記のFunction visit(node n)を実行する。
(1)If n not visited then
I.nをvisitedにマークする。
II.nをLに追加する。
(2)すべてnからエッジがくる頂点mに対して
I.もし、mはすでにLにいれば、エラーメッセージを出力し、プログラム終了
II.visit(m)を実行する。
3−(2)−Iはグラフに循環があるかどうかを検出するステップである。
【符号の説明】
【0021】
1…社内ネットワーク、3a…プロジェクト管理データベース、3b…設計文書管理システム、3c…ウェブサーバ、3…各情報システム、5…社内横断検索サーバ、7a…制御部、7b…マッピング部、7c…データ出力部、7…フェッチクローラ、9a…スプール、9b…インデックス生成部、9c…データ保存部、9d…スプールファイル一次解析部、9e…スプールファイル二次解析部、9f…データベース構造分析部、9…コレクタクローラ、10…目標データベース、11…内部バス、13…通信部、15…入力部、17…出力部、19…記憶部、23a…CPU、23b…ROM、23c…RAM、23…制御部、25…入出力機器、31…出力ファイル、33a…データルートタグフィールド部、33b…データフィールドリスト、33…ヘッダー部、35…データ部、41…フェッチクローラフィールド管理部、43…二次スプールファイル出力部、45…一次解析部、47…ヘッダー部、49…データ、51…所在テーブル名、53…コラム名、55…データルートタグ情報、57…データフィールドリスト、59…データフィールド情報、61…フィールド名
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特許第4190603号
【特許文献2】特開2008−165356公報
【特許文献3】特開2007−080103公報
【特許文献4】特開2008−305352公報
【特許文献5】特開2005−135381公報
【特許文献6】特開2008−186157公報

【特許請求の範囲】
【請求項1】
社内ネットワークを介して各種情報システムにおいて保存された情報を収集する情報収集方法であって、
前記各種情報システムから情報を収集し、統一したフォーマットのデータに変換して、指定先に送信する送信ステップと、
前記送信ステップにより送信されたデータを解析して保存する解析保存ステップと、を有し、
前記解析保存ステップは、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする情報収集方法。
【請求項2】
前記解析保存ステップは、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割することを特徴とする請求項1に記載の情報収集方法。
【請求項3】
前記解析保存ステップは、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定することを特徴とする請求項1又は2に記載の情報収集方法。
【請求項4】
前記解析保存ステップは、前記分割したデータを前記テーブルの更新順に従って更新することを特徴とする請求項2に記載の情報収集方法。
【請求項5】
社内ネットワークを介して接続された各種情報システムと社内横断検索サーバとから構成され、前記各種情報システムにおいて保存された情報を収集する情報収集システムであって、
前記各種情報システムは、収集した情報を統一したフォーマットのデータに変換して指定先に送信する送信手段を備え、
前記社内横断検索サーバは、前記送信手段により送信されたデータを解析して保存する解析保存手段を備え、前記解析保存手段は、データベースから複数のテーブルの情報を取得し、前記テーブルの更新順に従って前記データベースを更新することを特徴とする情報収集システム。
【請求項6】
前記解析保存手段は、前記フォーマットされたデータを構成するデータフィールドを当該データの属する所属テーブルに基づいて分割することを特徴とする請求項5に記載の情報収集システム。
【請求項7】
前記解析保存手段は、前記データベースから各テーブルの情報を取得し、取得した各テーブルの情報に従って前記テーブル毎の更新順を決定することを特徴とする請求項5又は6に記載の情報収集システム。
【請求項8】
前記解析保存手段は、前記分割したデータを前記テーブルの更新順に従って更新することを特徴とする請求項6に記載の情報収集システム。
【請求項9】
コンピュータに請求項1乃至4のいずれか一項に記載の情報収集方法を実行させるための情報収集プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−197899(P2011−197899A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−62666(P2010−62666)
【出願日】平成22年3月18日(2010.3.18)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】