(57)【要約】【課題】複数の稼動しているデータベースに存在するデータの間に新しい関係を構築する場合に、関係をルール化して利用時に検索をして関係を取得したり、関係をデータベース化して別のデータベースに格納するようなシステムでは、データベースへの検索の付加が高く、効率も悪かった。また、クラスタなどの構成をとる場合には、データベースへの付加はさらに増大する傾向にあった。【解決手段】分散しているデータベースのレコード間の関係だけを管理するデータベースを新たに設置し、ここにある関連情報をキャッシュすることにより、データベースの付加を低減することが可能になる。また、関連情報のキャッシュはクラスタシステム間で同期がとられるために、データベースへのアクセスが多いシステムでは効率的な検索が可能になる。【選択図】図２
2005301323.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースへの接続手段、これらの複数のデータベースにある各レコード間の関連を保持する手段を備えたデータベース統合システムにおいて、各レコードの関係だけをメモリ上にキャッシュするしくみを持つデータベース統合システム。
【請求項２】
請求項１のデータベース統合システムにおいて、関連データにIDがつけられていて、関連データが更新されたことをイベントとして取得できるしくみと、そのイベントを関連データを利用しているすべてのコンピュータに配信できるしくみを持ち、更新イベントを受け取ったことにより、関連情報のキャッシュを廃棄することが可能なデータベース統合システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、既存のデータベースを統合するミドルウェアに関する。
【０００２】
【従来の技術】
分散されたデータベースにあるレコード間に新しい関係を構築する場合の方法を以下に示す。
【表１】
2005301323.tif 000003
【表２】
2005301323.tif 000004
【表３】
2005301323.tif 000005
表１，２のように既存テーブルがある場合を想定する。表１で示すテーブル１のプライマリーキーはColum1、表２に示すテーブル２のプライマリーキーはColumAとなっている。こらら２つのテーブルは、別々のコンピュータ上で動作するデータベースシステム内に格納されている。
【０００３】
ここで、テーブル１にある"00001"がプライマリーキーであるレコードとテーブル２にある"000020"がプライマリーキーであるレコードに"RelationA"という関係を持たせる。こららの関係は、データベースに保持される必要があるため、テーブル１かテーブル２が存在するデータベース内か新たなデータベース内に表３のテーブルが必要となる。
【０００４】
テーブル１にあるプライマリーキーが"00001"であれレコードとRelationAという関係を持つデータを取得する動作を以下に示す。
【０００５】
1. テーブル３に対して、"Primarykey1=00001 AND Name=RelationA"という条件でSQLを発行して、テーブル３の情報を取得する。
2. ここでは、テーブル３の１行目のデータが取得できているので、テーブル２のプライマリーキーが取得できる。
3. 取得したテーブル２のプライマリーキーを用いて、テーブル２を検索してテーブル２の2行目のデータを取得する。
【０００６】
上記の動作は、単純であるが実際の運用上は"Primarykey1=00001 AND Name=RelationA"という条件でSQLを発行すると複数のデータが取得されることになる。
【発明が解決しようとする課題】
別々のデータベースにあるレコードに対して、ある関係を構築する場合、２つの方法がある。１つは、関係をルール化する方法である。この方法では、あるルールに基づいてあるレコードの情報をもとに他のデータベースに対してクエリを発行して、関連データを取得する。この場合は、関係のあるデータを取得するたびにデータベースへの検索が発生して、パフォーマンス上問題となる。
【０００７】
また、データの関連だけをデータベースに持っている場合でも、関連データが膨大になった場合は、関連データをデータベースから検索するための負荷が高くなる。
【０００８】
クラスタ化された環境で用いられるとさらに検索の発行回数が増大する。図１にクラスタ環境での動作を示す。データベースのデータは、一般的にアプリケーションサーバーなどで利用されるために、複数のアプリケーションサーバーがクラスタ化されている動作環境となっている。
【０００９】
アプリケーションサーバー（１）と（２）では、データベースにあるデータがメモリ上に展開されて利用される。同様に関連１というレコード間の関係もそれぞれのアプリケーションサーバーのメモリに展開されて利用される。
【００１０】
ここで、アプリケーションサーバー（１）からレコード１の関係として新たにレコード３が追加された場合やレコード１とレコード２の関係が削除されたような場合は、メモリ上のデータを更新する必要がある。また、１つのアプリケーションサーバーが更新した内容を他のアプリケーションサーバーのメモリ上の情報に反映させることができないために、リアルタイムで情報を反映させるには、必要なときに関連保持情報データベースからSQLを用いてデータを取得する必要がある。
【００１１】
レコード１とレコード２の関係を取得するためには、毎回"Primarykey1=00001 AND Name=RelationA"のようなSQLを発行して、２つのレコードの関係をデータベースからアプリケーションサーバーのメモリ上に展開する必要がある。
【００１２】
【課題を解決するための手段】
【００１３】
アプリケーションサーバーに相当するデータをメモリ上に展開してユーザーアプリケーションにサービスを行うコンピュータ上で、データベースに存在するレコード間の関連だけをキャッシュするしくみを作成する。
【００１４】
また、関連保持用のデータベースのデータが更新された場合、データが更新されたことを通知するための関連データ管理エージェントを配置する。このエージェントは、関連保持用のデータの内容が更新されたことを各コンピュータに配置されたキャッシュを管理する関連データキャッシュ管理エージェントに通知する。
【００１５】
関連データキャッシュ管理エージェントは、関連データ管理エージェントからデータの更新情報を受け取ると管理している関連データのキャッシュを廃棄するか、または利用不可の状態に変更する。
【００１６】
その後、その関連データが必要になったときに関係保持用データベースより、更新された情報を取得する。
【発明の実施の形態】
【００１７】
図２に本システムの構成図の例を示す。８の関連保持用のデータベースに関連データ管理エージェントが配置される。これは、関連保持用のデータベース内のデータが更新された際に更新をイベントとしてキャッチする。
【００１８】
データを参照している９と１０のコンピュータには、関連データキャッシュ管理エージェントが配置されている。関連データキャッシュ管理エージェントは、メモリが利用できる範囲で、関連をメモリ上に保持する。
【００１９】
コンピュータ（１）上で動作するアプリケーションから、関連保持用のデータベース内のデータが更新された場合、関連データ管理エージェントがデータベースより更新をイベントとして受け取り、アプリケーションが動作する各コンピュータ（９，１０）で動作する関連データキャッシュ管理エージェントに更新された関連情報のIDを通知する。
【００２０】
関連データキャッシュ管理エージェントは、受け取ったIDから関連データを特定して、そのキャッシュしているデータを破棄する。アプリケーションが次回にこのデータを利用するときに再び関連保持用のデータベースよりロードされて、キャッシュされる。
【００２１】
図３では、レコード１とレコード２が関連１という関係を持ち、レコード２とレコード３が関連２という関係を持っている。関連情報には、関連の名称などの付加情報があるために関連データが更新された場合には、データベースからのデータの再取得が必要になる。１２で示す部分が関連データであり、関連データキャッシュ管理エージェントの管理対象となっている。本提案のシステムを用いて作成されるアプリケーションは、関連情報の取得・更新を必ず関連データキャッシュ管理エージェントを経由して行う。これにより、他のコンピュータ上にあるキャッシュも自動的に更新される。
【発明の効果】
実データは、既存のデータベースに残したまま、関連だけを管理するデータベース配置し、データの関連だけをキャッシュすることにより、検索のパフォーマンスを向上させることが可能になる。クラスタ環境で複数のコンピュータからデータベースを利用する場合にもキャッシュの制御機能を持っているために、データベースへ負荷をかけず、パフォーマンスの劣化を防ぐことが可能である。
【図面の簡単な説明】
【図１】関連データをデータベースに持った場合の例
【図２】本発明の実施例である。
【図３】本発明の実施例である。
【符号の説明】
１・・・既存データベース（１）
２・・・既存データベース（２）
３・・・関連データを保持しているデータベース
４・・・本提案のシステムを利用するアプリケーションが動作するコンピュータ（１）
５・・・本提案のシステムを利用するアプリケーションが動作するコンピュータ（２）
６・・・既存データベース（１）
７・・・既存データベース（２）
８・・・関連データを保持しているデータベース
９・・・本提案のシステムを利用するアプリケーションが動作するコンピュータ（１）
１０・・・本提案のシステムを利用するアプリケーションが動作するコンピュータ（２）
１１・・・本提案のシステムを利用するアプリケーションが動作するコンピュータ
１２・・・キャッシュの対象となるオブジェクト
【図１】
2005301323.tif 000006
【図２】
2005301323.tif 000007
【図３】
2005301323.tif 000008