Skip to content

Latest commit

 

History

History
99 lines (73 loc) · 3.44 KB

File metadata and controls

99 lines (73 loc) · 3.44 KB

Project Overview

このプロジェクトの入口となる概要ドキュメント。

詳細は次の 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 の単一行 VALUES
  • UPDATESET ... [WHERE ...]
  • DELETEFROM ... [WHERE ...]
  • 列参照、*、列別名
  • DISTINCT
  • COUNT(...)
  • 簡単な算術式
  • WHERESET / VALUES で再利用する比較、NOTANDOR
  • scalar subquery
  • FROM 句の最小 subquery
  • JOIN ... ON ...
  • JOIN ... USING (...)
  • GROUP BY
  • HAVING
  • ORDER BY

将来の SELECT 拡張は plans/05-select-extensions.md に分離済み。 トランザクション制御の段取りは plans/03-transaction-control.md に切り出す。

次に進む順番

直近の優先順位は次の通り。

  1. query 側で AST を受け取りやすい境界へ整える
  2. CRUD を planner / executor へ接続する
  3. 最小トランザクション制御を追加する
  4. 将来の SELECT 拡張

トランザクション制御は、いきなり MVCC や本格 WAL へ進まず、 まず BEGIN / COMMIT / ROLLBACK、単一接続、単一ライタ、 rollback journal ベースの最小実装から始める。 SQLite の公式文書でも rollback journal が既定の atomic commit 手段であり、 WAL はその後に選べる別モードとして説明されている。

詳細な段取りは plans/01-sql-parser.mdplans/02-query-ast-boundary.mdplans/03-transaction-control.md を参照する。

アーキテクチャ要約

ワークスペースは責務ごとに crate を分ける。

  • crates/sql: SQL parser と AST
  • crates/query: planner / optimizer / executor
  • crates/storage: page / B-tree / buffer pool / WAL
  • crates/catalog: schema と metadata
  • crates/types: 共通型

最終像の詳細は architecture.md に残すが、 日常的な入口はこの overview.md を使う。

ドキュメント整理方針

重複しやすい進捗、文脈、ロードマップはこのファイルへ集約する。

参照先