JP3155991B2 - 集約演算実行方法及びコンピュータ・システム - Google Patents
集約演算実行方法及びコンピュータ・システムInfo
- Publication number
- JP3155991B2 JP3155991B2 JP33918597A JP33918597A JP3155991B2 JP 3155991 B2 JP3155991 B2 JP 3155991B2 JP 33918597 A JP33918597 A JP 33918597A JP 33918597 A JP33918597 A JP 33918597A JP 3155991 B2 JP3155991 B2 JP 3155991B2
- Authority
- JP
- Japan
- Prior art keywords
- aggregation
- processor
- operations
- database
- memory area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/964—Database arrangement
- Y10S707/966—Distributed
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、データ・マイニン
グ(Data Mining)のようなデータベースの処理等に必
要な集約演算(アグリゲーション:aggregation)の並
列計算機上における処理方法に関する。なお、集約演算
にはデータベース内のグループ毎に集約を行う演算を含
む。
グ(Data Mining)のようなデータベースの処理等に必
要な集約演算(アグリゲーション:aggregation)の並
列計算機上における処理方法に関する。なお、集約演算
にはデータベース内のグループ毎に集約を行う演算を含
む。
【0002】
【従来の技術】データ・マイニングのような分野にてよ
く用いられる集約演算とは、関係データベースへの問い
合わせ言語SQLのgroup-byのように、あるリレーショ
ンに対し、特定の属性が同一の値又同一の値の組若しく
は所定の範囲に属する値を有するようなレコードを1つ
のグループとして、グループ毎に他の属性の合計、最
大、最小、平均等を計算する処理である。このような集
約演算は、最近、OLAP(On Line Analytical Proce
ssing)[詳しくは、E.F.Codd,S.B.Codd, and C.T.Sall
ey, "Beyond decision support," Comupterworld, 27(3
0), July 1993参照のこと]やデータ・マイニング等の
決定支援システムにおいて不可欠な操作となっている。
く用いられる集約演算とは、関係データベースへの問い
合わせ言語SQLのgroup-byのように、あるリレーショ
ンに対し、特定の属性が同一の値又同一の値の組若しく
は所定の範囲に属する値を有するようなレコードを1つ
のグループとして、グループ毎に他の属性の合計、最
大、最小、平均等を計算する処理である。このような集
約演算は、最近、OLAP(On Line Analytical Proce
ssing)[詳しくは、E.F.Codd,S.B.Codd, and C.T.Sall
ey, "Beyond decision support," Comupterworld, 27(3
0), July 1993参照のこと]やデータ・マイニング等の
決定支援システムにおいて不可欠な操作となっている。
【0003】以下集約演算の例を示す。表1は、データ
ベースに記憶されている関係を表している。プロダクト
番号、カスタマー番号、そして売上げについての列があ
り、各行は売上げが生ずるごとに記録されるようになっ
ている。このような関係について、プロダクト番号ごと
に売上げを合計するという演算を考える。この演算は、
プロダクト番号ごとにグループが構成され、その各グル
ープごとに合計を計算するという処理であり、上記集約
演算の1つの例である。この集約演算を実施すると、表
2のような結果を得ることができる。
ベースに記憶されている関係を表している。プロダクト
番号、カスタマー番号、そして売上げについての列があ
り、各行は売上げが生ずるごとに記録されるようになっ
ている。このような関係について、プロダクト番号ごと
に売上げを合計するという演算を考える。この演算は、
プロダクト番号ごとにグループが構成され、その各グル
ープごとに合計を計算するという処理であり、上記集約
演算の1つの例である。この集約演算を実施すると、表
2のような結果を得ることができる。
【表1】
【表2】
【0004】以前より、1つの集約演算を並列処理する
ためのアルゴリズムについては研究されてきた。以下、
それらのアルゴリズムについて説明する。但し、各アル
ゴリズムにおいては、データベース中の全関係は各プロ
セッサに均等分割されていることを前提としている。
ためのアルゴリズムについては研究されてきた。以下、
それらのアルゴリズムについて説明する。但し、各アル
ゴリズムにおいては、データベース中の全関係は各プロ
セッサに均等分割されていることを前提としている。
【0005】1.2P アルゴリズム 二段階にて実施されるため2Pという。 (1)第1フェーズとして、各プロセッサ(ノードとも
いう)は、そのプロセッサ用のディスク装置(データベ
ースを記憶している)に対して、集約演算を実施する。 (2)第2フェーズとして、各プロセッサの結果は、集
計用のプロセッサに集められ、最終結果を計算する。
いう)は、そのプロセッサ用のディスク装置(データベ
ースを記憶している)に対して、集約演算を実施する。 (2)第2フェーズとして、各プロセッサの結果は、集
計用のプロセッサに集められ、最終結果を計算する。
【0006】このような方法は、特開平5−2610号
公報にも記載されている。この公報では、たかだか1つ
のグループについての集約演算しか取り扱っておらず、
先に述べたようなデータ・マイニングのように複数のグ
ループについて集約演算を実施することに何等の考慮も
なされていない。
公報にも記載されている。この公報では、たかだか1つ
のグループについての集約演算しか取り扱っておらず、
先に述べたようなデータ・マイニングのように複数のグ
ループについて集約演算を実施することに何等の考慮も
なされていない。
【0007】2.Rep アルゴリズム リパーティション(repartition)アルゴリズムは以下
のようなアルゴリズムにて実施される(図1)。 (1)最初に、各ノードが集約演算を実行すべきグルー
プを決定する(ステップ110)。表1の例では、ノー
ド1がプロダクト番号G1を担当し、ノード2がプロダ
クト番号G2を担当する、といったような割当てを決定
する。 (2)次に、各ノードで、そのノード用のディスク装置
(データベースを記憶した物)から、データの一部を読
み出し、他のノードが集約すべきグループのデータなら
ば、担当ノードに送信する(ステップ120)。例えば
表1の例で、この表1がノード1用のディスク装置内に
存在する場合、ノード1が表1の第2行目を読み出した
時、ノード1は第2行目のデータをノード2に送信す
る。 (3)そして、各ノードで、他のノードから送られてき
たデータを含む、自己が集約演算をすべきグループに関
するデータに対して集約を実行する(ステップ13
0)。
のようなアルゴリズムにて実施される(図1)。 (1)最初に、各ノードが集約演算を実行すべきグルー
プを決定する(ステップ110)。表1の例では、ノー
ド1がプロダクト番号G1を担当し、ノード2がプロダ
クト番号G2を担当する、といったような割当てを決定
する。 (2)次に、各ノードで、そのノード用のディスク装置
(データベースを記憶した物)から、データの一部を読
み出し、他のノードが集約すべきグループのデータなら
ば、担当ノードに送信する(ステップ120)。例えば
表1の例で、この表1がノード1用のディスク装置内に
存在する場合、ノード1が表1の第2行目を読み出した
時、ノード1は第2行目のデータをノード2に送信す
る。 (3)そして、各ノードで、他のノードから送られてき
たデータを含む、自己が集約演算をすべきグループに関
するデータに対して集約を実行する(ステップ13
0)。
【0008】このような2つのアルゴリズムのうちどち
らを用いると高速に処理できるかは、条件によって異な
る。各アルゴリズムを用いて、1つの集約演算を処理し
た場合の所要時間の見積りを図2に示す。図2は、16
ノードのIBM SP2(インタナショナル・ビジネス
・マシーンズ・コーポレイションの商標)を用いた場合
の見積りで、グループ数と応答時間の関係を示してい
る。このシステムの場合、グループ数が2×105より
少ない場合には、2Pアルゴリズムの方が高速である
が、グループ数が多い場合には、Repアルゴリズムの
方が高速である。これまで、1つの集約演算の並列処理
には、2PアルゴリズムとRepアルゴリズムを動的に
切り換えるようなアルゴリズムが提案されている(例え
ば、Ambuj Shatdal and Jeffrey F.Naughton, "Adaptiv
e parallel aggregation algorithms," In Proceedings
of the ACM SIGMOD Conference on Management of Dat
a, pages 104-114, May 1995.を参照のこと)。
らを用いると高速に処理できるかは、条件によって異な
る。各アルゴリズムを用いて、1つの集約演算を処理し
た場合の所要時間の見積りを図2に示す。図2は、16
ノードのIBM SP2(インタナショナル・ビジネス
・マシーンズ・コーポレイションの商標)を用いた場合
の見積りで、グループ数と応答時間の関係を示してい
る。このシステムの場合、グループ数が2×105より
少ない場合には、2Pアルゴリズムの方が高速である
が、グループ数が多い場合には、Repアルゴリズムの
方が高速である。これまで、1つの集約演算の並列処理
には、2PアルゴリズムとRepアルゴリズムを動的に
切り換えるようなアルゴリズムが提案されている(例え
ば、Ambuj Shatdal and Jeffrey F.Naughton, "Adaptiv
e parallel aggregation algorithms," In Proceedings
of the ACM SIGMOD Conference on Management of Dat
a, pages 104-114, May 1995.を参照のこと)。
【0009】また、上記以外の方法としては、データベ
ース中の全レコードをブロードキャストする方法がある
(Dine Bitton, Haran Boral, David J DeWitt, and W.
Kevin Wilkinson, "Parallel algorithms for the exec
ution of relational database operations," ACM Tran
s. on Database Systems, 8(3):324-353, Sep. 1983.を
参照のこと)。しかし、このようなアルゴリズム(以
下、BCアルゴリズムと呼ぶ。)は、プロセッサ間を接
続するネットワークが低速であった頃には非実用的な方
法であった。
ース中の全レコードをブロードキャストする方法がある
(Dine Bitton, Haran Boral, David J DeWitt, and W.
Kevin Wilkinson, "Parallel algorithms for the exec
ution of relational database operations," ACM Tran
s. on Database Systems, 8(3):324-353, Sep. 1983.を
参照のこと)。しかし、このようなアルゴリズム(以
下、BCアルゴリズムと呼ぶ。)は、プロセッサ間を接
続するネットワークが低速であった頃には非実用的な方
法であった。
【0010】このBCアルゴリズムをまとめておく。 3.BC アルゴリズム (1)全グループの中で、各ノードが集約演算を実施す
べきグループを決定する。Repアルゴリズムと同様で
ある。 (2)各ノードは、自己のディスク装置内の全データを
他の全てのノードに、ブロードキャストする。 (3)各ノードは、ブロードキャストされたデータ(自
己のディスク装置内のデータを含む)に対して、自己が
集約すべきグループについての集約演算を実施する。
べきグループを決定する。Repアルゴリズムと同様で
ある。 (2)各ノードは、自己のディスク装置内の全データを
他の全てのノードに、ブロードキャストする。 (3)各ノードは、ブロードキャストされたデータ(自
己のディスク装置内のデータを含む)に対して、自己が
集約すべきグループについての集約演算を実施する。
【0011】これまでは、1つの集約演算を並列に実行
するアルゴリズムを説明したが、1つのプロセッサで複
数の集約演算を実行する場合には、演算の順番を調整し
たり、演算間の関連性を用いて全体の処理を高速化する
方法(例えば、Sameet Agrawal, Rakesh Agrawal, Pras
ad M. Deshpande, Ashish Gupta, Jeffrey F. Naughto
n, Raghu Ramakrishnan, and Sunita Sarawagi, "On th
e computation of multidimensional aggregates," In
Proceedings of the 22nd VLDB Conference, Sep. 199
6.を参照のこと)等が提案されている。しかし、並列計
算機を用いて複数個の演算を同時に処理する方法につい
ては、提案されていない。
するアルゴリズムを説明したが、1つのプロセッサで複
数の集約演算を実行する場合には、演算の順番を調整し
たり、演算間の関連性を用いて全体の処理を高速化する
方法(例えば、Sameet Agrawal, Rakesh Agrawal, Pras
ad M. Deshpande, Ashish Gupta, Jeffrey F. Naughto
n, Raghu Ramakrishnan, and Sunita Sarawagi, "On th
e computation of multidimensional aggregates," In
Proceedings of the 22nd VLDB Conference, Sep. 199
6.を参照のこと)等が提案されている。しかし、並列計
算機を用いて複数個の演算を同時に処理する方法につい
ては、提案されていない。
【0012】
【発明が解決しようとする課題】複数の集約演算を並列
に実行する処理は、上記の方法を複数回繰り返せば高速
に実行できる、というわけではない。以上のように本発
明は、複数の集約演算を並列に高速実行する方法を提供
することを目的とする。
に実行する処理は、上記の方法を複数回繰り返せば高速
に実行できる、というわけではない。以上のように本発
明は、複数の集約演算を並列に高速実行する方法を提供
することを目的とする。
【0013】現在注目を集めている決定支援システムの
コアとなる技術であるOLAPやデータマイニングで
は、複数個の集約演算を行う必要がある。例えば、多次
元属性を持つデータの分析に対して、複数個の集約演算
を実行するData Cube(例えば、Jim Gray, Ad
am Bosworth, Andrew Layman, and Hamid Pirahesh, "D
ata cube: A relational aggregation operator genera
lizing group-by, cross-by, and sub-by, and sub-tot
als," Technical report, Microsoft , Nov. 1995等を
参照のこと)オペレータが提案されている。また、デー
タ・マイニングのあるアプリケーションは、複数の集約
演算の結果を用いて属性間の関係を自動的に発見し、グ
ラフィカルな表示を行う(例えば、Takeshi Fukuda, Ya
suhiko Morimoto, Shinichi Morishita, and Takeshi T
okuyama, "Data Mining optimizedassociation rules f
or numeric attributes, " In Proceedings of the Fif
teenth ACM SIGACT-SIGMOD-SIGART symposium on Princ
iples of Database Systems, pages 182-191, June 199
6, Takeshi Fukuda, Yasuhiko Morimoto, ShinichiMori
shita, and Takeshi Tokuyama, "Data mining using tw
o-dimensional optimized association rules: Scheme,
algorithms, and Visualization," In proceedings of
the ACM SIGMOD conference on Management of Data,
pages 13-23,June 1996.等を参照のこと)。これらの技
術では、インタラクティブに操作できることが要求され
ており、応答時間が重要な要素となっている。応答時間
を短縮するための1つの方法として、事前に集約演算を
実行しておくことが必要となる。よって、複数の集約演
算を並列に高速実行することにより、OLAPやデータ
・マイニングの実行を高速にすることも目的である。
コアとなる技術であるOLAPやデータマイニングで
は、複数個の集約演算を行う必要がある。例えば、多次
元属性を持つデータの分析に対して、複数個の集約演算
を実行するData Cube(例えば、Jim Gray, Ad
am Bosworth, Andrew Layman, and Hamid Pirahesh, "D
ata cube: A relational aggregation operator genera
lizing group-by, cross-by, and sub-by, and sub-tot
als," Technical report, Microsoft , Nov. 1995等を
参照のこと)オペレータが提案されている。また、デー
タ・マイニングのあるアプリケーションは、複数の集約
演算の結果を用いて属性間の関係を自動的に発見し、グ
ラフィカルな表示を行う(例えば、Takeshi Fukuda, Ya
suhiko Morimoto, Shinichi Morishita, and Takeshi T
okuyama, "Data Mining optimizedassociation rules f
or numeric attributes, " In Proceedings of the Fif
teenth ACM SIGACT-SIGMOD-SIGART symposium on Princ
iples of Database Systems, pages 182-191, June 199
6, Takeshi Fukuda, Yasuhiko Morimoto, ShinichiMori
shita, and Takeshi Tokuyama, "Data mining using tw
o-dimensional optimized association rules: Scheme,
algorithms, and Visualization," In proceedings of
the ACM SIGMOD conference on Management of Data,
pages 13-23,June 1996.等を参照のこと)。これらの技
術では、インタラクティブに操作できることが要求され
ており、応答時間が重要な要素となっている。応答時間
を短縮するための1つの方法として、事前に集約演算を
実行しておくことが必要となる。よって、複数の集約演
算を並列に高速実行することにより、OLAPやデータ
・マイニングの実行を高速にすることも目的である。
【0014】さらに、複数の集約演算を実行する方法
を、ハードウエアの条件や複数の集約演算の性質等に基
づき、切り換えることができるようにし、様々な条件の
下、複数の集約演算を常に同じ方法で実行するよりも、
より高速に実行することも目的とする。
を、ハードウエアの条件や複数の集約演算の性質等に基
づき、切り換えることができるようにし、様々な条件の
下、複数の集約演算を常に同じ方法で実行するよりも、
より高速に実行することも目的とする。
【0015】
【課題を解決するための手段】以上の目的を実現するた
めに最も重要な技術的事項は、ディスク装置へのアクセ
スの回数及び時間である。今や、ディスク装置へのアク
セスは、並列処理装置の各プロセッサ間の通信速度より
遅い。よって、このディスク装置へのアクセスをいかに
減らすかが、本発明の目的達成に大きな影響を及ぼす。
以下、このディスク装置へのアクセスを減らす具体的方
法について説明する。
めに最も重要な技術的事項は、ディスク装置へのアクセ
スの回数及び時間である。今や、ディスク装置へのアク
セスは、並列処理装置の各プロセッサ間の通信速度より
遅い。よって、このディスク装置へのアクセスをいかに
減らすかが、本発明の目的達成に大きな影響を及ぼす。
以下、このディスク装置へのアクセスを減らす具体的方
法について説明する。
【0016】本発明の第1の集約演算実行方法は以下の
ようなステップを含む。すなわち、(a)各プロセッサ
が、自己のメモリ領域に、N個の集約演算のうちM個
(N以下の整数)分の演算結果を記憶するスペースを確
保するステップと、(b)各プロセッサが、M個の集約
演算をまとめて、データベースの自己の部分に対して実
行するステップと、(c)各プロセッサが、M個の集約
演算の各プロセッサにおける演算結果を、集計すべきプ
ロセッサに送信し、集計すべきプロセッサが最終結果を
計算するステップと、(d)N個の集約演算の実行が終
了するまで、ステップ(a)乃至(c)を繰り返すステ
ップと、である。なお、本発明の集約演算実行方法を実
施するのに適当なコンピュータ・システムは、ネットワ
ークにより接続された複数のプロセッサが各々自己のメ
モリ領域及び1又は複数のグループに分けることができ
るデータを含むデータベースの自己の部分を使用できる
よう構成されている。メモリについては、各ノードごと
に分離されて用意されていても、ネットワークに接続さ
れたメモリが、幾つかのメモリ領域に分けられており、
そのメモリ領域を各プロセッサが用いる方式にしてもよ
い。ディスクについても同様である。
ようなステップを含む。すなわち、(a)各プロセッサ
が、自己のメモリ領域に、N個の集約演算のうちM個
(N以下の整数)分の演算結果を記憶するスペースを確
保するステップと、(b)各プロセッサが、M個の集約
演算をまとめて、データベースの自己の部分に対して実
行するステップと、(c)各プロセッサが、M個の集約
演算の各プロセッサにおける演算結果を、集計すべきプ
ロセッサに送信し、集計すべきプロセッサが最終結果を
計算するステップと、(d)N個の集約演算の実行が終
了するまで、ステップ(a)乃至(c)を繰り返すステ
ップと、である。なお、本発明の集約演算実行方法を実
施するのに適当なコンピュータ・システムは、ネットワ
ークにより接続された複数のプロセッサが各々自己のメ
モリ領域及び1又は複数のグループに分けることができ
るデータを含むデータベースの自己の部分を使用できる
よう構成されている。メモリについては、各ノードごと
に分離されて用意されていても、ネットワークに接続さ
れたメモリが、幾つかのメモリ領域に分けられており、
そのメモリ領域を各プロセッサが用いる方式にしてもよ
い。ディスクについても同様である。
【0017】この第1の集約演算実行方法は、従来技術
の欄で述べた2Pアルゴリズムをベースに考えられた方
法である。この方法では、先に示したIBM SP2
で、結果のグループの数が比較的少ない場合に計算速度
が高速になる。
の欄で述べた2Pアルゴリズムをベースに考えられた方
法である。この方法では、先に示したIBM SP2
で、結果のグループの数が比較的少ない場合に計算速度
が高速になる。
【0018】上記のステップ(b)は、(b1)各プロセ
ッサが、自己のメモリ領域のワークスペースに、データ
ベースの自己の部分である部分データベースの一部を読
み出すステップと、(b2)各プロセッサが、自己のメモ
リ領域に格納された本ステップ以前の演算結果と読み出
された部分データベースの一部とについて、M個の集約
演算を実行するステップと、(b3)各プロセッサが、部
分データベースのすべてに対してM個の集約演算が実行
されるまで、ステップ(b1)及び(b2)を繰り返すステップ
とを含むようにすることもできる。ステップ(b2)は、
読み出された部分データベースの一部についてのみM個
の集約演算を実行して、それからそのステップ以前の演
算結果との集計を計算するようにすることもできるが、
このような方法では遅くなる。
ッサが、自己のメモリ領域のワークスペースに、データ
ベースの自己の部分である部分データベースの一部を読
み出すステップと、(b2)各プロセッサが、自己のメモ
リ領域に格納された本ステップ以前の演算結果と読み出
された部分データベースの一部とについて、M個の集約
演算を実行するステップと、(b3)各プロセッサが、部
分データベースのすべてに対してM個の集約演算が実行
されるまで、ステップ(b1)及び(b2)を繰り返すステップ
とを含むようにすることもできる。ステップ(b2)は、
読み出された部分データベースの一部についてのみM個
の集約演算を実行して、それからそのステップ以前の演
算結果との集計を計算するようにすることもできるが、
このような方法では遅くなる。
【0019】上で述べたMは、N以下の整数として、他
の条件と関係なく選択することも可能であるが、集約演
算の演算結果のために自己のメモリ領域に確保できるス
ペースから決定すると、繰り返しのステップ(ステップ
(d))が少なくて済むので、より高速である。
の条件と関係なく選択することも可能であるが、集約演
算の演算結果のために自己のメモリ領域に確保できるス
ペースから決定すると、繰り返しのステップ(ステップ
(d))が少なくて済むので、より高速である。
【0020】本発明の第2の集約演算実行方法は、
(a)各プロセッサが、P個の集約演算のうち自らが実
行するQ個の集約演算の演算結果を記憶するスペース
を、自己のメモリ領域に確保するステップと、(b)各
プロセッサが、自己のメモリ領域のワークスペースにデ
ータベースの自己の部分である部分データベースの一部
を読み出し、読み出された部分データベースの一部をネ
ットワークを介してブロードキャストすることを繰り返
して、各プロセッサが全てのデータベースのデータに対
し自らが実行するQ個の集約演算を実行するステップ
と、(c)P個の集約演算が実行されるまで、ステップ
(a)及び(b)を繰り返すステップとを含む。第2の
集約演算実行方法のためのコンピュータ・システムは、
第1の集約演算実行方法と同様である。
(a)各プロセッサが、P個の集約演算のうち自らが実
行するQ個の集約演算の演算結果を記憶するスペース
を、自己のメモリ領域に確保するステップと、(b)各
プロセッサが、自己のメモリ領域のワークスペースにデ
ータベースの自己の部分である部分データベースの一部
を読み出し、読み出された部分データベースの一部をネ
ットワークを介してブロードキャストすることを繰り返
して、各プロセッサが全てのデータベースのデータに対
し自らが実行するQ個の集約演算を実行するステップ
と、(c)P個の集約演算が実行されるまで、ステップ
(a)及び(b)を繰り返すステップとを含む。第2の
集約演算実行方法のためのコンピュータ・システムは、
第1の集約演算実行方法と同様である。
【0021】この第2の集約演算実行方法は、BCアル
ゴリズムをベースに考えられた方法である。この方法で
は、第1の集約演算実行方法より比較的グループの数が
多い場合に、計算速度がより高速になる。
ゴリズムをベースに考えられた方法である。この方法で
は、第1の集約演算実行方法より比較的グループの数が
多い場合に、計算速度がより高速になる。
【0022】この第2の集約演算実行方法のステップ
(a)は、(a1)1つの集約演算の演算結果を格納でき
るようなスペースが1つのプロセッサの自己のメモリ領
域に存在するか検査するステップと、(a2)スペースが
存在する場合には、スペースを1つの集約演算の演算結
果のために確保するステップと、(a3)スペースが存在
しない場合には、他のプロセッサのメモリ領域に前記1
つの集約演算の演算結果を格納できるようなスペースが
存在するか検査するステップと、(a4)他のプロセッサ
のメモリ領域にスペースが存在する場合には、当該他の
プロセッサのメモリ領域のスペースを前記1つの集約演
算の演算結果のために確保するステップとを含むように
することもできる。この時、他のプロセッサのメモリ領
域にスペースが存在しない場合には、後の繰り返し処理
にて前記1つの集約演算を実行するようにすることもで
きる。どうしても、ある集約演算にスペースが存在しな
いような場合も生じ得るが、その場合には当該集約演算
を幾つかに分けて実行するようなことも可能である。
(a)は、(a1)1つの集約演算の演算結果を格納でき
るようなスペースが1つのプロセッサの自己のメモリ領
域に存在するか検査するステップと、(a2)スペースが
存在する場合には、スペースを1つの集約演算の演算結
果のために確保するステップと、(a3)スペースが存在
しない場合には、他のプロセッサのメモリ領域に前記1
つの集約演算の演算結果を格納できるようなスペースが
存在するか検査するステップと、(a4)他のプロセッサ
のメモリ領域にスペースが存在する場合には、当該他の
プロセッサのメモリ領域のスペースを前記1つの集約演
算の演算結果のために確保するステップとを含むように
することもできる。この時、他のプロセッサのメモリ領
域にスペースが存在しない場合には、後の繰り返し処理
にて前記1つの集約演算を実行するようにすることもで
きる。どうしても、ある集約演算にスペースが存在しな
いような場合も生じ得るが、その場合には当該集約演算
を幾つかに分けて実行するようなことも可能である。
【0023】Qについては、先のMと同様に、集約演算
の演算結果のために自己のメモリ領域に確保できるスペ
ースから決定する、ということも可能である。
の演算結果のために自己のメモリ領域に確保できるスペ
ースから決定する、ということも可能である。
【0024】さらに第2の集約演算実行方法のステップ
(b)は、(b1)各プロセッサが、自己のメモリ領域の
ワークスペースに、部分データベースの一部を読み出す
ステップと、(b2)読み出された部分データベースの一
部をネットワークを介してブロードキャストするステッ
プと、(b3)自己のメモリ領域に格納された本ステップ
以前の演算結果と読み出された部分データベースの一部
と他のプロセッサから送られてきたデータとについて、
自らが実行するQ個の集約演算を実行するステップと、
(b4)各プロセッサが全てのデータベースの内容に対し
自らが実行するQ個の集約演算を実行するまでステップ
(b1)乃至(b3)を繰り返すステップとを含むようにす
ることも可能である。ステップ(b3)で、読み出された
部分データベースの一部と他のプロセッサから送られて
きたデータとについてQ個の集約演算を実行し、後に当
該ステップ以前の演算結果と集計をとってもよいが、こ
れでは遅くなる。
(b)は、(b1)各プロセッサが、自己のメモリ領域の
ワークスペースに、部分データベースの一部を読み出す
ステップと、(b2)読み出された部分データベースの一
部をネットワークを介してブロードキャストするステッ
プと、(b3)自己のメモリ領域に格納された本ステップ
以前の演算結果と読み出された部分データベースの一部
と他のプロセッサから送られてきたデータとについて、
自らが実行するQ個の集約演算を実行するステップと、
(b4)各プロセッサが全てのデータベースの内容に対し
自らが実行するQ個の集約演算を実行するまでステップ
(b1)乃至(b3)を繰り返すステップとを含むようにす
ることも可能である。ステップ(b3)で、読み出された
部分データベースの一部と他のプロセッサから送られて
きたデータとについてQ個の集約演算を実行し、後に当
該ステップ以前の演算結果と集計をとってもよいが、こ
れでは遅くなる。
【0025】本発明の第3の集約演算実行方法は、
(a)S個の集約演算のうち実行するT個の集約演算を
決定するステップと、(b)T個の集約演算を実行する
際に集約される、各集約演算の各グループを取り扱うプ
ロセッサを決定するステップと、(c)各プロセッサ
が、データベースの自己の部分である部分データベース
の一部を自己のメモリ領域に読み出し、読み出されたデ
ータのうち他のプロセッサが集約すべき集約演算のグル
ープに関するデータを当該集約演算のIDと共に他のプ
ロセッサにネットワークを介して送信し、自己が集約す
べき集約演算のグループに関するデータについてT個の
集約演算を実行するステップと、(d)各プロセッサが
集約すべき集約演算のグループに関する全てのデータに
T個の集約演算を実行するまで、ステップ(c)を実行
するステップと、(e)S個の集約演算を実行するま
で、ステップ(a)乃至(d)を繰り返すステップとを
含む。第3の集約演算実行方法のためのコンピュータ・
システムも、第1の集約演算実行方法と同様である。
(a)S個の集約演算のうち実行するT個の集約演算を
決定するステップと、(b)T個の集約演算を実行する
際に集約される、各集約演算の各グループを取り扱うプ
ロセッサを決定するステップと、(c)各プロセッサ
が、データベースの自己の部分である部分データベース
の一部を自己のメモリ領域に読み出し、読み出されたデ
ータのうち他のプロセッサが集約すべき集約演算のグル
ープに関するデータを当該集約演算のIDと共に他のプ
ロセッサにネットワークを介して送信し、自己が集約す
べき集約演算のグループに関するデータについてT個の
集約演算を実行するステップと、(d)各プロセッサが
集約すべき集約演算のグループに関する全てのデータに
T個の集約演算を実行するまで、ステップ(c)を実行
するステップと、(e)S個の集約演算を実行するま
で、ステップ(a)乃至(d)を繰り返すステップとを
含む。第3の集約演算実行方法のためのコンピュータ・
システムも、第1の集約演算実行方法と同様である。
【0026】この第3の集約演算実行方法は、Repア
ルゴリズムをベースに考えられた方法である。この方法
では、第2の集約演算実行方法より比較的グループの数
が多い場合に、計算速度がより高速になる。
ルゴリズムをベースに考えられた方法である。この方法
では、第2の集約演算実行方法より比較的グループの数
が多い場合に、計算速度がより高速になる。
【0027】第3の集約演算実行方法におけるステップ
(c)は、(c1)各プロセッサが、データベースの自己
の部分である部分データベースの一部を自己のメモリ領
域のワークスペースに読み出すステップと、(c2)各プ
ロセッサが、読み出されたデータの各部分を必要とする
プロセッサを求め、当該部分を関連する集約演算のID
と共に必要とするプロセッサにネットワークを介して送
信するステップと、(c3)各プロセッサが、読み出され
たデータのうち自己が集約すべき集約演算のグループに
関するデータ及び他のプロセッサからのデータ及び自己
のメモリ領域に格納された本ステップ以前の演算結果に
対し、T個の集約演算を実行するステップとを含むよう
にすることも考えられる。ネットワークを介しての送信
は、T個の集約演算と同時に行ってもよい。
(c)は、(c1)各プロセッサが、データベースの自己
の部分である部分データベースの一部を自己のメモリ領
域のワークスペースに読み出すステップと、(c2)各プ
ロセッサが、読み出されたデータの各部分を必要とする
プロセッサを求め、当該部分を関連する集約演算のID
と共に必要とするプロセッサにネットワークを介して送
信するステップと、(c3)各プロセッサが、読み出され
たデータのうち自己が集約すべき集約演算のグループに
関するデータ及び他のプロセッサからのデータ及び自己
のメモリ領域に格納された本ステップ以前の演算結果に
対し、T個の集約演算を実行するステップとを含むよう
にすることも考えられる。ネットワークを介しての送信
は、T個の集約演算と同時に行ってもよい。
【0028】この第3の集約演算実行方法におけるT個
の集約演算の決定方法及びどのプロセッサが集約演算の
どのグループを集約するかについては、各プロセッサの
使用するメモリの容量によって決められる。
の集約演算の決定方法及びどのプロセッサが集約演算の
どのグループを集約するかについては、各プロセッサの
使用するメモリの容量によって決められる。
【0029】ところで、第1乃至第3の集約演算実行方
法のうち最適なアルゴリズムは、条件によって異なる。
よって、プロセッサの数とデータベースの大きさとネッ
トワークの通信速度とを含むコンピュータ・システムの
パラメータ及び実行する集約演算の数と各集約演算の結
果を格納するメモリの量とを含む集約演算の性質に関す
るパラメータを用いて、上記のうち最も高速なアルゴリ
ズムを選び出し、最適なアルゴリズムによって複数の集
約演算を実行するようにすれば、ユーザは常に高速に複
数の集約演算の結果を得ることができる。なお、選択は
3つの方法の中から行わなければならないわけではな
く、他の方法を含めてその中で選択することも、3つの
方法のサブセットの中から選択することも可能である。
法のうち最適なアルゴリズムは、条件によって異なる。
よって、プロセッサの数とデータベースの大きさとネッ
トワークの通信速度とを含むコンピュータ・システムの
パラメータ及び実行する集約演算の数と各集約演算の結
果を格納するメモリの量とを含む集約演算の性質に関す
るパラメータを用いて、上記のうち最も高速なアルゴリ
ズムを選び出し、最適なアルゴリズムによって複数の集
約演算を実行するようにすれば、ユーザは常に高速に複
数の集約演算の結果を得ることができる。なお、選択は
3つの方法の中から行わなければならないわけではな
く、他の方法を含めてその中で選択することも、3つの
方法のサブセットの中から選択することも可能である。
【0030】以上の述べた方法は、プログラムによって
実現することも、専用の装置を用いて実現することも可
能である。このように実現形態を変更することは、以下
の説明を理解した当業者が通常行うことのできる事項で
ある。
実現することも、専用の装置を用いて実現することも可
能である。このように実現形態を変更することは、以下
の説明を理解した当業者が通常行うことのできる事項で
ある。
【0031】
【発明の実施の形態】初めに本発明において用いられる
コンピュータ・システムのハードウエア構成について説
明する。図3は、その典型的な一例を示すものである。
プロセッサ・エレメントPE1(3a)、プロセッサ・
エレメントPE2(3b)、及びプロセッサ・エレメン
トPEn(3c)がネットワーク1を介して接続されて
いる。このプロセッサ・エレメントは図3のように3つ
である必要はなく、複数であればよい。一般にn個とす
る。プロセッサ・エレメントPE1(3a)には、メモ
リ5a及びディスク装置7aが接続されており、同様に
プロセッサ・エレメントPE2(3b)にはメモリ5b
及びディスク装置7b、プロセッサ・エレメントPEn
(3c)にはメモリ5c及びディスク装置7cが接続さ
れている。各ディスク装置には、データベースの一部分
がそれぞれ記憶されている。ネットワーク1は、プロセ
ッサ・エレメント間の通信に用いられ、高速にデータを
やり取りできるようになっている。
コンピュータ・システムのハードウエア構成について説
明する。図3は、その典型的な一例を示すものである。
プロセッサ・エレメントPE1(3a)、プロセッサ・
エレメントPE2(3b)、及びプロセッサ・エレメン
トPEn(3c)がネットワーク1を介して接続されて
いる。このプロセッサ・エレメントは図3のように3つ
である必要はなく、複数であればよい。一般にn個とす
る。プロセッサ・エレメントPE1(3a)には、メモ
リ5a及びディスク装置7aが接続されており、同様に
プロセッサ・エレメントPE2(3b)にはメモリ5b
及びディスク装置7b、プロセッサ・エレメントPEn
(3c)にはメモリ5c及びディスク装置7cが接続さ
れている。各ディスク装置には、データベースの一部分
がそれぞれ記憶されている。ネットワーク1は、プロセ
ッサ・エレメント間の通信に用いられ、高速にデータを
やり取りできるようになっている。
【0032】図3は一例であって、例えば図4のよう
に、各プロセッサ・エレメントに直接メモリが接続され
ておらず、メモリ9及びメモリ10がネットワーク1に
接続されるような構成も可能である。この場合メモリ9
は、プロセッサ・エレメントPE1用の領域9aとプロ
セッサ・エレメントPE2用の領域9bとに分けること
ができる。メモリ9はこのようにそれぞれのプロセッサ
・エレメント用の領域の他、プロセッサ・エレメント間
で共有する領域を設けてもよい。また、メモリ10はP
En専用となっているが、このように、ネットワーク1
に各プロセッサ・エレメント用に別のメモリを接続する
ような構成とすることも可能である。プロセッサ・エレ
メント3a,3b,3cは、ディスク装置7a,7b,
7cからデータを読み出すと、ネットワーク1を介して
自己のメモリ領域9a,9b,10のワークエリアにデ
ータを書き込む。
に、各プロセッサ・エレメントに直接メモリが接続され
ておらず、メモリ9及びメモリ10がネットワーク1に
接続されるような構成も可能である。この場合メモリ9
は、プロセッサ・エレメントPE1用の領域9aとプロ
セッサ・エレメントPE2用の領域9bとに分けること
ができる。メモリ9はこのようにそれぞれのプロセッサ
・エレメント用の領域の他、プロセッサ・エレメント間
で共有する領域を設けてもよい。また、メモリ10はP
En専用となっているが、このように、ネットワーク1
に各プロセッサ・エレメント用に別のメモリを接続する
ような構成とすることも可能である。プロセッサ・エレ
メント3a,3b,3cは、ディスク装置7a,7b,
7cからデータを読み出すと、ネットワーク1を介して
自己のメモリ領域9a,9b,10のワークエリアにデ
ータを書き込む。
【0033】また図5のように、プロセッサ・エレメン
トとメモリは図3と同様な接続をしているが、ディスク
装置がネットワーク1に接続されているような構成も考
えられる。ここで、ディスク装置11はプロセッサ・エ
レメントPE1用のデータ11aとプロセッサ・エレメ
ントPE2用のデータ11bとを有している。ディスク
装置11は、プロセッサ・エレメントPE1及びPE2
用データの他、共有のデータ等を含むことができる。ま
た、ディスク装置13は、プロセッサ・エレメントPE
n用のデータを格納している。このように、各プロセッ
サ・エレメント専用のディスク装置をネットワーク1に
別々接続する構成も可能である。これらディスク装置内
のデータは、ネットワーク1を介してプロセッサ・エレ
メント3a,3b,3cによって読み出され、メモリ5
a,5b,5cのワークエリアに取り込まれる。
トとメモリは図3と同様な接続をしているが、ディスク
装置がネットワーク1に接続されているような構成も考
えられる。ここで、ディスク装置11はプロセッサ・エ
レメントPE1用のデータ11aとプロセッサ・エレメ
ントPE2用のデータ11bとを有している。ディスク
装置11は、プロセッサ・エレメントPE1及びPE2
用データの他、共有のデータ等を含むことができる。ま
た、ディスク装置13は、プロセッサ・エレメントPE
n用のデータを格納している。このように、各プロセッ
サ・エレメント専用のディスク装置をネットワーク1に
別々接続する構成も可能である。これらディスク装置内
のデータは、ネットワーク1を介してプロセッサ・エレ
メント3a,3b,3cによって読み出され、メモリ5
a,5b,5cのワークエリアに取り込まれる。
【0034】図3、図4、及び図5を幾つか組み合わせ
た構成も可能である。例えば、幾つかのプロセッサ・エ
レメントは図3のような構成をとっており、幾つかのプ
ロセッサは図4や図5のような構成をすることも可能で
ある。また、図3,図4,図5以外の構成も可能であ
り、要するに、プロセッサ間でメモリやディスク装置を
共有する必要はない。
た構成も可能である。例えば、幾つかのプロセッサ・エ
レメントは図3のような構成をとっており、幾つかのプ
ロセッサは図4や図5のような構成をすることも可能で
ある。また、図3,図4,図5以外の構成も可能であ
り、要するに、プロセッサ間でメモリやディスク装置を
共有する必要はない。
【0035】以上のようなハードウエア構成を前提とし
て、以下どのような処理を行うかを説明する。なお、以
下に説明する処理では、システム全体のための処理も一
部に含まれるが、その処理は複数のプロセッサ・エレメ
ントのうち1つをその処理のために割当てたり、そのよ
うな処理専用のプロセッサを用意してもよい。
て、以下どのような処理を行うかを説明する。なお、以
下に説明する処理では、システム全体のための処理も一
部に含まれるが、その処理は複数のプロセッサ・エレメ
ントのうち1つをその処理のために割当てたり、そのよ
うな処理専用のプロセッサを用意してもよい。
【0036】1.2Pm アルゴリズム(図6) 本アルゴリズムは、従来技術で説明した2Pアルゴリズ
ムをベースとしたものであり、複数の集約演算を並列に
実施するように拡張したものであるため、2Pmアルゴ
リズムと呼ぶことにする。複数の集約演算を実施する際
に、ディスク装置へのアクセスを最小限にすることで高
速化する。なお、全部でN個の集約演算を実行すること
を前提とする。
ムをベースとしたものであり、複数の集約演算を並列に
実施するように拡張したものであるため、2Pmアルゴ
リズムと呼ぶことにする。複数の集約演算を実施する際
に、ディスク装置へのアクセスを最小限にすることで高
速化する。なお、全部でN個の集約演算を実行すること
を前提とする。
【0037】(1)最初に、自己のメモリ領域にM個の
集約演算の演算結果を記憶するスペースを確保する(ス
テップ210)。このM個はその演算結果を各プロセッ
サ・エレメントのメモリ領域に格納できる範囲で決めら
れるが、なるべくたくさんの集約演算を1度に実行する
方がディスク・アクセスを共有することができるので、
処理が高速になる。また、本アルゴリズムを実行する全
てのプロセッサ・エレメントが、全て同じM個の集約演
算を実行する方が高速処理できる。これは、後に説明す
る集計処理が必要となるため、プロセッサ・エレメント
毎に異なる個数の集約演算を実施していると、集計処理
ができない演算結果の一部がメモリに残ってしまい、他
のプロセッサ・エレメントで演算の実行が終了するのを
待たなければならないといった問題が生じるからであ
る。よって、実行する集約演算は、本アルゴリズムを実
行するプロセッサ・エレメントが同じ個数の同じ集約演
算を1度に実行できるという観点から選択すると、処理
の高速化に効果的である。なお、演算結果を記憶するス
ペースを演算を実行する前に知らなければならないが、
これは少しのデータに対して試算をしてみれば、演算結
果の規模は把握することができ、大きな負担ではない。
集約演算の演算結果を記憶するスペースを確保する(ス
テップ210)。このM個はその演算結果を各プロセッ
サ・エレメントのメモリ領域に格納できる範囲で決めら
れるが、なるべくたくさんの集約演算を1度に実行する
方がディスク・アクセスを共有することができるので、
処理が高速になる。また、本アルゴリズムを実行する全
てのプロセッサ・エレメントが、全て同じM個の集約演
算を実行する方が高速処理できる。これは、後に説明す
る集計処理が必要となるため、プロセッサ・エレメント
毎に異なる個数の集約演算を実施していると、集計処理
ができない演算結果の一部がメモリに残ってしまい、他
のプロセッサ・エレメントで演算の実行が終了するのを
待たなければならないといった問題が生じるからであ
る。よって、実行する集約演算は、本アルゴリズムを実
行するプロセッサ・エレメントが同じ個数の同じ集約演
算を1度に実行できるという観点から選択すると、処理
の高速化に効果的である。なお、演算結果を記憶するス
ペースを演算を実行する前に知らなければならないが、
これは少しのデータに対して試算をしてみれば、演算結
果の規模は把握することができ、大きな負担ではない。
【0038】以下に、ステップ210の擬似コードを示
しておく。
しておく。
【表3】 // 変数 N : number of node mem : size of memory MEM : variable ( 0 ≦ MEM ≦ mem ) q : query NL : list of queries tmpNL : list of queries # 次回以降に実行する分 ML : list of queries # 今回実行する分 // 初期化 NL = { q_1, q_2, ..., q_i,... ,q_Q } # list of Q queries. mem = getMaxMemSize() # メモリサイズを得る。 # 各ノードが協調して最も小さいサイズに合わせる # 各ノードが以下を実行 while NL ≠ NIL 且つ tmpNL ≠ NIL do # NIL : 空リスト begin MEM = mem ; tmpNL = NIL ; ML = NIL ; while NL ≠ NIL do # NL が 空になるまで実行 begin q = pop( NL ); # pop() リストの先頭を取ってくる if ( MEM > |q| ) then # q のメモリが確保できるか調べる begin # |q| は演算 q が使用するメモリサイズ append( ML, q ) ; # ML に q を加える MEM = MEM - |q| ; # 残りのメモリサイズから |q| を引く end else begin append( tmpNL, q ) ; # 演算 q を未処理リストに加える end end # ML 中の query について集約演算を実行 # tmpNL は、次回以降に while ML ≠ NIL do # ML が NIL になるまで実行 begin q = pop( ML ) ; # MLから先頭の演算を取ってくる allocate ( q ) ; # 演算 q 用のメモリを確保 end 2Pm( ) ; # ML のリストにあった query について # 2Pmアルゴリズムを実行 copy( NL, tmpNL ) ; # NL に、tmpNL をコピー end
【0039】(2)データベースの自己の部分に対して
M個の集約演算を実行する(ステップ220)。この処
理をより詳しく説明すると、最初に自己のメモリ領域の
ワークスペースに、データベースの自己の部分のうち、
今回処理する分を読み出す。そして、自己のメモリ領域
に格納された、これまでの演算結果(一番最初のステッ
プにおいては存在しない)と、データベースの自己の部
分のうち、読み出された今回処理する分とについて、M
個の集約演算を実行する。この2つのステップを、デー
タベースの自己の部分すべてに対して実行するまで繰り
返す。具体例については後に説明する。1回読み出した
データに対し、従来の方法では1つの集約演算しか行わ
れていなかったため、そのままM個の集約演算を実行す
る場合に適用すると、M回データを読み出さなければな
らなかった。一方、本発明では、1回読み出したデータ
に対し、M個の集約演算が実施されているため、ディス
ク・アクセスのための時間は全体として1/Mとなる。
M個の集約演算を実行する(ステップ220)。この処
理をより詳しく説明すると、最初に自己のメモリ領域の
ワークスペースに、データベースの自己の部分のうち、
今回処理する分を読み出す。そして、自己のメモリ領域
に格納された、これまでの演算結果(一番最初のステッ
プにおいては存在しない)と、データベースの自己の部
分のうち、読み出された今回処理する分とについて、M
個の集約演算を実行する。この2つのステップを、デー
タベースの自己の部分すべてに対して実行するまで繰り
返す。具体例については後に説明する。1回読み出した
データに対し、従来の方法では1つの集約演算しか行わ
れていなかったため、そのままM個の集約演算を実行す
る場合に適用すると、M回データを読み出さなければな
らなかった。一方、本発明では、1回読み出したデータ
に対し、M個の集約演算が実施されているため、ディス
ク・アクセスのための時間は全体として1/Mとなる。
【0040】(3)そして、M個の集約演算の演算結果
を集計担当プロセッサ・エレメント(集計担当ノードと
もいう)に送信し、集計担当プロセッサ・エレメントが
最終結果を計算する(ステップ230)。集計担当プロ
セッサ・エレメントは、1つでも複数でもよい。例え
ば、M個のプロセッサ・エレメントが共に本アルゴリズ
ムを実行している場合には、各プロセッサが1つの集約
演算の演算結果の集計担当プロセッサ・エレメントと
し、最終結果を計算するようにすることもできる。M個
よりプロセッサ・エレメントが少ない場合には、1つの
プロセッサ・エレメントが複数個の集約演算の演算結果
を集計してもよいし、ただ1つのプロセッサ・エレメン
トがM個の集約演算の演算結果をすべて集計するように
してもよい。どのプロセッサ・エレメントがどの集約演
算の演算結果を集計するかは、予め決めておく。
を集計担当プロセッサ・エレメント(集計担当ノードと
もいう)に送信し、集計担当プロセッサ・エレメントが
最終結果を計算する(ステップ230)。集計担当プロ
セッサ・エレメントは、1つでも複数でもよい。例え
ば、M個のプロセッサ・エレメントが共に本アルゴリズ
ムを実行している場合には、各プロセッサが1つの集約
演算の演算結果の集計担当プロセッサ・エレメントと
し、最終結果を計算するようにすることもできる。M個
よりプロセッサ・エレメントが少ない場合には、1つの
プロセッサ・エレメントが複数個の集約演算の演算結果
を集計してもよいし、ただ1つのプロセッサ・エレメン
トがM個の集約演算の演算結果をすべて集計するように
してもよい。どのプロセッサ・エレメントがどの集約演
算の演算結果を集計するかは、予め決めておく。
【0041】また、集約演算の演算結果における各グル
ープをプロセッサ・エレメントごとに割当て、集計する
方法も考えられる。例えば、プロセッサ・エレメント1
が集約演算1のグループ1及び2を集計し、プロセッサ
・エレメント2が集約演算1のグループ3及び4と集約
演算2のグループ1及び2を集計する、といった具合で
ある。
ープをプロセッサ・エレメントごとに割当て、集計する
方法も考えられる。例えば、プロセッサ・エレメント1
が集約演算1のグループ1及び2を集計し、プロセッサ
・エレメント2が集約演算1のグループ3及び4と集約
演算2のグループ1及び2を集計する、といった具合で
ある。
【0042】(4)M個の集約演算の最終結果が得られ
ると、N個の集約演算が全て実行されたか判断される
(ステップ240)。もし、N個の集約演算がすべて実
行されたわけではない場合には、ステップ210に戻っ
て処理を繰り返す。この場合、通常はもとのMと異なる
Mで繰り返しを実行する。もし、N個の集約演算がすべ
て実行された場合には、処理を終了する。
ると、N個の集約演算が全て実行されたか判断される
(ステップ240)。もし、N個の集約演算がすべて実
行されたわけではない場合には、ステップ210に戻っ
て処理を繰り返す。この場合、通常はもとのMと異なる
Mで繰り返しを実行する。もし、N個の集約演算がすべ
て実行された場合には、処理を終了する。
【0043】では実際の実行例を図7乃至図10の例を
用いて説明する。図7はプロセッサ・エレメント1用の
ディスク装置に記憶されたリレーションを、図8はプロ
セッサ・エレメント2用のディスク装置に記憶されたリ
レーションを、図9はプロセッサ・エレメント3用のデ
ィスク装置に記憶されたリレーションを、図10はプロ
セッサ・エレメント4用のディスク装置に記憶されたリ
レーションを、それぞれ表し、コンピュータ・システム
には4つのプロセッサ・エレメントが存在するとする。
表の各列は、右から売上げの月、日、曜日、場所、店番
号、製品番号、売上げ数をそれぞれ表す。表の各行は、
売上げが発生した時に生成されるとする。
用いて説明する。図7はプロセッサ・エレメント1用の
ディスク装置に記憶されたリレーションを、図8はプロ
セッサ・エレメント2用のディスク装置に記憶されたリ
レーションを、図9はプロセッサ・エレメント3用のデ
ィスク装置に記憶されたリレーションを、図10はプロ
セッサ・エレメント4用のディスク装置に記憶されたリ
レーションを、それぞれ表し、コンピュータ・システム
には4つのプロセッサ・エレメントが存在するとする。
表の各列は、右から売上げの月、日、曜日、場所、店番
号、製品番号、売上げ数をそれぞれ表す。表の各行は、
売上げが発生した時に生成されるとする。
【0044】月ごとに売上げ数を合計する演算(演算
1)と、曜日ごとに売上げ数を合計する演算(演算2)
と、場所ごとに売上げ数を合計する演算(演算3)と、
製品番号ごとに売上げ数を合計する演算(演算4)と、
場所及び曜日ごとに売上げ数を合計する演算(演算5)
とを一度に実行することとする。
1)と、曜日ごとに売上げ数を合計する演算(演算2)
と、場所ごとに売上げ数を合計する演算(演算3)と、
製品番号ごとに売上げ数を合計する演算(演算4)と、
場所及び曜日ごとに売上げ数を合計する演算(演算5)
とを一度に実行することとする。
【0045】プロセッサ・エレメント1は、図7の第1
行目のデータをディスク装置からメモリのワークスペー
スに読み出す。そして、演算1を実施するため、月と売
上げ数の列を参照する。月は"Apr"で売上げ数"3"が
最初に演算1の結果として記憶される。次に、演算2を
実行するため、曜日と売上げ数の列を参照し、曜日は"
Sun"で売上げが"3"が演算2の結果として記憶され
る。演算3を実行するために、場所と売上げ数の列を参
照し、場所"Kyuushuu"で売上げ数"3"が演算3
の結果として記憶される。演算4を実行するために、製
品番号と売上げ数の列を参照し、製品番号2で売上げ
数"3"が演算4の結果として記憶される。演算5を実行
するために、場所、曜日、売上げ数の列が参照され、場
所及び曜日が"Kyuushuu""Sun"で売上げ"3"
が演算5の結果として記憶される。
行目のデータをディスク装置からメモリのワークスペー
スに読み出す。そして、演算1を実施するため、月と売
上げ数の列を参照する。月は"Apr"で売上げ数"3"が
最初に演算1の結果として記憶される。次に、演算2を
実行するため、曜日と売上げ数の列を参照し、曜日は"
Sun"で売上げが"3"が演算2の結果として記憶され
る。演算3を実行するために、場所と売上げ数の列を参
照し、場所"Kyuushuu"で売上げ数"3"が演算3
の結果として記憶される。演算4を実行するために、製
品番号と売上げ数の列を参照し、製品番号2で売上げ
数"3"が演算4の結果として記憶される。演算5を実行
するために、場所、曜日、売上げ数の列が参照され、場
所及び曜日が"Kyuushuu""Sun"で売上げ"3"
が演算5の結果として記憶される。
【0046】次にプロセッサ・エレメント1は、図7の
第2行目のデータをディスク装置からメモリのワークス
ペースに読み出す。そして、演算1を実行するため、月
と売上げ数の列を参照する。ここで、読み出したデータ
の月のデータは、先に記憶した最初の演算1の結果の月
とは異なるため、新たに月は"Aug"で売上げ"4"を演
算1の結果に追加する。次に、演算2を実行するため、
曜日と売上げ数の列を参照する。ここで、読み出したデ
ータの曜日のデータとこれまでの演算2の実行結果の曜
日のデータとは同じなので、演算2の結果の曜日"Su
n"の項目に売上げ"4"を足して"7"を記憶する。演算
3を実行するため、場所と売上げ数の列を参照する。こ
こで、読み出したデータの場所のデータは、先に記憶し
た、これまでの演算3の結果の場所とは異なるため、新
たに場所は"Hokkaido"で売上げ数"4"を演算3
の結果に追加する。演算4を実行するため、製品番号と
売上げ数の列を参照する。ここで読み出したデータの製
品番号のデータは先に記憶した、これまでの演算4の結
果の製品番号とは異なるので、新たに製品番号"1"で売
上げ"4"を演算4の結果に追加する。演算5を実行する
ため、場所及び曜日と売上げ数の列を参照する。ここで
読み出したデータの場所及び曜日は、先に記憶した、こ
れまでの演算5の結果の場所及び曜日とは異なるため、
新たに場所及び曜日が"Hokkaido""4"を演算5
の結果に追加する。
第2行目のデータをディスク装置からメモリのワークス
ペースに読み出す。そして、演算1を実行するため、月
と売上げ数の列を参照する。ここで、読み出したデータ
の月のデータは、先に記憶した最初の演算1の結果の月
とは異なるため、新たに月は"Aug"で売上げ"4"を演
算1の結果に追加する。次に、演算2を実行するため、
曜日と売上げ数の列を参照する。ここで、読み出したデ
ータの曜日のデータとこれまでの演算2の実行結果の曜
日のデータとは同じなので、演算2の結果の曜日"Su
n"の項目に売上げ"4"を足して"7"を記憶する。演算
3を実行するため、場所と売上げ数の列を参照する。こ
こで、読み出したデータの場所のデータは、先に記憶し
た、これまでの演算3の結果の場所とは異なるため、新
たに場所は"Hokkaido"で売上げ数"4"を演算3
の結果に追加する。演算4を実行するため、製品番号と
売上げ数の列を参照する。ここで読み出したデータの製
品番号のデータは先に記憶した、これまでの演算4の結
果の製品番号とは異なるので、新たに製品番号"1"で売
上げ"4"を演算4の結果に追加する。演算5を実行する
ため、場所及び曜日と売上げ数の列を参照する。ここで
読み出したデータの場所及び曜日は、先に記憶した、こ
れまでの演算5の結果の場所及び曜日とは異なるため、
新たに場所及び曜日が"Hokkaido""4"を演算5
の結果に追加する。
【0047】次にプロセッサ・エレメント1は、図7の
第3行目のデータをディスク装置からメモリのワークス
ペースに読み出す。演算1を実行するため、月と売上げ
数の列を参照する。ここで、読み出したデータの月のデ
ータは、これまでの演算1の結果の月とは異なるため、
新たに月は"Jun"で売上げ"2"を演算1の結果に追加
する。演算2を実行するため、曜日と売上げ数の列を参
照する。ここで、読み出したデータの曜日はこれまでの
演算2の結果の曜日とは異なるため、新たに曜日は"M
on"で売上げ数"2"を追加する。演算3を実行するた
めに、場所と売上げ数の列を参照する。読み出したデー
タの場所とこれまでの演算3の結果の場所とは一致する
ものがある。よって、場所"Hokkaido"で売上げ
数"4"の項目に売上げ数"2"を足して"6"を記憶する。
演算4を実行するために、製品番号と売上げ数の列を参
照する。読み出したデータの製品番号のデータと、これ
までの演算4の結果の製品番号とは一致するものがあ
る。よって、製品番号"1"で売上げ数"4"の項目に売上
げ数"2"を足して"6"を記憶する。演算5を実行するた
めに、場所及び曜日と売上げ数の列を参照する。ここ
で、読み出したデータの場所及び曜日のデータは、これ
までの演算5の結果の場所及び曜日とは異なるため、新
たに場所及び曜日"Hokkaido""Mon"で売上げ
数"2"を追加する。
第3行目のデータをディスク装置からメモリのワークス
ペースに読み出す。演算1を実行するため、月と売上げ
数の列を参照する。ここで、読み出したデータの月のデ
ータは、これまでの演算1の結果の月とは異なるため、
新たに月は"Jun"で売上げ"2"を演算1の結果に追加
する。演算2を実行するため、曜日と売上げ数の列を参
照する。ここで、読み出したデータの曜日はこれまでの
演算2の結果の曜日とは異なるため、新たに曜日は"M
on"で売上げ数"2"を追加する。演算3を実行するた
めに、場所と売上げ数の列を参照する。読み出したデー
タの場所とこれまでの演算3の結果の場所とは一致する
ものがある。よって、場所"Hokkaido"で売上げ
数"4"の項目に売上げ数"2"を足して"6"を記憶する。
演算4を実行するために、製品番号と売上げ数の列を参
照する。読み出したデータの製品番号のデータと、これ
までの演算4の結果の製品番号とは一致するものがあ
る。よって、製品番号"1"で売上げ数"4"の項目に売上
げ数"2"を足して"6"を記憶する。演算5を実行するた
めに、場所及び曜日と売上げ数の列を参照する。ここ
で、読み出したデータの場所及び曜日のデータは、これ
までの演算5の結果の場所及び曜日とは異なるため、新
たに場所及び曜日"Hokkaido""Mon"で売上げ
数"2"を追加する。
【0048】ここまでの処理で、プロセッサ・エレメン
ト1のメモリには図11の結果が記憶される。このよう
な処理をプロセッサ・エレメント1のディスク装置に記
憶された図7のリレーションに対し繰り返すと、プロセ
ッサ・エレメント1のメモリには図12のような結果が
記憶されることになる。
ト1のメモリには図11の結果が記憶される。このよう
な処理をプロセッサ・エレメント1のディスク装置に記
憶された図7のリレーションに対し繰り返すと、プロセ
ッサ・エレメント1のメモリには図12のような結果が
記憶されることになる。
【0049】プロセッサ・エレメント2、プロセッサ・
エレメント3、及びプロセッサ・エレメント4でも同様
の処理が実施され、ディスク装置に記憶された図8、図
9、及び図10のリレーションに対する演算1乃至演算
5の結果は、それぞれ図13、図14、及び図15に表
わされるようになる。
エレメント3、及びプロセッサ・エレメント4でも同様
の処理が実施され、ディスク装置に記憶された図8、図
9、及び図10のリレーションに対する演算1乃至演算
5の結果は、それぞれ図13、図14、及び図15に表
わされるようになる。
【0050】そして、集計処理を実施すれば、集約演算
1乃至5の最終結果を得ることができる。本例では、各
プロセッサ・エレメントが集約演算1乃至5の一部のグ
ループについて集計するという集計方法を採用してい
る。すなわち、プロセッサ・エレメント1は、演算1の
月"Jan"と"Feb"のグループ、演算2の曜日"Mo
n"と"Tue"のグループ、演算3の場所"Hokkai
do"のグループ、演算4の製品番号"1"のグループ、
演算5の場所及び曜日のうち場所"Hokkaido"の
グループについて集計する。プロセッサ・エレメント2
は、演算1の月"Mar"と"Apr"のグループ、演算2
の曜日"Wed"と"Thu"のグループ、演算3の場所"
Kanto"のグループ、演算4の製品番号"2"のグル
ープ、演算5の場所及び曜日のうち場所"kanto"の
グループについて集計する。
1乃至5の最終結果を得ることができる。本例では、各
プロセッサ・エレメントが集約演算1乃至5の一部のグ
ループについて集計するという集計方法を採用してい
る。すなわち、プロセッサ・エレメント1は、演算1の
月"Jan"と"Feb"のグループ、演算2の曜日"Mo
n"と"Tue"のグループ、演算3の場所"Hokkai
do"のグループ、演算4の製品番号"1"のグループ、
演算5の場所及び曜日のうち場所"Hokkaido"の
グループについて集計する。プロセッサ・エレメント2
は、演算1の月"Mar"と"Apr"のグループ、演算2
の曜日"Wed"と"Thu"のグループ、演算3の場所"
Kanto"のグループ、演算4の製品番号"2"のグル
ープ、演算5の場所及び曜日のうち場所"kanto"の
グループについて集計する。
【0051】さらに、プロセッサ・エレメント3は、演
算1の月"May"と"Jun"のグループ、演算2の曜
日"Fri"と"Sat"のグループ、演算3の場所"Ka
nsai"のグループ、演算4の製品番号"1"のグルー
プ、演算5の場所及び曜日のうち場所"Kansai"の
グループについて集計する。プロセッサ・エレメント4
は、演算1の月"Jul"と"Aug"のグループ、演算2
の曜日"Sun"のグループ、演算3の場所"Kyuus
huu"のグループ、演算5の場所及び曜日のうち場所"
Kyuushuu"のグループについて集計する。
算1の月"May"と"Jun"のグループ、演算2の曜
日"Fri"と"Sat"のグループ、演算3の場所"Ka
nsai"のグループ、演算4の製品番号"1"のグルー
プ、演算5の場所及び曜日のうち場所"Kansai"の
グループについて集計する。プロセッサ・エレメント4
は、演算1の月"Jul"と"Aug"のグループ、演算2
の曜日"Sun"のグループ、演算3の場所"Kyuus
huu"のグループ、演算5の場所及び曜日のうち場所"
Kyuushuu"のグループについて集計する。
【0052】よって、各プロセッサ・エレメントは、自
己が保持しているグループのデータのうち、自己が集計
するグループのデータ以外のデータを集計担当ノードに
送信する必要がある。
己が保持しているグループのデータのうち、自己が集計
するグループのデータ以外のデータを集計担当ノードに
送信する必要がある。
【0053】以上、プロセッサ・エレメント1が集計し
た結果を図16、プロセッサ・エレメント2が集計した
結果を図17、プロセッサ・エレメント3が集計した結
果を図18、プロセッサ・エレメント4が集計した結果
を図19に示す。
た結果を図16、プロセッサ・エレメント2が集計した
結果を図17、プロセッサ・エレメント3が集計した結
果を図18、プロセッサ・エレメント4が集計した結果
を図19に示す。
【0054】2.BCm アルゴリズム(図20) 本アルゴリズムは、従来技術で説明したBCアルゴリズ
ムをベースとしたものであり、複数の集約演算を並列に
実行するように拡張したものであるため、BCmアルゴ
リズムと呼ぶことにする。本アルゴリズムも、複数の集
約演算を実行する際に、ディスク装置へのアクセスを最
小限にすることで高速化する。なお、全部でP個の集約
演算を実行することを前提とする。
ムをベースとしたものであり、複数の集約演算を並列に
実行するように拡張したものであるため、BCmアルゴ
リズムと呼ぶことにする。本アルゴリズムも、複数の集
約演算を実行する際に、ディスク装置へのアクセスを最
小限にすることで高速化する。なお、全部でP個の集約
演算を実行することを前提とする。
【0055】(1)まず、自らが実行するQ個の集約演
算の演算結果を記憶するスペースを自己のメモリ領域に
確保する(ステップ310)。このQ個は、2Pmアル
ゴリズムで説明したM個と同様に、各プロセッサ・エレ
メントのメモリ領域に格納できる範囲で決められるが、
なるべくたくさんの集約演算を一度に実行する方がディ
スク装置へのアクセスを共有することになるので、処理
が高速になる。なお、Q個の集約演算は、各プロセッサ
・エレメントで異なる集約演算を実行するようにしても
よいし、各プロセッサ・エレメントで同一にしておき、
集約演算の結果のグループを分けるということも可能で
ある。
算の演算結果を記憶するスペースを自己のメモリ領域に
確保する(ステップ310)。このQ個は、2Pmアル
ゴリズムで説明したM個と同様に、各プロセッサ・エレ
メントのメモリ領域に格納できる範囲で決められるが、
なるべくたくさんの集約演算を一度に実行する方がディ
スク装置へのアクセスを共有することになるので、処理
が高速になる。なお、Q個の集約演算は、各プロセッサ
・エレメントで異なる集約演算を実行するようにしても
よいし、各プロセッサ・エレメントで同一にしておき、
集約演算の結果のグループを分けるということも可能で
ある。
【0056】どの集約演算をどのプロセッサ・エレメン
トに割当てるかという処理の一例を図21に示す。最初
に未実行の集約演算を1つ選択する(ステップ41
0)。そして、プロセッサ・エレメントを1つ選択する
(ステップ420)。その後、選択されたプロセッサ・
エレメントのメモリに選択された集約演算の結果を記憶
するスペースがあるか検査する(ステップ430)。も
し、そのプロセッサ・エレメントのメモリにそのスペー
スがあるならば、そのプロセッサ・エレメントに選択さ
れた集約演算を割当てる(ステップ440)。一方、選
択されたプロセッサ・エレメントのメモリにその集約演
算の演算結果を格納するスペースがない場合には、他の
プロセッサ・エレメントのメモリについて検査する(ス
テップ450)。但し、ある集約演算についてすべての
プロセッサ・エレメントについて検査したにもかかわら
ず、その演算結果用のスペースが確保できなかった場合
には(ステップ460)、当該集約演算は別途処理する
(ステップ470)。別途処理というのは、図20のス
テップ350で繰り返し処理を実行するようになってい
るので、後の繰り返し処理の時に実行するようにする
か、場合によっては、当該集約演算を幾つかのグループ
に分割して実行するように変更する等の処理を含む。
トに割当てるかという処理の一例を図21に示す。最初
に未実行の集約演算を1つ選択する(ステップ41
0)。そして、プロセッサ・エレメントを1つ選択する
(ステップ420)。その後、選択されたプロセッサ・
エレメントのメモリに選択された集約演算の結果を記憶
するスペースがあるか検査する(ステップ430)。も
し、そのプロセッサ・エレメントのメモリにそのスペー
スがあるならば、そのプロセッサ・エレメントに選択さ
れた集約演算を割当てる(ステップ440)。一方、選
択されたプロセッサ・エレメントのメモリにその集約演
算の演算結果を格納するスペースがない場合には、他の
プロセッサ・エレメントのメモリについて検査する(ス
テップ450)。但し、ある集約演算についてすべての
プロセッサ・エレメントについて検査したにもかかわら
ず、その演算結果用のスペースが確保できなかった場合
には(ステップ460)、当該集約演算は別途処理する
(ステップ470)。別途処理というのは、図20のス
テップ350で繰り返し処理を実行するようになってい
るので、後の繰り返し処理の時に実行するようにする
か、場合によっては、当該集約演算を幾つかのグループ
に分割して実行するように変更する等の処理を含む。
【0057】そして、他の集約演算についてプロセッサ
・エレメントの割当てを決定するわけであるが、全ての
プロセッサ・エレメントのメモリに既に十分なスペース
がない場合は図20のステップ350による繰り返し処
理の際に再度割当てを行うので、又、全ての未実行の集
約演算について割当て処理を実行してしまった場合(ス
テップ480)には、割当ての済んだ集約演算を実行す
るため、この処理は一旦終了する(ステップ490)。
・エレメントの割当てを決定するわけであるが、全ての
プロセッサ・エレメントのメモリに既に十分なスペース
がない場合は図20のステップ350による繰り返し処
理の際に再度割当てを行うので、又、全ての未実行の集
約演算について割当て処理を実行してしまった場合(ス
テップ480)には、割当ての済んだ集約演算を実行す
るため、この処理は一旦終了する(ステップ490)。
【0058】集約演算のプロセッサ・エレメントへの上
記の割当て処理は一例であって、他の方法によって割当
てすることもできる。ユーザが、意図的にある集約演算
を特定のプロセッサ・エレメントに割当てることができ
るようにすることも可能である。なお、先にも述べた
が、各プロセッサ・エレメントで同一集約演算を実行す
るが、各プロセッサ・エレメントで集約するグループを
変えることもできる。この場合には、同一種類の集約演
算であるがグループが異なるため別集約演算として図2
1のプロセスにてプロセッサ・エレメントを割当てるこ
ともできる。また、このような実行方法のために、別の
割当てアルゴリズムを用意することも可能である。
記の割当て処理は一例であって、他の方法によって割当
てすることもできる。ユーザが、意図的にある集約演算
を特定のプロセッサ・エレメントに割当てることができ
るようにすることも可能である。なお、先にも述べた
が、各プロセッサ・エレメントで同一集約演算を実行す
るが、各プロセッサ・エレメントで集約するグループを
変えることもできる。この場合には、同一種類の集約演
算であるがグループが異なるため別集約演算として図2
1のプロセスにてプロセッサ・エレメントを割当てるこ
ともできる。また、このような実行方法のために、別の
割当てアルゴリズムを用意することも可能である。
【0059】図21をより詳しくした擬似コードを以下
に示す。
に示す。
【表4】 // 変数 N : number of node m_i : memory size for each node ( 1 ≦ i ≦ N ) q : query q_i : query ( 1 ≦ i ≦ Q ) QL : list of queires to be aggregated # 集約すべき演算のリスト tmpQL : list of queries # 次回以降実行する分 ML : list of queries # 今回実行する分 // 初期化 QL = { q_1, q_2, ..., q_i,... ,q_Q } # list of Q queries. while QL ≠ NIL 且つ tmpQL ≠ NIL do # NIL : 空リスト begin for i=0 to N do begin m_j = getMaxMemSize( j ) ; # 各ノードのメモリサイズを得る。 end tmpQL = NIL ; ML = NIL ; while QL ≠ NIL do # QL が 空になるまで実行 begin q = pop( QL ); # pop() リストの先頭を取ってくる for j=1 to N do begin if ( m_j > |q| ) then # q のメモリが確保できるか調べる begin # |q| は演算 q が使用するメモリサイズ append( ML, q ) ; # ML に q を加える m_j = m_j - |q| ; # 残りのメモリサイズから |q| を引く break ; # for 文を抜ける end end if (q の割り当て先が見つからない) then begin append( tmpQL, q ) ; # 演算 q を未処理リストに加える end end # ML 中の query について集約演算を実行 # tmpQL は、次回以降に while ML ≠ NIL do # ML が NIL になるまで実行 begin q = pop( ML ) ; # MLから先頭の演算を取ってくる allocate ( q ) ; # 演算 q 用のメモリを確保 end BCm( ) ; # ML のリストにあった query について # BCmアルゴリズムを実行 copy( QL, tmpQL ) ; # QL に、tmpQL をコピー end
【0060】(2)図20に戻って、データベースの自
己の部分のうち、今回処理する分を読み出し、読み出し
たデータをネットワークを介してブロードキャストする
(ステップ320)。ブロードキャストであるから、同
じ内容のデータが全てのプロセッサ・エレメントに送信
される。この際、どのデータがどのプロセッサ・エレメ
ントで必要となるかは判断しなくともよい。先に述べた
Repアルゴリズム及び後に述べるRepmアルゴリズ
ムにおいては、どのプロセッサがどのグループについて
集約を行っているか又はどのプロセッサがどの集約演算
のどのグループについて集約を行っているか判断して、
必要なプロセッサ・エレメントに送信するようになって
いるが、本アルゴリズムにおいては、全てのプロセッサ
・エレメントが同一集約演算を実行しているわけではな
いからである。全プロセッサ・エレメントで用いないよ
うなデータが存在することが予め分かっている場合に
は、そのデータの送信を省略できる。
己の部分のうち、今回処理する分を読み出し、読み出し
たデータをネットワークを介してブロードキャストする
(ステップ320)。ブロードキャストであるから、同
じ内容のデータが全てのプロセッサ・エレメントに送信
される。この際、どのデータがどのプロセッサ・エレメ
ントで必要となるかは判断しなくともよい。先に述べた
Repアルゴリズム及び後に述べるRepmアルゴリズ
ムにおいては、どのプロセッサがどのグループについて
集約を行っているか又はどのプロセッサがどの集約演算
のどのグループについて集約を行っているか判断して、
必要なプロセッサ・エレメントに送信するようになって
いるが、本アルゴリズムにおいては、全てのプロセッサ
・エレメントが同一集約演算を実行しているわけではな
いからである。全プロセッサ・エレメントで用いないよ
うなデータが存在することが予め分かっている場合に
は、そのデータの送信を省略できる。
【0061】(3)そして、他のプロセッサ・エレメン
トからのデータと、自ら読み出したデータと、これまで
の演算結果(一番最初の場合には存在しない)に対し
て、Q個の集約演算を実行する(ステップ330)。 (4)この(2)(ステップ320)(3)(ステップ
330)の処理を、全てのデータベースのデータについ
てQ個の集約演算を実行し終わるまで繰り返す(ステッ
プ340)。個々のプロセッサ・エレメント用のデータ
ベースの大きさにばらつきがある場合には、自己のデー
タベースを全て処理しても他のプロセッサ・エレメント
からデータが送信されてきたり、逆に他のプロセッサ・
エレメントからは送られてこないが自己のデータベース
を全て処理していないという場合も考えられる。この場
合、ステップ330は、自己のデータベース又は他プロ
セッサ・エレメントからの未処理のデータとそれまでの
演算結果とに対しQ個の集約演算を実行する、というこ
とになる。
トからのデータと、自ら読み出したデータと、これまで
の演算結果(一番最初の場合には存在しない)に対し
て、Q個の集約演算を実行する(ステップ330)。 (4)この(2)(ステップ320)(3)(ステップ
330)の処理を、全てのデータベースのデータについ
てQ個の集約演算を実行し終わるまで繰り返す(ステッ
プ340)。個々のプロセッサ・エレメント用のデータ
ベースの大きさにばらつきがある場合には、自己のデー
タベースを全て処理しても他のプロセッサ・エレメント
からデータが送信されてきたり、逆に他のプロセッサ・
エレメントからは送られてこないが自己のデータベース
を全て処理していないという場合も考えられる。この場
合、ステップ330は、自己のデータベース又は他プロ
セッサ・エレメントからの未処理のデータとそれまでの
演算結果とに対しQ個の集約演算を実行する、というこ
とになる。
【0062】(5)全てのデータベースのデータに対し
てQ個の集約演算を実行した場合には、P個の集約演算
すべてについて実行が終了したか判断する(ステップ3
50)。終了していない場合には、別の集約演算に対し
てステップ310以下を実行する。終了している場合に
は、全処理を終了する(ステップ360)。
てQ個の集約演算を実行した場合には、P個の集約演算
すべてについて実行が終了したか判断する(ステップ3
50)。終了していない場合には、別の集約演算に対し
てステップ310以下を実行する。終了している場合に
は、全処理を終了する(ステップ360)。
【0063】このBCmアルゴリズムでは、ある集約演
算を実行するプロセッサ・エレメントが、全てのデータ
について演算を実行するが、ディスク装置へのアクセス
は、自己のディスク装置に対してのみなので、このディ
スク装置へのアクセスのコストは削減されている。ま
た、複数個の集約演算でこのディスク装置へのアクセス
を共有するので、全体としてコストは削減されている。
算を実行するプロセッサ・エレメントが、全てのデータ
について演算を実行するが、ディスク装置へのアクセス
は、自己のディスク装置に対してのみなので、このディ
スク装置へのアクセスのコストは削減されている。ま
た、複数個の集約演算でこのディスク装置へのアクセス
を共有するので、全体としてコストは削減されている。
【0064】以上の処理を図7,図8,図9,図10を
用いて具体的に説明する。ここでは、プロセッサ・エレ
メント1が先に示した演算1を、プロセッサ・エレメン
ト2が演算2及び3を、プロセッサ・エレメント3が演
算4を、プロセッサ・エレメント4が演算5を実行する
ものとする。プロセッサ・エレメント2の動作を説明す
る。なお、1行ずつ読み出すような説明であるが、任意
の行数ずつ読み出すようにすることも可能である。
用いて具体的に説明する。ここでは、プロセッサ・エレ
メント1が先に示した演算1を、プロセッサ・エレメン
ト2が演算2及び3を、プロセッサ・エレメント3が演
算4を、プロセッサ・エレメント4が演算5を実行する
ものとする。プロセッサ・エレメント2の動作を説明す
る。なお、1行ずつ読み出すような説明であるが、任意
の行数ずつ読み出すようにすることも可能である。
【0065】プロセッサ・エレメント2は、図8の第1
行目をメモリのワークスペースに読み出す。そして、ネ
ットワークを介して全プロセッサ・エレメントに送信す
る。他のプロセッサ・エレメントも同様に読み出したデ
ータ(各データベースの第1行目)を全プロセッサ・エ
レメントに送信するので、プロセッサ・エレメント2の
メモリのワークスペースには、図7,図8,図9及び図
10の第1行目が格納されている。そして、先に示した
演算2及び演算3を実行する。すなわち、曜日ごとに売
上げ数を合計する演算(演算2)と、場所ごとに売上げ
数を合計する演算(演算3)である。
行目をメモリのワークスペースに読み出す。そして、ネ
ットワークを介して全プロセッサ・エレメントに送信す
る。他のプロセッサ・エレメントも同様に読み出したデ
ータ(各データベースの第1行目)を全プロセッサ・エ
レメントに送信するので、プロセッサ・エレメント2の
メモリのワークスペースには、図7,図8,図9及び図
10の第1行目が格納されている。そして、先に示した
演算2及び演算3を実行する。すなわち、曜日ごとに売
上げ数を合計する演算(演算2)と、場所ごとに売上げ
数を合計する演算(演算3)である。
【0066】プロセッサ・エレメント2がワークスペー
スに存在するデータに対し演算2を実行すると、曜日"
Sat"で売上げ数"7"、曜日"Wed"で売上げ数"1
5"、曜日"Sun"で売上げ数"3"が得られる。また、
演算3を実行すると、場所"Kyuushuu"で売上げ
数"10"、場所"Kansai"で売上げ数"6"、場所"
Hokkaido"で売上げ数"9"が得られる。
スに存在するデータに対し演算2を実行すると、曜日"
Sat"で売上げ数"7"、曜日"Wed"で売上げ数"1
5"、曜日"Sun"で売上げ数"3"が得られる。また、
演算3を実行すると、場所"Kyuushuu"で売上げ
数"10"、場所"Kansai"で売上げ数"6"、場所"
Hokkaido"で売上げ数"9"が得られる。
【0067】この後、プロセッサ・エレメント2は、図
8の第2行目をメモリのワークスペースに読み出す。そ
して、ネットワークを介して全プロセッサ・エレメント
に送信する。他のプロセッサ・エレメントも同様に読み
出したデータ(各データベースの第2行目)を全プロセ
ッサ・エレメントに送信するので、プロセッサ・エレメ
ント2のメモリのワークスペースには、図7,図8,図
9及び図10の第2行目が格納されるている。
8の第2行目をメモリのワークスペースに読み出す。そ
して、ネットワークを介して全プロセッサ・エレメント
に送信する。他のプロセッサ・エレメントも同様に読み
出したデータ(各データベースの第2行目)を全プロセ
ッサ・エレメントに送信するので、プロセッサ・エレメ
ント2のメモリのワークスペースには、図7,図8,図
9及び図10の第2行目が格納されるている。
【0068】プロセッサ・エレメント2がワークスペー
スのデータ及びこれまでの演算結果に対して演算2を実
行すると、曜日"Sat"で売上げ数"16"、曜日"We
d"で売上げ数"15"、曜日"Sun"で売上げ数"7"、
曜日"Tue"で売上げ数"8"、曜日"Thu"で売上げ
数"1"が得られる。また、同様に演算3を実行すると、
場所"Kyuushuu"で売上げ数"11"、場所"Ka
nsai"で売上げ数"6"、場所"Hokkaido"で
売上げ数"21"、場所"Kanto"で売上げ数"9"が得
られる。
スのデータ及びこれまでの演算結果に対して演算2を実
行すると、曜日"Sat"で売上げ数"16"、曜日"We
d"で売上げ数"15"、曜日"Sun"で売上げ数"7"、
曜日"Tue"で売上げ数"8"、曜日"Thu"で売上げ
数"1"が得られる。また、同様に演算3を実行すると、
場所"Kyuushuu"で売上げ数"11"、場所"Ka
nsai"で売上げ数"6"、場所"Hokkaido"で
売上げ数"21"、場所"Kanto"で売上げ数"9"が得
られる。
【0069】さらに、プロセッサ・エレメント2は、図
8の第3行目をメモリのワークスペースに読み出す。そ
して、ネットワークを介して全プロセッサ・エレメント
に送信する。他のプロセッサ・エレメントも同様に読み
出したデータ(各データベースの第3行目)を全プロセ
ッサ・エレメントに送信するので、プロセッサ・エレメ
ント2のメモリのワークスペースには、図7,図8,図
9及び図10の第3行目が格納されるている。
8の第3行目をメモリのワークスペースに読み出す。そ
して、ネットワークを介して全プロセッサ・エレメント
に送信する。他のプロセッサ・エレメントも同様に読み
出したデータ(各データベースの第3行目)を全プロセ
ッサ・エレメントに送信するので、プロセッサ・エレメ
ント2のメモリのワークスペースには、図7,図8,図
9及び図10の第3行目が格納されるている。
【0070】プロセッサ・エレメント2がワークスペー
スのデータ及びこれまでの演算結果に対して演算2を実
行すると、曜日"Sat"で売上げ数"16"、曜日"We
d"で売上げ数"15"、曜日"Sun"で売上げ数"1
5"、曜日"Tue"で売上げ数"8"、曜日"Thu"で売
上げ数"9"、曜日"Mon"で売上げ数"4"が得られる。
また、同様に演算3を実行すると、場所"Kyuush
uu"で売上げ数"11"、場所"Kansai"で売上げ
数"6"、場所"Hokkaido"で売上げ数"31"、場
所"Kanto"で売上げ数"19"が得られる。
スのデータ及びこれまでの演算結果に対して演算2を実
行すると、曜日"Sat"で売上げ数"16"、曜日"We
d"で売上げ数"15"、曜日"Sun"で売上げ数"1
5"、曜日"Tue"で売上げ数"8"、曜日"Thu"で売
上げ数"9"、曜日"Mon"で売上げ数"4"が得られる。
また、同様に演算3を実行すると、場所"Kyuush
uu"で売上げ数"11"、場所"Kansai"で売上げ
数"6"、場所"Hokkaido"で売上げ数"31"、場
所"Kanto"で売上げ数"19"が得られる。
【0071】以上のような処理を繰り返し、図7,図
8,図9及び図10の全てのデータに対して、プロセッ
サ・エレメント2が演算2及び演算3を実行すると、図
22のようなデータが、プロセッサ・エレメント2のメ
モリに記憶されることになる。なお、プロセッサ・エレ
メント1、プロセッサ・エレメント3、プロセッサ・エ
レメント4の最終実行結果を図23に示しておく。
8,図9及び図10の全てのデータに対して、プロセッ
サ・エレメント2が演算2及び演算3を実行すると、図
22のようなデータが、プロセッサ・エレメント2のメ
モリに記憶されることになる。なお、プロセッサ・エレ
メント1、プロセッサ・エレメント3、プロセッサ・エ
レメント4の最終実行結果を図23に示しておく。
【0072】3.Repmアルゴリズム(図24) 本アルゴリズムは、従来技術の欄で説明したRepアル
ゴリズムをベースとしたものであり、複数の集約演算を
並列に実施するように拡張したものであるため、Rep
mアルゴリズムと呼ぶことにする。複数の集約演算を実
施する際に、ディスク装置へのアクセスを最小限にする
ことで全体を高速化する。なお、全部でS個の集約演算
を実行するものとする。
ゴリズムをベースとしたものであり、複数の集約演算を
並列に実施するように拡張したものであるため、Rep
mアルゴリズムと呼ぶことにする。複数の集約演算を実
施する際に、ディスク装置へのアクセスを最小限にする
ことで全体を高速化する。なお、全部でS個の集約演算
を実行するものとする。
【0073】(1)最初に、S個の集約演算のうちどの
集約演算を実行するか決定する(ステップ510)。こ
こで実行される集約演算の個数をT個とする。以下の説
明では、同時に実行する集約演算は、各プロセッサにつ
いて同一にし、その代わりにグループの種類を変えるよ
うにする。但し、必ず各プロセッサで実行する集約演算
が同一である必要はない。また、このステップは、シス
テム全体で使用可能なメモリ容量を勘案して実施される
べきであるが、必ずしもメモリ容量のみにより制限する
必要はなく、ユーザがメモリ容量の限度において指定す
るようにしてもよい。以下に、本ステップの実施方法の
一例を擬似コードによって示す。
集約演算を実行するか決定する(ステップ510)。こ
こで実行される集約演算の個数をT個とする。以下の説
明では、同時に実行する集約演算は、各プロセッサにつ
いて同一にし、その代わりにグループの種類を変えるよ
うにする。但し、必ず各プロセッサで実行する集約演算
が同一である必要はない。また、このステップは、シス
テム全体で使用可能なメモリ容量を勘案して実施される
べきであるが、必ずしもメモリ容量のみにより制限する
必要はなく、ユーザがメモリ容量の限度において指定す
るようにしてもよい。以下に、本ステップの実施方法の
一例を擬似コードによって示す。
【0074】
【表5】 入力: 集約演算の個数: s 各集約演算の結果の大きさの見積もり: n(1), n(2), ... n(s) システム全体の主記憶の大きさ: M 出力: メモリに入る集約演算を区切って出力する. アルゴリズム: R = { 1, 2, ... s }; # 処理していない集約演算の集合 while R is not empty do m = M; # 残りのメモリサイズ Q = empty; # 結果が入る変数Qを空に初期化 while m >= 0 or R is empty do x = an element in R; # R から一つ要素を取り出して R = R - { x }; # R から取り除き, Q = Q + { x }; # Q に加える. m = m - n(x); # その要素が使用するメモリを引く. done; output(Q); # Qをメモリに入る集約演算のグループとして # 出力する. done.
【0075】(2)次に、どの集約演算のどのグループ
をどのプロセッサが実行するか決定する(ステップ52
0)。例えば、Aという演算のグループとしてb,c,
d,eが存在するならば、そのb,c,d,eをそれぞ
れプロセッサ1,2,3,4に割り当て、Bという演算
のグループとしてf,g,h,iが存在するならば、そ
のf,g,h,iをそれぞれプロセッサ1,2,3,4
に割り当てる等の処理を実施する。なお、各集約演算に
どのようなグループが存在するかが予め分からないと本
ステップは実行できないが、小規模のサンプリングを実
行すれば、グループの種類を把握することができる。ま
た、どのようにグループを割り当てるかは、様々な方法
が考えられる。例えば、グループを入力とするハッシュ
関数を用意しておき、ハッシュ値の範囲によってプロセ
ッサを割り当てることも可能であるし、ユーザ指定によ
り行うことも可能である。
をどのプロセッサが実行するか決定する(ステップ52
0)。例えば、Aという演算のグループとしてb,c,
d,eが存在するならば、そのb,c,d,eをそれぞ
れプロセッサ1,2,3,4に割り当て、Bという演算
のグループとしてf,g,h,iが存在するならば、そ
のf,g,h,iをそれぞれプロセッサ1,2,3,4
に割り当てる等の処理を実施する。なお、各集約演算に
どのようなグループが存在するかが予め分からないと本
ステップは実行できないが、小規模のサンプリングを実
行すれば、グループの種類を把握することができる。ま
た、どのようにグループを割り当てるかは、様々な方法
が考えられる。例えば、グループを入力とするハッシュ
関数を用意しておき、ハッシュ値の範囲によってプロセ
ッサを割り当てることも可能であるし、ユーザ指定によ
り行うことも可能である。
【0076】以上のステップ510及び520は、シス
テム全体として実施する必要がある。よって、この処理
は、特定のプロセッサを1つ割り当てて実施することも
可能であるし、システムに制御用のプロセッサを設け、
そのプロセッサに実行させることも可能である。
テム全体として実施する必要がある。よって、この処理
は、特定のプロセッサを1つ割り当てて実施することも
可能であるし、システムに制御用のプロセッサを設け、
そのプロセッサに実行させることも可能である。
【0077】(3)そして、各プロセッサはデータベー
スの自己の部分から今回処理する分を読み出す(ステッ
プ530)。例えば、データベースの1タプルを読み出
すようにすることも、複数のタプルを読み出すようにす
ることも可能である。 (4)各プロセッサは、読み出したデータのうち、実行
する集約演算に必要なデータを選択する(ステップ54
0)。例えばデータベースの1タプルを読み出した場
合、集約演算によっては不必要な属性についてのデータ
も読み出していることになるので、システム全体として
不必要なデータについては破棄する。ここで、集約演算
はステップ510で決定されたT個の集約演算であるか
ら、このT個の集約演算に関係のないデータが破棄され
る。従来のRepアルゴリズムでは、1つの集約演算に
関係するデータのみ用いられていたので、Repmアル
ゴリズムではディスク装置への1回のアクセスが従来の
T倍有効利用されていることが分かる。
スの自己の部分から今回処理する分を読み出す(ステッ
プ530)。例えば、データベースの1タプルを読み出
すようにすることも、複数のタプルを読み出すようにす
ることも可能である。 (4)各プロセッサは、読み出したデータのうち、実行
する集約演算に必要なデータを選択する(ステップ54
0)。例えばデータベースの1タプルを読み出した場
合、集約演算によっては不必要な属性についてのデータ
も読み出していることになるので、システム全体として
不必要なデータについては破棄する。ここで、集約演算
はステップ510で決定されたT個の集約演算であるか
ら、このT個の集約演算に関係のないデータが破棄され
る。従来のRepアルゴリズムでは、1つの集約演算に
関係するデータのみ用いられていたので、Repmアル
ゴリズムではディスク装置への1回のアクセスが従来の
T倍有効利用されていることが分かる。
【0078】(5)次に、各プロセッサは、読み出した
データのうち他のプロセッサが集約すべきデータを、関
係する集約演算のIDと共に当該他のプロセッサにネッ
トワーク1を介して送信する(ステップ550)。実行
する集約演算によって必要とするデータの属性が決定さ
れ、その属性値によりグループが決定されるので、この
属性値を入力とするハッシュ関数を用意し、その出力値
により送信先のプロセッサが判別できるようにする。T
個の集約演算の各々について本処理を実施する。この
際、データを受信するプロセッサがどの集約演算につい
てのデータが送られてきたのが判別できるように集約演
算のIDを付して送信する。 (6)各プロセッサは、そのプロセッサが集約すべき集
約演算のグループに関するデータについてT個の集約演
算を実行する(ステップ560)。この処理は、本ステ
ップを実施するまでの演算結果と、読み出したデータの
うち当該プロセッサが必要とするデータと、他のプロセ
ッサから送られてきたデータとについて実施される。
データのうち他のプロセッサが集約すべきデータを、関
係する集約演算のIDと共に当該他のプロセッサにネッ
トワーク1を介して送信する(ステップ550)。実行
する集約演算によって必要とするデータの属性が決定さ
れ、その属性値によりグループが決定されるので、この
属性値を入力とするハッシュ関数を用意し、その出力値
により送信先のプロセッサが判別できるようにする。T
個の集約演算の各々について本処理を実施する。この
際、データを受信するプロセッサがどの集約演算につい
てのデータが送られてきたのが判別できるように集約演
算のIDを付して送信する。 (6)各プロセッサは、そのプロセッサが集約すべき集
約演算のグループに関するデータについてT個の集約演
算を実行する(ステップ560)。この処理は、本ステ
ップを実施するまでの演算結果と、読み出したデータの
うち当該プロセッサが必要とするデータと、他のプロセ
ッサから送られてきたデータとについて実施される。
【0079】(7)そして、各プロセッサが、集約すべ
き集約演算のグループに関する全てのデータについてT
個の集約演算を実行するまで、ステップ530乃至56
0を繰り返す(ステップ570)。すなわち、自己が読
み出したデータ及び受信したデータが、全データベース
の必要な部分となるまで繰り返される。 (8)もし、この処理が終了すると、T個の集約演算の
処理が終了したことになる。よって、次のT個(これま
でのTとは異なる場合もある)の集約演算についてステ
ップ510以下を、全ての(S個の)集約演算について
の処理を実行するまで行う(ステップ580)。
き集約演算のグループに関する全てのデータについてT
個の集約演算を実行するまで、ステップ530乃至56
0を繰り返す(ステップ570)。すなわち、自己が読
み出したデータ及び受信したデータが、全データベース
の必要な部分となるまで繰り返される。 (8)もし、この処理が終了すると、T個の集約演算の
処理が終了したことになる。よって、次のT個(これま
でのTとは異なる場合もある)の集約演算についてステ
ップ510以下を、全ての(S個の)集約演算について
の処理を実行するまで行う(ステップ580)。
【0080】では、先に示した図7乃至図10の例を用
いて実行例を説明する。この際、同時に実行される集約
演算は、先に示した演算1(月ごとの売上げ数を合計す
る演算)及び演算2(曜日ごとの売上げ数を合計する演
算)とする。プロセッサ・エレメントは4つである。そ
して、プロセッサ・エレメント1は、演算1のJan及
びFebのグループ、演算2のMon及びTueのグル
ープを集約する。プロセッサ・エレメント2は、演算1
のMar及びAprのグループ、演算2のWed及びT
huのグループを集約する。プロセッサ・エレメント3
は、演算1のMay及びJunのグループ、演算2のF
ri及びSatのグループを集約する。プロセッサ・エ
レメント4は、演算1のJul及びAugのグループ、
演算2のSunのグループを集約する。
いて実行例を説明する。この際、同時に実行される集約
演算は、先に示した演算1(月ごとの売上げ数を合計す
る演算)及び演算2(曜日ごとの売上げ数を合計する演
算)とする。プロセッサ・エレメントは4つである。そ
して、プロセッサ・エレメント1は、演算1のJan及
びFebのグループ、演算2のMon及びTueのグル
ープを集約する。プロセッサ・エレメント2は、演算1
のMar及びAprのグループ、演算2のWed及びT
huのグループを集約する。プロセッサ・エレメント3
は、演算1のMay及びJunのグループ、演算2のF
ri及びSatのグループを集約する。プロセッサ・エ
レメント4は、演算1のJul及びAugのグループ、
演算2のSunのグループを集約する。
【0081】プロセッサ・エレメント3の処理を代表し
て説明する。図25はプロセッサ・レメント3が図9に
示したプロセッサ・エレメント3用のデータベースの第
1行を読み出した状態を示す。この例では1行づつ読み
出すが、一度に読み出す行数は任意である。本例では、
日にち(day)の列、場所(location)の
列、店番号(shop#)の列及び製品番号(prod
uct#)の列は、演算1及び2に必要でないので破棄
される(ステップ540参照)。一方、月(mont
h)の列と週(week)の列と売上げ(sold)の
列は演算1及び2に必要である。そして、第1行目の
月"Aug"及び売上げ"7"は、演算1のIDと共に集約
を担当するプロセッサ・エレメント4に送信される(ス
テップ550参照)。また、第1行目の週"Sat"及び
売上げ"7"は、読み出したプロセッサ・エレメント3が
行う演算2の集約すべきグループであるから、自ら集約
を行う。ここでは最初のデータであるからそのまま記録
する。プロセッサ・エレメント1及び2及び4も同時
に、自己のデータベースの第1行目を読み出して処理を
行っているとすると、プロセッサ・エレメント3には何
も送られてこない。
て説明する。図25はプロセッサ・レメント3が図9に
示したプロセッサ・エレメント3用のデータベースの第
1行を読み出した状態を示す。この例では1行づつ読み
出すが、一度に読み出す行数は任意である。本例では、
日にち(day)の列、場所(location)の
列、店番号(shop#)の列及び製品番号(prod
uct#)の列は、演算1及び2に必要でないので破棄
される(ステップ540参照)。一方、月(mont
h)の列と週(week)の列と売上げ(sold)の
列は演算1及び2に必要である。そして、第1行目の
月"Aug"及び売上げ"7"は、演算1のIDと共に集約
を担当するプロセッサ・エレメント4に送信される(ス
テップ550参照)。また、第1行目の週"Sat"及び
売上げ"7"は、読み出したプロセッサ・エレメント3が
行う演算2の集約すべきグループであるから、自ら集約
を行う。ここでは最初のデータであるからそのまま記録
する。プロセッサ・エレメント1及び2及び4も同時
に、自己のデータベースの第1行目を読み出して処理を
行っているとすると、プロセッサ・エレメント3には何
も送られてこない。
【0082】次に、プロセッサ・エレメント3が図9の
第2行目を読み出した状態(不要な部分を除く)を図2
6に示す。月"Apr"及び売上げ"8"はプロセッサ・エ
レメント2に演算1のIDと共に送信される。また、
週"Tue"及び売上げ"8"はプロセッサ・エレメント1
に演算2のIDと共に送信される。プロセッサ・エレメ
ント1及び2及び4も同時に、自己のデータベースの第
2行目を読み出して処理を行っているとすると、プロセ
ッサ・エレメント4から"Sat"及び"9"が演算2のI
Dと共に送信されてくるので、プロセッサ・エレメント
3は、第1行目の結果を参照して、"Sat"及び"16"
を得る。
第2行目を読み出した状態(不要な部分を除く)を図2
6に示す。月"Apr"及び売上げ"8"はプロセッサ・エ
レメント2に演算1のIDと共に送信される。また、
週"Tue"及び売上げ"8"はプロセッサ・エレメント1
に演算2のIDと共に送信される。プロセッサ・エレメ
ント1及び2及び4も同時に、自己のデータベースの第
2行目を読み出して処理を行っているとすると、プロセ
ッサ・エレメント4から"Sat"及び"9"が演算2のI
Dと共に送信されてくるので、プロセッサ・エレメント
3は、第1行目の結果を参照して、"Sat"及び"16"
を得る。
【0083】プロセッサ・エレメント3が図9の第3行
目を読み出した状態(不要な部分を除く)を図27に示
す。月"May"及び売上げ"8"は、プロセッサ・エレメ
ント3が集約すべき演算1のグループであるので、ここ
では"May"及び"8"をそのまま記録する。週"Thu"
及び売上げ"8"は、プロセッサ・エレメント2に演算2
のIDと共に送信される。プロセッサ・エレメント1及
び2及び4も同時に、自己のデータベースの第3行目を
読み出して処理を行っているとすると、プロセッサ・エ
レメント1からは演算1のIDと共に"Jun"及び"
2"、プロセッサ・エレメント2からは演算1のIDと
共に"May"及び"2"が送られてくるので、プロセッサ
・エレメント3はそれまでの結果を参照して、"May"
及び"10"、"Jun"及び"2"を格納する。なお、ここ
では、自らが読み出したデータと送信されてきたデータ
を別個に集約しているように説明しているが、これは説
明の都合上であって、区別なく集約することができる。
目を読み出した状態(不要な部分を除く)を図27に示
す。月"May"及び売上げ"8"は、プロセッサ・エレメ
ント3が集約すべき演算1のグループであるので、ここ
では"May"及び"8"をそのまま記録する。週"Thu"
及び売上げ"8"は、プロセッサ・エレメント2に演算2
のIDと共に送信される。プロセッサ・エレメント1及
び2及び4も同時に、自己のデータベースの第3行目を
読み出して処理を行っているとすると、プロセッサ・エ
レメント1からは演算1のIDと共に"Jun"及び"
2"、プロセッサ・エレメント2からは演算1のIDと
共に"May"及び"2"が送られてくるので、プロセッサ
・エレメント3はそれまでの結果を参照して、"May"
及び"10"、"Jun"及び"2"を格納する。なお、ここ
では、自らが読み出したデータと送信されてきたデータ
を別個に集約しているように説明しているが、これは説
明の都合上であって、区別なく集約することができる。
【0084】プロセッサ・エレメント3が図9の第4行
目を読み出した状態(不要な部分を除く)を図28に示
す。月"Mar"及び売上げ"8"は、プロセッサ・エレメ
ント2が集約すべき演算1のグループであるので、プロ
セッサ・エレメント2に演算1のIDと共に送信する。
また、週"Fri"及び売上げ"8"は、プロセッサ・エレ
メント3が集約すべき演算2のグループであるので、こ
こではそのまま格納する。プロセッサ・エレメント1及
び2及び4も同時に、自己のデータベースの第4行目を
読み出して処理を行っているとすると、プロセッサ・エ
レメント1からは演算1のIDと共に"May"及び"4"
と演算2のIDと共に"Fri"及び"4"が、プロセッサ
・エレメント2からは演算2のIDと共に"Fri"及
び"9"が、プロセッサ・エレメント4からは演算1のI
Dと共に"Jun"及び"3"と演算2のIDと共に"Sa
t"及び"3"が送られてくる。よって、プロセッサ・エ
レメント3は、これらのデータから、"May"及び"1
4"と"Jun"及び"5"、"Fri"及び"21"と"Sa
t"及び"19"を計算する。
目を読み出した状態(不要な部分を除く)を図28に示
す。月"Mar"及び売上げ"8"は、プロセッサ・エレメ
ント2が集約すべき演算1のグループであるので、プロ
セッサ・エレメント2に演算1のIDと共に送信する。
また、週"Fri"及び売上げ"8"は、プロセッサ・エレ
メント3が集約すべき演算2のグループであるので、こ
こではそのまま格納する。プロセッサ・エレメント1及
び2及び4も同時に、自己のデータベースの第4行目を
読み出して処理を行っているとすると、プロセッサ・エ
レメント1からは演算1のIDと共に"May"及び"4"
と演算2のIDと共に"Fri"及び"4"が、プロセッサ
・エレメント2からは演算2のIDと共に"Fri"及
び"9"が、プロセッサ・エレメント4からは演算1のI
Dと共に"Jun"及び"3"と演算2のIDと共に"Sa
t"及び"3"が送られてくる。よって、プロセッサ・エ
レメント3は、これらのデータから、"May"及び"1
4"と"Jun"及び"5"、"Fri"及び"21"と"Sa
t"及び"19"を計算する。
【0085】以下これらの演算を繰り返すと、プロセッ
サ・エレメント3においては図18の演算1及び演算2
の部分が得られる。同様にして、プロセッサ・エレメン
ト1においては図16の演算1及び演算2の部分、プロ
セッサ・エレメント2においては図17の演算1及び演
算2の部分、プロセッサ・エレメント4においては図1
9の演算1及び演算2の部分が計算されることとなる。
なお、図29に演算1のIDが付されて各プロセッサ・
エレメントから他のプロセッサ・エレメントに送信され
るデータの宛先をまとめておく。逆に、演算1につい
て、各プロセッサ・エレメントに送られてくるデータの
送信元を図30にまとめておく。さらに、図31に演算
2のIDが付されて各プロセッサ・エレメントから他の
プロセッサ・エレメントに送信されるデータの宛先をま
とめておく。逆に、演算2について、各プロセッサ・エ
レメントに送られてくるデータの送信元を図32にまと
めておく。
サ・エレメント3においては図18の演算1及び演算2
の部分が得られる。同様にして、プロセッサ・エレメン
ト1においては図16の演算1及び演算2の部分、プロ
セッサ・エレメント2においては図17の演算1及び演
算2の部分、プロセッサ・エレメント4においては図1
9の演算1及び演算2の部分が計算されることとなる。
なお、図29に演算1のIDが付されて各プロセッサ・
エレメントから他のプロセッサ・エレメントに送信され
るデータの宛先をまとめておく。逆に、演算1につい
て、各プロセッサ・エレメントに送られてくるデータの
送信元を図30にまとめておく。さらに、図31に演算
2のIDが付されて各プロセッサ・エレメントから他の
プロセッサ・エレメントに送信されるデータの宛先をま
とめておく。逆に、演算2について、各プロセッサ・エ
レメントに送られてくるデータの送信元を図32にまと
めておく。
【0086】これまで説明してきたアルゴリズムをまと
めてみる。2Pmアルゴリズムは、各プロセッサ・エレ
メントが自己のディスク装置のデータに対して集約演算
を実行するため、集約演算の最終結果と同じサイズのメ
モリを各プロセッサ・エレメントがそれぞれ用意しなけ
ればならない。しかし、通信コストが少ない分、最終結
果が小さい場合には、他のアルゴリズムに比べて十分速
い。
めてみる。2Pmアルゴリズムは、各プロセッサ・エレ
メントが自己のディスク装置のデータに対して集約演算
を実行するため、集約演算の最終結果と同じサイズのメ
モリを各プロセッサ・エレメントがそれぞれ用意しなけ
ればならない。しかし、通信コストが少ない分、最終結
果が小さい場合には、他のアルゴリズムに比べて十分速
い。
【0087】BCmアルゴリズムは、集約演算の最終結
果を全プロセッサ・エレメントのメモリで分担できるた
め2Pmアルゴリズムが一度に処理できる集約演算のプ
ロセッサ数倍だけ多くの集約演算に対してディスク装置
へのアクセスを共有することができる。最終結果が1プ
ロセッサ・エレメントのメモリに入りきらない場合、2
Pmアルゴリズムはメモリに入りきらない分を何度か繰
り返し処理を行う必要があるが、BCmアルゴリズムで
はメモリ内に収まるようにできるため、一度に処理する
ことができ、このような場合には2Pmアルゴリズムよ
り高速に処理することができる。
果を全プロセッサ・エレメントのメモリで分担できるた
め2Pmアルゴリズムが一度に処理できる集約演算のプ
ロセッサ数倍だけ多くの集約演算に対してディスク装置
へのアクセスを共有することができる。最終結果が1プ
ロセッサ・エレメントのメモリに入りきらない場合、2
Pmアルゴリズムはメモリに入りきらない分を何度か繰
り返し処理を行う必要があるが、BCmアルゴリズムで
はメモリ内に収まるようにできるため、一度に処理する
ことができ、このような場合には2Pmアルゴリズムよ
り高速に処理することができる。
【0088】最終結果を格納するのに必要なメモリサイ
ズが非常に大きくなった場合、Repmアルゴリズム以
外のアルゴリズムはディスク装置へのアクセスや集計の
コストが逆に大きくなるため、Repmアルゴリズムが
有利になる場合もある。
ズが非常に大きくなった場合、Repmアルゴリズム以
外のアルゴリズムはディスク装置へのアクセスや集計の
コストが逆に大きくなるため、Repmアルゴリズムが
有利になる場合もある。
【0089】よって、常に最適なアルゴリズムは同一で
はないので、Repmアルゴリズム、2Pmアルゴリズ
ム及びBCmアルゴリズムのうち最適なアルゴリズムを
選択し、そのアルゴリズムによって複数の集約演算を実
行することが好ましい。そこで、各アルゴリズムを実行
する際のコストを見積もることとする。以下、コストモ
デルについて説明する。
はないので、Repmアルゴリズム、2Pmアルゴリズ
ム及びBCmアルゴリズムのうち最適なアルゴリズムを
選択し、そのアルゴリズムによって複数の集約演算を実
行することが好ましい。そこで、各アルゴリズムを実行
する際のコストを見積もることとする。以下、コストモ
デルについて説明する。
【0090】最初に、生じ得る各コストを表6に掲げ
る。
る。
【表6】 なお、最も右側の列の値で、具体的数値が記載されてい
る部分は一例であって、他のコンピュータ・システムで
は他の値が用いられる。また、縦の線で囲まれた記号
は、その数を示し、縦の線がない記号はそのバイト数を
表す。
る部分は一例であって、他のコンピュータ・システムで
は他の値が用いられる。また、縦の線で囲まれた記号
は、その数を示し、縦の線がない記号はそのバイト数を
表す。
【0091】幾つかの項目は説明を加えておく。ページ
・サイズPは、コンピュータ・システムが取り扱うデー
タのサイズである。プロジェクティビティpは、リレー
ションの列のうち用いる割合を示す。1の集約演算のセ
レクティビティは、グループ数をデータ数で除した値を
指す。また、同じ属性に注目する集約演算であっても属
性の取扱いが異なる場合、例えば回数をカウントする場
合もあれば合計を計算する場合、ある条件を満たす値の
み集約する場合等、もあるので、この異なる取扱いの数
をAとする。データ・マイニングのような用途において
は、大きな値の場合が多いので表6では100という値
にしている。
・サイズPは、コンピュータ・システムが取り扱うデー
タのサイズである。プロジェクティビティpは、リレー
ションの列のうち用いる割合を示す。1の集約演算のセ
レクティビティは、グループ数をデータ数で除した値を
指す。また、同じ属性に注目する集約演算であっても属
性の取扱いが異なる場合、例えば回数をカウントする場
合もあれば合計を計算する場合、ある条件を満たす値の
み集約する場合等、もあるので、この異なる取扱いの数
をAとする。データ・マイニングのような用途において
は、大きな値の場合が多いので表6では100という値
にしている。
【0092】以上の前提の下、各アルゴリズムのコスト
を示す。
を示す。
【0093】1.2Pmアルゴリズム (a)データベースからの読み出しコスト (Ri/P)*IO*T (b)必要なデータを選択するコスト |Ri|*tr*T (c)集約演算するコスト |Ri|*(th+ta*A)*Q (d)最初のハッシングで処理できなかった分のコスト (Ri*p*Q−M/Sl*T)/P*2*IO (e)結果を格納する行を生成するコスト |Gi|*tw*Q (f)送信受信コスト Gi/P*tm*Q (g)最終結果を計算するコスト |Gi|*(tr+ta*A)*Q (h)結果を格納する行を生成するコスト(第2フェー
ズ分) |Gi|*Sg*tw*Q (i)最初のハッシングで処理できなかった分のコスト
(第2フェーズ分) (Gi*Q−M/Sg*T)/P*2*IO (j)結果をディスクに格納するコスト Gi*Sg/P*IO*Q これらのコストの合計が、2Pmアルゴリズムのコスト
ということになる。
ズ分) |Gi|*Sg*tw*Q (i)最初のハッシングで処理できなかった分のコスト
(第2フェーズ分) (Gi*Q−M/Sg*T)/P*2*IO (j)結果をディスクに格納するコスト Gi*Sg/P*IO*Q これらのコストの合計が、2Pmアルゴリズムのコスト
ということになる。
【0094】2.BCmアルゴリズム (a)データベースからの読み出しコスト (Ri/P)*IO*T (b)ブロードキャストのコスト (Ri/P)*tb*T (c)通信バッファから行データを取り出すコスト |Rp|*tr*T (d)集約演算コスト |R|*(th+ta*A)*Q (e)最初のハッシングで処理できなかった分のコスト (Rp*p*Q−M/S*T)/P*2*IO (f)結果を格納する行を生成するコスト |Rp|*S*tw*Q (h)結果をディスク装置に格納するコスト Rp*S/P*p*IO*Q 以上を合計すると、BCmアルゴリズムのコストが計算
できる。
できる。
【0095】3.Repmアルゴリズム (a)データベースからの読み出しコスト (Ri/P)*IO*T (b)必要なデータを選択するためのコスト |Ri|*tr*T (c)宛先を探すためにハッシングし、通信バッファに
書き込むためのコスト |Ri|*(th+tw)*Q (d)リパーティションしたものを送信/受信するコス
ト Rp/P*p*tm*Q (e)集約演算コスト |Rp|*(tr+ta*A)*Q (f)最初のハッシングで処理できなかった分のコスト (Rp*p*Q−M/S*T)/P*2*IO (g)結果を格納する行を生成するコスト |Rp|*S*tw*Q (h)結果をディスク装置に格納するコスト Rp*S/P*p*IO*Q 以上を合計することにより、Repmアルゴリズムに必
要なコストを計算することができる。
書き込むためのコスト |Ri|*(th+tw)*Q (d)リパーティションしたものを送信/受信するコス
ト Rp/P*p*tm*Q (e)集約演算コスト |Rp|*(tr+ta*A)*Q (f)最初のハッシングで処理できなかった分のコスト (Rp*p*Q−M/S*T)/P*2*IO (g)結果を格納する行を生成するコスト |Rp|*S*tw*Q (h)結果をディスク装置に格納するコスト Rp*S/P*p*IO*Q 以上を合計することにより、Repmアルゴリズムに必
要なコストを計算することができる。
【0096】このように各アルゴリズムの実行に必要な
コストを計算することができる。これを用いて、以下の
ような処理(図33)にて実行すべきアルゴリズムを決
定する。最初に、ハードウエアに関するパラメータを入
力する(ステップ510)。このハードウエアに関する
パラメータは、表6のプロセッサ・エレメントの数、ハ
ッシュ・テーブルのサイズ、ページ読み出しの時間、行
読み出しの時間、行書き込みの時間、ハッシュ計算の時
間、ページ送信の時間、集約演算の時間、ページブロー
ドキャストの時間等、ハードウエア構成から決定するパ
ラメータである。これらのパラメータは、一度コンピュ
ータの構成が決まると変わらないものが多いが、計算に
よってはプロセッサ・エレメントの数を変更したり、ハ
ッシュ・テーブルのサイズも変更可能である。次に実行
する集約演算に関するパラメータを入力する(ステップ
520)。表6の項目のうちハードウエアのパラメータ
としてもの以外は、ほぼ集約演算に関するパラメータで
ある。結果の行数等は集約演算のみでは決定しないが、
サンプリングを行いグループ数等を見積もることで数値
を得ることができる。このような事項は、従来から行わ
れてきたことである(例えば、P.J.Haas, J.F.Naughto
n, S.Seshadri, and L.Stockes, "Sampling-based esti
mation of the number of distinct values of an attr
ibute," In Proceedings of the 21st VLDB Conferenc
e, pages 311-322, 1995などを参照のこと)。
コストを計算することができる。これを用いて、以下の
ような処理(図33)にて実行すべきアルゴリズムを決
定する。最初に、ハードウエアに関するパラメータを入
力する(ステップ510)。このハードウエアに関する
パラメータは、表6のプロセッサ・エレメントの数、ハ
ッシュ・テーブルのサイズ、ページ読み出しの時間、行
読み出しの時間、行書き込みの時間、ハッシュ計算の時
間、ページ送信の時間、集約演算の時間、ページブロー
ドキャストの時間等、ハードウエア構成から決定するパ
ラメータである。これらのパラメータは、一度コンピュ
ータの構成が決まると変わらないものが多いが、計算に
よってはプロセッサ・エレメントの数を変更したり、ハ
ッシュ・テーブルのサイズも変更可能である。次に実行
する集約演算に関するパラメータを入力する(ステップ
520)。表6の項目のうちハードウエアのパラメータ
としてもの以外は、ほぼ集約演算に関するパラメータで
ある。結果の行数等は集約演算のみでは決定しないが、
サンプリングを行いグループ数等を見積もることで数値
を得ることができる。このような事項は、従来から行わ
れてきたことである(例えば、P.J.Haas, J.F.Naughto
n, S.Seshadri, and L.Stockes, "Sampling-based esti
mation of the number of distinct values of an attr
ibute," In Proceedings of the 21st VLDB Conferenc
e, pages 311-322, 1995などを参照のこと)。
【0097】このように表6に記されたパラメータが入
力されると、先に示したコストモデルにて各アルゴリズ
ムのコストを計算することができる(ステップ53
0)。その後、その3つのアルゴリズムのうち最小コス
トのアルゴリズムを決定する(ステップ540)。これ
により、決定されたアルゴリズムにて集約演算を実行す
れば、3つのアルゴリズムのうち最も高速に演算を実行
することができる。
力されると、先に示したコストモデルにて各アルゴリズ
ムのコストを計算することができる(ステップ53
0)。その後、その3つのアルゴリズムのうち最小コス
トのアルゴリズムを決定する(ステップ540)。これ
により、決定されたアルゴリズムにて集約演算を実行す
れば、3つのアルゴリズムのうち最も高速に演算を実行
することができる。
【0098】以上、本発明を実施するために必要とされ
るコンピュータ・システム及びプログラムに処理フロー
について説明した。プログラムの処理フローの各ステッ
プを実行するような回路や、プログラムと回路の組み合
わせによって、各ステップを実現する手段を形成するこ
とも可能である。各ステップを実現する手段は、各プロ
セッサ・エレメントの代わりに設け、高速のネットワー
クで並列処理する。繰り返しを制御するような制御回路
を設けること、装置全体を管理するような管理手段を設
けることも考えられる。
るコンピュータ・システム及びプログラムに処理フロー
について説明した。プログラムの処理フローの各ステッ
プを実行するような回路や、プログラムと回路の組み合
わせによって、各ステップを実現する手段を形成するこ
とも可能である。各ステップを実現する手段は、各プロ
セッサ・エレメントの代わりに設け、高速のネットワー
クで並列処理する。繰り返しを制御するような制御回路
を設けること、装置全体を管理するような管理手段を設
けることも考えられる。
【0099】また、以上の処理フローを実現するための
プログラムは、フロッピー・ディスク、CD−ROMや
MO(Magneto-Optics)ディスク等の記憶媒体上に実現
され、流通することが考えられる。さらに、記憶媒体の
みならず、有線や無線の通信媒体上で流通する場合もあ
る。このような場合、上述した処理フローの各ステップ
のうち、幾つかのステップのためプログラムは、記憶媒
体、通信媒体にて流通するプログラムとは別途ユーザに
提供される場合も考えられる。
プログラムは、フロッピー・ディスク、CD−ROMや
MO(Magneto-Optics)ディスク等の記憶媒体上に実現
され、流通することが考えられる。さらに、記憶媒体の
みならず、有線や無線の通信媒体上で流通する場合もあ
る。このような場合、上述した処理フローの各ステップ
のうち、幾つかのステップのためプログラムは、記憶媒
体、通信媒体にて流通するプログラムとは別途ユーザに
提供される場合も考えられる。
【0100】
【実施例】図34は、16ノードのハイパフォーマンス
・スイッチを伴うIBM SP2を用いた場合に、どの
アルゴリズムを用いるとよいかを示すものである。この
システムの場合、領域aは2Pmアルゴリズムが最適
で、領域bはBCmアルゴリズムが最適で、領域cはR
epmアルゴリズムが最適である。演算数と1演算当た
りのグループ数が分かれば、最適なアルゴリズムを選択
することができる。なお、このような図を作成して最適
アルゴリズムを選択する訳ではなく、先に示したコスト
モデルで各アルゴリズムのコストを計算し、そのコスト
との対比にて最適アルゴリズムを選択する。
・スイッチを伴うIBM SP2を用いた場合に、どの
アルゴリズムを用いるとよいかを示すものである。この
システムの場合、領域aは2Pmアルゴリズムが最適
で、領域bはBCmアルゴリズムが最適で、領域cはR
epmアルゴリズムが最適である。演算数と1演算当た
りのグループ数が分かれば、最適なアルゴリズムを選択
することができる。なお、このような図を作成して最適
アルゴリズムを選択する訳ではなく、先に示したコスト
モデルで各アルゴリズムのコストを計算し、そのコスト
との対比にて最適アルゴリズムを選択する。
【0101】
【効果】複数の集約演算を並列に高速実行する方法を提
供することができた。
供することができた。
【0102】上記の方法を用いると複数の集約演算を並
列に高速実行できるので、OLAPやデータ・マイニン
グの実行を高速にすることもできる。
列に高速実行できるので、OLAPやデータ・マイニン
グの実行を高速にすることもできる。
【0103】さらに、複数の集約演算を実行する方法
を、ハードウエアの条件や複数の集約演算の性質等に基
づき、切り換えることができるようにし、様々な条件の
下、複数の集約演算を常に同じ方法で実行するよりも、
より高速に実行することができた。
を、ハードウエアの条件や複数の集約演算の性質等に基
づき、切り換えることができるようにし、様々な条件の
下、複数の集約演算を常に同じ方法で実行するよりも、
より高速に実行することができた。
【図1】Repアルゴリズムの処理フローを示した図で
ある。
ある。
【図2】2Pアルゴリズム、Repアルゴリズム、及び
BCアルゴリズムにおける、グループ数対応答時間の関
係を示した図である。
BCアルゴリズムにおける、グループ数対応答時間の関
係を示した図である。
【図3】本発明で用いられるコンピュータ・システムの
構成の一例である。
構成の一例である。
【図4】本発明で用いられるコンピュータ・システムの
構成の一例である。
構成の一例である。
【図5】本発明で用いられるコンピュータ・システムの
構成の一例である。
構成の一例である。
【図6】2Pmアルゴリズムの処理フローを示した図で
ある。
ある。
【図7】プロセッサ・エレメント1のデータベースの内
容を表す図である。
容を表す図である。
【図8】プロセッサ・エレメント2のデータベースの内
容を表す図である。
容を表す図である。
【図9】プロセッサ・エレメント3のデータベースの内
容を表す図である。
容を表す図である。
【図10】プロセッサ・エレメント4のデータベースの
内容を表す図である。
内容を表す図である。
【図11】2Pmアルゴリズムの2番目のステップを図
7に対して実行中のプロセッサ・エレメント1のメモリ
内の途中結果を示す図である。
7に対して実行中のプロセッサ・エレメント1のメモリ
内の途中結果を示す図である。
【図12】2Pmアルゴリズムの2番目のステップを図
7に対して実行したプロセッサ・エレメント1のメモリ
内の結果を示す図である。
7に対して実行したプロセッサ・エレメント1のメモリ
内の結果を示す図である。
【図13】2Pmアルゴリズムの2番目のステップを図
8に対して実行したプロセッサ・エレメント2のメモリ
内の結果を示す図である。
8に対して実行したプロセッサ・エレメント2のメモリ
内の結果を示す図である。
【図14】2Pmアルゴリズムの2番目のステップを図
9に対して実行したプロセッサ・エレメント3のメモリ
内の結果を示す図である。
9に対して実行したプロセッサ・エレメント3のメモリ
内の結果を示す図である。
【図15】2Pmアルゴリズムの2番目のステップを図
10に対して実行したプロセッサ・エレメント4のメモ
リ内の結果を示す図である。
10に対して実行したプロセッサ・エレメント4のメモ
リ内の結果を示す図である。
【図16】2Pmアルゴリズムの集計処理を実行したプ
ロセッサ・エレメント1のメモリ内の結果を示す図であ
る。
ロセッサ・エレメント1のメモリ内の結果を示す図であ
る。
【図17】2Pmアルゴリズムの集計処理を実行したプ
ロセッサ・エレメント2のメモリ内の結果を示す図であ
る。
ロセッサ・エレメント2のメモリ内の結果を示す図であ
る。
【図18】2Pmアルゴリズムの集計処理を実行したプ
ロセッサ・エレメント3のメモリ内の結果を示す図であ
る。
ロセッサ・エレメント3のメモリ内の結果を示す図であ
る。
【図19】2Pmアルゴリズムの集計処理を実行したプ
ロセッサ・エレメント4のメモリ内の結果を示す図であ
る。
ロセッサ・エレメント4のメモリ内の結果を示す図であ
る。
【図20】BCmアルゴリズムの処理フローを示した図
である。
である。
【図21】BCmアルゴリズムでどのプロセッサ・エレ
メントがどの集約演算を実行するのかを決定するための
処理フローを示す図である。
メントがどの集約演算を実行するのかを決定するための
処理フローを示す図である。
【図22】図7乃至図10に対し、BCmアルゴリズム
を実行したプロセッサ・エレメント2のメモリ内の結果
を示す図である。
を実行したプロセッサ・エレメント2のメモリ内の結果
を示す図である。
【図23】BCmアルゴリズムを実行したプロセッサ・
エレメント1,3乃至4のメモリ内の結果を示す図であ
る。
エレメント1,3乃至4のメモリ内の結果を示す図であ
る。
【図24】Repmアルゴリズムの処理フローを示した
図である。
図である。
【図25】Repmアルゴリズムで演算1及び演算2を
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
【図26】Repmアルゴリズムで演算1及び演算2を
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
【図27】Repmアルゴリズムで演算1及び演算2を
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
【図28】Repmアルゴリズムで演算1及び演算2を
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
実行するプロセッサ・エレメント3の処理の途中の状況
を説明するための図である。
【図29】Repmアルゴリズムで演算1及び演算2を
実行する際に各プロセッサ・エレメントにおいて送信さ
れる、演算1関連のデータ及びその送信先を表す図であ
る。
実行する際に各プロセッサ・エレメントにおいて送信さ
れる、演算1関連のデータ及びその送信先を表す図であ
る。
【図30】Repmアルゴリズムで演算1及び演算2を
実行する際に各プロセッサ・エレメントにおいて受信さ
れる、演算1関連のデータ及びその送信元を表す図であ
る。
実行する際に各プロセッサ・エレメントにおいて受信さ
れる、演算1関連のデータ及びその送信元を表す図であ
る。
【図31】Repmアルゴリズムで演算1及び演算2を
実行する際に各プロセッサ・エレメントにおいて送信さ
れる、演算2関連のデータ及びその送信先を表す図であ
る。
実行する際に各プロセッサ・エレメントにおいて送信さ
れる、演算2関連のデータ及びその送信先を表す図であ
る。
【図32】Repmアルゴリズムで演算1及び演算2を
実行する際に各プロセッサ・エレメントにおいて受信さ
れる、演算2関連のデータ及びその送信元を表す図であ
る。
実行する際に各プロセッサ・エレメントにおいて受信さ
れる、演算2関連のデータ及びその送信元を表す図であ
る。
【図33】2Pm,BCm,Repmアルゴリズムのう
ち、最適なアルゴリズムを選択するための処理フローを
示す図である。
ち、最適なアルゴリズムを選択するための処理フローを
示す図である。
【図34】16ノードのIBM SP2で集約演算を実
行する際のアルゴリズム切り換え位置を示す図である。
行する際のアルゴリズム切り換え位置を示す図である。
1 ネットワーク 3a,3b,3c プロセッサ・エレメント 5a,5b,5c メモリ 7a,7b,7c ディスク装置 9 メモリ 9a,9b メモリ領域 10 メモリ 11 ディスク装置 11a,11b ディスク領域 13 ディスク装置
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 Ambuj S,Jeffrey F.N,”Adaptive Para llel Aggregation A lgorithms,”In Proc eedings of the ACM SIGMOD Conference on Management of Data,1995年5月,p.104−114 Dina B,Haran B,Da vid J.D,W.Kevin W,”Parallel Algori thms for the Execu tion of Relational Database Operatio ns,”ACM Transactio ns on Database Sys tems,Vol.8,No.3,1983 年9月,p.324−353 (58)調査した分野(Int.Cl.7,DB名) G06F 17/30 G06F 17/18 JICSTファイル(JOIS)
Claims (18)
- 【請求項1】ネットワークにより接続された複数のプロ
セッサが各々自己のメモリ領域及び1又は複数のグルー
プに分けることができるデータを含むデータベースの自
己の部分を使用できるよう構成されたコンピュータ・シ
ステムにおいて、前記グループ毎に集約を行う演算を含
む、N個の集約演算を前記データベースに対し実行する
方法であって、 (a)各前記プロセッサが、前記自己のメモリ領域に、
前記N個の集約演算のうちM個(Mは2以上かつN以下
の整数)分の演算結果を記憶するスペースを確保するス
テップと、 (b)各前記プロセッサが、M個の集約演算をまとめ
て、前記データベースの自己の部分に対して実行するス
テップと、 (c)各前記プロセッサが、前記M個の集約演算の各プ
ロセッサにおける演算結果を、集計すべきプロセッサに
送信し、前記集計すべきプロセッサが最終結果を計算す
るステップと、 (d)前記N個の集約演算の実行が終了するまで、前記
ステップ(a)乃至(c)を繰り返すステップとを含む
集約演算実行方法。 - 【請求項2】前記ステップ(b)が、 (b1)各前記プロセッサが、前記自己のメモリ領域のワ
ークスペースに、前記データベースの自己の部分である
部分データベースの一部を読み出すステップと、 (b2)各前記プロセッサが、前記自己のメモリ領域に格
納された本ステップ以前の演算結果と読み出された前記
部分データベースの一部とについて、前記M個の集約演
算を実行するステップと、 (b3)前記部分データベースのすべてに対して前記M個
の集約演算が実行されるまで、前記ステップ(b1)及び(b
2)を繰り返すステップとを含む請求項1記載の集約演算
実行方法。 - 【請求項3】前記Mは集約演算の演算結果のために前記
自己のメモリ領域に確保できるスペースから決定される
ことを特徴とする請求項1記載の集約演算実行方法。 - 【請求項4】ネットワークにより接続された複数のプロ
セッサが各々自己のメモリ領域及び1又は複数のグルー
プに分けることができるデータを含むデータベースの自
己の部分を使用できるよう構成されたコンピュータ・シ
ステムにおいて、前記グループ毎に集約を行う演算を含
む、P個の集約演算を前記データベースに対し実行する
方法であって、 (a)各前記プロセッサが、前記P個の集約演算のうち
自らが実行するQ個(Qは2以上の整数)の集約演算の
演算結果を記憶するスペースを、前記自己のメモリ領域
に確保するステップと、 (b)各前記プロセッサが、前記自己のメモリ領域に前
記データベースの自己の部分である部分データベースの
一部を読み出し、読み出された前記部分データベースの
一部を前記ネットワークを介してブロードキャストする
ことを繰り返して、各前記プロセッサが全ての前記デー
タベースのデータに対し前記自らが実行するQ個の集約
演算を実行するステップと、 (c)前記P個の集約演算が実行されるまで、前記ステ
ップ(a)及び(b)を繰り返すステップとを含む集約
演算実行方法。 - 【請求項5】前記ステップ(a)が、 (a1)1つの集約演算の演算結果を格納できるようなス
ペースが1つのプロセッサの前記自己のメモリ領域に存
在するか検査するステップと、 (a2)前記スペースが存在する場合には、前記スペース
を前記1つの集約演算の演算結果のために確保するステ
ップと、 (a3)前記スペースが存在しない場合には、他のプロセ
ッサの前記メモリ領域に前記1つの集約演算の演算結果
を格納できるようなスペースが存在するか検査するステ
ップと、 (a4)前記他のプロセッサの前記メモリ領域にスペース
が存在する場合には、当該他のプロセッサのメモリ領域
のスペースを前記1つの集約演算の演算結果のために確
保するステップとを含み、 前記他のプロセッサのメモリ領域にスペースが存在しな
い場合には、後の繰り返し処理にて前記1つの集約演算
を実行することを特徴とする請求項4記載の集約演算実
行方法。 - 【請求項6】前記Qは集約演算の演算結果のために前記
自己のメモリ領域に確保できるスペースから決定される
ことを特徴とする請求項4記載の集約演算実行方法。 - 【請求項7】前記ステップ(b)が、 (b1)各前記プロセッサが、前記自己のメモリ領域のワ
ークスペースに、前記部分データベースの一部を読み出
すステップと、 (b2)読み出された前記部分データベースの一部を前記
ネットワークを介してブロードキャストするステップ
と、 (b3)前記自己のメモリ領域に格納された本ステップ以
前の演算結果と前記読み出された部分データベースの一
部と他のプロセッサから送られてきたデータとについ
て、前記自らが実行するQ個の集約演算を実行するステ
ップと、 (b4)各前記プロセッサが全ての前記データベースの内
容に対し前記自らが実行するQ個の集約演算を実行する
まで前記ステップ(b1)乃至(b3)を繰り返すステップ
とを含む請求項4記載の集約演算実行方法。 - 【請求項8】ネットワークにより接続された複数のプロ
セッサが各々自己のメモリ領域及び1又は複数のグルー
プに分けることができるデータを含むデータベースの自
己の部分を使用できるよう構成されたコンピュータ・シ
ステムにおいて、前記グループ毎に集約を行う演算を含
む、S個の集約演算を前記データベースに対し実行する
方法であって、 (a)前記S個の集約演算のうち実行するT個(Tは2
以上の整数)の集約演算を決定するステップと、 (b)前記T個の集約演算を実行する際に集約される、
各集約演算の各グループを取り扱うプロセッサを決定す
るステップと、 (c)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域に読み出し、読み出されたデータのうち他のプロセ
ッサが集約すべき集約演算のグループに関するデータを
当該集約演算のIDと共に前記他のプロセッサに前記ネ
ットワークを介して送信し、自己が集約すべき集約演算
のグループに関するデータについて前記T個の集約演算
を実行するステップと、 (d)各前記プロセッサが集約すべき集約演算のグルー
プに関する全てのデータに対して前記T個の集約演算を
実行するまで、前記ステップ(c)を実行するステップ
と、 (e)前記S個の集約演算を実行するまで、前記ステッ
プ(a)乃至(d)を繰り返すステップとを含む集約演
算実行方法。 - 【請求項9】前記ステップ(c)が、 (c1)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域のワークスペースに読み出すステップと、 (c2)各前記プロセッサが、読み出されたデータの各部
分を必要とするプロセッサを求め、当該部分を、関連す
る集約演算のIDと共に前記必要とするプロセッサに前
記ネットワークを介して送信するステップと、 (c3)各前記プロセッサが、前記読み出されたデータの
うち自己が集約すべき集約演算のグループに関するデー
タ及び前記他のプロセッサからのデータ及び前記自己の
メモリ領域に格納された本ステップ以前の演算結果に対
し、前記T個の集約演算を実行するステップと、 を含む請求項8記載の集約演算実行方法。 - 【請求項10】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムにおいて、前記グループ毎に集約を行う演算を
含む、N個の集約演算を前記データベースに対し実行す
る方法であって、 前記プロセッサの数と前記データベースの大きさと前記
ネットワークの通信速度とを含む前記コンピュータ・シ
ステムのパラメータ及び実行する集約演算の数と各集約
演算の結果を格納するメモリの量とを含む集約演算の性
質に関するパラメータから、 (a)各前記プロセッサが、前記自己のメモリ領域に、
前記N個の集約演算のうちM個(Mは2以上かつN以下
の整数)分の演算結果を記憶するスペースを確保するス
テップと、 (b)各前記プロセッサが、M個の集約演算をまとめ
て、前記データベースの自己の部分に対して実行するス
テップと、 (c)各前記プロセッサが、前記M個の集約演算の各プ
ロセッサにおける演算結果を、集計すべきプロセッサに
送信し、前記集計すべきプロセッサが最終結果を計算す
るステップと、 (d)前記N個の集約演算の実行が終了するまで、前記
ステップ(a)乃至(c)を繰り返すステップとを含む
第1集約演算実行方法と、 (e)各前記プロセッサが、前記N個の集約演算のうち
自らが実行するQ個(Qは2以上の整数)の集約演算の
演算結果を記憶するスペースを、前記自己のメモリ領域
に確保するステップと、 (f)各前記プロセッサが、前記自己のメモリ領域に前
記データベースの自己の部分である部分データベースの
一部を読み出し、読み出された前記部分データベースの
一部を前記ネットワークを介してブロードキャストする
ことを繰り返して、各前記プロセッサが全ての前記デー
タベースのデータに対し前記自らが実行するQ個の集約
演算を実行するステップと、 (g)前記N個の集約演算が実行されるまで、前記ステ
ップ(e)及び(f)を繰り返すステップとを含む第2
集約演算実行方法と、 (h)前記N個の集約演算のうち実行するT個(Tは2
以上の整数)の集約演算を決定するステップと、 (i)前記T個の集約演算を実行する際に集約される、
各集約演算の各グループを取り扱うプロセッサを決定す
るステップと、 (j)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域に読み出し、読み出されたデータのうち他のプロセ
ッサが集約すべき集約演算のグループに関するデータを
当該集約演算のIDと共に前記他のプロセッサに前記ネ
ットワークを介して送信し、自己が集約すべき集約演算
のグループに関するデータについて前記T個の集約演算
を実行するステップと、 (k)各前記プロセッサが集約すべき集約演算のグルー
プに関する全てのデータに前記T個の集約演算を実行す
るまで、前記ステップ(j)を実行するステップと、 (l)前記N個の集約演算を実行するまで、前記ステッ
プ(h)乃至(k)を繰り返すステップとを含む第3集
約演算実行方法とを含む複数の集約演算実行方法のうち
いずれの方法が最も高速に実行できるかを決定するステ
ップと、 決定された方法にて、前記N個の集約演算を実行するス
テップとを含む集約演算実行方法。 - 【請求項11】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムであって、 前記グループ毎に集約を行う演算を含む、N個の集約演
算を前記データベースに対し実行するために、前記複数
のプロセッサの各々は、 (a)前記自己のメモリ領域に、前記N個の集約演算の
うちM個(Mは2以上かつN以下の整数)分の演算結果
を記憶するスペースを確保するメモリ処理装置と、 (b)M個の集約演算をまとめて、前記データベースの
自己の部分に対して実行するデータベース処理装置と、 (c)前記M個の集約演算の演算結果を、集計すべきプ
ロセッサに送信する送信機と、 を有し、前記N個の集約演算の実行が終了するまで処理
を繰り返し、前記集計すべきプロセッサは自己が集計す
べき集約演算の演算結果を他のプロセッサから受信し、
集計することを特徴とするコンピュータ・システム。 - 【請求項12】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムであって、 前記グループ毎に集約を行う演算を含む、P個の集約演
算を前記データベースに対し実行するために、前記複数
のプロセッサの各々は、 (a)前記P個の集約演算のうち自らが実行するQ個
(Qは2以上の整数)の集約演算の演算結果を記憶する
スペースを、前記自己のメモリ領域に確保するメモリ処
理装置と、 (b)前記自己のメモリ領域のワークスペースに前記デ
ータベースの自己の部分である部分データベースの一部
を読み出し、読み出された前記部分データベースの一部
を前記ネットワークを介してブロードキャストすること
を繰り返して、各前記プロセッサが全ての前記データベ
ースのデータに対し前記自らが実行するQ個の集約演算
を実行するデータベース処理装置と、 を有し、前記P個の集約演算が実行されるまで処理を繰
り返すことを特徴とするコンピュータ・システム。 - 【請求項13】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムであって、 前記グループ毎に集約を行う演算を含む、S個の集約演
算を前記データベースに対し実行するために、 前記S個の集約演算のうち実行するT個(Tは2以上の
整数)の集約演算を決定し、当該T個の集約演算を実行
する際に集約される、各集約演算の各グループを取り扱
うプロセッサを決定するコントローラを含み、 各前記プロセッサは、 前記データベースの自己の部分である部分データベース
の一部を読み出し、読み出されたデータのうち他のプロ
セッサが集約すべき集約演算のグループに関するデータ
を当該集約演算のIDと共に前記他のプロセッサに前記
ネットワークを介して送信し、自己が集約すべき集約演
算のグループに関するデータについて前記T個の集約演
算を実行するデータベース処理装置を有し、 各前記プロセッサが集約すべき集約演算のグループに関
する全てのデータに前記T個の集約演算を実行するまで
前記データベース処理装置を動作させ、 前記S個の集約演算を実行するまで、前記コントローラ
及び各前記プロセッサを動作させることを特徴とするコ
ンピュータ・システム。 - 【請求項14】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムであって、 前記グループ毎に集約を行う演算を含む、N個の集約演
算を前記データベースに対し実行するために、 前記プロセッサの数と前記データベースの大きさと前記
ネットワークの通信速度とを含む前記コンピュータ・シ
ステムのパラメータ及び実行する集約演算の数と各集約
演算の結果を格納するメモリの量とを含む集約演算の性
質に関するパラメータから、 (a)各前記プロセッサが、前記自己のメモリ領域に、
前記N個の集約演算のうちM個(Mは2以上かつN以下
の整数)分の演算結果を記憶するスペースを確保するス
テップと、 (b)各前記プロセッサが、M個の集約演算をまとめ
て、前記データベースの自己の部分に対して実行するス
テップと、 (c)各前記プロセッサが、前記M個の集約演算の各プ
ロセッサにおける演算結果を、集計すべきプロセッサに
送信し、前記集計すべきプロセッサが最終結果を計算す
るステップと、 (d)前記N個の集約演算の実行が終了するまで、前記
ステップ(a)乃至(c)を繰り返すステップとを含む
第1集約演算実行方法と、 (e)各前記プロセッサが、前記N個の集約演算のうち
自らが実行するQ個(Qは2以上の整数)の集約演算の
演算結果を記憶するスペースを、前記自己のメモリ領域
に確保するステップと、 (f)各前記プロセッサが、前記自己のメモリ領域に前
記データベースの自己の部分である部分データベースの
一部を読み出し、読み出された前記部分データベースの
一部を前記ネットワークを介してブロードキャストする
ことを繰り返して、各前記プロセッサが全ての前記デー
タベースのデータに対し前記自らが実行するQ個の集約
演算を実行するステップと、 (g)前記N個の集約演算が実行されるまで、前記ステ
ップ(e)及び(f)を繰り返すステップとを含む第2
集約演算実行方法と、 (h)前記N個の集約演算のうち実行するT個(Tは2
以上の整数)の集約演算を決定するステップと、 (i)前記T個の集約演算を実行する際に集約される、
各集約演算の各グループを取り扱うプロセッサを決定す
るステップと、 (j)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域に読み出し、読み出されたデータのうち他のプロセ
ッサが集約すべき集約演算のグループに関するデータを
当該集約演算のIDと共に前記他のプロセッサに前記ネ
ットワークを介して送信し、自己が集約すべき集約演算
のグループに関するデータについて前記T個の集約演算
を実行するステップと、 (k)各前記プロセッサが集約すべき集約演算のグルー
プに関する全てのデータに前記T個の集約演算を実行す
るまで、前記ステップ(j)を実行するステップと、 (l)前記N個の集約演算を実行するまで、前記ステッ
プ(h)乃至(k)を繰り返すステップとを含む第3集
約演算実行方法とを含む複数の集約演算実行方法のうち
いずれの方法が最も高速に実行できるかを決定するセレ
クタと、 決定された方法にて、前記N個の集約演算を実行するよ
う命ずる手段とを有するコンピュータ・システム。 - 【請求項15】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムに、前記グループ毎に集約を行う演算を含む、
N個の集約演算を前記データベースに対し実行させるプ
ログラムを格納した記憶媒体であって、 前記プログラムは、 (a)各前記プロセッサが、前記自己のメモリ領域に、
前記N個の集約演算のうちM個(Mは2以上かつN以下
の整数)分の演算結果を記憶するスペースを確保するス
テップと、 (b)各前記プロセッサが、M個の集約演算を同時に、
前記データベースの自己の部分に対して実行するステッ
プと、 (c)各前記プロセッサが、前記M個の集約演算の各プ
ロセッサにおける演算結果を、集計すべきプロセッサに
送信し、前記集計すべきプロセッサが最終結果を計算す
るステップと、 (d)前記N個の集約演算が終了するまで、前記ステッ
プ(a)乃至(c)を繰り返すステップとを前記コンピ
ュータ・システムに実行させる、記憶媒体。 - 【請求項16】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムに、前記グループ毎に集約を行う演算を含む、
P個の集約演算を前記データベースに対し実行させるプ
ログラムを記憶した記憶媒体であって、 前記プログラムは、 (a)各前記プロセッサが、前記P個の集約演算のうち
自らが実行するQ個(Qは2以上の整数)の集約演算の
演算結果を記憶するスペースを、前記自己のメモリ領域
に確保するステップと、 (b)各前記プロセッサが、前記自己のメモリ領域のワ
ークスペースに前記データベースの自己の部分である部
分データベースの一部を読み出し、読み出された前記部
分データベースの一部を前記ネットワークを介してブロ
ードキャストすることを繰り返して、各前記プロセッサ
が全ての前記データベースのデータに対し前記自らが実
行するQ個の集約演算を実行するステップと、 (c)前記P個の集約演算が実行されるまで、前記ステ
ップ(a)及び(b)を繰り返すステップとを前記コン
ピュータ・システムに実行させる、記憶媒体。 - 【請求項17】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムに、前記グループ毎に集約を行う演算を含む、
S個の集約演算を前記データベースに対し実行させるプ
ログラムを格納した記憶媒体であって、 前記プログラムは、 (a)前記S個の集約演算のうち実行するT個(Tは2
以上の整数)の集約演算を決定するステップと、 (b)前記T個の集約演算を実行する際に集約される、
各集約演算の各グループを取り扱うプロセッサを決定す
るステップと、 (c)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域に読み出し、読み出されたデータのうち他のプロセ
ッサが集約すべき集約演算のグループに関するデータを
当該集約演算のIDと共に前記他のプロセッサに前記ネ
ットワークを介して送信し、自己が集約すべき集約演算
のグループに関するデータについて前記T個の集約演算
を実行するステップと、 (d)各前記プロセッサが集約すべき集約演算のグルー
プに関する全てのデータに前記T個の集約演算を実行す
るまで、前記ステップ(c)を実行するステップと、 (e)前記S個の集約演算を実行するまで、前記ステッ
プ(a)乃至(d)を繰り返すステップとを前記コンピ
ュータ・システムに実行させる、記憶媒体。 - 【請求項18】ネットワークにより接続された複数のプ
ロセッサが各々自己のメモリ領域及び1又は複数のグル
ープに分けることができるデータを含むデータベースの
自己の部分を使用できるよう構成されたコンピュータ・
システムに、前記グループ毎に集約を行う演算を含む、
N個の集約演算を前記データベースに対し実行させるプ
ログラムを格納した記憶媒体であって、 前記プログラムは、 前記プロセッサの数と前記データベースの大きさと前記
ネットワークの通信速度とを含む前記コンピュータ・シ
ステムのパラメータ及び実行する集約演算の数と各集約
演算の結果を格納するメモリの量とを含む集約演算の性
質に関するパラメータから、 (a)各前記プロセッサが、前記自己のメモリ領域に、
前記N個の集約演算のうちM個(Mは2以上かつN以下
の整数)分の演算結果を記憶するスペースを確保するス
テップと、 (b)各前記プロセッサが、M個の集約演算をまとめ
て、前記データベースの自己の部分に対して実行するス
テップと、 (c)各前記プロセッサが、前記M個の集約演算の各プ
ロセッサにおける演算結果を、集計すべきプロセッサに
送信し、前記集計すべきプロセッサが最終結果を計算す
るステップと、 (d)前記N個の集約演算の実行が終了するまで、前記
ステップ(a)乃至(c)を繰り返すステップとを含む
第1集約演算実行方法と、 (e)各前記プロセッサが、前記N個の集約演算のうち
自らが実行するQ個(Qは2以上の整数)の集約演算の
演算結果を記憶するスペースを、前記自己のメモリ領域
に確保するステップと、 (f)各前記プロセッサが、前記自己のメモリ領域に前
記データベースの自己の部分である部分データベースの
一部を読み出し、読み出された前記部分データベースの
一部を前記ネットワークを介してブロードキャストする
ことを繰り返して、各前記プロセッサが全ての前記デー
タベースのデータに対し前記自らが実行するQ個の集約
演算を実行するステップと、 (g)前記N個の集約演算が実行されるまで、前記ステ
ップ(e)及び(f)を繰り返すステップとを含む第2
集約演算実行方法と、 (h)前記N個の集約演算のうち実行するT個(Tは2
以上の整数)の集約演算を決定するステップと、 (i)前記T個の集約演算を実行する際に集約される、
各集約演算の各グループを取り扱うプロセッサを決定す
るステップと、 (j)各前記プロセッサが、前記データベースの自己の
部分である部分データベースの一部を前記自己のメモリ
領域に読み出し、読み出されたデータのうち他のプロセ
ッサが集約すべき集約演算のグループに関するデータを
当該集約演算のIDと共に前記他のプロセッサに前記ネ
ットワークを介して送信し、自己が集約すべき集約演算
のグループに関するデータについて前記T個の集約演算
を実行するステップと、 (k)各前記プロセッサが集約すべき集約演算のグルー
プに関する全てのデータに前記T個の集約演算を実行す
るまで、前記ステップ(j)を実行するステップと、 (l)前記N個の集約演算を実行するまで、前記ステッ
プ(h)乃至(k)を繰り返すステップとを含む第3集
約演算実行方法とを含む複数の集約演算実行方法のうち
いずれの方法が最も高速に実行できるかを決定するステ
ップと、 決定された方法にて、前記N個の集約演算を実行するス
テップとを含む記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33918597A JP3155991B2 (ja) | 1997-04-09 | 1997-12-09 | 集約演算実行方法及びコンピュータ・システム |
US09/057,520 US6182061B1 (en) | 1997-04-09 | 1998-04-09 | Method for executing aggregate queries, and computer system |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9-90384 | 1997-04-09 | ||
JP9038497 | 1997-04-09 | ||
JP33918597A JP3155991B2 (ja) | 1997-04-09 | 1997-12-09 | 集約演算実行方法及びコンピュータ・システム |
US09/057,520 US6182061B1 (en) | 1997-04-09 | 1998-04-09 | Method for executing aggregate queries, and computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10340276A JPH10340276A (ja) | 1998-12-22 |
JP3155991B2 true JP3155991B2 (ja) | 2001-04-16 |
Family
ID=27306426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33918597A Expired - Fee Related JP3155991B2 (ja) | 1997-04-09 | 1997-12-09 | 集約演算実行方法及びコンピュータ・システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6182061B1 (ja) |
JP (1) | JP3155991B2 (ja) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047232B1 (en) * | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
US6356214B1 (en) | 1999-02-02 | 2002-03-12 | Cisco Technology, Inc. | Fast look-up table based scheme for NRZI encoding/decoding and zero insertion/removal in serial bit streams |
US7869462B2 (en) * | 1999-06-03 | 2011-01-11 | Panasonic Corporation | Broadcast system and method therefor |
US6424972B1 (en) * | 1999-06-22 | 2002-07-23 | Microsoft Corporation | Floating point conversion for records of multidimensional database |
US6408292B1 (en) * | 1999-08-04 | 2002-06-18 | Hyperroll, Israel, Ltd. | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions |
US6385604B1 (en) * | 1999-08-04 | 2002-05-07 | Hyperroll, Israel Limited | Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements |
US6898603B1 (en) * | 1999-10-15 | 2005-05-24 | Microsoft Corporation | Multi-dimensional data structure caching |
JP2001155028A (ja) * | 1999-11-29 | 2001-06-08 | Hitachi Ltd | リレーショナルデータベースにおける集約演算処理方法、その装置及び集約演算処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US20020046273A1 (en) * | 2000-01-28 | 2002-04-18 | Lahr Nils B. | Method and system for real-time distributed data mining and analysis for network |
US20020029207A1 (en) * | 2000-02-28 | 2002-03-07 | Hyperroll, Inc. | Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein |
US6567804B1 (en) * | 2000-06-27 | 2003-05-20 | Ncr Corporation | Shared computation of user-defined metrics in an on-line analytic processing system |
US6954758B1 (en) * | 2000-06-30 | 2005-10-11 | Ncr Corporation | Building predictive models within interactive business analysis processes |
US6785675B1 (en) * | 2000-11-13 | 2004-08-31 | Convey Development, Inc. | Aggregation of resource requests from multiple individual requestors |
US6965904B2 (en) * | 2001-03-02 | 2005-11-15 | Zantaz, Inc. | Query Service for electronic documents archived in a multi-dimensional storage space |
US20020128998A1 (en) * | 2001-03-07 | 2002-09-12 | David Kil | Automatic data explorer that determines relationships among original and derived fields |
US6970882B2 (en) * | 2002-04-04 | 2005-11-29 | International Business Machines Corporation | Unified relational database model for data mining selected model scoring results, model training results where selection is based on metadata included in mining model control table |
US7177864B2 (en) * | 2002-05-09 | 2007-02-13 | Gibraltar Analytics, Inc. | Method and system for data processing for pattern detection |
US20030212761A1 (en) * | 2002-05-10 | 2003-11-13 | Microsoft Corporation | Process kernel |
US7055142B2 (en) * | 2002-05-10 | 2006-05-30 | Microsoft Corporation | Permutation nuances of the integration of processes and queries as processes at queues |
US7062494B2 (en) * | 2002-07-22 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | System, method and computer readable medium for performing an aggregate database query |
US20050125433A1 (en) * | 2002-12-05 | 2005-06-09 | Fujitsu Limited | Data summation system and method based on classification definition covering plural records |
US6993516B2 (en) * | 2002-12-26 | 2006-01-31 | International Business Machines Corporation | Efficient sampling of a relational database |
US7739313B2 (en) * | 2003-05-30 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for finding conjunctive clusters |
US8924654B1 (en) * | 2003-08-18 | 2014-12-30 | Cray Inc. | Multistreamed processor vector packing method and apparatus |
US20050125486A1 (en) * | 2003-11-20 | 2005-06-09 | Microsoft Corporation | Decentralized operating system |
US8572221B2 (en) | 2004-05-26 | 2013-10-29 | Facebook, Inc. | System and method for managing an online social network |
US7650331B1 (en) * | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
US7756919B1 (en) * | 2004-06-18 | 2010-07-13 | Google Inc. | Large-scale data processing in a distributed and parallel processing enviornment |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
US7818236B2 (en) * | 2004-09-13 | 2010-10-19 | Nyfix, Inc. | System for aggregating executions in a communication network for securities transactions and the like |
US7885817B2 (en) * | 2005-03-08 | 2011-02-08 | Microsoft Corporation | Easy generation and automatic training of spoken dialog systems using text-to-speech |
US7734471B2 (en) | 2005-03-08 | 2010-06-08 | Microsoft Corporation | Online learning for dialog systems |
US7707131B2 (en) * | 2005-03-08 | 2010-04-27 | Microsoft Corporation | Thompson strategy based online reinforcement learning system for action selection |
US7509337B2 (en) * | 2005-07-05 | 2009-03-24 | International Business Machines Corporation | System and method for selecting parameters for data mining modeling algorithms in data mining applications |
WO2008006241A1 (en) * | 2006-07-03 | 2008-01-17 | Intel Corporation | Method and apparatus for fast audio search |
US7761407B1 (en) | 2006-10-10 | 2010-07-20 | Medallia, Inc. | Use of primary and secondary indexes to facilitate aggregation of records of an OLAP data cube |
US20080195843A1 (en) * | 2007-02-08 | 2008-08-14 | Jaya 3D Llc | Method and system for processing a volume visualization dataset |
US8090704B2 (en) * | 2007-07-30 | 2012-01-03 | International Business Machines Corporation | Database retrieval with a non-unique key on a parallel computer system |
US7885969B2 (en) * | 2007-09-17 | 2011-02-08 | International Business Machines Corporation | System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer |
US8352470B2 (en) * | 2008-05-23 | 2013-01-08 | International Business Machines Corporation | Adaptive aggregation: improving the performance of grouping and duplicate elimination by avoiding unnecessary disk access |
JP5574402B2 (ja) * | 2009-01-14 | 2014-08-20 | 日本電気株式会社 | 分散型秘匿化データ統合装置、分散型秘匿化データ統合方法および分散型秘匿化データ統合用プログラム |
US8229946B1 (en) * | 2009-01-26 | 2012-07-24 | Sprint Communications Company L.P. | Business rules application parallel processing system |
CN101510922B (zh) * | 2009-02-24 | 2011-07-20 | 华为技术有限公司 | 媒体资源管理方法、装置、设备和系统 |
US8510538B1 (en) | 2009-04-13 | 2013-08-13 | Google Inc. | System and method for limiting the impact of stragglers in large-scale parallel data processing |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
JP5474743B2 (ja) * | 2010-11-20 | 2014-04-16 | 株式会社野村総合研究所 | プログラム開発支援システム |
US10127281B2 (en) * | 2010-12-23 | 2018-11-13 | Sap Se | Dynamic hash table size estimation during database aggregation processing |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8244831B1 (en) * | 2011-05-23 | 2012-08-14 | Ilesfay Technology Group, LLC | Method for the preemptive creation of binary delta information within a computer network |
US9411853B1 (en) | 2012-08-03 | 2016-08-09 | Healthstudio, LLC | In-memory aggregation system and method of multidimensional data processing for enhancing speed and scalability |
CN103838779B (zh) * | 2012-11-27 | 2019-02-05 | 深圳市腾讯计算机系统有限公司 | 复用空闲计算资源的云转码方法及系统、分布式文件装置 |
CA3092699C (en) | 2013-12-06 | 2023-07-25 | Ab Initio Technology Llc | Source code translation |
US11250001B2 (en) | 2014-08-01 | 2022-02-15 | International Business Machines Corporation | Accurate partition sizing for memory efficient reduction operations |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
US10860577B2 (en) * | 2015-12-24 | 2020-12-08 | Hitachi, Ltd. | Search processing system and method for processing search requests involving data transfer amount unknown to host |
US10970284B2 (en) * | 2017-05-12 | 2021-04-06 | Oracle International Corporation | Dynamic self-reconfiguration of nodes in a processing pipeline |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US11893267B2 (en) | 2022-01-14 | 2024-02-06 | Bank Of America Corporation | Data flow control and routing using machine learning |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852821A (en) * | 1993-04-16 | 1998-12-22 | Sybase, Inc. | High-speed data base query method and apparatus |
US5537589A (en) * | 1994-06-30 | 1996-07-16 | Microsoft Corporation | Method and system for efficiently performing database table aggregation using an aggregation index |
US5511190A (en) * | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
US5852826A (en) * | 1996-01-26 | 1998-12-22 | Sequent Computer Systems, Inc. | Parallel merge sort method and apparatus |
US5832475A (en) * | 1996-03-29 | 1998-11-03 | International Business Machines Corporation | Database system and method employing data cube operator for group-by operations |
US5963936A (en) * | 1997-06-30 | 1999-10-05 | International Business Machines Corporation | Query processing system that computes GROUPING SETS, ROLLUP, and CUBE with a reduced number of GROUP BYs in a query graph model |
-
1997
- 1997-12-09 JP JP33918597A patent/JP3155991B2/ja not_active Expired - Fee Related
-
1998
- 1998-04-09 US US09/057,520 patent/US6182061B1/en not_active Expired - Lifetime
Non-Patent Citations (2)
Title |
---|
Ambuj S,Jeffrey F.N,"Adaptive Parallel Aggregation Algorithms,"In Proceedings of the ACM SIGMOD Conference on Management of Data,1995年5月,p.104−114 |
Dina B,Haran B,David J.D,W.Kevin W,"Parallel Algorithms for the Execution of Relational Database Operations,"ACM Transactions on Database Systems,Vol.8,No.3,1983年9月,p.324−353 |
Also Published As
Publication number | Publication date |
---|---|
US6182061B1 (en) | 2001-01-30 |
JPH10340276A (ja) | 1998-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3155991B2 (ja) | 集約演算実行方法及びコンピュータ・システム | |
US10963443B2 (en) | Reclustering of database tables using level information | |
US8583593B1 (en) | Systems and methods for optimizing database queries | |
US6879984B2 (en) | Analytical database system that models data to speed up and simplify data analysis | |
US6775681B1 (en) | Evaluation of grouping sets by reduction to group-by clause, with or without a rollup operator, using temporary tables | |
US6775682B1 (en) | Evaluation of rollups with distinct aggregates by using sequence of sorts and partitioning by measures | |
US6256621B1 (en) | Database management system and query operation therefor, including processing plural database operation requests based on key range of hash code | |
US7593926B2 (en) | Partial pre-aggregation in relational database queries | |
AU779250B2 (en) | Method and apparatus for populating multiple data marts in a single aggregation process | |
US6334128B1 (en) | Method and apparatus for efficiently refreshing sets of summary tables and materialized views in a database management system | |
US6477523B1 (en) | Selectivity prediction with compressed histograms in a parallel processing database system | |
US8768915B2 (en) | Database system and method of optimizing cross database query | |
US6850927B1 (en) | Evaluating queries with outer joins by categorizing and processing combinations of relationships between table records | |
US20040230578A1 (en) | Aggregation of resource requests from multiple individual requestors | |
US20120011096A1 (en) | Efficiently updating rows in a data warehouse | |
JP2000187668A (ja) | グループ化方法と重複排除方法 | |
US20170357708A1 (en) | Apparatus and method for processing multi-dimensional queries in a shared nothing system through tree reduction | |
WO2000020995A1 (en) | Improved optimizations in a data exploration system and method | |
JPH1097544A (ja) | データベース処理システム | |
Chen et al. | Optimizing joins in fragmented database systems on a broadcast local network | |
Salza et al. | Performance Modeling of parallel database systems | |
JP3667997B2 (ja) | データベース管理装置 | |
JP3819695B2 (ja) | データベース管理システムおよび問合せの処理方法 | |
JP2557953B2 (ja) | インターフェース定義及び解析支援方式 | |
JPH10326216A (ja) | データベース管理システムおよび問合せの処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |