JP2004102631A - Database retrieving program, data base retrieval method and database retrieval device - Google Patents

Database retrieving program, data base retrieval method and database retrieval device Download PDF

Info

Publication number
JP2004102631A
JP2004102631A JP2002263396A JP2002263396A JP2004102631A JP 2004102631 A JP2004102631 A JP 2004102631A JP 2002263396 A JP2002263396 A JP 2002263396A JP 2002263396 A JP2002263396 A JP 2002263396A JP 2004102631 A JP2004102631 A JP 2004102631A
Authority
JP
Japan
Prior art keywords
divided
database
search
search request
database server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002263396A
Other languages
Japanese (ja)
Other versions
JP4021287B2 (en
Inventor
Yasushi Tsukahara
塚原 裕史
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2002263396A priority Critical patent/JP4021287B2/en
Publication of JP2004102631A publication Critical patent/JP2004102631A/en
Application granted granted Critical
Publication of JP4021287B2 publication Critical patent/JP4021287B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To suppress the deterioration of the processing speed of a retrieval request for a non-uniform multiple database by a simple method. <P>SOLUTION: A retrieval request for a non-uniform multiple DB 27 or the like is divided by a retrieval request reception decomposing part 52, and a plurality of divided retrieval requests for a plurality of division unit data are generated, and registered in a common queue 80 in the order of the receiving time of the retrieval request. When the processing of the divided retrieval request newly registered in the common queue or the already inputted divided retrieval request is ended by any DB server device, whether or not any DB server device or the DB server in which the processing is ended fulfills a condition that the oldest divided retrieval request registered in the common queue is processable and a condition that the divided retrieval request is processable in parallel with another divided retrieval request under processing is decided. When those conditions are fulfilled, the divided retrieval request is inputted to the DB server device. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、複数のデータベースサーバ装置に不均一に多重に記憶されたデータベースをアクセスするための、データベース検索プログラム、データベース検索方法及びデータベース検索装置に関する。
【0002】
【従来の技術】
インターネットあるいはイントラネットなどのネットワーク上に構築された情報検索システムでは、データベースを記憶しデータベースへのアクセスを制御する多数のコンピュータ(データベースサーバ装置)を分散構成にすることによって、コンピュータ1台あたりの記憶容量やCPU性能の限界及びOSなどのプラットフォームに制限されることなく、大規模な情報データベースシステムを構築することが可能である。しかし、このように大規模な情報データベースシステムでは、一般的に情報の検索処理に要する時間が非常に大きい。特にマルチメディア情報データベースシステムの場合には、検索結果として転送されるデータ量も大きくなり、コンピュータやネットワークに大きな負荷が掛かり、情報検索要求1回当たりに対する応答時間が大きくなる傾向にある。このような大規模な情報データベースシステムにおいて、同時に多数のクライアント装置からの情報検索要求が発生した場合であっても、検索処理速度を著しく悪化させないことが望まれている。
【0003】
このため、従来、クライアント・サーバシステム又はWWWシステムとして構築された情報検索システムでは、分散並列化処理及び負荷分散の方法が行われてきた。すなわち、分散並列化処理では、異なるデータを異なるデータベースサーバ装置に記憶させることにより、それらのデータを並列にアクセス可能にするとともに、検索要求が相対的に多く発生するデータは、複数個設けることによりいわゆる多重に構成し、それらの多重のデータを異なるデータベースサーバ装置内に記憶させている。これにより、同じデータに対する異なるクライアントからの複数の検索要求を並列に処理可能にしている。データに対する検索要求の発生頻度は、データ毎に異なるので、多重度はデータにより異なり、その意味で不均一多重であるデータベースが使用されている場合も多い(例えば、特許文献1参照)。
【0004】
【特許文献1】
特開平6−119383号公報(段落17〜19、図5)
【0005】
不均一多重データベースの他の形態として、異なるデータベースの異なる組合せを複数のデータベースサーバ装置に記憶させるものもある。このようなデータベースシステムでは、多重度はデータ単位ではなく、データベース単位(同じデータベースを構成するデータ群の単位)に変えることも可能である。例えば、企業のデータベースシステムでは、本社に全てのデータベースのマスタを記憶させ、各支店には、支店毎に複数のデータベースのコピーを記憶させ、支店内の複数のデータベースは、イントラネットを介して支店内で使用可能にしている。支店毎のデータベースは、支店を構成する複数の部のそれぞれのニーズと使用頻度に対応して部毎に異なるデータベースを当該部用のデータベースサーバ装置に記憶させる例もある。
【0006】
例えば、地図情報に関連する部毎のデータベースの例としては、第1部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、市街図データベースを記憶し、第2部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、地形図データベース、設備図データベースを記憶し、第3部用のデータベースサーバ装置には、住宅地図データベース、道路地図データベース、市街図データベース、広域図データベースを記憶する。ここで、設備図データベースは、道路内部又は道路上に設けられた設備の地図である設備図を表すデータベースである。上記各データベースは、複数の層に区分された複数のデータからなり、それらのデータが重なり合って一つの地図を構成するものである。
【0007】
各部のメンバーは、クライアント装置から、自分が属する部に対応して設けられたデータベースサーバ装置にアクセスして業務を進める。自分の部用のデータベースサーバ装置に記憶されていないデータについては、同じ支店内の他の部用のデータベースサーバ装置に記憶されたデータを使用する。上の例に見られるように、住宅地図データベース、道路地図データベースは、いずれの部用のデータベースサーバ装置にも記憶されているので、それぞれの部において多くのクライアント装置から検索要求がこれらのデータベースに対して発生することが予想されている。一方、市街図データベースは、第2部と第3部用のデータベースサーバ装置に記憶されているので、このデータベースに対する検索要求は、これらの部で発生することが予想されている。設備図データベース、地形図データベース、広域図データベースは、それぞれ第2部、第2部、第3部用のデータベースサーバ装置にしか記憶されていない。これらのデータベースに対する検索要求は、対応する部内のメンバーからしか発生しないと予想されていることを反映している。
【0008】
負荷分散は、クライアント装置からの検索要求を複数のコンピュータに分散して投入することにより各コンピュータの負荷をなるべく均一に近いものにし、それでもって処理時間が極端に長いコンピュータが発生しないようにするものである。負荷分散の代表的な方法として、静的な負荷分散方法と動的な負荷分散方法が知られている。静的な負荷分散方法の例は、クライアント装置からの検索要求を複数の同等の処理性能を有するコンピュータに対して一定の順序で分配するものであり、個々のコンピュータの実際の負荷は検出されない。その方法の一例は、ラウンドロビン法であり、この方法では、クライアント装置からの検索要求を複数のコンピュータに対して一定の順序で巡回的に分配する。動的な負荷分散方法は、各コンピュータにおけるCPU負荷、I/O負荷などの負荷を監視、クライアント装置からの新たな検索要求を投入するときに、負荷がなるべく均等に近い状態に分散するように、投入先のコンピュータを動的に選択するものである。負荷分散に関する上記先行技術は当業者によく知られているので、これらの負荷分散に関する先行技術文献の記載は省略する。
【0009】
【発明が解決しようとする課題】
上記不均一多重に記憶された複数のデータベースに対する多くの検索要求を迅速に処理してターンアランド時間を短くするには、できるだけ多くのデータベースサーバ装置に検索要求を分散して実行させ、それでもって処理時間を極端に大きくならないようにすることが望ましい。更に、その際、それぞれのデータベースサーバ装置の性能を低下させないで、できるだけ最大限の性能を出させるようにすることが望ましい。
【0010】
ラウンドロビン法のような静的な負荷分散方法を複数のデータベースサーバ装置に適用するには、各データベースサーバ装置には、同じデータが記憶されていることが前提となっている。したがって、上に例示した地図データベースサーバ装置のように、データベースサーバ装置毎に、記憶されているデータの組合せが異なる不均一多重データベースの場合には、検索要求を単純に巡回的に異なるデータベースサーバ装置に分配することはできない。また、ラウンドロビン法を何らかの形態で適用しても効果が少ない。
【0011】
更に、ラウンドロビン法は、各データベースサーバ装置に対する検索要求の処理負荷がほぼ均一であることが前提となっている。しかし、検索要求の処理負荷は、検索対象のデータベースにより異なるのが普通である。したがって、上に例示した地図データベースサーバ装置のように、同じデータベースサーバ装置に複数の地図データベースが記憶されているデータベースの場合には、各データベースサーバ装置に対する検索要求の処理負荷は、いずれの地図データベースに対する検索要求であるかにより異なる。したがって、同じ数の検索要求が各データベースサーバ装置に投入されても複数のデータベースサーバ装置の処理負荷は異なるため、ラウンドロビン方法では効果が期待できない。また、各データベースサーバ装置のハードウェア的な処理能力(CPU、メモリ、ディスクの速度等)が異なる場合も同様に、ラウンドロビン方法では効果が期待できない。
【0012】
一方、動的負荷分散を行う方法では、すべてのデータベースサーバ装置は必ずしも同等の性能を有している必要はないが、負荷をどのように予測するかが問題であり、現状では負荷の予測の精度に問題がある。更に、各データベースサーバ装置の負荷を監視し、かつ、投入すべき検索要求の負荷を予測するための処理負荷が大きくなり、結果的に、各データベースサーバ装置の性能が低下したのと同じような悪影響が発生し、検索要求の処理時間がさほど減少しないという問題もあり、動的な負荷分散は必ずしも効果がでるものではないという問題がある。
【0013】
結局、従来技術では、不均一多重データベース対する新規の検索要求を、いずれのデータベースサーバ装置に投入するのがよいかを適切に決定することができない。
【0014】
一般に、各データベースサーバ装置は、複数のスレッドを用いるマルチスレッド機能により異なる検索要求を並列に処理可能になっている。しかし、スレッド数の限界値を超えて検索要求が投入された場合には、当該データベースサーバ装置内に設けられた内部キューに受信した検索要求を登録し、待ち状態に維持する。このため、いずれかのデータベースサーバ装置に投入された検索要求が直ぐに実行されるとは限らず、当該データベースサーバ装置内で処理待ち状態に長い時間維持されるということが発生する。
【0015】
このような待ち状態が発生した状態では、追加の検索要求を同じデータベースサーバ装置に投入しても同様に内部キューに登録されるだけであり、処理は開始されない。したがって、データベースサーバ装置内で検索要求を待ち状態に維持することは、見かけ上検索要求をデータベースサーバ装置に投入しただけであり、処理時間の短縮にならない。それどころか当該データベースサーバ装置が当該検索要求を処理可能になる前に、他のデータベースサーバ装置のほうが同じ検索要求を処理可能になる可能性があり、そのようになった場合には、検索要求を上記他のデータベースサーバ装置に投入するほうが処理速時間が減ることになる。したがって、上記先のデータベースサーバ装置に検索要求を投入したことがかえって当該検索要求の処理開始を遅らせることになり、結果として処理時間を増大していることになる。
【0016】
本発明では、以上に述べた従来技術の問題を考慮して、複数のデータベースサーバ装置に不均一に多重に記憶された複数のデータベースに対する複数の検索要求を分散して投入でき、かつ、処理速度の悪化を簡単な方法で抑止可能にする、データベース検索プログラム、データベース検索方法及びデータベース検索装置を提供することを目的とする。
【0017】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るデータベース検索プログラムは、以下のステップをコンピュータに実行させるようにプログラムされているものである。すなわち、複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成する。生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録する。
更に、前記共通キューに複数の分割検索要求が新に登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入する。
更に、いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了するのに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす分割検索要求を最も古いものから選択して当該データベースサーバ装置に投入する。
【0018】
これにより、新規に発生した検索要求を分割して得られる複数の分割検索要求を複数のデータベースサーバ装置により並列に処理させることができ、更に、各データベースサーバ装置には、新規分割検索要求を並列に処理可能という条件下で投入するので、検索要求がいずれかのデータベースサーバ装置に投入された後、当該データベースサーバ装置内で待ち状態に維持されることを回避でき、結果として全ての分割検索要求の処理時間の増大を抑止することができ、ひいては検索要求の処理時間を短くすることができる。
【0019】
【発明の実施の形態】
以下、本発明に係るデータベース検索プログラム、データベース検索方法及びデータベース検索装置のいくつかの実施の形態を説明する。なお、第2の実施の形態以降においては第1の実施の形態との相違点を説明するに止める。
【0020】
<発明の第1の実施の形態>
図1は、本発明に係るデータベース検索プログラムを使用する情報検索システムの概略構成図である。情報検索システム1は、検索サーバ装置10と、複数のデータベースサーバ装置21、22、23、…と、それらを接続するイントラネットあるいはインターネットのようなネットワーク30と、上記ネットワーク30に接続された複数のクライアント装置40とからなる。なお、図には簡単化のために一つのクライアント装置40しか図示していないが、実際には複数のクライアント装置を使用できる。
【0021】
データベースサーバ装置21には、データベース管理プログラム(DBMS)24とデータベース27が記憶されている。データベース管理プログラム24は、検索サーバ装置10から送信されるデータベースに対する検索命令をデータベース27に対して実行し、得られた検索結果を検索サーバ装置10に返信するプログラムである。同様に、データベースサーバ装置22にはデータベース管理プログラム25とデータベース28が記憶され、データベースサーバ装置23にはデータベース管理プログラム26とデータベース29が記憶されている。
【0022】
後に説明するように、検索サーバ装置10内には、本発明に係るデータベース検索プログラムの一つの実施の形態が使用され、当該プログラムと検索サーバ装置10により、本発明に係るデータベース検索方法の一つの実施の形態が使用され、検索サーバ装置10により本発明に係るデータベース検索装置に一つの実施の形態が実現される。なお、検索サーバ装置10は、複数のデータベースサーバ装置21、22、23に共通に一つ設けられているが、複数の検索サーバ装置が設けられてもよい。
【0023】
以下においては、各データベースサーバ装置21等内に記憶されたデータベース27等は、地図データベースであると仮定する。しかし、本発明は、そのようなデータベースに限定されるものではない。地図データベースは、例えば、特開2000−81839号明細書に記載されているように、一般に複数の層のデータからなり、かつ、地図上の領域は、複数の単位サイズのメッシュに区分され、メッシュ毎にそこに属する複数の層のデータが読み出し可能である。
【0024】
利用者は、地図データベースを利用するときには、クライアント装置40から、利用したい地図情報の種別、地図情報を利用したい領域を指定する情報、例えば、地番あるいは地域名を指定すると、データベース27、28又は29から当該地番を含む一つのメッシュに属する複数の層のデータが読み出され、あるいは、上記指定された地域名の地域を構成する複数のメッシュのそれぞれについて、それぞれのメッシュに属する複数の層の情報が出力され、これらに複数の層の情報は、合成されてクライアント装置の表示画面に表示される。
【0025】
以下では、簡単化のために、利用者が指定した検索要求は、一つのメッシュに属する地図情報の検索を要求した場合について説明する。利用者が指定した検索要求が複数のメッシュに属する地図情報の検索を要求する場合には、一つのメッシュに属する地図情報についての以下に述べる処理をメッシュの数だけ繰り返せばよい。なお、上記公開公報では、地図データベースに含まれた全ての層の情報のうち、出力させたい層を利用者が指定可能になっていているが、本実施の形態でもそのようにすることができる。
【0026】
本実施の形態では、地図データベースとして、複数の種類の地図データベースを使用すると仮定する。例えば、従来の技術で述べた住宅地図データベース、道路地図データベース、設備図データベース等である。更に、各地図データベースは、複数の層に対する複数の層別データからなると仮定する。各データベースサーバ装置には、複数の地図データベースのそれぞれの複数の層別データが記憶される。同じ地図データベースが複数のデータベースサーバ装置に記憶されていてもよいが、一部の地図データベースは、一部のデータベースサーバ装置には記憶されていなくてもよい。
【0027】
同じ地図データベースが異なるデータベースサーバ装置に記憶される場合でも、当該地図データベースを構成する複数の層別データのうち異なる組が、それらの複数のデータベースサーバ装置に記憶されてもよい。したがって、複数のデータベースサーバ装置21、22、23に記憶されるデータベース27、28、29は、そこに含まれている地図データベースの種類が一部異なってもよいが、同じものもあるという意味で不均一多重のデータベースである。更に、同じ地図データベースが複数のデータベースサーバ装置21等に記憶される場合でも、記憶される層別データがデータベースサーバ装置により異なっていてもよいという意味でも、不均一多重データベースである。
【0028】
本実施の形態では、このように複数の地図データベースが、不均一多重に複数のデータベースサーバ装置21等に記憶されていると仮定して以下の説明をするが、本実施の形態で使用する技術は、各データベースサーバ装置21等には、単一の地図データベースの異なる層の層別データが不均一多重に記憶されている場合にも同様に使用できる。
【0029】
いずれの地図データベースを多重で記憶するか、多重で記憶する地図データベースを構成する複数の層別データのうち、いずれの層別データを多重で記憶するかは、それぞれの地図データベースの利用頻度及びそれぞれの層別データの使用頻度により決めることができる。
【0030】
本実施の形態では、以下に詳細に説明するように、利用者からの検索要求を、それが要求するいずれかの地図データベースの複数の層別データの一つをそれぞれ要求する複数の分割検索要求に分割して、それぞれの分割検索要求を並列に処理する。その意味で、上記層別データは、検索要求の分割の単位となるデータであり、本明細書では、このようなデータの単位を分割単位データと呼ぶことにする。
【0031】
データベースサーバ装置21等は、マルチスレッド機能により複数の検索要求を一定の条件下で並列に処理可能になっている。分割単位データは、地図データベースの構成単位であり、かつ、少なくとも異なる分割単位データに関する複数の分割検索要求は複数のスレッドを用いて並列に処理可能であるものを分割単位データとする。
【0032】
検索サーバ装置10では、データベース検索プログラム50が記憶され、実行される。データベース検索プログラム50は、クライアント装置40との通信を行うクライアント装置通信部51と、クライアント装置40から出力された検索要求を受け付け、受け付けた検索要求を複数の分割検索要求に分割する検索要求受付分解部52と、各分割検索要求をいずれかのデータベースに投入する検索要求投入制御部53と、データベースへの分割検索要求の投入可能性を判断する投入可能性判断部54と、各データベースに対する分割検索要求の投入状況を監視するデータベース別投入状況監視部55と、データベースサーバ装置との通信を行うデータベース通信部56、利用者からの一つの検索要求から生成された複数の分割検索要求に対して複数のデータベースサーバ装置21等から出力された複数の検索結果データを結合して利用者のクライアント装置40に送信させる検索結果結合部57等のプログラム部分を含む。
【0033】
なお、検索サーバ装置10からデータベースサーバ装置21等へ分割検索要求を投入すると、データベースサーバ装置21等内のデータベース管理プログラム24が、当該分割検索要求を当該データベースサーバ装置21等に記憶されたデータベースに処理させるが、本明細書では、検索サーバ装置10からデータベースサーバ装置21等へ分割検索要求を投入することを、単に当該データベースサーバ装置21等に記憶されたデータベースへの分割検索要求の投入あるいは単にデータベースへの分割検索要求の投入と呼ぶことがある。
【0034】
更に、データベース検索プログラム50は、各データベースサーバ装置21等内に設けられたデータベース27等に含まれた分割単位データを示す分割単位データ配置情報60と、データベース別投入状況監視部55による監視により得られた各データベース別の分割検索要求の投入状況を示すデータベース別投入状況テーブル70と、同じ利用者から出力された検索要求から分割により生成された分割検索要求を登録するための共通キュー80と、同じ利用者から出力された検索要求から分割により生成された分割検索要求に対する複数の検索結果データ91の受信状況を管理するための検索結果管理テーブル90等の情報を含んでいる。
【0035】
図2は、分割単位データ配置情報60の例を示す図である。分割単位データ配置情報60は、各データベースサーバ装置21等内に設けられたデータベース27等に含まれた分割単位データを示す情報である。図において、データベース#フィールド601には、検索サーバ装置10により検索可能なデータベース27、28、29の番号DB#1、DB#2、DB#3が記憶されている。図には、各データベース27等の符号27等も括弧内に記載されている。分割単位データ配置状況記憶フィールド602は、各データベース27、28、29のそれぞれに、各分割単位データ#の分割単位データが配置されているか否かを示す。各分割単位データ#に対応して、○印が記憶されているか空白のままである。○印は、各データベース27、28、29に、対応する分割単位データが配置されていることを示す。
【0036】
図においては、分割単位データ#1は、データベース27、28、29のいずれにも含まれ、分割単位データ#2は、データベース28、29に含まれ、分割単位データ#3は、データベース27、29に含まれ、分割単位データ#4と#5は、データベース27、28に含まれている。分割単位データ#6と#8は、データベース28のみに含まれ、分割単位データ#7は、データベース27のみに含まれ、分割単位データ#9は、データベース29のみに含まれている。
【0037】
図2では、各分割単位データに対して優先度603が更に記憶されている。ここでは、各分割単位データに対応して優先度を当該分割単位データの多重度に逆比例して決められている。例えば図の例では、分割単位データ#1は、3個のデータベースで処理可能であるので、優先度は1/3とする。分割単位データ#2は2個のデータベースで処理可能であるので、優先度は1/2とする。分割単位データ#7は、1個のデータベースでしか処理可能でないので優先度は1/1とする。このような優先度は、同時刻に共通キュー80(図1)に登録された複数の分割検索要求がいずれかのデータベースに投入可能であるときに、そのデータベースに投入する一つの分割検索要求を選択する基準に使用することが可能である。
【0038】
図3は、本実施の形態で使用可能なデータベース別投入状況テーブル70の例を示す図である。データベース別投入状況テーブル70は、データベース別投入状況監視部55による監視により得られた各データベース別の分割検索要求の投入状況を示す。通常そうであるように、本実施の形態でも、各データベースサーバ装置21等は、受信した複数の検索要求(本実施の形態では分割検索要求)をそれぞれ異なるスレッドを用いて処理する。各データベースサーバ装置毎に、使用可能なスレッド数の閾値が決まっており、本実施の形態では、当該データベースサーバ装置に投入された分割検索要求に対するスレッドの総数が、上記閾値を越えないとき、それらの分割検索要求は並列に処理されると仮定している。なお、使用可能なスレッドの総数の閾値と、並列に処理可能なスレッドの総数の閾値が異なるときには、後者の閾値を使用する。したがって、本実施の形態では、スレッドの総数の閾値は、並列に処理可能なスレッドの総数の閾値である。
【0039】
データベース別投入状況テーブル70には、各データベース27、28、29に対応して当該データベースで並列に処理可能なスレッドの総数の閾値を記憶するフィールド701と、投入済み分割検索要求数を記憶するフィールド702と、対応するデータベースが分割検索要求の新規投入を禁止する状態にあるか否かを示す投入禁止フラグが記憶されるフィールド703とが設けられている。当該フラグは値が1のときには、投入禁止状態を示す。
【0040】
データベース別投入状況監視部55は、各データベース27等が記憶されているデータベースサーバ装置21等により定められた並列に処理可能なスレッドの総数の閾値をデータベース別投入状況テーブル70のフィールド701に初期値として記憶する。更に、検索要求投入制御部53により新たな分割検索要求がいずれかのデータベースに投入されたとき、当該データベースに対応するフィールド702内の投入済み分割検索要求数を1だけ増大する。
【0041】
更に、いずれかのデータベースサーバ装置21等において、投入済みのいずれかの分割検索要求の処理が終了したとき、当該データベースサーバ装置21等が検索結果データを検索サーバ装置10に送信する。検索サーバ装置10では、データベース通信部56が検索結果データを受信すると、データベース通信部56は、この検索結果データを検索結果結合部57に通知し、更に検索結果データの受信と送信元のデータベースサーバ装置の識別情報とを検索要求投入制御部53とデータベース別投入状況監視部55に通知する。データベース別投入状況監視部55は、この通知を受信すると、当該データベースサーバ装置に含まれたデータベースに対応する、フィールド702内の投入済み分割検索要求数を1だけ減少する。
【0042】
データベース別投入状況監視部55は、いずれかのデータベースに対するフィールド702内の投入済み分割検索要求数が変更されたときに、当該フィールド702内の投入済み分割検索要求数と同じデータベースに対するフィールド701内のスレッド総数の閾値とを比較し、フィールド702内の投入済み分割検索要求数がフィールド701内のスレッド総数の閾値と等しくなったとき、同じデータベースに対するフィールド703内の投入禁止フラッグを1に設定する。
【0043】
一方、フィールド702内の投入済み分割検索要求数がフィールド701内のスレッド総数の閾値以下になったときには、同じデータベースに対するフィールド703内の投入禁止フラッグを0に設定する。こうして、投入禁止フラグが0であるデータベースに対しては、新たな分割検索要求を投入することができ、更に当該新たな分割検索要求は、投入されると、同じデータベースに投入済みの複数の分割検索要求と並列に処理されることになる。
【0044】
通常のデータベースサーバ装置は、上記閾値を超える数の検索要求を受けたときには、受けた検索要求を当該データベースサーバ装置内の図示しない内部キューに登録する。しかし、本実施の形態では、データベースサーバ装置21等の内部に分割検索要求を待ち状態に維持することを回避するために、当該データベースサーバ装置21等により使用されているスレッドの総数が上記閾値に達したときには、検索要求投入制御部53は、当該データベースサーバ装置21等には新たな分割検索要求を投入しないようになっている。
【0045】
本実施の形態では、各データベースサーバ装置21等は、それが定めたスレッド総数の閾値を超えない範囲では、複数のスレッドを用いて複数の分割検索要求を並列に処理可能であると仮定している。したがって、本実施の形態では、各データベースサーバ装置21等に投入される複数の分割検索要求は、投入されると、既に投入済みの分割検索要求と並列に処理される。すなわち、検索要求投入制御部53は、新規分割検索要求をデータベースサーバ装置21等に投入するときには、当該分割検索要求は、当該データベースサーバ装置21等で処理可能であるという処理可能条件(すなわち、当該分割検索要求が要求する分割単位データが当該データベースサーバ装置21等に記憶されたデータベース27等に含まれている)と、当該新規の分割検索要求は、投入済みの分割検索要求と並列に処理されるという並列処理可能性条件を満すことを確認して投入されるようになっている。
【0046】
図4は、クライアント装置40の概略ブロック図である。クライアント装置40は、処理装置41、マウス等のポインティングデバイス及びキーボード等のデータ入力部を含む入力装置42と、CRT等の表示装置43を備え、処理装置41では、地図表示プログラム44とウェブブラウザプログラム45とが実行される。地図表示プログラム44は、検索制御処理部441と、地図情報表示処理部442等を含んでいる。クライアント装置40では、利用者は、検索制御処理部441により、検索すべき地図データベースの名称と、当該地図データベース内の表示されるべき地域を指定する情報を入力し、入力された情報は、検索制御処理部441により検索サーバ装置10に送信される。地図情報表示処理部442は、検索サーバ装置10から送信される一連の検索結果データを受信して、それぞれのデータが示す地図情報を生成して、それらの地図情報を重畳して表示装置43に表示させる。
【0047】
利用者により指示された検索要求は、以下のように処理される。検索サーバ装置10では、クライアント装置通信部51が、クライアント装置40から検索要求を受信すると、利用者に利用者識別番号(利用者ID)を割り当て、検索要求受付分解部52に受信された検索要求と利用者IDと検索要求を受信した時刻(要求受信時刻)を転送する。検索要求受付分解部52は、受信された検索要求を受け付け、要求登録番号を割り当て、受け付けた検索要求を検索結果管理テーブル90に登録する。検索結果管理テーブル90の内容は後に説明する。更に、検索要求受付分解部52は、当該検索要求を複数の分割検索要求に分解し、当該要求登録番号と、当該複数の分割検索要求と、利用者IDと、要求受付時刻とを共通キュー80に登録する。各分割検索要求は、検索対象とする分割単位データを指定する情報その他の検索に使用される情報を含んでいる。
【0048】
図5は、共通キュー80の例を示す図である。図において、801、802、803、…は、それぞれ一つの検索要求を分割して得られた複数の検索要求を記憶する領域であり、領域801、802、803、…の順に、受信時刻の古い検索要求に関する情報を記憶する。各領域801等には、要求登録番号を記憶するフィールド811と、検索要求を発行した利用者に割り当てられた利用者識別情報(図では単にID1、ID2、等で示している)を記憶するフィールド812と、複数の分割単位データに対応してそれぞれの分割単位データを要求する複数の分割検索要求を記憶するフィールド813と、複数の分割検索要求の元となる検索要求がクライアント通信部51により受信されたときの時刻を示す要求受信時刻を記憶するフィールド814とが含まれている。なお、要求受信時刻には、他の時刻、例えば、検索要求が検索要求受付分解部により複数の検索要求に分解され、それらの分割検索要求が共通キュー80に登録された時刻を使用してもよい。
【0049】
図では、第1の検索要求の利用者IDはID1であり、第2の検索要求の利用者IDはID2であることが分かる。フィールド813には、複数の分割単位データのうち分割検索要求がある分割単位データに対しては○印が記憶されている。第1の検索要求から分割単位データ#1、3、5、6に対する4つの分割検索要求が生成され登録されている。同様に、第2の検索要求から分割単位データ#2、3、4、6、8に対する5つの分割検索要求が生成され登録されている。
【0050】
図6は、検索要求投入制御部53の処理の一部の概略フローチャートである。図7は、検索要求投入制御部53の処理の他の部分の概略フローチャートである。検索要求投入制御部53では、まず、いずれかのデータベースサーバ装置21等に投入済みの分割検索要求の処理が終了したか否かがチェックされる(ステップS531)。いずれかのデータベースサーバ装置21等で投入済みの分割検索要求の処理が終了したときには、既に述べたように、検索結果が検索サーバ装置10に通知され、検索要求投入制御部53にも当該データベースサーバ装置21等からの検索結果の受信が通知されるので、検索要求投入制御部53は、上記受信の通知があったときに投入済みの分割検索要求の処理が終了したことを知ることができる。
【0051】
ステップS531においていずれかのデータベースに投入済みの分割検索要求の処理が終了していないと判断されたときには、処理はステップS537に移る。ステップS531においていずれかのデータベースに投入済みの分割検索要求の処理が終了したと判断されたときには、その終了に同期して、以下のようにして、共通キュー80にある複数の分割検索要求の中から、当該データベースに投入可能な分割検索要求を最も古い検索要求を優先して検出する。
【0052】
具体的には、共通キュー80にある最も古い分割検索要求を指定するために、例えば、最も古い要求登録番号811(図5)を引数に指定し、更に当該データベースとを引数に指定して投入可能性判断部54を呼び出し(ステップS532)、投入可能性判断部54により当該要求登録番号を有する分割検索要求が当該データベースに投入可能か否かを判断させる。
【0053】
投入可能性判断部54は、引数でデータベースと要求登録番号が指定された場合、当該要求登録番号を有する一つ又は複数の分割検索要求を共通キュー80から読み出し、複数の分割検索要求が読み出されたときには、当該複数の分割検索要求のうち引数で指定された当該データベースに対して投入可能な分割検索要求を検出する。ここで、投入可能な分割検索要求とは、当該分割検索要求が要求する分割単位データが上記引数で指定されたデータベースに含まれ、したがって当該分割検索要求が当該データベースで処理可能であるという処理可能条件を満たすものである。更に、当該データベースの投入禁止フラグ703(図3)がオフであることであり、したがって、当該分割検索要求は、当該データベースに投入しても、当該データベースに投入済みの他の分割検索要求と並列に処理可能であるという並列処理可能条件とを満たすことになる。
【0054】
投入可能性判断部54は、複数の分割検索要求が投入可能と判断したときには、それらの複数の投入可能な分割検索要求の一つをあらかじめ定めた基準で選択するようになっている。この選択基準は、例えば、図2に示された優先度603を使用することができる。すなわち、投入先のデータベースに含まれる複数の分割単位データのうちで最も優先度の高い分割単位データを要求する分割検索要求を選択すればよい。
【0055】
優先度の高い分割単位データほど、他のデータベースサーバ装置に含まれていないので、その分割単位データを要求する分割検索要求が他のデータベースで処理される可能性は、優先度の低い分割単位データより低い。したがって、投入可能と判断された複数の分割検索要求のうち、優先度が高い分割単位データを要求する分割検索要求を先に投入することが望ましいと推測される。なお、最も優先度の高い分割単位データを要求する分割検索要求が複数個あるときには、適当な方法でそれらの一つを選択すればよい。
【0056】
投入可能性判断部54は、検索要求投入制御部53から先に通知された要求登録番号と上記選択された一つの分割検索要求を識別する情報(例えば当該分割検索要求が要求する分割単位データの番号)と、検索要求投入制御部53から先に通知された投入先のデータベースの識別情報とを一緒に検索要求投入制御部53に通知するようになっている。
【0057】
検索要求投入制御部53では、ステップS533において、投入可能性判断部54により投入可能な分割検索要求が検出されたか否かを判断する。投入可能な分割検索要求が一つも検出されなかったときには、次に古い要求登録番号の分割検索要求が共通キュー80に登録されているかを判断し(ステップS534)、登録されている場合には、共通キュー80に登録されている当該次に古い要求登録番号を有する一つ又は複数の分割検索要求を処理対象に変更して(ステップS535)、それらの分割検索要求について上記ステップS532以降を繰り返させる。ステップS534において共通キュー80に当該次に古い要求登録番号の分割検索要求が登録されていないと判断された場合(ステップS534でNo)、処理は、ステップS537に移る。
【0058】
ステップS533において、投入可能性判断部54により投入可能な分割検索要求が検出されたと判断されたときには、投入可能性判断部54により通知された当該投入可能な分割検索要求を共通キュー80より取り出し、上記処理が終了したデータベースを記憶するデータベースサーバ装置21等に投入する(ステップS536)。その後処理はステップS537に移る。
【0059】
ステップS537では、新たな分割検索要求が共通キュー80に登録されたか否かを判断する。ここで、新たに登録された分割検索要求とは、検索要求投入制御部53により記憶されているチェック済み要求受信時刻以降の時刻にクライアント通信部51により受信され、分割により得られた複数の分割検索要求が共通キュー80に登録されている分割検索要求である。後に説明するように、検索要求投入制御部53は、共通キュー80に登録された分割検索要求について最も古く登録された分割検索要求から順にいずれかのデータベースに投入可能か否かをチェックする。上記チェック済み要求受信時刻は、検索要求投入制御部53により投入可能性をチェックさせた分割検索要求のうち、最新に共通キュー80に登録された分割検索要求がクライアント通信部51により受信された時刻である。検索要求投入制御部53が共通キュー80に新たに登録された分割検索要求の投入可能性をその後チェックするときには、上記時刻以降の要求受信時刻814(図5)を有する分割検索要求をチェックすればよい。
【0060】
ステップS537で新たな分割検索要求が共通キュー80に登録されていないと判断された場合には、処理はステップS531に移る。ステップS537において新たな分割検索要求が登録されていると判断された場合、チェック済み要求受信時刻として、当該新たに登録されていると判断された最も古い分割検索要求がクライアント通信部51により受信された時刻を記憶する(図7のステップS538)。その後、共通キュー80に新たに登録されていると判断された当該最も古い時刻に受信された分割検索要求の要求登録番号を引数に指定して投入可能性判断部54を呼び出し(ステップS539)、投入可能性判断部54により、その要求登録番号を有する分割検索要求がいずれかのデータベースに投入可能か否かを判断させる。同時に共通キュー80に登録された複数の分割検索要求がある場合には、投入可能性判断部54は、それぞれの分割検索要求がいずれかのデータベースに投入可能か否かを同時に判断する。
【0061】
投入可能性判断部54は、引数で要求登録番号が指定されてはいるが、ステップS532で呼び出されたときと異なり、投入先のデータベースが引数に指定されていない場合には、全てのデータベースから投入可能な状態にあるデータベースを検出し、それらの投入可能な状態にあるデータベースに投入可能な分割検索要求を選択する。
【0062】
すなわち、当該要求登録番号を有する一つ又は複数の分割検索要求を共通キュー80から読み出し、複数の分割検索要求が読み出されたときには、当該複数の分割検索要求のうちいずれかのデータベースに投入可能な分割検索要求を検出する。ここで、投入可能なデータベースとは、当該分割検索要求が要求する分割単位データを含んでいるデータベースであり(処理可能条件)、更に、当該データベースの投入禁止フラグ703(図3)がオフであること、すなわち、当該データベースが並列処理可能条件を満たすことである。
【0063】
ステップS532により呼び出された場合に説明したように、投入可能性判断部54は、複数の分割検索要求が投入可能と判断したときには、それらの複数の投入可能な分割検索要求の一つをあらかじめ定めた基準で選択する。この選択基準は、例えば、図2に示された優先度603を使用することができる。すなわち、優先度の高い分割単位データほど、他のデータベースサーバ装置に含まれていないので、その分割単位データを要求する分割検索要求は他のデータベースで処理される可能性が優先度の低い分割単位データよりも低い。したがって、投入可能と判断された複数の分割検索要求のうち、優先度が高い分割単位データを要求する分割検索要求を先に投入することが望ましいと推測される。なお、最も優先度の高い分割単位データを要求する分割検索要求が複数個あるときには、適当な方法でそれらの一つを選択すればよい。
【0064】
投入可能性判断部54は、検索要求投入制御部53から先に通知された要求登録番号と上記選択された一つの分割検索要求を識別する情報(例えば当該分割検索要求が要求する分割単位データの番号)と、投入可能と判断した投入先のデータベースの識別情報とを一緒に検索要求投入制御部53に通知するようになっている。
【0065】
検索要求投入制御部53では、投入可能性判断部54により投入可能な分割検索要求が検出されたか否かが判断される(ステップS540)。投入可能な分割検索要求が一つも検出されなかったときには、共通キュー80に新たに登録された次に古い要求登録番号を有する分割検索要求があるか否かが判断され(ステップS541)、登録されている場合には、共通キュー80に登録されている当該次に古い要求登録番号を有する複数の分割検索要求を処理対象に変更し(ステップS542)、その後、処理はステップS538に移る。
【0066】
ステップS538では、チェック済み要求受信時刻として、処理対象に変更された登録番号を有する分割検索要求の要求受信時刻814(図5)が記憶され、更に、処理対象に変更されたそれぞれの分割検索要求についてステップS539以降を繰り返される。なお、ステップS541において、共通キュー80に当該次に古い分割検索要求が登録されていないと判断された場合(ステップS541でNo)、処理は、ステップS531(図6)に移る。
【0067】
ステップS540において投入可能性判断部54により投入可能な分割検索要求が検出されたと判断されたときには、投入可能性判断部54により通知された当該投入可能な分割検索要求を共通キュー80より取り出し、当該投入可能性判断部54より通知される投入可能なデータベースを記憶するデータベースサーバ装置に投入する(ステップS543)。その後処理はステップS531に移る。
【0068】
こうして、既にいずれかのデータベースに投入済みの分割検索要求の処理が終了する毎に、投入待ちの分割検索要求から投入可能な分割検索要求が選択されて投入される。したがって、処理が終了したデータベースでは、既に投入された処理中の分割検索要求と並行して新たに投入される分割検索要求も処理されるので、当該データベースを記憶するデータベースサーバ装置の処理速度は低下することはない。しかも、当該データベースには一つの分割検索要求の処理が終了した後に新たに分割検索要求が投入されるので、その処理負荷は格段には増大しないことが分かる。
【0069】
また、新たにクライアント装置から検索要求が新たに受信され複数の分割検索要求が新たに共通キュー80に登録される毎に、それらの内の投入可能な分割検索要求が検出され、そのような分割検索要求があれば当該分割検索要求が適当なデータベースに投入される。このときにも投入条件として、投入先のデータベースに対する投入禁止フラグがオフであり、したがって、新たな分割検索要求を追加して投入しても、当該分割検索要求は既に投入済みの分割検索要求と並列に処理されるので、処理速度が低下しないことが期待される。
【0070】
図8は、いずれかの検索要求に対する検索結果管理テーブル90の例を示す図である。検索結果管理テーブル90は、検索要求受付分解部52によりいずれかの検索要求が受け付けられたときに、当該検索要求に対して検索要求受付分解部52により生成される。他の検索要求に対しても同様に検索結果管理テーブル90が生成されるが、図では一つの検索結果管理テーブル90のみを例示している。
【0071】
検索結果管理テーブル90には、利用者IDを記憶するフィールド901、要求登録番号を記憶するフィールド902、各分割単位データに対する分割検索要求の有無を表す要求フラグを記憶するフィールド903、分割検索要求の総数を記憶するフィールド904、各分割検索要求による検索が終了したか否かを示す完了フラグを記憶するフィールド905、未完了の分割検索要求の総数(未完了数)を記憶するフィールド906、検索が完了した分割検索要求により取得された検索結果データが記憶されている検索サーバ装置10のメモリのアドレス(検索結果データポインタ)を記憶するフィールド907等が設けられる。検索結果管理テーブル90の更新は、検索結果結合部57により管理される。
【0072】
検索結果管理テーブル90が検索要求受付分解部52により生成されたときには、上記フィールド901には、利用者IDが記憶され、上記フィールド902には、その検索要求に対して割り当てられた要求登録番号が記憶され、上記フィールド903では、当該検索要求から生成された複数の分割検索要求に対応するフラグが1に設定される。上記フィールド904には生成された分割検索要求の総数が記憶され、上記フィールド905には各分割検索要求に対する完了フラグの初期値として値0が記憶され、上記フィールド906には未完了数の初期値としてフィールド904の分割検索要求の総数が記憶される。上記フィールド907には、この時点では何も記憶されない。
【0073】
各分割検索要求に対する検索結果データ91には、同図(b)に示すように、分割検索要求を発行した利用者の識別情報(利用者ID)911と、分割検索要求が要求した分割単位データの番号912と、検索で得られたデータ914のデータ長913と、当該データ914とが含まれる。
【0074】
利用者ID(911)は、検索要求投入制御部53が、分割検索要求をいずれかのデータベースサーバ装置に投入するときに、その分割検索要求に対して共通キュー80に記憶されていた利用者IDが分割検索要求と一緒に投入され、投入先のデータベースサーバ装置21等は、検索で得られた検索結果データを検索サーバ装置10に戻すときに、検索結果データに上記利用者IDを付すようになっている。検索結果データ91内の分割単位データの番号912は、いずれかのデータベースサーバ装置に投入された分割検索要求内に含まれているものであり、投入先のデータベースサーバ装置は、検索で得られた検索結果データを検索サーバ装置10に戻すときに、検索結果データに上記分割単位データの番号912を付すようになっている。
【0075】
図9は、検索結果結合部57の処理の概略フローチャートである。まず、いずれかのデータベースからいずれかの分割検索要求が要求した検索に対する検索結果データが受信されたか否かをチェックする(ステップS571)。受信されていない場合には、同じステップS571を繰り返す。受信された場合には、当該検索結果データに付加された利用者IDに対する検索完了管理テーブル内の、当該検索結果データに付加されている分割単位データ#に対応して検索結果データポインタ907(図8)に、受信された検索結果データのアドレス(当該検索結果データが記憶されている、検索サーバ装置10内の図示しないメモリのアドレス)を記憶する(ステップS572)。同様に、分割単位データ#に対応する検索完了フラグ905をオンにし(ステップS573)、更に、上記テーブル内の未完了数906を1だけ減少する(ステップS574)。
【0076】
更に、未完了数906が0であるか否かが判定され(ステップS575)、未完了数906が0でないときには、処理はステップS571に戻り、新たな検索結果データの受信待ちになる。ステップS575において未完了数906が0であると判断されたときには、フィールド908に記憶された複数の検索結果データポインタを用いて複数の検索結果データ91、…を検索サーバ装置10内の図示しないメモリから読み出し、それらの検索結果データ91、…にフィールド901に記憶された利用者IDを付加してクライアント装置通信部51に出力し(ステップS576)、更に、当該検索結果管理テーブル90を削除し(ステップS577)、その後、処理はステップS571に戻る。
【0077】
クライアント装置通信部51は、出力された複数の検索結果データに付加された利用者IDに基づいて、送信先のクライアント装置40を決定し、そこに一連の検索結果データ91をまとめて送信する。クライアント装置40では、図4に示したように、地図情報表示処理部442が、上記一連の検索結果データを受信して、それぞれのデータが示す地図情報を生成して、それらの地図情報を重畳して表示装置43に表示させる。
【0078】
以上のようにして、複数のデータベースサーバ装置21等に不均一に多重に分散して記憶された複数の分割単位データに対する検索を要求する検索要求を複数の分割検索要求に分割し、各データベースサーバ装置21等の性能を落とさないという条件下で、可能な限り多くの分割検索要求を並列に処理させることが可能になり、検索要求自体の処理速度も低下しない。
【0079】
<発明の第2の実施の形態>
上記第1の実施の形態では、各データベースサーバ装置に対する投入可能なスレッドの総数の閾値以下のスレッドを使用する限り、複数の分割検索要求は並列に処理されると仮定した。しかし、実際のデータベースサーバ装置では、スレッドの総数の閾値を超えていなくても、投入しようとする分割検索要求と投入済みの分割検索要求との関係に依っては、前者は後者に対して並列に処理できない場合がある。
【0080】
例えば、投入しようとする後続の分割検索要求が要求する分割単位データが、投入済みのいずれかの先行する分割検索要求が使用している分割単位データと一致するときには、当該先行する分割検索要求によるその分割単位データの使用が終了するまでは、上記後続の分割検索要求を当該分割検索要求と並列に処理できないことがある。このため、上記後続の分割検索要求を投入すると、当該分割単位データが記憶されているデータベースサーバ装置内に設けられ待ちキューに登録されてしまう。
【0081】
したがって、本実施の形態では、投入可能性を判断するときに、投入先のデータベースサーバ装置により実施される並列処理可能性をより忠実に反映した、データベース検索プログラム、データベース検索方法及びデータベース検索装置を示す。より具体的には、本実施の形態では、投入済みの複数の先行する分割検索要求と、投入しようとする後続の分割検索要求の関係をチェックして、当該後続の分割検索要求が先行する分割検索要求と並列に処理可能であるかを判断可能にする。
【0082】
図10は、本実施の形態で使用可能なデータベース別投入状況テーブル70Aの例を示す図である。データベース別投入状況テーブル70Aには、図3に示されたデータベース別投入状況テーブル70と同様に、フィールド701から703が設けられ、更に、各データベースに対応して当該データベース内の分割単位データが使用中か否かを指示する分割単位データ使用中フラグを記憶するフィールド704が設けられている。ただし、フィールド702に記憶されたスレッド数の総数は、各データベースが同時に使用可能なスレッドの総数の閾値であり、その閾値以下のスレッドは並列に処理されるか否かは関係なく定めてよい。
【0083】
フィールド704には、投入済みのいずれかの分割検索要求が使用する分割単位データに対して値1が記憶される。データベース別投入状況監視部55(図1)は、検索要求投入制御部53により、いずれかの分割検索要求がいずれかのデータベースに投入されたときに、データベース別投入状況テーブル70A内の当該データベースに対応するフィールド703の当該分割検索要求が要求する分割単位データに対してフラグ1を記憶する。更に、いずれかのデータベースでいずれかの分割検索要求の処理が終了したときには、データベース別投入状況テーブル70A内の当該データベースに対応するフィールド703の当該分割検索要求が要求する分割単位データに対するフラグの値を0に変更する。
【0084】
本実施の形態では、投入可能性判断部54は、分割検索要求が以下の2つの条件を満たすとき、分割検索要求を投入可能と判断する。まず、第1の条件は、第1の実施の形態と同じく、投入しようとする分割検索要求が要求する分割単位データが投入先のデータベースに含まれていることである(処理可能条件)。更に、投入先のデータベースの並列処理可能条件をチェックする。この並列処理可能条件は2つの条件からなる。まず、第1の条件は、フィールド702内の投入済み分割検索要求数が、フィールド701のスレッドの総数の閾値を超えていないこと、したがって、フィールド703の投入禁止フラグが0であることである。すなわち、投入先データベースが、新たな分割検索要求を投入可能な状態にあることである。更に、第2の条件は、投入しようとする分割検索要求が要求する分割単位データが、データベース別投入状況テーブル70A内の、投入先のデータベースに対するフィールド704に記憶された使用中の分割単位データと一致しないことである。この条件が満たされると、投入しようとする分割検索要求が要求する分割単位データが、投入済みの分割検索要求が使用中の分割単位データと衝突しないので、投入しようとする分割検索要求は、投入済みの分割検索要求と並列に処理されることが分かる。
【0085】
このように投入可能性を判断することにより、単に使用中のスレッド数だけではなく、先行する分割検索要求と後続の投入しようとする分割検索要求について、それらが要求する分割単位データの衝突が発生しているか否かを判断することが可能になる。すなわち、投入先のデータベースサーバ装置が行う、並列処理可能条件を満たすか否かのチェックを投入可能性判断部54に行わせることにより、検索サーバ装置10がより正確に並列処理可能条件が満たすか否かを判断でき、各データベースサーバ装置21等の性能を落とさないで多数の分割検索要求を処理させることが可能になる。
【0086】
なお、各データベースサーバ装置で、新たな分割検索要求を新たなスレッドとして処理開始するか否かを決める場合に、処理中の分割検索要求により使用されている分割単位データと、処理を開始しようとする後続の分割検索要求が使用する分割単位データとの衝突の有無とは異なる条件を考慮する場合もある。例えば、分割検索要求によりある分割単位データが使用されると言っても、実際には、当該分割単位データが更に複数の部分領域に区分され、それらの部分領域の一つのみである場合がある。
【0087】
先行する分割検索要求と後続の分割検索要求が同じ分割単位データを要求すると言っても、当該分割単位データ内の異なる部分領域を要求する場合には、それらの分割検索要求は並列に処理可能とされる場合もある。このような場合には、データベース別投入状況テーブル70A内の分割単位データ使用中フラグ704には各分割単位データの複数の部分領域に対応して使用中か否かの状態を示すフラグを記憶させ、先行する分割検索要求と後続の分割検索要求が同じ分割単位データの同じ部分領域を要求するか否かによって、後続の分割検索要求を先行する分割検索要求と並列に処理可能であるか否かを判断するようにすればよい。
【0088】
<発明の第3の実施の形態>
以上の実施の形態では、検索結果結合部57により、同じ利用者からの検索要求から生成された複数の分割検索要求に対する複数の検索結果データが全て得られたことを検索結果結合部57により確認して、その後、それらの検索結果データは、まとめて要求元のクライアント装置40に転送された。
【0089】
本実施の形態では、上記複数の検索結果データをまとめないで、それぞれの検索結果データが得られる毎に、得られた検索結果データを要求元のクライアント装置に送信する、データベース検索プログラム、データベース検索方法及びデータベース検索装置を示す。
【0090】
すなわち、第1の実施の形態で使用した、検索結果結合部57、検索結果管理テーブル90を検索サーバ装置10上では使用しないで、いずれかのデータベースサーバ装置によりいずれかの検索結果データが得られる毎に、得られた検索結果データを当該データベースサーバ装置から要求元のクライアント装置に検索サーバ装置10を経由しないで直接送信させる。このために、検索サーバ装置10は、いずれかの分割検索要求をいずれかのデータベースサーバ装置に投入するときには、利用者IDとクライアント装置のIPアドレスを当該分割検索要求と一緒に当該データベースサーバ装置に送信する。
【0091】
いずれかのデータベースサーバ装置21等でいずれかの分割検索要求に対して検索結果データが得られたときには、当該データベースサーバ装置は、当該分割検索要求に対して受信したクライアント装置のIPアドレスを用いて当該検索結果データを要求元のクライアント装置にネットワーク30を介して送信するとともに、検索サーバ装置10に当該分割検索要求の処理を終えたことを通知する。
【0092】
検索サーバ装置10は、この通知を受けて、第1の実施の形態と同じく、新たな分割検索要求を当該データベースサーバ装置に投入することができる。クライアント装置40には、上記検索結果結合部57、検索結果管理テーブル90を設けて、上記検索結果結合部57により、得られた複数の検索結果データを監視させ、それらの検索結果データを地図情報表示処理部442(図4)により表示させればよい。
【0093】
【発明の効果】
以上述べたように、本発明によれば、新規に発生した検索要求を分割して得られる複数の分割検索要求を複数のデータベースサーバ装置により並列に処理させることができ、更に、各データベースサーバ装置には、新規分割検索要求を並列に処理可能という条件下で投入するので、検索要求がいずれかのデータベースサーバ装置に投入された後、当該データベースサーバ装置内で待ち状態に維持されることを回避でき、結果として全ての分割検索要求の処理時間の増大を抑止することができ、ひいては検索要求の処理時間を短くすることができる。
【図面の簡単な説明】
【図1】本発明に係るデータベース検索プログラムの一つの実施の形態を使用する情報検索システムの概略構成図である。
【図2】分割単位データ配置情報の例を示す図である。
【図3】データベース別投入状況テーブルの例を示す図である。
【図4】クライアント装置の概略ブロック図である。
【図5】共通キューの例を示す図である。
【図6】検索要求投入制御部の処理の一部の概略フローチャートである。
【図7】検索要求投入制御部の処理の他の部分の概略フローチャートである。
【図8】検索結果管理テーブルの例を示す図である。
【図9】検索結果結合部の処理の概略フローチャートである。
【図10】第2の実施の形態で使用可能なデータベース別投入状況テーブルの例を示す図である。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a database search program, a database search method, and a database search device for accessing a database stored in a non-uniform and multiple manner in a plurality of database server devices.
[0002]
[Prior art]
2. Description of the Related Art In an information retrieval system constructed on a network such as the Internet or an intranet, a large number of computers (database server devices) that store a database and control access to the database have a distributed configuration, so that the storage capacity per computer is increased. It is possible to construct a large-scale information database system without being limited by a platform such as a CPU, a CPU performance, and an OS. However, in such a large-scale information database system, the time required for information retrieval processing is generally very long. In particular, in the case of a multimedia information database system, the amount of data transferred as a search result also becomes large, a heavy load is imposed on a computer or a network, and the response time for one information search request tends to increase. In such a large-scale information database system, it is desired that the search processing speed is not significantly deteriorated even when information search requests are issued from a large number of client devices at the same time.
[0003]
For this reason, conventionally, in an information search system constructed as a client-server system or a WWW system, a method of distributed parallel processing and load distribution has been performed. That is, in the distributed parallel processing, different data is stored in different database server devices so that those data can be accessed in parallel, and a plurality of data in which a relatively large number of search requests are generated is provided. It is so-called multiplexed, and the multiplexed data is stored in different database server devices. This allows a plurality of search requests for the same data from different clients to be processed in parallel. Since the frequency of occurrence of a search request for data differs for each data, the degree of multiplexing differs depending on the data, and a database that is non-uniformly multiplexed in that sense is often used (for example, see Patent Document 1).
[0004]
[Patent Document 1]
JP-A-6-119383 (paragraphs 17 to 19, FIG. 5)
[0005]
Another form of heterogeneous multiplex database is to store different combinations of different databases in a plurality of database server devices. In such a database system, the multiplicity can be changed not in data units but in database units (units of data groups constituting the same database). For example, in a database system of a company, the head office stores masters of all databases, each branch stores a copy of a plurality of databases for each branch, and a plurality of databases in the branch are stored in the branch via an intranet. It can be used in. In some cases, the database for each branch stores a different database for each department in the database server for the department in accordance with the needs and frequency of use of a plurality of departments constituting the branch.
[0006]
For example, as an example of a database for each section related to map information, a database server apparatus for the first section stores a house map database, a road map database, and a city map database, and a database server apparatus for the second section. Stores a house map database, a road map database, a topographic map database, and a facility map database. The database server device for the third part stores a house map database, a road map database, a city map database, and a wide area map database. I do. Here, the facility map database is a database representing a facility map, which is a map of facilities provided inside or on the road. Each of the databases is composed of a plurality of data divided into a plurality of layers, and these data are overlapped to constitute one map.
[0007]
The members of each section proceed from the client apparatus by accessing a database server apparatus provided corresponding to the section to which the section belongs. For data not stored in the database server for one's own department, the data stored in the database server for another department in the same branch is used. As can be seen from the above example, the house map database and the road map database are stored in the database server device for each department, so that in each department, search requests from many client devices are sent to these databases. Is expected to occur. On the other hand, since the city map database is stored in the database server devices for the second and third parts, a search request for this database is expected to occur in these parts. The facility map database, the topographic map database, and the wide area map database are stored only in the database server devices for the second part, the second part, and the third part, respectively. Search requests to these databases reflect that they are expected to only come from members of the corresponding department.
[0008]
Load distribution distributes search requests from client devices to a plurality of computers so that the load on each computer is as uniform as possible, thereby preventing computers with extremely long processing times from occurring. It is. As typical methods of load distribution, a static load distribution method and a dynamic load distribution method are known. In an example of the static load distribution method, a search request from a client device is distributed to a plurality of computers having the same processing performance in a fixed order, and the actual load of each computer is not detected. One example of the method is a round robin method, in which a search request from a client device is cyclically distributed to a plurality of computers in a certain order. The dynamic load distribution method monitors loads such as a CPU load and an I / O load on each computer, and distributes a load as nearly as possible when a new search request is input from a client device. , The computer to which the data is to be input is dynamically selected. Since the above prior art related to load distribution is well known to those skilled in the art, the description of the prior art related to load distribution is omitted.
[0009]
[Problems to be solved by the invention]
In order to quickly process many search requests for a plurality of databases stored in the non-uniform multiplex and shorten the turn-around time, the search requests are distributed and executed by as many database server devices as possible, and the processing is performed accordingly. It is desirable not to make the time extremely large. Further, at this time, it is desirable to maximize the performance as much as possible without deteriorating the performance of each database server device.
[0010]
In order to apply a static load distribution method such as a round robin method to a plurality of database server devices, it is assumed that the same data is stored in each database server device. Therefore, in the case of a non-uniform multiplex database in which a combination of stored data is different for each database server device as in the map database server device exemplified above, the search request is simply and cyclically different from each other. Cannot be distributed to Further, even if the round robin method is applied in any form, the effect is small.
[0011]
Further, the round robin method is based on the premise that the processing load of a search request to each database server device is substantially uniform. However, the processing load of a search request usually differs depending on the database to be searched. Therefore, in the case of a database in which a plurality of map databases are stored in the same database server device as in the above-described map database server device, the processing load of a search request for each database server device is It depends on whether it is a search request for. Therefore, even if the same number of search requests are input to each database server device, the processing load of the plurality of database server devices is different, so that the effect cannot be expected by the round robin method. Similarly, when the database processing apparatuses have different hardware processing capabilities (CPU, memory, disk speed, and the like), the effect cannot be expected by the round robin method.
[0012]
On the other hand, in the dynamic load distribution method, all database server devices do not necessarily have to have the same performance, but the problem is how to predict the load. There is a problem with accuracy. Further, the processing load for monitoring the load of each database server device and estimating the load of a search request to be submitted becomes large, and as a result, the performance of each database server device is reduced. There is also a problem that an adverse effect occurs and the processing time of the search request does not decrease so much, and there is a problem that dynamic load distribution is not always effective.
[0013]
As a result, in the related art, it is not possible to appropriately determine which database server device should be used to input a new search request for a heterogeneous multiplex database.
[0014]
In general, each database server device can process different search requests in parallel by a multi-thread function using a plurality of threads. However, when a search request is input beyond the limit value of the number of threads, the received search request is registered in an internal queue provided in the database server apparatus, and is kept in a waiting state. For this reason, a search request input to any one of the database server devices is not always executed immediately, and the database server device may be kept in a processing waiting state for a long time.
[0015]
In a state where such a waiting state occurs, even if an additional search request is input to the same database server device, it is similarly registered only in the internal queue, and the processing is not started. Therefore, maintaining the search request in the waiting state in the database server device only apparently inputs the search request to the database server device, and does not reduce the processing time. On the contrary, before the database server apparatus can process the search request, there is a possibility that another database server apparatus can process the same search request. The processing speed time is reduced when the data is input to another database server device. Therefore, the start of the processing of the search request is delayed by inputting the search request to the preceding database server apparatus, and as a result, the processing time is increased.
[0016]
In the present invention, in consideration of the above-described problems of the related art, a plurality of search requests for a plurality of databases stored in a non-uniform manner in a plurality of database servers can be distributed and input, and the processing speed can be increased. It is an object of the present invention to provide a database search program, a database search method, and a database search device that can suppress the deterioration of a database by a simple method.
[0017]
[Means for Solving the Problems]
In order to achieve the above object, a database search program according to the present invention is programmed to cause a computer to execute the following steps. That is, a search request received from any client device for a non-uniform multiplex database composed of a plurality of databases each having a different combination of a plurality of divided unit data and stored in a plurality of database server devices, respectively. It divides and generates a plurality of divided search requests each requesting a search for one of the plurality of divided unit data. The generated plurality of divided search requests are stored in a common queue provided commonly to the plurality of database server devices so that the order of the reception times of the search requests from which the respective divided search requests are generated can be identified. register.
Further, each time a plurality of divided search requests are newly registered in the common queue, the plurality of divided search requests are sequentially selected, and a processable condition that the selected divided search request can be processed, One or more database server devices that can be additionally input that satisfy the parallel processing enabling condition that the selected divided search request can be processed in parallel with the other divided search requests in it are determined, and the additional input can be performed by the determination. Then, the selected divided search request is additionally input to one database server device or one of the plurality of database server devices determined to be.
Further, in synchronization with the termination of the processing of any of the divided search requests by any of the database server devices, the oldest divided search requests satisfying the processable condition and the parallel processable condition are output from the common queue. And then submit it to the database server device.
[0018]
Thus, a plurality of divided search requests obtained by dividing a newly generated search request can be processed in parallel by a plurality of database server devices. Can be processed under the condition that it can be processed, so that it is possible to prevent a search request from being input to one of the database server devices and being kept in a waiting state in the database server device. Can be suppressed, and the processing time of the search request can be shortened.
[0019]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, some embodiments of a database search program, a database search method, and a database search device according to the present invention will be described. It should be noted that only differences from the first embodiment will be described after the second embodiment.
[0020]
<First Embodiment of the Invention>
FIG. 1 is a schematic configuration diagram of an information search system using a database search program according to the present invention. The information search system 1 includes a search server device 10, a plurality of database server devices 21, 22, 23,..., A network 30 such as an intranet or the Internet connecting them, and a plurality of clients connected to the network 30. Device 40. Although only one client device 40 is shown in the figure for simplicity, a plurality of client devices can be used in practice.
[0021]
The database server 21 stores a database management program (DBMS) 24 and a database 27. The database management program 24 is a program that executes a search command for the database transmitted from the search server device 10 to the database 27, and returns an obtained search result to the search server device 10. Similarly, the database server 22 stores a database management program 25 and a database 28, and the database server 23 stores a database management program 26 and a database 29.
[0022]
As will be described later, one embodiment of the database search program according to the present invention is used in the search server device 10, and the program and the search server device 10 use one embodiment of the database search method according to the present invention. The embodiment is used, and the search server device 10 realizes one embodiment of the database search device according to the present invention. Although one search server device 10 is provided in common for the plurality of database server devices 21, 22, and 23, a plurality of search server devices may be provided.
[0023]
In the following, it is assumed that the database 27 and the like stored in each of the database server devices 21 and the like are map databases. However, the invention is not limited to such a database. For example, as described in Japanese Patent Application Laid-Open No. 2000-81839, a map database generally includes data of a plurality of layers, and an area on a map is divided into meshes of a plurality of unit sizes. A plurality of layers of data belonging to each layer can be read.
[0024]
When the user uses the map database, from the client device 40, when specifying the type of the map information to be used and the information for specifying the area for which the map information is to be used, for example, the lot number or the area name, the database 27, 28 or 29 Data of a plurality of layers belonging to one mesh including the lot number is read out, or information of a plurality of layers belonging to each mesh is obtained for each of a plurality of meshes constituting an area of the designated area name. Is output, and information of a plurality of layers is combined with the information and displayed on the display screen of the client device.
[0025]
Hereinafter, for simplification, a case will be described in which a search request specified by a user requests a search for map information belonging to one mesh. When the search request specified by the user requests a search for map information belonging to a plurality of meshes, the process described below for map information belonging to one mesh may be repeated by the number of meshes. In the above-mentioned publication, the user can specify a layer to be output among information of all layers included in the map database, but the present embodiment can also make it. .
[0026]
In the present embodiment, it is assumed that a plurality of types of map databases are used as the map database. For example, a house map database, a road map database, a facility map database, and the like described in the related art. It is further assumed that each map database comprises a plurality of stratified data for a plurality of layers. Each database server device stores a plurality of stratified data of each of a plurality of map databases. The same map database may be stored in a plurality of database server devices, but some map databases may not be stored in some database server devices.
[0027]
Even when the same map database is stored in different database server devices, different sets of a plurality of stratified data constituting the map database may be stored in the plurality of database server devices. Accordingly, the databases 27, 28, and 29 stored in the plurality of database server devices 21, 22, and 23 may partially differ in the type of the map database included therein, but in the sense that some are the same. It is a heterogeneous multiplex database. Further, even when the same map database is stored in a plurality of database server devices 21 or the like, the database is a non-uniform multiplex database in the sense that the stored stratified data may be different depending on the database server device.
[0028]
In the present embodiment, the following description will be made on the assumption that a plurality of map databases are stored in a plurality of database server devices 21 or the like in a non-uniform multiplex manner, but the technology used in the present embodiment will be described. Can also be used in a case where stratified data of different layers of a single map database are stored in a non-uniform multiplex manner in each database server device 21 or the like.
[0029]
Which map database is to be stored in multiplex or which of the plurality of stratified data constituting the map database to be stored in multiplex is stored in multiplex depending on the frequency of use of each map database and Can be determined by the frequency of use of the stratified data.
[0030]
In the present embodiment, as described in detail below, a search request from a user is divided into a plurality of divided search requests each requesting one of a plurality of stratified data of any of the map databases requested by the user. And each divided search request is processed in parallel. In this sense, the stratified data is data that is a unit of division of a search request, and such a data unit is referred to as division unit data in this specification.
[0031]
The database server device 21 and the like can process a plurality of search requests in parallel under a certain condition by a multi-thread function. The division unit data is a constituent unit of the map database, and at least a plurality of division search requests relating to different division unit data can be processed in parallel using a plurality of threads as division unit data.
[0032]
In the search server device 10, a database search program 50 is stored and executed. The database search program 50 receives a search request output from the client device 40 and divides the received search request into a plurality of divided search requests. Unit 52, a search request input control unit 53 for inputting each divided search request to one of the databases, an input possibility determination unit 54 for determining the input possibility of the divided search request to the database, and a divided search for each database A database-based input status monitoring unit 55 for monitoring a request input status, a database communication unit 56 for communicating with a database server device, and a plurality of divided search requests generated from one search request from a user; A plurality of search result data output from the database server device 21 etc. Is transmitted to the user of the client device 40 includes a program part such as a search result combining unit 57.
[0033]
When a search request is input from the search server device 10 to the database server device 21 or the like, the database management program 24 in the database server device 21 or the like transmits the split search request to a database stored in the database server device 21 or the like. In this specification, inputting a divided search request from the search server device 10 to the database server device 21 or the like is simply referred to as inputting a divided search request to a database stored in the database server device 21 or the like, or simply This is sometimes referred to as submitting a divided search request to a database.
[0034]
Further, the database search program 50 obtains the division unit data arrangement information 60 indicating the division unit data included in the database 27 and the like provided in each of the database server devices 21 and the like, and monitoring by the database-based input status monitoring unit 55. A database-based input status table 70 indicating the input status of the divided search requests for each database, a common queue 80 for registering the divided search requests generated by division from the search requests output from the same user, The information includes information such as a search result management table 90 for managing the reception status of a plurality of search result data 91 for a divided search request generated by division from a search request output from the same user.
[0035]
FIG. 2 is a diagram showing an example of the division unit data arrangement information 60. The division unit data arrangement information 60 is information indicating division unit data included in the database 27 or the like provided in each database server device 21 or the like. In the figure, a database # field 601 stores numbers DB # 1, DB # 2, and DB # 3 of databases 27, 28, and 29 that can be searched by the search server device 10. In the figure, reference numerals 27 etc. of the respective databases 27 etc. are also described in parentheses. The division unit data arrangement status storage field 602 indicates whether or not the division unit data of each division unit data # is arranged in each of the databases 27, 28, and 29. A circle mark is stored or remains blank corresponding to each division unit data #. A circle indicates that the corresponding division unit data is arranged in each of the databases 27, 28, and 29.
[0036]
In the figure, division unit data # 1 is included in any of databases 27, 28, and 29, division unit data # 2 is included in databases 28 and 29, and division unit data # 3 is included in databases 27 and 29. And the division unit data # 4 and # 5 are included in the databases 27 and 28. Division unit data # 6 and # 8 are included only in database 28, division unit data # 7 is included only in database 27, and division unit data # 9 is included only in database 29.
[0037]
In FIG. 2, a priority 603 is further stored for each division unit data. Here, the priority is determined in inverse proportion to the multiplicity of the divided unit data corresponding to each divided unit data. For example, in the example shown in the figure, since the division unit data # 1 can be processed by three databases, the priority is set to 1/3. Since the division unit data # 2 can be processed by two databases, the priority is set to 1/2. Since the division unit data # 7 can be processed by only one database, the priority is set to 1/1. Such a priority is such that when a plurality of divided search requests registered in the common queue 80 (FIG. 1) at the same time can be input to any database, one divided search request to be input to that database is determined. It can be used for selection criteria.
[0038]
FIG. 3 is a diagram showing an example of the database-based input status table 70 usable in the present embodiment. The database-based input status table 70 indicates the input status of the divided search request for each database obtained by monitoring by the database-based input status monitor 55. As is usually the case, also in the present embodiment, each database server device 21 and the like processes a plurality of received search requests (in the present embodiment, divided search requests) using different threads. A threshold value of the number of usable threads is determined for each database server device. In the present embodiment, when the total number of threads for the divided search request input to the database server device does not exceed the threshold value, Are assumed to be processed in parallel. When the threshold value of the total number of threads that can be used is different from the threshold value of the total number of threads that can be processed in parallel, the latter threshold value is used. Therefore, in the present embodiment, the threshold value of the total number of threads is the threshold value of the total number of threads that can be processed in parallel.
[0039]
In the database-specific input status table 70, a field 701 for storing a threshold value of the total number of threads that can be processed in parallel in the database corresponding to each of the databases 27, 28, 29, and a field for storing the number of input divided search requests 702 and a field 703 storing an entry prohibition flag indicating whether or not the corresponding database is in a state of prohibiting new entry of a divided search request. When the value of this flag is 1, it indicates a closing prohibition state.
[0040]
The database-based input status monitoring unit 55 sets the threshold value of the total number of threads that can be processed in parallel determined by the database server device 21 or the like in which each database 27 or the like is stored in the field 701 of the database-based input status table 70 as an initial value. To be stored. Further, when a new divided search request is input to any database by the search request input control unit 53, the number of input divided search requests in the field 702 corresponding to the database is increased by one.
[0041]
Further, when the processing of any of the input divided search requests is completed in any of the database server devices 21 and the like, the database server device 21 and the like transmits the search result data to the search server device 10. In the search server device 10, when the database communication unit 56 receives the search result data, the database communication unit 56 notifies the search result data to the search result combining unit 57, and further receives the search result data and transmits the search result data to the database server. The identification information of the device is notified to the search request input control unit 53 and the input status monitoring unit 55 for each database. Upon receiving this notification, the database-based input status monitoring unit 55 decreases the number of input divided search requests in the field 702 corresponding to the database included in the database server device by one.
[0042]
When the number of input divided search requests in the field 702 for any database is changed, the input status monitoring unit 55 for each database changes the number of input divided search requests in the field 701 for the same database as the number of input divided search requests in the field 702. When the number of input divided search requests in the field 702 becomes equal to the threshold of the total number of threads in the field 701, the entry prohibition flag in the field 703 for the same database is set to 1.
[0043]
On the other hand, when the number of input divided search requests in the field 702 becomes equal to or less than the threshold value of the total number of threads in the field 701, the input prohibition flag in the field 703 for the same database is set to 0. In this way, a new divided search request can be input to the database whose input prohibition flag is 0. Further, when the new divided search request is input, a plurality of divided search requests already input to the same database can be input. It will be processed in parallel with the search request.
[0044]
When an ordinary database server device receives a number of search requests exceeding the threshold value, it registers the received search requests in an internal queue (not shown) in the database server device. However, in the present embodiment, the total number of threads used by the database server device 21 or the like is set to the threshold value in order to avoid maintaining the divided search request in a waiting state inside the database server device 21 or the like. When the search request is reached, the search request input control unit 53 does not input a new divided search request to the database server device 21 or the like.
[0045]
In the present embodiment, it is assumed that each database server device 21 and the like can process a plurality of divided search requests in parallel using a plurality of threads within a range not exceeding a threshold value of the total number of threads determined by the database server device 21 or the like. I have. Therefore, in the present embodiment, when a plurality of divided search requests input to each database server device 21 and the like are input, they are processed in parallel with the already input divided search requests. That is, when the search request input control unit 53 inputs a new divided search request to the database server device 21 or the like, the search condition can be processed by the database server device 21 or the like. The division unit data requested by the divided search request is included in the database 27 or the like stored in the database server device 21 or the like), and the new divided search request is processed in parallel with the inputted divided search request. It is confirmed that the condition for parallel processing is satisfied.
[0046]
FIG. 4 is a schematic block diagram of the client device 40. The client device 40 includes a processing device 41, an input device 42 including a data input unit such as a pointing device such as a mouse and a keyboard, and a display device 43 such as a CRT. The processing device 41 includes a map display program 44 and a web browser program. 45 is executed. The map display program 44 includes a search control processing unit 441, a map information display processing unit 442, and the like. In the client device 40, the user inputs the name of the map database to be searched and information specifying the area to be displayed in the map database by the search control processing unit 441. It is transmitted to the search server device 10 by the control processing unit 441. The map information display processing unit 442 receives a series of search result data transmitted from the search server device 10, generates map information indicated by each data, superimposes the map information, and superimposes the map information on the display device 43. Display.
[0047]
The search request specified by the user is processed as follows. In the search server device 10, when the client device communication unit 51 receives the search request from the client device 40, the client device communication unit 51 assigns a user identification number (user ID) to the user, and the search request And the time at which the search request was received (request reception time). The search request receiving and disassembling unit 52 receives the received search request, assigns a request registration number, and registers the received search request in the search result management table 90. The contents of the search result management table 90 will be described later. Further, the search request reception decomposing unit 52 decomposes the search request into a plurality of divided search requests, and stores the request registration number, the plurality of divided search requests, the user ID, and the request reception time in the common queue 80. Register with. Each divided search request includes information for specifying the divided unit data to be searched and other information used for the search.
[0048]
FIG. 5 is a diagram illustrating an example of the common queue 80. In the figure, 801, 802, 803,... Are areas for storing a plurality of search requests obtained by dividing one search request, respectively, and the areas 801, 802, 803,. The information about the search request is stored. In each area 801 and the like, a field 811 for storing a request registration number and a field for storing user identification information (simply indicated by ID1, ID2, and the like in the figure) assigned to the user who issued the search request. 812, a field 813 for storing a plurality of divided search requests for each of the plurality of divided unit data corresponding to the plurality of divided unit data, and a search request serving as a source of the plurality of divided search requests are received by the client communication unit 51. And a field 814 for storing a request reception time indicating the time when the request was made. Note that the request reception time may use another time, for example, a time when the search request is decomposed into a plurality of search requests by the search request reception decomposing unit and the divided search requests are registered in the common queue 80. Good.
[0049]
In the figure, it can be seen that the user ID of the first search request is ID1 and the user ID of the second search request is ID2. In the field 813, a circle mark is stored for a division unit data for which a division search request is made among a plurality of division unit data. Four divided search requests for the division unit data # 1, 3, 5, and 6 are generated and registered from the first search request. Similarly, five division search requests for division unit data # 2, 3, 4, 6, and 8 are generated and registered from the second search request.
[0050]
FIG. 6 is a schematic flowchart of a part of the processing of the search request input control unit 53. FIG. 7 is a schematic flowchart of another part of the process of the search request input control unit 53. First, the search request input control unit 53 checks whether or not the processing of the divided search request input to any of the database server devices 21 or the like has been completed (step S531). When the processing of the divided search request that has been input by any of the database server devices 21 or the like ends, the search result is notified to the search server device 10 as described above, and the search request input control unit 53 also sends the relevant database server. Since the reception of the search result from the device 21 or the like is notified, the search request input control unit 53 can know that the processing of the input divided search request has been completed when the reception notification is received.
[0051]
If it is determined in step S531 that the processing of the divided search request that has been input to any of the databases has not been completed, the process proceeds to step S537. When it is determined in step S531 that the processing of the divided search request that has been input to any of the databases has been completed, in synchronization with the completion, the processing of the plurality of divided search requests in the common queue 80 is performed as follows. Therefore, the divided search request that can be input to the database is detected with priority given to the oldest search request.
[0052]
Specifically, in order to specify the oldest divided search request in the common queue 80, for example, the oldest request registration number 811 (FIG. 5) is specified as an argument, and the database is also specified as an argument and input. The possibility determination unit 54 is called (step S532), and the input possibility determination unit 54 determines whether the divided search request having the request registration number can be input to the database.
[0053]
When the database and the request registration number are specified as arguments, the input possibility determination unit 54 reads one or a plurality of divided search requests having the request registration number from the common queue 80, and reads the plurality of divided search requests. When the search is performed, a divided search request that can be input to the database specified by the argument is detected from the plurality of divided search requests. Here, the split search request that can be input means that the division unit data requested by the split search request is included in the database specified by the argument, and thus the split search request can be processed by the database. It satisfies the condition. Furthermore, the entry prohibition flag 703 (FIG. 3) of the database is off, and therefore, even if the divided search request is entered into the database, the divided search request is executed in parallel with other divided search requests already entered in the database. Satisfies the condition that the parallel processing is possible.
[0054]
When it is determined that a plurality of split search requests can be input, the input possibility determination unit 54 selects one of the plurality of input search requests that can be input based on a predetermined criterion. For this selection criterion, for example, the priority 603 shown in FIG. 2 can be used. That is, a division search request that requests the division unit data with the highest priority may be selected from among the plurality of division unit data included in the input destination database.
[0055]
Since the division unit data having a higher priority is not included in another database server device, the possibility that a division search request requesting the division unit data is processed by another database is caused by the division unit data having a lower priority. Lower. Therefore, it is presumed that it is desirable to input a divided search request requesting division unit data having a high priority first among a plurality of divided search requests determined to be inputtable. When there are a plurality of division search requests requesting the division unit data having the highest priority, one of them may be selected by an appropriate method.
[0056]
The input possibility determination unit 54 determines the request registration number previously notified from the search request input control unit 53 and information for identifying the selected one divided search request (for example, the division unit data requested by the divided search request). No.) and the identification information of the database of the input destination previously notified from the search request input control unit 53 are notified to the search request input control unit 53 together.
[0057]
In step S533, the search request input control unit 53 determines whether the input possibility determination unit 54 has detected a split search request that can be input. If no split search request that can be input is detected, it is determined whether a split search request with the next oldest request registration number is registered in the common queue 80 (step S534). One or more divided search requests having the next oldest request registration number registered in the common queue 80 are changed to the processing target (step S535), and the above-described step S532 and subsequent steps are repeated for those divided search requests. . If it is determined in step S534 that the divided search request of the next oldest request registration number has not been registered in the common queue 80 (No in step S534), the process proceeds to step S537.
[0058]
In step S533, when it is determined by the input possibility determining unit 54 that an inputtable divided search request has been detected, the inputtable split search request notified by the input possibility determining unit 54 is extracted from the common queue 80, It is input to the database server device 21 or the like that stores the database after the above processing is completed (step S536). Thereafter, the process proceeds to step S537.
[0059]
In step S537, it is determined whether a new divided search request has been registered in the common queue 80. Here, the newly registered divided search request refers to a plurality of divided search requests received by the client communication unit 51 at times after the checked request reception time stored by the search request input control unit 53 and obtained by division. The search request is a divided search request registered in the common queue 80. As will be described later, the search request input control unit 53 checks whether the divided search requests registered in the common queue 80 can be input to any one of the databases in order from the oldest registered divided search request. The checked request reception time is the time at which the client communication unit 51 receives the latest divided search request registered in the common queue 80 among the divided search requests for which the search request input control unit 53 has checked the input possibility. It is. When the search request input control unit 53 subsequently checks the possibility of inputting the divided search request newly registered in the common queue 80, the search request input control unit 53 checks the divided search request having the request reception time 814 (FIG. 5) after the above time. Good.
[0060]
If it is determined in step S537 that the new divided search request has not been registered in the common queue 80, the process proceeds to step S531. If it is determined in step S537 that a new divided search request is registered, the oldest divided search request determined to be newly registered is received by the client communication unit 51 as a checked request reception time. The stored time is stored (step S538 in FIG. 7). Thereafter, the input possibility determining unit 54 is called by designating the request registration number of the divided search request received at the oldest time determined to be newly registered in the common queue 80 as an argument (step S539), The input possibility determination unit 54 determines whether the divided search request having the request registration number can be input to any database. When there are a plurality of divided search requests registered in the common queue 80 at the same time, the input possibility determination unit 54 simultaneously determines whether or not each of the divided search requests can be input to any one of the databases.
[0061]
Although the request registration number is specified by the argument, unlike the case where the request registration number is called in step S532, if the input destination database is not specified by the argument, the input possibility determination unit 54 determines from all the databases. Detect databases that are ready to be submitted and select split search requests that can be submitted to those databases that are ready to be submitted.
[0062]
That is, one or a plurality of divided search requests having the request registration number are read from the common queue 80, and when a plurality of the divided search requests are read, it can be input to any one of the plurality of the divided search requests. A complex split search request. Here, the database that can be input is a database that includes the division unit data requested by the divided search request (processable condition), and the input prohibition flag 703 (FIG. 3) of the database is off. That is, the database satisfies the parallel processing condition.
[0063]
As described in the case where it is called in step S532, when it is determined that a plurality of split search requests can be input, the input possibility determination unit 54 determines one of the plurality of input search requests in advance. Select based on the criteria For this selection criterion, for example, the priority 603 shown in FIG. 2 can be used. That is, since the division unit data having a higher priority is not included in another database server device, the division search request requesting the division unit data is not likely to be processed by another database. Lower than the data. Therefore, it is presumed that it is desirable to input a divided search request requesting division unit data having a high priority first among a plurality of divided search requests determined to be inputtable. When there are a plurality of division search requests requesting the division unit data having the highest priority, one of them may be selected by an appropriate method.
[0064]
The input possibility determination unit 54 determines the request registration number previously notified from the search request input control unit 53 and information for identifying the selected one divided search request (for example, the division unit data requested by the divided search request). ) And the identification information of the database of the input destination determined to be inputtable, together with the search request input control unit 53.
[0065]
In the search request input control unit 53, it is determined whether the input possibility determination unit 54 has detected the inputtable divided search request (step S540). When no split search request that can be input is detected, it is determined whether there is a split search request having the next oldest request registration number newly registered in the common queue 80 (step S541) and registered. If so, the plurality of divided search requests having the next oldest request registration number registered in the common queue 80 are changed to processing targets (step S542), and thereafter, the process proceeds to step S538.
[0066]
In step S538, the request reception time 814 (FIG. 5) of the divided search request having the registration number changed to the processing target is stored as the checked request reception time, and each divided search request changed to the processing target is further stored. Are repeated from step S539. If it is determined in step S541 that the next oldest divided search request is not registered in the common queue 80 (No in step S541), the process proceeds to step S531 (FIG. 6).
[0067]
If it is determined in step S540 that the input possibility determination unit 54 has detected the inputtable divided search request, the input possible search request notified by the input possibility determination unit 54 is extracted from the common queue 80, and The database is entered into the database server device that stores the database that can be entered, which is notified from the entry possibility determination unit 54 (step S543). Thereafter, the process proceeds to step S531.
[0068]
In this way, each time the processing of a divided search request that has already been input to one of the databases is completed, a split search request that can be input is selected from the input divided search requests and input. Therefore, in the processed database, the newly input divided search request is also processed in parallel with the already input divided search request, so that the processing speed of the database server device storing the database is reduced. I will not. Moreover, since a new divided search request is input to the database after the processing of one divided search request is completed, it can be seen that the processing load does not increase significantly.
[0069]
Further, each time a search request is newly received from a client device and a plurality of divided search requests are newly registered in the common queue 80, a split search request that can be input among them is detected, and such a divided search request is detected. If there is a search request, the divided search request is input to an appropriate database. At this time, as the input condition, the input prohibition flag for the input destination database is off. Therefore, even if a new split search request is added and input, the split search request is not the same as the already input split search request. Since processing is performed in parallel, it is expected that the processing speed will not decrease.
[0070]
FIG. 8 is a diagram showing an example of the search result management table 90 for one of the search requests. The search result management table 90 is generated by the search request accepting / disassembling unit 52 in response to any search request received by the search request accepting / disassembling unit 52. The search result management table 90 is similarly generated for other search requests, but only one search result management table 90 is illustrated in the figure.
[0071]
The search result management table 90 includes a field 901 for storing a user ID, a field 902 for storing a request registration number, a field 903 for storing a request flag indicating the presence or absence of a divided search request for each divided unit data, A field 904 for storing the total number, a field 905 for storing a completion flag indicating whether or not the search by each divided search request has been completed, a field 906 for storing the total number of uncompleted divided search requests (the number of incomplete), A field 907 for storing an address (search result data pointer) of a memory of the search server device 10 in which search result data obtained by the completed divided search request is stored is provided. Update of the search result management table 90 is managed by the search result combining unit 57.
[0072]
When the search result management table 90 is generated by the search request reception / disassembly unit 52, the user ID is stored in the field 901 and the request registration number assigned to the search request is stored in the field 902. In the field 903, flags corresponding to a plurality of divided search requests generated from the search request are set to 1. The field 904 stores the total number of generated divided search requests, the field 905 stores a value of 0 as an initial value of a completion flag for each divided search request, and the field 906 stores an initial value of an uncompleted number. Is stored as the total number of divided search requests in the field 904. Nothing is stored in the field 907 at this time.
[0073]
As shown in FIG. 3B, the search result data 91 for each divided search request includes the identification information (user ID) 911 of the user who issued the divided search request and the divided unit data requested by the divided search request. 912, the data length 913 of the data 914 obtained by the search, and the data 914.
[0074]
The user ID (911) is the user ID stored in the common queue 80 for the divided search request when the search request input control unit 53 submits the divided search request to any one of the database server devices. Is input together with the divided search request, and the database server 21 or the like at the input destination attaches the user ID to the search result data when returning the search result data obtained by the search to the search server 10. Has become. The division unit data number 912 in the search result data 91 is included in the divided search request input to any one of the database server devices, and the input destination database server device is obtained by the search. When the search result data is returned to the search server device 10, the search result data is given the number 912 of the division unit data.
[0075]
FIG. 9 is a schematic flowchart of the processing of the search result combining unit 57. First, it is checked whether or not search result data for a search requested by any of the divided search requests has been received from any of the databases (step S571). If not, the same step S571 is repeated. When the search result data is received, the search result data pointer 907 (FIG. 9) corresponding to the division unit data # added to the search result data in the search completion management table for the user ID added to the search result data. 8), the address of the received search result data (the address of a memory (not shown) in the search server device 10 where the search result data is stored) is stored (step S572). Similarly, the search completion flag 905 corresponding to the division unit data # is turned on (step S573), and the unfinished number 906 in the table is reduced by 1 (step S574).
[0076]
Further, it is determined whether or not the unfinished number 906 is 0 (step S575). If the unfinished number 906 is not 0, the process returns to step S571, and waits for reception of new search result data. If it is determined in step S575 that the unfinished number 906 is 0, the plurality of search result data 91,... Is stored in the memory (not shown) in the search server device 10 using the plurality of search result data pointers stored in the field 908. Are added to the search result data 91,... And the user ID stored in the field 901 is output to the client device communication unit 51 (step S576), and the search result management table 90 is deleted (step S576). (Step S577) Then, the process returns to step S571.
[0077]
The client device communication unit 51 determines the client device 40 of the transmission destination based on the user ID added to the plurality of output search result data, and transmits a series of search result data 91 thereto. In the client device 40, as shown in FIG. 4, the map information display processing unit 442 receives the above series of search result data, generates map information indicated by each data, and superimposes the map information. Is displayed on the display device 43.
[0078]
As described above, a search request requesting a search for a plurality of divided unit data stored in a non-uniformly multiplexed manner in a plurality of database server devices 21 and the like is divided into a plurality of divided search requests. Under the condition that the performance of the device 21 or the like is not deteriorated, it is possible to process as many divided search requests as possible in parallel, and the processing speed of the search request itself does not decrease.
[0079]
<Second Embodiment of the Invention>
In the first embodiment, it is assumed that a plurality of divided search requests are processed in parallel as long as a thread that is equal to or less than a threshold of the total number of threads that can be input to each database server device is used. However, in an actual database server device, even if the total number of threads does not exceed the threshold, the former is parallel to the latter depending on the relationship between the divided search request to be submitted and the submitted divided search request. May not be processed.
[0080]
For example, when the divided unit data requested by a subsequent divided search request to be input matches the divided unit data used by any of the input preceding divided search requests, the divided unit data according to the preceding divided search request is used. Until the use of the divided unit data is completed, the subsequent divided search request may not be processed in parallel with the divided search request. Therefore, when the subsequent division search request is input, the division unit data is provided in the database server device in which the division unit data is stored and registered in the waiting queue.
[0081]
Therefore, in the present embodiment, when determining the input possibility, a database search program, a database search method, and a database search device that more closely reflect the parallel processing possibility executed by the input destination database server device. Show. More specifically, in the present embodiment, the relationship between a plurality of input divided search requests that have been input and the subsequent divided search requests to be input is checked, and the subsequent divided search request It is possible to determine whether it can be processed in parallel with the search request.
[0082]
FIG. 10 is a diagram showing an example of the database-based input status table 70A usable in the present embodiment. The database-based input status table 70A is provided with fields 701 to 703 in the same manner as the database-based input status table 70 shown in FIG. 3, and further uses division unit data in the database corresponding to each database. A field 704 is provided for storing a division unit data in use flag indicating whether or not the data is medium. However, the total number of threads stored in the field 702 is a threshold value of the total number of threads that can be used simultaneously by each database, and it may be determined whether or not threads below the threshold value are processed in parallel.
[0083]
In the field 704, a value 1 is stored for the division unit data used by any of the input division search requests. When the search request input control unit 53 inputs any of the divided search requests to any of the databases, the database-specific input status monitoring unit 55 (FIG. 1) transmits the data to the database in the database-specific input status table 70A. The flag 1 is stored for the division unit data requested by the division search request in the corresponding field 703. Further, when the processing of any of the divided search requests is completed in any of the databases, the value of the flag for the division unit data requested by the divided search request in the field 703 corresponding to the database in the database-specific input status table 70A To 0.
[0084]
In the present embodiment, when the split search request satisfies the following two conditions, the input possibility determination unit 54 determines that the split search request can be input. First, as in the first embodiment, the first condition is that the division unit data requested by the divided search request to be input is included in the input destination database (processable condition). Further, the parallel processing possible condition of the input destination database is checked. This parallel processing possible condition is composed of two conditions. First, the first condition is that the number of input divided search requests in the field 702 does not exceed the threshold value of the total number of threads in the field 701, and therefore, the input prohibition flag in the field 703 is 0. That is, the input destination database is in a state where a new divided search request can be input. Further, the second condition is that the division unit data requested by the division search request to be input is the same as the division unit data in use stored in the field 704 for the input destination database in the database-specific input status table 70A. They do not match. When this condition is satisfied, the divided search request to be submitted does not collide with the divided unit data being used by the entered divided search request. It can be seen that the request is processed in parallel with the divided search request.
[0085]
By judging the input possibility in this way, not only the number of used threads but also the collision of the divided unit data requested by the preceding divided search request and the subsequent divided search request to be input occurs. It is possible to determine whether or not it is. That is, by making the input possibility determination unit 54 check whether or not the parallel processing enabled condition, which is performed by the database server device of the input destination, is satisfied, the search server device 10 can more accurately satisfy the parallel processing enabled condition. It is possible to determine whether or not each of the database server devices 21 and the like can process a large number of divided search requests without lowering the performance.
[0086]
When each database server device decides whether or not to start processing a new divided search request as a new thread, it tries to start processing with the divided unit data used by the divided search request being processed. In some cases, conditions different from the presence / absence of collision with the division unit data used by the subsequent divided search request may be considered. For example, even if a division unit data is used in response to a division search request, the division unit data may actually be further divided into a plurality of partial areas, and only one of the partial areas may be used. .
[0087]
Even though the preceding divided search request and the subsequent divided search request require the same divided unit data, if they request different partial areas in the divided unit data, those divided search requests can be processed in parallel. It may be done. In such a case, a flag indicating whether or not each divided unit data is in use is stored in the divided unit data in use flag 704 in the database-based input status table 70A in correspondence with the plurality of partial areas of each divided unit data. Whether the preceding divided search request can be processed in parallel with the preceding divided search request depending on whether the preceding divided search request and the subsequent divided search request require the same partial area of the same divided unit data. May be determined.
[0088]
<Third Embodiment of the Invention>
In the above embodiment, the search result combining unit 57 confirms that the search result combining unit 57 has obtained all of the plurality of search result data for the plurality of divided search requests generated from the search request from the same user. After that, the search result data is transferred to the requesting client device 40 as a whole.
[0089]
In the present embodiment, a database search program and a database search that transmit the obtained search result data to the requesting client device each time the search result data is obtained without combining the plurality of search result data 1 shows a method and a database search device.
[0090]
That is, the search result combining unit 57 and the search result management table 90 used in the first embodiment are not used on the search server device 10, and any of the search result data can be obtained by any of the database server devices. Each time, the obtained search result data is directly transmitted from the database server device to the requesting client device without passing through the search server device 10. For this reason, when submitting any of the divided search requests to any of the database server devices, the search server device 10 sends the user ID and the IP address of the client device together with the divided search request to the database server device. Send.
[0091]
When the search result data is obtained in response to any of the divided search requests in any of the database server devices 21 or the like, the database server device uses the IP address of the client device received in response to the divided search request. The search result data is transmitted to the requesting client device via the network 30, and the search server device 10 is notified that the processing of the divided search request has been completed.
[0092]
Upon receiving the notification, the search server device 10 can issue a new divided search request to the database server device, as in the first embodiment. The client device 40 is provided with the search result combining unit 57 and the search result management table 90 so that the search result combining unit 57 monitors a plurality of obtained search result data and maps the search result data to map information. What is necessary is just to display by the display processing part 442 (FIG. 4).
[0093]
【The invention's effect】
As described above, according to the present invention, a plurality of divided search requests obtained by dividing a newly generated search request can be processed in parallel by a plurality of database server devices. , A new split search request is submitted under the condition that it can be processed in parallel, so that after a search request is submitted to one of the database server devices, it is avoided that the search request is maintained in a waiting state in the database server device. As a result, it is possible to suppress an increase in the processing time for all the divided search requests, and to shorten the processing time for the search requests.
[Brief description of the drawings]
FIG. 1 is a schematic configuration diagram of an information search system using one embodiment of a database search program according to the present invention.
FIG. 2 is a diagram illustrating an example of division unit data arrangement information.
FIG. 3 is a diagram showing an example of a database-based input status table.
FIG. 4 is a schematic block diagram of a client device.
FIG. 5 is a diagram illustrating an example of a common queue.
FIG. 6 is a schematic flowchart of a part of a process of a search request input control unit.
FIG. 7 is a schematic flowchart of another part of the processing of the search request input control unit.
FIG. 8 is a diagram illustrating an example of a search result management table.
FIG. 9 is a schematic flowchart of processing of a search result combining unit.
FIG. 10 is a diagram illustrating an example of a database-based input status table usable in the second embodiment.

