(57)【特許請求の範囲】
【請求項１】
キー値の範囲長の数値リングが分割された各区間と、処理手段とを、関連付ける振り分け表を記憶する振り分け表記憶手段と、
取得した入力データを、当該入力データから得られたキー値に関連付けられている前記処理手段に、振り分ける振り分け手段と、
前記区間のキーの区間を、前記区間の各々に振り分けられた前記入力データ数から求めたシフト量分ずらすキー範囲変更手段と、を備え、
前記キー範囲変更手段は、前記区間の各々に割り振られる前記入力データ数の偏り度合いが最小となる前記シフト量を決定して、前記区間の各々のキーの区間をずらす
振り分け装置。
【請求項２】
前記キー範囲変更手段は、所定値以下のシフト量候補値を選択し、前記区間の各々の範囲を前記シフト量候補値分ずらした場合に前記区間の各々に割り振られる過去の前記入力データ数の偏り度合いを見積もり、前記偏り度合いが最小となるシフト量候補値を前記シフト量として決定して、前記区間の各々のキーの区間をずらす請求項１の振り分け装置。
【請求項３】
前記キー範囲変更手段は、前記偏り度合いが最小となる前記シフト量候補値が複数ある場合、絶対値が最も小さい前記シフト量候補値を前記シフト量として決定する、
請求項２の振り分け装置。
【請求項４】
前記偏り度合いは、前記区間の各々に割り振られる過去の入力データ数の最大値と最小値の差である、請求項１乃至３の何れか１項の振り分け装置。
【請求項５】
請求項１乃至４の何れか１項の振り分け装置と、
関連付けられた前記区間の範囲に属するキー値を持つ前記入力データを前記振り分け装置から受信して、所定の処理を行う前記処理手段をおのおの備える複数のデータ処理装置と、を包含するデータ処理システム。
【請求項６】
前記振り分け装置の前記キー範囲変更手段は、前記シフト量の通知を前記データ処理装置の各々に送信し、
前記データ処理装置の各々は、関連付けられた前記区間のキー値に対応するデータを格納する処理データ表を記憶する処理データ記憶手段を、さらに備え、
前記処理手段は、前記通知を受信すると、関連付けられた前記区間の範囲の第１の境界側のシフト量分のデータである第１の部分を、前記第１の境界側に隣接する前記区間に関連付けられた第１の他の前記データ処理装置に送信し、第２の他の前記データ処理装置から自装置に関連付けられた前記区間の範囲の第２の境界側のシフト量分のデータである第２の部分を受信して、自装置が備える処理データ表に対して前記第１の部分の削除、前記第２の部分の追加を実行する請求項５のデータ処理システム。
【請求項７】
前記データ処理装置の前記処理手段は、前記振り分け装置から入力データを受信して、受信した入力データのキー値が自装置に関連付けられた区間の範囲内でなければ、入力データを前記振り分け装置に戻す、請求項５乃至６の何れか１項のデータ処理システム。
【請求項８】
キー値の範囲長の数値リングが分割された各区間と、処理手段とを、関連付ける振り分け表を記憶し、
取得した入力データを、当該入力データから得られたキー値に関連付けられている前記処理手段に振り分け、
前記区間のキーの区間を、前記区間の各々に振り分けられた前記入力データ数から求めたシフト量分ずらし、
前記区間の各々に割り振られる過去の前記入力データ数の偏り度合いが最小となるシフト量を決定して、前記区間の各々のキーの区間をずらす、振り分け方法。
【請求項９】
前記偏り度合いは、前記区間の各々に割り振られる過去の入力データ数の最大値と最小値の差である、請求項８の振り分け方法。
【請求項１０】
コンピュータに、請求項８乃至９の何れか１項の振り分け方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振り分け装置、データ処理システム、振り分け方法、および、プログラム、特に入力データを、分散データベースを格納する処理装置に振り分ける、振り分け装置、データ処理システム、振り分け方法、および、プログラムに関する。
【背景技術】
【０００２】
特許文献１は、大規模なデータベースをキーの区間によって複数のテーブルに分割し、各テーブルを複数のデータ処理装置に一意に割り当てるシステムを開示する。このシステムは、データベースへのアクセス競合をなくし、高速なトランザクションを実現することを意図している。
【０００３】
当該システムでは、各データ処理装置が処理するデータのキーの区間が決められている。したがって、入力データのキーに偏りがあると一部の処理装置に入力データが集中し、当該処理装置に振り分けられる入力データの応答時間が長くなってしまうという問題がある。
【０００４】
この問題に対処するため、当該システムは、分割された各テーブルのキーの先頭からの一部と末尾からの一部のデータのコピーを、他の処理装置上のテーブルにも格納しておく。当該システムは、トランザクション処理のたびに複数の処理装置に配置されたコピーを同期させる。
【０００５】
特許文献２も、大規模なデータベースをキーの区間によって複数のテーブルに分割し、各テーブルを複数のデータ処理装置に一意に割り当てるシステムを開示する。このシステムでは、負荷の低いノードが負荷の高いノードの範囲を引き継ぐ。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第3468181号公報
【特許文献２】特開2013-54521号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１のシステムは、各データ処理装置にデータのコピーを格納する分のメモリと、トランザクションのたびに同期のための時間が必要となる。したがって、リソースの無駄が発生する。
【０００８】
特許文献２のシステムは、負荷の低いノードが、負荷の高いノードの範囲のデータベースをそのまま引き継ぐ。したがって、入力データのキーの偏りにより、一部の処理装置に入力データが集中する課題を解決しない。
【０００９】
本願発明は、上述のリスクを低減させるための振り分け装置、処理システム、振り分け方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明にかかる一実施の形態の振り分け装置は、キー値の範囲長の数値リングが分割された各区間と、処理手段とを、関連付ける振り分け表を記憶する振り分け表記憶手段と、取得した入力データを、当該入力データから得られたキー値に関連付けられている前記処理部に、振り分ける振り分け手段と、前記区間のキーの区間を、前記区間の各々に振り分けられた前記入力データ数から求めたシフト量分ずらすキー範囲変更手段と、を備える。
【００１１】
本発明にかかる一実施の形態の振り分け方法は、キー値の範囲長の数値リングが分割された各区間と、処理手段とを、関連付ける振り分け表を記憶し、取得した入力データを、当該入力データから得られたキー値に関連付けられている前記処理部に振り分け、前記区間のキーの区間を、前記区間の各々に振り分けられた前記入力データ数から求めたシフト量分ずらす。
【発明の効果】
【００１２】
本発明にかかる振り分け装置は、効率よく分散データベースのアクセス均等化を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態にかかるデータ処理システム３０の構成図である。
【図２】図２は、振り分け装置１０の振り分け部１３の動作フローチャートである。
【図３】図３は、キー範囲変更部１４の動作フローチャートである。
【図４】図４は、偏り度合の例を示す。
【図５】図５は、データ処理装置２０の処理部２１の動作フローチャートである。
【図６】図６は、図４の例のキーの区間を4000だけシフトした結果を示す。
【図７】図７は、図６のキーの区間の状態から、キーの区間を4000だけシフトした結果を示す。
【図８】図８は、第２の実施の形態にかかる振り分け装置１０の構成図である。
【発明を実施するための形態】
【００１４】
＜第１の実施の形態＞
＜概要＞
図１は、第１の実施の形態にかかるデータ処理システム３０の構成図である。データ処理システム３０は、振り分け装置１０と、当該振り分け装置１０にネットワーク３１で接続された複数台のデータ処理装置２０を包含する。
【００１５】
データ処理システム３０は、大規模なデータベースをキーの範囲によって複数のテーブル（以降、処理データ表とも呼ぶ）に分割し、各処理データ表を何れかのデータ処理装置２０に一意に格納している。すなわち、データ処理システム３０は、大規模なデータベースを処理データ表に分割して、複数のデータ処理装置２０にキーの区間を割り当てて、分散配置している。
【００１６】
振り分け装置１０は、データ処理システム３０の外部にある端末装置等（図示されない）から入力データを受信して、入力データのキーの値に従って、当該キーの値に対応する処理データ表を格納するデータ処理装置２０に当該入力データを転送する。ここで、キーの値に対応する処理データ表とは、当該処理データ表が包含する処理データのキーの範囲が、当該キーの値を包含する処理データ表である。
【００１７】
各データ処理装置２０は、振り分け装置１０から振り分けられた入力データを受信すると、入力データからキーの値を得て、処理データ表に格納された処理データを用いてデータ処理を実行する。使用される処理データは、入力データから得られたキーの値に対応するものである。なお、データ処理装置２０が行うデータ処理は、例えば、銀行の勘定系システムが行うトランザクション処理である。
【００１８】
データ処理システム３０において、入力データのキーの分布に偏りがあると、各データ処理装置２０に振り分けられる入力データの数にも偏りが発生する。本実施の形態のデータ処理システム３０は、この偏りを解消するように、データベースを分割するキーの区間を動的に変更する。データ処理システム３０が行うキーの区間の変更は、各データ処理装置２０に割り当てられたキーの区間のシフトである。
【００１９】
キーの区間のシフトにあたっては、各データ処理装置２０は、自装置の処理データ表のキーの区間の一方の境界にある一定量分のデータを読み出し、かつ、そのデータを処理データ表から削除する。そして、各データ処理装置２０は、読み出したデータ（以降、移動データとも呼ぶ）を、上記一方の境界に隣接する区間が割り当てられた他のデータ処理装置２０に送信する。当該他のデータ処理装置２０は、移動データを受信して、自装置の処理データ表に挿入する。
【００２０】
＜構成＞
図１が示すように、振り分け装置１０は、振り分け表記憶部１２、振り分け部１３、および、キー範囲変更部１４を包含する。
【００２１】
振り分け表記憶部１２は振り分け表を記憶する。振り分け表は、キーの区間ごとに、当該キーの区間が割り当てられているデータ処理装置２０の識別情報を格納する。或るキーの区間が割り当てられているデータ処理装置２０とは、当該キーの区間の処理データ表を格納しているデータ処理装置２０である。
【００２２】
なお、データ処理システム３０が行うキーの区間のシフトにあたっては、キーの最大値と最小値は連続した値として扱われる。すなわち、キーの値の加減は、キーの範囲長（キーの最大値）を法とした剰余算によって行われる。したがって、振り分け表は、キー値の範囲長の数値リング、すなわち、キー値で目盛がふられている円周が分割された各区間と、データ処理装置２０とを関連付ける表と言える。
【００２３】
振り分け部１３は、入力データを受信して、当該入力データのキーの値を得て振り分け表を検索し、当該入力データを当該キーの値が割り当てられているデータ処理装置２０に転送する。なお、振り分け部１３は、上述したようにデータ処理システム３０の外部から入力データを受信する場合と、データ処理装置２０から送り返された入力データを受信する場合とが有る。
【００２４】
キー範囲変更部１４は、振り分け部１３による入力データの振り分け状況を監視し、振り分けの偏りを検出すると、各データ処理装置２０に割り当てているキーの区間をシフトすること、および、シフト量を決定する。キー範囲変更部１４は、各データ処理装置２０に、上述したキーの区間のシフトを指示し、その後、振り分け表を更新する。
【００２５】
ここで、振り分け部１３、および、キー範囲変更部１４は、論理回路で構成される。振り分け部１３、または、キー範囲変更部１４は、コンピュータでもある振り分け装置１０のメモリ（図示されない）に格納され、振り分け装置１０のプロセッサ（図示されない）により実行されるプログラムによって実現されても良い。この場合、振り分け部１３、および、キー範囲変更部１４は、例えば、振り分けプロセス、および、キー範囲変更プロセスとして実装される。
【００２６】
振り分け表記憶部１２は、半導体メモリ装置、ディスク装置等の記憶装置である。
【００２７】
データ処理装置２０は、処理部２１、および、処理データ記憶部２２を包含する。
【００２８】
処理部２１は、振り分け装置１０の振り分け部１３から入力データを受信して、データ処理を実行する。さらに、処理部２１は、振り分け装置１０のキー範囲変更部１４から指示を受けて、キー範囲のシフトを実行する。
【００２９】
なお、処理部２１は、振り分け部１３から受信した入力データのキーの値が、自装置が記憶する処理データ表のキーの区間外である場合、入力データを振り分け部１３に送り返す。これは、各データ処理装置２０がキー範囲のシフトを実行中に、発生する一時的な事象である。
【００３０】
処理データ記憶部２２は、割り当てられたキーの区間の処理データ表を格納する。なお、各データ処理装置２０に格納される処理データ表のキーの区間は重複せず、各処理データ表を併せることで、元のデータベースと等しくなる。
【００３１】
ここで、処理部２１は論理回路で構成される。処理部２１は、コンピュータでもあるデータ処理装置２０のメモリ（図示されない）に格納され、データ処理装置２０のプロセッサ（図示されない）により実行されるプログラムによって実現されても良い。この場合、処理部２１は、例えば、処理プロセスとして実装される。
【００３２】
処理データ記憶部２２は、半導体メモリ装置、ディスク装置等の記憶装置である。
【００３３】
＜動作＞
図２は、振り分け装置１０の振り分け部１３の動作フローチャートである。
【００３４】
振り分け部１３は、入力データを受信すると（Ｓ１）、振り分け表を参照して、入力データのキーを含む区間に関連付けられているデータ処理装置２０を特定し、その処理部２１へ入力データを送信する（Ｓ２）。このとき、振り分け部１３は、一定期間内の入力データのキーの値の履歴を採取する。
【００３５】
その後、振り分け部１３は、キー範囲変更部１４を起動する（Ｓ３）。今の入力データ振り分けによって、キー範囲のシフトが必要になったかもしれないからである。
【００３６】
図３は、キー範囲変更部１４の動作フローチャートである。
【００３７】
キー範囲変更部１４は、起動されると、まず、現在のキーの区間における入力データの偏り度合（以降、現在の偏り度合と呼ぶ）を算出する（Ｓ１１）。現在の偏り度合は、一定期間内に、各データ処理装置２０に振り分けられた入力データの数の最大値と最小値の差分である。現在の偏り度合は、値が大きいほど偏りが大きいことを示す。キー範囲変更部１４は、上述したキーの履歴を参照して、現在の偏り度合を求める。なお、現在の偏り度合は、一定期間内に、各データ処理装置２０に振り分けられた入力データの数の最大値と最小値の比でも良い。
【００３８】
図４は、偏り度合の例を示す。本例のデータ処理システム３０は、３台のデータ処理装置２０、すなわち、データ処理装置Ａ、Ｂ、および、Ｃ、を包含する。図４の例において、データベースのキーは５桁の数値であり、キーの値の範囲は１から90000である。すなわち、キーの値の範囲長は90000である。図４は、列「データ処理装置」と列「キー範囲」によって、各データ処理装置２０に割り当てられているキーの区間を示す。
【００３９】
現在、キーの区間1乃至30000がデータ処理装置Ａに割り当てられている。キーの区間30001乃至60000がデータ処理装置Ｂに割り当てられている。キーの区間60001乃至90000がデータ処理装置Ｃに割り当てられている。
【００４０】
図４の列「入力データ数」は、キーの区間ごとの、一定期間内の入力データの数を示す。データ処理装置２０ごとの一定期間内の入力データの数の合計が、行「キー範囲変更量」における列「０（現在）」の列の数値で示されている。
【００４１】
図４によれば、過去一定期間内に、データ処理装置Ａは2600、データ処理装置Ｂは7500、データ処理装置Ｃは4600個の入力データを振り分けられている。入力データ割り当て数の最大値は7500、最小値は2600である。したがって、図４において、現在の偏り度合は、7500-2600で、4900となる。
【００４２】
現在の偏り度合を算出後（Ｓ１１）、キー範囲変更部１４は、現在の偏り度合が許容値以下であれば（Ｓ１２で偽）、動作を終了する。
【００４３】
現在の偏り度合が許容値より大きい場合（Ｓ１２で真）、キー範囲変更部１４は、キー範囲変更最大量Ｍについて、±Ｍの範囲でキーの区間を変更した場合の偏り度合を見積もる。そして、キー範囲変更部１４は、偏り度合が最も小さく、かつ、キーの区間のシフト量の絶対値が最も小さい、キーの区間の変更量を決定する（Ｓ１３）。
【００４４】
キー範囲変更部１４は、偏り度合の見積もりを、±Ｍの範囲内の複数の変更量候補について実施する。キー範囲変更部１４は、見積もり対象となる変更量候補を、例えば、±Ｍの範囲でキーの値が所定間隔となるように選んでも良いし、±Ｍの範囲を所定数に等分して選んでも良い。
【００４５】
偏り具合の許容値は、入力データの特徴やデータ処理システム３０に求められる要件に合わせてチューニングされるパラメータである。キー範囲変更最大量Ｍは、キーの区間を変更するためにかかる時間やシステムに与える負荷が、データ処理システム３０に求められる性能要件を満たすために許容される範囲で最大の値となるようにチューニングされるパラメータである。
【００４６】
図４に示す例は、キー範囲変更最大量Ｍを6000とし、2000ごとにキーの区間をシフトした場合の偏り度合の見積もり値を示している。図４において、行「キー範囲変更量」における列「2000」乃至「-6000」は、データ処理装置２０に割り当てられているキーの区間を-6000乃至+6000の範囲でシフトした場合の、一定期間内に各データ処理装置２０に振り分けられた入力データの数の合計を示す。
【００４７】
なお、図４の列「2000」乃至「-6000」における「(A)」〜「(F)」は、同一の記号が同一の範囲を表すことを意味する。すなわち、この範囲は、キーの範囲を示す線分をリング状にした時、重なる部分である。データ処理装置Ｃの現在のキーの区間60001〜90000を2000だけシフトしたキーの区間は、62001〜90000と、(A)の範囲であるキー1〜2000を合わせた範囲となる。
【００４８】
図４に示す例において、キーの区間を2000だけシフトした場合、データ処理装置Ａは3000、データ処理装置Ｂは7300、データ処理装置Ｃは4400個の入力データを振り分けられている。データ処理装置２０への入力データ割り当て数の最大値は7300、最小値は3000である。したがって、図４において、偏り度合は、7300-3000で、4300となる。
【００４９】
キーの区間を4000だけシフトした場合、データ処理装置Ａは3800、データ処理装置Ｂは6800、データ処理装置Ｃは4100個の入力データを振り分けられている。データ処理装置２０への入力データ割り当て数の最大値は6800、最小値は3800である。したがって、偏り度合は、6800-3800で、3000となる。
【００５０】
同様の計算で、キーの区間を6000だけシフトした場合、偏り度合は3100となり、-2000だけシフトした場合、偏り度合は4600となる。キーの区間を-4000だけシフトした場合、偏り度合は4400となり、-6000だけシフトした場合、偏り度合は3800となる。
【００５１】
したがって、図４の例では、偏り度合が最も小さくなるキーの区間のシフト量は、偏り度合が3000であるキーの区間の変更量である4000となる。本変更量4000は、キーの区間の変更量の絶対値が最も小さい値でもある。
【００５２】
キー範囲変更部１４は、キー範囲ごとの、一定期間内の入力データの数の合計の最大値が最も小さくなる（データ処理装置Ｂの入力データ数合計が6700になる）キーの区間の変更量-6000とは異なるキーの区間の変更量を選択することになる。
【００５３】
キー範囲ごとの、一定期間内の入力データの数の合計は、キーの区間を4000シフトすることにより、データ処理装置Ａは2600から3800に増え、データ処理装置Ｂは7500から6800に減り、データ処理装置Ｃは4600から3800に減る。
【００５４】
つまり、今後の入力データがこれまでと同様のキーの分布で受信された場合、キーの区間の変更により、データ処理装置Ｂに振り分けられる入力データの数が少し減り、データ処理プロセスＢへの集中度合が緩和される。同時にデータ処理装置Ｃに振り分けられる入力データの数も少し減る。その代わりに、データ処理装置Ａに振り分けられる入力データの数が増える。ただし、データ処理装置Ａに振り分けられる入力データの数は、データ処理装置Ｂやデータ処理装置Ｃに振り分けられる入力データの数に比べれば少なく、問題はない。
【００５５】
図３のＳ１３でキーの区間の変更量を決定した後、キー範囲変更部１４は、各データ処理装置２０に対してキー範囲変更要求を送信する（Ｓ１４）。キー範囲変更要求は、前述したキー範囲のシフトを各データ処理装置２０に指示する通知であり、キー範囲のシフト量を含む。
【００５６】
キー範囲がシフトした結果、各データ処理装置２０は、記憶している処理データのうち、自装置の割り当て範囲から外れたキーの区間に対応するデータ（移動データ）を、当該範囲を新たに割り当てられたデータ処理装置２０に送信することになる。キー範囲変更要求は、この移動データを送信する宛先となるデータ処理装置２０の識別情報を含んでいても良い。
【００５７】
キー範囲変更部１４は、このデータ処理装置２０の識別情報を、例えば、振り分け表から取得する。移動データの送信先データ処理装置２０は、キー範囲変更要求の送信先のデータ処理装置２０のキー値の割り当て区間に隣接した区間を割り当てられているデータ処理装置２０である。キー範囲変更部１４は、移動データ送信先のデータ処理装置２０が、キー値の区間の高位側または低位側のどちら側に隣接しているかは、たとえば、シフト量の符号から判断する。図４の例では、シフト量がプラスであれば、移動データの送信先データ処理装置２０は、高位側に隣接する区間に割り当てられたデータ処理装置２０である。
【００５８】
最後に、キー範囲変更部１４は、各データ処理装置２０がキー範囲変更応答を送信してくるのを待ち合わせる。キー範囲変更部１４は、全データ処理装置２０からキー範囲変更応答を受信すると、振り分け表を更新して決定したキー範囲のシフトを反映する（Ｓ１５）。
【００５９】
これ以降、振り分け部１３は、変更されたキーの区間に従って、入力データをデータ処理装置２０に送信する。
【００６０】
図５は、データ処理装置２０の処理部２１の動作フローチャートである。処理部２１は、振り分け部１３、または、他の処理部２１から電文を受信する（Ｓ２１）。受信した電文が振り分け部１３から送信された入力データである場合（Ｓ２２で真）、処理部２１は、入力データからキーを得て、当該キーは自装置が記憶する処理データ表のキーの区間内か否かをチェックする（Ｓ２３）。
【００６１】
入力データからキーを得たキーが、自装置が記憶する処理データ表のキーの区間内であれば（Ｓ２３で真）、処理部２１は、キーに対応する処理データを用いて業務処理を実行する（Ｓ２４）。そうでなければ（Ｓ２３で偽）、処理部２１は、入力データを振り分け部１３に送り返す。
【００６２】
これは、キー範囲のシフトの処理過程で一時的に発生する誤振り分けであり、振り分け部１３が振り分けをし直す必要がある為、処理部２１は、入力データを振り分け部１３に送り返す。
【００６３】
この誤振り分けは、以下の場合に発生する。キーの範囲のシフト前後にデータ処理システム３０に入力された入力データは、ネットワーク３１上での電文の追い抜きによって、複数のデータ処理装置２０への到達順序が振り分け装置１０における送信順序と入れ替わる場合がある。この結果、データ処理装置２０が移動データの読み出しと削除を実施後、移動データのキーの範囲に該当する入力データが、当該データ処理プロセスに入力されることになる場合がある。また、移動データを受信したデータ処理装置２０が、移動データを処理データ表に挿入する前に、変更後のキーの範囲の入力データが当該データ処理装置２０に振り分けられる場合も有る。
【００６４】
受信した電文が他の処理部２１から送信された電文である場合（Ｓ２２で偽）、処理部２１は、入力電文がキー範囲変更要求か否かをチェックする（Ｓ２６）。
【００６５】
入力電文がキー範囲変更要求である場合（Ｓ２６で真）、処理部２１は、処理データ表からキー範囲変更要求に従って移動データを読み出し、当該部分を自装置の処理データ表から削除する（Ｓ２７）。すなわち、処理部２１は、キー範囲変更要求に格納されているシフト量から、キー範囲のシフト後、自装置の割り当て範囲から外れるキー範囲の処理データを読み出して、かつ、当該部分を自装置の処理データ表から削除する。
【００６６】
そして、処理部２１は、移動データを移動先の処理部２１へ送信する（Ｓ２８）。このとき、処理部２１は、移動先の処理部２１を含むデータ処理装置２０の識別情報をキー範囲変更要求から取得する。処理部２１は、移動先の処理部２１を含むデータ処理装置２０の識別情報を予め記憶していても良い。データ処理システム３０の構成が決定すれば、各データ処理装置２０に割り当てられたキーの区間の両隣の区間を割り当てられたデータ処理装置２０は、固定される。
【００６７】
最後に処理部２１は、振り分け部１３にキー範囲変更応答を通知する（Ｓ２９）。
【００６８】
入力電文がキー範囲変更要求でない場合（Ｓ２６で偽）、すなわち入力電文が他の処理部２１が送信した移動データである場合、処理部２１は、受信した移動データを処理データ表に挿入する（Ｓ３０）。
【００６９】
図６は、図４の例のキーの区間を4000だけシフトした結果を示す。図６における「入力データ数」は、キーの区間を変更している間に入力データのキーの分布が、図４の状態から変化がなかった場合のデータを示している。
【００７０】
図６について、入力データの偏り度合の見積もり値が最も小さくなる時のキーの区間のシフト量は、4000と6000である。この時、偏り度合の見積もり値は2900になる。キー範囲変更部１４は、偏り度合の見積もり値が同じである場合、値の小さいシフト量を選択する。したがって、図６の例について、キー範囲変更部１４はキーの区間の変更量として4000を選択する。
【００７１】
図７は、図６のキーの区間の状態から、キーの区間を4000だけシフトした結果を示す。
【００７２】
このシフト後の入力データが、図３及び図６と同様のキーの分布で受信された場合、キーの区間のシフトにより、データ処理装置Ｂに振り分けられる入力データの数が少し減り、データ処理装置Ｂへの集中度合が緩和される。同時にデータ処理装置Ｃに振り分けられる入力データの数も少し減る。その代わりに、データ処理装置Ａに振り分けられる入力データの数が増えるが、データ処理装置Ｂに振り分けられる入力データの数に比べれば少なく、問題はない。
【００７３】
図７における「入力データ数」は、キーの区間を変更している間に入力データのキーの分布が、図６の状態から変化がなかった場合のデータを示している。
【００７４】
図７について、入力データの偏り度合の見積もり値が最も小さくなる時のキーの区間のシフト量は、0と2000である。この時、偏り度合の見積もり値は2900になる。キー範囲変更部１４は、偏り度合の見積もり値が同じである場合、値の小さいシフト量を選択する。したがって、図７の例について、キー範囲変更部１４はキーの区間の変更量として0を採択する。入力データのキーの分布に変化が無ければ、キー範囲変更部１４は、キーの区間のシフトを行わない。
【００７５】
つまり、データ処理システム３０は、現在の入力データのキーの分布においては、偏りが少ない負荷分散状態を達成したことになる。これ以降に、入力データのキーの分布に変化があれば、キー範囲変更部１４はキーの区間の変更を再び実行する。
【００７６】
＜効果＞
本実施の形態の振り分け装置１０は、効率よく分散データベースのアクセス均等化を図ることができる。その理由は、キー範囲変更部１４が、各データ処理装置２０に割り振られる入力データ量の偏り具合が小さくなるように、各データ処理装置２０に割り当てられるキーの区間をシフトするからである。
【００７７】
図４の例においては、振り分け装置１０がキーの区間の変更を行う前は、最も多く入力データを処理していたデータ処理装置Ｂは、最も少なく入力データを処理していたデータ処理装置Ａの約３倍の入力データを処理していた。キーの区間を変更後は、最も多く入力データを処理しているデータ処理Ｂは、最も少なく入力データを処理しているデータ処理装置Ｃの約２倍になっている。
【００７８】
この結果、入力データが集中しているデータ処理装置Ｂに振り分けられる入力データに対する応答時間を改善することができる。
【００７９】
また、本実施の形態の振り分け装置１０は、データの移動により、データ処理システム３０への影響を抑制することができる。その理由は、キー範囲変更部１４が、１度に行うキーの区間の変更量を、キー範囲変更最大量Ｍ以下に抑えるからである。
【００８０】
図４の例においては、振り分け装置１０はキーの区間の変更を２度に分けて行っており、データ処理システム３０への影響を抑制している。
【００８１】
＜第一の実施形態の変形＞
本実施形態の振り分け装置１０は、各データ処理装置２０が処理データ表を保持していない場合にも適用することが出来る。この場合、キー範囲変更部１４は、キー範囲変更要求および、キー範囲変更応答の受信（図３のＳ１４及びＳ１５）は行わなくて良い。また、データ処理装置２０の処理部２１は、この関連の処理、例えば、移動データの送受信（図５のＳ２６乃至Ｓ３０）を行わなくて良い。
【００８２】
＜第２の実施形態＞
図８は、第２の実施の形態にかかる振り分け装置１０の構成図である。本実施の形態の振り分け装置１０は、振り分け表記憶部１２、振り分け部１３、および、キー範囲変更部１４を備える。
【００８３】
振り分け表記憶部１２は、キー値の範囲長の数値リングが分割された各区間と、処理部２１とを、関連付ける振り分け表を記憶する。振り分け部１３は、取得した入力データを、当該入力データから得られたキー値に関連付けられている処理部２１に、振り分ける。キー範囲変更部１４は、区間のキーの区間を、区間の各々に振り分けられた入力データ数から求めたシフト量分ずらす。
【００８４】
本実施の形態の振り分け装置１０は、効率よく分散データベースのアクセス均等化を図ることができる。その理由は、キー範囲変更部１４が、割り当て実績に基づいて、各処理部２１に割り当てられるキーの区間をシフトするからである。
【００８５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００８６】
１０    振り分け装置
１２    振り分け表記憶部
１３    振り分け部
１４    キー範囲変更部
２０    データ処理装置
２１    処理部
２２    処理データ記憶部
３０    データ処理システム
３１    ネットワーク
【図１】
0006447147.tif 000002
【図２】
0006447147.tif 000003
【図３】
0006447147.tif 000004
【図４】
0006447147.tif 000005
【図５】
0006447147.tif 000006
【図６】
0006447147.tif 000007
【図７】
0006447147.tif 000008
【図８】
0006447147.tif 000009