(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、
キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、
全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、
を備え、
前記プロセッサの各々は、
他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信部と、
前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御部と
を備えることを特徴とするデータベースサーバ。
【請求項２】
前記複数のプロセッサのうち一つがマスタプロセッサとして機能し、
前記マスタプロセッサの前記記憶制御部は、前記第二のプロセッサ情報を、前記通信部を経由して、前記各プロセッサに配布する
ことを特徴とする請求項１に記載のデータベースサーバ。
【請求項３】
前記記憶制御部は、さらに、前記第二のプロセッサ情報の生成において、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記第一のプロセッサ情報の１周期分の前記プロセッサ識別情報の配列を、追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記第二のプロセッサ情報として格納する
ことを特徴とする請求項１あるいは請求項２に記載のデータベースサーバ。
【請求項４】
前記記憶制御部は、さらに、前記第二のプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには前記第一のプロセッサ情報の周期をスキップ数とし、前記第一のプロセッサ情報を前記第二のプロセッサ情報にコピーし、前記第二のプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする請求項１あるいは請求項２に記載のデータベースサーバ。
【請求項５】
複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバに関して、
前記ハッシュ値と該ハッシュ値の前記レコードを参照可能な前記プロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信部と、
前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成するプロセッサ情報生成部と
を備えることを特徴とするプロセッサ情報生成装置。
【請求項６】
複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバにおいて、
前記プロセッサの各々が、
追加された前記プロセッサを特定するプロセッサ識別情報を含むプロセッサ追加通知を受信したときに、全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサの前記プロセッサ識別情報とを対応付けた第一のプロセッサ情報の、一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照するレコード記憶部から追加された前記プロセッサが参照するレコード記憶部へ前記レコードを再配置する
ことを特徴とする再配置方法。
【請求項７】
複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバに関して、
前記ハッシュ値と該ハッシュ値の前記レコードを参照可能な前記プロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報とから、前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成する
ことを特徴とするプロセッサ情報生成方法。
【請求項８】
複数のプロセッサと、
キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、
全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、
を備えるコンピュータに、
他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信機能と、
前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御機能と
を実現させるための再配置プログラム。
【請求項９】
複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバに関して、
コンピュータに、
前記ハッシュ値と該ハッシュ値の前記レコードを参照可能な前記プロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信機能と、
前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成するプロセッサ情報生成機能と
を実現させるためのプロセッサ情報生成プログラム。
【請求項１０】
請求項８に記載の再配置プログラムあるいは請求項９に記載のプロセッサ情報生成プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数プロセッサに分散されたデータを再配置可能なデータベースサーバ、再配置方法および再配置プログラムに関する。
【背景技術】
【０００２】
複数のプロセッサから構成されるデータベースサーバにプロセッサを追加する場合、各プロセッサに分散されて配置されたデータの再配置が必要になる。特許文献１に、複数プロセッサ上に分散して配置されているデータの再配置が可能なデータベースサーバについての発明が開示されている。
【０００３】
以下に、特許文献１の方法について、簡単に説明する。
【０００４】
データベースサーバは、複数のプロセッサから構成される。各プロセッサには、ホストＤＢと変換ＤＢが保持されている。
【０００５】
ホストＤＢは、ハッシュ値、キー情報、データ（例：キー情報に関する情報を格納したデータベースホストのＩＤ）を対応付けたレコードを記憶したものである。ハッシュ値は、キー情報にハッシュ関数を適用して、キー情報をある一定の範囲の値に変換したものである。ハッシュ関数をキー情報に適用することで、すべてのキー情報は、ある一定の範囲のハッシュ値のいずれかに分類されることになる。
【０００６】
変換ＤＢは、各ハッシュ値のレコードをどのプロセッサのホストＤＢに記憶しているかを示したものである。すべてのハッシュ値について、プロセッサを特定するＰＵＩＤ（Processor Unit ID）を対応づけて記憶する。
【０００７】
このように、特許文献１のデータベースサーバでは、各プロセッサのホストＤＢに、キー情報に関するレコードを分散して記憶する。キー情報がデータベースサーバに入力されたとき、処理担当のプロセッサは、入力されたキー情報からハッシュ値を計算し、変換ＤＢからハッシュ値に対応付けられたＰＵＩＤを取得する。ＰＵＩＤが自己のものだった場合には、自己のホストＤＢからハッシュ値とキー情報に対応するデータを取得する。ＰＵＩＤが他のプロセッサのものだった場合には、該当するプロセッサにハッシュ値を通知し、ハッシュ値とキー情報に対応するデータを送信するよう要求する。このようにすることで、ホストＤＢの検索処理をハッシュ値に対応した各プロセッサで並列に行うことができる。そのため、分散配置された大量のレコードの中から、キー情報に関するレコードを高速に取得することができる。
【０００８】
また、データベースサーバにプロセッサが追加された場合には、特許文献１の方法では、新たな変換ＤＢを外部ファイルから取り込み、新変換ＤＢと旧変換ＤＢに従って各プロセッサのホストＤＢのレコードの再配置を行っている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第5084310号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１には、新変換ＤＢと旧変換ＤＢに従った再配置の方法については記載されている。しかし、具体的に、新変換ＤＢでは各ハッシュ値をどのように各プロセッサ（ＰＵＩＤ）に対応づけるのかについて、言い換えると、新変換ＤＢの作成方法については記載されていない。
【００１１】
新変換ＤＢの作成方法について、単純な方法としては、ハッシュ値の順に、各プロセッサを順に割り当てる方法が考えられる。たとえば、ＰＵＩＤがａとｂの２つのプロセッサに、新たにＰＵＩＤがｃのプロセッサを追加する場合を図１５に示す。図１５の例では、旧変換ＤＢでは、ハッシュ値の順にＰＵＩＤをａ、ｂ、ａ、ｂの順に対応づけ、新変換ＤＢでは、ａ、ｂ、ｃ、ａ、ｂ、ｃの順に対応づけている。しかし、このような方法では、図１５のハッシュ値が「011」と「100」のとき（図１５の網掛け部分）のように、既存のプロセッサ間でレコードの移動が行われる状態が発生する。プロセッサの追加の際に、既存のプロセッサ間でレコードの移動を行うことは、無駄な移動であり、再配置の負荷や時間を増大させることになる。また、再配置の処理をサービス運用中に行うことが想定されるため、サービスの運用に必要なコンピュータリソースを十分に確保するためにも、レコードの再配置に必要なリソースが最小限になるよう、無駄なレコードの移動を避けることが望ましい。
【００１２】
本発明の目的は、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することを可能とするデータベースサーバ、再配置方法および再配置プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上述の問題を解決するために、本発明のデータベースサーバは、複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、を備え、前記プロセッサの各々は、他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信部と、前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御部とを備えることを特徴とする。
【００１４】
また、本発明のプロセッサ情報生成装置は、ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信部と、前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた新たな前記プロセッサ情報を生成するプロセッサ情報生成部とを備えることを特徴とする。
【００１５】
また、本発明の再配置方法は、複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバにおいて、前記プロセッサの各々が、追加された前記プロセッサを特定するプロセッサ識別情報を含むプロセッサ追加通知を受信したときに、全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサの前記プロセッサ識別情報とを対応付けた第一のプロセッサ情報の、一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照するレコード記憶部から追加された前記プロセッサが参照するレコード記憶部へ前記レコードを再配置することを特徴とする。
【００１６】
また、本発明のプロセッサ情報生成方法は、ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報とから、前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成することを特徴とする。
【００１７】
また、本発明の再配置プログラムは、複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、を備えるコンピュータに、他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信機能と、前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御機能とを実現させる。
【００１８】
また、本発明のプロセッサ情報生成プログラムは、コンピュータに、ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信機能と、前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成するプロセッサ情報生成機能とを実現させる。
【発明の効果】
【００１９】
本発明のデータベースサーバ、再配置方法および再配置プログラムにより、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第一の実施形態のデータベースサーバの構成例を示す図である。
【図２】本発明の第一の実施形態のレコードの例を示す図である。
【図３】本発明の第一の実施形態のプロセッサ情報の例を示す図である。
【図４】本発明の第一の実施形態のデータベースサーバのプロセッサの動作例を示す図である。
【図５】本発明の第二の実施形態のデータベースサーバのプロセッサの動作例を示す図である。
【図６】本発明の第三の実施形態の第二のプロセッサ情報の生成方法の例を示す図である。
【図７】本発明の第三の実施形態の具体例１を示す図である。
【図８】本発明の第三の実施形態の具体例１を示す図である。
【図９】本発明の第三の実施形態の具体例２を示す図である。
【図１０】本発明の第三の実施形態の具体例３を示す図である。
【図１１】本発明の第三の実施形態の具体例４を示す図である。
【図１２】本発明の第三の実施形態の具体例５を示す図である。
【図１３】本発明の第三の実施形態の具体例６を示す図である。
【図１４】本発明の第四の実施形態の第二のプロセッサ情報の生成方法の例を示す図である。
【図１５】単純な方法の例を示す図である。
【発明を実施するための形態】
【００２１】
まず、本発明の第一の実施の形態について説明する。
【００２２】
図１に本発明の第一の実施形態のデータベースサーバの構成例を示す。
【００２３】
データベースサーバ１は、複数のプロセッサ１０から構成される。図１の例では、ＰＵＩＤがａ、ｂ、ｃの３つのプロセッサ１０ａ、１０ｂ、１０ｃから構成されている。データベースサーバ１を構成するプロセッサ１０の数は、１つ以上であればいくつでも構わない。各プロセッサは、データベースサーバ１内の他のプロセッサや、データベースサーバ１外の他の装置と情報を送受信する。
【００２４】
プロセッサ１０は、通信部１１、記憶制御部１２、レコード記憶部１３および第一のプロセッサ情報記憶部１４から構成される。
【００２５】
通信部１１は、データベースサーバ１内の他のプロセッサや、データベース外の他の装置との通信を行う部分である。記憶制御部１２は、レコード記憶部１３および第一のプロセッサ情報記憶部１４に記憶されている情報を制御する部分である。
【００２６】
レコード記憶部１３は、ハッシュ値、キー情報、データを対応付けたレコードを記憶したものである。ハッシュ値は、キー情報にハッシュ関数を適用して、キー情報をある一定の範囲の値に変換したものである。ハッシュ関数をキー情報に適用することで、すべてのキー情報は、ある一定の範囲のハッシュ値のいずれかに分類されることになる。
【００２７】
図２に、レコード記憶部１３に記憶するレコードの例を示す。キー情報には、たとえば、加入者ＩＤを記憶する。そして、１つのキー情報「aaa@zzz」に対して、ハッシュ関数を適用した結果のハッシュ値とデータを、レコードとして記憶する。図２の例では、キー情報「aaa@zzz」に対応するハッシュ値は「010」、また、データは「2」であることを示している。この例でのデータは、加入者ＩＤに対応するデータをどのＤＢホストＩＤのデータベースホストに記憶しているかを示している。
【００２８】
第一のプロセッサ情報記憶部１４は、各ハッシュ値のレコードをどのプロセッサのホストＤＢに記憶しているかを示した、プロセッサ情報を記憶する部分である。すべてのハッシュ値について、プロセッサを特定するＰＵＩＤを対応づけて記憶する。
【００２９】
図３に、プロセッサ情報の例を示す。ハッシュ値とＰＵＩＤの対応関係が記載されており、たとえば、ハッシュ値「000」「011」に対応するレコードは、ＰＵＩＤがａのプロセッサに記憶されていることを示す。図３のプロセッサ情報の場合、図２のレコードの例は、ハッシュ値「010」のレコードが記憶されているので、ＰＵＩＤがｃのプロセッサのレコードということになる。
【００３０】
なお、図１の構成例では、レコード記憶部１３および第一のプロセッサ情報記憶部１４をプロセッサ１０の内部に設けたが、これらをプロセッサ１０の外部のデータベースサーバ１内に設けることも可能である。この場合、レコード記憶部１３については、各プロセッサから参照可能なレコード記憶部１３が１つ以上あり、また、各レコード記憶部１３に対応するプロセッサが１つになるように構成する。第一のプロセッサ情報記憶部１４については、プロセッサ情報はすべてのプロセッサで共通であるため、データベースサーバ１内に１つだけ設けて、全プロセッサから同じ第一のプロセッサ情報記憶部１４を参照するように構成しても良い。
【００３１】
上記のようにデータベースサーバ１を構成することによって、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００３２】
次に、図４に、図１の構成例におけるデータベースサーバ１のプロセッサ１０の動作の例を示す。
【００３３】
プロセッサ１０は、データベースサーバ１の操作パネルやデータベースサーバ１に接続する他の制御用端末などから、データベースサーバ１への再配置指示を受け付け、再配置動作を開始する。プロセッサ１０は、まず、第一のプロセッサ情報記憶部１４に記憶されているプロセッサ情報から、新たな第二のプロセッサ情報を生成する（Ｓ１０１）。第二のプロセッサ情報は、プロセッサの個数を変更した場合など、プロセッサ情報（ハッシュ値とＰＵＩＤの対応関係）を変更する場合の新たなプロセッサ情報である。このとき、データベースサーバにプロセッサを追加する場合には、第一のプロセッサ情報の一部のハッシュ値に対応付けられたプロセッサ識別情報を追加するプロセッサのプロセッサ識別情報に置き換えた、第二のプロセッサ情報を生成する。
【００３４】
そして、第一のプロセッサ情報記憶部１４のプロセッサ情報（第一のプロセッサ情報）と第二のプロセッサ情報に基づいて、自プロセッサのレコード記憶部から追加されたプロセッサのレコード記憶部へレコードを再配置する（Ｓ１０２）。
【００３５】
以上で説明したように、本発明の第一の実施形態では、プロセッサを追加するときに、第一のプロセッサ情報の一部のハッシュ値に対応付けられたプロセッサ識別情報を追加するプロセッサのプロセッサ識別情報に置き換えた、新たなプロセッサ情報を生成する。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００３６】
次に、本発明の第二の実施の形態について説明する。第一の実施形態では、各プロセッサで新たなプロセッサ情報を生成していたが、本実施形態では、ホストプロセッサが新たなプロセッサ情報を生成し、他のプロセッサへ配布する。
【００３７】
データベースサーバの構成例は、第一の実施形態と同様に、図１に示したとおりである。本実施形態では、複数のプロセッサのうち１つが、他のプロセッサを制御するマスタプロセッサとして動作する。
【００３８】
本実施形態の動作の例を図５に示す。（ａ）はマスタプロセッサの動作例、（ｂ）はマスタプロセッサ以外のプロセッサの動作例である。
【００３９】
マスタプロセッサでは、まず、再配置指示を受け付けると、第一のプロセッサ情報記憶部１４のプロセッサ情報から、新たな第二のプロセッサ情報を生成する（Ｓ２０１）。このとき、プロセッサを追加するときには、第一のプロセッサ情報の一部のハッシュ値に対応付けられたプロセッサ識別情報を追加するプロセッサのプロセッサ識別情報に置き換えた、第二のプロセッサ情報を生成する。
【００４０】
次に、生成した第二のプロセッサ情報を、他のプロセッサへ配布する。マスタプロセッサ以外のプロセッサは、マスタプロセッサから第二のプロセッサ情報を受け取る（Ｓ２０４）。
【００４１】
そして、各プロセッサでは、第一のプロセッサ情報記憶部１４のプロセッサ情報と第二のプロセッサ情報に基づいて、各プロセッサのレコード記憶部のレコードを再配置する（Ｓ２０３、Ｓ２０５）。
【００４２】
以上で説明したように、本発明の第二の実施形態でも、プロセッサを追加するときに、第一のプロセッサ情報の一部のハッシュ値に対応付けられたプロセッサ識別情報を追加するプロセッサのプロセッサ識別情報に置き換えた新たなプロセッサ情報を生成する。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００４３】
次に、本発明の第三の実施形態について説明する。本実施形態では第一および第二の実施形態で行う新たなプロセッサ情報の生成方法について、具体的に説明する。
【００４４】
図６に、本実施形態の新たなプロセッサ情報の生成方法の例について示す。この動作は、図４のステップＳ１０１、あるいは、図５のステップＳ２０１で行われる動作である。本実施形態では、第一のプロセッサ情報記憶部のプロセッサ情報では、各ハッシュ値に対して各プロセッサが周期的に割り当てられていることを前提とする。
【００４５】
まず、第一のプロセッサ情報記憶部のプロセッサ情報（第一のプロセッサ情報）の割り当て周期をｘ、追加するプロセッサの数をｙとする。また、作業用配列としてＰＩ、生成した新たなプロセッサ情報（第二のプロセッサ情報）の格納用配列としてＰＩ２を用意する。作業用配列ＰＩの大きさはｘ、第二のプロセッサ情報格納用配列の大きさはｘ×（ｘ＋ｙ）である。
【００４６】
次に、第一のプロセッサ情報の割り当て周期ｘと追加するプロセッサの数ｙを比較する（Ｓ３０１）。ｘがｙ以上のときは、ｙをシフト量ｓとし、ｘがｙ未満のときは、ｙからｘを、ｘ以下になるまで繰り返し減算し、減算した結果をシフト量ｓとする（Ｓ３０２〜Ｓ３０５）。そして、作業用配列ＰＩに第一のプロセッサ情報１周期分のＰＵＩＤ（ｘ個）を格納する（Ｓ３０６）。
【００４７】
次に、第二のプロセッサ情報格納用配列ＰＩ２に、作業用配列ＰＩの内容をｘ個追加コピーし、さらに、追加するプロセッサのＰＵＩＤをｙ個追加する（Ｓ３０７）。
【００４８】
次に、作業用配列ＰＩの内容を、先頭方向にシフト量ｓ分巡回シフトさせる（シフトしてあふれた部分を、空いた部分に格納する）（Ｓ３０８）。巡回シフトした作業用配列ＰＩが当初のＰＩ（Ｓ３０６のＰＩ）に戻った場合（Ｓ３０９）、ＰＩ２に格納されているＰＵＩＤを１周期分として、第二のプロセッサ情報として周期的に記憶する（Ｓ３１０）。巡回シフトした作業用配列ＰＩが当初のＰＩに戻っていない場合（Ｓ３０９）、第二のプロセッサ情報格納用配列ＰＩ２に、作業用配列ＰＩの内容をｘ個追加コピーし、さらに、追加するプロセッサのＰＵＩＤをｙ個追加する（Ｓ３０７）。
【００４９】
なお、ステップＳ３０１、Ｓ３０３〜Ｓ３０５がない場合でも、つまり、ｘとｙの大小関係に関わらず、ｙをシフト量ｓとしても、同じ第二のプロセッサ情報が得られる。そのため、ステップＳ３０１、Ｓ３０３〜Ｓ３０５は削除することが可能である。
【００５０】
また、ステップＳ３０９にて、作業用配列ＰＩが当初のＰＩに戻ったかどうか確認しているが、ＰＩの大きさはｘであり、ｘ回巡回シフトすると元に戻るので、巡回シフトの回数をカウントし、その回数を確認しても良い。
【００５１】
以上が、本実施形態における新たなプロセッサ情報の生成方法の例である。このようにすることによって、プロセッサを追加するときに、既存のプロセッサから既存のプロセッサへのレコードの移動がないように、新たなプロセッサ情報を生成できる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００５２】
次に、本実施形態における新たなプロセッサ情報の生成について、具体例を例示する。
【００５３】
まず、具体例１では、ＰＵＩＤがａおよびｂの２つのプロセッサに、ＰＵＩＤがｃのプロセッサを追加する場合について説明する。
【００５４】
図７、図８に、具体例１でのプロセッサ情報の生成の例を示す。第一のプロセッサ情報では、ハッシュ値の順にプロセッサがａｂａｂ・・・の順で割り当てられている。このときのプロセッサの割り当て周期ｘは２である。また、追加するプロセッサ数ｙは１である。ｘとｙを比較すると、ｘはｙ以上であるため、シフト量ｓは１（＝ｙ）となる（Ｓ３０１〜Ｓ３０２）。次に、作業用配列ＰＩに第一のプロセッサ情報１周期分のＰＵＩＤを格納する（Ｓ３０６）。図８（１）が、このときのＰＩである。ＰＩにａおよびｂが格納されている。次に、図８のＰＩ２の（１）の部分のように、ＰＩをＰＩ２にコピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｃ（網掛け部）を追加する（Ｓ３０７）。次に、作業用配列ＰＩをシフト量ｓ＝１だけ先頭方向に巡回シフトさせる（Ｓ３０８）。図８（２）がこのときのＰＩである。図８のＰＩ２の（２）の部分のように、このＰＩをＰＩ２に追加コピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｃを追加する（Ｓ３０７）。さらにＰＩをシフト量ｓ分巡回シフトすると、図８（３）のように、当初の作業用配列ＰＩに戻る。ＰＩが当初のＰＩに戻ったため（Ｓ３０９）、このときのＰＩ２を１周期分として、第二のプロセッサ情報として周期的に記憶する（Ｓ３１０）。
【００５５】
以上のように生成されたプロセッサ情報が、図７の第二のプロセッサ情報である。このように、プロセッサを追加するときに、作業用配列ＰＩを追加するプロセッサの数分巡回シフトさせることによって、既存のプロセッサ間のレコードの移動がないように、新たなプロセッサ情報を生成することができる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００５６】
次に、具体例３として、ＰＵＩＤがａ、ｂおよびｃの３つのプロセッサに、ＰＵＩＤがｄのプロセッサを追加する場合のプロセッサ情報の生成例を、図９に示す。また、具体例４として、ＰＵＩＤがａ、ｂ、ｃおよびｄの４つのプロセッサに、ＰＵＩＤがｅのプロセッサを追加する場合のプロセッサ情報の生成例を図１０に示す。動作の説明は具体例１と同様のため、省略する。図９、図１０でも、既存のプロセッサ間の再配置を排除できていることがわかる。
【００５７】
次に、具体例４として、ＰＵＩＤがａ、ｂおよびｃの３つのプロセッサに、ＰＵＩＤがｄおよびｅの２つのプロセッサを追加する場合のプロセッサ情報の生成例について説明する。
【００５８】
図１１に、具体例４でのプロセッサ情報の生成の例を示す。第一のプロセッサ情報では、ハッシュ値の順にプロセッサがａｂｃａｂｃ・・・の順で割り当てられている。このときのプロセッサの割り当て周期ｘは３である。また、追加するプロセッサ数ｙは２である。ｘとｙを比較すると、ｘはｙ以上であるため、シフト量ｓは２（＝ｙ）となる（Ｓ３０１〜Ｓ３０２）。次に、作業用配列ＰＩに第一のプロセッサ情報１周期分のＰＵＩＤを格納する（Ｓ３０６）。図１１（１）が、このときのＰＩである。ＰＩにａ、ｂおよびｃが格納されている。次に、図１１のＰＩ２の（１）の部分のように、ＰＩをＰＩ２にコピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｄ、ｅを追加（網掛け部）する（Ｓ３０７）。次に、作業用配列ＰＩをシフト量ｓ＝２だけ先頭方向に巡回シフトさせる（Ｓ３０８）。図１１（２）がこのときのＰＩである。図１１のＰＩ２の（２）の部分のように、このＰＩをＰＩ２に追加コピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｄ、ｅを追加する（Ｓ３０７）。さらにＰＩをシフト量ｓ分巡回シフトすると、図１１（３）のようになる（Ｓ３０８）。そして、図１１のＰＩ２の（３）の部分のように、このＰＩをＰＩ２に追加コピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｄ、ｅを追加する（Ｓ３０７）。さらにＰＩをシフト量ｓ分巡回シフトすると図１１（４）のように、当初の作業用配列ＰＩに戻る（Ｓ３０８）。ＰＩが当初のＰＩに戻ったため（Ｓ３０９）、このときのＰＩ２を１周期分として、第二のプロセッサ情報として周期的に記憶する（Ｓ３１０）。
【００５９】
以上のように、本具体例でも、プロセッサを追加するときに、作業用配列ＰＩを追加するプロセッサの数分巡回シフトさせることによって、既存のプロセッサ間のレコードの移動がないように、新たなプロセッサ情報を生成することができる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００６０】
次に、具体例５として、ＰＵＩＤがａおよびｂの２つのプロセッサに、ＰＵＩＤがｃ、ｄおよびｅの３つのプロセッサを追加する場合のプロセッサ情報の生成例について説明する。本具体例は、第一のプロセッサ情報のプロセッサの割り当て周期より追加するプロセッサ数が多い場合の例である。
【００６１】
図１２に、具体例５でのプロセッサ情報の生成の例を示す。まず、第一のプロセッサ情報では、ハッシュ値の順にプロセッサがａｂａｂ・・・の順で割り当てられている。このときのプロセッサの割り当て周期ｘは２である。また、追加するプロセッサ数ｙは３である。ｘとｙを比較すると、ｘはｙ未満であるため、ｙからｘを減算し、シフト量ｓは１（＝ｙ−ｘ）となる（Ｓ３０１、Ｓ３０３〜Ｓ３０５）。次に、作業用配列ＰＩに第一のプロセッサ情報１周期分のＰＵＩＤを格納する（Ｓ３０６）。図１２（１）が、このときのＰＩである。ＰＩに既存プロセッサのＰＵＩＤ、ａおよびｂが格納されている。次に、図１２のＰＩ２の（１）の部分のように、ＰＩをＰＩ２にコピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｃ、ｄ、ｅを追加する（Ｓ３０７）。次に、作業用配列ＰＩをシフト量ｓ＝１だけ先頭方向に巡回シフトさせる（Ｓ３０８）。図１２（２）がこのときのＰＩである。図１２のＰＩ２の（２）の部分のように、このＰＩをＰＩ２に追加コピーし、さらに、追加するプロセッサのＰＵＩＤ＝ｃ、ｄ、ｅを追加する（Ｓ３０７）。そして、さらにＰＩをシフト量ｓ分巡回シフトすると、図１２（３）のように、当初の作業用配列ＰＩに戻る。ＰＩが当初のＰＩに戻ったため（Ｓ３０９）、このときのＰＩ２を１周期分として、第二のプロセッサ情報として周期的に記憶する（Ｓ３１０）。ここで、シフト量は１（＝ｙ−ｘ）としたが、ｘとｙの大小関係に依らずにｙ（＝３）をシフト量としても良い。これは、大きさが２の配列は、シフト量が１、３のいずれであっても同じ結果が得られるためである。
【００６２】
以上のように、本具体例でも、プロセッサを追加するときに、作業用配列ＰＩを追加するプロセッサの数分巡回シフトさせることによって、既存のプロセッサ間のレコードの移動がないように、新たなプロセッサ情報を生成することができる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００６３】
以上で説明したように、第三の実施形態では、プロセッサを追加するときに、作業用配列ＰＩを追加するプロセッサの数分巡回シフトさせる。その結果、既存のプロセッサ間のレコードの移動がないように、新たなプロセッサ情報を生成することができる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００６４】
次に、本発明の第四の実施形態について説明する。本実施形態では、第三の実施形態とは異なる、第二のプロセッサ情報の生成方法の具体例について説明する。本実施形態では、第三の実施形態と同じ第二のプロセッサ情報が得られる。
【００６５】
図１４に、本実施形態の新たなプロセッサ情報の生成方法の例について示す。この動作は、図４のステップＳ１０１、あるいは、図５のステップＳ２０１で行われる動作である。
【００６６】
まず、既存のプロセッサの数をｚ、追加するプロセッサの数をｙとする。また、生成した新たなプロセッサ情報（第二のプロセッサ情報）の格納用配列としてＰＩ２を用意する。
【００６７】
そして、配列ＰＩ２に第一のプロセッサ情報をコピーする（Ｓ４０１）。このとき、１周期分ではなく、第一のプロセッサ情報すべてをＰＩ２にコピーする。次に、ＰＩ２の先頭から、ｚ個スキップして、続きに追加するプロセッサのＰＵＩＤをｙ個上書きする（Ｓ４０２）。これをＰＩ２の終わりまで繰り返す（Ｓ４０３）。ＰＩ２の終わりに到達したとき、ＰＩ２を第二のプロセッサ情報とする（Ｓ４０４）。
【００６８】
第一のプロセッサ情報が周期的に割り当てられている場合には、第二のプロセッサ情報の周期はｘ×（ｘ＋ｙ）となるので、ＰＩ２の大きさをｘ×（ｘ＋ｙ）とすることができる。このとき、ステップＳ４０２でのスキップ数は、第一のプロセッサ情報の周期ｘとし、ステップ４０４では、ＰＩ２を周期的に第二のプロセッサ情報として記憶する。
【００６９】
このようにすることで、第四の実施形態でも第三の実施形態と同じ第二のプロセッサ情報を得ることができる。つまり、具体例１から６と同じ結果を得ることができる。
【００７０】
以上で説明したように、第四の実施形態では、第一のプロセッサ情報に対して、追加するプロセッサのＰＵＩＤのみを上書きする。その結果、既存のプロセッサ間のレコードの移動がないように、新たなプロセッサ情報を生成することができる。そのため、既存プロセッサ間のデータ移動を排除し、データ再配置をより高速に実施することが可能になる。
【００７１】
さらに、第三の実施形態は、第一のプロセッサ情報が周期的に構成されていることを前提としていたが、第四の実施形態は、第一のプロセッサ情報が周期的でない場合にも適用することができる。
【００７２】
また他の実施形態としては、第三あるいは第四の実施形態で説明した第二のプロセッサ情報の生成を、プロセッサ内部で行わずに、データベースサーバに接続する他の装置で実行することも可能である。この場合は、外部装置で生成された第二のプロセッサ情報を何らかの手段でデータベースサーバの各プロセッサに渡し、第一のプロセッサ情報と第二のプロセッサ情報に基づいてレコードの再配置を行う。
【００７３】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。
【００７４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７５】
（付記１）
複数のプロセッサと、
キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、
全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、
を備え、
前記プロセッサの各々は、
他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信部と、
前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御部と
を備えることを特徴とするデータベースサーバ。
【００７６】
（付記２）
前記複数のプロセッサのうち一つがマスタプロセッサとして機能し、
前記マスタプロセッサの前記記憶制御部は、前記第二のプロセッサ情報を、前記通信部を経由して、前記各プロセッサに配布する
ことを特徴とする付記１に記載のデータベースサーバ。
【００７７】
（付記３）
前記記憶制御部は、さらに、前記第二のプロセッサ情報の生成において、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記第一のプロセッサ情報の１周期分の前記プロセッサ識別情報の配列を、追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記第二のプロセッサ情報として格納する
ことを特徴とする付記１あるいは付記２に記載のデータベースサーバ。
【００７８】
（付記４）
前記記憶制御部は、さらに、前記第二のプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには前記第一のプロセッサ情報の周期をスキップ数とし、前記第一のプロセッサ情報を前記第二のプロセッサ情報にコピーし、前記第二のプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記１あるいは付記２に記載のデータベースサーバ。
【００７９】
（付記５）
ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信部と、
前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成するプロセッサ情報生成部と
を備えることを特徴とするプロセッサ情報生成装置。
【００８０】
（付記６）
前記プロセッサ情報生成部は、さらに、前記新たなプロセッサ情報の生成において、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記プロセッサ情報の１周期分の前記プロセッサ識別情報の配列を、追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記新たなプロセッサ情報として格納する
ことを特徴とする付記５に記載のプロセッサ情報生成装置。
【００８１】
（付記７）
前記プロセッサ情報生成部は、さらに、前記新たなプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには前記プロセッサ情報の周期をスキップ数とし、前記プロセッサ情報を前記新たなプロセッサ情報にコピーし、前記新たなプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記５に記載のプロセッサ情報生成装置。
【００８２】
（付記８）
複数のプロセッサと、キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部を備えるデータベースサーバにおいて、
前記プロセッサの各々が、
追加された前記プロセッサを特定するプロセッサ識別情報を含むプロセッサ追加通知を受信したときに、全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサの前記プロセッサ識別情報とを対応付けた第一のプロセッサ情報の、一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照するレコード記憶部から追加された前記プロセッサが参照するレコード記憶部へ前記レコードを再配置する
ことを特徴とする再配置方法。
【００８３】
（付記９）
前記複数のプロセッサのうち一つがマスタプロセッサとして機能し、
前記マスタプロセッサは、第二のプロセッサ情報を前記各プロセッサに配布する
ことを特徴とする付記８に記載の再配置方法。
【００８４】
（付記１０）
さらに、前記第二のプロセッサ情報の生成において、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記第一のプロセッサ情報の１周期分の前記プロセッサ識別情報の配列を追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記第二のプロセッサ情報として格納する
ことを特徴とする付記８あるいは付記９に記載の再配置方法。
【００８５】
（付記１１）
さらに、前記第二のプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには前記第一のプロセッサ情報の周期をスキップ数とし、前記第一のプロセッサ情報を前記第二のプロセッサ情報にコピーし、前記第二のプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記８あるいは付記９に記載の再配置方法。
【００８６】
（付記１２）
ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報とから、前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成する
ことを特徴とするプロセッサ情報生成方法。
【００８７】
（付記１３）
さらに、前記新たなプロセッサ情報の生成において、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記プロセッサ情報の１周期分の前記プロセッサ識別情報の配列を追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記新たなプロセッサ情報として格納する
ことを特徴とする付記１２に記載のプロセッサ情報生成方法。
【００８８】
（付記１４）
さらに、前記新たなプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには前記プロセッサ情報の周期をスキップ数とし、前記プロセッサ情報を前記新たなプロセッサ情報にコピーし、前記新たなプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記１２に記載のプロセッサ情報生成方法。
【００８９】
（付記１５）
複数のプロセッサと、
キー情報と該キー情報から導かれるハッシュ値とデータとを対応付けたレコードについて、前記プロセッサの各々から参照され、前記ハッシュ値に基づいて前記プロセッサ毎に異なる前記レコードを記憶するレコード記憶部と、
全ての前記ハッシュ値について、各ハッシュ値と、該ハッシュ値の前記レコードを参照する前記プロセッサを特定するプロセッサ識別情報とを対応付けた、第一のプロセッサ情報を記憶する第一のプロセッサ情報記憶部と、
を備えるコンピュータに、
他の前記プロセッサや他の装置との通信を行い、前記プロセッサが新たに追加されたときに、追加された前記プロセッサの前記プロセッサ識別情報を含むプロセッサ追加通知を受信する通信機能と、
前記プロセッサ追加通知を受信したときに、前記第一のプロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加された前記プロセッサの前記プロセッサ識別情報に置き換えた第二のプロセッサ情報を生成し、前記第一のプロセッサ情報と前記第二のプロセッサ情報に基づいて、自プロセッサが参照する前記レコード記憶部から追加された前記プロセッサが参照する前記レコード記憶部へ前記レコードを再配置する記憶制御機能と
を実現させるための再配置プログラム。
【００９０】
（付記１６）
前記複数のプロセッサのうち一つがマスタプロセッサとして機能し、
前記マスタプロセッサの前記記憶制御機能は、第二のプロセッサ情報を前記各プロセッサに配布する
ことを特徴とする付記１５に記載の再配置プログラム。
【００９１】
（付記１７）
前記記憶制御機能は、さらに、前記第二のプロセッサ情報の生成において、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記第一のプロセッサ情報の１周期分の前記プロセッサ識別情報の配列を追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記第二のプロセッサ情報として格納する
ことを特徴とする付記１５あるいは付記１６に記載の再配置プログラム。
【００９２】
（付記１８）
前記記憶制御機能は、さらに、前記第二のプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記第一のプロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには、前記第一のプロセッサ情報の周期をスキップ数とし、前記第一のプロセッサ情報を前記第二のプロセッサ情報にコピーし、前記第二のプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記１５あるいは付記１６に記載の再配置プログラム。
【００９３】
（付記１９）
コンピュータに、
ハッシュ値と該ハッシュ値のレコードを参照可能なプロセッサを特定するプロセッサ識別情報とを対応付けたプロセッサ情報と、追加する前記プロセッサの前記プロセッサ識別情報との入力を受け付け、新たに生成した前記プロセッサ情報を出力するプロセッサ情報通信機能と、
前記プロセッサ情報の一部の前記ハッシュ値に対応付けられた前記プロセッサ識別情報を追加する前記プロセッサの前記プロセッサ識別情報に置き換えた、新たな前記プロセッサ情報を生成するプロセッサ情報生成機能と
を実現させるためのプロセッサ情報生成プログラム。
【００９４】
（付記２０）
前記プロセッサ情報生成機能は、さらに、前記新たなプロセッサ情報の生成において、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているとき、前記プロセッサ情報の１周期分の前記プロセッサ識別情報の配列を追加した前記プロセッサの数だけ前記ハッシュ値の先頭方向に繰り返し巡回シフトさせ、前記巡回シフトの結果と追加した前記プロセッサの前記プロセッサ識別情報とを交互に前記新たなプロセッサ情報として格納する
ことを特徴とする付記１９に記載のプロセッサ情報生成プログラム。
【００９５】
（付記２１）
前記プロセッサ情報生成機能は、さらに、前記新たなプロセッサ情報の生成において、既存の前記プロセッサの数、あるいは、前記プロセッサ情報の前記プロセッサ識別情報が各ハッシュ値に対して周期的に割り当てられているときには、前記プロセッサ情報の周期をスキップ数とし、前記プロセッサ情報を前記新たなプロセッサ情報にコピーし、前記新たなプロセッサ情報に対して、前記スキップ数の前記プロセッサ識別情報のスキップと追加した前記プロセッサの前記プロセッサ識別情報の上書きとを繰り返し行う
ことを特徴とする付記１９に記載のプロセッサ情報生成プログラム。
【００９６】
（付記２２）
付記１６から付記１８のいずれかに記載の再配置プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【００９７】
（付記２３）
付記１９から付記２１のいずれかに記載のプロセッサ情報生成プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【符号の説明】
【００９８】
１      データベースサーバ
１０    プロセッサ
１１    通信部
１２    記憶制御部
１３    レコード記憶部
１４    第一のプロセッサ情報記憶部
【図１】
0006428167.tif 000002
【図２】
0006428167.tif 000003
【図３】
0006428167.tif 000004
【図４】
0006428167.tif 000005
【図５】
0006428167.tif 000006
【図６】
0006428167.tif 000007
【図７】
0006428167.tif 000008
【図８】
0006428167.tif 000009
【図９】
0006428167.tif 000010
【図１０】
0006428167.tif 000011
【図１１】
0006428167.tif 000012
【図１２】
0006428167.tif 000013
【図１３】
0006428167.tif 000014
【図１４】
0006428167.tif 000015
【図１５】
0006428167.tif 000016