Claims (3)

複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成し、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録し、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるいう処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入し、
いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する、
ステップをコンピュータに実行させるようにプログラムされていることを特徴とするデータベース検索プログラム。
A search request received from any client device for a non-uniform multiplex database which is stored in a plurality of database server devices and is configured by a plurality of databases each including a different combination of a plurality of division unit data is divided. Generating a plurality of divided search requests each requesting a search for one of the plurality of divided unit data,
The generated plurality of divided search requests are stored in a common queue provided commonly to the plurality of database server devices so that the order of the reception times of the search requests from which the respective divided search requests are generated can be identified. Register,
Each time a plurality of divided search requests are newly registered in the common queue, the plurality of divided search requests are sequentially selected, and a processable condition that the selected divided search request can be processed, Determine one or more database server devices that can be additionally input that satisfy the parallel processing enabling condition that the selected divided search request can be processed in parallel with another divided search request,
The selected divided search request is additionally input to one database server device or one of a plurality of database server devices determined to be additionally inputtable by the determination,
In synchronization with the completion of the processing of any of the divided search requests by any of the database server devices, the oldest divided search request that satisfies the processable condition and the parallel processable condition is selected from the common queue. To the database server device
A database search program, which is programmed to cause a computer to execute steps.
複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかの利用者により要求され、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成し、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録し、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別し、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入し、
いずれかの分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する、
ステップを含むことを特徴とするデータベース検索方法。
Any one of the client devices requested by any user for the heterogeneous multiplex database stored in the plurality of database server devices and configured by the plurality of databases composed of different combinations of the plurality of divided unit data, Divides the search request received from, to generate a plurality of divided search requests to request a search for each of the plurality of divided unit data,
The generated plurality of divided search requests are stored in a common queue provided commonly to the plurality of database server devices so that the order of the reception times of the search requests from which the respective divided search requests are generated can be identified. Register,
Each time a plurality of divided search requests are newly registered in the common queue, the plurality of divided search requests are sequentially selected, a processable condition that the selected divided search request can be processed, and Determine one or more database server devices that can be additionally input that satisfy the parallel processing enabling condition that the selected divided search request can be processed in parallel with another divided search request,
The selected divided search request is additionally input to one database server device or one of a plurality of database server devices determined to be additionally inputtable by the determination,
In synchronization with the completion of the processing of any of the divided search requests by any of the database server devices, the oldest divided search request that satisfies the processable condition and the parallel processable condition is selected from the common queue. To the database server device
A database search method comprising the steps of:
複数のデータベースサーバ装置にそれぞれ記憶され、複数の分割単位データの異なる組合せ組合せからなる複数のデータべースにより構成された不均一多重データベースに対する、いずれかの利用者により要求され、いずれかのクライアント装置から受信された検索要求を分割して、それぞれ前記複数の分割単位データの一つに対して検索を要求する複数の分割検索要求を生成する手段と、
生成された複数の分割検索要求を、前記複数のデータベースサーバ装置に共通に設けられた共通キューに、それぞれの分割検索要求を生成する元となった検索要求の受信時刻の順序を識別できるように登録する手段と、
前記共通キューに複数の分割検索要求が新たに登録される毎に、当該複数の分割検索要求を順次選択し、当該選択された分割検索要求を処理可能であるという処理可能条件と、かつ、処理中の他の分割検索要求と並列に当該選択された分割検索要求を処理できるという並列処理可能条件とを満たす追加投入可能な一つ又は複数のデータベースサーバ装置を判別する手段と、
前記判別により追加投入可能であると判別された一つのデータベースサーバ装置若しくは複数のデータベースサーバ装置の一つに前記選択された分割検索要求を追加投入する手段と、
いずれかの投入された分割検索要求の処理がいずれかのデータベースサーバ装置により終了したことに同期して、前記共通キューから、前記処理可能条件と前記並列処理可能条件とを満たす最も古い分割検索要求を選択して当該データベースサーバ装置に投入する手段と、
を備えることを特徴とするデータベース検索装置。
Any one of the clients requested by any user for the heterogeneous multiplex database stored in the plurality of database server devices and configured by the plurality of databases composed of different combinations of the plurality of divided unit data, Means for dividing a search request received from the device, and generating a plurality of divided search requests each requesting a search for one of the plurality of divided unit data,
The generated plurality of divided search requests are stored in a common queue provided commonly to the plurality of database server devices so that the order of the reception times of the search requests from which the respective divided search requests are generated can be identified. Means to register;
Each time a plurality of divided search requests are newly registered in the common queue, the plurality of divided search requests are sequentially selected, and a processable condition that the selected divided search request can be processed, and Means for determining one or more database servers that can be additionally input that satisfy the parallel processing enabling condition that the selected divided search request can be processed in parallel with the other divided search requests in;
Means for additionally inputting the selected divided search request to one database server device or one of a plurality of database server devices determined to be additionally inputtable by the determination,
In synchronization with the completion of the processing of any of the input divided search requests by any of the database server devices, the oldest divided search request that satisfies the processable condition and the parallel processable condition from the common queue. Means for selecting and inputting to the database server device;
A database search device comprising:
JP2002263396A 2002-09-09 2002-09-09 Database search program, database search method and database search device Expired - Fee Related JP4021287B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002263396A JP4021287B2 (en) 2002-09-09 2002-09-09 Database search program, database search method and database search device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002263396A JP4021287B2 (en) 2002-09-09 2002-09-09 Database search program, database search method and database search device

