JPH11242688A - 効率的な並列高次元類似ジョインのための構造および方法 - Google Patents

効率的な並列高次元類似ジョインのための構造および方法

Info

Publication number
JPH11242688A
JPH11242688A JP10352250A JP35225098A JPH11242688A JP H11242688 A JPH11242688 A JP H11242688A JP 10352250 A JP10352250 A JP 10352250A JP 35225098 A JP35225098 A JP 35225098A JP H11242688 A JPH11242688 A JP H11242688A
Authority
JP
Japan
Prior art keywords
objects
join
data
tree
procedure
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.)
Pending
Application number
JP10352250A
Other languages
English (en)
Inventor
Shin Biniito
シン ヴィニート
Arusabuti Kaaredo
アルサブティ カーレド
Ranka Sanjai
ランカ サンジャイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPH11242688A publication Critical patent/JPH11242688A/ja
Pending 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • 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/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)

Abstract

(57)【要約】 【課題】効率的に多次元オブジェクトをジョインして、
データベースポイントのような、類似のオブジェクトま
たは項目の対(pairs)を生成する。 【解決手段】ε−k−d−Bツリーのコストモデルを提
示し、これを用いてリーフサイズを最適化する。この新
たなリーフサイズは、一定のリーフサイズを用いた従来
技術に比べて殆どの状況においてより良好である。ε−
k−d−Bツリーに対する新規な並列手続を提示する。
等深ヒストグラムに基づく負荷均衡化法は均一または低
スキュー状況に対して良好に機能するが、重み付けされ
た等深ヒストグラムに基づくものは、高スキューデータ
セットに対して遥かに良好に機能する。後者の方法は、
低スキューデータセットに対しては前者より若干低速で
あるにすぎない。後者の方法の重みは、最適リーフサイ
ズの決定に用いられるのと同じコストモデルに基づく。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して類似ジョイ
ン(similarity joins)に関し、特に、イプシロン−k−
d−Bツリー構造を用いた、効率的な並列高次元類似ジ
ョインのための構造および方法に関する。
【0002】
【従来の技術】多次元類似ジョインは、互いに、ある所
定の典型的には小さい距離内にある多次元ポイントの対
(pairs)を見いだすものである。”次元”は、何らかの
計量可能な性質または特性であり、この用語が通常用い
られるような空間的な次元に限定される必要はない。2
次元(2D)または3次元(3D)マッピングアプリケ
ーションのような従来のアプリケーションは2または3
次元を必要とするにすぎないが、多くの重要な新規アプ
リケーションは極めて大きな次元の数(おそらく数十も
しくは数百、または数千)を必要とする。アプリケーシ
ョンの領域(domain)には、マルチメディアデータベー
ス[後述の関連文献11,16,17の記載部分を参
照]、医用データベース[5,21]、科学データベー
ス[22]および時系列データベース[9,1,14]
を含む。このようなデータベースは、例えば、温度計、
血圧センサ、血圧モニタ・センサ、脳波センサ・サンプ
リングシステム、血液化学、診断履歴、並びに、あらゆ
る形式の他の医学的、化学的、生物学的等のデータを含
む、医用機器(medical instrumentation)のような物
理的システムの収集(collection)および監視により構
成することができる。遠隔検知装置から収集されるデー
タは、ハンドヘルドセンサ、軌道(orbital)センサもし
くは他のセンサ、レーダ等から収集された写真画像デー
タ、人文的(cultural)または他の地理的情報システム(G
eographical Information System:GIS)型のパラメー
タ、データ、その他の情報を含む。他の物理的システム
も同様に監視することができ、収集されたデータ信号
は、分類し、データベースに保存し、例えば、他のプロ
セスを制御するために、あるいは履歴データベースとの
比較への利用時の判定規準(decision metric)として利
用できる。これらの特性(characteristics)は、多値多
次元データポイントの1個または複数個の値を構成す
る。
【0003】
【発明が解決しようとする課題】類似ジョインのアプリ
ケーションの典型的な例としては、ごく少数を挙げて
も、類似の価格履歴を有する米国ミューチュアルファン
ド(mutual funds)の全ての対を見いだすこと、互いに類
似した画像を発見すること、経時的に類似した症状を有
する患者を同定すること、が挙げられる。類似ジョイン
操作は、”データマイニング(data mining:データ発
掘)”操作にも利用できる。
【0004】1対のポイントは、それらの間の距離が、
ある種の距離規準(some distance metric)としてのイプ
シロン(ε)より小さいとき、”類似(similar)”して
いると考えられる。ここに、εはユーザが定義したパラ
メータである。本明細書では、距離規準としてLp-norm
を用いる。これは、次のように定義される。
【0005】
【数1】
【0006】ここに、pは特定の距離規準を表し、dは
ポイントxおよびyの次元を表す(それぞれd次元)。
は、次のような距離規準として定義される。
【0007】
【数2】
【0008】次元数(d)が3以下であれば、類似ジョ
インは空間的なものと考えられ、ジョインは”空間的類
似ジョイン”と呼ぶことができる。Lpは距離規準のク
ラスである。ここに、pは、特定の規準を表す。L
1は、従来、マンハッタン距離(Manhattan distance)と
呼ばれ、2つの直交方向に沿った距離から導出される。
2は、着目する2ポイント間を直接結ぶ直線に基づい
て計算されるユークリッド距離である。Lは、複数の
次元の1つに沿った最大距離として計算される他の距離
である。これらの距離規準は従来既知のものであり、こ
れ以上の詳細な説明は省略する。多次元類似ジョインの
ために、Rツリーファミリー(R-tree,R*-tree,R+-tre
e)[8,20,10,6]、グリッドファイル(grid-file)[1
8]、k−d−bツリー[19,7]、SSツリー[23]、
およびSRツリー[12]インデックス(indices)のよう
な幾つかのデータ構造が提案されている。しかし、一般
にこれら及び他の既知のデータ構造は高次元ポイントに
ついて類似ジョインを実行するには効率的ではない。な
ぜなら、次元数の増加に伴って時間および空間の複雑度
が急速に増大するからである。例えば、2または3次元
のポイントについて利用できるデータ構造は、通常、十
ないし百次元のポイントについては利用不可能である。
【0009】初期のデータベース手続は、メモリ常駐手
続であるK−d(またはKd)ツリーに関連するもので
あったが、後の拡張または改良においては、ディスク常
駐として具現されたK−d−B(またはKdB)バージ
ョンとなった。これは、データベースが同時に全メモリ
常駐とするには大きすぎる場合の具現法であった。これ
らの従来の構造および具現例は既知であり、これ以上詳
述はしない。
【0010】ε−k−d−Bツリーは、高次元ポイント
[2]について類似ジョインを実行するための多次元イ
ンデックス構造として、Agrawal等[2]により提案され
ている。特に、ある種の人造の(synthetic)現実の(real
-life)データセットについて、R+ツリーよりも高速で
あると称されている。Agrawal等[2]によるε−k−d
−Bツリーインデックス構造は、リーフサイズ(leaf si
ze)用の静的な一定のしきい値を用いている。文献[2]
は、その全体を参照することにより本明細書に組み込ま
れる。
【0011】したがって、多次元類似ジョインを実行す
るための手続きはある意味で進化してきたが、高次元デ
ータセットについて類似ジョインを実行するための方法
および構造がなお必要とされている。また、大きなデー
タセットおよび多数のプロセッサのための効率的なジョ
インを行うためにスケーリング可能な(scalable)方法お
よび構造も必要とされている。さらに、従来の静的に決
定されたツリー特性に限定されず、データセット自身の
特性に基づき、または単にプロセッサ間のポイントの均
等ポイント分配に基づいて、複数のプロセッサ間にデー
タを分割することができる、より良い負荷均衡負荷規準
(load balancing load metric)が必要とされている。従
来の構造および方法についてのこれらおよび他の問題
は、本発明の詳細な説明および添付図面に照らして明ら
かとなろう。
【0012】関連文献 明細書内で、参照番号を含む鍵カッコにより示される以
下の文献は、本発明の背景として関連がある、または、
本発明の1以上の方法の手順内に実行される既知の手続
きの記述に関係している。これらは、[1] Agrawal et a
l., Proc.Of Vldb, 1995; [2] Agrawal et al., "High-
dimensional Similarity Joins" in Proc. Of The 13th
Int'l Conference on Data Engineering; 1997; [3]Al
sabti and Ranka, in Proc. Of Int'l Conference on H
igh Performance Computing Hipc'97, 1997; [4] Alsab
ti et al., in Proc. Of VLDB'97 Conference, 1997;
[5]Arya et al., IEEE Data Engineering Bulletin, 19
93, 16(1):38-42; [6] Beckmann et al., In Proc. Of
ACM SIGMOD, 1990, 332-331; [7] Bently, Communicati
on of ACM, 1975, 18(9); [8] Brinkhoff et al., in P
roc. of 1993 ACM SIGMOD Conf. On Management of Dat
a, 1993; [9] Faloutsos et al., in Proc.of ACM SIGM
OD Conf. On Management of Data, 1994; [10] Falouts
os et al, ACM SIGMOD, 1987, 16(3); [11] Jagadish,
in Proc. of the ACM SIGMOD Conference on Managemen
t of Data, 1991; [12] Katayama and Satoh, in Proc.
Of ACM SIGMOD Int'l Conf. On Management of Data,
1997; [13] Kumar et al., Introduction to Parallel
Computing: Design and Analysis of Algorithms, 199
4; [14] Li et Al., in Proc. Of the 12th Int'l Con
f. On Data Engineering,1996; [15] Li et al., Paral
lel Computing, 1993,19(10); [16] Narasimhaluand Ch
ristodoulakis, IEEE Computer, 1991, 24(19):6-8; [1
7] Niblack et al., in SPIE 1993 Int'l Symposium on
Electronic Imaging: Science and Technology, 1993;
[18] Nievergelt et al., ACM Transactions on Datab
ase Systems, 1984, 9(1); [19] Robinson, in Proc. 1
981 ACM SIGMOD Conf. On Management of Data, 1981;
[20] Roussopoulos and Leifker, ACM SIGMOD, 1985, 1
4(4); [21] Toga et Al., Neurosc. Abs., 1990; [22]
Vassiliadis, in Int'l Workshop on Applications of
Artificial Intelligence in Solar Terrestrial Physi
cs, 1993, [23] White and Jain, in Proc. of the 12t
h Int'l Conf. On Data Engineering, 1996; [24] X. L
i, P. Lu, J. Schaeffer, J. Shillington, P. S. Won
g, and H. Shi, in "On the Versatility of Parallel
Sorting by Regular Sampling, in Parallel Computin
g, 19(10):543-550, October 1993; [25]M. Blum et a
l., Time Bounds for Selection, in Journal of Compu
ters andSystems, 7.:4:448-461, 1972, [26] K. Batch
er, Sorting Networks and theirApplications, in Pro
ceedings of the AFIPS Spring Joint Computing Confe
rence, Vol. 32, 1968; and [27] V. Kumar, A. Grama,
A. Gupta. and G. Karypis, Introduction to Paralle
l Computing: Design and Analysis of Algorithms. Th
e Benjamin/Cummings 20 publishing Company, Inc., 1
994.
【0013】
【課題を解決するための手段】効率的に多次元オブジェ
クトをジョインして、データベースポイントのような、
類似のオブジェクトまたは項目の対(pairs)を生成する
ために、ε−k−d−Bツリーデータベース構造を含む
類似ジョイン方法および構造の並列実装方式が提供され
る。本発明の構造および方法は、最適なワーク負荷均衡
を得るための最適なリーフノードサイズ(leaf node siz
e)を同定するワークまたはコストモデルを提供する。リ
ーフノードサイズは、従来のように固定された一定のも
のではなく動的に決定しうる。後者の負荷均衡方法のた
めの重みは、最適なリーフサイズを決定するために用い
られるのと同じコストモデルに基づいている。
【0014】本発明は、1つの観点において、複数の相
互接続された要素計算機(処理要素(processing eleme
nt))と、複数のオブジェクトからなるオブジェクトセ
ットを保存するメモリとを有する計算システムにおいて
実行するための所定のまたはユーザが定めた類似基準(s
imilarity criteria)に基づいて、オブジェクトをジョ
インする方法を提供する。この方法は、オブジェクトに
対するリフェレンス(references)をメモリ内に保存し、
オブジェクトを要素計算機に対応づけるためにオブジェ
クトセットを複数のサブパーティションに分割し、各特
定の要素計算機内で、特定の要素計算機に対応付けられ
たオブジェクトを組織化するオブジェクトツリー構造を
構築し、予め定めた第1のルールに基づいて各特定の要
素計算機毎に隣接する要素計算機との間の交差領域(int
ersecting regions)を決定し、予め定めた第2のルール
に基づいて各特定の要素計算機と隣接要素計算機との間
でオブジェクトを交換し、予め定めたオブジェクト類似
基準に基づいてオブジェクトをジョインすることによ
り、多次元オブジェクトのジョインされたグループ(jo
ined groups)を生成する。
【0015】本発明は、他の観点において、コンピュー
タシステムとともに用いるコンピュータ読取可能な記憶
媒体を提供する。このシステムは、複数のプロセッサ
と、ユーザからのコマンドを受けるオプションのユーザ
インタフェースと、複数のオブジェクトおよび複数の実
行可能な手続きを保存する記憶媒体とを有する。各手続
きは、所望の類似特性を有する複数のオブジェクトのう
ちの特定のものを同定するために、ユーザからの問い合
わせ入力またはルールに従って複数のオブジェクトを検
索するようコンピュータに指示する少なくとも1個の実
行可能な命令を有し、複数の命令は、複数のオブジェク
トのうちの幾つかをメモリに保存するようコンピュータ
に指示する命令と、オブジェクトを複数のサブパーティ
ションに分割して複数のオブジェクトの幾つかを複数の
プロセッサに対応づけるようコンピュータに指示する命
令と、特定のプロセッサに対応づけられた複数のオブジ
ェクトの幾つかを組織化するローカルε−k−d−Bオ
ブジェクトツリー構造を構築するようコンピュータに指
示する命令と、隣接プロセッサとの間の、オブジェクト
空間の交差領域を決定するようコンピュータに指示する
命令と、予め定めたルールに基づいて隣接プロセッサと
オブジェクトを交換するようコンピュータに指示する命
令(ここに隣接プロセッサはある所定の距離以内にある
オブジェクトに関連づけられたプロセッサである)と、
多次元オブジェクトのジョインされたグループを生成す
るために、予め定めたオブジェクト類似基準に基づいて
オブジェクトをジョインするようコンピュータに指示す
る命令とを有する。オブジェクトは、階層的にオブジェ
クトを表すデータ構造を構成し、データベース要素およ
びインデックスの配列(array)と、これらの要素および
インデックスに対応づけられたポインタ(pointers)とを
有する。さらに、データベース要素の内容をアクセスす
るためにインデックスのアレイおよびポインタを用い
て、データ構造を横断(traverse)する命令を有する手続
きと、多次元オブジェクトのジョインされたグループを
表すためにメモリ内にデータ構造を確立する手続きを備
える。
【0016】更に他の観点において、本発明は、複数の
要素計算機(各々、CPUの中央要素計算機のような命
令を実行するプロセッサと、この要素計算機に接続され
オブジェクトおよび複数の手続きを保存する対応するメ
モリとを有する)と、複数のオブジェクトを保存するス
トレージと、要素計算機および対応するメモリをストレ
ージに接続する相互接続ネットワークとを備えたコンピ
ュータシステムを提供する。複数の手続きは、オブジェ
クトに対して多次元類似ジョイン操作を実行し、ジョイ
ンされた多次元オブジェクトの対を生成する手続きを有
する。システムは、さらに、このジョインされた多次元
オブジェクトの対を生成するために多次元類似ジョイン
操作を行う手続きを実行する手続き実行手段を備える。
【0017】更に他の観点において、本発明は、各々、
中央処理ユニットおよびメモリを有する多数の要素計算
機を備え、これらの要素計算機が相互接続ネットワーク
により接続されたコンピュータシステムにおいて、ユー
ザが定めた類似特性を有する類似項目を同定するために
高次元データ項目のデータベースの並列問い合わせを高
速かつ効率的に実行し、当該類似項目をデータ項目をジ
ョインして出力セットを構成する方法を提供する。この
方法は、ε−k−d−Bツリー構造のデータベースが、
ポイントの個数に基づくのみではなく負荷均衡重み付け
操作に基づいて多数の要素計算機に対して分割され、そ
の重みが、ツリー横断コスト(tree traversal cost)お
よびツリー計算コスト(tree computation cost)の組み
合わせに基づいて計算されることを特徴とする。
【0018】他の観点において、本発明は、d次元の項
目のデータセットからなるデータベースを複数の要素計
算機および各要素計算機に対応づけられたメモリに対し
て分割する重み付け分位方法(weighted quantiling met
hod)を提供する。この方法は、データセット全体からサ
イズsのサンプルデータセット(sampled data set)を生
成し、分位分割手続き(quantile partitioning procedu
re)を用いて当該サンプルデータセットを分割し、各要
素計算機内で、パーティション内の全データポイントが
ツリー内に配置されるまで、ポイント毎に、各分割され
たサンプルデータセットに関連した各データポイントに
対してローカルε−k−d−Bツリーを構築し、要素計
算機間で交差領域を同定・交換し、実際にデータのジョ
インを行うことなくデータセットのジョインに必要とさ
れるであろうジョインテスト(join tests)の回数を計算
し、この計算されたジョインテストの回数に基づいて各
ポイント毎にデータポイント重み値を計算し、各要素計
算機の重み付け領域境界(weighted region boundaries)
を決定するために各パーティション内のポイントの個数
に加えてポイントの特定のものに関するワーク負荷を考
慮するために重み値を用いてデータセットの重み付け分
割を実行し、この重み付けされた分割により同定された
領域境界を用いてデータセット全体を再分配するステッ
プを有する。
【0019】種々の他の拡張および選択的な特徴は、添
付の詳細な説明および図面にも記載されている。
【0020】
【発明の実施の形態】本発明の構造および方法の概略 本発明の構造および方法は多次元類似ジョインに向けら
れ、これは、並列類似ジョイン、および類似ジョイン手
続き全体に適用可能な幾つかの本発明のサブ手続きを含
む。多次元類似ジョインは、互いに、ある種の予め定め
られた微小距離ε内にある(多次元空間内の)ポイント
の対を発見するものである。類似ジョインはまた、デー
タマイニングの観点からも言及される。マルチメディア
および時系列のような領域でのデータベースは高次元数
を必要とする場合がある。この点から、Rツリー(およ
びその変形)、ε−k−d−B(またはε−kdB)ツ
リーは、グリッドファイル、k−d−Bツリーのような
従来のデータ構造に比べて次元数が増加するに伴って、
より良く適合するデータ構造である。
【0021】本発明の構造および方法は、ε−k−d−
Bツリーのためのコストモデルを提供し、動的に決定で
きるε−k−d−Bツリーリーフサイズを最適化するよ
う当該コストモデルを具現化する。この新たな動的に決
定されたリーフサイズを用いるこの具現例は、概して、
一定または固定のリーフサイズを用いる方法より良好で
ある。データベースオブジェクトを受け入れるためのε
−k−d−Bツリーを具現化し、出力データベースオブ
ジェクトまたはイベントの新たなかつ異なるセットを生
成するための新規な並列構造および手続きが記載され
る。従来の既知の手続きより優れた、重み付けされた等
深(equi-depth)ヒストグラムに基づく負荷均等化法も記
載される。重み付けされた手続きのための重みは、少な
くとも一部において、最適なリーフサイズを決定するた
めに用いられるのと同じコストモデルに基づいている。
【0022】本発明の構造および方法は、ε−k−d−
Bツリーを用いて類似ジョインを実行するコストモデル
を提供する。このコストモデルは、リーフサイズしきい
値を動的に決定するために用いられる。このしきい値は
類似ジョイン操作のコストに大きな影響を与えるので、
適切なしきい値の動的な決定はきわめて好都合である。
均一なガウス分布を有するデータセットに対して行われ
た有効性テストでは、本発明のモデルは効果的かつ効率
的であることが示された。このコストモデルは、多数の
プロセッサ間の良好な負荷均衡化を行うために合理的な
コストモデルが必要とされる並列類似ジョイン手続きに
おいて特に有用である。
【0023】従来の、類似ジョインの並列化には、ツリ
ーの異なる部分に必要とされるワークの量(例えばコス
ト)にスキュー(skew)すなわち相違があったため、問題
があった。ツリーの異なる部分に必要なワークの量は超
リニア(super-linear)関数(例えばxa、a≧1)や、
サブリニア関数(例えば、xa、a≦1)でありうる
が、典型的には、関連づけられたデータセットポイント
の個数の2次関数以下(例えば、x2以下)であろう。
【0024】第1の実施形態(PQ手続)は、従来例に
対して多くの利点を有するが、本発明の構造および方法
の第2の実施形態はさらに、この問題の並列化のための
新規なサンプリング・ベースの重み付けポイントスキー
ム(PW手続)を提供する。これらの2つの実施形態は
さらに、以下で詳述する。この本発明のPWスキーム
は、後述されるコストモデルに基づいて必要とされるワ
ーク量を推定するためにデータセット全体のサブセット
を用いる。本発明のPWスキームと、異なる個数のプロ
セッサに等数のポイントを割り当てることに基づく他の
スキームとを比較すると、本発明のPWスキームは、デ
ータスキューがある場合に、たとえ16個のプロセッサ
の例示システムにおいても、遥かに良好な性能を示す。
プロセッサ数が増加するに伴って、負荷バランスの問題
が飛躍的に困難となるので、サンプルベースの重み付け
PW手続と他の手続の間には、さらに大きな改善が見ら
れるであろう。
【0025】類似ジョインを実行するための構造 図1を参照して、本発明の並列類似ジョイン手続および
そのサブ手続を実行するための処理システム構造70の
例示的実施形態を説明する。複数の要素計算機71(例
えば、71a,71b,...,71n)は、本発明の
処理システム70内に設けられ、各々、プロセッサすな
わちCPU72、メモリ73、メモリコントローラ7
7、オプションの1個または複数の入出力コントローラ
74、およびインタフェース75を有する。インタフェ
ース75は、複数の要素計算機71を相互接続構造79
に対して、よってお互いに対して接続し、さらに、1個
または複数の2次メモリ76およびオプションの3次メ
モリ85に接続される。3次メモリは、(例えば、類似
ジョインを実行する前に全データベースを保存するため
に)例えば、幾つかまたは全要素計算機により共有され
る。要素計算機71は、複数のプロセッサを内蔵する単
一のコンピュータのような共通の装置として構成・配置
されてもよい。または、要素計算機71は、異なる物理
位置にある別個の計算機内等に別個に配置することもで
きる。あるいは、要素計算機71は、このような共通配
置および個別配置の組合せにより構成してもよい。同様
に、相互接続構造は、単一のマルチプロセッサコンピュ
ータ内のシステムまたは他のバス接続であっても、ある
いは、複数の要素計算機71を接続するための他のネッ
トワーク接続であってもよい。単一の装置(コンピュー
タ)が全プロセッサを内蔵する場合、各々はそれに対応
した専用メモリ73を有するが、ディスプレイ/インタ
フェース78のような他の部品は共有することができ
る。種々のバスおよびネットワーク相互接続構造が従来
知られており、これ以上の説明は省略する。
【0026】メインメモリ73は、典型的には、ランダ
ムアクセスメモリ(RAM)と呼ばれることが多いソリ
ッドステートメモリであり、通常、中央処理ユニット
(CPU)と同じ”マザーボード”に搭載される高速メ
モリである。2次メモリ76は、同じまたは他のメモリ
であり、典型的には、例えば磁気ディスクドライブ、光
ディスクドライブ、CD−ROM、磁気テープ、その他
の従来のデータ記憶メモリデバイスのようなより大きな
メモリ容量を提供するものである。メインメモリすなわ
ち主メモリは、後述する種々のソート、ジョイン、ツリ
ー組立、および他の計算処理操作の期間中、データポイ
ントを保持するとともに、本発明の方法を実行するため
の実行可能な手続、および各プロセッサの基本動作を制
御するためのオペレーティングシステムを保持する。
【0027】2次メモリ76は、データベースのデータ
ポイント、存在しうる中間的なデータベースの問い合わ
せまたは組立結果を含む中間的な計算結果、および出力
ポイント、オブジェクトまたは結果を記憶する。2次メ
モリ76は実行前後の他の手続を保存することもでき
る。但し、実行中の手続またはその一部は通常メインメ
モリ73上に位置する。2次メモリは、典型的には、各
要素計算機内に設けられ、相互接続された要素計算機に
個別に自由に(at large)接続される。
【0028】次に、図2に示した構造について、他の例
示的な処理構造90を説明する。これは、要素計算機9
1の個数に応じてリニアに(またはほぼリニアに)変化
する(scales)帯域(BW)を有する相互接続ネットワー
ク92を介して接続された複数の要素計算機91(例え
ば91a,...91h)を有する。このようなBWス
ケーリング相互接続ネットワークは、例えば、4個の要
素計算機91と、隣接する要素計算機91間に伸びた各
要素計算機91間の相互接続とからなるハイパーキュー
ブ(hypercubes)を有する。要素計算機91は、前述した
要素計算機71と同じ内部構造、要素、および特性を有
する。但し、インタフェース75の構造は、第2の実施
形態に適用可能な異なる相互接続構造によって異なって
もよい。これらの相違点は当業界において既知であり、
これ以上詳述はしない。
【0029】他のハイパーキューブ構造は、各プロセッ
サから隣接する3個のプロセッサ要素へ伸びるバスのよ
うな3ネットワーク接続を有する8個の要素計算機を有
する。勿論、このような構造は、より多くの要素計算機
および相互接続へ拡張することができる。相互接続構造
の他の型は、いわゆる”クロスバー”相互接続により要
素計算機を接続するものである。これらの後者の帯域ス
ケーリング相互接続構成またはネットワークは、本発明
の類似ジョインプロセッサ構造に好適である。というの
は、これらの構成は、並列類似ジョイン手続の速度およ
び操作性を犠牲にすることなく、データまたは信号オブ
ジェクトのより大きなセットを収容するよう要素計算機
の個数を自由に拡張することを可能とするからである。
【0030】次に、メモリ内のデータ構造を構成する手
続のリストを含む図3に示したメモリ構造について、要
素計算機71内のメモリ73の例示的実施形態を説明す
る。この手続のリストは主処理手続を示しているが、こ
れらの手続の一部を構成する他のサブ手続は本明細書の
本体内で説明する。
【0031】並列類似ジョインの概要 ここで、図4に示したフローチャートを参照して、並列
類似ジョイン手続(Parallel Similarity Join Procedur
e)100の実施形態を説明する。典型的には、ある種の
物理的、人文的、医学的、化学的、生物学的、または抽
象的システムの従来の収集、検出、サンプリングまたは
分析、イベントの収集等から生成された履歴(historica
l)もしくはアーカイブ(archival)データベース構造のデ
ータのセットが存在する。ある例では、類似ジョインは
この履歴データベースのジョインメンバー(joining mem
bers)を含み、これらのメンバーの検索(retrieval)(ス
テップ102)が類似ジョイン手続(ステップ100)
の初期段階となるが、これは他の例ではオプションのス
テップとなる。同様に、第2のオプションのステップ
は、1個以上の物理的、人文的、医学的、化学的、生物
学的または抽象的システムの測定、イベントの収集等、
および、そのようなイベントの収集のメンバーを類似ジ
ョイン手続への現在の入力とすること(ステップ10
3)を含みうる。どのような場合でも、多次元データ/
オブジェクト/信号等のある種のセットは、本発明の類
似ジョイン手続に対して与えられ、その入力として受け
入れられうる(ステップ105)。
【0032】本発明の類似ジョイン手続(ステップ10
6)は、オプションのデータセット分割タイプ選択手続
(ステップ110)を含んでいる。この手続は、分位分
割手続(Quantile Partioning Procedure)(ステップ1
11)、推定分位分割手続(Estimated Quantile Partit
ioning (PQEST) Procedure)(ステップ112)または
重み付け分割手続(Weighted Partitioning (PW) Proced
ure)(ステップ113)(これは種々の分位分割を用い
る)の一つを選択する。所望の分割手続(例えばステッ
プ111、112、または113)が選択されている、
または前もって分かっており、かつ、当該選択がすべて
のタイプを含む必要がない場合、オプションの選択手続
(optional Selection Procedure)(ステップ110)は
不要である。
【0033】一旦、メモリ内で複数のプロセッサに対し
てデータベースが分割され、少なくとも2つのプロセッ
サに(および各プロセッサにおいて同様に)ローカルデ
ータベースが配置されたならば、各プロセッサはローカ
ルε−kdBツリーを組み立てる(ステップ120)。
複数のプロセッサにおいて並列に組み立てられたこれら
のツリーの組立に続いて交差領域手続(Intersected Reg
ions Procedure)(ステップ130)に移行し、ここ
で、各プロセッサは、データを交換または共有する必要
がある他のプロセッサを決定または同定する。データの
交換は、典型的には、各要素計算機がその内部利用のた
めのコピーを持つように、ポイントを複写または複製す
ることにより行われる。最後に、類似ジョイン手続(ス
テップ140)が実行され、1個または複数個の多次元
オブジェクト対が生成される(ステップ150)。
【0034】これらの多次元データベースオブジェクト
対は、メモリ(例えばRAMおよび/またはディスク)
内に位置し、判定分析に利用され、物理システムを制御
し、他のデータベースを修正し、表示画面上に表示さ
れ、警告,売買指標および他の任意の使用形態として機
能しうる。図4に示した手続の例示的実施形態では、類
似ジョイン出力データベースは、例えば、測定された患
者の体温、心拍数、血液の化学的精密検査(ステップ1
03)、および、その患者または他の患者の先の履歴処
置データ(ステップ102)に基づく薬品の処方を含
む、診断および処置の決定および制御を行うのに利用す
るものとして例示的に示されている。この場合、類似ジ
ョインは、一種の人工知能制御エージェントとして機能
する。勿論、これは一つの応用例にすぎない。他の応用
例としては、株、ボンド、商品の取引における売買指示
の実時間もしくは疑似実時間の形成(formation)、配置
(placement)および実行(execution)が挙げられ、また、
ジョインされたオブジェクトはコンピュータモニタのよ
うな表示画面装置または紙上に表示されうる。
【0035】ε−k−d−Bツリーおよび順次類似ジョ
イン(Sequential Similarity Join)を説明した後、本発
明の類似ジョイン構造および方法の全体がより良く理解
できるように、本発明の方法全体を構成する手続および
サブ手続の各々についてより詳細に説明する。
【0036】ε−k−d−Bツリーの組立 このセクションでは、まず、文献[2]の"High-dimens
ional Similarity Join"においてShim等に当初記載され
たようなε−k−d−Bツリーの構成および類似ジョイ
ン手続について概説する。k−d−Bツリーデータ構造
に対するイプシロン(ε)の拡張は、名目上、先行する
データ構造に対して類似ジョインの実行用に最適化され
たデータ構造である。文献[2]の著者により記載され
たε−k−d−Bツリーは、非常に短い組立時間を有
し、これによりツリーの組立時に、類似距離範囲(simil
arity distance limit)εをパラメータとしてε−k−
d−Bツリーが用いることができると称されている。こ
の拡張の以前には、大きなデータベースが関与する場
合、全体のデータベースまたはツリーをメインメモリ内
に同時に保持することはできなかった。しかし、文献
[2]はデータを分割するための2つの手続を記述して
いる。第1の手続は、データを2εチャンク(chunks)に
分割するために1分割次元(one partitioning dimentio
n)を用いて、データを分割する。もし、これらの2εチ
ャンクが大きすぎてメインメモリに適合しない場合に
は、次に、データは第2の手続を用いて4ε2チャンク
に分割される。この場合、各チャンク内のデータポイン
トの個数はよりメインメモリに適合しやすくなる。この
拡張は、ε−k−d−Bツリーに対して組立時間が比較
的小さいことにより現実的となる。文献[2]は順次手
続に関係するのみで、ここに記載の本発明の並列手続の
利点をもたらすものではない。
【0037】次に、例示的なローカルε−k−d−Bツ
リーを示した図5を参照して、ツリーの組立手続の例示
的実施形態を説明する。用語”ローカル”は各要素計算
機内に組み立てられたツリーを指すのに対し、用語”グ
ローバル”とはデータベースおよび関連したデータ構造
を全体として指す。ローカルε−k−d−Bツリー手続
きは、ローカルに、要素計算機71,91を有する各プ
ロセッサ72内でポイントのセットに対して適用され
る。説明の簡略化のために、一般性を損なうことなく、
各次元に沿ったポイントの座標が0と+1(例えば
[0..1])の間の範囲に属するものと仮定する。ル
ートノード21として初期化されたすなわち空のリーフ
ノードからスタートし、次に各ポイントが1個ずつ加え
られる(図11,12も参照)。各ポイントq=
(q1,q2...,qd)について、ルートノード21
から開始して、リーフノードx(例えば22,23,2
4,25,26)に達するまでツリーを横断(traverse)
する。レベルiの内部(内側)ノード(例えば、27,
28)において、もし、qdi/εの天井がjに等しいな
らば、すなわち、もし、↑qdi/ε↑=jならば(ここ
で、qはツリー内に挿入されているポイント、diはツ
リー20のレベルiにおけるツリーを分割するために用
いられる特定のi番目の次元、qdiはdi次元に沿った
ポイントqの成分の値、jはノードxのj番目の子
供)、子供(child)jは横断経路の一部となる。リーフ
ノード内のポイント数がポイントの所定のしきい値数に
達し、かつ、未使用の次元があるとき、リーフノード
は、床[1/ε]子供ノード(floor [1/ε] childnode
s)を持った内部ノードに変換される。表記”↑g↑”
は、”gの天井”を取ることを意味する。ここに、gの
天井とは大きい方の直近の整数(nearest larger intege
r)であり、これらの式中の表示”↓g↓”は”gの床”
を意味する。ここに、”床”とはgより小さい直近の整
数である。例えば、”5.5の天井は6”すなわち”↑
5.5↑”は6である。新たな内部ノードのポイント
は、ある選択された次元に基づいて、その子供ノード内
に挿入される。予め定めたルールに基づいて、ツリーの
各レベルに対して固有の次元が選択される。
【0038】本発明の類似ジョイン手続き100は、ε
−k−d−Bツリーを用いて、あるLp規準について、
お互いにε距離内にあるポイントのすべての対を同定す
る。図5に示すように、このツリーは次のような性質を
有する。すなわち、特定の子供jのポイントは、あるL
p規準についてε距離内にあるポイントのすべての対を
同定するために、それ自身および隣接する兄弟(sibling
s)内のポイントとのみジョインされる必要がある。図5
の例示的ツリー表現において、ノードV26について
は、隣接兄弟U27およびW28のみが、V内の任意の
ポイントのε距離内のポイントを包含することができ
る。このことは、任意のLp距離規準に対して言える。
他のどの兄弟も、V内のポイントのε距離内のポイント
を包含することはできない。
【0039】ε−k−d−Bツリーはいくつかの特徴を
有する。第1に、ツリーを組み立てるコストが比較的小
さいことである。というのは、分割手続き、すなわちリ
ーフノードを取り出し、これを内部ノードに変換し、そ
の後、前のリーフノードからすべてのポイントを当該新
たなリーフノード内に移す手続きが簡単だからである。
第2に、内部ノード(例えば領域境界)内に何ら情報を
保存する必要がないので、空間効率がよい(space effic
ient)。第3に、ε−k−d−Bツリー横断コストが比
較的小さいことである。これは、一つには分割手続きの
簡潔さにより、また一つには空間が非重複領域に分割さ
れるというツリーの特性による。最後に、ツリーの組立
に全次元が利用されない限り、隣接ノードの個数が次元
の数に依存しないことである。後続のセクションには、
本発明の構造および方法を実現するために、これらの特
性が好都合に採用される態様を説明する。
【0040】類似ジョインのための並列分割手続き(ス
テップ106) 多数のプロセッサは、物理的に近接してまたは同じマシ
ン内にあっても、あるいは、遠隔的に配置されてもよ
い。コンピュータアーキテクチャは、何台かのより大型
のプロセッサ(例えば、流通しているインテル社製ペン
ティアムCPU,ペンティアムII CPU、アドバンス
トマイクロデバイセズ社製CPU、またはサイリックス
社製CPU)からなる粗粒子状(coarse grained)であっ
ても、あるいは、1個または複数個のチップ上のより多
くの小型のプロセッサからなる微粒子状(fine grained)
であってもよい。これらの粗粒子状並列マシンは、複数
のプロセッサ間に物理的に分配されるRAMのような主
メモリと、ディスクまたは他のバルクストレージのよう
な2次メモリを有する。2次メモリも、各要素計算機に
関連づけてもよい。ある種のメモリは、複数または多数
のプロセッサ間でグローバルに共有してもよい。プロセ
ッサ間通信は、典型的には、メッセージの伝達またはメ
モリの共有アドレスを通して行える。このようなマシン
上での本発明の方法の並列化について以下に説明する。
しかし、本発明による方法は、図1および図2の実施形
態で説明したようなこれらの例示的な相互接続並列マシ
ン上のみでの具現化または動作に限定されるものではな
い、ということが当業者には理解されよう。
【0041】このセクションにおいては、本発明の類似
ジョイン手続きの並列化方法を説明する。並列化によ
り、類似ジョイン(または類似ジョインの少なくとも一
部)を同時に複数のプロセッサ上で並列に実行する。
【0042】第1の実施形態は、データセット全体を用
いてその空間をP個のバラバラの領域に分割し、領域内
のポイントの総数を負荷規準として用いる分割分位手続
き(Partition Quantiling: PQ)の実施形態である。
第2の実施形態は並列重み付け(PW)実施形態であ
り、要求されるジョインテストの(推定された)回数を
負荷規準として用いることにより、例えば、傾斜した(s
kewed)分布のような非均等分布を有するデータセットに
対する負荷バランスを改善するものである。このPW手
続きは、その中にPQ手続きの変形したものを含む。ど
の分割手続きを用いるかに関係なく、これらの類似ジョ
イン実施形態の各々は、4つの機能または手続き段階
(フェーズ)を有する。
【0043】これらの4つのフェーズは、図4のフロー
チャートに示されており、”ステップ”への言及は図中
のステップ参照番号を参照する。フェーズ1は、プロセ
ッサ間でのデータポイントの分割(ステップ106)に
関し、PQ手続き(ステップ111)と、PQEST手
続き(ステップ112)と、PW手続き(ステップ11
3)の選択(ステップ110)を含む。フェーズ2は、
ローカルデータポイントを用いたローカルε−k−d−
Bツリーの組立に関する(ステップ120)。フェーズ
3は、ローカルジョイン処理に必要な非ローカル領域の
検索に関し、領域フェーズとも呼ばれる(ステップ13
0)。フェーズ4は、フェーズ3で受け取ったローカル
および非ローカルポイントを用いたローカルデータポイ
ントのジョインの実行に関し、ジョインフェーズとも呼
ばれる(ステップ140)。これらの手続きフェーズに
ついて、以下の段落でさらに詳細に説明する。まず、分
割手続きの概要を説明する。
【0044】データセットDSの並列類似ジョインは、
第1の分割フェーズで始まり(ステップ105)、PQ
手続き(ステップ111)、PQEST手続き(ステッ
プ112)、またはPW手続き(ステップ113)を選
択するために選択手続き(ステップ110)を用いて、
空間をバラバラな領域に分割する。これらのバラバラな
分割領域は並列ε−k−d−Bツリーのグローバル部分
を表す。理想的には、これらの領域は、プロセッサ間の
負荷が均衡する(すなわち、一般的には、各プロセッサ
が、比較動作および計算動作を含む等しいワーク負荷を
持つことに相当する同じ負荷を有する)ようにプロセッ
サに割り当てられるべきである。
【0045】PQ手続きでは、ワーク負荷均衡化の試み
は各プロセッサに(ほぼ)等しい個数のポイントを割り
当てることにより行われる。均等に分配されたデータセ
ットについては、ポイント数に基づく計算負荷の近似が
合理的な近似であるが、スキューを有するデータセット
のような非均等分配されたデータセットについては、ポ
イント数に基づく分割法は、たとえそれが本発明のPW
手続きの利点を有するとしても、本発明の重み付け分割
(PW)手続きに比べれば最適とは言えない。
【0046】本発明のPW手続きでは、計算負荷均衡化
は、重み値を各ポイントに割り当てるようにポイントの
分配を考慮することで行われる。概して、より高い計算
負荷ポイントを担当するプロセッサには、低い計算負荷
ポイントが割り当てられたプロセッサに比べて、より少
ないポイントが割り当てられるように、これらの重みは
データセットが分割される仕方に影響を与える。また、
PW手続きはより効率的なので、全体の完了時間を増加
させることなく一層良好な負荷均衡化を達成するため
に、より正確であるが、おそらく、より時間のかかる分
位手続きを用いることができる。
【0047】PQEST手続きは、負荷規準としてポイ
ント数を用いるが、より高速な具現例であり、セット全
体の代わりにポイントのサンプルセットに基づいて分割
法を決定し、次いで、1回だけポイントを再分配する。
いずれにせよ、厳密なまたは絶対的な均衡化は必要な
い。(多数のプロセッサ間の均衡化を達成するためにP
Q,PQEST,PQのいずれかの選択の方法は以下に
説明する。)ローカルε−k−d−Bツリーは、第2の
フェーズ(ステップ120)で組み立てられるものであ
り、PQ,PQESTまたはPW分割された空間につい
てと同様である。各プロセッサは、通常、フェーズIII
(ステップ130)において、類似ジョイン計算を行う
ために非ローカルデータを必要とするので、各プロセッ
サは、自身がデータポイントを交換する必要がある他の
プロセッサを決定または同定する。各プロセッサはま
た、自身が通信する必要のあるサブ領域を計算する。こ
のデータ交換に関連する計算には、(領域フェーズに関
連して説明された)交差領域リストを構成するために用
いられるレベルリスト(Level list)およびシンプルレベ
ルリスト(SimpleLevel list)のためのデータ構造を含む
他のデータ構造が必要となりうる。類似ジョイン手続き
(ステップ140)は、ローカルツリーに対して、およ
び非ローカル領域を有するツリーに対して実行され、ε
距離内のすべてのポイント対が得られる。
【0048】類似ジョイン計算は、好ましくは、重複し
たポイント対、例えば、対(a,b)および対(b,
a)は生成されないように行われる。これらの対は、そ
の対内のポイントの順序に関係なく同じ情報を含むもの
だからである。本発明の並列類似ジョインの実行の仕方
について、以下のセクションでより詳細に説明する。し
かし、好ましくは効果的な類似ジョイン並列化のための
注意(アテンション)を受けるいくつかのエリアをまず
同定する。すなわち、(a)負荷バランスをとり、か
つ、プロセッサ間の通信を最小化するためのプロセッサ
間のデータポイントの分配、(b)必要な通信の発生、
および(c)aおよびbが異なるプロセッサに属すよう
な潜在的な結果ポイント(a,b)について”a”を所
有するプロセッサ上、または”b”を所有するプロセッ
サ上のいずれでも計算を実行可能である。スキューを有
するデータセットについては、ローカルデータポイント
のみを必要とする計算の均衡がとれていたとしても、相
当の負荷不均衡が発生しうる。(aもbも所有しないプ
ロセッサ上でこの計算を実行することは可能であるが、
これは、負荷バランスに大きな影響を与えることなく第
3の新たなプロセッサとの余分なプロセッサ間通信を発
生させるので、あまり好ましくない。
【0049】データ分割手続き 次に図6を参照して、P個のプロセッサ間に割り当てら
れたn個のd次元ポイントが存在するとし、プロセッサ
間にデータを分割する本発明の方法の例示的実施形態を
説明する。図6(a)はツリーのグローバル部分の分割
の仕方を示し、図6(b)はツリーのグローバル部分と
ローカルε−k−d−Bツリーとの関係を示す。
【0050】図6に示すように、ツリーのグローバル部
分50は、ポイントのバラバラなサブセット51a,5
1b,...,51pを各プロセッサに割り当てること
により組み立てられる。ここに、”PX”はプロセッサ
に対応し、”X”はその領域内のポイントが割り当てら
れたプロセッサ番号である(例えば、P1はプロセッサ
要素1により処理される領域を示す)。ポイントの各サ
ブセット51は、データベース空間内の1つの領域に対
応する。プロセッサに対してこの分配を行うには、空間
がP個の領域に分割される。これらのP個の領域の各々
は、固有のプロセッサに割り当てられる。その結果、
(1)ある種の負荷均衡化規準に基づいてプロセッサ間
の負荷バランスが達成され、(2)後続のフェーズ(フ
ェーズII,III, IV)で必要とされるプロセッサ間の通信
量が最小化されるようにデータのローカル性(data loca
lity)が保存される。データのローカル性の保存とは、
マシン間のデータの交換を最小限とすることができるよ
うに、データアクセスが必要となったときに特定のマシ
ンにデータを維持しておこうとすることである。
【0051】ワーク(負荷均衡化の観点を含む)を最小
化するとともに、プロセッサ間通信(データローカル性
の観点)を最小化することが望ましい。全体の所要時間
は、いずれか特定のプロセッサの最大計算時間で決ま
る。このトータル時間は、負荷均衡化のための時間と、
この負荷均衡化分配/分割に基づく計算のための残りの
時間との和である。したがって、負荷均衡化のための時
間を増加させることは、それが正当にトータル時間を短
縮させるという条件付きで、正当化される。現実的に
は、負荷均衡化は妥当な程度または実質的な程度で足
り、P個のプロセッサ間の完全な均衡化までは要求され
ない。負荷均衡化の程度は、通常、データベースおよび
問題の事例に応じて変わる。たとえ、プロセッサ負荷が
5%から10%、20%、50%の範囲内またはそれ以
上に変化したとしても、本発明の方法論はなお従来方法
に比べて有利であり得る。負荷変動が100%またはそ
れ以上であっても許容しうる。最終目標は、全体の所要
時間が最小化されることであり、プロセッサ間の負荷変
動が小さいことを望むとと同時に、負荷均衡化の試行に
過大な時間を要さないことを望むものである。図6に示
したように、プロセッサP3に対応づけられた領域は対
応するローカルε−k−d−Bツリー53を有する。こ
のツリーのグローバル部分の他の各領域についても同様
である。ε−k−d−Bツリー53の構造については、
図5で既に説明した。
【0052】重み付けなしの分位データ分割(PQ)手
続き プロセッサあたりのポイント数が主な負荷均衡化規準で
ある分位(quantiling)に基づく分割手続きの高レベルの
説明を、図7のフローチャートに従って行う。図7は分
位に基づく分割(Partitioning based on Quantiling:P
Q)手続き111を示す。個の手続きは、データベース
全体を用いて空間をp個のバラバラの領域に分割する。
このPQ手続きは、空間の分割にD個の分割次元(D≧
1)を用いる。大文字の”D”はプロセッサ間のデータ
の分割に利用される次元の総数を表し、小文字の”d”
はデータセット内のポイントの総次元数(total dimenti
onality)を表す(D≦d)。なお、diはd個の次元の
i番目の次元であることを想起されたい。
【0053】例示的実施形態では、すべての分割次元D
において、z個のヒストグラム箱を有する等深度ヒスト
グラムが生成される。これは、次元の個数Dに対して再
帰的に実行され、ツリー内のノードの各々に対してz個
の箱(bins)を生成する。まず、P個のプロセッサがプ
ロセッサのz個のサブセットに割り当てられる。ここ
に、各サブセットは1個またはそれ以上のプロセッサを
含みうる。次に、データが検査され、z個のデータ部分
に分割される。このz個のデータサブセットの各々は、
次いで、プロセッサのz個のサブセットに対して1対1
に割り当てられる。この手続きは、次の次元で再帰的に
繰り返され、D個の全次元に対してこれが実行される。
同じレベルでは、すべての分割部分に対して同じ次元が
用いられるが、異なるレベルでは分割部分に対して異な
る次元を用いてもよい。
【0054】等深度ヒストグラムは分位手続きを用いて
生成することができる。その既知の1つは、ここでは、
ディスク常駐データに対する高精度推定分位のためのワ
ンパスアルゴリズム(One Pass Algorithm for Accurate
ly Estimating Quantiles for Disk-Resident Data: OP
AQ)と呼ぶ。これは、文献[4]においてAlsabti等によ
り提案されたものであり、順序づけられたデータ値の列
のφ分位数(φ-quantile)がランクφ×nの要素である
(ここにnは値の総個数である)。次に、本発明のPQ
手続きの理解の助けとなるように、文献[4]に記載さ
れたAlsabtiのディスク常駐データに対する高精度推定
分位のためのワンパスアルゴリズム(OPAQ)につい
て説明する。順序づけられたデータ値の列のφ分位数は
ランクφ×nの要素(nは値の総個数)であり、データ
セットの中央値(median)は0.5分位数であることを想
起されたい。
【0055】OPAQは、大データセットに対するφ分
位数(φ=1/h,2/h,...,(h−1)/h)
を推定するための手続き(ここに、hは分位数の個数)
であり、大データセットは、そのデータサイズがメモリ
のサイズより大きくデータがディスク常駐となるような
データセットを含む。さらに、OPAQは、次のような
特徴を有する。すなわち、(a)データに対して1回の
パスのみを必要とする、(b)決定論的(deterministi
c)である、(c)φ分位数の真の値(true value)の厳密
な下限および上限(tight lower and upper bounds)を生
成する、(d)データ分配の演繹的な知識を必要としな
い、(e)変倍可能な並列計算式(scalable parallel f
ormulation)を有する、(f)第1の分位数を越える各
追加の分位数を推定するための追加的な時間および空間
の複雑さが分位数当たり一定である。
【0056】順次および並列OPAQ手続きの両方が提
供される。まず、φ分位数を推定するための順次OPA
Q手続きについて説明する。以下に用いられる用語は次
のとおりである。メインメモリのサイズ(M)、各ラン
(run)のサイズ(m)、要素の総個数(n)、ランの個
数(r=n/m)、各ランのサンプルのサイズ(s)、
分位数(quantile fraction)(φ、ここにφ∈[0...
1])、分位数のインデックスまたはランク(α=φ×
n)、分位数の値(eα)である。
【0057】OPAQ手続きは、サンプリングフェーズ
と分位数発見フェーズの2つのフェーズからなる。サン
プリングフェーズでは、データセット全体がr個のラン
として入力される。サイズsのサンプルポイントのセッ
トS=[s1,..,ss]が各ラン毎に決定される。ここ
に、i<sに対して、si<=si+1である。r個のサン
プルリストは一緒にマージされ、サイズrsのソートさ
れたサンプルリストを形成する。このソートされたサン
プルリストは、φ分位数の真の値の上下限を推定するた
めに、分位数発見フェーズにおいて用いられる。この結
果の精度は両方のフェーズに依存する。
【0058】サンプルフェーズは、図8により説明す
る。図8は、サンプリングフェーズを詳細に説明するた
めの概略図であり、データセットDのサイズはn、各ラ
ンのサイズはmであり、サンプルポイントは各ランから
導出される。分位数の値(eα)を推定するために、e
α∈[eα l,eα u]で、かつ、インターバル
[eα l,eα u]内の要素の個数が限定されるように、
上限eα uおよび下限eα lが決定される。サンプルは、
正規のサンプリング方法[24]を用いて選択される。
サイズsの1つのサンプルは、相対的なインデックスm
/s,...,s(m/s)の複数の要素からなる。各
サンプルポイントsは、当該サンプルポイントより少な
いか等しい、かつ、前のサンプルポイントより多いか等
しいm/s個のポイントに対応する。これらの要素を表
すためにサンプルポイントの”サブラン(sub-run)”と
いう用語を用いる。
【0059】インデックスkのサンプルポイントを発見
する問題は、与えられたラン内のk番目に小さい要素を
発見することと等価である。あるデータのセット中のk
番目に小さい要素を発見する問題は、”選択”問題とし
て知られている。選択問題を解くためには多くの手続き
が提案されている。これらの手続きのあるものは決定論
的であり、また他のものは確率論的であり、その詳細は
文献[4]に記載されている。
【0060】s個のサンプルポイントは次のようにして
見出される。(sおよびmは、2のべき乗であるとす
る。そうでなければ、手続きをわずかに変更して同じ複
雑さを容易に維持することができる。)まず、m個の要
素の中央値を見つけ、そのリストを2つの等しい部分に
分割する。次に、新たな2つのサブリストのそれぞれの
中央値を見つけ、この操作を、サブリストのサイズがm
/sに達するまで繰り返す。サブリストのサイズは、l
og s回の繰り返しの後、m/sに達する。log
s回の繰り返しの後、各々サイズmのs個のサブリスト
ができあがる。
【0061】サブリストiの最大の要素はi番目のサン
プルポイントであり、これはO(m/s)内で見つける
ことができる。文献[25]の結果を用いれば、O(m
logs)ワーストケースのランニングタイム内にs個のサ
ンプルポイントを見出すことができる。選択の為のラン
ダム化手続きを拡張することにより、O(m log s)の期
待時間およびO(m2)ワーストケース時間内にs個の
サンプルポイントを見出すことができる。この手続き
は、小さい定数を有し、実際的にはきわめて効率的であ
る。r個のサンプルリストを見出した後、これらは共に
マージされ、サイズrsの1つのソートされたサンプル
リストとなる。
【0062】分位数発見フェーズは、このソートされた
サンプルリストを用いて、分位数上下限eα uおよびe
α lを発見することを含む。サンプルポイントを分割す
る際、正規のサンプリング方法を用いた結果、サンプル
ポイントは次のような特性を有することが容易に示され
る。(a)サンプルポイントsiと同じまたは少ない少
なくともim/s要素があり、(b)siより少ない高
々(m/s)−1個の要素を各々が有する高々r−1個
のサブランが存在する。よって、siより少ない要素の
最大個数は式i(m/s)+(r−1)(m/s−1)
により与えられる。これらの特性を用いて、分位数の下
限および上限eα lおよびeα uを決定する。
【0063】ソートされたサンプルのリストをList
をする。ソートされたサンプルのリスト内のi番目の要
素にeα lを割り当てると、次のように表される。
【0064】eα l=List[↓(s/m)α−(r
−1)(1−s/m)↓] 同様に、eα uは、ソートされたサンプルのリスト内の
j番目の要素であり、次のように表される。
【0065】eα u=List[↑(s/m)α↑] 文献[4]は、次のことを示している。(1)真の分位
数と分位数下限(eα l)との間の要素の最大個数はn
/sである。(2)分位数上限(eα u)と真の分位数
との間の要素の最大個数はn/sである。(3)分位数
下限eα lと分位数上限eα uとの間の要素の最大個数は
2(n/s)である。
【0066】この手続きの他の利点は、サンプルフェー
ズが分位フェーズに依存しないことである。同じソート
されたサンプルリストは、他の分位数を見出すために利
用しうる可能性がある。文献[4]は、タイミングにつ
いて考察並びに順次および並列分位手続きの各々の要件
について記載している。
【0067】並列分位(Parallel Quantiling)を、相互
接続ネットワークを介して接続された要素計算機の少数
セット(例えば、2から数千)からなる例示的構造すな
わちマシンアーキテクチャに対して説明する。これらの
粗粒子状並列マシンは、プロセッサ間に物理的に分配さ
れたメモリを有し、プロセッサ間通信はメッセージ伝達
または共有アドレス空間を介して行われる。
【0068】使用する相互接続ネットワークについて特
定の仮定を行うのではなく、計算の2レベルモデルを仮
定する。2レベルモデルは、通信しているプロセッサ間
の距離に関係なく、オフ・プロセッサ・アクセスのため
の一定のコストを仮定する。1つのプロセッサにローカ
ルな単位計算はコストδを有する。プロセッサ間の通信
は立ち上げオーバーヘッドτを有し、データ転送レート
は1/μである。複雑度分析のため、τとμは、リンク
混雑や2ノード間の距離に関係なく一定とした。これに
より、2レベルモデルの使用が可能となり、使用する通
信ネットワークを、プロセッサを接続する仮想クロスバ
ーネットワークとみなせる。この手続きは比較的にアー
キテクチャ非依存であり、他の相互接続ネットワーク上
でも効率的に具現化できる。
【0069】各プロセッサは、データセットからn/p
個の要素が割り当てられるとする。並列手続きも、ま
た、サンプルフェーズと分位フェーズの2つのフェーズ
を有する。プロセッサ当たりのランの数rは、n/pm
に等しい。並列バージョンのサンプルフェーズは、順次
バージョンのサンプルフェーズに極めて類似している。
p個のプロセッサすべてのローカルサンプルリストをマ
ージして1つのグローバルなソート済みサンプルリスト
を作るために、最後に追加ステップが必要となる。p個
のリストをマージするための手続きは、一般に、並列マ
シンの使用している相互接続ネットワーク、マージされ
るべきリストのサイズ、およびプロセッサの個数に依存
する。ビトニック(Bitonic)マージおよびサンプルマー
ジ手続きは使用可能であり、これはビトニック・ソート
[26,27]およびサンプル・ソート[24,27]
の変形である。ビトニック/サンプルソートとビトニッ
ク/サンプルマージの間の唯一の差は、ローカルリスト
が既にソート済みであるため初期のソートステップが必
要ないことである。
【0070】p個のサンプルリストをマージすることに
より、プロセッサiがsrsp...,srsi+rs-1要素を
有するように、サイズprsの、グローバルにソートさ
れたサンプルリストが形成される。手続きの並列バージ
ョンにおける分位フェーズは順次手続きの対応するそれ
と極めて類似している。唯一の差は、トータルのランの
個数である。順次手続きでは、トータルのランの個数は
rであるのに対し、並列手続きにおけるトータルのラン
の個数はrpである。既に説明した式を用いることによ
り、但し、順次の式においてrの代わりにrpを用いる
ことにより、並列手続きにおけるφ分位数の上下限を推
定し、次のような下側および上側の並列境界(lower and
upper parallel bounds)の式に到達する。
【0071】eα l par=List[↓(s/m)α−
(rp−1)(1−s/m)↓] eα u par=List[↑(s/m)α↑] 並列手続きの時間的要件は、次のステップの各々に必要
とされる時間の和である。(a)ローカルにディスクか
らn/p個の要素を読み出し、(b)ローカルにrs個
のサンプルポイントを見出し、(c)ローカルにr個の
サンプルリストをマージし、(d)グローバルにp個の
サンプルリストをマージし、(e)φ分位数の値を推定
する。文献[4]はこれらの複雑性およびタイミング特
性を詳細に記載している。
【0072】OPAQは、データセット全体に対してワ
ンパスで、等深度ヒストグラムの良好な境界近似(good
bounded approximation)を生成する。OPAQ手続き
の特徴は、この手続きが次のことを保証することであ
る。すなわち、各サブ領域は、多くとも(n/z+n/
s)個のポイントを有するとともに、少なくとも(n/
z−n/s)個のポイントを有する。ここに、sはOP
AQ手続きのOPAQサンプルサイズパラメータであ
り、zは箱の個数であり、nはデータセット内のポイン
トの個数である。
【0073】PQ、PQESTおよびPWの適用可能な
例示的手続きとしてOPAQ手続きを説明してきたが、
本発明の方法に関して、他の分位手続きを用いてもよ
い。
【0074】図7のフローチャートに、PQ手続き(図
4のステップ111)の実施形態を模式的に詳細に示
す。データベース空間は複数の非重複領域(サブ領域)
に分割されており、各サブ領域は1または複数のプロセ
ッサを有することを想起されたい。プロセッサの個数は
次のようにして決定される。第1のレベルでは、各サブ
領域内にP/z個のプロセッサが存在するように、プロ
セッサが分割される、すなわち割り当てられる。第2の
レベルでは、P/z2個のプロセッサが存在するように
この処理が行われ、レベルDでP/zD個のプロセッサ
が存在するようになるまでこの処理が繰り返される。
(レベルDでは、サブ領域当たり1個のプロセッサが存
在することに留意されたい。)より一般的には、レベル
Lでは、各サブ領域内にP/zL個のプロセッサが存在
する。
【0075】PQ手続きでは、まず、各サブ領域につい
てi番目の次元を用いて、p(1/D)個の分位数を推定す
る。各サブ領域に適用可能な分位数の推定後、推定され
た分位数の値を用いて、 各サブ領域をp(1/D)個のサブ
パーティションに分割する(ステップ203)。その
後、分位数の値を用いて、 p(1/D)個の新たなサブパー
ティションに対してデータセット(DS)を再分配す
る。サブ領域jに属する各プロセッサが他のサブ領域の
他のプロセッサとほぼ同じ個数のポイントを受領するよ
うに、サブ領域に対してポイントを再分配する。d次元
(q1,q2,...,qd)を有する1つのポイントは
サブ領域jに割り当てられる。ここに、jは次の条件を
満たす最小の値である。その条件は、ポイントqの第1
次元(すなわちq1)がj番目の分位数(Qj)と同じか
それより小さい、すなわちq1≦ Qjとなることである
(空間をプロセッサに対して分割するために第1の次元
1が最初に用いられるとして)。この再分配の後(ス
テップ200b)、現在のi番目の次元がポイント
(D)の最高次元に等しいか否かの比較が行われ、等し
ければ、PQ手続を終了する(ステップ206)。等し
くなければ、 PQ手続(ステップ200b)が、イン
クリメントされたi番目の次元の各新たな領域に適用さ
れる、すなわちPQ(ds,i+1)。(ステップ20
0a,200bは異なるデータに対して実行される同じ
手続を表すことに留意されたい。) PQ手続の各繰り返しの際、選択された未使用の共通次
元を用いて各領域で再帰的(反復的)に同じ処理が実行
される。再帰的または繰り返し処理の後、pi/D個のサ
ブ領域が存在することになる。ここに、各サブ領域は、
動作を実行するためのp(D-i)/D個の関連したプロセッ
サを有する。
【0076】PQ手続(ステップ200)の高レベルな
記述は、次の疑似コード表現(pseudo code representat
ion)で表される。
【0077】 function Partioning (Step 200) for i=1 to D do for each partition do in parallel Estimate the z=p1/D quantiles using the ith dimention in each partition. Redistribute the points using the quantile values. 本発明のPQ手続のコストCはパーティションの次元数
Dに比例する。より多くの次元に沿った分割は、一般
に、非ローカル領域を検索するために交換されるデータ
ポイントの個数を減少させる。しかし、一方でこれは、
各プロセッサが通信する必要があるプロセッサの個数を
増加させるので、通信のコストを増加させるおそれがあ
る。典型的には、Dは、全体の所要時間の最小化のため
の最も現実的なシナリオにおいては、1または2であ
る。しかし、分割次元がポイントの次元数より小さい限
り(すなわちD≦d)、Dは任意に大きくすることがで
き、3,4,5等の値をとりうる。
【0078】空間を分割するために用いられる特定の次
元の選択は、ローカルε−k−d−Bツリーの組立、非
ローカル領域検索およびジョインフェーズの性能にも影
響を与える。有利なことに、人は、スキューの最も小さ
い次元および、それらの間の最小の関係を有する次元を
用いることを好む。また、ポイントのほぼ均等な分配を
有する次元を選択することにより、典型的には、残りの
フェーズのコストを低減させることができる。
【0079】後続の分割に最も効率的な次元を用いるこ
とができるように、次のように、次元に沿ったスキュー
を推定するために分位手続を用いてもよい。繰り返しi
の初めに、すべての未使用の次元に沿った分位数の値、
またはそれらのサブセットを推定し、分位数の値の間の
距離規準を用いて、これらの次元の各々のスキューを推
定する。次に、最小のスキューを有する次元を、疑似コ
ードに示されたような現在の再帰レベルまたは繰り返し
における分割に利用されるべき次元として選択する。あ
る場合には、1つの最適な次元を選択するために2次元
以上に沿って前分割分位数(pre-partitioning quantile
s)を生成することのオーバーヘッドが潜在的な利点より
大きくなり、この場合、全体のプロセスを考慮したとき
には各繰り返しに異なる次元を用いる方法は最適ではな
い。
【0080】これまで説明した分割について、ツリーの
グローバル部分は必ずしもε−k−d−Bツリーの特徴
を有していないことに留意されたい。なぜなら、分割の
実行の際にεを考慮しておらず、むしろ、各パーティシ
ョンはp1/D個のサブパーティションに分割されたにす
ぎない。
【0081】他の実施形態として、グローバル分割の各
次元についてp1/D個のサブ領域を用いる代わりに、可
変数zLのサブ領域を選択するようにしてもよい。 zL
の各レベルLの箱の個数は各レベルに対して異なっても
よく、任意の隣接分位数の値が少なくともεだけ離れる
ような最大の値となるよう、各レベルで選択される。概
して、箱の総数は、各レベルの箱の個数の積であり、次
式で与えられる。
【0082】
【数3】
【0083】例えば、分割の総数がプロセッサの総個数
に一致するように、但し、各レベルのzL箱の個数が異
なるように、各レベルでデータセットを異なる個数のz
個の箱(z-bins)に分割するよう選択してもよい。 PQ
分割手続をzL個のサブ領域で具現すると、グローバル
ツリーがε−k−d−Bツリーの特性を有することを保
証することができ、サブパーティションは2つの隣接す
るサブパーティションとだけジョインされる必要がある
ようにする。各レベルに同じ個数の箱がある場合でも、
隣とだけジョインすればよいが、各箱の幅はεより相当
大きくなりうる。
【0084】PQEST分割手続 例示的なPQ実施形態では、データポイントは、ポイン
トの次元数に応じてp個のプロセッサに対してD回再分
配される。この再分配処理は、比較的多くのプロセッサ
間通信回数を必要とする。データポイントを再分配する
ための繰り返し回数は、本発明の方法の他の特定のPQ
EST実施形態においては単一回の繰り返しに低減する
ことができる。これは、データセットをランダムサンプ
リングすることによりPQ手続の分位処理部分を近似化
することによって行える。PQEST手続の実施形態を
示すフローチャートを図9に示す。このランダムサンプ
リングは、ツリーのグローバル部分を組み立てるため
に、PQ手続の残りの部分で利用される。ツリーのグロ
ーバル部分は、プロセッササブ領域(例えば図6に示し
たようなP1,P2,...,P16)を決定する。プ
ロセッサ領域を決定した後、PQ手続について、データ
ポイントのセット全体がプロセッサに対して1回だけ再
分配される。典型的には、約2%から約10%までのサ
ンプルサイズが適当である。2%より小さい(例えば約
1%)サンプルセットも利用できるが、このような小さ
いサンプルセットは全データセットの代表であるとは全
くいえないであろう。約10%を超える、例えば、10
%から25%のサンプルセットについては、ある種の余
裕の改善がありうるが、より大きなサンプルセットの処
理にかかる追加時間からみてそのような大サイズは正当
なものではないであろう。
【0085】PWデータ分割手続 PW手続は、データセット内のポイントの総個数を負荷
規準として用いる。PQEst手続はPQと同じ負荷規準
を用いるが、データセット全体ではなくサンプルセット
に基づいて分割を決定するので、より効率的である(例
えば、より低いコストを有する)。PQ手続またはPQ
EST手続のいずれの場合も、各プロセッサ負荷規準に
ポイントの個数を用いることは、データセットの分配に
スキューがある場合に負荷バランスの劣化を招来しう
る。これに対し、PW手続という分割手続の他の実施形
態は、負荷規準としてジョインテストの回数を用いる。
類似ジョイン全体の殆どの計算集中部分は一般にジョイ
ンテスト部分なので、より良好な負荷均衡化が達成され
る。
【0086】PW手続は空間をp個の領域に分割する。
その各領域に対応するポイントに関するワークまたはコ
スト(コスト=ジョインテストの回数+横断コストであ
ることを想起されたい)の量がほぼ等しくなるような領
域境界を各領域は有する。与えられた1つのポイントに
関連したワーク負荷の計算には類似ジョイン全体(我々
はこれを並列化しようとしている)を実行する必要があ
る。しかし、最初に、我々はこれを行うために、まず、
そのサンプルのみに対してPQ分割法を用いてサイズs
の小サンプルデータについて(並列に)類似ジョイン計
算を行う。PW分割フェーズの詳細な説明は、全PW手
続(ステップ113)を表した図10のフローチャート
により示されている。
【0087】まず、サイズsのデータセット全体のラン
ダムサンプル(S)を得る(ステップ301)。次に、
ランダムサンプルPQ(S,1)に対してPQ手続(既
に説明済み)を適用する(ステップ111)。ここに、
Sはサンプルデータを表し、1は分割の第1レベルを表
す。分割されたランダムサンプル(PQ(S,1))に
基づいて、ローカルε−k−d−Bツリーが組み立てら
れ(ステップ302)、交差領域が同定されプロセッサ
間で交換される(ステップ303)。次に、ジョインテ
ストの回数を計算するためだけにジョインを実行する
(ステップ304)が、ジョインは実際には行わず、後
述する式W=f(pt)=rd+k3Depthを用いて、
ジョインテストの回数に基づいてポイント重み(W)を
計算する(ステップ305)。一旦、ポイント重みWが
決定されれば、重み付け分割(PW(S,W,1)手続
(ステップ500)が適用される。最後に、先に同定さ
れた領域境界を用いて、複数のプロセッサ間にデータセ
ット全体を1回再分配する。これにより、PW手続を終
了する(ステップ307)。
【0088】次に、図11の例示的なフローチャートを
参照して、ローカルツリー組立手続(ステップ302)
を説明する。まず、空のリーフノードをルートノードと
して初期化し(ステップ302b)、ついで、第1また
は次のポイントqをローカルツリーに追加する(ステッ
プ302c)。すべてのポイントが追加されるまでこれ
を繰り返し、その時点で、ローカルツリー組立すなわち
構築手続が終了する(ステップ302)。図11で簡単
に説明した、ローカルツリーへポイントqを追加する手
続は、次に、図12を参照してより詳細に説明する。ま
ず、リーフノードxに到達するまでローカルツリーを横
断する。レベルiにおいて、次元diを用い、子供ノー
ドjの経路に従う。もし天井[qdi/ε]=jであれ
ば、ポイントqをリーフノードx内に入れる(ステップ
320)。次に、リーフノードx内のポイントの個数を
しきい値ポイント数と比較し(ステップ321)、これ
が予め定めたすなわちプリセットしきい値より大きけれ
ば、当該リーフノードxを、天井[1/ε]子供ノード
を有する内部ノードに変換するとともに(ステップ32
2)、ノードx内の各ポイントを、この新たな内部ノー
ドを有するサブツリーに、そのルートノードとして追加
する(ステップ323)。そうでなければ、この手続を
終了する(ステップ324)。
【0089】繰り返しPW分割手続PW(D,W,i)
内の重み供給部分または手続を、図13のフローチャー
トに示す(ステップ500)。まず、各サブパーティシ
ョンについて並列に次元iに沿ってデータセットDをソ
ートする(ステップ502)。次に、各サブパーティシ
ョンについて並列に、ポイント重み(W)に対して、プ
リフィクス合計(prefix-sum)手続(別の箇所で説明)を
実行する(ステップ503)。次に、各サブパーティシ
ョンについて並列に、領域境界を用いてこのデータセッ
トを複数のプロセッサに対し再分配する。ソート、プリ
フィクス合計計算、および再分配ステップ(ステップ5
02,503,504)の各々は、ツリー深さd以下の
各次元についてそれらが完了したことが比較の結果分か
るまで(ステップ505)、各次元iについて実行され
る。完了した時点で、この重み付け分割は終了する。そ
うでなければ、次元iをインクリメントして(i=i+
1)、各新たなサブパーティション(例えばPW(d
s,w,i+1)について重み付け分割手続を実行する
(ステップ500b)。
【0090】PW手続(ステップ300)の高レベルの
記述は、次のような疑似コード表現によって与えられ
る。
【0091】 Function Partitioning 1 (Step 300) Draw a random sample of size s from all the processors Run the PQ procedure on the sample points Assign wights to the sample points for i = 1 to D do for each partition do in parallel Sort the sample points along dimention i Perform prefix-sum on the point weights Find the region boundaries Redistribute the sample points Redistribute the entire data set using the region boundaries 基本分割モデルに対するこの拡張では、各ポイントにつ
いてのジョインテストの回数を計算するのみで、この処
理中にジョイン出力は何ら生成しない。実行される必要
があるジョインテストの回数は、サンプルツリー内の各
ポイントの重みwを決定するために用いられる。ポイン
トqの重みは、そのポイントの回りの領域内に必要とさ
れるワークに比例すべきである。PW手続の下では、こ
の重み付け情報は、分割およびデータセット全体の再分
配を案内するために用いられる。グローバルツリーは、
データセット全体に基づくのではなく、サンプルポイン
トおよびサンプルポイントに関連づけられた重みのみを
用いて組み立てられる。この手続の第2のステージは、
領域ツリーを用いてプロセッサ間にポイントのフルセッ
トを再分配する。
【0092】ここで、PW手続の第1のステージについ
てより詳細に説明する。PQ手続ではポイントに対して
暗黙的に等しい重みが割り当てられたことを想起された
い。これに対して、PW手続は、次の2つの要因に基づ
いてポイントに重みを割り当てる。(1)各ポイントに
ついて必要なジョインテストの推定された回数、および
(2)各ポイントについてツリーを横断するコスト。正
式には、PW手続は、ポイントに重みを割り当てるため
に次式を用いる。
【0093】 W=f(pt)=rd+k3Depth (6) ここに、Wはポイントの重み、dはデータポイントの次
元数、kは、rD計算(ジョインコストの一種)および
k3Depth計算(横断コストの一種)(これはマシンま
たはハードウェアに依存する)の相対的計算効率に関し
て経験的に定められた正の定数、rはサンプルポイント
ptに対するジョインテストの推定された回数、Dep
thは、データセットの分配が均一であるという仮定の
下のε−k−d−Bツリーの推定された深さである。上
記式内の数値“3”は、各ノードがそれ自身の最大のも
のおよび2つの隣接ノードとジョインするというε−k
−d−Bツリーの特性に対応している。kは、比較演算
対浮動小数点演算におけるマシン毎の変動に基づいて経
験的に決定する。典型的には、kは約1から約3の範囲
内にあり、より典型的には約1と約2の間であり、決定
される重みは、この範囲内ではkの敏感な関数ではな
い。3Depthはジョイン手続の過程で訪れたノードの最
大個数であることに留意されたい。
【0094】PW手続では領域境界の発見の際にポイン
トの重みが考慮されるということを除いて、PW分割手
続はPQ分割手続とほぼ同じである。多繰り返しPW分
割処理の各繰り返しにおいて、各領域について2ステッ
プの計算を実行する。そのステップは、サンプルポイン
トをグローバルにソートすること、およびその後に、ポ
イントの重みに対してプリフィクス合計を計算するこ
と、および、これに関連した、重みWの総合計の計算で
ある。
【0095】サンプルポイントのグローバルソートに関
して(この場合、データの一部は各プロセッサ内に位置
し、そのソートは全プロセッサを使用する)、文献上で
は、本発明の構造および方法とともに使用できる多くの
並列ソート手続が存在する。文献[3,15]に記載さ
れたようなサンプルソートを用いてもよい。このタイプ
のサンプルソートは極めて効率的であると示されている
からである[3,15]。ただし、この代わりに、他の
並列ソート手続を用いることも可能である。次に、ポイ
ント重みに対してプリフィクス合計を実行する。プリフ
ィクス合計は3つのステップで効率的に計算しうる。第
1のステップでは、各プロセッサiがそのローカルポイ
ントの合計wi sumを個別に計算する。第2のステップ
は、 このwi sum値に対してグローバルなプリフィクス
合計演算を実行する。この演算は、入力のサイズが1な
ので[13]、極めて安易である。第3のステップで
は、各プロセッサiはそのローカルポイントのプリフィ
クス合計を独立に計算する。また、このプリフィクス合
計の計算処理中、重みの総合計Wを計算することもでき
る。
【0096】ポイントqは、値q[v]、重みq
[w]、およびプリフィクス合計q[pref]を有す
る。我々は、z−1個のポイントb1,b2,...,b
z-1を見つけたい。これらは領域境界すなわち(1)bi
<bi+1∀ 0<i<z−1であり、かつ(2)各領域の
重みの合計はおよそW/zである。
【0097】上述した、領域およびこれらに関連した領
域境界を生成するPW分割手続を用いることにより、各
領域に関連した重みの合計Ri sumがW/zより小さいか
これと等しいことが保証される。ここに、αはポイント
の最大重みであり、数学的な表現では、各領域について Ri sum ≦(w/z)+∝ となる。これは、1次元における負荷不均衡の量であ
り、これは全計算に対して達成される負荷バランスに影
響を与えるので、重大である。
【0098】各プロセッサは、個別に、領域境界のサブ
セットbiを決定または同定する。ここに、 各biは、
次の2つの条件が満たされる場合のソートされたリスト
内のポイントqjである。
【0099】
【数4】
【0100】
【数5】
【0101】これらの式中の表記”↓g↓”は”gの
床”を取ることを意味する。ここに、”床”とはgより
小さい直近の整数である。例えば、↓5.5↓は5であ
る。同様に、表記”↑g↑”は”gの天井”を意味す
る。ここに、gの天井とは直近の大きい方の整数であ
る)ことを想起されたい。例えば、↑5.5↑は6であ
る。
【0102】各プロセッサは、そのローカルサンプルポ
イントをプロセッサ間に分割するために、他のプロセッ
サの領域境界biを必要とする。よって、プロセッサの
相互接続ネットワーク上のAll-Processor-to-All-Proce
ssor同報動作(各特定のプロセッサがすべての他のプロ
セッサに対して、その境界領域または境界ポイント情報
もしくはデータを同定する同一メッセージを送信する)
が、文献[13]に記載のように、他のプロセッサに対
して境界領域または境界ポイント情報もしくはデータを
要求する。他のプロセッサの情報を受信しているプロセ
ッサのすべてが実際のそれを必要として利用するという
訳ではないが、この動作はそれを通信する効率的な方法
である。先に、かつ文献[4]に記載されたOPAQの
ような適当な分位手続(これは分位パラメータを定める
ためにサンプルセットを用いた)を用いることができる
が、PQESTおよびPW手続で得られる効率の故に、
そのようなOPAQ近似を用いない、さらに一層良好な
負荷均衡化の可能性がある、より正確および/または高
精度な分位手続を適用してもよいことに留意されたい。
OPAQ以外の多くの分位手続は既知であり、使用する
ことができるが、これ以上の説明は省略する。PW手続
で空間をP個の領域に分割した後、領域境界を用いてデ
ータセット全体をプロセッサ間に再分配する。
【0103】PWサンプルセットのサイズは負荷バラン
スの精度および分割手続のオーバーヘッドに影響する。
すなわち、サンプルデータセットが大きくなるほど、概
して、負荷バランスの精度が向上する。概して、PW手
続を用いる分割のコストは、すべての他の要因が等しい
として、PW手続の分割のコストより大きい。しかしな
がら、中から大のデータスキューがある場合、通常、P
W手続はPQ手続に勝る。なぜなら、存在するデータス
キューは、原則として、ポイントの重み付けによりある
程度相殺されるからである。基本モデルに対する他の拡
張として、追加機能が折衷(hybrid)手続の形で与えられ
る。これは、データスキューの程度に基づいて、2つの
手続の一方(PQまたはPW)を選択的に起動するもの
である。このような選択は、スキューの推定に関連した
計算負荷増大のおそれがあるにも拘わらず、有用であり
うる。
【0104】ローカルツリー組立手続(ステップ12
0) 従来技術であり、明細書の他の箇所に記載したこのロー
カルツリーフェーズ手続(ステップ120参照)におい
ては、各プロセッサは、ローカルデータポイントのみを
用いて、ε−k−d−Bツリーを組み立てる。このロー
カルツリーの組立は、ポイント再分配の際に、各プロセ
ッサに分配されたポイントに対してローカルに適用され
る。このツリー組立手続は、PQ,PQESTまたはP
Wの再分配されたデータセットについて同じであるが、
ツリーを組み立てるポイント自身は一般にどのプロセッ
サが用いられたかに依存する。
【0105】交差領域手続(ステップ130) 領域フェーズ(ステップ130)は、図14のフローチ
ャートに示す。各プロセッサは、類似ジョインの実行の
ために非ローカルデータ(例えば、他のプロセッサから
のデータ)を必要とし、このフェーズでは、各プロセッ
サは、次の手続でこの情報を交換する必要がある特定の
1または複数の他のプロセッサを決定する(ステップ4
01)。プロセッサpiが通信する必要があるプロセッ
サの組をInteriとする。ここに、用語“Inte
r”は交差セット("intersections set")を表すもの
として選択された。各プロセッサpiは、ツリーのグロ
ーバル部分を用いてInteriセットを決定する。範
囲問い合わせ(Range-Query)を用いるジョイン手続の
ようなジョイン手続または任意の他のジョイン手続をグ
ローバルツリーに対して実行することにより、プロセッ
サpiと交差する領域を有する他のすべてのプロセッサ
を決定または同定する。範囲問い合わせ手続は、一般
に、2つの領域境界の間のすべてのポイントを与えるも
のであり、1次元またはそれ以上の空間に対して実行す
ることができる。範囲問い合わせはの多くの具現例が知
られており、これ以上の説明は避ける。
【0106】さらに、プロセッサjをInteriセッ
トに属するものとする。プロセッサpi,pjは、両者の
間の交差領域を決定する必要があり、これにより、当該
交差領域により貢献されるジョイン出力を生成可能とす
る。各プロセッサは、この決定を行うために、まず、ツ
リーのグローバル部分を用いて隣接プロセッサを決定す
る(ステップ401)。当該交差領域を決定した後、プ
ロセッサpi,pjは、交差領域に属する幾つかのポイン
トを互いに送信しあう。1対のプロセッサ間の交差領域
を発見するためには、幾つかの方法がある。その3つの
例を以下に説明する。
【0107】プロセッサpi,pj間の交差領域を発見す
るための簡単かつ幾分素朴な方法は、次のように働く。
両プロセッサpi,pjは、まず、ある共通の次元Rに沿
ってそれらのローカルポイントをソートする。次元Rに
沿ったプロセッサpiのソートされたリスト内の最大及
び最小値をmaxi,miniとする。また、プロセッサ
jについても同様に、maxj,minjが定義され
る。お互いのε距離以内のポイントを探しているので、
両プロセッサの領域は各方向に沿ってεだけ拡張され
る。プロセッサpiの拡張された領域は、 max
maxi+ε、かつ、min=min−εで定義
される。同様に、プロセッサpjの拡張された領域は、
max=maxj+ε、かつ、min=min
−εで定義される。プロセッサpi,pj間の拡張された
領域は、境界ポイント( max,min, ma
, min)を用いて定義され、各プロセッサ
は、他のプロセッサの拡張された領域を用いて当該他の
プロセッサにより必要とされているポイントを決定する
ことができる。この第1の方法の不都合な点は、プロセ
ッサ間で必要以上に多くのポイントが交換され、そのた
め、プロセッサ間通信の必要性が増大することである。
【0108】他のより洗練された方法を適用することに
より、交換されるポイントの個数を減少させることがで
きる。これは、各プロセッサが、後述する“SimpleLeve
l”リストおよび“Level”リストを組み立てることであ
る(ステップ402)。この方法では、複数のプロセッ
サの各々のローカルε−k−d−Bツリーを用いて、交
差領域を同定する。この第2の方法の1つのパラメータ
は、ローカルε−k−d−Bツリーのレベルに相当する
レベル数Lである。このレベルLについて、各プロセッ
サpi(またはpj)は、SimpleLeveljL(またはSimpleL
evelLi)およびLevelLi(またはLevelLj)によりそれぞ
れ表される第1および第2のリストを生成する。これら
の2つのリストは、各プロセッサpi(またはpj)のロ
ーカルツリーのL番目のレベルを表す。 SimpleLevelLi
リスト内のエントリrは、r番目のサブツリーRを表
す。このエントリは実質的に2値のフラグであり、その
レベルのサブツリーが空(“0”)かまたは非空
(“1”)かに応じてゼロ(“0”)またはイチ
(“1”)の値を取る。勿論、逆の論理を採用すること
も可能であり、同じ機能を有する他の標識で代用するこ
とも可能である。LevelLiリストのエントリrは、r番
目のサブツリーR、およびジョイン出力を生成するため
にツリーのL番目のレベルのRとジョインされる必要の
あるすべてのジョイン可能なサブツリーを表す。サブツ
リーRまたはそのジョイン可能なサブツリーのいずれか
が非空であれば、 このLevelLiリストのエントリには
“1”の値が割り当てられる。そうでなければ、“0”
の値が割り当てられる。“SimpleLevelL”リストおよび
“LevelL”リストのサイズは(1/ε)Lであり、これ
はまた、指数Lで累乗されたツリーブランチ係数(tree
branch factor) (bL)に等しい。
【0109】これらのリストを組み立てる際に使用され
るレベル(L)パラメータの値は、全体の手続の性能に
影響を与える。典型的には、Lの値が大きければ、リス
トの組立、送信/受信のコストが増加する。一方、大き
いLの値は、交差領域の一部となるポイントの個数を減
少させる。その結果、適切なレベルパラメータの選択に
はある種のトレードオフがある。
【0110】Lの固定値を用いる代わりに、第3の他の
方法として、次のようにLの値を動的に決定することが
できる。Lのある小さい値、例えば、1または2からス
タートし(すなわちレベルを変化させる)、当該初期の
小さいLを想定する交差領域を決定する。この交差領域
に属するポイントの個数が多ければ、Lの値をある所定
の値だけ増加させ(例えば1または2だけ増加させ)、
Lの値があるユーザの定めた最大値に達するまで、また
は、プロセッサ間で交換されるポイントの個数が小さく
なるまで、この処理を繰り返す。Lの最適なまたは最適
に近い値を決定するのは常に容易なことではなく、その
ような値は、典型的には、システムパラメータに基づい
て経験的に決定される。典型的には、Lは約1から約5
の間の値であり、より典型的には1から3の範囲内であ
り、さらにより典型的には約1から2の範囲内である。
【0111】一旦、適当なレベルLのパラメータが決定
され、リストが生成されたら、プロセッサpi,pjは、
それらのレベルリストを交換する(ステップ403)。
ε−k−d−Bツリーの特性から、任意の内部ノードx
について、ノードxの子供y内のポイントはノードxの
他のいずれの子供yのいずれのポイントからもε以上離
れている(ただし、文献[2]に記載のように、yに隣
接する2つの子供については除く)ことが分かる。よっ
て、 SimpleLevelL i[r] = 1 (またはSimpleLevelL j[r]
= 1)かつ、LevelL j[r] = 1(またはLevelL i[r] = 1)
であれば、プロセッサpi(またはpj)のサブツリーr
のポイントは、プロセッサpj(またはpi)との交差領
域の一部である。
【0112】各プロセッサは、自身の"SimpleLevel"リ
ストとその隣接プロセッサのすべての"Level"リストと
の間でブールすなわち論理“AND”演算を行うことに
より交差領域を見いだす(ステップ404)。最後に、
以下に詳述するようなローカルまたはグローバル割り当
て法を用いて交差領域の割り当てを行う(ステップ40
5)。さらに、交差領域の決定後、各領域内のポイント
の個数を最小化するために、前述した方法の最適な一つ
を用いることができる。
【0113】図15は、本手続の領域フェーズでプロセ
ッサpi,pjのローカルε−k−d−B間の交差領域を
同定する方法を図示している。サブツリーの領域のタイ
プとして次の3つが示されている。(a)幾つかのポイ
ントを有する非空サブツリー、(b)ポイントを全く有
さない空のサブツリー、および(c)部分的に交差して
いる、すなわち、交差領域の一部であるサブツリー。こ
れらの異なるタイプのサブツリー領域は図において異な
るシェーディングで示されている。
【0114】各プロセッサについて、上述したようにシ
ンプルレベルリスト (simple levellist)が作成され
る。プロセッサpiについては、シンプルリストは2進
値"11111111 0000 0000"を有し、レベルリストは2進
値"1111 1111 1111 0000"を有する。プロセッサpjにつ
いては、シンプルリストは2進値”0000 0011
1111 1111”を有し、レベルリストは2進
値”0111 1111 1111 1111”を有す
る。プロセッサpjのシンプルレベルリストは、プロセ
ッサpjのレベルリストとの間で、ビット毎に論理的に
“AND”され、結果リスト"0111 1111 0000 0000"が
できあがる。同様に、プロセッサpjのシンプルレベル
リストは、プロセッサpjのレベルリストとビット毎に
ANDされ、その結果、プロセッサpjの結果リストが
値"0000 0011 1111 0000"を有する。結果リストが
“1”であるサブ領域は、交差領域の一部であるサブツ
リーを表し、プロセッサ間通信に参加する。結果リスト
データ構造内に“0”を有するサブ領域は、プロセッサ
間通信に参加しない。
【0115】aおよびbが同じプロセッサに属する(例
えば、両方ともがpiに属する、またはpjに属する)よ
うな潜在的な結果ポイント(a,b)については、これ
らの2つのポイントを包含するプロセッサにより計算が
行われるものとする。しかし、 aおよびbがそれぞれ
異なるプロセッサpi,pjに属する場合には事情が違
う。この計算は、プロセッサpiまたはpj上で行うこと
ができる。また、この計算は、プロセッサpi,pjと異
なるプロセッサ上で行うことも可能である。しかし、異
なるプロセッサ上でこの計算を行うことは、通常、不都
合である。というのは、負荷バランスを相当に改善しな
ければ、余分なプロセッサ間通信が発生してしまうから
である。
【0116】スキューのあるデータセットについては、
そのようなポイントに対して不適当に計算を割り当てる
と、ローカルデータポイントのみを必要とする計算のバ
ランスが極めて良好であったとしても、かなりの負荷不
均衡が生じるおそれがある。プロセッサpi,pjは、好
ましくは、良好な負荷バランスが得られるように交差領
域のポイントの幾つかを交換する。この問題は、p個の
プロセッサが存在する場合の最適化問題である。各プロ
セッサは、他のプロセッサとの間で交差領域を有する。
ここで、プロセッサpiにローカルなポイントであっ
て、かつプロセッサpi,pj間の交差領域に属するポイ
ントの個数をnijとする。このnij個のポイントの幾つ
かをプロセッサpiに割り当て、 nji個のポイントの幾
つかをpjに割り当てるのが好都合である。
【0117】そのために、これらの計算の割り当てのた
めのローカルおよびグローバル割り当て法が開発されて
いる(ステップ405)。これらの2つのタイプの割り
当て法は、主として、グローバル情報とローカル情報の
いずれを用いるかで異なる。グローバル情報に基づく方
法( nij∀1≦i,j≦Pかつi≠j、ここにPはプ
ロセッサの総数)は、この割り当てを行うためにすべて
のプロセッサに関する情報を用いる。ローカル情報に基
づく方法は、プロセッサpiによりそのプロセッサのI
nteriリストから得られた情報のみを利用する(す
なわち、 nijとnjiのみを用いる 。グローバル割り当
て法は、典型的には、プロセッサ間のより良好な負荷バ
ランスをもたらすものと期待されている。しかし、この
方法の好ましくない点は、潜在的にコストが高く、か
つ、その複雑度がP2に比例するのでスケーラビリティ
(scalability)に劣ることである。グローバルまたはロ
ーカル割り当て法は、そのいずれを用いてもよく、以下
のセクションでは、例示的実施形態を説明する。その
後、交差領域を決定する処理を終了する(ステップ40
6)。
【0118】1つの特定の例示的なグローバル手続で
は、各プロセッサは、すべてのグローバル情報のコピー
を有する。これは、サイズP×Pの行列(領域行列:Re
gionMatrix)として表すことができる。エントリRegion
Matrix[i,j](ここに、前述のように1≦i,j≦Pか
つi≠j)はプロセッサpiにローカルであり、プロセ
ッサpi,pj間の交差領域に属する。この手続は、一連
の判定を繰り返して行う。まず、RegionMatrixの各コラ
ム(列)の総合計(TotalSum)を計算する。TotalSumiはT
otalSumRegionMatrixのi番目のエントリであり、プロ
セッサpiにおいて、交差領域を共有する他のプロセッ
サから受信する可能性のあるポイントの総個数を表す。
最初に、この手続は、すべてのプロセッサを初期化また
はアンマーク(unmark)し、多くともp−1回(pはプロ
セッサの個数)、次のステップを実行する。(1)アン
マークされたプロセッサ間の、例えば、プロセッサpj
のTotalSumiの最小のエントリを見つけだす(ステップ
421)。(2)プロセッサpjを、RegionMatrix[*,j]
内(ここに“*”はあらゆる可能な値を表す)のすべて
の現在のエントリのためのレシーバ(receiver:受信者)
としてマークする(ステップ422)。(3) RegionM
atrix[*,j]がゼロでなければ、 RegionMatrix[j,*]にゼ
ロをセットする(ステップ423)。(4)RegionMatr
ixおよびTotalSumiを更新する(ステップ424)。
【0119】一方、例示的ローカル割り当て法では、プ
ロセッサpi,pjは、それらの交差領域のワークを、こ
のワークの半分を各プロセッサが実行するように2つの
部分に分割する。プロセッサpi,pjのローカル領域を
UとVとする。この領域Vをほぼ等しい2つの部分
1,V2に分割し、プロセッサpiがUとV1の類似ジョ
インを実行し、プロセッサpjがUとV2のジョインを実
行するものとする(ステップ431)。各領域Uおよび
Vは、各領域のポイントの個数が同一個プラスマイナス
1ないし数個(分割前のポイントの個数が奇数の場合を
考慮して)になるように、分割されるようにする。
【0120】類似ジョイン手続(ステップ140) ジョインフェーズ 類似ジョイン(ステップ103)は、自己ジョイン手続
を用いてローカルツリーに基づいて行われ、ローカルお
よび交差領域間のジョインは非自己ジョイン手続を用い
て行われ、図4のフローチャートに示したような並列類
似ジョイン方法を完了する。自己ジョイン(self-join)
および非自己ジョイン(non-self-join)を行うために
は、前述した手続を用いる。非自己ジョインを行う際に
は、好ましくは、前記領域フェーズ(フェーズ3)割り
当て手続を採用することにより、ジョイン出力に複製(d
uplicates)が発生しないように保証する。
【0121】ローカルポイントに基づいてジョインを行
う際に、ローカルツリーの最高レベルにおいて未使用の
次元を採用することは、通常、ツリーのグローバル部分
の組立に既に使用された次元を用いることより優れてい
る。一方、ローカルポイントと非ローカルポイントとの
間のジョインを行う際には、逆のことが言える。よっ
て、2つのローカルツリー(1つはローカルジョインを
行うためのもので、他の1つは非ローカルジョインを行
うためのもの)を組み立てることは、単一のツリーで得
られる性能に比べていくらかの改善が得られる(そのツ
リーの組立のコストがジョイン手続のコストに比べて小
さいと仮定して)。しかし、いずれの方法でもそれによ
って得られる利点は、一般に、特定のデータセットの特
徴に依存する。
【0122】類似ジョインには次の2つのタイプがあ
る。(1)類似自己ジョインは、ポイントの1つのセッ
トT1に基づいて行われる類似ジョインである。(2)
類似非自己ジョインは、ε距離内にあるポイントのすべ
ての対(x,y)を見つけるためにポイントの2つのセ
ットT1,T2に基づいて行われる類似ジョインである
(ここに、x∈ T1,y∈ T2である)。数学的には、
自己ジョインと非自己ジョインは、次のように定義され
る。(1)自己ジョイン:T→Φ、ここに、Tはε−k
−d−Bツリーであり、ΦはあるLp−norm距離規
準についてのε距離内にあるすべてのポイントの対
(x,y)の1セットである(ここにx≠y、かつ、
x,y∈T)。(2)非自己ジョイン: T1×T2
Φ、ここにT1,T2はε−k−d−Bツリーであり、Φ
はあるLp−norm距離規準についてのε距離内にあ
るすべてのポイントの対(x,y)の1セットである
(ここに、x∈T1,y∈ T2である)。
【0123】図16、図17は、順次ε−k−d−Bツ
リー自己類似ジョイン(図16)と非自己類似ジョイン
(図17)の手続のフローチャートである。各図におい
て、ノードxiはノードxのi番目の子供である(ノー
ドyiはノードyのi番目の子供である)。リーフ自己
ジョイン、リーフ非自己ジョイン手続は、それぞれ、1
つおよび2つのリストに対して順次自己ジョインを実行
する。各プロセッサ内で実行されるこれらのリーフ自己
ジョインおよびリーフ非自己ジョイン手続は、各プロセ
ッサで同時に実行してもよい。これにより、並列または
疑似並列的な動作が行える。
【0124】自己ジョインサブ手続(ステップ600) 図16のフローチャートに関して、これは、自己ジョイ
ン手続の例示的実施形態を示しており、自己ジョインは
ノードxについて開始され(ステップ600)、つい
で、xがリーフノードか否かが判断される(ステップ6
01)。ノードxがリーフノードであれば、リーフ自己
ジョイン(x)手続が実行され(ステップ700)、ノ
ードxについての自己ジョインが終了する(ステップ6
05)。一方、ノードxがリーフノードでなければ、カ
ウンタiを1にセットし(i=1)(ステップ60
2)、ノードxi(すなわちxi)について自己ジョイン
を実行する。ここに、iはノードxの特定の子供を同定
するインデックスであり、表記xiはxのi番目の子供
を意味する。ここでは、インデックスiはツリーレベル
を示すものではないことに留意されたい。ノードxとそ
の子供の間の関係は、図6のツリーの一部に模式的に示
されている。 xiの自己ジョインの結果は、対(xi
i+1 )の非自己ジョインへの入力として用いられる
(ステップ800)。ここに、 xi+1 はxの(i+
1)番目の子供を表す。非自己ジョイン手続のステップ
については、図17のフローチャートにより詳細に説明
する。i=b−1か否かの判定または比較が行われる。
ここに、bはブランチ係数であり、iは子供ノードイン
デックスである(ステップ603)。もし、iがブラン
チ係数bマイナス1に等しければ(すなわち、i=b−
1、ここに、ブランチ係数b=1/ε)、自己ジョイン
手続がノードxのb番目の子供(xb)について実行さ
れる(ステップ600)。そうでなければ、iがb−1
より小さければ、iは1だけインクリメントされ(ステ
ップ604)、新たなxiについて自己ジョイン手続が
繰り返される(ステップ600)。本手続(ステップ6
00,800,603,604)は、iがブランチ係数
bより1小さい値になるまで、ノードxの異なる子供i
について繰り返される。
【0125】ノードx、ブランチ係数bおよび子供iに
対する自己ジョイン関数手続の疑似コードによる高レベ
ルの記述は次のとおりである。
【0126】 function Self-join(node x) /*b is the branch factor (=1/ε)*/ if x is a leaf node then leaf-self-join(x)/* performs join among all points in leaf node*/ return for i=1 to b-1 do Self-join(xi) Non-self-join(xi, xi+1) Self-join(xb) 非自己ジョインサブ手続(ステップ800) 次に、(ノードx,ノードy)に対する非自己ジョイン
手続(ステップ800)の実施形態を、図17のフロー
チャートにより説明する。このNon-Self-Join(node x,
node y)手続(ステップ800)は、xおよびyがリー
フノードであるか否かの判定から始まる(ステップ80
1)。両方ともリーフノードであれば、リーフ非自己ジ
ョイン(x,y)手続が適用され(ステップ900)、
非自己ジョイン手続が終了する(ステップ813)。一
方、ノードxがリーフノードで、ノードyが内部ノード
であるならば、次に、リーフノードおよび内部ノードの
ジョインを以下のように計算する(ステップ850)。
まず、子供iを“1”にセットし(ステップ803)、
ノードxおよびy1に対して非自己ジョイン手続を適用
する(ステップ800b)。このとき、子供(i)がブ
ランチ係数(b)に等しければ、非自己ジョイン手続を
終了し(ステップ813)、そうでなければ、子供識別
子を1だけインクリメントし(i=i+1)(ステップ
805)、新たなiすなわち、等価的には次の子供に対
して非自己ジョイン(xおよびy1)手続を繰り返す
(ステップ800b)。この手続(ステップ800b,
804,805)は、ブランチ係数までの各子供につい
て非自己ジョインが実行されるまで繰り返され、その時
点で、繰り返しが終了し、非自己ジョイン手続が終了す
る(ステップ813)。
【0127】ノードxがリーフノードではない、また
は、ノードyが内部ノードではない場合(ステップ80
2)、xが内部ノードか、かつ、yがリーフノードかが
判定される(ステップ806)。そうである場合、非自
己ジョイン(xi,y)がレベルi−1から(ステップ
807)、繰り返して実行され(ステップ870)、ブ
ランチレベルbまで(bを含んで)すべての子供iにつ
いて継続される(ステップ807、800g,808,
809)。子供がブランチ係数に一致したら、非自己ジ
ョイン手続は終了する(ステップ813)。
【0128】考慮すべき最後の場合は、xおよびyがリ
ーフノードである場合(ステップ801)ではなく、x
がリーフノードでyが内部ノードである場合(ステップ
802)でもなく、xが内部ノードかつyがリーフノー
ドである場合(ステップ806)でもないときである。
この場合には、次のようにして、異なるノードに対して
非自己ジョインが適用される。すなわち、子供カウンタ
をi=1に初期化し(ステップ810)、ついで、非自
己ジョイン(xi,yi)を適用し(ステップ800
c)、その後、順次、(xi,yi+1)に非自己ジョイン
手続を適用し(ステップ800d)、(xi+1,yi)に
非自己ジョイン手続を適用する。現在の子供(i)がブ
ランチ係数マイナス1に一致したか否かを比較により判
定する(ステップ811)。不一致であれば、子供を1
だけインクリメントし(ステップ812)、新たなiの
値に対して、3つの非自己ジョイン手続を、i=b−1
となるまで(ステップ811)繰り返す(ステップ80
0x,800d,800e)。i=b−1となったと
き、(xb,yb)に非自己ジョイン手続を適用し(ステ
ップ800f)、この非自己手続を終了する(ステップ
813)。
【0129】レベルiでのノードx,ノードy,ブラン
チ係数bに対する非自己ジョイン関数手続の疑似コード
による高レベル記述は次のとおりである。
【0130】 function Non-self-join(node x, node y) /* b is the branch factor(=1/ε)*/ if x and y are leaf nodes then leaf-non-self-join(x,y) if x is a leaf node and y is an internal node then for i=1 to b do Non-self-join(x,yi) if x is an internal node and y is a leaf node then for i=1 to b do Non-self-join(xi,y) if x and y are internal nodes then for i=1 to b-1 do Non-self-join(xi,yi) Non-self-join(xi,yi+1) Non-self-join(xi+1,yi) Non-self-join(xb,yb) ソートマージ手続 本発明の構造および方法において、(自己ジョイン用)
リスト、または(非自己ジョイン用)リスト(リーフ自
己ジョインおよびリーフ非自己ジョイン手続用を含む)
に対する類似ジョインを実行するための標準ソートマー
ジ手続を用いる。これらのソートマージ手続は、当業界
において周知であり、ここでは詳述しない。ソートマー
ジ手続は、共通の未使用次元に沿ってポイントをソート
するのに好都合である。よって、この次元は確保してお
くべきであり、ツリーを構築する処理において未使用の
まま残っている。高次元のポイントについては、未使用
の次元は存在しやすい。(例えば、10次元のポイント
で、ε=0.1の場合、すべての次元が利用されるまで
には1010個のポイントが存在する必要がある。)ツリ
ーの組立後、ポイントは、すてべのリーフノードで、当
該(未使用の)次元に沿ってソートされる。もし、前処
理ステップで当該次元においてすべてのポイントが既に
ソートされていれば、ツリーの組立後に再度ソートされ
る必要はない。順次ε−k−d−Bツリーおよび順次類
似ジョインの他の観点については文献[2]に記載され
ており、この文献は、参照により本明細書に組み込まれ
る。他の標準ソートマージ手続は当業界で既知であり、
本発明の方法に利用できるが、ここではこれ以上詳述し
ない。
【0131】動的リーフサイズ決定手続 一般に、ε−k−d−Bツリーを用いる類似ジョイン手
続の性能はリーフノードサイズに大きく依存する。リー
フノードのサイズは、ツリーの深さ、および、実行され
るジョインテスト(自己ジョインまたは非自己ジョイ
ン)の回数に影響を与える。リーフサイズが小さけれ
ば、一般に、ツリーの深さが増加し、これは、実行され
るジョインテストの回数の増加を招来する。一方、リー
フサイズが小さいことは、ツリーの横断にかかるコスト
を増加させる。
【0132】したがって、リーフサイズの最適(または
最適に近い)値は、ポイントの総個数、ポイントの次元
数、εの値、データセットの分配等の幾つかの要因によ
って変わる。理論的に最適なリーフサイズを決定するこ
とは困難であり、実際には、そのような理論的な最適値
の決定および使用は必要ではなく、むしろ最適に近いリ
ーフサイズを用いればよい。
【0133】概して、最適な(最適に近い)リーフサイ
ズの決定には2つの方法がある。すなわち、リーフサイ
ズは“静的に”または動的に決定することができる。静
的な決定法では、リーフサイズは、固定であり、問題事
例に関する利用可能な情報に何ら関係なく静的に決定さ
れる。これに対して、動的決定法では、リーフサイズは
可変であり、問題事例に関する利用可能な情報の少なく
とも幾つかを考慮することにより決定される。従来のリ
ーフサイズ決定の方法は、静的な決定法に限られてい
た。動的な決定法を用いる方法全体を、その特定の実施
形態と共に開示する。
【0134】理解されるように、一般に動的方法は、特
に、データセットの分配にスキューがある場合に、静的
方法より性能が高い。したがって、本発明の構造および
方法は、リーフサイズを最適化するためのワーク/コス
トモデルを提供する。データベースは均一に分配される
という仮定のために、問題のある導出(Problematicalde
rivation)がなされる。しかし、本発明の手続はそのよ
うな均一に分配されたデータセットに限定されるもので
はない。たとえ、データセットの分配が均一でなくて
も、本発明のコストモデルでの本発明の動的なリーフサ
イズ決定によれば、その不均一に分配されたデータセッ
トの理論的な最適リーフサイズが分からなくても、概し
て静的方法を改善することができる。
【0135】次に、動的リーフサイズ決定法を説明す
る。ジョイン手続(自己ジョインまたは非自己ジョイ
ン)を実行するワークまたはコスト(C)は、次のよう
に、特定のデータベース問題事例のパラメータに基づい
てモデル化することができる。
【0136】Cost=C=横断コスト+ジョインコス
ト ここに、 横断コスト=(リーフノードの個数/2)×訪れたノー
ドの個数 および ジョインコスト=(リーフノードの個数/2)×k×訪
れたノードの個数×2ε×(リーフノードのサイズ)2
×次元数 最適なまたは少なくとも最適に近いまたは最も適切なリ
ーフサイズを、以下、コスト(C)から決定する。以下
の導出(derivation)では、次のような表記を用いる。す
なわち、b=ツリーブランチ(ファンアウト)係数(b
=1/ε)、深さ(depth)=ツリーの深さ、n=データ
セット内のポイント個数、d=ポイントの次元数であ
る。定数kは、典型的には、本発明のコスト手続が具現
されるマシン、ハードウェアまたは構造に依存する定数
であり、各々異なるタイプの動作に関する横断コスト・
ジョインコストサブ手続を特定の構造が実行することが
できる相対的な効率または速度に関連している。kは一
般に閉鎖した数学的な形式で定義されるものではない
が、ハードウェア(例えば、プロセッサの個数および特
性、相互接続速度および帯域、メモリ、等)を選択しま
たは定め、各々のタイミングを決定するためにジョイン
動作および横断動作を個別に実行することにより、経験
的に導出することができる。そこで、ジョインコストお
よび横断コストの合計としての総合コストを最適化する
ように、具現化されたkを選択する。
【0137】最適なリーフサイズを決定するための方法
の最高レベルの一実施形態では、(a)ツリー横断コス
トを決定し、(b)ジョインコストを決定し、かつ、場
合によっては、これらのコストの、具現例(ハードウェ
ア)対応の重み付け(係数“k”)を行い、当該データ
セットおよびハードウェアに対する最適なリーフサイズ
を決定する。
【0138】データセットが均一に分配されているとい
う我々の作業上の仮定では(ジョインされるべきデータ
ベースは実際には均一である必要はないことを想起され
たい)、リーフノードの個数は、ツリーの深さで累乗さ
れたブランチ係数にほぼ等しく(リーフノードの個数≒
depth)、リーフノードのサイズは、リーフノードの
前の個数により分割されたポイントの個数にほぼ等しい
(リーフノードのサイズ≒n/bdepth )。当業界の通
常の技量を有する者には、本発明の開示に照らして、こ
の例示的なコストモデルの実施形態が、リーフノードの
個数≒bdepthかつリーフノードのサイズ≒n/bdepth
という均一分配仮定以外の仮定(これは他のデータセ
ット分配に適する)を用いて拡張することができる手法
が理解されよう。
【0139】リーフノード当たりの訪れるノードの個数
の上限は、他のノードがジョインされる(自分自身との
ジョインも含む)相手のノードの個数を、ツリーの深さ
の指数で累乗したもの、すなわち、3depthに等しい
(なぜなら、任意の特定のノードはそれ自身とその隣接
する2つの兄弟ノードとジョインされうるにすぎないか
らである)。このようにして、前記ジョインコストの式
に横断コストおよび総合コスト(C)を代入し、かつ、
リーフノードの近似個数≒bdepth、リーフノードのサ
イズ≒n/bdepth、ε=1/b、および訪れるノード
の上限数=3depthという結果を考慮することにより、
次のような結果コスト(C)を得ることができる。
【0140】
【数6】
【0141】深さの最適値を見つけるためには、ツリー
の深さ(depth)についてコスト(C)を微分する必要が
ある。
【0142】
【数7】
【0143】この(∂C/∂depth)の結果を0とし
(これはツリー深さに対してコストが極小となる条件に
相当する)、これを深さについて解くことにより、次の
式が得られる。
【0144】
【数8】
【0145】よって、これらの条件下で、ツリーの深さ
(depth)は、次のようになる。
【0146】
【数9】
【0147】リーフサイズ(LS)の適当な値は次式で
与えられる。
【0148】
【数10】
【0149】ここに、深さ(depth)は式(5)により与
えられる。換言すれば、最適リーフサイズはn/b
depthからn/b(depth-1)+1の範囲内にある。
【0150】リーフサイズに対する上記式を有効化する
ために、εの異なる値、異なるデータサイズ(n)およ
び異なるリーフサイズ(LS)に対する均一かつガウシ
アン分布(異なる標準偏差を有する)を有するデータセ
ットについて、数セットの有効性テストを行った。デー
タセットのデータポイントの範囲は[0,2]とした。
本発明のコストモデルを評価するための距離規準として
2−norm規準(上述)を用いた。例えば、異なる
実験において、我々は、リーフサイズを、最大値( n
/b(depth-1)+1)、最小値( n/bdepth)、およ
びこれら最大および最小値の算術平均または相乗平均に
セットしてみた。AAで表される算術平均が多くの場
合、最高の性能を示した。算術平均は次式で与えられ
る。
【0151】 算術平均=[{(bn+n)/2bdepth} +0.5] 概して、有効性結果は、動的に決定されたリーフサイズ
を用いる本発明のコストモデルが有効で、固定のリーフ
サイズを用いる場合に比べて全般的に良好である。ε−
d−d−Bツリーを用いて類似ジョインを行うための本
発明のコストモデルは、上述した順次類似ジョインまた
は並列類似ジョインの具現例のいずれにも適用できる。
このコストモデルは、リーフサイズのしきい値の推定に
用いて好適である。均一かつガウシアン分布を有するデ
ータセットに対する有効性テストは、動的可変リーフサ
イズ決定法を用いるコストモデルが、一定リーフサイズ
しきい値を選択するモデルより著しく有効であることを
示した。本発明者等が知っている今まで用いられたコス
トモデルは、ジョインコストのみを用いたものであり、
総合コストのジョインおよび横断成分の両方を考慮する
ものではなかった。
【0152】本明細書で言及したすべての文献および特
許出願は、あたかも個々の文献または特許出願が具体的
にかつ個別に参照により組み込まれたと同じ程度に、参
照により本明細書に取り込まれる。
【0153】以上の記載では、説明のために、本発明が
完全に理解されるように特定の命名法を用いた。しか
し、本発明を実施するために特定の詳細事項は必要ない
ことは当業者には明らかであろう。他の例では、本発明
からの注意分散を避けるために、周知の回路およびデバ
イスはブロック図の形式で示してある。よって、上記記
載および本発明の特定の実施形態は、説明および記述の
目的のために提示されたものである。それらは、排他的
なものではなく、記載された厳密な形に本発明を限定し
ようとするものでもない。上記教示内容から多くの変
形、変更が可能であることは明らかである。上記実施形
態は、本発明の原理およびその実際的な応用を最もよく
説明するために選択され記載されたものであり、それに
よって、当業者が、考えられる特定の用途に適するよう
に種々の変形と共に本発明およびその実施形態を最大利
用できるようにするものである。本発明の範囲は、請求
の範囲およびその均等物により定められるよう意図され
ている。
【0154】本発明は、図1および図2に示したコンピ
ュータシステムに限定されるものではない。当業者は、
ここに提示された開示内容に照らして、他の計算および
要素計算機アーキテクチャ、プロセッサ、相互接続ネッ
トワーク、集積回路設計、他のタイプの電子デバイス、
等に本発明を容易に変形することができる。
【0155】さらに、上述した方法およびシステムは、
ランダムアクセスメモリのようなメモリデバイス以外の
種々のタイプの実行可能な媒体上での実行に従うことが
できる。他のタイプの実行可能な媒体としては、これら
に制限する意図ではなく、例えば、任意のメモリデバイ
ス、コンパクトディスク、磁気ディスク、ハードディス
ク、フロッピーディスクでありうるコンピュータ読み取
り可能な記憶媒体を用いうる。
【0156】以上、本発明をすべて説明したが、添付の
請求の範囲の精神および範囲を逸脱することなく、種々
の変形および変更をなしうることは当業者には明らかで
あろう。
【図面の簡単な説明】
【図1】本発明の類似ジョイン手続きおよびそのサブ手
続きを実行するための処理システム構造の例示的な実施
形態を示す図である。
【図2】本発明の類似ジョインのための処理構造の他の
実施形態を示す図である。
【図3】複数のオブジェクト(データポイント)および
類似ジョインのための手続きを保存するメモリ媒体デー
タ構造の例示的実施形態を示す図である。
【図4】並列類似ジョイン手続きのトップレベルの例示
的実施形態を示す概略フローチャートである。
【図5】ε−k−d−Bツリーを組み立てるための手続
きを示す図である。
【図6】(a)(b)は、ツリーのグローバル部分が分
割される方法、およびツリーのグローバル部分とローカ
ルε−k−d−Bツリーの間の関係を含む、複数のプロ
セッサ間にデータを分割する手続きの例示的実施形態を
示す図である。
【図7】データセット空間を複数のバラバラの(disjoin
t)領域およびサブ領域またはパーティションに分割する
ための分位数(quantiles)を決定するために全体のデー
タセットを用いる分位分割(Quantile Partitioning:PQ)
手続きの例示的実施形態のトップレベルの概略フローチ
ャートである。
【図8】本発明のPQ,PQESTまたはPW分位手続
き(Quantiling Procedures)において使用される分位の
ための1パスアルゴリズム(One-Pass Algorithm for Qu
antiles:OPAQ)のトップレベルの概略フローチャートで
ある。
【図9】PQEST手続きの実施形態を示す概略フロー
チャートである。
【図10】図10は、全PW手続きの実施形態を示す概
略フローチャートである。
【図11】図10のPW手続き内のローカルε−k−d
−Bツリー組立手順(Local ε−k−d−B tree Build
Procedure)の実施形態を示す概略フローチャートであ
る。
【図12】図11のローカルツリー組立手順内の、ロー
カルツリーへのポイント追加手続き(Add Point to Loca
l Tree Procedure)の実施形態を示す概略フローチャー
トである。
【図13】図10のPW手続き内の重み付け手続き(Wei
ght Application Procesure)の実施形態をを示す概略フ
ローチャートである。
【図14】ジョイン手続きの分割領域フェーズ(Interse
cted Regions Phase of the JoinProcesure)の実施形態
を示す概略フローチャートである。
【図15】2つのプロセッサのローカルε−k−d−B
ツリー間の分割された領域がリストデータ構造により特
定される方法を示す概略図である。
【図16】順次ε−k−d−Bツリー自己類似ジョイン
手続き(sequential ε-k-d-B tree self similarity jo
in procedure)の実施形態を示す概略フローチャートで
ある。
【図17】順次ε−k−d−Bツリー非自己類似ジョイ
ン手続き(sequential ε-k-d-B tree non-self similar
ity join procedure)の実施形態を示す概略フローチャ
ートである。
【符号の説明】
70…処理システム、71…要素計算機、72…プロセ
ッサ(CPU)、73…メモリ、74…入出力コントロ
ーラ、75…インタフェース、76…2次メモリ、77
…メモリコントローラ、79…相互接続構造、85…3
次メモリ。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年2月10日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正内容】
【発明の名称】効率的な並列高次元類似ジョインのため
の構造および方法
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI G06F 15/401 320Z (72)発明者 サンジャイ ランカ アメリカ合衆国、フロリダ州 32606、ゲ インズビル ケー・166、エヌ・ダブリュ フォーティサード ストリート 4830

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】複数の相互接続された要素計算機と、複数
    のオブジェクトから成るオブジェクトセットを保存する
    メモリとを有する計算システムにおいて、予め定めた類
    似基準に基づいて前記オブジェクトの幾つかをジョイン
    する方法であって、 前記オブジェクトセットの前記複数のオブジェクトに対
    するリファレンスを前記メモリ内に保存し、 前記複数のオブジェクトの幾つかを前記複数の要素計算
    機に対応づけるために、前記オブジェクトセットを複数
    のサブパーティションに分割し、 各特定の要素計算機内で、この特定の要素計算機に対応
    づけられた前記複数のオブジェクトの幾つかを組織する
    オブジェクトツリー構造を構築し、 各特定の要素計算機内で、予め定めた第1のルールに基
    づいて各前記特定の要素計算機について、隣接する要素
    計算機との交差領域を決定し、 予め定めた第2のルールに基づいて、各特定の要素計算
    機と隣接要素計算機との間でオブジェクトを交換し、 予め定めたオブジェクト類似基準に基づいてオブジェク
    トをジョインすることにより、多次元オブジェクトのジ
    ョインされたグループ(joined groups)を生成するステ
    ップを備える方法。
  2. 【請求項2】請求項1の方法において、前記オブジェク
    トセットは1つのデータセットを有し、前記オブジェク
    トの少なくとも幾つかは多次元データオブジェクトを有
    する方法。
  3. 【請求項3】請求項1の方法において、前記オブジェク
    トセットは1つの多次元データセットを有し、前記オブ
    ジェクトは前記データセット内に複数の多次元データポ
    イントを有する方法。
  4. 【請求項4】請求項1の方法であって、 前記オブジェクトを分割するステップの前に、物理的シ
    ステムを検出し、この検出された物理的システムを表す
    データオブジェクトを生成し、 前記要素計算機から、または、前記要素計算機から離れ
    たソースもしくは前記要素計算機に対応づけられた前記
    メモリから、1つのデータオブジェクトを受信し、 各前記特定の要素計算機と前記隣接する要素計算機との
    間でのオブジェクトの交換のステップの後に、1セット
    の多次元オブジェクトジョインセットを生成するととも
    に、前記オブジェクトジョインセットに基づいて判定規
    準を生成するステップをさらに備える方法。
  5. 【請求項5】請求項1の方法であって、前記メモリはラ
    ンダムアクセスメモリにより構成される方法。
  6. 【請求項6】請求項1の方法であって、前記メモリは不
    揮発性ディスクメモリにより構成される方法。
  7. 【請求項7】請求項1の方法であって、前記オブジェク
    トは複数の多次元データポイントを有し、前記複数のオ
    ブジェクトに対するリファレンスは、各々前記複数のデ
    ータポイントの1個を指すデータベースポインタにより
    構成される方法。
  8. 【請求項8】請求項1の方法であって、前記オブジェク
    トはd次元のデータポイントを有し、前記複数のオブジ
    ェクトの幾つかを前記複数の要素計算機に対応づけるた
    めに前記オブジェクトセットを分割するステップは、 ポイントの個数nおよび複数のプロセッサPに対する分
    割次元数Dを選択し、 各サブパーティションについて、ポイント(pdi)のi
    番目の次元を用いてp1/D個の分位数の値を推定し、 この推定された分位数の値に基づいて各前記サブパーテ
    ィションをp1/D個のサブパーティションに分割し、 このp1/D個の新たなサブパーティションに対して前記
    データポイントを再分配し、 各前記推定、分割および再分配の後、現在の分割次元D
    を比較して、分割の現在レベルiが前記分割次元数に対
    して予め定めた大きさの関係を有するか否か、かつ、前
    記分割から戻って前記予め定めた大きさの関係が満足さ
    れるかを判定し、そうでなければ、分割されたデータセ
    ットを有する次の分割レベルで各サブパーティションに
    ついて、前記推定、分割および再分配のステップを再帰
    的に適用するステップを有する方法。
  9. 【請求項9】請求項8の方法であって、前記分割は、サ
    ンプリングサブ手続および分位数発見サブ手続を有する
    単一パス分位手続を適用することを含む方法。
  10. 【請求項10】請求項1において、前記ツリーはε−k
    −d−Bツリーである方法。
  11. 【請求項11】請求項1の方法であって、前記オブジェ
    クトはd次元のデータポイントを有し、前記複数のオブ
    ジェクトの幾つかを前記複数の要素計算機に対応づける
    ために前記オブジェクトセットを分割するステップは、
    サンプルデータセットに基づいて推定された分位数を決
    定するものであり、 前記データセット(DS)を分割すべきプロセッサの個
    数pを同定し、 前記データセット全体(DS)より少ないポイントのサ
    ンプルセット(SS)を生成するために前記データセッ
    ト全体をサンプリングし、 前記サンプルセットを前記同定された個数のプロセッサ
    に対して分配し、 前記データポイントを再分配することなく、前記データ
    ポイントの特定の幾つかを前記同定された個数の要素計
    算機に対応づけるための分割ルールを同定し、 前記同定されたパーティションについて分割領域境界を
    決定し、 各前記要素計算機により、前記分割されたサンプルセッ
    ト(SS)の前記領域境界をすべての他の要素計算機に
    対して同報し、 各前記要素計算機により、前記サンプルされたデータセ
    ット分位数から決定された前記領域境界を用いて前記デ
    ータセット全体(DS)を再分配するステップを含む方
    法。
  12. 【請求項12】請求項1の方法であって、前記オブジェ
    クトはd次元のデータポイントを有し、前記複数のオブ
    ジェクトの幾つかを前記複数の要素計算機に対応づける
    ために前記オブジェクトセットを分割するステップは、
    各データポイントに対する重み付けに基づいて分位数を
    決定するものであり、 サンプルサイズsを選択し、 前記データセット全体からサイズsのサンプルデータを
    生成し、 分位分割手続を用いて前記サンプルデータセットを分割
    し、 各前記要素計算機内で、ポイント毎に、各前記分割され
    たサンプルデータセットに対応付けられた各データポイ
    ントについてローカルε−k−d−Bツリーを、前記パ
    ーティション内の全データポイントが前記ツリー内に配
    置されるまで構築し、 前記要素計算機間の交差領域を同定するとともに交換
    し、 前記データセットを実際にはジョインすることなく、デ
    ータセットをジョインするために必要となるジョインテ
    ストの回数を計算し、 この計算されたジョインテストの回数に基づいて各ポイ
    ントに対するデータポイント重み値(W)を計算し、 前記ポイントの特定の幾つかに対応するワーク負荷およ
    び各パーティション内のポイントの個数を考慮して、前
    記要素計算機の各々の重み付けされた領域境界を決定す
    るために、前記重み値を用いて前記データセットの重み
    付け分割を実行し、 前記重み付け分割により同定された領域境界を用いて前
    記データセット全体を再分配するステップを有する方
    法。
  13. 【請求項13】請求項12の方法であって、前記要素計
    算機の各々の重み付けされた領域境界を決定するために
    重み付け分割を実行するステップは、 各分割次元(D)において各サブパーティションについ
    て、 分割次元iに沿って前記データセットをソートし、 前記ポイント重み値についてプレフィクス合計を計算
    し、 前記サブパーティションについて決定された領域境界を
    用いて各サブパーティション内の前記データセットを再
    分配するステップを再帰的に実行する方法。
  14. 【請求項14】請求項12の方法であって、前記重み
    は、各前記ポイントに必要とされるジョインテストの回
    数に関する推定されたワーク、および、各データポイン
    トについてツリーの横断に関するワークに基づいて、前
    記データポイントに割り当てられる方法。
  15. 【請求項15】請求項12の方法であって、前記ポイン
    ト重み値(W)は、式W(q)=(r×d)+(k×3
    depth)に従って各ポイント(q)に割り当てられる方
    法。(ただし、rはポイントqに必要なジョインテスト
    の推定された回数、dはデータポイントの次元数、kは
    比例定数、depthはε−k−d−Bツリーの深さ)
  16. 【請求項16】請求項15の方法であって、kは0.1
    と10との間の範囲内の正の定数である方法。
  17. 【請求項17】請求項15の方法であって、kは1と3
    との間の範囲内の正の定数である方法。
  18. 【請求項18】請求項1の方法であって、前記特定の要
    素計算機に対応づけられた前記複数のオブジェクトの幾
    つかを組織するオブジェクトツリー構造を構築するステ
    ップは、ε−k−d−Bツリーを構築することを含む方
    法。
  19. 【請求項19】請求項1の方法であって、前記予め定め
    た第1のルールに基づいて各前記特定の要素計算機につ
    いて、隣接する要素計算機との交差領域を決定するステ
    ップは、 隣接する要素計算機を同定し、 各要素計算機内で、前記ローカルε−k−d−Bツリー
    の各レベルについて、第1のリストデータベース構造お
    よび第2のリストデータベース構造を組み立て、前記第
    1のリストは、前記ツリー内の各位置について、当該レ
    ベルのサブツリーが空かまたはデータポイントを保存し
    ているかを同定するものであり、 前記要素計算機間で第1および第2のリストを交換し、
    これは、前記第1および第2のリストを前記相互接続ネ
    ットワーク上のすべての他の要素計算機へ送信すること
    と、前記他の要素計算機から別の前記第1および第2の
    リストの送信を受けることとを含み、 メモリ内に第3の結果リストデータ構造を生成するため
    に、特定の要素計算機の前記第1のリストとすべての他
    の前記要素計算機の前記第1のリストのエントリを比較
    することにより交差領域を決定し、 予め定めたルールに基づいて、交差領域を前記要素計算
    機に割り当てるステップを含む方法。
  20. 【請求項20】請求項19の方法であって、前記第1お
    よび第2のリストは2進値を有し、前記交差領域を決定
    するステップは、前記第1および第2のリスト間で要素
    毎の論理演算を実行することを含む方法。
  21. 【請求項21】請求項1の方法であって、前記予め定め
    たオブジェクト類似基準に基づいてオブジェクトをジョ
    インすることにより、多次元オブジェクトのジョインさ
    れたグループを生成するステップは、非自己ジョイン手
    続を含む各非リーフノード用の自己ジョイン手続を実行
    することと、各リーフノード用のリーフ非自己ジョイン
    手続を含む各リーフノード用のリーフ自己ジョイン手続
    を実行することを含む方法。
  22. 【請求項22】コンピュータシステムで用いるためのコ
    ンピュータ読み取り可能な記憶媒体であって、このシス
    テムは、複数のプロセッサと、ユーザからのコマンドを
    受信するユーザインタフェースと、複数のオブジェクト
    および複数の実行可能な手続を保存する記憶媒体とを有
    し、各前記手続は、類似の特徴を有する前記複数のオブ
    ジェクトのうちの幾つかを同定するための前記ユーザか
    らの問い合わせ入力に従って前記複数のオブジェクトを
    検索するように前記コンピュータに指示する少なくとも
    1つの実行可能な命令を含み、前記複数の命令は、 前記複数のオブジェクトの1つを前記メモリ内に保存す
    るようコンピュータに指示する命令と、 前記オブジェクトを複数のサブパーティションに分割す
    るとともに、前記複数のオブジェクトの幾つかを前記複
    数のプロセッサに対応づけるようコンピュータに指示す
    る命令と、 前記特定のプロセッサに対応づけられた前記複数のオブ
    ジェクトの前記幾つかを組織するローカルε−k−d−
    Bツリーを構築するようコンピュータに指示する命令
    と、 前記オブジェクト空間と隣接プロセッサとの交差領域を
    決定するようコンピュータに指示する命令と、 予め定めたルールに基づいて隣接プロセッサとの間でオ
    ブジェクトを交換するようコンピュータに指示する命令
    と(ここに、前記隣接プロセッサは、ある所定距離内に
    あるオブジェクトに対応づけられたプロセッサであ
    る)、 予め定めたオブジェクト類似基準に基づいて前記オブジ
    ェクトをジョインすることにより多次元オブジェクトの
    ジョインされたグループを生成するようコンピュータに
    指示する命令とを含み、 前記オブジェクトは、階層的に前記オブジェクトを表す
    データ構造により構成され、データベース要素とインデ
    ックスの配列とこれらに対応づけられたポインタとを有
    し、 前記手続は、さらに、前記データベース要素の内容をア
    クセスするために、前記インデックスの配列およびポイ
    ンタを用いて前記データ構造を横断するための命令と、 前記多次元オブジェクトのジョインされたグループを表
    す前記データ構造を前記メモリ内に確立する手続とを有
    する方法。
  23. 【請求項23】コンピュータシステムであって、 複数の要素計算機(各前記要素計算機は、命令を実行す
    るプロセッサと、前記要素計算機に接続された対応した
    メモリとを有し、前記メモリはオブジェクトおよび複数
    の手続を保存する)と、 複数のオブジェクトを保存する記憶手段と、 前記要素計算機を前記対応したメモリおよび前記記憶手
    段に結合する相互接続ネットワークと、 (前記複数の手続は、前記オブジェクトに対して多次元
    類似ジョイン動作を実行することにより、ジョインされ
    た多次元オブジェクトの対を生成する手続を含み) 前記多次元類似ジョイン動作を実行することにより、ジ
    ョインされた多次元オブジェクトの対を生成する手続を
    実行する手段と、 を備えたコンピュータシステム。
  24. 【請求項24】請求項23のコンピュータシステムにお
    いて、前記手続を実行する前記手段は、 前記オブジェクトセット内の前記複数のオブジェクトに
    対するリファレンスを前記メモリ内に保存する手段と、 前記複数のオブジェクトの幾つかを前記複数の要素計算
    機に対して対応づけるように、前記オブジェクトセット
    を複数のサブパーティションに分割する手段と、 各要素計算機内において、前記特定の要素計算機に対応
    づけられた前記複数のオブジェクトの前記幾つかを組織
    するε−k−d−Bツリーを構築する手段と、 各要素計算機内において、予め定めた第1のルールに基
    づいて各前記特定の要素計算機について隣接要素計算機
    との交差領域を決定する手段と、 予め定めた第2のルールに基づいて、各前記特定の要素
    計算機と前記隣接要素計算機との間でオブジェクトを交
    換する手段と、 予め定めたオブジェクト類似基準に基づいて前記オブジ
    ェクトをジョインすることにより、多次元オブジェクト
    のジョインされたグループを生成する手段と、 を備えたコンピュータシステム。
  25. 【請求項25】各々、中央処理ユニットとメモリとを有
    する多数の要素計算機を備え、前記要素計算機は相互接
    続ネットワークで接続されたコンピュータシステムにお
    いて、ユーザが定めた類似の特徴を有する類似項目を同
    定するために高次元データ項目のデータベースの並列問
    い合わせを高速かつ効率的に実行し、前記類似項目をジ
    ョインしてデータ項目の出力セットを構成する方法であ
    って、前記データベースは、ε−k−d−Bツリー構造
    を有し、ポイントの個数のみに基づくのではなく負荷均
    衡重み付け操作に基づいて前記多数の要素計算機に対し
    て分割され、前記重み付けは、前記ツリー横断コストお
    よび前記ツリー計算コストの組合せに基づいて計算され
    ることを特徴とする方法。
  26. 【請求項26】d次元の項目のデータセットからなるデ
    ータベースを複数の要素計算機および各前記要素計算機
    に対応づけられたメモリに対して分割する重み付け分位
    方法であって、前記方法は、 前記データセット全体からサイズsのサンプルデータセ
    ットを生成し、 分位分割手続を用いて前記サンプルデータセットを分割
    し、 各前記要素計算機内で、ポイント毎に、各前記分割され
    たサンプルデータセットに対応付けられた各データポイ
    ントについてローカルε−k−d−Bツリーを、前記パ
    ーティション内の全データポイントが前記ツリー内に配
    置されるまで構築し、 前記要素計算機間の交差領域を同定するとともに交換
    し、 前記データセットを実際にはジョインすることなく、デ
    ータセットをジョインするために必要となるジョインテ
    ストの回数を計算し、 この計算されたジョインテストの回数に基づいて各ポイ
    ントに対するデータポイント重み値を計算し、 前記ポイントの特定の幾つかに対応するワーク負荷およ
    び各パーティション内のポイントの個数を考慮して、前
    記要素計算機の各々の重み付けされた領域境界を決定す
    るために、前記重み値を用いて前記データセットの重み
    付け分割を実行し、 前記重み付け分割により同定された領域境界を用いて前
    記データセット全体を再分配するステップを備える方
    法。
  27. 【請求項27】請求項26の方法であって、前記要素計
    算機の各々の重み付けされた領域境界を決定するために
    重み付け分割を実行するステップは、 各サブパーティションに対して、各分割次元(D)にお
    いて、 分割次元iに沿って前記データセットをソートするステ
    ップと、 前記ポイント重み(W)のプレフィクス合計を計算する
    ステップと、 各サブパーティション内の前記データセットを、前記サ
    ブパーティションについて決定された領域境界を用いて
    再分配するステップとを再帰的に実行するステップを有
    する方法。
  28. 【請求項28】請求項27の方法であって、前記重み
    は、各前記ポイントについて必要とされるジョインテス
    トの回数に関連した推定されたワークと、各データポイ
    ントについてのツリーの横断に関連したワークとに基づ
    いて、前記データポイントへ割り当てられる方法。
  29. 【請求項29】請求項27の方法であって、前記ポイン
    ト重み値(W)は、式W(q)=(r×d)+(k×3
    depth)に従って各ポイント(q)に割り当てられる方
    法。(ただし、rはポイントqに必要なジョインテスト
    の推定された回数、dはデータポイントの次元数、kは
    比例定数、depthはε−k−d−Bツリーの深さ)
  30. 【請求項30】請求項29の方法であって、kは、ほぼ
    1と3の間の範囲内の正の整数である方法。
JP10352250A 1997-12-12 1998-12-11 効率的な並列高次元類似ジョインのための構造および方法 Pending JPH11242688A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/989,847 US5987468A (en) 1997-12-12 1997-12-12 Structure and method for efficient parallel high-dimensional similarity join
US08/989,847 1997-12-12

Publications (1)

Publication Number Publication Date
JPH11242688A true JPH11242688A (ja) 1999-09-07

Family

ID=25535527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10352250A Pending JPH11242688A (ja) 1997-12-12 1998-12-11 効率的な並列高次元類似ジョインのための構造および方法

Country Status (2)

Country Link
US (1) US5987468A (ja)
JP (1) JPH11242688A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100465111B1 (ko) * 2002-09-11 2005-01-05 삼성전자주식회사 분할 기반 고차원 유사 조인 방법
CN111046092A (zh) * 2019-11-01 2020-04-21 东北大学 一种基于cpu-gpu异构体系结构的并行相似性连接方法
US11113314B2 (en) 2016-06-21 2021-09-07 Nec Corporation Similarity calculating device and method, and recording medium
JP2023506553A (ja) * 2019-12-23 2023-02-16 株式会社アドバンテスト 入力サンプルのセットに基づいて複数の出力サンプルを提供するための信号処理装置、および入力サンプルのセットに基づいて複数の出力サンプルを提供するための方法

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212628B1 (en) * 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
US6272486B1 (en) * 1998-04-16 2001-08-07 International Business Machines Corporation Determining the optimal number of tasks for building a database index
US6052689A (en) * 1998-04-20 2000-04-18 Lucent Technologies, Inc. Computer method, apparatus and programmed medium for more efficient database management using histograms with a bounded error selectivity estimation
US6484182B1 (en) * 1998-06-12 2002-11-19 International Business Machines Corporation Method and apparatus for publishing part datasheets
US6282533B1 (en) * 1998-09-30 2001-08-28 Lucent Technologies Inc. System and method for performing I/O-efficient join processing
KR100284778B1 (ko) * 1998-10-28 2001-03-15 정선종 내용기반 이미지 검색을 위한 고차원 색인구조의 삽입 방법
US6311179B1 (en) * 1998-10-30 2001-10-30 International Business Machines Corporation System and method of generating associations
US6721759B1 (en) * 1998-12-24 2004-04-13 Sony Corporation Techniques for spatial representation of data and browsing based on similarity
US6704721B1 (en) * 1999-04-02 2004-03-09 International Business Machines Corporation Systems and methods for automated navigation between dynamic data with dissimilar structures
CA2279359C (en) * 1999-07-30 2012-10-23 Basantkumar John Oommen A method of generating attribute cardinality maps
US6532476B1 (en) * 1999-11-13 2003-03-11 Precision Solutions, Inc. Software based methodology for the storage and retrieval of diverse information
KR100344530B1 (ko) * 1999-12-20 2002-07-24 한국과학기술원 시계열 데이터베이스에서 윈도우 구성의 이원성을 사용한 서브시퀀스 매칭방법
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
US7035864B1 (en) 2000-05-18 2006-04-25 Endeca Technologies, Inc. Hierarchical data-driven navigation system and method for information retrieval
US7325201B2 (en) * 2000-05-18 2008-01-29 Endeca Technologies, Inc. System and method for manipulating content in a hierarchical data-driven search and navigation system
US7617184B2 (en) 2000-05-18 2009-11-10 Endeca Technologies, Inc. Scalable hierarchical data-driven navigation system and method for information retrieval
US7062483B2 (en) * 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
KR100439371B1 (ko) * 2000-09-08 2004-07-09 엘지전자 주식회사 히스토그램을 이용한 멀티미디어 검색방법
US7958096B2 (en) * 2000-09-20 2011-06-07 Ndsu-Research Foundation System and method for organizing, compressing and structuring data for data mining readiness
US6941303B2 (en) * 2000-09-20 2005-09-06 Ndsu Research Foundation System and method for organizing, compressing and structuring data for data mining readiness
US6735595B2 (en) 2000-11-29 2004-05-11 Hewlett-Packard Development Company, L.P. Data structure and storage and retrieval method supporting ordinality based searching and data retrieval
WO2002061626A1 (en) * 2001-01-30 2002-08-08 Manugistics, Inc. System and method for viewing supply chain network metrics
US6671694B2 (en) 2001-06-04 2003-12-30 Hewlett-Packard Development Company, L.P. System for and method of cache-efficient digital tree with rich pointers
US6816856B2 (en) * 2001-06-04 2004-11-09 Hewlett-Packard Development Company, L.P. System for and method of data compression in a valueless digital tree representing a bitset
US6654760B2 (en) 2001-06-04 2003-11-25 Hewlett-Packard Development Company, L.P. System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning
US6785687B2 (en) 2001-06-04 2004-08-31 Hewlett-Packard Development Company, L.P. System for and method of efficient, expandable storage and retrieval of small datasets
US7007035B2 (en) * 2001-06-08 2006-02-28 The Regents Of The University Of California Parallel object-oriented decision tree system
US6745198B1 (en) * 2001-06-11 2004-06-01 Ncr Corporation Parallel spatial join index
US7194477B1 (en) * 2001-06-29 2007-03-20 Revenue Science, Inc. Optimized a priori techniques
US6804669B2 (en) * 2001-08-14 2004-10-12 International Business Machines Corporation Methods and apparatus for user-centered class supervision
KR100472949B1 (ko) * 2001-10-18 2005-03-08 한국전자통신연구원 시계열 데이터베이스에서 서브시퀀스 매칭의 인덱스검색방법
US7058642B2 (en) * 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database
US6947869B2 (en) * 2002-03-29 2005-09-20 The United States Of America As Represented By The Secretary Of The Navy Efficient near neighbor search (ENN-search) method for high dimensional data sets with noise
US6819967B2 (en) 2002-07-24 2004-11-16 International Business Machines Corporation Relational database for producing bill-of-materials from planning information
US7185012B1 (en) * 2003-02-10 2007-02-27 At&T Corp. Method and apparatus for ranked join indices
US7428528B1 (en) 2004-03-31 2008-09-23 Endeca Technologies, Inc. Integrated application for manipulating content in a hierarchical data-driven search and navigation system
US7346625B2 (en) * 2004-11-05 2008-03-18 International Business Machines Corporation Methods and apparatus for performing structural joins for answering containment queries
US20060101045A1 (en) * 2004-11-05 2006-05-11 International Business Machines Corporation Methods and apparatus for interval query indexing
WO2006055894A2 (en) * 2004-11-17 2006-05-26 North Dakota State University Data mining of very large spatial dataset
US20060161471A1 (en) * 2005-01-19 2006-07-20 Microsoft Corporation System and method for multi-dimensional average-weighted banding status and scoring
US20060206513A1 (en) * 2005-03-08 2006-09-14 International Business Machines Corporation Method for speed-efficient and memory-efficient construction of a trie
US7490289B2 (en) * 2005-06-09 2009-02-10 International Business Machines Corporation Depth indicator for a link in a document
US8019752B2 (en) 2005-11-10 2011-09-13 Endeca Technologies, Inc. System and method for information retrieval from object collections with complex interrelationships
US7447698B2 (en) * 2005-12-13 2008-11-04 International Business Machines Corporation Method for balancing binary search trees
JP4158803B2 (ja) * 2005-12-13 2008-10-01 沖電気工業株式会社 データ転送ネットワークおよびデータ転送ネットワークの運用方法
US8443372B2 (en) * 2006-03-23 2013-05-14 International Business Machines Corporation Methods and systems for partitioning data in parallel processing systems
US8892509B2 (en) * 2006-03-28 2014-11-18 Oracle America, Inc. Systems and methods for a distributed in-memory database
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.
US20080109423A1 (en) * 2006-11-08 2008-05-08 Eric Lawrence Barsness Apparatus and method for database partition elimination for sampling queries
US8676802B2 (en) 2006-11-30 2014-03-18 Oracle Otc Subsidiary Llc Method and system for information retrieval with clustering
US8495663B2 (en) 2007-02-02 2013-07-23 Microsoft Corporation Real time collaboration using embedded data visualizations
US8799272B2 (en) * 2007-07-20 2014-08-05 Hewlett-Packard Development Company, L.P. Data skew insensitive parallel join scheme
US8739022B2 (en) * 2007-09-27 2014-05-27 The Research Foundation For The State University Of New York Parallel approach to XML parsing
US7856434B2 (en) * 2007-11-12 2010-12-21 Endeca Technologies, Inc. System and method for filtering rules for manipulating search results in a hierarchical search and navigation system
US8359365B2 (en) 2008-02-11 2013-01-22 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallel document indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
US9785700B2 (en) * 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
CN101639769B (zh) * 2008-07-30 2013-03-06 国际商业机器公司 在多处理器系统上对数据集进行划分及排序的方法和装置
US8150836B2 (en) * 2008-08-19 2012-04-03 Teradata Us, Inc. System, method, and computer-readable medium for reducing row redistribution costs for parallel join operations
US7904363B2 (en) * 2008-09-24 2011-03-08 Morgan Stanley Database for financial market data storage and retrieval
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8886796B2 (en) * 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
US8782514B1 (en) * 2008-12-12 2014-07-15 The Research Foundation For The State University Of New York Parallel XML parsing using meta-DFAs
US8706737B2 (en) * 2008-12-31 2014-04-22 At&T Intellectual Property I, L.P. Method and apparatus for processing of top-K queries from samples
US20100185672A1 (en) * 2009-01-21 2010-07-22 Rising Iii Hawley K Techniques for spatial representation of data and browsing based on similarity
US20100287015A1 (en) * 2009-05-11 2010-11-11 Grace Au Method for determining the cost of evaluating conditions
US20110218978A1 (en) * 2010-02-22 2011-09-08 Vertica Systems, Inc. Operating on time sequences of data
US8707320B2 (en) * 2010-02-25 2014-04-22 Microsoft Corporation Dynamic partitioning of data by occasionally doubling data chunk size for data-parallel applications
US8321476B2 (en) * 2010-03-29 2012-11-27 Sybase, Inc. Method and system for determining boundary values dynamically defining key value bounds of two or more disjoint subsets of sort run-based parallel processing of data from databases
KR101794910B1 (ko) * 2011-06-07 2017-11-07 삼성전자주식회사 다차원 데이터에 관한 영역 질의의 선택도를 계산하는 장치 및 방법
US9053140B2 (en) * 2012-02-03 2015-06-09 Apple Inc. Enhanced B-trees with record merging
US9305074B2 (en) * 2013-06-19 2016-04-05 Microsoft Technology Licensing, Llc Skew-aware storage and query execution on distributed database systems
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
US10032244B2 (en) * 2014-08-21 2018-07-24 Intel Corporation Method and apparatus for implementing a nearest neighbor search on a graphics processing unit (GPU)
US11579774B2 (en) 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers
WO2016118607A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Distributed index for fault tolerant object memory fabric
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
RU2015139057A (ru) 2015-09-14 2017-03-17 ИЭмСи КОРПОРЕЙШН Способ и система распределенного хранения данных
US10095757B2 (en) 2015-12-07 2018-10-09 Sap Se Multi-representation storage of time series data
US10685306B2 (en) * 2015-12-07 2020-06-16 Sap Se Advisor generating multi-representations of time series data
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
EP3387548B1 (en) 2015-12-08 2023-08-02 Ultrata LLC Memory fabric operations and coherency using fault tolerant objects
US10133770B2 (en) * 2015-12-16 2018-11-20 EMC IP Holding Company LLC Copying garbage collector for B+ trees under multi-version concurrency control
US10585889B2 (en) * 2015-12-23 2020-03-10 Intel Corporation Optimizing skewed joins in big data
CN106095968A (zh) * 2016-06-20 2016-11-09 山东理工大学 n维海量点云的R树形位多目标结点分裂方法
US10114846B1 (en) 2016-06-24 2018-10-30 Amazon Technologies, Inc. Balanced distribution of sort order values for a multi-column sort order of a relational database
US10496638B2 (en) 2016-12-07 2019-12-03 City University Of Hong Kong Systems and methods for privacy-assured similarity joins over encrypted datasets
US11036715B2 (en) 2018-01-29 2021-06-15 Microsoft Technology Licensing, Llc Combination of techniques to detect anomalies in multi-dimensional time series
US10783022B2 (en) 2018-08-03 2020-09-22 EMC IP Holding Company LLC Immediate replication for dedicated data blocks
US11995047B2 (en) * 2020-04-10 2024-05-28 International Business Machines Corporation Dynamic schema based multitenancy
US11615094B2 (en) 2020-08-12 2023-03-28 Hcl Technologies Limited System and method for joining skewed datasets in a distributed computing environment
US11727009B2 (en) 2020-09-29 2023-08-15 Hcl Technologies Limited System and method for processing skewed datasets
CN113713381B (zh) * 2021-09-09 2023-06-20 腾讯科技(深圳)有限公司 对象管理方法、装置、设备、存储介质及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5579471A (en) * 1992-11-09 1996-11-26 International Business Machines Corporation Image query system and method
US5647058A (en) * 1993-05-24 1997-07-08 International Business Machines Corporation Method for high-dimensionality indexing in a multi-media database

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100465111B1 (ko) * 2002-09-11 2005-01-05 삼성전자주식회사 분할 기반 고차원 유사 조인 방법
US7167868B2 (en) 2002-09-11 2007-01-23 Samsung Electronics Co., Ltd. Partition-based high dimensional similarity join method
US11113314B2 (en) 2016-06-21 2021-09-07 Nec Corporation Similarity calculating device and method, and recording medium
CN111046092A (zh) * 2019-11-01 2020-04-21 东北大学 一种基于cpu-gpu异构体系结构的并行相似性连接方法
CN111046092B (zh) * 2019-11-01 2022-06-17 东北大学 一种基于cpu-gpu异构体系结构的并行相似性连接方法
JP2023506553A (ja) * 2019-12-23 2023-02-16 株式会社アドバンテスト 入力サンプルのセットに基づいて複数の出力サンプルを提供するための信号処理装置、および入力サンプルのセットに基づいて複数の出力サンプルを提供するための方法

Also Published As

Publication number Publication date
US5987468A (en) 1999-11-16

Similar Documents

Publication Publication Date Title
JPH11242688A (ja) 効率的な並列高次元類似ジョインのための構造および方法
Dafir et al. A survey on parallel clustering algorithms for big data
Wolf et al. A data locality optimizing algorithm
Böhm et al. The k-nearest neighbour join: Turbo charging the kdd process
Williams Performance of dynamic load balancing algorithms for unstructured mesh calculations
Hadjis et al. Omnivore: An optimizer for multi-device deep learning on cpus and gpus
US5884320A (en) Method and system for performing proximity joins on high-dimensional data points in parallel
Fjällström Algorithms for graph partitioning: A survey
Zhao et al. $ k $ NN-DP: handling data skewness in $ kNN $ joins using MapReduce
Ordonez et al. PCA for large data sets with parallel data summarization
Jafari et al. Fast shared-memory streaming multilevel graph partitioning
March et al. An algebraic parallel treecode in arbitrary dimensions
Gómez-Luna et al. Evaluating machine learningworkloads on memory-centric computing systems
Buono et al. Optimizing sparse linear algebra for large-scale graph analytics
Lu et al. Community detection in complex networks using nonnegative matrix factorization and density-based clustering algorithm
Jiang et al. Co-design hardware and algorithm for vector search
Griebel et al. A particle-partition of unity method-Part IV: Parallelization
Danesh et al. Ensemble-based clustering of large probabilistic graphs using neighborhood and distance metric learning
KR100465111B1 (ko) 분할 기반 고차원 유사 조인 방법
Velentzas et al. GPU-aided edge computing for processing the k nearest-neighbor query on SSD-resident data
Qiao et al. GPU implementation of Borůvka’s algorithm to Euclidean minimum spanning tree based on Elias method
Farouzi et al. A scalable randomized algorithm for triangle enumeration on graphs based on SQL queries
Yaşar et al. On Symmetric Rectilinear Partitioning
Ruiz et al. Extreme pivots: a pivot selection strategy for faster metric search
Pavithra et al. Image matching using weighted graph matching algorithm