90 likes | 275 Views
Size Separation Spatial Join. N. Koudas, K. C. Sevcik, Proceedings of the ACM SIGMOD Conference on Management of Data, pp.324-335, 1997. この論文を読んだ理由. 最新の spatial join の論文の調査 2つのデータセット両方に index が無い場合( selection の結果など)の spatial join アルゴリズム. Size Separation Spatial Join.
E N D
Size Separation Spatial Join N. Koudas, K. C. Sevcik,Proceedings of the ACM SIGMOD Conference on Management of Data, pp.324-335, 1997
この論文を読んだ理由 • 最新のspatial joinの論文の調査 • 2つのデータセット両方にindexが無い場合(selectionの結果など)のspatial joinアルゴリズム
Size Separation Spatial Join • 2つのデータセットA,Bに対し、Filter Treeを作成しjoinを行なう • size separation spatial joinの特徴: • データの複製(replication)がない • PBSMでは、データセットA,B両方にreplicationが起こる可能性がある • 重複する解が出力される可能性がある • SHJ(Spatial Hash Join)では、データセットB(後に処理する方のデータセット)にreplicationが起こる可能性がある
level 0 A level 1 B level 2 level 3 Filter Tree • 階層構造でMBRをフィルタ • MBRが、空間を分割する線分(各軸を二分する)と交差しない最下位のlevelに格納 • 大きいオブジェクトほど上のlevelに格納される • 階層の深さ L は「データ中の最小のMBRの短い辺の長さが 2-Lより大きい」を満たす最小の L • 木の高さはあらかじめ決めておく Aはlevel 0にBはlevel 1に格納される
filtering機能 • DSB(Dynamic Spatial Bitmap) • データセットAのデータからFilter Treeを作成するときに、どのgridにAのデータがあるかを記録しておく • あるlevel kでデータをフィルタする • 4K bitの配列を全て0で埋める • 各要素は各gridにデータがあるかを記録 • level kより下の階層にデータを格納するときは、データを格納するgridを部分空間とするgridをlevel k中で求め、対応するbitを1にする • level kより上の階層にデータを格納するときは、データを格納するgridの部分空間になっているgridをlevel k中で求め、対応するbitを全て1にする • データセットBのデータを分割するときにDSBが0となっているgridとその部分空間となっているgridにはデータを格納しない level k
0101 0110 1001 1010 01 10 0100 0111 1011 1000 0010 1101 0011 1100 00 11 0000 0001 1110 1111 level 2 level 1 Hilbert value • 2次元空間をgridに分割 • level kでは空間を2(2k-1)個の線分によって4k個に分割 • Hilbert curveでの順序で管理 • この順序で決めたbitの並びをHilbert valueと呼ぶ • 木の深さ(>0)をLとすると、Hilbert valueは2L+1bitで表わされる
A C A 0111 B 0000C 1100 B B A C ソート 各levelでのデータの管理 • データはentity descriptorとして管理 • entity descriptorは以下の情報を持つ • オブジェクトのMBR (xl, yl), (xh, yh) • オブジェクトのMBRの中心点のHilbert value H(xc,yc) • オブジェクトへの参照 • 各levelにあるentity descriptorをH(xc,yc)でソート
Filter Tree間でのjoin • SlFi(en, en+1) : entity descriptorの集合 • Filter Tree Fi中の level l のentity descriptorのうち、Hilbert valueがenからen+1までのもの • SlF1(en, en+1)はSl-iF2(en, en+1)とjoinを行なう • ここで i=0,…,l • SlF2(en, en+1)はSl-iF1(en, en+1)とjoinを行なう • ここで i=1,…,l
Filter Tree間でのjoin • 特定の範囲のHilbert valueを持つgrid間でjoin • 最上位の階層まで繰り返しjoinを行なう 最上位のlevel Hilbert valueの下4bitを除いたものが等しい Hilbert valueの下2bitを除いたものが等しい Hilbert valueが等しい BのFilter Tree AのFilter Tree