(57)【要約】【課題】より高速に結合処理を実行することができるデータベース統合装置などを提供することである。【解決手段】実施形態のデータベース統合装置は、受付部と、決定部と、生成部と、実行部と、を持つ。受付部は、クライアントから複数の結合対象のデータを結合する要求を受け付ける。決定部は、要求により指定された結合対象のデータをそれぞれ格納したデータベースを備えるデータベースシステムの組み合わせのそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステムに結合対象のデータを読み込ませることができるか否かを表す結合可否情報に基づいて、結合処理を実行するデータベースシステムを決定する。生成部は、結合処理を実行させる実行計画を生成する。実行部は、実行計画に基づいて、要求をデータベースシステムに送信する。【選択図】図２
2018010385.tif 000002
【特許請求の範囲】
【請求項１】
クライアントから複数の結合対象のデータを結合する要求を受け付ける受付部と、
データベースを管理する複数のデータベースシステムと通信を行う通信部と、
前記受付部により受け付けられた要求により指定された結合対象のデータをそれぞれ格納した前記データベースを備えるデータベースシステムの組み合わせのそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステムに結合対象のデータを読み込ませることができるか否かを表す結合可否情報に基づいて、前記複数のデータベースシステムの中から、前記受付部により受け付けられた要求より指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステムを決定する決定部と、
前記決定部により決定されたデータベースシステムに結合処理を実行させる実行計画を生成する生成部と、
前記生成部により生成された実行計画に基づいて、前記受付部により受け付けられた要求に基づく情報を、前記通信部を用いて前記決定部により決定されたデータベースシステムに送信する実行部と、
を備える、データベース統合装置。
【請求項２】
前記生成部は、前記要求により指定された結合対象のデータの選択条件を、前記決定部により決定されたデータベースシステムから、前記結合対象のデータを格納した前記データベースを備えるデータベースシステムに送信させる実行計画を生成する、
請求項１に記載のデータベース統合装置。
【請求項３】
前記決定部は、結合処理を実行することが可能なデータベースシステムが複数存在する場合、結合処理を実行することが可能な複数のデータベースシステムにおける処理負荷および／または前記要求により指定された結合対象のデータの通信量に基づいて、結合処理を実行することが可能なデータベースシステムのうち、結合処理を実行するデータベースシステムを決定する、
請求項１または２に記載のデータベース統合装置。
【請求項４】
前記決定部は、前記要求により指定された結合対象のデータを格納した前記データベースを備えるデータベースシステムの組み合わせの双方が、組み合わせ相手のデータベースシステムから結合対象のデータを読み込むことができない場合、前記組み合わせの双方から結合対象のデータを取得することができるデータベースシステムを、前記結合処理を実行するデータベースシステムとして決定し、
前記生成部は、前記要求により指定された結合対象のデータを格納した前記データベースを備えるデータベースシステムから、前記決定部により決定されたデータベースシステムに結合対象のデータを送信する実行計画を生成する、
請求項１から３のうちいずれか１項に記載のデータベース統合装置。
【請求項５】
前記決定部は、前記要求により指定された結合対象のデータを格納した前記データベースを備えるデータベースシステムの組み合わせのうち一方のデータベースシステムが、他方のデータベースシステムから結合対象のデータを取得できない場合において、他方のデータベースシステムから結合対象のデータを取得して、一方のデータベースシステムに取得した結合対象のデータを中継するデータベースシステムが存在する場合に、前記一方のデータベースシステムを、前記結合処理を実行するデータベースシステムとして決定し、
前記生成部は、前記他方のデータベースシステムから、前記結合対象のデータを中継するデータベースシステムを介して、前記決定部により決定されたデータベースシステムに結合対象のデータを取得させる実行計画を生成する、
請求項１から３のうちいずれか１項に記載のデータベース統合装置。
【請求項６】
前記決定部は、前記要求により指定された結合対象のデータ同士を結合し、結合したデータにさらに他の結合対象のデータと結合する処理を実行させる場合、結合処理を実行することが可能なデータベースシステムにおける処理負荷、および／または前記要求により指定された結合対象のデータの通信量に基づいて、前記結合処理を実行するデータベースシステムを決定する、
請求項１から３のうちいずれか１項に記載のデータベース統合装置。
【請求項７】
前記生成部は、前記受付部により前記データベースシステムを追加、削除、または前記データベースシステム間におけるアクセス権限を変更する要求を受け付けた場合に、前記結合可否情報を更新する実行計画、および前記データベースシステムに他のデータベースシステムがアクセスするための情報を変更する実行計画を生成する、
請求項１から６のうちいずれか１項に記載のデータベース統合装置。
【請求項８】
クライアントから複数の結合対象のデータを結合する要求を受け付け、
前記要求により指定された結合対象のデータをそれぞれ管理するデータベースシステムの組み合わせのそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステムに結合対象のデータを読み込ませることができるか否かを表す結合可否情報に基づいて、前記複数のデータベースシステムの中から、前記要求より指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステムを決定し、
前記決定したデータベースシステムに結合処理を実行させる実行計画を生成し、
前記実行計画に基づいて、前記要求に基づく情報を、前記決定したデータベースシステムに送信する、
データベース統合方法。
【請求項９】
コンピュータに、
クライアントから複数の結合対象のデータを結合する要求を受け付けさせ、
前記要求により指定された結合対象のデータをそれぞれ管理するデータベースシステムの組み合わせのそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステムに結合対象のデータを読み込ませることができるか否かを表す結合可否情報に基づいて、前記複数のデータベースシステムの中から、前記要求より指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステムを決定させ、
前記決定したデータベースシステムに結合処理を実行させる実行計画を生成させ、
前記実行計画に基づいて、前記要求に基づく情報を、前記決定したデータベースシステムに送信させる、
データベース統合プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース統合装置、データベース統合方法、およびデータベース統合プログラムに関する。
【背景技術】
【０００２】
クライアントから受信したクエリに基づいて、複数のデータサーバが連携してデータ同士を結合することが行われている。これに関連して、統合サーバが複数のデータサーバから結合対象のデータを取得して結合処理を行う手法が知られている。また、一つのデータサーバに同種のテーブルが存在する場合、統合サーバがデータサーバにクエリをプッシュダウンすることで、データサーバに結合処理を行わせる手法も知られている。
【０００３】
さらに、複数のデータサーバが連携してデータ同士を結合し、クライアントに応答するセミジョイン法と称される手法が知られている。セミジョイン法では、一組のデータサーバのうち一方がクライアントからクエリを受信した場合、一方のデータサーバが、他方のデータサーバにデータを送信し、他方のデータサーバによって結合処理を行って、結合結果を一方のデータサーバに送信する。一方のデータサーバは、他方のデータサーバから受信した結合結果から最終結果を生成して、クライアントに応答する。しかしながら、セミジョイン法も、双方のデータサーバにより管理されるデータベースが同種であることを前提としている。
【０００４】
しかしながら、統合サーバにより結合処理を行う場合には、データの通信量が多くなる場合があり、高速に結合処理を行うことができない可能性があった。また、結合対象のデータが異なる種類のテーブルに格納されている場合、プッシュダウンを行うことができない可能性があり、さらには、セミジョイン法により結合処理を行うことができないため、高速に結合処理を行うことができない場合があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−３５０６５６号公報
【非特許文献】
【０００６】
【非特許文献１】大川昌弘、黒沢亮二、福田剛志、「分散データベース環境における複製データの仮想化によるSQL処理の最適化手法」、信学会技報、第18回データ工学ワークショップ、Mar.2007
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、結合対象のデータを管理している複数のデータベースシステムの種類が異なる場合であっても、より高速に結合処理を実行することができるデータベース統合装置、データベース統合方法、およびデータベース統合プログラムを提供することである。
【課題を解決するための手段】
【０００８】
実施形態のデータベース統合装置は、受付部と、通信部と、決定部と、生成部と、実行部と、を持つ。前記受付部は、クライアントから複数の結合対象のデータを結合する要求を受け付ける。前記通信部は、データベースを管理する複数のデータベースシステムと通信を行う。前記決定部は、前記受付部により受け付けられた要求により指定された結合対象のデータをそれぞれ格納した前記データベースを備えるデータベースシステムの組み合わせのそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステムに結合対象のデータを読み込ませることができるか否かを表す結合可否情報に基づいて、前記複数のデータベースシステムの中から、前記受付部により受け付けられた要求より指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステムを決定する。前記生成部は、前記決定部により決定されたデータベースシステムに結合処理を実行させる実行計画を生成する。前記実行部は、前記生成部により生成された実行計画に基づいて、前記受付部により受け付けられた要求に基づく情報を、前記通信部を用いて前記決定部により決定されたデータベースシステムに送信する。
【図面の簡単な説明】
【０００９】
【図１】実施形態のデータ提供システム１の一例を示す図。
【図２】ユーザ端末１００およびデータベース統合サーバ２００の機能構成の一例を示すブロック図。
【図３】種類が異なるデータベースシステム群同士の連携状態を表す図。
【図４】連携マップの一例を示す図。
【図５】連携マップの他の一例を示す図。
【図６】連携マップに基づくデータベースシステム４００間のデータの流れを示す図。
【図７】実行計画に基づくデータベース統合サーバ２００および複数のデータベースシステム４００間の動作の流れの一例を示す図。
【図８】連携マップ２４２の一例を示す図。
【図９】データベース統合サーバ（Ｓ）およびデータベースシステム群Ｇ１からＧ４におけるデータの流れの一例を示す図。
【図１０】第三者としてのデータベースシステムにより結合対象のデータを結合する場合のデータの流れの一例を示す図。
【図１１】第三者としてのデータベースシステムにより結合対象のデータを中継する場合のデータの流れの一例を示す図。
【図１２】第三者としてのデータベースシステムを利用してもデータベースシステムにおいて結合対象のデータを結合できない場合のデータの流れの一例を示す図。
【図１３】データ提供システム１における全体の処理の流れの一例を示すフローチャート。
【図１４】スキーマ更新を実行する実行計画を生成する処理（ステップＳ１０６）の流れの一例を示すフローチャート。
【図１５】更新される連携マップ２４２の一例を示す図。
【図１６】データベースシステム４００−３を追加する際のデータベース統合サーバ２００およびデータベースシステム４００の動作を示す図。
【図１７】SELECT文の実行計画を生成する処理（ステップＳ１１２）の流れの一例を示すフローチャート。
【図１８】プッシュダウン判定の処理（ステップＳ３０８）の流れの一例を示すフローチャート。
【図１９】連携マップ２４２の一例を示す図。
【図２０】結合するテーブルのペアと、データベースシステム４００のコストとの関係を示す図。
【図２１】結合対象のデータの経路、プッシュダウン先、およびコストを求める処理（ステップＳ４０２）の流れの一例を示すフローチャート。
【図２２】実施例１において、データベース統合サーバ２００がユーザ端末１００からクエリを受け付ける様子を示す図。
【図２３】データベース統合サーバ２００からデータベースシステム４００−１にプッシュダウンする様子を示す図。
【図２４】データベースシステム４００−１によりテーブルＴＢを読み込んで、結合結果をデータベース統合サーバ２００に送信する様子を示す図。
【図２５】実施例１におけるテーブルＴＡ、テーブルＴＢ、および結合結果のデータサイズを示す図。
【図２６】実施例２において、データベース統合サーバ２００からデータベースシステム４００−１にプッシュダウンを行う様子を示す図。
【図２７】実施例３において、データベース統合サーバ２００がユーザ端末１００からクエリを受け付ける様子を示す図で。
【図２８】データベースシステム４００−１からデータベースシステム４００−２に選択条件を送信する様子を示す図。
【図２９】実施例３におけるテーブルＴＡ、テーブルＴＢ、および結合結果のデータサイズを示す図。
【発明を実施するための形態】
【００１０】
以下、実施形態のデータベース統合装置、データベース統合方法、およびデータベース統合プログラムを、図面を参照して説明する。
【００１１】
図１は、実施形態のデータ提供システム１の一例を示す図である。データ提供システム１は、例えば、ユーザ端末１００と、データベース統合サーバ２００と、管理端末３００と、複数のデータベースシステム４００−１、データベースシステム４００−２、・・・データベースシステム４００−Ｎと、を備える。以下、データソースを他のデータソースと区別しない場合には「データベースシステム４００」と記載する。データベースシステム４００の数に特段の制約は存在しない。各データベースシステム４００は、データベース内部またはデータベース同士において異種のデータを管理および記憶する。異種のデータとは、例えば、テーブルの構造が異なるデータである。
【００１２】
ユーザ端末１００と、データベース統合サーバ２００と、管理端末３００と、データベースシステム４００とは、ネットワークＮＷに接続されている。ネットワークＮＷは、例えば、無線基地局、Ｗｉ−Ｆｉアクセスポイント、通信回線、プロバイダ、インターネットなどを含む。なお、これらの構成要素の全ての組み合わせが相互に通信可能である必要はなく、ネットワークＮＷは、一部にローカルなネットワークを含んでもよい。
【００１３】
図２は、ユーザ端末１００およびデータベース統合サーバ２００の機能構成の一例を示すブロック図である。ユーザ端末１００は、データベース用アプリケーション１１０がインストールされたコンピュータである。ユーザ端末１００は、データベース統合サーバ２００に対するクライアントの一例である。データベース用アプリケーション１１０は、例えばユーザの操作に基づいてＳＱＬ（Structured Query Language）により記述したクエリを生成する。実施形態において、データベース用アプリケーション１１０は、データ同士を結合した結果を要求するクエリを生成する。クエリは、データベース統合サーバ２００に対する要求の一例であり、クエリという概念の範疇に解釈されない他の要求であってもよい。データベース用アプリケーション１１０は、生成したクエリを、ＮＩＣを用いてデータベース統合サーバ２００に送信する。また、データベース用アプリケーション１１０は、データベース統合サーバ２００からのクエリに対する応答を受け付ける。
【００１４】
データベース統合サーバ２００は、例えば、クエリ受付部２１０と、計画生成部２２０と、記憶部２３０と、連携マップ管理部２４０と、計画実行部２５０と、データベース接続部２６０とを備える。クエリ受付部２１０と、計画生成部２２０、連携マップ管理部２４０、計画実行部２５０、およびデータベース接続部２６０は、例えばＣＰＵ（Central Processing Unit）等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＦＰＧＡ（Field-Programmable Gate Array）等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。データベース統合サーバ２００は、データベース統合装置の一例である。
【００１５】
クエリ受付部２１０およびデータベース接続部２６０は、ＮＩＣ（Network Interface Card）や無線通信モジュールなどの通信インターフェースである。クエリ受付部２１０は、受付部の一例である。データベース接続部２６０は、通信部の一例である。
【００１６】
計画生成部２２０は、クエリ受付部２１０により受け付けられたクエリを解析し、解析結果に基づいて実行計画を生成する。計画生成部２２０は、例えば、プッシュダウン判定部２２２を含む。プッシュダウン判定部２２２は、プッシュダウンが可能か否かを判定する。プッシュダウンとは、クエリをデータベースシステム４００に送信することでクエリに基づく処理をデータベースシステム４００に実行させることである。計画生成部２２０は、プッシュダウン判定部２２２による判定結果に基づいて、実行計画を生成する。実行計画は、クエリにより指定された結合対象のデータをデータベースシステム４００から抽出し、抽出した照合対象のデータ同士を結合し、クエリに対して応答する手順を表す。
【００１７】
記憶部２３０は、ＨＤＤ（Hard Disc Drive）、フラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）、ＲＯＭ（Read Only Memory）、またはＲＡＭ（Random Access Memory）、或いはこれらを複数用いたハイブリッド型記憶装置により実現される。また、記憶部２３０には、ファームウェアやアプリケーションプログラム等の各種プログラム、処理結果などが記憶される。記憶部２３０は、データベースシステム情報、およびスキーマ情報を記憶する。データベースシステム情報は、データベースシステム４００にアクセスするための情報、データベースシステム４００において採用されているＤＢＭＳに関する情報、データベースシステム４００が備えるデータベース４２０に格納されたテーブル（Ｔ）およびテーブルに含まれるデータの種類に関する情報を含む。スキーマ情報は、データベースシステム４００におけるデータベースの構造に関する情報である。
【００１８】
連携マップ管理部２４０は、データベースシステム４００を追加、削除、またはアクセス権限の変更を要求するクエリに基づいて、連携マップ２４２を更新する。連携マップ２４２を更新するためのクエリは、管理端末３００からデータベース統合サーバ２００に供給される。管理端末３００は、外部装置の一例である。
【００１９】
連携マップ管理部２４０は、管理端末３００から受信した要求に基づいて、連携マップ２４２を管理する。連携マップ２４２は、結合可否情報の一例である。連携マップ２４２は、クエリにより指定された結合対象のデータをそれぞれ格納したデータベース４２０を備えるデータベースシステム４００の組み合わせのそれぞれが、組み合わせ相手のデータベースシステム４００から結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステム４００に結合対象のデータを読み込ませることができるか否かを表す。言い換えれば、連携マップ２４２は、複数のデータベースシステム４００のうち第１および第２のデータベースシステム４００の組み合わせ毎に、第１のデータベースシステムが、第１のデータベースシステムにおけるデータベースに格納された第１のデータと、第２のデータベースシステムに問い合わせることで取得した第２のデータベースシステムにおけるデータベース４２０に格納された第２のデータとを結合することができるか否かを表す情報、および第２のデータベースシステムが、第２のデータベースシステムにおけるデータベース４２０に格納された第２のデータと、第１のデータベースシステムに問い合わせることで取得した第１のデータベースシステムにおけるデータベース４２０に格納された第１のデータとを結合することができるか否かを表す情報を含む。以下の説明において、結合対象のデータを管理する一組のデータベースシステム４００のうち、結合対象のデータを読み込む側のデータベースシステム４００を「受信側データベースシステム４００」と記載し、結合対象のデータが読み込まれる側のデータベースシステム４００を「送信側データベースシステム４００」と記載する。
【００２０】
計画実行部２５０は、計画生成部２２０により生成された実行計画に基づいて、処理を実行する。
【００２１】
データベースシステム４００−１、・・・データベースシステム４００−Ｎは、例えば、データベース管理装置４１０−１、・・・データベース管理装置４１０−Ｎと、データベース４２０−１、・・・データベース４２０−Ｎとを、備える。Ｎは３以上の自然数である。なお、以下の説明においてデータベース管理装置を他のデータベース管理装置と区別しない場合には「データベース管理装置４１０」と記載し、データベースを他のデータベースと区別しない場合には「データベース４２０」と記載する。
【００２２】
データベース管理装置４１０は、例えばＣＰＵ等のプロセッサがプログラムメモリに格納されたＤＢＭＳ（DataBase Management System）を実行することにより実現される。データベース管理装置４１０は、外部装置から受け付けたクエリに基づいて、データベース４２０の操作、およびデータの結合を行う。外部装置とは、例えば、データベース統合サーバ２００、他のデータベース管理装置４１０、または管理端末３００である。
【００２３】
また、データベース管理装置４１０は、送信側データベースシステム４００から読み込んだ結合対象のデータを処理するために、他のデータベースシステム４００に対応したスキーマ情報を登録する。データベース管理装置４１０は、内部または外部の記憶部に記憶されたスキーマ情報を参照して、送信側データベースシステム４００から読み込んだ結合対象のデータを処理する。
【００２４】
データベース４２０は、データを格納したテーブル（Ｔ）を含む。テーブルは、各行に一又は複数のデータを含むレコードを含む情報である。
【００２５】
以下、連携マップについて説明する。図３は、種類が異なるデータベースシステム群同士の連携状態を表す図である。図４は、連携マップの一例を示す図である。データベースシステム４００は、データベース管理装置４１０を実現するＤＢＭＳの種類によって、自身と同種類のデータベースシステム４００および自身と異なる種類のデータベースシステム４００に対する連携状態が異なる。連携状態とは、データベースシステム４００を実現するＤＢＭＳの種類の相違により、自身が送信側データベースシステム４００における結合対象のデータの読み込みが可能であるか否か、自身のデータベース４２０に格納されたデータが受信側データベースシステム４００に読み込まれることが可能か否かを表す。
【００２６】
データベースシステム４００は、図３に示すように、第１のデータベースシステム群Ｇ１、第２のデータベースシステム群Ｇ２、第３のデータベースシステム群Ｇ３、または第４のデータベースシステム群Ｇ４のいずれかに区別される。第１のデータベースシステム群Ｇ１に属するデータベースシステム４００は、経路ｒ１に示すように、自身と同種のデータベースシステム４００同士でデータの読み込みが可能である。また、第１のデータベースシステム群Ｇ１に属するデータベースシステム４００は、経路ｒ２およびｒ３に示すように、第２のデータベースシステム群Ｇ２に属するデータベースシステム４００同士でデータの読み込みが可能である。さらに、第１のデータベースシステム群Ｇ１に属するデータベースシステム４００は、第４のデータベースシステム群Ｇ４に属するデータベースシステム４００からデータを読み込むことが可能である。
【００２７】
第２のデータベースシステム群Ｇ２に属するデータベースシステム４００は、経路ｒ１１に示すように、自身と同種のデータベースシステム４００同士でデータの読み込みが可能である。また、第２のデータベースシステム群Ｇ２に属するデータベースシステム４００は、経路ｒ２およびｒ３に示すように、第１のデータベースシステム群Ｇ１に属するデータベースシステム４００同士でデータの読み込みが可能である。さらに、第２のデータベースシステム群Ｇ２に属するデータベースシステム４００は、第３のデータベースシステム群Ｇ３に属するデータベースシステム４００からデータを読み込むことが可能である。
【００２８】
第３のデータシステム群Ｇ３に属するデータベースシステム４００は、経路ｒ２１に示すように、自身と同種のデータベースシステム４００同士でデータの読み込みが可能である。また、第３のデータシステム群Ｇ３に属するデータベースシステム４００は、経路ｒ１２に示すように、第２のデータベースシステム群Ｇ２に属するデータベースシステム４００に自身のデータを読み込ませることができる。
【００２９】
第４のデータベースシステム群Ｇ４に属するデータベースシステム４００は、経路ｒ３１に示すように、第１のデータベースシステム群Ｇ１に属するデータベースシステム４００に自身のデータを読み込ませることができる。
【００３０】
このような第１から第４のデータベースシステム群間の連携状態は、例えば、図４に示すような形式の連携マップ２４２として表現することができる。連携マップ２４２は、例えば、データの読み込み側とデータの読み込まれる側とが交差する位置における連携状態を可能（○）と不可能（×）とのいずれかで表す情報である。
【００３１】
以下、連携マップに基づいて、複数のデータベースシステム４００の中からクエリより指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステム４００を決定し、決定したデータベースシステム４００に結合処理を実行させる実行計画を生成し、生成した実行計画に基づいて、クエリに基づく情報を、決定されたデータベースシステム４００に送信することについて説明する。図５は、連携マップの他の一例を示す図である。図６は、連携マップに基づくデータベースシステム４００間のデータの流れを示す図である。図７は、実行計画に基づくデータベース統合サーバ２００および複数のデータベースシステム４００間の動作の流れの一例を示す図である。
【００３２】
図５に示した連携マップは、図６に示すように、データベースシステム４００−１がデータベースシステム４００−２からデータを読み込むことが可能であるが、データベースシステム４００−２がデータベースシステム４００−１からデータを読み込むことができないことを表している。この場合、計画生成部２２０は、データベース統合サーバ２００からデータベース管理装置４１０−１にプッシュダウンを実行し、データベース管理装置４１０−１において結合対象のデータの結合処理を行う実行計画を生成する。
【００３３】
計画実行部２５０は、実行計画に基づいて、データベース管理装置４１０−１に対してプッシュダウンを実行する。データベース管理装置４１０−１は、プッシュダウンされたクエリを受け付けた場合、データベース管理装置４１０−２に問い合わせを行う。データベース管理装置４１０−２は、問い合わせに応じて、結合対象のデータをデータベース４２０−２から抽出して、抽出した結果としての結合対象のデータをデータベース管理装置４１０−１に送信する。データベース管理装置４１０−１は、データベース管理装置４１０−２から取得した結合対象のデータと、自身のデータベース４２０−１に格納された結合対象のデータとを結合する結合処理を実行する。データベース管理装置４１０−１は、結合結果をデータベース統合サーバ２００に送信する。
【００３４】
以下、クエリにより指定された結合対象のデータを格納したデータベース４２０を備えるデータベースシステム４００の組み合わせの双方が、組み合わせ相手のデータベースシステム４００から結合対象のデータを読み込むことができない場合、第三者としてのデータベースシステム４００を利用して結合対象のデータを結合することについて説明する。第三者としてのデータベースシステムは、結合対象のデータを管理する一組のデータベースシステム４００以外のデータベースシステム４００である。
【００３５】
図８は、連携マップ２４２の一例を示す図である。図９は、データベース統合サーバ（Ｓ）およびデータベースシステム群Ｇ１からＧ４におけるデータの流れの一例を示す図である。図１０は、第三者としてのデータベースシステムにより結合対象のデータを結合する場合のデータの流れの一例を示す図である。図１１は、第三者としてのデータベースシステムにより結合対象のデータを中継する場合のデータの流れの一例を示す図である。図１２は、第三者としてのデータベースシステムを利用してもデータベースシステムにおいて結合対象のデータを結合できない場合のデータの流れの一例を示す図である。
【００３６】
図８に示すような連携マップ２４２は、図９に示すような有向グラフとして表現することができる。
【００３７】
図１０に示すように、クエリにより指定された結合対象のデータ（ｄ１およびｄ２）が、Ｇ２に属するデータベースシステム４００（Ｇ２）とＧ４に属するデータベースシステム４００（Ｇ４）とに格納されているものとする。プッシュダウン判定部２２２は、連携マップ２４２を参照して、ｄ１およびｄ２を格納した一組のデータベースシステム４００（４００（Ｇ２）と４００（Ｇ４））のそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを取得できないことを判定する。この場合、プッシュダウン判定部２２２は、一組のデータベースシステム４００（Ｇ２）および４００（Ｇ４）からｄ１およびｄ２を取得することができる、Ｇ１に属するデータベースシステム４００（Ｇ１）を探索する。プッシュダウン判定部２２２は、データベースシステム４００（Ｇ１）を、結合処理を行うデータベースシステム４００として決定する。
【００３８】
更に、計画生成部２２０は、探索したデータベースシステム４００（Ｇ１）が、一組のデータベースシステム４００（Ｇ２）および４００（Ｇ４）の双方からｄ１およびｄ２を取得して、結合処理を行う実行計画を生成する。計画実行部２５０は、生成された実行計画に基づいて、クエリをデータベースシステム４００（Ｇ１）に送信する。データベースシステム４００（Ｇ１）は、データベースシステム４００（Ｇ２）にクエリに基づく問い合わせｑ１を送信することで、ｄ１を取得する。データベースシステム４００（Ｇ１）は、データベースシステム４００（Ｇ４）にクエリに基づく問い合わせｑ２を送信することで、ｄ２を取得する。データベースシステム４００（Ｇ１）は、ｄ１とｄ２とを結合し、結合結果をデータベース統合サーバ２００に返信する。
【００３９】
図１１に示すように、クエリにより指定された結合対象のデータ（ｄ１およびｄ２）が、一組のＧ２に属するデータベースシステム４００（Ｇ２）およびＧ４に属するデータベースシステム４００（Ｇ４）に格納されているものとする。プッシュダウン判定部２２２は、連携マップ２４２を参照して、ｄ１およびｄ２を格納した一組のデータベースシステム４００の組み合わせ（４００（Ｇ２）と４００（Ｇ４））のそれぞれが、組み合わせ相手のデータベースシステムから結合対象のデータを取得できないことを判定する。この場合、プッシュダウン判定部２２２は、一組の一方のデータベースシステム４００（Ｇ４）からｄ２を取得して、一組の他方のデータベースシステム４００（Ｇ２）にｄ２を中継するデータベースシステム４００（Ｇ１）を探索する。プッシュダウン判定部２２２は、データベースシステム４００（Ｇ２）を、結合処理を行うデータベースシステム４００として決定する。
【００４０】
更に、計画生成部２２０は、探索したデータベースシステム４００（Ｇ１）が、データベースシステム４００（Ｇ４）からｄ２を取得して、データベースシステム４００（Ｇ２）にｄ２を中継し、データベースシステム４００（Ｇ２）が結合処理を行う実行計画を生成する。計画実行部２５０は、生成された実行計画に基づいて、クエリをデータベースシステム４００（Ｇ２）に送信する。データベースシステム４００（Ｇ２）は、データベースシステム４００（Ｇ１）にクエリに基づく問い合わせｑ１１を送信する。データベースシステム４００（Ｇ１）は、ｑ１１を受け付けたことに応じて、クエリｑ１２をデータベースシステム４００（Ｇ４）に送信することで、データベースシステム４００（Ｇ４）からｄ２を取得する。データベースシステム４００（Ｇ１）は、ｄ２を取得したことに応じて、ｄ２をデータベースシステム４００（Ｇ２）に送信する。データベースシステム４００（Ｇ２）は、ｄ１とｄ２とを結合し、結合結果をデータベース統合サーバ２００に返信する。
【００４１】
なお、データベース統合サーバ２００は、ｄ１およびｄ２を格納した一組のデータベースシステム４００（４００（Ｇ２）と４００（Ｇ４））のそれぞれが、組み合わせ相手のデータベースシステム４００から結合対象のデータを取得できない場合、クエリをデータベースシステム４００にプッシュダウンしないと判定してよい。データベース統合サーバ２００は、プッシュダウンしない場合、図１２に示すように、ｄ１を抽出するクエリをデータベースシステム４００（Ｇ２）に送信すると共に、ｄ２を抽出するクエリをデータベースシステム４００（Ｇ４）に送信する。これにより、データベース統合サーバ２００は、ｄ１およびｄ２を取得して、ｄ１とｄ２とを結合する。
【００４２】
以下、上述したデータ提供システム１における処理の流れについて説明する。図１３は、データ提供システム１における全体の処理の流れの一例を示すフローチャートである。
まず、データベース統合サーバ２００は、クエリを受け付けたか否かを判定する（ステップＳ１００）。データベース統合サーバ２００は、クエリを受け付けた場合、クエリを解析し（ステップＳ１０２）、クエリがスキーマ更新を要求しているか否かを判定する（ステップＳ１０４）。スキーマ更新とは、スキーマの登録、削除、またはアクセス権限の変更を含む。スキーマ登録には、例えば、新たなデータベースシステム４００、テーブル、またはデータの追加が含まれる。スキーマ削除には、例えば、データベースシステム４００、テーブル、またはデータの削除が含まれる。アクセス権限の変更は、データベースシステム４００間におけるデータの読み込みの可否を変更することである。
【００４３】
データベース統合サーバ２００は、クエリがスキーマ更新を要求している場合、スキーマ更新を実行する実行計画を生成し（ステップＳ１０６）、実行計画を実行する（ステップＳ１０８）。データベース統合サーバ２００は、クエリがスキーマ更新を要求していない場合、クエリがSELECT文であるか否かを判定する（ステップＳ１１０）。データベース統合サーバ２００は、クエリがSELECT文である場合、SELECT文の実行計画を生成し（ステップＳ１１２）、実行計画を実行する（ステップＳ１０８）。データベース統合サーバ２００は、クエリがSELECT文ではない場合、クエリの解析結果に基づいて実行計画を生成し（ステップＳ１１４）、実行計画を実行する（ステップＳ１０８）。以上が、データ提供システム１の全体の処理の説明である。
【００４４】
図１４は、スキーマ更新を実行する実行計画を生成する処理（ステップＳ１０６）の流れの一例を示すフローチャートである。まず、計画生成部２２０は、クエリの解析結果に基づいて、スキーマ更新の対象となるテーブル情報を取得する（ステップＳ２００）。テーブル情報には、データベースシステム４００を特定する情報、データベースシステム４００におけるＤＢＭＳの種類、およびスキーマ情報などが含まれているものとする。次に計画生成部２２０は、テーブル情報に基づいて、データベース統合サーバ２００における連携マップ２４２、データベースシステム情報、およびスキーマ情報などを更新する実行計画Ｐを生成する（ステップＳ２０２）。
【００４５】
次に計画生成部２２０は、連携マップ２４２を参照し、スキーマ更新対象のテーブルを読み込むことができるデータベースシステム４００を一つ選択する（ステップＳ２０４）。
【００４６】
計画生成部２２０は、スキーマ更新対象のテーブルを読み込むことができるデータベースシステム４００が存在するか否かを判定する（ステップＳ２０６）。計画生成部２２０は、そのようなデータベースシステム４００が存在しない場合、本フローチャートの処理を終了する。計画生成部２２０は、そのようなデータベースシステム４００が存在する場合、選択したデータベースシステム４００がスキーマ更新対象のテーブルを管理するデータベースシステム４００と同じ種類のデータベースシステムか否かを判定する（ステップＳ２０８）。計画生成部２２０は、同じ種類のデータベースシステム４００である場合、当該同じ種類のデータベースシステム４００における情報を変更する必要がないので、ステップＳ２０４に処理を戻す。
【００４７】
計画生成部２２０は、同じ種類のデータベースシステム４００ではない場合、選択したデータベースシステム４００における情報を登録または削除するための実行計画Ｐ＃を、実行計画Ｐに対して追加する。
【００４８】
図１５は、更新される連携マップ２４２の一例を示す図である。計画生成部２２０は、クエリが、データベースシステム４００−３によりデータベースシステム４００−１のテーブルを読み込むことができるように更新することを表している場合、計画生成部２２０は、連携マップ２４２における受信側データベースシステム４００−３と送信側データベースシステム４００−１の交点における連携状態を、不能（×）から可能（○）に更新する実行計画Ｐを生成する。また、計画生成部２２０は、データベースシステム４００−１において、データベースシステム４００−３からテーブルを読み込まれることを許可する実行計画Ｐ＃を、実行計画Ｐに対して追加する。さらに、計画生成部２２０は、データベースシステム４００−３において、データベースシステム４００−１からテーブルを読み込むことを許可する実行計画Ｐ＃を、実行計画Ｐに対して追加する。
【００４９】
図１６は、データベースシステム４００−３を追加する際のデータベース統合サーバ２００およびデータベースシステム４００の動作を示す図である。データベース統合サーバ２００は、管理端末３００から「データベースシステム４００−３を追加する」というクエリを受け受けた場合、クエリの解析結果に基づいて、連携マップ２４２を更新する実行計画Ｐを生成する。さらに、データベース統合サーバ２００は、データベースシステム４００−３とは異なる種類のデータベースシステム４００−１および４００−２においてデータベースシステム４００−３との間でテーブルを読み込むための情報を追加する実行計画Ｐ＃を追加する。
【００５０】
図１７は、SELECT文の実行計画を生成する処理（ステップＳ１１２）の流れの一例を示すフローチャートである。まず、計画生成部２２０は、クエリの解析結果に基づいて、結合対象のテーブル（データベース４２０）および結合条件を抽出する（ステップＳ３００）。次に計画生成部２２０は、抽出した情報に基づいて、クエリに対して結果を応答するための処理に結合処理があるか否かを判定する（ステップＳ３０２）。計画生成部２２０は、結合処理がない場合、クエリに対して応答するため他の処理の実行計画を作成する（ステップＳ３３６）。
【００５１】
計画生成部２２０は、結合処理がある場合、SELECT文においてFROM節に続いて記述されたテーブルを備える一組のデータベースシステム４００のうち、同一のデータベースシステムにおいて実行可能な結合処理が存在するか否かを判定する（ステップＳ３０４）。計画生成部２２０は、同一のデータベースシステム４００において実行可能な結合処理がある場合、当該データベースシステム４００において結合処理を行う実行計画を作成する（ステップＳ３０６）。
【００５２】
次にプッシュダウン判定部２２２は、プッシュダウン判定を行う（ステップＳ３０８）。なお、プッシュダウン判定の処理内容は、図１８において説明する。計画生成部２２０は、プッシュダウン判定の結果、プッシュダウンが可能であるか否かを判定する（ステップＳ３１０）。計画生成部２２０は、プッシュダウンが可能である場合、一組のデータベースシステム４００のうち、プッシュダウン先ではないデータベースシステム４００（送信側データベースシステム４００）において実行される選択条件が存在するか否かを判定する（ステップＳ３１２）。選択条件は、SELECT文におけるWHERE節に続いて記述された結合対象のデータを選択する条件である。
【００５３】
計画生成部２２０は、選択条件が存在する場合、プッシュダウン先として選択されたデータベースシステム４００（受信側データベースシステム４００）に対して結合処理を実行すると共に、選択条件を送信側データベースシステム４００に問い合わせる実行計画を作成する（ステップＳ３１４）。結合処理を実行する実行計画には、送信側データベースシステム４００から結合対象のデータを取得する処理が含まれる。計画生成部２２０は、選択条件が存在しない場合、受信側データベースシステム４００に対して結合処理を実行する実行計画を作成する（ステップＳ３１６）。
【００５４】
計画生成部２２０は、プッシュダウンが可能ではない場合、データベース統合サーバ２００において結合処理を実行する実行計画を作成する（ステップＳ３１８）。
【００５５】
図１８は、プッシュダウン判定の処理（ステップＳ３０８）の流れの一例を示すフローチャートである。まずプッシュダウン判定部２２２は、SELECT文におけるFROM節に続いて記述されたテーブルのうちペアを一つ選択する（ステップＳ４００）。プッシュダウン判定部２２２は、例えば、FROM節で出現する順番でテーブルのペアを選択する。次に、プッシュダウン判定部２２２は、テーブルから抽出した結合対象のデータの一つを送信側データベースシステム４００から受信側データベースシステム４００に転送するための経路、プッシュダウン先、およびコストを求める（ステップＳ４０２）。なお、データの経路、プッシュダウン先、およびコストを求める処理の内容は、後述する。
【００５６】
次に、プッシュダウン判定部２２２は、全てのテーブルのペアについてデータの経路、プッシュダウン先、およびコストを求めたか否かを判定する（ステップＳ４０４）。プッシュダウン判定部２２２は、全てのテーブルのペアについてプッシュダウン先を判定していない場合、ステップＳ４００に処理を戻す。
【００５７】
プッシュダウン判定部２２２は、全てのテーブルのペアについてプッシュダウン先を判定した場合、プッシュダウン先が存在するか否かを判定する（ステップＳ４０６）。プッシュダウン判定部２２２は、プッシュダウン先が存在する場合、コスト情報に基づいて、プッシュダウン先、および結合対象のテーブルを決定する（ステップＳ４０８）。
【００５８】
図１９は、連携マップ２４２の一例を示す図である。図２０は、結合するテーブルのペアと、データベースシステム４００のコストとの関係を示す図である。データベース統合サーバ２００は、一組のテーブルＴ１，Ｔ２，Ｔ３から抽出したデータを結合するクエリを受け付けたものとする。テーブルＴ１はデータベースシステム４００−１により管理されているテーブルであり、Ｔ２はデータベースシステム４００−２により管理されているテーブルであり、Ｔ３はデータベースシステム４００−３により管理されているテーブルである。プッシュダウン判定部２２２は、各データベースシステム４００についてテーブルから抽出した結合対象のデータを結合するコストを計算する。計画生成部２２０は、図２０の上図に示したようにコストを計算した結果、テーブルＴ１から抽出したデータとテーブルＴ３から抽出したデータとを結合するコストが最も小さいことを判定する。
【００５９】
次にプッシュダウン判定部２２２は、連携マップ２４２を参照して、テーブルＴ１から抽出したデータとテーブルＴ３から抽出したデータとを結合した結果に対してテーブルＴ２から抽出したデータを結合するクエリを、データベースシステム４００−２にプッシュダウンできることを判定する。そして、計画生成部２２０は、図２０の下図に示すように、テーブルＴ２から抽出したデータを結合するためのコストを演算する。この場合、プッシュダウン判定部２２２は、プッシュダウン先のデータベースシステム４００がデータベースシステム４００−２の一つであるので、プッシュダウン先をデータベースシステム４００−２に決定する。
【００６０】
プッシュダウン判定部２２２は、プッシュダウン先が存在しない場合、プッシュダウンができないと判定する（ステップＳ４１２）。
【００６１】
図２１は、結合対象のデータの経路、プッシュダウン先、およびコストを求める処理（ステップＳ４０２）の流れの一例を示すフローチャートである。まずプッシュダウン判定部２２２は、データベースシステム４００の全てについて経路を探索したか否かを判定する（ステップＳ５００）。
【００６２】
プッシュダウン判定部２２２は、データベースシステム４００の全てについて経路を探索していない場合、経路探索が行われていないデータベースシステムＸを一つ選択する（ステップＳ５０２）。次にプッシュダウン判定部２２２は、選択されたデータベースシステムＸから、テーブルのペアの一方を管理するデータベースシステム（Ｐ１）への経路Ｒ１を探索する（ステップＳ５０４）。プッシュダウン判定部２２２は、データベースシステムＸからデータベースシステム（Ｐ１）への経路Ｒ１が存在するか否かを判定する（ステップＳ５０６）。なお、プッシュダウン判定部２２２は、経路Ｒ１が複数存在する場合には、複数の経路Ｒ１を求める。プッシュダウン判定部２２２は、経路Ｒ１が存在しない場合、処理をステップＳ５００に戻す。
【００６３】
プッシュダウン判定部２２２は、経路Ｒ１が存在する場合、データベースシステムＸから、テーブルのペアの他方を管理するデータベースシステム（Ｐ２）への経路Ｒ２を探索する（ステップＳ５０８）。プッシュダウン判定部２２２は、データベースシステムＸからデータベースシステム（Ｐ２）への経路Ｒ２が存在するか否かを判定する（ステップＳ５１０）。なお、プッシュダウン判定部２２２は、経路Ｒ２が複数存在する場合には、複数の経路Ｒ２を求める。プッシュダウン判定部２２２は、経路Ｒ２が存在しない場合、処理をステップＳ５００に戻す。
【００６４】
次にプッシュダウン判定部２２２は、経路Ｒ１のコストＣ１を求める（ステップＳ５１２）。次に、プッシュダウン判定部２２２は、経路Ｒ２のコストＣ２を求める（ステップＳ５１４）。コストとは、データベースシステム４００における性能、ネットワーク帯域幅などの静的な指標、結合処理を実行することが可能なデータベースシステム４００における処理負荷、および／またはクエリにより指定された結合対象のデータの通信量などの動的な指標を表す情報である。
【００６５】
次にプッシュダウン判定部２２２は、コストＣ１とＣ２とを加算したコストを、データベースシステムＸにプッシュダウンした場合のコストとして決定し（ステップＳ５１６）、ステップＳ５００に処理を戻す。
【００６６】
次にプッシュダウン判定部２２２は、全てのデータベースシステム４００について経路を探索したと判定した場合、経路Ｒ１およびＲ２の双方を求めることができたデータベースシステム４００がないか否かを判定する（ステップＳ５１８）。すなわち、プッシュダウン判定部２２２は、データベースシステム（Ｐ１）とデータベースシステム（Ｐ２）の両方に辿ることができるデータベースシステム４００がないか否かを判定する。プッシュダウン判定部２２２は、経路Ｒ１およびＲ２の双方を求めることができたデータベースシステム４００がない場合、プッシュダウンできないと決定する（ステップＳ５２０）。プッシュダウン判定部２２２は、経路Ｒ１およびＲ２の双方を求めることができたデータベースシステム４００がある場合、コストが最小のデータベースシステム４００をプッシュダウン先に決定する（ステップＳ５２２）。
【００６７】
以上説明した実施形態のデータベース統合サーバ２００によれば、連携マップ２４２に基づいて、複数のデータベースシステム４００の中から、結合処理を実行するデータベースシステム４００を決定し、クエリに基づく情報を、決定したデータベースシステム４００に送信するので、結合対象のデータが異なる種類のデータベースシステム４００により管理されている場合であっても、結合処理を行うことができるデータベースシステム４００にプッシュダウンを実行することができる。これにより、データベース統合サーバ２００によれば、結合対象のデータが異種のデータベースシステム４００により管理されている場合であっても、異種のデータベースシステム４００から結合対象のデータを取得して結合処理を行うことができるデータベースシステム４００が存在する場合に、より高速に結合処理を実行することができる。すなわち、データベース統合サーバ２００によれば、データベースシステム４００から結合対象のデータを受信する必要がないので、データの通信量を抑制することで、より高速に結合処理を実行することができる。また、データベース統合サーバ２００によれば、データベース統合サーバ２００により結合処理を行う頻度を抑制することができ、処理負荷を抑制することができる。
【００６８】
また、データベース統合サーバ２００によれば、プッシュダウン先のデータベースシステム４００が送信側データベースシステム４００に結合対象のデータの選択条件を送信するので、データベース統合サーバ２００から送信側データベースシステム４００に選択条件をプッシュダウンする必要がない。これにより、データベース統合サーバ２００の処理負荷をさらに抑制することができる。
【００６９】
さらに、データベース統合サーバ２００によれば、コスト情報に基づいて、プッシュダウン先のデータベースシステム４００を決定することができるので、プッシュダウン先のデータベースシステム４００における処理遅延または通信遅延を抑制することができ、結合処理をより高速にすることができる。
【００７０】
さらに、データベース統合サーバ２００によれば、結合対象のデータを管理するデータベースシステム４００の組み合わせの双方が、組み合わせ相手のデータベースシステム４００から結合対象のデータを取得できない場合、組み合わせの双方のデータベースシステム４００から結合対象のデータを取得することができるデータベースシステム４００をプッシュダウン先のデータベースシステム４００として決定することができる。これにより、データベース統合サーバ２００によれば、結合処理をより高速化することができる頻度を高くすることができる。
【００７１】
さらに、データベース統合サーバ２００によれば、結合対象のデータを管理するデータベースシステム４００の組み合わせの双方が、組み合わせ相手のデータベースシステム４００から結合対象のデータを取得できない場合、組み合わせの他方から結合対象のデータを取得して組み合わせの一方に結合対象のデータを中継することができるデータベースシステム４００をプッシュダウン先のデータベースシステム４００として決定することができる。これにより、データベース統合サーバ２００によれば、結合処理をより高速化することができる頻度を高くすることができる。
【００７２】
さらに、データベース統合サーバ２００によれば、結合対象のデータ同士を結合し、結合したデータに対して繰り返して結合対象のデータと結合する処理を実行させる場合、コストに基づいて結合処理を実行するデータベースシステム４００を決定することができるので、結合処理をより高速化することができる頻度を高くすることができる。
【００７３】
さらに、データベース統合サーバ２００によれば、データベースシステム４００を追加、削除、またはデータベースシステム４００同士におけるアクセス権限を変更するクエリを受け付けた場合に、連携マップ２４２を更新する実行計画、およびデータベースシステム４００が他のデータベースシステム４００にアクセスするための情報を変更する実行計画を生成するので、動的に連携マップ２４２およびデータベースシステム４００間における連携状態を更新することができる。
【００７４】
（実施例）
以下、実施例１について説明する。図２２は、実施例１において、データベース統合サーバ２００がユーザ端末１００からクエリを受け付ける様子を示す図である。データベース４２０−１には、商品マスターテーブルＴＡが格納され、データベース４２０−２には、売り上げテーブルＴＢが格納されているとする。ユーザが、ある１日に販売された商品名を知りたい場合において、データベース統合サーバ２００は、ユーザ端末１００から下記のSELECT文を含むクエリを受け付けたものとする。
SELECT A.商品名 FROM A,B WHERE A.商品ID=B.商品ID
【００７５】
データベース統合サーバ２００は、クエリを解釈することで、商品マスターテーブルＴＡおよび売り上げテーブルＴＢから、商品ＩＤが同じという選択条件を満たす商品名を検索する実行計画を生成する。また、データベース統合サーバ２００は、連携マップ２４２を参照して、データベースシステム４００−１がデータベースシステム４００−２からデータを読み込むことができるが、データベースシステム４００−２がデータベースシステム４００−１からデータを読み込むことができないことを判定する。
【００７６】
この結果、データベース統合サーバ２００は、プッシュダウン先のデータベースシステム４００をデータベースシステム４００−１に決定する。図２３は、データベース統合サーバ２００からデータベースシステム４００−１にプッシュダウンする様子を示す図である。データベースシステム４００−１は、クエリ「SELECT*FROM B」を含む問い合わせをデータベースシステム４００−２に対して行うことで、データベースシステム４００−２における売り上げテーブルＴＢを読み出す。
【００７７】
図２４は、データベースシステム４００−１により売り上げテーブルＴＢを読み込んで、結合結果をデータベース統合サーバ２００に送信する様子を示す図である。データベースシステム４００−１は、商品マスターテーブルＴＡと読み出した売り上げテーブルＴＢとを結合した結果として、商品名をデータベース統合サーバ２００に送信する。商品名は、商品マスターテーブルＴＡに含まれるデータＤＡと売り上げテーブルＴＢに含まれるデータＤＢとを結合した結果の一例である。なお、図２４は、比較例のテーブルの流れを点線で示す。比較例において、データベース統合サーバ２００は、データベースシステム４００−１およびデータベースシステム４００−２のそれぞれからテーブルを読み込み、データベース統合サーバ２００により結合処理を実行する。
【００７８】
図２５は、実施例１における商品マスターテーブルＴＡ、売り上げテーブルＴＢ、および結合結果のデータサイズを示す図である。実施例１において、商品マスターテーブルＴＡのデータサイズが１０８０ＫＢであり、売り上げテーブルＴＢのデータサイズが１３ＫＢであり、結合結果のデータサイズは１００ＫＢとなる。この場合、実施例１におけるデータの転送量は、売り上げテーブルＴＢのデータサイズと結合結果のデータサイズとの和としての１１３ＫＢである。これに対し、比較例におけるデータの転送量は、商品マスターテーブルＴＡのデータサイズと売り上げテーブルＴＢのデータサイズの和としての１０９３ＫＢである。以上より、実施例１によれば、比較例よりも転送量を抑制することができる。
【００７９】
次に、実施例２について説明する。図２６は、実施例２において、データベース統合サーバ２００からデータベースシステム４００−１にプッシュダウンを行う様子を示す図である。データベース統合サーバ２００は、実施例１と同様に、下記のSELECT文を含むクエリを受け付けたものとする。
SELECT A.商品名 FROM A,B WHERE A.商品ID=B.商品ID
【００８０】
データベース統合サーバ２００は、連携マップ２４２を参照して、データベースシステム４００−１がデータベースシステム４００−２からデータを読み込むことができ、且つ、データベースシステム４００−２もデータベースシステム４００−１からデータを読み込むことができることを判定する。この場合、データベース統合サーバ２００は、データベースシステム情報として記憶されたハードウェア性能同士を比較することで、データベースシステム４００−１のハードウェア性能が、データベースシステム４００−２よりも高いことを判定する。
【００８１】
この結果、データベース統合サーバ２００は、プッシュダウン先のデータベースシステム４００をデータベースシステム４００−１に決定する。データベースシステム４００−１は、実施例１と同様に結合処理を実行して、結合結果をデータベース統合サーバ２００に転送する。実施例２によれば、比較例よりも転送量を抑制することができる。
【００８２】
以下、実施例３について説明する。図２７は、実施例３において、データベース統合サーバ２００がユーザ端末１００からクエリを受け付ける様子を示す図である。ユーザが、ある１日の２０時以降に販売された△社製の商品名を知りたい場合において、データベース統合サーバ２００は、ユーザ端末１００から下記のSELECT文を含むクエリを受け付けたものとする。
SELECT A.商品名 FROM A,B WHERE A.商品ID=B.商品ID AND A.商品名 LIKE '△社製%’AND 20:00<B.時刻
【００８３】
データベース統合サーバ２００は、クエリを解釈することで、テーブルＴＡおよびＴＢから、商品ＩＤが同じ、且つ△社製、且つ時刻が２０時以降という条件、を満たす商品名を検索する実行計画を生成する。また、データベース統合サーバ２００は、連携マップ２４２を参照して、データベースシステム４００−１がデータベースシステム４００−２からデータを読み込むことができるが、データベースシステム４００−２がデータベースシステム４００−１からデータを読み込むことができないことを判定する。この結果、データベース統合サーバ２００は、プッシュダウン先のデータベースシステム４００をデータベースシステム４００−１に決定する。
【００８４】
図２８は、データベースシステム４００−１からデータベースシステム４００−２に選択条件を送信する様子を示す図である。データベース統合サーバ２００は、選択条件をデータベースシステム４００−１からデータベースシステム４００−２に送信する実行計画を作成する。これにより、データベースシステム４００−１は、クエリ「SELECT*FROM B WHERE 20:00<時刻」を含む問い合わせをデータベースシステム４００−２に対して行うことで、データベースシステム４００−２における売り上げテーブルＴＢに格納されたデータのうち時刻が２０時以降のデータを抽出させる。これにより、データベースシステム４００−１は、商品マスターテーブルＴＡと読み出した売り上げテーブルＴＢとを結合した結果として、２０時以降の時刻において販売された△社製の商品名をデータベース統合サーバ２００に送信する。
【００８５】
図２９は、実施例３における商品マスターテーブルＴＡ、売り上げテーブルＴＢ、および結合結果のデータサイズを示す図である。実施例３において、商品マスターテーブルＴＡのうち△社製に関連するデータ（ＴＡ＃）のサイズは１０８ＫＢであり、売り上げテーブルＴＢのうち２０時以降のデータ（ＴＢ＃）のデータサイズが１３００Ｂであり、結合結果のデータサイズは１０ＫＢとなる。この場合、実施例３におけるデータの転送量は、データ（ＴＢ＃）のデータサイズと結合結果のデータサイズとの和としての１１．３ＫＢである。これに対し、比較例におけるデータの転送量は、データ（ＴＡ＃）のデータサイズとデータ（ＴＢ＃）のデータサイズの和としての１０９．３ＫＢである。以上より、実施例３によれば、比較例よりも転送量を抑制することができる。
【００８６】
以上説明した少なくともひとつの実施形態によれば、クエリにより指定された結合対象のデータをそれぞれ格納したデータベース４２０を備えるデータベースシステム４００の組み合わせのそれぞれが、組み合わせ相手のデータベースシステム４００から結合対象のデータを読み込んで結合処理を行うことができるか否か、および組み合わせ相手のデータベースシステム４００に結合対象のデータを読み込ませることができるか否かを表す連携マップ２４２に基づいて、複数のデータベースシステム４００の中から、クエリより指定された結合対象のデータ同士を結合させる結合処理を実行するデータベースシステム４００を決定するプッシュダウン判定部２２２と、決定されたデータベースシステムに結合処理を実行させる実行計画を生成する計画生成部２２０と、実行計画に基づいて、クエリに基づく情報を、決定されたデータベースシステムに送信する計画実行部２５０とを持つことにより、データベースシステム４００から結合対象のデータを受信する必要がないので、データの通信量を抑制することで、より高速に結合処理を実行することができる。
【００８７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８８】
１…データ提供システム、１００…ユーザ端末、１１０…データベース用アプリケーション、２００…データベース統合サーバ、２１０…クエリ受付部、２２０…計画生成部、２２２…プッシュダウン判定部、２４０…連携マップ管理部、２４２…連携マップ、２５０…計画実行部、２６０…データベース接続部、３００…管理端末、４００…データベースシステム、４１０…データベース管理装置、４２０…データベース
【図１】
2018010385.tif 000003
【図２】
2018010385.tif 000004
【図３】
2018010385.tif 000005
【図４】
2018010385.tif 000006
【図５】
2018010385.tif 000007
【図６】
2018010385.tif 000008
【図７】
2018010385.tif 000009
【図８】
2018010385.tif 000010
【図９】
2018010385.tif 000011
【図１０】
2018010385.tif 000012
【図１１】
2018010385.tif 000013
【図１２】
2018010385.tif 000014
【図１３】
2018010385.tif 000015
【図１４】
2018010385.tif 000016
【図１５】
2018010385.tif 000017
【図１６】
2018010385.tif 000018
【図１７】
2018010385.tif 000019
【図１８】
2018010385.tif 000020
【図１９】
2018010385.tif 000021
【図２０】
2018010385.tif 000022
【図２１】
2018010385.tif 000023
【図２２】
2018010385.tif 000024
【図２３】
2018010385.tif 000025
【図２４】
2018010385.tif 000026
【図２５】
2018010385.tif 000027
【図２６】
2018010385.tif 000028
【図２７】
2018010385.tif 000029
【図２８】
2018010385.tif 000030
【図２９】
2018010385.tif 000031