(57)【要約】【課題】複数のデータ蓄積ノードに対して、効率的に入力データを分割配置することができるデータ分割処理装置を提供する。【解決手段】複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理装置であって、入力データを解析して、該入力データの種別を特定する入力データ解析手段と、所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理手段と、入力データの種別と使用する配置処理とを関連付ける設定値を入力する設定値入力手段と、設定値入力手段より入力した設定値に基づいて、配置処理手段の何れかを選択して、入力データを選択した配置処理手段に受け渡す配置処理選択手段と、配置処理選択手段によって選択した配置処理手段が決定したデータ蓄積ノードに対して、入力データを蓄積するデータ蓄積手段とを備える。【選択図】    図１
2004348338.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割装置であって、
前記入力データを解析して、該入力データの種別を特定する入力データ解析手段と、
所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理手段と、
入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力手段と、
前記設定値入力手段より入力した設定値に基づいて、前記配置処理手段の何れかを選択して、前記入力データを選択した配置処理手段に受け渡す配置処理選択手段と、
前記配置処理選択手段によって選択した配置処理手段が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積手段と
を備えたことを特徴とするデータ分割処理装置。
【請求項２】
前記配置処理手段は、前記入力データに含まれるキー値の値域に基づいて、前記データ蓄積ノードを決定することを特徴とする請求項１に記載のデータ分割処理装置。
【請求項３】
前記配置処理手段は、値域に基づいて決定したデータ蓄積ノードをさらにハッシュ値によってデータ蓄積ノードを決定することを特徴とする請求項２に記載のデータ分割処理装置。
【請求項４】
前記配置処理手段は、複数或いは存在するすべてのデータ蓄積ノードに対して、前記入力データの複製を蓄積するようにデータ蓄積ノードを決定することを特徴とする請求項１に記載のデータ分割処理装置。
【請求項５】
前記配置処理手段は、特定のデータ蓄積ノードに対して、前記入力データを蓄積するようにデータ蓄積ノードを決定することを特徴とする請求項１に記載のデータ分割処理装置。
【請求項６】
複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理方法であって、
前記入力データを解析して、該入力データの種別を特定する入力データ解析過程と、
所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理過程と、
入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力過程と、
前記設定値入力過程より入力した設定値に基づいて、前記配置処理過程の何れかを選択して、前記入力データを選択した配置処理過程に受け渡す配置処理選択過程と、
前記配置処理選択過程によって選択した配置処理過程が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積過程と
を有することを特徴とするデータ分割処理方法。
【請求項７】
複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理プログラムであって、
前記入力データを解析して、該入力データの種別を特定する入力データ解析処理と、
所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理と、
入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力処理と、
前記設定値入力処理より入力した設定値に基づいて、前記配置処理の何れかを選択して、前記入力データを選択した配置処理に受け渡す配置処理選択処理と、
前記配置処理選択処理によって選択した配置処理が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積処理と
をコンピュータに行わせることを特徴とするデータ分割処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理装置、データ分割処理方法及びデータ分割処理プログラムに関する。
【０００２】
【従来の技術】
従来から、複数のコンピュータ（ノード）をＳｈａｒｅｄ  Ｎｏｔｈｉｎｇで利用する並列ＤＢＭＳ（Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）においては、入力データを各ノードに効率的に分割配置することが必要となる。この目的を達成するために、値域分割とハッシュ分割を組み合わせて、入力データをハッシュ分割して格納するノードを決定した後に、このノード内において、値域分割するデータベースが知られている（特許文献１）。
【０００３】
【特許文献１】
特開平１１−３１２１５０号公報（第４図）
【０００４】
【発明が解決しようとする課題】
しかしながら、特許文献１に示すデータ分割方法にあっては、ＤＢＭＳ内部に固定的に定義されており、ＤＢＭＳを利用するユーザは提供される分割方式の中から選ぶことしか出来ず、ユーザが扱おうとするデータの特性やデータ量に応じた、データ分割についてのきめ細かなチューニングを行うということは出来ないという問題がある。そのため、分割のキーとして利用しようとした属性に偏りがある場合、データが蓄積されるノードも偏ってしまうことになり、パフォーマンスや最大蓄積データ量においてマイナス要因となる。例えばホテル業において年間の宿泊客のデータを取り扱うような場合、データ分割のキーとして、“月”を選ぶとすると、月によって利用客の数が異なり、特に繁忙期のデータ量が極端に多い場合、データが蓄積される蓄積ノードのデータ量も偏ってしまうという問題がある。これは、入力データを各ノードに効率的に分割配置することを目的とするデータベースにとっては望ましいことではない。
【０００５】
本発明は、このような事情に鑑みてなされたもので、複数のデータ蓄積ノードに対して、効率的に入力データを分割配置することができるデータ分割処理装置、データ分割処理方法及びデータ分割処理プログラムを提供することを目的とする。
【０００６】
【課題を解決するための手段】
請求項１に記載の発明は、複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理装置であって、前記入力データを解析して、該入力データの種別を特定する入力データ解析手段と、所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理手段と、入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力手段と、前記設定値入力手段より入力した設定値に基づいて、前記配置処理手段の何れかを選択して、前記入力データを選択した配置処理手段に受け渡す配置処理選択手段と、前記配置処理選択手段によって選択した配置処理手段が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積手段とを備えたことを特徴とする。
【０００７】
請求項２に記載の発明は、前記配置処理手段は、前記入力データに含まれるキー値の値域に基づいて、前記データ蓄積ノードを決定することを特徴とする。
【０００８】
請求項３に記載の発明は、前記配置処理手段は、値域に基づいて決定したデータ蓄積ノードをさらにハッシュ値によってデータ蓄積ノードを決定することを特徴とする。
【０００９】
請求項４に記載の発明は、前記配置処理手段は、複数或いは存在するすべてのデータ蓄積ノードに対して、前記入力データの複製を蓄積するようにデータ蓄積ノードを決定することを特徴とする。
【００１０】
請求項５に記載の発明は、前記配置処理手段は、特定のデータ蓄積ノードに対して、前記入力データを蓄積するようにデータ蓄積ノードを決定することを特徴とする。
【００１１】
請求項６に記載の発明は、複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理方法であって、前記入力データを解析して、該入力データの種別を特定する入力データ解析過程と、所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理過程と、入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力過程と、前記設定値入力過程より入力した設定値に基づいて、前記配置処理過程の何れかを選択して、前記入力データを選択した配置処理過程に受け渡す配置処理選択過程と、前記配置処理選択過程によって選択した配置処理過程が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積過程とを有することを特徴とする。
【００１２】
請求項７に記載の発明は、複数のデータ蓄積ノードに対して入力データを分割配置するデータ分割処理プログラムであって、前記入力データを解析して、該入力データの種別を特定する入力データ解析処理と、所定の配置処理を行うことにより配置先のデータ蓄積ノードを決定する複数の配置処理と、入力データの種別と使用する前記配置処理とを関連付ける設定値を入力する設定値入力処理と、前記設定値入力処理より入力した設定値に基づいて、前記配置処理の何れかを選択して、前記入力データを選択した配置処理に受け渡す配置処理選択処理と、前記配置処理選択処理によって選択した配置処理が決定したデータ蓄積ノードに対して、前記入力データを蓄積するデータ蓄積処理とをコンピュータに行わせることを特徴とする。
【００１３】
【発明の実施の形態】
以下、本発明の一実施形態によるデータ分割処理装置を図面を参照して説明する。図１は同実施形態の構成を示すブロック図である。この図において、符号１〜１０は、データを蓄積するために備えられた蓄積ノードである。ここでは、１０台の蓄積ノードが備えられているものして説明する。そして、データ蓄積ノード１〜６は、データ蓄積ノード群Ｎ１に含まれ、データ蓄積ノード７〜９は、データ蓄積ノード群Ｎ２に含まれ、データ蓄積ノード９は、データ蓄積ノード群Ｎ３に含まれる。符号１１は、並列ＤＢＭＳを備えた制御／集約ノードであり、クライアント２２からの要求に応じて、蓄積先のデータ蓄積ノードを決定して、データの分割処理を行う。
【００１４】
次に、図２を参照して、図１に示す制御／集約ノードの構成を説明する。図２は、図１に示す制御／集約ノードの構成を示すブロック図である。図２において、符号１２は、クライアント２２からの要求に応じて、データの登録や検索を行う並列ＤＢＭＳである。符号１３は、データをデータ蓄積ノード１〜１０へ登録する場合に、データの特性やデータ量を解析する入力データ解析部である。符号１４は、データの配置先（蓄積先）を決定する複数の配置処理の中から１つ選択する配置処理選択部である。符号１５は、複数ある配置処理の１つである配置処理であり、ここでは配置処理Ａ１５と称する。符号１６は、配置処理Ａ１５を構成する分割処理の１つである値域分割部であり、キー値の範囲に基づいて入力データを分割配置する。符号１７、１８は、ハッシュ値を求め、このハッシュ値に基づいて入力データを分割配置するハッシュ分割部である。符号１９は、１つの入力データを複製して、所定の複数のデータ蓄積ノード或いは存在する全てのデータ蓄積ノードに配置する配置処理Ｂである。符号２０は、入力データの特性、データ量に関わらず、特定のデータ蓄積ノードに配置する配置処理Ｃである。符号２１は、配置処理選択部１４、配置処理Ａ１５、配置処理Ｂ１９、配置処理Ｃ２０に対して、外部から入力した設定値を内部の変数に設定する設定部である。
【００１５】
次に、図２に示す制御／集約ノード１１の動作を設定する。ここでは、例として、ホテル業の年間宿泊客のデータを取り扱うものして説明する。
まず、管理者は、図示しないキーボードから設定値を入力する（ステップＳ１）。ここで入力された設定値は、設定部２１によって読み込まれ、内部に保持される。ここでいう設定値とは、以下の２つである。
（１）データ種別と配置処理を結び付ける設定値であり、「データ種別：配置処理識別子」というフォーマットで設定する。例えば、データ種別が「宿泊データ」であれば、「配置処理Ａ」を選択するという意味の設定値「宿泊者データ：配置処理Ａ」となる。また、「共通データ」であれば、「配置処理Ｂ」を選択するという意味の設定値「共通データ：配置処理Ｂ」となる。また、「従業員データ」であれば、「配置処理Ｃ」を選択するという意味の設定値「従業員データ：配置処理Ｃ」となる。これらの設定値は、設定部２１から配置処理選択部１４へ通知する。
（２）各配置処理の詳細を定義する設定値であり、「配置処理識別子：配置方法」というフォーマットで設定する。例えば、配置処理Ａは、キー値を宿泊日の「月」とし、このキー値に基づいて、値域分割により３つに分割した後、さらにハッシュ分割を用いて分割するという意味の設定値「配置処理Ａ：キー値＝７，８，９；ハッシュ分割１：キー値＝３，４，５，６；ハッシュ分割２：キー値＝１，２，１２＝固定蓄積ノード番号」となる。また、入力データの内容によらず複数の蓄積ノード（１〜１０）に入力データを配置するという意味の設定値「配置処理Ｂ：蓄積ノード番号＝１〜１０」となる。また、入力データによらず必ず固定の蓄積ノードに配置することを意味する設定値「配置処理Ｃ：蓄積ノード番号＝固定蓄積ノード番号」となる。これらの設定値は、設定部２１から各処理部へ通知する。
【００１６】
次に、ＤＢＭＳ１２は、クライアント２２からの処理要求を受け付ける（ステップＳ２）。ここでいう処理要求とは、データ検索、データ挿入、データ更新、データ削除等である。ＤＢＭＳ１２は、アクセスする先のデータ蓄積ノードを決定するために、処理要求の内容を入力データ解析部１３へ通知する。
【００１７】
これを受けて、入力データ解析部１３は、処理要求の内容を解析し、データ種別とキー値を抽出する。そして、この抽出したデータ種別とキー値及び処理要求を配置処理選択部１４へ受け渡す。これを受けて、配置処理選択部１４は、受け取ったデータ種別に基づいて、配置処理を選択し、この処理要求を各配置処理に対して出力する。
【００１８】
ここで、処理要求の具体例を挙げて処理動作を説明する。ここでは、設定部２１によって「宿泊者データ：配置処理Ａ」、「共通データ：配置処理Ｂ」、「従業員データ：配置処理Ｃ」と設定されたものとする。また、「配置処理Ａ：キー値＝７，８，９；ハッシュ分割１：キー値＝３，４，５，６；ハッシュ分割２：キー値＝１，２，１２＝１０」、「配置処理Ｂ：蓄積ノード番号＝１〜１０」、「配置処理Ｃ：蓄積ノード番号＝１０」と設定されたものとする。
【００１９】
まず、処理要求の内容がデータ登録であり、抽出したデータ種別が「宿泊データ」、キー値が「７（月）」とすると、配置処理選択部１４は、この処理要求を配置処理Ａ１５の値域分割部１６へ受け渡す。値域分割部１６は、受け取った処理要求のキー値が「７」であるので、この処理要求をハッシュ分割部１７へ渡す。続いて、ハッシュ分割部１７は、処理要求に含まれるデータ（例えば、宿泊日の１〜３１日）を使用してハッシュ処理を施し、得られた値のノード番号（例えば、ノード番号１〜６）を有するデータ蓄積ノードへ登録すべきデータを登録するように、ＤＢＭＳ１２に対して指示を出す。
【００２０】
また、処理要求の内容がデータ登録であり、抽出したデータ種別が「宿泊データ」、キー値が「５（月）」とすると、配置処理選択部１４は、この処理要求を配置処理Ａ１５の値域分割部１６へ受け渡す。値域分割部１６は、受け取った処理要求のキー値が「５」であるので、この処理要求をハッシュ分割部１８へ渡す。続いて、ハッシュ分割部１８は、処理要求に含まれるデータ（例えば、宿泊日の１〜３１日）を使用してハッシュ処理を施し、得られた値のノード番号（例えば、ノード番号７〜９）を有するデータ蓄積ノードへ登録すべきデータを登録するように、ＤＢＭＳ１２に対して指示を出す。
【００２１】
また、処理要求の内容がデータ登録であり、抽出したデータ種別が「宿泊データ」、キー値が「２（月）」とすると、配置処理選択部１４は、この処理要求を配置処理Ａ１５の値域分割部１６へ受け渡す。値域分割部１６は、受け取った処理要求のキー値が「２」であるので、この処理要求を固定のノード番号（例えば、ノード番号１０）を有するデータ蓄積ノードへ登録すべきデータを登録するように、ＤＢＭＳ１２に対して指示を出す。
【００２２】
また、処理要求の内容がデータ登録であり、抽出したデータ種別が「共通データ」とすると、配置処理選択部１４は、この処理要求を配置処理Ｂ１９へ受け渡す。配置処理Ｂ１９は、受け取った処理要求のデータをノード番号１〜１０のデータ蓄積ノードのすべてに登録すべきデータを登録するように、ＤＢＭＳ１２に対して指示を出す。これによりすべてのデータ蓄積ノードに同一のデータが登録されることとなる。
【００２３】
また、処理要求の内容がデータ登録であり、抽出したデータ種別が「従業員データ」とすると、配置処理選択部１４は、この処理要求を配置処理Ｃ２０へ受け渡す。配置処理Ｃ２０は、受け取った処理要求のデータをノード番号１０のデータ蓄積ノードに登録すべきデータを登録するように、ＤＢＭＳ１２に対して指示を出す。これにより１つの固定されたデータ蓄積ノードにデータが登録されることとなる。
【００２４】
このように、処理要求に含まれるデータの内容に応じて、蓄積先のノードを変えることが可能となるために効率よくデータ蓄積を行うことができる。特に、扱うデータが繁忙期（７，８，９月）、通常期（３，４，５，６月）、閑散期（１２，１，２月）というように、データ量に差がある場合にデータ蓄積ノードを効率良く使用することができる。
【００２５】
また、並列ＤＢＭＳとしてのトランザクション管理機能やユーザ管理機能と言った機能と、データ配置機能を分離して、データに応じて使用する配置処理を外部から設定できるようにしたため、データベースシステム構築後においても蓄積先を可変にすることができる。特に、データベースシステムの開発時においては、データ種別毎にデータ量を正確に見積もることが困難であるために、所定期間使用後に性能のチューニングをすることが一般的であるが、前述した装置を使用することにより、性能チューニングを容易に行うことが可能となる。
【００２６】
また、名称とそのＩＤの対応関係を取り扱うようなデータ（図３（ａ）の表２のデータ）は一般的にサイズが小さく、また更新頻度も低い。しかし、従来のように、１つのデータ蓄積ノードのみに配置しておくと、データ同士（図３の表１のデータと表２のデータ）の結合演算を行う様な場合は、データ蓄積ノード間を通信によってデータの受け渡しを行う必要があり、装置の負荷が多大なものとなる。これに対して、本発明による配置処理Ｂ１９を使用して、すべてのデータ蓄積ノードに同一のデータ（図３（ｂ）の表２データ）を配置することが可能となるため、他のデータ蓄積ノード間との通信を行う必要がないため、通信によるオーバーヘッドならびに、通信経路に対する負荷を無くすことが可能となる。
【００２７】
さらには、データ蓄積ノードの一部に局在化（図１のデータ蓄積ノード群Ｎ１、Ｎ２、Ｎ３）させてしまう配置処理を利用することで、このデータを利用するデータ操作が発生したときは、それ以外のノードに対しては処理要求が発生しない。よって、処理要求が発生しないノードに対しては負荷を抑制することが可能となるため、メンテナンス等を容易に行うことが可能となる。
【００２８】
なお、図１における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりデータ配置処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００２９】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００３０】
【発明の効果】
以上説明したように、この発明によれば、処理要求に含まれるデータの内容に応じて、蓄積先のノードを変えることが可能となるため、複数のデータ蓄積ノードに対して、効率的に入力データを分割配置することができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施形態の全体構成を示すブロック図である。
【図２】図１に示す制御／集約ノード１１の構成を示すブロック図である。
【図３】データ同士の結合演算を説明するための図である。
【符号の説明】
１〜１０・・・データ蓄積ノード
１１・・・制御／集約ノード
１２・・・ＤＢＭＳ
１３・・・入力データ解析部
１４・・・配置処理選択部
１５・・・配置処理Ａ
１６・・・値域分割部
１７、１８・・・ハッシュ分割部
１９・・・配置処理Ｂ（複数配置）
２０・・・配置処理Ｃ（特定配置）
２１・・・設定部
２２・・・クライアント
【図１】
2004348338.tif 000003
【図２】
2004348338.tif 000004
【図３】
2004348338.tif 000005