ToyQL: Braindump #1

せっかくなので頭の中にあることを書き出しておく。良いプログラマの皆様はこの進め方に「そんなことやってるからダメなんだよ」と思うことも多いでしょうがそっとしといてください。大してコードを書けないおっさんが余暇プロジェクトをやるときに何を考えてるかというのは、役には立たないにせよ興味深い記録になるでしょう。

不安の一つだった parser generator は PLY でなんとかなりそうなのでよかった。言語処理系的な面倒は色々あるだろうけれど、そこはビギナーとして素直にがんばる。

まだコードを書き始められる気がしない。他にも no idea 事項が多すぎる。わからないこと:

  • 全体のアーキテクチャ。一度は何か実物のコードを眺めたい気がする。OLAP 系のオープンソースのデータベースをなんか眺めたい。論文も読んだことだし Impala でいいのかな。分散しなくていいんだけど、いまさら C で書かれた昔ながらのデータベースを読むのはいやだ。
  • AST から実行計画を作るところの見当がつかない。いま Volcano の論文を読んで実行計画のオブジェクトモデルみたいのが少しわかってきたが、それと SQL の関係がわかってない。コレはどうしたら良いのだろうなあ。いいかげん SQL の本を読むべきなのかもしれないが、それは先が長すぎるので Wikipedia とかで最低限の理解を得られないものか。
  • それと関連し、SQL のパースの反対側、実際に DataFrame を enumerate してデータを extract するところ、実行計画というか実行そのものも、どういうデザインがよいかよくわからない。これは時間をとって考えないといけないが、その前にとりあえず関係代数の復習はしたい。
  • などの疑問は教科書に書いてありそうなので、結果的に RDB の教科書を一冊手元に置いておくのがよい気もする。しかしどれもこれも厚くて高くてレビューが低いので気が乗らない。いっそ cow book を買い直せばいいのか・・・。
  • 書捨てでない Python の書き方。これは blocking というほどではないけれど、いまいち Python でちゃんとしたコードがかける気がしない。不安をやわらげるべく、ジョギングのお供で Python の本を読むことにした。

書き出してわかるに、われながらまったく出来そうもないことに手を付けてる感。しかしここでくじけるリアル三日坊主なのでもうちょっとなんとか進めたい。やるべきこと:

  • Volcano の論文を読み切る
  • Impala の SQL の文法をパクリつつミニマルな SQL を PLY でパースしてみる。まずは書捨てで良い。
  • Wikipedia か何かで関係代数について復習する
  • Python 読書継続

やりたいが時間なさそう:

  • Impala のコード全体を眺める
  • RDB の教科書を物色する。関係代数とか SQL の評価について丁寧に扱っているもの。