Publications (2)

Publication Number Publication Date
JP2004102631A true JP2004102631A (en) 2004-04-02
JP4021287B2 JP4021287B2 (en) 2007-12-12

Family

ID=32263126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002263396A Expired - Fee Related JP4021287B2 (en) 2002-09-09 2002-09-09 Database search program, database search method and database search device

Country Status (1)

Country Link
JP (1) JP4021287B2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008538825A (en) * 2005-04-21 2008-11-06 マイクロソフト コーポレーション Virtual earth
JP2009110052A (en) * 2007-10-26 2009-05-21 Toshiba Corp Coordinator server and distributed processing method
JP2011039820A (en) * 2009-08-12 2011-02-24 Hitachi Ltd Stream data processing method and apparatus
WO2011039841A1 (en) * 2009-09-29 2011-04-07 株式会社東芝 Search device and system
JP2011108087A (en) * 2009-11-19 2011-06-02 Nec Access Technica Ltd Data processing system, data processing method and data processing program
JP2012150515A (en) * 2005-04-21 2012-08-09 Microsoft Corp Virtual earth
US8850011B2 (en) 2005-04-21 2014-09-30 Microsoft Corporation Obtaining and displaying virtual earth images
JP2015045995A (en) * 2013-08-28 2015-03-12 Kddi株式会社 Virtual database system management device, management method and management program
KR20180073493A (en) * 2016-12-22 2018-07-02 사운드하운드, 인코포레이티드 Full-duplex utterance processing in a natural language virtual assistant
JP2018142363A (en) * 2018-05-16 2018-09-13 キヤノンマーケティングジャパン株式会社 Information processing system, information processing apparatus, control method, and program

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850011B2 (en) 2005-04-21 2014-09-30 Microsoft Corporation Obtaining and displaying virtual earth images
JP2008538825A (en) * 2005-04-21 2008-11-06 マイクロソフト コーポレーション Virtual earth
US10182108B2 (en) 2005-04-21 2019-01-15 Microsoft Technology Licensing, Llc Obtaining and displaying virtual earth images
JP2012150515A (en) * 2005-04-21 2012-08-09 Microsoft Corp Virtual earth
US9383206B2 (en) 2005-04-21 2016-07-05 Microsoft Technology Licensing, Llc Obtaining and displaying virtual earth images
JP2009110052A (en) * 2007-10-26 2009-05-21 Toshiba Corp Coordinator server and distributed processing method
JP2011039820A (en) * 2009-08-12 2011-02-24 Hitachi Ltd Stream data processing method and apparatus
WO2011039841A1 (en) * 2009-09-29 2011-04-07 株式会社東芝 Search device and system
JP5514220B2 (en) * 2009-09-29 2014-06-04 株式会社東芝 Search device and system
JP2011108087A (en) * 2009-11-19 2011-06-02 Nec Access Technica Ltd Data processing system, data processing method and data processing program
JP2015045995A (en) * 2013-08-28 2015-03-12 Kddi株式会社 Virtual database system management device, management method and management program
KR20180073493A (en) * 2016-12-22 2018-07-02 사운드하운드, 인코포레이티드 Full-duplex utterance processing in a natural language virtual assistant
US10699713B2 (en) 2016-12-22 2020-06-30 Soundhound, Inc. Techniques for concurrent processing of user speech
KR102192062B1 (en) * 2016-12-22 2020-12-16 사운드하운드, 인코포레이티드 Full-duplex utterance processing in a natural language virtual assistant
JP2018142363A (en) * 2018-05-16 2018-09-13 キヤノンマーケティングジャパン株式会社 Information processing system, information processing apparatus, control method, and program

Also Published As

Publication number Publication date
JP4021287B2 (en) 2007-12-12

Similar Documents

Publication Publication Date Title
US11288002B2 (en) System and method for providing high availability data
US6438562B1 (en) Parallel index maintenance
US7447693B2 (en) Dynamic cluster database architecture
US7644408B2 (en) System for assigning and monitoring grid jobs on a computing grid
US7113957B1 (en) Row hash match scan join using summary contexts for a partitioned database system
US9177019B2 (en) Computer system for optimizing the processing of a query
JP4327481B2 (en) Database system, server, inquiry input method and data update method
US8271523B2 (en) Coordination server, data allocating method, and computer program product
WO2008024850A2 (en) System and method for providing high availability data
US9774676B2 (en) Storing and moving data in a distributed storage system
CN107070645B (en) Method and system for comparing data of data table
US20060064408A1 (en) Program, method and apparatus for database management, and recording medium
CN105100050A (en) User permission management method and system
JP4021287B2 (en) Database search program, database search method and database search device
US6549931B1 (en) Distributing workload between resources used to access data
US20060195608A1 (en) Method and apparatus for distributed processing, and computer product
JP2009037369A (en) Resource assignment method to database server
WO2009157062A1 (en) Configuration management device, configuration management program, and configuration management method
CN115687359A (en) Data table partitioning method and device, storage medium and computer equipment
Naylor et al. Method of efficiently choosing a cache entry for castout
JPH10111821A (en) Client server system
US20080163238A1 (en) Dynamic load balancing architecture
CN112988874A (en) Data processing method, system, computing device and readable storage medium
JP6961133B1 (en) Search device, search method, and search program
US20240012645A1 (en) Multi-user in-memory queue for multi-treaded and/or multi-process computing architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041213

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050309

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20050323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070926

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees