(57)【特許請求の範囲】
【請求項１】
クライアントから要求されるクエリを受け付けるアプリケーションと、
前記アプリケーションから送信されるクエリを解釈し、複数のデータソースにおける検索の実行計画を生成して当該実行計画をそれぞれに送信するＤＢ統合サーバと、
前記実行計画に沿ってデータを取り出すためのオブジェクトである、少なくとも２つの異種のデータソースとを有するデータベースシステムであって、
各データソースは、それぞれが管理するデータを呼び出して異種のデータソース間で共通利用するための手順やデータ形式を定めた規約である異種のデータソース用ＡＰＩと、
前記ＤＢ統合サーバと通信し、異種のデータソースに対して、前記データソース用ＡＰＩを使用して検索を実行させる機能を持つ統合サーバ用データ変換部とを備えて、前記統合サーバ用データ変換部同士が相互に通信可能に構成され、検索条件のやりとりを行うとともに、
前記ＤＢ統合サーバは、各データソースにおける検索の実行計画が、前記統合サーバ用データ変換部同士の通信を含むように生成するもので、前記クエリ、及びスキーマ情報、データソース情報を保持し、前記クエリ、スキーマ情報およびデータソース情報を参照して、前記データソース側からの転送データが少なくて済むように、前記データソースに対する実行計画を作成するプランナと、
前記ＤＢ統合サーバと前記データソース間で指令やデータの送受信を行う第１の送受信部と、
前記プランナから前記データソースに対する実行計画を受け取って前記第１の送受信部に送信するとともに、前記第１の送受信部を介して受け取った前記データソースにおける検索結果の統合処理を実行し、前記アプリケーションに返す機能を果たす計画実行部とを備え、
前記データソースは、
前記第１の送受信部を介して前記ＤＢ統合サーバから実行計画を受信するとともに、実行計画内での転送、受信命令の実施を行い、前記第１の送受信部を介して前記ＤＢ統合サーバへ実行計画の実行結果を送信する第２の送受信部と、
前記第２の送受信部で受信した前記ＤＢ統合サーバからの実行計画を受け取り、前記データソース用ＡＰＩを使用して、実行計画を実施する計画実行部を備えるデータベースシステム。
【請求項２】
前記スキーマ情報は、データテーブルの仕様であり、前記データソース情報は、各データソースの仕様の情報である請求項１に記載のデータベースシステム。
【請求項３】
前記データベースは、リレーショナルデータベースである請求項１又は請求項２に記載のデータベースシステム。
【請求項４】
前記実行計画は、前記データソースの情報および前記データソースが管理するテーブルデータのデータ数に関するメタデータに基づいてテーブル間の大小関係を決定し、小さい前記テーブルの前記データソースでの実行結果を、大きい前記テーブルの前記データソース側に転送するように計画する請求項１乃至請求項３のいずれか１項に記載のデータベースシステム。
【請求項５】
前記データソースと、前記統合サーバ用データ変換部と、前記データソース用ＡＰＩは、それぞれ組になっており、
前記統合サーバ用データ変換部は、前記データソースと同じシステムにインストールされ、前記データソース間の仕様上の差異を吸収する機能を果たす請求項１乃至請求項４のいずれか１項に記載のデータベースシステム。
【請求項６】
実行計画に沿ってデータを取り出すためのオブジェクトである少なくとも２つの異種のデータソースを有するデータベースシステムに、
アプリケーションが、クライアントから要求されるクエリを受け付ける機能と、
ＤＢ統合サーバが、前記クエリを解釈し、複数のデータソースにおける検索の実行計画を生成して当該実行計画をそれぞれに送信する機能と、
各データソースが、それぞれが管理するデータを呼び出して異種のデータソース間で共通利用するための手順やデータ形式を定める機能と、
前記各データソースが、前記ＤＢ統合サーバと通信し、前記異種のデータソースに対して、前記手順やデータ形式を使用して検索を実行させる機能と、
前記各データソースが、前記各データソース同士で相互に通信可能に構成され、検索条件のやりとりを行う機能と、
前記ＤＢ統合サーバが、前記通信を含むように各データソースにおける検索の実行計画を生成させる機能と、
前記ＤＢ統合サーバが、前記クエリ、及びスキーマ情報、データソース情報を保持し、前記クエリ、スキーマ情報およびデータソース情報を参照して、前記データソース側からの転送データが少なくて済むように、前記データソースに対する実行計画を作成する機能と、
前記ＤＢ統合サーバが、前記実行計画を受け取るとともに、受け取った前記データソースにおける検索結果の統合処理を実行し、前記アプリケーションに返す機能と、
前記各データソースが、前記ＤＢ統合サーバから前記実行計画を受信するとともに、前記実行計画内での転送、受信命令の実施を行い、前記実行計画の実行結果を前記ＤＢ統合サーバへ送信させる機能と、
前記各データソースが、前記ＤＢ統合サーバから前記実行計画を受け取り、データソース用ＡＰＩを使用して、前記実行計画を実施する機能と、
を実現させるためのデータベースシステム用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベースシステムおよびデータベースシステム用プログラムに関する。
【背景技術】
【０００２】
一般に、異種のデータベースに接続するデータソースに対して結合検索を実行するクライアント・サーバ型のデータベースシステムにおいては、各データベースの検索結果をデータベース統合サーバにおいて結合して、クライアント側に転送している。
【０００３】
各データソースからは、例えば表形式の検索結果を記した大量のメモリが通信を介してデータベース統合サーバにコピーされる。これに伴い、データベース統合サーバには、大量のメモリが集まることになり、検索結果の統合処理に多くの時間を要していた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、結合検索結果の統合処理をより高速化することのできるデータベースシステムおよびデータベースシステム用プログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態のデータベースシステムは、クライアントから要求されるクエリを受け付けるアプリケーションと、前記アプリケーションから送信されるクエリを解釈し、複数のデータソースにおける検索の実行計画を生成して当該実行計画をそれぞれに送信するＤＢ統合サーバと、前記実行計画に沿ってデータを取り出すためのオブジェクトである、少なくとも２つの異種のデータソースとを有するデータベースシステムであって、各データソースは、それぞれが管理するデータを呼び出して異種のデータソース間で共通利用するための手順やデータ形式を定めた規約である異種のデータソース用ＡＰＩと、前記ＤＢ統合サーバと通信し、異種のデータソースに対して、前記データソース用ＡＰＩを使用して検索を実行させる機能を持つ統合サーバ用データ変換部とを備えて、前記統合サーバ用データ変換部同士が相互に通信可能に構成され、検索条件のやりとりを行うとともに、前記ＤＢ統合サーバは、各データソースにおける検索の実行計画が、前記統合サーバ用データ変換部同士の通信を含むように生成するもので、前記クエリ、及びスキーマ情報、データソース情報を保持し、前記クエリ、スキーマ情報およびデータソース情報を参照して、前記データソース側からの転送データが少なくて済むように、前記データソースに対する実行計画を作成するプランナと、前記ＤＢ統合サーバと前記データソース間で指令やデータの送受信を行う第１の送受信部と、前記プランナから前記データソースに対する実行計画を受け取って前記第１の送受信部に送信するとともに、前記第１の送受信部を介して受け取った前記データソースにおける検索結果の統合処理を実行し、前記アプリケーションに返す機能を果たす計画実行部とを備え、前記データソースは、前記第１の送受信部を介して前記ＤＢ統合サーバから実行計画を受信するとともに、実行計画内での転送、受信命令の実施を行い、前記第１の送受信部を介して前記ＤＢ統合サーバへ実行計画の実行結果を送信する第２の送受信部と、前記第２の送受信部で受信した前記ＤＢ統合サーバからの実行計画を受け取り、前記データソース用ＡＰＩを使用して、実行計画を実施する計画実行部を備えるデータベースシステム。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係るデータベースシステムの概略構成を示すブロック図である。
【図２】ＤＢ統合サーバとデータソースの詳細な構成例を示す図である。
【図３】従来と本実施形態とを対比して実行計画を説明する図である。
【図４】実行計画の作成・実行計画の送信・実行計画の実行におけるDB統合サーバとデータソースとの関係を示す図である。
【図５】DB統合サーバにおける処理の流れを示すフローチャートである。
【図６】図５に示すフローチャートに沿った処理内容を説明する図である。
【図７】小さいテーブルの実行計画の作成を説明する図である。
【図８】大きいテーブルの実行計画の作成を説明する図である。
【発明を実施するための形態】
【０００８】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【０００９】
まず、本実施形態で用いる主要な用語について説明する。
【００１０】
「クエリ」とは、データが格納されたデータベースから検索結果としてのデータを取り出すための“問い合わせ”をいう。
【００１１】
本実施形態においては、異種のデータベースに接続するデータソースに対して結合検索を実行するクライアント・サーバ型のデータベースシステムであって、データベース統合サーバ（以下、ＤＢ統合サーバという）は、クライアント側から要求されたクエリを解析し、データソース側からの転送データが少なくて済むように、データソース側における検索の実行計画を生成し、ＤＢ統合サーバにおける結合検索結果の統合処理をより高速化するものである。
【００１２】
図１は、本発明の実施形態に係るデータベースシステムの概略構成を示すブロック図である。この装置は汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤ（Computer Aided Design）やＣＡＥ（Computer Aided Engineering）に好適なエンジニアリングワークステーション（ＥＷＳ）等も含む。本実施形態はこのようなコンピュータにおいて、実行計画に沿ってデータを取り出すためのオブジェクトである少なくとも２つの異種のデータソースを有するデータベースシステムに、クライアントから要求されるクエリを受け付ける機能と、クエリを解釈し、複数のデータソースにおける検索の実行計画を生成して当該実行計画をそれぞれに送信する機能と、各データソースは、それぞれが管理するデータを呼び出して異種のデータソース間で共通利用するための手順やデータ形式を定める機能と、異種のデータソースに対して、手順やデータ形式を使用して検索を実行させる機能と、相互に通信可能に構成され、検索条件のやりとりを行うとともに、各データソースにおける検索の実行計画が、通信を含むように生成させる機能と、を実現させるためのデータベースシステム用プログラムとして実施することもできる。
【００１３】
図１に示すように、本実施形態に係るデータベースシステム１は、主として、アプリケーション１０と、ＤＢ統合サーバ２０と、複数のデータソース３０と、複数の統合サーバ用データ変換部４０と、複数のデータソース用ＡＰＩ５０から構成されている。データソース３０と、統合サーバ用データ変換部４０と、データソース用ＡＰＩ５０は、それぞれ組になっている。
【００１４】
アプリケーション１０は、クライアントから要求されるクエリを受け付けるものである。アプリケーション１０で受け付けたクエリは、ＤＢ統合サーバ２０に送信される。
【００１５】
ＤＢ統合サーバ２０は、アプリケーション１０から送信されるクエリをパース（解釈）し、データソース側からの転送データが少なくて済むように、各データソース３０における検索の実行計画を生成し、各データソース３０に送る。ＤＢ統合サーバ２０の詳細構成例、実行計画の詳細については後述する。
【００１６】
データソース３０は、検索するデータベース、例えば、リレーショナルデータベースに接続して、実行計画に沿ったデータを取り出すためのオブジェクトである。データベースは、データソースAPIを持ち、APIを通じて入力された条件に応じて結果を返すシステムであれば良い。例えば、KVS(キーバリューストア)のデータベースやEXCELなどである。
【００１７】
データソース３０をセットアップするには、データベースに接続するためのドライバ名や、名前を付けられたデータベースの情報として、例えばデータベースの種類やサイズ、格納場所、ログオンやパスワード等を指定する。データソース３０の詳細構成例については後述する。
【００１８】
統合サーバ用データ変換部４０は、ＤＢ統合サーバ２０と通信し、データソース３０に対して、データソース用ＡＰＩ５０を使用して検索を実行させる機能を持っている。統合サーバ用データ変換部４０同士は、相互に通信可能に構成され、検索条件のやりとりを行う。統合サーバ用データ変換部４０は、ネットワーク通信を必要とせずにアクセスできるようデータソース３０と同じシステムにインストールされ、データソース３０間の仕様上の差異を吸収する機能を果たす。
【００１９】
データソース用ＡＰＩ５０は、データソース３０が管理するデータを呼び出して利用するための手順やデータ形式を定めた規約である。
【００２０】
図２は、ＤＢ統合サーバ２０とデータソース３０の詳細な構成例を示す図である。図２に示すように、ＤＢ統合サーバ２０は、プランナ２１、計画実行部２２、送受信部２３を備えている。プランナ２１は、ＳＱＬ、及びスキーマ情報、データソース情報を保持する。スキーマ情報は、例えば、データテーブルの仕様等である。データソース情報は、各データソースの仕様等の情報である。プランナ２１は、ＳＱＬ、及びスキーマ情報、データソース情報を参照して、データソース側からの転送データが少なくて済むように、各データソースに対する実行計画を作成する。
【００２１】
送受信部２３は、ＤＢ統合サーバ２０とデータソース３０間で指令やデータの送受信を行う。
【００２２】
計画実行部２２は、プランナ２１から各データソース３０に対する実行計画を受け取り、送受信部２３に送信する。さらに、送受信部２３を介して受け取った各データソースにおける検索結果の統合処理を実行し、アプリケーション１０に返す機能を果たす。尚、クエリを解析した結果、データテーブルが単数、あるいはデータソースが単数、あるいはデータソース３０の構成が統合サーバ用データ変換部４０やデータソース用ＡＰＩ５０を備えていない場合には、計画実行部２２は、従来通りの検索結果の統合処理を実行し、アプリケーション１０に返すのが好適である。
【００２３】
また、図２に示すように、データソース３０は、送受信部３１と、計画実行部３２を備えている。送受信部３１は、送受信部２３を介してＤＢ統合サーバ２０から実行計画を受信する。さらに、送受信部３１は、実行計画内での転送、受信命令の実施を行う。また、送受信部３１は、送受信部２３を介してＤＢ統合サーバ２０へ実行計画の実行結果を送信する。
【００２４】
計画実行部３２は、送受信部３１で受信したＤＢ統合サーバ２０からの実行計画を受け取り、実行計画を実施する。上述したように、実行計画の実行に際しては、データソース用ＡＰＩ５０を使用する。
【００２５】
＜実行計画＞
クエリを解釈した実行計画について説明する。図３は、従来と本実施形態とを対比して実行計画を説明する図である。図３（ａ）は、従来のクエリの解釈を説明する図である。図３（ｂ）は、本実施形態における実行計画を説明する図である。図３（ａ）に示すSELECT文は、x2＝y2 およびy3＝1を満たすことを条件に、データソース X.tttからx1を抽出し、データソースY.sss からy1を抽出せよ、とのクエリを表している。係るクエリの実行計画は、y3＝1の条件を満たすy3を取得し、x2＝y2の条件を満たすy2、x2を取得し、x1を取得し、y1を取得し、x1およびy1を結果とする処理を、全てのデータについてチェックするものである。一方、図３（ｂ）に示すクエリの実行計画は、データを送受信するように命令を変更する。すなわち、y3＝1の条件を満たすy3を取得し、y1、y2を取得し、y1、y2をデータソース Xに転送し、データソースY内の全てのデータについてチェックする。データソース Xでは、受信したy1、y2をr1、r2に書き換え、x2＝r2の条件を満たすx2を取得し、x1を取得し、実行結果x1、r1を、DB統合サーバに転送し、データソースX 内の全てのデータについてチェックするものである。
【００２６】
実行計画の作成においては、データソースの情報、各データソースが管理するテーブルデータのデータ数に関するメタデータを参考にして、テーブル間の大小関係を決定する。SQL文をテーブル毎に分解し、小さいテーブルの実行計画と大きいテーブルの実行計画をそれぞれ作成する。実行結果の転送量を少なくするため、小さいテーブルのデータソースでの実行結果を大きいテーブルのデータソース側に転送するように計画する。
【００２７】
図４は、実行計画の作成・実行計画の送信・実行計画の実行におけるDB統合サーバ２０とデータソース３０との関係を示す図である。図４に示すように、DB統合サーバ２０は、アプリケーション１０から送られたSQL文に基づいて実行計画を作成する。DB統合サーバは、作成した実行計画を、各データソースに送る。データソースYは、実行計画を実行し、実行結果y1、y2を、データソース Xに転送する。データソースXは、転送されたy1、y2をr1、r2に書き換え、実行計画を実行する。データソースXは、実行結果x1、r1を、DB統合サーバに転送する。
【００２８】
次に、以上のように構成されたDB統合サーバ２０における処理の流れについて詳述する。図５は、DB統合サーバ２０における処理の流れを示すフローチャートである。図６は、図５に示すフローチャートに沿った処理内容を説明する図である。
【００２９】
まず、ＳＱＬ文を入力し、パースする。ＳＱＬ文に含まれるテーブル情報を取得する（ステップＳ５１）。図６（ａ）のX.ttt、Y.sss は、テーブル情報を説明するもので、データソース Xはｔｔｔと名付けたテーブルを持ち、データソースYはｓｓｓと名付けたテーブルを持つことを示している。
【００３０】
次に、全テーブル情報のデータソースを分析する（ステップＳ５２）。仮に、複数のデータソース３０のうちの一部のデータソースが、統合サーバ用データ変換部４０やデータソース用ＡＰＩ５０を備えておらず、本実施形態に係るデータソースの構成でない場合には、従来の統合エンジンの仕組みで動くようにするのが好適である。
【００３１】
次に、テーブル間の大小関係を、テーブルと条件文に基づいて決定する（ステップＳ５３）。図６（ａ）に示す例ではデータソースYを小さいと判断し、データソースXとデータソースYに関する部分として、x2＝y2 and y3＝1を抜き出す。
【００３２】
続いて、ＳＱＬ文をテーブル毎に分解する（ステップＳ５４）。まず、小さいと判断したデータソースYに対して分解する。図６（ｂ）に示す例では、y2＝x2に対して、データソースYだけでは完結しないので、y2をデータソースXに送るために、y2は条件からカラムに変更する。データソースYに関する部分だけを抜き出すと、図６（ｃ）に示すようになる。続いて、大きいと判断したデータソースX に対して分解する。ここでは、図６（ｄ）に示すように、条件部のyのみに関する条件 y3=1 は除外する。さらに、図６（ｅ）に示すように、データソースYについて、テーブルY.sssを受信する結果をRESとし、y1、y2をRESから受け取る意味で r1、r2にする。
【００３３】
次に、小さいテーブルの実行計画を作成する（ステップＳ５５）。ここでの実行計画は、小さいテーブルの実行計画の実行結果を、大きいテーブルのデータソースXに送付するように組む。図７は、小さいテーブルの実行計画の作成を説明する図である。
【００３４】
次に、大きいテーブルの実行計画を作成する（ステップＳ５６）。ここでは、大きいテーブルの実行計画を、最終結果としてDB統合サーバに送付するように組む。図８は、大きいテーブルの実行計画の作成を説明する図である。
【００３５】
次に、各データソースに実行計画を転送する（ステップＳ５７）。
【００３６】
続いて、実行結果をデータソースXから受信する（ステップＳ５８）。
【００３７】
次に、受け取った各データソースにおける検索結果の統合処理を実行し、アプリケーション１０に返して（ステップＳ５９）、DB統合サーバ２０における処理を終了する。
【００３８】
以上説明したように、本実施形態によれば、結合検索結果の統合処理をより高速化することができる。
【００３９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４０】
１・・・データベースシステム
１０・・・アプリケーション
２０・・・ＤＢ統合サーバ
２１・・・プランナ
２２・・・計画実行部
２３・・・送受信部
３０・・・データソース
３１・・・送受信部
３２・・・計画実行部
４０・・・統合サーバ用データ変換部
５０・・・データソース用ＡＰＩ
【図１】
0006328078.tif 000002
【図２】
0006328078.tif 000003
【図３】
0006328078.tif 000004
【図４】
0006328078.tif 000005
【図５】
0006328078.tif 000006
【図６】
0006328078.tif 000007
【図７】
0006328078.tif 000008
【図８】
0006328078.tif 000009