PlanCraft — 軽量クエリプランニングエンジン
概要
PlanCraft は、分析クエリの計画と実行基盤を学習・検証するための小規模なエンジン実装です。ユーザーは JSON 形式の簡単な DSL(from / select / where / group_by / limit 等)でクエリを定義し、エンジンはそれを解析して抽象構文木(AST)→論理プラン→物理パイプラインへと変換します。安全な最適化(例えば述語のプッシュダウンやプロジェクションの削減など)を行い、最終的に CSV ファイルを入力としてストリーミング実行できる点に主眼が置かれています。Rust を利用することで、低レイテンシかつメモリ効率の良い実行を目指す設計になっています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 2
- ファイル数: 8
- メインの言語: Rust
主な特徴
- JSON ベースの軽量クエリ DSL(from/select/where/group_by/limit)
- 論理クエリプラン生成とセーフな最適化リライトルール
- 物理実行パイプラインへのコンパイルと CSV データに対するストリーミング実行
- クエリ計画と実行の基礎概念にフォーカスした学習向け実装
技術的なポイント
PlanCraft は「クエリ計画と実行のコア」を手早く試せるように設計されたプロトタイプです。入力の JSON DSL をパースして AST を作成し、これを元に論理演算子(スキャン、フィルタ、プロジェクション、集約、リミット等)で構成される論理クエリプランを組み立てます。論理プランに対しては安全性を保った最適化(述語プッシュダウン、不要な列の削除=プロジェクションプルーニング、連続するフィルタの結合など)を適用することで、実行時コストを低減します。
その後、最適化済み論理プランを物理演算子のパイプラインへと変換します。物理実行はストリーミング志向で、CSV のスキャン部分は行またはチャンクを順次処理し、各演算子がイテレータやパイプライン段として連結して動作することを想定しています。集約はメモリ内ハッシュ集約やストリーミング集約のどちらかを選ぶような設計が考えられ、メモリ使用量とパフォーマンスのトレードオフを簡単に検証できます。
実装言語に Rust を採用している点も重要です。所有権と借用のモデルによりメモリ安全性をコンパイル時に担保しつつ、ゼロコスト抽象やイテレータ合成によって高効率なパイプライン実装が可能になります。README の記述からは、serde_json 等のパーサや csv クレートを活用していることが想定され、モジュール化された AST/プラン表現と最適化パスにより、拡張性(新しい演算子、物理戦略、最適化ルールの追加)が確保されやすい構造になっています。
現状はプロトタイプ段階でコミット数が少なく、テストやエッジケースの取り扱い、並列実行や分散処理といった高度な機能は未実装もしくは限定的と考えられます。学術的または教育的用途で、クエリプランニングの基本概念や最適化の振る舞いを確認するための良い出発点です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- Cargo.lock: file
- Cargo.toml: file
- README.md: file
- data: dir(サンプル CSV / 入力データ置き場を想定)
- src/: dir(Rust ソースコード。AST、プラン、最適化、実行エンジン等の実装を含む想定)
- LICENSE: file(存在する場合)
- その他ビルド/設定関連ファイル
リポジトリは小規模でファイル数も少ないため、コードベースを一通り読み切って理解しやすく、クエリ DSL の拡張や物理実装の変更を行う際のハンドリングが簡単です。README によると主要な関心は UI やストレージの複雑さを避け、計画と実行のロジックをクリーンに保つ点にあります。
まとめ
クエリ計画と実行の基礎を学ぶためのシンプルで拡張しやすい Rust 製プロトタイプです(約50字)。
リポジトリ情報:
- 名前: PlanCraft
- 説明: 説明なし
- スター数: 2
- 言語: Rust
- URL: https://github.com/Abhay-Bajaj/PlanCraft
- オーナー: Abhay-Bajaj
- アバター: https://avatars.githubusercontent.com/u/92350049?v=4
READMEの抜粋:
PlanCraft
A lightweight analytical query engine written in Rust. The engine parses a JSON-based query DSL, builds a logical query plan, applies safe optimizer rewrites, compiles the plan into a physical execution pipeline, and executes queries over CSV data.
This project focuses on query planning and execution fundamentals rather than UI or storage complexity.
Features
- JSON Query DSL
from,select,where,group_by,limit
- Logical Query Planning
- Struc…