発病活動 - Understanding SQL and RDB
もうちょっとデータベースというか RDB なり SQL なりのクエリの実行というものをきちんと理解したい気がする。DuckDB をいじっていた時に感じた物足りなさ、覚束なさや ZetaSQL を読んでわからない感じは、そういうリテラシの不足に起因している気がするので。
データベースといっても B-Tree みたいなストレージの話やトランザクションなど話題は色々あるけれど、ここでの関心はクエリの評価。結局自分にとっての SQL は Dremel や BQ のような OLAP で、そこで SQL という宣言的なクエリがデータを読むコードになって評価される魔法を理解したい欲求がある。
というわけで問題を理解するにあたり必要なことを考える。
- 教科書を読む。長くてかったるいのでできれば論文を読んで済ませたいが、どうかね。大学のコース資料をいくつかあたって、必要な reading list を作るところからスタートだろうか。
- しょぼい toy query processor を書く。オンメモリのデータか、ごく単純なフォーマットのファイル (mmap で使えるようなやつ) を相手にいくつかの素朴な代数的クエリが書ければよい。といってもそれなりに難しそうだけど。
しかしデータベースとか何で書けばいいのかね。C++ とか Java とかが堅いのはわかるが、そんなもの課外活動で書きたくない。一方でさすがに Python とか JS とかいう類の題材でもない。モダンプログラマなら Go なり Rust なりで書くんだろうけど。いい機会だから Rust 軽く勉強しようかなあ。全然本題が進まなそうだけど・・・まあ本題が進まなくても Rust を触れるならそれはでいい気はする。query processor 書きは題材ということで。
つまり、昼休みは RDB の教科書なり論文なりを読み、朝は Rust のチュートリアルをやる。これだな。可視化の教科書は読みかけだけど中断。SQL/RDB に詳しくなる方が楽しそうなので。課外活動は中断挫折を気にせずやってきます。