(57)【要約】【課題】２つのテーブルのレコードのマージ結合を効率よく行う。【解決手段】データベース装置１０（１０Ａ，１０Ｂ）はそれぞれ、結合対象となるテーブルを、ハッシュ関数を用いて２つの処理グループのテーブル（分割テーブル１３１，１３２）に分割する。そして、データベース装置１０Ａは、分割テーブル１３１Ａの検索レコードをデータベース装置１０Ｂへ送信する。データベース装置１０Ｂは、受信した検索レコードを用いて自身の分割テーブル分割１３１Ｂの検索処理を行い、結合結果をデータベース管理装置２０へ送信する。また、これに平行して、データベース装置１０Ｂも、分割テーブル１３２Ｂの検索レコードをデータベース装置１０Ａへ送信する。データベース装置１０Ａは、受信した検索レコードを用いて自身の分割テーブル分割１３２Ａの検索処理を行い、結合結果をデータベース管理装置２０へ送信する。【選択図】図１
2010224963.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムにおける前記データベース装置であって、
複数のレコードからなる前記テーブルと、このテーブルを分割したテーブルである第１の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第２の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部と、
前記通信ポート経由で、前記データベース管理装置および他のデータベース装置とのデータ送受信を行うレコード通信処理部と、
前記レコード通信処理部経由で、前記データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信したとき、前記結合対象のテーブルのレコードにおける、前記検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算し、（１）この計算したハッシュ値を２で割った余剰数が０である値のレコードを示した前記第１の分割テーブルを作成し、（２）前記計算したハッシュ値を２で割った余剰数が０でない値のレコードを示した前記第２の分割テーブルを作成し、前記作成した第１の分割テーブルおよび第２の分割テーブルを前記記憶部に記憶するテーブル分割処理部と、
前記第１の分割テーブルまたは第２の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、前記第１の分割テーブルまたは第２の分割テーブルに対応する通信ポート経由で前記レコード通信処理部により、前記結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信処理を行うレコード処理部と、
前記レコード通信処理部により、前記他のデータベース装置からの検索レコードを受信したとき、前記検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第１の分割テーブルか第２の分割テーブルかを特定し、この特定した分割テーブルにおける前記検索キーとなるカラムの値を参照して、前記分割テーブルにおいて前記検索キーに示される値に対応するレコードを検索するレコード検索処理を行うテーブル検索処理部とを備え、
前記レコード処理部は、前記テーブル検索処理部により検索されたレコードと、前記他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、前記レコード通信処理部経由で前記データベース管理装置へ送信し、前記特定した分割テーブルにおける、前記結合処理を行った次のレコードを読み出し、この読み出したレコードについて前記検索レコード送信処理を行うことを特徴とするデータベース装置。
【請求項２】
複数の請求項１に記載のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムであって、
前記データベース管理装置は、
前記結合対象のテーブルおよび結合において検索キーとなるカラムの識別情報を示した結合指示の入力を受け付け、前記結合対象のテーブルを備える前記データベースそれぞれへ、前記結合指示を送信するマージ結合処理部と、
前記データベース装置それぞれから送信された結合結果に示されるレコードを結合し、この結合したレコードを出力するレコード結合処理部とを備えることを特徴とするデータベース管理システム。
【請求項３】
前記データベース装置のレコード処理部は、前記他のデータベース装置への検索キー送信処理を行った後、当該他のデータベース装置から前記検索レコードを受信した旨の応答を受信したとき、前記応答を、前記データベース管理装置へ送信し、
前記データベース管理装置は、前記結合対象のテーブルを備えるデータベース装置それぞれから、前記応答を受信したとき、当該データベース装置それぞれへレコード検索処理の開始指示を送信する同期処理部を備え、
前記データベース装置のテーブル検索処理部は、前記データベース管理装置から前記レコード検索処理の開始指示を受信したとき、前記レコード検索処理を行うことを特徴とする請求項２に記載のデータベース管理システム。
【請求項４】
複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムに用いられ、複数のレコードからなる前記テーブルと、このテーブルを分割したテーブルである第１の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第２の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部を備える前記データベース装置が、
前記データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信するステップと、
前記結合対象のテーブルのレコードにおける、前記検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算するステップと、
（１）この計算したハッシュ値を２で割った余剰数が０である値のレコードを示した前記第１の分割テーブルを作成し、（２）前記計算したハッシュ値を２で割った余剰数が０でない値のレコードを示した前記第２の分割テーブルを作成し、前記作成した第１の分割テーブルおよび第２の分割テーブルを前記記憶部に記憶するステップと、
前記第１の分割テーブルまたは第２の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、前記第１の分割テーブルまたは第２の分割テーブルに対応する通信ポート経由で前記結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信ステップと、
前記他のデータベース装置からの検索レコードを受信するステップと、
前記検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第１の分割テーブルか第２の分割テーブルかを特定し、この特定した分割テーブルにおける前記検索キーとなるカラムの値を参照して、前記特定した分割テーブルにおいて前記検索キーに示される値に対応するレコードを検索するステップと、
前記検索されたレコードと、前記他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、前記データベース管理装置へ送信するステップと、
前記特定した分割テーブルにおける、前記検索キーに示される値の次のレコードを読み出し、この読み出したレコードについて前記検索レコード送信ステップとを行うことを特徴とするデータベース管理方法。
【請求項５】
請求項４に記載のデータベース管理方法を、コンピュータであるデータベース装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
テーブルのレコードのマージ結合技術に関する。
【背景技術】
【０００２】
従来から、複数のテーブルのレコードを結合する手法は多くあるが、ディスク装置におけるテーブルの結合やネットワーク経由でのレコードの結合等、結合処理自体に時間がかる場合には、マージ結合が広く利用される（非特許文献１参照）。このマージ結合は、２つのテーブルのレコードを、結合するフィールドについてあらかじめソートしておき、この２つのテーブルのレコードに対して持たせたポインタを、レコードの上から下へと順に走査させて値が一致するものを探し、その値が一致するレコード同士を結合するものである。
【０００３】
図１５は、データベース管理システムにおけるテーブルのレコードのマージ結合を概念的に説明した図である。ここでは、マシンＪが、マシンＡのテーブルＡのレコードと、マシンＢのテーブルＢのレコードとをマージ結合する場合を例に説明する。ここでは、既にテーブルＡ，Ｂのレコードは昇順にソートされているものとする。なお、図１５のテーブルＡ，Ｂは、マージ結合のキーとなるカラムの値のみを示しているが、このカラム以外のカラムの値も含むものとする。
【０００４】
図１５のマシンＪは、例えば、マシンＡ，Ｂにマージ結合のキーとなるカラム名を含む結合指示を送信する。これを受信したマシンＡは、テーブルＡにおける１番目のレコードのうち、当該カラム名のデータ（例えば、「３２」）を比較キーとして、マシンＢへ送信する。なお、図示を省略しているが、マシンＡは比較キーとともに、テーブルＡにおける１番目のレコードも送信する。マシンＢは、マシンＡから、この比較キーを含むレコードを受信すると、テーブルＢにおける当該カラム名のカラムから、受信した比較キーと同じ値を探す。そして、マシンＢは、テーブルＢから、この比較キーと一致する値（例えば、「３２」）を発見すると、マシンＡから送信されたレコードと、テーブルＢにおけるこの比較キーに対応するレコードとを結合する。この結合したレコードはマシンＪへ送信する。また、マシンＢは、テーブルＢの当該カラムの値のうち、受信した比較キーの次の値（例えば、「３９」）のレコードを、マシンＡへ送信する。
【０００５】
そして、マシンＡは、マシンＢからレコードを受信すると、このレコードから比較キー（例えば、「３９」）を読み出し、前記したマシンＢと同様に、テーブルＡにおける当該カラム名のカラムから、この比較キーと一致する値を探す。なお、図１５に示すように、テーブルＡに比較キー（例えば、「３９」）と一致する値がなければ、マシンＡは、テーブルＢにおける、この比較キーの次の値（例えば、「９８」）のレコードを送信する。
【０００６】
そして、マシンＡは、マシンＢからのレコードを受信すると、このレコードから比較キー（例えば、「９８」）を読み出し、テーブルＡにおける当該カラム名のカラムから、この比較キー（例えば、「９８」）と同じ値を探す。マシンＡ，Ｂが以上のような処理を繰り返すことで、マシンＪは、マシンＡ，ＢからテーブルＡ，Ｂそれぞれの結合結果を受信する。そして、マシンＪは、この結合結果を集約することでテーブルＡ，Ｂのマージ結合結果を得ることができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】北川  博之、昭晃堂、「データベースシステム」、1996年
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、前記した技術により２つのテーブルのマージ結合を行う場合、相手方のマシン（例えば、図１５のマシンＢ）へ比較キーを含むレコードを送信したマシン（例えば、図１５のマシンＡ）は、この相手方のマシンから次の比較キーを含むレコードを受信するまで、処理を一時的に中断しなければならない。例えば、図１５のマシンＡは、比較キー「３２」を含むレコードを送信した後、マシンＢから、次の比較キー（例えば、「３９」）を含むレコードを受信するまで、自身のテーブルに関する処理を一時的に中断しなければならない。よって、結合対象のテーブルを記憶するコンピュータがそれぞれ、転送速度の遅いネットワークにより接続され、比較キーを含むレコードの送受信に時間がかかる場合や、その結合対象のテーブルのレコード数が多く検索処理に時間がかかる場合等は、マージ結合に要する時間が長くなるという問題があった。また、このように、片方のマシンが、他方のマシンから、次の比較キーを含むレコードを受信するまで、処理を一時的に中断することは、このマシンの持つリソース（ＣＰＵ（Central Processing Unit）等の能力）を有効活用できていないことになり、マージ結合を行うときの効率は必ずしもよくない。
【０００９】
そこで、本発明は、前記した問題を解決し、複数のテーブルのマージ結合に要する時間低減し、マージ結合を効率よく行うことを目的とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、請求項１に記載の発明は、複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムにおけるデータベース装置であって、複数のレコードからなるテーブルと、このテーブルを分割したテーブルである第１の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第２の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部と、通信ポート経由で、データベース管理装置および他のデータベース装置とのデータ送受信を行うレコード通信処理部と、レコード通信処理部経由で、データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信したとき、結合対象のテーブルのレコードにおける、検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算し、（１）この計算したハッシュ値を２で割った余剰数が０である値のレコードを示した第１の分割テーブルを作成し、（２）計算したハッシュ値を２で割った余剰数が０でない値のレコードを示した第２の分割テーブルを作成し、作成した第１の分割テーブルおよび第２の分割テーブルを記憶部に記憶するテーブル分割処理部と、第１の分割テーブルまたは第２の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、第１の分割テーブルまたは第２の分割テーブルに対応する通信ポート経由でレコード通信処理部により、結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信処理を行うレコード処理部と、レコード通信処理部により、他のデータベース装置からの検索レコードを受信したとき、検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第１の分割テーブルか第２の分割テーブルかを特定し、この特定した分割テーブルにおける検索キーとなるカラムの値を参照して、分割テーブルにおいて検索キーに示される値に対応するレコードを検索するレコード検索処理を行うテーブル検索処理部とを備え、レコード処理部は、テーブル検索処理部により検索されたレコードと、他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、レコード通信処理部経由でデータベース管理装置へ送信し、特定した分割テーブルにおける、結合処理を行った次のレコードを読み出し、この読み出したレコードについて検索レコード送信処理を行う構成とした。
【００１１】
請求項４に記載の発明は、複数のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムに用いられ、複数のレコードからなるテーブルと、このテーブルを分割したテーブルである第１の分割テーブルのデータの送受信に用いる通信ポートの識別情報および第２の分割テーブルのデータの送受信に用いる通信ポートの識別情報とを記憶する記憶部を備えるデータベース装置が、データベース管理装置から結合対象のテーブルおよび結合において検索キーとするカラムの識別情報を示した結合指示を受信するステップと、結合対象のテーブルのレコードにおける、検索キーとするカラムの値を読み込み、その読み込んだ値のハッシュ値を計算するステップと、（１）この計算したハッシュ値を２で割った余剰数が０である値のレコードを示した第１の分割テーブルを作成し、（２）計算したハッシュ値を２で割った余剰数が０でない値のレコードを示した第２の分割テーブルを作成し、作成した第１の分割テーブルおよび第２の分割テーブルを記憶部に記憶するステップと、第１の分割テーブルまたは第２の分割テーブルのレコードを読み出し、この読み出したレコードと、そのレコードにおける検索キーとなる値とを示した検索レコードを、第１の分割テーブルまたは第２の分割テーブルに対応する通信ポート経由で結合対象のテーブルを備える他のデータベース装置へ送信する検索レコード送信ステップと、他のデータベース装置からの検索レコードを受信するステップと、検索レコードの受信に用いた通信ポートの識別情報から、検索対象となる分割テーブルが第１の分割テーブルか第２の分割テーブルかを特定し、この特定した分割テーブルにおける検索キーとなるカラムの値を参照して、特定した分割テーブルにおいて検索キーに示される値に対応するレコードを検索するステップと、検索されたレコードと、他のデータベース装置から受信した検索レコードに示されるレコードとを結合し、その結合結果を、データベース管理装置へ送信するステップと、特定した分割テーブルにおける、検索キーに示される値の次のレコードを読み出し、この読み出したレコードについて検索レコード送信ステップとを行うことを特徴とするデータベース管理方法とした。
【００１２】
このようにすることで、データベース管理システムにおける各データベース装置は、マージ結合の対象であるテーブルを２つのテーブルに分割する。そして、その両方のデータベース装置が互いにレコード検索処理を行い、相手方のデータベース装置（他のデータベース装置）へ検索レコードを送信しあう。このようにすることで、データベース装置は、相手方のデータベース装置へ検索レコードを送信してから、そのデータベース装置からの検索キーを受信するまでの間に、相手方のデータベース装置から送信された検索レコードに基づく検索処理を実行することになる。つまり、データベース装置は、相手方のデータベース装置へ検索レコードを送信してから、そのデータベース装置からの検索キーを受信するまでの待ち時間を利用して、自身の分割テーブルのレコードの検索処理を実行するので、マージ結合を効率よく行い、マージ結合に要する時間を低減することができる。また、データベース装置は、テーブルを分割するとき、結合対象のカラムのハッシュ値を計算し、そのハッシュ値を２で割ったときの余剰が０か否かで、どちらの分割テーブルに割り振るか決定する。ハッシュ値は入力値からの返却値の分布が一様になるという特徴を持つ。よって、データベース装置それぞれの第１の分割テーブルのレコード数と、第２の分割テーブルのレコード数とをほぼ均等にすることができる。これにより、データベース装置それぞれの処理時間もほぼ均等になるので、片方のデータベース装置の待ち時間が長くなることにより、マージ結合が効率的に行えないという事態を避けることができる。また、ハッシュ値は入力値からの返却値が一意に定まるので、片方のデータベース装置の第１の分割テーブルにある検索キー値が、相手方のデータベース装置において、第２の分割テーブルにあるということがなくなる。つまり、同じキー値のレコードが、自身のデータベース装置には第１の分割テーブルに保存され、相手方のデータベース装置には第２の分割テーブルに保存されてしまい、このキー値のレコードを等結合できないという事態を避けることができる。
【００１３】
請求項２に記載の発明は、複数の請求項１に記載のデータベース装置と、そのデータベース装置それぞれの備えるテーブルのレコードをマージ結合するデータベース管理装置とを備えるデータベース管理システムであって、データベース管理装置は、結合対象のテーブルおよび結合において検索キーとなるカラムの識別情報を示した結合指示の入力を受け付け、結合対象のテーブルを備えるデータベースそれぞれへ、結合指示を送信するマージ結合処理部と、データベース装置それぞれから送信された結合結果に示されるレコードを結合し、この結合したレコードを出力するレコード結合処理部とを備える構成とした。
【００１４】
このようにすることで、請求項１に記載のデータベース装置を含むデータベース管理システムを実現できる。
【００１５】
請求項３に記載の発明は、請求項２に記載のデータベース管理システムにおけるデータベース装置のレコード処理部が、他のデータベース装置への検索キー送信処理を行った後、当該他のデータベース装置から検索レコードを受信した旨の応答を受信したとき、応答を、データベース管理装置へ送信し、データベース管理装置は、結合対象のテーブルを備えるデータベース装置それぞれから、応答を受信したとき、当該データベース装置それぞれへレコード検索処理の開始指示を送信する同期処理部を備え、データベース装置のテーブル検索処理部は、データベース管理装置からレコード検索処理の開始指示を受信したとき、レコード検索処理を行うことを特徴とする。
【００１６】
このようにすることで、片方のデータベース装置が検索レコードを送信してから、相手方のデータベース装置からの検索レコードを受信するまでの待ち時間をよりいっそう短縮することができる。よって、マージ結合を効率よく行い、マージ結合に要する時間を低減することができる。
【００１７】
請求項５に記載の発明は、請求項４に記載のデータベース管理方法を、コンピュータであるデータベース装置に実行させるためのプログラムである。
【００１８】
このようなプログラムによれば、請求項４に記載のデータベース管理方法を、一般的なコンピュータに実行させることができる。
【発明の効果】
【００１９】
本発明によれば、複数のテーブルのマージ結合に要する時間を低減し、マージ結合を効率よく行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態のデータベース管理システムの概要を説明した図である。
【図２】本実施の形態のデータベース管理システムの構成例を示した図である。
【図３】図２のデータベース管理システムの処理概要を示した図である。
【図４】図２のテーブル分割処理部の処理手順を示した図である。
【図５】比較例となる技術を説明した図である。
【図６】比較例となる技術を説明した図である。
【図７】図２のレコード処理部の処理手順を示した図である。
【図８】図２のレコード処理部の処理手順を示した図である。
【図９】図２のレコード処理部の処理手順を示した図である。
【図１０】図２のレコード処理部の処理手順を示した図である。
【図１１】図２のデータベース管理装置が、データベース装置の同期を行う手順を示した図である。
【図１２】図２のデータベース管理装置が、データベース装置の同期を行う手順を示した図である。
【図１３】図２のデータベース装置が、第１の処理グループの処理および第２の処理グループの処理を行うときの処理タイミングを概念的に示した図である。
【図１４】図２のデータベース装置が、第１の処理グループの処理および第２の処理グループの処理を行うときの処理タイミングを概念的に示した図である。
【図１５】データベース管理システムにおけるテーブルのマージ結合を概念的に説明した図である。
【発明を実施するための形態】
【００２１】
＜概要＞
以下、本発明を実施するための形態（以下、実施の形態とする）について説明する。まず、本実施の形態のデータベース管理システムの概要を、図１を用いて説明する。
【００２２】
図１に示すように、データベース管理システムは、データベース装置１０（１０Ａ，１０Ｂ）とデータベース管理装置２０とを含んで構成される。データベース装置１０は、複数のレコードからなるテーブルを記憶する。そして、データベース装置１０（１０Ａ，１０Ｂ）はそれぞれ互いに、相手方のデータベース装置１０（１０Ａ，１０Ｂ）から送信されてきた比較キーを用いて、自身のテーブル（分割テーブル１３１または分割テーブル１３２）を検索する。検索の結果、キー値が一致するレコードを発見すると、データベース装置１０（１０Ａ，１０Ｂ）は、そのキー値が一致するレコードを結合した結合結果をデータベース管理装置２０へ送信する。データベース管理装置２０は、このデータベース装置１０から送信された結合結果を集約することで、データベース装置１０（１０Ａ，１０Ｂ）それぞれのテーブルのレコードのマージ結合結果を得る。これらの装置は、ＩＰ（Internet Protocol）網やＬＡＮ（Local Area Network）等のネットワークにより接続されるものとする。
【００２３】
まず、データベース装置１０（１０Ａ，１０Ｂ）は、データベース管理装置２０からテーブルの結合指示を受信する。この結合指示は、データベース装置１０の、結合対象のテーブルの識別情報と、結合する際のキーとなるカラムのカラム名とを示した情報である。
【００２４】
＜テーブルの分割処理＞
データベース装置１０（１０Ａ，１０Ｂ）はそれぞれ、このような結合指示を受信すると、この結合対象のテーブルのキーとなるカラムの値にハッシュ関数を利用して、テーブルを、第１の処理グループのテーブルと、第２の処理グループのテーブルとに分割する。以下の説明では、第１の処理グループのテーブルを、分割テーブル１３１（１３１Ａ，１３１Ｂ）とする。また、第２の処理グループのテーブルを、分割テーブル１３２（１３２Ａ，１３２Ｂ）とする。
【００２５】
データベース装置１０Ａが分割テーブル１３１Ａ，１３２Ａを作成し、データベース装置１０Ｂも分割テーブル１３１Ｂ，１３２Ｂを作成すると、データベース装置１０（１０Ａ，１０Ｂ）は、この分割テーブルに基づく検索レコードの送信およびレコード結合処理を開始する。なお、データベース装置１０Ａ，１０Ｂそれぞれには、このデータベース装置１０Ａ，１０Ｂが、データベース管理装置２０からの結合指示を受信後、最初にどちらの分割テーブル（分割テーブル１３１，１３２）のレコードを読み出し、相手方のデータベース装置１０へ検索レコードを送信するかが設定されているものとする。例えば、データベース装置１０Ａには、まず、分割テーブル１３１の検索レコードを相手方のデータベース装置１０Ｂへ送信することが設定されているものとする。また、データベース装置１０Ｂには、まず、分割テーブル１３２の検索レコードを相手のデータベース装置１０Ａへ送信することが、設定されているものとする。なお、この設定は、データベース管理装置２０からの結合指示により設定されてもよい。
【００２６】
＜第１の処理グループの処理＞
このような分割テーブル１３１，１３２の作成後、データベース装置１０Ａは、まず、分割テーブル１３１Ａの１番目のレコードを読み出す。そして、読み出したレコードの所定のカラムの値を比較キー（例えば「３２」）とした検索レコードを、データベース装置１０Ｂへ送信する。データベース装置１０Ｂは、このような検索レコードを受信すると、その検索レコードに含まれる比較キーの値（例えば「３２」）と、自身の分割テーブル１３１Ｂにおけるキーとなるカラムの値とを照合して、この比較キーと一致する値を探す。そして、この比較キーと一致する値を発見すると、分割テーブル１３１Ｂにおける当該比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル１３１Ａのレコードとを結合する。そして、その結合結果を、データベース管理装置２０へ送信する。
【００２７】
次に、データベース装置１０Ｂは、分割テーブル１３１Ｂにおいて発見した値の次の値（例えば「６３」）と、その値に対応するレコードとを読み出すと、これらを含む検索レコードをデータベース装置１０Ａへ送信する。そして、データベース装置１０Ａは、この比較キー（例えば「６３」）を含む検索レコードを受信すると、分割テーブル１３１Ａから、この比較キー（検索キー）と一致する値（同じ値）を探す。そして、前記したデータベース装置１０Ｂの場合と同様に、この比較キーと一致する値を発見すると、分割テーブル１３１Ａにおけるこの比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル１３１Ｂのレコードとを結合する。そして、その結合結果を、データベース管理装置２０へ送信する。データベース装置１０（１０Ａ，１０Ｂ）は、このような処理を分割テーブル１３１（１３１Ａ，１３１Ｂ）すべてのレコードの検索処理が終了するまで繰り返す。
【００２８】
＜第２の処理グループの処理＞
また、データベース装置１０（１０Ａ，１０Ｂ）は、このような第１の処理グループの処理と並行して、第２の処理グループの処理も実行する。すなわち、データベース装置１０Ｂは、前記したデータベース装置１０Ａの場合と同様に、分割テーブル１３１（１３１Ｂ）の１番目のレコードを読み出すと、このレコードの所定のカラムの値を比較キー（例えば「３５」）とした検索レコードを、データベース装置１０Ａへ送信する。データベース装置１０Ａは、このような検索レコードを受信すると、その検索レコードに含まれる比較キーの値（例えば「３５」）と、自身の分割テーブル１３２Ａのキーとなるカラムの値とを照合して、この比較キーと一致する値を探す。そして、この比較キーと一致する値を発見すると、分割テーブル１３２Ａにおける比較キーの値に対応するレコードと、受信した検索レコードに含まれる分割テーブル１３２Ｂのレコードとを結合する。そして、その結合結果を、データベース管理装置２０へ送信する。また、データベース装置１０Ａは、分割テーブル１３２Ａにおいて発見した値（例えば「３５」）の次の値（例えば「３６」）と、その値に対応するレコードとを読み出すと、この次の値を比較キーとした検索レコードをデータベース装置１０Ｂへ送信する。データベース装置１０（１０Ａ，１０Ｂ）は、このような処理を分割テーブル１３２（１３２Ａ，１３２Ｂ）すべてのレコードの検索処理が終了するまで繰り返す。
【００２９】
このようにデータベース装置１０（１０Ａ，１０Ｂ）が、自身のテーブルを分割し、その分割したテーブル（分割テーブル１３１，１３２）それぞれについてレコード検索、レコード結合を並行して行う。よって、データベース管理システムがマージ結合に要する時間を低減し、マージ結合を効率よく行うことができる。例えば、後記する図１３に示すように、データベース装置１０Ａが第１の処理グループの処理実行後、検索レコードを送信した後すぐに、データベース装置１０Ｂ側からの第２の処理グループの検索レコードを受信することになるので、すぐに第２の処理グループの処理にとりかかることができる。よって、データベース管理システムは、データベース装置１０（１０Ａ，１０Ｂ）のテーブルのマージ結合を効率よく行うことができる。
【００３０】
＜構成＞
次に、図２を用いて、このようなデータベース管理システムの構成を説明する。前記したとおり、データベース管理システムは、データベース装置１０（１０Ａ，１０Ｂ）と、データベース管理装置２０とを含んで構成される。
【００３１】
＜データベース管理装置＞
データベース管理装置２０は、入出力部２１と、マージ結合処理部２２１と、レコード結合処理部２２２と、同期処理部２２３と、通信部２３とを備える。
【００３２】
入出力部２１は、キーボードやマウス等の入力装置３０からマージ結合の対象となるテーブルの識別情報や、結合の際キーとなるカラムの識別情報等を示した結合指示の入力を受け付ける。そして、その入力された結合指示を、マージ結合処理部２２１へ出力する。また、この入出力部２１は、レコード結合処理部２２２から出力された結合結果を、液晶モニタ等の出力装置４０へ出力する。
【００３３】
マージ結合処理部２２１は、入出力部２１経由で入力された結合指示を、通信部２３経由で、結合対象となるテーブルを備えるデータベース装置１０（１０Ａ，１０Ｂ）へ送信する。なお、このマージ結合処理部２２１は、この結合指示をデータベース装置１０（１０Ａ，１０Ｂ）へ送信する前に、データベース装置１０（１０Ａ，１０Ｂ）の初期化処理を行うものとする。
【００３４】
レコード結合処理部２２２は、通信部２３経由で、データベース装置１０（１０Ａ，１０Ｂ）それぞれから結合結果（データベース装置１０（１０Ａ，１０Ｂ）それぞれで等結合済みのレコード）を集約したテーブルを作成する。作成したテーブル（結合結果テーブル）は、入出力部２１経由で、出力装置４０へ出力する。
【００３５】
同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）それぞれにおける第１の処理グループおよび第２の処理グループの処理の開始タイミングの同期を取る。具体的には、データベース装置１０（１０Ａ，１０Ｂ）は、相手方のデータベース装置１０への検索レコードを送信した後、その相手方のデータベース装置１０から、その検索レコードを確かに受信した旨の応答を受信する。そして、この応答をデータベース管理装置２０へ送信する。同期処理部２２３は、通信部２３経由で、このデータベース装置１０（１０Ａ，１０Ｂ）それぞれから応答を受信すると、このデータベース装置１０（１０Ａ，１０Ｂ）それぞれへ、当該データベース装置１０（１０Ａ，１０Ｂ）において受信した検索レコードによるレコード検索処理の開始指示を送信する。
【００３６】
通信部２３は、このデータベース管理装置２０がデータベース装置１０（１０Ａ，１０Ｂ）と各種データの送受信を行うための通信インタフェースである。
【００３７】
入出力部２１は、入出力インタフェースから構成される。また、マージ結合処理部２２１、レコード結合処理部２２２、同期処理部２２３は、このデータベース管理装置２０が備えるＣＰＵによるプログラム実行処理や、専用回路等により実現される。なお、図２において記載を省略しているが、このデータベース管理装置２０は、記憶部を備え、その記憶部には、入力装置３０から入力された結合指示や、各データベース装置１０（１０Ａ，１０Ｂ）のアドレス、各データベース装置１０（１０Ａ，１０Ｂ）から送信された結合結果、その結合結果を集約したテーブル等を記憶する。この記憶部は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、フラッシュメモリ等の記憶媒体から構成される。なお、データベース管理装置２０をプログラム実行処理により実現する場合、記憶部には、このデータベース管理装置２０の機能を実現するためのプログラムが格納される。
【００３８】
＜データベース装置＞
次に、データベース装置１０を説明する。データベース装置１０は、レコード処理部１２１と、レコード通信処理部１２２と、テーブル検索処理部１２３と、テーブル分割処理部１２４と、通信部１４とを備える。また、このデータベース装置１０は、記憶部（図示省略）の所定領域に、テーブル１３０を記憶する。この記憶部は、テーブル１３０の分割後は、分割テーブル１３１，１３２を記憶する。通信部１４は、このデータベース装置１０が他の装置（データベース装置１０やデータベース管理装置２０）とのデータ送受信を行う際に用いる通信インタフェースであり、複数の通信ポートを備える。
【００３９】
入出力部１１は、このデータベース装置１０への各種設定情報の入力等を受け付ける。
【００４０】
レコード通信処理部１２２は、通信部１４経由で、データベース管理装置２０および他のデータベース装置１０とのデータの送受信を行う。具体的には、レコード通信処理部１２２は、通信部１４経由で、レコードの結合結果をデータベース管理装置２０へ送信したり、相手方のデータベース装置１０へ、検索レコードを送信したり、この相手方のデータベース装置１０からの検索レコードを受信したりする。なお、前記した記憶部には、第１の処理グループに関する検索レコード（分割テーブル１３１の検索レコード）の送受信に用いる通信ポートのポート番号と、第２の処理グループに関する検索レコード（分割テーブル１３２の検索レコード）の送受信に用いる通信ポートのポート番号とが予め記憶されている。そして、レコード通信処理部１２２は、第１の処理グループに関する検索レコードの送受信は、この検索レコードの送受信用の通信ポートを用いる。また、第２の処理グループに関する検索レコードの送受信は、この検索レコードの送受信用の通信ポートを用いるものとする。
【００４１】
レコード処理部１２１は、分割テーブル（第１の分割テーブル）１３１または分割テーブル（第２の分割テーブル）１３２のレコードを読み出す。そして、この読み出したレコードと、そのレコードにおける比較キーとなる値とを示した検索レコードを、レコード通信処理部１２１経由で相手方のデータベース装置１０へ送信する。また、レコード処理部１２１は、他のデータベース装置から受信した検索レコードと、このテーブル検索処理部１２３がこの検索レコードを用いて検索したレコードとを結合する。そして、その結合結果を、レコード通信処理部１２２経由でデータベース管理装置２０へ送信する。さらに、レコード処理部１２１は、このようなレコードの結合処理を行った後、分割テーブル１３１または分割テーブル１３２の次のレコードを読み出す。そして、相手方のデータベース装置１０へ、この読み出したレコードを含む検索レコードの送信処理を行う。また、このレコード処理部１２１は、レコード通信処理部１２２経由で、相手方のデータベース装置１０から検索レコードを受信したとき、この検索レコードを確かに受信した旨の応答を、レコード通信処理部１２２経由で、この検索レコードの送信元のデータベース装置１０へ返す。また、レコード処理部１２１は、データベース管理装置２０からレコード検索処理の開始指示を受信したとき、レコード検索処理を行う。
【００４２】
テーブル検索処理部１２３は、レコード通信処理部１２２経由で、相手方のデータベース装置１０からの検索レコードを受信したとき、この検索レコードの受信に用いた通信ポートのポート番号から、検索対象となる分割テーブルが、分割テーブル１３１か分割テーブル１３２かを判断する。そして、テーブル検索処理部１２３は、この判断した分割テーブルにおける結合対象のカラムの値を参照して、検索レコードに示される比較キーと同じ値を探す。テーブル検索処理部１２３は、分割テーブルから比較キーと同じ値を発見すると、この値に対応するレコードを読み出す。読み出したレコードは、レコード処理部１２１へ出力し、このレコード処理部１２１によりレコードの結合処理が行われる。
【００４３】
テーブル分割処理部１２４は、レコード処理部１２１経由でデータベース管理装置２０から結合指示（結合対象のテーブルと、結合において比較キーとするカラムの識別情報を示した情報）を受信したとき、結合対象のテーブル１３０のレコードにおける、比較キーとなるカラムの値を読み込む。そして、その読み込んだ値それぞれにハッシュ関数を適用してハッシュ値を計算する。次に、テーブル分割処理部１２４は、この計算したハッシュ値を２で割った余剰数が０であるか否かを判断する。そして、このハッシュ値を２で割った余剰数が０となった比較キーの値に対応するレコードを、第１の処理グループのレコードと判断し、このレコードを示した分割テーブル１３１に保存する。一方、ハッシュ値を２で割った余剰数が０でない比較キーの値に対応するレコードを分割テーブル１３２に保存する。テーブル分割処理部１２４が、このようにハッシュ関数を用いてテーブル１３０のレコードを２つの分割テーブルのレコードに分割することで、テーブル１３０のレコードをほぼ均等に分割できる。また、データベース装置１０（１０Ａ，１０Ｂ）のテーブル１３０で同じキー値に対応するレコード同士を、同じ処理グループの分割テーブルに属するように分割できる。例えば、データベース装置１０Ａにおいてキー値「３５」は、第１の処理グループの分割テーブル１３１Ａに存在するが、同じキー値「３５」がデータベース装置１０Ｂにおいて第１の処理グループの分割テーブル１３１Ｂに存在しない、という事態を避けることができる。
【００４４】
また、テーブル分割処理部１２４は、分割対象となるテーブル１３０において、ハッシュ値を計算したいカラムの値が数値以外（例えば、文字、記号等）であったとき、何らかの方法でこれをいったん数値に置き換え、その置き換えた値にハッシュ関数を適用してハッシュ値を計算する。
【００４５】
テーブル１３０は、複数のカラムの値からなるレコードを示したテーブルである。このテーブル１３０は、比較キーとなるカラムの値をキーとして、例えば、昇順（または降順）にソートされているものとする。また、分割テーブル１３１，１３２は、テーブル１３０のレコードを、ハッシュ関数を用いて分割したものである（図１参照）。このテーブル１３０および分割テーブル１３１，１３２は、このデータベース装置１０の記憶部（図示省略）の所定領域に記憶される。
【００４６】
入出力部１１は、入出力インタフェースから構成される。また、レコード処理部１２１、レコード通信処理部１２２、テーブル検索処理部１２３、テーブル分割処理部１２４は、データベース装置１０の備えるＣＰＵによるプログラム実行処理や、専用回路等により実現される。なお、図２において記載を省略しているが、このデータベース装置１０は、記憶部を備え、その記憶部に、テーブル１３０、分割テーブル１３１，１３２、データベース管理装置２０から送信された結合指示や、データベース管理装置２０へ送信する結合結果等を記憶する。この記憶部は、ＲＡＭ、ＲＯＭ、ＨＤＤ、フラッシュメモリ等の記憶媒体から構成される。なお、データベース装置１０をプログラム実行処理により実現する場合、記憶部には、このデータベース装置１０の機能を実現するためのプログラムが格納される。
【００４７】
＜処理手順＞
次に、図２を参照しつつ、図３を用いて、データベース管理システムの処理の概要を説明する。図２のデータベース装置１０Ａのレコード処理部１２１Ａは、通信部１４Ａ経由でデータベース管理装置２０からの結合指示を受信すると、第１の処理グループについてテーブル分割処理部１２４Ａの処理を開始する。また、データベース装置１０Ｂのレコード処理部１２１Ｂも、通信部１４Ｂ経由でデータベース管理装置２０からの結合指示を受信すると、第２の処理グループについてテーブル分割処理部１２４Ｂの処理を開始する（Ｓ３１０）。つまり、データベース装置１０Ａのテーブル分割処理部１２４Ａは、テーブル１３０Ａを分割して、分割テーブル１３１Ａ，１３２Ａ（図１参照）を生成する。また、データベース装置１０Ｂのテーブル分割処理部１２４も、テーブル１３０Ｂを分割して、分割テーブル１３１Ｂ，１３２Ｂを生成する（図１参照）。ここでのテーブル分割処理の詳細は、図４を用いて後記する。
【００４８】
次に、データベース装置１０（１０Ａ，１０Ｂ）は、第１の処理グループのカウンタｉ１とｊ１を初期化し、第２の処理グループのカウンタｉ２とｊ２を初期化する（Ｓ３１５）。つまり、データベース装置１０Ａは、カウンタｉ１（分割テーブル１３１Ａのカウンタ）とｉ２（分割テーブル１３２Ａのカウンタ）を初期化し、それぞれ「１」とする。また、データベース装置１０Ｂはカウンタｊ１（分割テーブル１３１Ｂのカウンタ）とｊ２（分割テーブル１３２Ｂのカウンタ）を初期化し、それぞれ「１」とする。なお、このカウンタｉ１，ｊ１，ｉ２，ｊ２は分割テーブル１３１，１３２の処理を行うときにポインタに用いる値である。
【００４９】
次に、データベース装置１０Ａのレコード処理部１２１Ａは、第１の処理グループに関し、分割テーブル１３１Ａの１番目のレコードを、データベース装置１０Ｂへ送信する。つまり、分割テーブル１３１Ａの１番目のレコードの比較キーとなるカラムの値を含む検索レコードをデータベース装置１０Ｂへ送信する。また、データベース装置１０Ｂのレコード処理部１２１Ｂは、第２の処理グループに関し、分割テーブル１３２Ｂの１番目のレコードをデータベース装置１０Ａへ送信する。つまり、分割テーブル１３２Ｂの１番目のレコードの比較キーとなるカラムの値を含む検索レコードをデータベース装置１０Ａへ送信する（Ｓ３２０）。
【００５０】
次に、データベース管理装置２０の同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）の第１の処理グループおよび第２の処理グループの同期を行う（Ｓ３２２）。具体的には、データベース装置１０（１０Ａ，１０Ｂ）はそれぞれ、Ｓ３２０の処理実行後、検索レコードの送信先である相手方のデータベース装置１０から、この検索レコードを確かに受け取った旨の応答を受信すると、この応答をデータベース管理装置２０へ送信する。データベース管理装置２０は、データベース装置１０Ａ，１０Ｂの双方からこの応答を受信すると、同期処理部２２３は、通信部２３経由で、データベース装置１０（１０Ａ，１０Ｂ）に対し、受信した検索レコードに基づくレコード検索処理の開始指示を送信する。
【００５１】
このような開始指示を受信したデータベース装置１０Ｂは、第１の処理グループに関し、レコード処理部１２１Ｂの処理を開始し、データベース装置１０Ａは第２の処理グループに関し、レコード処理部１２１Ａの処理を開始する（Ｓ３２５）。このＳ３２５の処理の詳細は後記する。
【００５２】
次に、データベース管理装置２０の同期処理部２２３は、前記したＳ３２２と同様に、データベース装置１０（１０Ａ，１０Ｂ）の第１の処理グループおよび第２の処理グループの同期を行う（Ｓ３２６）。
【００５３】
そして、このような開始指示を受信したデータベース装置１０Ａは、第１の処理グループに関し、レコード処理部１２１Ａの処理を開始し、データベース装置１０Ｂは、第２の処理グループに関し、レコード処理部１２１Ｂの処理を開始する（Ｓ３３５）。このＳ３３５の処理の詳細は後記する。
【００５４】
そして、まだ分割テーブル１３１，１３２の比較キーとなるカラムの値すべてについて検索処理を実行していなければ、Ｓ３２２へ戻る。一方、分割テーブル１３１，１３２の比較キーとなるカラムの値すべてについて検索処理を実行済みとなれば処理を終了する。
【００５５】
以上のような処理を、データベース装置１０（１０Ａ，１０Ｂ）の分割テーブル１３１，１３２の比較キーとなるカラムの値すべてについて実行することで、データベース管理装置２０は分割テーブル１３１Ａ，１３１Ｂの結合結果、および、分割テーブル１３２Ａ，１３２Ｂの結合結果を得ることができる。そして、データベース管理装置２０は、これらの結合結果を集約することで、データベース装置１０（１０Ａ，１０Ｂ）のテーブル１３０Ａ，１３０Ｂ全体のマージ結合の結果を得ることができる。また、データベース管理装置２０が、データベース装置１０（１０Ａ，１０Ｂ）の第１の処理グループの処理と第２の処理グループの処理の同期をとることで、マージ結合を効率よく行うことができる。
【００５６】
次に、図２を参照しつつ、図４を用いて、データベース装置１０のテーブル分割処理部１２４の処理手順を説明する。まず、テーブル分割処理部１２４は、カウンタｉを初期化し、ｉ＝１とする（Ｓ４０４）。そして、テーブル１３０のｉ番目（最初は１番目）のレコードを読み込む（Ｓ４０５）。
【００５７】
次に、テーブル分割処理部１２４は、このテーブル１３０の分割条件のカラムの値からハッシュ値を計算する（Ｓ４１０）。なお、ここでの分割条件のカラムとは、データベース管理装置２０から受信した結合指示に示されるカラム名のカラムである。
【００５８】
次に、テーブル分割処理部１２４は、この計算したハッシュ値を２で割り算を行い、余剰（余剰値）を取得する（Ｓ４１５）。ここで、余剰が０であれば（Ｓ４１６のＹｅｓ）、第１の処理グループの分割テーブル（分割テーブル１３１）にｉ番目のレコードを保存する（Ｓ４２５）。そして、Ｓ４３１へ進む。一方、この計算したハッシュ値を２で割り算を行ったときの余剰が０でなければ（Ｓ４１６のＮｏ）、第２の処理グループの分割テーブル（分割テーブル１３２）のｉ番目にレコードを保存する（Ｓ４３０）。そして、Ｓ４３１へ進む。そして、ｉがＮ（Ｎは、テーブル１３０のレコード数）未満であれば（Ｓ４３１のＹｅｓ）、テーブル分割処理部１２４は、ｉの値をイクリメントして（Ｓ４４０）、Ｓ４０５へ戻る。一方、ｉ＝Ｎであれば（Ｓ４３１のＮｏ）、テーブル分割処理部１２４の処理を終了する。
【００５９】
このようにテーブル１３０にハッシュ関数を適用し、テーブル１３０のレコードを２つの分割テーブル（分割テーブル１３１と分割テーブル１３２）に分割するので、分割テーブル１３１，１３２の間でレコード数の偏りが発生しない。また、テーブル１３０で比較キーとして用いるカラムの値が、それぞれ別の処理グループに属することがなくなる。
【００６０】
このことを、図５、図６を用いて説明する。例えば、図５に示すように、データベース装置１０（１０Ａ，１０Ｂ）がそれぞれ、分割テーブル１３１，１３２の数（レコード数）が等しくなるにように分割してしまうと、分割によって等結合されないレコードが発生する可能性がある。つまり、同じキー値が、異なる処理グループの分割テーブルに保存されてしまう場合もあるので、等結合されないレコードが発生するおそれがある。例えば、キー値「３５」が、分割テーブル１３１Ａと分割テーブル１３２Ｂにあると、このキー値「３５」に対応するレコードを等結合することはできない。
【００６１】
また、図６に示すように、所定のキー値を区切り目として分割した場合、それぞれの分割テーブル１３１，１３２におけるキー値に対応するレコードを等結合することはできるが、分割テーブル１３１，１３２の間でレコード数に偏りが発生するおそれがある。例えば、キー値「３５」で分割すると、分割テーブル１３１（１３１Ａ，１３１Ｂ）のレコード数と、分割テーブル１３２（１３２Ａ，１３２Ｂ）のレコード数とに偏りが発生する。よって、図２のテーブル検索処理部１２３（１２３Ａ，１２３Ｂ）が、分割テーブル１３１，１３２の検索処理を行うと処理時間に偏りが生じ、片方のデータベース装置１０のテーブル検索処理部１２３の待ち時間が長くなる。よって、データベース管理システムは、マージ結合を効率的に行うことができなくなる。
【００６２】
一方、前記したとおり、本実施の形態のデータベース装置１０（１０Ａ，１０Ｂ）のように、テーブル１３０のキー値となるカラムの値のハッシュ値を計算し、この計算したハッシュ値が２で割り切れるか否かによりテーブル分割を行うことで、分割テーブル１３１と、分割テーブル１３２との間でレコード数の偏りが発生しない。また、同じキー値が、異なる処理グループの分割テーブルに保存されてしまうことがなくなる。
【００６３】
次に、図１を参照しつつ、図７〜図１０を用いて、図２のレコード処理部１２１の処理手順を説明する。ここでは、データベース装置１０のレコード処理部１２１が、相手方のデータベース装置１０からの検索レコードを受信した場合の処理手順を説明する。
【００６４】
データベース装置１０のレコード処理部１２１が処理を開始すると、相手方のデータベース装置１０からの検索レコードの受信があるまで待機する（図７のＳ５０５）。そして、レコード処理部１２１が検索レコードを受信すると、この受信したデータに終了フラグが含まれるか否かを判断する（Ｓ５０６）。ここで、終了フラグが含まれるときは（Ｓ５０６のＹｅｓ）は、処理を終了する。なお、この終了フラグを含むデータを受信したときには、レコード処理部１２１は、その旨をデータベース管理装置２０へ通知してもよい。このようにすることで、データベース管理装置２０は、データベース装置１０（１０Ａ，１０Ｂ）における検索処理が終了したことを知ることができる。一方、終了フラグが含まれない場合（Ｓ５０６のＮｏ）、この検索レコードを受信した旨の応答を、相手方のデータベース装置１０へ送信する（Ｓ５０７）。これにより、データベース装置１０は、相手方のデータベース装置１０からの検索レコードが到達したことを、相手方のデータベース装置１０へ通知することができる。
【００６５】
次に、レコード処理部１２１は、この検索レコードを受信した通信ポートのポート番号から、処理対象となる分割テーブルを特定する（Ｓ５０８）。つまり、処理対象となる分割テーブルが、分割テーブル１３１か、分割テーブル１３２かを特定する。そして、レコード処理部１２１は、テーブル検索処理部１２３により、Ｓ５０８で特定した分割テーブルから、ｊ１（ｉ２）番目のレコードを検索する（Ｓ５１０）。ここで、Ｓ５０８で特定した分割テーブルに、ｊ１（ｉ２）番目のレコードが存在しなければ（Ｓ５１１のＮｏ）、図８のＳ５４０へ進む。Ｓ５４０については後記する。
【００６６】
一方、Ｓ５１１において、分割テーブルに、ｊ１（ｉ２）番目のレコードが存在すれば（Ｓ５１１のＹｅｓ）、テーブル検索処理部１２３は、カウンタｊ１（ｉ２）を進め、ｊ１（ｉ２）をインクリメントする（Ｓ５１５）。ここで、Ｓ５０８で特定した分割テーブルから検索したレコードのキー値が、受信した検索レコードの比較キーの値よりも小さければ（Ｓ５１６のＹｅｓ）、Ｓ５１０へ戻る。一方、この分割テーブルから検索したレコードのキー値が、受信した検索レコードの比較キーの値と等しいとき（図７のＳ５１６のＮｏ→図８のＳ５１７のＹｅｓ）、Ｓ５１０で検索したレコードと、受信したレコード（検索レコード）とを結合し、レコード通信処理部１２２に出力する（図８のＳ５２０）。
【００６７】
例えば、図２のデータベース装置１０Ｂのレコード処理部１２１Ｂが、データベース装置１０Ａから、キー値「３２」を含む検索レコードを受信すると（図１参照）、この検索レコードの受信に用いた通信ポートのポート番号から、この検索レコードが、第１の処理グループに関するレコードであると判断する。よって、レコード処理部１２１Ｂは処理対象となる分割テーブルとして、分割テーブル１３１Ｂを特定する。そして、テーブル検索処理部１２３Ｂは、特定した分割テーブル１３１Ｂにおける比較キーとなるカラムの値を１つ１つ照合し、キー値「３２」を持つレコードを探す。ここで、分割テーブル１３１Ｂの比較キーとなるカラムの値に、キー値「３２」を発見すると、レコード通信処理部１２２Ｂは、このキー値「３２」に対応するレコードと、データベース装置１０Ａから受信した検索レコードとを結合する。そして、レコード処理部１２１Ｂは、その結合結果をレコード通信処理部１２２Ｂへ出力する。そして、このような結合結果を出力されたレコード通信処理部１２２Ｂは、通信部１４Ｂ経由で、この結合結果を、データベース管理装置２０へ送信する。
【００６８】
図８の説明に戻る。図８のＳ５２０に続く、Ｓ５２５において、テーブル検索処理部１２３は、図７のＳ５０８で特定した分割テーブルから、ｊ１（ｊ２）番目のレコードを検索し（Ｓ５２５）、ｊ１（ｊ２）番目のレコードが存在すれば（Ｓ５２６のＹｅｓ）、カウンタｊ１（ｉ２）を進め、ｊ１（ｉ２）をイクリメントする（Ｓ５３０）。つまり、ポインタを分割テーブルの次のレコードに移す。このようにすることで、相手方のデータベース装置１０からの検索レコードを受信したとき、テーブル検索処理部１２３は、分割テーブルにおける検索したレコードの次のレコードをスタートとして検索処理を行うことができる。
【００６９】
そして、テーブル検索処理部１２３は、Ｓ５２５で検索したレコードをレコード通信処理部１２２へ出力する（Ｓ５３５）。つまり、レコード通信処理部１２２は、通信部１４経由で、Ｓ５２５で検索したレコードを含む検索レコードを相手方のデータベース装置１０へ送信する。そして、レコード処理部１２１の処理を終了する。
【００７０】
なお、Ｓ５１７において、テーブル検索処理部１２３が、Ｓ５１０で検索したレコードのキー値が、相手方のデータベース装置１０から受信した検索レコードの比較キーの値と等しくないと判断したとき（Ｓ５１７のＮｏ）、テーブル検索処理部１２３は、Ｓ５１０で検索したレコードをレコード通信処理部１２２へ出力する（Ｓ５３５）。そして、レコード通信処理部１２２は、通信部１４経由で、Ｓ５１０で検索したレコードを含む検索レコードを相手方のデータベース装置１０へ送信し、レコード処理部１２１の処理を終了する。
【００７１】
一方、Ｓ５２６において分割テーブルにｊ１（ｊ２）番目のレコードが存在しなければ（Ｓ５２６のＮｏ）、レコード処理部１２１は、終了フラグをレコード通信処理部１２２に出力し、このレコード通信処理部１２２経由で、終了フラグを相手方のデータベース装置１０へ送信する（Ｓ５４０）。そして、処理を終了する。
【００７２】
例えば、図２のデータベース装置１０Ｂのテーブル検索処理部１２３Ｂは、相手方のデータベース装置１０Ａから比較キー「３２」を受信し、分割テーブル１３１Ｂの値と順次照合していったが、この比較キー「３２」よりも小さい値しかなかった場合、レコード通信処理部１２２経由で、相手方のデータベース装置１０Ａへ終了フラグを送信する。このような終了フラグを受信したデータベース装置１０Ａは、データベース装置１０Ｂにはもはや比較キー「３２」よりも小さい値しかなく、処理を終了すべきことを知ることができる。
【００７３】
次に、図１、図２、図７および図８を参照しつつ、図９および図１０を用いて、データベース装置１０のレコード処理部１２１が、相手方のデータベース装置１０へ検索レコードを送信した後、その相手方のデータベース装置１０側からの検索レコードを受信した場合の処理手順を説明する。
【００７４】
図９のＳ６０５〜Ｓ６０７の処理内容は、図７のＳ５０６〜Ｓ５０７の処理内容と同じなので説明を省略し、Ｓ６３０から説明する。Ｓ６０７の後、図２のテーブル検索処理部１２３は、カウンタｉ１（ｊ２）を進め、ｉ１（ｊ２）をインクリメントする（Ｓ６３０）。このようにすることで、相手方のデータベース装置１０からの検索レコードを受信したとき、テーブル検索処理部１２３は、分割テーブルのレコードのうち、検索レコードを送信した次のレコードをスタートとして検索処理ができる。
【００７５】
例えば、図２のデータベース装置１０Ａのレコード処理部１２１Ａが、分割テーブル１３１Ａから読み出したキー値「３２」のレコードを含む検索レコードの送信した後（図１参照）、分割テーブル１３２Ａのカウンタをインクリメントする。このようにすることで、相手方のデータベース装置１０Ｂからの検索レコード受信したとき、テーブル検索処理部１２３Ｂは、分割テーブル１３１Ａの「３２」の次の値（「５１」）をスタートとして検索処理ができる。
【００７６】
図９のＳ６３５〜Ｓ６４１の処理内容は、図７のＳ５１０〜Ｓ５１６の処理内容と同じであり、また、図１０のＳ６４２〜Ｓ６７０の処理内容は、図８のＳ５１７〜Ｓ５４０の処理内容と同じであるので説明を省略する。但し、図１０に示すフローでは、分割テーブルにｉ１（ｊ２）番目のレコードが存在する場合に（Ｓ６５６のＹｅｓ）、図８のＳ５３０で行ったようなカウンタｊ１（ｉ２）のインクリメントは行わない点が異なる。これは、図９および図１０に示すフローの場合、相手方のデータベース装置１０からの検索レコードを受信したときに、カウンタのインクリメントを行っておくので（Ｓ６４０）、Ｓ６５６でＮｏだった場合のカウンタのインクリメントを行う必要はないからである。
【００７７】
次に、図２を参照しつつ、図１１および図１２を用いて、データベース管理装置２０が、データベース装置１０（１０Ａ，１０Ｂ）の同期を取る処理を説明する。
【００７８】
図２のデータベース管理装置２０の同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）に対して、分割処理を指示する（Ｓ３０１）。ここでの分割処理の指示は、前記した結合指示に含めて送信してよい。
【００７９】
これを受けてデータベース装置１０Ａは、テーブル分割処理部１２４Ａの処理を開始し（Ｓ３１０Ａ）、テーブル分割処理部１２４Ａは、テーブル１３０Ａを分割して、分割テーブル１３１Ａ，１３２Ａを生成する。そして、テーブル分割処理部１２４Ａは、カウンタｉ１，ｉ２を初期化し、カウンタをｉ１＝１，ｉ２＝１とする（Ｓ３１５Ａ）。そして、データベース装置１０Ａは、第１の処理グループに関する処理を開始する。すなわち、レコード通信処理部１２２Ａ経由で、分割テーブル１３１Ａの１番目のレコード（検索レコード）をデータベース装置１０Ｂに送信する（Ｓ３２０Ａ）。そして、レコード処理部１２１Ａは、データベース装置１０Ｂから、この検索レコードを確かに受信した旨の応答を受信すると（Ｓ３２１Ａ）、この応答をデータベース管理装置２０へ送信する（Ｓ３２２Ａ）。
【００８０】
また、データベース装置１０Ｂも、テーブル分割処理部１２４Ｂの処理を開始し（Ｓ３１０Ｂ）、テーブル分割処理部１２４Ｂは、テーブル１３０Ｂを分割して、分割テーブル１３１Ｂ，１３２Ｂを生成する。そして、テーブル分割処理部１２４Ｂは、カウンタｊ１，ｊ２を初期化し、カウンタをｊ１＝１，ｊ２＝１とする（Ｓ３１５Ｂ）。そして、データベース装置１０Ｂは、第２の処理グループに関する処理を開始する。すなわち、レコード通信処理部１２２Ｂ経由で、分割テーブル１３１Ｂの１番目のレコードをデータベース装置１０Ａに送信する（Ｓ３２０Ｂ）。レコード処理部１２１Ｂは、データベース装置１０Ａから、この検索レコードを確かに受信した旨の応答を受信すると（Ｓ３２１Ｂ）、この応答をデータベース管理装置２０へ送信する（Ｓ３２２Ｂ）。
【００８１】
図１２の説明に移る。このような応答の受信により、データベース管理装置２０の同期処理部２２３が、データベース装置１０（１０Ａ，１０Ｂ）において第１の処理グループの検索レコードと第２の処理グループの検索レコードとが受信されたことを確認する。そして、同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）それぞれにおける第１の処理グループと第２の処理グループとの同期を行う（Ｓ３２３）。すなわち、同期処理部２２３は、通信部２３経由でデータベース装置１０（１０Ａ，１０Ｂ）それぞれに対し、レコード処理部１２１（１２１Ａ，１２１Ｂ）の開始指示を送信する。
【００８２】
このような開始指示を受信したデータベース装置１０Ａは、第２の処理グループの処理を開始する（Ｓ３２５Ａ）。つまり、レコード処理部１２１Ａは、図１１のＳ３２０Ｂでデータベース装置１０Ｂから送信されたレコード（検索レコード）のキー値に一致するレコードを、分割テーブル１３２Ａから検索する。そして、その検索結果から得られた分割テーブル１３２Ａのｉ２番目のレコードを、検索レコードとして、データベース装置１０Ｂへ送信する。そして、レコード処理部１２１Ａは、データベース装置１０Ｂから、この検索レコードを受信した旨の応答を受信すると（Ｓ３２６Ａ）、この応答をデータベース管理装置２０へ送信する（Ｓ３２７Ａ）。
【００８３】
また、データベース管理装置２０からの開始指示を受信したデータベース装置１０Ｂは、第１の処理グループの処理を開始する（Ｓ３２５Ｂ）。つまり、レコード処理部１２１Ｂは、図１１のＳ３２０Ａでデータベース装置１０Ａから送信されたレコード（検索レコード）のキー値に一致するレコードを、分割テーブル１３２Ｂから検索する。そして、その検索結果から得られた分割テーブル１３２Ｂのｊ１番目のレコードを、検索レコードとして、データベース装置１０Ａへ送信する。そして、データベース装置１０Ａから、この検索レコードを受信した旨の応答を受信すると（Ｓ３２６Ｂ）、この応答をデータベース管理装置２０へ送信する（Ｓ３２７Ｂ）。
【００８４】
このような応答の受信により、データベース管理装置２０の同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）において第１の処理グループの検索レコードと第２の処理グループの検索レコードとが受信されたことが確認する。そして、同期処理部２２３は、データベース装置１０（１０Ａ，１０Ｂ）それぞれにおける第１の処理グループと第２の処理グループとの同期を行う（Ｓ３２６）。すなわち、同期処理部２２３は、通信部２３経由でデータベース装置１０（１０Ａ，１０Ｂ）それぞれに対し、レコード処理部１２１（１２１Ａ，１２１Ｂ）の開始指示を送信する。
【００８５】
そして、このような開始指示を受信したデータベース装置１０Ａは、第１の処理グループの処理を開始し（Ｓ３３５Ａ）、また、開始指示を受信したデータベース装置１０Ｂは、第２の処理グループの処理を開始する（Ｓ３３５Ｂ）。
【００８６】
データベース管理システムは、このような処理をどちらか一方のデータベース装置１０が処理を終了するまで繰り返し実行する。
【００８７】
このようなデータベース管理装置２０によれば、データベース装置１０（１０Ａ，１０Ｂ）それぞれの検索処理後、相手方のデータベース装置１０（１０Ａ，１０Ｂ）への検索レコードの送信が完了したことを確認すると、データベース装置１０（１０Ａ，１０Ｂ）に各処理グループの処理を開始させる。つまり、データベース管理装置２０がデータベース装置１０（１０Ａ，１０Ｂ）それぞれの各処理グループの処理の開始タイミングをほぼ同時にすることができるので、データベース装置１０（１０Ａ，１０Ｂ）が、第１の処理グループの処理実行後、第２の処理グループの処理を開始するまでの待ち時間、および、第２の処理グループの処理実行後、第１の処理グループの処理を開始するまでの待ち時間をできるだけ短くすることができる。
【００８８】
つまり、第１の処理グループの処理の開始タイミングと、第２の処理グループの処理の開始タイミングが異なる場合に比べて（図１４参照）、図１３に示すように第１の処理グループの処理の開始タイミングと、第２の処理グループの処理の開始タイミングとが同じ方が、データベース装置１０（１０Ａ，１０Ｂ）が処理を行っていない時間（待ち時間）を短くできるので、分割テーブル１３１および分割テーブル１３２のマージ結合を効率よく行うことができる。
【００８９】
なお、前記した実施の形態において、マージ結合の対象となるテーブル１３０Ａ，１３０Ｂは同じデータベース装置１０に記憶されるテーブルであってもよい。また、データベース管理システムは、２つのテーブルをマージ結合する場合を例に説明したが、データベースのインデックスを等結合する場合に適用してもよい。
【００９０】
なお、データベース管理装置２０は、データベース装置１０（１０Ａ，１０Ｂ）の処理開始の同期をとらないようにしてもよい。例えば、前記した図１４に示すように、データベース装置１０（１０Ａ，１０Ｂ）それぞれが各処理グループの処理の開始タイミングを同じにしなくても、データベース装置１０（１０Ａ，１０Ｂ）の待ち時間は、従来に比べた短縮することができる。例えば、図１４に示した例でいうと、データベース装置１０Ａからデータベース装置１０Ｂへ第１の処理グループの検索レコードを送信した後、データベース装置１０Ｂから第１の処理グループに関する検索レコードを受信するまでの間に、データベース装置１０Ｂから第２の処理グループの検索レコードを受信し、この検索レコードに関する処理を開始できるようにすれば、データベース装置１０Ａにおける処理の待ち時間は従来に比べて短くなる。よって、データベース装置１０（１０Ａ，１０Ｂ）のテーブル１３０（１３０Ａ，１３０Ｂ）のマージ結合に要する時間を短縮することができる。
【００９１】
また、データベース装置１０（１０Ａ，１０Ｂ）がテーブル１３０（１３０Ａ，１３０Ｂ）を分割するときの条件となる分割条件は、データベース装置１０の入出力部１１経由で入力してもよい。
【符号の説明】
【００９２】
１０    データベース装置
１１，２１    入出力部
１４，２３    通信部
２０    データベース管理装置
３０    入力装置
４０    出力装置
１２１  レコード処理部
１２２  レコード通信処理部
１２３  テーブル検索処理部
１２４  テーブル分割処理部
１３０  テーブル
１３１，１３２  分割テーブル
２２１  マージ結合処理部
２２２  レコード結合処理部
２２３  同期処理部
【図１】
2010224963.tif 000003
【図２】
2010224963.tif 000004
【図３】
2010224963.tif 000005
【図４】
2010224963.tif 000006
【図５】
2010224963.tif 000007
【図６】
2010224963.tif 000008
【図７】
2010224963.tif 000009
【図８】
2010224963.tif 000010
【図９】
2010224963.tif 000011
【図１０】
2010224963.tif 000012
【図１１】
2010224963.tif 000013
【図１２】
2010224963.tif 000014
【図１３】
2010224963.tif 000015
【図１４】
2010224963.tif 000016
【図１５】
2010224963.tif 000017