9. なぜデータ並列が重要か
At 10 MB/s
1.2 days to scan
1 Terabyte
1,000並列
1.7 minutes to scan
1 Terabyte
10 MB/s
Materials taken from “Readings in Database Systems”, Joseph M. Hellerstein and Michael Stonebraker, eds.
9
26. データ分割
Range partitioning
Pros. 範囲問合せや結合が容易
Cons. データの偏りが発生
Round-robin partitioning
選択、射影演算ぐらいにしか使えない
i-p
q-z
a
Pros. データの偏りが少ない
負荷の均等分散が可能
Cons. 等結合も範囲問合せも困難
a-h
z
a d
c f
b e
a
z
Hash partitioning
Pros. 比較的データの偏りが小さい
Pros. 等結合に適する
偏りを小さくする手法が確立されている
並列ハッシュ結合で高速実行できる
b d
a c
e
Hash(x)
a
z
Cons. 範囲問合せが困難
多くの商用並列DBでハッシュ分割+並列Graceが採用されている
パーティショニングはデータ並列への鍵
26
27. データ分割
Range partitioning
なおList partitioningというのもあり、Range partitioning q-z
i-p
a-h
Pros. 範囲問合せや結合が容易
は暗黙的なList partitioningといえる
Cons. データの偏りが発生
Round-robin partitioning
Pros. データの偏りが少ない
負荷の均等分散が可能
Cons. 等結合も範囲問合せも困難
a
選択、射影演算ぐらいにしか使えない
a d
z
c f
b e
a
z
Hash partitioning
Pros. 比較的データの偏りが小さい
Pros. 等結合に適する
偏りを小さくする手法が確立されている
並列ハッシュ結合で高速実行できる
b d
a c
e
Hash(x)
a
z
Cons. 範囲問合せが困難
多くの商用並列DBでハッシュ分割+並列Graceが採用されている
パーティショニングはデータ並列への鍵
27
44. GROUP BY in MapReduce
SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age
pv_users
pageid
age
key
value
key
value
pagei
1
25
<1,25>
1
<1,25>
1
1
2
25
<2,25>
1
<1,32>
1
1
Map
pageid
1
age
32
key
<1,32>
value
1
Shuffle
Sort
Reduce
key
<2,25>
value
1
pagei
2
2
25
<2,25>
1
<2,25>
1
44
45. GROUP BY in MapReduce
SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age
key
value
key
value
pageid
age
count
<1,25>
1
<1,25>
1
1
25
1
<2,25>
1
<1,32>
1
1
32
1
pageid
age
count
2
25
2
key
<1,32>
<2,25>
value
1
1
Shuffle
Sort
Reduce
key
<2,25>
<2,25>
value
1
1
45
50. Multi-way Join by MapReduce
A
(A join B on A.k1=B.k1) as AB join C on AB.k1 = C.k2
k1
av
1
111
AB
k1
B
av
1
k1
bv
1
bv
ABC
111 222
MapReduce
222
k1
C
MapReduce
k2
bv
cv
111 222 333
cv
1
1
av
333
複数回のMapReduceイテレーションが必要
⇒Shuffleのオーバヘッドや分散ファイルシステム
への入出力が増える
50