Skip to content

Repository files navigation

RDBMS Learning Project

RDBMSをスクラッチから実装する学習プロジェクト(Rust)。

このプロジェクトの進め方

このリポジトリは、人間だけで実装を進める前提ではなく、AIエージェントと協働しながら育てることを前提に構成しています。

AGENTS.mdCLAUDE.md は単なる補助メモではなく、エージェントが作業前に何を読み、どの順で探索し、どのコマンドで検証し、何を完了条件とみなすかを揃えるための入口です。詳細な設計判断や実装計画は docs/ に分離し、入口文書は短く保つ方針を取っています。

この考え方は、近年「ハーネスエンジニアリング」と呼ばれる実践に近いものです。ハーネスエンジニアリングとは、モデルそのものを調整するよりも、エージェントが安定・安全・再現可能に働けるように、リポジトリ構造、文書配置、実行権限、検証ループ、レビュー導線を設計することを重視する考え方です。

本プロジェクトでも、次のような方針でハーネスを整えます。

  • 人間向けREADMEと、エージェント向け入口文書を分ける
  • 詳細知識は docs/ 配下に逃がし、必要な文脈へ段階的に辿れるようにする
  • 実装前にプランを作り、編集後にテスト・lint・format を確認する
  • 失敗時は個別の注意書きを増やすのではなく、入口文書・検証・文書構造を見直す

この運用方針の詳細は docs/harness-engineering.md を参照してください。

プロジェクト構成

RDBMS/
├── crates/ # Workspace members
│ ├── storage/ # ストレージエンジン
│ ├── sql/ # SQLパーサー
│ ├── query/ # クエリエンジン
│ ├── catalog/ # データ辞書
│ └── types/ # 共通型定義
├── src/ # メインバイナリ
├── tests/ # 統合テスト
├── benches/ # ベンチマーク
├── docs/ # ドキュメント
└── .claude/ # AIエージェント設定

開始方法

# Rust stable を最新化
rustup update
# ビルド
cargo build --workspace
# 実行
cargo run -p rdbms
# テスト
cargo test --workspace
# フォーマット
cargo fmt
# Lint
cargo clippy --workspace
# ドキュメント生成
cargo doc --open

このリポジトリは Cargo.tomlrust-version = "1.94"rust-toolchain.tomlchannel = "1.94.0" を基準にする。 Rust 本体のアップグレードは、公式の rustup 手順どおり rustup update で行う。

ワークスペース構成について

本プロジェクトはCargoワークスペース(マルチクレート構成)を採用しています。

採用理由

メリット説明
コンパイル時間削減依存ライブラリがワークスペース全体で共有され、1回だけコンパイルされる
バージョン統一全クレートで同じCargo.lockを共有、依存関係の衝突を回避
境界の明確化クレート境界でAPIが強制的に分離され、各レイヤーの設計がクリアになる
並列ビルドクレート単位で並列コンパイルが可能
スケーラビリティフラット構成(crates/*)で100万行規模までスケール

構成指針

  • フラット構成: 全てのクレートをcrates/直下に配置(rust-analyzer流)
  • 仮想マニフェスト: ルートのCargo.toml[workspace]のみ
  • クレート名=ディレクトリ名: ナビゲーションとリネームを容易に

クレート一覧

クレート説明
storageページ管理、B-tree、バッファプール、WAL
sqlSQL字句解析・構文解析
queryクエリプランナー・エグゼキューター
catalogデータ辞書・メタデータ
types共通型定義

ドキュメント入口

使用ライブラリ

  • tokio - 非同期ランタイム
  • hand-written parser を現時点では採用
  • thiserror - エラー型定義
  • anyhow - エラー伝播
  • parking_lot - 高性能ロック

About

RustでRDBMSをスクラッチから実装する学習プロジェクト。AIエージェント協働とハーネスエンジニアリング前提で設計

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages