このプロジェクトの入口となる概要ドキュメント。
詳細は次の 3 系統に集約する。
- このファイル: 全体像、現在地、次に進む順番
decisions.md: 継続的に残す設計判断plans/: 実装計画
運用ドキュメントは別枠とし、次を参照する。
Rust で RDBMS をスクラッチから実装し、
SQL -> AST -> planner -> executor -> transaction -> storage の流れを
段階的に理解する。
学習用プロジェクトであるため、一度に全部実装せず、 最小機能を積み上げながら設計判断と計画を残す。
2026-03-22 時点では、sql crate の hand-written parser で
最小 CRUD を実装済み。
一方で、query crate に AST の正式な受け口はまだなく、
トランザクション制御の SQL 構文と実行経路も未実装である。
現在の parser は次をサポートする。
CREATE TABLEの最小列定義INSERTの単一行VALUESUPDATEのSET ... [WHERE ...]DELETEのFROM ... [WHERE ...]- 列参照、
*、列別名 DISTINCTCOUNT(...)- 簡単な算術式
WHEREとSET/VALUESで再利用する比較、NOT、AND、OR- scalar subquery
FROM句の最小 subqueryJOIN ... ON ...JOIN ... USING (...)GROUP BYHAVINGORDER BY
将来の SELECT 拡張は
plans/05-select-extensions.md に分離済み。
トランザクション制御の段取りは
plans/03-transaction-control.md に切り出す。
直近の優先順位は次の通り。
query側で AST を受け取りやすい境界へ整える- CRUD を planner / executor へ接続する
- 最小トランザクション制御を追加する
- 将来の
SELECT拡張
トランザクション制御は、いきなり MVCC や本格 WAL へ進まず、
まず BEGIN / COMMIT / ROLLBACK、単一接続、単一ライタ、
rollback journal ベースの最小実装から始める。
SQLite の公式文書でも rollback journal が既定の atomic commit 手段であり、
WAL はその後に選べる別モードとして説明されている。
詳細な段取りは
plans/01-sql-parser.md と
plans/02-query-ast-boundary.md、
plans/03-transaction-control.md を参照する。
ワークスペースは責務ごとに crate を分ける。
crates/sql: SQL parser と ASTcrates/query: planner / optimizer / executorcrates/storage: page / B-tree / buffer pool / WALcrates/catalog: schema と metadatacrates/types: 共通型
最終像の詳細は architecture.md に残すが、
日常的な入口はこの overview.md を使う。
重複しやすい進捗、文脈、ロードマップはこのファイルへ集約する。
- 全体像:
overview.md - 設計判断:
decisions.md - 実装計画:
plans/ - 作業ルール:
coding-rules.md - エージェント運用:
harness-engineering.md