説明

データベース装置、データベース管理システム、データベース管理方法およびそのプログラム

【課題】2つのテーブルのレコードのマージ結合を効率よく行う。
【解決手段】データベース装置10(10A,10B)はそれぞれ、結合対象となるテーブルを、ハッシュ関数を用いて2つの処理グループのテーブル(分割テーブル131,132)に分割する。そして、データベース装置10Aは、分割テーブル131Aの検索レコードをデータベース装置10Bへ送信する。データベース装置10Bは、受信した検索レコードを用いて自身の分割テーブル分割131Bの検索処理を行い、結合結果をデータベース管理装置20へ送信する。また、これに平行して、データベース装置10Bも、分割テーブル132Bの検索レコードをデータベース装置10Aへ送信する。データベース装置10Aは、受信した検索レコードを用いて自身の分割テーブル分割132Aの検索処理を行い、結合結果をデータベース管理装置20へ送信する。

【発明の詳細な説明】
【技術分野】
【0001】
テーブルのレコードのマージ結合技術に関する。
【背景技術】
【0002】
従来から、複数のテーブルのレコードを結合する手法は多くあるが、ディスク装置におけるテーブルの結合やネットワーク経由でのレコードの結合等、結合処理自体に時間がかる場合には、マージ結合が広く利用される(非特許文献1参照)。このマージ結合は、2つのテーブルのレコードを、結合するフィールドについてあらかじめソートしておき、この2つのテーブルのレコードに対して持たせたポインタを、レコードの上から下へと順に走査させて値が一致するものを探し、その値が一致するレコード同士を結合するものである。
【0003】
図15は、データベース管理システムにおけるテーブルのレコードのマージ結合を概念的に説明した図である。ここでは、マシンJが、マシンAのテーブルAのレコードと、マシンBのテーブルBのレコードとをマージ結合する場合を例に説明する。ここでは、既にテーブルA,Bのレコードは昇順にソートされているものとする。なお、図15のテーブルA,Bは、マージ結合のキーとなるカラムの値のみを示しているが、このカラム以外のカラムの値も含むものとする。
【0004】
図15のマシンJは、例えば、マシンA,Bにマージ結合のキーとなるカラム名を含む結合指示を送信する。これを受信したマシンAは、テーブルAにおける1番目のレコードのうち、当該カラム名のデータ(例えば、「32」)を比較キーとして、マシンBへ送信する。なお、図示を省略しているが、マシンAは比較キーとともに、テーブルAにおける1番目のレコードも送信する。マシンBは、マシンAから、この比較キーを含むレコードを受信すると、テーブルBにおける当該カラム名のカラムから、受信した比較キーと同じ値を探す。そして、マシンBは、テーブルBから、この比較キーと一致する値(例えば、「32」)を発見すると、マシンAから送信されたレコードと、テーブルBにおけるこの比較キーに対応するレコードとを結合する。この結合したレコードはマシンJへ送信する。また、マシンBは、テーブルBの当該カラムの値のうち、受信した比較キーの次の値(例えば、「39」)のレコードを、マシンAへ送信する。
【0005】
そして、マシンAは、マシンBからレコードを受信すると、このレコードから比較キー(例えば、「39」)を読み出し、前記したマシンBと同様に、テーブルAにおける当該カラム名のカラムから、この比較キーと一致する値を探す。なお、図15に示すように、テーブルAに比較キー(例えば、「39」)と一致する値がなければ、マシンAは、テーブルBにおける、この比較キーの次の値(例えば、「98」)のレコードを送信する。
【0006】
そして、マシンAは、マシンBからのレコードを受信すると、このレコードから比較キー(例えば、「98」)を読み出し、テーブルAにおける当該カラム名のカラムから、この比較キー(例えば、「98」)と同じ値を探す。マシンA,Bが以上のような処理を繰り返すことで、マシンJは、マシンA,BからテーブルA,Bそれぞれの結合結果を受信する。そして、マシンJは、この結合結果を集約することでテーブルA,Bのマージ結合結果を得ることができる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】北川 博之、昭晃堂、「データベースシステム」、1996年
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、前記した技術により2つのテーブルのマージ結合を行う場合、相手方のマシン(例えば、図15のマシンB)へ比較キーを含むレコードを送信したマシン(例えば、図15のマシンA)は、この相手方のマシンから次の比較キーを含むレコードを受信するまで、処理を一時的に中断しなければならない。例えば、図15のマシンAは、比較キー「32」を含むレコードを送信した後、マシンBから、次の比較キー(例えば、「39」)を含むレコードを受信するまで、自身のテーブルに関する処理を一時的に中断しなければならない。よって、結合対象のテーブルを記憶するコンピュータがそれぞれ、転送速度の遅いネットワークにより接続され、比較キーを含むレコードの送受信に時間がかかる場合や、その結合対象のテーブルのレコード数が多く検索処理に時間がかかる場合等は、マージ結合に要する時間が長くなるという問題があった。また、このように、片方のマシンが、他方のマシンから、次の比較キーを含むレコードを受信するまで、処理を一時的に中断することは、このマシンの持つリソース(CPU(Central Processing Unit)等の能力)を有効活用できていないことになり、マージ結合を行うときの効率は必ずしもよくない。
【0009】
そこで、本発明は、前記した問題を解決し、複数のテーブルのマージ結合に要する時間低減し、マージ結合を効率よく行うことを目的とする。
【課題を解決するための手段】
【0010】
前記した課題を解決するため、請求項1に記載の発明は、複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムにおけるデータベース装置であって、複数のレコードからなるテーブルと、このテーブルを分割したテーブルである第1の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第2の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部と、通信ポート経由で、データベース管理装置および他のデータベース装置とのデータ送受信を行うレコード通信処理部と、レコード通信処理部経由で、データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信したとき、結合対象のテーブルのレコードにおける、検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算し、(1)この計算したハッシュ値を2で割った余剰数が0である値のレコードを示した第1の分割テーブルを作成し、(2)計算したハッシュ値を2で割った余剰数が0でない値のレコードを示した第2の分割テーブルを作成し、作成した第1の分割テーブルおよび第2の分割テーブルを記憶部に記憶するテーブル分割処理部と、第1の分割テーブルまたは第2の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、第1の分割テーブルまたは第2の分割テーブルに対応する通信ポート経由でレコード通信処理部により、結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信処理を行うレコード処理部と、レコード通信処理部により、他のデータベース装置からの検索レコードを受信したとき、検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第1の分割テーブルか第2の分割テーブルかを特定し、この特定した分割テーブルにおける検索キーとなるカラムの値を参照して、分割テーブルにおいて検索キーに示される値に対応するレコードを検索するレコード検索処理を行うテーブル検索処理部とを備え、レコード処理部は、テーブル検索処理部により検索されたレコードと、他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、レコード通信処理部経由でデータベース管理装置へ送信し、特定した分割テーブルにおける、結合処理を行った次のレコードを読み出し、この読み出したレコードについて検索レコード送信処理を行う構成とした。
【0011】
請求項4に記載の発明は、複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムに用いられ、複数のレコードからなるテーブルと、このテーブルを分割したテーブルである第1の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第2の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部を備えるデータベース装置が、データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信するステップと、結合対象のテーブルのレコードにおける、検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算するステップと、(1)この計算したハッシュ値を2で割った余剰数が0である値のレコードを示した第1の分割テーブルを作成し、(2)計算したハッシュ値を2で割った余剰数が0でない値のレコードを示した第2の分割テーブルを作成し、作成した第1の分割テーブルおよび第2の分割テーブルを記憶部に記憶するステップと、第1の分割テーブルまたは第2の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、第1の分割テーブルまたは第2の分割テーブルに対応する通信ポート経由で結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信ステップと、他のデータベース装置からの検索レコードを受信するステップと、検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第1の分割テーブルか第2の分割テーブルかを特定し、この特定した分割テーブルにおける検索キーとなるカラムの値を参照して、特定した分割テーブルにおいて検索キーに示される値に対応するレコードを検索するステップと、検索されたレコードと、他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、データベース管理装置へ送信するステップと、特定した分割テーブルにおける、検索キーに示される値の次のレコードを読み出し、この読み出したレコードについて検索レコード送信ステップとを行うことを特徴とするデータベース管理方法とした。
【0012】
このようにすることで、データベース管理システムにおける各データベース装置は、マージ結合の対象であるテーブルを2つのテーブルに分割する。そして、その両方のデータベース装置が互いにレコード検索処理を行い、相手方のデータベース装置(他のデータベース装置)へ検索レコードを送信しあう。このようにすることで、データベース装置は、相手方のデータベース装置へ検索レコードを送信してから、そのデータベース装置からの検索キーを受信するまでの間に、相手方のデータベース装置から送信された検索レコードに基づく検索処理を実行することになる。つまり、データベース装置は、相手方のデータベース装置へ検索レコードを送信してから、そのデータベース装置からの検索キーを受信するまでの待ち時間を利用して、自身の分割テーブルのレコードの検索処理を実行するので、マージ結合を効率よく行い、マージ結合に要する時間を低減することができる。また、データベース装置は、テーブルを分割するとき、結合対象のカラムのハッシュ値を計算し、そのハッシュ値を2で割ったときの余剰が0か否かで、どちらの分割テーブルに割り振るか決定する。ハッシュ値は入力値からの返却値の分布が一様になるという特徴を持つ。よって、データベース装置それぞれの第1の分割テーブルのレコード数と、第2の分割テーブルのレコード数とをほぼ均等にすることができる。これにより、データベース装置それぞれの処理時間もほぼ均等になるので、片方のデータベース装置の待ち時間が長くなることにより、マージ結合が効率的に行えないという事態を避けることができる。また、ハッシュ値は入力値からの返却値が一意に定まるので、片方のデータベース装置の第1の分割テーブルにある検索キー値が、相手方のデータベース装置において、第2の分割テーブルにあるということがなくなる。つまり、同じキー値のレコードが、自身のデータベース装置には第1の分割テーブルに保存され、相手方のデータベース装置には第2の分割テーブルに保存されてしまい、このキー値のレコードを等結合できないという事態を避けることができる。
【0013】
請求項2に記載の発明は、複数の請求項1に記載のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムであって、データベース管理装置は、結合対象のテーブルおよび結合において検索キーとなるカラムの識別情報を示した結合指示の入力を受け付け、結合対象のテーブルを備えるデータベースそれぞれへ、結合指示を送信するマージ結合処理部と、データベース装置それぞれから送信された結合結果に示されるレコードを結合し、この結合したレコードを出力するレコード結合処理部とを備える構成とした。
【0014】
このようにすることで、請求項1に記載のデータベース装置を含むデータベース管理システムを実現できる。
【0015】
請求項3に記載の発明は、請求項2に記載のデータベース管理システムにおけるデータベース装置のレコード処理部が、他のデータベース装置への検索キー送信処理を行った後、当該他のデータベース装置から検索レコードを受信した旨の応答を受信したとき、応答を、データベース管理装置へ送信し、データベース管理装置は、結合対象のテーブルを備えるデータベース装置それぞれから、応答を受信したとき、当該データベース装置それぞれへレコード検索処理の開始指示を送信する同期処理部を備え、データベース装置のテーブル検索処理部は、データベース管理装置からレコード検索処理の開始指示を受信したとき、レコード検索処理を行うことを特徴とする。
【0016】
このようにすることで、片方のデータベース装置が検索レコードを送信してから、相手方のデータベース装置からの検索レコードを受信するまでの待ち時間をよりいっそう短縮することができる。よって、マージ結合を効率よく行い、マージ結合に要する時間を低減することができる。
【0017】
請求項5に記載の発明は、請求項4に記載のデータベース管理方法を、コンピュータであるデータベース装置に実行させるためのプログラムである。
【0018】
このようなプログラムによれば、請求項4に記載のデータベース管理方法を、一般的なコンピュータに実行させることができる。
【発明の効果】
【0019】
本発明によれば、複数のテーブルのマージ結合に要する時間を低減し、マージ結合を効率よく行うことができる。
【図面の簡単な説明】
【0020】
【図1】本実施の形態のデータベース管理システムの概要を説明した図である。
【図2】本実施の形態のデータベース管理システムの構成例を示した図である。
【図3】図2のデータベース管理システムの処理概要を示した図である。
【図4】図2のテーブル分割処理部の処理手順を示した図である。
【図5】比較例となる技術を説明した図である。
【図6】比較例となる技術を説明した図である。
【図7】図2のレコード処理部の処理手順を示した図である。
【図8】図2のレコード処理部の処理手順を示した図である。
【図9】図2のレコード処理部の処理手順を示した図である。
【図10】図2のレコード処理部の処理手順を示した図である。
【図11】図2のデータベース管理装置が、データベース装置の同期を行う手順を示した図である。
【図12】図2のデータベース管理装置が、データベース装置の同期を行う手順を示した図である。
【図13】図2のデータベース装置が、第1の処理グループの処理および第2の処理グループの処理を行うときの処理タイミングを概念的に示した図である。
【図14】図2のデータベース装置が、第1の処理グループの処理および第2の処理グループの処理を行うときの処理タイミングを概念的に示した図である。
【図15】データベース管理システムにおけるテーブルのマージ結合を概念的に説明した図である。
【発明を実施するための形態】
【0021】
<概要>
以下、本発明を実施するための形態(以下、実施の形態とする)について説明する。まず、本実施の形態のデータベース管理システムの概要を、図1を用いて説明する。
【0022】
図1に示すように、データベース管理システムは、データベース装置10(10A,10B)とデータベース管理装置20とを含んで構成される。データベース装置10は、複数のレコードからなるテーブルを記憶する。そして、データベース装置10(10A,10B)はそれぞれ互いに、相手方のデータベース装置10(10A,10B)から送信されてきた比較キーを用いて、自身のテーブル(分割テーブル131または分割テーブル132)を検索する。検索の結果、キー値が一致するレコードを発見すると、データベース装置10(10A,10B)は、そのキー値が一致するレコードを結合した結合結果をデータベース管理装置20へ送信する。データベース管理装置20は、このデータベース装置10から送信された結合結果を集約することで、データベース装置10(10A,10B)それぞれのテーブルのレコードのマージ結合結果を得る。これらの装置は、IP(Internet Protocol)網やLAN(Local Area Network)等のネットワークにより接続されるものとする。
【0023】
まず、データベース装置10(10A,10B)は、データベース管理装置20からテーブルの結合指示を受信する。この結合指示は、データベース装置10の、結合対象のテーブルの識別情報と、結合する際のキーとなるカラムのカラム名とを示した情報である。
【0024】
<テーブルの分割処理>
データベース装置10(10A,10B)はそれぞれ、このような結合指示を受信すると、この結合対象のテーブルのキーとなるカラムの値にハッシュ関数を利用して、テーブルを、第1の処理グループのテーブルと、第2の処理グループのテーブルとに分割する。以下の説明では、第1の処理グループのテーブルを、分割テーブル131(131A,131B)とする。また、第2の処理グループのテーブルを、分割テーブル132(132A,132B)とする。
【0025】
データベース装置10Aが分割テーブル131A,132Aを作成し、データベース装置10Bも分割テーブル131B,132Bを作成すると、データベース装置10(10A,10B)は、この分割テーブルに基づく検索レコードの送信およびレコード結合処理を開始する。なお、データベース装置10A,10Bそれぞれには、このデータベース装置10A,10Bが、データベース管理装置20からの結合指示を受信後、最初にどちらの分割テーブル(分割テーブル131,132)のレコードを読み出し、相手方のデータベース装置10へ検索レコードを送信するかが設定されているものとする。例えば、データベース装置10Aには、まず、分割テーブル131の検索レコードを相手方のデータベース装置10Bへ送信することが設定されているものとする。また、データベース装置10Bには、まず、分割テーブル132の検索レコードを相手のデータベース装置10Aへ送信することが、設定されているものとする。なお、この設定は、データベース管理装置20からの結合指示により設定されてもよい。
【0026】
<第1の処理グループの処理>
このような分割テーブル131,132の作成後、データベース装置10Aは、まず、分割テーブル131Aの1番目のレコードを読み出す。そして、読み出したレコードの所定のカラムの値を比較キー(例えば「32」)とした検索レコードを、データベース装置10Bへ送信する。データベース装置10Bは、このような検索レコードを受信すると、その検索レコードに含まれる比較キーの値(例えば「32」)と、自身の分割テーブル131Bにおけるキーとなるカラムの値とを照合して、この比較キーと一致する値を探す。そして、この比較キーと一致する値を発見すると、分割テーブル131Bにおける当該比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル131Aのレコードとを結合する。そして、その結合結果を、データベース管理装置20へ送信する。
【0027】
次に、データベース装置10Bは、分割テーブル131Bにおいて発見した値の次の値(例えば「63」)と、その値に対応するレコードとを読み出すと、これらを含む検索レコードをデータベース装置10Aへ送信する。そして、データベース装置10Aは、この比較キー(例えば「63」)を含む検索レコードを受信すると、分割テーブル131Aから、この比較キー(検索キー)と一致する値(同じ値)を探す。そして、前記したデータベース装置10Bの場合と同様に、この比較キーと一致する値を発見すると、分割テーブル131Aにおけるこの比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル131Bのレコードとを結合する。そして、その結合結果を、データベース管理装置20へ送信する。データベース装置10(10A,10B)は、このような処理を分割テーブル131(131A,131B)すべてのレコードの検索処理が終了するまで繰り返す。
【0028】
<第2の処理グループの処理>
また、データベース装置10(10A,10B)は、このような第1の処理グループの処理と並行して、第2の処理グループの処理も実行する。すなわち、データベース装置10Bは、前記したデータベース装置10Aの場合と同様に、分割テーブル131(131B)の1番目のレコードを読み出すと、このレコードの所定のカラムの値を比較キー(例えば「35」)とした検索レコードを、データベース装置10Aへ送信する。データベース装置10Aは、このような検索レコードを受信すると、その検索レコードに含まれる比較キーの値(例えば「35」)と、自身の分割テーブル132Aのキーとなるカラムの値とを照合して、この比較キーと一致する値を探す。そして、この比較キーと一致する値を発見すると、分割テーブル132Aにおける比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル132Bのレコードとを結合する。そして、その結合結果を、データベース管理装置20へ送信する。また、データベース装置10Aは、分割テーブル132Aにおいて発見した値(例えば「35」)の次の値(例えば「36」)と、その値に対応するレコードとを読み出すと、この次の値を比較キーとした検索レコードをデータベース装置10Bへ送信する。データベース装置10(10A,10B)は、このような処理を分割テーブル132(132A,132B)すべてのレコードの検索処理が終了するまで繰り返す。
【0029】
このようにデータベース装置10(10A,10B)が、自身のテーブルを分割し、その分割したテーブル(分割テーブル131,132)それぞれについてレコード検索、レコード結合を並行して行う。よって、データベース管理システムがマージ結合に要する時間を低減し、マージ結合を効率よく行うことができる。例えば、後記する図13に示すように、データベース装置10Aが第1の処理グループの処理実行後、検索レコードを送信した後すぐに、データベース装置10B側からの第2の処理グループの検索レコードを受信することになるので、すぐに第2の処理グループの処理にとりかかることができる。よって、データベース管理システムは、データベース装置10(10A,10B)のテーブルのマージ結合を効率よく行うことができる。
【0030】
<構成>
次に、図2を用いて、このようなデータベース管理システムの構成を説明する。前記したとおり、データベース管理システムは、データベース装置10(10A,10B)と、データベース管理装置20とを含んで構成される。
【0031】
<データベース管理装置>
データベース管理装置20は、入出力部21と、マージ結合処理部221と、レコード結合処理部222と、同期処理部223と、通信部23とを備える。
【0032】
入出力部21は、キーボードやマウス等の入力装置30からマージ結合の対象となるテーブルの識別情報や、結合の際キーとなるカラムの識別情報等を示した結合指示の入力を受け付ける。そして、その入力された結合指示を、マージ結合処理部221へ出力する。また、この入出力部21は、レコード結合処理部222から出力された結合結果を、液晶モニタ等の出力装置40へ出力する。
【0033】
マージ結合処理部221は、入出力部21経由で入力された結合指示を、通信部23経由で、結合対象となるテーブルを備えるデータベース装置10(10A,10B)へ送信する。なお、このマージ結合処理部221は、この結合指示をデータベース装置10(10A,10B)へ送信する前に、データベース装置10(10A,10B)の初期化処理を行うものとする。
【0034】
レコード結合処理部222は、通信部23経由で、データベース装置10(10A,10B)それぞれから結合結果(データベース装置10(10A,10B)それぞれで等結合済みのレコード)を集約したテーブルを作成する。作成したテーブル(結合結果テーブル)は、入出力部21経由で、出力装置40へ出力する。
【0035】
同期処理部223は、データベース装置10(10A,10B)それぞれにおける第1の処理グループおよび第2の処理グループの処理の開始タイミングの同期を取る。具体的には、データベース装置10(10A,10B)は、相手方のデータベース装置10への検索レコードを送信した後、その相手方のデータベース装置10から、その検索レコードを確かに受信した旨の応答を受信する。そして、この応答をデータベース管理装置20へ送信する。同期処理部223は、通信部23経由で、このデータベース装置10(10A,10B)それぞれから応答を受信すると、このデータベース装置10(10A,10B)それぞれへ、当該データベース装置10(10A,10B)において受信した検索レコードによるレコード検索処理の開始指示を送信する。
【0036】
通信部23は、このデータベース管理装置20がデータベース装置10(10A,10B)と各種データの送受信を行うための通信インタフェースである。
【0037】
入出力部21は、入出力インタフェースから構成される。また、マージ結合処理部221、レコード結合処理部222、同期処理部223は、このデータベース管理装置20が備えるCPUによるプログラム実行処理や、専用回路等により実現される。なお、図2において記載を省略しているが、このデータベース管理装置20は、記憶部を備え、その記憶部には、入力装置30から入力された結合指示や、各データベース装置10(10A,10B)のアドレス、各データベース装置10(10A,10B)から送信された結合結果、その結合結果を集約したテーブル等を記憶する。この記憶部は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、データベース管理装置20をプログラム実行処理により実現する場合、記憶部には、このデータベース管理装置20の機能を実現するためのプログラムが格納される。
【0038】
<データベース装置>
次に、データベース装置10を説明する。データベース装置10は、レコード処理部121と、レコード通信処理部122と、テーブル検索処理部123と、テーブル分割処理部124と、通信部14とを備える。また、このデータベース装置10は、記憶部(図示省略)の所定領域に、テーブル130を記憶する。この記憶部は、テーブル130の分割後は、分割テーブル131,132を記憶する。通信部14は、このデータベース装置10が他の装置(データベース装置10やデータベース管理装置20)とのデータ送受信を行う際に用いる通信インタフェースであり、複数の通信ポートを備える。
【0039】
入出力部11は、このデータベース装置10への各種設定情報の入力等を受け付ける。
【0040】
レコード通信処理部122は、通信部14経由で、データベース管理装置20および他のデータベース装置10とのデータの送受信を行う。具体的には、レコード通信処理部122は、通信部14経由で、レコードの結合結果をデータベース管理装置20へ送信したり、相手方のデータベース装置10へ、検索レコードを送信したり、この相手方のデータベース装置10からの検索レコードを受信したりする。なお、前記した記憶部には、第1の処理グループに関する検索レコード(分割テーブル131の検索レコード)の送受信に用いる通信ポートのポート番号と、第2の処理グループに関する検索レコード(分割テーブル132の検索レコード)の送受信に用いる通信ポートのポート番号とが予め記憶されている。そして、レコード通信処理部122は、第1の処理グループに関する検索レコードの送受信は、この検索レコードの送受信用の通信ポートを用いる。また、第2の処理グループに関する検索レコードの送受信は、この検索レコードの送受信用の通信ポートを用いるものとする。
【0041】
レコード処理部121は、分割テーブル(第1の分割テーブル)131または分割テーブル(第2の分割テーブル)132のレコードを読み出す。そして、この読み出したレコードと、そのレコードにおける比較キーとなる値とを示した検索レコードを、レコード通信処理部121経由で相手方のデータベース装置10へ送信する。また、レコード処理部121は、他のデータベース装置から受信した検索レコードと、このテーブル検索処理部123がこの検索レコードを用いて検索したレコードとを結合する。そして、その結合結果を、レコード通信処理部122経由でデータベース管理装置20へ送信する。さらに、レコード処理部121は、このようなレコードの結合処理を行った後、分割テーブル131または分割テーブル132の次のレコードを読み出す。そして、相手方のデータベース装置10へ、この読み出したレコードを含む検索レコードの送信処理を行う。また、このレコード処理部121は、レコード通信処理部122経由で、相手方のデータベース装置10から検索レコードを受信したとき、この検索レコードを確かに受信した旨の応答を、レコード通信処理部122経由で、この検索レコードの送信元のデータベース装置10へ返す。また、レコード処理部121は、データベース管理装置20からレコード検索処理の開始指示を受信したとき、レコード検索処理を行う。
【0042】
テーブル検索処理部123は、レコード通信処理部122経由で、相手方のデータベース装置10からの検索レコードを受信したとき、この検索レコードの受信に用いた通信ポートのポート番号から、検索対象となる分割テーブルが、分割テーブル131か分割テーブル132かを判断する。そして、テーブル検索処理部123は、この判断した分割テーブルにおける結合対象のカラムの値を参照して、検索レコードに示される比較キーと同じ値を探す。テーブル検索処理部123は、分割テーブルから比較キーと同じ値を発見すると、この値に対応するレコードを読み出す。読み出したレコードは、レコード処理部121へ出力し、このレコード処理部121によりレコードの結合処理が行われる。
【0043】
テーブル分割処理部124は、レコード処理部121経由でデータベース管理装置20から結合指示(結合対象のテーブルと、結合において比較キーとするカラムの識別情報を示した情報)を受信したとき、結合対象のテーブル130のレコードにおける、比較キーとなるカラムの値を読み込む。そして、その読み込んだ値それぞれにハッシュ関数を適用してハッシュ値を計算する。次に、テーブル分割処理部124は、この計算したハッシュ値を2で割った余剰数が0であるか否かを判断する。そして、このハッシュ値を2で割った余剰数が0となった比較キーの値に対応するレコードを、第1の処理グループのレコードと判断し、このレコードを示した分割テーブル131に保存する。一方、ハッシュ値を2で割った余剰数が0でない比較キーの値に対応するレコードを分割テーブル132に保存する。テーブル分割処理部124が、このようにハッシュ関数を用いてテーブル130のレコードを2つの分割テーブルのレコードに分割することで、テーブル130のレコードをほぼ均等に分割できる。また、データベース装置10(10A,10B)のテーブル130で同じキー値に対応するレコード同士を、同じ処理グループの分割テーブルに属するように分割できる。例えば、データベース装置10Aにおいてキー値「35」は、第1の処理グループの分割テーブル131Aに存在するが、同じキー値「35」がデータベース装置10Bにおいて第1の処理グループの分割テーブル131Bに存在しない、という事態を避けることができる。
【0044】
また、テーブル分割処理部124は、分割対象となるテーブル130において、ハッシュ値を計算したいカラムの値が数値以外(例えば、文字、記号等)であったとき、何らかの方法でこれをいったん数値に置き換え、その置き換えた値にハッシュ関数を適用してハッシュ値を計算する。
【0045】
テーブル130は、複数のカラムの値からなるレコードを示したテーブルである。このテーブル130は、比較キーとなるカラムの値をキーとして、例えば、昇順(または降順)にソートされているものとする。また、分割テーブル131,132は、テーブル130のレコードを、ハッシュ関数を用いて分割したものである(図1参照)。このテーブル130および分割テーブル131,132は、このデータベース装置10の記憶部(図示省略)の所定領域に記憶される。
【0046】
入出力部11は、入出力インタフェースから構成される。また、レコード処理部121、レコード通信処理部122、テーブル検索処理部123、テーブル分割処理部124は、データベース装置10の備えるCPUによるプログラム実行処理や、専用回路等により実現される。なお、図2において記載を省略しているが、このデータベース装置10は、記憶部を備え、その記憶部に、テーブル130、分割テーブル131,132、データベース管理装置20から送信された結合指示や、データベース管理装置20へ送信する結合結果等を記憶する。この記憶部は、RAM、ROM、HDD、フラッシュメモリ等の記憶媒体から構成される。なお、データベース装置10をプログラム実行処理により実現する場合、記憶部には、このデータベース装置10の機能を実現するためのプログラムが格納される。
【0047】
<処理手順>
次に、図2を参照しつつ、図3を用いて、データベース管理システムの処理の概要を説明する。図2のデータベース装置10Aのレコード処理部121Aは、通信部14A経由でデータベース管理装置20からの結合指示を受信すると、第1の処理グループについてテーブル分割処理部124Aの処理を開始する。また、データベース装置10Bのレコード処理部121Bも、通信部14B経由でデータベース管理装置20からの結合指示を受信すると、第2の処理グループについてテーブル分割処理部124Bの処理を開始する(S310)。つまり、データベース装置10Aのテーブル分割処理部124Aは、テーブル130Aを分割して、分割テーブル131A,132A(図1参照)を生成する。また、データベース装置10Bのテーブル分割処理部124も、テーブル130Bを分割して、分割テーブル131B,132Bを生成する(図1参照)。ここでのテーブル分割処理の詳細は、図4を用いて後記する。
【0048】
次に、データベース装置10(10A,10B)は、第1の処理グループのカウンタi1とj1を初期化し、第2の処理グループのカウンタi2とj2を初期化する(S315)。つまり、データベース装置10Aは、カウンタi1(分割テーブル131Aのカウンタ)とi2(分割テーブル132Aのカウンタ)を初期化し、それぞれ「1」とする。また、データベース装置10Bはカウンタj1(分割テーブル131Bのカウンタ)とj2(分割テーブル132Bのカウンタ)を初期化し、それぞれ「1」とする。なお、このカウンタi1,j1,i2,j2は分割テーブル131,132の処理を行うときにポインタに用いる値である。
【0049】
次に、データベース装置10Aのレコード処理部121Aは、第1の処理グループに関し、分割テーブル131Aの1番目のレコードを、データベース装置10Bへ送信する。つまり、分割テーブル131Aの1番目のレコードの比較キーとなるカラムの値を含む検索レコードをデータベース装置10Bへ送信する。また、データベース装置10Bのレコード処理部121Bは、第2の処理グループに関し、分割テーブル132Bの1番目のレコードをデータベース装置10Aへ送信する。つまり、分割テーブル132Bの1番目のレコードの比較キーとなるカラムの値を含む検索レコードをデータベース装置10Aへ送信する(S320)。
【0050】
次に、データベース管理装置20の同期処理部223は、データベース装置10(10A,10B)の第1の処理グループおよび第2の処理グループの同期を行う(S322)。具体的には、データベース装置10(10A,10B)はそれぞれ、S320の処理実行後、検索レコードの送信先である相手方のデータベース装置10から、この検索レコードを確かに受け取った旨の応答を受信すると、この応答をデータベース管理装置20へ送信する。データベース管理装置20は、データベース装置10A,10Bの双方からこの応答を受信すると、同期処理部223は、通信部23経由で、データベース装置10(10A,10B)に対し、受信した検索レコードに基づくレコード検索処理の開始指示を送信する。
【0051】
このような開始指示を受信したデータベース装置10Bは、第1の処理グループに関し、レコード処理部121Bの処理を開始し、データベース装置10Aは第2の処理グループに関し、レコード処理部121Aの処理を開始する(S325)。このS325の処理の詳細は後記する。
【0052】
次に、データベース管理装置20の同期処理部223は、前記したS322と同様に、データベース装置10(10A,10B)の第1の処理グループおよび第2の処理グループの同期を行う(S326)。
【0053】
そして、このような開始指示を受信したデータベース装置10Aは、第1の処理グループに関し、レコード処理部121Aの処理を開始し、データベース装置10Bは、第2の処理グループに関し、レコード処理部121Bの処理を開始する(S335)。このS335の処理の詳細は後記する。
【0054】
そして、まだ分割テーブル131,132の比較キーとなるカラムの値すべてについて検索処理を実行していなければ、S322へ戻る。一方、分割テーブル131,132の比較キーとなるカラムの値すべてについて検索処理を実行済みとなれば処理を終了する。
【0055】
以上のような処理を、データベース装置10(10A,10B)の分割テーブル131,132の比較キーとなるカラムの値すべてについて実行することで、データベース管理装置20は分割テーブル131A,131Bの結合結果、および、分割テーブル132A,132Bの結合結果を得ることができる。そして、データベース管理装置20は、これらの結合結果を集約することで、データベース装置10(10A,10B)のテーブル130A,130B全体のマージ結合の結果を得ることができる。また、データベース管理装置20が、データベース装置10(10A,10B)の第1の処理グループの処理と第2の処理グループの処理の同期をとることで、マージ結合を効率よく行うことができる。
【0056】
次に、図2を参照しつつ、図4を用いて、データベース装置10のテーブル分割処理部124の処理手順を説明する。まず、テーブル分割処理部124は、カウンタiを初期化し、i=1とする(S404)。そして、テーブル130のi番目(最初は1番目)のレコードを読み込む(S405)。
【0057】
次に、テーブル分割処理部124は、このテーブル130の分割条件のカラムの値からハッシュ値を計算する(S410)。なお、ここでの分割条件のカラムとは、データベース管理装置20から受信した結合指示に示されるカラム名のカラムである。
【0058】
次に、テーブル分割処理部124は、この計算したハッシュ値を2で割り算を行い、余剰(余剰値)を取得する(S415)。ここで、余剰が0であれば(S416のYes)、第1の処理グループの分割テーブル(分割テーブル131)にi番目のレコードを保存する(S425)。そして、S431へ進む。一方、この計算したハッシュ値を2で割り算を行ったときの余剰が0でなければ(S416のNo)、第2の処理グループの分割テーブル(分割テーブル132)のi番目にレコードを保存する(S430)。そして、S431へ進む。そして、iがN(Nは、テーブル130のレコード数)未満であれば(S431のYes)、テーブル分割処理部124は、iの値をイクリメントして(S440)、S405へ戻る。一方、i=Nであれば(S431のNo)、テーブル分割処理部124の処理を終了する。
【0059】
このようにテーブル130にハッシュ関数を適用し、テーブル130のレコードを2つの分割テーブル(分割テーブル131と分割テーブル132)に分割するので、分割テーブル131,132の間でレコード数の偏りが発生しない。また、テーブル130で比較キーとして用いるカラムの値が、それぞれ別の処理グループに属することがなくなる。
【0060】
このことを、図5、図6を用いて説明する。例えば、図5に示すように、データベース装置10(10A,10B)がそれぞれ、分割テーブル131,132の数(レコード数)が等しくなるにように分割してしまうと、分割によって等結合されないレコードが発生する可能性がある。つまり、同じキー値が、異なる処理グループの分割テーブルに保存されてしまう場合もあるので、等結合されないレコードが発生するおそれがある。例えば、キー値「35」が、分割テーブル131Aと分割テーブル132Bにあると、このキー値「35」に対応するレコードを等結合することはできない。
【0061】
また、図6に示すように、所定のキー値を区切り目として分割した場合、それぞれの分割テーブル131,132におけるキー値に対応するレコードを等結合することはできるが、分割テーブル131,132の間でレコード数に偏りが発生するおそれがある。例えば、キー値「35」で分割すると、分割テーブル131(131A,131B)のレコード数と、分割テーブル132(132A,132B)のレコード数とに偏りが発生する。よって、図2のテーブル検索処理部123(123A,123B)が、分割テーブル131,132の検索処理を行うと処理時間に偏りが生じ、片方のデータベース装置10のテーブル検索処理部123の待ち時間が長くなる。よって、データベース管理システムは、マージ結合を効率的に行うことができなくなる。
【0062】
一方、前記したとおり、本実施の形態のデータベース装置10(10A,10B)のように、テーブル130のキー値となるカラムの値のハッシュ値を計算し、この計算したハッシュ値が2で割り切れるか否かによりテーブル分割を行うことで、分割テーブル131と、分割テーブル132との間でレコード数の偏りが発生しない。また、同じキー値が、異なる処理グループの分割テーブルに保存されてしまうことがなくなる。
【0063】
次に、図1を参照しつつ、図7〜図10を用いて、図2のレコード処理部121の処理手順を説明する。ここでは、データベース装置10のレコード処理部121が、相手方のデータベース装置10からの検索レコードを受信した場合の処理手順を説明する。
【0064】
データベース装置10のレコード処理部121が処理を開始すると、相手方のデータベース装置10からの検索レコードの受信があるまで待機する(図7のS505)。そして、レコード処理部121が検索レコードを受信すると、この受信したデータに終了フラグが含まれるか否かを判断する(S506)。ここで、終了フラグが含まれるときは(S506のYes)は、処理を終了する。なお、この終了フラグを含むデータを受信したときには、レコード処理部121は、その旨をデータベース管理装置20へ通知してもよい。このようにすることで、データベース管理装置20は、データベース装置10(10A,10B)における検索処理が終了したことを知ることができる。一方、終了フラグが含まれない場合(S506のNo)、この検索レコードを受信した旨の応答を、相手方のデータベース装置10へ送信する(S507)。これにより、データベース装置10は、相手方のデータベース装置10からの検索レコードが到達したことを、相手方のデータベース装置10へ通知することができる。
【0065】
次に、レコード処理部121は、この検索レコードを受信した通信ポートのポート番号から、処理対象となる分割テーブルを特定する(S508)。つまり、処理対象となる分割テーブルが、分割テーブル131か、分割テーブル132かを特定する。そして、レコード処理部121は、テーブル検索処理部123により、S508で特定した分割テーブルから、j1(i2)番目のレコードを検索する(S510)。ここで、S508で特定した分割テーブルに、j1(i2)番目のレコードが存在しなければ(S511のNo)、図8のS540へ進む。S540については後記する。
【0066】
一方、S511において、分割テーブルに、j1(i2)番目のレコードが存在すれば(S511のYes)、テーブル検索処理部123は、カウンタj1(i2)を進め、j1(i2)をインクリメントする(S515)。ここで、S508で特定した分割テーブルから検索したレコードのキー値が、受信した検索レコードの比較キーの値よりも小さければ(S516のYes)、S510へ戻る。一方、この分割テーブルから検索したレコードのキー値が、受信した検索レコードの比較キーの値と等しいとき(図7のS516のNo→図8のS517のYes)、S510で検索したレコードと、受信したレコード(検索レコード)とを結合し、レコード通信処理部122に出力する(図8のS520)。
【0067】
例えば、図2のデータベース装置10Bのレコード処理部121Bが、データベース装置10Aから、キー値「32」を含む検索レコードを受信すると(図1参照)、この検索レコードの受信に用いた通信ポートのポート番号から、この検索レコードが、第1の処理グループに関するレコードであると判断する。よって、レコード処理部121Bは処理対象となる分割テーブルとして、分割テーブル131Bを特定する。そして、テーブル検索処理部123Bは、特定した分割テーブル131Bにおける比較キーとなるカラムの値を1つ1つ照合し、キー値「32」を持つレコードを探す。ここで、分割テーブル131Bの比較キーとなるカラムの値に、キー値「32」を発見すると、レコード通信処理部122Bは、このキー値「32」に対応するレコードと、データベース装置10Aから受信した検索レコードとを結合する。そして、レコード処理部121Bは、その結合結果をレコード通信処理部122Bへ出力する。そして、このような結合結果を出力されたレコード通信処理部122Bは、通信部14B経由で、この結合結果を、データベース管理装置20へ送信する。
【0068】
図8の説明に戻る。図8のS520に続く、S525において、テーブル検索処理部123は、図7のS508で特定した分割テーブルから、j1(j2)番目のレコードを検索し(S525)、j1(j2)番目のレコードが存在すれば(S526のYes)、カウンタj1(i2)を進め、j1(i2)をイクリメントする(S530)。つまり、ポインタを分割テーブルの次のレコードに移す。このようにすることで、相手方のデータベース装置10からの検索レコードを受信したとき、テーブル検索処理部123は、分割テーブルにおける検索したレコードの次のレコードをスタートとして検索処理を行うことができる。
【0069】
そして、テーブル検索処理部123は、S525で検索したレコードをレコード通信処理部122へ出力する(S535)。つまり、レコード通信処理部122は、通信部14経由で、S525で検索したレコードを含む検索レコードを相手方のデータベース装置10へ送信する。そして、レコード処理部121の処理を終了する。
【0070】
なお、S517において、テーブル検索処理部123が、S510で検索したレコードのキー値が、相手方のデータベース装置10から受信した検索レコードの比較キーの値と等しくないと判断したとき(S517のNo)、テーブル検索処理部123は、S510で検索したレコードをレコード通信処理部122へ出力する(S535)。そして、レコード通信処理部122は、通信部14経由で、S510で検索したレコードを含む検索レコードを相手方のデータベース装置10へ送信し、レコード処理部121の処理を終了する。
【0071】
一方、S526において分割テーブルにj1(j2)番目のレコードが存在しなければ(S526のNo)、レコード処理部121は、終了フラグをレコード通信処理部122に出力し、このレコード通信処理部122経由で、終了フラグを相手方のデータベース装置10へ送信する(S540)。そして、処理を終了する。
【0072】
例えば、図2のデータベース装置10Bのテーブル検索処理部123Bは、相手方のデータベース装置10Aから比較キー「32」を受信し、分割テーブル131Bの値と順次照合していったが、この比較キー「32」よりも小さい値しかなかった場合、レコード通信処理部122経由で、相手方のデータベース装置10Aへ終了フラグを送信する。このような終了フラグを受信したデータベース装置10Aは、データベース装置10Bにはもはや比較キー「32」よりも小さい値しかなく、処理を終了すべきことを知ることができる。
【0073】
次に、図1、図2、図7および図8を参照しつつ、図9および図10を用いて、データベース装置10のレコード処理部121が、相手方のデータベース装置10へ検索レコードを送信した後、その相手方のデータベース装置10側からの検索レコードを受信した場合の処理手順を説明する。
【0074】
図9のS605〜S607の処理内容は、図7のS506〜S507の処理内容と同じなので説明を省略し、S630から説明する。S607の後、図2のテーブル検索処理部123は、カウンタi1(j2)を進め、i1(j2)をインクリメントする(S630)。このようにすることで、相手方のデータベース装置10からの検索レコードを受信したとき、テーブル検索処理部123は、分割テーブルのレコードのうち、検索レコードを送信した次のレコードをスタートとして検索処理ができる。
【0075】
例えば、図2のデータベース装置10Aのレコード処理部121Aが、分割テーブル131Aから読み出したキー値「32」のレコードを含む検索レコードの送信した後(図1参照)、分割テーブル132Aのカウンタをインクリメントする。このようにすることで、相手方のデータベース装置10Bからの検索レコード受信したとき、テーブル検索処理部123Bは、分割テーブル131Aの「32」の次の値(「51」)をスタートとして検索処理ができる。
【0076】
図9のS635〜S641の処理内容は、図7のS510〜S516の処理内容と同じであり、また、図10のS642〜S670の処理内容は、図8のS517〜S540の処理内容と同じであるので説明を省略する。但し、図10に示すフローでは、分割テーブルにi1(j2)番目のレコードが存在する場合に(S656のYes)、図8のS530で行ったようなカウンタj1(i2)のインクリメントは行わない点が異なる。これは、図9および図10に示すフローの場合、相手方のデータベース装置10からの検索レコードを受信したときに、カウンタのインクリメントを行っておくので(S640)、S656でNoだった場合のカウンタのインクリメントを行う必要はないからである。
【0077】
次に、図2を参照しつつ、図11および図12を用いて、データベース管理装置20が、データベース装置10(10A,10B)の同期を取る処理を説明する。
【0078】
図2のデータベース管理装置20の同期処理部223は、データベース装置10(10A,10B)に対して、分割処理を指示する(S301)。ここでの分割処理の指示は、前記した結合指示に含めて送信してよい。
【0079】
これを受けてデータベース装置10Aは、テーブル分割処理部124Aの処理を開始し(S310A)、テーブル分割処理部124Aは、テーブル130Aを分割して、分割テーブル131A,132Aを生成する。そして、テーブル分割処理部124Aは、カウンタi1,i2を初期化し、カウンタをi1=1,i2=1とする(S315A)。そして、データベース装置10Aは、第1の処理グループに関する処理を開始する。すなわち、レコード通信処理部122A経由で、分割テーブル131Aの1番目のレコード(検索レコード)をデータベース装置10Bに送信する(S320A)。そして、レコード処理部121Aは、データベース装置10Bから、この検索レコードを確かに受信した旨の応答を受信すると(S321A)、この応答をデータベース管理装置20へ送信する(S322A)。
【0080】
また、データベース装置10Bも、テーブル分割処理部124Bの処理を開始し(S310B)、テーブル分割処理部124Bは、テーブル130Bを分割して、分割テーブル131B,132Bを生成する。そして、テーブル分割処理部124Bは、カウンタj1,j2を初期化し、カウンタをj1=1,j2=1とする(S315B)。そして、データベース装置10Bは、第2の処理グループに関する処理を開始する。すなわち、レコード通信処理部122B経由で、分割テーブル131Bの1番目のレコードをデータベース装置10Aに送信する(S320B)。レコード処理部121Bは、データベース装置10Aから、この検索レコードを確かに受信した旨の応答を受信すると(S321B)、この応答をデータベース管理装置20へ送信する(S322B)。
【0081】
図12の説明に移る。このような応答の受信により、データベース管理装置20の同期処理部223が、データベース装置10(10A,10B)において第1の処理グループの検索レコードと第2の処理グループの検索レコードとが受信されたことを確認する。そして、同期処理部223は、データベース装置10(10A,10B)それぞれにおける第1の処理グループと第2の処理グループとの同期を行う(S323)。すなわち、同期処理部223は、通信部23経由でデータベース装置10(10A,10B)それぞれに対し、レコード処理部121(121A,121B)の開始指示を送信する。
【0082】
このような開始指示を受信したデータベース装置10Aは、第2の処理グループの処理を開始する(S325A)。つまり、レコード処理部121Aは、図11のS320Bでデータベース装置10Bから送信されたレコード(検索レコード)のキー値に一致するレコードを、分割テーブル132Aから検索する。そして、その検索結果から得られた分割テーブル132Aのi2番目のレコードを、検索レコードとして、データベース装置10Bへ送信する。そして、レコード処理部121Aは、データベース装置10Bから、この検索レコードを受信した旨の応答を受信すると(S326A)、この応答をデータベース管理装置20へ送信する(S327A)。
【0083】
また、データベース管理装置20からの開始指示を受信したデータベース装置10Bは、第1の処理グループの処理を開始する(S325B)。つまり、レコード処理部121Bは、図11のS320Aでデータベース装置10Aから送信されたレコード(検索レコード)のキー値に一致するレコードを、分割テーブル132Bから検索する。そして、その検索結果から得られた分割テーブル132Bのj1番目のレコードを、検索レコードとして、データベース装置10Aへ送信する。そして、データベース装置10Aから、この検索レコードを受信した旨の応答を受信すると(S326B)、この応答をデータベース管理装置20へ送信する(S327B)。
【0084】
このような応答の受信により、データベース管理装置20の同期処理部223は、データベース装置10(10A,10B)において第1の処理グループの検索レコードと第2の処理グループの検索レコードとが受信されたことが確認する。そして、同期処理部223は、データベース装置10(10A,10B)それぞれにおける第1の処理グループと第2の処理グループとの同期を行う(S326)。すなわち、同期処理部223は、通信部23経由でデータベース装置10(10A,10B)それぞれに対し、レコード処理部121(121A,121B)の開始指示を送信する。
【0085】
そして、このような開始指示を受信したデータベース装置10Aは、第1の処理グループの処理を開始し(S335A)、また、開始指示を受信したデータベース装置10Bは、第2の処理グループの処理を開始する(S335B)。
【0086】
データベース管理システムは、このような処理をどちらか一方のデータベース装置10が処理を終了するまで繰り返し実行する。
【0087】
このようなデータベース管理装置20によれば、データベース装置10(10A,10B)それぞれの検索処理後、相手方のデータベース装置10(10A,10B)への検索レコードの送信が完了したことを確認すると、データベース装置10(10A,10B)に各処理グループの処理を開始させる。つまり、データベース管理装置20がデータベース装置10(10A,10B)それぞれの各処理グループの処理の開始タイミングをほぼ同時にすることができるので、データベース装置10(10A,10B)が、第1の処理グループの処理実行後、第2の処理グループの処理を開始するまでの待ち時間、および、第2の処理グループの処理実行後、第1の処理グループの処理を開始するまでの待ち時間をできるだけ短くすることができる。
【0088】
つまり、第1の処理グループの処理の開始タイミングと、第2の処理グループの処理の開始タイミングが異なる場合に比べて(図14参照)、図13に示すように第1の処理グループの処理の開始タイミングと、第2の処理グループの処理の開始タイミングとが同じ方が、データベース装置10(10A,10B)が処理を行っていない時間(待ち時間)を短くできるので、分割テーブル131および分割テーブル132のマージ結合を効率よく行うことができる。
【0089】
なお、前記した実施の形態において、マージ結合の対象となるテーブル130A,130Bは同じデータベース装置10に記憶されるテーブルであってもよい。また、データベース管理システムは、2つのテーブルをマージ結合する場合を例に説明したが、データベースのインデックスを等結合する場合に適用してもよい。
【0090】
なお、データベース管理装置20は、データベース装置10(10A,10B)の処理開始の同期をとらないようにしてもよい。例えば、前記した図14に示すように、データベース装置10(10A,10B)それぞれが各処理グループの処理の開始タイミングを同じにしなくても、データベース装置10(10A,10B)の待ち時間は、従来に比べた短縮することができる。例えば、図14に示した例でいうと、データベース装置10Aからデータベース装置10Bへ第1の処理グループの検索レコードを送信した後、データベース装置10Bから第1の処理グループに関する検索レコードを受信するまでの間に、データベース装置10Bから第2の処理グループの検索レコードを受信し、この検索レコードに関する処理を開始できるようにすれば、データベース装置10Aにおける処理の待ち時間は従来に比べて短くなる。よって、データベース装置10(10A,10B)のテーブル130(130A,130B)のマージ結合に要する時間を短縮することができる。
【0091】
また、データベース装置10(10A,10B)がテーブル130(130A,130B)を分割するときの条件となる分割条件は、データベース装置10の入出力部11経由で入力してもよい。
【符号の説明】
【0092】
10 データベース装置
11,21 入出力部
14,23 通信部
20 データベース管理装置
30 入力装置
40 出力装置
121 レコード処理部
122 レコード通信処理部
123 テーブル検索処理部
124 テーブル分割処理部
130 テーブル
131,132 分割テーブル
221 マージ結合処理部
222 レコード結合処理部
223 同期処理部

【特許請求の範囲】
【請求項1】
複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムにおける前記データベース装置であって、
複数のレコードからなる前記テーブルと、このテーブルを分割したテーブルである第1の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第2の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部と、
前記通信ポート経由で、前記データベース管理装置および他のデータベース装置とのデータ送受信を行うレコード通信処理部と、
前記レコード通信処理部経由で、前記データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信したとき、前記結合対象のテーブルのレコードにおける、前記検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算し、(1)この計算したハッシュ値を2で割った余剰数が0である値のレコードを示した前記第1の分割テーブルを作成し、(2)前記計算したハッシュ値を2で割った余剰数が0でない値のレコードを示した前記第2の分割テーブルを作成し、前記作成した第1の分割テーブルおよび第2の分割テーブルを前記記憶部に記憶するテーブル分割処理部と、
前記第1の分割テーブルまたは第2の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、前記第1の分割テーブルまたは第2の分割テーブルに対応する通信ポート経由で前記レコード通信処理部により、前記結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信処理を行うレコード処理部と、
前記レコード通信処理部により、前記他のデータベース装置からの検索レコードを受信したとき、前記検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第1の分割テーブルか第2の分割テーブルかを特定し、この特定した分割テーブルにおける前記検索キーとなるカラムの値を参照して、前記分割テーブルにおいて前記検索キーに示される値に対応するレコードを検索するレコード検索処理を行うテーブル検索処理部とを備え、
前記レコード処理部は、前記テーブル検索処理部により検索されたレコードと、前記他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、前記レコード通信処理部経由で前記データベース管理装置へ送信し、前記特定した分割テーブルにおける、前記結合処理を行った次のレコードを読み出し、この読み出したレコードについて前記検索レコード送信処理を行うことを特徴とするデータベース装置。
【請求項2】
複数の請求項1に記載のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムであって、
前記データベース管理装置は、
前記結合対象のテーブルおよび結合において検索キーとなるカラムの識別情報を示した結合指示の入力を受け付け、前記結合対象のテーブルを備える前記データベースそれぞれへ、前記結合指示を送信するマージ結合処理部と、
前記データベース装置それぞれから送信された結合結果に示されるレコードを結合し、この結合したレコードを出力するレコード結合処理部とを備えることを特徴とするデータベース管理システム。
【請求項3】
前記データベース装置のレコード処理部は、前記他のデータベース装置への検索キー送信処理を行った後、当該他のデータベース装置から前記検索レコードを受信した旨の応答を受信したとき、前記応答を、前記データベース管理装置へ送信し、
前記データベース管理装置は、前記結合対象のテーブルを備えるデータベース装置それぞれから、前記応答を受信したとき、当該データベース装置それぞれへレコード検索処理の開始指示を送信する同期処理部を備え、
前記データベース装置のテーブル検索処理部は、前記データベース管理装置から前記レコード検索処理の開始指示を受信したとき、前記レコード検索処理を行うことを特徴とする請求項2に記載のデータベース管理システム。
【請求項4】
複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムに用いられ、複数のレコードからなる前記テーブルと、このテーブルを分割したテーブルである第1の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第2の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部を備える前記データベース装置が、
前記データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信するステップと、
前記結合対象のテーブルのレコードにおける、前記検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算するステップと、
(1)この計算したハッシュ値を2で割った余剰数が0である値のレコードを示した前記第1の分割テーブルを作成し、(2)前記計算したハッシュ値を2で割った余剰数が0でない値のレコードを示した前記第2の分割テーブルを作成し、前記作成した第1の分割テーブルおよび第2の分割テーブルを前記記憶部に記憶するステップと、
前記第1の分割テーブルまたは第2の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、前記第1の分割テーブルまたは第2の分割テーブルに対応する通信ポート経由で前記結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信ステップと、
前記他のデータベース装置からの検索レコードを受信するステップと、
前記検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第1の分割テーブルか第2の分割テーブルかを特定し、この特定した分割テーブルにおける前記検索キーとなるカラムの値を参照して、前記特定した分割テーブルにおいて前記検索キーに示される値に対応するレコードを検索するステップと、
前記検索されたレコードと、前記他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、前記データベース管理装置へ送信するステップと、
前記特定した分割テーブルにおける、前記検索キーに示される値の次のレコードを読み出し、この読み出したレコードについて前記検索レコード送信ステップとを行うことを特徴とするデータベース管理方法。
【請求項5】
請求項4に記載のデータベース管理方法を、コンピュータであるデータベース装置に実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate