(57)【要約】【課題】  第１のデータを含む第１のデータベースおよび第１のデータの複製である第２のデータを含む第２のデータベースを統合するシステムを提供する。【解決手段】    システムは、第１のデータに対応する第１の仮想テーブルと、第２のデータに対応する第２の仮想テーブルと、第１および第２の仮想テーブルに共通して設けられた仮想テーブルである共通テーブルと、第１および第２の仮想テーブルと共通テーブルの関係を記録するリストを備える。システムは、リストに基づいて、共通テーブルに対するデータベース・クエリから、第１または第２の仮想テーブルのうちの少なくとも１つを用いる２以上のアクセスプランを生成する生成部と、１以上のアクセスプランから、データベース・クエリを実行するために使用するアクセスプランを選択する選択部をさらに備える。【選択図】  図３
2008112289.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータを含む第１のデータベースおよび前記第１のデータの複製である第２のデータを含む第２のデータベースを統合するシステムであって、
前記第１のデータに対応する第１の仮想テーブルと、
前記第２のデータに対応する第２の仮想テーブルと、
前記第１および第２の仮想テーブルに共通して設けられた仮想テーブルである共通テーブルと、
前記１および第２の仮想テーブルと前記共通テーブルの関係を記録するリストと、
前記リストに基づいて、前記共通テーブルに対するデータベース・クエリから、前記第１または第２の仮想テーブルのうちの少なくとも１つを用いる２以上のアクセスプランを生成する生成部と、
前記２以上のアクセスプランから、前記データベース・クエリを実行するために使用するアクセスプランを選択する選択部と、
を備える、システム。
【請求項２】
前記２以上のアクセスプランそれぞれのコスト見積もりを実行する見積部をさらに備え、前記選択部は、前記見積部によって生成されたアクセスプランのコストに基づいて、前記２以上のアクセスプランからアクセスプランを選択する、請求項１に記載のシステム。
【請求項３】
前記生成部は、前記データベース・クエリから前記共通テーブル名を取得し、前記リストを使用して、前記共通テーブル名から前記第１および前記第２の仮想テーブル名を取得し、前記データベース・クエリ内の前記共通テーブル名を前記第１または前記第２の仮想テーブル名に書き換え、前記書き換えられたクエリをコンパイルして、アクセスプランを生成する、請求項１に記載のシステム。
【請求項４】
前記生成部によって生成された２以上のアクセスプランをキャッシュする記憶部をさらに備える、請求項１に記載のシステム。
【請求項５】
前記２以上のアクセスプランそれぞれのコスト見積もりを実行する見積部をさらに備え、前記記憶部は、前記見積部によって生成されたアクセスプランのコストをさらにキャッシュする、請求項４に記載のシステム。
【請求項６】
前記生成部は、前記記憶部にアクセスプランがキャッシュされていないことを条件にアクセスプランの生成を実行する、請求項４に記載のシステム。
【請求項７】
前記選択部は、前記記憶部にアクセスプランがキャッシュされていることを条件に、当該キャッシュされた１以上のアクセスプランから１のアクセスプランを選択する、請求項４に記載のシステム。
【請求項８】
前記選択部が選択したアクセスプランを使用して前記データベース・クエリを実行する実行部をさらに備える、請求項１のシステム。
【請求項９】
クライアントからネットワークを通じて送信された前記データベース・クエリを受信する受信部をさらに備える、請求項１に記載のシステム。
【請求項１０】
前記データベース・クエリがＳＱＬ形式に従う、請求項１に記載の装置。
【請求項１１】
前記第１または第２のデータが使用不能となったことに応じて、前記第１または第２の仮想テーブルを使用するアクセスプランのキャッシュを使用不能する管理部をさらに備える、請求項４に記載のシステム。
【請求項１２】
前記第１または前記第２のデータベースが使用可能かどうかを監視し、前記第１または前記第２のデータベースが使用不能となったことに応じて、前記管理部にその旨を通知する監視部を備える、請求項１１に記載のシステム。
【請求項１３】
前記管理部は、使用不能となった前記第１または第２のデータが再び使用可能となったことに応じて、前記使用不能としたアクセスプランを使用可能に変更する、請求項１１に記載のシステム。
【請求項１４】
前記第１のデータの複製が新たに生成されたことに応じて、前記共通テーブルを使用するアクセスプランに、前記新たな複製の生成を示す情報を付加する管理部をさらに備える、請求項１に記載のシステム。
【請求項１５】
前記生成部は、前記新たな複製の生成を示す情報が存在することを条件に、前記新たな複製に関する追加のアクセスプランを生成する、請求項１４に記載のシステム。
【請求項１６】
前記追加のアクセスプランをキャッシュする記憶部をさらに備える、請求項１５に記載のシステム。
【請求項１７】
コンピュータ・システムにおいて、第１のデータを含む第１のデータベースおよび前記第１のデータの複製である第２のデータを含む第２のデータベースを統合するための方法であって、前記コンピュータ・システムは、
前記第１のデータに対応する第１の仮想テーブルと、
前記第２のデータに対応する第２の仮想テーブルと、
前記第１および第２の仮想テーブルに共通して設けられた仮想テーブルである共通テーブルと、
前記１および第２の仮想テーブルと前記共通テーブルの関係を記録するリストを備え、
前記リストに基づいて、前記共通テーブルに対するデータベース・クエリから、前記第１または第２の仮想テーブルのうちの少なくとも１つを用いる２以上のアクセスプランを生成するステップと、
前記２以上のアクセスプランから、前記データベース・クエリを実行するために使用するアクセスプランを選択するステップと、
を含む、方法。
【請求項１８】
第１のデータを含む第１のデータベースおよび前記第１のデータの複製である第２のデータを含む第２のデータベースを統合するためのプログラムであって、
前記第１のデータに対応する第１の仮想テーブルと、
前記第２のデータに対応する第２の仮想テーブルと、
前記第１および第２の仮想テーブルに共通して設けられた仮想テーブルである共通テーブルと、
前記１および第２の仮想テーブルと前記共通テーブルの関係を記録するリストを備えるコンピュータ・システムに、
前記リストに基づいて、前記共通テーブルに対するデータベース・クエリから、前記第１または第２の仮想テーブルのうちの少なくとも１つを用いる２以上のアクセスプランを生成するステップと、
前記２以上のアクセスプランから、前記データベース・クエリを実行するために使用するアクセスプランを選択するステップと、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース技術に関する。より特定的には、本発明は、複数のデータベースを統合的に扱うためのシステム、方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを用いた大規模なデータベースシステムを構築することが広く行われている。大規模データベースシステムにおいて、複数の種類の分散されたデータベースに散在するデータを統合して使用する必要が生じることがある。
【０００３】
例えば、様々な研究員が取得した様々な研究データを管理する複数種類のデータベースを含む研究所の情報システムにおいて、散在するデータの中から埋もれた情報・知見を見つけ出すために、それらのデータを統合する必要が生じることがあるだろう。また、他の例として、会社合併等によって、元々別の会社で運用されていた別のデータベースを統合する必要が生じることがあるだろう。
【０００４】
このようなネットワーク上に分散する複数種類のデータベースを統合的に扱うために、統合データベースという仕組みが用いられている。この仕組みは、集約されたデータベースではなく分散して存在しているデータベース群にアクセスして、ひとまとまりのデータベースイメージを提供する技術である。この仕組みは個々のデータベースに直接アクセスするものであるため、新規データ項目が追加された場合にも容易に対応が可能であり、再設計や再構築にかかる時間、コストを低減することができる。
【０００５】
以上の背景のもと、業界の各社は、分散された複数種類のデータベースを扱うための製品を研究し、開発している。
【０００６】
そのような製品の一例として、インターナショナル・ビジネス・マシーンズ・コーポレーションは、ＷｅｂＳｐｈｅｒｅ（Ｒ）  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｇｒａｔｏｒ製品（以下、「ＩＩ製品」と称する）を提供する。ＩＩ製品は、インターナショナル・ビジネス・マシーンズ・コーポレーションのデータベース管理ソフトウェアであるＤＢ２（Ｒ）製品に組み込まれる。ＩＩ製品は、ＤＢ２（Ｒ）製品のデータベースに他のデータベースのテーブルを関連付けた仮想的なデータベーステーブル（ＩＩ製品においては、「ニックネーム」と称される）を定義し、分散するデータベースをあたかもＤＢ２（Ｒ）で管理されているかのように扱うことによって、データベース構造やベンダの異なる様々な種類の分散されたデータベースの統合を可能とする（非特許文献１参照）。
【０００７】
また、特開平１１−２１３０１４号公報（特許文献１）は、ユーザにＤＢサーバが分散していることを意識させずに容易に検索を行える仕組みを開示している。具体的には、１つ以上のＤＢに格納されている実データに関するメタデータがメタＤＢサーバに収集して管理され、メタＤＢサーバに対して検索をかけることによって検索要求に合致するメタデータを全て取得するようにされる。ＤＢおよびそれを管理するＤＢサーバがネットワーク上に複数存在し、それらがどこにあるか分からなくても、検索要求にマッチするデータを全て１箇所から得ることができる。
【０００８】
特表２００３−５０５７６６号公報（特許文献２）は、ＳＱＬステートメント等のデータベース・クエリに対する最適化プランに関するデータベーステーブルに対するインデックスに対する変化の影響を観察するための方法及び装置を開示する。オリジナルのテーブルをコピーし、オリジナルのテーブル内のデータを排除することによって仮想テーブルが作成される。オリジナルのテーブルと関連する既存のオリジナルのインデックスがコピーされて仮想テーブルと関連する仮想インデックスを定義する。オリジナルのテーブルに対するクエリにおける参照は仮想テーブルへの参照で置換される。次いで、データベース管理システムがそのクエリに対する新たな最適化プランを決定する。
【０００９】
【非特許文献１】”IBM DB2 Information Integrator, Federated Systems Guide, Version 8.2”、[online]、２００４年１２ 月１６日、インターナショナル・ビジネス・マシーンズ・コーポレーション、[２００６ 年１０月２３日検索]、インターネット< ftp:/ftp.software.ibm.com/ps/products/db2/info/vr82/pdf/ja_JP/iiyfpj81.pdf >
【特許文献１】特開平１１−２１３０１４号公報
【特許文献２】特表２００３−５０５７６６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
例えば、ＩＩ製品を使用して構築された統合データベースサーバに対してＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）形式に従うデータベース・クエリが発行されると、コスト（例えば、応答時間や必要な計算機資源量など）が最適になるように、統合データベース内でどのようなローカル処理を行うか、また統合データベースと分散されたデータベースとの間でリモート処理を行うか等のデータへのアクセス手順を定義するアクセスプランが生成される。
【００１１】
一般的に、統合サーバと分散されたデータベースとの間でネットワーク通信するデータ量が増加するとパフォーマンスが低下する。例えば、互いに異なるサーバに存在するデータベースについて、データベーステーブルを結合する処理（「ＪＯＩＮ処理」と称されることがある）を実施する場合、統合データベースシステムは、テーブル結合処理を実行するために必要なデータをそれぞれ分散しているデータベースシステムから取得しなければならないので、統合データベースシステムと分散データベースシステムの間で比較的大きいトラフィックが発生し、データベース処理が非効率だった。
【００１２】
そこで本発明は、上記の課題に鑑み、分散データベースシステムを統合するデータベースシステムにおける、データベース・クエリの処理の改善を実現することを目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成するために、第１のデータを含む第１のデータベースおよび第１のデータの複製である第２のデータを含む第２のデータベースを統合するシステムが提供される。システムは、第１のデータに対応する第１の仮想テーブルと、第２のデータに対応する第２の仮想テーブルと、第１および第２の仮想テーブルに共通して設けられた共通テーブルと、第１および第２の仮想テーブルと共通テーブルの関係を記録するリストを備える。システムは、リストに基づいて、共通テーブルに対するデータベース・クエリから、第１または第２の仮想テーブルのうちの少なくとも１つを用いる２以上のアクセスプランを生成する生成部と、２以上のアクセスプランから、データベース・クエリを実行するために使用するアクセスプランを選択する選択部をさらに備える。
【００１４】
システムは、２以上のアクセスプランそれぞれのコスト見積もりを実行する見積部をさらに備え、選択部は、見積部によって生成されたアクセスプランのコストに基づいて、２以上のアクセスプランからアクセスプランを選択することが好ましい。
【００１５】
以上、本発明の概要を、システムとして説明したが、本発明は、方法、プログラム、またはプログラム製品として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
【００１６】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１８】
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らないことに留意されたい。実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００１９】
図１は、本発明の実施形態のシステム１００を図示した高水準の全体概要図である。本発明の実施形態のシステム１００は、それぞれがネットワーク１５０を介して接続された、クライアント１１０、統合データベースサーバ１２０、および分散データベースサーバ１３０、１４０を含む。
【００２０】
本発明の実施形態のクライアント１１０は、データベースを照会するためのＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）形式に従うデータベース・クエリをユーザの操作に従って生成し、統合データベースサーバ１２０に送信する。ＳＱＬは、データベース技術においてよく知られたものであるので、ここでは詳細には説明しない。
【００２１】
統合データベースサーバ１２０は、分散データベースサーバ１３０、１４０のそれぞれに備えられたデータベースシステムを統合することによって、クライアント１１０からのデータベース・クエリを処理する。分散データベースサーバ１３０、１４０は、それぞれが備える磁気ディスク等の記憶装置においていわゆるデータベースシステムを構築したサーバである。
【００２２】
ネットワーク１５０は、クライアント１１０、統合データベースサーバ１２０、および分散データベースサーバ１３０、１４０を接続する通信経路であり、一例としてインターネットにより実現することができる。インターネットであるネットワーク１１０は、よく知られた通信プロトコルであるＴＣＰ／ＩＰを用いてシステム間を接続する。
【００２３】
図２は、本発明の実施形態によるシステムの一部の論理的な構成を図示する概要図である。図２は、図１で示した本発明の実施形態の構成要素のうち、統合データベースサーバ１２０、および分散データベースサーバ１３０、１４０を図示している。
【００２４】
本発明の実施形態の分散データベースサーバ１３０、１４０は、それぞれ分散データベースシステム２３０、２４０を備える。本発明の実施形態では、分散データベースシステム２３０、２４０が備えるデータベースは、それぞれ異なるデータベース構造を有するものとする。また、分散データベースシステム２３０、２４０は、それぞれ異なるデータベースのベンダが提供するデータベース管理ソフトウェア（ＤＢＭＳ）を構築してもよい。例えば、当業者は、分散データベースシステム２３０をインターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＤＢＭＳであるＤＢ２（Ｒ）を使用して構築し、分散データベースシステム２４０をオラクル・コーポレーションが提供するＤＢＭＳであるＯｒａｃｌｅ  Ｄａｔａｂａｓｅ  １０ｇを使用して構築することができる。
【００２５】
さらに、本発明の実施形態の分散データベースシステム２３０は、その一部のデータ（「第１のデータ」と称する）および第１のデータに対応するデータベーステーブル（「データベーステーブル２３２」と称する）を含むものとする。また、分散データベースシステム２４０は、第１のデータの複製であるデータ（「第２のデータ」）および第２のデータに対応するデータベーステーブル（「データベーステーブル２４２」と称する）を含むものとする。なお、かかる複製の生成は、よく知られたデータベース複製技術を参照することによって、当業者は適宜実現することができるので、ここでは説明の簡単のために詳細には説明されない。
【００２６】
本発明の実施形態の統合データベースサーバ１２０は、統合データベースシステム２２０を含む。統合データベースシステム２２０は、上述のデータベーステーブル２３２、２４２にそれぞれ関連付けられた仮想的なデータベーステーブル２２２、２２４（それぞれ「第１の仮想テーブル２２２」、「第２の仮想テーブル２２４」と称する）を備える。かかる仮想テーブルを設けることによって、統合データベースシステム２２０は、分散データベースシステム２３０、２４０を、あたかも統合データベースシステム２２０によって管理されているかのように扱うことができる。なお、統合データベースシステム技術分野の当業者は、かかる仮想テーブルを適宜実現することができるので、ここでは詳細には言及しない（例えば、非特許文献１の「ニックネーム」に関連する部分を参照されたい）。
【００２７】
本発明の実施形態においては、統合データベースシステム２２０は、第１の仮想テーブル２２２および第２の仮想テーブル２２４に共通して設けられた仮想的なデータベーステーブル（「共通テーブル２２６」と称する）を含むことに留意されたい。本発明の実施形態においては、クライアント１１０は、共通テーブル２２６に対するデータベース・クエリを統合データベースサーバ１２０に送信することによって、適切な仮想テーブルを使用して統合的にデータベース・クエリを処理することができる。統合データベースシステム２２０における、データベース・クエリの処理については、図６等を使用して後で詳述する。
【００２８】
図３は、統合データベースシステム２２０の機能ブロック図である。なお、図３の機能ブロック図に示す各要素は、図８を用いて後述するハードウェア構成を有する情報処理装置において、ハードディスク装置１３などに格納されたオペレーティング・システムやコンピュータ・プログラムをメインメモリ４にロードした上でＣＰＵ１に読み込ませ、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
【００２９】
本発明の実施形態においては、統合データベースサーバ１２０は、データベース・クエリ受信部３１０、アクセスプラン生成部３２０、アクセスプラン見積部３３０、アクセスプラン選択部３４０、アクセスプラン記憶部３５０、ディペンデンシ・リスト３６０、アクセスプラン実行部３７０、アクセスプラン管理部３８０、およびリモートデータベース監視部３９０を備える。また、統合データベースサーバ１２０は、第１の仮想テーブル２２２、第２の仮想テーブル２２４、および共通テーブル２２６をさらに備える。
【００３０】
本発明の実施形態のデータベース・クエリ受信部３１０は、クライアント１１０からネットワーク１５０を通じて送信されたデータベース・クエリを受信する機能を有する。本発明の実施形態におけるデータベース・クエリは、共通テーブル２２６に対するもの（すなわち、そのＳＱＬ文の中に共通テーブル２２６のテーブル名の指定を含むもの）であることに留意されたい。
【００３１】
本発明の実施形態のアクセスプラン生成部３２０は、後述するディペンデンシ・リスト３６０の内容に基づいて、データベース・クエリ受信部３１０が受信したデータベース・クエリから第１の仮想テーブル２２２または第２の仮想テーブル２２４を用いる１以上のアクセスプラン（どのようにして分散されたデータベースにアクセスするのかの具体的な手順）を生成する。
【００３２】
具体的には、本発明の実施形態においては、アクセスプラン生成部３２０は、データベース・クエリ受信部３１０によって受信されたデータベース・クエリから共通テーブル２２６のテーブル名を取得し、ディペンデンシ・リスト３６０を使用して、取得されたテーブル名から第１の仮想テーブル２２２のテーブル名を取得する。
【００３３】
そして、アクセスプラン生成部３２０は、データベース・クエリ内の共通テーブル２２６のテーブル名を第１の仮想テーブル２２２のテーブル名に書き換え、書き換えられたデータベース・クエリをコンパイルすることによって、第１の仮想テーブル２２２を使用するアクセスプランを生成する。
【００３４】
また、本発明の実施形態では、アクセスプラン生成部３２０は、第２の仮想テーブル２２４について上記と同様の処理をすることによって、第２の仮想テーブルを使用するアクセスプランを生成するものとする。生成されたアクセスプランの少なくとも一部は、後述するアクセスプラン記憶部にキャッシュされる。
【００３５】
なお、本発明の実施形態においては、後述するアクセスプラン記憶部にキャッシュされたアクセスプランを効果的に再利用するために、アクセスプラン生成部３２０は、アクセスプラン記憶部３５０にアクセスプランがキャッシュされていない場合のみ、上述のアクセスプランの生成処理を実行するものとする。
【００３６】
本発明の実施形態のアクセスプラン見積部３３０は、アクセスプラン生成部３２０によって生成された複数のアクセスプランそれぞれのコストの見積もりを実行する機能を有する。具体的には、本発明の実施形態においては、応答時間、使用計算機資源量の推定量が計算される。かかる応答時間、使用計算機資源量の推定量の計算は、当業者は適宜実現することができるので、ここでは詳細には説明されない。生成されたアクセスプランのコストの少なくとも一部は、後述するアクセスプラン記憶部にキャッシュされる。
【００３７】
本発明の実施形態のアクセスプラン選択部３４０は、アクセスプラン見積部３３０によって生成されたコストに基づいて、アクセスプラン生成部３２０によって生成されたアクセスプランから１のアクセスプランを選択する機能を有する。
【００３８】
本発明の実施形態のアクセスプラン記憶部３５０は、アクセスプラン生成部３２０によって生成された１以上のアクセスプランおよびアクセスプラン見積部３３０によって生成されたコストをキャッシュする。
【００３９】
本発明の実施形態のディペンデンシ・リスト３６０は、仮想テーブル２２２、２２４、共通テーブル２２６その他の統合データベースシステム２２０において使用される共通テーブルおよび仮想テーブルのテーブル名や相互の依存関係乃至関連付けに関する情報が格納されたリストである。
【００４０】
本発明の実施形態のアクセスプラン実行部３７０は、アクセスプラン選択部３４０が選択したアクセスプランをアクセスプラン記憶部３５０から入手し、入手したアクセスプランを使用して前記データベース・クエリを実行する。
【００４１】
本発明の実施形態のアクセスプラン管理部３８０は、前記第１または第２のデータが使用不能となったことに応じて、使用不能となったデータに対応する仮想テーブルを使用するアクセスプランのキャッシュを使用不能とし、さらに使用不能となった第１または第２のデータが再び使用可能となったことに応じて、前記使用不能としたアクセスプランを使用可能に変更する機能を有するものとする。
【００４２】
また、本発明の実施形態のアクセスプラン管理部３８０は、さらに第１のデータの複製であるデータが別のデータベースシステム（図示せず）に新たに生成された場合、共通テーブル２２６を使用するアクセスプランに、新たな複製が生成されたことを示す情報を付加する。アクセスプラン生成部３２０は、かかる情報が存在する場合は、アクセスプラン記憶部３５０にアクセスプランが記憶されている場合であっても、新たな複製に関する追加のアクセスプランを生成するものとする。
【００４３】
本発明の実施形態では、アクセスプラン選択部３４０はアクセスプランを選択しようとするときにかかる情報が付加されていることを検出する。アクセスプラン生成部３２０は、アクセスプラン選択部３４０の検出に応じて、追加のアクセスプランを生成する。生成された追加のアクセスプランは、アクセスプラン記憶部３５０に記憶される。
【００４４】
本発明の実施形態のリモートデータベース監視部３９０は、統合データベースシステム２２０からリモートに配置された第１のデータベース２３０および第２のデータベース２４０が使用可能かどうかを監視する機能を有する。リモートデータベース監視部３９０は、監視対象のデータベースが使用不能となったことに応じて、アクセスプラン管理部３８０にその旨を通知する機能をも有する。また、いったん使用不能となった監視対象のデータベースが復帰し、使用可能となったことに応じて、アクセスプラン管理部にその旨を通知する機能をも有する。
【００４５】
なお、本発明の実施形態のアクセスプラン管理部３８０は、リモートデータベース監視部３９０からデータベースが使用不能となったことを通知されたことに応じて、使用不能となったデータベースを使用するアクセスプランの状態（ステータス）を使用不能に変更する。アクセスプラン管理部３８０は、リモートデータベース監視部３９０からデータベースが使用可能となったことを通知されたことに応じて、使用可能となったデータベースを使用するアクセスプランのステータスを使用可能に変更する。本発明の実施形態のアクセスプラン選択部３４０は、かかるステータスに基づいてそれぞれのアクセスプランの使用の可否を判断し、実行すべきアクセスプランを選択するものとする。
【００４６】
図４は、本発明の実施形態におけるシステム１００の初期化動作を表現するフローチャートである。初期化動作が開始されるときに、システム１００は、第１および第２のデータベースシステム２３０、２４０を含み、第１のデータベースシステム２３０は、第１のデータおよびそれに対応する第１のデータベーステーブル２３２を含んでおり、またリモートデータベース監視部３９０によるリモートデータベースの監視プロセスが既に起動されているものとする。なお、かかる監視プロセスの動作は、図５等を使用して後で詳述される。
【００４７】
処理はステップ４０５でスタートし、ステップ４１０において第１のデータの複製である第２のデータが第２のデータベースシステム２４０内に生成されるものとする。また、ステップ４１０においては、第２のデータベースシステム２４０内に第２のデータに対応する第２のデータベーステーブル２４２が形成されるものとする。
【００４８】
処理はステップ４１５へ進み、第１および第２のデータベーステーブル２３２、２４２に対応する仮想テーブル２２２、２２４が統合データベースシステム２２０内に形成される。なお、これらの仮想テーブルの形成については、統合データベース技術の当業者であれば適宜実現できるものであるので、ここでは詳細には言及しない。
【００４９】
処理はさらにステップ４２０へ進み、ステップ４１５において形成された仮想テーブル２２２および２２４に共通して設けられる共通テーブル２２６が統合データベースシステム２２０内に形成される。ステップ４２０においては、仮想テーブル２２２および２２４それぞれと共通テーブル２２６とが関連付けられ、かかる関連付けの情報を記憶するディペンデンシ・リスト３５０が統合データベースシステム２２０内に形成されたのち、処理はステップ４２５に進み、終了する。
【００５０】
なお、上記の仮想テーブル、共通テーブルの形成およびそれらの間の関連付け、およびディペンデンシ・リスト３５０の形成は、統合データベースシステム２２０の管理者の明示的な入力に応じて実行されてもよいし、その一部または全部は、第１のデータの複製として第２のデータが生成されたことを統合データベースシステム２２０が検出できるようにし、かかる検出に応じて統合データベースシステム２２０が自動的に実行するようにしてもよいことは勿論である。
【００５１】
図５は、本発明の実施形態における統合データベースシステム２２０に常駐するリモートデータベース監視部３９０によるリモートデータベースの監視プロセスの動作を表現するフローチャートである。処理はステップ５０５でスタートし、ステップ５１０において、リモートデータベース監視部３９０は、統合データベースシステム２２０によって統合されているリモートの分散データベースシステム（本発明の実施形態では、分散データベースシステム２３０、２４０）が使用可能かどうかを監視する。具体的には、リモートデータベース監視部３９０が定期的に確認要求を監視対象のデータベースシステムに送信することによって、かかる監視が実現される。
【００５２】
次に、ステップ５１５において、それまで使用可能であったリモートの分散データベースシステムが使用不能になったことが検出されたかどうかが判定される。ステップ５１５において、リモートデータベースが使用不能になったことが検出されたと判定された場合、処理はＹＥＳの矢印を通じてステップ５２０へ進む。
【００５３】
ステップ５２０においては、リモートデータベース監視部３９０は、ステップ５１５で使用可能であったリモートの分散データベースシステムが使用不能になったことが検出されたと判定されたことに応じて、その旨をアクセスプラン管理部３８０へ通知し、アクセスプラン管理部３８０は、使用不能とされたリモートの分散データベースシステムへのアクセスが必要となるアクセスプランのステータスを使用可能から使用不能に変更する。その後、処理は、ステップ５１０へ戻り、監視が継続される。
【００５４】
ステップ５１５において、リモートデータベースが使用不能になったことが検出されたと判定されなかった場合、処理はＮＯの矢印を通じてステップ５２５へ進む。ステップ５２５においては、それまで使用不能であったリモートの分散データベースシステムが使用可能になったことが検出されたかどうかが判定される。ステップ５２５において、リモートデータベースが使用可能になったことが検出されたと判定された場合、処理はＹＥＳの矢印を通じてステップ５３０へ進む。
【００５５】
ステップ５３０においては、リモートデータベース監視部３９０は、ステップ５２５で使用不能であったリモートの分散データベースシステムが使用可能となったことが検出されたことに応じて、その旨をアクセスプラン管理部３８０へ通知し、アクセスプラン管理部３８０は、使用可能とされたリモートの分散データベースシステムへのアクセスが必要となるアクセスプランのステータスを使用不能から使用可能に変更する。その後、処理は、ステップ５１０へ戻り、監視が継続される。
【００５６】
ステップ５１５において、リモートデータベースが使用可能になったことが検出されたと判定されなかった場合、処理はＮＯの矢印を通じてステップ５１０へ戻り、監視が継続される。
【００５７】
図６は、本発明の実施形態におけるデータベース・クエリに対するシステムの動作を表現するフローチャートである。処理はステップ６０５でスタートし、ステップ６１０においてクライアント１１０は、初期化動作において形成された共通テーブル２２６に対するデータベース・クエリ（具体的にはＳＱＬ文）を統合データベースサーバ１２０に対して送信する。
【００５８】
処理はステップ６１５へ進み、統合データベースサーバ１２０のデータベース・クエリ受信部３１０は、ステップ６１０においてクライアントが送信したデータベース・クエリを受信する。処理はステップ６２０へ進み、統合データベースサーバ１２０は、アクセスプランをアクセスプラン選択部３４０に受信したクエリの処理をリクエストする。
【００５９】
次に、ステップ６２５において、アクセスプラン選択部３４０は、アクセスプラン記憶部３５０に既にアクセスプランがキャッシュされているかどうか、およびキャッシュされているアクセスプランに新たな複製であるデータが生成されたことを示す情報があるかどうかを判定する。アクセスプランがキャッシュされていないか、またはキャッシュされているアクセスプランに新たな複製であるデータが生成されたことを示す情報があると判定された場合、処理はＮＯの矢印を通じてステップ６３０へ進む。アクセスプランがキャッシュされており、かつキャッシュされているアクセスプランに新たな複製であるデータが生成されたことを示す情報が存在しないと判定された場合、処理はＹＥＳの矢印を通じてステップ６６５へ進む。
【００６０】
ステップ６３０においては、アクセスプラン選択部３４０は、アクセスプラン生成部３２０にクエリをコンパイルし、アクセスプランの生成することをリクエストする。次に、ステップ６３５において、ディペンデンシ・リスト３６０を使用して、ステップ６１５において受信したデータベース・クエリ内に記述された共通テーブルに対応する仮想テーブルのテーブル名が取得される。本発明の実施形態では、データベース・クエリ内には、共通テーブル２２６が記述されており、ディペンデンシ・リスト３６０には、第１および第２の仮想テーブル２２２、２２４が共通テーブル２２６に対応するものとして記述されている。従って、ステップ６３５においては、第１および第２の仮想テーブル２２２、２２４のテーブル名が取得されることとなる。
【００６１】
なお、ＳＱＬ文の内容がＩＮＳＥＲＴ（データの挿入）／ＵＰＤＡＴＥ（データの更新）／ＤＥＬＥＴＥ（データの削除）のような、単にデータを参照するのではなく実際のデータ変更を必要とする処理を実施するものである場合は、特定の仮想テーブルに対してクエリを実行する必要がある場合がある。例えば、本発明の実施形態の第１のデータの複製の設定によって、複製データである第２のデータではなく、オリジナルデータである第１のデータを変更することが必要な場合があるからである。そのような場合、特定の仮想テーブル（第１の仮想テーブル）のみ変更ができるとの情報を共通テーブル２２６に記憶するようにし、ステップ６３０において、第１の仮想テーブル名のみが取得されるようにするとよい。
【００６２】
また、ステップ６２５において、アクセスプラン選択部３４０は、キャッシュされているアクセスプランに新たな複製であるデータが生成されたことを示す情報があると判定した場合は、新たな複製であるデータについてのみ追加のアクセスプランを生成すればよいので、新たな複製であるデータに関連する仮想テーブル名のみが取得されるようにすることができる。
【００６３】
次に、ステップ６４０乃至６６０のループにおいて、ステップ６３５において取得された仮想テーブルのそれぞれ（本発明の実施形態では、第１および第２の仮想テーブル）について、アクセスプランの生成、コスト見積もり等が実行される。
【００６４】
具体的には、ステップ６４０において、アクセスプラン生成部３２０は、データベース・クエリ（ＳＱＬ文）内の共通テーブルのテーブル名を取得された仮想テーブルのテーブル名に書き換える。次に、ステップ６４５において、アクセスプラン生成部３２０は、書き換えられたＳＱＬ文に基づいてアクセスプランを生成する。ステップ６５０において、アクセスプラン見積部３３０は、生成されたアクセスプランのコストの見積もり（応答時間、使用計算機資源量等の推定）を実施する。そして、ステップ６５５において、ステップ６４５、６５０で生成されたアクセスプランおよびそのコストをアクセスプラン記憶部３５０にキャッシュする。これらの一連の処理は、ステップ６３５で取得されたすべての仮想テーブル名について実行される。
【００６５】
ステップ６３５で取得されたすべての仮想テーブル名について、アクセスプランの生成（ステップ６４５）、コスト見積もり（ステップ６５０）、それらのキャッシュ（ステップ６５５）が完了したことに応じて、処理はステップ６６０からＮＯの矢印を通じてステップ６６５へ進む。
【００６６】
ステップ６６５においては、アクセスプラン選択部３４０はアクセスプラン記憶部３５０にキャッシュされた１以上のアクセスプランのうちステータスが使用可能であるものから、あらかじめ定められたポリシ（例えば、最も応答時間が短い）に従って、アクセスプラン選択部３４０はアクセスプラン記憶部３５０にキャッシュされたコストに基づいて、最適と判定されるものを選択する。
【００６７】
なお、キャッシュされたアクセスプランのステータスがすべて使用不能である場合は、データベース・クエリを発信したクライアント１１０にその旨のエラーメッセージを返したのちに、処理が終了するものとする。
【００６８】
処理はステップ６７０へ進み、アクセスプラン実行部３７０は、ステップ６６５において選択されたアクセスプランが実行される。なお、ステップ６７０において、アクセスプランの実行が成功した場合、ＳＱＬ文であるデータベース・クエリを発信したクライアント１１０にその結果が返されることに留意されたい。次に、処理はステップ６７５へ進み、ステップ６７０で実行されたアクセスプランの実行結果からリモートデータベースが障害等の理由により使用不能であることが検出されたかどうかが判定される。
【００６９】
ステップ６７５において使用不能であることが検出されたと判定された場合、処理はＮＯの矢印からステップ６８０へ進む。ステップ６８０では、ステップ６７５で使用不能であることが検出された判定したリモートのデータベースについて、使用不能であることをアクセスプラン管理部３８０へ通知し、アクセスプラン管理部３８０は、ステップ６７５において使用不能とされたリモートの分散データベースシステムへのアクセスが必要となるアクセスプラン（ステップ６６５において選択されたものに限らない）のステータスを使用不能に変更する。
【００７０】
処理はステップ６８０からステップ６６５に戻り、そのステータスが使用不能であるアクセスプランを除く、残りのアクセスプランの中から最適なアクセスプランを選択する。このループを最適かつ使用可能なアクセスプランを見つけるまで繰り返す。見つかった場合、処理はステップ６７５からＮＯの矢印を通じてステップ６８５へ進み終了する。
【００７１】
図７は、本発明の実施形態の統合データベースシステムにおいてデータベーステーブルの結合処理がいかに実現されるかの具体例を説明するための図である。図７の具体例は、統合データベースシステム７１０および分散データベースシステム７２０、７３０を含む。分散データベースシステム７３０は、製品番号（ＰＲＯＤＵＣＴＫＥＹ）ごとに製品名（ＰＲＯＤＵＣＴＮＡＭＥ）、価格（ＰＲＩＣＥ）を含む製品テーブル７３２（テーブル名：“ＰＲＯＤＵＣＴ”）を含む。製品テーブル７３２の具体例を表１に示す。
【００７２】
【表１】
2008112289.tif 000003
【００７３】
分散データベースシステム７２０は、製品テーブル７３２の複製である製品テーブル７２２を含む。分散データベースシステム７２０は、発注番号（ＯＲＤＥＲＫＥＹ）ごとに、製品番号（ＰＲＯＤＵＣＴＫＥＹ）、顧客番号（ＣＵＳＴＯＭＥＲＫＥＹ）、発注量（ＡＭＯＵＮＴ）を含む発注テーブル７３６（テーブル名：“ＯＲＤＥＲ”）をさらに含む。発注テーブル７２４の具体例を表２に示す。
【００７４】
【表２】
2008112289.tif 000004
【００７５】
統合データベースシステム７１０は、製品テーブル７３２、７２２、発注テーブル７２４にそれぞれ対応する仮想テーブル７１４、７１２、および７１８を含む。仮想テーブル７１４、７１２、および７１８のテーブル名は、それぞれ“Ｎ２＿ＰＲＯＤＵＣＴ”、“Ｎ１＿ＰＲＯＤＵＣＴ”、および“Ｎ＿ＯＲＤＥＲ”であるものとする。さらに、統合データベースシステム７１０は、仮想テーブル７１４、７１２に共通して設けられた共通テーブル７１６を含む。共通テーブル７１６のテーブル名は、“Ｎ＿ＰＲＯＤＵＣＴ”であるとする。
【００７６】
上記のシステムにおいて、統合データベースシステム７１０は、共通テーブル７１６の指定を含む、表３に示すＳＱＬ文からなるデータベース・クエリを受信するものとする。
なお、表３に示すＳＱＬ文は、テーブル名が“Ｎ＿ＯＲＤＥＲ”のテーブルと、テーブル名が“Ｎ＿ＰＲＯＤＵＣＴ”のテーブルから発注量（ＡＭＯＵＮＴ）と価格（ＰＲＩＣＥ）を乗じて総購入額（ＴＯＴＡＬ＿ＰＲＩＣＥ）とし、顧客番号ごとの総購入額を示すテーブルを生成することを命令するものである。なお、表３に示すＳＱＬ文は、生成されるテーブルが顧客番号について昇順で出力されるべきことも命令している。
【００７７】
【表３】
2008112289.tif 000005
【００７８】
本発明の実施形態では、表３に示すＳＱＬ文の中の共通テーブル７１６のテーブル名である“Ｎ＿ＰＲＯＤＵＣＴ”が、“Ｎ＿ＰＲＯＤＵＣＴ”と関連付けられている”Ｎ１＿ＰＲＯＤＵＣＴ“および”Ｎ２＿ＰＲＯＤＵＣＴ“に置き換えられる。その結果、表４および表５に示すＳＱＬ文が生成される。そして、生成されたＳＱＬ文について、アクセスプランとコストの見積もりが実行される。
【００７９】
【表４】
2008112289.tif 000006
【００８０】
【表５】
2008112289.tif 000007
【００８１】
ここで、表４に示す“Ｎ１＿ＰＲＯＤＵＣＴ”を使用するＳＱＬ文をコンパイルして生成されるアクセスプランは、分散データベースシステム７２０においてテーブル７２２および７２４のテーブル結合処理を実施し、結合されたテーブルのみを統合データベースシステム７１０に返す。したがって、統合データベースシステムと分散データベースシステムの間でのデータ・トラフィックは、比較的サイズの小さい結合されたテーブルのデータを含むものになる。
【００８２】
これに対して、表５に示す“Ｎ２＿ＰＲＯＤＵＣＴ”を使用するＳＱＬ文をコンパイルして生成されるアクセスプランは、テーブル結合処理を行うために必要な”ＯＲＤＥＲ“に関するすべてのデータを分散データベースシステム７２０から受け、テーブル結合処理を行うために必要な”ＰＲＯＤＵＣＴ“に関するすべてのデータを分散データベースシステム７３０から受けた上で、統合データベースシステム７１０内でテーブル結合処理を実施する必要がある。すなわち、統合データベースシステムと分散データベースシステムの間でのデータ・トラフィックは、比較的サイズの大きい結合処理前のデータを含むものとなってしまう。
【００８３】
したがって、この場合のアクセスプランのコストである応答時間の見積もりは、表４に示す“Ｎ１＿ＰＲＯＤＵＣＴ”を使用するＳＱＬ文をコンパイルして生成されるアクセスプランのものよりも大きいものとなる。その結果、表４に示すデータベース・クエリを受けた統合データベース７１０は、表２に示す“Ｎ１＿ＰＲＯＤＵＣＴ”を使用するＳＱＬ文をコンパイルして生成されるアクセスプランを選択し使用して、クエリを実行することになる。そして、その実行結果として、表６に示すテーブルが得られることとなる。
【００８４】
【表６】
2008112289.tif 000008
【００８５】
以上より、本発明の実施形態によれば、最適なアクセスプランを使用したデータベース・クエリの実行が実現されることが理解される。
【００８６】
図８は、本発明の実施の形態によるシステムを実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。情報処理装置は、バス２に接続されたＣＰＵ（中央処理装置）１とメインメモリ４を含んでいる。ハードディスク装置１３、３０、およびＣＤ−ＲＯＭ装置２６、２９、フレキシブル・ディスク装置２０、ＭＯ装置２８、ＤＶＤ装置３１のようなリムーバブル・ストレージ（記録メディアを交換可能な外部記憶システム）がフロッピーディスクコントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７などを経由してバス２へ接続されている。
【００８７】
フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置１３、３０、ＲＯＭ１４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００８８】
情報処理装置は、キーボード／マウス・コントローラ５を経由して、キーボード６やマウス７のような入力デバイスからの入力を受ける。情報処理装置は、視覚データをユーザに提示するための表示装置１１にＤＡＣ／ＬＣＤＣ１０を経由して接続される。
【００８９】
情報処理装置は、ネットワーク・アダプタ１８（イーサネット（Ｒ）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。図示はされていないが、パラレルポートを介してプリンタと接続することや、シリアルポートを介してモデムを接続することも可能である。
【００９０】
以上の説明により、本発明の実施の形態によるシステムを実現するのに好適な情報処理装置は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００９１】
本発明の実施の形態において使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。
【００９２】
本発明の実施形態によるシステムは、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（Ｒ）オペレーティング・システム、アップル・コンピュータ・インコーポレイテッド提供するＭａｃＯＳ（Ｒ）、Ｘ  Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍを備えるＵＮＩＸ（Ｒ）系システム（例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（Ｒ）など）のような、ＧＵＩ（グラフィカル・ユーザー・インターフェース）マルチウインドウ環境をサポートするオペレーティング・システムを採用することができる。
【００９３】
以上から、本発明の実施の形態において使用されるシステムは、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。すなわち、オペレーティング・システムは、アプリケーション・ソフトウェアなどがデータ処理システムの資源を利用できるようにする資源管理機能を提供することができるものであれば、いかなるものをも採用することができる。なお、資源管理機能には、ハードウェア資源管理機能、ファイルハンドル機能、スプール機能、ジョブ管理機能、記憶保護機能、仮想記憶管理機能などが含まれ得るが、これらの機能については、当業者によく知られたものであるので詳細な説明は省略する。
【００９４】
また、本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または１．他の言語・コード・表記への変換、２．他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
【００９５】
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
【００９６】
以上、本発明の実施形態によれば、より少ないコストで、効率よくデータベース・クエリ処理を実行することができる統合データベースシステムを構築することができることが理解される。
【００９７】
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。例えば、本発明の実施形態においては、統合データベースシステム２２０、分散データベースシステム２３０、２４０が複数のハードウェア（サーバマシン）において実現されるものとして説明をした。しかし、本発明は、どのようなハードウェア構成を取るかに限定されない。すなわち、統合データベースシステム２２０と分散データベースシステム２３０、２４０が同一のハードウェア（コンピュータ装置）上で動作しても良いし、異なるハードウェア上で動作しても良い。そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれることに留意されたい。
【図面の簡単な説明】
【００９８】
【図１】本発明の実施形態のシステムを図示した高水準の全体概要図である。
【図２】本発明の実施形態によるシステムの論理的な構成の概要図である。
【図３】本発明の実施形態における統合データベースシステムの機能ブロック図である。
【図４】本発明の実施形態におけるシステムの初期化動作を表現するフローチャートである。
【図５】本発明の実施形態における分散データベースシステムの監視動作を表現するフローチャートである。
【図６】本発明の実施形態におけるデータベース・クエリに対するシステムの動作を表現するフローチャートである。
【図７】本発明の実施形態の統合データベースシステムにおいてデータベーステーブルの結合処理がいかに実現されるかの具体例を説明するための図である。
【図８】本発明の実施形態の統合データベースサーバを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図１】
2008112289.tif 000009
【図２】
2008112289.tif 000010
【図３】
2008112289.tif 000011
【図４】
2008112289.tif 000012
【図５】
2008112289.tif 000013
【図６】
2008112289.tif 000014
【図７】
2008112289.tif 000015
【図８】
2008112289.tif 000016