# rapid-db **Repository Path**: sjing108/rapid-db ## Basic Information - **Project Name**: rapid-db - **Description**: 从 0 到 1 用 Go 实现的简略版 MySQL 兼容数据库,用于学习 MySQL 8.0 存储、协议与执行流程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rapid-DB 从 0 到 1 用 Go 实现的简略版 MySQL 兼容数据库,用于学习 MySQL 8.0 存储、协议与执行流程。 ## 阶段 0:已实现 - **Server**:TCP 监听、MySQL 协议握手(HandshakeV10)、mysql_native_password 认证、COM_QUERY、OK/ERR 包、文本结果集占位(SELECT 返回一列 "result" 一行 "OK")。 - **Client SDK**:`pkg/client` 提供 `Open`、`Conn.Exec`/`Query`/`QueryRow`、`Begin`/`Commit`/`Rollback`。 - **cmd/server** / **cmd/client**:启动服务与命令行客户端;Navicat 可连接。 ## 阶段 1:存储引擎基础(已实现) - **页式存储**:16KB 页(`internal/storage/page`),页头 + 槽位目录 + 行数据;数据文件(`storage/file.go`)按页读写与扩展。 - **缓冲池**:LRU Buffer Pool(`storage/pool.go`),固定帧数、换出写回。 - **Redo Log**:`storage/redo` 追加写、恢复时重放;先写 redo 再写数据页。 - **B+ 树**:简化聚簇索引(`storage/btree`),主键插入/查找;单叶页阶段。 - **单表空间**:`storage/store.go` 管理 data.db + redo.log,`OpenStore`/`Recover`/`AllocPage`/`GetPage`/`FlushAll`。 - **单测**:`go test ./internal/storage ./internal/storage/btree` — 写行→关闭→恢复→读回;B+ 树 Insert/Get。 ## 快速开始 ### 启动服务端 ```bash go run ./cmd/server # 默认监听 127.0.0.1:3306 ``` 或指定端口: ```bash go run ./cmd/server -addr 127.0.0.1:3307 ``` ### 使用客户端(SDK) ```bash go run ./cmd/client # 默认连接 127.0.0.1:3306,用户 root,无密码 ``` ### 使用 Navicat 连接 1. 新建 MySQL 连接。 2. 主机:`127.0.0.1`,端口:`3306`(或你启动时的端口)。 3. 用户名:任意(如 `root`),密码:任意(阶段 0 不校验)。 4. 连接后即可执行 SQL(SELECT 返回占位结果集,其它返回 OK)。 ### 在业务代码中引用 SDK ```go import "rapid-db/pkg/client" conn, err := client.Open("127.0.0.1:3306", "root", "", "") if err != nil { log.Fatal(err) } defer conn.Close() rows, err := conn.Query("SELECT 1") // ... ``` ## 项目结构 见 [数据库实现规划文档.md](./数据库实现规划文档.md)。功能清单与阶段排期见 [MySQL8.0功能清单-待确认.md](./MySQL8.0功能清单-待确认.md)。 ## 后续阶段 - 阶段 2:元数据与 DDL、数据类型(CREATE TABLE、ALTER、索引等) - 阶段 3:DML 与执行器(完整 SELECT/INSERT/UPDATE/DELETE) - 阶段 4–11:二级索引、事务与锁、优化器、用户权限、管理运维、复制等,见规划文档。