(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】分散処理システム、分散処理装置、データベース管理装置及び方法
(51)【国際特許分類】
G06F 16/27 20190101AFI20240213BHJP
G06F 16/245 20190101ALI20240213BHJP
【FI】
G06F16/27
G06F16/245
(21)【出願番号】P 2020117065
(22)【出願日】2020-07-07
【審査請求日】2022-07-15
【前置審査】
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】廣瀬 繁雄
(72)【発明者】
【氏名】金松 基孝
【審査官】和田 財太
(56)【参考文献】
【文献】国際公開第2013/190743(WO,A1)
【文献】特開2018-010424(JP,A)
【文献】特開2015-106219(JP,A)
【文献】特開2018-207285(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00
(57)【特許請求の範囲】
【請求項1】
分散処理装置と、当該分散処理装置と通信可能に接続される第1データベースを管理する第1データベース管理装置及び前記第1データベースとは異なる第2データベースを管理する第2データベース管理装置とを備える分散処理システムにおいて、
前記第1データベースは、前記第1データベース管理装置において収集された複数の第1レコードを有する第1テーブルを格納し、
前記第2データベースは、前記第2データベース管理装置において収集された複数の第2レコードを有する第2テーブルを格納し、
前記第1及び第2レコードは、同一のフィールドから構成され、
前記分散処理装置は、
前記第1及び第2データベース管理装置の各々の演算性能、前記第1テーブルが有する第1レコードの数及び前記第2テーブルが有する第2レコードの数、または前記分散処理装置と前記第1及び第2データベース管理装置との間の第1通信性能を含む管理装置情報を格納する格納手段と、
前記第1及び第2テーブルが有する第1及び第2レコードを取得するための第1クエリを受信する受信手段と、
前記管理装置情報に基づいて、前記受信された第1クエリに対する前記第1データベース管理装置の第1処理時間及び前記第2データベース管理装置の第2処理時間を計算する計算手段と、
前記計算された第2処理時間が前記計算された第1処理時間未満である場合、前記受信された第1クエリに
対する前記第1データベース管理装置の第1処理時間と前記第2データベース管理装置の第2処理時間との差が小さくなるように、前記第1テーブルが有する複数の第1レコードの一部を処理するための第2クエリと、前記第1テーブルが有する複数の第1レコードの他部を取得して当該取得された複数の第1レコードの他部と前記第2テーブルが有する複数の第2レコードとを処理するための第3クエリとを作成する作成手段と
を含み、
前記第1データベース管理装置は、前記作成された第2クエリに対する処理を実行する第1クエリ実行手段を含み、
前記第2データベース管理装置は、前記作成された第3クエリに対する処理を実行する第2クエリ実行手段を含む
分散処理システム。
【請求項2】
前記格納手段は、前記第1及び第2データベース管理装置から収集された管理装置情報を格納する請求項1記載の分散処理システム。
【請求項3】
前記管理装置情報は、定期的に更新される請求項2記載の分散処理システム。
【請求項4】
前記第1データベースは、前記第1テーブルとは異なる第3テーブルを更に格納し、
前記第2データベースは、前記第2テーブルとは異なる第4テーブルを更に格納し、
前記第3及び前記第4テーブルの各々が有するレコードは、同一のフィールドから構成され、
前記第1クエリは、前記第1及び第2テーブルと前記第3及び第4テーブルとの結合演算結果を取得するためのクエリを含む
請求項1~3のいずれか一項に記載の分散処理システム。
【請求項5】
前記第1及び第2テーブルの容量は、前記第3及び第4テーブルの容量よりも大きい請求項4記載の分散処理システム。
【請求項6】
前記第1クエリ実行手段は、前記第3テーブル及び前記第2データベースに格納されている第4テーブルを組み合わせたテーブルを用いて前記第2クエリに対する処理を実行し、
前記第2クエリ実行手段は、前記第1データベースに格納されている第3テーブル及び前記第4テーブルを組み合わせたテーブルを用いて前記第3クエリに対する処理を実行する
請求項4または5記載の分散処理システム。
【請求項7】
前記第1及び第2クエリは、前記第2処理時間が前記第1処理時間未満であり、かつ、当該第1処理時間と当該第2処理時間との差分が予め定められた値以上である場合に、作成される請求項1~6のいずれか一項に記載の分散処理システム。
【請求項8】
前記格納手段に格納されている管理装置情報は、前記第1データベース管理装置と第2データベース管理装置との間の第2通信性能を更に含み、
前記分散処理装置は、前記管理装置情報に含まれる第1及び第2通信性能に基づいて、前記複数の第1レコードの他部を取得する経路を決定する決定手段を更に含む
請求項1~7のいずれか一項に記載の分散処理システム。
【請求項9】
前記経路は、前記複数の第1レコードの他部を前記第1データベース管理装置から直接取得する第1経路と、前記複数の第1レコードの他部を前記分散処理装置を介して取得する第2経路とを含む請求項8記載の分散処理システム。
【請求項10】
前記分散処理装置は、前記第1及び第2データベース管理装置間の通信を実行するための接続情報を前記第1または第2データベース管理装置に送信する送信手段を更に含む請求項9記載の分散処理システム。
【請求項11】
第1及び第2レコードと同一のフィールドから構成されるレコードを有するテーブルが格納されていない第3データベースを管理する第3データベース管理装置を更に備え、
前記作成手段は、前記第2データベース管理装置の代わりに、前記複数の第1レコードの他部を取得して前記取得された複数の第1レコードの他部を処理するための第4クエリを作成し、
前記第3データベース管理装置は、前記作成された第4クエリに対する処理を実行する第3クエリ実行手段を含む
請求項1記載の分散処理システム。
【請求項12】
請求項1記載の分散処理システムに用いられる分散処理装置。
【請求項13】
請求項1記載の分散処理システムに用いられるデータベース管理装置。
【請求項14】
管理装置情報を格納する格納手段を含む分散処理装置と、複数の第1レコードを有する第1テーブルを格納する第1データベースを管理する第1データベース管理装置及び前記複数の第1レコードと同一のフィールドから構成される複数の第2レコードを有する第2テーブルを格納する第2データベースを管理する第2データベース管理装置とを備える分散処理システムが実行する方法であって、
前記第1及び第2テーブルが有する第1及び第2レコードを取得するための第1クエリを受信するステップと、
前記管理装置情報に基づいて、前記受信された第1クエリに対する前記第1データベース管理装置の第1処理時間及び前記第2データベース管理装置の第2処理時間を計算するステップと、
前記計算された第2処理時間が前記計算された第1処理時間未満である場合、前記受信された第1クエリ
に対する前記第1データベース管理装置の第1処理時間と前記第2データベース管理装置の第2処理時間との差が小さくなるように、前記第1テーブルが有する複数の第1レコードの一部を処理するための第2クエリと、前記第1テーブルが有する複数の第1レコードの他部を取得して当該取得された複数の第1レコードの他部と前記第2テーブルが有する複数の第2レコードとを処理するための第3クエリとを作成するステップと、
前記作成された第2クエリに対する処理を実行するステップと、
前記作成された第3クエリに対する処理を実行するステップと
を具備し、
前記管理装置情報は、前記第1及び第2データベース管理装置の各々の演算性能、前記第1テーブルが有する第1レコードの数及び前記第2テーブルが有する第2レコードの数、または前記分散処理装置と前記第1及び第2データベース管理装置との間の第1通信性能を含む
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、分散処理システム、分散処理装置、データベース管理装置及び方法に関する。
【背景技術】
【0002】
近年では、分散された複数のデータベースから一括してデータを取得することが可能な分散処理システム(データベース管理システム)が知られている。
【0003】
このような分散処理システムにおいて例えば各データベースに格納されている複数のデータ(テーブル)の結合演算結果を取得するためのクエリがクライアント端末から受信された場合、当該分散処理システムは、当該クエリに対する処理の結果(結合演算結果)を当該クライアント端末(を使用するユーザ)に提供することが可能である。
【0004】
ところで、分散処理システムは例えば分散処理装置及び複数のデータベースの各々を管理する複数のデータベース管理装置(以下、DB管理装置と表記)を備えており、当該分散処理装置(親ノード)は、上記したクエリに対する処理を当該DB管理装置(子ノード)の各々にプッシュダウン(分散)することができる。このような分散処理システムによれば、例えば分散処理装置の負荷を軽減することが可能となる。
【0005】
しかしながら、この場合における各DB管理装置の処理量は当該DB管理装置において管理されているデータベースに格納されているデータ量に依存する。このため、例えば他のDB管理装置において管理されているデータベースと比べてデータ量の多いデータベースを管理するDB管理装置が存在する場合には、当該DB管理装置の処理に時間がかかるため、分散処理システム全体の動作(つまり、クエリに対する処理)が低速となる場合がある。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
そこで、本発明が解決しようとする課題は、クエリに対する処理を高速化することが可能な分散処理システム、分散処理装置、データベース管理装置及び方法を提供することにある。
【課題を解決するための手段】
【0008】
実施形態によれば、分散処理装置と、当該分散処理装置と通信可能に接続される第1データベースを管理する第1データベース管理装置及び前記第1データベースとは異なる第2データベースを管理する第2データベース管理装置とを備える分散処理システムが提供される。前記第1データベースは、前記第1データベース管理装置において収集された複数の第1レコードを有する第1テーブルを格納する。前記第2データベースは、前記第2データベース管理装置において収集された複数の第2レコードを有する第2テーブルを格納する。前記第1及び第2レコードは、同一のフィールドから構成される。前記分散処理装置は、格納手段と、受信手段と、計算手段と、作成手段とを含む。前記格納手段は、前記第1及び第2データベース管理装置の各々の演算性能、前記第1テーブルが有する第1レコードの数及び前記第2テーブルが有する第2レコードの数、または前記分散処理装置と前記第1及び第2データベース管理装置との間の第1通信性能を含む管理装置情報を格納する。前記受信手段は、前記第1及び第2テーブルが有する第1及び第2レコードを取得するための第1クエリを受信する。前記計算手段は、前記管理装置情報に基づいて、前記受信された第1クエリに対する前記第1データベース管理装置の第1処理時間及び前記第2データベース管理装置の第2処理時間を計算する。前記作成手段は、前記計算された第2処理時間が前記計算された第1処理時間未満である場合、前記受信された第1クエリに対する前記第1データベース管理装置の第1処理時間と前記第2データベース管理装置の第2処理時間との差が小さくなるように、前記第1テーブルが有する複数の第1レコードの一部を処理するための第2クエリと、前記第1テーブルが有する複数の第1レコードの他部を取得して当該取得された複数の第1レコードの他部と前記第2テーブルが有する複数の第2レコードとを処理するための第3クエリとを作成する。前記第1データベース管理装置は、前記作成された第2クエリに対する処理を実行する第1クエリ実行手段を含む。前記第2データベース管理装置は、前記作成された第3クエリに対する処理を実行する第2クエリ実行手段を含む。
【図面の簡単な説明】
【0009】
【
図1】実施形態に係る分散処理システムのネットワーク構成の一例を示す図。
【
図2】分散処理装置のハードウェア構成の一例を示す図。
【
図3】本実施形態の比較例における第1DB管理装置のテーブルの一例を示す図。
【
図4】本実施形態の比較例における第2DB管理装置のテーブルの一例を示す図。
【
図5】本実施形態の比較例における第3DB管理装置のテーブルの一例を示す図。
【
図6】本実施形態の比較例における分散処理装置において実行される処理の概要を説明するための図。
【
図7】本実施形態の比較例における第1DB管理装置において実行される処理の概要を説明するための図。
【
図8】本実施形態の比較例における第2DB管理装置において実行される処理の概要を説明するための図。
【
図9】本実施形態の比較例における第3DB管理装置において実行される処理の概要を説明するための図。
【
図10】本実施形態に係る分散処理システムの動作の概要を示す図。
【
図12】第1DB管理装置の機能構成の一例を示す図。
【
図13】演算性能情報のデータ構造の一例を示す図。
【
図14】レコード数情報のデータ構造の一例を示す図。
【
図15】通信性能情報のデータ構造の一例を示す図。
【
図16】分散処理システムの処理手順の一例を示すシーケンスチャート。
【
図17】第1DB管理装置の処理時間について具体的に説明するための図。
【
図18】第2DB管理装置の処理時間について具体的に説明するための図。
【
図19】本実施形態に係る分散処理装置とロードバランサとの差異を説明するための図。
【
図20】通信性能情報に基づいて決定されるレコードを取得する経路について説明するための図。
【
図21】第1DB管理装置への接続情報を用いてレコードを取得する構成の一例を説明するための図。
【
図22】第1DB管理装置への接続情報を用いてレコードを取得する構成の他の例を説明するための図。
【
図23】第4DB管理装置に処理を分散する構成を説明するための図。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係る分散処理システムのネットワーク構成の一例を示す。
図1に示すように、分散処理システム1は、クライアント端末10、分散処理装置20及び第1~第3データベース管理装置(以下、DB管理装置と表記)31~33を備える。
【0011】
本実施形態において、クライアント端末10は、分散処理装置20と互いに通信可能に接続されている。また、分散処理装置20は、第1~第3DB管理装置31~33の各々と互いに通信可能に接続されている。
【0012】
クライアント端末10は、ユーザによって使用される端末装置である。クライアント端末10においては、ユーザが後述するデータベースに格納されているデータを取得して閲覧するためのアプリケーションプログラム等が動作する。
【0013】
分散処理装置20は、分散処理システム1において第1~第3DB管理装置31~33に対する親ノードとして動作するサーバ装置(DBMS)である。分散処理装置20は、分散処理システム1において実行すべき処理を第1~第3DB管理装置31~33に分散し、当該処理を第1~第3DB管理装置31~33に実行させる機能を有する。
【0014】
第1~第3DB管理装置31~33は、分散処理システム1において分散処理装置20に対する子ノードとして動作し、各種データを格納するデータベースを管理するサーバ装置(DBMS)である。
【0015】
なお、本実施形態において、分散処理装置20及び第1~第3DB管理装置31~33は、同一のDBMSであるものとする。
【0016】
また、
図1においては分散処理システム1がクライアント端末10、分散処理装置20及び第1~第3DB管理装置31~33を備えるものとして説明したが、分散処理システム1は、分散処理装置20及び第1~第3DB管理装置31~33を備える(つまり、クライアント端末10は分散処理システム1の外部に配置される)構成であってもよい。
【0017】
更に、
図1においては、第1~第3DB管理装置31~33が示されているが、分散処理システム1には複数のDB管理装置が備えられていればよい。
【0018】
図2は、
図1に示す分散処理装置20のハードウェア構成の一例を示す。
図2に示すように、分散処理装置20は、CPU21、不揮発性メモリ22、主メモリ23及び通信デバイス24等を備える。
【0019】
CPU21は、分散処理装置20内の各コンポーネントの動作を制御するプロセッサである。CPU21は、ストレージデバイスである不揮発性メモリ22から主メモリ23にロードされる様々なプログラムを実行する。このプログラムには、オペレーティングシステム(OS)及び分散処理装置20が分散処理システム1において動作するためのプログラム等が含まれる。
【0020】
通信デバイス24は、クライアント端末10及び第1~第3DB管理装置31~33等と有線または無線による通信を実行するように構成されたデバイスである。
【0021】
図2においては、CPU21、不揮発性メモリ22、主メモリ23及び通信デバイス24のみが示されているが、分散処理装置20は、例えばHDD(Hard Disk Drive)及びSSD(Solid State Drive)のような他の記憶装置等を更に備えていてもよいし、他のデバイスを更に備えていてもよい。
【0022】
ここでは分散処理装置20のハードウェア構成について説明したが、第1~第3DB管理装置31~33も同様の構成を有するものとする。
【0023】
ここで、本実施形態に係る分散処理システム1は、第1~第3DB管理装置31~33の各々において管理されているデータベース(分散されたデータベース)からデータを一括して取得するデータベース管理システム(統合データベース)として動作する。
【0024】
具体的には、クライアント端末10を使用するユーザは、当該クライアント端末10を操作することによってデータベースからデータを取得するためのクエリを指定(入力)することができる。ユーザによって指定されるクエリは、例えばSQL(Structured Query Language)で記述された命令文(SQL文)等である。
【0025】
このようなクエリがクライアント端末10から分散処理装置20に送信された場合、分散処理システム1(分散処理装置20及び第1~第3DB管理装置31~33)においては、当該クエリに対する処理が実行され、当該処理の結果(データベースから取得されたデータ)がクライアント端末10に返される。
【0026】
なお、例えば第1~第3DB管理装置31~33において管理されているデータベースにそれぞれ例えば2種類のデータが格納されている場合には、クエリに対する処理として結合演算(2種類のデータを結合する処理)を実行し、当該結合演算結果をクライアント端末10に返すことができる。
【0027】
例えば第1~第3DB管理装置31~33の各々がそれぞれ異なる店舗(例えば、小売店または量販店等)に設けられており、当該第1~第3DB管理装置31~33において管理されているデータベースが当該第1~第3DB管理装置31~33(が設けられている店舗)おいて独立して収集された当該店舗の売り上げに関するデータ(以下、売上データと表記)及び当該店舗で販売されている商品のデータ(以下、商品データと表記)を格納しているものとする。
【0028】
このような場合において売上データ及び商品データの結合演算結果を取得するためのクエリがユーザによって指定された場合には、第1~第3DB管理装置31~33において管理されているデータベースに格納されている売上データ及び商品データに対して結合演算を実行した結果がクライアント端末10に返される。
【0029】
なお、上記した売上データ及び商品データは、テーブル形式のデータであり、複数のレコードを有する。この場合、分散処理装置20は、第1~第3DB管理装置31~33において管理されているデータベースに格納されている売上データ及び商品データを外部テーブルとして扱うとともに、当該売上データ及び商品データをそれぞれ仮想テーブル化して、クエリに対する処理を実行するものとする。なお、外部テーブルとは、異なるデータソースのテーブルを自身のデータベースのテーブルであるかのように振る舞う機能である。また、仮想テーブル化とは、外部テーブル(の機能)を利用して、複数のデータソースのテーブルを1つのテーブルに仮想化することによって、複数のデータソースからの一括したデータの取得を実現する仕組みである。
【0030】
ここで、本実施形態に係る分散処理システム1の詳細を説明する前に、本実施形態の比較例に係る分散処理システムにおいて実行されるクエリに対する処理について具体的に説明する。
【0031】
ここでは、本実施形態の比較例に係る分散処理システムが分散処理装置20´及び第1~第3DB管理装置31´~33´を備え、当該第1~第3DB管理装置31´~33´において管理されるデータベースの各々には、上記した売上データに相当するテーブルt1及び商品データに相当するテーブルt2が格納されているものとする。
【0032】
なお、本実施形態においては、テーブルt1が売上データであり、テーブルt2が商品データであるものとして説明するが、当該テーブルt1及びt2は他のデータであってもよい。具体的には、テーブルt1及びt2は、例えば発電所における発電データ及び当該発電所に設置される各種機器の動作ログ等であってもよい。
【0033】
以下の説明においては、第1~第3DB管理装置31´~33´において管理されるデータベースの各々に格納されているテーブルt1及びt2を、便宜的に、第1~第3DB管理装置31´~33´のテーブルt1及びt2と称する。
【0034】
まず、
図3~
図5を参照して、第1~第3DB管理装置31´~33´のテーブルt1及びt2について説明する。
図3は、第1DB管理装置31´のテーブルt1及びt2(のデータ構造)の一例を示している。
図4は、第2DB管理装置32´のテーブルt1及びt2(のデータ構造)の一例を示している。
図5は、第3DB管理装置33´のテーブルt1及びt2(のデータ構造)の一例を示している。
【0035】
図3~
図5に示すように、第1~第3DB管理装置31´~33´のテーブルt1の各々が有するレコードは、それぞれ同一のフィールド(id、time及びvalue)から構成されている。上記したようにテーブルt1が売上データに相当する場合、idは、店舗において販売された商品を識別するための識別情報に相当する。timeは、idによって識別される商品が販売された時間に相当する。valueは、idによって識別される商品の金額(つまり、売り上げ)や当該商品を購入した購入者に関する情報(例えば、年齢及び性別等)等の付加情報に相当する。
【0036】
同様に、第1~第3DB管理装置31´~33´のテーブルt2の各々が有するレコードは、それぞれ同一のフィールド(id及びname)から構成されている。上記したようにテーブルt2が商品データに相当する場合、idは、店舗において販売されている商品を識別するための識別情報に相当する。nameは、idによって識別される商品の名称(つまり、商品名)に相当する。
【0037】
ここで、上記したテーブルt1及びt2の結合演算結果を取得するためのクエリがユーザによって指定された場合を想定する。この場合におけるクエリは、例えば「SELECT*FROM t1,t2 WHERE t1.id=t2.id」である。このクエリは、テーブルt1及びt2を、当該テーブルt1及びt2が有するレコードを構成するid(のフィールド)に基づいて結合した結果を返すことを意味している。なお、クエリ「SELECT*FROM t1,t2 WHERE t1.id=t2.id」中の「t1.id=t2.id」は、テーブルt1及びt2をidに基づいて結合するという条件(式)に相当する。以下の説明においては、この「t1.id=t2.id」をクエリの条件式と称する。
【0038】
この場合、
図6に示すように、分散処理装置20´は、第1~第3DB管理装置31´~33´のテーブルt1の各々を当該第1~第3DB管理装置31´~33´から収集し、当該収集されたテーブルt1を組み合わせたテーブルT1を作成する。
【0039】
同様に、分散処理装置20´は、第1~第3DB管理装置31´~33´のテーブルt2の各々を当該第1~第3DB管理装置31´~33´から収集し、当該収集されたテーブルt2を組み合わせたテーブルT2を作成する。
【0040】
次に、分散処理装置20´は、テーブルT1及びT2を上記したクエリの条件式「t1.id=t2.id」に基づいて結合する処理(結合演算)を実行する。これにより、分散処理装置20は、結合演算結果としてテーブルT12を取得する。このテーブルT12は、クエリに対する応答として分散処理装置20´からクライアント端末10に対して返される。
【0041】
上記した
図6においては結合演算を分散処理装置20´(親ノード)で実行する場合を想定しているが、この場合、分散処理装置20´は、第1~第3DB管理装置31´~33´のテーブルt1を組み合わせたテーブルT1が有する複数のレコードの各々と、第1~第3DB管理装置31´~33´のテーブルt2を組み合わせたテーブルT2が有する複数のレコードの各々とが上記したクエリの条件式に基づいて結合可能であるか否かを判定し、結合可能であると判定された場合に当該レコード同士を結合するという処理を実行する必要がある。この場合における分散処理装置20´の計算量は最大でN×M(NはテーブルT1が有するレコードの数、MはテーブルT2が有するレコードの数)の直積となり、テーブルT1が有するレコードの数及びテーブルT2が有するレコードの数によっては当該分散処理装置20´の負担が大きくなる。このため、クエリに対する処理に多くの時間が必要となる場合がある。
【0042】
このため、本実施形態の比較例に係る分散処理システムにおいては、分散処理装置20´(親ノード)の処理の一部を第1~第3DB管理装置31´~33´(子ノード)にプッシュダウン(分散)し、当該分散処理装置20´の負荷を軽減することが行われている。
【0043】
以下、本実施形態の比較例において実行されるクエリに対する処理(結合演算)を第1~第3DB管理装置31´~33´に分散する場合について説明する。
【0044】
なお、第1~第3DB管理装置31´~33´のテーブルt1及びt2は上記した
図3~
図5において説明した通りであり、ユーザによってクエリ「SELECT*FROM t1,t2 WHERE t1.id=t2.id」が指定されたものとする。
【0045】
この場合、分散処理装置20´は、第1~第3DB管理装置31´~33´のテーブルt1及びt2のうちの一方(ここでは、テーブルt2)を当該第1~第3DB管理装置31´~33´から収集し、テーブルT2を作成する。このように作成されたテーブルT2は、第1~第3DB管理装置31´~33´に配布される。ユーザによって指定されたクエリに対する処理(結合演算)は、このように分散処理装置20´から配布されたテーブルT2を用いて実行される。これによれば、第1~第3DB管理装置31´~33´の各々においてテーブルt1が有するレコードを構成するidと同一のidから構成されるレコードをテーブルt2が有していない場合であっても、当該テーブルt1が有するレコードを構成するidと同一のidから構成されるレコードをテーブルT2が有していれば、当該レコードを適切に結合することができる。
【0046】
次に、第1~第3DB管理装置31´~33´において実行される処理について説明する。
【0047】
まず、
図7は、第1DB管理装置31´において実行される処理の概要を説明するための図である。
図7に示すように、第1DB管理装置31´は、当該第1DB管理装置31´のテーブルt1及び分散処理装置20´から配布されたテーブルT2に対して、上記したクエリの条件式「t1.id=t2.id」に基づく結合演算を実行する。これによれば、第1DB管理装置31´は、結合演算結果として
図7に示すテーブルt12を取得する。
【0048】
また、
図8は、第2DB管理装置32´において実行される処理の概要を説明するための図である。
図8に示すように、第2DB管理装置32´は、当該第2DB管理装置32´のテーブルt1及び分散処理装置20´から配布されたテーブルT2に対して、上記したクエリの条件式「t1.id=t2.id」に基づく結合演算を実行する。これによれば、第2DB管理装置32´は、結合演算結果として
図8に示すテーブルt12を取得する。
【0049】
更に、
図9は、第3DB管理装置33´において実行される処理の概要を説明するための図である。
図9に示すように、第3DB管理装置33´は、当該第3DB管理装置33´のテーブルt1及び分散処理装置20´から配布されたテーブルT2に対して、上記したクエリの条件式「t1.id=t2.id」に基づく結合演算を実行する。これによれば、第3DB管理装置33´は、結合演算結果として
図9に示すテーブルt12を取得する。
【0050】
上記したように第1~第3DB管理装置31´~33´によって取得されたテーブルt12は、当該第1~第3DB管理装置31´~33´から分散処理装置20´に送信される。分散処理装置20´は、第1~第3DB管理装置31´~33´の各々から送信されたテーブルt12を組み合わせることにより、上記した
図6に示すテーブルT12と同一の結合演算結果を取得することができる。
【0051】
このようにクエリに対する処理(結合演算)を第1~第3DB管理装置31´~33´の各々に分散した場合には、分散処理装置20´の負荷を軽減することができる。
【0052】
しかしながら、第1~第3DB管理装置31´~33´の各々における処理量は、テーブルt1が有するレコードの数×テーブルT2が有するレコードの数の直積であり、当該第1~第3DB管理装置31´~33´の各々のテーブルt1が有するレコードの数に依存する。すなわち、第1~第3DB管理装置31´~33´間でテーブルt1が有するレコードの数(つまり、データサイズ)に偏りがあると、特定のDB管理装置における処理に極端に時間がかかるような事態が生じる可能性がある。この場合には、分散処理装置20´及び他のDB管理装置は、特定のDB管理装置の処理が完了するまで待機しなければならず、分散処理システム全体としてクエリに対する処理を高速に実行することができない。
【0053】
そこで、本実施形態においては、上記したようにクエリに対する処理を第1~第3DB管理装置31~33に分散する場合に、処理量が多いDB管理装置の処理の一部を処理量が少ないDB管理装置に実行させることにより、分散処理システム1全体としてクエリに対する処理を高速化する。
【0054】
図10は、本実施形態に係る分散処理システム1の動作の概要を示す。
図10においては、第1DB管理装置31のテーブルt1が有するレコードの数が例えば第2DB管理装置32のテーブルt1が有するレコードの数よりも多い場合を想定している。
【0055】
この場合において、第1DB管理装置31が当該第1DB管理装置31のテーブルt1及び上記したテーブルT2に対する結合演算を実行したものとすると、当該第1DB管理装置31の処理量は、第2DB管理装置32の処理量よりも多くなる。
【0056】
このため、本実施形態においては、第1DB管理装置31のテーブルt1が有するレコードの一部を第2DB管理装置32に転送し、当該レコードの一部については第2DB管理装置32側で処理させる。
【0057】
これによれば、第1DB管理装置31の処理の一部を第2DB管理装置32に分散し、第1DB管理装置31の処理量を低減することができるため、分散処理システム1全体としての処理を高速化することが可能となる。
【0058】
なお、
図10においては、第1DB管理装置31のテーブルt1が有するレコードを第2DB管理装置32に転送しているが、当該レコードは、第2及び第3DB管理装置32及び33の両方に転送されてもよいし、第3DB管理装置33のみに転送されても構わない。
【0059】
以下、本実施形態に係る分散処理システム1の構成について詳細に説明する。まず、
図11は、分散処理システム1に備えられる分散処理装置20の機能構成の一例を示す。
【0060】
図11に示すように、分散処理装置20は、格納部201、情報管理部202、通信部203、クエリ解析部204、クエリ作成部205、クエリ実行部206及び結果集積部207を含む。
【0061】
本実施形態において、格納部201は、分散処理装置20に備えられる不揮発性メモリ22または他の記憶装置等によって実現される。
【0062】
また、本実施形態において、情報管理部202、通信部203、クエリ解析部204、クエリ作成部205、クエリ実行部206及び結果集積部207の一部または全ては、分散処理装置20に備えられるCPU21(つまり、分散処理装置20のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。この所定のプログラムは、分散処理装置20が分散処理システム1において動作するためのプログラムであり、コンピュータ読み取り可能な記憶媒体に予め格納して頒布されてもよいし、ネットワークを介して分散処理装置20にダウンロードされてもよい。
【0063】
ここでは、上記した各部202~207の一部または全てがソフトウェアによって実現されるものとして説明したが、当該各部201~207の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
【0064】
格納部201は、第1~第3DB管理装置31~33の各々に関する情報(以下、管理装置情報と表記)を格納する。管理装置情報には、第1~第3DB管理装置31~33の各々の演算(計算)性能、第1~第3DB管理装置31~33の各々のテーブル(例えば、テーブルt1及びt2)が有するレコードの数、または分散処理装置20と第1~第3DB管理装置31~33の各々との間の通信性能(を示す情報)が含まれる。
【0065】
以下の説明においては、第1~第3DB管理装置31~33の各々の演算性能を示す情報を演算性能情報、第1~第3DB管理装置31~33の各々のテーブル(例えば、テーブルt1及びt2)が有するレコードの数を示す情報をレコード数情報、分散処理装置20と第1~第3DB管理装置31~33の各々との間の通信性能を示す情報を通信性能情報と称する。なお、管理装置情報には、演算性能情報、レコード数情報及び通信性能情報のうちの少なくとも1つが含まれていればよいが、本実施形態においては、管理装置情報は演算性能情報、レコード数情報及び通信性能情報の全てを含むものとして説明する。
【0066】
情報管理部202は、格納部に格納されている管理装置情報を管理するための機能部である。具体的には、情報管理部202は、第1~第3DB管理装置31~33から送信される当該第1~第3DB管理装置31~33に関する情報(演算性能情報、レコード数情報及び通信性能情報)を収集し、当該情報を管理装置情報として格納部201に格納する。また、情報管理部202は、上記した第1~第3DB管理装置31~33に関する情報を定期的に収集し、当該収集された情報に基づいて格納部201に格納されている管理装置情報を更新する処理を実行してもよい。
【0067】
通信部203は、クライアント端末10との通信を実行するための機能部である。通信部203は、例えばクライアント端末10においてユーザによって指定されたクエリを当該クライアント端末10から受信する。
【0068】
クエリ解析部204は、通信部203によって受信されたクエリを解析し、第1~第3DB管理装置31~33において実行されるべき当該クエリに対する処理を判別する。
【0069】
クエリ作成部205は、クエリ解析部204によって判別された第1~第3DB管理装置31~33において実行されるべきクエリに対する処理の処理時間(つまり、クエリに対する第1~第3DB管理装置31~33の各々の処理時間の予測値)を計算する。この第1~第3DB管理装置31~33の各々の処理時間は、格納部201に格納されている管理装置情報に基づいて計算される。
【0070】
クエリ作成部205は、計算された第1~第3DB管理装置31~33の各々の処理時間に基づいて、当該第1~第3DB管理装置31~33(の各々が管理するデータベース)に対するクエリを作成する。
【0071】
クエリ実行部206は、クエリ作成部205によって作成された第1~第3DB管理装置31~33に対するクエリを当該第1~第3DB管理装置31~33の各々に実行させるための機能部である。この場合、クエリ実行部206は、第1~第3DB管理装置31~33に対するクエリを当該第1~第3DB管理装置31~33の各々に送信する。
【0072】
この分散処理装置20(クエリ作成部205)から第1~第3DB管理装置31~33に送信されるクエリによれば、ユーザによって指定されたクエリに対する処理(例えば、結合演算)を実行することが第1~第3DB管理装置31~33に対して指示される。なお、第1~第3DB管理装置31~33のうちの例えば処理時間が短いDB管理装置に対しては、処理時間が長い他のDB管理装置のテーブルが有する複数のレコードの一部を当該他のDB管理装置から取得して結合演算を実行することが指示される。
【0073】
結果集積部207は、分散処理装置20から第1~第3DB管理装置31~33に送信されたクエリに対する処理が実行された結果を、第1~第3DB管理装置31~33から集積する。このように結果集積部207によって集積された結果は、通信部203によって受信されたクエリ(ユーザによって指定されたクエリ)に対する処理結果として、通信部203を介してクライアント端末10に送信される。
【0074】
次に、
図12は、分散処理システム1に備えられる第1DB管理装置31の機能構成の一例を示す。
【0075】
図12に示すように、第1DB管理装置31は、データベース311、通信部312、クエリ実行部313及び情報管理部314を含む。
【0076】
本実施形態において、データベース311は、第1DB管理装置31に備えられる不揮発性メモリまたは他の記憶装置等によって実現される。
【0077】
また、本実施形態において、通信部312、クエリ実行部313及び情報管理部314の一部または全ては、第1DB管理装置31に備えられるCPU(つまり、第1DB管理装置31のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。この所定のプログラムは、第1DB管理装置31が分散処理システム1において動作するためのプログラムであり、コンピュータ読み取り可能な記憶媒体に予め格納して頒布されてもよいし、ネットワークを介して第1DB管理装置31にダウンロードされてもよい。
【0078】
ここでは、上記した各部312~314の一部または全てがソフトウェアによって実現されるものとして説明したが、当該各部312~314の一部または全ては、例えばハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
【0079】
データベース311には、上記したようにクライアント端末10においてユーザによって指定されたクエリに対する処理が実行されることによって当該ユーザに対して提供されるテーブル形式のデータが格納されている。具体的には、データベース311には、例えば
図3に示すような複数のレコードを有するテーブルt1及びt2が格納されている。なお、データベースに格納されているテーブルt1及びt2のデータ構造は上記した
図3において説明した通りであるので、ここではその詳しい説明を省略する。
【0080】
通信部312は、分散処理装置20との通信を実行するための機能部である。通信部312は、分散処理装置20から送信されたクエリ(第1DB管理装置31に対するクエリ)を受信する。なお、通信部312は、更に他のDB管理装置(第2及び第3DB管理装置32及び33)との通信を実行するように構成されていてもよい。
【0081】
クエリ実行部313は、通信部312によって受信されたクエリに対する処理を実行するための機能部である。
【0082】
上記したように分散処理装置20(クエリ作成部205)によって計算された第1DB管理装置31の処理時間が例えば第2DB管理装置32の処理時間未満である場合、第1DB管理装置31は、第2DB管理装置32のテーブル(例えば、テーブルt1)が有する複数のレコードの一部を取得するように分散処理装置20から指示される。このような指示によれば、クエリ実行部313は、第2DB管理装置32のテーブルが有する複数のレコードの一部を、当該第2DB管理装置32から取得する。この場合、クエリ実行部313は、データベース311に格納されているテーブルが有する複数のレコード及び第2DB管理装置32から取得されたレコードを用いて、クエリに対する処理(結合演算)を実行する。
【0083】
一方、上記したように分散処理装置20(クエリ作成部205)によって計算された第2DB管理装置32の処理時間が第1DB管理装置31の処理時間未満である場合、データベース311に格納されているテーブルが有する複数のレコードの一部は第2DB管理装置32に転送される(つまり、第2DB管理装置32によって取得される)。この場合、クエリ実行部313は、データベース311に格納されているテーブルが有する複数のレコードのうち、第2DB管理装置32に転送されていないレコードを用いて、クエリに対する処理(結合演算)を実行する。
【0084】
情報管理部314は、第1DB管理装置31に関する情報(演算性能情報、レコード数情報及び通信性能情報)を管理する機能部である。なお、第1DB管理装置31に関する情報はデータベース311に格納されているものとする。情報管理部314は、通信部312を介して、第1DB管理装置31に関する情報を定期的に分散処理装置20に送信する。なお、第1DB管理装置31に関する情報は、例えば第1DB管理装置31が分散処理装置20と接続された際に当該分散処理装置20に送信されてもよいし、第1DB管理装置31の演算性能、データベース311に格納されているテーブルが有するレコードの数または分散処理装置20との間の通信性能に変化が生じた場合に分散処理装置20に送信されてもよい。
【0085】
図12においては第1DB管理装置31の機能構成について説明したが、第2及び第3DB管理装置32及び33の機能構成についても第1DB管理装置31と同様である。以下、第1DB管理装置31だけでなく、第2及び第3DB管理装置32及び33の構成に関しても
図12を用いて説明する。
【0086】
ここで、
図13~
図15を参照して、上記した
図11に示す分散処理装置20に含まれる格納部201に格納されている管理装置情報のデータ構造の一例について説明する。なお、管理装置情報は、例えば表形式の情報(データ)であり、上記したように演算性能情報、レコード数情報及び通信性能情報を含む。
【0087】
図13は、管理装置情報に含まれる演算性能情報のデータ構造の一例を示す。なお、演算性能情報は上記したように第1~第3DB管理装置31~33の演算性能を示す情報であるが、
図13においては、当該第1~第3DB管理装置31~33の演算性能に加えて、分散処理装置20の演算性能を更に示す演算性能情報のデータ構造が示されている。
【0088】
図13に示すように、演算性能情報は、ノードID及び演算性能値を対応づけて含む。ノードIDは、分散処理システム1を構成する各ノード(分散処理装置20及び第1~第3DB管理装置31~33)を識別するための識別情報である。演算性能値は、ノードIDによって識別されるノードの演算性能を表す値であり、例えば1秒当たりに演算(計算)することが可能なレコードの数を示す。本実施形態において、「レコードを演算する」とは、例えば2つのテーブルに対する結合演算を実行する際に、一方のテーブルが有する1つのレコードと他方のテーブルが有する1つのレコードとがクエリの条件式に基づいて結合可能であるか否かを判定し、結合可能であると判定された場合に当該レコード同士を結合することを含む。なお、演算性能値は、各ノードの演算性能を表す値であれば他の値であってもよい。
【0089】
図13に示す例において、演算性能情報は、ノード「01」及び演算性能値「100」を対応づけて含む。なお、ノード「01」は、例えば分散処理装置20を識別するための識別情報である。この演算性能情報によれば、分散処理装置20が1秒当たりに100個のレコードを演算することができる演算性能を有していることが示されている。
【0090】
また、演算性能情報は、ノード「011」及び演算性能値「10」を対応づけて含む。ノード「011」は、例えば第1DB管理装置31を識別するための識別情報である。この演算性能情報によれば、第1DB管理装置31が1秒当たりに10個のレコードを演算することができる演算性能を有していることが示されている。
【0091】
更に、演算性能情報は、ノード「012」及び演算性能値「20」を対応づけて含む。ノード「012」は、例えば第2DB管理装置32を識別するための識別情報である。この演算性能情報によれば、第2DB管理装置32が1秒当たりに20個のレコードを演算することができる演算性能を有していることが示されている。
【0092】
また、演算性能情報は、ノード「013」及び演算性能値「30」を対応づけて含む。ノード「013」は、例えば第3DB管理装置33を識別するための識別情報である。この演算性能情報によれば、第3DB管理装置33が1秒当たりに30個のレコードを演算することができる演算性能を有していることが示されている。
【0093】
図14は、管理装置情報に含まれるレコード数情報のデータ構造の一例を示す。ここでは、第1~第3DB管理装置31~33の各々のデータベース311にテーブルt1及びt2が格納されているものとして説明する。
【0094】
図14に示すように、レコード数情報は、ノードID、テーブルt1及びテーブルt2を含む。ノードIDは上記した演算性能情報に含まれるノードIDと同様であるため、ここではその詳しい説明を省略する。テーブルt1は、ノードIDによって識別されるノードのデータベース311に格納されているテーブルt1が有するレコードの数を示す。テーブルt2は、ノードIDによって識別されるノードのデータベース311に格納されているテーブルt2が有するレコードの数を示す。
【0095】
図14に示す例において、レコード数情報は、ノード「011」、テーブルt1「100」及びテーブルt2「10」を対応づけて含む。このレコード数情報によれば、ノードID「011」によって識別される第1DB管理装置31のテーブルt1が100個のレコードを有し、テーブルt2が10個のレコードを有していることが示されている。
【0096】
また、レコード数情報は、ノード「012」、テーブルt1「10」及びテーブルt2「20」を対応づけて含む。このレコード数情報によれば、ノードID「011」によって識別される第2DB管理装置32のテーブルt1が10個のレコードを有し、テーブルt2が20個のレコードを有していることが示されている。
【0097】
更に、レコード数情報は、ノード「013」、テーブルt1「25」及びテーブルt2「10」を対応づけて含む。このレコード数情報によれば、ノードID「013」によって識別される第3DB管理装置33のテーブルt1が25個のレコードを有し、テーブルt2が10個のレコードを有していることが示されている。
【0098】
図15は、管理装置情報に含まれる通信性能情報のデータ構造の一例を示す。ここでは、第1DB管理装置31の通信性能を示す通信性能情報について説明する。
【0099】
図15に示すように、通信性能情報は、ノードID及び通信性能値を対応づけて含む。ノードIDは上記した演算性能情報及びレコード数情報に含まれるノードIDと同様であるため、ここではその詳しい説明を省略する。通信性能値は、第1DB管理装置31とノードIDによって識別されるノードとの間の通信性能を表す値であり、例えば1秒当たりに通信(送信)可能なレコードの数を示す。なお、通信性能値は、第1DB管理装置31の通信性能を表す値であれば他の値であってもよい。
【0100】
図15に示す例において、通信性能情報は、ノード「01」及び通信性能値「100」を対応づけて含む。この通信性能情報によれば、第1DB管理装置31が1秒当たりに100個のレコードをノード「01」によって識別される分散処理装置20に送信することができることが示されている。
【0101】
ここで、本実施形態においては、第1DB管理装置31は分散処理装置20と通信可能に接続されているものとして説明したが、当該第1DB管理装置31は、例えばメッシュネットワーク等を介して他のDB管理装置(第2及び第3DB管理装置32及び33)と通信可能に接続されていてもよい。この場合、通信性能情報は、第1DB管理装置31と第2及び第3DB管理装置32及び33との間の通信性能を更に示す。
【0102】
具体的には、通信性能情報は、ノード「012」及び通信性能値「20」を対応づけて含む。この通信性能情報によれば、第1DB管理装置31が1秒当たりに20個のレコードをノード「012」によって識別される第2DB管理装置32に送信することができることが示されている。
【0103】
また、通信性能情報は、ノード「013」及び通信性能値「25」を対応づけて含む。この通信性能情報によれば、第1DB管理装置31が1秒当たりに25個のレコードをノード「013」によって識別される第3DB管理装置33に送信することができることが示されている。
【0104】
図15においては第1DB管理装置31の通信性能を示す通信性能情報について説明したが、管理装置情報には、分散処理装置20、第2及び第3DB管理装置32及び33の通信性能を示す通信性能情報も含まれる。なお、分散処理装置20、第2及び第3DB管理装置32及び33の通信性能を示す通信性能情報のデータ構造は
図15に示す通信性能情報と同様であるため、ここではその詳しい説明を省略する。
【0105】
なお、
図15に示す例では、例えばノード「012」及び通信性能値「20」が対応づけられているが、第1DB管理装置31が第2DB管理装置32にレコードを送信する際の当該第1DB管理装置31の通信性能(値)と、第2DB管理装置32が第1DB管理装置31にレコードを送信する際の当該第2DB管理装置32の通信性能(値)とは、同じであってもよいし、通信環境等に応じて異なっていてもよい。
【0106】
上記した
図13~
図15においては演算性能情報、レコード数情報及び通信性能情報のデータ構造について説明したが、当該
図13~
図15に示す数値は一例であり、当該数値は、分散処理システム1の構成等に応じて異なっていてもよい。
【0107】
次に、
図16のシーケンスチャートを参照して、本実施形態に係る分散処理システム1の処理手順の一例を説明する。
【0108】
まず、第1~第3DB管理装置31~33のデータベース311に格納されているテーブル(データ)を閲覧する場合、ユーザは、クライアント端末10を操作することによって当該テーブル(が有するレコード)を取得するためのクエリ(SQL)を指定する。クライアント端末10(クライアントアプリケーション)においては、このようにユーザによって指定されたクエリ(以下、対象クエリと表記)が作成される(ステップS1)。
【0109】
ここでは、第1~第3DB管理装置31~33のデータベース311にはそれぞれ上記したテーブルt1及びt2が格納されているものとし、対象クエリは、テーブルt1とテーブルt2との結合演算結果を取得するためのクエリ(「SELECT*FROM t1,t2 WHERE t1.id=t2.id」)であるものとする。
【0110】
ステップS1において作成された対象クエリは、クライアント端末10から分散処理装置20に送信される(ステップS2)。
【0111】
ステップS2においてクライアント端末10から送信された対象クエリは、分散処理装置20の通信部203によって受信される。なお、通信部203によって受信された対象クエリは、クエリ解析部204によって解析される。これにより、クエリ解析部204は、対象クエリに基づいて第1~第3DB管理装置31~33において実行されるべき処理を判別することができる。
【0112】
ここで、本実施形態においては、クエリ解析部204による解析結果(判別結果)に基づいて対象クエリに対する処理(つまり、結合演算)を第1~第3DB管理装置31~33に分散する。この場合、分散処理装置20は、上記したようにテーブルt1及びt2のうちの一方のテーブルを第1~第3DB管理装置31~33から収集し、当該収集されたテーブルを組み合わせたテーブルを第1~第3DB管理装置31~33に配布(転送)する必要がある。
【0113】
このため、クエリ解析部204は、上記したように第1~第3DB管理装置31~33から収集するテーブル(以下、収集テーブルと表記)を決定する(ステップS3)。
【0114】
ここで、第1~第3DB管理装置31~33からテーブルを収集する(つまり、テーブルが転送される)処理にかかる時間を低減する(つまり、分散処理システム1全体としての動作を高速に行う)ためには、サイズ(容量)が小さいテーブルを第1~第3DB管理装置31~33から収集することが効果的である。このため、ステップS3においては、第1~第3DB管理装置31~33のデータベース311に格納されているテーブルt1及びt2のうち、サイズが小さいテーブルを収集テーブルとして決定するものとする。なお、テーブルt1及びt2のサイズは、例えば格納部201に格納されている管理装置情報(に含まれるレコード数情報)に基づいて判別してもよいし、当該管理装置情報とは別に用意されたテーブルt1及びt2のサイズに関する情報に基づいて判別してもよい。
【0115】
図16においては省略されているが、ステップS3においてテーブルt2が収集テーブルとして決定されたものとすると、分散処理装置20は、第1~第3DB管理装置31~33の各々からテーブルt2を収集し、当該テーブルt2を組み合わせたテーブルT2を作成する。このように作成されたテーブルT2は、第1~第3DB管理装置31~33の各々に配布される。
【0116】
次に、クエリ作成部205は、格納部201に格納されている管理装置情報に基づいて、第1~第3DB管理装置31~33の処理時間を計算する(ステップS4)。
【0117】
なお、本実施形態において、第1DB管理装置31の処理時間とは、第1DB管理装置31のテーブルt1及び分散処理装置20から配布されたテーブルT2に対する結合演算を第1DB管理装置31において実行し、当該結合演算結果が第1DB管理装置31から分散処理装置20に返される(分散処理装置20において受信される)までの時間をいう。換言すれば、第1DB管理装置31の処理時間には、結合演算を実行するために要する時間(以下、演算時間と表記)及び当該結合演算結果を分散処理装置20に送信(転送)するために要する時間(以下、送信時間と表記)が含まれる。第2及び第3DB管理装置32及び33の処理時間についても同様である。
【0118】
以下、ステップS4において計算される第1~第3DB管理装置31~33の処理時間について具体的に説明する。
【0119】
ここでは、1レコード当たりの演算(計算)時間をc、1レコード当たりの送信(転送)時間をt、テーブルt1が有するレコードの数(テーブルt1の所持レコード数)をrt1、テーブルT2が有するレコードの数(全ノードからテーブルt2を収集することによって作成されたテーブルT2のレコード数)をRT2とする。
【0120】
ここで、テーブルt1とテーブルT2とを結合する(つまり、テーブルt1及びT2に対する結合演算を実行する)場合には、当該テーブルT1が有するレコードの各々と当該テーブルT2が有するレコードの各々との組み合わせ毎に演算を行う必要がある。よって、テーブルt1及びT2に対する結合演算を実行する際の第1~第3DB管理装置31~33の各々の演算時間はc*rt1*RT2となる。
【0121】
一方、例えば全てのレコードの演算結果を第1~第3DB管理装置31~33から分散処理装置20に送信する時間は、rt1*RT2*tによって表すことができる。しかしながら、第1~第DB管理装置31~33から分散処理装置20には全てのレコードの演算結果が送信されるわけではなく、結合されたレコードのみが結合演算結果として送信される。この結合演算結果(として生成されるレコードの数)はクエリの条件式によって変化するため、結合演算を実行する前に当該レコードの数を正確に予測することは困難である。そこで、本実施形態においては、テーブルt1及びT2に対する結合演算おいてレコードがクエリの条件式に一致する(つまり、テーブルt1が有するレコードとテーブルT2が有するレコードとが結合される)確率をpとする。この場合、上記した送信時間は、rt1*RT2*p*tとなる。
【0122】
これにより、第1~第3DB管理装置31~33の各々の処理時間(つまり、演算時間+送信時間)は、c*rt1*RT2+rt1*RT2*p*tによって表すことができる。
【0123】
なお、上記した1レコード当たりの演算時間cは、格納部201に格納されている演算性能情報(演算性能値)に基づいて得ることができる。また、1レコード当たりの送信時間tは、格納部201に格納されている通信性能情報(通信性能値)に基づいて得ることができる。また、テーブルt1が有するレコードの数rt1及びテーブルT2が有するレコードの数RT2は、格納部201に格納されているレコード数情報に基づいて得ることができる。更に、確率pは、デフォルトで付与された値であればよいが、例えば統計的に算出された値であってもよいし、ユーザによって指定された値であってもよい。
【0124】
ここで、
図17及び
図18を参照して、テーブルt1及びT2に対する結合演算を実行する際の第1及び第2DB管理装置31及び32の処理時間の具体例について説明する。
【0125】
なお、ここで説明する1レコード当たりの演算時間、テーブルt1が有するレコードの数、テーブルt2が有するレコードの数及び1レコード当たりの送信時間は、説明の便宜のために例示するものであって、上記した
図13~
図15において説明した演算性能情報、レコード数情報及び通信性能情報に基づく値とは異なる。
【0126】
まず、
図17を参照して、第1DB管理装置31の処理時間について説明する。
図17に示す例では、第1DB管理装置31のテーブルt1が有するレコードの数r
t1が100000であり、分散処理装置20から第1DB管理装置31に配布されたテーブルT2が有するレコードの数R
T2が100である場合を想定している。
【0127】
この場合において、例えば第1DB管理装置31の1レコード当たりの演算時間cが0.01、1レコード当たりの送信時間tが100、テーブルt1及びT2に対する結合演算においてレコードがクエリの条件式に一致する確率pが0.001であるものとすると、第1DB管理装置31の処理時間は、0.01(c)*100000(rt1)*100(RT2)+100000(rt1)*100(RT2)*0.001(p)*100(t)=1100000となる。
【0128】
次に、
図18を参照して、第2DB管理装置32の処理時間について説明する。
図18に示す例では、第2DB管理装置32のテーブルt1が有するレコードの数r
t1は100であり、分散処理装置20から第2DB管理装置32に配布されたテーブルT2が有するレコードの数R
T2が100である場合を想定している。
【0129】
この場合において、例えば第2DB管理装置32の1レコード当たりの演算時間cが0.01、1レコード当たりの送信時間tが100、テーブルt1及びT2に対する結合演算においてレコードがクエリの条件式に一致する確率pが0.001であるものとすると、第2DB管理装置32の処理時間は、0.01(c)*100(rt1)*100(RT2)+100(rt1)*100(RT2)*0.001(p)*100(t)=1100となる。
【0130】
なお、ここでは第1及び第2DB管理装置31及び32の処理時間について説明したが、ステップS4においては第3DB管理装置33の処理時間についても同様に計算される。
【0131】
ステップS4の処理が実行されると、クエリ作成部205は、当該ステップS4において計算された第1~第3DB管理装置31~33の処理時間に基づいて対象クエリの実行計画を作成し、当該実行計画に従った第1~第3DB管理装置31~33に対するクエリ(当該第1~第3DB管理装置31~33の各々によって実行されるべきクエリ)を作成する(ステップS5)。
【0132】
ここで、ステップS4において計算された第1DB管理装置31の処理時間が1100000であり、第2DB管理装置32の処理時間が1100である場合を想定する。この場合において、上記した本実施形態の比較例と同様に対象クエリに対する処理が実行されると、第2DB管理装置32の処理が完了した後も、第1DB管理装置31の処理が完了するまで対象クエリに対する応答(つまり、結合演算結果)をクライアント端末10に返すことができず、分散処理システム1の動作が低速となる。
【0133】
そこで、例えば第1DB管理装置31の処理時間が最大であり、第2DB管理装置32の処理時間が最小である(つまり、第2DB管理装置32の処理時間が第1DB管理装置31の処理時間未満である)場合、当該第1DB管理装置31(以下、最大コストノードと表記)から第2DB管理装置32(つまり、最小コストノードと表記)にレコードを転送するという実行計画を作成する。
【0134】
本実施形態においては、このように作成された実行計画に基づき、ノード(ここでは、第1及び第2DB管理装置31及び32)間の処理時間の均等化を図る。
【0135】
なお、最大コストノードから最小コストノードに転送されるレコードの数は、例えば以下の式(1)を満たす最小のxとすることができる。
c*(r1t1-x)*r1T2+(r1t1-x)*r1T2*p*t+x*t
>c*(r2t1+x)*r2T2+(r2t1+x)*r2T2*p*t+x*t
式(1)
【0136】
ここで、上記した式(1)において、r1t1は最大コストノードのテーブルt1が有するレコードの数、r2t1は最小コストノードのテーブルt1が有するレコードの数を表している。また、r1T2は分散処理装置20から最大コストノードに配布されたテーブルT2が有するレコードの数を表しており、r2T2は分散処理装置20から最小コストノードに配布されたテーブルT2が有するレコードの数を表している。すなわち、r1T2及びr2T2は、同一の値である。なお、左辺のc及びtは、最大コストノードの1レコード当たりの演算時間及び送信時間である。右辺のc及びtは、最小コストノードの1レコード当たりの演算時間及び送信時間である。pは、テーブルt1及びT2に対する結合演算おいてレコードがクエリの条件式に一致する確率である。
【0137】
上記した式(1)によれば、左辺は最大コストノードから最小コストノードにx個のレコードを転送した場合の最大コストノードの処理時間を表しており、右辺は最大コストノードから最小コストノードにx個のレコードを転送した場合の最小コストノードの処理時間を表している。
【0138】
本実施形態においては、このような式(1)を用いて最小のxを算出するものとする。このように算出されたxは、最大コストノードと最小コストノードとで処理時間を同程度とするために転送する必要があるレコードの数に相当する。
【0139】
例えば最大コストノードが第1DB管理装置31であり、最小コストノードが第2DB管理装置32であるものとすると、上記した
図17及び
図18において説明した例を式(1)に適用した場合には、x=39996を算出することができる。これによれば、第1DB管理装置31から第2DB管理装置32に39996個のレコードを転送するという実行計画が作成される。
【0140】
この場合、クエリ作成部205は、第1DB管理装置31に対するクエリとして、例えば「SELECT*FROM(SELECT*FROM LIMIT 60004),t2 WHERE t1.id=t2.id」を作成する。このクエリは、第1DB管理装置31のテーブルt1が有する100000個のレコードのうち、1番目から60004番目のレコードをテーブルT2(が有するレコード)と結合することを示している。
【0141】
一方、クエリ作成部205は、第2DB管理装置32に対するクエリとして、例えば「GET 第1DB管理装置.t1´s record(60005-100000)」及び「SELECT*FROM t1,t2 WHERE t1.id=t2.id」を作成する。このクエリは、第1DB管理装置31のテーブルt1が有する100000個のレコードのうち、60005番目から100000番目のレコード(つまり、39996個のレコード)を当該第1DB管理装置31から取得し、第2DB管理装置32のテーブルt1が有するレコード及び第1DB管理装置31から取得されたレコードをテーブルT2(が有するレコード)と結合することを示している。
【0142】
なお、第3DB管理装置33が他のDB管理装置にレコードを転送しないまたは他のDB管理装置からレコードが転送されない場合、当該第3DB管理装置33に対するクエリとしては、「SELECT*FROM t1,t2 WHERE t1.id=t2.id」が作成される。
【0143】
ここでは、第1DB管理装置31(最大コストノード)から第2DB管理装置32(最小コストノード)に転送されるレコードの数が上記した式(1)を用いて算出されるものとして説明したが、当該転送されるレコードの数は他の手法で算出されてもよい。
【0144】
更に、本実施形態においては、最大コストノードから最小コストノードにレコードを転送するものとして説明するが、レコードの転送元となるノード及びレコードの転送先となるノードは他の手法で決定されてもよい。
【0145】
また、例えば全てのノードの処理時間が同程度となるように複数のノード間でレコードが転送される構成としても構わない。
【0146】
ステップS5の処理が実行されると、当該ステップS5において作成された第1~第3DB管理装置31~33の各々に対するクエリが、当該第1DB管理装置31~33の各々に送信される(ステップS6)。
【0147】
ここで、ステップS6において分散処理装置20(クエリ実行部206)から送信されたクエリが第1DB管理装置31(通信部312)において受信されると、当該第1DB管理装置31のクエリ実行部313は、当該クエリに対する処理を実行する。
【0148】
ここで、上記したように第1DB管理装置31に対するクエリが「SELECT*FROM(SELECT*FROM LIMIT 60004),t2 WHERE t1.id=t2.id」であるものとすると、第1DB管理装置31のクエリ実行部313は、当該第1DB管理装置31のデータベース311を参照して、第1DB管理装置31の1番目から60004番目のレコードを有するテーブルt1とテーブルT2とを結合する結合演算を実行する(ステップS7)。
【0149】
ステップS7の処理が実行された結果(結合演算結果)は、第1DB管理装置31の通信部312を介して第1DB管理装置31から分散処理装置20に送信される(ステップS8)。
【0150】
一方、ステップS6において分散処理装置20(クエリ実行部206)から送信されたクエリが第2DB管理装置32(通信部312)において受信されると、当該第2DB管理装置32のクエリ実行部313は、当該クエリに対する処理を実行する。
【0151】
ここで、上記したように第2DB管理装置32に対するクエリが「GET 第1DB管理装置31.t1´s record(60005-100000)」及び「SELECT*FROM t1,t2 WHERE t1.id=t2.id」であるものとすると、第2DB管理装置32のクエリ実行部313は、通信部312と協働し、「GET 第1DB管理装置31.t1´s record(60005-100000)」に基づいて第1DB管理装置31(の通信部312)との通信を実行する(ステップS9)。なお、第1DB管理装置31と第2DB管理装置32との間の通信は、例えば第1~第3DB管理装置31~33によって構築されるメッシュネットワークを介して実行される。
【0152】
このステップS9の処理が実行された場合、第1DB管理装置31のテーブルt1の60005番目から100000番目のレコード(以下、対象レコードと表記)が当該第1DB管理装置31から第2DB管理装置32に転送される。これにより、第2DB管理装置32のクエリ実行部313は、通信部312を介して対象レコードを取得する(ステップS10)。
【0153】
次に、第2DB管理装置32のクエリ実行部313は、当該第2DB管理装置32のデータベース311を参照して、第2DB管理装置32のテーブルt1及び第1DB管理装置31から取得された対象レコードを有するテーブルを組み合わせたテーブルとテーブルT2とを結合する結合演算を実行する(ステップS11)。
【0154】
ステップS11の処理が実行された結果(結合演算結果)は、第2DB管理装置32の通信部312を介して第2DB管理装置32から分散処理装置20に送信される(ステップS12)。
【0155】
更に、ステップS6において分散処理装置20(クエリ実行部206)から送信されたクエリが第3DB管理装置33(通信部312)において受信されると、当該第3DB管理装置33のクエリ実行部313は、当該クエリに対する処理を実行する。
【0156】
ここで、上記したように第3DB管理装置33に対するクエリが「SELECT*FROM t1,t2 WHERE t1.id=t2.id」であるものとすると、第3DB管理装置33のクエリ実行部313は、当該第3DB管理装置33のデータベース311を参照して、第3DB管理装置33のテーブルt1とテーブルT2とを結合する結合演算を実行する(ステップS13)。
【0157】
ステップS13の処理が実行された結果(結合演算結果)は、第3DB管理装置33の通信部312を介して第3DB管理装置33から分散処理装置20に送信される(ステップS14)。
【0158】
上記したステップS8において第1DB管理装置31から送信された結合演算結果、ステップS12において第2DB管理装置32から送信された結合演算結果及びステップS14において第3DB管理装置33から送信された結合演算結果は、分散処理装置20(結果集積部207)によって集積される(ステップS15)。
【0159】
ステップS15において集積された結合演算結果は、ステップS2においてクライアント端末10から分散処理装置20に送信された対象クエリに対する応答として、分散処理装置20(通信部203)からクライアント端末10(クライアントアプリケーションプログラム)に送信される(ステップS16)。
【0160】
ステップS16において分散処理装置20から送信された結合演算結果は、クライアント端末10において受信され、当該クライアント端末10(のディスプレイ等)に表示される(ステップS17)。これにより、ユーザは、結合演算結果を閲覧することができる。
【0161】
なお、
図16においては第1DB管理装置31のテーブルt1が有する複数のレコードの一部(対象レコード)が第2DB管理装置32に転送される(つまり、第2DB管理装置32が対象レコードを第1DB管理装置31から取得する)ものとして説明したが、当該対象レコードの一部を第2DB管理装置32に転送し、当該対象レコードの残りの部分を第3DB管理装置33に転送するようにしてもよい。
【0162】
また、ステップS4において計算される処理時間によっては、例えば第2DB管理装置32のテーブルt1が有する複数のレコードの一部(対象レコード)が第1DB管理装置31(または第3DB管理装置33)に転送されても構わない。
【0163】
上記したように本実施形態においては分散処理システム1が第1~第3DB管理装置31~33を備えるものとして説明したが、本実施形態に係る分散処理システム1は、少なくとも2つのDB管理装置を備える構成であればよい。また、分散処理システム1に備えられるDB管理装置の数は4以上であってもよい。
【0164】
以下、主に分散処理システム1が2つのDB管理装置(第1及び第2DB管理装置31及び32)を備える構成に関して本実施形態の作用効果を説明する。
【0165】
本実施形態において、第1DB管理装置31のデータベース311は当該第1DB管理装置31において収集された複数のレコード(第1レコード)を有するテーブルt1(第1テーブル)を格納し、第2DB管理装置32のデータベース311は当該第2DB管理装置32において収集された複数のレコード(第2レコード)を有するテーブルt1(第2テーブル)を格納する。なお、第1DB管理装置31のテーブルt1が有するレコード及び第2DB管理装置32のテーブルt1が有するレコードは、同一のフィールドから構成される。
【0166】
また、本実施形態において、分散処理装置20は、第1及び第2DB管理装置31及び32の各々の演算性能を示す演算性能情報、テーブルt1が有するレコードの数を示すレコード数情報、または分散処理装置20と第1及び第2DB管理装置31及び32との間の通信性能(第1通信性能)を示す通信性能情報を含む管理装置情報を格納する格納部201を含む。また、分散処理装置20は、テーブルt1が有するレコードを取得するためのクエリ(第1クエリ)をクライアント端末10から受信し、当該クエリに対する第1DB管理装置31の処理時間(第1処理時間)及び第2DB管理装置32の処理時間(第2処理時間)を計算し、当該計算された処理時間に基づいて第1DB管理装置31に対するクエリ(第2クエリ)及び第2DB管理装置32に対するクエリ(第3クエリ)を作成する。
【0167】
更に、本実施形態において、第1DB管理装置31は分散処理装置20において作成されたクエリに対する処理を実行し、第2DB管理装置32は分散処理装置20において作成されたクエリに対する処理を実行する。なお、第1DB管理装置31は、第1DB管理装置31の処理時間が第2DB管理装置32の処理時間未満である場合、第2DB管理装置32のテーブルt1が有する複数のレコードの一部を第1DB管理装置31(のデータベース311)から取得してクエリに対する処理を実行する。一方、第2DB管理装置32は、第2DB管理装置32の処理時間が第1DB管理装置31の処理時間未満である場合、第1DB管理装置31のテーブルt1が有する複数のレコードの一部を第1DB管理装置31(のデータベース311)から取得してクエリに対する処理を実行する。
【0168】
本実施形態においては、このような構成により、第1DB管理装置31及び32間において処理時間の均等化を図ることが可能となるため、分散処理システム1全体としてクエリに対する処理を高速化することが可能となる。
【0169】
ここで、例えば複数の子ノード(子ノードA及びB)に負荷を分散(分配)するためにロードバランサを配置するようなシステムがあるが、当該ロードバランサは、
図19の左側に示すように、当該子ノードA及びBによってデータが共有されていることを前提とするものである。すなわち、ロードバランサは、子ノードA及びBの各々のデータを読み込む位置を変更する、または共有されているデータを予め当該子ノードA及びBに対して分配しておくことにより処理を分散化する。
【0170】
これに対して、本実施形態に係る分散処理システム1(統合データベース)においては、
図19の右側に示すように、子ノードA及びB(例えば、第1及び第2DB管理装置31及び32)の各々が管理(所持)している異なるデータ(テーブル)に対してクエリに対する処理を実行するものであるため、上記したロードバランサのように予めデータを分配しておくことができない。
【0171】
このため、本実施形態においては、クエリに対する処理を実行する際に処理量が偏ると予想されるノード(例えば、第1DB管理装置31)の処理を分散及び最適化する構成を採用することにより、分散処理システム1全体の動作を高速化することができる。
【0172】
なお、本実施形態においては格納部201に格納される管理装置情報が演算性能情報、レコード数情報及び通信性能情報の全てを含むものとして説明したが、当該管理装置情報は、第1及び第2DB管理装置31及び32の処理時間を計算するために用いられる情報であればよく、例えば演算性能情報、レコード数情報及び通信性能情報の少なくとも1つを含むものであればよい。この管理装置情報は、例えば第1及び第2DB管理装置31及び32から収集され、定期的に更新されてもよい。
【0173】
また、例えば第1DB管理装置31のデータベース311はテーブルt2(第3テーブル)を更に格納し、第2DB管理装置32のデータベース311はテーブルt2(第4テーブル)を更に格納し、当該第1DB管理装置31のテーブルt2が有するレコード及び第2DB管理装置32のテーブルt2が有するレコードは同一のフィールドから構成される。また、本実施形態においてクライアント端末10から分散処理装置20に送信されるクエリは、テーブルt1(第1及び第2テーブル)とテーブルt2(第3及び第4テーブル)との結合演算結果を取得するためのクエリを含む。
【0174】
この場合、第1及び第2DB管理装置31及び32は当該第1及び第2DB管理装置31及び32のテーブルt2を組み合わせたテーブルT2を用いてクエリに対する処理を実行するが、第1及び第2DB管理装置31及び32のテーブルt1の容量は、当該テーブルT2の容量よりも大きい。これによれば、第1及び第2DB管理装置31及び32からテーブルt1を収集し、当該収集されたテーブルt1を組み合わせたテーブルを当該第1及び第2DB管理装置31及び32に配布する構成と比較して、分散処理装置20と第1及び第2DB管理装置31及び32との間の通信量を削減することができるため、高速な処理を実現することが可能となる。
【0175】
ここで、本実施形態においては、例えば第2DB管理装置32の処理時間が第1DB管理装置31の処理時間未満である場合に第2DB管理装置32が第1DB管理装置31から対象レコードを取得するものとして説明したが、例えば第1DB管理装置31の処理時間と第2DB管理装置32の処理時間との差分が小さい場合には、少数のレコードが対象レコードとして第1DB管理装置31から第2DB管理装置32に転送されることになる。一般的には演算処理よりも送信(転送)処理の方が時間を要するため、第1DB管理装置31から第2DB管理装置32に少数のレコードが転送されただけでは、第1DB管理装置31の処理量を十分に低減することができず、更には当該レコードの転送に要する時間が処理の低速化の要因になり得る。
【0176】
このため、本実施形態においては、第1DB管理装置31の処理時間と第2DB管理装置32の処理時間との差分が予め定められた値以上である場合に、第2DB管理装置32が第1DB管理装置31から対象レコードを取得するようにしてもよい。換言すれば、第1DB管理装置31の処理時間と第2DB管理装置32の処理時間との差分が小さい場合には、対象レコードが転送されない構成とすることができる。この場合、第1及び第2DB管理装置31及び32の各々においては、
図7及び
図8で説明した結合演算が実行されればよい。
【0177】
ここでは、第2DB管理装置32が第1DB管理装置31からレコードを取得する場合について説明したが、第1DB管理装置31が第2DB管理装置32からレコードを取得するような場合についても同様である。
【0178】
また、本実施形態においては、
図16において説明したように、例えば第2DB管理装置32が第1DB管理装置31から直接対象レコードを取得するものとして主に説明したが、当該対象レコードは、分散処理装置20を介して取得される構成であってもよい。
【0179】
なお、上記した
図15において説明したように、分散処理装置20の格納部201に格納されている管理装置情報(通信性能情報)が分散処理装置20と第1及び第2DB管理装置31及び32との間の通信性能に加えて、当該第1及び第2DB管理装置31及び32間の通信性能(第2通信性能)を含む場合、本実施形態においては、当該通信性能情報に基づいてレコードを取得する経路を決定する構成としてもよい。
【0180】
ここで、例えば第2DB管理装置32が第1DB管理装置31のテーブルt1が有する複数のレコードの一部を対象レコードとして取得するものとすると、当該対象レコードを取得する経路には、第1DB管理装置31から直接する第1経路と、分散処理装置20を介して取得する第2経路とが含まれる。
【0181】
例えば
図20に示すように、分散処理装置20と第1及び第2DB管理装置31及び32との間の通信性能(値)が100、第1及び第2DB管理装置31及び32間の通信性能(値)が20であるものとすると、分散処理装置20(クエリ作成部205)は、分散処理装置20を介して取得する第1経路の方が、第1DB管理装置31から直接取得する第2経路よりも高速に対象レコードを取得することができると判定することができる。
【0182】
上記したように例えば第1及び第2DB管理装置31及び32間で低速な通信が実行される場合には、クエリ作成部205は、レコードを取得する経路として第1経路を決定し、当該第1経路で対象レコードを取得する実行計画を作成することができる。これによれば、第2DB管理装置32は、分散処理装置20において作成されたクエリに対する処理(結合演算)を実行する際に、対象レコードを第1経路で(つまり、分散処理装置20を介して)取得することができる。
【0183】
一方、例えば分散処理装置20が配置される環境等によっては、分散処理装置20と第1及び第2DB管理装置31及び32との間の通信性能よりも、当該第1及び第2DB管理装置31及び32間の通信性能の方が高い場合がある。このような場合には、クエリ作成部205は、レコードを取得する経路として第2経路を決定し、当該第2経路でレコードを取得する実行計画を作成すればよい。これによれば、第2DB管理装置32は、分散処理装置20において作成されたクエリに対する処理(結合演算)を実行する際に、対象レコードを第2経路で(つまり、メッシュネットワークを介して第1DB管理装置31から直接)取得することができる。
【0184】
なお、第1~第3DB管理装置31~33は例えばメッシュネットワークを介して互いに通信可能に接続されるが、当該第1~第3DB管理装置31~33間は常時接続されていなくてもよい。このような場合において、例えば第2DB管理装置32が第1DB管理装置31から対象レコードを直接取得するためには、当該第2DB管理装置32は、当該第1DB管理装置31への接続情報を用いて当該第1DB管理装置31に接続する必要がある。この第1DB管理装置31への接続情報は、当該第1DB管理装置31と通信を行う(当該第1DB管理装置31に接続する)ための情報であり、例えばIPアドレス及びパスワード等を含む。例えば第3DB管理装置33が第1DB管理装置31から対象レコードを直接取得する場合も同様に、当該第1DB管理装置31への接続情報が必要である。他のDB管理装置間についても同様である。
【0185】
ここで、例えば分散処理システム1が多数のDB管理装置を備える構成の場合、1つのDB管理装置が他の全てのDB管理装置(全兄弟ノード)への接続情報を保持しておくことは困難である。このため、例えば第2DB管理装置32が第1DB管理装置31から対象レコードを取得する場合において当該対象レコードを取得する経路として第2経路が決定された場合には、
図21に示すように、当該第1DB管理装置31への接続情報を含む実行計画が作成され、当該接続情報が分散処理装置20から第2DB管理装置32に送信されるものとする。これによれば、第2DB管理装置32が第1DB管理装置31(を含む全てのDB管理装置)への接続情報を予め保持していなくても、分散処理装置20から送信される接続情報を用いて第1DB管理装置31から対象レコードを直接取得することができる。この場合、分散処理システム1に備えられる複数のDB管理装置(第1~第3DB管理装置31~33)への接続情報は、例えば分散処理装置20(格納部201)において管理されていればよい。
【0186】
ここでは、分散処理装置20から第2DB管理装置32に第1DB管理装置31への接続情報が送信されるものとして説明したが、当該接続情報は、例えば
図22に示すように、第2DB管理装置32が分散処理装置20にアクセスすることによって取得されてもよい。
【0187】
また、本実施形態においては、分散処理システム1がテーブルt1及びt2を格納するデータベースを管理する第1~第3DB管理装置31~33を備えるものとして説明したが、例えば第3DB管理装置33はテーブルt1及びt2が格納されていないデータベース(第3データベース)を管理するDB管理装置であってもよい。本実施形態においては、このような構成の場合に、例えば第2DB管理装置32の代わりに第3DB管理装置33が第1DB管理装置31から対象レコードを取得し、当該第3DB管理装置33において、当該対象レコードを有するテーブルt1及び分散処理装置20から配布されたテーブルT2に対する結合演算(つまり、分散処理装置20において作成される第4クエリに対する処理)が実行される構成とすることができる。すなわち、本実施形態においては、ユーザによって指定されたクエリに関するデータ(テーブルt1及びt2)を管理していないDB管理装置(子ノード)に当該クエリに対する処理を分散するようにしてもよい。
【0188】
また、本実施形態においてはクエリに対する処理(結合演算)を複数のDB管理装置に分散するものとして主に説明したが、例えば各DB管理装置のテーブルt1及びt2のサイズが小さい(レコードの数が少ない)場合または分散処理装置20の演算性能が複数のDB管理装置と比較して十分に高いような場合には、分散処理装置20側で全ての結合演算を実行する構成としてもよい。この場合には、上記した
図6において説明したような処理が分散処理装置20において実行されればよい。
【0189】
なお、分散処理装置20側で全ての結合演算を実行するか否かは、当該分散処理装置20側で全ての結合演算を実行した場合に必要な処理時間を計算し、当該処理時間と例えば
図16に示すステップS4において計算される各DB管理装置の処理時間とを比較することによって判定されてもよい。
【0190】
更に、本実施形態においては、例えば各DB管理装置の処理時間に基づいて、複数のDB管理装置のうちの一部のDB管理装置にのみクエリに対する処理を分散し、残りの処理を分散処理装置20側で実行するような構成とすることも可能である。
【0191】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0192】
10…クライアント端末、20…分散処理装置、31…第1DB管理装置(第1データベース管理装置)、32…第2DB管理装置(第2データベース管理装置)、33…第3DB管理装置(第3データベース管理装置)、21…CPU、22…不揮発性メモリ、23…主メモリ、24…通信デバイス、201…格納部、202…情報管理部、203…通信部、204…クエリ解析部、205…クエリ作成部、206…クエリ実行部、207…結果集積部、311…データベース、312…通信部、313…クエリ実行部、314…情報管理部。