Skip to content

Latest commit

 

History

History
131 lines (115 loc) · 7.12 KB

File metadata and controls

131 lines (115 loc) · 7.12 KB

Architecture Overview

最終的なアーキテクチャ図。

入口: overview.md を参照してください。 設計判断: decisions.md を参照してください。 学習ログ: log/ を参照してください。

システム構成

┌─────────────────────────────────────────────────────────┐
│                     SQL Layer                           │
│  ┌──────────┐  ┌──────────┐  ┌──────────────────┐      │
│  │  Parser  │→│  Planner │→│ Query Executor   │      │
│  │ (sql)    │  │ (query)  │  │   (query)        │      │
│  └──────────┘  └──────────┘  └────────┬─────────┘      │
│                                          │               │
├──────────────────────────────────────────┼───────────────┤
│                                          │               │
│  ┌──────────────────────────────────────▼─────────┐    │
│  │              Transaction Manager                │    │
│  │   (ACID, Concurrency Control, Recovery)        │    │
│  └────────────────────────────────────────────────┘    │
│                                          │               │
├──────────────────────────────────────────┼───────────────┤
│                                          │               │
│  ┌──────────────────────────────────────▼─────────┐    │
│  │                 Storage Engine                  │    │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────────────┐  │    │
│  │  │Buffer   │  │B-Tree   │  │  Page Manager   │  │    │
│  │  │Pool     │  │Index    │  │                 │  │    │
│  │  └─────────┘  └─────────┘  └─────────────────┘  │    │
│  │  ┌─────────────────────────────────────────┐   │    │
│  │  │  WAL (Write-Ahead Log)                  │   │    │
│  │  └─────────────────────────────────────────┘   │    │
│  └────────────────────────────────────────────────┘    │
│                                          │               │
├──────────────────────────────────────────┼───────────────┤
│                                          │               │
│  ┌──────────────────────────────────────▼─────────┐    │
│  │                  Disk I/O                       │    │
│  └────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘

クレート構成

crates/
├── storage/      # ストレージエンジン
│   ├── page.rs          # ページ管理
│   ├── btree.rs         # B-tree実装
│   ├── buffer_pool.rs   # バッファプール
│   └── wal.rs           # Write-ahead logging
│
├── sql/          # SQLパーサー
│   ├── ast.rs           # 抽象構文木
│   ├── lexer.rs         # 字句解析
│   └── parser.rs        # 構文解析
│
├── query/        # クエリエンジン
│   ├── planner.rs       # クエリプランナー
│   ├── executor.rs      # クエリエグゼキューター
│   └── optimizer.rs     # オプティマイザー
│
├── catalog/      # データ辞書
│   ├── schema.rs        # スキーマ管理
│   ├── table.rs         # テーブルメタデータ
│   └── index.rs         # インデックスメタデータ
│
└── types/        # 共通型定義
    └── lib.rs           # データ型、値

コンポーネント詳細

SQL Layer (sql, query crates)

  • Parser: SQLをASTに変換 (sql::parser)
  • Planner: 実行プランの生成 (query::planner)
  • Optimizer: プランの最適化 (query::optimizer)
  • Executor: プランを実行して結果を返す (query::executor)

Transaction Manager

  • ACID特性の保証
  • 同時実行制御(parking_lotによるロック、MVCC)
  • WALによる回復

Storage Engine (storage crate)

  • Buffer Pool: ページのキャッシュ管理
  • B-Tree: インデックス構造
  • Page Manager: ディスク上のページ管理
  • WAL: Write-Ahead Logging

Catalog (catalog crate)

  • スキーマ管理
  • テーブル・カラム・インデックスのメタデータ

Types (types crate)

  • 共通データ型(DataType, Value)
  • エラー型

依存関係

┌──────────┐
│   main   │
└─────┬────┘
      │
      ├─────────────┐
      │             │
┌─────▼─────┐  ┌───▼────┐
│   query   │  │   sql  │
└─────┬─────┘  └────────┘
      │
      ├─────────────┬─────────────┐
      │             │             │
┌─────▼─────┐ ┌────▼────┐  ┌────▼────┐
│  storage  │ │ catalog │  │  types  │
└───────────┘ └─────────┘  └─────────┘

データフロー

  1. クライアントからSQLクエリを受信
  2. sql::ParserがASTを生成
  3. query::Plannerが実行プランを作成
  4. query::Optimizerがプランを最適化
  5. query::Executorがプランを実行
  6. storage::StorageEngineがデータアクセス
  7. catalog::Catalogがメタデータを提供