SQLの世界にプランなるものがあると知った
SQLが内部的に処理されるときのデータ構造をプランと呼ぶらしい.構文木よりちょっと上,Javaバイトコードと同程度の抽象度かな.
私はSQLはほんのわずかな SELECT * WHERE ...
しか喋れないのだけど,コンピュータとはデータを処理する機械である的な基礎に立ち返った見方をするときにやはり存在感があるのはRDBMSであり,SQLだ.この先 自分がDBエンジニアになるつもりはないが,置き換え需要的な観点からしても少しくらい知識を持ちたいと時々思う.
- http://blogs.msdn.com/b/jpsql/archive/2011/09/07/10207003.aspx 実行プランを読む - 基本編 (その 1) - Microsoft SQL Server Japan Support Team Blog - Site Home - MSDN Blogs
- パフォーマンスモニターで見る SQL Server のプランキャッシュ « SE の雑記
そうそう,置き換え需要と私が言ってる中にも2種類あって,Fusion-ioやらReRAM, MRAMと言った新規デバイスの特性を積極的に生かした,でも基礎設計は旧来のMySQLとかOracleそのままっていう無難な流れと,膨大なSQL仕様の一部を切り出して未来技術でもってそこに特化したよりエッジの効いた流れがある.後者はどのサブセットを選ぶか(そしてどのような拡張仕様を提供するか)決める際,現実の需要についての経験値がないとちょっと先が読めないよね.この,既にIBMに買収されたNetezzaなんかは動く製品として売ってるようだけど,はてさて実際に導入でもしたらどんな悪戦苦闘が待ってるやら:
- http://thinkit.co.jp/article/1161/1 連載:失敗事例に学ぶDWH/BI導入ノウハウ > 第2回 超並列DWHとユーザー定義関数
この記事から読み取れるのは,「SQLインタプリタ」がFPGAに実装されているのではなくて,コンパイルされたプランのうち特定部分をFPGAにオフロードしてデータ並列で動くということ.まぁGPUと似た流れだな.このオフロード可能部分が処理の十分に大半を占めていなければ高い金払ったのに見合うパフォーマンスは出ないだろう.Netezzaの中の人としてはオフロード可能部分を広げる開発工数とのバランスと,そもそも技術面での壁があって,難しいね.かっこいいけど.