(57)【特許請求の範囲】
【請求項１】
表形式の行データを少なくとも一つの属性値に基づいて複数のノードに配分し、それぞれの前記ノードで配分された前記行データの集まりを管理するデータ処理システムであって、
前記行データを複数の前記ノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示手段と、
前記データ配分条件とされた前記属性値の配分先ノードを決定するデータ配分先決定手段と、
前記データ配分条件に対応して複数の前記ノードに配分される前記行データごとに前記列を意味する属性を検索キーとするキー生成手段と、
生成された前記検索キーを前記行データに属性として付与するキー付与手段と、
前記検索キーが付与された前記行データを複数の前記ノードの少なくとも一つに登録するデータ登録手段と、
データ配分に利用した属性と前記検索キーとの対応関係が登録されるディクショナリと、
を有するデータ処理システム。
【請求項２】
少なくとも一つの表に対するデータ問合を処理するにあたり、
データ問合内容に応じて前記データ問合に前記検索キーを利用した選択演算を付与する問合加工手段と、
前記加工されたデータ問合を利用して複数の前記ノードで並列に前記データ問合を処理する問合処理手段とを、
さらに有する請求項１に記載のデータ処理システム。
【請求項３】
表形式の行データを少なくとも一つの属性値に基づいて複数のノードに配分し、それぞれの前記ノードで配分された前記行データの集まりを管理するデータ処理システムのコンピュータプログラムであって、
前記行データを複数の前記ノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示処理と、
データ配分条件とされた属性値の配分先ノードを決定するデータ配分先決定処理と、
前記データ配分条件に対応して複数の前記ノードに配分される前記行データごとに前記列を意味する属性を検索キーとするキー生成処理と、
生成された前記検索キーを前記行データに属性として付与するキー付与処理と、
前記検索キーが付与された前記行データを複数の前記ノードの少なくとも一つに登録するデータ登録処理と、
をデータ処理システムに実行させるコンピュータプログラム。
【請求項４】
少なくとも一つの表に対するデータ問合を処理するにあたり、
データ問合内容に応じて前記データ問合に前記検索キーを利用した選択演算を付与する問合加工処理と、
前記加工されたデータ問合を利用して複数の前記ノードで並列に前記データ問合を処理する問合実行処理とを、
さらに有する請求項３に記載のコンピュータプログラム。
【請求項５】
表形式の行データを少なくとも一つの属性値に基づいて複数のノードに配分し、それぞれの前記ノードで配分された前記行データの集まりを管理するデータ処理システムのデータ処理方法であって、
前記行データを複数の前記ノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示動作と、
データ配分条件とされた属性値の配分先ノードを決定するデータ配分先決定動作と、
前記データ配分条件に対応して複数の前記ノードに配分される前記行データごとに前記列を意味する属性を検索キーとするキー生成動作と、
生成された前記検索キーを前記行データに属性として付与するキー付与動作と、
前記検索キーが付与された前記行データを複数の前記ノードの少なくとも一つに登録するデータ登録動作と、
を有するデータ処理方法。
【請求項６】
少なくとも一つの表に対するデータ問合を処理するにあたり、
データ問合内容に応じて前記データ問合に前記検索キーを利用した選択演算を付与する問合加工動作と、
前記加工されたデータ問合を利用して複数の前記ノードで並列に前記データ問合を処理する問合処理動作とを、
さらに有する請求項５に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表データを複数台の計算機で分割して管理するデータ処理方法に関し、特に、表データの分割方法と分割された表データに対する問合せ処理方法、データ処理システムおよびそのコンピュータプログラムに関する。
【背景技術】
【０００２】
関係データベースにおいて表操作のことを関係代数演算、または関係演算という。関係演算の選択演算は、テーブルの中から条件に合った行を取り出す操作である。関係演算の射影演算は、テーブルの中から必要な列だけを指定してテーブルから取り出す操作である。
【０００３】
関係演算の結合演算は、図２に示すように、二つのテーブルを指定の条件により結合して一つのテーブルにする操作である。結合に利用する属性（表の列）を結合属性という。属性値の等しさによって二つのテーブルが結合される結合演算を特に等結合演算という。一般的に、結合演算は図示するようにテーブルの間の関係を利用して、二つのテーブルを結合する。
【０００４】
関係データベースにおいて、結合演算は特に負荷の高い処理であり、複数の計算機を用いて結合演算をハッシュ分割に基づいて並列に処理する手法が開発されている（非特許文献１）。ハッシュ分割手法は、テーブルを行ごとに分割に利用する属性（分割属性）のハッシュ値によって部分集合（クラスタ）に分割する。同一の値は常に同一のハッシュ値を持つため、同一クラスタに配分される。そのため、分割属性が結合属性と等しければ、等結合演算をクラスタごとに並列に処理することができる。
【０００５】
並列データベースは、テーブルを分割条件にもとづいて複数の表（分割表）に分け、上記分割表を複数台の計算機に配分して管理し、分割前の一つ以上のテーブルに対する関係演算を複数の計算機で並列に処理することで、問合せ処理を高速化する。
【０００６】
テーブル分割手法として、ハッシュ分割とキー範囲分割がよく用いられている。しかし、単純なハッシュ分割やキー範囲分割方式は一組の分割条件（これを分割キーと呼ぶ）に基づいてクラスタリングされるため、多面的な観点でのデータ問合せをデータの再配置なしに並列処理することができなかった。
【０００７】
複数の属性を利用した分割キーを利用して表を仮想的に多次元に分割した上で、多面的な観点でのデータ問合せに対してデータ処理対象となる分割表を絞り込む手法が提案されている（特許文献１、非特許文献２）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−４８３１８号公報
【非特許文献】
【０００９】
【非特許文献１】Kisuregawa,M.、Tanaka,H. and Moto-oka,T.: 「Application of hash to data base machine and its architecture」、New Generation computing、1983年3月
【非特許文献２】Padmanabhan,S.、Bhattacharjee,B.、Malkemus,T.、Cranston,L. and Huras,M.: 「Multi-dimensional clustering: a new data layout scheme in DB2」、In Proceedings of the 2003 ACM SIGMOD International Conference on Management of Data、p.637-641、2003年
【非特許文献３】Liu,C. and Chen,H.: 「A hash partition strategy for distributed query processing」、In Proceedings of the 5th International Conference on Extending Database Technology、p.371-387、1996年
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来のテーブル分割手法は、テーブルの一つの属性、あるいは複数の属性を一つに組合せた分割キーに基づいてデータをクラスタリングして複数のノードに分割する。一つの行は必ず一つのノードに配分される。従来手法には、データ分割時に利用した分割属性と異なる結合属性を用いた結合演算を並列処理する上で、データの再配置が必要となるという問題がある（非特許文献３）。
【００１１】
具体的な問題点を、三つのテーブルＲ１、Ｒ２、Ｒ３に対する２つ結合演算「Ｒ１．Ａ＝Ｒ２．Ａ」と「Ｒ２．Ｂ＝Ｒ３．Ｂ」を例に述べる。「Ｒ１．Ａ＝Ｒ２．Ａ」では、テーブルＲ１とＲ２が属性Ａで結合される。一方の「Ｒ２．Ｂ＝Ｒ３．Ｂ」では、テーブルＲ２とＲ３が属性Ｂで結合される問合せである。
【００１２】
「Ｒ１．Ａ＝Ｒ２．Ａ」を並列処理するためには、Ｒ１とＲ２がそれぞれ属性値Ａに基づいてデータ分割されている必要がある。一方で、「Ｒ２．Ｂ＝Ｒ３．Ｂ」を並列処理するには、Ｒ２とＲ３がそれぞれ属性値Ｂに基づいてデータ分割されている必要がある。つまり、ここで上記二つの問合せで、テーブルＲ２のデータ分割要求に矛盾が生じている。
【００１３】
従来手法では、「Ｒ１．Ａ＝Ｒ２．Ａ」を並列処理するとき、テーブルＲ２が属性値Ａに基づいて分割されていなければ、属性値Ａに基づいてテーブルＲ２の行データの動的再配置を行う。また、「Ｒ２．Ｂ＝Ｒ３．Ｂ」を並列処理するとき、テーブルＲ２が属性値Ｂに基づいて分割されていなければ、属性値Ｂに基づいてテーブルＲ２の行データの動的再配置を行う。このように、従来手法では、分割属性と異なる結合属性が指定されたときに計算機間のデータの再配置を避けることができないという問題がある。
【００１４】
図２に示すように、結合演算では複数の表は特定の列の属性値にもとづいて結合される。図２では、雑誌表の出版社IDが出版社表の出版社IDを参照している。Ｎ個（Ｎ＞１）の表間で結合の可能性はＮに比例して大きくなるが、一般的にテーブル間の参照関係は限定的であるため、有意な結合の組合せは限定される。
【００１５】
本発明は上述のような課題に鑑みてなされたものであり、結合属性になり得る複数の分割属性を利用してテーブルを分割することで、結合演算でも再配置を必要とすることなく、データ分割を行った表データに対する関係演算を並列に評価することができるデータ処理方法、データ処理システムおよびそのコンピュータプログラム、を提供するものである。
【課題を解決するための手段】
【００１６】
本発明のデータ処理システムは、表形式の行データを少なくとも一つの属性に基づいて複数のノードに配分し、それぞれのノードで配分された行データの集まりを管理するデータ処理システムであって、行データを複数のノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示手段と、データ配分条件とされた属性値の配分先ノードを決定するデータ配分先決定手段と、データ配分条件に対応して複数のノードに配分される行データごとに列を意味する属性を検索キーとするキー生成手段と、生成された検索キーを行データに属性として付与するキー付与手段と、検索キーが付与された行データを複数のノードの少なくとも一つに登録するデータ登録手段と、データ分割に利用した属性と検索キーとの対応関係が登録されるディクショナリと、を有する。
【００１７】
上述のデータ分割において、本発明のデータ処理システムは、複数の属性値に基づいてテーブルのデータ分割を行う。このとき、本発明のデータ処理システムは、分割配置される各行にその行がどの属性に基づいて分割されたかの情報を差し込む。従来手法では、一つの行は加工されずに一つのノードに配分されるのに対して、提案手法では、一つの行は属性の追加が施されて一つ以上のノードに配分される。
【００１８】
さらに、本発明のデータ処理システムは、上述のようなデータ分割を行った上で、少なくとも一つの表に対するデータ問合を処理するにあたり、データ問合内容とディクショナリに応じてデータ問合に検索キーを利用した選択演算を付与する問合加工手段と、加工されたデータ問合を利用して複数のノードで並列にデータ問合を処理する問合処理手段と、を有する。
【００１９】
なお、本発明の各種の構成要素は、その機能を実現するように形成されていればよく、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ処理システム、コンピュータプログラムによりデータ処理システムに実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
【００２０】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００２１】
また、本発明のコンピュータプログラムおよびデータ処理方法は、複数の処理および動作を順番に記載してあるが、その記載の順番は複数の処理および複数の動作を実行する順番を限定するものではない。
【００２２】
このため、本発明のコンピュータプログラムおよびデータ処理方法を実施するときには、その複数の処理および複数の動作の順番は内容的に支障しない範囲で変更することができる。
【００２３】
さらに、本発明のコンピュータプログラムおよびデータ処理方法は、複数の処理および複数の動作が個々に相違するタイミングで実行されることに限定されない。このため、ある処理および動作の実行中に他の処理および動作が発生すること、ある処理および動作の実行タイミングと他の処理および動作の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【００２４】
また、本発明で云うデータ処理システムは、コンピュータプログラムを読み取って対応する処理動作を実行できるように、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、Ｉ／Ｆ（Interface）ユニット、等の汎用デバイスで構築されたハードウェア、所定の処理動作を実行するように構築された専用の論理回路、これらの組み合わせ、等として実施することができる。
【発明の効果】
【００２５】
本発明のデータ処理システムでは、複数の属性値に基づいてテーブルのデータ分割を行い、どの属性に基づいてその行が分割されたかの情報を行データごとに差し込む。そして、差し込んだ情報を利用した選択演算を問合に加えることで、結合演算を含む関係演算を再配置なしに並列処理することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態のデータ処理システムの論理構造を示す模式的なブロック図である。
【図２】結合演算による表データ操作の例を示す模式図である。
【図３】データ処理システムが表データを分割するときのデータ分割方法を示すフローチャートである。
【図４】データ処理システムが表データに対するデータ問合せを行うときの問合せ処理方法を示すフローチャートである。
【図５】本発明のデータ処理システムが表分割時に一つのタプルを一つ以上のノードへ割り当てる状態を示す模式図である。
【図６】本発明のデータ処理システムが問合せ処理時に検索キーを用いた選択演算によって問合せ対象データを絞り込んだ状態を示す模式図である。
【発明を実施するための形態】
【００２７】
本発明の実施の一形態を図面を参照して以下に説明する。本実施の形態のデータ処理システム１００は、表を構成する各行データを少なくとも一つの属性値に基づいて複数のノードに配分し、それぞれのノードで配分された行データの集まりを管理する。
【００２８】
このため、本実施の形態のデータ処理システム１００は、図１に示すように、行データを複数のノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示部１１０と、データ配分条件とされた属性値の配分先ノードを決定するデータ配分先決定部１６０と、データ配分条件に対応して複数のノードに配分される行データごとに列を意味する属性を検索キーとするキー生成部１２０と、生成された検索キーを行データに属性として付与するキー付与部１３０と、検索キーが付与された行データを複数のノードの少なくとも一つに登録するデータ登録部１４０と、を有する。
【００２９】
さらに、本実施の形態のデータ処理システム１００は、データ配分に利用した属性と検索キーとの対応関係が登録されるディクショナリ１５０と、少なくとも一つの表に対するデータ問合を処理するにあたり、データ問合内容とディクショナリ１５０を入力としてデータ問合内容に応じてデータ問合に検索キーを利用した選択演算を付与する問合加工部１７０と、加工されたデータ問合を利用して複数のノードで並列にデータ問合を処理する問合処理部１８０と、データベースの構造などが登録されているデータベースカタログ１９０と、を有する。
【００３０】
このようなデータ処理システム１００は、複数のノードで構成されるデータベースサーバに、クライアント端末が接続された構造などとして実現される（図示せず）。このようなデータベースサーバに実装されるコンピュータプログラムは、行データを複数のノードに配分するときに列に入力されている属性値をデータ配分条件とする分割指示処理と、データ配分条件とされた属性値の配分先ノードを決定するデータ配分先決定処理と、データ配分条件に対応して複数のノードに配分される行データごとに列を意味する属性を検索キーとするキー生成処理と、生成された検索キーを行データに属性として付与するキー付与処理と、検索キーが付与された行データを複数のノードの少なくとも一つに登録するデータ登録処理と、をデータ処理システム１００に実行させるように記述されている。
【００３１】
本実施の形態のデータ処理システム１００は、属性と検索キーとの対応関係を、表データの分割処理の開始前にディクショナリ１５０に登録する。検索キーには、２のＮ乗（ただしＮは０以上の整数）を属性ごとに一意に昇順に割り当てる。つまり、検索キーを２進数表現にしたとき、各ビットが、どの属性に基づいてその行が分割されたかの情報を示す。なお、属性への検索キーの割当順序は問わない。
【００３２】
表データを分割をするにあたって、本実施の形態のデータ処理システム１００では、図３(ａ)に示すように、分割指示部１１０がデータ配分条件として利用するＮ個（ただし、Ｎ＞＝１）の分割属性Ａ１，…，Ａｎを決定し（ステップＳ１）、つぎに、行データごとにデータ分割を行う（ステップＳ２）。
【００３３】
ステップＳ２では、図３（ｂ）に示すように、データ配分条件の各分割属性ごとにステップＳ３〜ステップＳ９が実行される。その中で、分割属性Ａｉに応じた検索キーをキー生成部１２０が決定し（ステップＳ４）、データ配分先決定部１６０が分割属性Ａｉの値をデータ配分条件として登録先ノードＮを決定し（ステップＳ５）、ノードＮに登録される検索キーの論理和Ｋ(Ｎ)を検索キーに利用する。このようにして、ステップＳ９で各行に追加される検索キーには各分割属性に応じた検索キーの論理和が利用される。
【００３４】
ステップＳ９では、登録先ノードごとに行データを登録する。まず、図３(ｃ)に示すように、生成された検索キーを行データに属性としてキー付与部１３０が付与する(ステップＳ１０)。
【００３５】
つぎに、登録先ノードに応じた検索キーが付与された加工済の行データをデータ登録部１４０が登録先ノードに追加する(ステップＳ１１)。このようにステップＳ９により、検索キーが付与された行データが一つ以上のノードに登録される。
【００３６】
上述のようにノードに登録された行データを検索するときには、図４に示すように、データ問合内容とディクショナリ１５０を入力として検索キーを生成する(ステップＴ１)。
【００３７】
つぎに、データ問合内容に応じてデータ問合に検索キーを利用した選択演算を付与する(ステップＴ２)。そして、加工されたデータ問合を利用して複数のノードで並列にデータ問合を処理する(ステップＴ３)。
【００３８】
データ分割時の流れを、例をあげて図５に図解する。ここでは、図３の分割指示部１１０がデータ配分条件としてＩｔｅｍ属性とＴｙｐｅ属性を利用したものとする。なお、データ配分条件に利用する属性の選び方は、ここでは不問とする。本実施の形態のデータ処理システム１００では、図１のＤＢカタログ１９０に記録されているテーブル間の参照関係を鑑みて分割指示部１１０が利用する属性を選択する。
【００３９】
図５では、Ｉｄが１の行はＩｔｅｍ属性とＴｙｐｅ属性の値により、それぞれノード１とノードＮに登録されている。それぞれのノードに配分される行データには、どの属性に基づいてその行が分割されたかの情報が新規属性として付与される。
【００４０】
図５では、理解のためにＩｔｅｍとＴｙｐｅと表記しているが、実際にはそれぞれの属性に対応する検索キーを用いると、コンピュータプログラムではより効率的である。Ｉｄが３の行では、Ｉｔｅｍ属性とＴｙｐｅ属性による分割で共にノード２に行が配分される。
【００４１】
このときは、Ｉｔｅｍ属性に対応する検索キーとＴｙｐｅ属性に対応する検索キーのビット和（論理和）が利用される。このように、本実施の形態のデータ処理装置１００では、一つのタプルを１以上の分割キーに基づいて、加工を行った上で１つ以上のバケットへ割り当てる。
【００４２】
図４に示すデータ問合処理時の流れを、Ｔｙｐｅ属性ごとに基づいて２つの表と等結合される場合を例に図６に図解する。図４のステップＴ２では、分割に利用した属性がＴｙｐｅである行を選ぶ選択演算が問合せに加えられる。
【００４３】
図５に選択演算を加えて絞り込みを行ったあとの状態を図解する。このように、本実施の形態のデータ処理装置１００は、データ問合内容に応じて、データ問合に検索キーを利用した選択演算を付与する。
【００４４】
本実施の形態のデータ処理装置１００では、このように適切な選択演算を加えることで、Ｔｙｐｅ属性ごとにＱｔｙの合計を求めるような問合せをノードごとに並列に処理することもできるし、Ｉｔｅｍ属性ごとにＱｔｙの合計を求めるような問合せをノードごとに並列に処理することもできる。なお、一組の属性に基づいてデータ分割を行う従来手法では、このような並列処理は行データの再配置なしに実現できない。
【００４５】
なお、本発明は本実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で各種の変形を許容する。例えば、上記形態では複数のノードがデータベースサーバにデータベースとして構築されていることを想定した。しかし、本実施の形態のデータ処理システム１００は、データベース管理システムに限らず、テーブル形式のデータを扱うシステム全般に適用することができる。
【００４６】
さらに、本実施の形態ではデータ処理システム１００の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。
【００４７】
なお、当然ながら、上述した実施の形態および複数の変形例は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態および変形例では、各部の構造などを具体的に説明したが、その構造などは本願発明を満足する範囲で各種に変更することができる。
【符号の説明】
【００４８】
１００    データ処理システム
１１０    分割指示部
１２０    キー生成部
１３０    キー付与部
１４０    データ登録部
１５０    ディクショナリ
１６０    データ配分先決定部
１７０    問合加工部
１８０    問合処理部
１９０    データベースカタログ
【図１】
0005500552.tif 000002
【図２】
0005500552.tif 000003
【図３】
0005500552.tif 000004
【図４】
0005500552.tif 000005
【図５】
0005500552.tif 000006
【図６】
0005500552.tif 000007