(57)【要約】  【課題】  連合データベースシステムにおいて、検索処理の実行中に進行状況を確認したり、検索に要する時間を予測したり、他の処理の割り込みを許容するなどの柔軟な操作を可能とする機能を実現する。  【解決手段】  検索式を分割して、検索範囲を特定することによって一定以下の応答時間で処理される複数の分割後検索式を作成する検索式分割部３２と、検索式分割部３２によって分割された検索式を逐次的に検索実行部に送り検索を実行させる実行制御部３３とを備える。この検索式分割部３２は、検索式を分割する際に検索対象であるデータベースのテーブルが持つ検索用のキーに対応するレコードがテーブルの中でどのように分布しているかを示すデータ分布表３５を参酌し、テーブルごとに、その応答速度の比に基づいて検索範囲に含まれるレコード数を補正することにより、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割する。  【選択図】  図３
2005115514.tif 000002
【特許請求の範囲】
【請求項１】
所定の検索式を用いてデータベースの検索を行う検索実行部と、
前記データベースのテーブルが持つ検索用のキーに対応するレコードが当該テーブルの中でどのように分布しているかを示すデータ分布表と、
前記データ分布表に示されたレコードの分布を参酌して、前記データベースに対する検索を行うための検索式を、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割する検索式分割部と、
前記検索式分割部によって分割された検索式を前記検索実行部に送り検索を実行させる実行制御部と
を備えることを特徴とするデータベース検索システム。
【請求項２】
前記検索式分割部は、前記データベースのテーブルごとに、各テーブルにおける応答速度の比に基づいて、前記検索範囲に含まれる前記レコード数を補正することを特徴とする請求項１に記載のデータベース検索システム。
【請求項３】
前記実行制御部は、前記検索実行部による前記分割された検索式を用いた個々の検索結果を順次取得し、検索全体に対する進行状況として出力することを特徴とする請求項１に記載のデータベース検索システム。
【請求項４】
前記実行制御部は、前記検索実行部において既に終了した前記分割された検索式の検索に要した時間及び検索結果から、検索全体に要する時間と最終的な検索結果とを予測することを特徴とする請求項１に記載のデータベース検索システム。
【請求項５】
前記実行制御部は、所定の割り込み命令を受け付けて前記検索実行部に送り、
前記検索実行部は、前記分割された検索式を用いた個々の検索の合間に前記割り込み命令による割り込み処理を実行することを特徴とする請求項１に記載のデータベース検索システム。
【請求項６】
前記実行制御部は、前記分割された検索式の少なくとも一部を個別にバッチ処理にて前記検索実行部へ送り、
前記検索実行部は、前記分割された検索式を用いた検索処理を個々の当該分割された検索式ごとにバッチ処理にて実行することを特徴とする請求項１に記載のデータベース検索システム。
【請求項７】
前記検索式分割部は、前記データ分布表の少なくとも一部を分類コードに基づいて分類されたキーに対応するレコードの分布に変換し、変換された当該データ分布表を参酌して、前記検索式の分割を行うことを特徴とする請求項１に記載のデータベース検索システム。
【請求項８】
複数のデータベースサーバを対象として統合検索を行う検索実行部と、
前記検索実行部に対して検索条件を記述した検索式を与える検索制御部とを備え、
前記検索制御部は、所定の検索式を分割して、検索範囲を特定することによって一定以下の応答時間で処理される複数の分割後検索式を作成し、当該分割後検索式を前記検索実行部へ送り、検索を実行させることを特徴とするデータベース検索システム。
【請求項９】
前記検索制御部は、前記検索実行部による検索対象である前記データベースサーバの処理能力に応じて、検索範囲に含まれるデータベースのテーブルにおけるレコード数を決定し、前記分割後検索式を作成することを特徴とする請求項８に記載のデータベース検索システム。
【請求項１０】
コンピュータを用いてデータベースサーバにアクセスし検索を行うデータベース検索方法において、
前記データベースサーバに構築されたデータベースに対する検索を行うための検索式を入力する第１のステップと、
前記データベースのテーブルが持つ検索用のキーに対応するレコードが当該テーブルの中でどのように分布しているかを示すデータ分布表を参酌して、前記検索式を、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割し、分割された当該検索式を所定の記憶手段に格納する第２のステップと、
前記分割された検索式を用いて前記データベースに対する検索を実行する第３のステップと
を含むことを特徴とするデータベース検索方法。
【請求項１１】
前記第２のステップは、
前記データベースのテーブルごとに、各テーブルにおける応答速度の比に基づいて、前記データ分布表を参酌して得られる前記検索範囲に含まれる前記レコード数を補正するステップと、
補正された前記レコード数の値に基づいて検索範囲を区切り前記検索式の分割を行うステップと
を含むことを特徴とする請求項１０に記載のデータベース検索方法。
【請求項１２】
前記第２のステップで分割された検索式と、当該分割された検索式のうちで前記第３のステップにおいて既に検索が終了した検索式とに基づいて、検索全体に対する進行状況を求める第４のステップをさらに含むことを特徴とする請求項１０に記載のデータベース検索方法。
【請求項１３】
前記第３のステップにおいて既に終了した前記分割された検索式の検索に要した時間及び検索結果から、検索全体に要する時間と最終的な検索結果とを予測する第４のステップをさらに含むことを特徴とする請求項１０に記載のデータベース検索方法。
【請求項１４】
前記第３のステップでは、前記分割された検索式を用いた検索の少なくとも一部を個別にバッチ処理にて実行することを特徴とする請求項１０に記載のデータベース検索方法。
【請求項１５】
コンピュータを、
データベースのテーブルが持つ検索用のキーに対応するレコードが当該テーブルの中でどのように分布しているかを示す分布表を参酌して、当該データベースに対する検索を行うための検索式を、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割する検索式分割手段と、
分割された前記検索式を前記データベースの検索手段に対して送り検索を実行させる実行制御手段として
機能させることを特徴とするプログラム。
【請求項１６】
前記検索式分割手段の機能として、前記コンピュータに、前記データベースのテーブルごとに、各テーブルにおける応答速度の比に基づいて、前記検索範囲に含まれる前記レコード数を補正して、前記検索式の分割を実行させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記コンピュータを、前記分割された検索式を用いた個々の検索結果を順次取得し、検索全体に対する進行状況として出力する進行状況出力手段としてさらに機能させることを特徴とする請求項１５に記載のプログラム。
【請求項１８】
前記コンピュータを、既に終了した前記分割された検索式の検索に要した時間及び検索結果から、検索全体に要する時間と最終的な検索結果とを予測する予測手段としてさらに機能させることを特徴とする請求項１５記載のプログラム。
【請求項１９】
コンピュータを、
データベースを検索するための検索式を分割して、検索範囲を特定することによって一定以下の応答時間で処理される複数の分割後検索式を作成する検索制御手段と、
作成された前記分割後検索式を用いて複数のデータベースサーバを対象として統合検索を行う検索実行手段として
機能させることを特徴とするプログラム。
【請求項２０】
前記検索制御手段の機能として、前記コンピュータに、検索対象である前記データベースサーバの処理能力に応じて、検索範囲に含まれるデータベースのテーブルにおけるレコード数を決定し、前記分割後検索式を作成させることを特徴とする請求項１９に記載のプログラム。
【請求項２１】
請求項１５から請求項２０のいずれかに記載のプログラムを、コンピュータが読み取り可能に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いたデータベースシステムに関し、特に複数のデータベースサーバを統合的に扱う連合データベースに関する。
【背景技術】
【０００２】
今日、コンピュータを用いた大規模なデータベースシステムを構築することが広く行われているが、所定の情報環境では、複数のサーバ（ハードウェア）にデータが散在する場合がある。例えば、研究所の情報システムは、様々な研究員が抽出した様々な研究データを管理するという性格上、多種多様なデータを分野別に複数のサーバに分散して保持しているのが一般的である。そのような散在するデータの中から埋もれた情報・知見を見つけ出すためには、それらのデータを統合することにより、ユーザにひとまとまりのデータイメージを提供するシステムを構築する必要がある。
【０００３】
従来、データ群を統合的に扱う仕組みとして、データを検索し易いように予め集約するデータウェアハウスが利用されている。この仕組みでは、データ集約がバッチ処理で行われるため、新規データを検索できるようになるまでにタイムラグが発生してしまう。また、新規データ項目の追加時には、データベースの再設計や再構築が必要になる。
また近年、この種の散在したデータを統合的に扱う連合データベースという仕組みが用いられ始めている（例えば、非特許文献１、２参照）。これは、集約されたデータベースではなく分散して存在しているデータベース群に直接アクセスして、ひとまとまりのデータベースイメージを提供する技術であり、これによって新規データ検索のためのタイムラグを解消することができる。さらに、個々のデータベースに直接アクセスする仕組みであるため、新規データ項目が追加された場合にも容易に対応が可能であり、再設計や再構築にかかる時間、コストを低減することができる。
【０００４】
図１４は、連合データベースシステムによる統合検索の概念を説明する図である。
図１４に示すように、連合データベースシステム１４１０は、複数のサーバ１４２０に構築されたデータベース１４２１の各テーブルに対し、単一の検索式（ＳＱＬ：Structured Query Language）を用いて統合検索を行い、単一イメージの検索結果を得る。すなわち、これら複数のサーバ１４２０に構築されているデータベース群を単一のデータベースとして扱うことができる。
【０００５】
【非特許文献１】L. M. Haas 他、“DiscoveryLink: A system for integrated access to life sciences data soureces”、IBM SYSTEMS JOURNAL, VOL.40, NO 2, 2001
【非特許文献２】“DB2 Information Integrator V8技術論文（IBM Systems Journal Vol.41）”、２００２年、日本ＩＢＭ、［平成１５年８月２７日検索］、インターネット＜URL : http://www-6.ibm.com/jp/software/data/developer/library/techdoc/db2func.html#ii＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記のように、複数のサーバに散在するデータ群を統合的に扱うために、連合データベースシステムを用いれば、データを集約せずに個々のデータベースに直接アクセスして、データ検索やデータマイニングを実行することができる。したがって、データウェアハウスを用いる場合のような、新規データ検索のためのタイムラグを解消することができ、新規データ項目が追加された場合にも容易に対応が可能である。
しかしながら、連合データベースシステムでは、ＳＱＬによる検索式を用いて通常のデータベース検索と同様に検索を行うため、検索が終了して検索結果が得られるまでは何らの応答も受け取ることができず、したがって検索終了前に当該検索処理に要する時間を予測することはできない。これは、複数のデータベース群にアクセスして膨大なデータを検索するシステムとしては利便性を欠く。
【０００７】
また、連合データベースシステムは、単一のＳＱＬで検索を行うため、ＳＱＬシステムの特性から、一度検索を開始した後は、全ての対象データベースに対する検索が終了するまで、当該検索処理に対して他の処理を割り込ませることができない。そのため、検索の途中で経過を確認したり、検索処理をキャンセルしたり、さらに検索条件を変更して再開したりするといった、柔軟な操作を行うことができない。
【０００８】
そこで本発明は、上記の課題に鑑み、連合データベースシステムにおいて、検索処理の実行中に進行状況を確認したり、検索に要する時間を予測したり、他の処理の割り込みを許容するなどの柔軟な操作を可能とする機能を実現することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成する本発明は、次のように構成されたデータベース検索システムとして実現することができる。すなわちこのシステムは、所定の検索式を用いてデータベースの検索を行う検索実行部と、検索対象であるデータベースのテーブルが持つ検索用のキーに対応するレコードがテーブルの中でどのように分布しているかを示すデータ分布表と、このデータ分布表に示されたレコードの分布を参酌して、データベースに対する検索を行うための検索式を、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割する検索式分割部と、検索式分割部によって分割された検索式を逐次的に検索実行部に送り検索を実行させる実行制御部とを備えることを特徴とする。
より好ましくは、この検索式分割部は、データベースのテーブルごとに、各テーブルにおける応答速度の比に基づいて、検索範囲に含まれるレコード数を補正する。
【００１０】
このように元の検索式を、検索範囲を特定した複数の検索式に分割することにより、分割された個々の検索式を逐次実行する過程で、何番目の検索式まで実行したかに基づいて検索処理の進行状況を把握したり、既に終了した検索式の検索に要した時間及び検索結果から検索全体に要する時間と最終的な検索結果とを予測したり、個々の検索式の検索を実行する合間に割り込み処理を行ったりすることができる。
さらに、割り込み処理により検索を中断した場合、残りの分割された検索式による検索に対して、検索条件を変更したり、バッチ処理により自動実行したりすることができる。
また、データベースに格納されているデータが所定の分類コードにて分類されている場合、データ分布表の少なくとも一部を分類コードに基づいて分類されたキーに対応するレコードの分布に変換し、これを用いて検索式の分割を行うことができる。このようにすれば、初めから分類コードに基づいて整理された形で検索結果を得ることができ、検索結果を、クロス表等の分類コードを表示項目とした形式で出力する場合にも、検索結果の全てを走査して分類コードに基づく整理を行ったり、出力する必要のないデータを除去したりするという無駄な作業を省略することができる。
【００１１】
また本発明の他のデータベース検索システムは、複数のデータベースサーバを対象として統合検索を行う検索実行部と、この検索実行部に対して検索条件を記述した検索式を与える検索制御部とを備えた構成とすることもできる。この構成において、検索制御部は、所定の検索式を分割して、検索範囲を特定することによって一定以下の応答時間で処理される複数の分割後検索式を作成し、この分割後検索式を逐次的に検索実行部へ送り、検索を実行させることを特徴とする。
ここで、より好ましくは、検索制御部は、検索実行部による検索対象であるデータベースサーバの処理能力に応じて、検索範囲に含まれるデータベースのテーブルにおけるレコード数を決定し、分割後検索式を作成する。
【００１２】
さらに本発明は、コンピュータを用いてデータベースサーバにアクセスし検索を行う、次のようなデータベース検索方法としても実現される。このデータベース検索方法は、データベースサーバに構築されたデータベースに対する検索を行うための検索式を入力する第１のステップと、データベースのテーブルが持つ検索用のキーに対応するレコードがそのテーブルの中でどのように分布しているかを示すデータ分布表を参酌して、検索式を、検索対象のレコード数が概ね一定となるように検索範囲を区切られた複数の検索式に分割し、分割された検索式を所定の記憶手段に格納する第２のステップと、分割された検索式を逐次的に用いてデータベースに対する検索を実行する第３のステップとを含むことを特徴とする。
【００１３】
また本発明は、コンピュータを制御して上述したデータベース検索システムとして機能させるプログラムや、コンピュータに上記のデータベース検索方法における各ステップに相当する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【発明の効果】
【００１４】
以上のように構成された本発明によれば、データベース検索の実行に先立って、検索式を分割し、分割された検索式を用いて一定の検索範囲ごとに細かく検索を実行していくことにより、検索処理の実行中に進行状況を確認したり、検索に要する時間を予測したり、他の処理の割り込みを許容するといった柔軟な操作を行うことが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、実施形態）について詳細に説明する。
図１は、本実施形態による統合検索システムの全体構成を示す図である。
図１に示すように、本実施形態の統合検索システムは、複数のデータベースサーバ１０と、これらのデータベースサーバ１０に対して統合検索を行う連合データベースシステム２０と、連合データベースシステム２０に対して検索式（ＳＱＬ文）を与えてデータベース検索を制御する検索制御システム３０とを備える。なお、本実施形態において、統合検索とは結合検索（同等の属性を持った変数を用いた多様な経路表現を結合した問合せによる検索）に限るものとする。
【００１６】
図１に示す構成のうち、データベースサーバ１０は、磁気ディスク等の記憶装置にてデータベース１１を構築した通常のサーバである。また、連合データベースシステム２０は、複数のデータベースサーバ１０を統合して連合データベースを実現する検索実行部であり、通常の連合データベースにおいて統合検索を行うために用いられるシステムにて構成することができる。すなわち本実施形態は、既存の連合データベースに対して検索制御システム３０の機能を付加することにより実現される。
なお、本実施形態の統合検索システムは、どのようなハードウェア構成を取るかに限定されない。すなわち、連合データベースの概念から、各データベースサーバ１０が複数のハードウェア（サーバマシン）にて実現されることは当然であるが、連合データベースシステム２０と検索制御システム３０とが同一のハードウェア（コンピュータ装置）上で動作しても良いし、異なるハードウェア上で動作しても良い。また、本実施形態では連合データベースシステム２０と検索制御システム３０とを別構成として説明するが、検索制御システム３０の機能を連合データベースシステム２０として組み込むことも可能である。
【００１７】
図２は、本実施形態の検索制御システム３０を実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図２に示すコンピュータ装置は、演算手段であるＣＰＵ（Central Processing Unit：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２およびＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２およびＡＧＰ（Accelerated Graphics Port）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Peripheral Component Interconnect）バスを介してＭ／Ｂチップセット１０２に接続された磁気ディスク装置（ＨＤＤ）１０５、ネットワークインターフェイス１０６と、さらにこのＰＣＩバスからブリッジ回路１０７およびＩＳＡ（Industry Standard Architecture）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピー（登録商標）ディスクドライブ１０８およびキーボード／マウス１０９とを備える。
【００１８】
なお、図２は本実施形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、外部記憶装置として、ＡＴＡ（AT Attachment）やＳＣＳＩ（Small Computer System Interface）などのインターフェイスを介してＣＤ−Ｒ（Compact Disc Recordable）やＤＶＤ−ＲＡＭ（Digital Versatile Disc Random Access Memory）のドライブを設けても良い。
【００１９】
図３は、検索制御システム３０の機能構成を示す図である。
図３に示すように、本実施形態による検索制御システム３０は、データベース検索のための検索式の入力を受け付ける入力受け付け部３１と、受け付けた検索式を分割する検索式分割部３２と、検索式分割部３２により分割された検索式を用いた検索処理の実行を制御する実行制御部３３と、検索結果をまとめて出力する検索結果出力部３４を備える。また、検索式分割部３２による検索式の分割に用いられるデータ分布表（データマッピングテーブル）３５を備える。
【００２０】
図３に示す構成のうち、入力受け付け部３１、検索式分割部３２、実行制御部３３および検索結果出力部３４は、例えば図２に示したコンピュータ装置のプログラム制御されたＣＰＵ１０１にて実現される。また、データ分布表３５は、図２に示したメインメモリ１０３や磁気ディスク装置１０５に格納されている。
【００２１】
入力受け付け部３１は、図２に示したキーボード／マウス１０９等の入力デバイスや、磁気ディスク装置１０５等の記憶手段、ネットワークインターフェイス１０６等を介してデータベース検索のための検索式（ＳＱＬ文）を入力する。ここで入力される検索式は、通常の連合データベースシステム２０に対して入力される検索式と同様であり、所定の検索条件（キー）を記述した単一の検索式である。
【００２２】
検索式分割部３２は、入力受け付け部３１にて入力した単一の検索式に対して当該検索式のキーに条件を追加し、一定の応答時間で検索処理が可能な複数の検索式に分割する。この検索式の分割には、データ分布表３５が参酌される。
連合データベースシステム２０による統合検索を行う場合、同一のキーによって複数のデータベース１１の検索を行うため、検索対象となる各データベース１１における各テーブルが結合（各テーブル間で同等の属性を持った項目を引数にして仮想のテーブルを作成すること）できることが必要である。言い換えれば、連合データベースシステム２０から参照される各テーブルは共通のキーを持つ必要がある。データ分布表３５は、これら各テーブルが持つ共通のキーに対応するレコードが当該各テーブルの中でどのように分布しているかを示す分布表である。
【００２３】
このデータ分布表３５は、次のようにして作成される。
まず、検索対象であるテーブルのうち、統合検索の軸となるものの一つを「基本テーブル」として定義し、レコード数が概ね一定になるようにキーの範囲を区切る。この範囲を基本範囲と呼ぶことにする。そして、基本範囲の名称をキーの値が若い順に「範囲１」、「範囲２」・・・「範囲Ｎ」とする。
次に、基本テーブルに結合する各テーブル（リンクテーブルと呼ぶ）に関して、各基本範囲内に含まれるキーに対応するレコードの数を算出し、各基本範囲に対応付けて記録する。
次に、各テーブルの応答速度（すなわち各データベースサーバ１０における処理能力）の比を求め、該当するテーブルに対する能力補正値として記録する。応答速度としては、キーに対して全件を検索するのに要する時間を用いる。
【００２４】
以上のようにして、各テーブルのキーデータの分布が記録されたデータ分布表３５が作成される。
図４は、データ分布表３５の基本構造を示す図である。
図４に示すように、データ分布表３５は、基本テーブルを基準として設定された各基本範囲（範囲１、範囲２、・・・、範囲Ｎ）に、各テーブル（基本テーブル及びリンクテーブル）のレコードがどのように分布しているかを示している。例えば、範囲１に含まれるキーを持つデータのレコードは、基本テーブルには１０００個存在し、リンクテーブル１には６個存在し、リンクテーブル２には３００個存在することがわかる。
このデータ分布表３５は、最初に基本テーブルと定義されたテーブルと他のテーブルとが結合する統合検索において用いることができる。他に基本テーブルとなり得るテーブルがあるならば、そのような各テーブルに対して同様の操作を行い、当該テーブルを基本テーブルとしたデータ分布表３５を作成する。
【００２５】
図５は、上記のようなデータ分布表３５を用いて行われる検索式分割部３２による検索式の分割処理の手順を示すフローチャートである。
初期動作として、検索式分割部３２は、データ分布表３５の各テーブルのデータ（レコード数）に対して能力補正値（図では補正値と表記）をかけて、補正データ分布表を作成する。例えば、図４のデータ分布表３５では、リンクテーブル１の範囲１の値は３０（＝６×５）となる。これは、各テーブルに対して検索を行う場合に要する時間の比を示しており、図４の例では、リンクテーブル１の範囲１に含まれるレコード６個を検索するために、能力補正値が１である基本テーブルから１個のレコードを検索する時間を基準として３０個のレコードを検索するのに相当する時間を要することを意味している。
また検索式分割部３２は、検索の分割範囲（すなわち、分割された個々の検索式による検索範囲）を決定するための標準分割閾値を決定する。この標準分割閾値は、例えば統合検索システム全体のスループットを基準として決めることができる。
【００２６】
この後、検索式分割部３２は、図５に示すように、テーブル１（ｉ＝１、ｉ：１≦ｉ≦Ｍ、なおテーブル１は図４の基本テーブルに対応）の基本範囲における範囲１（ｊ＝１、ｊ：１≦ｊ≦Ｎ）の最初のキーに着目し、そのキーを、検索範囲を区切るためのキー（以下、検索区切り）とする（ステップ５０１）。そして、分割後の検索式による検索範囲を示す変数Σ(ｉ)及びその検索範囲の開始位置を示す変数ｋを設定し、これを初期化する（ステップ５０２）。すなわち、Σ(ｉ)＝０、ｋ＝ｊとする。
次に検索式分割部３２は、
Σ(ｉ)＋Ｒ(ｉ)＊ａ(ｉ，ｊ)
をΣ(ｉ)に代入する（ステップ５０３）。ここで、Ｒ(ｉ)はテーブルｉの能力補正値であり、ａ(ｉ，ｊ)はテーブルｉの範囲ｊにおけるレコード数である。したがって、ステップ５０１、５０２から、初期的には、
０＋Ｒ(１)＊ａ(１，１)
がΣ(ｉ)に代入されることとなる。
【００２７】
次に、検索式分割部３２は、上式の計算結果（Σ(ｉ)）が標準分割閾値を超えるか否かを調べる（ステップ５０４）。Σ(ｉ)が標準分割閾値を超えていなければ、次のテーブルに移行して（ｉ＝ｉ＋１）、ステップ５０３の計算を繰り返す（ステップ５０３〜５０６）。全てのテーブルに対して以上の処理を行った（すなわちｉ＝Ｍとなった）ならば（ステップ５０５でＹｅｓ）、引き続き次の基本範囲へ移行して（ｊ＝ｊ＋１）、ステップ５０３の計算を繰り返す（ステップ５０３〜５０８）。
【００２８】
ステップ５０４で、Σ(ｉ)が標準分割閾値を超えた場合は、処理中の基本範囲の次の基本範囲における最初のキーを検索区切りとしてステップ５０２に戻り、同様の処理を繰り返す（ステップ５０９）。
以上の処理を全ての基本範囲に対して繰り返した（すなわちｊ＝Ｎとなった）ならば（ステップ５０７でＹｅｓ）、当初の単一検索式を分割するための全ての検索区切りが得られる。そこで、検索式分割部３２は、得られた検索区切りで当初の単一検索式の検索範囲を区切った検索式（以下、分割後検索式と呼ぶ）を作成する（ステップ５１０）。
【００２９】
具体的には、検索式分割部３２は、所定の検索区切りとその次の検索区切りとで挟まれる範囲群を区切り範囲とし、この区切り範囲を検索範囲とする分割後検索式を作成する。例えば、検索区切りをkey_1、key_2、key_3、・・・、key_nとすれば、区間（key_1、key_2）、区間（key_2、key_3）・・・を区切り範囲とし、当初の単一検索式（ＳＱＬ文）におけるwhere句に、基本テーブルのキーに対する各区切り範囲についてのbetween条件を付けていく。
【００３０】
以上の結果、当初の単一検索式は、標準分割閾値にしたがって範囲が定められたｎ個の分割後検索式（ＳＱＬ文）に分割される。作成された分割後検索式は、例えば図２のコンピュータ装置におけるメインメモリ１０３や磁気ディスク装置１０５等の記憶手段に格納される。
図６は、所定の検索式（ＳＱＬ文）と、これを分割した分割後検索式の例を示した図である。
この分割後検索式を用いて、実行制御部３３による実行制御によって、連合データベースシステム２０に検索処理を実行させることで、当初の単一検索式を用いた検索処理と同様の検索結果が得られることとなる。また上述したように、標準分割閾値は統合検索システムのスループットに基づいて決定されているので、個々の分割後検索式によるデータベース検索は、当該統合検索システムで予め定められた一定の応答時間以下の応答時間で結果が得られることとなる。
【００３１】
ところで、データ分布表３５は、データベース検索とは別工程で、適当なタイミングで予め作成しておく。したがって、データ分布表３５は、連合データベースシステム２０の検索対象である各データベースサーバ１０のデータベース１１に格納されたレコードの状態をリアルタイムで正確に反映させているものではなく、個々のデータベース１１でデータの更新があった場合に、その更新がデータ分布表３５に反映されるのに多少の時間差が生じる。しかし、データ分布表３５は、データウェアハウスとは異なり、単に検索式を分割するための目安を提供するに過ぎないので、必ずしも厳密にデータベース１１における実際のレコードの状態と一致している必要はなく、概ね対応が取れていれば実用上問題はない。
【００３２】
実行制御部３３は、検索式分割部３２によって作成された分割後検索式を記憶手段から読み出し、逐次的に連合データベースシステム２０に送り、データベース検索を実行させる。当然ながら、個々の分割後検索式による処理は独立しているので、各検索処理の間に、他の処理を割り込ませることが可能である。例えば、いくつかの分割後検索式を実行した時点で、検索処理を中断したり、検索条件を変更して再開したりすることができる。また、各分割後検索式による検索処理は、個別にバッチ処理で自動実行させることも可能である。したがって、いくつかの分割後検索式による検索処理を実行した時点で全ての検索を終了するまでに長時間を要すると予測される場合、一旦検索処理を中断し、残りの分割後検索式による検索処理をバッチ処理にて実行させるといった制御ができる。
【００３３】
また、実行制御部３３は、分割後検索式を用いた検索処理の進行状況を示す情報を、ディスプレイ装置等に出力して、ユーザに通知することができる。
図７は、検索処理の進行状況の通知（経過通知）の表示例を示す図である。
図７の表示例では、検索式に合致したデータ（レコード）の件数（検索件数）と、検索対象であるデータベース１１群に保持されたデータのうち検索の終了した件数（終了件数）と、当該検索対象であるデータの総数（総件数）とが、数値で表示されている。
【００３４】
図７を参照すると、まず検索開始時において、検索対象の総件数が１００００件であることが示される。途中経過１では、いくつかの分割後検索式による検索が終了した時点での検索結果が示される。ここでは、検索の終了した件数が１０００件、ヒットした件数が１０件となっている。途中経過２では、さらにいくつかの分割後検索式による検索が終了した時点での検索結果が示される。ここでは、検索の終了した件数が５０００件、ヒットした件数が３４件となっている。検索終了時には、全ての分割後検索式による検索結果が表示される。ここでは、検索の終了した件数は総件数と同じ１００００件であり、ヒットした件数が７６件である。この最終的な総件数（検索終了件数）とヒット件数とは、当初の単一の検索式にて検索を行った場合の結果と同一であることは言うまでもない。
【００３５】
図８は、同様の検索処理の進行状況を、画像を用いて視覚的に表示した例を示す図である。
図８に示す表示形式では、検索開始時、図７と同じタイミングの途中経過１、２、及び検索終了時について、総件数（斜線で示した範囲）と検索終了件数（黒色で示した範囲）とをグラフ表示してどの程度検索が済んだかを視覚的に示すと共に、各時点でヒットした件数を数値表示している。
【００３６】
ユーザは、図７や図８のような表示を参照することにより、検索処理の進行状況を把握することができる。そして、所定の時点（例えば途中経過１）までの検索に要した時間に基づいて検索終了までの時間を予測したり、最終的にヒットする件数を推定したり、検索処理の中断、検索条件の変更、バッチ処理への切り替え等を行うか判断したりすることが可能となる。途中経過を表示するタイミングについては、所定数（例えば１個）の分割後検索式による検索終了ごと、検索終了件数が総件数に対して所定の割合に達した時点など、任意に設定することができる。
【００３７】
また、実行制御部３３は、最初の１つの分割後検索式による検索が終了した時点で、当該検索に要した時間及び検索された件数とを、１つの分割後検索式による検索を実行した際のレスポンス時間及び検索件数（レコード数）と仮定する。そして、当初の単一検索式から作成された分割後検索式の個数を乗じて、全ての分割後検索式による検索（当初の単一検索式による検索に相当）におけるレスポンス時間（推定レスポンス時間）及び検索件数（推定レコード数）を算出する。
同様にして、ｎ番目（ｎ：１≦ｎ≦Ｎ）の分割後検索式による検索が終了するたびに、それまでの検索に要した時間及び検索件数にＮ／ｎを乗じて推定レスポンス時間及び推定レコード数を算出し、必要に応じて直前に算出された推定レスポンス時間及び推定レコード数を修正していく。
【００３８】
このようにして算出された推定レスポンス時間及び推定レコード数は、図７や図８のような表示と共にユーザに提示して、検索処理の中断、検索条件の変更、バッチ処理への切り替え等を行うか判断するための指針として用いることができる。
さらに、全ての分割後検索式による検索におけるレスポンス時間及び検索件数の閾値を予め設定しておけば、実行制御部３３は、各分割後検索式による検索が行われるたびに算出される推定レスポンス時間及び推定レコード数と閾値とを比較し、推定レスポンス時間または推定レコード数のいずれか一方もしくは両方が閾値を超えた場合（すなわち、検索に多大な時間を要すると予想される場合や、膨大な件数のデータ（レコード）が取得されるためにさらなる絞り込みが必要になると予想される場合）に、ユーザに対して、検索条件の見直しやバッチ処理への切り替えを促す処理（メッセージ表示等）を行ったり、自動的にバッチ処理への切り替えを行ったりすることもできる。
【００３９】
上述したように、実行制御部３３は、検索式分割部３２によって作成された分割後検索式を逐次的に連合データベースシステム２０へ送って、細かい検索処理を順次実行させるため、検索の中断やバッチ処理への切り替えを行うための割り込みは、各分割後検索式による検索の合間に随時行うことができる。
例えば、ユーザによるコマンド入力操作等により、バッチ処理への切り替えイベントが発生すると、実行制御部３３は、このイベントを検出し、実行中の分割後検索式による検索処理が終了した時点で検索を一旦停止する。そして、残りの分割後検索式による検索処理をバッチ処理として再スケジュールする。これにより、バッチ処理としてスケジュールされた分割後検索式による検索処理については、当該スケジュールにしたがって自動実行させることができる。
【００４０】
以上のように、本実施形態では、データベース検索の実行に先立って、検索式を分割し、分割された検索式を用いて一定の検索範囲ごとに細かく検索を実行していくことにより、検索処理の実行中に進行状況を確認したり、検索に要する時間を予測したり、他の処理の割り込みを許容するといった柔軟な操作を行う機能を実現している。
【００４１】
検索結果出力部３４は、実行制御部３３の制御により連合データベースシステム２０にて実行されたデータベース検索の結果を結合し、ディスプレイ装置等の出力デバイスにて出力する。出力形式としては、単に検索結果をまとめて列挙した形式の他に、検索対象のデータが所定の分類コードにて分類されたデータ構造を持つ場合には、当該分類コードを表示項目とした表形式で出力することも可能である。データが何らかの分類コードで分類されている場合、検索結果において当該分類コードによる分類が視覚的に表現されている方が、検索を依頼したユーザにとって参照しやすい場合がある。そこで、キーと分類コードという２つの項目にまたがって検索結果の分布を見ることができるクロス表や、検索結果に対してキーによる仕分けと分類コードによる仕分けとを行い階層的に表示した階層表を作成して、検索結果を出力する。
【００４２】
図９は、検索結果からクロス表や階層表を作成した例を示す図である。
図９において、検索結果のデータを列挙した表（図９（Ａ））から、キーと分類コードとに基づいてデータが仕分けられたクロス表（図９（Ｂ））、データが属する分類コード及び該当するキーが階層的に表現された階層表（図９（Ｃ））が得られる。
クロス表や階層表のような分類コードを表示項目とする出力形式で出力する場合、検索結果として得られた全てのデータを分類コードに基づいて整理しなければならない。その過程で、出力する必要のない（表示に関係のない）分類コードを持つデータは除かれることとなる。
【００４３】
本実施形態では、上述したデータ分布表を用いた検索式の分割を、各データに対する分類コードを参酌して行うことにより、検索における実行効率を高めることができる。具体的には、検索式分割部３２が、まず図４に示したようなキー分布に関するデータ分布表３５から、検索対象のデータのデータ構造に従って、当該データを分類する分類コードに関するデータ分布表を作成する。分類コードに関するデータ分布表とは、連合データベースシステム２０から参照されるデータベース１１の各テーブルにおける、分類コードを持つキーに対応するレコードが各基本範囲内で分類コードごとにどのように分布しているかを示す分布表である。
図１０は、分類コードに関するデータ分布表の基本構造を示す図である。
図１０を参照すると、例えば範囲１に含まれるキーを持つデータのレコードは、分類コード１に分類されるものが４０個、分類コード２、３に分類されるものが０個であることがわかる。
【００４４】
この分類コードに関するデータ分布表３５ａは、次のようにして作成される。
まず、図４に示したようなデータ分布表３５を作成する。データ分布表３５について説明したように、検索の軸になるテーブルを基本テーブル、基本テーブルと結合するテーブルをリンクテーブルとする。そして、分類コード列はリンクテーブルにあることとする。
次に、データ分布表３５と同様に、レコード数が概ね一定になるように基本範囲を区切りながら、各基本範囲内に含まれるキーに対応するレコードの数を算出し、各基本範囲に対応付けて記録する。能力補正値は、キー分布に関するデータ分布表３５に記録されたものを用いるので、データ分布表３５ａに記録する必要はない。
以上のようにして、分類コードごとにキーデータの分布が記録されたデータ分布表３５ａが作成される。このデータ分布表３５ａは、キー分布に関するデータ分布表３５のリンクテーブルごとに作成される。
【００４５】
分類コードに関するデータ分布表３５ａを利用した検索式の分割は、以下の手順で行われる。
まず、分類コードを含まないテーブルに関して、能力補正値をかけた補正データ分布表を用意する。一方、分類コードを含むテーブルに関して、当該テーブル（リンクテーブル）に対応するデータ分布表３５ａにおいて、各基本範囲内でデータ個数の和を取り、当該テーブルの能力補正値（データ分布表３５に記録されたものを使用）をかけた表を作成し、キー分布に関するデータ分布表３５における当該テーブルの部分と置き換える。なお、データ分布表３５ａの各基本範囲内のデータ個数に能力補正値をかける操作は、出力対象として絞り込まれた分類コードについてのみ行えば良い。
【００４６】
さらに標準分割閾値を決定した後、図５に示した手順で、入力受け付け部３１にて入力された単一の検索式を分割する。
図１１は、分類コードを持つテーブルの検索に用いられる所定の検索式（ＳＱＬ文）と、これを分割した分割後検索式の例を示した図である。
図１１に示すような、分類コードを考慮して分割された分割後検索式を用いて、連合データベースシステム２０に検索処理を実行させることにより、検索結果の全てを走査して分類コードに基づく整理を行うまでもなく、初めから分類コードに基づいて整理された形で検索結果を得ることができ、検索結果出力部３４においてクロス表や階層表を作成する場合にかかる検索結果を直接用いることができる。
【００４７】
また、キー分布に関するデータ分布表３５の一部を分類コードに関するデータ分布表３５ａに置き換える際に、上述したように出力対象として絞り込まれた分類コードに関するデータ分布表３５ａのみを用いることにより、出力する必要のない（表示に関係のない）分類コードを持つデータは、最初から検索対象とならないため、検索効率の向上を図ることができる。
【００４８】
ところで、本実施形態で用いるデータ分布表には、データに対するセキュリティ情報を付加することができる。データ保護のため、所定のデータを所定のアプリケーションで表示可能とするか否かを制御する場合があるが、通常この種のアクセス制御は、データベース１１に格納されているテーブルやレコードを単位として、これらにフラグデータを付与することによって実装される。
図１２に示すように、データ分布表３５、３５ａにセキュリティ情報を記録するフィールド（セキュリティフィールド）を追加し、このセキュリティフィールドに記録された情報に基づいてアクセス制御を行うこととすれば、分類コードを単位としてデータに対する表示可否の制御を行うことが可能となる。例えば、図１２の例では、分類コード１、３のセキュリティレベルがセキュリティフィールドの値１で、分類コード２、４のセキュリティレベルがセキュリティフィールドの値２で指定されている。
【００４９】
次に、以上のように構成された本実施形態の統合検索システムにおける統合検索の全体的な処理の流れを説明する。
図１３は、本実施形態の統合検索システムによるデータ検索の処理の流れを示すフローチャートである。
図１３を参照すると、まず検索制御システム３０の入力受け付け部３１により検索式（ＳＱＬ文）が入力され（ステップ１３０１）、検索式分割部３２によりデータ分布表３５、３５ａを用いて当該検索式の分割が行われ、分割後検索式が生成される（ステップ１３０２）。
【００５０】
次に、検索制御システム３０の実行制御部３３により分割後検索式が連合データベースシステム２０に逐次送られ、連合データベースシステム２０にて各分割後検索式による統合検索が実行される（ステップ１３０３）。このとき、連合データベースシステム２０においては、各分割後検索式による検索がそれぞれ独立に実行されることとなる。そして、各検索の結果が検索制御システム３０に送り返される。
【００５１】
実行制御部３３では、最後の分割後検索式による検索が行われたかどうかが判断され（ステップ１３０４）、未処理の分割後検索式が残っているならば、既に終了した分割後検索式による検索に基づいて、検索全体に要する時間と検索結果の予測の更新が行われ、進行状況と共に通知される（ステップ１３０５）。そして、検索の実行中に検索中断等の割り込み命令が入力されたか否かが判断される（ステップ１３０６）。割り込み命令があるならば、次の分割後検索式の前にその割り込み命令が、実行制御部３３から連合データベースシステム２０に送られる。そして、連合データベースシステム２０において、当該割り込み命令により割り込み処理が行われる（ステップ１３０７）。この割り込み処理は、上述したように、連合データベースシステム２０にとっては、単に個々の分割後検索式を用いた検索の合間に実行するものであるが、全ての分割後検索式による検索全体（当初の単一の検索式による検索に相当する）から見れば、検索の途中で処理の中断等の割り込み処理が実現されたこととなる。検索の途中で処理を中断できることにより、残りの検索（未処理の分割後検索式を用いた検索）に対して、検索条件を変更したり、バッチ処理で自動実行させたりする柔軟な操作を行うことが可能となる。
【００５２】
ステップ１３０４で、最後の分割後検索式による検索が行われたと判断されたならば、検索結果出力部３４により、各分割後検索式による検索結果がまとめられて出力される（ステップ１３０８）。この検索結果は、検索されたデータが所定の分類コードによって分類されているならば、この分類コードを表示項目として扱ったクロス表等の形式で出力することもできる。
【００５３】
なお、上記実施形態では、複数のデータベースサーバ１０を対象として統合検索を行う連合データベースシステム２０に対して検索式（ＳＱＬ文）を提供する検索制御手段として説明したが、連合データベース以外のデータベースに対しても、検索実行の前処理として検索式を加工する手段として、本実施形態を適用できるのは言うまでもない。
【図面の簡単な説明】
【００５４】
【図１】本実施形態による統合検索システムの全体構成を示す図である。
【図２】本実施形態の検索制御システムを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図３】本実施形態における検索制御システムの機能構成を示す図である。
【図４】本実施形態で用いられるデータ分布表の基本構造を示す図である。
【図５】本実施形態の検索式分割部による検索式の分割処理の手順を示すフローチャートである。
【図６】所定の検索式（ＳＱＬ文）と、本実施形態にてこれを分割した分割後検索式の例を示した図である。
【図７】本実施形態における検索処理の進行状況の通知（経過通知）の表示例を示す図である。
【図８】本実施形態における検索処理の進行状況の通知（経過通知）の他の表示例を示す図である。
【図９】検索結果からクロス表や階層表を作成した例を示す図である。
【図１０】分類コードに関するデータ分布表の基本構造を示す図である。
【図１１】分類コードを持つテーブルの検索に用いられる所定の検索式（ＳＱＬ文）と、本実施形態にてこれを分割した分割後検索式の例を示した図である。
【図１２】本実施形態で用いられるデータ分布表にセキュリティフィールドを追加した状態を示す図である。
【図１３】本実施形態の統合検索システムによるデータ検索の処理の流れを示すフローチャートである。
【図１４】連合データベースシステムによる統合検索の概念を説明する図である。
【符号の説明】
【００５５】
１０…データベースサーバ、１１…データベース、２０…連合データベースシステム、３０…検索制御システム、３１…入力受け付け部、３２…検索式分割部、３３…実行制御部、３４…検索結果出力部、３５、３５ａ…データ分布表、１０１…ＣＰＵ（中央処理装置）、１０３…メインメモリ、１０５…磁気ディスク装置（ＨＤＤ）、１０６…ネットワークインターフェイス
【図１】
2005115514.tif 000003
【図２】
2005115514.tif 000004
【図３】
2005115514.tif 000005
【図４】
2005115514.tif 000006
【図５】
2005115514.tif 000007
【図６】
2005115514.tif 000008
【図７】
2005115514.tif 000009
【図８】
2005115514.tif 000010
【図９】
2005115514.tif 000011
【図１０】
2005115514.tif 000012
【図１１】
2005115514.tif 000013
【図１２】
2005115514.tif 000014
【図１３】
2005115514.tif 000015
【図１４】
2005115514.tif 000016