JPH07111718B2 - データベース・リレーシヨンの結合方法 - Google Patents

データベース・リレーシヨンの結合方法

Info

Publication number
JPH07111718B2
JPH07111718B2 JP2217257A JP21725790A JPH07111718B2 JP H07111718 B2 JPH07111718 B2 JP H07111718B2 JP 2217257 A JP2217257 A JP 2217257A JP 21725790 A JP21725790 A JP 21725790A JP H07111718 B2 JPH07111718 B2 JP H07111718B2
Authority
JP
Japan
Prior art keywords
relation
partitions
pair
jobs
job
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 - Lifetime
Application number
JP2217257A
Other languages
English (en)
Other versions
JPH03126169A (ja
Inventor
ダニエル・マニユエル・デイアズ
ジヨエル・レオナード・ウオルフ
フイリツプ・シーラング・ユ
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH03126169A publication Critical patent/JPH03126169A/ja
Publication of JPH07111718B2 publication Critical patent/JPH07111718B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

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)
  • Multi Processors (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、一般に、マルチプロセッサ環境でのリレーシ
ョナル・データベースの管理に関し、より具体的には、
結合操作を別々のジョブに区分し、それらのジョブを複
数のプロセッサ間で最適にスケジューリングすることに
より、データ・スキューの存在下で並列リレーショナル
・データベース環境にある共通フィールド上の2つのデ
ータベース・リレーションを結合することに関する。
B.従来の技術 各種リレーショナル・データベース・システムにおける
共通の操作は、共通ドメインで定義されたそれぞれのカ
ラム上の2つのリレーションの自然結合である。たとえ
ば、C.デート(Date)著、“An Introduction to Datab
ase Systems"、Vol.1、第3版、Addison−Wesley社刊
(1982年)のpp.209〜210にある自然結合の説明を参照
されたい。結合の結果、各行が、元のそれぞれのリレー
ションから1行ずつ、共に当該の結合カラム内で同じ値
をもつ2つの行の連結である、新しいリレーションが得
られる。
2つのリレーションの結合を計算するためのよく使用さ
れるアルゴリズムは、M.ブラスゲン(Blasgen)及びK.
エスワラン(Eswaran)の論文“Storage and Access in
Relational Databases"、IBM Systems Journal、Vol.
4、pp.363以降(1977年)に記載されているようなソー
ト/マージ技法である。それは、次のように簡潔に要約
することができる。まず(必要があれば)それぞれのリ
レーションが結合カラムに従ってソートされる。第2
に、2つのソートされたリレーションが、明白なインタ
ロック・シーケンスで走査され、等しい値をもつ行につ
いてマージされる。
ソート/マージ結合が、マルチプロセッサ・データベー
ス・システム上で並列に実行されるときは、リレーショ
ンの結合カラム内にデータ・スキューが生じるという問
題がある。一般的に、スキューの問題は、上記文献に記
載された結合アルゴリズムによっては解決されない。並
列ソート/マージ結合に関する初期の論文には、D.ビト
ン(Bitton)、H.ボラル(Boral)、D.J.デウィット(D
eWitt)、W.K.ウィルキンソン(Wilkinson)の論文“Pa
rallel Algorithms for the Execution of Relational
Database Operations"、ACM Trans.on Database System
s、Vol.8、No.3、1983年9月、pp.324〜353がある。上
記論文では、2つの外部並列ソート・アルゴリズムが提
案され、それらは並列2進マージ及びブロック・ビット
ニック・ソートと呼ばれている。どちらのアルゴリズム
でも、ソートされたランをディスクに書き込み、ツー・
ウェイ・マージを使って、ディスクからランをマージす
る。マージ・ツリーが、異なるプロセッサにマップさ
れ、最終マージはシーケンシャルとなる。
P.バルドゥリエス(Valduriez)及びG.ガルダリン(Gar
darin)の論文“Join and Semijoin Algorithms for a
Multiprocessor Database Machine"、ACM Trans.on Dat
abase Machines、Vol.9、No.1、1984年3月、pp.133〜1
61には、kウェイ・マージに一般化されたアルゴリズム
が記載されている。その結果、単1プロセッサ上でシー
ケンシャルにマージされるp個(p<kと仮定する)の
リストが得られる。
J.P.リチャードソン(Richardson)、H.ルー(Lu)、K.
ミッキリネニ(Mikkilineni)の論文“Design and Eval
uation of Parallel Pipelined Join Algorithms"、ACM
SIGMOD 1987、サンフランシスコ、1987年5月、pp.160
〜169には、マージ/結合操作を並列化する方法が記載
されている。この方法では、リレーションT1及びT2が、
m1及びm2個のランにマージされる。T1が大きい方のリレ
ーションであると仮定すると、T1の各ランが1つのプロ
セッサに割り当てられる。各プロセッサは、T2のm2個の
ランをマージし(すなわち、T2の最終マージが、少なく
ともプロセッサの数と同じ回数だけ繰り返される)その
プロセッサに割り当てられたT1のランとマージ/結合す
る。この方法は、結合される2つのリレーションの射影
の一方がきわめて小さいようなときには、うまく働く。
上記論文には、1つのリレーションが小さい場合に有用
な別のアルゴリズムも記載されている。
S.G.アクル(Akl)及びN.サントロ(Santoro)の論文
“Optimal Parallel Merging and Sorting Without Mem
ory Conflicts"、IEEE Trans.on Comp.、Vol.C−36、N
o.11、1987年11月、pp.1367〜1369には、2つのソート
されたリストを、各リストを区分することにより並列に
マージすることが考察されている。
2つのリレーションの結合を計算するための別のよく使
用されるアルゴリズムは、D.J.デウィット、R.H.ガーバ
ー(Gerber)、G.グレーフェ(Graefe)、M.L.ヘイテン
ス(Heytens)、K.B.クマル(Kumar)、M.マラリクリシ
ュナ(Maralikrishna)の論文“Multi−processor Hash
−based Join Algorithms"、Proc.11th VLDB(1985年)
に記載されているハッシュ結合技法である。マルチプロ
セッサ・システムに関しては、ハッシュ結合技法は次の
ように簡潔に要約できる。まず、両方のリレーション
を、結合カラムに応じて(必要があれば)ハッシュ・パ
ーティションにハッシュする。ハッシュ・パーティショ
ンの数は、一般に、プロセッサの数に等しくセットされ
る。次に、ハッシュ・パーティションを、2つのリレー
ションの対応するパーティションが同一プロセッサ上に
存在するように、プロセッサ間に分配する。第2に、2
つのリレーションの対応するハッシュ・パーティション
を1つに結合する。
結合照会の性能は、マルチプロセッサの使用によってス
ピードアップできることもあるが、この種の従来型結合
アルゴリズムによるスピードアップは、M.S.ラクシュミ
ー(Lakshmi)及びP.S.ユー(Yu)の論文“Effect of S
kew on Join Performance in Parallel Architecture
s"、Proc.Intl.Symposium on Databases in Parallel a
nd Distributed Database Systems(1988年)に記載さ
れているように、データ・スキューが存在する場合はき
わめて限られている。D.A.シュナイダー(Schneider)
及びD.J.デウィットの論文“A Performance Evaluation
of Four Parallel Join Algorithms in a Shared−Not
hing Multiprocessor Environment"、Proc.ACM Sigmod
Conference(1989年)では、4つの並列結合アルゴリズ
ムの性能を評価している。上記論文では、データ・スキ
ューが高い場合には、ハッシュ結合以外のアルゴリズム
を考える必要があると示唆している。R.C.フー(Hu)及
びR.R.ムンツ(Muntz)の論文“Removing Skew Effect
in Join Operation on Parallel Processors"、Technic
al Report CSD−890027、UCLA(1989年)には、最大ス
キュー要素を特定し、それを処理するために複数のプロ
セッサを割り当てる単純なハッシュ結合アルゴリズムを
提案している。
C.発明が解決しようとする課題 したがって、本発明の目的は、ソート/マージ技法、及
びハッシュ結合技法によって、並列リレーショナル・デ
ータベース環境において2つのリレーションの自然結合
のための全実行時間を最小にする効率的な技法を提供す
ることである。
本発明の別の目的は、2つのリレーションの結合カラム
内に存在しうるデータ・スキューを効率的に処理する、
マルチプロセッサ・データベース・マシン上で動作する
ソート/マージ技法及びハッシュ結合技法を提供するこ
とである。
D.課題を解決するための手段 本発明の広義の教示によれば、結合操作は3段階で実行
されるが、任意選択として第4段階を伴うこともある。
第1段階は準備段階であり、その詳細は使用する基礎的
結合アルゴリズムに応じて変わってくる。この準備段階
は、前処理を行ない、その結果は、最終結合操作用のサ
ブタスクを定義するための基礎として以降の段階で使用
される。第1段階で提供されたデータを第2段階で使っ
てサブタスクを定義し、データ・スキューが存在する場
合でも最終結合操作での各プロセッサの負荷がほぼ等し
くなるように、これらのサブタスクを異なるプロセッサ
に最適に割り当てる。この第2段階は、本発明にとって
最重要な割当て段階である。第2段階の詳細は、基礎的
結合アルゴリズムが異なれば異なってくる。しかし、第
2段階で、サブタスクを定義し割り当てる一般的方法
は、基礎となるアルゴリズムが異なっても類似してい
る。第2段階でサブタスクの定義及び割当てを完了する
と、処理のための割当て、及び第3段階における2つの
リレーションの最終的結合に応じて、データがプロセッ
サの間で発送される。最終結合操作でどんな方法を使用
するかは、使用する基礎的結合アルゴリズムによって決
まる。任意選択として、第3段階で実行される実際の結
合中に結合操作のバランスがくずれた場合には、サブタ
スクの動的再割当てがありうる。
前述したように、結合操作は、異なる基礎的結合方法を
使用して実施できる。本発明の第1の態様では、多重プ
ロセッサ・データベース・システム上での並列なソート
/マージ結合に基づく方法を記述する。第1段階では、
第1及び第2のリレーションが、プロセッサの数に対応
する数の集合に区分され、結合されるカラム上でソート
される。第1段階からのこのソートされたデータが、第
2段階に提供される。第2段階では、第1段階からのソ
ートされたデータが、サブタスクを定義するため様々な
レンジ及び多重度に再区分され、各サブタスクは1つの
レンジのパーティションからのデータを結合する。1つ
のプロセッサが各サブタスクを実行するのに要する時間
を推定し、数個のプロセッサ間のソート操作のバランス
をとるために必要なだけパーティションをさらに分割す
る。最小メークスパン最適化技法に従って、ジョブをプ
ロセッサ間でスケジューリングする。このアルゴリズム
は、プロセッサ間でのジョブのスケジューリングを推定
スキューに基づいて更新することにより、2つのリレー
ションの結合カラム内に存在しうるデータ・スキューを
効率的に処理する。
本発明の第2の態様では、マルチプロセッサ・データベ
ース・システム上での並列なハッシュ結合アルゴリズム
に基づく方法を記述する。この技法は、データ・スキュ
ーを処理するために特別に設計されている。ここに提案
するアルゴリズムは、階層ハッシュ処理のコンセプトに
基づいている。階層ハッシュ処理を最小メークスパン最
適化アルゴリズムと組み合わせて、ハッシュ・パーティ
ションを繰り返し分割し、また複数のプロセッサ内で均
等にハッシュ・パーティションの割当てを行なう。この
解析の一環として、あるパーティションのサイズによっ
て、負荷のバランスが望ましい状態より悪化したとき、
区分操作を改善する。この評価段階中は、実際のハッシ
ュ処理は実行されない。その代りに、最適のハッシュ処
理が後に実行できるように、各レベルでのハッシュ処理
の有益性を評価する。
E.実施例 以下の説明では、話を簡単にするために、マルチプロセ
ッサ・データベース・マシン内の各プロセッサは同じ計
算能力をもつと仮定する。その他の点での並列データベ
ース・アーキテクチャの性質は、本発明にとって余り重
要ではない。図面、特に第1図を参照すると、マルチプ
ロセッサ・データベース・マシンの一般的編成のブロッ
ク・ダイヤグラムが図示されている。P個のプロセッサ
101ないし10Pが、インタコネクト・ネットワーク12を介
して互いにリンクされている。これらのプロセッサは、
インタコネクト・ネットワーク12を介してデータを変換
する。各種プロセッサをインタコネクトするためにどん
な方法を使用するかは、その方法が当面のタスクに対し
て十分な帯域幅をもっているかぎり重要ではない。この
データベース・マシンはまた、2次記憶のために通常の
磁気ディスク装置 を使用する。ソートまたは結合されるリレーションは、
これらの磁気ディスク装置上に記憶される。
結合属性がとる値の分布は、結合操作の実行時間に対し
て相当な影響をもつ。多くのデータベースでは、1つの
属性に対してある値が他の値より頻繁に発生し、その結
果スキューのある分布が生じる。第2図に示した3つの
リレーション、CUSTOMERS、ORDERS、SUPPLIERSを考えて
みる。CUSTOMERSリレーション上のカストマIDは一義的
な値をとるが、ORDERSリレーション上の同じ属性は非一
義的な値をとることができる。というのは、カストマが
複数の品目を注文する場合があるからである。さらに、
所与の品目を複数のカストマが注文することがあり、複
数の供給者が1つの品目を供給することもありうる。
その注文が未処理のすべてのカストマをリストするため
に必要な照会があると、ORDERSリレーションとCUSTOMER
SリレーションがカストマIDカラム上で結合されて、単
一のスキューをもつ結合を生ずる。未処理の注文を満た
すことのできるすべての供給者をリストするために必要
な照会が行なわれると、ORDERSリレーションとSUPPLIER
Sリレーションが品目カラム上で結合されて、二重スキ
ューをもつ結合を生ずる。単一スキュー及び二重スキュ
ーという用語は、一方または両方のリレーションの結合
属性がスキューのある分布をもつことを表すために使用
する。
本発明による結合操作は、第3図に示したように、3つ
の段階と、任意選択として第4の段階をもつ。段階1は
準備段階であり、本発明のすべての態様に共通である。
ただし、この段階の詳細は、使用する基礎的結合アルゴ
リズムに応じて変わってくる。この段階については、2
つの基礎的結合アルゴリズムに関してより詳細に説明す
る。具体的には、まず本発明のソート/マージに基づく
実施例に関して段階1を説明し、次に、本発明のハッシ
ュに基づく実施例に関して段階1を説明する。
段階1の準備フェーズでは前処理を行ない、その結果
を、段階3の最終結合操作用のサブタスク定義のための
基礎として段階2で使用する。より具体的には、段階1
で提供されるデータを使ってサブタスクを定義し、デー
タ・スキューが存在する場合でも段階3の最終結合操作
でプロセッサの負荷がほぼ等しくなるように、これらの
サブタスクを異なるプロセッサに最適に割り振る。この
ように、段階2は割当て段階であり、本発明にとって最
も重要なものである。以下の説明では、ソート/マー
ジ、及び本発明のハッシュに基づく2つの実施例に関し
て、段階2に含まれる諸ステップを詳細に説明する。
段階2でサブタスクの定義及び割当てが完了すると、結
合されるリレーションのパーティションが、段階3で2
つのリレーションを処理し最終的に結合するために、割
り当てられたプロセッサに発送される。最終的結合操作
でどんな方法を使用するかは、基礎的結合方法に応じて
決まる。任意選択として、段階4は、プロセッサがその
進行状況を報告するものである。段階2での割当ては、
サブタスク時間の推定値に基づくので、段階3で開始さ
れる結合操作のバランスがくずれることがありうる。こ
のアンバランスが所定のしきい値を超えた場合、段階2
の割当てを、任意選択として動的に変更することもでき
る。
これから説明する本発明の第1の態様は、ソート/マー
ジ結合アルゴリズムに基づく基礎的結合方法に関するも
のである。リレーションR1がN1行を含み、リレーション
R2がN2行を含むと仮定する。Pはデータベース・システ
ム内のプロセッサの数を表す。
本発明の第1段階では、R1の1組の行を、できるだけ均
等に、1組がほぼN1/P行からなるP組に区分する。言い
かえると、パーティションは、1組がそれぞれ からなるN1−P の集合と、1組がそれぞれ からなる の集合をもつ。ここで は、実数xより大きいかまたは等しい最小の整数を表
し、 は、x以下の最大の整数を表す。次に各プロセッサに、
ソートすべきパーティションの1つを与える。各プロセ
ッサは、ほぼ等しい時間で、各自のタスクを完了しなけ
ればならない。第2のリレーションも同様にソートす
る。この段階の終了時には、P個のソートされた「ラ
ン」が2組ある。
本発明の第2段階を導入するために、結合カラムのドメ
イン内の2つの値をV1,V2(V1≦V2)とする。2P個のソ
ートされたランのどれか1つ、たとえばリレーションi
ε{1,2}とプロセッサjε{1,…,P}に対応するラン
が与えられているものとすると、区間[V1,V2]内にソ
ート・カラム値をもつすべての行からなる明確に定義さ
れた(恐らく空の)連続する部分集合ρij,V1,V2が存在
する。ρij,V1,V2のそれぞれを最終ソート及びマージの
ために単一プロセッサに発送すると、結合操作の残りの
部分全体の独立サブタスクτ V1,V2が得られる。ここ
で上付き文字は、単一のプロセッサが関与していること
を強調するためのものである。このことの意味は、以下
の説明で明らかになる。このサブタスクを実行するのに
かかる時間はT1 V1,V2=A(I1+I2)+BOと推定され
る。ここで はR1からの入力の行数、OはR1とR2のマージからの出力
の行数、AとBは既知の定数である。各ρij,V1,V2の値
が、V1とV2の間の基礎ドメイン内のDV1,V2個の要素に
わたって均等に分配されていると仮定すると、O=I1I2
|DV1,V2を計算することができる。
V1<V2という特別の場合には、Oの計算は単に推定値に
なる。V1<V2を満たす対(V1,V2)をタイプ1の対と呼
ぶ。V1=V2という特別の場合には、Oの式はO=I1I2
簡約される。事実、出力は2つの入力のちょうど外積で
あり、したがって、この式は、この場合厳密に正確であ
る。V1=V2を満たす対(V1,V2)をタイプ2の対と呼
ぶ。実際に、タイプ2の対では、V=V1=V2とすると、
さらに、2つの集合 の大きい方をできるだけ均等にM個(ただし、1≦M≦
P)の行の集合に区分し、さらに小さい独立サブタスク
τ V1,V2,…,τ V1,V2を作成できる可能性を考える
ことができる。サブタスクτ V1,V2,m{1,…,M}で
は、小さい方の集合と大きい方の集合のm番目のパーテ
ィションとの外積が単一プロセッサ上で実行される。た
とえば、第1のリレーションの方が大きい行数を含むと
仮定すると、このサブタスクを実行するのにかかる時間
は、Tm V1,V2=A(Im 1+I2)+BIm 1I2となる。ここで、
Im 1はm番目のパーティション内の行数である。M個の
サブタスクをそれぞれ異なるプロセッサで実行すべきで
あるとは主張しないが、実際にはそうなる可能性が大き
い。明らかに、M>1個のサブタスクを実行するのは、
1つのサブタスクを実行するよりも効率が低い。という
のは、小さい方のリレーション(この場合にはR2)から
の入力を、関係する各プロセッサに発送しなければなら
ないからである。過剰なスキューを処理するために、こ
の手法を利用しているにすぎない。タイプ2の対(V1,V
2)は、多重度Mをもつと言う。タイプ1の対(V1,V2
は、多重度1をもつと言う。
次に一般的手法について述べる。結合カラムのドメイン
内の対応する多重度をもつK対の値の順序シーケンスを
作成するものと仮定する。このシーケンスは、次の形を
もつ。
1,1≦V1,2<…<Vk−1,1≦Vk−1,2≦Vk,1≦V
k,2<Vk+1,1≦Vk+1,2<…<Vk,1≦Vk,2 R1とR2の結合カラム内の各値は、区間[Vk,1,Vk,2]の
1つ内に収まることが必要である。k{1,…,k}につい
て、対(Vk,1,Vk,2)の多重度をMkで表すことにする。
P個のプロセッサで実行される 個のサブタスクτ Vk,1,Vk,2を作成した。必要な全計
算時間は、 と推定することができる。この時間をプロセッサの間で
できるだけ均等に分配したい。「完全」な割当ては必ず
しも可能ではないが、それができれば、各プロセッサが 単位時間だけ使用中となるはずである。具体的には、ジ
ョブ全体の完了時間 が最小になるように、各サブタスクτ Vk,1,Vk,2をプ
ロセッサA(τ Vk,1,Vk,2)に割り当てたい。この最
適化問題は、いわゆる最小メークスパン問題、またはマ
ルチプロセッサ・スケジューリング問題である。この問
題はNP完全であることが知られているが、最悪の場合の
性能がかなり良く、平均の性能が優れたいくつかのきわ
めて高速のヒューリスティックスが存在する。具体的に
は、LPTヒューリスティックの説明については、R.グレ
アム(Graham)の論文“Bounds on Multiprocessing Ti
ming Anomalies"、SIAM Journal of Computing、Vol.1
7、1969年、pp.416以降、MULTIFITヒューリスティック
の説明については、E.コフマン(Coffman)、M.ギャリ
ー(Garey)、D.S.ジョンソン(Johnson)の論文“An A
pplication of Bin Packing to Multiprocessor Schedu
ling"、SIAM Journal of Computing、Vol.7、1978年、p
p.1以降を参照されたい。
もちろん、値の対の順序シーケンス、及び対応する多重
度をどのように作成するかは制御できる。本発明の第2
段階の目標は、この順序シーケンスを作成するための分
割統治法である。その1つの例は、第4図の流れ図に示
したアルゴリズムである。
第4図を参照すると、この方法は、まず機能ブロック20
から始まり、そこで、K=1に設定し、V1,1をR1とR2
の結合カラム内の最小値に設定し、V1,2を最大値に設
定し、かつM1=1に設定する。さらに、そのサブタスク
に対する時間を推定し、すべての現サブタスクのリスト
を維持し、推定サブタスク時間の順に並べる。最初は、
リスト上には1つの要素しかない。次に、判断ブロック
22でテストを行なって、リスト中の最大サブタスクの推
定時間がリスト中のすべてのサブタスクの推定時間の合
計の1/P以下であるかどうか、言い換えると、最大サブ
タスクが「適合」するかどうか判定する。YESの場合
は、機能ブロック24で、LPTまたはMULTIFITアルゴリズ
ムを実行する。どちらのアルゴリズムでも、第1ステッ
プであり、かつ計算上最も費用のかかるステップは、推
定時間の順にサブタスクを並べることである。これは、
この場合にはすでに済ませてある。次に、判断ブロック
26でテストを行なって、このメークスパンが、完全割当
ての所定の乗算係数1+の範囲内にあるかどうか判定す
る。YESの場合には、処理は停止する。そうでない場合
は、判断ブロック28でテストを行なって、タイプ1の対
があるかどうか判定する。NOの場合は、処理は停止す
る。そうでない場合は、機能ブロック30で、リスト中で
最大のタイプ1の対を選択する。次に、機能ブロック32
で、最大のタイプ1の対(Vk,1,Vk,2)を、次のように
2ないし3つの部分に分割する。R1には、P個のソート
された行ρ1j,V1,V2からなる合計I1個の要素がある。R2
には、P個のソートされた行ρ2j,V1,V2からなる合計I2
個の要素がある。合計で、合計I1+I2個の要素をもつ2P
個のソートされた行が得られる。Z.ガリール(Galil)
及びN.メジッド(Megiddo)の論文“A Fast Selection
Algorithm and the Problem of Optimum Distribution
of Effort"、Journal of the ACM、Vol.26、1979年、p
p.58以降によるアルゴリズムで、この集合の に大きな要素μが見つかる。これは、いわゆる選択問題
の特殊な場合である。事実、このアルゴリズムは、各集
合ρij,V1,V2を3つの連続する(恐らく空の)領域、す
なわちμより少ない行からなる▲ρ1 1j,V1,V2と、μ
に等しい行からなる▲ρ2 1j,V1,V2と、μより多い行
からなる▲ρ3 1j,V1,V2に分割する。こうして、1つ
のサブタスクから3つのサブタスクが作成された。第1
または第3サブタスクのどちらか一方が空でもよいが、
両方が空になることはない。どちらか一方がタイプ1ま
たはタイプ2でありうる。第2のサブタスクは空にはな
らず、多重度1のタイプ2になる。第5図は、この方法
を用いて、どのように1つの古いサブタスクからこれら
3つの新しいサブタスクが作成されるかを示している。
次に、Kを調整し、間隔を決定し、新しいサブタスクの
それぞれについて時間推定値を計算する。出力の行数
が、いずれかのサブタスクに関して0であると計算され
た場合には、そのサブタスクをリストから削除すること
ができる。2つのリレーションの一方に対応する部分は
空であり、結合で何も生じない。
この時点で、判断ブロック34でテストを行なって、サブ
タスクのリストが空であるかどうか判定する。YESの場
合は、処理は停止する。そうでない場合は、機能ブロッ
ク36でサブタスクのリストの番号を付け直し、順序を並
べかえる。次に、判断ブロック22に戻る。
判断ブロック22のテストの結果がNOの場合は、判断ブロ
ック38でさらにテストを行なって、サブタスクのリスト
中の最大要素がタイプ1のものであるかどうか判定す
る。YESの場合は、機能ブロック32に進む。そうでない
場合は、判断ブロック40でテストを行なって、各サブタ
スクが適合するように、リスト中の最大サブタスクに対
応するタイプ2の対の多重度を新しい多重度M<Pに増
加させることが可能かどうか判定する。YESの場合は、
最小のそのような多重度が見つかり、機能ブロック42
で、サブタスクのリストを、この新しい多重度を組み込
むように改訂する。さらに、Kを調整し、新しいサブタ
スクに対する推定時間を計算してから、機能ブロック36
に進む。
判断ブロック40のテストの結果がNOの場合は、機能ブロ
ック44で、サブタスクが多重度Pをもつように割り当
て、P個のサブタスクのそれぞれを異なるプロセッサに
割り当て、それらのサブタスクをリストから外す。さら
に、Kを調整する。除外されたP個のサブタスクは、ほ
ぼ等しい時間で完了する。次に判断ブロック34に移る。
この方法は、多重度1の対に適したものであるが、過剰
なスキューを克服するため、それより高い多重度をも受
け入れることができる。これらの過剰なスキューの位置
は、アルゴリズムの実行中に自然にわかるはずである。
推定サブタスク時間も、同様に、アルゴリズムの実行に
つれてますます正確になるはずである。上記テーマに関
しては多数の変形があり、それらも同様に実施できる。
たとえば、LPTまたはMULTIFITは、機能ブロック24を通
るごとに実行する必要はない。カウンタで、最小メーク
スパン・アルゴリズムの実行回数を調節することができ
る。同様に、このアルゴリズムは、たとえ解答が完全に
満足なものでなくても、別のカウンタに従ってタイム・
アウトさせることができる。
第3図に示した段階3では、リレーションR1とR2のソー
トされた要素集合をディスクから読み出し、サブタスク
に対応する要素集合を、割り当てられたプロセッサに発
送する。次に、最終結合操作を実行するため、割り当て
られたプロセッサ上でサブタスクを実行する。
任意選択として、第3図の段階4に示すように、実際の
結合の進行中に、プロセッサが各自の進行状況を報告す
ることもできる。推定サブタスク時間は、ちょうどその
値なので、結合の進行がバランスを失うことがありう
る。このアンバランスが所定のしきい値を超えた場合
に、新しいLPTまたはMULTIFITアルゴリズムを開始する
こともできる。
本発明はまた、ハッシュ結合アルゴリズムに基づく方法
を使用し、第3図の段階1及び2の階層ハッシュ処理を
実施する二重ハッシュ処理技法を使用して実施すること
ができる。階層ハッシュ処理技法のその他の変形につい
ては後述する。二重ハッシュ処理は、スキュー値を特定
し、各プロセッサにおける結合コストのよりよい推定値
をもたらし、最終的には負荷のバランスをより均等にす
るために採用される。
第3図の第1段階では、まずそれぞれサイズがほぼN1/P
行のR1のほぼ等しいパーティションをもつ各プロセッサ
を使用する。言い換えると、パーティションは、1組が
それぞれ からなる 個の集合、及び1組がそれぞれ 行からなる の集合をもつ。2つのハッシュ関数をH1とH2とする。こ
こでH2は、H1によって作成された各ハッシュ・パーティ
ションをより小さいパーティションにさらに分割するた
めに使用する。H1は、行をB1個のハッシュ・パーティシ
ョンにハッシュ処理でき、H2は、これらのパーティショ
ンのそれぞれをB2個のより小さいハッシュ・パーティシ
ョンに細分できるものと仮定する。各プロセッサjにつ
いて、H1のもとでその結合カラムのハッシュ値がH1のk
番目のハッシュ・パーティションに含まれ、H2のもとで
のハッシュ値がH2のm番目のハッシュ・パーティション
に含まれる行の数を▲dj k,m(R1)とする。その行
を、複合ハッシュ値(k,m)をもつと言う。各プロセッ
サは、ディスクからR1の要素集合を読み込み、どれだけ
の要素結合が、H1とH2に基づいて細分割されたパーティ
ションにハッシュ処理されるのかを記録するため、各プ
ロセッサjのメイン・メモリ内にカウントdj k,m(R1
(k=1,…,B1、及びm=1,…,B2)を維持する。これら
のプロセッサは、ほぼ等しい時間で、それぞれのタスク
を完了する必要がある。第2のリレーションも同様にハ
ッシュ処理されて、dj k,m(R2)を生ずる。この段階の
終了時には、2組のカウントdj k,m(Ri)i=1,2が得ら
れる。
第3図の第2段階の開始時に、dj k,m(Ri)が各プロセ
ッサにわたって加算されて、 を得る。H1からの2PB1個のハッシュ・パーティションの
どれか1つ、たとえばリレーションiε{1,2}、プロ
セッサjε{1,…,P}に対応する1つのハッシュ・パー
ティション、及びハッシュ・パーティションkε{1,
…,B1}が与えられ、かつ部分集合E⊆{1,…,B2}が与
えられているものとすると、複合ハッシュ値(k,m)、
mεEをもつすべての行からなる明確に定義された(恐
らく空の)部分集合ρij,k,Eが存在する。ρij,k,Eのそ
れぞれを最終結合のために単一プロセッサに発送する
と、結合操作の残りの部分全体の独立サブタスクτ
k,Eが得られる。ここで上付き文字は、単一のプロセッ
サが関与していることを強調するためのものである。こ
のことの意味は間もなく明らかになる。このサブタスク
を実行するのにかかる時間は、T1 k,E=A(I1+I2)+B
Oと推定される。ここで はRiからの入力の行数、OはR1とR2のマージからの出力
の行数、AとBは既知の定数である。各ρij,k,m、mε
Eの値が、複合ハッシュ値(k,m)をもつ基礎ドメイン
内のDk,m個の要素にわたって均等に分配されていると
仮定できる場合には、 を計算することができる。
Eが単一の値、たとえばmを含む場合には、さらに次の
2組 の大きい方をできるだけ均等にM個(1≦M≦P)の行
の集合に区分し、さらに小さい独立サブタスクτ
k,{m},…,τ k,{m}を作成できる可能性を考え
ることができる。サブタスクτ k,{m},j{1,…,M}
では、小さい方の集合と大きい方の集合のj番目のサブ
パーティションとの結合が、単一プロセッサ上で実行さ
れる。たとえば、第1のリレーションの方が大きい行数
を含むと仮定すると、このサブタスクを実行するのにか
かる時間は、Tj k,{m}=A((I1/M)+I2)+BI1I2/
Mとなる。M個のサブタスクのそれぞれを異なるプロセ
ッサ上で実行すべきであるとは主張しないが、実際には
そうなる可能性が大きい。明らかに、M>1個のサブタ
スクを実行するのは、1つのサブタスクを実行するより
も効率が悪い。というのは、小さい方のリレーション
(この場合にはR2)からの入力を、関係する各プロセッ
サに発送しなければならないからである。過剰なスキュ
ーを処理するために、この手法を利用しているにすぎな
い。複合ハッシュ・パーティション(k,{m})は、多
重度Mをもつと言う。そうでない場合は、多重度1をも
つと言う。
次に、一般的手法について述べる。(Vk,1,Vk,2)の形
のk対の順序シーケンスを作成するものと仮定する。こ
こで、Vk,1ε{1,…,B1}、Vk,2⊆{1,…,B2}。V
k,2がただ1つの要素を含む場合は、(Vk,1,Vk,2)対
をタイプ2の対と呼ぶ。そうでない場合は、タイプ1の
対と呼ぶ。各複合ハッシュ・クラス(i,j)について、
i=Vk,1かつjεVk,2であるような独自のkε{1,
…,k)が存在しなければならないという意味で、複合ハ
ッシュ・クラスの集合を区分するためにK対のシーケン
スが必要である。kε{1,…,k)について、対(Vk,1,
Vk,2)の多重度をMkで表すことにする。P個のプロセッ
サで実行されるサブタスクτ Vk,1,Vk,2を作成した。
必要な全計算時間は、 と推定することができる。
この全計算時間をプロセッサの間でできるだけ均等に分
配したい。「完全な」割当ては必ずしも可能ではない
が、それができれば、各プロセッサが 単位時間だけ使用中となるはずである。具体的には、ジ
ョブ全体の完了時間 が最小になるように、各サブタスクτ Vk,1,Vk,2をプ
ロセッサA(τ Vk,1,Vk,2)に割り当てたい。この最
適化問題は、いわゆる最小メークスパン問題、またはマ
ルチプロセッサ・スケジューリング問題である。この問
題はNP完全であることが知られているが、最悪の場合の
性能がかなり良く、平均の性能が優れたいくつかのきわ
めて高速のヒューリスティックスが存在する。
要は、値の対の順序シーケンス、及び対応する多重度を
どのように作成するかを制御できることである。本発明
の第2段階の目標は、この順序シーケンスを作成するた
めの分割統治法である。ここでは、段階2に進むための
可能な方法の例を2つ示す。
第1の方法は、グレアムによるLPTヒューリスティック
の変形を使用するものであり、第6図の流れ図に示され
ている。第6図を参照すると、まず機能ブロック50で、
集合{(k,F),k=1,…,B1}、ただしF={1,…,B2
を、サブタスク値T1 k,Fに応じて降順でソートする。す
べての現サブタスクのリストを維持し、推定サブタスク
時間の順に並べる。次に、判断ブロック52でテストを行
なって、リスト中の最大サブタスクの推定時間が、リス
ト中のすべてのサブタスクの推定時間の合計の1/P以下
であるかどうか、言い換えると、最大サブタスクが「適
合」するかどうか判定する。NOの場合は、判断ブロック
54でテストを行なって、リスト中の最大要素がタイプ1
のサブタスクであるかどうか判定する。YESの場合は、
機能ブロック56で、最大タイプ1の対(Vk,1,Vk,2)を
それぞれ多重度が1のcard(Vk,2)個のタイプ2の対
に分割する。次に、機能ブロック58で、サブタスクのリ
ストの番号を付け直し、サブタスクのリストの順序を並
べかえてから、判断ブロック52に戻る。
判断ブロック54のテストの結果がNOの場合には、判断ブ
ロック60でさらにテストを行なって、各サブタスクが今
度は適合するように、リスト中の最大サブタスクに対応
するタイプ2の対の多重度を新しい多重度M<Pに増加
させることが可能かどうか判定する。YESの場合は、最
小のそのような多重度が見つかり、機能ブロック62で、
サブタスクのリストを、この新しい多重度を組み込むよ
うに改訂する。さらに、kを調整し、新しいサブタスク
に対する推定時間を計算する。次に、機能ブロック58に
進む。
判断ブロック60のテストがNOの場合には、機能ブロック
64で、サブタスクが多重度Pをもつように割り当て、P
個のサブタスクのそれぞれを異なるプロセッサに割り当
て、それらのサブタスクをリストから外す。またkを調
整する。除外されたP個のサブタスクは、ほぼ等しい時
間で完了する。次に、判断ブロック66でテストを行なっ
て、サブタスクのリストが空であるかどうか判定する。
YESの場合は、処理は終了する。そうでない場合は、処
理は機能ブロック58に戻る。
判断ブロック52のテストがYESの場合は、すべてのサブ
タスクが適合する。機能ブロック68で、目標メークスパ
ン時間TARGETをリスト中のすべてのサブタスクの推定時
間の合計の1/Pとして計算する。このTARGETがこの場合
は安定である点が重要である。以後のステップでタイプ
1の対をタイプ2の対に分割することがあり得るが、推
定時間の合計は変わらない。変形LPTは以下のステップ
で実行される。
TARGETと、あるプロセッサにすでに割り当てられたサブ
タスク時間の合計の差が最大であるプロセッサPを考え
る。最大サブタスク(Vk,1,Vk,2)がリスト上に残って
いるものと考える。判断ブロック70でテストを行なっ
て、それがタイプ2のサブタスクであるかどうか判定す
る。YESの場合は、機能ブロック72で、サブタスク(V
k,1,Vk,2)をプロセッサPに割り当て、そのサブタスク
をリストから外す。次に、判断ブロック80でテストを行
なって、サブタスクのリストが空であるかどうか判定す
る。YESの場合は、処理は終了する。そうでない場合
は、処理は判断ブロック70に戻る。
判断ブロック70の判定がNOの場合は、判断ブロック78で
テストを行なって、(Vk,1,Vk,2)がプロセッサPに割
り当てられた場合、TARGETとプロセッサPに割り当てら
れたサブタスク時間の合計の改訂された差が負になるか
どうか判定する。NOの場合は、機能ブロック72に移る。
そうでない場合は、機能ブロック74で、(Vk,1,Vk,2
がそれぞれ多重度が1のcard(Vk,2)個のタイプ2の
対に分割される。機能ブロック76で、サブタスクのリス
トの番号を付け直し、順序を並べかえてから、判断ブロ
ック70に戻る。
結合技法の段階2用の第2のハッシュ結合アルゴリズム
は、第7図の流れ図に示されている。第4図の流れ図と
第7図の流れ図を比較するとわかるように、ソート/マ
ージ結合アルゴリズムとこのハッシュ結合アルゴリズム
では全体の論理は全く類似している。第7図を参照する
と、処理は機能ブロック90から始まり、まず集合{(k,
F),k=1,…,B1}、ただしF={1,…,B2}、をとり、
それらを、サブタスク値T1 k,Fに従って降順でソートす
る。すべての現サブタスクのリストを維持し、サブタス
ク推定時間の順に並べる。次に、判断ブロック92でテス
トを行なって、リスト中の最大サブタスクの推定時間
が、リスト中のすべてのサブタスクの推定時間の合計の
1/P以下であるかどうか、言い換えると、最大サブタス
クが「適合」するかどうか判定する。YESの場合は、機
能ブロック94で、LPTまたはMULTIFITを実行する。この
場合も、どちらのアルゴリズムでも、第1ステップであ
り、かつ計算上最も費用のかかるステップは、推定時間
の順にサブタスクを並べることである。これは、この場
合にはすでに済ませてある。次に、判断ブロック96でテ
ストを行なって、このメークスパンが、完全割当ての所
定の乗算係数1+Δの範囲内にあるかどうか判定する。
YESの場合は、処理は停止する。そうでない場合は、判
断ブロック98でテストを行なって、タイプ1の対が残っ
ているかどうか判定する。NOの場合は、処理は停止す
る。そうでない場合は、機能ブロック100で、リスト中
の最大のタイプ1の対を選択する。次に、機能ブロック
102で、最大のタイプ1の対(Vk,1,Vk,2)を次のよう
に2つの対に分割する。各要素mεVk,2について、対
応するサブタスク時間T1 Vk,1,{m}が存在する。集合
{τVk,1,{m}|mεVk,2}に対してLPTまたはMULTIFI
Tを実行し、Vk,2を合計推定サブタスク時間がほぼ等し
い2つの部分集合V1 k,2とV2 k,2に分割する。新しいサブ
タスクのいずれかが時間0であると推定される場合、そ
のサブタスクはリストから削除できる。さらに、Kを調
整する。別法として、最大のタイプ1の対を、2とV
k,2の濃度の間の任意の数Qのグループに分割すること
もできる。この説明ではQ=2を選択した。判断ブロッ
ク104でテストを行なって、サブタスクのリストが空で
あるかどうか判定する。YESの場合、処理は停止する。
そうでない場合は、機能ブロック106でサブタスクのリ
ストの番号を付け直し、順序を並べかえてから、制御ブ
ロック92に戻る。
判断ブロック92のテストの結果がNOの場合は、判断ブロ
ック108でテストを行なって、サブタスクのリスト中の
最大要素がタイプ1のものであるかどうか判定する。YE
Sの場合は、機能ブロック102に進む。そうでない場合
は、判断ブロック110でテストを行なって、各サブタス
クが今度は適合するようにリスト中の最大サブタスクに
対応するタイプ2の対の多重度を新しい多重度M<Pに
増加させることが可能かどうか判定する。YESの場合
は、最小のそのような多重度が見つかり、機能ブロック
112で、サブタスクのリストを、この新しい多重度を組
み込むように改訂する。Kを調整し、新しいサブタスク
に対する推定時間を計算する。次に、機能ブロック106
に進む。判断ブロック110のテストの結果がNOの場合
は、機能ブロック114で、サブタスクが多重度Pをもつ
ように割り当て、P個のサブタスクのそれぞれを異なる
プロセッサに割り当て、それらのサブタスクをリストか
ら外す。さらに、Kを調整する。除外されたP個のサブ
タスクは、ほぼ等しい時間で完了する。次に、判断ブロ
ック104に進む。
この方法は、多重度1の対に適したものであるが、過剰
なスキューを克服するため、それより高い多重度をも受
け入れることができる。これらの過剰なスキューの位置
は、アルゴリズムの実行中に自然にわかるはずである。
上述の方法には多数の変形があり、それも同様に実施で
きる。たとえば、どちらの方法でも、反復改良アルゴリ
ズムを終了時に適用することができる。この方法は、第
8図に示されている。この図で、GOALは、すべてのサブ
タスクの推定時間の合計の1/Pを表している。この方法
は、割り当てられたサブタスクの推定時間の合計が最大
のプロセッサPをとり出すものである。プロセッサP
で、最大のタイプ1のサブタスク(Vk,1,Vk,2)をとり
出して、それぞれ多重度が1のcard(Vk,2)個のタイ
プ2の対に分割する。次に、これらのタスクを、プロセ
ッサに再度割り当てる。第8図に示すように、最大のサ
ブタスクが最初に再割当てされる。
第4図に示したソート/マージ結合アルゴリズムの段階
2と同様に、第7図に示した第2のハッシュ結合アルゴ
リズムに基づく段階2用のこの方法では、LPTまたはMUL
TIFITは、機能ブロック94を通るごとに実行する必要は
ない。カウンタで、最小メークスパン・アルゴリズムの
実行回数を調節することができる。同様に、このアルゴ
リズムは、たとえ解答が完全に満足なものでなくても、
別のカウンタに従ってタイム・アウトさせることができ
る。
第3図に示した段階3では、リレーションR1とR2の要素
集合をディスクから読み取り、ハッシュ関数H1とH2を適
用し、それらの要素集合を、段階2で決定された割り当
てられたプロセッサに発送する。
任意選択として、第3図に示した段階4では、実際の結
合の進行中に、プロセッサが各自の進行状況を報告する
こともできる。推定サブタスク時間がちょうどその値な
ので、結合の進行がバランスを失うことがありうる。こ
のアンバランスが所定のしきい値を超えた場合に、新し
いLPTまたはMULTIFITアルゴリズムを開始することもで
きる。
この階層的ハッシュ処理コンセプトを実施する方法は多
数あることに留意されたい。1つの方法は、ハッシュ処
理を実行する際に、段階1で出会った各種の結合カラム
値上に最も頻繁に使用されるリストを保存するものであ
る。発生頻度も維持される。結合カラム値の発生率が所
定のしきい値より小さくなると、その結合カラムをリス
トから外す。別の方法は、ハッシュ処理を実行する際、
段階1の結合カラム値のサンプリングを実行するもので
ある。次に、最も頻繁に使用されるリストまたはサンプ
リング結果を使用して、スキュー分布を識別し、どのパ
ーティションをさらに区分するべきかを案内することも
できる。
要約すると、ソート/マージ・アルゴリズムまたはハッ
シュ結合アルゴリズムの使用に基づいて、複数のプロセ
ッサを有する並列リレーショナル・データベース環境内
で1つの共通フィールド上で2つのデータベース・リレ
ーションを結合する方法を提供する。この方法は、第1
のリレーションを多数のパーティションに区分し、第2
のリレーションを対応する多数のパーティションに区分
して、共通フィールド内の個々の値が、第2のリレーシ
ョンのパーティションの対応する1つに一義的に対応す
るようにし、それにより、それぞれが第1のリレーショ
ンのあるパーティションを第2のリレーションの対応す
るパーティションと結合するタスクから構成される、ジ
ョブの現集合を定義するものである。単一のプロセッサ
が各ジョブを完了するのに要する時間を推定し、これら
の推定値が、実行推定時間の現集合を形成する。
次に、ジョブ実行時間を、推定時間の合計をプロセッサ
の数で割った値以下の時間に短縮することが必要であ
る。これを行なうには、その推定実行時間が推定時間の
合計をプロセッサの数で割った値より大きいジョブに対
応するパーティションを再区分する。この再区分は、第
1のリレーションのそのようなパーティション、及び共
通フィールドに複数の異なる値を含む第2のリレーショ
ンの対応するパーティションを、少なくとも2つのより
小さいパーティションで置き換えることによって行な
う。共通フィールド内の個々の値は、第1のリレーショ
ンのより小さいパーティションの1つに一義的に対応
し、かつ第2のリレーションのより小さいパーティショ
ンの対応する1つに一義的に対応する。これにより、ジ
ョブの現集合内で置換ジョブが定義される。各置換ジョ
ブは、第1のリレーションのそのようなより小さなパー
ティションの1つを、第2のリレーションの対応するよ
り小さなパーティションと結合するタスクから構成され
る。第1のリレーションと第2のリレーションの対応す
るパーティションが、共通フィールド内に1つの値のみ
を含むどんなジョブに関しても、そのような対応するパ
ーティションの大きい方のものが、複数のより小さいパ
ーティションで置き換えられ、そのようなより小さいパ
ーティションの数は、そのようなジョブに関して、推定
実行時間に分割したとき、推定実行時間の合計値をプロ
セッサの数で割った値より小さい時間を与える、最小の
整数である。このようにして、各置換ジョブが、一方の
リレーションのより小さいパーティションの1つを、他
方のリレーションの未変更の対応するパーティションと
結合するタスクから構成される、置換ジョブが定義され
る。
パーティションの再区分過程が完了すると、置き換えら
れたジョブの推定実行時間を置換ジョブの推定実行時間
で置き換えることにより、推定実行時間の現集合が更新
される。この過程は、推定実行時間の合計値をプロセッ
サの数で割った値より大きな推定実行時間が、ジョブの
現集合内のどのジョブに対してもなくなるまで、繰り返
し実行される。
本発明の重要な部分は、プロセッサ割当ての細分であ
る。これは、最小メークスパン最適化技法を使用して、
プロセッサの間でジョブの現集合をスケジューリングす
ることによって行なう。プロセッサがスケジュール通り
にジョブの現集合を実行する場合に生ずるはずの完了時
間のスキュー量を推定する。この推定値を、スキュー標
準値と比較し、推定値が許容できる場合は、スケジュー
リングされたジョブの現集合がプロセッサ上で実行さ
れ、それにより、共通フィールド上の2つのデータベー
ス・リレーションを最小の完了時間スキュー値で結合す
る。
推定スキュー値がスキュー標準値に合致しない場合は、
第1のリレーション及び第2のリレーションの最大パー
ティションの1つが、少なくとも2つのより小さいパー
ティションで置き換えられて、置き換えられたパーティ
ションによって定義されるジョブに対する置換ジョブが
定義される。各置換ジョブは、第1のリレーションのよ
り小さな置換パーティションの1つを、第2のリレーシ
ョンの対応するより小さい置換パーティションと結合す
るタスクから構成される。次に、置き換えられたジョブ
の推定実行時間を置換ジョブの推定実行時間で置き換え
ることにより、推定実行時間の現集合が更新される。さ
らに、ジョブの現集合のスケジューリングが、推定完了
時間スキューが最小になるように更新される。完了時間
スキューの量が推定され、スキュー標準値と比較され
る。この過程は、スキュー量がスキュー標準値に合致す
るか、またはすべてのパーティションが所定の最大限度
に再区分されるまで、反復して繰り返される。
F.効果 本発明は、ソート/マージ技法、及びハッシュ結合技法
によって、並列リレーショナル・データベース環境にお
いて、2つのリレーションの自然結合のための全実行時
間を最小にする効率的な技法を提供する。
【図面の簡単な説明】
第1図は、本発明による結合手順を実施できるマルチプ
ロセッサ・データベース・マシンの一般編成のブロック
図である。 第2図は、データ・スキューの概念を図示するために使
用する3つのリレーションの例を示した図である。 第3図は、本発明による結合操作の諸段階を示すハイ・
レベルのブロック図である。 第4図は、本発明によるソート/マージ結合アルゴリズ
ムを使用する結合操作の第2段階の詳細を示す流れ図で
ある。 第5図は、本発明の第1の態様でサブタスクがどのよう
により小さいサブタスクに分割されるかを示す図であ
る。 第6図は、本発明による第1のハッシュ結合アルゴリズ
ムを使用した結合操作の第2段階の詳細を示す流れ図で
ある。 第7図は、本発明による第2のハッシュ結合アルゴリズ
ムを使用した結合操作の第2段階の詳細を示す流れ図で
ある。 第8A図及び第8B図は、本発明のハッシュ結合操作でサブ
タスクがどのように再割振りされるかを示す図である。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】P個のプロセッサを有する並列リレーショ
    ナル・データベース環境内で共通フィールド上で2つの
    データベース・リレーションを結合する方法であって、 (a)共通フィールド内の各値が第1のリレーションの
    パーティションの1つに一義的に対応し、かつ第2のリ
    レーションのパーティションのそれと対応する1つに一
    義的に対応するように、第1のリレーションを複数のパ
    ーティションに区分しかつ第2のリレーションをそれら
    に対応する複数のパーティションに区分し、それぞれが
    第1のリレーションのパーティションを第2のリレーシ
    ョンの対応するパーティションと結合するタスクから構
    成されるジョブの現集合を定義する、区分ステップと、 (b)任意のプロセッサにおける最大実行時間を最小化
    するように前記ジョブをスケジューリングする最小メー
    クスパン最適化技法を使用して、P個のプロセッサ間で
    前記ジョブの現集合をスケジューリングするステップ
    と、 (c)P個のプロセッサが、ステップ(b)でスケジュ
    ーリングされたジョブの現集合を実行する場合に生ずる
    はずの完了時間スキュー量を推定するステップと、 (d)推定スキュー量を標準スキュー量と比較するステ
    ップと、 (e)推定スキュー量が標準スキュー量に適合する場合
    は、最終的にスケジューリングされたものとして前記ジ
    ョブの現集合をP個のプロセッサを使って実行し、それ
    により前記2つのデータベース・リレーションを共通フ
    ィールド上で最小の完了時間スキューで結合するステッ
    プと を含む方法。
  2. 【請求項2】推定スキュー量が標準スキュー量に適合し
    ない場合は、さらに (f)第1及び第2のリレーションの最大パーティショ
    ンの1つを少なくとも2つのより小さなパーティション
    で置き換え、それにより、置き換えられたパーティショ
    ンによって定義されるジョブについて、それぞれが第1
    のリレーションのより小さい置換パーティションの1つ
    を第2のリレーションの対応するより小さい置換パーテ
    ィションと結合するタスクから構成される、置換ジョブ
    を定義するステップと、 (g)置き換えられたジョブの推定実行時間を、置換ジ
    ョブの推定実行時間で置き換えることにより、推定実行
    時間の現集合を更新するステップと、 (h)完了時間スキュー推定値が最小になるように、P
    個のプロセッサの間でのジョブの現集合のスケジューリ
    ングを更新するステップと、 (i)P個のプロセッサが、ステップ(h)でスケジュ
    ーリングされたジョブの現集合を実行する場合に生ずる
    はずの完了時間スキュー量を推定するステップと、 (j)ステップ(i)で推定された完了時間スキュー量
    を標準スキュー量と比較するステップと、 (k)ステップ(j)でスキュー量が標準スキュー量に
    適合するか、またはすべてのパーティションが所定の最
    大限度まで再区分されてしまうまで、ステップ(e)な
    いし(j)を繰り返し実行するステップと を含む、請求項1に記載の方法。
  3. 【請求項3】区分ステップがさらに、 (l)単一のプロセッサが前記ジョブのそれぞれを実行
    するのにかかる時間を推定し、前記推定値が推定実行時
    間の現集合を形成するステップと、 (m)その推定実行時間が推定実行時間の合計をPで割
    った値より大きいジョブに対応するパーティションを再
    区分するステップと、 (n)置き換えられたジョブの推定実行時間を、置換ジ
    ョブの推定実行時間で置き換えることにより、推定実行
    時間の現集合を更新するステップと、 (o)推定実行時間の合計をPで割った値より大きな推
    定実行時間が、ジョブの現集合内のどのジョブについて
    もなくなるまで、ステップ(m)及び(n)を繰り返し
    実行するステップと を含む、請求項2に記載の方法。
  4. 【請求項4】再区分ステップがさらに、 (p)共通フィールド内のそれぞれの値が第1のリレー
    ションのより小さいパーティションの1つに一義的に対
    応し、かつ第2のリレーションのより小さいパーティシ
    ョンの対応する1つに一義的に対応するように、複数の
    明確な値を含む第1のリレーションのパーティション、
    及び第2のリレーションのそれと対応するパーティショ
    ンを、少なくとも2つのより小さいパーティションで置
    き換え、それにより、ジョブの現集合内のステップ
    (p)の任意ジョブについて、それぞれが第1のリレー
    ションのそのようなより小さいパーティションの1つを
    第2のリレーションの対応するより小さいパーティショ
    ンと結合するタスクから構成される、置換ジョブを定義
    するステップと、 (q)第1及び第2のリレーションの対応するパーティ
    ションが共通フィールド内にただ1つの明確な値を含む
    というジョブに関して、推定実行時間に分割したとき、
    推定実行時間の合計をPで割った値より小さい時間を与
    える最小の整数をXとして、そのような対応するパーテ
    ィションのより大きいものをX個のより小さいパーティ
    ションで置き換えて、それにより、ジョブの現集合内の
    そのようなステップ(q)のジョブについて、それぞれ
    が一方のリレーションのX個のより小さいパーティショ
    ンの1つを他方のリレーションの未変更の対応するパー
    ティションと結合するタスクから構成される、置換ジョ
    ブを定義するステップと を含む、請求項3に記載の方法。
  5. 【請求項5】V1及びV2が前記第1及び第2のリレーショ
    ンの結合カラムのドメイン内の2つの値であり、V1<V2
    を満たす対(V1,V2)がタイプ1の対として定義され、V
    1=V2を満たす対(V1,V2)がタイプ2の対として定義さ
    れ、さらにステップ(f)の前に、 (r)少なくとも2つのより小さいパーティションで置
    き換えるために、最大のタイプ1の対を選択するステッ
    プと、 (s)タイプ1の対がない場合には、続いて、P個のプ
    ロセッサを使って最後にスケジューリングされたジョブ
    の現集合を実行し、それにより、前記の2つのデータベ
    ース・リレーションを共通フィールド上で最小の完了時
    間スキュー量で結合するステップと を含む、請求項2に記載の方法。
  6. 【請求項6】V1及びV2が前記第1および第2のリレーシ
    ョンの結合カラムのドメイン内の2つの値であり、V1<
    V2を満たす対(V1,V2)がタイプ1の対として定義さ
    れ、V1=V2を満たす対(V1,V2)がタイプ2の対として
    定義され、ステップ(m)で前記ジョブの1つの推定時
    間が合計実行時間の1/Pより大きいときは、さらに (t)前記の1つのジョブがタイプ1の対であるかどう
    か判定するステップと、 (u)タイプ1の対である場合には、それを、1つがタ
    イプ2である少なくとも2つのパーティションで置き換
    えるステップと、 を含む、請求項3に記載の方法。
  7. 【請求項7】前記の1つのジョブがタイプ2の対である
    場合には、次いで (v)タイプ2の対の多重度を増加できるかどうかを判
    定するステップと、 (w)その多重度を増加できる場合には、最小の多重度
    を見つけ、ジョブの現集合を改訂するステップと、 を実行する、請求項6に記載の方法。
  8. 【請求項8】タイプ2の対の多重度を増加できない場合
    には、 (x)タイプ2の対を多重度Pをもつように割り当てる
    ステップと、 (y)P個のジョブのそれぞれを異なるプロセッサに割
    り当てるステップと、 を実行する、請求項7に記載の方法。
  9. 【請求項9】ステップ(a)が、2つのハッンュ関数H1
    及びH2を使用する階層的二重ハッシュ処理技法によって
    実行され、その際に、H2は、H1によって作成された各ハ
    ッシュ・パーティションをさらにより小さなパーティシ
    ョンに分割するために使用される、請求項1に記載の方
    法。
  10. 【請求項10】結合操作においてステップ(e)の間に
    前記プロセッサの進行状況を監視し、結合操作の進行
    が、所定のしきい値を超えてバランスを失った場合に、
    ステップ(b)ないし(d)を反復するという、請求項
    1に記載の方法。
JP2217257A 1989-10-05 1990-08-20 データベース・リレーシヨンの結合方法 Expired - Lifetime JPH07111718B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US417366 1989-10-05
US07/417,366 US5121494A (en) 1989-10-05 1989-10-05 Joining two database relations on a common field in a parallel relational database field

Publications (2)

Publication Number Publication Date
JPH03126169A JPH03126169A (ja) 1991-05-29
JPH07111718B2 true JPH07111718B2 (ja) 1995-11-29

Family

ID=23653718

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2217257A Expired - Lifetime JPH07111718B2 (ja) 1989-10-05 1990-08-20 データベース・リレーシヨンの結合方法

Country Status (4)

Country Link
US (1) US5121494A (ja)
EP (1) EP0421408B1 (ja)
JP (1) JPH07111718B2 (ja)
DE (1) DE69030228T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430285B2 (en) 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104871B2 (ja) * 1989-08-31 1995-11-13 三菱電機株式会社 リレーショナル・データベースにおけるジョイン処理方式
JPH03130842A (ja) * 1989-10-17 1991-06-04 Toshiba Corp データベースシステムの同時実行制御装置
US5241648A (en) * 1990-02-13 1993-08-31 International Business Machines Corporation Hybrid technique for joining tables
US5291583A (en) * 1990-12-14 1994-03-01 Racal-Datacom, Inc. Automatic storage of persistent ASN.1 objects in a relational schema
US5307485A (en) * 1991-05-31 1994-04-26 International Business Machines Corporation Method and apparatus for merging sorted lists in a multiprocessor shared memory system
JPH077422B2 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
US5345585A (en) * 1991-12-02 1994-09-06 International Business Machines Corporation Method for optimizing processing of join queries by determining optimal processing order and assigning optimal join methods to each of the join operations
JP3526585B2 (ja) * 1992-03-12 2004-05-17 株式会社リコー 分散データベースの質問処理最適化方式
US5418854A (en) * 1992-04-28 1995-05-23 Digital Equipment Corporation Method and apparatus for protecting the confidentiality of passwords in a distributed data processing system
JP3824091B2 (ja) * 1992-10-09 2006-09-20 富士通株式会社 リレーショナルデータベースシステム
JP3202074B2 (ja) * 1992-10-21 2001-08-27 富士通株式会社 並列ソート方式
US5423035A (en) * 1992-12-23 1995-06-06 Hughes Aircraft Company Method for evaluating relational database queries with automatic indexing and ordering of join components
US5473741A (en) * 1993-08-30 1995-12-05 Graphic Systems Technology, Inc. Method for determining the time to perform raster image processing
WO1995009395A1 (en) * 1993-09-27 1995-04-06 Oracle Corporation Method and apparatus for parallel processing in a database system
US5437032A (en) * 1993-11-04 1995-07-25 International Business Machines Corporation Task scheduler for a miltiprocessor system
US5765146A (en) * 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
US5574900A (en) * 1994-02-25 1996-11-12 International Business Machines Corporation System and method for optimizing parallel processing of database queries
US6009265A (en) * 1994-02-25 1999-12-28 International Business Machines Corporation Program product for optimizing parallel processing of database queries
US5835755A (en) * 1994-04-04 1998-11-10 At&T Global Information Solutions Company Multi-processor computer system for operating parallel client/server database processes
US5542089A (en) * 1994-07-26 1996-07-30 International Business Machines Corporation Method and apparatus for estimating the number of occurrences of frequent values in a data set
GB9417314D0 (en) * 1994-08-27 1994-10-19 Int Computers Ltd Method for performing joins in a database system
JP3201945B2 (ja) * 1995-01-10 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースのテーブルを比較する方法
JP3560690B2 (ja) * 1995-06-14 2004-09-02 富士通株式会社 並列プロセッサ装置
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
US5666525A (en) * 1995-09-21 1997-09-09 The Trustees Of Columbia University In The City Of New York System and method for performing an efficient join operation on large tables with a small main memory
WO1997011433A1 (en) * 1995-09-21 1997-03-27 The Trustees Of Columbia University In The City Of New York Performing efficient join operations on large tables
US5745746A (en) * 1996-06-24 1998-04-28 International Business Machines Corporation Method for localizing execution of subqueries and determining collocation of execution of subqueries in a parallel database
USRE37965E1 (en) * 1995-09-27 2003-01-07 International Business Machines Corporation Method for localizing execution or subqueries and determining collocation of execution of subqueries in a parallel database
US5774692A (en) * 1995-10-05 1998-06-30 International Business Machines Corporation Outer quantifiers in object-oriented queries and views of database systems
US5797136A (en) * 1995-10-05 1998-08-18 International Business Machines Corporation Optional quantifiers in relational and object-oriented views of database systems
US5758345A (en) * 1995-11-08 1998-05-26 International Business Machines Corporation Program and method for establishing a physical database layout on a distributed processor system
US5752072A (en) * 1996-05-09 1998-05-12 International Business Machines Corporation Sorting scheme without compare and branch instructions
US5873074A (en) * 1997-04-18 1999-02-16 Informix Software, Inc. Applying distinct hash-join distributions of operators to both even and uneven database records
US5983215A (en) * 1997-05-08 1999-11-09 The Trustees Of Columbia University In The City Of New York System and method for performing joins and self-joins in a database system
US6704866B1 (en) 1997-07-11 2004-03-09 Cisco Technology, Inc. Compression and encryption protocol for controlling data flow in a network
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
US5884320A (en) * 1997-08-20 1999-03-16 International Business Machines Corporation Method and system for performing proximity joins on high-dimensional data points in parallel
US6006232A (en) * 1997-10-21 1999-12-21 At&T Corp. System and method for multirecord compression in a relational database
JP3571201B2 (ja) * 1997-12-12 2004-09-29 富士通株式会社 データベース検索装置及びデータベース検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US6401188B1 (en) 1998-02-27 2002-06-04 Cisco Technology, Inc. Method for selection on a pattern sequence
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6106575A (en) * 1998-05-13 2000-08-22 Microsoft Corporation Nested parallel language preprocessor for converting parallel language programs into sequential code
AU5568399A (en) * 1998-08-20 2000-03-14 Equifax, Inc. System and method for updating a credit information database
US6226639B1 (en) 1998-09-22 2001-05-01 International Business Machines Corporation System and method for hybrid hash join using over-partitioning to respond to database query
US6601058B2 (en) * 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
US6327587B1 (en) 1998-10-05 2001-12-04 Digital Archaeology, Inc. Caching optimization with disk and/or memory cache management
US6253197B1 (en) 1998-10-06 2001-06-26 International Business Machines Corporation System and method for hash loops join of data using outer join and early-out join
US6275987B1 (en) * 1998-11-05 2001-08-14 International Business Machines Corporation Adaptive, predictive progress indicator
US7047232B1 (en) 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US6341346B1 (en) 1999-02-05 2002-01-22 Cisco Technology, Inc. Method for comparison between a pattern sequence and a variable length key
US6640221B1 (en) 2000-07-10 2003-10-28 Sas Institute Inc. System and method for configuring, sequencing and viewing joins in a query
US20020091752A1 (en) * 2001-01-09 2002-07-11 Firlie Bradley M. Distributed computing
US7213025B2 (en) * 2001-10-16 2007-05-01 Ncr Corporation Partitioned database system
US7080072B1 (en) 2001-11-14 2006-07-18 Ncr Corp. Row hash match scan in a partitioned database system
US7035851B1 (en) * 2001-12-07 2006-04-25 Ncr Corp. Reorganization of database records using partition merging
US7120648B2 (en) * 2002-02-26 2006-10-10 International Business Machines Corporation System and method for predicting execution time of a database utility command
US6954748B2 (en) * 2002-04-25 2005-10-11 International Business Machines Corporation Remote data access and integration of distributed data sources through data schema and query abstraction
US7882100B2 (en) * 2005-01-24 2011-02-01 Sybase, Inc. Database system with methodology for generating bushy nested loop join trees
US8589944B2 (en) * 2005-03-16 2013-11-19 Ricoh Production Print Solutions Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system
JP4793091B2 (ja) * 2005-05-17 2011-10-12 ブラザー工業株式会社 インク給送装置及びインクジェット記録装置
US7685193B2 (en) * 2006-04-28 2010-03-23 Kognitio Limited Database system with multiple processing nodes
FR2907567B1 (fr) * 2006-10-23 2008-12-26 Canon Kk Procede et dispositif de generation de motifs de reference a partir d'un document ecrit en langage de balisage et procedes et dispositifs de codage et de decodage associes.
US7636712B2 (en) * 2006-11-14 2009-12-22 Microsoft Corporation Batching document identifiers for result trimming
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
US8799272B2 (en) * 2007-07-20 2014-08-05 Hewlett-Packard Development Company, L.P. Data skew insensitive parallel join scheme
JP4966175B2 (ja) * 2007-12-04 2012-07-04 日本電信電話株式会社 分散インデックス結合方法及びシステム
US7945529B2 (en) * 2007-12-27 2011-05-17 Business Objects, S.A. Apparatus and method for performing table comparisons
US8078610B2 (en) * 2008-03-26 2011-12-13 Teradata Us, Inc. Optimization technique for dealing with data skew on foreign key joins
US7941424B2 (en) * 2008-05-30 2011-05-10 Teradata Us, Inc. System, method, and computer-readable medium for dynamic detection and management of data skew in parallel join operations
US8195644B2 (en) * 2008-10-06 2012-06-05 Teradata Us, Inc. System, method, and computer-readable medium for optimization of multiple parallel join operations on skewed data
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US8930954B2 (en) * 2010-08-10 2015-01-06 International Business Machines Corporation Scheduling parallel data tasks
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9600513B2 (en) 2011-06-09 2017-03-21 International Business Machines Corporation Database table comparison
US8868545B2 (en) * 2011-12-29 2014-10-21 Teradata Us, Inc. Techniques for optimizing outer joins
US8825633B2 (en) 2012-05-15 2014-09-02 Sas Institute Inc. System, method, and data structure for automatically generating database queries which are data model independent and cardinality independent
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10585896B2 (en) * 2013-03-12 2020-03-10 Red Hat, Inc. Managing data in relational database management system
US9305074B2 (en) * 2013-06-19 2016-04-05 Microsoft Technology Licensing, Llc Skew-aware storage and query execution on distributed database systems
KR102186050B1 (ko) 2013-12-06 2020-12-03 아브 이니티오 테크놀로지 엘엘시 소스 코드 번역
US9836505B2 (en) 2014-03-13 2017-12-05 Sybase, Inc. Star and snowflake join query performance
US9792328B2 (en) 2014-03-13 2017-10-17 Sybase, Inc. Splitting of a join operation to allow parallelization
US10042876B2 (en) 2014-09-17 2018-08-07 International Business Machines Corporation Sort-merge-join on a large architected register file
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
US10545923B1 (en) * 2017-12-19 2020-01-28 Teradata Us, Inc. Reducing skew for database operation processing with randomization
US11868331B1 (en) 2018-05-21 2024-01-09 Pattern Computer, Inc. Systems and methods for aligning big data tables in linear time
US11163764B2 (en) 2018-06-01 2021-11-02 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
US11157496B2 (en) 2018-06-01 2021-10-26 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
CN109885384B (zh) * 2018-12-13 2023-02-07 平安壹钱包电子商务有限公司 任务并行度优化方法、装置、计算机设备及存储介质
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
US11573823B2 (en) 2019-11-18 2023-02-07 International Business Machines Corporation Parallel execution of applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58151664A (ja) * 1982-03-02 1983-09-08 Fujitsu Ltd ジヨブ選択方式
JPS63147257A (ja) * 1986-12-10 1988-06-20 Fujitsu Ltd 並列データ再分配方法及びマルチプロセッサシステム
JPH01237872A (ja) * 1988-03-18 1989-09-22 Fujitsu Ltd 負荷分散処理方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58151664A (ja) * 1982-03-02 1983-09-08 Fujitsu Ltd ジヨブ選択方式
JPS63147257A (ja) * 1986-12-10 1988-06-20 Fujitsu Ltd 並列データ再分配方法及びマルチプロセッサシステム
JPH01237872A (ja) * 1988-03-18 1989-09-22 Fujitsu Ltd 負荷分散処理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430285B2 (en) 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers

Also Published As

Publication number Publication date
EP0421408A3 (en) 1993-04-21
DE69030228D1 (de) 1997-04-24
JPH03126169A (ja) 1991-05-29
US5121494A (en) 1992-06-09
EP0421408A2 (en) 1991-04-10
DE69030228T2 (de) 1997-09-18
EP0421408B1 (en) 1997-03-19

Similar Documents

Publication Publication Date Title
JPH07111718B2 (ja) データベース・リレーシヨンの結合方法
US6505187B1 (en) Computing multiple order-based functions in a parallel processing database system
US5307485A (en) Method and apparatus for merging sorted lists in a multiprocessor shared memory system
US5797000A (en) Method of performing a parallel relational database query in a multiprocessor environment
US6778977B1 (en) Method and system for creating a database table index using multiple processors
US5325525A (en) Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time
US6772163B1 (en) Reduced memory row hash match scan join for a partitioned database system
US7558802B2 (en) Information retrieving system
Jindal et al. Relax and let the database do the partitioning online
US8166022B2 (en) System, method, and apparatus for parallelizing query optimization
US7562090B2 (en) System and method for automating data partitioning in a parallel database
US5392430A (en) Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
US7991763B2 (en) Database query optimization utilizing remote statistics collection
US5970495A (en) Method and apparatus for achieving uniform data distribution in a parallel database system
US6304866B1 (en) Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads
TWI730043B (zh) 關聯分析方法和裝置
EP2731023A1 (en) Method and system for processing graph queries
Mohanasundaram et al. Scheduling rules for dynamic shops that manufacture multi-level jobs
US20130110845A1 (en) Bulk matching with update
US7035851B1 (en) Reorganization of database records using partition merging
US7080072B1 (en) Row hash match scan in a partitioned database system
US7890705B2 (en) Shared-memory multiprocessor system and information processing method
US6999967B1 (en) Semantically reducing the number of partitions involved in a join
US5146540A (en) Processor allocation method and apparatus for multiprocessor execution of a constraint satisfaction search
Märtens et al. Dynamic query scheduling in parallel data warehouses

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071129

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081129

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091129

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091129

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 15

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101129

Year of fee payment: 15