(57)【要約】【課題】分散データベースシステムにおける検索速度を向上させるとともに、検索結果を確実に取得することができる技術を提供する。【解決手段】本発明に係る分散データベースシステムは、それぞれ異なるレコードを保持する複数のデータベースを有する複数のコンピュータを有し、各データベースに対する検索順序の異なるクエリを各コンピュータに対して並列に発行する。【選択図】図２
2017027471.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なるレコードを保持する複数のデータベースによって構成された分散データベースシステムであって、
第１データベースを有するとともに、前記第１データベースが保持するものとは異なるレコードを保持する第２データベースを有する、第１コンピュータ、
前記第１および第２データベースそれぞれのコピーを有する第２コンピュータ、
前記分散データベースシステムが保持するレコードに対して検索クエリを発行する検索コンピュータ、
を有し、
前記検索コンピュータは、前記第１コンピュータに対して、前記第１データベースを検索した後に前記第２データベースを検索するように構成された第１順序で、前記検索クエリを発行し、
前記検索コンピュータはさらに、前記第１コンピュータに対して前記検索クエリを発行することと並行して、前記第１順序とは異なる順序で前記第１および第２データベースそれぞれのコピーを検索するように構成された第２順序で、前記検索クエリを発行し、
前記検索コンピュータは、前記第１データベースまたはそのコピーに対する前記検索クエリの応答のうち最初に受け取ったものを採用するとともに、その送信元以外に対して送信した前記第１データベースまたはそのコピーに対する前記検索クエリをキャンセルし、さらに前記第２データベースまたはそのコピーに対する前記検索クエリの応答のうち最初に受け取ったものを採用するとともに、その送信元以外に対して送信した前記第２データベースまたはそのコピーに対する前記検索クエリをキャンセルし、
前記第１データベースまたはそのコピーに対する前記検索クエリの応答と、前記第２データベースまたはそのコピーに対する前記検索クエリの応答とを結合することにより、前記第１および第２データベースに対する前記検索クエリの結果を取得する
ことを特徴とする分散データベースシステム。
【請求項２】
前記検索コンピュータは、前記第１データベースに対する前記検索クエリの応答を前記第１コンピュータから最初に受け取ることが所定回数または所定時間連続した場合は、それ以後前記第２コンピュータに対して前記検索クエリを発行する際に、前記第２データベースのコピーを検索する順序を前記第２順序における順序よりも前にするかまたは前記第２データベースのコピーを検索しない
ことを特徴とする請求項１記載の分散データベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースシステムに関する。
【背景技術】
【０００２】
大規模なデータを効率的に処理するデータベースの１実装方式として、分散データベースシステムが知られている。分散データベースシステムは一般に、レコードを複数のホストコンピュータに分散して配置し、各ホストコンピュータが並列動作することにより、データの処理効率を高めようとするものである。
【０００３】
下記特許文献１は、データの登録・問い合わせ処理を高速に実行する分散データベース管理システムについて記載している。同文献においては、アクセスするデータがどのデータベース管理装置にあるかをあらかじめ判断することにより、全てのデータベース管理装置に対してアクセスが生じることに起因する性能劣化を回避している（同文献の０００６〜０００７参照）。
【０００４】
下記非特許文献１〜２は、比較的安価なサーバコンピュータを多数用いる分散データベースの事例について記載している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３５０７４１号公報
【非特許文献】
【０００６】
【非特許文献１】“Cassandraのはじめ方−手を動かしてNoSQLを体感しよう”、ＵＲＬ：http://gihyo.jp/dev/serial/01/cassandra/0001（２０１５年０７月０７日取得）
【非特許文献２】“第3回 クラウドの力を引き出す分散データベース”、ＵＲＬ：http://thinkit.co.jp/story/2010/06/17/1612（２０１５年０７月０７日取得）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記各文献に記載されている分散データベースにおいては、検索対象となっているデータを保持しているコンピュータに対してどの程度の負荷がかかっているかに応じて、検索リクエストに対する応答速度が異なり、必ずしも高速に応答が得られるとは限らないと考えられる。
【０００８】
分散データベースの１実装例として、例えば個人用コンピュータなどのように電源がＯＦＦされていることが比較的多いコンピュータを多数用いることにより、安価に分散データベースを構築することが考えられる。この場合、端末コストは安価に抑えることができる反面、検索対象となっているデータを保持しているコンピュータが稼働していない可能性がある。かかる場合においても検索対象データをできる限り確実に取得できるようにすることが望ましい。
【０００９】
本発明は、上記のような課題に鑑みてなされたものであり、分散データベースシステムにおける検索速度を向上させるとともに、検索結果を確実に取得することができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る分散データベースシステムは、それぞれ異なるレコードを保持する複数のデータベースを有する複数のコンピュータを有し、各データベースに対する検索順序の異なるクエリを各コンピュータに対して並列に発行する。
【発明の効果】
【００１１】
本発明に係る分散データベースシステムによれば、各コンピュータに対して並列にクエリを発行するので、応答の速いものを優先して採用することにより、検索速度を向上させることができる。さらには各コンピュータが同一のレコードを保持しているので、いずれかのコンピュータがダウンしていてもその他コンピュータから検索結果を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態１に係る分散データベースシステム１０００の構成図である。
【図２】検索コンピュータ３００が検索クエリを発行する手順を説明する図である。
【図３】検索コンピュータ３００が検索クエリに対する応答を処理する手順を説明する図である。
【図４】実施形態２において検索コンピュータ３００が検索クエリを発行する手順を説明する図である。
【図５】実施形態２において検索コンピュータ３００が検索クエリを発行する別手順を説明する図である。
【発明を実施するための形態】
【００１３】
＜実施の形態１＞
図１は、本発明の実施形態１に係る分散データベースシステム１０００の構成図である。分散データベースシステム１０００は、複数のＤＢ（ＤａｔａＢａｓｅ）コンピュータによって構成されたデータベースシステムである。図１においては、３つのＤＢコンピュータ１００ａ〜１００ｃを有する例を示した。各ＤＢコンピュータは同じ構成を備えるので、以下では主にＤＢコンピュータ１００ａについて説明する。各コンピュータおよびその構成要素を区別するときは、アルファベットの添え字を用いる。
【００１４】
ＤＢコンピュータ１００ａは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０ａ、ＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）１１１ａを備える。
【００１５】
ＣＰＵ１１０ａは、ＤＢＭＳ１１１ａを実行する演算装置である。ＤＢＭＳ１１１ａはデータベースを実装するプログラムである。ＤＢＭＳ１１１ａは、例えばレコード操作や検索クエリに対する応答などデータベースが備えるべき機能を実装している。図１においてＤＢＭＳ１１１ａは、３つのデータベースＤＢ２１０〜２３０を提供している。データベース２１０〜２３０は、それぞれ異なるレコードを保持する。各ＤＢコンピュータが有しているＤＢ２１０〜２３０は、それぞれ他のＤＢコンピュータが有しているＤＢ２１０〜２３０のコピーである。
【００１６】
分散データベースシステム１０００はさらに、検索コンピュータ３００を有する。検索コンピュータ３００は、ＣＰＵ３１０と検索プログラム３１１を備える。ＣＰＵ３１０は検索プログラム３１１を実行する。検索プログラム３１１は、分散データベースシステム１０００を構成する各データベースに対して検索クエリを発行する処理を実装している。検索プログラム３１１の動作については後述する。
【００１７】
以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのは当該プログラムを搭載したコンピュータが備えるＣＰＵなどの演算装置であることを付言しておく。
【００１８】
図２は、検索コンピュータ３００が検索クエリを発行する手順を説明する図である。ユーザは、例えば検索キーワードを指定した上で、検索クエリを発行するように検索コンピュータ３００へ指示する。検索プログラム３１１は、その指示にしたがって以下の手順により検索クエリを発行する。
【００１９】
（図２：ステップ（１）：ＤＢコンピュータ１００ａに対する検索）
検索プログラム３１１は、指定された検索キーワードにしたがって、ＤＢコンピュータ１００ａが備える各データベースを（ｉ）ＤＢ２１０、（ｉｉ）ＤＢ２２０、（ｉｉｉ）ＤＢ２３０、の順番で検索するよう要求する検索クエリをＤＢコンピュータ１００ａに対して発行する。
【００２０】
（図２：ステップ（１）：ＤＢコンピュータ１００ｂに対する検索）
検索プログラム３１１は、ＤＢコンピュータ１００ａに対して発行する検索クエリと並行して、ＤＢコンピュータ１００ｂに対する同様の検索クエリを発行する。ただし各データベースを検索する順序は、ＤＢコンピュータ１００ａに対する検索クエリとは異なるようにする。ここでは（ｉ）ＤＢ２２０、（ｉｉ）ＤＢ２３０、（ｉｉｉ）ＤＢ２１０、の順番で検索するものとする。
【００２１】
（図２：ステップ（１）：ＤＢコンピュータ１００ｃに対する検索）
検索プログラム３１１は、ＤＢコンピュータ１００ａおよび１００ｂに対して発行する検索クエリと並行して、ＤＢコンピュータ１００ｃに対する同様の検索クエリを発行する。ただし各データベースを検索する順序は、ＤＢコンピュータ１００ａに対する検索クエリとは異なり、さらにＤＢコンピュータ１００ｂに対する検索クエリとも異なるようにする。ここでは（ｉ）ＤＢ２３０、（ｉｉ）ＤＢ２１０、（ｉｉｉ）ＤＢ２２０、の順番に検索するものとする。
【００２２】
（図２：ステップ（１）：補足）
検索プログラム３１１は、必ずしも厳密に各ＤＢコンピュータに対して同時に検索クエリを発行する必要はない。すなわち、あるＤＢコンピュータに対する検索クエリの応答が完了するよりも前にその他ＤＢコンピュータに対して検索クエリを発行すればよい。
【００２３】
図３は、検索コンピュータ３００が検索クエリに対する応答を処理する手順を説明する図である。検索プログラム３１１は、以下の手順により検索クエリに対する応答を処理する。
【００２４】
（図３：ステップ（２）：ＤＢ２１０に対する検索結果）
各ＤＢコンピュータは、検索クエリに対する応答を検索コンピュータ３００に対して送信する。ここではまず、ＤＢ２１０に対する検索クエリの応答について説明する。各ＤＢコンピュータは、自身の演算負荷状況などに応じて検索クエリを処理するので、各データベースに対する検索を完了するまでに要する時間はそれぞれ異なる。ただし一般的には、最初に検索クエリを受信したデータベースに対する応答が最も速く得られると思われる。図２〜図３に示す例においては、ＤＢコンピュータ１００ａ〜１００ｃのなかでＤＢコンピュータ１００ａがＤＢ２１０に対する検索クエリを最初に受け取るので、ＤＢコンピュータ１００ａがＤＢ２１０に対する検索クエリの応答を最初に送信するものと仮定した。
【００２５】
（図３：ステップ（３）：１００ａからの結果を採用）
検索プログラム３１１は、ＤＢ２１０に対する検索クエリの（有効な）応答として最初に受け取ったものを、同ＤＢに対する検索クエリの応答として採用する。ここではＤＢコンピュータ１００ａから受信した検索結果を、ＤＢ２１０に対する検索結果として採用することになる。
【００２６】
（図３：ステップ（３）：補足）
本ステップにおいて、ＤＢコンピュータ１００ａから取得した応答から検索結果が得られない場合は、有効な応答として取り扱わないこととする。例えば単にＤＢ２１０へ接続できなかった旨の応答はＤＢ２１０に対する検索結果を含んでいないので、検索クエリの応答としては採用しない。
【００２７】
（図３：ステップ（４）：ＤＢ２１０に対する検索をキャンセル）
検索プログラム３１１は、ＤＢコンピュータ１００ｂと１００ｃに対して発行した検索クエリのうち、ＤＢ２１０に対するものをキャンセルする。ＤＢ２１０に対する検索クエリの結果は既に得られたので、同じレコードを有するデータベースをさらに検索する必要はないからである。
【００２８】
（図３：ステップ（４）：補足その１）
本ステップにおいてＤＢコンピュータ１００ｂと１００ｃに対する検索クエリをキャンセルすることにより、これらコンピュータの演算負荷を抑制することができる。ただし演算負荷があまり問題にならないのであれば、検索プログラム３１１は検索クエリをキャンセルするための別命令を改めて発行することに代えて、単に重複した検索結果を受信後に破棄することにより、検索クエリに対するアウトプットという観点からは当該検索クエリを実質的にキャンセルしたものとして取り扱うことができる。
【００２９】
（図３：ステップ（４）：補足その２）
既に発行した検索クエリをキャンセルする手段は、データベース管理システムによって異なる。例えば検索クエリを発行する際にそのクエリのＩＤをＤＢＭＳからあらかじめ受け取っておき、そのＩＤを指定してキャンセル指示を改めて送信する、などの手法が考えられる。
【００３０】
（図３：ステップ（２）〜（４）：補足）
検索プログラム３１１は、ＤＢ２２０〜２３０に対する検索クエリについても上記と同様に処理する。すなわち、検索クエリに対する応答として最初に受け取ったものを採用するとともに、その応答を送信したＤＢコンピュータ以外については先に送信した検索クエリをキャンセル（または検索結果を破棄）する。
【００３１】
＜実施の形態１：まとめ＞
本実施形態１に係る分散データベースシステム１０００は、各ＤＢコンピュータがそれぞれ異なるレコードを保持するＤＢ２１０〜２３０のコピーを有し、各ＤＢコンピュータに対してそれぞれ異なる順序でＤＢ２１０〜２３０を検索するように構成された検索クエリを並行的に発行する。これにより、ＤＢコンピュータ１００ａ〜１００ｃのうちいずれかがダウンするなどにより検索を実施できない場合であっても、その他ＤＢコンピュータから検索結果を得ることができる。
【００３２】
本実施形態１に係る分散データベースシステム１０００は、各ＤＢコンピュータが有するＤＢに対する検索クエリのうち最初に受け取ったものをそのＤＢに対する検索結果として採用するとともに、その他ＤＢコンピュータが有する同ＤＢに対する検索クエリをキャンセルする。これにより、検索結果をできる限り早く得るとともに、各ＤＢコンピュータに対して過剰な検索負荷を課すことを抑制できる。
【００３３】
＜実施の形態２＞
実施形態１において、例えばＤＢ２１０に対する検索クエリの応答をＤＢコンピュータ１００ａが最初に送信することが所定回数または所定時間連続した場合、その後もＤＢコンピュータ１００ａはＤＢ２１０に対する検索クエリの応答を最初に送信するであろうと想定される。かかる場合においてＤＢコンピュータ１００ｂと１００ｃに対してＤＢ２１０を検索する処理負荷を課すことは、処理効率の観点から望ましくない。
【００３４】
そこでかかる場合には、ＤＢコンピュータ１００ｂと１００ｃに対してはＤＢ２１０を検索するクエリを送信しないか、または少なくともＤＢ２１０を検索する順序を現状よりも早めることが望ましいと考えられる。本発明の実施形態２ではその１動作例について説明する。
【００３５】
図４は、本実施形態２において検索コンピュータ３００が検索クエリを発行する手順を説明する図である。図４の前提として、上述したようにＤＢ２１０に対する検索クエリの応答をＤＢコンピュータ１００ａが最初に送信することが所定回数または所定時間連続したものと仮定する。例えば１０回連続して、または１時間にわたって継続して、ＤＢコンピュータ１００ａが最初にＤＢ２１０に対する検索クエリの応答を返信したものと仮定する。
【００３６】
検索プログラム３１１は当初、ＤＢコンピュータ１００ｂに対して発行する検索クエリにおいては、ＤＢ２１０を最後に検索することとしている。しかしＤＢコンピュータ１００ａが最初に応答する可能性が高いことに鑑みると、ＤＢ２１０を最後に検索するクエリを発行しても後にキャンセルすることになる蓋然性が高いと考えられる。そこで検索プログラム３１１は、以後ＤＢコンピュータ１００ｂに対して発行する検索クエリにおいては、ＤＢ２１０を検索する順序を早める。
【００３７】
図２に示す例においては、ＤＢコンピュータ１００ｂはＤＢ２１０を３番目に検索していたところ、図４においては２番目に検索するように検索順序を変更している。これにより例えばＤＢコンピュータ１００ａの負荷が増して応答性能が低下した際には、ＤＢコンピュータ１００ｂが最初にＤＢ２１０に関する検索結果を送信する可能性が高まる。したがってＤＢコンピュータ１００ｂがＤＢ２１０を検索するようリクエストすることは、必ずしも無駄な負荷を課すものではなく、分散データベースシステム１０００全体の検索効率を高めるための処理として有用となる。
【００３８】
なおＤＢコンピュータ１００ｃは従前よりＤＢ２１０を２番目に検索しているので、ＤＢ２１０に対する検索順序を変更する必要はない。
【００３９】
図５は、本実施形態２において検索コンピュータ３００が検索クエリを発行する別手順を説明する図である。図４においてＤＢコンピュータ１００ｂはＤＢ２１０を２番目に検索しているが、ＤＢコンピュータ１００ａからＤＢ２１０に関する検索結果が得られることがほぼ確実である場合、ＤＢコンピュータ１００ｂはＤＢ２１０を検索しないようにしてもよい。したがって図５において、ＤＢコンピュータ１００ｂはＤＢ２２０〜ＤＢ２３０の順で検索を実施するよう指定することとした。
【００４０】
ＤＢコンピュータ１００ａの負荷が急激に高まるか、またはダウンする可能性もある。そこで図５に示す例において、ＤＢコンピュータ１００ｃは従前同様の順序で検索を実施することとした。
【００４１】
上記例においては、ＤＢコンピュータ１００ａがＤＢ２１０に関する検索結果を最初に送信する例を示したが、その他ＤＢコンピュータおよびその他ＤＢについても同様の基準により検索順序を変更することができる。
【００４２】
＜実施の形態２：まとめ＞
本実施形態２に係る分散データベースシステム１０００は、いずれかのＤＢに関する検索結果を特定のＤＢコンピュータが最初に送信することが連続した場合は、その他ＤＢコンピュータが当該ＤＢを検索する順序を変更する。これにより、当該ＤＢを検索するための余剰な処理負荷を削減することができる。
【００４３】
＜本発明の変形例について＞
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換える事が可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について他の構成の追加・削除・置換をすることができる。
【００４４】
以上の実施形態において、分散データベースシステム１０００は３台のＤＢコンピュータがそれぞれ３つのＤＢを有しているが、ＤＢコンピュータの台数およびＤＢの個数はこれらに限られるものではない。少なくとも２台のＤＢコンピュータと２つのＤＢを含む分散データベースシステムであれば、本発明を適用することができる。
【００４５】
以上の実施形態において、分散データベースシステム１０００を構成する各ＤＢは、関係データベースでもよいしキーバリューストア型データベースでもよい。その他種類のデータベース（例えばオブジェクト指向データベース）でもよい。
【００４６】
各ＤＢコンピュータが同じデータベースのコピーを保持していれば本発明を適用することができるので、各ＤＢＭＳの種類は必ずしも同一でなくともよい。例えばＤＢ２１０が関係データベースであり、ＤＢ２２０がキーバリューストア型データベースであってもよい。
【符号の説明】
【００４７】
１００ａ〜１００ｃ：ＤＢコンピュータ、３００：検索コンピュータ、３１１：検索プログラム、１０００：分散データベースシステム。
【図１】
2017027471.tif 000003
【図２】
2017027471.tif 000004
【図３】
2017027471.tif 000005
【図４】
2017027471.tif 000006
【図５】
2017027471.tif 000007