(57)【要約】【課題】不均一多重データベースに対する検索要求の処理速度の悪化を簡単な方法で抑止する。【解決手段】不均一多重に記憶されたＤＢ２７等に対する検索要求を検索要求受付分解部５２で分割して複数の分割単位データに対する複数の分割検索要求を生成して共通キュー８０に検索要求の受信時刻順に登録する。共通キューに新たに登録された分割検索要求、又は、既に投入された分割検索要求の処理がいずれかのＤＢサーバ装置において終了したときには共通キューに登録された最も古い分割検索要求について、いずれかのＤＢサーバ装置又は上記処理が終了したＤＢサーバ装置が、当該分割検索要求を処理可能という条件と、当該分割検索要求を、処理中の他の分割検索要求と並列に処理できるという条件とを満たすか否かを判断し、満たす場合には、当該分割検索要求を当該ＤＢサーバ装置に投入する。【選択図】　　　図１
2004102631.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成し、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録し、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるいう処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入し、
いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する、
ステップをコンピュータに実行させるようにプログラムされていることを特徴とするデータベース検索プログラム。
【請求項２】
複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかの利用者により要求され、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成し、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録し、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入し、
いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する、
ステップを含むことを特徴とするデータベース検索方法。
【請求項３】
複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せ組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかの利用者により要求され、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成する手段と、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録する手段と、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、かつ、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別する手段と、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入する手段と、
いずれかの投入された分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する手段と、
を備えることを特徴とするデータベース検索装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のデータベースサーバ装置に不均一に多重に記憶されたデータベースをアクセスするための、データベース検索プログラム、データベース検索方法及びデータベース検索装置に関する。
【０００２】
【従来の技術】
インターネットあるいはイントラネットなどのネットワーク上に構築された情報検索システムでは、データベースを記憶しデータベースへのアクセスを制御する多数のコンピュータ（データベースサーバ装置）を分散構成にすることによって、コンピュータ１台あたりの記憶容量やＣＰＵ性能の限界及びＯＳなどのプラットフォームに制限されることなく、大規模な情報データベースシステムを構築することが可能である。しかし、このように大規模な情報データベースシステムでは、一般的に情報の検索処理に要する時間が非常に大きい。特にマルチメディア情報データベースシステムの場合には、検索結果として転送されるデータ量も大きくなり、コンピュータやネットワークに大きな負荷が掛かり、情報検索要求１回当たりに対する応答時間が大きくなる傾向にある。このような大規模な情報データベースシステムにおいて、同時に多数のクライアント装置からの情報検索要求が発生した場合であっても、検索処理速度を著しく悪化させないことが望まれている。
【０００３】
このため、従来、クライアント・サーバシステム又はＷＷＷシステムとして構築された情報検索システムでは、分散並列化処理及び負荷分散の方法が行われてきた。すなわち、分散並列化処理では、異なるデータを異なるデータベースサーバ装置に記憶させることにより、それらのデータを並列にアクセス可能にするとともに、検索要求が相対的に多く発生するデータは、複数個設けることによりいわゆる多重に構成し、それらの多重のデータを異なるデータベースサーバ装置内に記憶させている。これにより、同じデータに対する異なるクライアントからの複数の検索要求を並列に処理可能にしている。データに対する検索要求の発生頻度は、データ毎に異なるので、多重度はデータにより異なり、その意味で不均一多重であるデータベースが使用されている場合も多い（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開平６−１１９３８３号公報（段落１７〜１９、図５）
【０００５】
不均一多重データベースの他の形態として、異なるデータベースの異なる組合せを複数のデータベースサーバ装置に記憶させるものもある。このようなデータベースシステムでは、多重度はデータ単位ではなく、データベース単位（同じデータベースを構成するデータ群の単位）に変えることも可能である。例えば、企業のデータベースシステムでは、本社に全てのデータベースのマスタを記憶させ、各支店には、支店毎に複数のデータベースのコピーを記憶させ、支店内の複数のデータベースは、イントラネットを介して支店内で使用可能にしている。支店毎のデータベースは、支店を構成する複数の部のそれぞれのニーズと使用頻度に対応して部毎に異なるデータベースを当該部用のデータベースサーバ装置に記憶させる例もある。
【０００６】
例えば、地図情報に関連する部毎のデータベースの例としては、第１部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、市街図データベースを記憶し、第２部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、地形図データベース、設備図データベースを記憶し、第３部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、市街図データベース、広域図データベースを記憶する。ここで、設備図データベースは、道路内部又は道路上に設けられた設備の地図である設備図を表すデータベースである。上記各データベースは、複数の層に区分された複数のデータからなり、それらのデータが重なり合って一つの地図を構成するものである。
【０００７】
各部のメンバーは、クライアント装置から、自分が属する部に対応して設けられたデータベースサーバ装置にアクセスして業務を進める。自分の部用のデータベースサーバ装置に記憶されていないデータについては、同じ支店内の他の部用のデータベースサーバ装置に記憶されたデータを使用する。上の例に見られるように、住宅地図データベース、道路地図データベースは、いずれの部用のデータベースサーバ装置にも記憶されているので、それぞれの部において多くのクライアント装置から検索要求がこれらのデータベースに対して発生することが予想されている。一方、市街図データベースは、第２部と第３部用のデータベースサーバ装置に記憶されているので、このデータベースに対する検索要求は、これらの部で発生することが予想されている。設備図データベース、地形図データベース、広域図データベースは、それぞれ第２部、第２部、第３部用のデータベースサーバ装置にしか記憶されていない。これらのデータベースに対する検索要求は、対応する部内のメンバーからしか発生しないと予想されていることを反映している。
【０００８】
負荷分散は、クライアント装置からの検索要求を複数のコンピュータに分散して投入することにより各コンピュータの負荷をなるべく均一に近いものにし、それでもって処理時間が極端に長いコンピュータが発生しないようにするものである。負荷分散の代表的な方法として、静的な負荷分散方法と動的な負荷分散方法が知られている。静的な負荷分散方法の例は、クライアント装置からの検索要求を複数の同等の処理性能を有するコンピュータに対して一定の順序で分配するものであり、個々のコンピュータの実際の負荷は検出されない。その方法の一例は、ラウンドロビン法であり、この方法では、クライアント装置からの検索要求を複数のコンピュータに対して一定の順序で巡回的に分配する。動的な負荷分散方法は、各コンピュータにおけるＣＰＵ負荷、Ｉ／Ｏ負荷などの負荷を監視、クライアント装置からの新たな検索要求を投入するときに、負荷がなるべく均等に近い状態に分散するように、投入先のコンピュータを動的に選択するものである。負荷分散に関する上記先行技術は当業者によく知られているので、これらの負荷分散に関する先行技術文献の記載は省略する。
【０００９】
【発明が解決しようとする課題】
上記不均一多重に記憶された複数のデータベースに対する多くの検索要求を迅速に処理してターンアランド時間を短くするには、できるだけ多くのデータベースサーバ装置に検索要求を分散して実行させ、それでもって処理時間を極端に大きくならないようにすることが望ましい。更に、その際、それぞれのデータベースサーバ装置の性能を低下させないで、できるだけ最大限の性能を出させるようにすることが望ましい。
【００１０】
ラウンドロビン法のような静的な負荷分散方法を複数のデータベースサーバ装置に適用するには、各データベースサーバ装置には、同じデータが記憶されていることが前提となっている。したがって、上に例示した地図データベースサーバ装置のように、データベースサーバ装置毎に、記憶されているデータの組合せが異なる不均一多重データベースの場合には、検索要求を単純に巡回的に異なるデータベースサーバ装置に分配することはできない。また、ラウンドロビン法を何らかの形態で適用しても効果が少ない。
【００１１】
更に、ラウンドロビン法は、各データベースサーバ装置に対する検索要求の処理負荷がほぼ均一であることが前提となっている。しかし、検索要求の処理負荷は、検索対象のデータベースにより異なるのが普通である。したがって、上に例示した地図データベースサーバ装置のように、同じデータベースサーバ装置に複数の地図データベースが記憶されているデータベースの場合には、各データベースサーバ装置に対する検索要求の処理負荷は、いずれの地図データベースに対する検索要求であるかにより異なる。したがって、同じ数の検索要求が各データベースサーバ装置に投入されても複数のデータベースサーバ装置の処理負荷は異なるため、ラウンドロビン方法では効果が期待できない。また、各データベースサーバ装置のハードウェア的な処理能力（ＣＰＵ、メモリ、ディスクの速度等）が異なる場合も同様に、ラウンドロビン方法では効果が期待できない。
【００１２】
一方、動的負荷分散を行う方法では、すべてのデータベースサーバ装置は必ずしも同等の性能を有している必要はないが、負荷をどのように予測するかが問題であり、現状では負荷の予測の精度に問題がある。更に、各データベースサーバ装置の負荷を監視し、かつ、投入すべき検索要求の負荷を予測するための処理負荷が大きくなり、結果的に、各データベースサーバ装置の性能が低下したのと同じような悪影響が発生し、検索要求の処理時間がさほど減少しないという問題もあり、動的な負荷分散は必ずしも効果がでるものではないという問題がある。
【００１３】
結局、従来技術では、不均一多重データベース対する新規の検索要求を、いずれのデータベースサーバ装置に投入するのがよいかを適切に決定することができない。
【００１４】
一般に、各データベースサーバ装置は、複数のスレッドを用いるマルチスレッド機能により異なる検索要求を並列に処理可能になっている。しかし、スレッド数の限界値を超えて検索要求が投入された場合には、当該データベースサーバ装置内に設けられた内部キューに受信した検索要求を登録し、待ち状態に維持する。このため、いずれかのデータベースサーバ装置に投入された検索要求が直ぐに実行されるとは限らず、当該データベースサーバ装置内で処理待ち状態に長い時間維持されるということが発生する。
【００１５】
このような待ち状態が発生した状態では、追加の検索要求を同じデータベースサーバ装置に投入しても同様に内部キューに登録されるだけであり、処理は開始されない。したがって、データベースサーバ装置内で検索要求を待ち状態に維持することは、見かけ上検索要求をデータベースサーバ装置に投入しただけであり、処理時間の短縮にならない。それどころか当該データベースサーバ装置が当該検索要求を処理可能になる前に、他のデータベースサーバ装置のほうが同じ検索要求を処理可能になる可能性があり、そのようになった場合には、検索要求を上記他のデータベースサーバ装置に投入するほうが処理速時間が減ることになる。したがって、上記先のデータベースサーバ装置に検索要求を投入したことがかえって当該検索要求の処理開始を遅らせることになり、結果として処理時間を増大していることになる。
【００１６】
本発明では、以上に述べた従来技術の問題を考慮して、複数のデータベースサーバ装置に不均一に多重に記憶された複数のデータベースに対する複数の検索要求を分散して投入でき、かつ、処理速度の悪化を簡単な方法で抑止可能にする、データベース検索プログラム、データベース検索方法及びデータベース検索装置を提供することを目的とする。
【００１７】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るデータベース検索プログラムは、以下のステップをコンピュータに実行させるようにプログラムされているものである。すなわち、複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成する。生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録する。
更に、前記共通キューに複数の分割検索要求が新に登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入する。
更に、いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了するのに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす分割検索要求を最も古いものから選択して当該データベースサーバ装置に投入する。
【００１８】
これにより、新規に発生した検索要求を分割して得られる複数の分割検索要求を複数のデータベースサーバ装置により並列に処理させることができ、更に、各データベースサーバ装置には、新規分割検索要求を並列に処理可能という条件下で投入するので、検索要求がいずれかのデータベースサーバ装置に投入された後、当該データベースサーバ装置内で待ち状態に維持されることを回避でき、結果として全ての分割検索要求の処理時間の増大を抑止することができ、ひいては検索要求の処理時間を短くすることができる。
【００１９】
【発明の実施の形態】
以下、本発明に係るデータベース検索プログラム、データベース検索方法及びデータベース検索装置のいくつかの実施の形態を説明する。なお、第２の実施の形態以降においては第１の実施の形態との相違点を説明するに止める。
【００２０】
＜発明の第１の実施の形態＞
図１は、本発明に係るデータベース検索プログラムを使用する情報検索システムの概略構成図である。情報検索システム１は、検索サーバ装置１０と、複数のデータベースサーバ装置２１、２２、２３、…と、それらを接続するイントラネットあるいはインターネットのようなネットワーク３０と、上記ネットワーク３０に接続された複数のクライアント装置４０とからなる。なお、図には簡単化のために一つのクライアント装置４０しか図示していないが、実際には複数のクライアント装置を使用できる。
【００２１】
データベースサーバ装置２１には、データベース管理プログラム（ＤＢＭＳ）２４とデータベース２７が記憶されている。データベース管理プログラム２４は、検索サーバ装置１０から送信されるデータベースに対する検索命令をデータベース２７に対して実行し、得られた検索結果を検索サーバ装置１０に返信するプログラムである。同様に、データベースサーバ装置２２にはデータベース管理プログラム２５とデータベース２８が記憶され、データベースサーバ装置２３にはデータベース管理プログラム２６とデータベース２９が記憶されている。
【００２２】
後に説明するように、検索サーバ装置１０内には、本発明に係るデータベース検索プログラムの一つの実施の形態が使用され、当該プログラムと検索サーバ装置１０により、本発明に係るデータベース検索方法の一つの実施の形態が使用され、検索サーバ装置１０により本発明に係るデータベース検索装置に一つの実施の形態が実現される。なお、検索サーバ装置１０は、複数のデータベースサーバ装置２１、２２、２３に共通に一つ設けられているが、複数の検索サーバ装置が設けられてもよい。
【００２３】
以下においては、各データベースサーバ装置２１等内に記憶されたデータベース２７等は、地図データベースであると仮定する。しかし、本発明は、そのようなデータベースに限定されるものではない。地図データベースは、例えば、特開２０００−８１８３９号明細書に記載されているように、一般に複数の層のデータからなり、かつ、地図上の領域は、複数の単位サイズのメッシュに区分され、メッシュ毎にそこに属する複数の層のデータが読み出し可能である。
【００２４】
利用者は、地図データベースを利用するときには、クライアント装置４０から、利用したい地図情報の種別、地図情報を利用したい領域を指定する情報、例えば、地番あるいは地域名を指定すると、データベース２７、２８又は２９から当該地番を含む一つのメッシュに属する複数の層のデータが読み出され、あるいは、上記指定された地域名の地域を構成する複数のメッシュのそれぞれについて、それぞれのメッシュに属する複数の層の情報が出力され、これらに複数の層の情報は、合成されてクライアント装置の表示画面に表示される。
【００２５】
以下では、簡単化のために、利用者が指定した検索要求は、一つのメッシュに属する地図情報の検索を要求した場合について説明する。利用者が指定した検索要求が複数のメッシュに属する地図情報の検索を要求する場合には、一つのメッシュに属する地図情報についての以下に述べる処理をメッシュの数だけ繰り返せばよい。なお、上記公開公報では、地図データベースに含まれた全ての層の情報のうち、出力させたい層を利用者が指定可能になっていているが、本実施の形態でもそのようにすることができる。
【００２６】
本実施の形態では、地図データベースとして、複数の種類の地図データベースを使用すると仮定する。例えば、従来の技術で述べた住宅地図データベース、道路地図データベース、設備図データベース等である。更に、各地図データベースは、複数の層に対する複数の層別データからなると仮定する。各データベースサーバ装置には、複数の地図データベースのそれぞれの複数の層別データが記憶される。同じ地図データベースが複数のデータベースサーバ装置に記憶されていてもよいが、一部の地図データベースは、一部のデータベースサーバ装置には記憶されていなくてもよい。
【００２７】
同じ地図データベースが異なるデータベースサーバ装置に記憶される場合でも、当該地図データベースを構成する複数の層別データのうち異なる組が、それらの複数のデータベースサーバ装置に記憶されてもよい。したがって、複数のデータベースサーバ装置２１、２２、２３に記憶されるデータベース２７、２８、２９は、そこに含まれている地図データベースの種類が一部異なってもよいが、同じものもあるという意味で不均一多重のデータベースである。更に、同じ地図データベースが複数のデータベースサーバ装置２１等に記憶される場合でも、記憶される層別データがデータベースサーバ装置により異なっていてもよいという意味でも、不均一多重データベースである。
【００２８】
本実施の形態では、このように複数の地図データベースが、不均一多重に複数のデータベースサーバ装置２１等に記憶されていると仮定して以下の説明をするが、本実施の形態で使用する技術は、各データベースサーバ装置２１等には、単一の地図データベースの異なる層の層別データが不均一多重に記憶されている場合にも同様に使用できる。
【００２９】
いずれの地図データベースを多重で記憶するか、多重で記憶する地図データベースを構成する複数の層別データのうち、いずれの層別データを多重で記憶するかは、それぞれの地図データベースの利用頻度及びそれぞれの層別データの使用頻度により決めることができる。
【００３０】
本実施の形態では、以下に詳細に説明するように、利用者からの検索要求を、それが要求するいずれかの地図データベースの複数の層別データの一つをそれぞれ要求する複数の分割検索要求に分割して、それぞれの分割検索要求を並列に処理する。その意味で、上記層別データは、検索要求の分割の単位となるデータであり、本明細書では、このようなデータの単位を分割単位データと呼ぶことにする。
【００３１】
データベースサーバ装置２１等は、マルチスレッド機能により複数の検索要求を一定の条件下で並列に処理可能になっている。分割単位データは、地図データベースの構成単位であり、かつ、少なくとも異なる分割単位データに関する複数の分割検索要求は複数のスレッドを用いて並列に処理可能であるものを分割単位データとする。
【００３２】
検索サーバ装置１０では、データベース検索プログラム５０が記憶され、実行される。データベース検索プログラム５０は、クライアント装置４０との通信を行うクライアント装置通信部５１と、クライアント装置４０から出力された検索要求を受け付け、受け付けた検索要求を複数の分割検索要求に分割する検索要求受付分解部５２と、各分割検索要求をいずれかのデータベースに投入する検索要求投入制御部５３と、データベースへの分割検索要求の投入可能性を判断する投入可能性判断部５４と、各データベースに対する分割検索要求の投入状況を監視するデータベース別投入状況監視部５５と、データベースサーバ装置との通信を行うデータベース通信部５６、利用者からの一つの検索要求から生成された複数の分割検索要求に対して複数のデータベースサーバ装置２１等から出力された複数の検索結果データを結合して利用者のクライアント装置４０に送信させる検索結果結合部５７等のプログラム部分を含む。
【００３３】
なお、検索サーバ装置１０からデータベースサーバ装置２１等へ分割検索要求を投入すると、データベースサーバ装置２１等内のデータベース管理プログラム２４が、当該分割検索要求を当該データベースサーバ装置２１等に記憶されたデータベースに処理させるが、本明細書では、検索サーバ装置１０からデータベースサーバ装置２１等へ分割検索要求を投入することを、単に当該データベースサーバ装置２１等に記憶されたデータベースへの分割検索要求の投入あるいは単にデータベースへの分割検索要求の投入と呼ぶことがある。
【００３４】
更に、データベース検索プログラム５０は、各データベースサーバ装置２１等内に設けられたデータベース２７等に含まれた分割単位データを示す分割単位データ配置情報６０と、データベース別投入状況監視部５５による監視により得られた各データベース別の分割検索要求の投入状況を示すデータベース別投入状況テーブル７０と、同じ利用者から出力された検索要求から分割により生成された分割検索要求を登録するための共通キュー８０と、同じ利用者から出力された検索要求から分割により生成された分割検索要求に対する複数の検索結果データ９１の受信状況を管理するための検索結果管理テーブル９０等の情報を含んでいる。
【００３５】
図２は、分割単位データ配置情報６０の例を示す図である。分割単位データ配置情報６０は、各データベースサーバ装置２１等内に設けられたデータベース２７等に含まれた分割単位データを示す情報である。図において、データベース＃フィールド６０１には、検索サーバ装置１０により検索可能なデータベース２７、２８、２９の番号ＤＢ＃１、ＤＢ＃２、ＤＢ＃３が記憶されている。図には、各データベース２７等の符号２７等も括弧内に記載されている。分割単位データ配置状況記憶フィールド６０２は、各データベース２７、２８、２９のそれぞれに、各分割単位データ＃の分割単位データが配置されているか否かを示す。各分割単位データ＃に対応して、○印が記憶されているか空白のままである。○印は、各データベース２７、２８、２９に、対応する分割単位データが配置されていることを示す。
【００３６】
図においては、分割単位データ＃１は、データベース２７、２８、２９のいずれにも含まれ、分割単位データ＃２は、データベース２８、２９に含まれ、分割単位データ＃３は、データベース２７、２９に含まれ、分割単位データ＃４と＃５は、データベース２７、２８に含まれている。分割単位データ＃６と＃８は、データベース２８のみに含まれ、分割単位データ＃７は、データベース２７のみに含まれ、分割単位データ＃９は、データベース２９のみに含まれている。
【００３７】
図２では、各分割単位データに対して優先度６０３が更に記憶されている。ここでは、各分割単位データに対応して優先度を当該分割単位データの多重度に逆比例して決められている。例えば図の例では、分割単位データ＃１は、３個のデータベースで処理可能であるので、優先度は１／３とする。分割単位データ＃２は２個のデータベースで処理可能であるので、優先度は１／２とする。分割単位データ＃７は、１個のデータベースでしか処理可能でないので優先度は１／１とする。このような優先度は、同時刻に共通キュー８０（図１）に登録された複数の分割検索要求がいずれかのデータベースに投入可能であるときに、そのデータベースに投入する一つの分割検索要求を選択する基準に使用することが可能である。
【００３８】
図３は、本実施の形態で使用可能なデータベース別投入状況テーブル７０の例を示す図である。データベース別投入状況テーブル７０は、データベース別投入状況監視部５５による監視により得られた各データベース別の分割検索要求の投入状況を示す。通常そうであるように、本実施の形態でも、各データベースサーバ装置２１等は、受信した複数の検索要求（本実施の形態では分割検索要求）をそれぞれ異なるスレッドを用いて処理する。各データベースサーバ装置毎に、使用可能なスレッド数の閾値が決まっており、本実施の形態では、当該データベースサーバ装置に投入された分割検索要求に対するスレッドの総数が、上記閾値を越えないとき、それらの分割検索要求は並列に処理されると仮定している。なお、使用可能なスレッドの総数の閾値と、並列に処理可能なスレッドの総数の閾値が異なるときには、後者の閾値を使用する。したがって、本実施の形態では、スレッドの総数の閾値は、並列に処理可能なスレッドの総数の閾値である。
【００３９】
データベース別投入状況テーブル７０には、各データベース２７、２８、２９に対応して当該データベースで並列に処理可能なスレッドの総数の閾値を記憶するフィールド７０１と、投入済み分割検索要求数を記憶するフィールド７０２と、対応するデータベースが分割検索要求の新規投入を禁止する状態にあるか否かを示す投入禁止フラグが記憶されるフィールド７０３とが設けられている。当該フラグは値が１のときには、投入禁止状態を示す。
【００４０】
データベース別投入状況監視部５５は、各データベース２７等が記憶されているデータベースサーバ装置２１等により定められた並列に処理可能なスレッドの総数の閾値をデータベース別投入状況テーブル７０のフィールド７０１に初期値として記憶する。更に、検索要求投入制御部５３により新たな分割検索要求がいずれかのデータベースに投入されたとき、当該データベースに対応するフィールド７０２内の投入済み分割検索要求数を１だけ増大する。
【００４１】
更に、いずれかのデータベースサーバ装置２１等において、投入済みのいずれかの分割検索要求の処理が終了したとき、当該データベースサーバ装置２１等が検索結果データを検索サーバ装置１０に送信する。検索サーバ装置１０では、データベース通信部５６が検索結果データを受信すると、データベース通信部５６は、この検索結果データを検索結果結合部５７に通知し、更に検索結果データの受信と送信元のデータベースサーバ装置の識別情報とを検索要求投入制御部５３とデータベース別投入状況監視部５５に通知する。データベース別投入状況監視部５５は、この通知を受信すると、当該データベースサーバ装置に含まれたデータベースに対応する、フィールド７０２内の投入済み分割検索要求数を１だけ減少する。
【００４２】
データベース別投入状況監視部５５は、いずれかのデータベースに対するフィールド７０２内の投入済み分割検索要求数が変更されたときに、当該フィールド７０２内の投入済み分割検索要求数と同じデータベースに対するフィールド７０１内のスレッド総数の閾値とを比較し、フィールド７０２内の投入済み分割検索要求数がフィールド７０１内のスレッド総数の閾値と等しくなったとき、同じデータベースに対するフィールド７０３内の投入禁止フラッグを１に設定する。
【００４３】
一方、フィールド７０２内の投入済み分割検索要求数がフィールド７０１内のスレッド総数の閾値以下になったときには、同じデータベースに対するフィールド７０３内の投入禁止フラッグを０に設定する。こうして、投入禁止フラグが０であるデータベースに対しては、新たな分割検索要求を投入することができ、更に当該新たな分割検索要求は、投入されると、同じデータベースに投入済みの複数の分割検索要求と並列に処理されることになる。
【００４４】
通常のデータベースサーバ装置は、上記閾値を超える数の検索要求を受けたときには、受けた検索要求を当該データベースサーバ装置内の図示しない内部キューに登録する。しかし、本実施の形態では、データベースサーバ装置２１等の内部に分割検索要求を待ち状態に維持することを回避するために、当該データベースサーバ装置２１等により使用されているスレッドの総数が上記閾値に達したときには、検索要求投入制御部５３は、当該データベースサーバ装置２１等には新たな分割検索要求を投入しないようになっている。
【００４５】
本実施の形態では、各データベースサーバ装置２１等は、それが定めたスレッド総数の閾値を超えない範囲では、複数のスレッドを用いて複数の分割検索要求を並列に処理可能であると仮定している。したがって、本実施の形態では、各データベースサーバ装置２１等に投入される複数の分割検索要求は、投入されると、既に投入済みの分割検索要求と並列に処理される。すなわち、検索要求投入制御部５３は、新規分割検索要求をデータベースサーバ装置２１等に投入するときには、当該分割検索要求は、当該データベースサーバ装置２１等で処理可能であるという処理可能条件（すなわち、当該分割検索要求が要求する分割単位データが当該データベースサーバ装置２１等に記憶されたデータベース２７等に含まれている）と、当該新規の分割検索要求は、投入済みの分割検索要求と並列に処理されるという並列処理可能性条件を満すことを確認して投入されるようになっている。
【００４６】
図４は、クライアント装置４０の概略ブロック図である。クライアント装置４０は、処理装置４１、マウス等のポインティングデバイス及びキーボード等のデータ入力部を含む入力装置４２と、ＣＲＴ等の表示装置４３を備え、処理装置４１では、地図表示プログラム４４とウェブブラウザプログラム４５とが実行される。地図表示プログラム４４は、検索制御処理部４４１と、地図情報表示処理部４４２等を含んでいる。クライアント装置４０では、利用者は、検索制御処理部４４１により、検索すべき地図データベースの名称と、当該地図データベース内の表示されるべき地域を指定する情報を入力し、入力された情報は、検索制御処理部４４１により検索サーバ装置１０に送信される。地図情報表示処理部４４２は、検索サーバ装置１０から送信される一連の検索結果データを受信して、それぞれのデータが示す地図情報を生成して、それらの地図情報を重畳して表示装置４３に表示させる。
【００４７】
利用者により指示された検索要求は、以下のように処理される。検索サーバ装置１０では、クライアント装置通信部５１が、クライアント装置４０から検索要求を受信すると、利用者に利用者識別番号（利用者ＩＤ）を割り当て、検索要求受付分解部５２に受信された検索要求と利用者ＩＤと検索要求を受信した時刻（要求受信時刻）を転送する。検索要求受付分解部５２は、受信された検索要求を受け付け、要求登録番号を割り当て、受け付けた検索要求を検索結果管理テーブル９０に登録する。検索結果管理テーブル９０の内容は後に説明する。更に、検索要求受付分解部５２は、当該検索要求を複数の分割検索要求に分解し、当該要求登録番号と、当該複数の分割検索要求と、利用者ＩＤと、要求受付時刻とを共通キュー８０に登録する。各分割検索要求は、検索対象とする分割単位データを指定する情報その他の検索に使用される情報を含んでいる。
【００４８】
図５は、共通キュー８０の例を示す図である。図において、８０１、８０２、８０３、…は、それぞれ一つの検索要求を分割して得られた複数の検索要求を記憶する領域であり、領域８０１、８０２、８０３、…の順に、受信時刻の古い検索要求に関する情報を記憶する。各領域８０１等には、要求登録番号を記憶するフィールド８１１と、検索要求を発行した利用者に割り当てられた利用者識別情報（図では単にＩＤ１、ＩＤ２、等で示している）を記憶するフィールド８１２と、複数の分割単位データに対応してそれぞれの分割単位データを要求する複数の分割検索要求を記憶するフィールド８１３と、複数の分割検索要求の元となる検索要求がクライアント通信部５１により受信されたときの時刻を示す要求受信時刻を記憶するフィールド８１４とが含まれている。なお、要求受信時刻には、他の時刻、例えば、検索要求が検索要求受付分解部により複数の検索要求に分解され、それらの分割検索要求が共通キュー８０に登録された時刻を使用してもよい。
【００４９】
図では、第１の検索要求の利用者ＩＤはＩＤ１であり、第２の検索要求の利用者ＩＤはＩＤ２であることが分かる。フィールド８１３には、複数の分割単位データのうち分割検索要求がある分割単位データに対しては○印が記憶されている。第１の検索要求から分割単位データ＃１、３、５、６に対する４つの分割検索要求が生成され登録されている。同様に、第２の検索要求から分割単位データ＃２、３、４、６、８に対する５つの分割検索要求が生成され登録されている。
【００５０】
図６は、検索要求投入制御部５３の処理の一部の概略フローチャートである。図７は、検索要求投入制御部５３の処理の他の部分の概略フローチャートである。検索要求投入制御部５３では、まず、いずれかのデータベースサーバ装置２１等に投入済みの分割検索要求の処理が終了したか否かがチェックされる（ステップＳ５３１）。いずれかのデータベースサーバ装置２１等で投入済みの分割検索要求の処理が終了したときには、既に述べたように、検索結果が検索サーバ装置１０に通知され、検索要求投入制御部５３にも当該データベースサーバ装置２１等からの検索結果の受信が通知されるので、検索要求投入制御部５３は、上記受信の通知があったときに投入済みの分割検索要求の処理が終了したことを知ることができる。
【００５１】
ステップＳ５３１においていずれかのデータベースに投入済みの分割検索要求の処理が終了していないと判断されたときには、処理はステップＳ５３７に移る。ステップＳ５３１においていずれかのデータベースに投入済みの分割検索要求の処理が終了したと判断されたときには、その終了に同期して、以下のようにして、共通キュー８０にある複数の分割検索要求の中から、当該データベースに投入可能な分割検索要求を最も古い検索要求を優先して検出する。
【００５２】
具体的には、共通キュー８０にある最も古い分割検索要求を指定するために、例えば、最も古い要求登録番号８１１（図５）を引数に指定し、更に当該データベースとを引数に指定して投入可能性判断部５４を呼び出し（ステップＳ５３２）、投入可能性判断部５４により当該要求登録番号を有する分割検索要求が当該データベースに投入可能か否かを判断させる。
【００５３】
投入可能性判断部５４は、引数でデータベースと要求登録番号が指定された場合、当該要求登録番号を有する一つ又は複数の分割検索要求を共通キュー８０から読み出し、複数の分割検索要求が読み出されたときには、当該複数の分割検索要求のうち引数で指定された当該データベースに対して投入可能な分割検索要求を検出する。ここで、投入可能な分割検索要求とは、当該分割検索要求が要求する分割単位データが上記引数で指定されたデータベースに含まれ、したがって当該分割検索要求が当該データベースで処理可能であるという処理可能条件を満たすものである。更に、当該データベースの投入禁止フラグ７０３（図３）がオフであることであり、したがって、当該分割検索要求は、当該データベースに投入しても、当該データベースに投入済みの他の分割検索要求と並列に処理可能であるという並列処理可能条件とを満たすことになる。
【００５４】
投入可能性判断部５４は、複数の分割検索要求が投入可能と判断したときには、それらの複数の投入可能な分割検索要求の一つをあらかじめ定めた基準で選択するようになっている。この選択基準は、例えば、図２に示された優先度６０３を使用することができる。すなわち、投入先のデータベースに含まれる複数の分割単位データのうちで最も優先度の高い分割単位データを要求する分割検索要求を選択すればよい。
【００５５】
優先度の高い分割単位データほど、他のデータベースサーバ装置に含まれていないので、その分割単位データを要求する分割検索要求が他のデータベースで処理される可能性は、優先度の低い分割単位データより低い。したがって、投入可能と判断された複数の分割検索要求のうち、優先度が高い分割単位データを要求する分割検索要求を先に投入することが望ましいと推測される。なお、最も優先度の高い分割単位データを要求する分割検索要求が複数個あるときには、適当な方法でそれらの一つを選択すればよい。
【００５６】
投入可能性判断部５４は、検索要求投入制御部５３から先に通知された要求登録番号と上記選択された一つの分割検索要求を識別する情報（例えば当該分割検索要求が要求する分割単位データの番号）と、検索要求投入制御部５３から先に通知された投入先のデータベースの識別情報とを一緒に検索要求投入制御部５３に通知するようになっている。
【００５７】
検索要求投入制御部５３では、ステップＳ５３３において、投入可能性判断部５４により投入可能な分割検索要求が検出されたか否かを判断する。投入可能な分割検索要求が一つも検出されなかったときには、次に古い要求登録番号の分割検索要求が共通キュー８０に登録されているかを判断し（ステップＳ５３４）、登録されている場合には、共通キュー８０に登録されている当該次に古い要求登録番号を有する一つ又は複数の分割検索要求を処理対象に変更して（ステップＳ５３５）、それらの分割検索要求について上記ステップＳ５３２以降を繰り返させる。ステップＳ５３４において共通キュー８０に当該次に古い要求登録番号の分割検索要求が登録されていないと判断された場合（ステップＳ５３４でＮｏ）、処理は、ステップＳ５３７に移る。
【００５８】
ステップＳ５３３において、投入可能性判断部５４により投入可能な分割検索要求が検出されたと判断されたときには、投入可能性判断部５４により通知された当該投入可能な分割検索要求を共通キュー８０より取り出し、上記処理が終了したデータベースを記憶するデータベースサーバ装置２１等に投入する（ステップＳ５３６）。その後処理はステップＳ５３７に移る。
【００５９】
ステップＳ５３７では、新たな分割検索要求が共通キュー８０に登録されたか否かを判断する。ここで、新たに登録された分割検索要求とは、検索要求投入制御部５３により記憶されているチェック済み要求受信時刻以降の時刻にクライアント通信部５１により受信され、分割により得られた複数の分割検索要求が共通キュー８０に登録されている分割検索要求である。後に説明するように、検索要求投入制御部５３は、共通キュー８０に登録された分割検索要求について最も古く登録された分割検索要求から順にいずれかのデータベースに投入可能か否かをチェックする。上記チェック済み要求受信時刻は、検索要求投入制御部５３により投入可能性をチェックさせた分割検索要求のうち、最新に共通キュー８０に登録された分割検索要求がクライアント通信部５１により受信された時刻である。検索要求投入制御部５３が共通キュー８０に新たに登録された分割検索要求の投入可能性をその後チェックするときには、上記時刻以降の要求受信時刻８１４（図５）を有する分割検索要求をチェックすればよい。
【００６０】
ステップＳ５３７で新たな分割検索要求が共通キュー８０に登録されていないと判断された場合には、処理はステップＳ５３１に移る。ステップＳ５３７において新たな分割検索要求が登録されていると判断された場合、チェック済み要求受信時刻として、当該新たに登録されていると判断された最も古い分割検索要求がクライアント通信部５１により受信された時刻を記憶する（図７のステップＳ５３８）。その後、共通キュー８０に新たに登録されていると判断された当該最も古い時刻に受信された分割検索要求の要求登録番号を引数に指定して投入可能性判断部５４を呼び出し（ステップＳ５３９）、投入可能性判断部５４により、その要求登録番号を有する分割検索要求がいずれかのデータベースに投入可能か否かを判断させる。同時に共通キュー８０に登録された複数の分割検索要求がある場合には、投入可能性判断部５４は、それぞれの分割検索要求がいずれかのデータベースに投入可能か否かを同時に判断する。
【００６１】
投入可能性判断部５４は、引数で要求登録番号が指定されてはいるが、ステップＳ５３２で呼び出されたときと異なり、投入先のデータベースが引数に指定されていない場合には、全てのデータベースから投入可能な状態にあるデータベースを検出し、それらの投入可能な状態にあるデータベースに投入可能な分割検索要求を選択する。
【００６２】
すなわち、当該要求登録番号を有する一つ又は複数の分割検索要求を共通キュー８０から読み出し、複数の分割検索要求が読み出されたときには、当該複数の分割検索要求のうちいずれかのデータベースに投入可能な分割検索要求を検出する。ここで、投入可能なデータベースとは、当該分割検索要求が要求する分割単位データを含んでいるデータベースであり（処理可能条件）、更に、当該データベースの投入禁止フラグ７０３（図３）がオフであること、すなわち、当該データベースが並列処理可能条件を満たすことである。
【００６３】
ステップＳ５３２により呼び出された場合に説明したように、投入可能性判断部５４は、複数の分割検索要求が投入可能と判断したときには、それらの複数の投入可能な分割検索要求の一つをあらかじめ定めた基準で選択する。この選択基準は、例えば、図２に示された優先度６０３を使用することができる。すなわち、優先度の高い分割単位データほど、他のデータベースサーバ装置に含まれていないので、その分割単位データを要求する分割検索要求は他のデータベースで処理される可能性が優先度の低い分割単位データよりも低い。したがって、投入可能と判断された複数の分割検索要求のうち、優先度が高い分割単位データを要求する分割検索要求を先に投入することが望ましいと推測される。なお、最も優先度の高い分割単位データを要求する分割検索要求が複数個あるときには、適当な方法でそれらの一つを選択すればよい。
【００６４】
投入可能性判断部５４は、検索要求投入制御部５３から先に通知された要求登録番号と上記選択された一つの分割検索要求を識別する情報（例えば当該分割検索要求が要求する分割単位データの番号）と、投入可能と判断した投入先のデータベースの識別情報とを一緒に検索要求投入制御部５３に通知するようになっている。
【００６５】
検索要求投入制御部５３では、投入可能性判断部５４により投入可能な分割検索要求が検出されたか否かが判断される（ステップＳ５４０）。投入可能な分割検索要求が一つも検出されなかったときには、共通キュー８０に新たに登録された次に古い要求登録番号を有する分割検索要求があるか否かが判断され（ステップＳ５４１）、登録されている場合には、共通キュー８０に登録されている当該次に古い要求登録番号を有する複数の分割検索要求を処理対象に変更し（ステップＳ５４２）、その後、処理はステップＳ５３８に移る。
【００６６】
ステップＳ５３８では、チェック済み要求受信時刻として、処理対象に変更された登録番号を有する分割検索要求の要求受信時刻８１４（図５）が記憶され、更に、処理対象に変更されたそれぞれの分割検索要求についてステップＳ５３９以降を繰り返される。なお、ステップＳ５４１において、共通キュー８０に当該次に古い分割検索要求が登録されていないと判断された場合（ステップＳ５４１でＮｏ）、処理は、ステップＳ５３１（図６）に移る。
【００６７】
ステップＳ５４０において投入可能性判断部５４により投入可能な分割検索要求が検出されたと判断されたときには、投入可能性判断部５４により通知された当該投入可能な分割検索要求を共通キュー８０より取り出し、当該投入可能性判断部５４より通知される投入可能なデータベースを記憶するデータベースサーバ装置に投入する（ステップＳ５４３）。その後処理はステップＳ５３１に移る。
【００６８】
こうして、既にいずれかのデータベースに投入済みの分割検索要求の処理が終了する毎に、投入待ちの分割検索要求から投入可能な分割検索要求が選択されて投入される。したがって、処理が終了したデータベースでは、既に投入された処理中の分割検索要求と並行して新たに投入される分割検索要求も処理されるので、当該データベースを記憶するデータベースサーバ装置の処理速度は低下することはない。しかも、当該データベースには一つの分割検索要求の処理が終了した後に新たに分割検索要求が投入されるので、その処理負荷は格段には増大しないことが分かる。
【００６９】
また、新たにクライアント装置から検索要求が新たに受信され複数の分割検索要求が新たに共通キュー８０に登録される毎に、それらの内の投入可能な分割検索要求が検出され、そのような分割検索要求があれば当該分割検索要求が適当なデータベースに投入される。このときにも投入条件として、投入先のデータベースに対する投入禁止フラグがオフであり、したがって、新たな分割検索要求を追加して投入しても、当該分割検索要求は既に投入済みの分割検索要求と並列に処理されるので、処理速度が低下しないことが期待される。
【００７０】
図８は、いずれかの検索要求に対する検索結果管理テーブル９０の例を示す図である。検索結果管理テーブル９０は、検索要求受付分解部５２によりいずれかの検索要求が受け付けられたときに、当該検索要求に対して検索要求受付分解部５２により生成される。他の検索要求に対しても同様に検索結果管理テーブル９０が生成されるが、図では一つの検索結果管理テーブル９０のみを例示している。
【００７１】
検索結果管理テーブル９０には、利用者ＩＤを記憶するフィールド９０１、要求登録番号を記憶するフィールド９０２、各分割単位データに対する分割検索要求の有無を表す要求フラグを記憶するフィールド９０３、分割検索要求の総数を記憶するフィールド９０４、各分割検索要求による検索が終了したか否かを示す完了フラグを記憶するフィールド９０５、未完了の分割検索要求の総数（未完了数）を記憶するフィールド９０６、検索が完了した分割検索要求により取得された検索結果データが記憶されている検索サーバ装置１０のメモリのアドレス（検索結果データポインタ）を記憶するフィールド９０７等が設けられる。検索結果管理テーブル９０の更新は、検索結果結合部５７により管理される。
【００７２】
検索結果管理テーブル９０が検索要求受付分解部５２により生成されたときには、上記フィールド９０１には、利用者ＩＤが記憶され、上記フィールド９０２には、その検索要求に対して割り当てられた要求登録番号が記憶され、上記フィールド９０３では、当該検索要求から生成された複数の分割検索要求に対応するフラグが１に設定される。上記フィールド９０４には生成された分割検索要求の総数が記憶され、上記フィールド９０５には各分割検索要求に対する完了フラグの初期値として値０が記憶され、上記フィールド９０６には未完了数の初期値としてフィールド９０４の分割検索要求の総数が記憶される。上記フィールド９０７には、この時点では何も記憶されない。
【００７３】
各分割検索要求に対する検索結果データ９１には、同図（ｂ）に示すように、分割検索要求を発行した利用者の識別情報（利用者ＩＤ）９１１と、分割検索要求が要求した分割単位データの番号９１２と、検索で得られたデータ９１４のデータ長９１３と、当該データ９１４とが含まれる。
【００７４】
利用者ＩＤ（９１１）は、検索要求投入制御部５３が、分割検索要求をいずれかのデータベースサーバ装置に投入するときに、その分割検索要求に対して共通キュー８０に記憶されていた利用者ＩＤが分割検索要求と一緒に投入され、投入先のデータベースサーバ装置２１等は、検索で得られた検索結果データを検索サーバ装置１０に戻すときに、検索結果データに上記利用者ＩＤを付すようになっている。検索結果データ９１内の分割単位データの番号９１２は、いずれかのデータベースサーバ装置に投入された分割検索要求内に含まれているものであり、投入先のデータベースサーバ装置は、検索で得られた検索結果データを検索サーバ装置１０に戻すときに、検索結果データに上記分割単位データの番号９１２を付すようになっている。
【００７５】
図９は、検索結果結合部５７の処理の概略フローチャートである。まず、いずれかのデータベースからいずれかの分割検索要求が要求した検索に対する検索結果データが受信されたか否かをチェックする（ステップＳ５７１）。受信されていない場合には、同じステップＳ５７１を繰り返す。受信された場合には、当該検索結果データに付加された利用者ＩＤに対する検索完了管理テーブル内の、当該検索結果データに付加されている分割単位データ＃に対応して検索結果データポインタ９０７（図８）に、受信された検索結果データのアドレス（当該検索結果データが記憶されている、検索サーバ装置１０内の図示しないメモリのアドレス）を記憶する（ステップＳ５７２）。同様に、分割単位データ＃に対応する検索完了フラグ９０５をオンにし（ステップＳ５７３）、更に、上記テーブル内の未完了数９０６を１だけ減少する（ステップＳ５７４）。
【００７６】
更に、未完了数９０６が０であるか否かが判定され（ステップＳ５７５）、未完了数９０６が０でないときには、処理はステップＳ５７１に戻り、新たな検索結果データの受信待ちになる。ステップＳ５７５において未完了数９０６が０であると判断されたときには、フィールド９０８に記憶された複数の検索結果データポインタを用いて複数の検索結果データ９１、…を検索サーバ装置１０内の図示しないメモリから読み出し、それらの検索結果データ９１、…にフィールド９０１に記憶された利用者ＩＤを付加してクライアント装置通信部５１に出力し（ステップＳ５７６）、更に、当該検索結果管理テーブル９０を削除し（ステップＳ５７７）、その後、処理はステップＳ５７１に戻る。
【００７７】
クライアント装置通信部５１は、出力された複数の検索結果データに付加された利用者ＩＤに基づいて、送信先のクライアント装置４０を決定し、そこに一連の検索結果データ９１をまとめて送信する。クライアント装置４０では、図４に示したように、地図情報表示処理部４４２が、上記一連の検索結果データを受信して、それぞれのデータが示す地図情報を生成して、それらの地図情報を重畳して表示装置４３に表示させる。
【００７８】
以上のようにして、複数のデータベースサーバ装置２１等に不均一に多重に分散して記憶された複数の分割単位データに対する検索を要求する検索要求を複数の分割検索要求に分割し、各データベースサーバ装置２１等の性能を落とさないという条件下で、可能な限り多くの分割検索要求を並列に処理させることが可能になり、検索要求自体の処理速度も低下しない。
【００７９】
＜発明の第２の実施の形態＞
上記第１の実施の形態では、各データベースサーバ装置に対する投入可能なスレッドの総数の閾値以下のスレッドを使用する限り、複数の分割検索要求は並列に処理されると仮定した。しかし、実際のデータベースサーバ装置では、スレッドの総数の閾値を超えていなくても、投入しようとする分割検索要求と投入済みの分割検索要求との関係に依っては、前者は後者に対して並列に処理できない場合がある。
【００８０】
例えば、投入しようとする後続の分割検索要求が要求する分割単位データが、投入済みのいずれかの先行する分割検索要求が使用している分割単位データと一致するときには、当該先行する分割検索要求によるその分割単位データの使用が終了するまでは、上記後続の分割検索要求を当該分割検索要求と並列に処理できないことがある。このため、上記後続の分割検索要求を投入すると、当該分割単位データが記憶されているデータベースサーバ装置内に設けられ待ちキューに登録されてしまう。
【００８１】
したがって、本実施の形態では、投入可能性を判断するときに、投入先のデータベースサーバ装置により実施される並列処理可能性をより忠実に反映した、データベース検索プログラム、データベース検索方法及びデータベース検索装置を示す。より具体的には、本実施の形態では、投入済みの複数の先行する分割検索要求と、投入しようとする後続の分割検索要求の関係をチェックして、当該後続の分割検索要求が先行する分割検索要求と並列に処理可能であるかを判断可能にする。
【００８２】
図１０は、本実施の形態で使用可能なデータベース別投入状況テーブル７０Ａの例を示す図である。データベース別投入状況テーブル７０Ａには、図３に示されたデータベース別投入状況テーブル７０と同様に、フィールド７０１から７０３が設けられ、更に、各データベースに対応して当該データベース内の分割単位データが使用中か否かを指示する分割単位データ使用中フラグを記憶するフィールド７０４が設けられている。ただし、フィールド７０２に記憶されたスレッド数の総数は、各データベースが同時に使用可能なスレッドの総数の閾値であり、その閾値以下のスレッドは並列に処理されるか否かは関係なく定めてよい。
【００８３】
フィールド７０４には、投入済みのいずれかの分割検索要求が使用する分割単位データに対して値１が記憶される。データベース別投入状況監視部５５（図１）は、検索要求投入制御部５３により、いずれかの分割検索要求がいずれかのデータベースに投入されたときに、データベース別投入状況テーブル７０Ａ内の当該データベースに対応するフィールド７０３の当該分割検索要求が要求する分割単位データに対してフラグ１を記憶する。更に、いずれかのデータベースでいずれかの分割検索要求の処理が終了したときには、データベース別投入状況テーブル７０Ａ内の当該データベースに対応するフィールド７０３の当該分割検索要求が要求する分割単位データに対するフラグの値を０に変更する。
【００８４】
本実施の形態では、投入可能性判断部５４は、分割検索要求が以下の２つの条件を満たすとき、分割検索要求を投入可能と判断する。まず、第１の条件は、第１の実施の形態と同じく、投入しようとする分割検索要求が要求する分割単位データが投入先のデータベースに含まれていることである（処理可能条件）。更に、投入先のデータベースの並列処理可能条件をチェックする。この並列処理可能条件は２つの条件からなる。まず、第１の条件は、フィールド７０２内の投入済み分割検索要求数が、フィールド７０１のスレッドの総数の閾値を超えていないこと、したがって、フィールド７０３の投入禁止フラグが０であることである。すなわち、投入先データベースが、新たな分割検索要求を投入可能な状態にあることである。更に、第２の条件は、投入しようとする分割検索要求が要求する分割単位データが、データベース別投入状況テーブル７０Ａ内の、投入先のデータベースに対するフィールド７０４に記憶された使用中の分割単位データと一致しないことである。この条件が満たされると、投入しようとする分割検索要求が要求する分割単位データが、投入済みの分割検索要求が使用中の分割単位データと衝突しないので、投入しようとする分割検索要求は、投入済みの分割検索要求と並列に処理されることが分かる。
【００８５】
このように投入可能性を判断することにより、単に使用中のスレッド数だけではなく、先行する分割検索要求と後続の投入しようとする分割検索要求について、それらが要求する分割単位データの衝突が発生しているか否かを判断することが可能になる。すなわち、投入先のデータベースサーバ装置が行う、並列処理可能条件を満たすか否かのチェックを投入可能性判断部５４に行わせることにより、検索サーバ装置１０がより正確に並列処理可能条件が満たすか否かを判断でき、各データベースサーバ装置２１等の性能を落とさないで多数の分割検索要求を処理させることが可能になる。
【００８６】
なお、各データベースサーバ装置で、新たな分割検索要求を新たなスレッドとして処理開始するか否かを決める場合に、処理中の分割検索要求により使用されている分割単位データと、処理を開始しようとする後続の分割検索要求が使用する分割単位データとの衝突の有無とは異なる条件を考慮する場合もある。例えば、分割検索要求によりある分割単位データが使用されると言っても、実際には、当該分割単位データが更に複数の部分領域に区分され、それらの部分領域の一つのみである場合がある。
【００８７】
先行する分割検索要求と後続の分割検索要求が同じ分割単位データを要求すると言っても、当該分割単位データ内の異なる部分領域を要求する場合には、それらの分割検索要求は並列に処理可能とされる場合もある。このような場合には、データベース別投入状況テーブル７０Ａ内の分割単位データ使用中フラグ７０４には各分割単位データの複数の部分領域に対応して使用中か否かの状態を示すフラグを記憶させ、先行する分割検索要求と後続の分割検索要求が同じ分割単位データの同じ部分領域を要求するか否かによって、後続の分割検索要求を先行する分割検索要求と並列に処理可能であるか否かを判断するようにすればよい。
【００８８】
＜発明の第３の実施の形態＞
以上の実施の形態では、検索結果結合部５７により、同じ利用者からの検索要求から生成された複数の分割検索要求に対する複数の検索結果データが全て得られたことを検索結果結合部５７により確認して、その後、それらの検索結果データは、まとめて要求元のクライアント装置４０に転送された。
【００８９】
本実施の形態では、上記複数の検索結果データをまとめないで、それぞれの検索結果データが得られる毎に、得られた検索結果データを要求元のクライアント装置に送信する、データベース検索プログラム、データベース検索方法及びデータベース検索装置を示す。
【００９０】
すなわち、第１の実施の形態で使用した、検索結果結合部５７、検索結果管理テーブル９０を検索サーバ装置１０上では使用しないで、いずれかのデータベースサーバ装置によりいずれかの検索結果データが得られる毎に、得られた検索結果データを当該データベースサーバ装置から要求元のクライアント装置に検索サーバ装置１０を経由しないで直接送信させる。このために、検索サーバ装置１０は、いずれかの分割検索要求をいずれかのデータベースサーバ装置に投入するときには、利用者ＩＤとクライアント装置のＩＰアドレスを当該分割検索要求と一緒に当該データベースサーバ装置に送信する。
【００９１】
いずれかのデータベースサーバ装置２１等でいずれかの分割検索要求に対して検索結果データが得られたときには、当該データベースサーバ装置は、当該分割検索要求に対して受信したクライアント装置のＩＰアドレスを用いて当該検索結果データを要求元のクライアント装置にネットワーク３０を介して送信するとともに、検索サーバ装置１０に当該分割検索要求の処理を終えたことを通知する。
【００９２】
検索サーバ装置１０は、この通知を受けて、第１の実施の形態と同じく、新たな分割検索要求を当該データベースサーバ装置に投入することができる。クライアント装置４０には、上記検索結果結合部５７、検索結果管理テーブル９０を設けて、上記検索結果結合部５７により、得られた複数の検索結果データを監視させ、それらの検索結果データを地図情報表示処理部４４２（図４）により表示させればよい。
【００９３】
【発明の効果】
以上述べたように、本発明によれば、新規に発生した検索要求を分割して得られる複数の分割検索要求を複数のデータベースサーバ装置により並列に処理させることができ、更に、各データベースサーバ装置には、新規分割検索要求を並列に処理可能という条件下で投入するので、検索要求がいずれかのデータベースサーバ装置に投入された後、当該データベースサーバ装置内で待ち状態に維持されることを回避でき、結果として全ての分割検索要求の処理時間の増大を抑止することができ、ひいては検索要求の処理時間を短くすることができる。
【図面の簡単な説明】
【図１】本発明に係るデータベース検索プログラムの一つの実施の形態を使用する情報検索システムの概略構成図である。
【図２】分割単位データ配置情報の例を示す図である。
【図３】データベース別投入状況テーブルの例を示す図である。
【図４】クライアント装置の概略ブロック図である。
【図５】共通キューの例を示す図である。
【図６】検索要求投入制御部の処理の一部の概略フローチャートである。
【図７】検索要求投入制御部の処理の他の部分の概略フローチャートである。
【図８】検索結果管理テーブルの例を示す図である。
【図９】検索結果結合部の処理の概略フローチャートである。
【図１０】第２の実施の形態で使用可能なデータベース別投入状況テーブルの例を示す図である。
【図１】
2004102631.tif 000003
【図２】
2004102631.tif 000004
【図３】
2004102631.tif 000005
【図４】
2004102631.tif 000006
【図５】
2004102631.tif 000007
【図６】
2004102631.tif 000008
【図７】
2004102631.tif 000009
【図８】
2004102631.tif 000010
【図９】
2004102631.tif 000011
【図１０】
2004102631.tif 000012