(57)【要約】【課題】  より迅速にクエリを実行し得る応答性能の高いデータベースシステム及びクエリ実行方法を提案する。【解決手段】  更新系のクエリに対する処理能力が強化された第１のＤＢＭＡと、参照系のクエリに対する処理能力が強化された第２のＤＢＭＳとを有し、第１のＤＢＭＳが管理する第１のデータベースに格納されたデータの一部又は全部を第２のＤＢＭＳが管理する第２のデータベースにレプリケートするデータベースシステムにおいて、更新系のクエリは第１のＤＢＭＳに振り分け、参照系のクエリは第２のＤＢＭＳに振り分けるようにし、参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータがレプリケートの対象であり、かつ当該レプリケートが未完了の場合であって、第１のＤＢＭＳで実行した方が速いときには当該クエリを第１のＤＢＭＳに振り分けるようにした。
2016151867.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機から発行される更新系のクエリに対する処理能力が強化された第１のデータベース管理システムと、前記ホスト計算機から発行される参照系のクエリに対する処理能力が強化された第２のデータベース管理システムとを有し、前記第１のデータベース管理システムが管理する第１のデータベースに格納されたデータの一部又は全部を前記第２のデータベース管理システムが管理する第２のデータベースにレプリケートするデータベースシステムにおいて、
前記ホスト計算機から発行された前記クエリを受け付け、受け付けた前記クエリが更新系及び参照系のいずれのクエリであるかを判定する判定部と、
前記判定部の判定結果に基づいて、当該クエリが更新系のクエリである場合には、当該クエリを前記第１のデータベース管理システムに振り分け、当該クエリが参照系のクエリである場合には、当該クエリを前記第２のデータベース管理システムに振り分ける振分け部と
を備え、
前記振分け部は、
前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象であり、かつ当該レプリケートが未完了の場合には、当該クエリを前記第１のデータベース管理システムで実行するときに要する第１の時間と、当該レプリケートを完了した後に前記第２のデータベース管理システムで実行するときに要する第２の時間とをそれぞれ予測し、
前記第２の時間よりも前記第１の時間の方が短いときには、当該クエリを前記第１のデータベース管理システムに振り分ける
ことを特徴とするデータベースシステム。
【請求項２】
前記振分け部は、
前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象でない場合、又は、当該データの前記レプリケートが完了していない場合には、当該クエリを前記第１のデータベース管理システムに振り分ける
ことを特徴とする請求項１に記載のデータベースシステム。
【請求項３】
前記振分け部は、
更新系のクエリの実行中に、更新対象のデータを参照対象とする参照系のクエリを前記判定部が受け付けた場合には、当該更新系のクエリが完了した後に、前記参照系のクエリの振分け先を判断する
ことを特徴とする請求項２に記載のデータベースシステム。
【請求項４】
前記第１のデータベース管理システムが第１のサーバ装置に搭載され、
前記第２のデータベース管理システムが第２のサーバ装置に搭載され、
前記判定部及び前記振分け部が、前記第１のサーバ装置、第２のサーバ装置及び前記ホスト計算機のいずれか１つに搭載された
ことを特徴とする請求項１に記載のデータベースシステム。
【請求項５】
ホスト計算機から発行される更新系のクエリに対する処理能力が強化された第１のデータベース管理システムと、前記ホスト計算機から発行される参照系のクエリに対する処理能力が強化された第２のデータベース管理システムとを有し、前記第１のデータベース管理システムが管理する第１のデータベースに格納されたデータの一部又は全部を前記第２のデータベース管理システムが管理する第２のデータベースにレプリケートするデータベースシステムにおいて実行されるクエリ実行方法であって、
前記ホスト計算機から発行された前記クエリを受け付け、受け付けた前記クエリが更新系及び参照系のいずれのクエリであるかを判定する第１のステップと、
判定結果に基づいて、当該クエリが更新系のクエリである場合には、当該クエリを前記第１のデータベース管理システムに振り分け、当該クエリが参照系のクエリである場合には、当該クエリを前記第２のデータベース管理システムに振り分ける第２のステップと、
当該クエリを振り分け先の前記第１又は第２のデータベース管理システムで実行する第３のステップと
を備え、
前記第２のステップでは、
前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象であり、かつ当該レプリケートが未完了の場合には、当該クエリを前記第１のデータベース管理システムで実行するときに要する第１の時間と、当該レプリケートを完了した後に前記第２のデータベース管理システムで実行するときに要する第２の時間とをそれぞれ予測し、
前記第２の時間よりも前記第１の時間の方が短いときには、当該クエリを前記第１のデータベース管理システムに振り分ける
ことを特徴とするクエリ実行方法。
【請求項６】
前記第２のステップでは、
前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象でない場合、又は、当該データの前記レプリケートが完了していない場合には、当該クエリを前記第１のデータベース管理システムに振り分ける
ことを特徴とする請求項５に記載のクエリ実行方法。
【請求項７】
前記第２のステップでは、
更新系のクエリの実行中に、更新対象のデータを参照対象とする参照系のクエリを前記判定部が受け付けた場合には、当該更新系のクエリが完了した後に、前記参照系のクエリの振分け先を判断する
ことを特徴とする請求項６に記載のクエリ実行方法。
【請求項８】
前記第１のデータベース管理システムが第１のサーバ装置に搭載され、
前記第２のデータベース管理システムが第２のサーバ装置に搭載され、
前記第１及び第２のステップの処理を、前記第１のサーバ装置、第２のサーバ装置及び前記ホスト計算機のいずれか１つで実行する
ことを特徴とする請求項５に記載のクエリ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースシステム及びクエリ実行方法に関し、例えば、特性が異なる複数のデータベース管理システムを備えるデータベースシステムに適用して好適なものである。
【背景技術】
【０００２】
近年、データベースを基盤とする多くのアプリケーションが存在し、データベースに格納されるデータは年々増加の傾向を辿っている。従来、このようなデータベースを管理するソフトウェアとして、データベース管理システム（以下、ＤＢＭＳ（Database Management System）と呼ぶ）があり、さらにＤＢＭＳとして用途に応じて基幹系及び情報系の２つのＤＢＭＳが存在する。【０００３】
基幹系のＤＢＭＳ（以下、これを基幹系ＤＢＭＳと呼ぶ）は、銀行業務等のオンライン業務の処理能力を強化したＤＢＭＳであり、データベースに対するデータの書込みや、データベースから必要なデータの抽出（検索）を行うことができる。また情報系のＤＢＭＳ（以下、これを情報系ＤＢＭＳと呼ぶ）は、データベースの大量のデータから必要なデータを抽出する処理能力を強化したＤＢＭＳであり、データベースから必要なデータの抽出（検索）のみを行うことができる。【０００４】
基幹系ＤＢＭＳによりデータベース上での検索を行うと、その基幹系ＤＢＭＳが行っている基幹系業務に影響を与える場合がある。特に、基幹系ＤＢＭＳの検索性能が高い場合、計算機リソースを大量に消費するため、基幹系業務に大きく影響を与える結果となる。【０００５】
そこで、従来、基幹系ＤＢＭＳ及び情報系ＤＢＭＳを異なるシステムとして別個に構築し、基幹系ＤＢＭＳが管理するデータベースのデータを情報系ＤＢＭＳが管理するデータベースにレプリケート（複写）し、データの検索を情報系ＤＢＭＳで行う技術が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２００８／００２７９８号明細書
【特許文献２】特開２０１１−１３３９２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、特許文献１に開示された技術では、基幹系ＤＢＭＳ及び情報系ＤＢＭＳの２つのＤＢＭＳに対してどちらのＤＢＭＳでクエリを実行するかをアプリケーションが判定する必要がある。特に、２つのＤＢＭＳが１つのＳＱＬインタフェースを共有する場合、どちらのＤＢＭＳでクエリを実行するかをデータベースの特性に合わせてアプリケーションが判断しなければならず、その分アプリケーションの負荷が多くなる問題があった。【０００８】
また、既存のデータベースシステムに特許文献１に開示された技術を適用するためには、かかる判定を行い得るようにアプリケーションを改変する必要もあった。【０００９】
このような問題点を解決するための１つの方法として、例えば特許文献２には、互いに異なる処理システム間における仕様の相違を利用側で意識することなく、これら処理システムの併用を可能とするデータベース技術が開示されている。【００１０】
ところが、この特許文献２に開示されたデータベース技術によると、リアルタイム処理を実行するリアルタイム処理手段と、分散データベース処理を行う分散データベース処理手段とを完全に分離しているため、情報系データベースエンジンで参照系クエリを実行できない場合に基幹系データベースエンジンにクエリを振り分けることができない問題がある。【００１１】
本発明は以上の点を考慮してなされたもので、上記課題を一挙に解決し、迅速にクエリを実行し得る応答性能の高いデータベースシステム及びクエリ実行方法を提案しようとするものである。
【課題を解決するための手段】
【００１２】
かかる課題を解決するため本発明においては、ホスト計算機から発行される更新系のクエリに対する処理能力が強化された第１のデータベース管理システムと、前記ホスト計算機から発行される参照系のクエリに対する処理能力が強化された第２のデータベース管理システムとを有し、前記第１のデータベース管理システムが管理する第１のデータベースに格納されたデータの一部又は全部を前記第２のデータベース管理システムが管理する第２のデータベースにレプリケートするデータベースシステムにおいて、前記ホスト計算機から発行された前記クエリを受け付け、受け付けた前記クエリが更新系及び参照系のいずれのクエリであるかを判定する判定部と、前記判定部の判定結果に基づいて、当該クエリが更新系のクエリである場合には、当該クエリを前記第１のデータベース管理システムに振り分け、当該クエリが参照系のクエリである場合には、当該クエリを前記第２のデータベース管理システムに振り分ける振分け部とを設け、前記振分け部が、前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象であり、かつ当該レプリケートが未完了の場合には、当該クエリを前記第１のデータベース管理システムで実行するときに要する第１の時間と、当該レプリケートを完了した後に前記第２のデータベース管理システムで実行するときに要する第２の時間とをそれぞれ予測し、前記第２の時間よりも前記第１の時間の方が短いときには、当該クエリを前記第１のデータベース管理システムに振り分けるようにした。【００１３】
また本発明においては、ホスト計算機から発行される更新系のクエリに対する処理能力が強化された第１のデータベース管理システムと、前記ホスト計算機から発行される参照系のクエリに対する処理能力が強化された第２のデータベース管理システムとを有し、前記第１のデータベース管理システムが管理する第１のデータベースに格納されたデータの一部又は全部を前記第２のデータベース管理システムが管理する第２のデータベースにレプリケートするデータベースシステムにおいて実行されるクエリ実行方法であって、前記ホスト計算機から発行された前記クエリを受け付け、受け付けた前記クエリが更新系及び参照系のいずれのクエリであるかを判定する第１のステップと、判定結果に基づいて、当該クエリが更新系のクエリである場合には、当該クエリを前記第１のデータベース管理システムに振り分け、当該クエリが参照系のクエリである場合には、当該クエリを前記第２のデータベース管理システムに振り分ける第２のステップと、当該クエリを振り分け先の前記第１又は第２のデータベース管理システムで実行する第３のステップとを設け、前記第２のステップでは、前記クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが前記レプリケートの対象であり、かつ当該レプリケートが未完了の場合には、当該クエリを前記第１のデータベース管理システムで実行するときに要する第１の時間と、当該レプリケートを完了した後に前記第２のデータベース管理システムで実行するときに要する第２の時間とをそれぞれ予測し、前記第２の時間よりも前記第１の時間の方が短いときには、当該クエリを前記第１のデータベース管理システムに振り分けるようにした。【００１４】
本データベースシステム及びクエリ実行方法によれば、ホスト計算機のアプリケーションの改変が必要なく、また第１及び第２のデータベース管理システムのうちのより実行時間が短いデータベース管理システムにクエリを実行させることができる。
【発明の効果】
【００１５】
本発明によれば、迅速にクエリを実行し得る応答性能の高いデータベースシステム及びクエリ実行方法を実現できる。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態によるデータベースシステムの全体構成を示すブロック図である。
【図２】データベース管理情報の構成を示す概念図である。
【図３】クエリ管理テーブルの構成を示す概念図である。
【図４】レプリ管理テーブルの構成を示す概念図である。
【図５】レプリ実行テーブルの構成を示す概念図である。
【図６】データベース統計情報の構成を示す概念図である。
【図７】Ｉ／Ｏ実行時間テーブルの構成を示す概念図である。
【図８】データ分布テーブルの構成を示す概念図である。
【図９】レプリ設定処理の処理手順を示すフローチャートである。
【図１０】レプリ実行処理の処理手順を示すフローチャートである。
【図１１】クエリ実行処理の処理手順を示すフローチャートである。
【図１２】更新系クエリ処理の処理手順を示すフローチャートである。
【図１３】参照系クエリ処理の処理手順を示すフローチャートである。
【図１４】参照系クエリ実行処理の処理手順を示すフローチャートである。
【図１５】更新系クエリ実行処理の処理手順を示すフローチャートである。
【図１６】他の実施の形態を示すブロック図である。
【図１７】他の実施の形態を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下図面について、本発明の一実施の形態を詳述する。
【００１８】
（１）本実施の形態による情報処理ステムの構成
図１において、１は全体として本実施の形態によるデータベースシステムを示す。このデータベースシステム１は、２台以上のサーバ装置２Ａ，２Ｂを備えて構成され、これらのサーバ装置２Ａ，２Ｂがバス３を介して１又は複数のホスト計算機４Ａ，４Ｂと接続されると共に、ネットワーク５を介して２台以上のストレージ装置６Ａ，６Ｂと接続されている。
【００１９】
なお、以下においては、理解の容易化のため、ホスト計算機４、サーバ装置２及びストレージ装置６がいずれも２台ずつである場合について説明する。また以下においては、特に区別する必要がない場合には、符号の添え字「Ａ」及び「Ｂ」を省略して説明する。
【００２０】
サーバ装置２は、ＣＰＵ（Central Processing Unit）１０、メモリ１１、第１及び第２のインタフェース１２，１３並びに入出力装置１４を備えて構成される。ＣＰＵ１０は、サーバ装置２全体の動作制御を司るプロセッサである。またメモリ１１は、例えば半導体メモリから構成され、ＣＰＵのワークメモリとして利用される。後述するコマンド受付け部１５もこのメモリ１１に格納されて保持される。
【００２１】
第１のインタフェース１２は、サーバ装置２がバス３を介してホスト計算機４と通信する際のプロトコルを制御する機能を有するハードウェアであり、第２のインタフェース１３は、サーバ装置２がネットワーク５を介してストレージ装置６と通信する際のプロトコルを制御する機能を有するハードウェアである。
【００２２】
また入出力装置１４は、例えばキーボード、スイッチ、ポインティングデバイス及び又はマイクロフォン等の情報入力装置（図示せず）と、例えばモニタディスプレイ及び又はスピーカ等の情報出力装置（図示せず）とから構成される。情報入力装置は、ユーザが各種操作を行うために利用され、情報出力装置は、サーバ装置２が各種情報を表示するために利用される。
【００２３】
ホスト計算機４は、ＣＰＵ２０、メモリ２１、インタフェース２２及び入出力装置２３を備えて構成される。ＣＰＵ２０、メモリ２１、インタフェース２２及び入出力装置２３の機能及び構成は、サーバ装置２の対応部位（ＣＰＵ１０、メモリ１１、第１のインタフェース１２又は入出力装置１４）と同様であるため、ここでの説明は省略する。なおホスト計算機４のメモリ２１には、アプリケーションプログラム（以下、単にアプリケーションと呼ぶ）２４が格納される。
【００２４】
ストレージ装置６は、１又は複数の記憶デバイスから形成される記憶部３０と、記憶部３０に対するデータの読書きを制御するコントローラ３１とから構成される。かかる記憶デバイスとしては、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスクや、ＳＡＴＡ（Serial AT Attachment）ディスクや光ディスク等の安価なディスクなどが適用される。
【００２５】
コントローラ３１は、ＣＰＵ、メモリ及びインタフェース等の情報処理資源を備えて構成される。コントローラ３１は、サーバ装置２からのライト要求に応じて、記憶部３０にデータを書き込み、サーバ装置２からのリード要求に応じて、記憶部３０から対応するデータを読み出して当該サーバ装置２に送信する。
【００２６】
以上の構成を有する本データベースシステム１では、２つのサーバ装置２のうちの一方のサーバ装置（以下、これを基幹系サーバ装置と呼ぶ）２Ａに更新系のクエリに対する処理能力が強化された基幹系ＤＢＭＳ１６Ａが実装され、他方のサーバ装置（以下、これを情報系サーバ装置と呼ぶ）２Ｂに参照系のクエリに対する処理能力が強化された情報系ＤＢＭＳ１６Ｂが実装されている。ただし、基幹系ＤＢＭＳ１６Ａは、情報系ＤＢＭＳ１６Ｂよりも応答速度が遅いものの、参照系のクエリを処理することができる。
【００２７】
また、２つのストレージ装置６のうちの一方のストレージ装置（以下、これを基幹系ストレージ装置と呼ぶ）６Ａには、基幹系ＤＢＭＳ１６Ａがデータを読み書きするデータベース（以下、これを基幹系データベースと呼ぶ）３２Ａが格納されると共に、他方のストレージ装置（以下、これを情報系ストレージ装置と呼ぶ）６Ｂには、情報系ＤＢＭＳ１６Ｂがデータを検索する際に利用するデータベース（以下、これを情報系データベースと呼ぶ）３２Ｂが格納されている。
【００２８】
そして基幹系ＤＢＭＳ１６Ａは、ホスト計算機４からの要求に応じて基幹系データベース３２Ａ内の予め定められたスキーマにデータを書き込んだ場合、そのデータを書込み要求と共にバス３を経由して情報系サーバ装置２Ｂの情報系ＤＢＭＳ１６Ｂに転送する。また情報系ＤＢＭＳ１６Ｂは、このデータ及び書込み要求を受信すると、当該データを情報系データベース３２Ｂに書き込む。
【００２９】
このようにして本データベースシステム１においては、基幹系データベース３２Ａ内の予め定められたスキーマに対するデータの書込みが行われたときに、そのデータの基幹系データベース３２Ａ及び情報系データベース３２Ｂ間でのレプリケート（複製）が行われる。
【００３０】
（２）本実施の形態によるクエリ実行方式
（２−１）本クエリ実行方式の概略
次に、本データベースシステム１に採用されたクエリ実行方式について説明する。本データベースシステム１では、各ホスト計算機４からのクエリがすべて情報系サーバ装置２Ｂに与えられる。そして情報系サーバ装置２Ｂは、以下のルール（以下、これをクエリ実行ルールと呼ぶ）に従ってクエリを基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂにおいて実行できるように、与えられたクエリをこれら基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂに振り分ける。
【００３１】
（Ａ）更新系のクエリについては、基幹系ＤＢＭＳ１６Ａで実行する。
（Ｂ）参照系のクエリについては、原則として情報系ＤＢＭＳ１６Ｂで実行する。
（Ｃ）参照系のクエリであっても情報系ＤＢＭＳ１６Ｂで処理できない場合には、当該クエリを基幹系ＤＢＭＳ１６Ａで実行する。
【００３２】
ここで、（Ｃ）の「参照系のクエリを情報系ＤＢＭＳ１６Ｂが処理できない場合」とは、
（Ｃ−１）当該クエリにおいて指定された参照対象のデータがレプリケート対象でない場合
（Ｃ−２）当該データの情報系データベース３２Ｂへのレプリケートが完了していない場合
が該当する。ただし、（Ｃ−２）のケースの場合であっても、レプリケートの完了後に情報系ＤＢＭＳ１６Ｂでクエリを実行した方が、基幹系ＤＢＭＳ１６Ａで当該クエリを実行するよりも早く処理を完了できる場合には、そのクエリを情報系ＤＢＭＳ１６Ｂで実行する。
【００３３】
また複数のクエリを受け付けた場合、
（Ｄ）受け付けたクエリがすべて更新系のクエリであるときには、すべてのクエリを基幹系ＤＢＭＳ１６Ａで実行する。
（Ｅ）受け付けたクエリがすべて参照系のクエリであるときには、上述の（Ｃ）の場合を除いて情報系ＤＢＭＳ１６Ｂで実行する。
（Ｆ）参照系のクエリの実行中に更新系のクエリを受け付けた場合には、更新系クエリを基幹系ＤＢＭＳ１６Ａで実行する。
（Ｇ）更新系のクエリの実行中に、更新対象のデータを参照対象とする参照系のクエリを受け付けた場合、又は、これらを同時に受け付けた場合には、更新系のクエリを基幹系ＤＢＭＳ１６Ａで実行し、その完了後に上記（Ａ）〜（Ｃ）のルールに従って当該参照系のクエリを実行すべきＤＢＭＳ１６を判断する。
【００３４】
なお、
（Ｈ）情報系ＤＢＭＳ１６Ｂが基幹系ＤＢＭＳ１６Ａの更新履歴情報（ログ情報）を保持しており、かつ、かかる更新履歴情報を参照するクエリについては、情報系ＤＢＭＳ１６Ｂのみが実行可能であるため、レプリケート完了後に情報系ＤＢＭＳ１６Ｂがそのクエリを実行する。
【００３５】
以上のような本実施の形態によるクエリ実行方法を実現するための手段として、情報系サーバ装置２Ｂのメモリ１１Ｂには、図１に示すように、コマンド受付けプログラム４０、データベース管理情報４１及びデータベース統計情報４２から構成されるコマンド受付け部１５が格納されている。
【００３６】
コマンド受付けプログラム４０は、ホスト計算機４からのクエリを受け付け、受け付けたクエリを、上述したクエリ実行ルールに従って基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂで実行できるように、対応する基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂに振り分ける機能を有するプログラムである。
【００３７】
またデータベース管理情報４１は、基幹系ストレージ装置６Ａに保持された基幹系データベース３２Ａと、情報系ストレージ装置６Ｂに保持された情報系データベース３２Ｂとを管理するために利用される各種情報である。このデータベース管理情報４１は、図２に示すように、クエリ管理テーブル５０、レプリ管理テーブル５１及びレプリ実行テーブル５２から構成される。
【００３８】
クエリ管理テーブル５０は、基幹系サーバ装置２Ａが受信したクエリを管理するために利用されるテーブルであり、図３に示すように、クエリＩＤ欄５０Ａ、サーバＩＤ欄５０Ｂ、ＤＢＭＳ  ＩＤ欄５０Ｃ、状態欄５０Ｄ及びポインタ欄５０Ｅから構成される。なおクエリ管理テーブル５０において、１つのエントリ（行）は１つのクエリに対応する。
【００３９】
そしてクエリＩＤ欄５０Ａには、ホスト計算機４から与えられた各クエリに対してコマンド受付けプログラム４０が付与したそのクエリに固有の識別子（クエリＩＤ）が格納され、サーバＩＤ欄５０Ｂには、対応するクエリの振分け先であるサーバ装置２（基幹系サーバ装置２Ａ又は情報系サーバ装置２Ｂ）に付与されたそのサーバ装置２に固有の識別子（サーバＩＤ）が格納される。
【００４０】
またＤＢＭＳ  ＩＤ欄５０Ｃには、対応するサーバ装置２に搭載されたＤＢＭＳ１６（基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂ）の識別子（ＤＢＭＳ  ＩＤ）が格納され、状態欄５０Ｄには、対応するＤＢＭＳ１６における対応するクエリの現在の状態が格納される。なおクエリの状態としては、「クエリ受付け」、「実行中」、「実行完了」などがある。さらにポインタ欄５０Ｅには、対応するクエリについて作成されたクエリプランへのポインタが格納される。
【００４１】
レプリ管理テーブル５１は、基幹系データベース３２Ａから情報系データベース３２Ｂへのデータのレプリケートを管理するために利用されるテーブルであり、図４に示すように、レプリ元サーバＩＤ欄５１Ａ、レプリ元ＤＢＭＳ  ＩＤ欄５１Ｂ、レプリ先サーバＩＤ欄５１Ｃ及びレプリ先ＤＢＭＳ  ＩＤ欄５１Ｄを備えて構成される。
【００４２】
そしてレプリ元サーバＩＤ欄５１Ａには、レプリケート元となるサーバ装置２（本実施の形態においては基幹系サーバ装置２Ａ。以下、同様。）のサーバＩＤが格納され、レプリ元ＤＢＭＳ  ＩＤ欄５１Ｂには、当該サーバ装置２に実装されたかかるレプリケート元となるＤＢＭＳ１６（本実施の形態においては基幹系ＤＢＭＳ１６Ａ。以下、同様。）に付与された当該ＤＢＭＳ１６に固有の識別子（レプリ元ＤＢＭＳ  ＩＤ）が格納される。
【００４３】
またレプリ先サーバＩＤ欄５１Ｃには、レプリケート先となるサーバ装置（本実施の形態においては情報系サーバ装置２Ｂ。以下、同様。）のサーバＩＤが格納され、レプリ先ＤＢＭＳ  ＩＤ欄５１Ｄには、当該サーバ装置２に実装されたかかるレプリケート先となるＤＢＭＳ１６（本実施の形態においては情報系ＤＢＭＳ１６Ｂ。以下、同様。）に付与された当該ＤＢＭＳ１６に固有の識別子（レプリ先ＤＢＭＳ  ＩＤ）が格納される。
【００４４】
レプリ実行テーブル５２は、基幹系データベース３２Ａ及び情報系データベース３２Ｂのスキーマを管理するために利用されるテーブルであり、図５に示すように、スキーマＩＤ欄５２Ａ、状態欄５２Ｂ、レプリ元データベースレコード数欄５２Ｃ、レプリ先データベースレコード数欄５２Ｄ、レプリ実行最終レコードＩＤ欄５２Ｅ及び１レコード当りレプリ実行時間欄５２Ｆを備えて構成される。レプリ実行テーブル５２では、１つのエントリ（行）が１つのスキーマに対応する。
【００４５】
そしてスキーマＩＤ欄５２Ａには、各スキーマにそれぞれ付与されたそのスキーマに固有の識別子（スキーマＩＤ）が格納され、状態欄５２Ｂには、対応するスキーマの現在の状態が格納される。なお、スキーマの状態としては、レプリケートが完了したことを表す「レプリ残データ無」と、レプリケートが完了していないことを表す「レプリ残データ有」と、レプリケートの対象外であることを表す「レプリ対象外」となどがある。
【００４６】
またレプリ元データベースレコード数欄５２Ｃには、レプリケート元のデータベース３２（本実施の形態においては基幹系データベース３２Ａ。以下、同様。）における対応するスキーマのレコードの数が格納され、レプリ先データベースレコード数欄５２Ｄには、そのスキーマのレコードのうち、レプリケート先のデータベース３２（本実施の形態においては情報系データベース３２Ｂ。以下、同様。）に複製されたレコードの数が格納される。
【００４７】
さらにレプリ実行最終レコードＩＤ欄５２Ｅには、対応するスキーマのレコードのうちの最後にレプリケートが行われたレコードのＩＤ（レコードＩＤ）が格納され、１レコード当りレプリ実行時間欄５２Ｆには、対応するスキーマのデータをレプリケート元のデータベースからレプリケート先のデータベースにレプリケートする際に要する１レコード当りの時間（１レコード当りレプリ実行時間）が格納される。
【００４８】
一方、データベース統計情報４２は、ストレージ装置６に保持された各データベース３２（基幹系データベース３２Ａ、情報系データベース３２Ｂ）に関する各種統計情報であり、図６に示すように、Ｉ／Ｏ実行時間テーブル５３及びデータ分布テーブル５４から構成される。
【００４９】
Ｉ／Ｏ実行時間テーブル５３は、統計的に得られた基幹系データベース３２Ａ及び情報系データベース３２Ｂに対する１レコード当りの平均的なＩ／Ｏ実行時間（以下、これを平均Ｉ／Ｏ実行時間と呼ぶ）を管理するために利用されるテーブルであり、図７に示すように、サーバＩＤ欄５３Ａ、ＤＢＭＳ  ＩＤ欄５３Ｂ及び平均Ｉ／Ｏ実行時間欄５３Ｃを備えて構成される。Ｉ／Ｏ実行時間テーブル５３では、１つのエントリが１つのデータベース３２（基幹系データベース３２Ａ又は情報系データベース３２Ｂ）に対応する。
【００５０】
そしてＤＢＭＳ  ＩＤ欄５３Ｂには、ＤＢＭＳ１６のＤＢＭＳ  ＩＤが格納され、サーバＩＤ欄５３Ａには、対応するＤＢＭＳ３２が実装されたサーバ装置２（基幹系サーバ装置２Ａ又は情報系サーバ装置２Ｂ）のサーバＩＤが格納される。また平均Ｉ／Ｏ実行時間欄５３Ｃには、対応するＤＢＭＳ１６が対応するデータベース３２へのＩ／Ｏに要した平均時間（平均Ｉ／Ｏ実行時間）が格納される。
【００５１】
またデータ分布テーブル５４は、各データベース３２（基幹系データベース３２Ａ、情報系データベース３２Ｂ）におけるデータの分布状況を管理するために利用されるテーブルであり、図８に示すように、サーバＩＤ欄５４Ａ、ＤＢＭＳ  ＩＤ欄５４Ｂ、スキーマＩＤ欄５４Ｃ、キー値欄５４Ｄ及びパーセンテージ欄５４Ｅを備えて構成される。このデータ分布テーブル５４では、１つのエントリ（行）が１つのキー値（年齢等の検索時にキーとなる値）の１つの区分に対応する。
【００５２】
そしてキー値欄５４Ｄには、１つのキー値の１つの区分の範囲（又は値）が格納され、ＤＢＭＳ  ＩＤ欄５４Ｂには、対応するキー値の区分のデータが格納されたデータベース３２を管理するＤＢＭＳ１６のＤＢＭＳ  ＩＤが格納される。
【００５３】
またサーバＩＤ欄５４Ａには、そのＤＢＭＳ１６が実装されたサーバ装置２（基幹系サーバ装置２Ａ又は情報系サーバ装置２Ｂ）のサーバＩＤが格納され、スキーマＩＤ欄５４Ｃには、対応するキー値の対応する区分のデータが格納されたスキーマのスキーマＩＤが格納される。さらにパーセンテージ欄５４Ｅには、対応するキー値の対応する区分のデータが当該キー値の全データに占める百分率が格納される。
【００５４】
なお、このデータ分布テーブル５４は、検索時に用いられるキーごとに作成される。
【００５５】
（２−２）本クエリ実行方式に関連して実行される各種処理
次に、かかる本実施の形態によるクエリ実行方式に関連して、情報系サーバ装置２Ｂにおいて実行される各種処理の具体的な処理内容について説明する。なお、以下においては、各種処理の処理主体をコマンド受付けプログラム４０（図１）として説明するが、実際上は、コマンド受付けプログラム４０に基づいて情報系サーバ装置２ＢのＣＰＵ１０（図１）がその処理を実行することは言うまでもない。
【００５６】
（２−２−１）レプリ設定処理
図９は、ホスト計算機４のアプリケーション２４（図１）から送信されたレプリケート設定用のコマンド（以下、これをレプリ設定コマンドと呼ぶ）を受信したコマンド受付けプログラム４０により実行されるレプリ設定処理の処理手順を示す。コマンド受付けプログラム４０は、この図９に示す処理手順に従って、レプリ設定コマンドにおいて指定された処理（レプリケート設定の作成又はレプリケート設定の削除）を実行する。
【００５７】
実際上、コマンド受付けプログラム４０は、かかるレプリ設定コマンドを受信するとこのレプリ設定処理を開始し、まず、このとき受信したレプリ設定コマンドを受け付け（ＳＰ１）、受け付けたレプリ設定コマンドが新規のレプリケート設定の作成を指示するコマンドであるか否かを判断する（ＳＰ２）。
【００５８】
そしてコマンド受付けプログラム４０は、この判断で肯定結果を得ると、レプリ設定コマンドにおいてレプリケート設定の作成対象として指定されたスキーマがレプリケート元のデータベース３２（基幹系データベース３２Ａ）に存在するか否かを判断する（ＳＰ３）。コマンド受付けプログラム４０は、この判断で否定結果を得ると、レプリ設定コマンドの送信元のアプリケーション２４にエラー通知を送信した後（ＳＰ４）、このレプリ設定処理を終了する。
【００５９】
これに対してコマンド受付けプログラム４０は、ステップＳＰ３の判断で肯定結果を得ると、レプリ設定コマンドにおいて指定されたスキーマの作成をレプリケート先のＤＢＭＳ１６（情報系ＤＢＭＳ１６Ｂ）に指示する（ＳＰ５）。かくして、レプリケート先のＤＢＭＳ１６は、この指示に従って、指定されたスキーマを自己が管理するデータベース（情報系データベース３２Ｂ）内に作成する。
【００６０】
続いて、コマンド受付けプログラム４０は、そのときレプリケート先のＤＢＭＳ１６に作成を指示したスキーマを新規登録するためにレプリ実行テーブル５２（図５）を更新する（ＳＰ６）。具体的に、コマンド受付けプログラム４０は、レプリ実行テーブル５２の未使用の１行を確保し、その行のスキーマＩＤ欄５２Ａ（図５）に、そのスキーマに付与したスキーマＩＤ格納すると共に、その行の状態欄５２Ｂ（図５）に「レプリ残データ有」を格納する。
【００６１】
またコマンド受付けプログラム４０は、その行のレプリ元データベースレコード数欄５２Ｃ（図５）に、そのスキーマのレコード数を格納すると共に、レプリ先データベースレコード数欄５２Ｄ（図５）に「０」を格納する。さらにコマンド受付けプログラム４０は、その行のレプリ実行最終レコードＩＤ欄５２Ｅ（図５）に、そのスキーマの最初のレコードＩＤを格納し、さらにその行の１レコード当りレプリ実行時間欄５２Ｆ（図５）に、値がないことを表す「−」を格納する。
【００６２】
以上のステップＳＰ５及びステップＳＰ６の処理により、レプリ設定コマンドにおいて指定されたスキーマのデータをレプリケート元のデータベース３２（基幹系データベース３２Ａ）及びレプリケート先のデータベース３２（情報系データベース３２Ｂ）間でレプリケートするための設定が完了する。そしてコマンド受付けプログラム４０は、この後、このレプリ設定処理を終了する。
【００６３】
一方、コマンド受付けプログラム４０は、ステップＳＰ２の判断で否定結果を得ると、かかるレプリ設定コマンドが既存のレプリケート設定の削除を指示するコマンドであるか否かを判断する（ＳＰ７）。そしてコマンド受付けプログラム４０は、この判断で否定結果を得ると、かかるレプリ設定コマンドの送信元のアプリケーション２４（図１）にエラー通知を送信した後（ＳＰ１１）、このレプリ設定処理を終了する。
【００６４】
これに対してコマンド受付けプログラム４０は、ステップＳＰ７の判断で肯定結果を得ると、レプリ設定コマンドにおいてレプリケート設定の削除対象として指定されたスキーマがレプリケート先のデータベース３２（情報系データベース３２Ｂ）に存在するか否かを判断する（ＳＰ８）。そしてコマンド受付けプログラム４０は、この判断で否定結果を得ると、レプリ設定コマンドの送信元のアプリケーション２４にエラー通知を送信した後（ＳＰ１１）、このレプリ設定処理を終了する。
【００６５】
これに対してコマンド受付けプログラム４０は、ステップＳＰ８の判断で肯定結果を得ると、レプリ設定コマンドにおいて指定されたスキーマの削除をレプリケート先のＤＢＭＳ１６（情報系ＤＢＭＳ１６Ｂ）に指示する（ＳＰ９）。かくして、レプリケート先のＤＢＭＳ１６は、この指示に従って、指定されたスキーマを自己が管理するデータベース３２（情報系データベース３２Ｂ）から削除する。
【００６６】
続いて、コマンド受付けプログラム４０は、そのときレプリケート先のＤＢＭＳ１６に削除を指示したスキーマのレプリケート設定を無効とするためにレプリ実行テーブル５２（図５）を更新する（ＳＰ１０）。具体的に、コマンド受付けプログラム４０は、レプリ実行テーブル５２のエントリ（行）のうち、レプリ設定コマンドで指定されたスキーマに対応するエントリの状態欄５２Ｂ（図５）の値を「レプリ対象外」に更新する。
【００６７】
またコマンド受付けプログラム４０は、そのエントリのレプリ先データベースレコード数欄５２Ｄ（図５）に格納された値を「０」に更新し、さらにそのエントリのレプリ実行最終レコードＩＤ欄５２Ｅ（図５）及び１レコード当りレプリ実行時間欄５２Ｆ（図５）に、それぞれ値が存在しないことを表す「−」を格納する。
【００６８】
以上のステップＳＰ９及びステップＳＰ１０の処理により、レプリ設定コマンドにおいて指定されたスキーマのレプリケート元のデータベース３２（基幹系データベース３２Ａ）及びレプリケート先のデータベース３２（情報系データベース３２Ｂ）間におけるレプリケート設定が削除される。そしてコマンド受付けプログラム４０は、この後、このレプリ設定処理を終了する。
【００６９】
（２−２−２）レプリ実行処理
一方、図１０は、コマンド受付けプログラム４０により定期的に実行されるレプリ実行処理の具体的な処理手順を示す。コマンド受付けプログラム４０は、この図１０に示す処理手順に従って、レプリケートが完了していないスキーマのレプリケートを実行する。
【００７０】
実際上、コマンド受付けプログラム４０は、この図１０に示すレプリ実行処理を開始すると、まず、レプリ実行テーブル５２（図５）を参照して、レプリケートが完了していないスキーマ（状態欄５２Ｂに格納された値が「レプリ残データ有」となっているスキーマ）が存在するか否かを判断する（ＳＰ２０）。そしてコマンド受付けプログラム４０は、この判断で否定結果を得ると、このレプリ実行処理を終了する。
【００７１】
これに対してコマンド受付けプログラム４０は、ステップＳＰ２０の判断で肯定結果を得ると、ステップＳＰ２０で検出したレプリケートが完了していないスキーマの中から１つのスキーマを選択し（ＳＰ２１）、選択したスキーマ（以下、これを選択スキーマと呼ぶ）について、データのレプリケートを実行するようレプリケート元のＤＢＭＳ１６（基幹系ＤＢＭＳ１６Ａ）及びレプリケート先のＤＢＭＳ１６（情報系ＤＢＭＳ１６Ｂ）に指示を与える（ＳＰ２２）。
【００７２】
具体的に、コマンド受付けプログラム２０は、レプリ実行テーブル５２のエントリのうちの選択スキーマに対応するエントリのレプリ実行最終レコードＩＤ欄５２ＥにレコードＩＤが格納されたレコードから残りのすべてのレコードのデータをレプリケート元のデータベース３２（基幹系データベース３２Ａ）からレプリケート先のデータベース３２（情報系データベース３２Ｂ）にレプリケートするようレプリケート元及びレプリケート先の各ＤＢＭＳ１６に指示を与える。この結果、かかる選択スキーマにおけるすべてのデータのレプリケートがこれらのＤＢＭＳ１６間で行われる。
【００７３】
続いて、コマンド受付けプログラム４０は、レプリ実行テーブル５２のレコードのうち、選択スキーマに対応するエントリを更新する（ＳＰ２３）。具体的に、コマンド受付けプログラム４０は、かかるエントリの状態欄５２Ｂ（図５）に格納された値を「レプリ残データ無」に変更し、そのエントリのレプリ先データベースレコード数欄５２Ｄ（図５）に格納されている値をレプリ元データベースレコード数欄５２Ｃ（図５）に格納されている値と同じ値に変更する。またコマンド受付けプログラム４０は、そのエントリのレプリ実行最終レコードＩＤ欄５２Ｅ（図５）に格納されている値を、選択スキーマのレコードのうちのステップＳＰ２２の処理で最後にレプリケートを実行したレコードのレコードＩＤに変更し、さらに１レコード当りレプリ実行時間を、ステップＳＰ２２の処理の際に計測した１レコード当りのレプリケート処理の実行時間を加味した値に変更する。
【００７４】
次いで、コマンド受付けプログラム４０は、レプリ実行テーブル５２に登録されたスキーマであって、レプリケートが完了していないすべてのスキーマについてステップＳＰ２２及びステップＳＰ２３の処理を実行し終えたか否かを判断する（ＳＰ２４）。
【００７５】
そしてコマンド受付けプログラム４０は、この判断で否定結果を得るとステップＳＰ２１に戻り、この後、ステップＳＰ２１において選択するスキーマを未処理の他のスキーマに順次切り替えながら、ステップＳＰ２１〜ステップＳＰ２４の処理を繰り返す。
【００７６】
そしてコマンド受付けプログラム４０は、やがてデータのレプリケートが完了していないすべてのスキーマについてレプリケートが完了することによりステップＳＰ２４で肯定結果を得ると、このレプリ実行処理を終了する。
【００７７】
（２−２−３）クエリ実行処理
（２−２−３−１）クエリ実行処理
他方、図１１は、コマンド受付けプログラム４０がホスト計算機４のアプリケーション２４から送信されたクエリを受信した場合に実行するクエリ実行処理の処理手順を示す。コマンド受付けプログラム４０は、この図１１に示す処理手順に従って、受信したクエリを上述のクエリ実行ルールに従って基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂにより実行できるように、当該クエリを対応する基幹系ＤＢＭＳ１６Ａ又は情報系ＤＢＭＳ１６Ｂに振り分ける。
【００７８】
実際上、コマンド受付けプログラム４０は、ホスト計算機４のアプリケーション２４からのクエリを受信すると、この図１１に示すクエリ実行処理を開始し、まず、受信したクエリを受け付ける（ＳＰ３０）。
【００７９】
続いて、コマンド受付けプログラム４０は、受け付けたクエリを解析し、データベース統計情報４２を参照して、当該クエリを基幹系ＤＢＭＳ１６Ａ及び情報系ＤＢＭＳ１６Ｂのそれぞれで実行した場合の実行時間の予測値（以下、これらを第１のクエリ実行予測時間と呼ぶ）をそれぞれ算出すると共に、このクエリを実行するためのクエリプランを作成する（ＳＰ３１）。
【００８０】
なお本実施の形態の場合、コマンド受付けプログラム４０は、ステップＳＰ３１における第１のクエリ実行予測時間を、検索対象又は更新対象のレコード数に、図７について上述したＩ／Ｏ実行時間テーブル５３の平均Ｉ／Ｏ実行時間欄５３Ｃ（図７）に格納された平均Ｉ／Ｏ実行時間欄５３Ｃを乗算することにより算出する。
【００８１】
例えば、受け付けたクエリの内容が図８に示す「T1」というスキーマに対して「C1」というキーが０〜50の範囲という条件で検索するものであった場合、データ分布テーブル５４（図８）を参照して、条件に合致するレコード数のスキーマ全体に対する合計割合を算出し（図８の場合には50％と30％を合わせた80％）、その合計割合にスキーマ全体のレコード数を乗算することにより検索対象のレコード数を算出し（例えば、「T1」というスキーマの全レコード数が10000である場合には8000）、その算出結果にＩ／Ｏ実行時間テーブル５３に格納されたその検索を行うＤＢＭＳ１６の平均Ｉ／Ｏ実行時間を乗算することにより算出する。
【００８２】
続いて、コマンド受付けプログラム４０は、そのクエリをクエリ管理テーブル５０（図３）に新規登録する（ＳＰ３２）。具体的に、コマンド受付けプログラム４０は、そのクエリにクエリＩＤを付与し、当該クエリＩＤをクエリ管理テーブル５０の空の行のクエリ欄５０Ａ（図３）に格納する。またコマンド受付けプログラム４０は、その行の状態欄５０Ｄ（図３）に、当該クエリを未だ実行していないことを表す「クエリ受付け」を格納し、さらにそのエントリのポインタ欄５０Ｅに、ステップＳＰ３１で作成したクリエプランへのポインタを格納する。
【００８３】
次いで、コマンド受付けプログラム４０は、かかるクエリが参照系のクエリであるか否かを判断する（ＳＰ３３）。そしてコマンド受付けプログラム４０は、この判断で否定結果を得ると、このクエリを基幹系ＤＢＭＳ１６Ａに実行させる更新系クエリ処理を実行し（ＳＰ３４）、この後、ステップＳＰ３２でクエリ管理テーブル５０に追加したエントリの状態欄５０Ｄ（図３）に格納された値をそのクエリの実行が完了したことを表す「完了」に変更するようにクエリ管理テーブル５０を更新した後（ＳＰ３６）、このクエリ実行処理を終了する。
【００８４】
これに対してコマンド受付けプログラム４０は、ステップＳＰ３３の判断で肯定結果を得ると、このクエリを情報系ＤＢＭＳ１６Ｂに実行させる参照系クエリ処理を実行し（ＳＰ３５）、この後、ステップＳＰ３２でクエリ管理テーブル５０に追加したエントリの状態欄５０Ｄ（図３）に格納された値をそのクエリの実行が完了したことを表す「完了」に変更するようにクエリ管理テーブル５０を更新した後（ＳＰ３６）、このクエリ実行処理を終了する。
【００８５】
（２−２−３−２）更新系クエリ処理
図１２は、図１１について上述したクエリ実行処理のステップＳＰ３４でコマンド受付けプログラム４０により実行される更新系クエリ処理の具体的な処理手順を示す。
【００８６】
コマンド受付けプログラム４０は、クエリ実行処理のステップＳＰ３４に進むと、この図１２に示す更新系クエリ処理を開始し、まず、クエリ実行処理（図１１）のステップＳＰ３１で作成したクエリプランを基幹系ＤＢＭＳ１６Ａに転送する（ＳＰ４０）。これにより、このクエリが基幹系ＤＢＭＳ１６Ａにより実行される。なお、基幹系ＤＢＭＳ１６Ａは、このクエリの実行が完了すると、その旨の通知（以下、これをクエリ実行完了通知と呼ぶ）を当該クエリの実行結果（以下、これをクエリ実行結果と呼ぶ）と共にバス３（図１）を介してコマンド受付けプログラム４０に送信する。
【００８７】
続いて、コマンド受付けプログラム４０は、クエリ管理テーブル５０（図３）を更新する（ＳＰ４１）。具体的に、コマンド受付けプログラム４０は、クエリ管理テーブル５０におけるクエリ実行処理のステップＳＰ３２で追加したエントリのサーバＩＤ欄５０Ｂ（図３）に基幹系サーバ装置２ＡのサーバＩＤを格納し、当該エントリのＤＢＭＳ  ＩＤ欄５０Ｃ（図３）に基幹系ＤＢＭＳ１６ＡのＤＢＭＳ＿ＩＤを格納する。また情報系ＤＢＭＳ１６Ｂは、かかるエントリの状態欄５０Ｄ（図３）に格納された値を、現在、そのクエリが実行中であることを表す「実行中」に変更する。
【００８８】
次いで、コマンド受付けプログラム４０は、上述のクエリ実行完了通知及びクエリ実行結果が基幹系ＤＢＭＳ１６Ａから与えられるのを待ち受け（ＳＰ４２）、やがてこれらクエリ実行完了通知及びクエリ実行結果が基幹系ＤＢＭＳ１６Ａから与えられると、クエリ実行結果をかかるクエリの送信元のアプリケーション２４に送信する（ＳＰ４３）。
【００８９】
この後、コマンド受付けプログラム４０は、レプリ実行テーブル５２（図５）を参照して、そのクエリにおいて更新対象となっていたデータがレプリケート対象のデータであるか否かを判断する（ＳＰ４４）。そしてコマンド受付けプログラム４０は、この判断で否定結果を得るとこの更新系クエリ処理を終了してクエリ実行処理（図１１）に戻る。
【００９０】
これに対してコマンド受付けプログラム４０は、ステップＳＰ４４の判断で肯定結果を得ると、レプリ実行テーブル５２（図５）を更新する（ＳＰ４５）。具体的に、コマンド受付けプログラム４０は、レプリ実行テーブル５２のエントリ（行）のうち、かかるクエリに対応するエントリの状態欄５２Ｂ（図５）に格納されている値を「レプリ残データ無」から「レプリ残データ有」に変更すると共に、そのエントリのレプリ元データベースレコード数欄５２Ｃ（図５）の値をそのとき追加されたレコード数を加算した値に変更する。そしてコマンド受付けプログラム４０は、この後、この更新系クエリ処理を終了してクエリ実行処理に戻る。
【００９１】
（２−２−３−３）参照系クエリ処理
一方、図１３は、図１１について上述したクエリ実行処理のステップＳＰ３５においてコマンド受付けプログラム４０により実行される参照系クエリ処理の具体的な処理手順を示す。
【００９２】
コマンド受付けプログラム４０は、クエリ実行処理のステップＳＰ３５に進むと、この図１３に示す参照系クエリ処理を開始し、まず、クエリ管理テーブル５０（図３）及び対応するクエリプランを参照して、そのとき受け付けたクエリにおいて参照対象となっているデータを対象とする更新系のクエリが実行中であるか否かを判断する（ＳＰ５０）。
【００９３】
コマンド受付けプログラム４０は、この判断で否定結果を得るとステップＳＰ５２に進み、これに対して肯定結果を得ると、その更新系のクエリの処理が完了するのを待ち受ける（ＳＰ５１）。そしてコマンド受付けプログラム４０は、やがてその更新系のクエリの処理が完了すると、そのとき受け付けたクエリで参照対象とすべきデータを含むスキーマの更新履歴情報が情報系ＤＢＭＳ１６Ｂにのみが存在するか否かを判断する（ＳＰ５２）。
【００９４】
この判断で肯定結果を得ることは、情報系ＤＢＭＳ１６Ｂのみがそのクエリを実行できることを意味する。かくして、このときコマンド受付けプログラム４０は、情報系ＤＢＭＳ１６Ｂにそのクエリを実行させ、その実行結果をそのクエリの送信元のアプリケーション２４に送信する一連の処理（以下、これを参照系クエリ実行処理と呼ぶ）を実行する（ＳＰ５３）。そしてコマンド受付けプログラム４０は、この後、この参照系クエリ処理を終了してクエリ実行処理（図１１）に戻る。
【００９５】
これに対してコマンド受付けプログラム４０は、ステップＳＰ５２の判断で否定結果を得ると、レプリ実行テーブル５２（図５）を参照して、そのクエリで参照対象とすべきスキーマがレプリケートの対象外であるか否かを判断する（ＳＰ５４）。
【００９６】
この判断で肯定結果を得ることは、そのクエリで参照対象とすべきスキーマ（データ）が基幹系データベース３２Ａにのみ存在し、情報系データベース３２Ｂには存在しないことを意味する。かくして、このときコマンド受付けプログラム４０は、基幹系ＤＢＭＳ１６Ａにそのクエリを転送することによりこれを実行させ、その実行結果をそのクエリの送信元のアプリケーション２４に送信する一連の処理（以下、これを基幹系クエリ実行処理と呼ぶ）を実行する（ＳＰ５５）。そしてコマンド受付けプログラム４０は、この後、この参照系クエリ処理を終了してクエリ実行処理に戻る。
【００９７】
これに対してコマンド受付けプログラム４０は、ステップＳＰ５４の判断で否定結果を得ると、レプリ実行テーブル５２を参照して、そのクエリで参照対象とすべきスキーマの状態が「レプリ残データ無」であるか否かを判断する（ＳＰ５６）。
【００９８】
この判断で肯定結果を得ることは、そのクエリで参照対象とすべきスキーマのレプリケートが完了していることを意味する。かくして、このときコマンド受付けプログラム４０は、ステップＳＰ５３について上述した参照系クエリ実行処理を実行し（ＳＰ５７）、この後、この参照系クエリ処理を終了してクエリ実行処理に戻る。
【００９９】
これに対してコマンド受付けプログラム４０は、ステップＳＰ５６の判断で否定結果を得ると、レプリ実行テーブル５２（図５）を参照して、そのクエリで参照対象とすべきスキーマについて、レプリケートが完了していない残りのレコードをレプリケートしたときに要するレプリ実行予測時間（以下、これを第２のレプリ実行予測時間と呼ぶ）を算出する（ＳＰ５８）。
【０１００】
具体的に、コマンド受付けプログラム４０は、レプリ実行テーブル５２の上記スキーマに対応するエントリのレプリ元データベースレコード数欄５２Ｃ（図５）に格納されている値から当該エントリのレプリ先データベースレコード数欄５２Ｄ（図５）に格納されている値を減算し、その減算結果に当該エントリの１レコード当りレプリ実行時間欄５２Ｆ（図５）に格納された値を乗算することにより、かかる第２のレプリ実行予測時間を算出する。
【０１０１】
続いて、コマンド受付けプログラム４０は、クエリ実行処理（図１１）のステップＳＰ３１で情報系ＤＢＭＳ１６Ｂについて算出した第１のクエリ実行予測時間と、ステップＳＰ５８で算出した第２のレプリ実行予測時間との合計値よりも、クエリ実行処理のステップＳＰ３１で基幹系ＤＢＭＳについて算出した第１のクエリ実行予測時間の方が短いか否かを判断する（ＳＰ５９）。
【０１０２】
この判断で肯定結果を得ることは、かかるクエリを基幹系ＤＢＭＳ１６Ａで実行した方が速いことを意味する。かくして、このときコマンド受付けプログラム４０は、ステップＳＰ５５について上述した更新系クエリ実行処理を実行することにより、そのクエリを基幹系ＤＢＭＳ１６Ａに実行させると共にその実行結果を当該クエリの送信元のアプリケーション２４に送信し、この後、この参照系クエリ処理を終了してクエリ実行処理に戻る（ＳＰ６０）。
【０１０３】
これに対して、ステップＳＰ５９の判断で否定結果を得ることは、かかるクエリを基幹系ＤＢＭＳ１６Ａで実行するよりも、対応するデータを基幹系データベース３２Ａから情報系データベース３２Ｂにレプリケートした後に情報系ＤＢＭＳ１６Ｂで実行した方が速いことを意味する。かくして、このときコマンド受付けプログラム４０は、そのクエリの参照対象となっているスキーマのデータのレプリケートを実行するよう基幹系ＤＢＭＳ１６Ａ及び情報系ＤＢＭＳ１６Ｂに指示を与え（ＳＰ６１）、その後、図１０のステップＳＰ２３と同様にしてレプリ実行テーブル５２（図５）を更新する（ＳＰ６２）。
【０１０４】
この後、コマンド受付けプログラム４０は、クエリ実行処理（図１１）のステップＳＰ３１で作成したクエリプランをレプリケート先のＤＢＭＳ１６（情報系ＤＢＭＳ１６Ｂ）に与えることにより、当該クエリプランに従ってクエリ実行処理のステップＳＰ３０で受け付けたクエリをレプリケート先のＤＢＭＳ１６に実行させ（ＳＰ６３）、その実行結果を当該クエリの送信元のアプリケーション２４に送信した後（ＳＰ６４）、この参照系クエリ処理を終了する。
【０１０５】
なお、上述の参照系クエリ処理（図１３）のステップＳＰ５３及びステップＳＰ５７においてコマンド受付けプログラム４０により実行される参照系クエリ実行処理の具体的な処理内容を図１４に示す。
【０１０６】
コマンド受付けプログラム４０は、参照系クエリ処理のステップＳＰ５３及びステップＳＰ５７に進むと、この図１４に示す参照系クエリ実行処理を開始し、まず、図１１について上述したクエリ実行処理のステップＳＰ３１で作成したクエリプランを情報系ＤＢＭＳ１６Ｂに与える（ＳＰ７０）。かくして情報系ＤＢＭＳ１６Ｂは、与えられたクエリを実行し、その実行結果をコマンド受付けプログラム４０に通知する。
【０１０７】
続いて、コマンド受付けプログラム４０は、クエリ管理テーブル５０（図３）を更新する（ＳＰ７１）。具体的に、コマンド受付けプログラム４０は、クエリ管理テーブル５０のエントリのうち、そのとき情報系ＤＢＭＳ１６Ｂに与えたクエリに対応するエントリの状態欄５０Ｄ（図３）に格納された値を「実行中」に変更する。
【０１０８】
そしてコマンド受付けプログラム４０は、やがて情報系ＤＢＭＳ１６Ｂから上述のようにそのクエリの実行結果が与えられると、その実行結果を当該クエリの送信元のアプリケーション２４に送信し（ＳＰ７２）、この後、この参照系クエリ実行処理を終了して参照系クエリ処理（図１３）に戻る。
【０１０９】
一方、上述の参照系クエリ処理のステップＳＰ５５及びステップＳＰ６０においてコマンド受付けプログラム６０により実行される更新系クエリ実行処理の具体的な処理内容を図に示す。
【０１１０】
コマンド受付けプログラム４０は、参照系クエリ処理のステップＳＰ５５及びステップＳＰ６０に進むと、この図１５に示す更新系クエリ実行処理を開始し、まず、図１１について上述したクエリ実行処理のステップＳＰ３１で作成したクエリプランをバス３（図１）を介して基幹系ＤＢＭＳ１６Ａに送信する（ＳＰ８０）。かくして基幹系ＤＢＭＳ１６Ａは、与えられたクエリを実行し、その実行結果をバス３を介してコマンド受付けプログラム４０に送信する。
【０１１１】
続いて、コマンド受付けプログラム４０は、クエリ管理テーブル５０（図３）を更新する（ＳＰ８１）。具体的に、コマンド受付けプログラム４０は、クエリ管理テーブル５０のエントリのうち、そのとき基幹系ＤＢＭＳ１６Ａに与えたクエリに対応するエントリの状態欄５０Ｄ（図３）に格納された値を「実行中」に変更する。
【０１１２】
そしてコマンド受付けプログラム４０は、やがて基幹系ＤＢＭＳ１６Ａから上述のようにそのクエリの実行結果が与えられると、その実行結果をそのクエリの送信元のアプリケーション２４に送信し（ＳＰ８２）、この後、この参照系クエリ実行処理を終了して参照系クエリ処理（図１３）に戻る。
【０１１３】
（３）本実施の形態の効果
以上のように本実施の形態によるデータベースシステム１では、各ホスト計算機４のアプリケーション２４から発行されたクエリを情報系サーバ装置２Ｂに実装されたコマンド受付け部１５において受け付け、当該クエリが更新系及び参照系のいずれであるかをコマンド受付け部１５において判定し、更新系である場合には基幹系ＤＢＭＳ１６Ａに振り分け、参照系である場合には情報系ＤＢＭＳ１６Ｂに振り分ける。
【０１１４】
この際、コマンド受付け部１５は、受け付けたクエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが基幹系データベース３２Ａ及び情報系データベース３２Ｂ間で行われるレプリケートの対象であり、かつ当該レプリケートが未完了の場合には、当該クエリを基幹系ＤＢＭＳ１６Ａで実行するときに要する時間と、当該レプリケートを完了した後に情報系ＤＢＭＳ１６Ｂで実行するときに要する時間とをそれぞれ予測し、後者の時間よりも前者の時間の方が短いときには、当該クエリを基幹系ＤＢＭＳ１６Ａに振り分ける。
【０１１５】
従って、本データベースシステム１によれば、ホスト計算機４に実装されたアプリケーション２４の改変が必要なく、また基幹系ＤＢＭＳ１６Ａ及び情報系ＤＢＭＳ１６Ｂのうちのより実行時間が短いＤＢＭＳ１６にクエリを実行させることができるため、より迅速にクエリを実行し得る応答性能の高いデータベースシステムを実現できる。
【０１１６】
（４）他の実施の形態
なお上述の実施の形態においては、コマンド受付け部１５を情報系サーバ装置２Ｂに実装するようにした場合について述べたが、本発明はこれに限らず、例えば図１との対応部分に同一符号を付した図１６に示すように、上述したコマンド受付けプログラム４０と同様の機能を有するコマンド受付けプログラム６０を備えるコマンド受付け部６１を、情報系サーバ装置６２Ｂではなく、基幹系サーバ装置６２Ａに実装するようにしても良い。
【０１１７】
また図１との対応部分に同一符号を付した図１７に示すように、上述したコマンド受付けプログラム４０と同様の機能を有するコマンド受付けプログラム７０を備えるコマンド受付け部７１を、基幹系サーバ装置７２Ａ及び情報系サーバ装置７２Ｂではなく、ホスト計算機７３に実装するようにしても良い。このようにしても、アプリケーション２４を改変することなくデータベースシステムの応答性能を向上させることができる。
【０１１８】
また上述の実施の形態においては、ホスト計算機４から発行された２クエリを受け付け、受け付けた２クエリが更新系及び参照系のいずれのクエリであるかを判定する判定部と、その判定結果に基づいて、当該クエリが更新系のクエリである場合には、当該クエリを基幹系ＤＢＭＳ１６Ａ（第１のデータベース管理システム）に振り分け、当該クエリが参照系のクエリである場合には、当該クエリを情報系ＤＢＭＳ１６Ｂ（第２のデータベース管理システム）に振り分ける振分け部とを１つのコマンド受付け部１５により構成するソフトウェア構成とするようにした場合について述べたが、本発明はこれに限らず、例えば、これら判定部及び振分け部の一部又は全部の機能をハードウェア構成により実現するようにしても良い。
【０１１９】
さらに上述の実施の形態においては、基幹系ＤＢＭＳ１６Ａを基幹系サーバ装置２Ａに搭載し、情報系ＤＢＭＳ１６Ｂを情報系サーバ装置２Ｂに搭載する（つまり基幹系ＤＢＭＳ１６Ａ及び情報系ＤＢＭＳ１６Ｂを異なるサーバ装置２に搭載する）ようにした場合について述べたが、本発明はこれに限らず、これら基幹系ＤＢＭＳ１６Ａ及び情報系ＤＢＭＳ１６Ｂを同一のサーバ装置２に搭載するようにしても良い。
【０１２０】
同様に、上述の実施の形態においては、基幹系データベース３２Ａを基幹系ストレージ装置６Ａに格納し、情報系データベース３２Ｂを情報系ストレージ装置６Ｂに格納する（つまり基幹系データベース３２Ａ及び情報系データベース３２Ｂを異なるストレージ装置６に格納する）ようにした場合について述べたが、本発明はこれに限らず、これら基幹系データベース３２Ａ及び情報系データベース３２Ｂを同一のストレージ装置６に格納するようにしても良い。
【０１２１】
さらに上述の実施の形態においては、クエリが参照系のクエリであっても、当該クエリにおいて指定された参照対象のデータが基幹系データベース３２Ａ及び情報系データベース３２Ｂ間でのレプリケートの対象であり、かつ当該レプリケートが未完了の場合に、当該クエリを基幹系ＤＢＭＳ１６Ａで実行するときに要する第１の時間と、当該レプリケートを完了した後に情報系ＤＢＭＳ１６Ｂで実行するときに要する第２の時間とを、コマンド受付け部１５が、図１１のステップＳＰ３１で上述した方法と、図１３のステップＳＰ５８で上述した方法とを利用して予測するようにした場合について述べたが、本発明はこれに限らず、この他種々の予測方法を広く適用することができる。
【０１２２】
さらに上述の実施の形態においては、物理的なサーバ装置により基幹系サーバ装置２Ａ及び情報系サーバ装置２Ｂを構成するようにした場合について述べたが、本発明はこれに限らず、これら基幹系サーバ装置２Ａ及び情報系サーバ装置２Ｂを仮想化技術を利用した仮想的なサーバ装置として構成するようにしても良い。
【産業上の利用可能性】
【０１２３】
本発明は、特性が異なる複数のデータベース管理システムを備えるデータベースシステムに広く適用することができる。
【符号の説明】
【０１２４】
１，６０，７０……データベースシステム、２，２Ａ，２Ｂ……サーバ装置、４，４Ａ，４Ｂ……ホスト計算機、６，６Ａ，６Ｂ……ストレージ装置、１０……ＣＰＵ、１５……コマンド受付け部、１６，１６Ａ，１６Ｂ……ＤＢＭＳ、３２，３２Ａ，３２Ｂ……データベース、４０……コマンド受付けプログラム、４１……データベース管理情報、４２……データベース統計情報、５０……クエリ管理テーブル、５１……レプリ管理テーブル、５２……レプリ実行テーブル、５３……Ｉ／Ｏ実行時間テーブル、５４……データ分布テーブル。
【図１】
2016151867.tif 000003
【図２】
2016151867.tif 000004
【図３】
2016151867.tif 000005
【図４】
2016151867.tif 000006
【図５】
2016151867.tif 000007
【図６】
2016151867.tif 000008
【図７】
2016151867.tif 000009
【図８】
2016151867.tif 000010
【図９】
2016151867.tif 000011
【図１０】
2016151867.tif 000012
【図１１】
2016151867.tif 000013
【図１２】
2016151867.tif 000014
【図１３】
2016151867.tif 000015
【図１４】
2016151867.tif 000016
【図１５】
2016151867.tif 000017
【図１６】
2016151867.tif 000018
【図１７】
2016151867.tif 000019
【国際調査報告】
2016151867.tif 000020
2016151867.tif 000021