KOBA789 / volcano

Ruby で書かれた Tuple-at-a-time 方式のクエリエクスキューター

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Volcano

Ruby で書かれた Tuple-at-a-time 方式のクエリエクスキューター

RDBMS がどのようにクエリを実行しているのか、なぜインデックスが重要なのかを説明するための教材。

準備

クエリを実行して遊ぶにはテストデータの準備が必要です。

テストデータとして ISUCON9 予選問題のデータを流用しています。 https://github.com/isucon/isucon9-qualify

まず、上記リポジトリの手順に従って webapp/sql/initial.sql を生成し、webapp/sql/init.sh を実行して MySQL にデータを投入してください。 このとき、画像データのダウンロードや展開は不要です。

MySQL へデータが入ったら、このリポジトリ内の dump.rb を実行して data/ 以下にテストデータを書き出してください。 100MB くらいの JSON ファイルが書き出されます。

遊び方

いくつかの基本的なプランオペレーターと、それらを使ったクエリ実行プランのサンプルが含まれています。

ISUCON9 予選問題のアプリケーションコードに含まれるクエリを再現してみたり、より高速なプランを作るためにセカンダリインデックスを増やしてみたりして遊びましょう。

JOIN 関連のオペレーターを実装してみてもおもしろいでしょう。

About

Ruby で書かれた Tuple-at-a-time 方式のクエリエクスキューター

License:MIT License


Languages

Language:Ruby 100.0%