8. 関連するDB研究の変遷
~1980’s ~2000’s ~2012
Asilomar Claremont
Report [Ber98] Report [Agr09]
Int’l Workshop on Data
Management on New Hardware (DaMoN)
Columnar-storage 2005
for statistical
applications (1970’s) Bottleneck shifts in databases VLDB 10 years
[Ail99, Bon99, Rao99] best paper [Bon09]
DSM [Geo85]
C-Store Vertica
2005
DSM in Bubba, highly-
parallel DB [Geo85] Architecture shifts [Sto07]
MonetDB
Around 1996 Spin-off
in 2005 2008
MonetDB/X100 Vectorwise
8
13. 余剰に発生するjoinコストへの対処
• tupleに復元するために必要なjoin処理
SELECT * FROM xxx;
A.pid = B.pid
テーブルxxx Column A Column B
Name Age pid Name pid Age
Alice 28 1 Alice 4 24
sorted values
Bill 24 5 Bill 5 24
Bob 32 2 Bob 1 28
Jill 24 4 Jill 3 29
Steve 29 3 Steve 2 32
※pidはMonetDBのBATにおけるoid [Bon09] 13
14. ストレージ構成とプラン最適化
• Joinコストを軽減するための手法
– 1. fractured mirrors [Rav02]やsuper projection [And12]の
ように元の順序関係を維持したストレージ構成で最適化
– 2. join Index [Val89](下図)、さらにjoin高速化で対処
join index
column A column B
Name join index Age
Alice 3 24
sorted values
Bill 2 24
Bob 5 28
Jill 1 29
Steve 4 32
14
15. join高速化関係の論文
• Martina-Cezara Albutiu et al., Massively Parallel Sort-Merge Joins in Main
Memory Multi-Core Database Systems, VLDB, 2012
• S. Blanas et al., Design and Evaluation of main memory Hash Join
Algorithms for Multi-core CPUs, SIGMOD, 2011
• C. Kim et al., Sort vs. Hash Revisited: Fast Join Implementation on Modern
Multi-Core CPUs, VLDB, 2008
• Mehul A. Shah et al., Fast Scans and Joins using Flash Drives, DaMon, 2008
• S. Chen et al., Improing Hash Join Performance through Prefetching, ACM
TODS, 2007
• S. Manegold et al., Optimizing main-Memory Join on Modern Hardware,
IEEE TKDE, 2002
• S. Manegold et al., What happens during a join dissecting CPU and
Memory Optimization Effects, VLDB, 2000
• P. A. Boncz et al., Database Architecture Optimized for the New
Bottleneck: Memory Access, VLDB, 1999
15
16. PNのposition filter処理 [Mig09] SELECT * FROM xxx
WHERE Age > 25;
• selectノードが対象とするカ
ラム以外の絞り込みはpidを
用いて実施* A.pid = B.pid
• selectノードのpush-down処 Scan Node
position filtered
Copy Node
理によりプランの下端部が
有向グラフに σ
Age > 25
pid Name pid Age
• copyノードが入力されたpid
1 Alice
sorted values
4 24
集合からbitmapを作成して 5 Bill 5 24
scanノードに転送 2 Bob 1 28
4 Jill 3 29
3 Steve 2 3216
*C-Storeのソースコードを参照