(57)【要約】【課題】分散データベースの処理効率を向上させる。【解決手段】データ分散装置１２０において、受信部１３０は、検索用のキーを含む複数のレコードをキー範囲ごとに個別のデータ３００として受信する。算出部１４０は、各データ処理装置に格納されているデータ３００のうち、受信部１３０により受信されたデータ３００と同じキー範囲のデータ３００の量を示す数値を第１値としてメモリ１２２から取得する。算出部１４０は、取得した第１値に、受信部１３０により受信されたデータ３００の量を示す数値を第２値として加算する。算出部１４０は、加算結果から配置情報値を算出する。選択部１５０は、算出部１４０により算出された配置情報値を比較し、比較結果に基づいて、複数のデータ処理装置の中から、受信部１３０により受信されたデータ３００を格納させるデータ処理装置を選択する。【選択図】図２
2018160183.tif 000002
【特許請求の範囲】
【請求項１】
検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信する受信部と、
各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、前記受信部により受信されたデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、前記受信部により受信されたデータの量を示す数値を第２値として加算し、加算結果から指標値を算出する算出部と、
前記算出部により算出された指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、前記受信部により受信されたデータを格納させるデータ処理装置を選択する選択部と、
前記受信部により受信されたデータを前記選択部により選択されたデータ処理装置に送信する送信部と
を備えるデータ分散装置。
【請求項２】
前記第１値および前記第２値のそれぞれによって示される量は、データの圧縮後のサイズと、データに含まれるレコードの件数との少なくともいずれかである請求項１に記載のデータ分散装置。
【請求項３】
前記算出部は、前記複数のデータ処理装置のそれぞれについて、前記第１値および前記第２値によって示されるサイズの合計値と、前記第１値および前記第２値によって示される件数の合計値とをそれぞれ前記加算結果として算出し、算出したサイズの合計値と第１係数との積と、算出した件数の合計値と第２係数との積との和を前記指標値として算出する請求項２に記載のデータ分散装置。
【請求項４】
前記第１係数および前記第２係数のそれぞれの値は、データ処理装置ごとにあらかじめ設定されている請求項３に記載のデータ分散装置。
【請求項５】
前記算出部は、前記加算結果によって示されるデータの量が多いほど大きい値を前記指標値として算出し、
前記選択部は、前記複数のデータ処理装置のうち、前記指標値が最も小さいデータ処理装置を選択する請求項１から４のいずれか１項に記載のデータ分散装置。
【請求項６】
前記選択部は、前記指標値が最も小さいデータ処理装置が２つ以上ある場合、当該２つ以上のデータ処理装置に格納されているデータがアクセスされる頻度を示す数値を前記メモリから取得し、取得した数値によって示される頻度が最も低いデータ処理装置を選択する請求項５に記載のデータ分散装置。
【請求項７】
前記選択部は、前記指標値が最も小さいデータ処理装置が２つ以上ある場合、当該２つ以上のデータ処理装置の性能を示す数値を前記メモリから取得し、取得した数値によって示される性能が最も高いデータ処理装置を選択する請求項５または６に記載のデータ分散装置。
【請求項８】
前記複数のデータ処理装置を備え、
前記複数のデータ処理装置の少なくとも１つが請求項１から７のいずれか１項に記載のデータ分散装置として動作する分散データベースシステム。
【請求項９】
データ分散装置が、検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信し、
前記データ分散装置が、各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、受信したデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、受信したデータの量を示す数値を第２値として加算し、加算結果から指標値を算出し、
前記データ分散装置が、算出した指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、受信したデータを格納させるデータ処理装置を選択し、
前記データ分散装置が、受信したデータを送信し、
前記データ分散装置により選択されたデータ処理装置が、前記データ分散装置から送信されたデータを受信し、受信したデータを格納するデータ分散方法。
【請求項１０】
コンピュータに、
検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信する受信処理と、
各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、前記受信処理により受信されたデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、前記受信処理により受信されたデータの量を示す数値を第２値として加算し、加算結果から指標値を算出する算出処理と、
前記算出処理により算出された指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、前記受信処理により受信されたデータを格納させるデータ処理装置を選択する選択処理と、
前記受信処理により受信されたデータを前記選択処理により選択されたデータ処理装置に送信する送信処理と
を実行させるデータ分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分散装置、分散データベースシステム、データ分散方法およびデータ分散プログラムに関するものである。
【背景技術】
【０００２】
大規模データを格納する分散データベースでは、データを複数のサーバに分散して配置するが、配置するデータに偏りが生じると、特定のサーバに負荷が集中するという課題がある。データ配置の均等化を図るための方法として、特許文献１では、大規模データを特定のキー値の範囲で分割し、対応するデータ処理装置に送信した後に、振り分け装置でデータの偏り具合を測定し、偏りが許容値を超える場合には、キー値の範囲をずらしてデータ処理装置間でデータを移動する方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１２８９７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般的には、処理効率化のために大規模データを圧縮して格納することが行われている。しかし、仮に、そのようなことを特許文献１に記載の技術で行おうとすると、データに偏りが生じたと判断した場合に、一度データ処理装置に格納したデータを読み出して移動する必要があるため、圧縮データの読み出し、データ伸長、対象範囲の削除、再圧縮という煩雑な手順が必要となり、処理効率が低くなってしまう。
【０００５】
本発明は、分散データベースの処理効率を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係るデータ分散装置は、
検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信する受信部と、
各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、前記受信部により受信されたデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、前記受信部により受信されたデータの量を示す数値を第２値として加算し、加算結果から指標値を算出する算出部と、
前記算出部により算出された指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、前記受信部により受信されたデータを格納させるデータ処理装置を選択する選択部と、
前記受信部により受信されたデータを前記選択部により選択されたデータ処理装置に送信する送信部とを備える。
【０００７】
前記第１値および前記第２値のそれぞれによって示される量は、データの圧縮後のサイズと、データに含まれるレコードの件数との少なくともいずれかである。
【０００８】
前記算出部は、前記複数のデータ処理装置のそれぞれについて、前記第１値および前記第２値によって示されるサイズの合計値と、前記第１値および前記第２値によって示される件数の合計値とをそれぞれ前記加算結果として算出し、算出したサイズの合計値と第１係数との積と、算出した件数の合計値と第２係数との積との和を前記指標値として算出する。
【０００９】
前記第１係数および前記第２係数のそれぞれの値は、データ処理装置ごとにあらかじめ設定されている。
【００１０】
前記算出部は、前記加算結果によって示されるデータの量が多いほど大きい値を前記指標値として算出し、
前記選択部は、前記複数のデータ処理装置のうち、前記指標値が最も小さいデータ処理装置を選択する。
【００１１】
前記選択部は、前記指標値が最も小さいデータ処理装置が２つ以上ある場合、当該２つ以上のデータ処理装置に格納されているデータがアクセスされる頻度を示す数値を前記メモリから取得し、取得した数値によって示される頻度が最も低いデータ処理装置を選択する。
【００１２】
前記選択部は、前記指標値が最も小さいデータ処理装置が２つ以上ある場合、当該２つ以上のデータ処理装置の性能を示す数値を前記メモリから取得し、取得した数値によって示される性能が最も高いデータ処理装置を選択する。
【００１３】
本発明の一態様に係る分散データベースシステムは、
前記複数のデータ処理装置を備え、
前記複数のデータ処理装置の少なくとも１つが前記データ分散装置として動作する。
【００１４】
本発明の一態様に係るデータ分散方法では、
データ分散装置が、検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信し、
前記データ分散装置が、各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、受信したデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、受信したデータの量を示す数値を第２値として加算し、加算結果から指標値を算出し、
前記データ分散装置が、算出した指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、受信したデータを格納させるデータ処理装置を選択し、
前記データ分散装置が、受信したデータを送信し、
前記データ分散装置により選択されたデータ処理装置が、前記データ分散装置から送信されたデータを受信し、受信したデータを格納する。
【００１５】
本発明の一態様に係るデータ分散プログラムは、
コンピュータに、
検索用のキーを含む複数のレコードを前記キーの値の範囲であるキー範囲ごとに個別のデータとして受信する受信処理と、
各キー範囲のデータを格納する複数のデータ処理装置のそれぞれについて、各データ処理装置に格納されているデータのうち、前記受信処理により受信されたデータと同じキー範囲のデータの量を示す数値を第１値としてメモリから取得し、取得した第１値に、前記受信処理により受信されたデータの量を示す数値を第２値として加算し、加算結果から指標値を算出する算出処理と、
前記算出処理により算出された指標値を比較し、比較結果に基づいて、前記複数のデータ処理装置の中から、前記受信処理により受信されたデータを格納させるデータ処理装置を選択する選択処理と、
前記受信処理により受信されたデータを前記選択処理により選択されたデータ処理装置に送信する送信処理とを実行させる。
【発明の効果】
【００１６】
本発明では、各データ処理装置に格納されているデータのうち、受信されたデータと同じキー範囲のデータの量と、受信されたデータの量との合計から求められる指標値の比較結果に基づいて、受信されたデータを格納させるデータ処理装置が選択される。このため、無用な偏りが生じることを事前に回避でき、事後的にデータ処理装置間でデータを移動する必要がなくなる。よって、分散データベースの処理効率が向上する。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１に係る分散データベースシステムの構成を示す図。
【図２】実施の形態１に係るデータ分散装置の構成を示すブロック図。
【図３】実施の形態１に係るデータ処理装置の動作を示すフローチャート。
【図４】実施の形態１に係るデータ配置情報テーブルの例を示す表。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態は、部分的に実施されても構わない。
【００１９】
実施の形態１．
本実施の形態について、図１から図４を用いて説明する。
【００２０】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る分散データベースシステム１００の構成を説明する。
【００２１】
分散データベースシステム１００は、複数のデータ処理装置１１０を備える。これら複数のデータ処理装置１１０の少なくとも１つは、データ分散装置１２０として動作する。
【００２２】
本実施の形態において、分散データベースシステム１００は、データ処理装置Ｘ１、データ処理装置Ｘ２およびデータ処理装置Ｘ３といった３つ以上のデータ処理装置１１０を備えている。これら３つ以上のデータ処理装置１１０のうち、データ処理装置Ｘ１がデータ分散装置１２０として動作する。分散データベースシステム１００には、データ規模に応じて、データ処理装置１１０を追加することが可能である。データ３００の分析等のための検索クエリは、この分散データベースシステム１００に対して発行される。
【００２３】
なお、データ分散装置１２０は、いずれのデータ処理装置１１０からも独立した装置として実装されてもよい。すなわち、データ分散装置１２０は、データ処理装置１１０を兼ねない専用の装置であってもよい。
【００２４】
分散データベースシステム１００は、図示していないインターネット等のネットワークを介して、複数のデータ生成装置２００と接続される。
【００２５】
本実施の形態において、分散データベースシステム１００は、データ生成装置Ｙ１、データ生成装置Ｙ２およびデータ生成装置Ｙ３といった３つ以上のデータ生成装置２００と接続されている。
【００２６】
各データ生成装置２００は、拠点、店舗、支社または支店といった、データ３００が発生する場所に設置される。分散データベースシステム１００は、本部、本社またはデータセンタといった、データ３００が集約される場所に設置される。
【００２７】
図２を参照して、本実施の形態に係るデータ分散装置１２０の構成を説明する。
【００２８】
データ分散装置１２０は、コンピュータである。データ分散装置１２０は、プロセッサ１２１を備えるとともに、メモリ１２２、補助記憶装置１２３および通信装置１２４といった他のハードウェアを備える。プロセッサ１２１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２９】
データ分散装置１２０は、機能要素として、受信部１３０と、算出部１４０と、選択部１５０と、送信部１６０と、格納部１７０とを備える。受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能は、ソフトウェアにより実現される。なお、データ分散装置１２０がデータ処理装置１１０を兼ねない専用の装置である場合は、データ分散装置１２０の構成から格納部１７０を省略することができる。
【００３０】
本実施の形態では、各データ処理装置１１０がデータ分散装置１２０を兼ねることができるように、各データ処理装置１１０の構成を図２に示したものと同じ構成としている。なお、データ処理装置１１０がデータ分散装置１２０を兼ねなくてよい場合は、データ処理装置１１０の構成から算出部１４０、選択部１５０および送信部１６０を省略することができる。
【００３１】
プロセッサ１２１は、各種処理を行うＩＣである。「ＩＣ」は、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。プロセッサ１２１は、例えば、ＣＰＵである。「ＣＰＵ」は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略語である。
【００３２】
メモリ１２２には、データ配置情報テーブル４００が記憶される。メモリ１２２は、例えば、フラッシュメモリまたはＲＡＭである。「ＲＡＭ」は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略語である。
【００３３】
補助記憶装置１２３には、データ３００が記憶される。補助記憶装置１２３は、例えば、フラッシュメモリまたはＨＤＤである。「ＨＤＤ」は、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。
【００３４】
通信装置１２４は、データを受信するレシーバおよびデータを送信するトランスミッタを含む。通信装置１２４は、例えば、通信チップまたはＮＩＣである。「ＮＩＣ」は、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄの略語である。
【００３５】
メモリ１２２には、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能を実現するプログラムであるデータ分散プログラムが記憶されている。データ分散プログラムは、プロセッサ１２１に読み込まれ、プロセッサ１２１によって実行される。メモリ１２２には、ＯＳも記憶されている。「ＯＳ」は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略語である。プロセッサ１２１は、ＯＳを実行しながら、データ分散プログラムを実行する。なお、データ分散プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００３６】
データ分散プログラムおよびＯＳは、補助記憶装置１２３に記憶されていてもよい。補助記憶装置１２３に記憶されているデータ分散プログラムおよびＯＳは、メモリ１２２にロードされ、プロセッサ１２１によって実行される。
【００３７】
データ分散装置１２０は、プロセッサ１２１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、データ分散プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ１２１と同じように、各種処理を行うＩＣである。
【００３８】
受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の処理の結果を示す情報、データ、信号値および変数値は、メモリ１２２、補助記憶装置１２３、または、プロセッサ１２１内のレジスタまたはキャッシュメモリに記憶される。
【００３９】
データ分散プログラムは、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の「部」を「手順」または「処理」に読み替えた各手順または各処理をコンピュータに実行させるプログラムである。データ分散プログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００４０】
＊＊＊動作の説明＊＊＊
主に図１を参照して、本実施の形態に係る分散データベースシステム１００およびデータ生成装置２００の動作を説明する。分散データベースシステム１００の動作は、本実施の形態に係るデータ分散方法に相当する。
【００４１】
各データ生成装置２００は、検索用のキーを含む複数のレコードをキー範囲ごとに個別のデータ３００として送信する。「キー範囲」とは、キーの値の範囲のことである。キーは、例えば、製品番号、日付または曜日である。
【００４２】
具体的には、各データ生成装置２００は、発生したデータ３００をキー範囲ごとに圧縮し、圧縮したデータ３００を分散データベースシステム１００に送信する。各データ生成装置２００は、任意のタイミングでデータ３００を送信してよいが、本実施の形態では３０分あるいは１時間といった間隔で定期的にデータ３００を送信する。必須ではないが、各データ生成装置２００は、データ３００の送信時に、圧縮後のデータサイズおよびレコード件数を分散データベースシステム１００に通知する。
【００４３】
各データ生成装置２００からデータ３００が送信されると、複数のデータ処理装置１１０のうちの１つが「マスタ」となる。すなわち、１つのデータ処理装置１１０がデータ分散装置１２０となる。データ分散装置１２０は、送信されたデータ３００を受信する。データ分散装置１２０は、データ配置情報テーブル４００を参照し、送信されたデータ３００をどのデータ処理装置１１０に格納すれば、データ３００の均衡化が図れるかを判断する。判断基準は、圧縮後のデータサイズとレコード件数との少なくともいずれかである。本実施の形態では、圧縮後のデータサイズとレコード件数との両方から、各データ処理装置１１０のハードウェア等の性能に応じて決められた計算式によって、指標値となる配置情報値が求められる。データ分散装置１２０は、配置情報値が最も小さいデータ処理装置１１０にデータ３００を送信して、データ配置情報テーブル４００を更新する。
【００４４】
データ分散装置１２０からデータ３００が送信されると、送信先のデータ処理装置１１０は、送信されたデータ３００を受信し、受信したデータ３００を格納する。
【００４５】
図２から図４を参照して、本実施の形態に係るデータ処理装置１１０の動作を説明する。
【００４６】
図３のステップＳ１において、受信部１３０は、検索用のキーを含む複数のレコードをキー範囲ごとに個別のデータ３００として受信する。
【００４７】
具体的には、受信部１３０は、キー範囲ごとに圧縮後されたデータ３００をデータ生成装置２００から受信する。
【００４８】
図３のステップＳ２において、受信部１３０は、この受信部１３０を備えるデータ処理装置１１０が「マスタ」のデータ処理装置１１０であるかどうか、すなわち、データ分散装置１２０であるかどうかを判定する。この判定は、あらかじめ設定されたフラグを参照することにより行われる。データ分散装置１２０であれば、図３のステップＳ３の処理が行われる。データ分散装置１２０でなければ、図３のステップＳ７の処理が行われる。
【００４９】
ステップＳ３の処理は、各キー範囲のデータ３００を格納する複数のデータ処理装置１１０のそれぞれについて行われる。ステップＳ３において、算出部１４０は、各データ処理装置１１０に格納されているデータ３００のうち、受信部１３０により受信されたデータ３００と同じキー範囲のデータ３００の量を示す数値を第１値としてメモリ１２２から取得する。算出部１４０は、取得した第１値に、受信部１３０により受信されたデータ３００の量を示す数値を第２値として加算する。算出部１４０は、加算結果から配置情報値を算出する。第１値および第２値のそれぞれによって示される量は、データ３００の圧縮後のサイズと、データ３００に含まれるレコードの件数との両方である。なお、第１値および第２値のそれぞれによって示される量は、データ３００の圧縮後のサイズと、データ３００に含まれるレコードの件数とのいずれか片方でもよい。
【００５０】
本実施の形態では、算出部１４０は、各データ処理装置１１０について、第１値および第２値によって示されるサイズの合計値と、第１値および第２値によって示される件数の合計値とをそれぞれ加算結果として算出し、算出したサイズの合計値と第１係数との積と、算出した件数の合計値と第２係数との積との和を配置情報値として算出する。第１係数および第２係数のそれぞれの値は、データ処理装置１１０ごとに、各データ処理装置１１０の特性に応じてあらかじめ設定されている。具体例として、補助記憶装置１２３の読み出し性能が高いデータ処理装置１１０については第１係数を低く設定し、プロセッサ１２１の処理性能が高いデータ処理装置１１０については第２係数を低く設定することが有効である。なお、第１係数および第２係数のそれぞれの値は、すべてのデータ処理装置１１０に共通に設定されていてもよい。
【００５１】
本実施の形態では、算出部１４０は、第１値および第２値の加算結果によって示されるデータ３００の量が多いほど大きい値を配置情報値として算出する。すなわち、第１係数および第２係数の少なくともいずれかの値は、０よりも大きい値に設定されている。
【００５２】
図４の例において、キー範囲Ｋ３のデータ３００がデータ生成装置２００から送信され、このデータ３００の圧縮後サイズが「１，０００」、レコード件数が「２００，０００」であるとする。圧縮後サイズをＳ、レコード件数をＲ、配置情報値をＱとしたとき、配置情報値の計算式は「Ｑ＝０．８×Ｓ＋０．２×Ｒ」であるとする。すなわち、第１係数の値が「０．８」、第２係数の値が「０．２」であるとする。
【００５３】
算出部１４０は、データ処理装置Ｘ１に格納されているキー範囲Ｋ３のデータ３００の圧縮後サイズ「２，０００」およびレコード件数「６００，０００」を第１値としてメモリ１２２から取得する。算出部１４０は、取得した第１値に、受信部１３０により受信されたデータ３００の圧縮後サイズ「１，０００」およびレコード件数「２００，０００」を第２値として加算する。圧縮後サイズ「３，０００」およびレコード件数「８００，０００」が加算結果として得られる。算出部１４０は、加算結果から「０．８×３，０００＋０．２×８００，０００」を計算することで配置情報値「１６２，４００」を得る。
【００５４】
同様に、算出部１４０は、データ処理装置Ｘ２に格納されているキー範囲Ｋ３のデータ３００の圧縮後サイズ「３，０００」およびレコード件数「５００，０００」を第１値としてメモリ１２２から取得する。算出部１４０は、取得した第１値に、受信部１３０により受信されたデータ３００の圧縮後サイズ「１，０００」およびレコード件数「２００，０００」を第２値として加算する。圧縮後サイズ「４，０００」およびレコード件数「７００，０００」が加算結果として得られる。算出部１４０は、加算結果から「０．８×４，０００＋０．２×７００，０００」を計算することで配置情報値「１４３，２００」を得る。
【００５５】
同様に、算出部１４０は、データ処理装置Ｘ３に格納されているキー範囲Ｋ３のデータ３００の圧縮後サイズ「３，５００」およびレコード件数「４００，０００」を第１値としてメモリ１２２から取得する。算出部１４０は、取得した第１値に、受信部１３０により受信されたデータ３００の圧縮後サイズ「１，０００」およびレコード件数「２００，０００」を第２値として加算する。圧縮後サイズ「４，５００」およびレコード件数「６００，０００」が加算結果として得られる。算出部１４０は、加算結果から「０．８×４，５００＋０．２×６００，０００」を計算することで配置情報値「１２３，６００」を得る。
【００５６】
図３のステップＳ４において、選択部１５０は、算出部１４０により算出された配置情報値を比較し、比較結果に基づいて、複数のデータ処理装置１１０の中から、受信部１３０により受信されたデータ３００を格納させるデータ処理装置１１０を選択する。
【００５７】
本実施の形態では、選択部１５０は、複数のデータ処理装置１１０のうち、配置情報値が最も小さいデータ処理装置１１０を選択する。
【００５８】
前述した例では、選択部１５０は、データ処理装置Ｘ１にキー範囲Ｋ３のデータ３００を追加した場合の配置情報値「１６２，４００」と、データ処理装置Ｘ２にキー範囲Ｋ３のデータ３００を追加した場合の配置情報値「１４３，２００」と、データ処理装置Ｘ３にキー範囲Ｋ３のデータ３００を追加した場合の配置情報値「１２３，６００」とを比較する。データ処理装置Ｘ３にキー範囲Ｋ３のデータ３００を追加した場合の配置情報値が最も小さいため、選択部１５０は、データ処理装置Ｘ３を選択する。
【００５９】
なお、配置情報値が最も小さいデータ処理装置１１０が２つ以上ある場合、選択部１５０は、任意の基準により、当該２つ以上のデータ処理装置１１０のいずれか１つを選択する。具体例として、選択部１５０は、当該２つ以上のデータ処理装置１１０に格納されているデータ３００がアクセスされる頻度を示す数値をメモリ１２２から取得し、取得した数値によって示される頻度が最も低いデータ処理装置１１０を選択する。あるいは、選択部１５０は、当該２つ以上のデータ処理装置１１０の性能を示す数値をメモリ１２２から取得し、取得した数値によって示される性能が最も高いデータ処理装置１１０を選択する。各データ処理装置１１０は、格納しているデータ３００がアクセスされる頻度を常時または定期的に計測し、計測値をデータ分散装置１２０に通知しているものとする。また、データ分散装置１２０は、各データ処理装置１１０のＣＰＵおよびＨＤＤ等のハードウェアの性能値をあらかじめ保持しているものとする。
【００６０】
図３のステップＳ５において、選択部１５０は、メモリ１２２上のデータ配置情報テーブル４００の内容を更新する。
【００６１】
前述した例では、選択部１５０は、ステップＳ４で選択したデータ処理装置Ｘ３とキー範囲Ｋ３との組み合わせに対応する圧縮後サイズ、レコード件数および配置情報値の値をそれぞれ「４，５００」、「６００，０００」および「１２３，６００」に更新する。
【００６２】
図３のステップＳ６において、選択部１５０は、この選択部１５０を備えるデータ処理装置１１０がステップＳ４で選択されたかどうか、すなわち、ステップＳ４で選択されたデータ処理装置１１０がデータ分散装置１２０であるかどうかを判定する。データ分散装置１２０であれば、ステップＳ７の処理が行われる。データ分散装置１２０でなければ、図３のステップＳ８の処理が行われる。
【００６３】
ステップＳ７において、格納部１７０は、受信部１３０により受信されたデータ３００を補助記憶装置１２３に格納する。
【００６４】
前述した例では、ステップＳ４でデータ処理装置Ｘ３が選択されるが、仮にステップＳ４でデータ処理装置Ｘ１が選択されたとすると、格納部１７０は、ステップＳ１で受信されたデータ３００を、同じキー範囲Ｋ３の格納済のデータ３００に追加する。このとき、格納済のデータ３００と追加されるデータ３００との両方が圧縮されているが、これらのデータ３００を伸長することは必須ではない。データ３００の形式等によって必要であれば、格納部１７０は、格納済のデータ３００と追加されるデータ３００とを伸長し、両データ３００を統合してからまとめて圧縮し、圧縮後のデータ３００を補助記憶装置１２３に格納してもよい。
【００６５】
ステップＳ８において、送信部１６０は、受信部１３０により受信されたデータ３００を選択部１５０により選択されたデータ処理装置１１０に送信する。
【００６６】
前述した例では、送信部１６０は、ステップＳ１で受信されたデータ３００をステップＳ４で選択されたデータ処理装置Ｘ３に送信する。データ処理装置Ｘ３は、ステップＳ１の処理を行って、データ分散装置１２０から送信されたデータ３００を受信し、その後、ステップＳ７の処理を行って、受信したデータ３００を格納済のデータ３００に追加する。
【００６７】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、各データ処理装置１１０に格納されているデータ３００のうち、受信されたデータ３００と同じキー範囲のデータ３００の量と、受信されたデータ３００の量との合計から求められる指標値の比較結果に基づいて、受信されたデータ３００を格納させるデータ処理装置１１０が選択される。このため、無用な偏りが生じることを事前に回避でき、事後的にデータ処理装置１１０間でデータ３００を移動する必要がなくなる。よって、分散データベースの処理効率が向上する。
【００６８】
本実施の形態によれば、大規模データを複数サーバに格納して処理を行うシステムにおいて、データサイズおよび件数からデータの偏りが起こりにくいデータ配置を特定して、システム全体の処理効率を向上させることができる。
【００６９】
本実施の形態では、データ処理装置１１０ごとに格納するデータ３００のキー範囲が固定されていないため、同じキー範囲のデータ３００を各データ処理装置１１０に分散して配置することができる。よって、同じキー範囲のデータ３００全体を対象とする検索クエリが発行された場合に、負荷を分散させることができ、処理効率が向上する。
【００７０】
＊＊＊他の構成＊＊＊
本実施の形態では、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能がソフトウェアにより実現されるが、変形例として、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能の一部が専用の電子回路により実現され、残りがソフトウェアにより実現されてもよい。
【００７１】
専用の電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡまたはＡＳＩＣである。「ＧＡ」は、Ｇａｔｅ  Ａｒｒａｙの略語である。「ＦＰＧＡ」は、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。「ＡＳＩＣ」は、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。
【００７２】
プロセッサ１２１、メモリ１２２および専用の電子回路を、総称して「プロセッシングサーキットリ」という。つまり、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能がソフトウェアにより実現されるか、ソフトウェアとハードウェアとの組み合わせにより実現されるかに関わらず、受信部１３０、算出部１４０、選択部１５０、送信部１６０および格納部１７０の機能は、プロセッシングサーキットリにより実現される。
【符号の説明】
【００７３】
１００  分散データベースシステム、１１０  データ処理装置、１２０  データ分散装置、１２１  プロセッサ、１２２  メモリ、１２３  補助記憶装置、１２４  通信装置、１３０  受信部、１４０  算出部、１５０  選択部、１６０  送信部、１７０  格納部、２００  データ生成装置、３００  データ、４００  データ配置情報テーブル。
【図１】
2018160183.tif 000003
【図２】
2018160183.tif 000004
【図３】
2018160183.tif 000005
【図４】
2018160183.tif 000006